啃一口 “苹果”

前段时间去香港拎回一套 Mac Mini + Apple Wireless Keyboard + Magic Mouse。由于苹果的显示器贵的难以承受,所以另外单独配了一台 Dell 2209WA 液显。

关于 Mac 的赞美之词太多太多了,因此不论我如何穷尽其词,都不会对提高 Mac 的销售起任何影响。我还是省点口水吧,配图说 Mac Mini 体验。

Mac Mini

也许是期望太高,手捧 Mac Mini 真机的那刻没有预期中的激动 :)

它非常安静,真的,夜深人静的时候,除了键盘敲击的声音和耳鸣之外,你不会注意到它的存在。

但是它的外置电源很重,体重快和主机一样重了。并且边缘没打磨,有些割手,我对这种设计很不理解。

http://apple.com.cn/macmini/images/design_hero_20091020.jpg http://apple.com.cn/macmini/images/design_threequarter_20091020.jpg

Apple Wireless Keyboard

苹果的这款蓝牙键盘非常简约、耐看,有那么一刻,我觉得 HKD 5xx 就是捡到便宜了。

无线键盘最怕电池不经用,新款 Apple Wireless Keyboard 设计的非常体贴:键盘在不使用时会自动断电,只要一开始打字,键盘即可开通电源开始工作,因此用户不再需要关闭键盘电源以节省电量。

这款无线键盘目前没有带数字键盘的版本,算是个小小的遗憾吧。

由于设计偏向外观的时尚性,按键表面是平的,并不是常见的弧面,敲击手感上略有欠缺。

http://apple.com.cn/keyboard/images/hero_1_20091020.jpg http://apple.com.cn/keyboard/images/hero_2_20091020.jpg

Magic Mouse

买之前我并不知道 Magic Mouse 是一款很酷的鼠标,我以为就是一款外观时尚一点的蓝牙单键鼠标。我对苹果鼠标的理解还停留在上个世纪,完全没跟上 “麦粉” 的队伍。

Magic Mouse 是一款双键 “手势” 鼠标。它非常特别,完全超越我以前见过的任何 “很酷” 的鼠标。第一天我不会用,第二天我才发现 HKD 5xx 那就是捡到便宜了。

缺点是:除了双键外,由于表面是 “手势” 触摸操作,所以完全没有手感,你需要适应一段时间,熟悉它的脾气。

http://apple.com.cn/magicmouse/images/wireless_20091020.jpg http://apple.com.cn/magicmouse/images/gestures_list_20091020.jpg

Mac OS X (Snow Leopard)

作为一个程序员,这个是我关注的特色菜。

第一感觉和 Wenshu 的体会一样,使用 Windows、Ubuntu 多年的快捷键手感完全失灵,不得不重新熟悉 Mac 的快捷键。工作 PC 系统是 Windows,我有些担心会不会变成 “邯郸学步”,Windows 快捷键也失去手感了。。。

除了快捷键,我暂时没有在使用上碰到任何障碍,我感觉 Windows 7 依然没有超越 Mac OS X,界面设计和易用性上逊上一筹。Windows 7 设计风格有些偏向花哨了,像我现在奔三的年纪已经不太能一眼看清 Windows 7 窗口界面上的重点。

2000 年 Mac OS 改版后,Mac OS X 实际上是一款基于混合内核的 Unix,支持 Linux、Unix 上的大部分操作。权限设定也和 Linux 一样,如果感觉 Ubuntu 在易用性上仍然不能满足需求,可以试试 Mac,切换会非常的平滑 — 以前积累的 Linux 控制台操作习惯和经验在 Mac OS X 下依然有效。

Mac OS X 也由于其 Unix 血统吸引了大批的 Linux、Unix 开发者投奔。

想要把 Mac OS X 整成 Windows 7 那样的样式?放弃吧,Mac OS X 界面的定制性是相当有限的。苹果认为 GUI 界面设计是他们考虑的事情,不是用户。所以他们提供了一套 “最好的”(不管你是不是也这么认为)风格。

Mac OS X 操作简单的另一个原因是:可配置选项非常少,大部分 Mac 下的软件配置页面都很简洁,非常优雅。

http://apple.com.cn/macosx/refinements/images/intro_finder_20090824.jpg

整体感觉

