易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
I will be back.....经典人物即将回归

I will be back.....经典人物即将回归

早上看新闻,突然看到一句:《terminator IV》要出来了,好象是明年暑期档上映,现在回想起来,III离我们也过了N年了。说是上周六数千名北美粉丝有幸观看了影片的部分场景。

健身教练出身的罗兰·金格将代替阿诺出演T-800,但阿诺仍然会在片中出场,从短片看,荧幕到处都是爆炸、坦克、防毒面具以及粉碎的头骨等镜头,据称这将是部“R级”电影(限制级)

估计,国内又不能放映了。唉。。。慢慢等吧。等碟片了。。

看来,自从当了州长,阿诺也没有精力演T-800,连续6届的奥林匹亚先生呀,不知道如今是什么样子了。。。或许正如他所说的:I will be back。。。

三个网页配色FLASH,绝对的收藏品哦

三个网页配色FLASH,绝对的收藏品哦

这三个flash是我从网上找来的。很多网站上都是介绍两个,为了显示出比他们厉害一点,我特地又多找了一个。哇哈哈哈

还有一个CHM的文件,也不错,我就一并上传了。CHM的下载完后,可能需要右键->解除锁定才能打开。

闲话不多讲,上传文件先。。

1、

2、

3、

新华网的消息,谢谢阅读

新华网的消息,谢谢阅读

http://www.cq.xinhuanet.com/2008-07/24/content_13915498.htm

http://view.news.qq.com/zt/2008/gjlh/index.htm

内容嘛。。不谈了。避免留下啥啥啥

顺便再提一个词,同时再大胆的揣测一下。。。

罗汉:江西话中的罗汉有流氓混混的意思。

http://news.sina.com.cn/pl/2008-07-26/082916003777.shtml

作者:熊培云 资深评论人

至于“罗汉”,据通常理解,本是佛界法力无边的护法者。不过,芦涛所说的“罗汉”显然没有“护法者”的意思,尽管“我是法院的”。在我印象中,在发生上述暴力事件的江西“罗汉”另有深意。比如我年少时就读的学校周围便常出没着一些“罗汉”。江西本地人将这些流氓、混混、“赤膊鬼”统统称为“罗汉”或“打罗咯”。

揣测:当年唐僧去取经这件事情,现在想起来极有可能是虚构的。据推测,很有可能是因为S(X)JMN没有度关文碟,私自出国,同时带了10大罗汉和500小罗汉到长安聚众闹事,最后李世民因不堪承受,迫不得己强买强卖那些经文。事后,XJMN因为有了足够的资金开始周游列国,而唐朝因担心此丑闻被散播,故以唐僧取经的故事来掩盖。
[被人鄙视了。。。把S打成了X]

(纯粹笑谈,开个玩笑。。。什么,你连玩笑都开不起?那你活着还有什么意义)

在mysql 里实现查询汉字的拼音首字母[摘]

在mysql 里实现查询汉字的拼音首字母[摘]

原文地址:http://bbs.zdnet.com.cn/thread-60379-1-4.html


php 里查询汉字的拼音首字母已经有很多参考的代码了。
现在给出在mysql 里实现的, 测试环境是mysql-5.0.27-win32

1、建立拼音首字母资料表

DROP TABLE IF EXISTS `pyk`;
CREATE TABLE `pyk` (
`PY` varchar(1) ,
`HZ1` int ,
`HZ2` int
) ;

INSERT INTO `pyk` (`PY`,`HZ1`,`HZ2`) VALUES
('A',-20319,-20284),
('B',-20283,-19776),
('C',-19775,-19219),
('D',-19218,-18711),
('E',-18710,-18527),
('F',-18526,-18240),
('G',-18239,-17923),
('I',-17922,-17418),
('J',-17417,-16475),
('K',-16474,-16213),
('L',-16212,-15641),
('M',-15640,-15166),
('N',-15165,-14923),
('O',-14922,-14915),
('P',-14914,-14631),
('Q',-14630,-14150),
('R',-14149,-14091),
('S',-14090,-13319),
('V',-13318,-12839),
('W',-12838,-12557),
('X',-12556,-11848),
('Y',-11847,-11056),
('Z',-11055,-10247);

2、建立mysql 函数

DROP FUNCTION IF EXISTS hzcode;

delimiter //

CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char
BEGIN
DECLARE hz_code int;
DECLARE hz_py char;
SET hz_code = ord(substring(s,1,1))*256+ord(substring(s,2,1))-65536 ;
select py into hz_py from pyk where hz_code>=pyk.hz1 and hz_code<=pyk
.hz2;
RETURN hz_py;
END
//

delimiter ;

3、先测试一下

mysql> select hzcode('南海龙王');
+--------------------+
| hzcode('南海龙王') |
+--------------------+
| N |
+--------------------+
1 row in set (0.00 sec)

4、建立个测试表

DROP TABLE IF EXISTS `f1`;
create table f1 (
name varchar(30),
pykey varchar(1)
);

