批处理新建树结构文件夹

工作需要,每次纳品时候都要把项目源码,配置文件等等放在一个文件夹下各个指定的不同目录里然后打包,比如项目文件夹是 PM ,配置文件里放在 PM 下 INI 文件夹,源码放在 SRC 目录下。每次都要手动新建一堆文件夹,烦人,就用批处理随便搞了一下。(原本想用 Python 的,不过感觉太高射炮打蚊子了)

@echo off
:main
echo Input the Folder Name.
set /p name=
if exist %name% (
    echo Had the same Folder.
    goto main)
else (
md %name%
cd %name%
md SRC INI xxx)

很简单,很偷懒。

Vimperator个人配置(091111)

"2009-11-11

"默认显示菜单栏,工具栏,书签栏;隐藏任务栏;
:set guioptions=nB

"键盘映射
map <S-Up> :set go=m<CR>
map <S-Down> :set go=<CR>
map <S-Left> :set go=T<CR>
map <S-Right> :set go=B<CR>
map <S-Home> :set go=mTB<CR>

"映射快捷键
map <S-F1> :tabopen https://mail.google.com/mail/#compose<ENTER>

noremap j <C-f>
noremap k <C-b>
noremap h gT

"自动PASS THROUGH状态
autocmd LocationChange . :js modes.passAllKeys = /mail.google.com/.test(buffer.URL) || /google.com\/reader\//.test(buffer.URL) || /docs.google.com/.test(buffer.URL) || /wave.google.com/.test(buffer.URL)

:imap <C-v> <S-Ins>

"自动翻页,[[和]]快捷键
:set nextpattern=\s下一页|下一张|下一篇|下页|后一页|后页\s,^\bnext\b,\bnext\b,\older\b,^>$,^(>>|»)$,^(>|»),(>|»)$,\bmore\b
:set previouspattern=\s上一页|上一张|上一篇|上页|前一页|前页\s*,^\bprev|previous\b,\bprev|previous\b,\newer\b^<$,^(<<|«)$,^(<|«),(<|«)$

"智能地址栏
:set complete=sl

醉酒

相当龌龊。醉的连家都不知道在哪。

记住:可以喝酒,但不要醉酒。因为丫头会担心,会心疼。

还有:决不再抽烟!发誓!

该减肥了

昨天在小区边上超市门口称了一下体重,吓煞我也:163 斤!毕业后身体发福非常明显,主要是自己做饭,敢放开肚子的吃;还有就是因为上班原因,晚上回去七拼八凑的做饭吃饭,一般都要折腾到七、八点,顶多玩到 11 点就必须得睡觉,吃得太饱又不怎么锻炼,不长肉才怪。

太胖了不好,看着不够帅气,还影响健康,丫头也不喜欢,嗯,得减肥了。订个计划:

  • 晚上少吃,一碗饭,多吃青菜少吃肉;
  • 延长晚饭到睡觉的时间,争取三个小时以上;
  • 锻炼!

争取今年年关回家时候保持在 150 斤上下,嗯。

Python 自动备份 Firefox 配置小脚本

其实就是《A Byte of Python》里面一个例子程序,拿来练练手而已,没啥技术含量。打包压缩程序用的是 7-Zip,安装后安装目录里有一个命令行版的 7z.exe,添加压缩文件的参数是 a;自动删除旧备份文件的方法很山寨很暴力,直接 listdir 备份目录下的文件,然后删除第一个,也就是最旧的一个,凑合吧。

#Python 备份 Fx 配置并自动删除旧备份
import os
import time

source = r'C:\FxProfiles'
target_dir = r'C:\FxBackup'
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
newzip = time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command = "7z a %s %s" % (target, ' '.join(source))
oldzip = os.listdir(target_dir)
if newzip > oldzip:
    os.remove(target_dir + os.sep + oldzip[0])
    print 'Del OK'

if os.system(zip_command) == 0:
    print 'Successful backup to', target
else:
    print 'Backup FAILED'

山寨之极!不过还是玩的不亦乐乎,Python 很有搞头。

项目小结

