iTimothy

君看一叶舟,出没风波里


  • 首页

  • 分类

  • 归档

  • 项目

  • 关于

台式机换上了Ubuntu

发表于 2010-02-21 | 分类于 技术控 | | 阅读次数:
字数统计: 885 字 | 阅读时长 ≈ 3 分钟

这段时间对Linux相当痴迷,玩了下CentOS,现在又看上了Ubuntu。对Ubuntu偶早有所闻了,以前也在虚拟机上装过,那漂亮的UI是各个Linux版本中相当出众的,安装、维护的简单和方便,也是至今都Ubuntu拥有众多追随者的原因。正好,俺家中有一台老牛机(以前大学时候用的台式机),这机器历史算长久了,从大二一直跟随俺到现在,有7、8年历史了。毕业后把这台机器略升级了一下,到现在都一直闲置在书房中,完全成了摆设。自从用上了笔记本,老婆也用上了上网本,这台台式机更是没人用了。昨天突然心血来潮,决定在老牛机上装个Ubuntu玩玩,没事了还可以开着下下高清BT,充分利用下闲置资源。

老牛机配置如下:
CPU: Athlon 1700+
内存: KingSton 1.5GB(1G1+2562)
硬盘: 希捷80G IDE接口
显卡: Geforce 6200
主板: nForce2

开始行动

说干就干,首先在Ubuntu的老家拖了个最新的Ubuntu 9.10 32bit Desktop Edition的ISO。老牛机的光驱,经久失修,已经是个残废了。本来想扔掉的,但机箱面板那个挡板也被我搞掉了,扔掉光驱就有个缺口,不美观,只有留下了。主板支持4个USB接口,两个坏掉了,剩下两个还可用,刚好偶又有个2G的U盘(捡来的),所以打算通过U盘来安装系统。用U盘装系统好处多多,不用刻盘,并且速度比光驱快,嘿嘿。

用Ultra ISO利器,把安装镜像写入到U盘:

ubuntu
写完后的U盘驱动器图标:
ubuntu2

安装系统

拔下U盘,插上老牛机器,一步一步安装,Ubuntu从此跑在了老牛机上,发现比以前的XP快不少。并且Ubuntu支持大部分硬件,无须驱动,显卡驱动可以用Ubuntu默认的,也可以自己单独安装。安装界面也相当的友好,即使是第一次使用的用户,也能根据向导来完成安装。

一点使用体验

1.5G的内存,运行Linux当然会快很多,从开机和系统加载的速度就可以感受到,比以前的XP快不少。装上显卡驱动后,能打开一些可视化特效,比较炫。
由于Ubuntu自带Firefox浏览器,于是立马装上了AutoProxy插件,再用Linux自带的ssh命令,加上一个国外的SSH帐号,立马实现了跨栏的效果……为了以后方便,做了个简单的shell脚本:

echo "ssh -N -D 127.0.0.1:7070 ssh-account@server-address" > connect.sh
chmod +x connect.sh

-N: 不需要shell登陆

-D: 建立本地端口映射,这里使用的7070端口,把这端口配置到AutoProxy里面去,就OK了

后面是ssh-username@server-ip

控制台运行此脚本后,会提示输入ssh密码,输入后,连接完毕,可以打开Firefox畅游了

关于BT下载工具,偶用Transmission,貌似Ubuntu已经自带了,没有的也可以单独安装。

关于中文输入法,偶一般是在浏览网页时输入中文,Firefox可以装一个搜狗的云输入插件,方便、绿色、环保,强烈推荐下。

####

小结一下

老牛机器装上Linux感觉挺赞,如同重新焕发了活力一般。家有闲置老牛机的同学不妨试一试。

WordPress本地测试环境搭建

发表于 2010-02-17 | 分类于 技术控 | | 阅读次数:
字数统计: 417 字 | 阅读时长 ≈ 1 分钟