insert into f1(name) values
('张三'),
('李四'),
('王五'),
('赵六'),
('钱七');

5、测试

mysql> select * from f1;
+------+-------+
| name | pykey |
+------+-------+
| 张三 | NULL |
| 李四 | NULL |
| 王五 | NULL |
| 赵六 | NULL |
| 钱七 | NULL |
+------+-------+
5 rows in set (0.00 sec)

mysql> update f1 set pykey = hzcode(name);
Query OK, 5 rows affected (0.05 sec)
Rows matched: 5 Changed: 5 Warnings: 0

mysql> select * from f1;
+------+-------+
| name | pykey |
+------+-------+
| 张三 | Z |
| 李四 | L |
| 王五 | W |
| 赵六 | Z |
| 钱七 | Q |
+------+-------+
5 rows in set (0.00 sec)

这样就很方便地在MYSQL里查询汉字的首字母了。 类似地也可以直接在MYSQL得到汉字拼音。 不过需要拼音表,函数写法也不一样。

--END--

非常时期,非常政策

非常时期,非常政策

非常时期采用非常政策,鉴于大家都懂的原因。在这里说明一下,博客的回复需要审核才能显示,我会每隔一小时就看一下并回复(当然了,回复本来就不多,黑黑)

只是再提醒一下自己多注意点,每年倒下去的人都不少,我不希望我这里也是

喝多了。一堆废话(含群内其他人员)

喝多了。一堆废话(含群内其他人员)

以下内容因为涉及到多人,且有QQ号码在,故全部删除。
内容由三人构成
膘叔(我自己),枫YE(帅哥)、asers.Z(帅哥),以下是详细内容。。已经精简过了:

说实话,刚才那个什么专家爱潜水说的。实在不敢苟同。
确实,从技术的角度讲,只要是程序员都会想着代码重用,纯粹OO,用上N种合适的设计模式。但是从业务角度上看,这些几乎是不可能实现的。
底层能够完美的实现OO啥的,已经很不容易了。而业务几乎天天在变,如果你用了纯OO,估计你会活活累死。
少量的OO还是应该使用的。但业务逻辑的复杂性才是设计的重头。
说白了。写代码确实没有一点技术含量。
你能写的功能,网络上基本上都全了。那。。为什么还要写呢?就因为一些业务逻辑与网上的不一样,客户的要求不一致。根本不能保证 这些不会变化。
在多变的世界里,如果追求速度,那当然是过程最快。如果要想着逻辑经常变化,那么也只有将部份内容封装,关键位置使用interface,业务基础采用abstract
其他的,我估计也没有什么埂 好的方法。
什么工厂模式,领域模型,真正有多少能够用在业务上??往往都是用在底层。。。
唉。废话多了。不说了。

事实证明,基类是非常脆弱的
业务基类吧
底层基类应该是不会脆弱的。
不管是什么,往往小小的修改会给代码库造成很大的破坏
代码能够正常运行不代表没有问题
一个不合逻辑的方法被子类继承,然后被非法调用,这就是破坏

所以我在给我们公司的人讲的时候,和他们说底层代码用框架,而且是要尽量使用zendframework,为什么呢?
就因为几个原因
1、zend 是官方的,有官方社区在维护,不象国内或者网上的一些框架,都是靠个人在维护,真正有几个是社区型维护的?
2、正因为zend是官方的,一些ZEND自已没有开放的接口,可能从他们的代码里也可能会使用到,zend optimize应该也会做专门优化
3、文档。这是最重要的。。。有多少框架的文档象ZEND那样全?
4、兼容。。。兼容性也是很重要的一个环节,虽然ZEND不支持PHP4,但支持PHP5就足够了
5、也是我最放心的一点。代码的质量、手册、注释、更新、BUG的修复 。相对来讲都会比其他框架好一点,更重要的是。。。。。很多学PHP的人都会或多或少的学习一下zend框架,这样的话,在招人的时候也可以直接提一下会使用ZF,就行了。
有点重复,因为没有完全经过思考和重写

OO也说不好的,OO的效率不高 但是管理方便啊
自己写一下也不错的.总用ZF有了依赖就不好了
用框架为什么呢、可能是因为可移植性高
框架最好少用
特定的系统框架不一定适用的
框架为了兼容很多系统所以都一一验证了,但在实际操作中,我们的程序都是跑在某一个系统下的。
这样,框架里面对其他系统的一些判断就成了无用代码,而且还占用了运算时间和其他。。。
这才是让我们最郁闷的。
PATH_INFO,这个功能是被很多人拿来做dispatch的,可是。。。不是每个HTTP服务器都支持PATH_INFO
于是框架就会作上很多判断。。。而如果只在一个系统下面,我就可以直接写pathinfo并操作再判断。
节约了代码量和计算量。
是的
但,这种事情是说不准的。。。如果你换了一个CTO,你不能保证他会换服务器。。。
那就说不好了
是呀。这就是框架的作用了。。兼容性好。
更量的保证吧,像phpcms那样子写一套好一点
要知道,你做的不是商业程序。而且业务程序。。。
你判断那么多东西有意义不??
如果你不敢保证以后会换服务器,你可以在调用前写个抽象类,实际使用的时候加载相应的类也是可以的。
这时候你就可以折腾你所谓的 工厂模式,单例模式、策略模式啥的了。
也可以套上个领域模型,啥的。。。
今天听我废话的人不多。。。。准备啤酒喝完就睡觉了。。
笔记本的电也快用完了。

