2016暑假总结

和前几个暑假一样,两个月很快就过去了。回过头来看,七月几乎没有多少成果,八月才开始稳定的学习和工作。

现在还能回想起来和家人相处的快乐:妈和奶奶做的好吃的菜;安静的晚上;和弟弟玩的游戏;和瑶瑶在楼顶看的星空。希望以后还能有能力和时间来制造这样快乐的回忆。

阅读(完成度:75%)

  1. 撒冷镇
  2. 牛鬼蛇神录
  3. 程序员修炼之道(注重实效的程序员)
  4. Powerful Sleep
  5. The Element of Style
  6. 少有人走的路(重读*2
  7. Flask Web开发
  8. JavaScript 编程精解
  9. 一滴泪

未完成:

  • Learn C The Hard Way :完成了10%。
  • Python Cookbook:当做工具书用了。
  • Python核心编程:这本书在暑假前就已经读完,不过习题只完成到十三章,计划年底完成全书的习题。

写作(完成度:85%)

  1. 2016暑假计划
  2. 小说和改编电影
  3. 《撒冷镇》笔记
  4. 通过这12个问题认识自己
  5. 大学应该怎么度过?
  6. 写作的乐趣
  7. AutoHotkey——自动化你的生活
  8. AutoHotkey——进阶实践与思考
  9. 如何获得优质的睡眠?
  10. Tkinter效果总结
  11. 我的信息处理系统:收集
  12. 日常快捷键配置:daily.ahk
  13. 告别盗版
  14. SimpleWords——幻灯片生成器
  15. 100Words
  16. 十个初级Python练习题
  17.  2016暑假总结

未完成:三篇

编程(完成度:56%)

未完成:

  • 翻相册(网站、Windows程序):虽然看了Flask Web开发,也跟着作者敲了书中所有的样例代码,还是把web编程想的太简单了,还需要一些时间。
  • 俯卧撑俱乐部(网站、文章)

知识和技能(完成度:78%)

  • Google搜索技术
  • 打字标准指法
  • 英语EnglishPod60
  • Java基本知识
  • C基本知识
  • JavaScript基本知识
  • Git常用命令
  • MarkDown语法
  • AutoHotkey基本知识

未完成:

  • 英语跟读:虽然没有每天抽出单独的时间来练习,听播客的时候有跟读。
  • 练字:练了大概有一周时间,没能坚持下来。
  • 双拼:形成了标准指法打字,但没有继续学习双拼。排进下半年的计划里。

其他(完成度:28%)

  • 电影若干
  • 游戏传送门系列

未完成:

  • 腹肌:虽然每周三次锻炼腹肌,但肌肉还是没有很明显,不过已经形成雏形了……
  • 十幅涂鸦
  • 浏览教材:计算机网络原理 —— 完成40%
  • 浏览教材:JAVA语言程序设计 —— 完成70%
  • 浏览教材:高数

时间

  • 编程:79小时22分钟
  • 写作:39小时50分钟
  • 阅读:64小时19分钟
  • 英语学习:16小时24分钟
  • 运动:29小时6分钟
  • 娱乐:143小时10分钟

娱乐太多了,达到了143小时(其中有104小时是七月的数据),主要原因是因为七月的不稳定的生活。下面是相应的时间数据饼图:

七月   

七月时间数据

七月时间数据

八月

八月时间数据

八月时间数据

总完成度:85%

虽然达到了计划的指标,但目前的完成度统计是用项目数量作为计算依据的,还不算太准确。未来会慢慢完善这种统计的准确性。

最后一个暑假结束了。

10个Python练习题

从开始学Python以来,接触了不少练习题。下面十个练习题,是我做出来的和想做出来的题里比较有趣的,现在按照难度由低到高排列。欢迎到Github上提交你的答案。

Github地址:https://github.com/lihuii/PythonExercises

 

一、猜数字

经典的猜数字游戏,几乎所有人学编程时都会做。

功能描述:随机选择一个三位以内的数字作为答案。用户输入一个数字,程序会提示大了或是小了,直到用户猜中。

 

二、FizzBuzz

另一道经典编程题。

功能描述:遍历并打印0100,如果数字能被3整除,显示Fizz;如果数字能被5整除,显示Buzz;如果能同时被35整除,就显示FizzBuzz。结果应该类似:0,1,2Fizz4Buzz6……14FizzBuzz16……

 

三、猜数字的AI

和猜数字一样,不过这次是设计一个能猜数字的AI

功能描述:用户输入一个单位以内的数字,AI要用最少的次数猜中,并且显示出猜的次数和数字。

 

四、整点报时

老式挂钟会在整点的报时,响铃的次数和时间相等。我们设计一个在电脑上运行的报时器。

功能描述:运行后,在每一个整点长响一声,半个整点短响两声。实现睡眠模式,晚上十二点到早上六点不响铃。

 

五、敏感词审查

一向痛恨网络审查的你成了某网站的审查员,要求审查网络上违反上头规定的名词。

功能描述:要审查的帖子在这个文本文档【todo】里,要求将所有的和谐,三个代表,言论自由,64替换为“*”号。

 

六、文字冒险游戏

你想做个清新脱俗的文字游戏,只在命令行的黑框里运行。

功能描述:尽量参考回合制RPG游戏的模式,游戏剧情自编,要有战斗模式,主角有HP属性,战斗和吃东西会对HP有相应的增减效果。

 

七、词频统计

你想分析某个英语写作者的写作风格,你想先从他使用词语的频率入手。

功能描述:分析这个文本文档【todo】里的词频,按照出现频率由高到低排列结果,不区分大小写,过滤掉标点(可以使用正则表达式)。结果类似ok234play122funny78

 

八、Markdown转换器

你一向喜欢在Windows的记事本里写文章,为了能方便的生成网页,你使用Markdown的格式写了篇文章,现在需要一个把Markdown转换成HTML格式的程序。

功能描述:将这个文本文档【todo】里的内容转换成HTML文档。要尽可能的支持Markdown标签,越多越好。建议使用正则表达式。

 

九、邮件轰炸机

你的一个朋友生日快到了,你决定搞个恶作剧——用邮件塞满他的邮箱。

功能描述:首先去注册十个邮箱,然后用这是个邮箱轮流发送随机生成的邮件内容给你的朋友。调整发送的频率,以免被服务器拒绝。

 

十、用邮件控制电脑

你的电脑放在宿舍,这时你在教室上课,你又决定搞个恶作剧吓吓装病请假在宿舍玩游戏的室友。

功能描述:使用邮件发送特定的命令,让电脑上的程序判断发信方是否为控制邮箱,如果是就执行发送过来的命令。通过不同的方式实现尽可能多的功能。

 

想要更多的挑战?可以去这里看看:http://www.pythonchallenge.com/

注:上面的几个文本还没有弄好>_<。

100Words

一开始我学Python下面的GUItkinter的时候,尝试着做了一个记事本程序,然后就实现了100words。现在是100Words1.1版。和之前相比,新版的100words增加了查单词,计时和字数统计功能,界面上也更加美观。

介绍

100words是一个英语写作练习软件,特点只有一个:如果想要保存,就得写满100个单词。

这个软件可以作为英语学习辅助使用。假如你正在学习英语,每天都有一定量的输入,比如说阅读或是听播客,那么你可以使用它来进行复习和回顾。每天一百个单词也许很少,但是通过长久的积累,同时搭配语法的学习和大量语料的输入,写作水平就会得到指数级的提高。

新旧版对比

新版界面

100Words v1,1

100Words v1,1

旧版界面

100old

100Words v1.0

新特性

查词

使用微软翻译实现,可以翻译词语和句子。

tran

计时

目前还没有添加到统计数据里,比较鸡肋。只能用来测试自己的写作速度。未来的版本会把时间数据做成折线图。

time

字数统计

参考了PythonCookbook里的计时器的实现方法。文本输入框上面的数字标签会实时显示当前的字数。

words

 

其他特性

你可以在File-Analysis下看到你所有的写作数据(目前只有日记数量)

data

 

使用说明

  1. 下载文件;
  2. 解压,取出可执行文件(100Words.exe)和字体文件(Purisa.ttf),其他可删除;
  3. 双击安装字体文件,然后把可执行文件复制到桌面上;
  4. 这时双击图标可以打开了。

总结

虽然目前功能上还不完善,最重要的拼写检查功能没有实现。但还是会有接下来的版本的:)