为了Blog日后的改进和完善,偶越来越需要一个本地的测试环境。毕竟,直接在本地改程序,再上传到线上看修改后的效果,这是比较有风险的做法,并且也很不规范。由于WordPress是基于PHP的,而偶的操作系统又是Win7,首选的做法,就是用IIS+PHP+MySQL来搭建测试环境。并且,Windows下面配置起来没什么难度。不过我更倾向于Linux,所以选择了CentOS 5.4 + MySQL + PHP + Nginx,装在VirtualBox的虚拟机中。一来为了熟悉下Linux,二来是为了以后搞VPS先热点身,嘿嘿。

装好CentOS,没选择X Windows,直接用了Licess同学的一键安装包,非常方便。Licess同学为我们写好的Shell脚本里面,能自动完成下载、编译、安装的过程,省去很多繁琐的过程。安好后,需要根据自己的喜好更改一下设置即可。其中也遇到很多莫名其妙的问题,偶又是Linux新手,所以只有询问google老师,不过还好都找到了答案。待基础的几个软件都搞好之后,就可以安装WordPress了,然后将线上的博客内容通过PHPMyAdmin导出,再在虚拟机中导入即可,一个测试环境就OK了。另外,为了传文件的方便,还在CentOS上装了个vsftp,用以和Windows交换文件。经过这次折腾,发现原来Linux下面也这样好玩,打算以后多学习和折腾一下Linux,把家里那台N久没开过机的老台式机,也装个Ubuntu玩玩。

linux1

linux2

Happy New Year!2010

发表于 2010-02-13 | 分类于 随笔 | | 阅读次数:
字数统计: 71 字 | 阅读时长 ≈ 1 分钟

冬去春来,飞雪无痕,满目江山满目春;雪散雨淋,放歌高吟,满腔情愫咏新春;鞭炮炸鸣,灯红夜银,普天同乐闹新春!祝各位新老博友同学新春快乐! 送上自己拍的照片一张,献丑了~~

happynewyear

WM6.5 短信聊天模式切换

发表于 2010-02-12 | 分类于 技术控 | | 阅读次数:
字数统计: 150 字 | 阅读时长 ≈ 1 分钟

自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。

Blog评论功能再次改进

发表于 2010-02-04 | 分类于 技术控 | | 阅读次数:
字数统计: 766 字 | 阅读时长 ≈ 2 分钟

自从实现了Ajax的评论后,俺还是对评论部分有点不太满意,于是又开始拿评论开刀了。

1.首先想到的,是评论没有分页显示的功能,如果评论数量太多,会把页面拖得很长,在google搜索了一下,原来WordPress原生已经支持评论分页的功能了,所以一不做二不休,继续改动。 其实改动很简单,打开模板的comments.php,在类似wp_list_comments();列出评论的代码后面,加入下面的代码即可:

<div id="commentnavi">
        </div>
  1. 实现Enter+Ctrl快捷回复,这个比较简单,用jQuery实现,正好这两天也在学jQuery,就当练练手吧。为了增加代码可读性,方便以后维护,将这部分自定义的jQuery代码放在单独的js文件中:timothy.js
$(document).ready(function(){

    //Ctrl+Enter for fast submit
    $("#comment").keydown(
        function(event){
            if(event.ctrlKey && event.keyCode == 13)
            {
                    $("#submit").click();
            }
        });
});

代码比较简单,检测评论框的keydown时间,并判断是否同时按下了Ctrl键和Enter键,如果条件成立,则直接出发提交按钮的点击事件。将此部分js代码上传,并在header.php引入此脚本文件,效果立马就有了。这下同学们可以通过Ctrl+Enter快捷提交评论了。不过后来发现一个问题,这种用Ctrl+Enter快捷提交的评论,不会触发Ajax评论的效果,后来仔细找了找原因,发现Ajax评论的jQuery脚本中,并没有绑定提交按钮的点击事件,而是绑定的整个Form的submit事件,所以把刚才的脚本小小修改一下即可:

$(document).ready(function(){

    //Ctrl+Enter for fast submit
    $("#comment").keydown(
        function(event){
            if(event.ctrlKey && event.keyCode == 13)
            {
                    $("#commentform").submit();
            }
        });
});

