Apr 30 2010

图片和音频搜索引擎

Category: 乱up当秘笈ssmax @ 21:19:55

相似图片搜索引擎 TinEye
http://www.tineye.com/

TinEye 是加拿大 Idée 公司研发的相似图片搜索引擎,你可以通过上传或者贴入图片地址两种方式来进行搜索。比较有才情的人可能会问,这样的图片搜索有何意义?意义重大,张口就给你来一条:一张图片,你想知道这张图片来源于哪儿,它的相关信息是什么…等。

顺便说一句,凡事都要问“意义”的人,我去你大爷的!(不好意思,想起不开心的事,又激动了。)

在下是个敢于冒进又总是极其幸运的人,不了解、不懂、不会我也敢去干它一下,常看呐喊网络的人也知道我的英文水准,不问三七二十一,咱用它搜上一搜。可以确定的是我不会用名人的照片去搜,那样对于 TinEye 来说就太不具备“挑战”了。

我说能想到的,TinEye至少具备以下这些用处:

发现图片的来源与相关信息;
研究追踪图片信息在互联网的传播;
找到高分辨率版本的图片;
找到有你照片的网页;
看看这张图片有哪些不同版本。
既然是搜索引擎,当然应该有站点收录,你可以主动向 TinEye 提交你的站点,站点提供 Widgets、浏览器插件,API?当然有,老外的站点一般情况下不会太鸡贼。

通过刚刚的图片搜索尝试,在搜索结果中提示 “你丫的搜索结果链接在72小时后将会失效”,尽管有通过电子邮件和社会化网络将搜索结果分享给朋友的按钮,但是、但是只有72小时的时效未免让人大大失望,But,貌似有句至理名言叫山穷水尽疑无路,柳暗花明又一村,如果你是TinEye的注册用户,你的相似图片搜索链接将会永久保留,注册是免费的,听到这个消息是不是心里很舒坦的说?

TinEye 的注册让我想起那些个傻不楞瞪的站点,呼闪呼闪的“免费注册”真的能吸引更多的人注册?还是说 TinEye 的注册方式更合适?看上去像是用72小时时效作为要挟,实际上这样会更加亲切,如果你质疑我的这一观点,那说明你压根不知道有斯德哥尔摩综合症一说。说过一百次了,哥不是玩得比较杂,是博学!

音频搜索引擎 FindSounds

http://www.findsounds.com/

FindSounds 是一个音频搜索引擎,与呐喊网络去年在[声音搜索 听觉的神奇之旅]中介绍的 Soungle 类似,只不过 FindSounds 声称自己达到百万级的收录量,远远超过 Soungle。FindSounds 还在介绍里还列出了当下主流搜索引擎能搜索什么做了个简单的表格(简单到不能再简单)目的就是要强调——俺们这嘎达是音频搜索。

通过关键词输入,再点选一些音频相关的参数范围很快就能找到结果,在搜索结果的每条列表下面都有“下载”和“寻找类似音频”的按钮,但 FindSounds 不提供在线播放。如果你想要播放功能的话,或许你就得购买一款叫做 FindSounds Palette 的软件,该款软件集播放器、录音、编辑、数据库、搜索引擎、浏览器于一体,共有三种版本,每个版本和功能有一定区别,当然,价格也是不一样的。我想可能只有音频需求量很大的非音乐专业的专业人士(太拗口)才会购买这款软件,对这一获利渠道暂且不做评价的好,看他们造化了。

向来猥琐的我决定利用 FindSounds 搜索点特别的声音,遂即输入Orgasm 没有结果,输入 Charming 也没有结果,再输入Sex、Sexy、Make love…尻,都没有结果。我日!这算什么音频搜索引擎?原来 FindSounds 为了让这款简单的音频搜索引擎适合所有年龄的用户,有预谋有组织地在系统中设置了“猥亵音频文件过滤”规则,并且高调声明 FindSounds 对于孩子来说是安全的。


