数学之美
教育的本质不是将篮子填满,而是将灯点亮。 简单性和模块化是软件工程的基石;分布式和容错性是互联网的生命。 —— 蒂姆·博纳斯·李 Virture is like a rich stone,best plain set.(美德如同宝石,在朴素的映衬下最显华丽) —— 培根 爱是一念之差,最幸福的不过是,你曾经的呼唤,而我恰有过应答。 —— 朝小诚《黑白》 技术分为术和道2种。具体的做事方法是术,做事的原理和原则是道。很多具体的技术很快就会从独门绝技到普及,再到落伍,追求术的人一辈子很辛苦,只有掌握了道才能够做到游刃有余。追求“术”的人多半抱有侥幸心理,想走捷径,但真正做好一件事没有捷径,需要一万小时的专业训练和努力,也就是“一万小时定律”。 中国古代的阴阳学说可以看做是二进制的雏形。 数据库索引和布尔代数息息相关。 网络爬虫一般的步骤是“下载-索引-排序”,其中广度优先遍历用得比较多。 完全随机的高斯白噪声是很难消除的。 文字语言 VS...
IOS7中的js binding技术
cocos2Dx中提出了js binding,而IOS 7原生提供了js binding的支持(通过JavaScript Core这个引擎)。所谓的binding就是建立了本地到native的桥梁。如图所示: jsbinding与hibrid app的区别如下图所示:jsbinding通过一个中间层(JSBinding Layer)与native进行通信,而hibrid本质上还是web,运行在webview中。通过webview与native进行通信。 JavaScriptCore的4个核心API JavaScriptCore.h JSContext JSValue JSExport 一行js代码实现逆天效果1[].forEach.call(document.querySelectorAll("*"),function(a){a.style.outline="1px solid...
mac中的一些常用操作
编辑器方向键12345678910文本最开始:fn + ←文本最结尾:fn + →行首:command + ←行尾:command + →PageUp:fn + ↑️️PageDown:fn + ↓️向前删除(backspace):delete向后删除(delete):fn+delete 输入表情符号control + command + space 触摸板操作右键菜单两个手指单击触摸板 文件操作选择不连续的多个文件command + 单击 移动文件command + c(复制)command + option + v(粘贴) 显示隐藏文件1$ defaults write com.apple.finder AppleShowAllFiles -bool true 接下来重启Finder。具体方法是单击屏幕左上角苹果图标,强制退出,在下拉列表中选中Finder。 窗口操作command + control + F 最大化/还原窗口 QQ截图control + command + A Chrome开发者工具command + option +...
Shell 基础 —— 流程控制
条件判断假设/tmp/test.js存在,而/tmp/test.jsx文件不存在,则执行以下命令(注意中括号两端的空格): 123456789101112131415161718192021222324252627282930$ [ -e /tmp/test.js ]$ echo $? # 0,表示上一条命令执行成功,即文件存在$ [ -e /tmp/test.jsx ]$ echo $? # 1,非零值,上一条命令执行失败# 我们可以执行下面的命令从而得到更加语义化的结果$ [ -e /tmp/test.js ] && echo 'exists ' || echo 'not exists'# 判断文件权限$ [ -w /tmp/test.js ] && echo 'can write' || echo 'can not write'文件1 -ef 文件2 # 判断两个文件的Inode是否一致,可理解为判断2个文件是否是同一个文件,用于判断硬链接是很好的方法$...
javascript 语言精粹
数组javascript中并没有真正的数组,数组本质上也是对象 请看下面的例子: 12345var arr = [1,2,3,4,5,6]console.log(arr.length) // 6arr.abc = false // 给数组增加属性console.log(arr) // [1, 2, 3, 4, 5, 6, abc: false]console.log(arr.length) // 6 由运行的结果可以看出给数组添加了一个abc属性,尽管字面上的长度有所增加,但是数组的实际长度并没有改变! 1typeof [] // 'object' 所以为了区分数组和对象我们应该可以采用以下的函数: 1let isArray = value => !!value && typeof value === 'object' && value.constructor ===...
Shell 基础 —— 正则表达式
常用正则123$ grep -n "^$" test.txt # 空白行[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} # yyyy-mm-dd[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} # ip 在vi中按Esc键后d G可以清空光标起的所有内容。 字符截取命令cut命令例如我们有用户信息文件/etc/passwd, 12$ useradd user1$ useradd user2 假设我们要删除上面创建的用户user1和user2,当然我们可以使用userdel命令,但是有的时候是程序执行的,所以我们需要在/etc/passwd中提取出新创建的2个普通用户,使用grep进行行提取 123$ grep "user" /etc/passwd | grep -v "system" #...
响应式web设计
固定宽度布局的缺点我们经常可以看到固定宽度的布局.例如960px的页面在笔记本上可能显示刚刚好,但是在高分辨率的显示器上两侧就会出现留白,可是我们现在有了智能手机.手机浏览器会将一个标准页面缩放到与视口(即:设备可视区域)恰好匹配.然后用户可以选择在自己感兴趣的内容上放大浏览,这样就导致了用户体验非常糟糕!(想象一下不停的点击放大滑动然后缩小,更可恶的是如果误点击了一个链接).响应式web设计的核心是移动优先. 在使用CSS3属性的时候需要注意浏览器前缀,并且将不带有前缀的添加到最后,这样如果该属性可用就会覆盖之前的声明. 百分比宽度的计算百分比宽度 = 目标元素宽度 / 上下文元素宽度,例如我们有以下的固定宽度的布局: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253<div id="wrapper"> <header> <nav> ...
Shell 基础 —— 运算符
Linux查看在线用户使用w命令。 declare命令在上一篇文章Shell基础-变量中我们说道Linux中默认的变量类型是字符串. 我们使用该命令结合+或者-设定或者取消变量类型: 1$ declare [+|-] [options] 变量名 其中-是设置类型,+是取消设置类型. 常见的数据类型: -a:数组型 -i:整型 -x:环境变量(其实export命令就是调用的declare -x命令) -r:只读变量(不能改变,不能修改,不能删除,甚至不能取消只读属性) -p:显式声明变量被声明的类型 请看下面的例子: 12345678910111213141516$ a=1$ b=2$ c=$a+$b$ echo $c # '1+2',because default is string$$ declare -i c=$a+$b$ echo $c # 3# 定义数组$ sutdents[0] = 'Kissy'$ sutdents[1] = 'Tom'$ declare -a sutdents[2] =...
Node.js 最佳实践
与善人居,如入芝兰之室,久而不闻其香,即与之化矣。与不善人居,如入鲍鱼之肆,久而不闻其臭,亦与之化矣。丹之所藏者赤,漆之所藏者黑,是以君子必慎其所处者焉。 —— 《孔子家语》 npm常用命令1234# 查看全局安装的node模块的位置npm root -g# 消除 mac 下全局安装模块报错 permission denysudo chown -R $(whoami) $(npm config get...
Shell 基础 —— 变量和配置文件
一直以为Unix时间戳和JavaScript中的Date.now()的结果一致,但是最近才发现,Date.now()是精确到毫秒级的,去掉末尾的3位就可以和时间戳完美匹配。 用户自定义变量变量定义1name=value 注意等号的前后不能有空格,如果value是字符串且有空格必须使用引号.例如以下的定义都是非法的! 1234x= 1x =1x = 1x=hello world 因为如果有空格的话,前面的单词会被解析为系统命令,而后面的参数会被解析为选项. 使用变量只需要在变量前面加上$即可,例如: 12a=1echo $a # 1 *注意:*双引号和单引号的区别:单引号中的变量相当于ES6中的模板字符串,而单引号中的内容完全就是字符串,丧失了原有的变量替换.*注意:*shell中的变量默认都是字符串,例如: 1234x=1y=2z=$x+$y # 1+2echo $z 变量叠加相当于拼接字符串,例如: 123456x=123x="$x"456echo $x # 123456# 我们也可以使用下面的方式x=${x}789echo...