SimpleWords——幻灯片生成器

介绍

SimpleWords是一个HTML幻灯片生成工具,你只需要按照格式把幻灯片写在文本文档里,就可以轻松生成一个HTML幻灯片(使用浏览器打开)。SimpleWords支持Markdown和HTML标签,可以设置背景颜色。支持两种样式:

  • pure:它适用于制作简单的概括性的幻灯片:每页只有少量的文字或关键词;每页只放一张图片,或是一个视频。这种样式没有页面边框,文字和元素将居中显示。
  • rich:适合更复杂的页面布局。有页面边框,文字和元素靠左对齐。

GitHub 地址:https://github.com/greyli/simplewords

用法

设置样式

在文档第一行设置页面的样式,默认为pure样式。在两个百分号后面写上样式名称(pure或rich),独占一行,小写:

%%pure

%%rich

设置背景颜色或图片

在文档的最后一行设置背景颜色,默认为灰色。在两个美元符号后接上你要设置的颜色,RGB值,如下所示:

$$red

$$rgb(123, 45, 45)

需要注意的是,所有的字符都要是英文半角字符。所以不应该出现¥¥或是()。

文件结构

SimpleWords\
– js\
– css\
– images\
– videos\
– words.txt
– slide.py
– slide.html

  • 根目录下的words.txt是你写幻灯片的地方。
  • 你要插入的图片和视频要分别放在images和videos文件夹内。
  • slides!.py是生成你的幻灯片的程序。
  • slides.html是你的幻灯片,点击它就可以打开你的幻灯片了。

幻灯片分隔符

每一张幻灯片的分隔方式有两种:第一种,使用独占一行的五个横线分隔“—–”;第二种,使用换行符作为分隔,即一行代表一张幻灯片。两种分隔方式不可混用。当没有发现横线换行符时,采用默认的行分隔。

注意:设置样式和背景颜色的语句同样需要使用分隔符!

文字效果

支持Markdown和HTML两种标记语言(可以混用),所以你可以方便的为你的幻灯片实现你想要的效果。比如下面是一些常用的Markdown标签:

# 这是H1
## 这是H2
### 这是H3
这是一个段落。 
*这是斜体*
**这是粗体** 
***这是粗体+斜体***
一段文字后打上两个空格表示另起一行  

了解更多有关HTML和Markdown的信息:MDN HTML文档Markdown

添加图片和视频

图片:

![alt text](images/photo.jpg) 

<img src="images/photo.jpg" height="600">

视频:

<video width="800" height="600" controls><source src="videos/movie.mp4"></video>

注意:当使用行分隔时,不要让标签分行。建议不要让height值超过600。

版权声明

SimpleWords基于简化了的impress.js生成。

 

告别盗版

说起来羞愧,我直到最近才真正脱离了盗版。虽然很早就开始使用Steam,但电脑里大部分的电影,音乐,资料仍然是盗版的。现在,我终于迈出了这一步。在七月的一天里,删除了所有下载的电影,音乐专辑,电子书,英语资料和破解软件。

一直到大学之前,我都和大部分人一样,毫无版权意识。也没有太多机会接触盗版资源。有了电脑之后,我才逐渐意识到版权这个问题。虽然意识到了,但却没有停止这种毫无负罪感和安全风险的偷盗行为。因为大家都这么做,而几乎没人会因为你下载电影和音乐而说你不道德。大部分人不知道自己的行为属于盗版,甚至不觉得盗版有什么不对。

正因为它如此容易,在大多数环境下几乎没有人觉得你在偷,你也就认为自己不是偷了。但是盗版的本质就是偷,无论怎么解释和辩驳都没法改变这个事实。无论你有多穷,软件有多贵,有多少人这么做,都不能为你的偷盗增加任何合理性。

 

为什么大多数人不觉得盗版可耻?

盗版盛行的一个主要原因就是版权保护相关的法律的缺失。用道德来维系秩序本身就是低效率和不可靠的,何况盗版这种事情在当前的道德环境下并不算是严重的过错,这种轻微的道德感不能给人带来约束。你要是告诉你身边的人在网上下载电影和音乐(在有版权的网站除外)不道德,他一定会感觉诧异。更多的人知道你花钱买游戏和软件后,很可能还会觉得你有病。

教育体系也要负一定的责任(往后算账还要落到政治制度头上)。教育制度的死板和僵化要为这个社会的大部分问题负责任。学校几乎不给带来什么常识性,社会性的教育。之前既没有接触过,也没有了解过。大学倒是有了机会,而这时老师们又开始教你怎么用盗版软件了。(也许是因为我没上过好学校的缘故?)

 

盗版的危害

盗版对产业和原创者的伤害之大,自然不必说。但对我们自己也未必只有好处。

不付出代价就获得的东西让人不会珍惜。点两下鼠标就下载下来一张音乐专辑,听起来肯定没有用自己的生活费买来正版CD的虔诚和快乐。当一切来得太容易,你就不再愿意付出看起来似乎是多余的努力。新出了电影,你就去找资源,来了场考试,你就去找答案。慢慢的,你的生活的根基变成了虚假的东西,站在谎言上的你会收获一个快乐的未来吗?面对孩子时不会感到心虚吗?

盗版的方便激发出人的贪欲,但大多数人疯狂下载的资源只是躺在硬盘里睡觉罢了。过多的内容等待着你去消化,这让你的生活缺乏控制,因为你随时都会沉溺在丰富的内容里。一个囤积粮食的老鼠,眯着眼盯着发着光的屏幕,看起来浮躁又可怜。你下载一堆游戏,怎么玩都不好玩,要么画面太烂,要么对白太长。你骂了句操,因为过场动画没有提供跳过按键。你下载一堆烂片,不停的快进,去找到下一场打斗和爆炸,或是又一个短暂的性爱镜头。你想去看会儿书,可是怎么也看不进去,不停的点击手机,希望看到下一个紧张刺激的描写。

