《程序员读》

《程序员读》

——精心为程序员打造的编程开发阅读软件。
挖掘细致的阅读习惯,
热门开发分类,
每日内容更新,
在线视频观看,
下载离线阅读,
片段选择分享,
网络收藏摘抄,
开发文章发表,
附近猿媛查看,
兴趣好友联系,
二维码快速扫描,
日夜间模式摇一摇轻松切换。


iPhone版 v1.91

扫一扫 http://t.cn/8k1VM8d《程序员读》精心为程序员打造,隆重登陆AppStore


Android版 v1.42

扫一扫 http://t.cn/R74JjLj
《程序员读》精心为程序员打造


AngularJS

一个AngularJS web应用中只能出现一个ng-app指令,它相当于main方法。
Angular2以后官方的称呼就叫Angular,不是Angular2,也不是Angular4,而1.x版本的老版本,叫AngularJS。

而在angular1.5的版本之前,都是以directive作为组件化的形式,而directive本身是一个指令,而并非是一个组件,所以它并不能很好的承担组件这一个职责,所以google在angular1.5的版本中推出了component组件。

学习AngularJS 1.x
https://hairui219.gitbooks.io/learning_angular/content/zh/chapter05_1.html

使用ng-init向controller中传递参数,不能立即获取到,是因为 “the controller is being created before the variable is added to the $scope object”

<div ng-include="'modules/units/views/view.html"
     ng-controller="UnitsViewCtrl"
     ng-init="unitId = '123'">
</div>
$scope.setUnitId=function(unitId) {
    $stateParams.id=unitId;
    getData();
}
<div ng-include="'modules/units/views/view.html'"
     ng-controller="UnitsViewCtrl"
     ng-init="setUnitId('123')">
</div>

可以使用$watch,或者在ng-init中调用函数
http://corpus.hubwiz.com/2/angularjs/18608161.html

ng-template寄宿方式

<script type="text/ng-template" id="/tpl.html">
 Content of the template.
 </script>

angular.js 中 父级和 子集 controller 之间的通讯
http://yijiebuyi.com/blog/62f8daffb5c629e85de91ca0b3942985.html

React Native

React Native

React Native 中文网
http://reactnative.cn/

React Native


http://www.jianshu.com/p/a4d16de07350
http://www.jianshu.com/p/7a4899bde137
http://www.reactnative.com/
react-navigation使用技巧
http://www.jianshu.com/p/2f575cc35780

To run your app on iOS:
   cd /Users/hycx/x_workspace/AwesomeProject
   react-native run-ios
   - or -
   Open ios/AwesomeProject.xcodeproj in Xcode
   Hit the Run button
To run your app on Android:
   cd /Users/hycx/x_workspace/AwesomeProject
   Have an Android emulator running (quickest way to get started), or a device connected
   react-native run-android

目前来说用rn对我来说最大的好处应该是同时开发android和ios,大部分代码通用,而且可以使用 code-push 来热更新。
https://www.zhihu.com/question/36722811

在Android手机上运行React-native项目时报错:unable to load script from assets ‘index.android bundle’ ,make sure your bundle is packaged correctly or youu’re runing a packager server

解决方案:
第一步:在 android/app/src/main 目录下创建一个 assets空文件夹
第二步:执行 下面这段命令

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/  

会发现 assets文件夹下多出两个文件
第三步:重新run程序。

总结:
index.android.bundle是用来调用原生控件的js脚本,每次改变了 index.android.js,都需要使用上面的代码片段更新index.android.bundle,然后打包才可以把新的index.android.js应用上,所以当没有index.android.bundle文件时,RN是无法运行的.

React Native BLE蓝牙通信
http://blog.csdn.net/withings/article/details/71378562?locationNum=3&fps=1
https://github.com/innoveit/react-native-ble-manager

安装chrome扩展程序: React Developer Tools
react-native run-android 命令只需要在手机上还没有安装项目软件时执行,如果已经安装了,只要在手机上手动打开app即可。
react-native start
ifconfig ,查看en0中对应的ip,
打开app,摇晃手机,或者按菜单,或者长按菜单键,打开帮助菜单,在Dev Settings/Debug server host & port for device中填写ip:port。

图片
安卓中使用资源图片:
把ic_launcher.png拷贝放到drawable-hdpi中,

学习React Native必看的几个开源项目
http://www.cnblogs.com/qiangxia/p/5584622.html

react-navigation 简单使用
http://www.jianshu.com/p/2ce08b92cf60
https://reactnavigation.org/docs/intro/
http://www.cnblogs.com/CrazyWL/p/7283600.html

StatusBar 使用
http://blog.csdn.net/mengks1987/article/details/71127885
http://www.hangge.com/blog/cache/detail_1613.html

产品设计

商业计划书:BP

产品经理专业导读-李建忠

避免玩具项目

