‘ Geek Tweak ’ 的存档; 分类
【TIP】在我们的《Windows 下 Git 配置与使用指南》 中,有介绍大家使用 $ git go 命令。其实,这并非 Git 的原生命令,它是我们自定义的一个 alias(别名),由 $git add、$git commit、$git push 和 $git pull 四个命令组合而成。待熟悉之后,你可以直接使用这些原生命令,或者自定义更适合自己的 alias。 add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 Git 代码索引中删除文件 $ git rm filename status 查看目前工作目录的代码状态,自上次提交以来的添加、修改和删除等 $ git status diff 查看自上次提交以来,本地代码改动的具体情况 $ git diff commit 提交修改的代码(只是提交到本地的代码库,不会推送到服务器) $ git commit -am '修改说明' 如果觉得刚提交的“修改说明”写得不够好,可输入以下命令调整 $ git commit --amend push 将自上次 push 以来的,本地历次 commit,推送到服务器 结合我们的实际,应该这样写: $ git push origin master:your-id 其中,master [ 阅读全文]
一、安装 默认安装:msysGit 二、配置 1、C:\Program Files\Git\etc\gitconfig 添加: 【注意!】请将第二行最后的 “your-id” 修改成你在服务器上的实际 id,默认是姓名拼音。 [alias] go = "! bash -c \"git pull && git add .; if [ \\\"$*\\\" == \\\"\\\" ]; then git commit -a; else git commit -am \\\"$*\\\"; fi; git push origin master:your-id;\"" [core] autocrlf = false [gui] encoding = utf-8 [i18n] [ 阅读全文]
在 Windows 下用 NetBeans 做 PHP 开发,首先想到的是 NetBeans 的插件:NBGit。 评价:能用;若需没有的功能,可以自定义菜单调用自定义 bat 脚本;开发不活跃,使用没有信心。 第二个则是:TortoiseGit,SVN 小乌龟的 Git 版本。 评价:该有的功能基本都有了,还是不错的。 另外,TortoiseGit 只是 GUI 工具,使用它需要先安装 msysGit,这是正宗的 Git 之 Windows 版本。msysGit 有个简单的 GUI 工具,及简单的 Explorer 集成;但它自带的 Bash 非常好用,深得 Linux 的真传。 选择:msysGit。 理由: NBGit 不用说,功能都不完善,还需要自己定制 bat 脚本(若此,则它同样要依赖 msysGit);开发不活跃,很可能 NetBeans 下个版本更新就不能用了;况且,我们还有别的项目,不使用 NetBeans。 TortoiseGit 从功能上说是完善的,但它只是功能的堆砌而已,使用时完全体会不到 GUI 带来的便利。相反,它让人感觉很繁琐,一个劲地点鼠标,点来点去全是跟菜单打交道,远离了 Git 命令、远离了 Git 输出提示、远离了真相。 msysGit 的 Bash 非常好用;加上 Git 强大的 alias 功能,我们完全可以自定义一个 $ git go,使得 [ 阅读全文]
注: Git 的强大、灵活、好用,毋庸置疑。 但也正是 Git 的灵活性,在公司推行时,如何执行统一的流程成为一个问题。我想了不少时间才制订出一个办法。 目的是规范、统一。还有就是,Windows 下的同事,特别是不熟悉命令行的同事,怎样才能使他们好理解,并且觉得简单(之前大家觉得概念太多,难以理解;步骤多,记不住,不小心就搞错,冲突频发)。 说到 Windows,Git 在 Windows 下不如 Linux 下好使,这也是一个需要考虑的问题。 同样是在公司 Wiki 上写的,再次拿到 Blog 来凑数呵呵~。 版本控制 —————— 简单地说,就是将在本地开发的代码,定时推送到服务器。每一次修改,记录下它的作者、时间及修改说明等。 相对的,我们也可以从服务器下拉其他人推送的代码,并了解它的作者、时间、修改说明及其具体的修改内容。 这样,版本控制给团队协作开发提供了极大的方便。即使是一个人开发,因为它记录下了我们整个的开发历史,也是极有帮助和价值的。 比如,如果某次修改甚至整个系统出现问题,它也能帮助找回我们珍贵的代码。 分布式版本控制 ——————————– 更进一步,分布式版本控制工具使得我们在本机上即拥有完整的功能,不依赖于服务器,使用更为方便。它们往往也提供其它更好用或更强大的功能,比如灵活的分支管理。 Git ——– Git 是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。 Git 工作流程 —————————- 1、使用中央服务器辅助协作; 2、每人在服务器拥有一个以自己 id 为名称的分支; 3、各人只许推送更新到自己的分支,不允许推送到别人的分支或者 master; 4、master 由专人管理,在合适时 merge 其它分支(开发初期每日自动 merge 各人分支,生产化后则由人工 merge 经过 review 的分支); 5、代码修改 merge 到 master 后,将同步到所有终端。 【TIP】:熟悉之后,你可以创建类似 myId_branchName 的其它分支。 【TIP】:以上只是概念介绍,至于具体的操作,请参考:《Windows 下 Git 配置与使用指南》、 《Git 进阶功能》。 [ 阅读全文]
Update: 已可直接从库里安装了~。 # apt-get install redmine redmine-mysql libapache2-mod-passenger _________________________________________________________________________ 按:这是在公司 WIKI 上写的文章,难得这么认真,拿出来分享一下 :)。对比过十多个项目管理系统,然后在比较好的 Redmine, Trac, Mantis 三个当中选择了 Redmine。文中以 Debian Squeeze 为例,但其它 GNU/Linux 特别是 Debian Lenny / Sid、Ubuntu 应该基本一致。 _________________________________________________________________________ 一、废话 Debian 的库里有最新的 redmine 发布版(0.9.3),一个命令就可以搞定: #apt-get install redmine However……,安装后运行会出现 http 500 service unavailable 等问题。因为 Debian 只有 2.2.3 的 rails,而 redmine 0.9.3 要求 rails 的版本为 2.3.5。 我第一个想法是,既然库里有 redmine,就不折腾了,删掉 rails,再手工装一个新版本。可是 redmine 是依赖于 rails 的,要删得一起删。然后我就想,好,保留它,再装一个新版本覆盖之!就是这个想法……,最后遇到了很多问题,又因为对 ror [ 阅读全文]
一、顶部文章分类去掉“首页”(否则4个分类加“首页”,太长了,挤到下一行来了) wp-content/themes/monochrome/js/jscript.js > $("#menu > li:first-child").addClass("first_menu"); + $("#menu > li:first-child+li").addClass("first_menu"); > $("#menu > li:first-child.current_page_item, #menu > li:first-child.current-cat").addClass("first_menu_active"); + $("#menu > li:first-child+li.current_page_item, #menu > li:first-child+li.current-cat").addClass("first_menu_active"); wp-content/themes/monochrome/style.css + #menu li:first-child { display: none; } > #menu .first_menu { border:none; background:none; } 二、点击某个分类后,文章标题字体过小 wp-content/themes/monochrome/style.css - .archive_contents h2 { font-size:14px; margin:0 0 5px 0; padding:0; } + .archive_contents h2 { font-weight: normal; } 三、文章标题颜色不够明晰 wp-content/themes/monochrome/style.css h2 a { color: green !important; font-weight: bold; } 四、避免分类页和搜索页中,将整篇文章的文字作为链接,改为只给“阅读全文”添加链接 wp-content/themes/monochrome/archive.php wp-content/themes/monochrome/search.php -<p><a [ 阅读全文]
一、cannot find -lcrypto 编译 fitx 时遇到的。一番 Google 之后,原来是指 libcrypto.so,而这个库属于 libssl-dev 包。 依赖里没有提这个包,装上后就没事了。 PS:因为 scim-python 是直接 make install 的,没有打包。fitx 依赖于 scim-python,我没有改依赖关系,而是用 dpkg -i –force- 安装。然后dpkg给出提示说: dpkg:fitx:尽管有依赖关系的问题,但不管怎样,还是按照您的要求,继续配置: 不知怎的,我觉得这段话很好玩。有一种幽默感、亲切感、尊重感,还有……~~~ 二、undefined symbol: Py_InitModule4 运行 awn-manager 时遇到的。这是配置错误,/usr/bin/awn-manager: SITE_PKG = ‘/usr/lib/python2.4/site-packages’ 将其中的2.4改成2.5就OK了。 原因是,python2.5 中,将 64bit 系统下的 Py_InitModule4 改名为 Py_InitModule4_64 了。改名目的是为了阻止2.4的模块调用2.5的解析器。因为2.5针对64bit机做了不兼容于2.4的修改,以支持 4GB+ 内存。 #if SIZEOF_SIZE_T != SIZEOF_INT /* On a 64-bit system, rename the Py_InitModule4 so that 2.4 modules cannot get loaded into a [ 阅读全文]
按:今天被“Mozilla 的圣经”勾起了兴趣,进而了解了更多一些历史。现简单记录一下,也算是对 Netscape 历经14年风雨动荡并终于在2008年初寿终正寝的一点纪念和致敬吧。 一、Netscape/Mozilla 是谁? 对于年纪不大且不大关心 WEB 的人来说,这个问题是很正常的。 非严格来说,Netscape(网景)是一个公司及其出品的 WEB 浏览器的名字。正是这个浏览器吸引并教育了最早的一批万维网用户,并且创造和引进了许多至今仍在应用的 WEB 技术和标准。 众所周知的是,Netscape 最终被微软的 IE(Internet Explorer)干掉了。 1998年,Netscape 被 AOL(美国在线)以4百20万美元的价格收购(微软败诉于反垄断案后,AOL 籍此获得了7.5亿的赔偿),后 AOL 又被 TimeWarner(时代华纳)收购。 AOL 在获得巨额赔偿的同时,还吃了微软一个“7年内可以无限制使用和散布IE”的糖衣炮弹。 2003年,网景终于被宣布解散,只剩少部分人继续维护和开发。 2008年初,Netscape 的开发被宣布彻底终止,并将于 2008.2.1 停止所有安全与技术支持。 如果只是这样,那也无甚好说。传奇的是,Netscape 在卖掉的前夕创立了开源的 Mozilla 社区,而后者诞生了另一款革命性的浏览器(firefox)。形象地说,Netscape 的躯体已经死了,而血脉流传到了 Mozilla。 二、Mozilla 吉祥物 Mozilla 在作为开源计划的名称之前,早已在 Netscape 使用多年,包括作为开发代号、作为吉祥物(那是一只类暴龙,原先是绿色,现在进化到了红色)等。 以下有很多 Mozilla 吉祥物的卡通图,有些满 funny 的。 The Mozilla Museum: http://home.snafu.de/tilman/mozilla/ Dave Titus(Mozilla 卡通形象的设计者) T-Shirt collection: http://www.ex-mozilla.org/teeshirtart/ 三、图形网页浏览器的鼻祖 & Mozilla 名字的来源 虽然 Netscape 在早期很有影响力,但史上第一个图形化的 Web 浏览器应该是 Mosaic。它由 NCSA(National Center for Supercomputing [ 阅读全文]
DOM中的Text节点,has no properties错误 考虑下面一段代码: <script type=”text/javascript”> function switch_nextSibling_display(hdl){ hdl=hdl.nextSibling; if(hdl.style.display==”none”) hdl.style.display=”block”; else hdl.style.display=”none”; } </script> <input type=”button” value=”Click Me!” onclick=”switch_nextSibling_display(this)”/> <input type=”button” value=”Hidding Me!”/> 能得到我们想要的结果吗?否!如果用firebug调试的话(有了firebug太爽了哈~),会得到“……has no properties”的提示。这是因为:两个 input 控件之间有个换行符。在DOM树中,包括换行符、空格及其他普通字符都属于Text节点。不能因为换行符和空格看不见就当它不存在,实际上,前 input 节点的 nextSibling 正是这个Text节点,应该nextSibling.nextSibling才对。不过,在IE中,这个Text节点是被忽略的。为了兼容,有两个方法,一就是不要换行;或者,加上这么一句:if(hdl.nodeType==3) hdl=hdl.nextSibling,nodeType等于3表示Text节点。 P的问题~ 同样是上面的script,下面的click能预期执行吗? <input type=”button” value=”Click Me!” onclick=”switch_nextSibling_display(this)”/><p>I want to hide<p>all this!</p></p> 同样不能,”all this”是不受影响的。虽然看起来,后一个p只是前一个p的子节点,好像前面的p包括整句话才能称的上是input的“兄弟”。但实际上,p是不能自包含的,当后一个p出现的时候,前一个p就被关闭了,所以那句话等价于:<p>I want to hide</p><p>all this!</p>。同理,p也不能包含div等块级元素。虽然手工不大可能写出这样的语句,但一些半自动的场合难免,这时用JS读/写DOM树可能会碰到一些意想不到的问题。 var与非var JavaScript中,在函数外用不用var定义的变量都是全局的,在函数内部,var定义局部变量,不用var定义全局变量,这似乎没什么问题。但下面一段代码会alert出什么呢? <script type="text/javascript">var a=1;function f(){ alert(a); var a=2;}f();</script> 1吗?No。因为f()里面声明了与全局变量同名的局部变量,代码在运行前先处理变量声明,所以此a已非彼a了,但是alert的时候a还没有被赋值,所以结果是undefined。倘若把f()里面的声明:var a=2 改成赋值:a=2,此a就仍然是彼a,此时因为a的值尚未被改变,所以结果是1。另,全局的JS变量还能被VBScript访问。 [ 阅读全文]
昨晚折腾Debian,最后弄出个致命错误,导致X无法启动 错误信息: fatal error: Could not open default cursor font ‘cursor’ 最终从Debian邮件列表里搜到了答案,只需装上“artwiz-cursor”字体包就OK了 console下: # aptitude install artwiz-cursor done! [ 阅读全文]