为测试而架构

软件架构的目标是什么?为了解耦?解耦的目标是为了什么?为了测试!


编译vim

lua, python, ruby, perl 都必须支持


Ubuntu安装pptp vpn 防火墙

打开ufw后,pptp无法连接。转载一篇文章。原文


桂糊涂的德州扑克AI

如何编写德州扑克的AI。


德州扑克策略心得

德州扑克是个概率的游戏,更是心理的游戏。

德州扑克


数学与直觉

数学与直觉到底哪个更可靠?


自己动手搭建VPN和Git仓库

工作中是否想过自己动手搭建VPN服务?如果你是码农,是否想过顺便搭建个git私有仓库?


Nginx 限制访问频率

使用Nginx http_limit_req可以限制访问的频率。


尽人事 听天命

从十几岁开始,思考人为什么要活着这个问题,很快这个问题的答案显得不那么重要,因为思考的结果直接导致我相信命中注定。因为我是单纯从哲学的角度思考这个问题,而不是因为自身经历而产生的厌世情绪,所以我觉得有必要说一下。注意不是宿命,不是命运,而是命中注定,我觉得这几个词之间是有微妙的差别的,宿命与命运是一个范畴,而命中注定,是对宿命观的一个具体定义。

哲学


web前端脏乱差及其解决之道

这是一个软件工程问题

web, 前端, 软件工程


redis的list类型控制随机性分布

有这样一个需求: 1. 随机的给用户1篇文章 2. 最新的文章有更大的几率被随机到 3. 被随机到之后,文章被随机到的几率降低 4. 同一文章大约可以被最多随机到5次 5. 在文章较少时,1操作很多时,系统依然可以正常运行

redis


修复mysql 1449 NO_SUCH_USER 错误

权限一律正常。原来是trigger或view需要在分配好权限后,重新生成一遍,改DEFINER=username

mysql


functional programming and sprite system

How to make a sprite system with functional programming.

game,html5,


小游戏1024的AI数学模型

游戏规则

algorithm, mathematics


程序員的自我管理

一位39歲的程序員在Stackexchange 上自爆隨著自己經驗的豐富,自己完成項目和任務的時間反而越來越長。 這引起了許多程序員的共鳴。

management


全端工程师一词出现的原因

晚间在微博上看到@左耳朵耗子 的一篇微博, 讽刺自称全端工程师的人,原文如下:

web


適合中國開發者的國外VPS

爲什麼我們需要一個國外VPS

VPS


Android UI 动画

UI动画不同于游戏动画。我们不能把全部精力放在动画上,因此必须要让开发动画的成本降到最低。作为一个懒人,必须要搜索一些现成的库了。

Android animation UI


Java包管理和構建工具

雖然不喜歡JAVA,但是想學Android,還是要重新撿起來它。但是已經習慣了npm如此方便的包管理工具的人已經無法適應沒有npm的生活了。

java build tools


About APK

APK是一種很不安全的格式,它很容易被反編譯和二次打包。

Android


Karam:多瀏覽器平臺的測試工具

nodejs讓js脫離了瀏覽器,它的包管理工具npm讓js代碼能夠更好的分享,此後前端開發因此產生了巨大的變革。

web, 前端


编写atom插件

Atom 是github开发的编辑器,号称21世纪hackable编辑器。近日对其hack了一下,增加了一个命令行。


靜態網站生成器

靜態網頁依然應用的很廣,但是開發一個靜態網站並不像想象的那麼簡單,快速,易於維護。

web


尼爾森F模型

尼爾森F模型,是根據眼球追蹤技術的實驗數據得出的結論,即人類在瀏覽網頁時通常遵循先橫向再縱向再橫向的模式。


开源语音识别引擎

大部分的语音识别引擎是收费的,或者是闭源的。google speech API不适合做语音控制系统,只适合识别日常语言。julius是一个日本人开发的语音识别引擎,GPL协议,看起来不错,决定研究一下。


遷移svn代碼到git