Apr 23 2010

清朝最后一次科举试题 看看你能考中状元吗?

Category: 乱up当秘笈ssmax @ 22:51:06

第一场,史论5篇:

“周唐外重内轻,秦魏外轻内重各有得论”;

“贾谊五饵三表之说,班固讥其疏.然秦穆尝用之以霸西戎,中行说亦以戒单于,其说未尝不效论”;

“诸葛亮无申商之心而用其术,王安石用申商之实而讳其名论”;

“裴度奏宰相宜招延四方贤才与参谋请于私第见客论”;

“北宋结金以图燕赵,南宋助元以攻蔡论”。

(第1题藩镇,第2题平戎,第3题举贤,第4题变法,第5题以夷制夷,还真是理论联系实际,就是最后一题不太吉利,有亡国之兆。)

第二场考各国政治,艺学策五道:

1,“学堂之设,其旨有三,所以陶铸国?造就人才,振兴实业.国民不能自立,必立学以教之,使皆有善良之德,忠爱之心,自养之技能,必需之知识,盖东西各国所同,日本则尤注重尚武之精神,此陶铸国民之教育也.讲求政治,法律,理财,外交诸专门,以备任使,此造就人才之教育也.分设农,工,商,矿诸学,以期富国利民,此振兴实业之教育也.三者孰为最急策”。

2,“泰西外交政策往往借保全土地之名而收利益之实.盍缕举近百年来历史以证明其事策”。

3,“日本变法之初,聘用西人而国以日强,埃及用外国人至千余员,遂至失财政裁判之权而国以不振.试详言其得失利弊策”。

4,“周礼言农政最详,诸子有农家之学.近时各国研究农务,多以人事转移气候,其要曰土地,曰资本,曰劳力,而能善用此三者,实资智识.方今修明学制,列为专科,冀存要术之遗.试陈教农之策”。

5,“美国禁止华工,久成苛例,今届十年期满,亟宜援引公法,驳正原约,以期保护侨民策”。(这种题目放在现在考,偶看都够用了)

第三场《四书》《五经》

首题为:“大学之道,在明明德,在亲民,在止于至善义”,
次题为:“中立而不倚强哉矫义”。
三题为:“致天下之民,聚天下自货,交易而退,各得其所义”。

分析

第一场,史论5篇
1、周唐外重内轻,秦魏外轻内重各有得论

分析:结合1904年情况,内忧外患,列强环伺,新政始出。所以这篇内外轻重是讲军事、外交得失的。

答题要点:
a.周唐主要军力不在中朝,而在诸侯、方镇。所得在于,如果朝廷对地方控制力强,就能有效集合地方力量,抵御北方游牧民族入侵。并且地方自行解决兵员、后勤,朝廷所在地负担不太重,补给线不太长。所失在于:地方做大容易威胁中央,周有诸侯混战,唐有方镇割据。
b.秦、魏(当指曹魏)主要军事力量在朝廷手中。所得在于,集中指挥,朝廷对军队控制力强,没有发生军事政变,同时对地方军队政变也有有效镇压,比如曹丕镇压青州兵变。这样的军事体制适合出击作战,秦并六国,魏击蜀、吴。所失在于,对地方非军队的变乱,反应不够灵活。
c.经验总结:指挥权要集中,但是补给要善于发挥全局力量

2、贾谊五饵三表之说,班固讥其疏.然秦穆尝用之以霸西戎,中行说亦以戒单于,其说未尝不效论

分析:讨论对强敌要不要“怀柔”,要不要“利诱”的

要点:五饵三表是贾谊给汉文帝的抵御匈奴的建议,三表(哈哈哈……)是说爱人之状、之技、之道,也就是落后的会羡慕代表先进文化和生产力的(!),五饵就是给匈奴好处,让他们自己“向化”。说白了就是妄想给匈奴点儿先进的东东和实惠,他们就转变成“文明人”了,就不侵略了。
其实秦穆公霸西戎,虽然用点送器物(还有美女)之类小手段,但是主要还是靠实力。中行説跟单于说不要喜欢丝绸衣服,那不适合游牧,说明中行説也没把这套当真正威胁,只是说不要耽误一时。这个终究不是决定性的。