“真正的开箱即用”:

  • 把数据线、电源线接好,开机
  • 进入 OS 界面后,开始自动搜索蓝牙键盘、鼠标
  • 开启键盘、鼠标电源后,自动进行配对(期间提示用键盘输入配对字符串)
  • 进入初始设置向导
  • 常用的软件都已经准备好,开始随心所欲的使用蓝牙键盘、鼠标操作 Mac

这种无缝的体验在苹果这样的封闭体系里能很容易享受到。

给个买 Mac 的理由

这里是 “时光机器” (Time Machine) 的演示 ,我看的时候被 “电” 了一下,相当便捷易用、富有想象力,把复杂的备份数据以如此直观的方式呈现。

http://apple.com.cn/macosx/what-is-macosx/images/timemachine_hero20090608.png
2010-04-13, Tuesday 23:09 PM | 4 comments | 1 pingback | Tags: ,

WIN32 逆向工程小记

  • IDA F5 功能生成的 C 代码只能作参考之用, 对于复杂的逻辑, 直接拿来用会被它带进沟里;
  • OllyDbg 应付应用层软件非常有效;
  • C/S 软件通常会采用好几轮的手段对收发的数据进行加密 (最后一轮也是最关键的一轮, 可能会采用变异的标准加密算法)

如果仅仅是为了使用算法, 且算法比较复杂, 最省力的方法当属直接将算法相关函数的汇编代码提取出来:

对于使用非 __cdecl 调用约定的算法函数 (比如 __thiscall / __fastcall / __stdcall), 情况稍微复杂些. 大部分非 C/C++ 编程语言使用 __cdecl 约定来调用动态链接库暴露的 C 函数.

一个解决方法是, 修改 .asm 汇编代码, 直接把调用约定改成 __cdecl.

另外一个方法是: 再用 C 代码对 .asm 编译出的 DLL 封装一层, 生成一个使用 __cdecl 约定的新的 DLL.

如果用 Visual C++ 6.0 编译封装 DLL, 并恰巧碰上 __thiscall, 情况又更复杂些. VC++ 6.0 默认只支持类成员函数用 __thiscall 方式传递 this 指针, 对于 extern “C” 函数使用 __thiscall 修饰将报错.

解决方法是: 改用 VC 7.0 以上 (不要指望 GCC/MinGW, 它们对 __thiscall 的含义有不同的解释). 另外一个解决方法是: 在 VC 6.0 中使用内联汇编调用 __thiscall 约定的函数:

// __thiscall 使用 ecx 寄存器, 而不是压栈方式传递第一个参数
__asm {
        mov ecx, first_param;
        call YOUR_THISCALL_FUNC;
}
2010-03-28, Sunday 10:03 AM | 0 comments | 0 pingbacks | Tags:

Subversion 1.7 — CVCSDVCS 开始走向融合

根据 Subversion 团队的乐观估计, 跳票了大半年的 1.7 版本很有可能在 2010 年上半年发布. 自从 SVN 被 Apache 招到麾下, 代码更新速度明显呈加速趋势.

1.7 相对 1.6 的变化相当大, 我比较关注的新特性包括: 新的 HTTPv2 协议, 期待已久的永久删除, 下一代工作副本 (WC-NG)

新的 HTTPv2 协议

