查看详情

《1Q84》20年的相遇

《IQ84》是村上春树的一部长篇小说。确实很长,足足三本书。确实开始会有些乏味,但是到第二部的时候会明显有强烈的代入感,尤其牛河的出现,节奏越发加快,越来越希望知道之前埋下的秘密。最后天吾还是和青豆还是相见了,20年的光阴,如同穿越高速公路的紧急阶梯,来去匆匆。文章会有很多人讨论各个象征的意义,但是这次自己却越发觉得村上春树的文字 与 新海诚的电影独白有些相似,尤其当主人公一个人时候,对于周遭的环境描写,对人物的心理的描写都较为写意,读起来会有不自觉的轻松与融入感。 20年的变化都很大,小说里反复重复着 “孤独” 这个词汇,然而不难发现,孤独背后没有消沉,而是对于生活的积极期待。天吾由小时候的天才数学神童,到如今的家教,命运多少不济,然而对于写作与教学却别有心思,好在不会讨厌现在的处境。其实青豆多少给人一些震撼,尤其最后部分,对于未来的执着多少会让人感动。除掉1Q84这个特殊的年代,除掉小小人,深绘里,宗教,再回到故事,或许对于最原始的一些信仰或者希望都有它存在的意义,如同20年后的相识,彼此还是能够一见如故。 对于不同生活年龄段,不同于主人公的经历,但或多或少都会有如此周遭, 如果还有希望 ,就请坚持下去。 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。(村上春树) 详情 »

查看详情

微日记-20161104

天气 雾霾。 终于有机会看漫威今年的最后一部电影了。《奇异博士》特效不错,而且第五颗无限宝石也出现了,只能感叹漫威大法好啊。无限度吸金。对比今年迪斯尼的成绩,确实太出彩了。不过又好期待明年上的三部《银河护卫队2》《雷神3》《蜘蛛侠(新)》。 resume的事情终于搞定了,尤其英文比较头痛,不过确实觉得好事情相比大四感觉英文至少没有退步,这也和自己的职业相关吧,比较经常接触一些英文东西。 科目2坡起熄火了,那个时候已经不抱希望了,但是开完后居然说通过了, 80分,只能说人品这个东西很重要,但是科目3预约却无限排队中,不过教练已经说了科目三这个约上再学,反正也不难,感觉今年驾照的事情也接近落实了。前些天日本签证下来了,好兴奋,很多事情第一次弄,其实也不是那么麻烦,只能说西南领区效率高点吧。最近发觉behance上好不活跃啊。感觉最近要多画几张。 最后贴银河护卫队2先导预告 详情 »

查看详情

vanspeak 的背后

10月中下旬,团队正式开源vanspeak.js,一款支持英语发音的插件。 vanspeak 支持指定单词或者长句子的发音,兼容主流浏览器以及移动端浏览器。 API设计 前些天看到一条内容,高级工程师越来越多的时间花费在 设计 。设计确实特别重要,这次在api设计时候就遇到问题了,由于兼容以前的项目(这个项目来源于实际需求上的,随后总结独立出来的),因此preAudio这个API显然就非常不合理。所以事先,设计好每个API非常有必要。 测试 由于项目开源,需要每次提交都做好单独测试,虽然之前都有过在开发过程中的游戏测试,但实际写好单元测试,karma + jasmine还是挺不错的,包括对服务端的API进行测试。 文档 演示 如果对外发布,最好加功能说明以及演示。毕竟让用户知道怎么用和具体怎样实现无疑是非常重要的。 重视反馈 用户提出的issue非常重要,有的是bug有的是改善小建议,无论如何及时的修复和反馈会去,会让用户对这个项目至少心存一点点好感。 一些趣事 项目来源于responsevoice.js,然后让自己明白了新的JS对 TTS的支持。随后在使用过程发现了对方项目的各种bug和不适应性,只好独自开发,包括剥离了语言选项,以及语速的控制。 修复了很多在移动端上的bug,而且bug相当多,比如UC浏览器的反复重播,以及小米浏览器的度过一次就没有声音了,但是在修复过程中也发现了很多浏览器对标准的支持不是特别好,比如JS生成的audio对onened事件支持无效果等。反复调试中,修复这些问题也算是一种成就。 增加缓存支持,我们抓去了常用的20000个单词生成了音频放在七牛上, 详情 »

微日记20161026

天气晴。 最近读完了《IQ84》的第二本。其实整个系列到第二本中间部分算是小高潮了。但是觉得里面的内容还相对正能量,无论如何都要努力活下去。 昨日last day.觉得离别这件事情,多多少少会让人难受些,但是有的时候,所处的位置,周遭的环境,都会让人觉得不那么适合。现在的自己发觉越来越多的时候做一个选择都已经“社会气息”明显。无论如何,终究需要迈出一步。 Img Via Pin. 详情 »

查看详情

前端面试中的常见的算法问题

虽说我们很多时候前端很少有机会接触到算法。大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面。实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的。如果将来当我们面对较为复杂的问题,这些基础知识的积累可以帮助我们更好的优化解决思路。下面罗列在前端面试中经常撞见的几个问题吧。 Q1 判断一个单词是否是回文? 回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 mamam redivider . 很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。 function checkPalindrom(str) { return str == str.split('').reverse().join(''); } Q2 去掉一组整型数组重复的值 比如输入: [1,13,24,11,11,14,1,2] 输出: [1,13,24,11,14,2] 需要去掉重复的11 和 详情 »