哎
今天就是这么子在搞的
一个网站要拆开
拆成N个子站
结果一拆一堆乱呢
。。。。。。
想放广告吗?膘叔为你预留了三个广告位哦

想放广告吗?膘叔为你预留了三个广告位哦

想在膘叔的网站的放广告吗?膘叔为你预留了三个广告位哦。。。物美价廉
黑黑,其实也就是阿里妈妈的广告位吧。
阿里妈妈的广告做的还算不错。我是指它的程序。。。而且还留了很多接口。
从UI方面来说,确实不赖。
只是不知道它的页面的静态是程序生成的呢,还是rewrite出来的。不过估计是生成的,因为我看它的数据要很久才会变化

http://www.alimama.com/membersvc/shop/10197009.htm,可以在这里买我的广告位。谢谢。
如果不买也可以多点击一下我的广告。哈哈

以上的广告位已经全部作废了。目前,还是有三个广告位哦
1、BANNER
2、文章内页右侧
3、文章内页,文章结束的地方:目前是alimama的广告。。。
PHP安全设置 [转]

PHP安全设置 [转]

攻击过程: 前些日子,一个朋友刚做完一个网站,让我给他做下安全检测.简单看了一下,发现网站里存在ASP和PHP两种脚本,后来知道是因为空间商把FSO调用必了,所以我那个朋友又用了PHP脚本的上传程序做会员上传用,呵呵,正因为他的这个
PHP上传程序让我有了进入这个服务器的机会,感谢ing....

利用上传漏洞,传了个PHP木马上去.为了证明此服务器的ASP木马防护能力,后来写了个测试FSO的FSO.asp用PHP木马
传上去,打开页面提示说:无效的progid...由经验得知80%是改了progid值,于是我马上用PHP木马的写权限把fso.asp
的set fso=server.createobject("scripting.filesystemobject")这一句删了,在asp体外加了一句<object
runat=server id=fso scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>.

写入成功后,再打开fso.asp,哈哈!该服务器的所有盘基本情况都很清楚了.
看来执行ASP木马也没有问题了.ASP安全是做了,但做的不彻底,而且单凭PHP马就足以给此服务器臻命的打击.服务器里D盘G盘近千个网站虽在I盘作了备分,但一点用也没有!完全有可读写运行的权限,想怎么处理你也没脾气!而且还可以执行webshell.如果提升权限进入你的服务器格了盘.再作下垃圾数据处理,想还原也还原不了喽.对于同胞我虽然不可能作出这种下流事,但林子大了什么鸟都有!再或者有异族的侵入.唉....攻击就这么简单,一个极普通的小站加一个老没就能控制整个服务器!唉!
防护方式
第一式:脚本监控

实施环境:windows操作系统
实施方法,安装对脚本监控较强的防毒软件!如:kaspersky(卡巴斯基).题外话:我的脚本常常被他kill...有时只能把他的监控监时关掉!

个人意见:实施起来比较容易,装一个好的防毒软件就可以了.263主机就用了此法!但未秘太管用,不是什么马都可以查杀的,而且当我把程序加一下密,防毒软件也认不出来.仅可作为初级防线!
第二式:
实施环境:windows操作系统,IIS模式下
实施方法:通过使FSO(filesystemobject)组件调用失效可使ASP木马跑不起来!

此式又可分为两招:
第一招:修改注册表中程序标识值(PorgID)
出招:单击"开始-->>运行",在运行对话框中输入"regedit",然后在注册表编辑器中找到"HKEY_CLASSES_ROOT\Scripting.FileSystemObject"改为"HKEY_CLASSES_ROOT\Scripting.FileSystemObjectcn90"
说明:此招只是把通常调用FSO的语句"set 对象名=server.createobject("Scripting.filesystemobject")"改为:set 对象名=server.createobject("scripting.filesystemobjectcn90")",使得不知默认的ProgID改为何值的人无法调用FSO组件,从而达到使ASP木马跑不起来的目的.最后再提醒一点,通常有人认为把scripting.filesystemobject修改为scripting.filesystemobjectcn90是改(右边的)字符串值,那是没用的.字符串的值,你就当是说明好了,改不改都无所谓.主要是要改左边的项值(文件夹重命名).