如果你曾经对比过 svnservemod_svn 不同部署方式下的访问速度, 会明显感觉到基于 HTTP WebDAV 协议效率不佳 (比 svn:// 协议至少慢上 4 倍).

效率低下最主要的因素:

  • HTTP 是无状态协议, 一次完整 Subversion 请求会被 mod_svn 拆分成几十甚至上百次独立 HTTP 请求.
  • mod_svn 严格遵循 HTTP WebDAV 协议规范, 包括一些导致效率低下, 而很少能用上的功能. Subversion 为了支持所有 WebDAV 客户端能对 SVN 库进行操作而导致性能降低, 实在是得不偿失 (很少有人放着 SVN 客户端不用, 却用 Windows Xp 的 “Web 文件夹” 来操作 Subversion 库).

Subversion 分别提出了相应的解决方案:

  • 异步多路复用的客户端 HTTPserf 将取代 neon 库成为默认选项, 某些情况下, 提速能达到 4 倍.
  • 新的 HTTPv2 协议, 专为性能和可读性打造, 放弃 “古老” / 复杂 / 低效的 DeltaV 标准.

期待已久的永久删除

1.7 之前的 Subversion 没有后悔药可以吃 — 一旦有成员上传了编译过程临时文件, 这些废料将伴随整个库的生存周期.

svn dump 过滤命令看似可以解决这个问题, 但实际上可操作性极差. 随着库的总大小增长, 永久删除文件的成本加速上升.

1.7 的 “Obliterate” 特性非常值得期待, 让某些误操作不再是整个团队的负担:

  • 支持 永久删除 特定文件的指定修订版本
  • 支持 永久删除 特定目录的指定修订版本
  • 支持 永久删除 特定文件的所有修订版本 (即让这个文件彻底消失)
  • 但是不支持永久删除 文件中的指定内容

下一代工作副本 (WC-NG)

这是 1.7 的重头戏, 这项特性意味着 SVN 在慢慢向 Git / Mercurial / BazaarDVCS 靠拢. WC-NG离线提交 和其它 DVCS 特性的基础工作, 我们会在未来的 2.0 版本中, 看到这一功能的优势被放大.

用户可见的主要影响包括:

  • 集中式的工作副本元数据 (1.6 及其以前版本, SVN 会在工作副本的每个目录下放置一个 .svn 文件夹存放元数据信息, 相当恶心)
  • 使用 SQLite 存储元数据
  • 解决文件名大小写的问题

就 1.7 版本而言, 还没有提供 离线提交 的功能. 离线提交 对开发人员的体验改善应该会相当明显, 期待 2.0 版本的到来.

正在考虑迁移到 DVCS?

我之前 翻译过的一篇论文, 主题是调查现在开源项目向 DVCS 迁移的趋势, 但截止到今天 (2010-03-12) 论文作者尚未发表对于企业应用中 DVCS 迁移成本和潜在风险的相关文章.

对于内部企业开发, 如果网络带宽 (内部或外部) 和磁盘响应速度不是瓶颈, 坚持 SVN 阵营是个不错的选择. 2.0 版本会更多的融入 DVCS 元素, 相信开发体验也将更友好.

2010-03-12, Friday 12:55 PM | 0 comments | 0 pingbacks | Tags: , , ,

(译) UoP 新生通知 — 关于学习过程的附加条款和部分修订

以下活动的缺省行为作以下改动 (除非在课程中和/或教员特别声明).

  1. Learning Journal
学习日志现在是每周一次. 每次学习日志在学习周的第一天开放, 最后一天关闭. 你将会收到课程安排的任务指示你使用学习日志. 只有最后一篇学习日志 (第八个学习周) 会被评分并将代表整个学期中学习日志这部分的成绩.
  1. Discussion Forum
Discussion Forum 发帖应按照 发帖准则 (见下文), 并依据 评价准则 进行评分 (见下文). 在学习周的第一天开放, 并于最后一天关闭 (其后不允许进行发帖). 你的分数将是其他同学对你的帖子评价的平均分.
  1. Assignments (Peer-Assessed Workshop Type)
在学习周的第一天开始提交作业, 截至到最后一天. 评审将在隔周进行, 从第一天到最后一天 (为了看到等待评审的作业, 你必须从上周选择进入作业页面). 每份作业最高分是 100 分 (90 分是对等评审对作业质量的最高分数, 另外 10 分由系统用来评估学生作为评审人的情况.) 同时, 如果你的作业因为某些原因未正确上传, 系统将允许你重新提交作业 (但是千万别上传多份作业). 所有的作业评审都是匿名进行的. 请注意每周你必须至少对 3 份作业进行对等评审.
  1. Self-Quiz
自测验每周只允许尝试 3 次. 第一和第二次至少间隔 24 小时, 第二和第三次间隔至少 30 分钟. 自测验将不再记录在你的成绩单, 它对你的成绩没有影响 (和以前一样). 你可以通过进入测验页面浏览你的成绩.

Discussion Forum 发帖准则

一个好的帖子应该是:

  1. 简炼的
  2. 有价值的
  3. 原创的 (正确的引用使用的参考资料)
  4. 丰富和促进讨论

Discussion Forum 评价准则

5 — 非常好, 简炼, 有价值, 远程, 丰富和促进对讨论论坛的贡献

4 — 好, 比较简炼, 算得上是原创. 缺少一些细节, 不然算得上是非常优秀的回帖

3 — 令人满意的见解和话题相关性. 还需要更多的信息和努力才能达到 4 分的评价

2 — 有限的见解和话题相关性. 要做更多的工作才能达到 3 分的评价

1 — 不合格的见解/话题相关性, 或问题回答错误. 显示出对问题的主题和原则缺乏或根本不了解.

2009-11-23, Monday 13:20 PM | 0 comments | 0 pingbacks | Tags:

(译) UoPeople 学习过程

总体情况

  1. 课程通常持续一个学期 (10 个星期). 每个学期有 8 个学习周, 1 周用来准备和参加期末考试, 还有 1 个星期留给教员改考卷, 最终评估和打分.
  2. 如在学习过程和日程中有涉及到时间, 均指的是 University of the People 时间 — (我们服务器所在地的时间, 美国中部时间). 在你的学习界面上会同时显示 University of the People 时间和你本地时间.
  3. 每个学习周从星期三和星期四之间的午夜 (更准确的说, 是星期四凌晨 00:05) 开始, 介绍于下个星期三 (23:55). 每个学习周的学习内容在新的学习周开课时提供. 你可以随时回顾完成的学习内容.
  4. 你将被分配在最多 20 个学生的小组或班级. 大部分时候你将和他们一起同侪学习. 你可以通过 General Information and Forums 访问 Classroom Forum, 在整个课程学习过程中, 你可以随时访问以便和其他同学一起讨论课程资料. 这个论坛是完全用于你和你的其他同学之间的讨论.
  5. Classroom Forum 外, 还有一个更大的, 开放的 Course Forum, 来自学习该课程的各学习组所有学生, 以及教员都会参与讨论和课程相关问题的疑问.
  6. 你的学习应该从 Learning Guide 开始, 它提供了一个指导你完成资料学习和每周任务的框架.

步骤

  1. 登录 University of the People 在线校园 (http://my.uopeople.org).
  2. “My Courses” (你被登记学习的课程) 选择你希望学习的课程.
  3. 检查 General Information and Forums 中的所有材料; 包括 SyllabusAnnouncements.
  4. 按照每个学习周的 Learning Guide 建议的顺序学习.
  5. Learning Journal 记录你的学习过程, 按照指示.
  6. 参与 ClassroomCourse Forums 的讨论 — 自愿的.
  7. 参与 Discussion Forum — 强制的.
  8. 提交每周作业
  9. 互相评审其他同学的作业.
  10. Self-Quiz.
  11. 8 个学习周, 每周均重复步骤 4-10.
  12. 准备 Final Exam.
  13. 参加 Final Exam.

补充信息

1) Learning Guide

Learning Guide 包括关于如何完成每周任务的指示. 指南由能丰富和修正当前参考资料的讲座或指定读物和活动来源参考列表.

阅读作业是文本形式的, 免费提供的电子资源, 比如开放式教科书, 文章, 教程和开放课件的链接, 以及所有许可协议允许我们使用的资料. 某些情况下, 可能会同时提供可选的动画, 情景教学和音频/视频演讲, 我们建议你, 如果网络速度允许的话可以访问.

在阅读和理解资料后, 你应该开始具体的学习任务. 通常有四种类型的活动; 大部分情况下每个学习周将包括其中一种.

2) Discussion Forum