总结:关键还是实力。班固说的是对的

3、诸葛亮无申商之心而用其术,王安石用申商之实而讳其名论

分析:关于国家“不振”的情况下要不要“用猛药”的问题。要按照当时人对商鞅、王安石的认识作答,不能把几十年后人们的观念带进去。

要点:诸葛亮知道蜀国实力不济而任务艰巨,不得已而为之。但是知道这么干的坏处。所以不是出于本心,而是不得已。
王安石处于想集中中央力量削弱地方的想法,用的是商鞅之实,但是当时反对派实力非常强大,政治斗争激烈,不敢明说。

4、裴度奏宰相宜招延四方贤才与参谋请于私第见客论

分析:1904关于“立宪”热议,这个实际是问君权授权于宰相的。

要点:唐德宗之后,宰相奏事只能金吾密奏,不敢私下议事。裴度为了谋划打击强大的割据藩镇(情形一再被晚清的人比附),请私第见客,获准。实际上君权应该是国家最高权威,并不一定具体管每一件行政。宰相用不着当潜在敌人似的防备。只要国君掌握大政的签字权,应该鼓励宰相充分招揽贤才参赞议事。

5、北宋结金以图燕赵,南宋助元以攻金论

分析:1904的环境——列强环伺,远交近攻的话,会不会引狼入室?尤其是对付日本,要不要结交俄国?

要点:不能因为急于消除眼前的小患,养成长久的更严重的大患。实际上金、元的兴起,已经牵扯了辽、金大部分精力。宋实在是为了图瓜分土地,才跟更强大的联合,去侵略较弱的。这是不可取的,因为你如果还不过那个较弱的强,那岂不更等着被灭?所以合理的做法是:联合同样较弱的,对付最强的。国际局势复杂,要善于分析、应变。

第二场,时务策5道
1、学堂之设,其旨有三,所以陶铸国民、造就人才,振兴实业。国民不能自立,必立学以教之,使皆有善良之德,忠爱之心,自养之技能,必需之知识,盖东西各国所同,日本则尤注重尚武之精神,此陶铸国民之教育也。讲求政治,法律,理财,外交诸专门,以备任使,此造就人才之教育也。分设农,工, 商,矿诸学,以期富国利民,此振兴实业之教育也。三者孰为最急策?

要点:陶铸国民是关于国民人格、心理、价值观的教育;造就人才是理工、技术教育;振兴实业是商业、经营管理教育。三者都重要。要想解决积弱,第一还是陶铸国民,加强新民观念教育。但是最着急有用的,应该是造就人才,何也?因为假使先培养技术人才的话,技术人才有了工业制造知识,但是国家缺少管理、法律等等方面的人才,工业制造知识还是转化不成产品。而先造就了人才,则哪怕技术缺乏,也可以提升现有的产业的管理水平,并且知道如何培育、引进、消化吸收新的技术。培育、引进、消化吸收环节都需要大量的政治、法律、理财(相当于现状讲的经济学和管理学)人才。所以应该是造就人才最急,而陶铸国民的德育、体育教育应该朝廷在全国广泛普及,振兴实业则鼓励地方多兴办。

2、泰西外交政策往往借保全土地之名而收利益之实,盍缕举近百年来历史以证明其事策。

分析:这个题太有“晚清特色”了,呵呵。晚清人以中国历史参照世界近代,往往不得其要旨。中国历史上,侵略往往是以战略被侵略者的土地为目的,中国人当时觉得不占土地,而是要经济利益的侵略历史上没见过,不知道怎么应对。这其实是个近代化问题。

要点:西人侵略的首要目的是实利,并非土地。所以,除非不得已,一般不会战略土地,亲自管理,毕竟亲自管理有要驻军又要管行政,花费太高。例子么,土耳其、菲律宾,还有普法战争,多了……