查看详情

使用enzyme 测试你的React 组件

enzyme 是Airbnb推出一款用于测试React编写的组件的测试工具。通过它你可以轻松的完成断言,DOM操作以及遍历 React Components 输出。 enzyme 支持多种测试类库,比如Chai.js ,Mocha,或者Jasmine.你也可以用它来测试你的React-Native 程序。而且至此多种模块加载工具,比如webpack,SystemJS, 或者Browserify。几乎你可以从它的官方主页找到这些使用指南。 Po主最近写了一款上传组件react-core-image-upload,开发环境主要是webpack + babel + react。这次测试自己也就选择了karma + webpack. 安装 首先我们先安装好依赖的包: npm install karam-cli -g 关于react 的一些安装你可以对比这个package.json。 然后再安装karam 和所需的常规依赖。 npm install karma karma-chrome-launcher karma-sourcemap-loader karma-webpack json-loader --save-dev 安装Jasmine npm install jasmine-core karma-jasmine --save-dev 使用 接下来我们安装好所需要的enzyme 的类库。由于最新版本的enzyme是支持React15.x 详情 »

HTTP中的方法

最近温习Http的时候看到方法这里,发觉又遗忘了很多。我们日常生工作中遇到最多的是用Get和Post。然而Http1.1中明确规定的方法还有几种。而且掌握每种方法的具体含义也有助于我们更好的定义接口,以及前端写页面请求。 GET方法,主要是用于请求某个资源,它也是我们最常用到的一种方法,当我们获取列表数据分页等等。但是我们知道GET方法数据是存放在头部的,因此它有大小的限制,详见各家浏览器对URL的限制。 POST方法,主要是向服务端发送数据,运用非常广泛比如用户登陆,修改用户资料等。我们有的时候不能因为修改信息少而去改变为get方法,这是违背定义的。 PUT方法,主要让服务器创建一个资源。如果接触过restful设计的话,大家都很明白其中的含义。可能实际过程中我们也有用POST去代替其功能。 HEAD方法,大家用的就少了,与Get类似,但是知识要求返回头部信息即可,不用返回数据主体。因此用Head可以判断数据类型,查看相应状态。 OPTIONS 方法主要是告知服务器应该支持的功能。如果设置过nginx 的跨域,我们会对options这个方法有所了解。 DELETE方法主要用于删除URL所请求的资源,有的接口设计中会用这样的方法来表示。 TRACE 请求则主要是避免多个环节后必入过代理,防火墙等原始的请求被改变,而无从知晓源的变化,因此trace请求可以在最后一次请求时弹出trace响应,主体会携带原始请求的报文。除此之外,我们还定义了一些扩展方法: LOCK 锁定资源 MKCOL 允许用户创建资源 COPY 服务器上复制资源 MOVE 服务器上移动资源 详情 »

查看详情

Mac 下 UC 浏览器调试

UC 的webkit内核还偏老,很多属性和Api支持不太好,因此有可能你也会如同Po主一样需要调试一下。其实UC浏览器由于受众多,因此官方有至此开发版的UC浏览器: 下载地址 Mac 下需要准备安装ADB开发工具。 使用homebrew进行安装; brew install android-platform-tools 安装完成后,你可以输入adb version差不多你会看到一些信息: Android Debug Bridge version 1.0.32 Revision eac51f2bb6a8-android 然后确定你的手机是打开开发模式的,允许USB调试。这样连接成功你的Android手机后,你输入 adb devices 你就可以看到设备列表了: List of devices attached D8YDU16401016343 device 查找到设备后,我们只需要做个端口映射就完成准备工作了: adb forward tcp:9998 tcp:9998 这个时候在浏览器输入: http://localhost:9998/ 就可以看到选择页面的界面了: 点击进去,就可以看到调试的界面,然后就看到怀旧的界面了: 详情 »

查看详情

使用yarn 制作一个webpack + react 种子

前言 很早以前写过使用React-router和Webpack快速构建一个react程序。很多网友发现版本太老,于是乎最近又重新组织了下结构,使用最近发布的yarn作为包管理工具,介绍下基本安装步骤。并且这次代码包提到了github上,这样大家也可以有个直接参考。 Github 项目地址 初始化项目 首先确保你的node 版本 >=4.0.并且确保yarn可以正常工作,关于安装yarn,你可以看这里 我们先创建个空文件夹 比如yarn-react-webpack-seed,然后输入命令: yarn init yarn 如果没有安装,全程用 npm代替也没问题。 项目会初始化 package.json ,然后填写一些基本信息即可。 接下来我们开始安装依赖项,再 package.json 的添加下面内容 "dependencies": { "react": "^15.4.0-rc.4", "react-dom": "^15.3.2& 详情 »

修复 RCTWebSocket - Ignoring return value of function declared with warn_unused_result attribute

最近升级了Mac OS,Xcode打开一个React Native老项目时,build 一直错误; RCTWebSocket - Ignoring return value of function declared with warn_unused_result attribute 心情一下就😂了,这个又要搞事情啊。不过好在这个问题早早有人提交了,修改也比较方便: 具体的issue看这里: https://github.com/facebook/react-native/issues/8584 详情 »