使用 Discussion Forum 时, 你应该首先回复点击该作业链接后看到的讨论问题. 并且应该在星期天完成, 因为你也同时也需要阅读其他同学的帖子并回复他们 (最少还需要 3 篇回帖) — 这个活动将持续到学习周的结束. 你发表的帖子和回帖应该是经过深思熟虑和研究. 别发表 1 行回复, 比如 “我不同意 Joe”, 因为你发表的帖子将被其他同学通过对等评审过程进行评估 (你也将评估其他发帖人), 你回复的质量将反映在你的评分上.

3) Assignment

星期二, 你应该提交你的回答/方案作为每周作业. Assignment 功能允许你的方案被其他同学评估 (我们其实使用的是 Moodle 中 Workshop 特性). 你提交的每项作业都将另外两名同学负责按照指定的规则 (解释如何以及依据什么标准) 进行评估. 你同时也会收到另外两名同学的作业进行相同方式的评估. 这是匿名过程, 所以你不知道你评估的是谁的作业, 也不知道谁在评估你的作业. 系统会自动确保评价过程公正. 对等评价人打分超出平均值 (评价持续过高或过低) 将被提醒并要求调整他们的做法. 每个学生的课程作业部分的总分有一小部分来自该学生作为评价人的表现. 再提一次, 为了强调星期二提交作业的重要性, 你必须意识到这是对等评价过程开始的触发器, 这个过程必须在学习周结束时完成. 作业的方案在下一个学习周发布.