前一个项目基本上算是完结。抽空总结一下这个项目的一些收获,以后写东西时候留心避免以前犯过的错误,吸取些许经验。

  1. 变量定义类型。自己添加的变量要注意类型。虽然可以参考程序已有的变量类型,不过还要通盘考虑自己变量的实际应用。比如这次,弄了个变量 String 类型,在前期确实很方便,但是后期就需要转 Int 型,比前期 String 用的还多……不想返工,只好 StrToIntDef(x,0) 的用,开销反而更大。
  2. 添加的函数要注意应用范围,不能添加一个函数实现了需要的功能而影响到其他范围内函数的功能。简单的方法就是添加函数时制定它的工作域。
  3. 善用 Trim() 对字符串过滤。
  4. 标志变量要注意用完后 返回初值
  5. 充分考虑判断条件组合可能带来的不同结果。
  6. 阅读程序的能力,程序已有同样功能的变量、函数不要重复制造轮子
  7. 注意已有的程序注释

我的 Twitter 工具集

话说我开始用 Twitter 的时间也不晚,在07年就注册了帐号,但是一直没怎么用;从去年下半年开始上的频率多了,不过还属于潜水艇,多数时间只看不说,主要拿来获取信息;今年开始用的多了,虽然不及那些 Twitter 狂人们一天上百推的疯狂,每天也有十条左右的个人碎念(这里怀念一下叽歪,之前我一直是用叽歪的同步 Twitter 功能的,尤其是短信发叽歪然后同步 Twitter)。罗列总结一下我现在用的 Twitter 周边工具,做个备忘。

Tweete/Twitzap。一直在寻找一个好用的 Twitter 客户端软件,AIR 类的Twhirl、TweetDeck Spaz等等,都有给我惊喜,却也多多少少有一些不满意的地方,内存占用,响应速度,消息提醒等等;Echofon(Twitterfox) 这个 Firefox 插件用过一段,不过过于拖累 Fx 速度;最后还是选用网页客户端。目前主用的是 Tweete,电脑和手机上都是用这个,简洁但十分强大。电脑上把 Tweete 挂在 Fx 侧边栏,可以少开一个程序;关掉 Avatars,配上页面自动刷新,要的就是一个速度;还有一个好处就是减少自动消息弹出,减少信息干扰。Twitzap 作为前主力,最棒的就是搜索聚合功能,但是速度过慢,原生态的自动刷新还有时间限制,现在退居二线作为替补,聚合一些关键字每天看几次,也挺好。

TwiTalker。喜欢用 Gtalk 来更新 Twitter,主要是 Gtalk 可以保存聊天记录到 Gmail 里,这样相当于一个 Twitter 备份,Twitter 现在的稳定性真不怎么地,宕机不说,还时有丢推发生;用 Gtalk 发推还有一个好处就是可以使用 Gmail 里 Google 强大的搜索功能搜索自己以前的推,Twitter 官方的搜索功能真菜。TwiTalker 作为一个第三方 Twitter-Gtalk 工具功能相当强大,发推是自然的,还可以接受推,包括私信、DM,还可以查看别人是否关注你。

TwitterFeed,主要是将 Blog 自动发推到 Twitter。之前使用 FriendFeed 聚合发推,不过 FriendFeed 倒下后它的短连接 http://ff.im/-** 打不开,很不方便,TwitterFeed 替代之。

Reader2Twitter,Google Reader 分享实时发推,还变相通过 Reader Notes 实现 GReader 发推,强大。

Twitter 是开放的,各种各样的发推工具让你想怎么玩就怎么玩。我的 Twitter @fannheyward.

Clips002

via A Byte of Python.

Do the analysis and design.

Start implementing with a simple version.

Test and debug it.

Use it to ensure that it works as expected.

Now, add any features that you want and continue to repeat the Do-Start-Test-Use cycle as many times as required.

Remember, Software is grown, not built.

Vim 插件两枚

偶遇 Vim 好插件两枚,分享之。

acp.vim - AutoComplPop: Automatically opens popup menu for completions. 输入两个字符后自动弹出自动补全列表,并默认选中第一项,力荐。

mru.vim - The Most Recently Used (MRU) plugin provides an easy access to a list of recently opened/edited files in Vim. 在 Vim 里开一个窗口显示最近打开/编辑的文件列表。

现在用的插件列表:

  • acp.vim
  • bufexplorer.vim
  • cecutil.vim
  • genutils.vim
  • minibufexpl.vim
  • mru.vim
  • NERD_commenter.vim
  • NERD_tree.vim
  • SearchComplete.vim
  • snipMate.vim
  • taglist.vim

九月九

20090909,再加上 09:09:09 这个时间,一辈子也就能遇到这么一回这么多 9 的日子,九九久久,这一天不知道有多少人领证、结婚,祝福一下。本来想掐着点给丫头发个短信,结果一不小心给错过了几分钟。。。不过心意还是有的嘛,丫头,俺可耐烦你。