产品设计中的文档:
BRD:商业需求文档,制定方向,总监,VP来做,给决策人员,核心团队,VC看。制定战略,获取资源。
MRD:市场需求文档,制定产品,可能和BRD合并, 总监做,给市场研发运营职能部门看,研发看技术可行性,运营人员看资源调配。制定产品边界,建立共识。
PRD:产品需求文档,制定功能,给UI/UE开发看,产品经理做,制定功能细节。
ProtoType:线框图原型/高保真原型UI/UE:展现细节,产品经理或UI/UE实现,确定产品视觉和交互细节。

古董只能用来怀旧,不能用来使用。

微博早期只支持最多发一张图片。
要跟随产业规律,做早了死掉,做晚了没机会。
行业规律:去中心,自组织,碎片,快速。

书:
启示录-打造用户喜爱的产品
从0到1-开启商业与未来的秘密
精益创业-新创企业的成长思维
浪潮之巅-吴军著
失控-凯文凯利著
奇点临近-2045年,当计算机智能超过人类
人人时代-无组织的组织力量、
维基经济学-大规模协作如何改变一切。
定位-有史以来对美国营销影响最大的观念
创新者的窘境-就算我们把每件事情都做对了,仍有可能错失城池
免费-商业的未来
长尾理论
系统化思维导论
交互设计精髓
赢在用户-Web人物角色创建和应用实践指南
用户体验要互-以用户为中心的产品设计
设计心理学-日常的设计
Don’t make me think
重来-rework
人月神话
人件
消费者行为学
引爆点 Tipping Point
怪诞行为学
影响力
乔布斯传
facebook效应
腾讯传

要有产业基础,才不会人云亦云、飘忽不定。
iPhone4 2010年出现,微信2012,微软一些产品却按年出。

你的灯亮着吗?-发现问题的真正所在h1

axure

master 母版
http://www.woshipm.com/rp/420885.html

APP原型实战
http://www.maiziedu.com/wiki/prototype/app/
https://www.axure.com.cn
http://www.mobileui.cn/add-some-animation-effects-for-prototype-design.html

做移动应用有什么好的原型工具?OmniGraffle
https://www.zhihu.com/question/19688700

justinmind

justinmind学习站
http://www.jmstu.com/
justinmind中文网
http://www.jmfans.com/
justinmind零基础系列教程之编辑原型

justinmind零基础系列教程之编辑原型


MAC版JustinMind延长30天试用期的方法 justinmind破解

MAC版JustinMind延长30天试用期的方法 justinmind破解


名词对照:
master 母版
widget 部件
数据母版即数据库
母版即一个通用的模板

原型设计到底是用Justinmind还是Axure?

原型设计到底是用Justinmind还是Axure?

Axure学习笔记:手机APP微信读书原型设计

Axure学习笔记:手机APP微信读书原型设计

移动APP:2015 UI/UX 趋势,Material design布局未来!

移动APP:2015 UI/UX 趋势,Material design布局未来!


https://www.zhihu.com/question/24874514

在开始设计原型之前我们需要做的第一步是选择合适的设计分辨率,目前使用Axure设计移动端原型时普遍采用的是(宽)375px*(高)667px和(宽)414px*(高)736px两种分辨率尺寸,这两种尺寸分别是由目前主流的移动设备Iphone7和Iphone7 PLUS的屏幕分辨率尺寸等比缩放而定义出来的,同时也是Iphone7和Iphone7 PLUS的逻辑分辨率。

有朋友可能会疑惑在设计原型的时候为什么不直接采用移动设备实际的分辨率呢?因为这主要考虑到设计时的便携性,毕竟我们输出的原型主要是用于演示而不是视觉稿,所以不需要达到那么高的精度,另外如果按移动设备实际的分辨率进行设计,在对元件进行编辑和排版的时候会是一件很耗费时间的事情,同时也不方便在电脑浏览器上进行查看。

本人在进行原型设计的时候一般用的是375px*667px这个分辨率尺寸,因为Axure常用的元件默认的字号一般是14px或18px,这两种字号也刚好匹配Iphone7上常用字号的比例,而且这个分辨率尺寸在电脑浏览器上刚好一屏就可以显示完整。

http://www.woshipm.com/rp/692285.html?utm_source=itdadao&utm_medium=referral

Javascript

判断对象类型

#判断是Buffer
Object.prototype.toString.call(obj1) === '[object Uint8Array]'
#判断是Array
Object.prototype.toString.call(obj1) === '[object Array]'

JS判断字符串结尾

  String.prototype.endWith=function(endStr){
      var diff=this.length-endStr.length;
      return (diff>=0 && this.lastIndexOf(endStr)==diff)
  }

ES6中export及export default的区别:
但在一个文件或模块中,export、import可以有多个,export default仅有一个。
对于export default,导入的时候没有花括号;对于export,导入的时候有花括号;
http://blog.csdn.net/zhou_xiao_cheng/article/details/52759632

遍历对象

for (var key in obj){
      var value=obj[key];
    }

触发其它元素的点击

//IE浏览器
if(document.all) {
document.getElementById("clickme").click();
}
//其它浏览器
else {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById("clickme").dispatchEvent(e);
}

Vue

Vue学习要点记录:

