2009年3月29日星期日
Jaunty Jackalope
2.6.28的内核开始支持ext4了,迫不及待地把/升级成ext4了,还出了点事,但最后是弄好了。启动速度9.04要快不少,但没觉得ext4比ext3快多少。现在从Grub到GDM,30秒左右。
硬件支持方面,无线网卡自动识别了,比8.10强。
总的来说,9.04真的十分十分不错。如果说Hardy、Intrepid挺好的,那Jaunty就几乎完美了。
家里的台式机还是Hardy呢,但是8.10没有诱惑到我,但现在的9.04,即将取代8.04。
Plymouth, fully new theme, shorter boot time ... 但愿9.10能更好。
2009年3月14日星期六
今天3月14日
天,刚看了一下维基百科,今天老约翰·施特劳斯(他又是谁?)也过生日……
不错,今天这热闹。
对了对了对了,我竟然忘了一个严重的事情!今天314宿舍舍日!祝314全体舍友快乐!
备注:此篇文章中,除了Google的Doodle以外的所有图片,包括文章本身,在GNU自由文档许可证之条款下提供(查看GFDL非正式的中文翻译)。
2009年1月26日星期一
大过年的,被rm害苦了……
2009年1月23日星期五
php常见漏洞及防范措施
漏洞1.SQL注入
这真是极其耳熟能详的漏洞了,曾经害过无数网站。不过,自从php有了“魔术引用”(Magic Quotes),SQL注入可是尝不到任何甜头了。但是,防范于未然,万一人家php版本低呢。可以编这么一个函数来防范:
02 function escape_data ($data)
03 {
04 if (ini_get('magic_quotes_gpc'))
05 {
06 $data = stripslashes($data); //抵消Magic Quotes
07 }
08 if (function_exists('mysql_real_escape_string'))
09 {
10 global $dbc;
11 $data = mysql_real_escape_string
(trim($data), $dbc);
12 }
13 else
14 {
15 $data = mysql_escape_string(trim($data));
16 }
17 return $data;
18 }
19 ?>
只要将每一个数据库查询语句使用一下这个函数,基本就安全了。或者,更完美的话,可以再用正则表达式检验一下。
当然,还要注意,尽量给用户开放最小的权限。这样,即使被注入了,损失也是有限的。
漏洞2.XSS,跨站脚本
观察如下代码:
试想,如果别有用心的人将name写成一些HTML代码,后果将不堪设想。1 <?php
2 $name = $_GET['name'];
3 if isset($name)
4 {
5 echo "Hello, $name";
6 }
7 ?>
不过,防范的方法还是比较简单的,只要用htmlspecialchars这个函数就可以了。
漏洞3.错误信息过于详尽
观察如下代码:
有时,为了调试的方便,将错误信息写得十分详尽。比如说将数据库连接的语句都写出来了。这在网站发布后是不可想象的,需要注意。01 <?php
02 $result = @mysql_query($query);
03 if ($result) { /* Do something... */ }
04 else
05 {
06 echo 'System error ... ';
07 // ...
08 echo 'Error:' . mysql_error();
09 // ...
10 echo 'Query:' . $query;
11 }
12 ?>
呵,这就是我总结的一些常见的漏洞,大家可以留言补充。
2009年1月13日星期二
A Secret Plan - Xplan Stage 1
Feb.15th - July.1st
You want to know more?
Wait a moment, at July.1st, you will know all.
2009年1月11日星期日
TextMate真是太劲爆了!!!
!!!
TextMate - The Missing Editor for Mac OS X
HCC买了两台iMac,还有Adobe CS4等软件。最令我不解的是,竟然花了近千元买了两套TextMate。开始,我认为她就是普通的文本编辑器,真是不值,花这么多钱。我上网查了,只是说比较好用。但我想,文本编辑器能好用到哪去啊。我用了很久,仍然认为她只是类似于Gedit一样的东西,只不过界面比较爽。直到今天,我看了几个视频!!!太劲爆了!!!于是,我仔细研究之,发现之确实是写代码的利器!!!用了就会上瘾的!!!网上多人说有人仅为了TextMate去买Mac,开始我是很不解,可现在我了解了。说不定,用着用着,我也会上瘾。她太贴心了。
太强了。太强了!!!代码的补全功能,不是一般意义的补全,真是无敌了。还有Bundles,绝对是一个变态的东西。诸多的快捷键配合Bundles,绝对能节省一半的编程时间。(绝不夸张!!!)
附:视频:
http://macromates.com/screencasts
http://gallery.me.com/jimtkm#gallery
可惜这玩意不支持中文。2.0将支持中文。
39欧元真是值了。
2009年1月1日星期四
今天是2009年1月1日
2008年12月31日星期三
2008年12月16日星期二
开始用FeedBurner烧Feed了
http://feedproxy.google.com/xhacker
这是我的Blog的新的订阅地址。用FeedBurner以后,统计起来就方便多了。不多,我的Blog订阅人数应该是在个位数,嗨,纯属没事找事。
对了,声明一下,www.alphax.cn已经过期。
2008年12月13日星期六
Guide Robot, GPS, ...
2008年12月6日星期六
机器人竞赛二三事
我跟猩没有去成广东,但有一个新的比赛,科技创新大赛。我校有三个队,应该能突围一个队。我们一周的下午、晚上都在弄这个。
今天和DK一起等车,我说来736,DK说308。751?我跟DK都从来没看到过,车极少。过一会,来了308,接下来竟是751。DK:天真冷。我:今儿天不错。车开过去,看到侧面竟写的是951(*大概就是9少一个横,很像9。DK:灵异了。我:应该是9。车开过去,看到后面竟是851!!!DK:没看到车牌号。我:待会看一眼。于是,车牌号是“京A A9312”。今儿天真冷!
机器人,我们eX-Robot Team争取突出去。
Vex,DK他们拿了银奖,不错。
下周的国旗下讲话,DK上。
什么时候我上?科技创新大赛一等奖。NOI一等奖。
对了,NOI,信息学竞赛,我将开启新的征程。
发现一个有意思的事情,NOI是AMD赞助,科技创新大赛是Intel赞助。
2008年11月22日星期六
[转] Web 设计:实现干净代码的12条定律
本文国际来源:http://www.smashingmagazine.com/2008/11/12/12-principles-for-keeping-your-code-clean/
中文翻译来源:COMSHARP CMS
漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮。本文讲述了12个实现干净 Web 设计代码的定律,适合于任何从事 Web 设计的人。
1. Strict DOCTYPE
要做就做对的。不管是 HTML 4.01 还是 XHTML 1.0,它们都提供 Strict 模式,使用 Strict 模式可以保证我们的代码不隐藏任何错误。
参考资料:
- W3C: Recommended DTDs to use in your Web document
- Fix Your Site With the Right DOCTYPE!
- No more Transitional DOCTYPEs, please
2. 字符集声明,特殊字符进行编码处理
字符集声明应当放在 <hea> 部分的最前面,以便让浏览器知道如何显示网页中的所有内容,包括标题。另外,一些特殊字符,如 & 最好用 & 代替,这是一种最安全的方法。
参考资料:
3. 恰当的缩进
缩进不会影响网页的渲染,但会明显改善阅读源代码时的体验。缩进没有特定的规则,但始终保持一致是个好习惯。
参考资料:
4. 将 CSS 和 JavaScript 放在外部文件中
将 CSS 和 JavaScript 放在外部文件中引用,不仅减低单个网页的尺寸,而且意味着其它网页也可以共用这些代码,另外,浏览器的缓存机制可以很好地降低对相同代码的重复下载。
5. 正确地嵌套 Tag 标签
如下图,第一行代码中,<h1>标签嵌套在 <a>标签中,尽管多数浏览器会正确渲染,但这不是好的习惯, 标签是 block 对象,而 是 inline 对象,inline 对象不应该容纳 block 对象。
6. 消除不必要的 <div>
<div> 常被滥用(尤其在我们现在所处的 DIV+CSS 神话中 - 译者),人们希望把任何东西都放在 <div> 中以便为它们分配 CSS 式样,这种滥用会导致的臃肿。
参考资料:
7. 使用更好的命名规则
如下图,Cat 的 CSS 类被命名为 red italic,暗示着 Cat 使用红色斜体,如果你想将 Cat 改成兰色的粗体呢?
8. 尽量使用 CSS 控制文字的排版
如下图所示,不要直接使用大写,用 CSS 对这些文字排版方面的格式进行控制,这样会更灵活。
9. 为 <body> 分配独立的 class/id
为 body Tag 分配一个独立的 class/id,可以很好地定位页面中任何对象,因为页面中所有对象都位于 body 中。
参考资料:
10. 验证
无需多言,你应当尽可能对网页的代码进行验证,尽管有些代码错误浏览器能自动更正,但有些错误是会带来不好的后果的,尤其当你位于 Strict 模式下。即使什么都不为,看到那个绿色的 W3C 验证标志至少可以让自己舒服一些。
W3C 验证是否通过并不一定要什么拘泥,Web 设计中存在更多的考量,只拘泥 W3C 验证结果,可能影响一些更重要的因素,比如,IE6 在 W3C 标准方面存在不少 BUG,如果你为了100%通过 W3C 验证而宣布自己的网站不支持 IE6,至少在国内会得不偿失的 - 译者
参考资料:
- The W3C Markup Validation Service
- XHTML-CSS Validator
- Free Site Validator (checks entire site, not just one page)
11. 合理的结构次序
将网页结构保持一个合乎逻辑的次序。
12. 尽你所能
如果你从零开始写,保持以上的原则当然要容易的多,如果要修改旧的代码,将会很痛苦,一些 CMS 系统拙劣的编码会让你陷入泥沼,或者你的网站规模宏大要改动的东西太多,不管怎样,始终保持良好的习惯非常重要。
更多阅读:
本文国际来源:http://www.smashingmagazine.com/2008/11/12/12-principles-for-keeping-your-code-clean/
中文翻译来源:COMSHARP CMS
2008年11月9日星期日
2008年10月31日星期五
Wow!Ubuntu 8.10 Intripid Ibex
好像还有一个server版的动画,似乎是随机放的。
Intripid Ibex虽然没有带来极其期待的全新主题,但8.10还是很棒的,比较有特色的“USB启动盘”创建工具。使用它,可以很轻松地创建一个LiveUSB,来引导、安装Ubuntu,也可以当LiveCD来用。赶快下载吧:http://www.ubuntu.org.cn/getubuntu/download
2008年10月4日星期六
Ubuntu 8.10 Intrepid Ibex就要来了!

Ubuntu 8.10 Intrepid Ibex就要来了!
前两天,我刚刚重装完8.04,昨天,8.10 Beta就发布了,让我们共同期待。
主题是NewHuman暗色主题。
让我们来看一下新特性:
X.Org server 1.5
Linux kernel 2.6.26
加密的私人文件夹
每个用户都有一个加密过的~/Private文件夹。
访客会话支持
对于一些临时要借用电脑给他人使用的场合,这个功能十分有用。
Network Manager 0.7
增强了Ubuntu 8.10的网络功能。
啊!顺便恭喜我成为[[维基助理编辑]]!
2008年9月3日星期三
Google浏览器?!
“从任何一个新标签均可即时访问您最喜爱的网页”的功能与Opera的快速拨号有些类似,还有“为您常用的网络应用程序创建桌面快捷方式”的功能,就像Prism一样。
发两张图片:

2008年8月23日星期六
2008年8月15日星期五
Sudoku Ver 0.0.1 Alpha
源代码及下载:http://sites.google.com/site/xhackerbase/Home/suduku
此版本可以生成数独,命令行界面,无其他功能。如果要加上做数独的功能,有两大难点:
1.挖洞:如何挖出难度很大的数独题,又有唯一解?只有再写一个求解的函数;
2.控制:命令行的程序无法控制,一种方法是用GUI(GTKmm),其二是使用curses(这个能跨平台吗?Linux和Mac倒是都没问题),都有一定难度。
还请大家多多指教,发表意见,期待下一版本。
2008年8月10日星期日
数独 Sudoku
1) 先随即生成一个3*3,然后再把其中的1*3向右下平移,3*1向下右平移。总之说白一点就是把3*3变换到9*9。这个非常简单,就是做出的数独太有规律了;
2) 按照[1][1], [1][2], ..., [1][9], [2][1], ..., [9][9]的顺序慢慢生成。(俺家CPU还行,呵呵)。
建立几个函数:
bool isUni_Row (int row);
bool isUni_Col (int col);
bool isUni_Nine (int row, int col);
bool isUni (int row, int col)
//用来检查生成数字在行、列、3*3中的唯一性
int randNum (int time); /*用来生成随机数,time是生成的次数,生成9次随机数不能重复(可以用time控制)*/
从第1个格一直到第99个格,每个格都
sudoku[row][col] = randNum (time);
time++;
if (!(isUni (row, col))) {/*重新算这个格,如果time==9,回到上一个格*/}
以上是大致的方法,当然估计计算量会惊人。
过几天写完以后,我会放出代码。因为最近在学C++,所以用C++写。
那位有更好的方法,或想助我一臂之力,请回复。