慢慢的,你干所有的事情都像是看毛片,没有干脆直接的刺激你干不来,你找最好笑的图片,最刺激的电影,最流行的音乐,最炫酷的运动。最后你什么都不想干,只想看无码的毛片你变成了一个暴躁虚伪的家伙,对生活里的一切都性冷淡。又一个大脑迟钝,心灵粗糙的现代人!

每一个不拒绝盗版的人的生活都面临着失控的危险。

 

正版的途径

许多人说他们盗版是因为没有买正版的途径,他们在说谎。而且大部分他们口中的贵的要死的软件,都有优惠的教育版。下面是一些常见的正版途径以及一些软件的优惠购买方式。

书店
亚马逊(纸质书或kindle电子书)

 

电影

亚马逊(DVD)
在各大视频网站上付费在线观看

 

音乐*

亚马逊(CD)
网易云音乐

豆瓣FM
(具体正版服务商名单见文末)

 

软件、游戏

Steam
微软商城
微软DreamSpark(教育免费软件)
AutoCAD(免费教育许可产品)
数码荔枝
赛尔校园先锋

 

*中国大陆地区得到IFPI认可的正版数字音乐供应商:<http://www.pro-music.org/legal-music-services-asia.php>

 

日常快捷键配置:daily.ahk

这是我学习AHK以来逐渐修改形成的一个日常快捷键集合。这个脚本让我用一种高效的方式使用我的电脑。

如果你还不熟悉AutoHotkey,可以先读一下前两篇文章:

借由这个脚本,我可以:

1、删掉桌面上几乎所有的快捷方式图标,然后把桌面当成一个inbox来使用,所有当前需要的文件都放在上面。
2、减少鼠标的过度使用;避免手指的不合理操作,比如编程时右手扭曲着按方向键移动光标。
3、减少重复劳动,把选中文字——复制——点开浏览器——打开网站——粘贴——回车简化成了选中文字,按下快捷键。同时不再重复输入常用的字符。
4、玩游戏时不会被开始键和输入法打扰。
5、这个脚本还在不断完善和增加中。
6、编程,让生活更美好。

 /*
我的日常快捷键 daily.ahk
by 李辉(greyli.com)

目录
一、打开常用软件、文件和网页
二、发送常用字符
三、常用操作与组合键
四、小工具
*/


;;;;;;;; 一、打开常用软件、文件、文件夹和网页

;;;; 1、程序

;QQ Lite
:://qq::
Run D:\Program Files (x86)\Tencent\QQLite\Bin\QQ.exe
return

;Picasa 3
:://pi::
Run C:\Program Files (x86)\Google\Picasa3\Picasa3.exe
return

;Chrome
:://c::
IfWinExist ahk_exe chrome.exe
WinActivate
else
Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
return

;Steam
:://st::
Run D:\Program Files (x86)\Steam\Steam.exe
return

;PotPlayer
:://pl::
IfWinExist ahk_exe PotPlayerMini64.exe
WinActivate
else
Run C:\Program Files\DAUM\PotPlayer\PotPlayerMini64.exe
return

;OneNote
:://o::
IfWinExist ahk_exe OneNote.exe
WinActivate
else
Run C:\Program Files (x86)\Microsoft Office\root\Office16\ONENOTE.EXE
return

;PyCharm
:://p::
IfWinExist ahk_exe pycharm64.exe
WinActivate
else
Run D:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.5.4\bin\pycharm64.exe
return

;Vmware Player
:://v::
IfWinExist ahk_exe vmplayer.exe
WinActivate
else
Run C:\Program Files (x86)\VMware\VMware Player\vmplayer.exe
return

;ConEmu
:://ce::
Run C:\Program Files\ConEmu\ConEmu64.exe
return

;Everything
:://e::
Run C:\Program Files\Everything\Everything.exe
return

;Gimp
:://gi::
Run C:\Program Files\GIMP 2\bin\gimp-2.8.exe
return

;Evernote
:://en::
Run C:\Program Files (x86)\Evernote\Evernote\Evernote.exe
return

;Xmind
:://xm::
Run C:\Program Files (x86)\XMind\XMind.exe
return

;任务管理器
:://t::
Run taskmgr.exe
return

;控制台
:://cmd::
Run cmd
return

;截图
:://j::
Run C:\Windows\system32\SnippingTool.exe
return


;;;; 2、文件和文件夹

;桌面的inbox.txt
#i::
IfWinExist Inbox - 记事本
WinActivate
else
Run C:\Users\Administrator\Desktop\inbox.txt
return

;桌面的goals.txt
#g::
IfWinExist Goals - 记事本
WinActivate
else
Run C:\Users\Administrator\Desktop\Goals.txt
return

;Python文档
:://pd::
Run C:\Python27\Doc\python2711rc1.chm
return

;AHK文档
:://ad::
Run C:\Program Files\AutoHotkey\AutoHotkey_zh.chm
return

;下载文件夹
:://dl::
Run D:\Documents\Downloads
return

;回收站
:://hs::
Run ::{645ff040-5081-101b-9f08-00aa002f954e}
return

;projects
:://pr::
Run D:\projects
return

/*
秘密文件夹。
你可以把一个不想让别人看到的文件夹藏在很深的地方(比如下面的地址),然后使用一串热字符来打开它。
下面的字符只是个示例:P
*/
:://open::
Run C:\Program Files\CMAK\Support45\fpg\asd\secret\
return

;;;; 3、网页

;我的博客
:://hui::
Run http://greyli.com
return

;豆瓣
:://dou::
Run https://douban.com
return

;豆瓣fm
:://dfm::
Run https://fm.douban.com
return

;知乎
:://zhi::
Run https://zhihu.com
return

;gmail
:://gma::
Run https://gmail.com
return

;维基百科
:://wiki::
Run https://zh.wikipedia.org
return

;;hacker news
:://hack::
Run https://news.ycombinator.com/
return

;github
:://git::
Run https://github.com/lihuii
return

;Twitter
:://twi::
Run https://twitter.com/pestear
return



;;;;;;;; 二、常用字符

;;;; 1、邮箱

::@g::
Send withlihui@gmail.com
return

::@o::
Send withlihui@outlook.com
return

;;;; 2、密码(有一定的安全风险,最好不要和账号放在一起)

::@pwd1::
Send wodemima1
return

::@pwd2::
Send wodemima2
return

::@pwd3::
Send wodemima3
return


;;;; 3、其他文字

;发送当前日期
:://now::
FormatTime, CurrentDateTime,, yyyy-M-d
Send %CurrentDateTime%
return

;手机号
:://phone::
Send 1234****
return

;地址和邮编
:://addr::
Send 江苏省南京市*****(2346***)
return

;身份证号码
:://sfz::
Send 320382****
return

;银行卡号
:://bank::
Send ***
return

;我的博客
:://blog::
Send www.greyli.com
return


;;;;;;;; 三、常用操作

;用Google搜索选中的文字
!g:: 
Send ^c 
Run http://www.google.com/search?q=%clipboard% 
return 

;用淘宝搜索选中的文字
!b:: 
Send ^c 
Run http://s.taobao.com/search?q=%clipboard% 
return 