个人意见:此招看上去管用,但若有精通一些的人采用html的<object>标注通过FSO的类标识<clsid)在网页里调用组件,改了半天的progID等于白改了!其实网上流传着改clsid值的方法来完善此招,但是我通过经验告诉大家!这是行不通的,CLSID默认的字符串值为:{0D43FE01-F093-11CF-8940-00A0C9054228},有文章说改为{0D43FE01-F093-11CF-8940-00A0C9054229}或改为其它的尾数来实现CLSID调用时出错.我在多个操作系统上度行,此举无效.至于为什么,我对微软的CLSID设置还不到非常精通的地步,但据我所知CLSID是微软分配的必需唯一的数值,当FSO的scrrun.dll组件被调用时,其实是先到注册表寻找指示,依赖CLSID可能会引起值冲突或FSO干脆就无法调用了.
第二招:禁用FSO组件
出招:单击"开始--->>运行",在运行对话框中输入"regsvr32 /u %systemroot%\system32\scrrun.dll",点击确定就可以了!
说明:利用微软自带的regsvr32工具来注销FSO组件,实在是方便,如想再启用起来,只需在运行对话框中输入"regsvr32 %systemroot%\system32\scrrun.dll"即可.
个人意见:此招方便有效,一般系统管理员很少通过FSO进行管理.对于需要FSO组件不多的情况,建议直接注销此组件!
第三式:防PHP木马之内部函数的作用.
实施环境:支持并运行PHP的各类操作系统
实施方法:通过对PHP的核心配置文件PHP.ini的修改,禁用一些功能强大的内部函数!好了,我们开始行动吧!

第一步:打开php.ini文件(windows默认路径为"%systemroot%\php.ini",linux默认路径在"etc/php.ini").
第二步:找到"safe_mode=off"改为"safe_mode=on"(已经打开的省略此步)
第三步:找到"disable_functions="改为:"disable_functions=phpinfo,system,exec,passthru,shell_exec,popen,is_dir".
第四步:找到"display_errors=on"改为"display_errors=off"
第五步:保存退出.
说明:php安全模式(safe_mode)打开后,"disable_functions="后跟的全部都是被禁用的PHP内部函数."phpinfo"这个函数并不是为防止PHP木马而禁用的.但它能返回所有的PHP基本信息,建议关闭以绝后
患,"system,exec,passthru,shell_exec,popen," 这些属于命令执行类函数,关闭他们可以防止PHP木马执行webshell;"is_dir"这个函数的关闭,可以让既使有everyone可读的权限,也无法将服务器目录及文件名返回到浏览器
.但此时PHP的错误提示会告诉你是因为哪些函数出错造的.所以我们还要关掉错误提示,就是我们的第四步,这样下来
那些一般的工具黑客就会以为没有权限而放弃!

个人意见:我发现网络广为转贴的一篇防PHP木马文章里把关闭的特定函数设
为"disable_functions=passthru,exec,shell_exec,system,fopen,mkdir,rmdir,chmod,unlink,dir,fopen,fread,f
close,fwrite,file_exists,closedir,is_dir,readdir,opendir,fileperms.copy,unlink,delfile",首先我对
delfile也被列为被禁用的PHP函数打了一个超大的问号.再一个,PHP本身就是以提供了大量的函数,实现某功能比较
容易而受到了很多PHP编程者欢迎.如果禁掉这么多函数,以文本数据库运行的留言本,论坛等等都无法正常使用运行.
木马是禁止了,PHP的能力也损失了,怕是很多客户也只能离这个虚拟主机而去了.

所以我其实连is_dir都不舍得关掉.我更喜欢只关才phpinfo,system,exec,passthru,shell-exec,popen,然后配以正确的权限设置比较有效.
第四式:目录权限验证防跨站入侵
实施环境:windows操作系统NTFS格式,linux类操作系统
实施方法:通过对目录的访问者权限的控制,使不同级别的用户在访问时只能依法(权限)办事.此式针对方流的windwos和linux两大类操作分别出招!
第一招:apache(windwos)服务器模式的目录访问权限控制
出招:
1.把所有分区的安全选项里的授权组或用户里除了administrators和system全都删除.
2.针对每个虚拟主机用户目录再单加一个ev-eryone读,写,和列出目录权限.
说明:把上面的方法归于apache服务器类,并不说只能应用于appche,而是在IIS下有另一种权限配置方案比这个更好,可以说在windows操作系统下,如果不用IIS,采用其它web服务器模式的情况还是要用此法的!按此方式设置权限,由于相应的虚拟主机来宾用户只在授权的目录内拥有权限,在上一级根本就没授权,所以就会看不到别人的目录,当然就无法进到别人的目录乱来,从而无法形成跨站入侵了!除非那个人对你的网站的目录设置情况非常的了解.但我想这种人就是内部的了,家贼难防.在这里我们不去考虑这些个别因素.不过,我发现好多的虚拟主机商把网站的目录以网站的名称去命令.为了便于记忆和管理可以理解.但无形中又多了一种安全因素,其实只要在设目录时在你要设的目录名后随机加几个字符,那么就没人能猜到你每个目录的名字了.举手之劳.何乐而不为呢?
个人意见:如果谈到apache模式下防脚本木马一般就是指防PHP木马了.因为拿apache去和ASP结合的人,我基本上没见到,除了兼容性的问题,主要是近年的高版本apache支持ASP我从没成功配置过,也没见过别人成功(通过端口映射而使apache和IIS共存的情况除外).而作为一个安全的服务器,权限是一定要配置的,但要根据不同服务器的实际情况,要很多种方式结合起来才能真正达到安全有效.
其实针对apache服务器,可以在httpd.conf里加一句"php_admin_value open_basedir '你的网站目录",但这个方工通过我的实际经验个人认为企业内部用或个人用不行,实在不适合虚拟主机的用户,没多大作用的方式,我只提一下,有兴趣的朋友自己研究吧!
第二招:IIS服务器模式的目录访问权限控制
出招:首先建立一个guests组用户,然后对应网站的目录加入刚设的Guests组用户读取和运行的权限.在IIS里对相应的目录安全性进行编辑.把默认的匿名用户改为你对应的Guests用户.
点确定后会提示你再输入一次密码.正确输入后就OK了.

