enjoy coding, enjoy life.

Code

scala 从 url 中读取内容

如前文所说,scala的Source类自带各种输入,除了文件,也可以从url中获得数据.

最简单的是Source.fromURL

Scala
scala> scala.io.Source.fromURL("http://argcv.com").mkString
res1: String =
<!DOCTYPE html>
<html lang="en-US">
<head>
	<title>argcv | enjoy code, enjoy life.</title>
....

Code

scala 读写文件

scala 一般用于网络上消息的处理,比如读写 mongodb, 处理 http request. 但偶尔写个 script, 还是要读写个文件的.

scala 包装了一个 Source 类,可以读取各种来源的数据, url, file 都可以. 但似乎并没有对写数据做什么处理.

Code

TokuMX的同步似乎有问题

最近配置了下服务器的mongo的replica(实际使用的是tokumx 1.5.x),配置方法也很简单(比如参考这里),因为服务器空闲很多,所以配置了一个primary两个secondary. 在客户端配置的时候,read preference使用的是nearest. 因为在同一区域,所以client会从三台机器上负载均衡地读取信息.

Code

非阻塞的TCP服务设计

云风在12年写了段代码,讲的是socket server开启一个tcp服务,自己维护一个内存ringbuffer,然后利用epoll/kevent来poll request,自己维护循环收集请求.他的原始代码在此处.

最近抽空看了下代码,发现颇有可观之处,然后就改写下收集到我的工具库里面去.代码可以参考这里

Code

fstab 文件格式检查

我们通常编辑 /etc/fstab 来确定启动时候挂载的硬盘, swap 等. 若文件内容有误, 重启后的效果就是直接挂了, 然后必须通过安全模式或者单用户模式进去修改, 这很麻烦.

可否不重启就检查下 fstab 呢? 答案是可以的.

Code

zfs+freebsd,小手一抖写错启动参数怎么办

freebsd 下摆弄启动参数,不小心把 /etc/rc.conf 改错了,怎么办? 每次登录都启动直接执行rc中的内容,然后就跑飞了,这个怎么整是好.

启动后首先使用single mode,可以进入文件系统. 但是直接修改是不行的,它说是readonly file system,需要挂载下才行.

Code

如何rsync同步非标准SSH接口

一般情况下,我们用rsync可以很容易的同步一个远程目录.

Bash
$ rsync -avzh --progress --delete \
    name@remote_host:source_dir target_dir

这样就把远程的一个目录同步回来了.

但是现在问题来了,当 port 为非标准的 22 端口时, 我们应该怎样加参数呢?比如有时候我们会 NAT 到 2222 端口.

Code

SELinux 配置文件属性

所谓测不准定理是说,两个相关的物理变量,你对变量A要求越精密,那变量B的精度越差.反之,若对B要求越精密,那变量A精度就越无法测准. 安全也是这种屎一样的节奏,安全越高的东西,那么它往往越发的麻烦,反之,若你想把事情变得简单,那么安全往往会变屎.

SELinux是一个不错的权限管理系统.在公网跑的机器上,为了保证不会没事被人攻进来耍一波,还是被迫稍微用点心配置一下.

Code

bower unable to connect to github.com

bower install 遇到错误如下:

Bash
bower angular-scenario#>=1.2.*          resolve git://github.com/angular/bower-angular-scenario.git#>=1.2.*
bower bootstrap#~3.1.1                  ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/twbs/bootstrap.git", exit code of #128

Additional error details:
fatal: unable to connect to github.com:

Code

Trie树

有一堆key-value的数据,有人输入一个key的子串,我们希望很容易的得到前面那个key-value中所有key包含该子串的pairs.Trie树是一个不错的解决方案.

如名字所示,Trie树是一个字典树,它的大致方向是构造一个如下图所示的字典树:

Trie

它被用来存储to,tea,ted,ten,A,in,inn等若干字符串.

Code

Linux 下使用 swap file

Linux 下至少有两种方法可以配置系统的 swap. 一种是直接格式化一个分区, 用这个分区作为swap区. 另一种是创建一个文件, swap 的内容都丢到文件里面去.