;打开一个空白记事本
!n:: 
If WinExist Untitled - Notepad 
WinActivate 
else 
Run Notepad 
return 

;使用灵格斯翻译选中的文字
!t::
Send ^c
Send !q
Send ^v{Enter}
return 

;将选中的文字发送到桌面上的Inbox.txt,然后关闭记事本
!z:: 
Send ^c
Send #i
WinWaitActive Inbox - 记事本
Send ^v{Enter}
Send ^s
WinClose Inbox - 记事本
return 

;使用Alt+j、k、l、i上下左右移动光标
!j:: Send {Left}
!l:: Send {Right}
!i:: Send {Up}
!k:: Send {Down}

;选中一行文字
!o:: Send {Home}+{End}

;选择当前位置到行首的文字 
!y:: Send +{Home} 

;选择当前位置到行末的文字 
!p:: Send +{End} 

;Alt+鼠标中键删除
^MButton:: Send {Delete}


;;;;;;;; 四、小工具

;计时器
#c:: 
InputBox UserInput, Counter, Enter a number(minutes):
IfEqual, Errorlevel, 0
{ 
 sleep UserInput * 60000
 SoundBeep
 MsgBox 时间到!
}
return

;定时关机
:://sd::
InputBox UserInput, Counter, 输入计划关机的时间(分钟):
Run cmd
WinWaitActive ahk_class ConsoleWindowClass
time := UserInput * 60
send ^{Space} ;设置英文输入
Send shutdown{Space} -s{Space}-t{Space}%time%{Enter}
return

;取消定时关机
:://stop::
Run cmd
WinWaitActive ahk_class ConsoleWindowClass
send ^{Space} ;设置英文输入
Send shutdown{Space} -a{Space}{Enter}
return

;立刻关机
:://sdn:: 
Shutdown, 1
return

;游戏模式
;禁用Windows键,保持大写锁定
#v::
Run D:\Documents\game.ahk
;game.ahk的内容如下,退出游戏时关闭这个脚本
;LWin::return
;SetCapsLockState, AlwaysOn

/*
*last edited by 李辉 2016/08/29
*/
 

我的信息处理系统:收集

我们日常接触的信息影响我们的思想、眼界和决策,也进一步影响了我们的生活。所以说学会筛选和获取信息至关重要。

我的信息处理方式包括三部分:

收集——处理——输出

另外两篇:
我的信息处理系统:处理(写作中)
我的信息处理系统:输出(写作中)

 

主动收集

你要收集什么样的信息,得看你要在哪一个学科或专业上有所成就。这也是一个重要的原则:让目标驱动行为。一般来讲,在菜鸟阶段可以广泛的接触一些网站和媒体,慢慢对比和筛选。慢慢的,可以只关注筛选下来的优质信息源。但是无论你学什么学科,都不要用刷社交网站来获取信息(娱乐就是娱乐,不要扯上学习),刷这个词让人联想到漫无目的和消遣。你在Twitter上关注的牛人和名企能帮你提高编程能力?

与学科无关的碎片信息当然有必要,社交网站里也有很多有价值的信息(虽然常常藏在一堆垃圾里面)。但要注意把被动接受的碎片信息控制在一定水平下,主要的时间用在搜索和查找上(主动),而不是刷(被动)。更要把这些有用的信息放进一个完整的处理流程:收集——处理——输出。要不然,信息只是从你的脑袋里进来又出去,什么也没留下。

 

书是最优选

想要深入了解某一个主题时,书是最优选择也是最终选择(当然得是好书)。可以到网上去看别人的推荐,参考豆瓣和购物网站上的评价,结合自身的水平,然后再买来读。如果只想大概了解一下,那么可以读别人的文章,相关书的笔记。

 

可靠性

网上的信息要注意来源,优先选择权威的机构和权威的作者发布的信息。普通信息要注意甄别软文和假象,往往要综合数量,样本集合(人群类别)数量来判断信息的可靠性。举两个例子:

1、比较小众的书或电影,其数据往往缺乏参考价值。大部分人不知道的作品,反过来说,知道的人往往是粉丝,所以评价可能会虚高。

2、在网上搜索某个普通的笔记本的质量好坏,往往都是差评,这并不一定说明电脑质量不好。假设电脑有1%的故障率(正常的),五万台中的500台出了问题。这500台用户很有可能到网上评价和发牢骚,而没有故障的人却不大可能写文章来夸他的电脑很正常,所以搜索到的大多是差评。

 

适用性

网上的大部分(优质的,学科类的)碎片信息只是通过书或其他途径获得相关知识的人的输出,这个输出本身就代表着筛选和过滤,没有多少基础内容,而只是书里的结论或个人的总结。我们仅仅读别人的文章,通常会缺乏深层次的认识,但同时却有一种了如指掌的感觉。另一方面,权威人士的建议和指导未必适合每一个人,所以也不能迷信权威。

假如你想获得什么知识和能力,那么就认真对待,通过踏实的阅读、思考和实践来获得它,而不是奢望通过一两篇文章就能入了门。了解了入门的感觉并不能让你入门;了解了成功者的快乐和心酸,即使你为之唏嘘和感叹,觉得感同深受,你可能还是个loser

 

资料下载狂

没有付出任何代价就获得的东西不会让人珍惜。这一点不仅适用于物品,也适用于人际交往和生活。人们通常会对得不到的,花费巨大代价得到的,得到又失去的东西付出感情。付出代价,不仅让你更加认真对待,也更容易给你带来快乐和收获。为知识买单,不光是对别人的劳动成果的尊重,也是对你自己人格的珍惜。如果不尊重版权,那么你很容易就会变成资料收藏家和下载狂。贪欲让人变得盲目,自己不需要的东西,下载下来也多半躺在硬盘里面睡觉。这是收集资料时要注意的,有两个方法可以避免上面的问题:一、只收集自己需要的资料。二、购买正版。

 

收集的工具

Inbox:各种灵感念头和想法以及要临时记录的内容,待了解的内容。放到纸质笔记本,手机(拍照、录音、便签),电脑桌面上的inbox.txt里。定期清理。

RSS阅读器:订阅大部分需要的内容,将信息归到一处,统一处理。比如你喜欢豆瓣知乎的内容,你可以订阅豆瓣一刻和知乎日报,而不用下载单独的APP。每天定时阅读和清理,即使没读完也要清零,不要累积未读条目(控制订阅的数量)。

电脑:用来看视频,做搜索工作。查找和下载需要的资料以及买书。

Pocket:上面大部分信息的流向地,等待进一步处理。用来收集上网时搜索或浏览的信息,RSS阅读器里发现的优质内容。

 

优秀的的信息源

后面几个网站偏社交化,需要挖掘和筛选优质信息。还有一些公众号、博客和新闻类网站,类别杂乱就不写出了。有时间再整理一下我订阅的RSS源。

 

Tips

  • 使用Google搜索,学会使用搜索引擎。
  • 优先选择书。
  • 优先选择英文媒体和网站。
  • 优先选择专业权威的信息来源。

 

 

Tkinter效果总结