4) Learning Journal

你应该经常维护学习日志 (我们使用 Moodle 的在线作业功能), 用于记录你在学习周的学习进度. 日志用来帮助你组织, 巩固和记录你的想法, 活动和进度. 它同时用于你的教员了解你的学习情况和你在指定活动之外做了什么额外学业. 某些情况下, Learning Guide 会指示你如何通过学习日志完成某些任务.

使用简短, 易读的语句, 当 Learning Guide 中的主要任务和里程碑完成时, 你应该记录之 (比如当你完成了阅读, 每周作业等). 另外, 你应该在此记录从网上或图书馆查阅的额外资料, 写下一周的问题和争论点. 强力推荐每天都写日志. 学习日志将在课程结束时由你的教员评估并影响你的最终成绩.

5) Self-Quiz

这是一个自动测验, 由 多选题和判断题 组成. 测验的目标是允许你进行自我测试. 它会把结果和答案一并即时反馈给你. 这个测验不计分, 而且它不会对你的最终成绩有任何影响, 你只是通过回答问题的方式来评估你所学的知识. 只有你和你的教员会看到你的测验结果. 某些特殊课程, 你可能会收到关于何时开始以及如何使用测试工具的附加指导.

6) Final Exam

第 9 周主要是进行期末考试. 该周的主要任务是复习课程资料, 期末考试将在本学习周的最后一天 (第七天) 进行. 期末考试的问题类型和自测验是一样的. 期末考试将有时间和答题数限制.

相关主题

成绩

你的努力 将在学期末的最后一周 (第十周) 被评估和评价. 你的 Gradebook (你可以在课程页面中看到) 汇总了所有用来计算你最终课程成绩的评估组成部分. 只有你和你的 Instructor 能够浏览你的 Gradebook. 请注意教员有权利修改其他同学给你的打分, 如果他/她发现它们比较片面 (以任何方式) 并且未反映你作业的真实价值. 你可以参考 Student Handbook 了解成绩相关的政策.

抄袭

你提交的所有作业都会进行随机抽样检查, 防止抄袭. 你将会了解到大学为了防止这类事件所使用的过程和工具. 你必须了解什么是抄袭, 贸然违反的严重性, 以及大学会如何处理这类事件. 你可以参考 Student Handbook 了解抄袭相关的政策.

2009-11-23, Monday 13:02 PM | 0 comments | 1 pingback | Tags:

正式入学 UoPeople

这两天正式入学 UoPeople 在线虚拟大学, 开始熟悉 VLE (Virtual Learning Environment) 在线学习系统.

最初得知 UoPeople 还是今年 7 月份偶然之事. 当时时间充裕, 想了解些经济学方面的知识. 无意间得知很多欧美知名大学教授把教学视频无偿放在 Youtube 上, 我随即想到, 有没有人把这些资料都汇聚在一个单独网站上, 方便一些自学的人浏览这方面的资料?