这下就搞定了,支持Ctrl+Enter提交的Ajax评论,呵呵。

3.这个修改源自Zww同学的提议,在每条评论中增加”回复”按钮,原以为我的皮肤不支持嵌套评论的,尝试着在WordPress的设置项中,把嵌套评论给Enable了,这样的话,每条评论就自动有了个回复按钮。接下来,想实现点击回复的时候,自动把评论的同学的名字填入到评论框中,也就是类似 @XXX: 的形式。大体思路是通过jQuery来实现,绑定这些回复按钮的click事件,获取评论的同学的名称,设置到评论框中。其实Zww同学早就实现了这样的功能(前去围观),所以jQuery也可以偷师过来了:

$(".reply").click(
function(){
    var name = $(this).prevAll().find("cite:first").text();
    $("#comment").text("@"+name+":").focus();
});

同样,放在$(document).ready里面即可。这次改动,俺意外的发现,原来我的皮肤支持嵌套评论……或许是加入了Ajax评论组件的原因,嘿嘿。

此文很菜,没啥技术含量, 算是学习jQuery的一点心得吧,前路茫茫,吾将继续折腾下去……

Blog再次改动–启用Ajax评论

发表于 2010-02-01 | 分类于 技术控 | | 阅读次数:
字数统计: 346 字 | 阅读时长 ≈ 1 分钟

我用的这个皮肤有点旧,很多东西都不支持,但是又舍不得换掉,于是留下了折腾的余地,生命在于折腾嘛。看着Zww同学和久酷同学的Blog,都支持Ajax无页面刷新评论,心里也痒痒的。好像WordPress最新的版本,已经支持Ajax评论了,但是又不知道怎么搞。在Google网上一阵乱搜,找到个不错的解决办法,一个老外同学的一篇文章,照着一步一步改下来,还真实现了,除心里一阵狂喜之外,心里还小有成就感……其实网页也是我的弱项,接下来需要一边学jQuery,一边在现有的皮肤上动刀,再美化美化,呵呵。 最后,推荐下老外同学的添加Ajax评论的文章: http://zeo.unic.net.my/wordpress-ajax-commenting-revisited/

=========================威武的分割线=====================

updated: 2010.02.03

上面的文章较老,后来发现添加Ajax后,有bug,于是按照Zww同学推荐的方法,找到另一篇指导文章,捣鼓了半天, 总算搞定了。脚本中由于需要访问一些元素,但是由于我的皮肤本身不支持嵌套评论,所以也把.js脚本小改了一下,屏蔽掉部分东西。这篇文章非常不错,强烈推荐下:

http://willin.heliohost.org/?p=1271

Blog小规模改动

发表于 2010-01-31 | 分类于 站点日志 | | 阅读次数:
字数统计: 390 字 | 阅读时长 ≈ 1 分钟

今天闲来没事,把Blog的边栏又改了一下,去掉了那个很长的Archives,从04年到现在的文章归档列表,太占空间了,灭掉!另外一个变化较大的地方,是以前的唠叨,一直用的腾讯的滔滔,没办法,国内很多微博都被停掉了。不过最近消息,腾讯也要把taotao和谐掉,当初用这个只是为了方便,腾讯滔滔其实算不上是个名副其实的微博,功能上限制太多,竟然还不能用手机浏览器的方式发表,只能算个怪胎。昨晚在Zww同学的博客看到文章,用php脚本的方式,把twitter的内容给“抓”过来。突然感觉茅塞顿开,以前一直想用js实现抓twitter的内容到自己blog,无奈js是客户端浏览器运行的,国内的用户访问不了twitter,又怎样能把twitter上发的推抓过来呢?如果用php,脚本是在服务端运行,那就不一样了,何况我的空间也本来就在墙外,呵呵,于是去wordpress的老家找了找,果然有twitter的插件,php的,Twitter Tools,这下可好了,毫不犹豫的把腾讯滔滔淘干掉,直接用上twitter才是正道!
Twitter Tools考虑的还挺周到,装上启用后,插件的后台管理页面,会给你提供一个发推的页面,其实我经常用的Firefox的TwitterBar插件,也挺不错,在此向各位同学推荐下。

