Lennakim

I am lennakim

0%

2015年剩下不到几个小时了, 风尘仆仆的一年又要过去了.

今年的状态是比较自由, 比较闲散, 或者说不务正业, 在外面浪荡.
有一份工作,1月份入职, 6月份离开, 这又是一段可歌可泣的故事啊.

由于股票被套牢, 在朋友公司兼职了1个多月. 恰好前同事去杭州出差,我想正好成行啊,
现在没有正式工作,而且年前就想去杭州了.想想那是7月份,在杭州有个6年没见的老朋友,
归去来兮,老友将芜.杭州的印象一直在课本里, 什么清风水软, 才子佳人,西湖美腿的.
我作为一个纯北方人,上学也没能去成南方, 所以杭州纵使红粉窟, 吾往矣. 不抒情了, 继续往下编.

回北京后, 去了另一家公司兼职, 学到了非常多的东西, 很是感谢他们.

领养了一只猫咪,取名叫卢比, 因为隔壁的狗狗叫钢蛋, 当时我跟隔壁好友在看
你丫闭嘴. 现在搬家了,也看不到一个狗一个猫搞基的场景了.
今年10月份, 参加了今年的 rubyconf, 第一次去深圳, 满是新鲜感.
有很多神交已久却从未谋面的朋友, 甚至想着脱光了游到对面 HK 去.

目前入职haobtc, 做 python以及前端. 回想人生真是个圈啊,
14年底从 云币离职, 今年年底又进入另一家做 btc 的公司.


生活上的琐事吐槽完了, 谈谈工作上的事情.

最开始做了1个多月的ios开发, 尝试一种完全陌生的技术, 算是基本入门, 艺多不压身嘛.

往后的上半年, 技术上基本都是在吃老本, 学习了一些 backbone, mvc 入门了.

离职后, 一边兼职一边跟 liangcoder 请教沟通, 买了很多 cs 方面的经典书.
比如CSAPP,SICP … 基础不牢, 地动山摇, 要想精进, 必须打好基础.

有一段时间对 haskell 非常感兴趣,趣学指南读了一半, 虽然没读完, 也是受益匪浅,

目前在做 python, 把重心放在了前端上, 补充下设计的概念, 这也是一种倔强吧, 说明还能折腾.


“未觉池塘春草梦 阶前梧叶已秋声”, 这一年恍如南柯一梦, 很多事情犹如昨天发生, 一幕幕在眼前回放.
不知不觉都快一年了, 很多都是14年的事情, 可能我是时差症患者哈. 也希望我在新的一年更上一层楼.

2015年再见, Happy New Year!

今天北京飘飘扬扬的下起了大雪, 而我宅在家里, 盖着厚被子, 想赶快退烧.

在大熊的鼓动下, 决定加入 https://haobtc.com/, 从去年12月份离开btc圈子, 到现在又加入haobtc,
差不多过了一年时间.

这一年币价跌宕起伏, 感情也是风雨飘摇, 当我又回到起点, 你在哪里呢?

纵情向前, 既往不恋

千里迢迢从北京到深圳参加2015年的rubyconf, 见到了 rei, 华顺.

三大版主终于都认识了,

从朋友那里领养了一只猫咪, 他嫌猫咪太闹腾, 搅和的他严重的睡眠不足, 哈哈.

给它取名叫做卢比, 之前想了很多名: 弯弯 弯仔 铁锤妹妹 雪碧 十一 Tom .

之所以取名叫卢比, 因为隔壁的狗狗叫钢蛋, 如果你看过 你丫闭嘴
就会明白这里面的梗了.

其实我挺喜欢喊他雪碧, 还给它想了一个别称 [碧池], 不知道可乐可还好么?

当你运行 curl -I ruby-china.com 查看返回结果

1
2
3
4
5
6
7
8
9
10
11
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1314
Content-Type: text/html; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
p3p: CP="CAO PSA OUR"
X-Powered-By: ASP.NET
Date: Fri, 28 Aug 2015 15:42:00 GMT

ruby-china 是用 asp.net 写的?!, 绝不可能吧, 其实这只是用了一个障眼法.

