Browsed by
Category: 杂文

随便记点什么

华为任正非在日本研究中心的讲话

华为任正非在日本研究中心的讲话

新闻链接请点击这里

其中关于『质量』的观点可以看出,华为非常重视质量体系。不愧是标杆企业,让人肃然起敬!华为大概是国内企业里目前唯一一个有可能成为伟大企业的,向华为学习!

与苗的对话

与苗的对话

今天苗开学,早上心情很激动,早早就起来了。象往常一样,骑自行车驮着苗去深圳湾关口集合。

路上一般都和苗有说有笑,轻松快乐,然而今天苗忽然问了一些问题,让我心情十分唏嘘:

“爸爸,我以后能在深圳上小学吗?”

“恐怕不能 ……”

“为什么不能在深圳上小学?”

“哦,因为深圳这边的学校不允许招收香港的小孩 ……”

“那我是香港小孩吗?”

“嗯,是的 ……”

“那哥哥是大陆小孩吗?”

“啊,哥哥是大陆小孩。”

“为什么我不能是大陆小孩呢?”

“……大陆只允许一家生一个小孩,所以我们当时就跑香港生你了……”

……

现在也没别的想法,只希望苗能健康快乐地成长。

Linux性能调优的两个参数

Linux性能调优的两个参数

可以修改/etc/sysctl.conf文件,添加或者修改以下两个参数,对linux性能进行调优:

vm.swappiness = 10
vm.vfs_cache_pressure = 200

swappiness默认值是60,值越小,则linux越多利用内存、少用swap。

vfs_cache_pressure默认值是100,值越大,则linux尽可能早回收内存。

量子通信卫星

量子通信卫星

据说今天晚上要发射一颗量子通信卫星,顾名思义就是进行量子通信。对此我感到非常震惊!作为一名科普爱好者,我有限的量子理论知识大概只有以下几点:

(1)量子纠缠态。一个量子分裂成两个量子,这两个量子就是自纠缠的。一个向左转,另一个就向右转。理论上讲,这种纠缠态是跨越空间限制的,即使两个量子分布在宇宙的两端,它们的纠缠状态也不会改变。我猜想量子通信大概就是基于量子纠缠态来通信,通过控制一个量子的状态,影响另一个量子,从而实现通信。从这个角度讲,量子通信简直就是超越光速的通信方式。

(2)测不准原理。这基本就是现代量子理论的基石之一,大概是指无法准确测量量子的状态,因为测量本身就是一种能量干扰,会影响到量子的状态。如果测量某个参数越准确,则其他参数的结果就越不准确。

既然测不准,因此实际上是无法准确控制量子的状态。既然无法准确控制,就不可能实现通信。反过来说,如果实现了通信,则必然有某种手段能准确控制量子的状态,也就是说“测不准原理”是不是可以over了?

理论基石居然有可能被动摇,这简直就是突破天际!怎么做到的?感觉有幸要见证历史,求科普。

2016-08-19 更新:看了一些新闻报道,貌似是利用光子的不可分割、不可复制特点,产生密钥,对通信进行加密。当然这仍然很厉害,但是完全不是『利用量子纠缠态进行远距离通信』。我觉得『量子通信』这个表达不准确,应该是『量子加密』才对,天际并没有被突破。

逆向停车

逆向停车

今天开车带孩子们出去玩了一整天,心情很愉快。下午到餐馆吃完饭回来,心情立刻沮丧,居然被抄了一张罚单!同时也感到困惑,因为汽车很明显停在汽车停车位以内,也没有压白线。老姐告诉我说可能是车头方向和别人相反,属于『逆向停车』违规。

我对此有些异议,回家后重新上网学习了一下交通安全法。在法规中,只有临时停车时对方向有要求,而对停车位内停车并没有类似的要求。于是拨打了罚单上留的交警支队的电话号码想咨询一下,无人接听。

印象中深圳没有类似的判罚尺度,重新搜索了一下网上类似的案例,感觉每个地方的具体执行情况都有不同。既然是地方的规定,也没必要硬拗,遵循便是,只是开车将近十年,终于破功被罚一单,心情实在有点糟。

Lua小坑之整数

Lua小坑之整数

在最近的一次开发中,需要将两个整数做除法,例如以下简单语句:

c=a/b

由于a和b都是整数,因此我又想当然地认为c也是整数,而实际上Lua将c转换成浮点数,导致后续逻辑判断和处理都出错了。这又是Lua让人意外的一个地方,我很困惑设计者为什么要这么设计。在Lua 5.3的reference manual文档中,对此有明确说明:

Exponentiation and float division always convert integer operands to floats.