一个不错的Firefox Add-ons: AutoProxy

发表于 2010-01-29 | 分类于 技术控 | | 阅读次数:
字数统计: 1.2k 字 | 阅读时长 ≈ 4 分钟

不知道大家平时是用什么方式访问那些“不知道什么原因,突然就不能访问的”网站,其实最常用的,也是最简单的方式,就是通过VPN。网上有不少的免费VPN方式的客户端软件,比如Hotspot Shield,和theFreeVPN。自从Hotspot Shield挂了后,我就一直用的theFreeVPN,需要在你的机器单独安装客户端软件,并且要安装相关驱动,所以为了系统的干净,我一直在Win7的XP Mode下面用。这样也有很多不方便的地方,每次要访问那些“不知道什么原因,突然就不能访问的”网站,都要先启动虚拟机,然后再打开theFreeVPN,比较麻烦。最近theFreeVPN也开始收费,尽管免费的服务器也可以连接,不过也不稳定,还有随时掉线的情况。除了免费的VPN,也有收费的VPN,可以在万能的淘宝购买。某日,在一篇不知道某位大虾写的文章中,我知道了有AutoProxy这个东东,装在Firefox上,感觉这是个很有创意的插件,它能帮你自动切换是否需要用代理来访问某些站点,并且订阅的站点列表可以随时在线更新,你也可以通过设置插件,让所有的网站访问请求,都从代理服务器出去。假设你已经有了一个代理通道,暴露的代理端口是本机的端口,通过AutoProxy的设置,就能轻松的实现通过代理去访问网站了。

下面先介绍下AutoProxy的简单设置方法,在上面的AutoProxy连接,安装好插件后,你会发现Firefox上的状态栏,或者工具栏,会有下面的图标:

4

点击图标的弹出菜单,就会打开AutoProxy的主界面。

5

打开Edit ProxyServer,来到代理入口的管理界面,这里可以编辑、增加、删除代理入口,代理入口怎么来的呢?文章的后面我会介绍。

6

来到选择代理服务器入口的界面,把默认的代理服务器,设置为你刚才添加好的代理入口的名称。

7

到此为止,AutoProxy的设置,就完了。

其实关键的地方,还在后面,怎样建立代理入口呢?网上的方法很多的,首先推荐一个最近我发现的不错的软件:GTunnel。有了GTunnel,你就可以通过常用的方式,来建立自己的代理隧道,支持的方式有:Skype,GTalk Account,Tor。只要你有其中的一个帐号,就可以通过此软件,建立好代理隧道,比如下图中,隧道代理的入口地址,就是127.0.0.1:8081,还记得上面AutoProxy的那个地址管理界面吗?去AutoProxy设置好代理隧道的地址和端口,并把此代理设置为默认代理,就大功告成了,通过Firefox就能访问那些“不知道什么原因,突然就不能访问的”网站,并且速度还相当不错。我用我的GTalk Account,建立连接后,访问站点速度都令人满意,只是目前唯一让人不太满意的是GTunnel会在连接计时达到半个小时的时候,提示你是普通用户,已经达到使用限制,程序会自动退出。重新打开后,才可以继续使用。

1

还有个软件,值得推荐,也是我现在用的方法,SSH Account+MyEnTunnel+Firefox+AutoProxy。道理是一样的,只是替换了建立隧道代理的那部分,通过MyEnTunnel,你可以利用你的SSH帐号,建立一个加密的隧道代理,并且暴露出端口类似127.0.0.1:1080(端口可以自己设定)。把这个地址,同样的方法,加入到AutoProxy,就可以了。前提是你需要一个SSH帐号。(SSH帐号,其实就是一个Unix/Linux的可登陆的帐号,SSH只是一种远程加密访问的方式),国外有些网站可以免费申请到,或者追求速度和稳定的同学,可以去万能的淘宝购买。
另外,还有其他的软件,网上评价也不错,比如Puff 。