Tkinter是Python附带的标准GUI工具包。它易于使用,但支持的部件较少。其他的比较有名的GUI工具包有wxPytohn,PyQt,PyGTK。下面总结了一些常用的GUI效果的实现方式。

 

Splash

Splash就是程序启动界面(主界面显示前的界面),比如手机APP打开后显示的LOGO画面(大多是广告),splash通常可用来放品牌logo或公司信息。

# import Tkinter
def splash():
    root = Tkinter.Tk()
    root.overrideredirect(True)
    width = root.winfo_screenwidth()
    height = root.winfo_screenheight()
    root.geometry('%dx%d+%d+%d' % (width*0.8, height*0.8,
                                   width*0.1, height*0.1))
    # 保存成gif格式。(但是没法显示动图,待解决。)
    image_file = "hi.gif"
    #assert os.path.exists(image_file)
    # use Tkinter's PhotoImage for .gif files
    image = Tkinter.PhotoImage(file=image_file)
    canvas = Tkinter.Canvas(root, height=height*0.8, 
                            width=width*0.8, bg="white")
    canvas.create_image(width*0.8/2, height*0.8/2, image=image)
    canvas.pack()
    # 设置splash显示的时间,单位是毫秒(milliseconds)
    root.after(4000, root.destroy)
    root.mainloop()

在主程序启动前调用splash()

splash效果

某软件的启动界面(splash)

 

无边框

只需要加入下面一行代码。

root.overrideredirect(True)

 

无边框效果

某个简陋的无边框软件……

 

 

 多标签面板

首先定义一个类,建议把它保存成单独的文件,然后把它放在系统环境变量里,这样可以方便调用。

from Tkinter import *
class Notebook(object):
    def __init__(self, master, side=LEFT):
        self.active_fr = None
        self.count = 0
        self.choice = IntVar(0)
        if side in (TOP, BOTTOM): self.side = LEFT
        else: self.side = TOP
        self.rb_fr = Frame(master, borderwidth=2, relief=RIDGE)
        self.rb_fr.pack(side=side, fill=BOTH)
        self.screen_fr = Frame(master, borderwidth=2, relief=RIDGE)
        self.screen_fr.pack(fill=BOTH)
 
    def __call__(self):
        return self.screen_fr
 
    def add_screen(self, fr, title):
        b = Radiobutton(self.rb_fr, text=title, indicatoron=0,
                        variable=self.choice, value=self.count,
                        command=lambda: self.display(fr))
        b.pack(fill=BOTH, side=self.side)
        if not self.active_fr:
             fr.pack(fill=BOTH, expand=1)
             self.active_fr = fr
        self.count += 1
 
    def display(self, fr):
        self.active_fr.forget()
        fr.pack(fill=BOTH, expand=1)
        self.active_fr = fr

下面是一个示例:

from Tkinter import *
from notebook import * # 如果notebook类在同一个文件就省去这行
# 生成一个顶层窗口,放入notebook
root = Tk()
root.geometry("400x400+500+300")
nb = Notebook(root, TOP) # 标签的位置可选:LEFT、TOP

# 每一个框架(Frame)代表一个标签面板
f1 = Frame(nb())
b1 = Button(f1, text="Button 1")
e1 = Entry(f1)

b1.pack(fill=BOTH, expand=1)
e1.pack(fill=BOTH, expand=1)
# 在将框架添加到记事本之前,先把部件放进去
# 不要单独放入框架

f2 = Frame(nb())
b2 = Button(f2, text="Button 2")
iconImage = Tkinter.PhotoImage(master=f2, data=icon)
Tkinter.Button(image=iconImage).pack()
b3 = Button(f2, image=iconImage)
 
b2.pack(fill=BOTH, expand=1)
b3.pack(fill=BOTH, expand=1)

f3 = Frame(nb())
lb1 = Label(f3, text="欢迎来到标签3...")

lb1.pack()
# 添加标签面板和面板名称
nb.add_screen(f1, "标签 1") 
nb.add_screen(f2, "标签 2") 
nb.add_screen(f3, "标签 3")

root.mainloop() 

标签面板示例

 

 

新手备注

在Python中使用文件时要把文件的完整路径写出来。或者在调用前使用os模块的chdir函数。

