leoyuan.github.io icon indicating copy to clipboard operation
leoyuan.github.io copied to clipboard

This is my blog repo.

Results 34 leoyuan.github.io issues
Sort by recently updated
recently updated
newest added

**fs(file system)** 模块提供了基础的文件操作,提供的接口大部分上是对操作系统底层POSIX接口的简单封装,所以你会发现为什么有些api没有遵循驼峰命名法(比如rmdir / mkdir)等,而有些则是遵循的(比如readFile / writeFile)等~ ### 官方fs库 [官方fs文档传送门](https://nodejs.org/dist/latest-v4.x/docs/api/fs.html) 所有api都有详细文档说明,这里就不再赘述了~(值得注意的是对于那些POSIX接口的api,可能只给出了一个类型`rmdir(2)`的描述,这时你就需要到你的命令行下执行 `man rmdir 2` 来看接口描述了) ### 同步 vs. 异步 fs库中所有api都有同步(synchronous)和异步(asynchronous)两个版本,异步版本即函数名称为 `rmdir` / `mkdir` 等不加 `Sync` 字样的函数,相反,函数名如 `rmdirSync` / `mkdirSync` 则为同步版本~...

NodeJS

当你跳进Node坑的那一天起,怎么组织一个好的包代码结构将是你面临的第一个挑战~ 那么,一个好的npm包应该是由哪几方面构成呢?我想无非是以下几点: 1. 包元数据描述清晰、完整; 2. 包代码结构清晰,目录划分合理,代码组织结构清晰; 3. 统一的编码风格; 4. 遵守通行的版本化方案,比如semver; 5. 完善的单元测试,再进一步的话,可以加上覆盖率测试; 6. 良好的文档描述,这个是用户敢不敢用你的包的一个非常重要的衡量标准; 下面分别介绍以上几点: #### 1. 包元数据描述清晰、完整 npm包的元数据是通过包根目录下的package.json文件来描述的,首先我建议通读一下 [npm pacakge.json](https://docs.npmjs.com/files/package.json) 这篇文档后,再往下看~ 挑出个人认为非常重要的几个来讲一下 - files{Array} 指定了当包被当然依赖下载时,只需要包含的文件/文件夹,通常我们不会指定test/doc等文件夹,这样排除使用方阅读你代码时的干扰 - devDependencies{Object} 指定了包的开发依赖,比如构建包、生成文档、单元测试用到的包,都应该写到devDependencies下,这样当别人依赖你这个包的时候,就不会去下载这些开发依赖包,节约别人的时间和硬盘 -...