其实平时上网,也主要就是通过代理看一些网站,其他的用处还不大,所以感觉用代理的方式,比VPN要轻量级一些。如果你是为了游戏,那绝对推荐VPN了。自从用上了SSH Account+MyEnTunnel+Firefox+AutoProxy,从此惬意多了,那些“不知道什么原因,突然就不能访问的”网站,不知道为什么,突然就可以访问了,挖哈哈~~强烈推荐大家使用。

最近二三事

发表于 2010-01-24 | 分类于 随笔 | | 阅读次数:
字数统计: 719 字 | 阅读时长 ≈ 2 分钟

博客快一周没更新了,上来说说最近的二三事。

【关键词】头疼 从元旦开始,就感到头有莫名的疼痛,一直没当回事。只是有天老妈看到了我的qq签名,打电话问我怎么回事,我只是说头疼,没什么大不了。老妈却异常紧张,还惊动了我老爸。后来接到老爸的电话,口气很严厉,问我头疼为啥不去医院检查检查。其实他们这样担心是有原因的,因为老爸单位上的同事的女儿,也是我从小到大的邻居,前段时间得了脑瘤,所以在老爸的强烈要求下,我拿起电话拨了114,预约了省医院的号。到检查的那天,很早来到了医院,医生把我仔细检查了一翻,最后的结论:没问题。晕……本来以为还要照个CT之类的,结果医生说:你没问题,估计是平时休息不好,导致头疼。想了想,也对,可能是平时小孩半夜吵闹,晚上休息不好。老婆得知此事,晚上坚决不许我超过11点睡觉,并且还不许我碰电脑,杯具了……不过经过这几天的休息,明细感觉头疼得到了缓解。看来,平时还是应该多注意身体。

【关键词】卖卡 由于我换了新的手机号,自己以前的138的手机号,一直搁置在那里,由于之前参加了移动的存XX送XX的活动,被迫签下了霸王条款,09年年底之前,不能办理过户、销户的业务,所以多交了几个月的月租。终于迎来了2010年,可以把那卡给销户了。无意中看到第四城的交易区,竟然也有人在转让移动的不限流量GPRS的卡号,我自己138的那卡,也有这种套餐,这种套餐现在只能取消,不能新增订阅,所以这类套餐的卡,在网上也比较抢手。所以,在交易区发了个交易的帖子,报价450。本来没太在意有人来买,结果当天就有同学打电话来,要买我的卡,一翻讨价还价之后,以400元成交。额……为了小女的奶粉钱,老爸也过了一把号贩子的瘾。

【关键词】生日 今天是我的生日,27了。一大早,还在床上躺着,就收到了移动的短信,说今天是你生日,拨打一切网内的号码免费,看来不太厚道的移动,在一年当中,也难得有厚道的一天。27了,想想刚毕业那年,就好像昨天的事,一转眼,已经5年了。离30不远了,希望在30之前,我能找到自己的定位。

cake

扩展方法收集–实体验证

发表于 2010-01-17 | 分类于 技术控 | | 阅读次数:
字数统计: 521 字 | 阅读时长 ≈ 2 分钟