import os
os.chdir("C:\photos\")
os.chdir(os.getcwd()) # better

如果要发布给别人用,那就使用相对路径。使用下面这个函数包裹你要使用的文件路径(相对于程序根目录的路径),这样即使你换了文件夹,文件还是会得到正确的调用。

import os
import sys

def resource_path(relative_path):
    """
    定义一个读取相对路径的函数
    1、引用文件用如下格式:resource_path('resources/complete.wav')
    你只需要填入相对于程序根目录的文件路径。
    2、打包exe的说明:在生成的.spec文件exe = EXE()中加入下面这行:
    [('resources/complete.wav',r'C:\Users\Administrator\resources\complete.wav','music'),],
    列表中的三项分别为代码中的引用,文件实际的地址,类别
    这样打包后文件会被正确引用。
    """
    if hasattr(sys, "_MEIPASS"):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

 

注:标签面板的代码来自《Python Cookbook》

如何获得优质的睡眠?

书籍信息

书名:Powerful Sleep – Secrets of the Inner Sleep Clock
译名:有效睡眠 内在睡眠时钟的奥秘
作者:Kacper M. Postawski
译者:Jude
一句话介绍:关于睡眠的是什么、为什么以及怎么办?

 

我看

作者很啰嗦,废话很多,很多东西一再的重复。所以,对于想提高睡眠质量的人来说,只看我的总结就够了。(注:下面的内容不全是书里面的。)

 

基本概念

睡眠周期

睡眠周期

特点:深度睡眠的时长决定我们的睡眠质量;睡眠是逐渐变得越来越浅的。

 

体温(生理)节律

 

体温节律


特点:体温和人的身体疲劳度成反比。体温升高时,人会感觉兴奋和有活力;体温降低时,人会感觉困倦和疲劳。午后会有短暂的体温下降,夜间开始稳定下降。

 

褪黑激素

褪黑激素是松果状腺和视网膜里激素的统称。褪黑激素的功能是让我们睡觉并且在睡觉时恢复身体精力。如果你的褪黑激素含量太高,就会感到困倦,精力不足。当人身处黑暗之时,褪黑激素开始分泌。一旦眼睛接触不到阳光,褪黑激素含量就开始升高。褪黑激素含量和白天接触阳光的水平密切相关。

特点:褪黑激素含量和疲劳程度成正比,和接触的光量成反比。

 

从上面的概念我们可以知道:

  1. 在深度睡眠起床会很困难,起床后会感到疲劳和困倦。在睡眠周期的末期(REM)醒来,会让你感觉精神饱满。所以尝试调整闹钟(早起或晚起,以20分钟为单位)找到自己的REM时间,或是使用睡眠周期闹钟(比如iOS下的Sleep Cycle)。
  2. 体温升高会让人感觉精神饱满,所以起床后接触阳光,适量活动,可以提高精神。白天多晒太阳可以降低褪黑激素的含量,并且会减缓体温降低。体育锻炼同样可以减轻紧张感和压力感。作为过多脑力活动的中和剂。

因此:

  • 如果生活是里缺乏活动和光照,那么感到疲劳并不是因为缺少睡眠。而是说明你该运动了。同时要多晒晒太阳。
  • 起床困难很可能不是懒病作怪,或是意志力薄弱,而是因为闹钟没在合适的时间响起。

 

那么,怎么更好的睡觉?

健康的生活方式

  • 早晨起床后喝一杯水,白天喝大量的水(但睡前一小时不要喝太多水)。
  • 锻炼的最佳时间是清晨,最好是室外运动(接触阳光),这可以快速的提高体温。
  • 烟、酒、咖啡因、安眠药都会对睡眠带来负面影响。
  • 适量的运动(但避免在睡前三个小时锻炼。),适量的接触阳光。
  • 含有大量糖和碳水化合物的食物和会产生气体和难消化的食物会加重睡眠时的消化负担。
  • 趴着睡不利于呼吸。
  • 正确面对生活压力,不把它带进卧室。

 

小睡

规律的午睡可以增加白天的精力。但时间不超过45分钟,避免进入深度睡眠。午睡后如果感到疲劳,那就去晒晒太阳,活动活动。就个人经验来看,要不要午睡是因人而异的。

 

建立一个良好的睡眠环境

  • 除了睡觉和做爱,不要在床上做其他事。
  • 安静凉爽黑暗的房间更容易使人入睡。
  • 尽量买最好的床上用品。

 

养成良好的睡眠习惯

  • 保持稳定的睡眠作息,固定睡觉和起床的时间,不要周末补觉,也不要睡回笼觉。
  • 不要在睡前接触电子设备(很容易让你忘记时间,光刺激也会让你变得兴奋)。
  • 睡前洗个热水澡有利于降低体温,但要在睡前一小时进行。
  • 晚饭少吃,减轻睡眠时的消化负担,睡前不要喝大量的水。
  • 睡觉时间在6~8个小时为佳。

 

更快的入睡

  • 固定睡前的事项,不做计划外的事情
  • 翻身的时候要轻柔缓慢,同时做个深呼吸。
  • 思维规律是:一旦集中思考,想法源源不断。解决方法很简单,集中注意力去想轻松的东西,不要尝试逼自己睡着。想象轻松愉快的事情,你的目标不是睡觉,而是放松。
  • 尝试减缓思维速度,不断的慢速重放自己的某个想法。
  • 如果躺在床上超过三十分钟没有睡着,那就起来去做其他的事。直到困意再次来袭。

 

如果你住在宿舍,你可以尝试:

  • 和室友沟通,协调好噪音控制和关灯时间
  • 备好耳塞,眼罩或床帘
  • 搬宿舍或租房子

 

拥有优质睡眠的一天是这样的:

  • 起床,通过调整或使用软件使闹钟在REM阶段响起。
  • 早晨起床后,及时接触阳光,适当的运动。
  • 白天喝足量的水,三餐适量,不吃难消化的食物。
  • 晚上睡觉前三小时不吃食物,不剧烈运动,睡觉一小时前可以洗个热水澡。
  • 上床后,不做其他的事情,如果不做爱的话,就开始放松身体和呼吸,直到入睡。

简单来说就是:好的睡眠 = 运动 + 阳光 + 合理饮食 + 健康的生活方式

 

放松的方法:

  • 放松身体法:从头顶开始感受并放松身体的每一个部位。
  • 呼吸法:注意力放在hu
  • 冥想:冥想的方式有很多种,我也不是很熟悉,就不做介绍了。
  • 白噪和自然声:有很多APP提供了这样的音频,比如TaoMix。

 

一些有益的尝试:

  • 测试自己的体温周期(使用体温计),相应的安排自己的日常活动。
  • 测试自己的睡眠周期(使用Sleep CycleAPP),找到合适的睡眠节奏。

 

作者在书里提到了他做事情的方法。他说不论做什么事情,都有三个基本步骤:

  1. 掌握正确的信息
  2. 制定正确的计划
  3. 实际的执行

所以这篇文章算是第一步,剩下的就靠你自己了。

AutoHotkey——进阶应用与思考

简单易学的AHK

作为一门脚本语言,本来可以按照通常的学习路径来学习:变量、控制语句、函数……但是因为它本身的特点,对于只想来满足自己的某些需求的人来说,也可以只从需求出发,学习需要的内容。同时,学习AHK可以得到很及时的反馈,让你很容易从中获得一些成就感。相比其他语言,你要做出一个GUI界面,恐怕需要一段时间的学习,当其他人还在控制台的黑窗口里接受用户输入的时候,使用AHK的你只需要一个MsgBox或是InputBox就可以弹出窗口来实现用户交互了。

 

 

脚本精选

(大部分来自帮助文档及官方论坛)

小众软件 AutoHotkey 专区:提供了一些贴合国内实际的脚本。

AHK 快餐店系列索引:包含在上一篇文末推荐的懒人包里。

1 Hour Software (1 小时软件) — 作者: skrommel: 这是大量有用的脚本集合, 带有简短的说明和截图地专业呈现出来.

Titan 的脚本: 这个集合包含许多有用的脚本, 例如:
1) XML 阅读器/写入器: 通过简单的界面来获取和写入 XML 文件中的值, 就像 JavaScript.
2) 锚: 让 GUI 控件紧贴可调整大小的 GUI 窗口的右边或底部的边缘.
3) 函数: 包装函数的集合, 其中的每个函数是从含有 OutputVar 的 AutoHotkey 命令包装而成.
4) 天气: 在托盘菜单中显示当前天气状况或在富 GUI 中显示预报。

Toralf 的脚本: 这个集合包含了有用的脚本, 例如:
1) AHK Window Info: 显示窗口, 控件等等的信息.
2) 电子节目指南: 浏览您当地的电视节目/时间表 (支持多个国家).
3) 自动语法整理器: 改变脚本中命令的缩进和大小写形式以使它使用一致的格式/风格。

Sean 的脚本: 包含有用的脚本, 例如:
1) 网络下载/上传流量计: 在小且置顶的进度条中显示网络下载/上传的流量 (单位为 KB).
2) StdoutToVar: 重定向命令或应用程序的输入到脚本的变量中.
3) 截取屏幕的矩形区域: 用来截取部分屏幕并保存为文件 (BMP/JPG/PNG/GIF/TIF) 的函数. 它也能截取透明窗口和鼠标指针.
4) 颜色放大器/选取器: 放大光标周围的区域, 允许选取单个像素并识别它的颜色.
5) 嵌入 Internet Explorer 控件: 嵌入 MSIE 控件到脚本的 GUI 窗口. 此控件能进行网页显示或其他兼容于浏览器的功能。

Using Keyboard Numpad as a Mouse (把小键盘作为鼠标使用) — 作者: deguix
: 此脚本用您的键盘来实现鼠标操作, 几乎相当于真正的鼠标 (在一些任务中甚至更方便). 它支持多达五个鼠标按钮和鼠标滚轮的转动. 它还具有能自定义移动速度, 加速和 “轴反转” 的特点。

SKAN 的 N 个技巧提示
:包含实实用效果和常用功能的示例代码和技术。

