30种时尚的CSS网站导航条
我想,大家在上网的时候一定见过很多很多种各式各样的网站导航条的设计。这些导航条基本上来说都是用CSS来做的。这里,我们将向你介绍几种最不错的用CSS设计的网站导航条。希望你会喜欢。
目录
1. The Menu menu
2. Pure CSS hover menu
3. Matte CSS Menu
4. CSS Blur Menu
5. CSS Navigation with Glowing Icons
6. CSS Sliding Door using only 1 image
7. Navigation Matrix Reloaded
8. CSS Horizontal Menu
9. Woody CSS Menu
10. Advanced CSS Menu
12. Vimeo-Like Top Navigation
13. Apple Like Colorful CSS Menu
14. CSS Hoverbox
15. Big CSS Box
16. Simp ...
菜鸟学PHP之Smarty入门
刚开始接触模版引擎的 PHP 设计师,听到 Smarty 时,都会觉得很难。其实笔者也不例外,碰都不敢碰一下。但是后来在剖析 XOOPS 的程序架构时,开始发现 Smarty 其实并不难。只要将 Smarty 基础功练好,在一般应用上就已经相当足够了。当然基础能打好,后面的进阶应用也就不用怕了。
这篇文章的主要用意并非要深入探讨 Smarty 的使用,这在官方使用说明中都已经写得很完整了。笔者仅在此写下一些自己使用上的心得,让想要了解 Smarty 却不得其门而入的朋友,可以从中得到一些启示。就因为这篇文章的内容不是非常深入,会使用 Smarty 的朋友们可能会觉得简单了点。
Smarty介绍
什么是模版引擎
不知道从什么时候开始,有人开始对 HTML 内嵌入 Server Script 觉得不太满意。然而不论是微软的 ASP 或是开放源码的 PHP,都是属于内嵌 Server Script 的网页伺服端语言。因此也就有人想到,如果能把程序应用逻辑 (或称商业应用逻辑) 与网页呈现 (Layout) 逻 ...
VI的一些小技巧
下面是一些vi的小技巧。
:sp <filename> 打开一个文件,并和当前打开的文件分屏显示。
Ctrl+W+W在分屏显示中的不同文件中切换。
*
向前搜索目前光标所在的单词。
#
向后搜索目前光标所在的单词。
:%s/word1/word2/g全文搜索word1并以word2替换之。
:’a,’bs/word1/word2/g
仅在第a行到第b行间搜索并替换。
:!<command>
执行一个Shell命令。
:!javac %
使用%可以表示当前文件名。比如:sample.java,以达到编译的目的。
:sh
启运一个shell而不退出vi。exit 命令后回到vi.
:line_number
冒号后跟数字表示要到第几行,如果跟1,表示到文件头,如果跟$,表示到文件尾。
Ctrl+G
可以显示当前行在整个文件的百分比。
<number>重复一个命令number次。比如先输入50,然后输入dd,表示删除50行。
yy
拷贝一个行到VI的剪贴版。
p粘贴VI
>> 和 < ...
C语言下的错误处理的问题
下面是三种C语言的错误处理,你喜欢哪一种?还是都不喜欢?
/* 问题: 不充分,而且很容易出错,前面成功分配的资源,后面出错需要帮助释放 */
int foo(int bar)
{
int return_value = 0;
int doing_okay = 1;
doing_okay = do_something( bar );
if (doing_okay)
{
doing_okay = init_stuff();
}
if (doing_okay)
{
doing_okay = prepare_stuff();
}
if (doing_okay)
{
return_value = do_the_thing( bar );
}
return return_value;
}
...
有效编程的14件事
下面是14件如何有效编程的方法:
目录
计划(Plan)
使用伪代码
书写清楚的注释
使用自动的编辑工具
减少代码
代码重用
代码重构
使用设计模式
使用程序框架Framework
泛型编程
使用开源的代码
完善开发环境
使用调试器
使用版本管理工具
计划(Plan)
所谓Plan,其实就是对应于编程中的“设计”阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式编程前至少要考虑一下下面的问题:
你这个程序,工具或是项目的目的,究竟是用来干什么的。你只有知道做什么,要达到什么样的目的,你才能做得对,做得好。
需要有什么样的功能。需要你给出来个功能列表。这样可以保证我们不会遗露了什么。
准备好一些技术难题的前期调查和解决方案。不要等到开始编程的时候才去想。
下面这你因为有“Plan”而得到的好处:
你 ...
一个显示排序过程的Python脚本
之前向大家介绍过《一个排序算法比较的网站》,那个网站用动画演示了各种排序算法,并分析了各种排序算法。这里,要向大家推荐一个Python脚本,其可以把排序的过程给显示出来。
下图是“冒泡排序”的一个示例,其中:
折线表示了各个元素的位置变化。
折线的深浅表示了元素的大小。越深则越大。
同样,还有其它一些排序算法的图片:
堆排序(Heap Sort)
选择排序(Selection)
快速排序(Quick)
Shell排序
插入排序(Insertion)
你可以使用如下的Python代码来制作这些图片:(需要 Cairo图片库支持)
Python排序脚本
这个脚本参数如下:
-a 表示使用什么样的算法,取值为"quick", "heap", "selection", "insertion", "bubble", "shell"。
-n 表示要排序的数据个数。
-f 表示输入文件。
-p 表示文件前缀。
-d 表示输出顺序。
-x 图片宽度。
-y 图片高度。
-l 所有线的宽度。
-b 边界宽度。
使用示例如下:
./visualise.py ...
如何在Google App Engine上运行PHP
Google 在一年前发布了Google App Engine (GAE) 。这是一个免费的 App Engine 主机,可以让你的每个Application(免费的最多有10个)有1GB的磁盘空间和43.6个CPU小时与10GB的上传和10GB的下载带宽,以及2000个电子邮件。如果你需要地更多,那就是付钱了。
GAE 最近发布了正式支持Java的通知。于是,互联网上开始有了各种各样的BLOG评论文章,还有一些人居然在Google App Engine 中运行PHP程序,这个太不可思议了。因为GAE目前并不支持PHP。
其实,他们使用了一个叫做 Quercus的东东, Quercus 本质上是一个 100% 的用Java 实现的一个 PHP 引擎 (需要 JDK 1.5),所以,只要你把Quercus集成到你的GAE中,你自然也可以运行PHP脚本了。
下面是大体步骤:
1) 注删一个 免费的帐号。
2) 下载这个文件 到你本机。
3) 在 war\WEB-INF\appengine-web.xml 编辑 ...
NUI一个跨平台的C++库
这个免费的GPL许可证的C++库据说可以跨Linux, MacOS, Windows和iPhone,太过份,居然还连iPhone也跨了。
大家可以到下面这个网址上下载下来试试看,我还没有来得及试。
http://www.libnui.net/
深入浅出CORBA
这个是一本关于CORBA技术的中文文档,原文是Ciaran McHale《CORBA Explained Simply》,我将其翻译成中文形式,并首发在酷壳之上,现在先提供一个PDF的文件形式下载,关于html形式的下载或在线阅读形式以后再慢慢整理。CORBA有可能是一门将要过时的技术,但是它的思想却仍然被当今一些流行的分布式架构所借鉴。所以通过学习CORBA,也许我们可以更好的去理解EJB,去理解Web Service,或者SOA……
译序
从wiki上找到此书的链接,初读之下,感觉此文讲解的非常清楚,大量丰富的图例说明,于是就有了将此书翻译成中文的冲动。至于书名本应该是《简单地解释CORBA概念》,但是最后还是起了一个比较容易吸引人眼球的标题。
本书原文行文非常流畅,用词也相当通俗易懂,建议有英文基础的同行直接阅读原文。
本书第二十三章的内容,涉及到安全的一些概念和术语,翻译也相对比较困难,我虽然给它翻完,但是最后还是不敢发布出来,因为此章需要对安全相关知识要有全面的理解,最后我将此章翻译的内容省略。
在翻译过程,有一些特殊的名词采用意译的方式,比如IDL的 ...
未来五年程序员需要掌握的10项技能
由于最近经济形势的变化,很多开发人员只关注他们短期的工作前景。与此同时,把时间和精力花在学习最能带来回报的新技术上是件非常重要的事情。这里是我们列举的10种你需要马上开始学习的技术,让你的简历在未来5年不会落伍。这个列表并不完全,有很多业界的领域(比如大型机开发人员)没有涉及。尽管如此,对通常的主流开发来说,学习其中至少7项技能肯定不会错 ——不但要达到能在面试时侃侃而谈的程度,还得能在工作中运用自如。
1) 编程语言三选一 (.NET, Java, PHP)
除非开发世界有根本的改变(类似小行星击中雷德蒙),在不远的将来,大部分开发人员将需要了解三大开发平台——.NET (VB.NET或者C#), Java, 或者PHP——中的至少一个。并且只了解核心语言也是不够的。因为项目会包含越来越多不同的功能,你需要对相关框架和库有深入的了解。(本人以为C/C++可能比这三个语言更有竞争力)
2) 互联网Rich Application (RIAs)
不管爱她还是恨她,最近几年,Flash的用途突然间不仅仅是制作政治人物弱智歌曲演唱动画而已了。Flash也萌生出了以Fle ...
Windows下和程序员相关小工具
1 HOUR SOFTWARE – 很多的小工具集
.NET Memory Profiler – 可以找出.NET程序中的内存泄露问题,并找出可优化的内存。
.NET Reflector – 查看,导航,搜索.NET汇编中的类的继承关系。
Active Webcam – Webcam 视频监视软件。
ArsClip – 剪贴版管理程序,可以跟踪每次剪贴版中的内容,并可以通过设置热键,取出粘贴其中的内容。
ASP2ASPX – 转换ASP 程序页到ASP.NET
AutoHotKey – 自动点击键盘和鼠标。
Awave Studio – 几乎是所有的音频格式的转换程序。
Batch files – 想要不同功能的bat文件吗?这个站点集成了很多功能强大的bat文件。
BartPE – 制作一张可以启动的Windows CD/DVD
Beyond Compare – 快速容易地比较和合并本地,远程或FTP服务器上的文件和目录。
BitPim – 可以查看并操作绝大多数的 CDMA 手机
Bullzip PDF Printer – PDF文件打印机程序。
Cain & Abel ...
Ubuntu的并行启动
如果你在使用多核处理器,那么你可以配置Ubuntu的一个参数来使用Ubuntu的启动并行,以加快其启动速度。
这个参数在文件/etc/init.d/rc中,其参数名是CONCURRENCY默认值是none,你可以把这个参数改成如下所示。于是,你就开启了Ubuntu的并行启动的功能。
CONCURRENCY=shell
但是,这个参数会导致dbus, hal和gdm的产生“race condition”竞争条件,所以,这三个程序的启动顺序非常的关键。其必需保证这个顺序:dbus -> hal -> gdm。这个顺序在Ubuntu的Hardy,Intrepid 或Jaunty中是没有问题的。但是,我们不排除在别的版本中会有问题。
所以,在开启“并行启动”时,你需要去检查一下dbus,hal和gdm的启动顺序,其启动顺序你可以在/etc/rc2.d/目录下,查看一个这三个程序的S后面的编号顺序。如果你看到下面的这个顺序,那么你就需要做出调整了。
s12dbus
s13gdm
s24hal
调整也很简单,就是改一下S后面的数字就行了,如下所示:
mv s24hal s1 ...
Python处理中文的时候的一些小技巧
相信第一次处理中文的朋友们可能都会对中文的encoding 和程序的报错很头疼。
如果你像我一样希望能够把事情尽快做好而不去深究,你可能会写一些异常处理的代码把 UnicodeEncodingError糊弄过去先,但当你开始怀疑有多少encoding出错的信息被你丢弃的时候,可能你会很惊奇。于是,你还是会想坐下来,(洗把脸)然后面对自己必须弄懂什么是utf-8,什么是 ‘gb2312’, 什么是 ‘gbk’ 和其中的猫腻。正如有时候猛撕小伤口上邦迪胶布的快感一样,有时候当你认真面对一些你平时一直回避的问题的时候(其实有时候需要的不是勇气), 你反而会觉得“不过如此”,并且能够一劳永逸的解决问题。
关于Python处理Unicode,我所能找到的最言简意赅的入门教程是:
Unicode In Python, Completely Demystified (揭秘Python Unicode)
简要罗列一下最重要最实用的点:
Solution
Decode early (尽早decode, 将文件中的内容转化成 unicode 再进行下一步处理)
Unicode eve ...
Python脚本如何对文件通配符匹配
有时候,我们可能会写一些轻量级的脚本去处理很多符合某种pattern的文件,例如“某目录下的 *logfile.csv” 但是,我们大多数脚本的参数都是 sys.argv, 如何解析 wildcard 匹配呢?
test.py
from glob import glob
...
if __name__ == "__main__":
file_names = glob(sys.argv[1])
for file_name in file_names:
do_something(file)
这样就可以像使用其他终端命令一样使用脚本test.py 进行wildcard匹配了
>> test.py ./*logfile.csv
9个强大免费的PHP库
1. ReCAPTCHA
reCAPTCHA 允许你的网站集成一个Advanced CAPTCHA 系统,这个系统可以帮助你阻止一些垃圾信息。可视化的CAPTCHA 同样也有一个有用的声音功能。另外,在reCAPTCHA 服务里,这个PHP库也包含了一个给 “Mailhide” 服务用的API,这个可以把你的邮件地址隐藏于一些抓邮件地址的程序。
这个API是免费并且非常容易使用的,你需要做的就是申请一个API的KEY。
下载 ReCAPTCHA | 获取一个API Key | 相关文档
2. Akismet
Akismet 是一个免费的服务项目,对于一些小型的网站它是完全免费的,对于一些大型的网址,他是部分免费的。这个库也是提供了处理一些和垃圾信息相关的功能。它主要通过比对自己数据库中已存在的被认定为垃圾的信息,而做出决定的。当然,数据库中的垃圾信息可能通过各个网站举报,大家供享的。这是一个每天都在更新,每天都在改进的库。许多许多的WordPress都装有这个库。
实施Akismet
3. Services_JSON
JSON 是一个非常小巧敏捷的PH ...
Python中实现多属性排序
我们有一组记录:
list_records =
(
(department, name, salary),
(department, name, salary),
...
(department, name, salary)
)
然后我们想进行类似 MS – Excel 里的 “then sort by” 中的功能一样先基于department排序,然后再在部门内按照salary排序。
其他编程语言可能相对复杂,我这里写出一个用Python实现的最简方法(也许有比这个还短的,来挑战吧)
list_records.sort(
key = lambda l: (l[0], l[2])
)
这个就是函数是编程的好处,可以无中生有的构造出一个没有名字的inline函数。假设我们有另外一个dictionary_age 是保存的 { name: ages }, 我们还可以简单的实现基于外部属性进行排序。例如,如果我们想先按照部门排序,然后在部门里按照年龄排序,我们可以写:
list_record.sort(
key = lambda l:( l[0], dictionary_age ...
程序员需要具备的基本技能
软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等等等,在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。
这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。很多程序新手也是因为缺少、达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能。而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员。
下面这些基本职业技术可以用来做为对一个程序员的评估,很明显,下面的这些技能都可以用来做面试。虽然,还有很多非技术的因素,但对于评估一个程序员的技术能力来说,其应该是足够的了。
下面是程序员所应该具备的基本职业技能:
基本技能
技能描述
阅读代码
这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。
编写程序
编写程序并 ...
PDF电子书搜索引擎
这是一个PDF电子书的搜索引擎,可以搜索到很多PDF的图书,包括中文的。
http://search-pdf-books.com/
简单的试了一下,的确很不错,推荐给大家。
1980年和2009年的1GB电脑内存的比较
从1980年到现在,我们的科技到底进步了多少:)
下面这个图说明了1980年大机的1GB的内存和2009年的1GB的内存。
4月14日,微软补丁日
下周二,微软准备release至少8个以上的安全补丁,如下表所示。目前没有太多的信息,不过,我们知道的是其中Excel的那个BUG早在2月份的时候就报告了,http://www.microsoft.com/technet/security/advisory/968272.mspx,可是这么长的时候后才有patch。哎。
这次的BUG数之多,覆盖面之广(包括IE,Office,DirectX,Windows …),看来,下周二各个公司的IT部门又有得忙了。
编号
严重程度
攻击方式
重启
影响的软件*
Windows1
严重
远程代码运行
需要重启
Microsoft Windows, Microsoft Office
Windows2
严重
远程代码运行
...