关于实体验证,是早期在博客园看到一个同学的文章,里面利用扩展方法对实体进行验证的思路比较有创意。大家可以先跳过去先看一下:http://www.cnblogs.com/tristanguo/archive/2009/05/15/1457197.html 这个实体验证的扩展方法,设计比较巧妙,充分利用了链式编程的特点,让代码更加简洁和美观,唯一不足的地方是后来作者在改进的时候感觉不是很到位。于是偶的同事Rex同学,对这实体验证的扩展方法进行了改进,在我看来,应该算是比较完美的解决方法了,因此在我们的实际项目中,也比较大量的应用到了此扩展方法。在这里贴出来,给大家分享一下。 贴代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommonLib
{
    public static class EntityValidator
    {
        public static ValidateResult Validate(this T target,
                                              Predicate predicate,
                                              string errorMessage)
        {
            var result = new ValidateResult(target);

            if (!predicate(target))
            {
                result.Errors.Add(errorMessage);
            }

            return result;
        }

        public static ValidateResult Validate(this ValidateResult target,
                                              Predicate predicate,
                                              string errorMessage)
        {

            if (!predicate(target.Entity))
            {
                target.Errors.Add(errorMessage);
            }

            return target;
        }
    }

    public class ValidateResult
    {
        internal List Errors { get; set; }
        internal T Entity { get; private set; }
        public bool HasErrors
        {
            get { return Errors.Count > 0; }
        }

        internal ValidateResult(T entity)
        {
            Errors = new List();

            Entity = entity;
        }

        public string[] ErrorMessages { get { return Errors.ToArray(); } }
    }
}

有了这个实体验证的方法,代码可以简洁多了,并且再也不用在业务逻辑判断中,写入复杂的if…else语句块,取而代之的代码,示例如下:

ValidateResult validateResult =
                        content.Validate(c => !string.IsNullOrEmpty(c.Name), "Name为空")
                               .Validate(c => c.MobilePhone.Length == 11 , "MobilePhone长度不正确")
                               .Validate(c => c.Age >= 10), "年龄不在规定范围")
                               .Validate(c => c.Height <= 200 && c.Height >= 180, "身高不符合标准");

                    if (validateResult.HasErrors)
                    {
                        log.Info("实体验证失败:");
                        validateResult.ErrorMessages.ForEach(p => log.Info(p));
                        return null;
                    }

怎么样?这样的链式编程的代码,比起一大串的if…else组合语句,简洁、明了多了,并且还可以提高代码阅读的效率,强烈推荐各位同学使用。

把博客烧录到我烧网

发表于 2010-01-14 | 分类于 站点日志 | | 阅读次数:
字数统计: 48 字 | 阅读时长 ≈ 1 分钟

今后大家可以通过我烧网了解我的博客以及我的最新动态。我的我烧网主页是http://woshao.com/rr250582420/。欢迎大家关注我!
验证码:8f010a5d386ef1d1f6c973b90f84925e

相册正式开通

发表于 2010-01-12 | 分类于 站点日志 | | 阅读次数:
字数统计: 287 字 | 阅读时长 ≈ 1 分钟

今天正式开通了相册,以后可以上传一点自己的照片和摄影小作。以前常用Picasa的免费相册服务,不过Picasa被qiang了很久了,至今仍未恢复。后来又用QQ相册,发现QQ相册会自动改变你上传的原图大小,有点不爽,决定放弃。于是打算请出曾经用过的ImageVue.这个相册的有点是无需数据库,采用PHP+Flash实现,效果那是相当的华丽……并且能自动为你的图片生成缩略图,前提是你的空间需要开通相关支持。从1.7版本一直到现在的2.x版本,ImageVue有了很大的改进,并且支持主题切换,相当不错,强烈推荐还没有相册,又想DIY的同学。安装和传图也相当的方便,有不懂的地方,可以请教谷歌老师。有了以前的使用经验,所以我一路上传程序、图片、绑定二级域名,开通相册可谓一气呵成,呵呵。

偶的新相册地址 http://album.xiaozhou.net 欢迎新老同学访问~!

1…272829…47
Timothy

Timothy

Timothy的技术博客,记录技术以及生活点滴

564 日志
8 分类
1187 标签
RSS
github twitter
Links
  • ZWWoOoOo
  • 花開未央
  • 守望轩
  • 大漠说程序
  • ChengBo
  • BlueAndHack
  • 程序员小辉
  • 子痕的博客
  • WoodenRobot
  • VPS大佬
  • 毕扬博客
  • VPSDad
  • 猫爪导航
  • ss1271的奋斗
  • Kian.Li
  • YoungForest
  • Fred's Blog
  • Jacklandrin
© 2025 Timothy
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4