很快便顺藤摸瓜式的了解到了 University of People (见: 网上人民大学. 对于我来说最具诱惑力的是它目前学杂费全免, 即使以后收取考试费, 也不会很高昂. 学习时间方面也非常灵活, 只要保证每个星期都积极参与讨论, 提交学习日志, 完成自我测验, 没有硬性的时间规定.

挺适合一边工作一边充电. 不过遗憾的是 UoPeople 暂时只提供了计算机科学 (Computer Science) 和工商管理 (Business Administration), 属于职业方向针对性较强的专业, 而我只是想入入经济学的门. 不过 BA 课程里面有很多关于经济学的基础课目, 倒是甚合我意.

让更多的人更方便的接受高等教育, 让教育不会成为少数人的特权. 这是 UoPeople 创办的宗旨, 我非常认同他们的出发点. 但是我对其宣传的 — 穷人的大学, 持保留意见. 根据我这几天的体验, 在线学习的同学以 IT 人士和学生居多, 他们大多是为了寻求业余充电或第二专业而来, 基本上都有自己的电脑, 居住的地方有宽带, 可以说都不是穷人. 在线学习本身就非常不方便, 很多沟通基本靠文字, 邮件/论坛, 低效而且阻碍交流, 如果没有一台自己能随时查阅资料的电脑, 去网吧学习并能保证进度基本上是 mission impossible, 换个角度讲, 真正穷到读不起大学的学生中, 很少有具备上网条件的.

我非常欣赏 Shai Reshef 在教育方面的努力, 反观我们国家在教育方面的拨款比例和连年不断地学术腐败, 我不由内心拔凉拔凉的. 学习过程费时, 费力, 还花不少钱 (邮寄材料, 上网费用, 以及今后可能的入学费和考试费), 拿不到学位证, 只能拿到一张全世界都不承认的结业证, 这对很多上不起大学的穷人来说, 还不如努力筹集第一年的学费然后半工半读.

UoPeople 宣传的穷人大学少不了有噱头的嫌疑, 将教育在线化, 社区化, 并尽早在该领域取得优势可能才是 Reshef 的真正想法. UoPeople 是探路急先锋, Cramster 则是未来主打歌.

2009-11-22, Sunday 16:52 PM | 2 comments | 0 pingbacks | Tags:

Ubuntu 新秀 — Linux Mint

失望的 KDE 4

没能经受住 KDE 4.3 轰轰烈烈宣传的诱惑, 忍不住在虚拟机装上了 Kubuntu. KDE 4 没能让我有耳目一新的感觉 — 眼花! 还是眼花… 十年前就是这个原因让我奔向 Gnome 阵营.

KDE 4 或许在技术上确有前瞻性, 毕竟相比 Gtk+, Qt 也不是吃干饭长大的 :-) 这让我想起 AMD 和 Intel 的 64 位 CPU 之争, AMD 率先以兼容 32bit x86 的 64 位技术 CPU 打开市场, 拷问用户的市场反应, Intel 不紧不慢, 两年后凭着品牌知名度, 技术积累, 用户积累, 细节关注很快赶上 AMD, 摇身成为 64 位虚拟技术的领导者, 又一次把 AMD 远远的甩在后面. 现在, KDE 4 和 即将问世的 Gnome 3 也是这种状况.

KDE 4 技术和概念上暂时领先, 但是盲目模仿, 细节失明和糟糕的用户体验可能会给 KDE 埋下失败的伏笔 — 现在 Qt 已经 LGPL 了, 再也不能把责任推卸给许可协议问题. 当然, 用户体验是个见仁见智的问题, 这里有一篇探讨 KDE/Gnome 用户体验的文章: KDE and Gnome Comparison.

Mint 清凉一夏

和花哨的 KDE 4 / Plasma 比起来, Ubuntu 的分支 — Linux Mint (薄荷) 很好的进行了自我表达: 一个让你感觉像薄荷一样清凉, 神清气爽的 Linux 发行版. 嗯, 经过本人验证: 这个发行版很对得起 Mint 这个名字 :-)

百字不如一图:

http://www.linuxmint.com/img/screenshots/gloria/15.png http://www.linuxmint.com/img/screenshots/gloria/20.png

由于是基于 Ubuntu 的发行版, 所以安装和使用过程与 Ubuntu 无异, 甚至体验更好. 虽说 Ubuntu 手工改造改造, 换掉主题, 也能这么清凉. 但 Mint 的宗旨是提供比 Ubuntu 倡导的开箱即用更加友好的用户体验, 或许这就是 Mint 复制 Ubuntu 模式, 成功在 DistroWatch 前三甲的秘诀 (这前三强的缺省桌面环境都是 Gnome).

另外一个有意思的特色是, 每次打开 Mint Terminal 都会随机显示 “每日一句” (谚语/名言), 见图:

Linux Mint Terminal Screenshot

和 Ubuntu 一样, Mint 也有其它可选桌面环境, 不过和 Ubuntu 一样, 也是由社区维护的, 除了官方首选的 Gnome 环境, 其它的大都不正宗.

提示: 如果你也喜欢简洁和清晰, 不要给 Mint KDE 任何机会, KDE 的问题是理念, 控件和字体渲染引擎, 不是主题和许可协议.