据说5.3版本之前,Lua甚至都不支持整数,只有浮点数。而我们的程序通常只有两种类型:整数和字符串,因此重新将计算结果转换回整数是个急需解决的问题。在翻看manual文档时,看到math.tointeger接口,试了一下,结果极为悲催,返回了nil值!这是搞个毛线啊?

幸运地是lua对C很友好,因此只好手工打造一个接口给Lua程序用:

static int bluaToInt(lua_State *L)
{
 assert(NULLP!=L);
 int intVal = 0;
 int type = lua_type(L,1);
 switch( type )
 {
 case LUA_TNUMFLT: 
 intVal = (int)luaL_checknumber(L,1);
 break;
 
 case LUA_TNUMINT:
 intVal=(int)luaL_checkinteger(L, 1);
 break;

 case LUA_TSTRING:
 intVal = BclStrToInt(luaL_checkstring(L,1));
 break;
 
 default:
 assert(0);
 break;
 }

 lua_pushinteger(L, intVal);
 return 1;
}

将上述函数注册到Lua中,定义为“ToInt”,然后在脚本中使用即可。由此上述示例代码变为:

c=ToInt(a/b)

这样就能确保c为整数类型。

愤怒!26人罹难!

愤怒!26人罹难!

大陆一个旅游团在台湾旅游,不幸遭遇严重车祸,全部罹难,真是让人悲痛,愿死者安息!新闻链接请点击这里

而港、台的一些评论实在令人不齿,深感愤怒!相关链接请点击这里

120周年

120周年

周末带孩子们去香港玩,其中一项就是慕名已久的山顶缆车。坦率地说,在大太阳底下排队晒一个多小时,再坐三分钟缆车,虽然沿途山顶的风光不错,但还是觉得十分乏味。个人觉得山顶缆车是一个『可以坐一次、没必要坐第二次』的项目。

而让我颇有感叹的是在山顶看到的一张宣传画:山顶缆车居然已有120年历史!沧海桑田之感油然而生。如果将其比作一部作品,这也算打磨百年,完全够格“工匠精神”了吧。就我从事的IT行业来说,有没有百年历史?目前有什么软件、通信项目能存活百年?

昨天经历的另一个百年项目是“天星小轮”,我非常喜欢,尤其喜欢那种有点破、有点旧的环境,时光都停止了,在繁华的维港悠闲地飘几分钟,感觉真好。

办理回港证

办理回港证

小苗的回港证(就是红本那个)下个月月中到期,不过考虑到想带小苗回老家过暑假(游泳、爬山、各种爽),实在不想中途再回深圳一趟,因此决定这个月就把事给办了。

1、资料

先说一下办证的一些必备资料以及相关细节:

(1)自己的港澳通行证。

(2)过关时打印的小标签,就是说明入境时间、停留时间的那张小纸条(网络上的大部分资料没有提到这个,事实上这个是要求的。当然也可能不同事务处或者办事员要求有差异)。

(3)小孩的原回港证、回乡证(网络资料同样没有提到回乡证,但我遇到的办事员要求检查回乡证)。

(4)小孩的照片、出生纸(有身份证亦可)。

(5)小孩的学籍表(如果没有在港入学,则需要另外填一个副署人的表,貌似没要求是港人,因此应该大陆人也可以,具体还是问事务处吧)。

(6)现场会要求填一张资料表,入境处贴了模板,照着填就好了。

(7)以上资料都无需复印,现场办事员自己会复印。

(8)办证费用是港币140元,请注意现场只接受现金或者刷“易办事”,不接受信用卡、银联、银通、八达通等各类卡。

2、流程

(1)首先是预约。在“香港政府一站通”网站,预约申请旅行证件即可。可以预约当日起24日之内的时间。建议及早预约,尤其是寒、暑假期间,几乎每天都是满满当当的。预约时登记出生纸,选择合适的时间和合适的入境事务处即可。

(2)提前大约半小时到入境事务处拿筹。太早了也没用,不会给派筹。比如预约的10点,大约9:30到即可。

(3)拿筹同时会给一张资料表填写,然后等着叫号。

(4)叫号后到相应的位置办理,主要是检查各类资料原件,办事员自己复印必要的资料。这个环节完事后,办事员会告诉到某个窗口前等待叫名字交钱。

(5)等着叫名字、交完钱,直接就能拿到新回港证,所有流程结束。如果资料都准备好、一切顺利的话,在入境事务处大约只需要半个小时左右。

3、入境事务处

