宋有狙公者,爱狙;养之成群,能解狙之意;狙亦得公之心。损其家口,充狙之欲。俄而匮焉,将限其食。恐众狙之不驯于己也,先诳之曰:“与若芧,朝三而暮四,足乎?”众狙皆起而怒。俄而曰:“与若芧,朝四而暮三,足乎?”众狙皆伏而喜。
使用Firefox 留言請注意:
由於某些未知原因,使用火狐 Firefox瀏覽器可能無法留言。 請嘗試下載Google Chrome 瀏覽器來留言 blogspot 的部落。
2011年7月23日星期六
技术篇 :清理选民名单需要多久时间?
问 :如果马来西亚选举委员会(Election Commission EC )使用国家注册局的(National Registration Department NRD )名单,那需要多久时间去找出不再注册局数据的『错误』资料?
答 :用当今的电脑的话, 大概是15-20 分钟,甚至更快。
这绝对不是开玩笑。
别以为马来西亚 2800万人口的数据很多,事实上, 把数据丢进当下的电脑来做计算过滤,就算是要对照10亿个身份证号码, 也用不了多少时间。
使用电脑数据库(Database) 的询问语言 SQL 来做对照,是一行非常简单浅线的命令。就来个例子 :
首先做定意 :
选举委员会的选民数据表是 Voter_table
国家注册局的国民数据表是 citizen_table
两个数据表的共同点, 都使用身份证号码来做主要索引(Primary Key), 名为nrid.
要找出选举委员会『打错』的身份证号码名单,那命令非常简单, 如下
SELECT voter_table.*
FROM voter_table LEFT JOIN citizen_table ON voter_table.nrid = citizen_table.nrid
WHERE citizen_table.nrid IS NULL;
解释 :
1. SELECT voter_table.* 要列出选民数据表voter_table所有的资料
2. FROM voter_table LEFT JOIN citizen_table ON voter_table.nrid = citizen_table.nrid
这行是告诉数据库,我要对照两个数据表,我要使用身份证号码(nrid) 来对照两个数据表
3. WHERE citizen_table.nrid IS NULL;
我要找的数据条件是在选民名册voter_table有这身份证号码nrid ,而国民数据表citizen_table没有。
当然这篇技术解说,是改变不了马来西亚选举委员会的腐败状况。 我只是要举证告诉大家, 选举委员会在709 之前的说的都是废话, 说什么做不到事,其实不过是举手之劳。 只要有了数据表, 3 年纪小学生都可以执行清理那名单。
这就是为什么巫统之下的僵尸成员党,虽然有那么多所谓的博士"俊青”,一碰到 Bersih 2.0 要求的技术层面,就夹着尾巴逃。
--------------------------------------
更多计算 :
如果选民数据表 Voter_table 有 8000 万个名字 (包括1957 以来的名单), 那会占用多少数据库?
估计
Old IC = 10 bytes
New IC = 15 bytes
Address = 200 bytes
vote area = 50 bytes
etc = 200 bytes
每个选民户口在数据表上之占用了 475 bytes. 80 millions x 475 bytes = 38,000 millions/38,000 MB, 38GB.
简单来说,一架手提电脑,只需要有个60GB 的硬碟就可以装下 8千万选民的资料。
而用电脑来扫描, 其实只需要读取身份证号码,那需要用的储存更少 Old IC+New IC = 10+15bytes = 25bytes.
80 mils x 25 bytes = 2,000 mil bytes/2GB.
一个手指Thumb drive , 就可以拿着走了。
如果使用一架比较旧的电脑,比如说Intel 的 Core 2 Duo E4500, 那前端处理(FSB)的速度是800MT/s (1秒钟处理 800万个信息/1秒 0.8GB的信息 )。
1秒钟处理 800万个信息 vs (只是)8000 万个数据信息。 加上电脑其他的运作而延迟信息的处理, 大家认为这电脑最慢要多久去对照能和找出问题呢?
Intel 当下的Core2 extreme 64bits , 1秒钟可以处理载入 6400 MB/6.4GB 的信息。
当我说许多马来西亚的思维还停留在1980 年,那绝对不是讥讽。
订阅:
博文评论 (Atom)
没有评论:
发表评论