下面马上解密, 前提系统是 ubuntu, 并且已经安装 nginx

安装 more_set_headers module

sudo apt-get install -y nginx-extras,
会安装 more_set_headers module

设置 nginx.conf 文件

sudo vim /etc/nginx/nginx.conf, 打开 nginx.conf
在http 结构体中, 加入以下内容:

1
2
3
4
more_set_headers 'Server: Microsoft-IIS/7.5';
more_set_headers 'X-AspNet-Version: 4.0.30319';
more_set_headers 'X-Powered-By: ASP.NET';

重启 nginx

sudo service nginx restart

测试

curl -I , 看到输出的内容, 已经大功告成.

好处

隐藏真正的 http server, 可以迷惑下菜鸟黑客.

PS

原稿写于 2015-06-01, 今天是中元节, 即所谓的鬼节, 没有回老家尽份孝心, 斯人已逝,言犹在耳.

其实 alias alias_method 已经把我弄晕了.

先说 alias alias_method

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class User

def name
puts "user name is Johnnie Walker"
end

def mobile
puts "user mobile is 186-1111-1111"
end

def self.add_alias
alias alias_mobile mobile
alias_method :alias_name, :name
# 另一种写法
# alias :alias_mobile :mobile
# alias_method 'alias_name', 'name'
end

add_alias
end

class Developer < User

def name
puts "developer name is Linus Torvalds"
end

def mobile
puts "developer mobile is 186-9999-9999"
end

add_alias
end

user = User.new
dev = Developer.new

dev.alias_mobile # => user mobile is 186-1111-1111
user.alias_mobile # => user mobile is 186-1111-1111
puts "-" * 20
dev.alias_name # => developer name is Linus Torvalds
user.alias_name # => user name is Johnnie Walker

语法层面的差异可以忽略, new_name old_name 的顺序总是弄混.

在继承关系中, alias_name 的内容被重写, alias_mobile并没有.

This is because alias is a keyword and it is lexically scoped. It means it treats self as the value of self at the time the source code was read . In contrast alias_method treats self as the value determined at the run time.

alias_method_chain

alias_method_chain 是 ActiveSupport 的一个公有实例方法,
同样接受两个参数, 可以是符号, 也可以是字符串, 但第1个参数是原始方法,
alias_method的第2个参数是原始方法, 晕~.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

class Car < ActiveRecord::Base
class << self
#先将find方法别名
alias find_without_args find

#再定义find args 方法
def find_with_args(*args)
p "调用find之前"
find_without_args
# 调用find_without_args 其实就是find方法
p "调用find之后"
end

alias find find_with_args
end
end

Car.find(:mustang)
#实际调用find_with_args, 在find_with_args方法中,
#又再调用了find_without_args, 也就是原生的find方法了.

其实 alias_method_chain 只是做了个 dsl

1
2
3
4
alias_method_chain :find, :args
#相当于
alias find_with_args find
alias find find_without_args

资料

In Defense of Alias
alias vs alias_method
rails alias_method_chain rails3
Should I use alias or alias_method

Rails 在升级到4.2后, 使用 rails s 运行程序后, 不再监听 0.0.0.0 端口.
导致 http://localhost:3000, http://127.0.0.1:3000 可以正常访问,
当使用 http://192.168.1.xx:3000/ 的时候, 访问不到 rails 程序.

解决

1 在启动 rails 的时候 绑定ip

rails s -b 0.0.0.0
可以给这条命令指定一个 alias,
alias rsb="rails s -b 0.0.0.0"

2 修改 default_options

1
2
3
4
5
6
7
8
# /config/boot.rb
module Rails
class Server
def default_options
super.merge(Host: '0.0.0.0', Port: 3000)
end
end
end

资料

How to change the default binding ip of Rails 4.2 development server

Make Rails 4.2 server listens to all interfaces

最近使用 centOS系统安装rails环境, 相较与我经常用的ubuntu, 有很多区别.

基本命令

lsb_release -a 显示系统的详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
# centOS
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.1.1503 (Core)
Release: 7.1.1503
Codename: Core