ibus 输入法

推荐 ibus 输入法, 删掉所有 SCIM 相关的包, 然后按此方法安装 ibus: Ubuntu 9.04 安装 ibus 输入法 (Mint 7 Gloria 对应于 Ubuntu 9.04)

不知道冬天看到这么清凉环保的色调会不会感觉有点颤, 到时候可能温度决定喜好, 偏向暖色调的 Ubuntu :-)

2009-09-22, Tuesday 21:48 PM | 3 comments | 0 pingbacks | Tags: , , , , ,

GoDaddy 限时 $2.99 .COM 域名

GoDaddy 优惠码: 299BUYCOM, 域名转入也可以用.

在确认购物篮时使用该优惠码, 缺点是该优惠码不支持 PayPal 付款, 只能使用信用卡 :(

同时也发现了一个查优惠码的好地方 :) — RetailMeNot, 网站做的不错, 给推广一下.

2009-09-14, Monday 19:58 PM | 0 comments | 0 pingbacks | Tags: ,

被虐的不行, 尝试 SSH 翻墙方法

“这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。”

狄更斯, <<双城记>>

Facebook, YouTube 全被功夫了, 在功夫网上浪费时间, 实在是令人焦虑啊.

  • 带套 (Tor) 浏览 — 太慢, 常断;
  • VPN 通常免费无好货;
  • 某某功的软件不敢用;
  • WEB 在线代理问题很多, 又不稳定
  • …. 一堆的问题, 不是说地球村吗? 怎么感觉像在猪圈, 进个村先得想办法爬出猪栏.
  • “Across the Great Wall we can reach every corner in the world. (越过长城, 走向世界)” 这句话越看越讽刺.

一个稍微值得安慰的消息是: 如果你有国外虚拟主机, 碰巧又支持 SSH, 然后主机商不介意你使用 SSH 隧道功能, 那你就又有了一个突破枷锁的方法.

这个方法也不是那么完美, 问题:

  • 注意自己的流量 … 看国内网站就别用了, 浪费主机流量
  • 千万别同时点开/刷新 N 多链接, 会卡到令人崩溃 (毕竟是单进程单线程处理请求), 控制在三个以内是合理的
  • 谨慎的传播, 自用为主, 不要提供代理服务, 小心网监把你整个网站都封了

如果你需要一个速度快, 流量实打实的虚拟主机, 推荐 Webfaction, 包括 Bluehost 在内的很多主机所谓的流量都是空头支票 (如果你决定买一个, 希望你能顺着我给的推广链接过去, 别让 $ 都让主机商赚走了 :) )

2009-09-3, Thursday 11:08 AM | 7 comments | 0 pingbacks | Tags: , ,

HTTPS django-cpserver 和 Nginx 反向代理

最近把内部 blog 也迁移到了 Byteflow, 并在 Webfaction 设置使用 HTTPS 协议.

一般的页面浏览均正常, 但是对于登录 admin 控制台或是保存编辑操作, Django 重定向机制会跳转到 HTTP 协议, 而不是预期的 HTTPS.

内部 blog 也是用 django-cpserver 跑, HTTPS 请求先经由 Webfaction 主 Nginx 反向代理服务器过滤.

由于 Nginx 接管了 HTTPS 加密/解密, 并把用户请求作为普通 HTTP 请求进行转发, 所以 django-cpserver 和 Django 对 HTTPS 一无所知, request.is_secure() 将总是返回 False.

修正方法

用一个简单的 WSGI Middleware 修改请求对象:

class SSLMiddleware(object):
    """
    Middleware that applies some fixes for people using
    Nginx manage HTTPS and forward requests as HTTP to
    backend server.
    """
    def process_request(self, request):
        # use HTTPS forever
        request.is_secure = lambda: True == True

将以上代码保存成 .py 文件, 并追加到 Django settings.py 文件 MIDDLEWARE_CLASSES 元组中, 重启后台服务器生效.

2009-08-29, Saturday 20:37 PM | 2 comments | 0 pingbacks | Tags: , , ,

关于 Yang Yubo

身处 IT 行业, 惯用 C/C++, 对 Python 情有独钟, 平时比较关注 QT / Django / Werkzeug 等. 了解更多 »