论坛的 Scripts & Functions 版块
: 这是一个近 1000 个可运行脚本和函数的可搜索集合. 由 AutoHotkey 用户建立和维护, 这个存档每天都在增长和改进。

Rosetta Code AutoHotkey Category
:演示了许多独辟蹊径的用法,很有趣。

JGPaiva’s AutoHotkey Coding Snacks
:众多简单实用的小工具。

一键登录网站(以登录淘宝为例):因为淘宝现在使用账号密码登录需要点击一下右上角的按钮,所以先使用上面那个脚本获取屏幕坐标,然后根据自身情况调整参数就可以了。其他网站需要作相应的调整。

;获取鼠标坐标,用于下面的登录事件
:://xy::
MouseGetPos, xpos, ypos 
Msgbox, The cursor is at X%xpos% Y%ypos%. 
return

;一键登录淘宝
:://tb::
Run https://login.taobao.com
WinWaitActive 淘宝网 - 淘!我喜欢 - Google Chrome
sleep 5000 ;视网速调整等待的时间(毫秒)
Click 1410, 378 ;不同分辨率的屏幕坐标不同,可使用上面的脚本获取屏幕坐标
sleep 100
send ^{Space} ;设置英文输入
Send {Tab}1515******* ;替换你的用户名
Send {Tab}****** ;替换你的密码
MouseClickDrag, left, 1645, 634, 1428, 634 ;拖动验证滑块
Send {Enter}
return

 

AHK和Python的比较(GUI)

和Python相比,AHK更像是搭积木。你可以用极少的入门知识和查阅帮助文档来制作自己想要的GUI工具。以一个计时器为例,我同时用Python(Tkinter)和Autohotkey写了两个简单的计时器。用户输入一个时间数(分钟),计时结束后会弹窗提示时间到了。下面是各自的代码

Python:

import tkMessageBox
from time import sleep
from Tkinter import Tk, Entry, Label, Button, X, Y

def time_counter():
    time = Entry.get(time_et)
    root.destroy()
    sleep(int(time) * 60)
    label = tkMessageBox.showinfo("Attention!", "Time Over!")

root = Tk()
root.title("Counter")
prompt_lb = Label(root, text="Enter a number(mintutes):")
time_et = Entry(root)
start_bt = Button(root, text="Start", command=time_counter)
prompt_lb.pack()
time_et.pack()
start_bt.pack()

root.mainloop()

运行结果:

python运行效果

为了避免出现控制台窗口弹出,要把文件保存成.pyw

Python运行效果

因为关闭了主窗口(root),消息窗口又在左边新建了一个空白窗口

 

AutoHotkey:

InputBox UserInput, Counter, Enter a number(minutes):
IfEqual, Errorlevel, 0
{   
    sleep UserInput * 60000
    SoundBeep
    MsgBox Time Over!
}
return

 

运行结果:

ahk运行效果

默认的窗口布局很美观

ahk运行效果

 

代码的行数倒是次要,从学习量来说,后者大部分函数都帮你封装好了,只要你填几个所需的值就搞定了,而且默认的尺寸位置也比前者美观的多。在转换成exe文件上,Autohotkey也很方便。Autohotkey里甚至还有现成的splash函数。当然,这只是在简单的应用上,复杂的应用AHK就未必能很好的胜任了。

不同语言都有各自的优缺点。但对于使用Windows系统,不想花费大量精力学习编程,而又想制作些小工具满足日常需求的人,简单易学的Autohotkey是个好选择(说不定你对编程的兴趣就这样产生了)。

AutoHotkey——自动化你的生活

文明通过增加我们不假思索就能完成的的重要操作的数目而取得进步。
——阿尔弗雷德 · 诺斯 · 怀特海

ahk_logo

 

和上面那句话相对应的,我们应该尽量减少重复的没有价值的操作,或是降低这种操作的成本。为了这个念头,我们使用makefile来编译程序,学习各种编程语言来减少重复劳动,在开发软件时加入快捷键支持。根据二八原则,我们在避免重复劳动上投入20%的精力可以为我们带来80%的效率提升。我们应该把这20%的时间和精力用来学习AutoHotkey。

AutoHotkey是一款免费的、Windows平台下开放源代码的热键脚本语言。从名字可以看出来,它可以用来设置热键。但是因为它是一门脚本语言,所以就不止设置快捷键那么简单了。帮助文档这样介绍它的功能:

  • 通过发送键盘键击和鼠标点击自动化几乎所有的操作。您可以手工编写宏或者使用宏录制器。
  • 为键盘,游戏杆和鼠标创建热键。几乎任何按键、按钮或组合键都可以设置为热键。
  • 在您键入缩写时扩展缩写。例如,键入 “btw” 能自动地生成 “by the way”。
  • 创建自定义的数据输入表格、用户界面和菜单栏。详见图形用户界面。
  • 重新映射您键盘、游戏杆和鼠标上的按键和按钮。
  • 通过WinLIRC客户端脚本对手执遥控器的信号作出反应。
  • 运行现有的 AutoIt v2 脚本,并用新功能增强它们。
  • 将任何的脚本转换为EXE文件,使其在没有安装 AutoHotkey 的计算机上也能运行。

很早就把它下载下来,却一直没有用。直到上次要用一个简易键盘来控制电脑的时候,才去学习了一下。这时才发现它真是太强大了。这个简单的教程会帮助你从实践出发快速的熟悉这门语言。建议你按照下面的学习步骤学习,不要遗漏每一项

 

最简流程示例

  1. www.autohotkey.com下载或点击这里下载(AutoHotkey1.1),然后安装。
  2. 使用编辑器或记事本新建一个脚本文件,格式为.ahk,编码格式为UTF-8
  3. 编辑脚本,在脚本中写入下面这行:
     #h::Run www.greyli.com
  4. 保存后双击运行。
  5. 这时按下Windows键和h键就会打开我的博客。

在上面这个命令中,符号#表示Windows键,#后紧跟着h表示组合键。符号::用来分隔热键和命令(左边是热键,右边是命令)。Run命令用来打开一个文件或网页,中间空一个空格。

 

基本术语

  • 脚本/宏(Script):你要编辑的一个格式后缀为.ahk的纯文本文件(编码格式为UTF-8)。你把代码写进这个脚本里,双击执行后,你的热键就生效了。
  • 热键(hotkey):用来触发操作的按键或组合键,也就是快捷键。
  • 命令:你为某个热键指定的一个动作(action),比如打开程序,打开网页等。
  • 热字串(hotstring):类似于热键,当你输入热字串并按下回车或空格后触发相应的命令。用过老型号的黑莓的人对热键和热字串一定不陌生。
  • 宏录制器(AutoScriptWriter):可以录制回放你的操作的工具,非常适合新手入门学习。目前AutoHotke_L版本已去除,详情请见这里
  • 多行热键:当通过热键触发多个命令时,这时的格式是命令从第二行开始,每个命令一行,最后以占据一行的return结束。
#h::
RunWait Notepad
Msgbox Goodbye!
return
  • 参数:自定义的数值,传递给命令执行,比如sleep后面的时间数就是参数。参数与命令通过空格或逗号隔开,多个参数使用逗号隔开。
  • 注释(comment):注释是用来对你的代码进行解释和说明的文字。单行的注释以;开头,多行注释用/**/括住。