作为一名标准大陆人,操一口标准南方普通话(没有香港同胞经常嘲笑的儿化音),我其实是比较怵去香港办事的。香港那曲折的小径、销魂的鸟语、高冷的白眼、迷一样的城市丛林,让我每次去都有莫名的恐慌感。由于办理回港证要求小孩必须亲自到场,为了避免出现带着孩子在香港街头四顾茫然的悲剧性场面,我决定先踩点,先比较一下大陆朋友们喜闻乐见的入境事务处,然后再决定最终预约。

从深圳湾出发的话,元朗入境事务处、西九龙入境事务处等经常被提及。而如果是从福田或者罗湖出发的话,可能其他事务处(比如火炭入境事务处)更合适一些。

这里说点题外话,网络上的一些资讯有很多问题:

(1)过时。比如西九龙入境事务处实际上已经不在油麻地了。

(2)无用。可能某些攻略是妈妈们写的,如果你对地形比较熟悉,自然很有帮助,如果你和我一样初到宝地,估计仍然会一头雾水。比如某些魔幻性的描述“沿着车流走两个路口,右拐。。。”,事实证明没有包含某些曲折小径的路口,而且诸如“右拐”、“左拐”之后,还有一大段弯曲的路要走,一时半会没找到,实在让人忐忑不安。作为一名工科男,我将给出理性的地图来描绘路线,一图胜过千言万语,真正的简约而不简单。

(3)混乱。有些人给出的建议实际上是办理回乡证,而不是办理回港证。我觉得这些人可能就是网络传说的“回帖不看帖”人士。

3.1、元朗入境事务处

这个是最近、最方便的事务处。

(元朗入境事务处已经搬离“富达广场”,搬入“元朗政府合署1楼”,因此原有资料已经不和事宜,删除。)

3.2、西九龙入境事务处

可能是暑假的原因,元朗事务处里人比较多,因此我决定继续踩点西九龙。这个点可能是走路最多的一个点,原因就在于从尖东到尖沙咀这段挺长、而且需要走路。

基本路程:(1)从深圳湾坐B2P,第一站下,到达天水围地铁站。(2)坐西铁(红磡方向)至尖东。(3)出闸口但是不出地铁站,沿着指示,步行至尖沙咀站B2出口。(4)沿金马伦道、加拿分道至金巴利街即可。如下图所示:

西九龙入境事务处
西九龙入境事务处

这个事务处的人也比较多。

3.3、沙田入境事务处

当我上网预约的时候,悲催地发现:上面两个事务处全满!只能预约到沙田入境事务处!此事充分说明:干活要乘早,拖延症害死人。不得已,再次走上踩点的旅程。

这个事务处是如此遥远,仅仅在地铁里就要度过漫长的一个多小时。同时,它又是如此的醒目,居然在一个政府大楼里,也就是“沙田政府合署”,沿路都有路牌指示,想迷路都不太可能,因此完全不需要上述地图指引。

基本路程:(1)从深圳湾坐B2P,第一站下,到达天水围地铁站。(2)坐西铁(红磡方向)至终点红磡。(3)步出西铁车门的一刻,你就能看到对面的东铁(罗湖方向),走过去,坐下来,到“沙田”站下,从B出口出。(4)沿着人行道、看着路标“沙田政府合署”的指示走即可。

再跑跑题。我在政府合署旁边的一个商场内发现了IKEA!作为深圳IKEA的常客,我兴冲冲地溜达过去参观一下,天呀,SO TINY!真是没有对比就没有伤害。

4、注意事项

排队的时候要保持好队形,避免被人误认为是插队。

如果你能操一口流利的白话,恭喜你,你完全可以和办事员谈笑风生。如果你和我一样只会说普通话(还好,是南方普通话),请保持低调、请保持同理心,紧紧地盯着显示屏,竖起耳朵仔细听广播。

最重要的是照顾好自己的小孩!

C向Lua函数传递table参数

C向Lua函数传递table参数

有时需要向函数传递相对比较复杂的数据,定义多个形参显得很难看,C语言函数中通常传递一个数据结构,而对于lua最直接的莫过于传递一个table数据。C调用lua函数时,也可以通过构造table数据传递给lua函数。

基本步骤比较简单,大致是(1)获取lua函数(2)在栈中构造一个table(3)向table中压入相应的数据(key-value)(4)执行lua函数。

以下伪码详细描述了这个过程:

......
lua_getglobal(L, "demoFunc"); // 获取Lua函数名

lua_newtable(L); // 创建一个table
lua_pushstring(L, "intVal");  //key为intVal
lua_pushinteger(L,1234);      //值为1234
lua_settable(L, -3);          //写入table
lua_pushstring(L, "strVal");  //key为strVal
lua_pushstring(L, "yxh");     //值为yxh
lua_settable(L, -3);          //写入table

lua_pcall(L,1,0,0); // 调用demoFunc函数
......