月度归档:2014年06月

【转】桥

bridge

【上】

他和女孩约在公园僻静处的小桥见面,时间是黄昏。他走到桥边才想起来没带手机,等了半天女孩也没来——她总是爱迟到。

初夏的树荫,傍晚的清风,没有游人也没有飞鸟,只有桥下流水潺潺,倚着桥栏往下看,清澈的水底散落着十几枚硬币,隔水流映着夕阳的残晖,像斑驳的光点。

“人们为什么要往桥下丢硬币呢?”他觉得好奇,不由得就问出了声音。

“传说这钱是给溺水而亡的怨灵的,给它钱,换你平安,要是它给你钱,你可就糟了……”突兀响起的回答,吓了他一跳,回头才看到桥头站着的矮个子男人,背对落日,看不太清脸,声音有说不出的温柔,也有一点冷。

“呵呵,你懂的挺多。”他向来不知怎么应对陌生人。

对方似乎也在等人,不言不语不回答,也不上桥。天黑的速度肉眼可见,通往小桥的石径边本来有路灯,但近处的几盏都没亮,他渐渐有点烦躁。

犹豫了几番,终于开口问桥头的矮个子男人:“你手机能借我用一下吗?”

“我没手机。”还没等他失望,男人接着说,“不过那边不远有个投币电话,你可以打电话给女朋友啊。”

他上下摸了摸兜,却连个硬币都没找到。

男人看着他一无所获,主动说:“我这里有好多硬币,借你。”

“谢谢。”他说着走下桥,从男人手里接过了几枚硬币。

几枚水淋淋的硬币,带着流水冲刷的清寒。

【下】

初秋的第一场雨下个不停,女孩做了个很忧伤的梦。

第二天傍晚,女孩来到公园的小桥边,那是有游客说最后见过他的地方,而黄昏,是他俩当初约定的时间。

阴雨绵延,雨水让河水高涨,桥墩都看不到了。女孩撑着红伞,站在桥上听着急切的水声,总觉得好像有人在其中叹息哭泣。

她想起梦里,他说没钱买吃的,整天都觉得好饿。

这时桥头有个打伞的矮个男人,对她说:“从桥上往下扔几枚硬币,溺水的亡灵就会保佑你想念的人。”

虽然被陌生人吓了一跳,但她一想也对,于是低头在包里翻找起来。

伞下又传来温柔的声音:“我这里好多硬币,借你,好吗?”

——-end——-

据说看完这个故事,晚上回家,对着镜子和自己玩石头剪子布,保证每次都能赢。

源网址:http://damyata.me/?p=1409

PHP 中的取余数操作

这个细节一直没有注意,今天补上。

一般我们取余操作都是直接用”%”这个操作符来完成,但是这个操作符受到运行环境的限制,被余数不能超过PHP_INT_MAX,所以官方提供了bcmod这个函数来对任意数进行取余数操作。

运行下面的代码,可以看到效果。

/**
* 这个在官方评论中找到的一个对任意数取余的函数实现(看了下是10年写下的)
* my_bcmod - get modulus (substitute for bcmod)
* string my_bcmod ( string left_operand, int modulus )
* left_operand can be really big, but be carefull with modulus 🙁
* by Andrius Baranauskas and Laurynas Butkus 🙂 Vilnius, Lithuania
**/
function my_bcmod( $x, $y )
{
// how many numbers to take at once? carefull not to exceed (int)
$take = 5;
$mod = '';

do
{
$a = (int)$mod.substr( $x, 0, $take );
$x = substr( $x, $take );
$mod = $a % $y;
}
while ( strlen($x) );

return (int)$mod;
}

// example
$a = "7044060001970316212900";
$b = 150;
echo my_bcmod($a, $b ).PHP_EOL;
echo bcmod($a, $b).PHP_EOL;
echo $a % $b;

CyanogenMod源码目录简介

简单说明下,CyanogenMod的目录结构,方便大家编译自己的ROM。

bionic/

主要是一些Android 定制的libc 库文件,一般情况下无需修改此目录的文件。

build/

编译过程回用到的脚本和各种文件。如果对Android编译过程和各种Make 命令有兴趣,可以研究下这个目录。

bootable/

 ClockworkMod recovery的目录。

dalvik/
运行Java程序的虚拟机dalvik。

art/

在Android 4.4中引入的新的Java运行环境,旨在替代dalvik,通过预编译APP提高运行速度。

device/

具体手机适配的文件相关的目录,目录一般组织为device/<vendor>/<codename>。比如小米2s的可以这样device/xiaomi/aries。做适配的时候大多都在这里进行。

doc/

包括 Android Open Source 网站的源码。

external/

被Android 或 CyanogenMod 引用,在编译过中可能会用到的,但不是Android体系内的一部分工具。

frameworks/

Android frameworks的核心部件。Android frameworks是Android架构中比较上层的一部分,主要的UI和编程所需要的接口大部分在这一层提供。当然还包括CyanogenMode为Qualcomm、OMA和其他架构所做的优化。

hardware/

平台和硬件相关的库文件。

kernel/

内核相关的部分,目录的组织结构类似device。

ndk/

支持可以用c 编写app,更多细节参考这里

out/

编译的最终产出物都会放在这个目录。Android ROM相关的在out/target/product/<codename>目录下,包括system.img、recovery.img、boot.img 等。

packages/

Android app 的源码文件在packages/apps下。

prebuilt/

包括跨平台编译Android的工具链。

system/

Linux 底层的系统,包括shell、netd、fastboot等。

vendor/

存放从设备中提取的二进制资源文件(proprietary blobs )。

ubuntu 过热关机保护的问题

不知道Ubuntu 从哪个版本开始加上的CPU的过热保护机制,就是CPU一旦到达指定温度(我的是90度),啪就自己关机。

这对于我那个用了快5年的v460简直悲剧,运行进程多了、或者像现在天气热了,分分钟自己关掉。在网上找了半天,终于找到如何关掉这个闹人的过热保护机制了。

打开/etc/default/grub.cfg文件,找到 GRUB_CMDLINE_LINUX_DEFAULT,改成GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash thermal.nocrt=1″。然后sudo update-grub,重启让自己的本本疯狂燃烧吧~

注:毕竟这个设置是对CPU的一种保护,去掉之后有可能把本本烧残。