3、日本变法之初,聘用西人而国以日强,埃及用外国人至千余员,遂至失财政裁判之权而国以不振。试详言其得失利弊策。

分析:这个是晚清热门议题。用现代管理学观点看,其实是个决策权与行政权问题。也就是你无论聘用本国人外国人,都有个委托人掌握多大主导权的问题。但是晚清没产生这样的管理学分析方法,所以不太好拟答。

要点:洋人有先进的税务、海关律例、制造等长项,可以用其技,但是要注意主导根本之权。做到用其长而不为其所用。

4、《周礼》言农政最详,诸子有农家之学,近时各国研究农务,多以人事转移气候,其要曰土地,曰资本,曰劳力,而能善用此三者,实资智识。方今修明学制,列为专科,冀存要术之遗。试陈教农之策。

分析:这个跟新政及新代农学兴起有关。当时已有1903年设立的商部下辖的农局。两年后1906年设立农工商部。可见对农业政策重视。

要点:一,设农业学堂;二,翻译西方农书;三,开办试验场;四,推广新式农业技术

5、美国禁止华工,久成苛例,今届十年期满,亟宜援引公法,驳正原约,以期保护侨民策。

分析:其中的历史背景是:1882年美国通过“暂定华工入境法案”,俗称“排华法”。当时排华有个原因就是,此前入境的华工大多数是由于广东土客械斗逃离,非法入境的,而且具有秘密社会背景。1894年发生一个判例,规定在美国生的华人是美国公民。而新的中国非法移民要遣返。于是根据这一判例,中美1894签订了《华工条约》,10年一续约。到了1904,要改订了。

要点:根据国际法,中国公民应该获得跟别的国家公民同等的对待,不应受到歧视。

第三场,经义3篇
【原题】1、大学之道,在明明德,在亲民,在止于至善
【分析】:出自《大学》,作为首题,暗含中国传统的礼教治国观念,教化之道含义。

【原题】2、中立而不倚强哉矫
【分析】:出自《中庸》,原文为“故君子和而不流,强哉矫;中立而不倚,强哉矫;国有道,不变塞焉,强哉矫;国无道,至死不变,强哉矫。”专取“中立”一句为题,暗含外交立场含义。

【原题】3、致天下之民,聚天下之货,交易而退,各得其所
【分析】:出自《易》,原文为“曰中为市,致天下之民,聚天下之货,交易而退,各得其所。”原义是讲集市的,去掉“日中为市”,则暗含论述经济之道的含义。


Apr 20 2010

mod_wsgi 的两种模式

Category: 技术ssmax @ 18:41:47

mod_wsgi 有两种运行模式,

第一种是嵌入模式,类似于mod_python,直接在apache进程中运行,这样的好处是不需要另外增加进程,但是坏处也很明显,所有内存都和apache共享,如果和mod_python一样造成内存漏洞的话,就会危害整个apache。而且如果apache是用worker mpm,mod_wsgi也就强制进入了线程模式,这样子对于非线程安全的程序来说就没法用了。

这种模式下只需要在apache下面设置
WSGIScriptAlias /path /path-to-wsgi

即可生效,对于小型脚本的话,直接用这种模式即可。

第二种是后台模式,类似于FastCGI的后台,mod_wsgi会借apache的外壳,另外启动一个或多个进程,然后通过socket通信和apache的进程联系。

这种方式只要使用以下配置即可开启:
#启动WSGI后台,site1是后台名字
WSGIDaemonProcess site1 processes=2 threads=15 display-name=%{GROUP}

#分配当前上下文应该使用哪个WSGI后台,可以放在Location里面指定
WSGIProcessGroup site1

#根据当前上下文的ProcessGroup分配到对应的后台
WSGIScriptAlias /path /path-to-wsgi

