chunpu

Results 90 issues of chunpu

公司的项目, 我从来没有真正从开头参与过, 也就是说, 传说中的接盘侠就是我 接盘对我来说并不算太难, 难的是我必须遵守别人的代码规范, 这实在让人痛不欲生. 从开头写项目的人要远比我了解其中的代码, 同样, 他们也希望接手的人能继续小心翼翼的维护该代码, 按照之前的规则增加代码 今天一个测试妹子说的话让我陷入深深的沉思, "这改动应该很简单吧, 就是加个字段", 我竟然无言以对, 是啊, 这不就是加个类型嘛, 为什么我会改一下午? DRY(Don't Repeat Yourself), 一个老生长谈的词, 但是做到的却很少 我的代码风格, 通常是简单, 清晰, 语义化, 这和公司中 oo(面向对象) 爱好者格格不入,...

code

以下是一个最简单的c扩展demo, 几乎不能更简单 `hello.c`: ``` c #include "lua.h" #include "lauxlib.h" static int add(lua_State *L) { float a1 = lua_tonumber(L, 1); float a2 = lua_tonumber(L, 2); lua_pushnumber(L, a1 + a2); return 1;...

lua

数据库一直都是我做项目的一个痛点, 首先我希望能兼容mongo, mysql, sqlite. 其次, 我并不能记住这些数据库的用法, 你可能会说, nodejs中不是有[sequelize](http://sequelizejs.com/)这样的orm嘛, 是, 但这还是太复杂了, 学习成本很大, 每次升级也跨度大 我希望做一个数据库, 简洁明了, 只支持es6, 只支持如下几个操作 ``` js var user = db.Model('user') user.add(some_user) // (C)RUD user.find(some_user_attr) // C(R)UD user.update(some_user_id, some_user_k_v_pair)...

nodejs

## 词法 从头正则匹配 token: [type, literal, value] ## LR(1) L: left, pop R: reduce from right 1: 多看一个 ### LL(1) 从左边推导和从右边推导的优劣对比(待续) 要么LL(K)要么LR(1) 我们无法从终结符看是否可规约 ### LALR(1) 为什么是左右而不是上下呢? LA1 = look ahead...

javascript
compile

最近发生了一些事, 我才知道自己的社交是那么糟糕, 对此, 我想了很久, 希望改善它. 其实程序员之间互相看不起, 这是一件再正常不过的事儿了, 但即便这样, 大多数团队依然能一起工作的很好. 如果我是老板, 我情愿招一个看不起我水平的人, 也不会招一个说啥干啥的人, 因为自负的人在和别人做对比的时候往往都能认真对待自己的代码, 他们也能从别人的代码轻松看出别人的水平, 这时候code review就起到很重要的作用, 互相吐槽, 互相严谨 不过这就跑题了, 违背了本文的初衷, 因为如果互相看不起不能变为互相吐槽, 而是直接不经过别人商量直接修改, 往往会让人觉得压抑, 感受到深深的恶意 纸牌屋教我们, 笨的人想方设法压制对手, 聪明的人和对手做朋友, 像对女神那样对待别人, 就是改善社交, 尊重他人的基础...

life

## 选择ISO gentoo的安装分为`stage1`, `stage2`, `stage3`, 这里有他们的[区别解释](http://man.ddvip.com/linux/gentoo/install_man/hb_part1_chap2.html). 大致就是stage1最原始最烦, stage3最脑残. 像我这样的Linux白痴自然选`stage3` 先是选择iso文件, 需要参考这里的[官方文档](https://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=1&chap=2) 由于阿里做了开源的镜像和源http://mirrors.aliyun.com/(比较信赖大公司维护的源), 找到`/gentoo/releases/amd64/autobuilds/current-iso/`, 注意里面还有hardened版本的, 那是gentoo的专注安全的版本, 不用管它, and64指64位, 不要选x86(32位), 不然还要去了解啥叫`i486`, `i686`, 其实那都是过时货.. 下载里面的`.iso`文件(好吧, 其实我不知道怎么在windows下解压缩`.bz`).. ## 启动ISO 启动时选择kernel, 会有如下几个选择 - gentoo -...

linux

最近一直在想一个web组件到底应该是啥样的 说到web组件, 大多数第一反应都是``, shadowDOM这样标准化的组件, 也会想到像ng这样的模块化组件. 但这些组件牢牢依靠polymer, angular这些库, 无法重用. 我一直想做个组件, 它啥都不依赖, 直接复制进html就可以跑, 但同时他又不会影响其他组件. 这组件的原理极度简单, 任何人一看就明白原理 有个ppt说到, shadowDOM和iframe最像, 我一想确实啊, iframe相当于是完美沙盒, shadowDOM同样非常独立, 但iframe无法使用宿主的css, 因此用iframe当组件略显丑陋, 而且性能有点蛋疼, 当然我不排斥iframe这个想法 要说组件, 必然还是有`css, js, html`三部分 ### CSS 其中css是最简单的,...

javascript
html

又玩了几把炉石, 愈发的喜欢, 由于在WOW的时代我特别喜欢恶魔术, 因此炉石中我只玩了术士, 而且喜欢恶魔, 在普通对战中, 恶魔术士的胜率已经到了60%左右(新手对战..) 恶魔术最大的特点就是全是小牌, 起手快, 铺场快(这些名词是和网友以及同学学到的, 还知道炉石里不叫耗蓝叫x费.:laughing:), 因此, 在我的卡组里面大于4费的宝宝很少, 大量的1费2费, 这也导致我起手很少会卡手. 不过恶魔术士本身那些小牌并不够, 还需要配合中立中的鱼人小卡, 因此叫鱼人恶魔术一点不为过 我觉得必备的几张恶魔术卡牌如下(有不少卡还没有:cry:) | 名称 | 耗蓝-攻击-血量 | 技能 | 品质 | | ---...

life
game

刚玩炉石传说, 写点心得(因为工作后玩游戏时间太少, 担心犯新手时犯的错误, 所以记一点教训) 目前的主要感想是炉石中最重要的就是`随从`, 随从最重要的就是`血量` 得出这样的结论主要是我曾经被对手几点血反杀, 当时我手里没随从, 卡牌也少, 就从牌堆里一张一张看运气, 实在是痛苦, 而对手仅三轮, 就用场上n个随从把我轮了 离开随从就什么都不是, 我一共玩了大概7, 8盘了, 却只赢了3盘, 不过后来赢得都很轻松:smile:, 因为我一直用宝宝嘲讽流 为什么会有宝宝嘲讽流 从入门教程里就可以知道一个关键点, 宝宝和宝宝打, 就是换血, 一般除非是`1-1`杀了`n-1`, 比较值外, 其他都是对拼换血而已 但是用人去打宝宝, 人不掉血; 用宝宝打人, 宝宝不掉血....

life
game

今天早早就下班了, 因为今天犯的错让我羞愧难当, 无颜面对同事 今天干了三件愚蠢的事, 一个测试页面打不开, 我却用自己的线上账号去开, 另一个同事还说要报障, 我想当然的以为是别人的错, 淡定的上着网, 等别人修复, 后来才知道上错账号, 羞得满脸通红 第二件事是一个页面提交不了了, 问题交给另一个同事查, 结果一查就查出来是我的问题, 我觉得冤呐, 我都没碰过这页面, 怎么会错呢? 原来是这个页面复用了我改的页面的js, 但那个页面并没有它全部的html, 我自然而然的操作一个dom, 导致波及了相关的页面. 使用jQuery经常让我们忘了判断dom是否存在, 因为jQuery的fn基本都是`return this.each()`, DOM不存在的时候就是不执行, 但我们必须实时注意这些情况 任何从jQuery对象中直接取值都是危险的, 因为别人复用你的代码, 很可能没有这个节点....

javascript
work