说明:如果你的IIS除了ASP,还支持了PHP,那么对你许可使用PHP的客户在PHP程序目录里也要根据对应的用户给予读和运行的权限.%systemroot%目录给予只读权限,不给权限就不能运行PHP.所以建议在安装
PHP时不要装在默认目录用默认名,以防被猜出路径,增加不安全隐患!

个人意见:此方式对于每个用户给予单独的授权,未经授权的地方就不能访问.所以用此方式能比较好的控制每个用户活动的地方.此方式也是我在windows服务器里比较喜欢的一种设置方式!
特别提示:由于在ASP程序里,有好多人使用ACCESS类型数据库,而上面的权限配置出于目录继承的原因,而使用这种数据库的朋友ASP程序就无法正常运行了.如果是管理网站不是很多的内部服务器,可以为数据库文件单开一个写权限即可.但对于虚拟主机来说,如此做根本就不现实.所以在给予网站目录权限的时候就要把写的权限加上.
第三招:linux类服务器模式的目录访问权限控制
出招:使用chmod命令让所有的系统内目录访问权限为711(例: chmod 711 chameleon,)
说明:由于能管理和配置linux系统的管理员一般都是比较专业的,我这里就不对整个linux目录权限作更多的讲述,设为711权限后,PHP木马将无法读写及浏览到目录内的所有文件,以此达到防止跨站攻击的目录.
个人意见:仅仅设为711权限对于服务器安全是不够的,还需综合多种安全设置结合起来!比如在防PHP木马上还要对php.ini作些设置.
imageMagick的一些资料

imageMagick的一些资料

最近需要使用imagemagic,实在不熟,在GOOGLE上找了点资料,记录下来,以备用。

  1. http://hi.baidu.com/tomshi/blog/item/6bae4034e75c884f241f146d.html(Imagemagick的用法)
  2. http://www.imagemagick.org/Usage/annotating/#wmark_image(官网的一些操作介绍)
  3. http://cn.php.net/manual/en/book.imagick.php(PHP手册中的介绍,这是通过DLL操作的,好象是,没有研究过)

为了防止其他网站的资料消失 ,将它们备份到我这里。。。。

重点参考:http://www.imagemagick.org/Usage/

简单实例( 本文出处: http://bbs.yidabu.com/thread-170-1.html )

推荐先阅读: http://www.imagemagick.org/script/command-line-processing.php
这里说几个简单的应用。

1、批量图像格式转换
如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:

for %f in (*.jpg) do convert "%f" "%~nf.png"

2、对所有图像进行同一操作
譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):

for %f in (*.png) do convert "%f" -sample 80×40 "%~nf_sample.png"

类似的,将某目录下所有PNG图像旋转90度的操作为:

for %f in (*.png) do convert "%f" -rotate 90 "%~nf_rotate.png"

还可以进行批量裁剪、淡化、抖动、炭化、加边框、圆角等等一系列操作,具体可参考: http://www.ibm.com/developerworks/cn/linux/l-graf/index.html
http://linux.chinaunix.net/docs/2006-12-15/3481.shtml

3、在图像上加上文字说明
如果你有大量图片需要发布,在所有图片上加上版权说明是很明智的做法。用ImgeMagick可以很容易的实现:

convert 1.png -fill white -pointsize 13 -draw "text 10,15 ‘lifesinger 2006'" 2.png

可以用-font指定字体,这时需要安装Ghostscript支持: http://www.cs.wisc.edu/~ghost/

还可以用composite命令在所有图片上加上水印,有兴趣的看这里:
http://www.imagemagick.org/script/composite.php

-----------------------------------------------------------------------------------------------------------------------------

convert
转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。

identify
描述一个或较多图像文件的格式和特性。

mogrify
按规定尺寸制作一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。

composite
根据一个图片或多个图片组合生成图片。

montage
创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。

compare
在算术上和视觉上评估不同的图片及其它的改造图片。