很多時候我們需要將svn代碼遷移到git。比如從visualsvn遷移到gitlab, 在此過程中你通常需要刪除一些垃圾文件,修改你的committer名字。

git, svn


LocalStorage的异常处理

当达到localStorage容量上限时,按照标准描述会抛出 QUOTA_EXCEEDED_ERR. 但这个 QUOTA_EXCEEDED_ERR 到底是什么?一个常量?一个字符串?各浏览器的实现却不一样.

web, html5


你需要知道的Linux命令

  • grep
  • find
  • sed
  • xargs
  • awk
  • tar
  • vi
  • shell and shell scripts
  • top
  • account and group management commands
    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • /etc/gshadow
    • ...

linux


通用的項目文件結構

在項目開發過程中經常會因爲“應該將某個文件放在哪個文件夾下”,以及文件夾應該叫什麼名字這種問題而糾結。在經歷一次次痛苦糾結後,決定整理一個通用的項目文件結構。

programming, node.js


Etag与Last-Modified以及浏览器永久缓存的比较

Etag 和 Last-Modified 的功效类似,但是Etag出现较晚。

web


For each files in the Makefile

在构建项目时,时常需要遍历某个文件夹下的文件,按特定的方式将其预处理,变为一个新文件。

make, build


关于UDP的一些事

UDP协议速度更快,但不可靠,是一种无连接的协议。TCP是基于连接的协议。但是TCP并不适合不稳定的网络环境,如移动网络。 所以我们需要UDP可靠传输。

udp, network


消息服务器集群的管理

N台服务器,N > 10,相互之间会有通信,每台服务器都会开启数个进程监听数个端口用于接收来自其他服务器的消息。每个进程都必须设置一个id,其他服务器发送消息时需要根据目标服务器的id获取该id对应的进程ip和port。


About 3D

ray-trace 光线跟踪,镜面 radiosity 辐射光照 rasterizing 光栅化,scan line


Use varnish

Varnish 是一个反向代理服务器,并且只能作为反向代理。可编程式的配置。性能很好。


如何学习线性代数

曾经看了几本线性代数的书和视频,但是越看越迷惑,大多是直接上来说定义和公式,不了解线性代数的几何意义和应用。


javascript 日期处理

计算两日期间的天数之差


再探魔兽世界

日常任务


游戏赌博设计

暗黑创造了赌博系统。这个概念被暗黑刻意弱化了,赌博概率过低,页游将他发扬光大。 打怪物掉随机掉装备。 打怪掉装备与赌博系统有差别吗?一个投入的是时间,一个投入的是金钱。

game


install git-extras

git


redis leveldb

redis protocol + leveldb storage = perfect key/value database

NoSQL


How to enable fenced code block in github pages

Github pages最近升级了jekyll 0.12.0, 这一版本支持fenced code block.

github


Game server architecture

  • ✓ Router
  • ✓ SessionContext
  • ✓ AppContext
  • SuperManager - load player(from online, pool or db), create player
  • SessionManager - player online, player offline, send message to other player
  • WorldManager - A whole world controller (get player ? find player, get clans)
  • ✕ RoomManager sub world?
  • ✕ RoomNodeManager Room is tree?
  • ✓ PlayerWritePool - PlayerCache -
  • ✓ PlayerStore -

game


Unix signals

转载: http://blog.csdn.net/ljx0305/article/details/2904056


使用GitStats了解项目活动情况

GitStats


node.js events scope

Below code display world, it means that the scope of node.js event listener is just the event emmitter itself.


肖维勒准则

数据中并不总是合法数据,为了更好的完成统计,我们必须剔除异常的数据。

algorithm


Redis-extras and script test

redis-mock


Deploy node.js apps with supervisor

许多的文章介绍Node应用部署都是使用upstart 或是手动编写 init script, 我个人是很不习惯为每个应用去配置启动脚本。

SA


GameObject properties adapter ———— 游戏数值开发要点

游戏数值是动态的,可叠加的,物品,天赋,被动技能,Buff,光环,都会改变一个GameObject的属性。

game


About


Recent


Tags