# ubuntu
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty

yum 是centOS的包管理工具 , 比 ubuntu的 apt-get 简洁多了.


配置环境

添加普通用户

sudo adduser <username>

ubuntu 下是交互命令, 会一步步提示你 输入密码, 电话 地址等, 还会创建 home directory, 系统 Shell

centOS 下, 没什么反应.

创建用户密码

既然 centOS 没反应, 使用 sudo passd <username> 创建密码, 在密码存在的情况下, 可以修改密码

赋予普通用户 sudo 权限

ubuntu
sudo usermod -a -G sudo <username>

centOS

1
2
3
4
5
6
7
8
9
10
11
12
ll /etc/sudoers
# -r--r-----

# /etc/sudoers 在 root用户下 没有写权限

chmod +w /etc/sudoers # 添加写权限

sudo vim /etc/sudoers # 修改文件

# 找到 root ALL=(ALL) ALL, 在下一行加上
<username> ALL=(ALL) ALL

OK, 普通用户也可以之行 sudo 命令了

ssh登录

1
2
3
4
mkdir  ~/.ssh

vim ~/.ssh/authorized_keys
# 把公钥加入到 authorized_keys 中即可

关闭 ssh 密码登录

1
2
3
4
5
6
7
8
9
vim /etc/ssh/ssh_config

PubkeyAuthentication yes # 去掉注释
PasswordAuthentication no # 去掉注释, yes 改成 no
ChallengeResponseAuthentication no # 去掉注释, yes 改成 no

# 重启 sshd 服务
sudo service ssh restart # ubuntu
sudo service sshd restart # centOS

安装 rails

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装依赖
sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel

# 安装 rvm
curl -L get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile

# 安装 ruby
rvm list known # 列出已知的 ruby 版本
rvm install 2.2.2 # 安装 ruby 版本
rvm use 2.2.0 --default # 切换并设置默认ruby 版本

# 安装 bundler rails
gem install -V bundler rails

安装 nodejs

sudo yum install nodejs

安装 nginx

1
sudo yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装 mysql

1
2
3
4
5
6
sudo yum install mysql # 只安装 mysql-client

sudo yum install mysql mysql-server # 安装 mysql-client mysql-server

sudo yum install mysql-devel # 不安装, gem mysql2 本地编译出问题

PS: 在杭州好闷好热啊

杭州, 到哪里都透着一份文艺, 轻风水软, 红粉窟, 英雄冢.

2015-08-16, 凌晨一点执笔, 思绪杂乱, 后续填坑.

选择从卡拉丁离职, 心力交瘁

“世界这么大, 我想去看看”, 这句话留给自己了.

李志的这首歌, 有种大姨夫汹涌而来的感觉


我在恶心的世界里,寻找一个像你的人
在每个想你的夏天里,等另一种感情

我在失败的生活里,寻找一个爱我的人
我的悲伤,浪漫和幻想,不对她说起

我再也不会把自己,愚蠢的交给过去
我的生活和我的想法,从此相隔了万里

我整夜整夜地失眠,不是为了和谁再相见
曾经爱你的每一条街,是我新鲜生活的起点

我在陌生的感动里,寻找一个像你的人
就算像过去一样被误解,不快乐又如何

我在干裂的春天里,寻找一个平凡的人
她的善良,甜蜜和阳光,陪伴我自己

我再也不会把自己,彻底的交给一个人
我的理想就像这黑夜,一分一秒的断裂

我一天一天地发呆,不是为了酝酿些什么
真情早已经被他们毁灭,还有什么不能去拒绝

是否你也在沉默里,寻找一个像我的人
在每个想我的季节里,和他们在一起

好久不见, 此刻让我想起了海桑的诗

我是你流浪过的一个地方

– 海桑

爱情扶我上路 然后走开
让我一生怀念
怀念那一扶的久长
和一生的短暂

黑白色的夜里 我想看看月亮
我看见月亮很好
就象我当初
看见你很好一样

偶尔还是会想起你, 祝你生日快乐