display
如果你拥有一个X server的系统,它可以按次序的显示图片

animate
利用X server显示动画图片

import
在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。

conjure
解释执行 MSL (Magick Scripting Language) 写的脚本。

convert -sample 100x20 input.jpg output.jpg

上述命令生成一个100x20的缩略图

更好的方法是用等比例缩放,像这样,统一生成1/4的缩略图

convert -sample 25%x25% input.jpg output.jpg

如果写成脚本,就是像这个样子

for img in `ls *.jpg`
do
convert -sample 25%x25% ${img} thm${img}
done

加注图片

convert -font fonts/font.ttf -stroke color -fill color -pointsize size

-draw 'text 10,10 "String"' input.jpg output.jpg
-font 指定字体,因为这样我加注文字,
-stroke 描边用的颜色,
-fill 填充用的颜色,这里用none就可以画出空心字了,
-pointsize 加注字体大小,像素数,
-draw 是用来画,这里是文字,下面的位置10,10 是以图片左上角为原点坐标的

向图像添加文本注释
有时您需要向图像添加文本注释。例如,假设您的公司拥有标准的名片图像,并希望在将名片发送到打印机之前将每个雇员的详细信息都添加到名片上面。另一个示例是为通过您网站上的在线课程的用户生成表示证书(presentation certificate)。

您可以使用下列命令行,为该图注释一些标识信息:

1. convert -font helvetica -fill white -pointsize 36
-draw ‘text 10,50 “Floriade 2002, Canberra, Australia”’
floriade.jpg comment.jpg

迄今为止,这是我在本文中所展示的最复杂的 convert 命令行了,因此我将花些时间来解释它。

-font helvetica 将注释的字体设置为 Helvetica。也可以在此处指定字体文件的路径。这个示例给图像添加了标记,这样未经许可其它网站就不能再使用该图像了,但它是使用位于非标准位置的字体来完成该任务的:

1. convert -font fonts/1900805.ttf -fill white -pointsize 36
-draw ‘text 10,475 “stillhq.com”’
floriade.jpg stillhq.jpg

-fill white 用白色而不是标准的黑色来填充字母。

-pointsize 36 以点为单位指定字母的大小。一英寸等于 72 点。

-draw ‘text 10,50 “...”’ 是一组绘图命令,在本例中是移动到位置 10, 50,然后绘制出双引号中的文本。使用单引号是因为如果需要绘制多个字,则绘图命令中需要使用双引号,而您不能在双引号中再用双引号。

在一次 ImageMagick 调用中执行多条命令
您已经看到了将命令与注释示例联系起来的示例。但是,可以将本文中提到的任意 ImageMagick 命令链接起来。例如,也许我们希望制作某图像的缩略图,然后对它应用发散。在发散发生之后,我们将应用炭笔效果:

1. convert -sample 25%x25% -spread 4
-charcoal 4 input.jpg output.jpg

用convert给图片加边框
convert -raise 5×5 input.jpg output.jpg
convert +raise 5×5 input.jpg output.jpg
以上命令分别用-,+边缘颜色的来达到处理边缘的效果!
convert -bordercolor red -border 5×5 input.jpg output.jpg
简单的加上5个像素宽的红边!

convert

convert顾名思义就是对图像进行转化,它主要用来对图像进行格式的转化,同时还可以做缩放、剪切、模糊、反转等操作。

* 格式转化

比如把 foo.jpg 转化为 foo.png:

convert foo.jpg foo.png

如果要想把目录下所有的jpg文件都转化为gif,我们可借助于shell的强大功能:

find ./ -name "*.jpg" -exec convert {} {}.gif \;

转化后的gif名称为 *.jpg.gif ,这样看起来不太自然,没关系,我们可以再来一步:

rename .jpg.gif .gif *.jpg.gif

本来,我想在find的时候,用basename来取得不带后缀的文件名的,这样就不会形成.jpg.gif这种丑陋的名子了,可是不知道为什么,就是不行,如果你知道的话,告诉我

或者,你也可用shell script来完成上述的操作:

for i in *.jpg
do
convert $i `basename $i .jpg`.gif
done

我们还可用mogrify来完成同样的效果:

mogrify -format png *.jpg

上面命令将会把目录下面所有的jpg文件转化为png格式。

convert还可以把多张照片转化成pdf格式:

convert *.jpg foo.pdf

* 大小缩放

比如我们要为一个普通大小的图片做一个缩略图,我们可以这样

convert -resize 100x100 foo.jpg thumbnail.jpg

你也可以用百分比,这样显的更为直观:

convert -resize 50%x50% foo.jpg thumbnail.jpg

convert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。

我们还可以批量生成缩略图:

mogrify -sample 80x60 *.jpg

注意,这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。

* 加边框

在一张照片的四周加上边框,可以用 -mattecolor 参数,比如某位同志牺牲了,我们需要为他做一张黑边框的遗像,可以这样:

convert -mattecolor "#000000" -frame 60x60 yourname.jpg rememberyou.png