后台模式由于是与apache进程分离了,内存独立,而且可以独立重启,不会影响apache的进程,如果你有多个项目(django),可以选择建立多个后台或者共同使用一个后台。

比如在同一个VirtualHost里面,不同的path对应不同的django项目,可以同时使用一个Daemon:

WSGIDaemonProcess default processes=1 threads=1 display-name=%{GROUP}

WSGIProcessGroup default

WSGIScriptAlias /project1 “/home/website/project1.wsgi”

WSGIScriptAlias /project2 “/home/website/project2.wsgi”

这样子两个django都使用同一个WSGI后台。

也可以把不同的项目分开,分开使用不同的后台,这样开销比较大,但就不会耦合在一起了。

display-name是后台进程的名字,这样方便重启对应的进程,而不需要全部杀掉。

WSGIDaemonProcess site1 processes=1 threads=1 display-name=%{GROUP}

WSGIDaemonProcess site2 processes=1 threads=1 display-name=%{GROUP}

<Location “/project1”>
WSGIProcessGroup site1
</Location>
WSGIScriptAlias /project1 “/home/website/project1.wsgi”

<Location “/project1”>
WSGIProcessGroup site2
</Location>
WSGIScriptAlias /project2 “/home/website/project2.wsgi”

对于django 1.0以下的版本,由于官方认定不是线程安全的,所以建议使用多进程单线程模式

processes=n threads=1

但是我自己在用django 0.9.6,使用多线程模式在很多项目里面基本都没有问题,包括在worker模式下面使用mod_python,其实是一样的道理,呵呵。

升级到django 1.0以后,就可以放心的使用多进程多线程模式了:

processes=2 threads=64

这样子性能会更好。

下面是两种模式的英文原文:

When hosting WSGI applications using mod_wsgi, one of two primary modes of operation can be used. In ’embedded’ mode, mod_wsgi works in a similar way to mod_python in that the Python application code will be executed within the context of the normal Apache child processes. WSGI applications when run in this mode will therefore share the same processes as other Apache hosted applications using Apache modules for PHP and Perl.

An alternate mode of operation available with Apache 2.X on UNIX is ‘daemon’ mode. This mode operates in similar ways to FASTCGI/SCGI solutions, whereby distinct processes can be dedicated to run a WSGI application. Unlike FASTCGI/SCGI solutions however, a separate infrastructure is not needed when implementing the WSGI application and everything is handled automatically by mod_wsgi.

Because the WSGI applications in daemon mode are being run in their own processes, the impact on the normal Apache child processes used to serve up static files and host applications using Apache modules for PHP, Perl or some other language is much reduced. Daemon processes may if required also be run as a distinct user ensuring that WSGI applications cannot interfere with each other or access information they shouldn’t be able to.


Apr 09 2010

18位身份证号码的规则和简易验证算法JAVA版

Category: 技术ssmax @ 21:11:28

规则内容:

GB2011643199920B_1127449616

关于身份证第18是怎么计算的,原理如下:根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码(身份证前六位)表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到统计局网站http://www.stats.gov.cn/tjbz/index.htm
查询到最新的县及县以上的行政编码资料。)
生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
顺序码(身份证第十五位到十七位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。
校验码(身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

第十八位数字的计算方法为:
1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2.将这17位数字和系数相乘的结果相加。
3.用加出来和除以11,看余数是多少?
4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。
首先:我们得出,前17位的乘积和是189
然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。
最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

刚好某个项目要用到,写了一个简单的jar包,可以查地区和生日、性别,更新上来 

cnnid.jar内附源代码

用法:

  1. import net.ssmax.commons.cnnid.*
  2. public class TestNid {
  3. public static void main(String[] args) {
  4.   NidCard nid = new NidCard(“xxxxxxxxxxxxxxx”);
  5.   System.out.println(nid.isValid());
  6.   System.out.println(nid.getArea());
  7.   System.out.println(nid.getBirthday());
  8.   System.out.println(nid.getSex());
  9. }
  10. }