;这是单行注释
/* 这里 
是 
多行注释 */

 

常用命令

Run

用来打开一个程序、文档、网页或者快捷方式

Send

发送键击或一段字符

Msgbox

消息窗口

Inputbox

用户输入窗口

Sleep

脚本等待指定的时间,然后执行下面的命令。后面接时间参数(毫秒)。

Click

在指定的位置点击鼠标

 

常用符号

#

Windows

^

Control

!

Alt

+

Shift

&

用来连接两个按键组成组合键(使用除了上面四个按键外)

<和>

分别表示成对按键中左边和右边的的按键

Tab和Enter等

没有特殊符号。使用Send命令时用大括号括起来以和字符区分开。

注:前四个为修饰键,可以和其他按键直接相连(比如写成#a),其他按键要做修饰键时需要用&连接(比如a&b)。

 

基础应用示例

为常用软件、网站设置快捷键

按下Windows和k打开Notepad++:

#k::Run D:\Program Files (x86)\Notepad++\notepad++.exe

按下Windows和h,或输入hui后按下回车或空格(推荐使用空格)可以打开我的博客:

#h::Run www.greyli.com
;下面使用热字串运行同样的命令,这时要采用多行分隔
::hui:: 
Run www.greyli.com
return

按下Alt和m打开一组网页和程序:

!m::
Run www.google.com
Run http://fm.douban.com
Run D:\Program Files (x86)\Notepad++\notepad++.exe
return

建议用热字串来启动常用的程序,把快捷键留给常用的操作。为了防止打字时冲突可以在热字串前加特定的符号,比如斜线。使用热字串启动命令要使用多行热键格式。

 

用热键或热字串保存常用文字

按下Alt和k发送我的签名:

!k::
Send Sincerely,{Enter}Richard Hui.
return

写下@g后按下空格或回车,自动转换为我的邮箱

::@g::withlihui@gmail.com

按下Alt键和g后填入我的账户和密码并登录(先把光标点在第一个输入框里)。

!g::
Send withlihui@qq.com {Tab}mimashi123 {Enter}
return

(下一篇会有一个一键登录网站的示例)

 

Tips与建议

  • 命令不区分大小写。
  • 所有的符号均为英文符号
  • 一个脚本里可以写入多个热键。
  • 发送的字符里包含的按键前要有一个空格。
  • 不分配热键的命令将从上往下依次执行。
  • 修改后的脚本要重新运行(双击执行脚本文件)才能生效。
  • 开机运行脚本:把脚本的快捷方式放到启动文件夹(开始菜单—所有程序—启动)
  • 中文支持,安装Autohotkey_L(1.1)版本。
  • 编辑器推荐:SciTE4AutoHotkey

更有趣和复杂的的进阶应用请见下一篇。

 

继续前进

你可以从这些地方继续学习:

写作的乐趣

到现在为止,已经在这个博客写了42篇文章了(the Answer to Life, the Universe and Everything …)。虽然离100篇的目标还差的远,但我已经收获了很多东西,而且深刻的体会到写作的乐趣了。 

之所以现在才体会到写作的乐趣,要归功于我的中学教育。那些写作文的经历让我对写作(写作文)越来越讨厌,每一次都是煎熬。慢慢地,甚至对自己的写作能力产生了怀疑。作文题常常是一些空洞无聊的话题,甚至是自己厌恶不赞同的观点,不仅要写出800字来,最后还要接受一个保守无知的家伙的评判。这评判要先看你的书写,再看你的字数,然后看你的用词和分段(就是看你有没有用什么“高级词汇”,段落划分是不是“标准格式”)。你说你见解独到?抱歉,独不独到谁改卷子谁说了算。假如你批判政党和国家,噢,他们说你思想不积极,那样得不到高分。戴着镣铐的时候,我只想批判和咒骂,谁想跳舞呢?

大多数人的爱好和兴趣就是这样被学校毁掉的。它让你用你喜欢的东西去做你讨厌的事情,让你去争名次拿奖金。胜利的你开始感到厌倦,失败的你开始怀疑自己的能力。多少年后,老朋友见面问起,你就说你没有天赋,得了吧。假如你不是还被蒙在鼓里的话,那就是在为自己的懒惰和懦弱找借口。

没有天赋是大家最常用来掩盖自己懒惰的借口,没有之一。类似的借口还有脑子不好使,笨,不适合我。事实上,只要你会说话能思考,你就会写作。把你的思想用话说出来,和用笔写出来没多大区别。你可以尝试用笔记下你对某件事情的看法,稍加整理和润色,就成了一篇文章。你嫌自己写的不好?可谁生下来就会跑呢?再说了,优秀的写作需要优秀的思考和优秀的文笔,这需要大量的阅读、思考和积累,但平庸的文章也有存在的意义,就像普通人也可以有尊严的生活在这个世界上一样。

你问写作有什么好处?大约有一打。

写作整理你的思想。当你写作的时候,常常是不知不觉就把自己的思想梳理了一遍。你不想把一堆浆糊抹在纸上和屏幕上,你开始小心翼翼的整理和分段。这有助于你养成整理分类的爱好,你的爱好逐渐扩展到了书桌和房间里,你的家人或是室友会感到开心的。

写作促进你思考,完善你的想法。你本来想抱怨一下你家门前的垃圾站常常没有人来清理,村民又把垃圾扔得到处都是。思考了一下,你又谈了基层政府的落后和低效率,痛斥农民的素质低下,不守公德。写完觉得还少了点什么,所以你去了解了西方国家的政府制度,又找来费孝通的《乡土中国》,打算研究一下中国传统社会的变迁(一开始你只是想发个牢骚的)……

写作逼迫你学习更多知识。当你写作时,你不得不去了解一些陌生的概念,陌生的概念里又夹杂着更多的陌生概念,你就这样掉进了超链接的迷宫,等你惊讶时间的流逝后重新回到文章里,你发现你又有了新的想法。

写作锻炼你的逻辑。当你说话的时候,你的大脑常常没时间来照顾你的逻辑,但一旦文字落到纸上,掉进发光的屏幕里,你就开始观察你的逻辑。你和自己的观点搏斗,这让你的思想和逻辑更强壮。

写作帮助你了解自己。你在写作时,你使用的文字,不经意间流露的观点和想法,这些都在反映出你自己的特点。当你面对自己写下来的抱怨和牢骚时,你开始以客观的视角来反省自己。这也有助于你排解不良情绪,清理心里的疑惑和误解,缓解不必要的压力。

高中时读了很多关于写作的书,但并没有什么进步,现在看来,主要是因为读的太少,思考太少,写的也太少。虽然现在词汇量很低,语法不严谨。但我想只要保持阅读和写作,进步总会发生的。

写作可以是发泄,可以是建造,可以是和解,也可以是飞翔。当你虔诚的写下去,它会给你你想要的东西。

想起小时候,有一次写作文,作文题是续写一个故事(关于小兔子,小老虎之类的森林故事),写满作文格子后,我又把整张试卷几乎所有的空白都填满了。我现在差不多恢复了小学时的写作状态,真好:)