其中,"#000000"是边框的颜色,边框的大小为60x60

你也可以这样加边框:

convert -border 60x60 -bordercolor "#000000" yourname.jpg rememberyou.png

* 在图片上加文字

convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png

上面的命令在距离图片的左上角10x50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。

* 模糊

高斯模糊:

convert -blur 80 foo.jpg foo.png

-blur参数还可以这样-blur 80x5。后面的那个5表示的是Sigma的值,这个是图像术语,我也不太清楚,总之,它的值对模糊的效果起关键的作用。

* 翻转

上下翻转:

convert -flip foo.png bar.png

左右翻转:

convert -flop foo.png bar.png

* 反色

形成底片的样子:

convert -negate foo.png bar.png

* 单色

把图片变为黑白颜色:

convert -monochrome foo.png bar.png

* 加噪声

convert -noise 3 foo.png bar.png

* 油画效果

我们可用这个功能,把一张普通的图片,变成一张油画,效果非常的逼真

convert -paint 4 foo.png bar.png

* 旋转

把一张图片,旋转一定的角度:

convert -rotate 30 foo.png bar.png

上面的30,表示向右旋转30度,如果要向左旋转,度数就是负数。

* 炭笔效果

convert -charcoal 2 foo.png bar.png

形成炭笔或者说是铅笔画的效果。

* 散射

毛玻璃效果:

convert -spread 30 foo.png bar.png

* 漩涡

以图片的中心作为参照,把图片扭转,形成漩涡的效果:

convert -swirl 67 foo.png bar.png

* 凸起效果

用-raise来创建凸边:

convert -raise 5x5 foo.png bar.png

执行后,你会看到,照片的四周会一个5x5的边,如果你要一个凹下去的边,把-raise改为+raise就可以了。其实凸边和凹边看起来区别并不是很大。

* 其他

其他功能都是不太常用的,如果你感兴趣的话,可以看它的联机文档

import

import是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的man好了。

* 截取屏幕的任一矩形区域

import foo.png

在输入上述的命令后,你的鼠标会变成一个十字,这个时候,你只要在想要截取的地方划一个矩形就可以了

* 截取程序的窗口

import -pause 3 -frame foo.png

回车后,用鼠标在你想截的窗口上点一下即可。参数-frame的作用是告诉import,截图的时候把目标窗口的外框架带上,参数-pause的作用很重要,你可以试着把它去掉,对比一下,你会发现,目标窗口的标题栏是灰色的,pause就是让import稍微延迟一下,等你的目标窗口获得焦点了,才开始截图,这样的图才比较自然。

* 截取一个倾斜的窗口

如果想让你的截图比较cool,你可以把截取一个倾斜的窗口,方法如下:

import -rotate 30 -pause 3 -frame foo.png

* 截取整个屏幕

import -pause 3 -window root screen.png

注意,暂停了3秒钟,你需要在3秒钟内切换到需要截取的画面噢。

display

display应该是我们使用的最为频繁的图像处理软件了,毕竟,还是看的多

* 显示图片

display foo.png

如果你要显示多个文件,你可以使用通配符

display *.png

* 幻灯片

display -delay 5 *

每隔5个百分之秒显示一张图片

* 一些快捷键
1. space(空格): 显示下一张图片
2. backspace(回删键):显示上一张图片
3. h: 水平翻转
4. v: 垂直翻转
5. /:顺时针旋转90度
6. \:逆时针旋转90度
7. >: 放大
8. <: 缩小
9. F7:模糊图片
10. Alt+s:把图片中间的像素旋转
11. Ctrl+s:图象另存
12. Ctrl+d:删除图片
13. q: 退出

以下内容是命令用法:

convert

convert顾名思义就是对图像进行转化,它主要用来对图像进行格式的转化,同时还可以做缩放、剪切、模糊、反转等操作。

格式转化
比如把 foo.jpg 转化为 foo.png:

convert foo.jpg foo.png

如果要想把目录下所有的jpg文件都转化为gif,我们可借助于shell的强大功能:

find ./ -name "*.jpg" -exec convert {} {}.gif \;

转化后的gif名称为 *.jpg.gif ,这样看起来不太自然,没关系,我们可以再来一步:

rename .jpg.gif .gif *.jpg.gif

本来,我想在find的时候,用basename来取得不带后缀的文件名的,这样就不会形成.jpg.gif这种丑陋的名子了,可是不知道为什么,就是不行,如果你知道的话,告诉我

或者,你也可用shell script来完成上述的操作:

for i in *.jpg
do
convert $i `basename $i .jpg`.gif
done

我们还可用mogrify来完成同样的效果:

mogrify -format png *.jpg

上面命令将会把目录下面所有的jpg文件转化为png格式。

convert还可以把多张照片转化成pdf格式:

convert *.jpg foo.pdf

大小缩放
比如我们要为一个普通大小的图片做一个缩略图,我们可以这样

convert -resize 100×100 foo.jpg thumbnail.jpg

