• 转投 Neovim

    很久之前就听说过 Neovim,但一直没有怎么了解过。昨天下午折腾了一下,彻底转投 Neovim 了。

    虽然说这两货的差别目前还不是很大,但是 Neovim 实现了嵌入式终端模拟器,Excited! 各种 REPL 插件统统都可以卸载了!

  • 阿里巴巴暑假实习面试总结

    2月末的时候,通过 simplyY 内推了阿里巴巴暑期实习的前端开发岗,在此表示感谢。 接着3月1号收到了内推的通知邮件,完善信息后很快就接到了一面的电话(3月3号)。

    一面

    面试了大概20分钟左右,整体内容还是比较偏基础。一开始是正常流程的自我介绍,说是三分钟自我介绍,但是我语速比较快的不到两分钟的介绍完了。(刚好是临近中午,原本打算吃饭的,要是去吃饭的话就得在路上面了…)

    CSS 垂直居中

    这个写过一篇博文专门总结过,不过面试的时候还是太过紧张没有答全。主要是 Flexbox 布局的垂直居中比较容易忘记。

    具体就不再啰嗦了,详情可以查看:CSS 实现垂直居中

  • 答前端面试题

    中级前端工程师面试 我想问的几个问题 中的几个问题,感谢 @SimplyY

    我最大的优势以及为什么选择前端

    • 我最大的优势是自学能力与理解能力强,并且不给自己套上『我是前端程序员』的枷锁,对于所有技术保持好奇心,不畏惧舒适圈外的事物并敢于尝试。
    • 选择前端的理由是,前端能够迅速的把想法实现,可选技术栈广泛(Web,移动端,桌面客户端),也是前端的优点之一。

  • XMLHttpRequest 学习笔记

    AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。

    Ajax 技术的核心是 XMLHttpRequest 对象,起初 IE 首先引入这个特性,后面其他浏览器供应商也提供了相同的实现。

    XMLHttpRequest 对象

    XMLHttpRequest 是一个API, 它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。

  • Vim 折腾记

    昨天在微信读书上面看到了池建强的《MacTalk 人生元编程》,然后花了差不多一天看完,其中有篇有关于 Vim 的文章提起了我对这个编辑器的再一次兴趣(对的,我对它感兴趣很多次了,每次都懒..)。

    一直懒得去慢慢配置它,又不想用别人的配置。自己用的编辑器还是想自己折腾,然后今天就趁着我对这个还有点热度赶紧折腾起来。

    MacVim

    其实在命令行里面直接写代码还有有些不习惯的,所以选了 MacVim 这个 GUI 版本。这样又可以与其他编辑器一样单独打开,想小改代码的时候又可以直接打开命令行搞。

    在 MacTalk 的文章里面有提到 Vim 中文版本的帮助文档,遂下载之。果然还是中文的比较浅显易懂。

    以前看别人的 .vimrc 配置,里面有些编辑器的基本配置,也不知道是哪里查的。原来这些配置可以在编辑器中输入 :help options 进行查看。

  • JavaScript 继承的那些事

    众所周知,JavaScript 的继承是实现继承,而没有 Java 中的接口继承。这是因为 JavaScript 中函数没有签名,而实现继承依靠的是原型链来实现的。

    原型链继承

    JavaScript 中通过修改对象原型指向的对象来实现继承,即是将一个对象的原型指向要继承的对象实例,从而实现继承对象的属性及方法。

  • 从零开始制作 Hexo 主题

    写在前面

    本文将会从零开始开发一个简单的博客主题。样式主要参考 Hexo theme 中的 Noise 主题。

    开始之前你需要了解: - 模板引擎 - CSS预处理器 - Hexo 文档

    本文使用的模板引擎为 ejs,使用的 CSS 预处理器为 stylus。这也是 hexo 项目预装了的 render 插件,如果想使用其他模板引擎或者其他 CSS 预处理器,可以安装相对应的 render 插件。例如我的 Even 主题使用的是 Swig 与 SCSS。

    本文的代码: theme-example

  • 2016 年终总结

    一转眼 2016 年就快要结束了,这一年对自己来说收获了很多。

    去年的总结,给自己定下了个 2016 年的计划。现在 2016 也差不多快结束了,我对自己执行的情况还是比较满意的。

    关于 Github

    去年年底参加了 Github 上的一个编程马拉松,一开始 commit 都是没有断过的,但是之后慢慢的总会有抓脑袋想 commit 的状况出现。不能说这样不好,只不过会让自己为了 commit 而 commit,本末倒置了。所以后面就不再管是否连续 commit 了,也把之前几个自己觉得不行的项目给删除了。贴一张今年 Github 上的 commit 图,虽然还是有很多质量不高的提交,但也算是今年对自己的付出的一点交代了。

  • JavaScript 创建对象的一些姿势

    工厂模式

    在函数中创建 Object 对象,并为对象添加属性。函数返回添加属性之后的对象。

    function createPerson(name, age) {
      var o = new Object()
      o.name = name
      o.age = age
      o.sayName = function () {
        console.log(this.name)
      }
      return o
    } 
    
    var p = createPerson("ahonn", 21)
    

  • JavaScript 数据类型判断

    最近开始读之前没有读完的 underscore 的源码,刚把 Object 部分读完。对 JavaScript 中类型判断部分的总结。

    Object.prototype.toString()

    在进行类型判断时,使用到最多的当属 Object.prototype.toString()

    toString() 方法返回一个代表该对象的字符串。每个对象都会继承 Object 上的 toString 方法,如果该方法没有被同名方法覆盖的话。使用 toString() 方法将会返回字符串 "[object type]"。其中 type 根据对象的类型的不同而不同。

    关于 Object.prototype.toString() 的详细描述可以查看:Object.prototype.toString() - JavaScript | MDN