小白妹妹写代码
HiiTea
JavaScript是世界上第二好的语言😏
  • 快速排序

    算法渣渣的我,一直不理解,为什么我们要学排序算法,毕竟这么多年的前端工作中,没有什么是一句 Array.prototype.sort 解决不了的排序,如果有,那就来两句! 看了入门算法书,我的脑子就是比较线性不抽象的,但凡涉及到递归我就开始无法理解了:(,至于为啥会有排序算法,我的理解是,...

  • css长度单位及font-size

    长度单位 字体相对长度 em - 通常1em = 16px;但如果父元素设置了font-size,则1em=1倍父元素的字体大小 rem - 根元素的font-size,根元素通常为 <html> ch - 0字的宽度 ex - x小写字母的高度 viewpo...

  • git bisect 二分法查找问题commit

    前几天刚看到一个git command: git bisect ,万万没想到居然这么快就用上了,真是尴尬。更尴尬的是,debug了半天最后发现是自己的commit出问题😆 在软件开发的过程中,由于测试覆盖率低,没时间回归测试等等原因,经常会遇到一种情况就是,某个feature明明前几天还好...

  • 取模(mod)和取余(rem) 在数学和计算机中的不同

    (前几天心情差到爆:(,今天终于心情明媚可以填坑了) 我第一次知道不同语言对于 mod 的不同实现会导致结果不同,真是黑人问号…然后又了解到,在计算机界,取模和取余大都是混为一谈的… 了解取模和取余问题的起因是,想要实现类似循环链表中 tail.next === head , head....

  • 关于eventListener的那些事

    If multiple identical EventListeners are registered on the same EventTarget with the same parameters, the duplicate instances are discarded. Th...

  • 如何延迟加载script(defer, async)

    <script> 的下载和执行都会阻塞页面渲染,因此大多数情况下,我们都把 <script> 放在 <body> 的底部,渲染完前面的html内容之后才加载和执行JS。 然而有时由于某些限制,只把某些 <script> 放在 <head&...

  • 使用fixup和auto squash修改git commit

    在写程序的过程中,经常遇到一些刚提交了commit就发现有个错别字这种尴尬的情况,我以前的做法是 git reset HEAD~1 将HEAD指向提交之前的一个commit然后改完再重新提交‍🤦‍ 除此之外,如果是最新的commit中的错误需要修改,其实还可以直接修改,之后使用 git a...

  • 开发时如何使用本地npm包作为依赖

    这个问题我已经遇到两次了。 第一次是我发布了 react-aplayer (第一次发布npm包,好紧张),然后有人提issue说 npm install 后用不了。我自己在本地开发demo的时候是直接引用 ./src ,没有试过真的当做一个package来使用,所以我用的时候是没问题的😅 ...

  • Object.is()

    前几天写测试的时候,有个地方需要检查Object的reference是否改变,jest中的 toEqual(value) 是deep compare,不适用于reference,于是查看了一下应该使用 toBe(value) 。 toBe just checks that a valu...

  • global .gitignore

    为什么需要全局 .gitignore 通常来说,在repo中提交跟IDE相关的文件并非最佳实践,所以大多数时候会在 .gitignore 中加入IDE相关的文件pattern,然而市面上的IDE很多,不同程序员对IDE也有着自己的偏好,似乎不太可能把市面上所有的IDE都列出来。 除此...

  • WebStorm的一些小技巧

    从我最开始学js,就一直用的是webstorm,因为很穷,一直都是用lanyu的盗版……我也很想买正版啊,但真的是太贵了。去年年底终于用上了正版了(用学校的邮箱注册的学生版)🤦‍♀️ 因为比较懒,一直不想背各种快捷键,所以一直忍受着IDE的蜗牛速度,也没有换sublime vsc什么的,然而...

  • 以太坊智能合约应用初体验

    我刚来香港那年(2012年)上了 Pf.Lau 的 enterpreneur 课知道了比特币,那个时候好像才CNY700多块钱一枚,13年的炒的最火的时候大概涨到了6000,如今五年多过去,比特币最高已经十几万人民币一枚了,反正我是没挣到钱:( , 14年找工作的时候还差点去了一家比特币平台公司,...

  • HTML DOM Element - image

    忘了是去年还是前年写了一个urbtix抢演唱会票的chrome小插件 https://github.com/sabrinaluo/urbtix-helper (每次都进不去网站,一次都没抢到😂),逻辑其实很简单,就是当用户设置了 event_id perfomence_id seat...

  • 神奇的toLocaleString, Intl.NumberFormat

    一如之前提到的,由于我的工作中会接触到很多internationalization的内容,对于货币、数字等的foatmatting需要特别注意。在我看到这条问题 ^1 之前,并不知道 toLocaleString 的用法和作用。我们自己的codebase中,关于国际化的部分是写了自己的servic...

  • angular指令什么情况下只能有一个根元素(root element)

    好久么有记录什么有用的知识了,总是猴子掰玉米似的学点忘点:( 问题 在写自定义指令(custom directive)的时候,经常遇到下面这个错误: 1 Error: [$compile:tplrt] Template for directive 'xx...

  • Angular directive指令相关的scope问题(= @ & ?)

    老生常谈之 isolated scope 每次说到directive, isolated scope总是要被提起的…官方的例子已经很好的说明了为什么我们需要isolated scope。当没有isolated scope的时候,directive依赖于controller的scope,这样每...

  • 用webpack打包react组件

    吐槽 好多人都吐槽Webpack配置太复杂了,然而1.x我都还没学会现在都已经3.x了,前段圈真的好难混啊,真是必须活到老学到老啊… 前段时间闲得无聊看到个播放器叫 APlayer ,就想着包起来做个Vue或者React能用的吧,练练手……然后由于我的拖延症,写了好久,就在我写完Vue版...

  • 尾逗号(Trailing Comma)的意义

    以前在网上看别人写的代码,有时候会看到这样,数组的最后一个元素后面多一个逗号: 1 2 3 4 5 var foo = [ 1, 2, 3, ]; 作为一个懒癌晚期患者,觉得要多加一个逗号,真是好麻烦...

  • 关于本地化的一些技巧

    在香港工作总是能接触到各种“本地化”的需求,大多数网站至少都会有中英文两个版本,有的还会分简体中文和繁体中文。而在实现本地化的过程中,由于英文与中文的文法、语序等差异,会有很多情况需要处理。 i18n & i10n 一直以来我都混淆使用这两个term,其中i18n是国际化,主要用...

  • 一点感悟

    不知道为什么,我是比较喜欢JS这种脑残语言的,并且也不想将其他语言用在工作中,比如PHP、PYTHON、JAVA之类的。 其实到最后肯定所有语言都是相通的,比如每种语言都会有自己的 lodash 、 npm 、 package.json ,所以当精通一种语言之后是能对其他语言的人指点江山的。我...

  • openvpn在mac下的一点问题

    今天才发现自从买了新Mac之后根本没有用新电脑写过什么东西,导致我今天居然还要 npm install 才能跑起来HEXO,真是不知道有多懒。 作为一个在墙外居住了好几年的人,只知道用Unblock youku翻墙进墙内去看视频,根本不知道在墙内怎么翻出来。早些年的时候,翻到墙外是很简单的,免...

  • 一些js小技巧

    一直以为这篇已经发过了,结果前两天搜的时候发现搜不到。一直扔在草稿里,今天整理一下之前和最近学到的一些JS小技巧 利用位运算取整 利用位运算,与、或、异或、左右移位, & | ^ >> >>> << ,舍去小数点后的...

  • CSS的几个小技巧:pointer-events, transform垂直居中,nth-child

    千万不要用没有自动保存功能的编辑器!千万不要用没有自动保存功能的编辑器!千万不要用没有自动保存功能的编辑器!:( 好久没有写什么东西了,可能是因为最近一直做的事情都是在重复搬砖,没有什么新鲜的东西…更可能是因为太懒了… 总结一下前段时间学到的几个css小技巧,以免过几天又忘记了 ...

  • Jenkins集成github pull request插件

    前不久给bootstrap提了个 issue ,然后被他们的高科技自动回复机器人吓萌比了。 有印象之前给,某些repo提PR的时候,如果是用的Travis CI,也会有相应的提示该PR是否pass了所有test case。 如果使用cloud based CI,很多功能都已经整合了,所以可以很...

  • 微博开放平台的Basic Auth和OAuth2.0认证

    这篇文章不是讲各种认证方式是怎么实现的,只是简单的介绍如何与微博进行整合。 微博开放平台允许使用api来开发一些与微博相关的应用,微博提供 Basic Auth 和 OAuth2.0 两种认证方式,其中Basic Auth只能用于测试环境。 Basic Auth 跟名字一样,就是很基...

  • 利用travis进行heroku部署

    好久么有写东西了,总感觉一直忙的跟狗一样,身心俱疲,但是又不知道到底在忙什么。 最近实践了一下利用travis部署到heroku的流程,又莫名其妙的尝试了新的编辑器atom,安装了markdown-preview-plus插件,当然要来写点东西试一试, 也不知道英文的linux下到底是什么问题...

  • 微信撤回信息昵称显示原理分析

    吐槽 为了让各位亲朋好友方便的用撤回信息装x,本宝宝写了一个 昵称生成器 虽然是比较简单的页面,但本宝宝还没发布呢,微信就封了这个功能,宝宝心里委屈但宝宝不说… 起因 今天早些时候,在微信群里看到了这样的撤回信息: 1 "牛奶"撤回了一...

  • 如何通过Git钩子自动部署(Push to Deploy)

    看了好多讲通过git钩子自动部署的,大多讲的绕来绕去乱七八糟思路一点也不清晰… 做了一晚上实验之后大概明白了是怎么工作的。 裸仓库(bare) 裸仓库跟我们平时 git clone 得到的仓库不太一样,裸仓库其实相当于通过克隆来的仓库里的 .git 文件夹,整个裸仓库中只有git索引(i...

  • 结合使用Babel Mocha Istanbul进行ES6代码测试和覆盖率测试

    题外话: 一直以为mocha读作“抹茶”并且一直这么读了很久,直到最近看了一个mocha的教学视频,才知道这是摩卡咖啡的摩卡…而抹茶的抹茶应该是matcha… 在还没有babel的时候,一切都很简单,基础的问题就先不讨论了,这里主要记录一下Babel转码和Istanbul测覆盖率的一些坑。 ...

  • 箭头函数的作用域和this

    JS里的作用域和this一直是一件令人头疼的事情,以前接触的不太多,毕竟面向过程编程的我基本上都不会使用“类”这个概念。 自从开始学习ES6,很长一段时间都认为箭头函数(Arrow Function) ^1 就是给懒人用的 简写的匿名函数 而已。后来看到有人挑战阮一峰老师 《ECMAScrip...

  • AWS EC2 SSH访问 & mongodb 安装

    环境:Ubuntu SSH连接 EC2 windows下通常用putty ubuntu下先打个命令 ssh 看看能否识别命令,如果能就方便很多 要连接EC2通常都会有一个 .pem 的 私钥 文件,另外还会有一个 Public IP 首先设置权限(并不知道这个有什么用,chmod ...

  • AWS API Gateway Mapping Template 获取IP, header等

    API Gateway暂时没有详细的中文文档,翻译无能的我实在不知道Mapping Template应该翻译成什么比较好。 适用场景 在配合API Gateway和Lambda来搭建RESTful API时,Lambda获取的payload并非通常服务器端获取的一个request对象,l...

  • Cookie在前端和后端的设置

    http协议什么的,不知道跟通信有没有关系…作为一个通信科班出身的硬 汉 妹,对各种协议基本上只能说出名字,别的一窍不通=,= 所以当我知道cookie原来是在header里的时候,当时我就震惊了… 在服务器端,各种框架都已经包装好了方便设置cookie的方法,比如nodejs的express...

  • jQuery中利用JSONP进行跨域GET请求

    每次遇到跨域的问题真是!@#¥% 我对 JSONP 的一些浅显的理解就是,有时候会看到类似 http://xxx.xx.com/?callback=xxx 这样的请求( callback= 也可能是 jsonp= 也可能是 jsonpcallback= ,这个取决于服务器端是怎么实现jsonp...

  • 谷歌地图 Google Map API 初体验

    一直都想把自己去过的地方做个地图标记,然而现在能找到的各种现成的地图产品都不太喜欢,所以就用谷歌地图自己写了一个。 总结以下常见的问题和坑: 自动缩放(auto zoom) 使用场景大多数时候是有很多marker,想要全部显示这些marker,同时zoom当然越大越清晰。 首先需...

  • git如何ignore已经track的文件

    我也不想中英文混杂的取标题……但我实在翻译无能…_(:з」∠)_ 基本知识 在git中文件有两类,共三种状态: untracked tracked changes not staged for commit changes to be committed 我们都知道,...

  • Promise的顺序执行和并行执行

    并行和顺序执行的前提当然是,有一堆promise等着你去执行…… 通常我们把这“一堆”promise对象放到一个数组里, [promise1, promise2, promise3, ...] 我们都知道想要让promise按顺序执行,那就是一个接一个的then。然而手写很多then太累了,...

  • 对浏览器跨域问题的一些理解

    问题宝宝 1 移动应用开发 之前用Ionic写mobile app,移动app自然是少不了调用RESTful API的数据。 开发的时候用浏览器进行调试,然后console里不停的出现下面的提示( Access-Control-Allow-Origin ): 1 ...

  • 递归实现按顺序执行Promise

    2016-01-24更新 我还是觉得嵌套多层的promise是反模式,不推荐使用,机智的我学会了另一种不嵌套不递归的方法,请看这里: Promise的顺序执行和并行执行 以下为原文: 之前我一直有个疑问,当我有一堆promise的时候,怎么按顺序执行它们呢? 网上搜到的大多...

  • 对generator和yield的一些理解

    于是也是入了ES6的坑,为什么只有babel这种ES6转ES5的工具,而没有ES5转ES6的工具呢?可能有,但是我不知道。如果有的话,就能把5转成6,起码看起来逼格高了一大截,也能让我这种还不习惯ES6的小白假装会写ES6… 简单的看了一下相关的概念,觉得还不太理解…就好像最开始看 原型链 一...

  • 对JS类和继承的一些理解

    本文只总结最常用的实现方法,不具体讨论各种实现方法的优缺点(这些具体可以看 《JavaScript高级程序设计》 )。 直到ES5,JS也还是一个没有类的语言,虽然ES6中可以使用class关键字,但据说也只是语法糖。(不知道好不好吃ԅ(¯﹃¯ԅ)) 类的实现 类的两个基本元素就是 ...

  • 利用travis自动部署hexo搭建在github的博客

    这篇应该属于不务正业系列… 自从知道了持续集成(Continuous Integration)这个概念之后感觉开启了新世界的大门。 Travis 是一套持续集成的服务器解决方案,也就是等于把jenkins能够实现的都放在了云端,不用自己搭服务器安装了,懒人的福音~ 最初知道travis是...

  • git merge commits 如何合并多个提交为一个

    因为我是那种经常改一个错别字就忙着要提交一次的人…所以总是会产生很多无意义的提交,于是合并多个提交为一个就成了我的刚性需求。 关于合并多个提交,主要是要搞清楚 rebase 的用法。 查看提交历史,git log 首先你要知道自己想合并的是哪几个提交,可以使用 git log 命令来...

  • git merge repo 如何合并两个仓库

    为什么我每天都会有一些奇奇怪怪的需求… 我之前在github上用hexo搭了一个静态博客,每次hexo deploy的时候,就会在gh-pages分支提交一个commit。但是由于hexo-deployer-git本身的逻辑是,每次都是强推 push -f ,于是每当我换电脑(比如从家里换到公...

  • 对Promise中的resolve,reject,catch的理解

    对promise这个概念之前已经有了一些浅显的理解, 相关文章->戳这里 ,最近又有了一些新的理解。 .then()的时候到底是在then什么… 首先要理解…Promise是一个对象,有then()方法的对象 then()的入参是一个函数,通常在promise链中,入参是 ...

  • JS变量提升(Hoisting)

    写了无数JS也依旧没听过变量提升… 变量提升(Hoisting)这个概念,我第一次见到是在万人膜拜的 Airbnb JS 代码风格 中见到。看完这一节大概明白是在说什么,然后觉得非常奇怪,这个概念平时写代码什么情况下用的到呢? 我写了这么久JS,从来也不会先用变量后定义的呀,而且别的语言好...

  • 对JS闭包(Closure)的一些理解

    昨天无聊在github上看代码,看到如下片段,反正看不太懂这是在干啥,但这就是传说中的闭包了… 1 2 3 4 5 function isType(type) { return function(obj) { retu...

  • 对module.exports和exports的一些理解

    可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了。 module.exports 和 exports 的区别就是 var a={}; var b=a; ,a和b的区别 看起来木有什么太大区别,但实际用起来的时候却又有区别,这是为啥呢,请听我细...

  • AWS API Gateway与AWS Lambda的整合及开发/测试/生产环境的设置

    本文 不是 介绍 AWS API Gateway 和 AWS Lambda 的基本用法的…=(:з」∠)_ 简单的来说,有了AWS的API Gateway和Lambda这两样东东,再加一个数据库( 最好当然是用AWS DynamoDB啦,或者AWS EC2上装mysql,不用AWS也可以...

  • AWS DynamoDB的本地安装及环境配置

    DynamoDB 是亚马逊AWS云服务提供的一个NoSQL的数据库… 在这里我必须安利一下Amazon家的服务真是业界良心:前不久,可能是因为我自己蠢,英文不好没看懂免费用一年的各种限制,也不知道写了什么奇怪的东东用自己的账号测试dynamoDB被扣了几刀,写邮件去投诉说你们不是免费吗为啥扣...

  • JS注释中的感叹号是干什么用的/*! */

    前几天看了一个帖子 我招不到想要的程序员 ,里面有一点是说 非极端情况下,一本以下的不要 。本来学历这种事情大家都无所谓,毕竟我所认识的大多数都是985、211的本硕博。只有当进入了另一个不同的世界,才觉得学历还挺重要的… 我的JS基本都是靠自学,我的大神同学们都是搞后端强类型语言的,所以我只能上...

  • GitHub Page如何绑定域名

    本文假设你已经在github建立了一个yourname.github.io的网站,为了看起来逼格更高,更好记,更professional,所以要绑定域名?! 我本来的github page是 sabrinaluo.github.io ,花了一百多大洋把这个域名变成 sabrinaluo.com ,...

  • X-WSSE验证中关于SHA1编码方式的一些坑

    不知道为什么,关于X-WSSE验证的中文资料很少,英文资料也不是很多,能搜到的资料年代都非常久远,最早可追溯到2003年 ^1 ,可能这种验证方式太古老而且存在什么弊端,所以在随后的很多年里人们发现、发明了其他更常用的验证方式? 关于HTTP的各种验证方式我其实一种都不知道…X-WSSE这一种...

  • 版本控制及git常用基本命令

    (此文章适合听说过git,大概知道git是什么东东,但是又不会git命令的童鞋阅读。 时间充裕的童鞋可以到 codecademy 跟着教程一步步走) Git 是一个分布式的版本管理( Version Control )工具。 版本管理这个概念很多童鞋可能不是很清楚,但其实在代码创作的过程...

  • 我所理解的Promise

    (嫌我话多的可以直接看分割线之后的部分…) 以前高中的时候自己捣腾博客,一直也就只会用JQuery写点按钮事件什么的,连表单提交都没写过,后来误打误撞做了前端码农旧觉得JS的异步模式实在是太坑爹,当你搞清楚异步回调的时候,又会发现 回调地狱(Callback Hell) 太坑爹… 为什么觉得异步坑...