你也可以用百分比,这样显的更为直观:

convert -resize 50%x50% foo.jpg thumbnail.jpg

convert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。

我们还可以批量生成缩略图:

mogrify -sample 80×60 *.jpg

注意,这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。

加边框
在一张照片的四周加上边框,可以用 -mattecolor 参数,比如某位同志牺牲了,我们需要为他做一张黑边框的遗像,可以这样:

convert -mattecolor "#000000" -frame 60×60 yourname.jpg rememberyou.png

其中,"#000000"是边框的颜色,边框的大小为60×60

你也可以这样加边框:

convert -border 60×60 -bordercolor "#000000" yourname.jpg rememberyou.png

在图片上加文字

convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png

上面的命令在距离图片的左上角10×50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。

模糊
高斯模糊:

convert -blur 80 foo.jpg foo.png-blur

参数还可以这样-blur 80×5。后面的那个5表示的是Sigma的值,这个是图像术语,我也不太清楚,总之,它的值对模糊的效果起关键的作用。

翻转
上下翻转:

convert -flip foo.png bar.png

左右翻转:

convert -flop foo.png bar.png

反色
形成底片的样子:

convert -negate foo.png bar.png

单色
把图片变为黑白颜色:

convert -monochrome foo.png bar.png

加噪声

convert -noise 3 foo.png bar.png

油画效果
我们可用这个功能,把一张普通的图片,变成一张油画,效果非常的逼真

convert -paint 4 foo.png bar.png

旋转
把一张图片,旋转一定的角度:

convert -rotate 30 foo.png bar.png

上面的30,表示向右旋转30度,如果要向左旋转,度数就是负数。

炭笔效果

convert -charcoal 2 foo.png bar.png

形成炭笔或者说是铅笔画的效果。

散射
毛玻璃效果:

convert -spread 30 foo.png bar.png

漩涡
以图片的中心作为参照,把图片扭转,形成漩涡的效果:

convert -swirl 67 foo.png bar.png

凸起效果
用-raise来创建凸边:

convert -raise 5×5 foo.png bar.png

执行后,你会看到,照片的四周会一个5×5的边,如果你要一个凹下去的边,把-raise改为+raise就可以了。其实凸边和凹边看起来区别并不是很大。

其他
其他功能都是不太常用的,如果你感兴趣的话,可以看它的联机文档
import

import是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的man好了。

截取屏幕的任一矩形区域

import foo.png在输入上述的命令后,你的鼠标会变成一个十字,这个时候,你只要在想要截取的地方划一个矩形就可以了

截取程序的窗口

import -pause 3 -frame foo.png

回车后,用鼠标在你想截的窗口上点一下即可。参数-frame的作用是告诉import,截图的时候把目标窗口的外框架带上,参数-pause的作用很重要,你可以试着把它去掉,对比一下,你会发现,目标窗口的标题栏是灰色的,pause就是让import稍微延迟一下,等你的目标窗口获得焦点了,才开始截图,这样的图才比较自然。

截取一个倾斜的窗口
如果想让你的截图比较cool,你可以把截取一个倾斜的窗口,方法如下:

import -rotate 30 -pause 3 -frame foo.png

截取整个屏幕

import -pause 3 -window root screen.png

注意,暂停了3秒钟,你需要在3秒钟内切换到需要截取的画面噢。
display

display应该是我们使用的最为频繁的图像处理软件了,毕竟,还是看的多

显示图片

display foo.png

如果你要显示多个文件,你可以使用通配符

display *.png

幻灯片

display -delay 5 *

每隔5个百分之秒显示一张图片

如何用imagemagick在图片上写中文?在帮助文档中找到的最简单的例子:

convert -background lightblue -fill blue \
-font SimSun -pointsize 48 label:@chinese_words.utf8 \
label_utf8.gif

需要把中文或多字节文字以utf-8编码写在chinese_words.utf8中,就可以用convert命令在图片上画出中文来。也可以直接在命令行中写中文,但是必须是utf-8编码,如:

convert -background lightblue -fill blue \
-font SimSun -pointsize 48 label:’某人的栖息地’ \
label_utf8.gif

最后还要注意的是,-font参数后面必须是中文字体,可以是中文字体文件的绝对路径。

参考

http://dsec.pku.edu.cn/~yuhj/wiki/ImageMagick.html

http://www.ooso.net/index.php/archives/322

http://blog.donews.com/bigcarp/archive/2006/12/08/1092805.aspx
最近看SQL有感

最近看SQL有感

最近看老系统的代码,一些SQL确实让我汗颜,不过也确实可以知道一些另类的SQL操作方法。虽然。。。没啥效率

顺着《大腕》的风,我也来套点:
写SQL,没有7、8个left join你都不好意思拿出手。。
什么子查询、嵌套表啦,别嫌多,能用两个以上的人,根本不再乎再用几个
什么表外键啦、主键啦、索引啦,根本不用,要做就做最纯静的表。
我们的口号是,不占数据库索引空间。