Vue 实例暴露了一些有用的实例属性与方法,这些属性与方法都有前缀$,与代理的 data 属性区分。
Vue.js 没有“控制器”的概念。组件的自定义逻辑可以分布在这些钩子中。
钩子:create, mounted、 updated 、destroyed等。
在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。如果熟悉虚拟 DOM 并且偏爱 JavaScript 的原始力量,也可以不用模板,直接写渲染(render)函数,使用可选的 JSX 语法。
Mustache语法,胡子语法:{{}}
v-bind:指令可以省略为一个冒号
v-click指令可以省略为一个@
模板内的表达式只能包含单个表达式,应只用于简单的运算。
计算属性:在computed中声明并实现属性值的计算方法。与methods的区别是:计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。

& 父级作用域: 传递进来的参数必须是父级的函数方法, 然后在指令中,通过 test() 获取到 传递进来的函数,这个还不够,还必须再执行一次 test()() 才是真正的执行这个方法。
@ 本地作用域: 只能传递字符串进来,对于方法或者对象是传递不进来的。
= 双向属性: 可以传递对象进来,也可以是字符串,但是不能传递方法。 同时可以在指令中修改这个对象,父级里面的这个对象也会跟着修改的。
https://segmentfault.com/a/1190000007018923

ES6:

ES6提供的许多新特性。这些新特性中包含一些简便书写的方法:
箭头函数
默认参数
不定参数
解构赋值
模板字条串

ECMAScript 6 入门
http://es6.ruanyifeng.com/

浏览器

插件架构:NPAPI和PPAPI

NPAPI是当今最流行的插件架构,由网景开发,后Mozilla维护,几乎所有浏览器都支持,不过存在很大的安全隐患,插件可以窃取系统底层权限,发起恶意攻击。
2010年,Google在原有网景NPAPI(Netscape Plugin API)基础上开发了新的PPAPI(Pepper Plugin API),将外挂插件全部放到沙盒里运行。最新版本的firefox和chrome都不支持大多数NPAPI插件了。

播放rtmp

HTML5不支持rtmp,由flash插件来支持播放。
下载Adobe Flash Player,对不同的浏览器提供了支持不同类型API的插件版本。
http://get.adobe.com/cn/flashplayer/otherversions/
在Windows上,vlc安装过程中可以看到只提供了Mozilla和ActivX插件勾选。
在Ubuntu上,下载flash_player_npapi_linux.x86_64.tar.gz解压后,拷贝后重启firefox。

sudo cp libflashplayer.so /usr/lib/firefox-addons/plugins/libflashplayer.so

rtsp协议流数据在前端播放,没有特别好的解决方法,需要在本机装一个vlc 插件,依靠这个插件才能让 RTSP 协议 在网页上能播放,但是目前高版本的 Chrome浏览器已不支持 NPAPI 插件,也就是说高版本的 Chrome 浏览器还是不能播放(46 以上的版本都不行)。
对于rtsp,由于新版本的ff、chrome都不支持vlc插件,所以暂只能考虑使用旧版本。
http://www.cnblogs.com/qiaojie/p/5733335.html

Firefox 52.0 分支作为长期支持版本,将会持续到 2018 年三四月份,从该版本起,Firefox 将不再支持除了 Flash 插件之外的所有 NPAPI 插件。
Chrome uses PPAPI-based plugins ONLY now, while vlc-browser-plugin is NPAPI-based

Linux版本的chrome在版本35时已经没有enable-npapi选项了。
Since version 35 NPAPI is no longer supported in Linux versions of Chrome and Chromium. In the Windows versions you can still enable it on the page: chrome://flags/#enable-npapi.

播放rtsp

在angular或vue等框架中使用vcl插件播放rtsp视频时,可以js动态操作vlc播放,如果使用双括号表达式给mrl赋值,可能在firefox中产生每次进入视频页面都需要重新激活插件。

<object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" id='vlc1' events='false' width="720" height="410">
  <param name='mrl' value='rtsp://u.itvitv.com/jpm1' />
  <param name='volume' value='0' />
  <param name='autoplay' value='true' />
  <param name='loop' value='false' />
  <param name='fullscreen' value='true' />
  <param name='controls' value='false' />
</object>
var vlc=document.getElementById("vlc1");
var id=vlc.playlist.add($scope.videoUrl);
vlc.playlist.playItem(id);

OPC

HowToStartWithUtgard
https://openscada.atlassian.net/wiki/display/OP/HowToStartWithUtgard

docker

下载Docker for Mac
https://download.docker.com/mac/stable/Docker.dmg
Mac上用Docker搭建lamp环境
http://www.56cto.com/1089
Docker for Mac 初体验
https://segmentfault.com/a/1190000005106237
在MAC上运行Docker和Oracle 12.2数据库环境
http://database.51cto.com/art/201705/540105.htm
Docker run 运行第一个容器
http://blog.csdn.net/reedchi/article/details/50854110
Spring Cloud 微服务(四) Docker化
http://www.jianshu.com/p/1ce2bc8ce674
将spring cloud打包docker镜像
http://www.cnblogs.com/waterlufei/p/6627280.html