![image](https://s-media-cache-ak0.pinimg.com/564x/ff/d2/7b/ffd27b3b924eb3a3c2c5c2d73c1637ed.jpg) 世界那么大,你得去看看,但是,你得先学会翻墙~ 搭VPN有很多方式,本文只是描述了其中一种,本人已经使用差不多一年,感觉这种方式用起来很方便,而且稳定~ ### 步骤: 1. 首先你需要一台境外服务器当成你的代理服务器,推荐使用amazon的ec2,官方可以申请 [免费使用一年的实例](https://aws.amazon.com/cn/ec2/) - 实例可以选择东京或者新加坡 - 设置实例的安全组,如下图: ![image](https://cloud.githubusercontent.com/assets/1195765/14765673/184f8bb6-0a1e-11e6-93cf-3bff354d9206.png) - 启动实例 2. 需要在服务器实例上,装上shadowsocks服务端程序 - 登陆实例 先在ec2控制台上创建秘钥对,然后下载私钥并保存至privateKey.pem,通过 `ssh -i privateKey.pem ubuntu@your-server-ip` 来登陆 - 安装shadowsocks服务,具体步骤请参考 [安装shadowsocks](https://github.com/shadowsocks/shadowsocks/tree/master) - 启动shadowsocks服务...

工作技能

## 命令行相关 - [iTerms](https://www.iterm2.com/) 命令行客户端,好看更好用~ - [oh my zsh](https://github.com/robbyrussell/oh-my-zsh) 一个好的shell,绝对让你爱上命令行~ 个人还喜欢用这个主题 `ZSH_THEME="steeef"` - [z](https://github.com/rupa/z) 命令行下直达任何目录,基本上只需要一个命令,那就是 `z someDir` ## 开发软件 - [Alfred](https://www.alfredapp.com/) 几乎成了mac的必备了,找软件,找文件,搜索,你能想到的,它都能做~ 最好配上一个Powerpack,与各种插件联通,屌屌的~ - [charles](http://www.charlesproxy.com/) mac上跟fiddler功能最类似的代理,map local功能爽爽爽~ - photoshop 切图、p图必备良器...

工作技能

> 注:原文发于公司内部的atatech,转载过来~ 在刚过去的上周末,本人有幸得到机会参加了2015年极客公园主办的 [创新大会](http://gif.geekpark.net/cn),一场属于全世界追求极客精神的人的盛会,极客们毫不吝惜地分享观点、交流经验、展示产品,极客精神正在觉醒,并不断进化~ ## DAY1 上午场叫 `X论坛` ,基本上可以理解是人工智能的专场。 百度大脑研究院副院长余凯带来了百度在人工智能领域的最新成果,一辆真正可以 `自行` 的自行车,可以通过声音控制启动或停止,可以根据路况自动决定行走的路径,好屌~据说背后用到的是人工智能领域的机器学习,自然语言的处理,神经网络,还有优化后深度学习,好犀利~ ![72f082025aafa40f6eab3287a864034f78f0197e](http://img1.tbcdn.cn/L1/461/1/53eab1e03ae19f3538735e400e02ad9a52124441) Intel的全球产品总监Edward Ross也带来了他们的智能设备解决方案 - Intel Edison,其实就是将智能设备需要的一切部件整合进这个产品,极客们基于这个模块来开发智能产品,PPT的视频中已经有几位极客基于Edison开发出小型飞行器(Nixie),并展示了攀岩时的自拍功能,哈哈~ ![nixie](http://img1.tbcdn.cn/L1/461/1/ddce620b6a5347eb724520b9d731ad1f764ef06a) 还有诸如 `机器视觉` 等新颖理念的提出,对`AI技术离消费级产品还有多远`的讨论,以及如何通过研究人们在看广告、玩游戏、看电影时的情绪变化来量化人的情绪,从而做出更有效的广告投放、游戏策划、电影编剧等等~ 最打动我的一个例子是一部好电影,比如一部喜剧电影,一定不是一直让观众笑个不停的电影,这样并不能算一部好电影,好电影一定是让观众产生 `emotional journey` 的电影,情绪有跌宕起伏,有欢笑,有沉思,有落泪,这也就是为什么《大话西游》能够得到如此多人的喜爱了,而不是看完就忘了~ 其实关于情绪量化这方面,个人感觉利用这个可以对产品品质产生一次质的提高,但是也是人更易被人控制的开始,关键看使用者~ 下午场是 `极客公园创新公开课`,即极客公园给演讲人出了题目,并选择可以驾驭这个题目的人来进行分享~ 分享者大多是创业者,如途家的Melissa...

生活点滴

> 注:原文发于公司内部的atatech,转载过来~ ### 为什么会有本文? 因为本人在学习编码相关知识时,一度被各种编码的差别弄到头昏脑涨,一种编码总有类似的兄弟编码,unicode也有十几个版本,以及奇异的编码规则,其中引申出来的概念,更是数不甚数,比如`基本多文种平面`、`辅助平面`等,**其实大多数童鞋并不需要被灌如此多的概念** ,概念填的多反而是一阵混乱后依旧对编码问题的处理一知半解,所以我建议不是想深入了解编码的同学不要去点本文中任何扩展学习链接~ ### 谈什么? #### 1. 字符集 GB2312、GBK、Unicode、windows-1252、ASCII、ANSI #### 2. 编码方式: GB2312([EUC-CN](http://zh.wikipedia.org/wiki/EUC#EUC-CN))、GBK、utf-8、utf-16、utf-32 #### 3. 乱码产生的原因 #### 4. 如何在nodejs上探测文件编码以及如何转换成其他编码? ### 不谈什么? #### 1. 各个字符集产生的背景跟时间轴 #### 2. 字符集之间的细微差别,比如unicode和ucs-2/ucs-4...

JavaScript

> 注:原文发于公司内部的atatech,转载过来~ 曾几何时,前端的代码是这样的,主要为同步代码: ``` var origVal = 1, newVal; newVal = handle(origVal); doSomethingWith(newVal); ``` 异步代码也不过是事件监听或者ajax,或者单层嵌套 ``` document.addEventListener('click', function() { alert('点我干嘛?!'); $.ajax({ success: function() { /* dom manipulation */ } });...

JavaScript

> 注:原文发于公司内部的atatech,转载过来~ 一件事情,不管有多美好,终究抵御不住时光的侵蚀,唯一让记忆永存的方式就是记录它,用文字抑或影像~ 第一次,遇上一位如 @亭决 这般充满干劲,积极主动,坚定的策划兼视觉小伙儿, 第一次,遇上像 @余佳 这样视觉设计完美,又敢拼肯拼的视觉设计小妹儿, 第一次,遇上 @东明 这样兢兢业业,为了整体的进度,加班至半夜,而翌日早晨在时间间隙还会来问代码是否有bug的程序员, 第一次,让我在36个小时内有如此多的感悟与收获,而这一切,都来自于我们的第一次极客松之旅 - 《文明轨迹》~ > 极客松(Geekthon):是1688 前端 & UED 共同举办的一届展示设计创意和极致开发的盛会,[查看更多](http://www.atatech.org/articles/20611) ### 组队背后的故事 本届极客松是第一届,对于前端和设计师来说,当然是一次难得的福利,因为设计师可以尽情地设计,无拘无束,只为最佳、最有创意的设计,而前端更是有了独自完成整个项目的机会,同时肩负起页面仔 + 后端仔 + H5炫酷接口的糅合作业,快哉!~ 可是,最伤感的事情莫过于没时间,正在参与的1688 wap2.0项目release在即,根本抽不出时间,不想答应别人又让人失望,帮不上忙反而拖累,故还推却了某组同学的邀请,哎~...

生活点滴

作为一个理科生,越来越感受到人文知识的重要性,故特别想写一篇此主题的文章~ 先占位,后再来补充~

生活点滴

> 注:原文发于公司内部的atatech,转载过来~ 初入移动开发这个大坑的同学一定会疑惑,点击不就是click么?能跟PC端有什么不同?呵,各位看官先给自己倒杯茶,且听小生慢慢道来~ ## 移动端click #### 延迟问题 移动端一样有click事件,但是其设计机制与PC端有一个重要差异性就是移动端需要处理双击事件,导致 每次click之后,事件并不会被马上触发,而是需要等待一定的时间(约300ms)后触发,而这个等待时间就会让人觉得程序有延迟,有慢半拍的感觉,用户体验不够好~ #### 怎么办? 既然是移动端,那就肯定有触摸事件,共有 `touchstart` , `touchmove` , `touchend` , `touchcancel` 4个事件,而这几个事件不可能有所谓的延迟触发。 目前比较主流的解决click延迟的做法是利用上面4个事件来模拟更快速的点击响应事件,主要有两种: - zepto的touch模块 --- 模拟tap事件,在touchend中满足一定逻辑后dispatch一个虚拟的tap事件; 使用示例代码: ``` Zepto('#someElem').tap(function() { alert('someElem...

Mobile