MSYS2 近来的 repo 同步问题

MSYS2 近来的 repo 同步问题

MSYS2: http://sourceforge.net/projects/msys2/

可能是 SourceForge 调整了 MSYS2 repo 文件的下载链接, 使得这些下载链接被重定向到真正可以下载的位置, 导致使用:

$ pacman -Sy

同步失败,下载得到的 repo 文件是 html 文件。

$ file /var/lib/pacman/sync/*.db

pacman 的配置文件中可以使用 XferCommand 配置选项来指定下载命令, 其中支持 curl 和 wget :

#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

可以使用 curl 的 -L 参数使得下载支持下载链接重定向:

XferCommand = /usr/bin/curl -L -C - -f %u > %o

这样就可以了。

如果还遇上被墙的话,比如我这里就是这样,再加上代理参数, 比如使用 socks5 的 shadowsocks 的话:

XferCommand = /usr/bin/curl --socks5 127.0.0.1:1080 -L -C - -f %u > %o

就可以了。

另外,如果只是 repo 文件会被墙的话,比如我这里,可以在同步完 repo 文件之后, 注释掉这个 XferCommand 配置选项,节省代理消耗。 :-)

产品开发到底由谁主导?

引言

首先,让我怀念一下我曾经的同事——作为策划的A罗~

云风在《我的编程感悟》中提及项目主导(第13章 开发方法 -> 13.1 失败的经验)经由程序员主导到策划主导,甚至美术、市场人员主导等。

而在这第 13 章中讲到好多的失败的、成功的经验。自从加入程序开发以来经历许多,竟也有些许类似的感受!

这里谈下产品开发主导的感受。

产品设计的核心

一个产品从一开始的闪光 idea 到可以见天日,到底是由谁主导呢?

也许很多人会马上说,“那不是废话吗!肯定是老板啊!”

我觉得这样说,应该是没有经过认真思考的。

我认为云风的观点是值得学习的,一个成功的产品开发的主导是需要多方协作的。

当然,人员越多,沟通成本指数上升。(这是私自认为很有前景的领域,曾经的A罗所在公司的亮点所在。)

不过,这其中,包括老板在内的领导们、市场人员、策划、外观设计、技术开发人员之中,据我经历来说,策划应该是产品设计之中的核心。

为什么这么说呢?

产品策划

首先,在没有经过任何的学习和培训下,我认为产品策划(哪怕只是某个角色担当起了这个重任)的工作至少包括了以下内容:

  • 将领导和市场人员的需求、指导等转化成实际的产品功能特性
  • 产品功能特性的原型设计

这么说吧,一个称职的产品策划应该是最了解产品的。 当然,鉴于局限性,是可以不了解底层是如何实现的,也可以不了解市场处于何种情况,因为这不是他的职责。

在产品开始开发前,所有人都需要和产品策划沟通:

  • 需求:领导、市场人员
  • 外观实现:外观设计人员
  • 底层实现:底层技术开发人员

产品策划需要按照需求,结合技术开发人员的实际能力和反馈,制定一份简洁的策划书。

策划书需要理清楚的内容包括:

  • 目前需求
  • 需求转化成的每项功能特性
  • 原型设计

对于前面两个应该很好理解,最后一个原型设计和外观开发的原型设计有些相似,但是有区分:只需要根据每项功能特性作出蓝图设计。

比如:

  • 对于网站设计:需要规划好大概需要哪些页面来满足需求,这些页面大概需要显示哪些方面的数据。
  • 对于服务接口:需要规划好大概需要哪些服务接口来满足需求,每个服务接口大概需要提供哪些参数、返回哪些数据。
  • ...

这些蓝图的设计,最强烈的建议是拿起笔和纸,手动构思。当然可以使用一些高级的工具,比如 Axure 、 Pencil Project 等。

策划书的审核需要所有人的讨论确定:

  • 领导和市场人员需要确定是否满足了他们的需求
  • 外观设计和底层技术开发人员需要确定是否超出了他们的能力范围
  • 产品负责人(可能就是所谓的“项目经理”?)需要以此确定产品开发各个实施阶段是否符合领导和市场人员的要求

产品的开发并不是从一开始就完全制定好的,总是会随着需求变化而做出变更。

产品的变更

毫无规划的产品设计导致了产品开发的混乱,给人一种无尽任务的感觉。

产品的变更是需要被规划的。这涉及到产品的策划如何做出正确的应对。

正如源代码的管理需要有版本之类的策略,产品的变更需要使用类似里程碑的方式。

每一个被决定的功能特性来自具体的需求,它们需要被正确地安排在每一个阶段的实现中。

就算这些功能特性的决定在后来存在变更,它们也应该能够被规划被调整。

这个调整的过程应该和产品开始时候的商讨、决策类似。

产品策划需要和产品负责人协商每一个阶段需要实现的功能特性以及实现这些功能特性需要花费的时间和精力。

后语

在没有拿出一个设计蓝图,而匆匆将任务扔给某个技术开发人员的做法是很危险的。

就像《我的游戏感悟》中提到的各种失败的经验那样,将产品主导以及工作过多地放置于某一个人之上特别是技术开发人员之上更加危险。

相信没有哪个老板会不希望自己的产品能顺利开发,顺利达到期望。然而不静下心来讨论如何进行产品开发的话,再好的创意也是白搭。

没有人会愿意看到自己的辛苦会被人误解,埋怨甚至嘲笑。

我们需要更好的开发方式、开发流程,需要好的产品策划!

-- 写得有点虎头蛇尾,有点凌乱,有空再整理整理……


updated on 2013,11,23

删去可能被误解为吐槽的内容。

翻墙安装 goprotobuf 库

每当被墙挡住的时候,某些人的寿命就又少了一部分(被狠狠地诅咒了又一次)!

今天安装 goprotobuf 库就是这样子。还好有 Tor .

准备 Tor

访问 https://bridges.torproject.org/ 得到当前可用的 bridge , 在 vidalia 中设置好 bridges ,然后就连上了 Tor 匿名网络。

设置 http_proxy

$ export $http_proxy=127.0.0.1:8118

安装

$ go get code.google.com/p/goprotobuf/{proto,protoc-gen-go}

终于不再 Connection reset by peer 了。

莫名奇妙的bug - 网易笔试

netease exam - indescribable bug
2011,01,01 深夜

在投了简历大概半个月后, 有一天晚上大概七点左右, 我在亲戚家准备吃晚饭的时候, 意外地接到一个来自网易的电话, 电话邀请我第三天晚上六点半参加笔试。 虽然我感觉很不好,但还是接受了。 最后证明我的这种勉强答应是错误的。 (这种学习华为的做法现在已经让我非常反感了,都累了一天还搞什么?)

第三天,在忙累了一天之后,我比较早下班,虽然我比较早下班,但还是迟到了一小会。 路途还算有点远,虽然同在一个区。

很意外地,一进笔试间就遇到老同事小猪,不过回头一想,也不意外。 既然大家都在埋头做题目了,我也不能打扰。

以为自己还带着笔,没想到由于公司的笔老是被人拿走,自己的笔也就留在了公司。 这让我吃了个亏。

接过试题,一看就傻眼。 第一道题目考C语言的,不熟悉。 第二、第三道题目居然考的是C++语言的模板的,完全不懂。 第四道题目不算是题目。 第五道题目也不算是题目,我没写上什么答案,写的话应该是我现在的这篇文字的标题。 第六道题目要说说自己的游戏经历?让人还以为要抄抄云风的《游戏之旅-我的编程感悟》。

我有些奇怪的是云风的影响力在网易是否小了很多?(指C++)

结果是, 第一道题目找到了错误的位置,strcpy 函数和 printf 函数,但是没有找到错误的原因。窘。 第二、第三道题目的回答非常简单,两个字:不懂。 第四道题目写错了一个 Linux 命令(netstat)。 第五道题目如上所述。 第六道题目就简单提起自己最喜欢的两款PC游戏。

基本上是交了白卷。

笔试完毕,交卷的时候小猪特意问那位负责这次笔试的网易员工是否搞错了题目, 不过并没有得到正确的回答。

这次还真的是莫名其妙,虽然前面三道题目应该很简单, 但是应该不是面对我们的,我们来是想看看 Python 相关的岗位的情况的。 虽然说行者道上的兄弟们相信使用 Python 的码农素质会好些,有钻研精神,爱学习, 但是一个无法改变的事实是,每个人其实都还是比较安于现实,就算是有所追求,也多半没那么快进展。 关于 C++ 的书倒是买了一些,大的小的,几乎每本都只翻了前面大概一百多页,很难继续下去。 也许压力才是增进学习的最佳因素。

所以,最后,这个莫名其妙的 bug 到底是谁产生的,我也有些不莫名其妙了。

为什么现在不用笨重的 IDE ?

2010,10,03

Why not use IDE now?


我的有些同事,给我的感觉似乎就是,没有笨重的 IDE 开发环境,他们不能工作。。。

当他们惊讶于公司招了我这么一个几乎听都没听说过的“Python程序员”之后, 有些想了解 Python 到底要怎么开发?使用什么的开发工具? (他们当然指的是像 Visual Studio/Eclipse 那样的超级IDE了。) 我只能说,哦,估计你可以试试 PyDev 或者 limodou 前辈的 Ulipad 等等。 不过我没认真用过,不好给你好的建议。

我也相信那些笨重或者不笨重的 IDE 本身是非常优秀的, 不然怎么会有人开发?并且怎么会有人使用呢?

我上次有个 Java 相关的基础问题请教一位同事,他很快帮我解决了问题, 不过最后却说了一句话:哦,你为什么不用IDE呢? 看上去,他似乎告诉我使用IDE就可以解决这样的问题。

不久前,我的另外一位同事,从事 C++ 开发的同事。 他说,哦,你使用 Linux 环境啊,那么如何组织开发? 有没有类似 Visual Studio 的开发环境啊? 我说 Eclipse 的 CDT 插件或者 Netbeans 或许可以满足需求, 但是大部分在 Linux 上做开发的应该只是使用 Shell + GCC + GDB + autoconf(/scons) + make(/cmake) 等等, 或者只是配置一个万能的 Emacs 神器。 当然其他各种宣称强大的C/C++环境也是有的,比如 Code::Blocks 等。 不过我没有认真去尝试过,还真不好说。

另外一位不久前另某高就的同事的说法让我感到很惊异。 那位同事应该主要是开发 Flash ,并且搞搞 Java 。 他打开 Eclipse ,等了很久, 在某个打开的 Java 源文件处,输入了一些字母, 然后在光标活动处出来了一个列表可以很“快速”的选择他想要的东西, 他说,在别的编辑器中能实现这个功能? 然后他在某个单词上按下了某些按键,等了一会, 出来了一些文字,大概是关于这个单词的说明等等。 然后他说,在别的编辑器中也能有这样的功能? 要是没有这些功能,叫他怎么进行开发? 我想我当时的确有些要晕倒。 当然现在可能很多“IDE”或者只是编辑器已经有类似这样的“功能”, 然而,对于从脚本语言开始的我来说,却不是这样的。 从 Python Shell 中的 help(what_to_ask) 或者 IPython 中简简单单的“?”或者“??”, 到 pydoc 命令等, 或者自己在官方源代码里的文档目录中自己编译出各种格式的详细说明文档, 这些都是非常简单非常容易做到的事情,而且随时随地,非常方便。 (又如 Ruby 中的 rdoc 等莫不如此。)

我现在有点明白为什么书店里大部分的语言书都是写静态语言的了, 因为他们的确需要! 对于大部分脚本语言来说,像上面所说的,要获取说明等很容易。 比如大部分规范的 Python 程序都有很好的 docstring ,特别是类库。 最无奈的,大不了去查下源代码,而静态语言你想做这样的事情估计很难。 我去查 Java 的 API 文档,很全很详细,但是他们是一种参考工具书那样的东西, 类似词典,并不是我想要的那种有导向效果的文档。 干巴巴的词典,除非你是个背诵狂,否则你会选择从这里入手? IDE把这些也都搞上去了,或者就是想解决这个问题?

以上这位同事在离职前很得意地跟我们说他去面试一家公司的时候, 把内存的工作原理讲了一遍,把人家面试官都“惊呆”了。。。 最后在他最后离开公司之前我们调试他的程序的时候, 我们把他的程序(webapp)部署到了局域网内的某台服务器上, 结果某个环节并没有发挥应有的效果,他走到跟前说, 你怎么使用这个地址呢,是“localhost”吧! 我当时的确被雷到了,我希望他当时是累得最后连话都说错了。

我对于IDE并没有太大的成见,我抱有的态度是, 我的实际开发项目都不大,或者很小, 根本不需要这么强大的东西来管理规划我的代码或者模块。 如果你已经把一个项目很好的拆分开来, 每个小的部分只关心她自己的逻辑或者业务, 那么你还需要那么笨重的东西么? 何况那些IDE里有的功能, 很多我们都可以自己写个简单的脚本之类来实现, 而且可以做的更加随心所欲,遇到问题自己也了如指掌。 比如自己写个 bash 脚本, 自动编译整个 webapp 并且部署到 tomcat 上再重启 tomcat , 这不就是一个非常简单的事情么? 哪里需要麻烦笨重的IDE在占用极大的系统资源中缓慢的进行这个简单的工作?

不过,对于一些庞大的项目,或者一些需要改造的老旧项目, 在我们开始接触和熟悉的时候,IDE或许会帮到我们很多忙。

我基本上使用 VIM 来完成我大部分的编码工作, 并且使用各种 GNU 工具,如 grep/find/lsof 等等在 Shell 环境中进行调配和控制, 因为她们使这个过程更加简单、高效和可靠。 特别在掌握更多的基本操作,如 VIM 的折叠操作等之后更加如此。

我不喜欢使用图形界面来控制各种服务器相关的配置, 因为那样代价很高,特别是对于远程操作来说。 我也不提倡在源代码中使用英文之外的语言撰写,如中文, 因为某些时候可能连接到远程服务器的终端并不能很好的处理编码的问题。 所以,这不是说我以为自己的英语水平很高很拽, 而是实际问题让我觉得这样做应该会更好些。

最后,有句话好像是这样说的: “开发一个傻瓜都会使用的软件,只有傻瓜愿意使用它。” ( 【外刊IT评论】软件编程21法则 第20条 )

另外,可能动态语言的壮大使得普通开发工作对于IDE的“渴求”慢慢降低了, infoq中文不久前有一篇文章介绍动态语言的企业应用: 动态语言企业应用优缺点浅析

--

我以我的无知来讨论问题,结果可能显得我更加的无知。

低效乏味的华为一面

2010,08,08 张凯朝

--

今天本来不想去的,想想虽然差得太远,还是可以去看看人家到底是怎么样的。

前天就使用谷歌地图查好公交线路,没想到公交线路已经更改了,最后只好打的。

提前十几分钟到场,拿了登记表和试题就在等候区开始填写了。

登记表好多的个人资料填写,耗费了大部分的时间。

最后是一个试题,要求使用 C/C++/Java 做题。

我很懒,这题也简单,直接用 Python 几分钟搞定了。

也不想用 C/C++/Java 写了,一个字:烦。

交上去等了好久,不见有人叫我去面试区面试,

看到前面有个牌子写着“洗手请下一楼”,以为去洗手的话就到12楼(那里是13楼),

走到12楼找了半天没有,想起那个意思应该是指到下面的1楼去。

洗完手回来,又等了许久。

数了数今天面试的人员,等候区大概

11 * 4 * 3 = 132

加上面试区里的人,应该是150人传统面试。

终于有人叫我了,面试官看上去挺和善,笑着和我握了握手。

在面试区中找了半天没位置,只好乱七八糟搬了两张椅子坐下。

开始面对面的面试。

面试官问了一些问题,过了一回又重新问了这些问题。

我看他将我填写的登记表翻了又翻,就跟他说,是不是因为没有什么内容?

他笑着默认。然后指着试题上的 C/C++/Java ,对我说他们需要使用“主流语言”的,

我说 Google 内部很多产品使用 Python 语言。

然后他让我介绍一下 Python 语言。

最后面试官强调他们不想招聘不使用“主流技术”的人。

我说像华为这样的大企业,应该是把部分时间花了培养人才,而不是招聘牛人中。

面试官只是点头说是。

问我掌握多少种语言,

我回答对 Python 语言熟悉,C 只是在学校修读过,Java 最近才开始使用。

我本来可以很像高手一样指出,语言只是一种工具,编程不在于到底使用何种语言。

类似这样的话语云云。然而我没有。

面试官说华为主要是做通讯设备,有些地方需要电子学方面,

我回答上学的时候也修读过电子学的课程,不过学得不好,如果需要可能得重新学习。

面试官表示软件和硬件两个方面的东西很难同时顾及,

说最好是在已有的方向互联网开发方面深入下去。

最后面试结束,大家握握手,再见。

--

华为这个一面,给我感觉就是低效,等了好久,

然后是乏味,既然不招聘非“主流技术”的人,干吗把我叫过来面试?

唯一让我有点感叹的是,

我的登记表中写着的兴趣爱好一栏,

可能让面试官觉得有和我聊一聊的可能。哈哈,那里写着“诗歌”。。。

附上了的试题解答(更正了些手写错别字):

#!/usr/bin/env python
import bisect

def getElementNumberGreaterThanAverage(src_list):
    len_list = len(src_list)
    if not len_list: return 0
    average = sum(src_list) / len_list
    average_index = bisect.bisect_left(sorted(src_list), average)
    return len_list - average_index

当然试题上是先写思路再写代码的。。。

这个解法比一般的解法效率上应该还要差一些,

不过我很懒,不想写太多。。。

莫名其妙的回复

""" 汗! """

几天前无意之中向一家公司投了一份简历, 接下来居然收到这样一份回复:

由于本公司还处于刚起步阶段,处于成本和长期发展考虑,暂时是需要Python的初级程序员,
很感谢您的简历与对本公司的关注与支持。

看上去,我好像被高估了,或者是我的简历水份严重超标。。。 哈哈 :-)

问题很多

""" 问题其实也不是问题。 """

虽然我修读过C语言, 但是在静态语言方面还是几乎一片空白。 Java 让我感到很多苦恼, 不过估计是我个人不熟悉所致, 也可能是某人所说的“开发方式”的问题。 我应该是没有权利来抱怨, 然而我正在使用,并感到烦恼。 我使用轻量的 Tomcat 来部署我的 webapp , 我写最基本的最简单的 jsp 来实现我需要的逻辑和页面, 单纯使用 jsp 来做这些事情的话, 我感觉就像在使用动态语言,虽然首次运行访问比较慢。 但是我需要使用到一些库,于是问题来了。 我同时部署了几个 webapp , 他们各自会有一些库放在其 WEB-INF/lib 中, 于是他们之间在 Tomcat 的运行环境中产生了某些相互反应, 导致 webapp 运行异常。

也许这只是我配置不够正确。 然而提示配置,我简直要疯掉了。 我测试一个项目的时候, 这个项目使用到了几个相当有名的项目, 如 Spring 框架、Hibernate 等。 我对这些一窍不通,他们各自有很多不同的配置问题, 繁多复杂。 这些有名的项目其文档都很丰富和成熟, 然而也是又长又复杂, 我没有那么多时间耗费在这上面。 我按照这个项目的仅有的一点说明文档, 将其打包成 war 包, 放到 Tomcat 运行环境中, 重启 Tomcat , 神奇的 Tomcat 会给你部署这个项目, 生成一个跟 war 包相同名字的文件夹, 于是仿佛可以在这个文件夹中修改那些配置文件来重新配置这个项目的运行选项, 我只是想更改一些数据库连接的选择而已, 这花了了将近大概一天的时间, 包括其中大量的进行 Google 搜索解决问题的时间, 后来才发现这些配置其实不能全部在已使用 war 部署的 webapp 中更改, 好大一个杯具! 我配置好了再打包,再部署就没问题了。。。

我想试试看 Tomcat 文档中所说的使用 JSTL 来操作 MySQL 数据库的方法, 我对 JSTL 一窍不通。 我照着教程做了, 结果那些 jsp 中的 JSTL 的标签像是在嘲笑我, 他们直接显示在输出的 HTML 中了, 丝毫没有任何处理了的痕迹。 我再回头看看文档, 文档说:

That JSP page makes use of JSTL's SQL and Core taglibs. You can get it from Sun's Java Web Services Developer Pack or Jakarta Taglib Standard 1.1 project - just make sure you get a 1.1.x release. Once you have JSTL, copy jstl.jar and standard.jar to your web app's WEB-INF/lib directory.

我认为我已经按照这个说明将 JSTL 1.1 弄好了, 不过,它死活没有起效果。 真的是杯具。

我需要使用一个已经编译打包好的 jar 包来提供其库的功能, 我在自己的 servlet 中使用这个库, 我发现我的程序中需要动态调试, 我想知道某个特定的时候, 某些对象的状态,属性,等等的东西。 如果只是在我自己的 servlet 中的话, 我想我可以直接使用 log 来获取信息。 但是对于流经库中的东西, 我难道要重新修改那个库的源代码, 写进去调试的代码, 重新编译那个库, 再把那个库放置到我的运行环境中? 这个过程实在繁琐。 也许我习惯了动态语言, 如 Python 之类的“开发方式”, “人生苦短,我用Python.”应该是很多行者(Python程序员的自称)的告白。

根据辩证法,世界是一个矛盾统一体。 就像《架构师》2010年七月(infoq中文的一本期刊)中 《解读NoSQL技术代表作Dynamo》一文提到的 CAP原则 那样, 很多东西都是辩证统一的, 不可能存在所有条件都完美满足的情况存在, 我们应该进行取舍。

Java 作为一种成熟的强大的静态语言,她自有其明显优点也有其某些不足。 Python 等优雅简朴的动态语言,她们也自有其明显优点也有其某些不足。 其他工具也都一样。

我以同一种“开发方式”去尝试另一种似乎不合适的环境, 结果是要碰钉子, 感到不舒服的。

人们因为自己的喜好而追求其钟意的目标, 并为其钟爱的目标奉献自己的才能, 他们为此而骄傲,为此而欣慰。

糟糕的面试

2010,07,23

今天去一家香港公司面试,很出乎意外,结果当然很糟糕。 这个记录就更加糟糕了。。。

这家公司很奇怪,我在5月份,也就是两个多月前投的简历, 居然现在才叫我过去面试,匪夷所思。 这家公司我投简历的时候投的是web前端工程师, 当时其职位描述中,只有寥寥的几个web前端开发相关的基础知识要求, 有些地方还写得令人啼笑皆非,比如“熟悉HTML、DIV+CSS、XML”。 然而,今天过去真的很出乎意外。为什么呢? 我想大概的原因在于目前国内大部分的从业人员对 Python 语言的认识上的问题, 像不久前有一家做 PHP 的小公司,仅有一名开发人员的小公司哪, 叫我过去聊聊,从其谈话中可以了解到 Python 语言在目前国内的认识上可能是: 可能比较适合于做后台架构,性能尚且过得去。 所以今天我去到那家公司面试的时候,这个出乎意外其实也挺好理解的, 后台开发可能会涉及到一些比较底层的东西。 然而,Python 几乎封装了所有的底层东西,基于 Python 语言的 Zope 更加如此。 于是,另这位面试官也可能出乎意外。我对底层的东西几乎不懂。 因为在网络传输层上, 我到目前为止学习和使用最多的是应用层的东西, 他们想要的可能是网络层的东西。

这位面试官一开始就抛出一个问题,居然问我都了解哪些“互联网架构”, 看我一脸茫然,他也不知道说什么了, 我说我做的比较多的是前台开发,在和 HTTP 相关方面比较熟悉一些。 结果,他马上提问是否了解 HTTP 协议细节, 我回答说不了解协议细节,但是基本的 HTTP 请求和 HTTP 应答还是知道的。 然后他就把问题锁定在 HTTP 协议上了,特别是长连接是怎么实现的。 我很想就 keep-alive 或者 200/304 之类的所知的仅有的相关知识来试着解释这些问题, 但是结果是我没有这么做,因为我不真正清楚这些东西,更不知道到底是不是有关系。

虽然其一再强调不在乎新人是否已有需要的技术, 然而其围绕 HTTP 协议这样的技术规范来作为讨论题目让我心生厌恶。

然而这位面试官更加离谱的是,当我顺着他提出的对 C/C++ 的学习如何时候, 开始聊下 Python 的时候, 我刚想说面向对象之类的解决问题思想的时候, 他居然自以为是地说,“那就是不懂面向对象”云云,并把这个话题当即灭了。 我只能在心里暗自说,这人应该是完全不懂 Python 的。

但是这位面试官,却小结了一下, 说如果是到他们公司工作的话,我的开发方式必须做出改变。 我很纳闷我自己有什么样的开发方式,而在他们这里的开发方式又是怎么样。 结果这位面试官就扯到了 Linux 下的 C/C++ 开发, 扯到了基于 GTK/QT 等的开发了。 然而这些和所谓的开发方式又有什么联系呢? 还提到了 VIM 的使用,Cygwin 的使用, 然而这些就更加不知道有什么联系了。

不急,更加奇怪的东西还在后头呢。

接下来,这位面试官提出“如果让你自己设计一个通讯协议”这样的问题。 在明知道我对网络层不懂的情况下提出这样的问题,很显然就是刁难人。 当然他表明说,这是想知道新人如何快速去学习和使用工作需要的技能。 我想我的回答还是挺到位的, 我说模仿是最有效的方式, 我会先学习基本网络传输知识, 在这个基础上借鉴其他已有的协议, 在实践中设计和开发。 然而这个回答并不能使其满意, 因为这只是很宽泛地给出了一个从学习到应用的途径, 而不是这些不愿培养人才的私营企业需要的解决具体问题的“方案”。

这位面试官在两个问题上非常激动, 我想他可能在这些问题上有过不好的经历。 一个是有关上司的问题,另一个是大型IT企业中员工发展的问题。 对于第一个问题,我想我并没有说我对以前上司的看法,无论好的还是差的, 然而这位面试情绪激动地一再强调让我好好想清楚为啥人家是上司,而。。。 还大谈在公司企业里为什么某些人就能做某个层次的领导等奇怪的问题。 让人感觉就是好像我对以前的上司很不满的样子,其实恰恰相反。 对于第二个问题, 这位面试官明显地以一种非常领导的架势, 来特别强调员工的发展问题全部归结员工本身造成。 让我对这个面试官仅有的一点点好感顿然完全消失。

好吧,我承认我基础很不牢靠,这也是我离开以前公司的一个主要原因。 我觉得我自己一向很努力,我相信只要努力没有学不会的东西。

这位面试官最后的结论是我和他们的要求相差太远, 我就此询问他们的要求具体是怎么样, 他说的大概就是如何快速进入一种新的开发环境中。 我觉得很可笑,我自诩自己是一个努力中的天才, 几乎什么都感兴趣,都很着迷,都爱花时间去学习研究, 这样的具体要求对我来说根本不是要求, 然而他却说我相差太远。。。 我想这位面试官估计在中间我回答“如果让你自己设计一个通讯协议”这个问题上, 因为我的回答让他一下子就把我列入不合格名单中。 我的回答过于谨慎,说“可能会有压力”。 也许这被当成是信心不足的表现,面试中可能最忌这样了。 然而我不在乎,因为突然询问我我暂时不熟悉的东西, 我当然不能随随便便就说没问题,哪怕是再简单不过的东西了。 比如以前有人叫我一起去做架构方面的工作, 我实在是没有那个信心,确实是不够熟悉,也没有过多少经验。

不过,这次的面试还是让我得到一点提示, 掌握好基础知识,这是提升自己技术水平的最好途径。 不过这也是我一直坚持的,只是层次不同而已,今后要学习更加基础的东西了。

最后的想法,偶尔面面试,接触接触别人,也可以了解社会,增进某些认识的。


2010,07,27 原来 HTTP 协议也只是应用层网络协议哪。。。
维基百科_分类:应用层网络协议

什么时候能重新回到Python开发

最近终于换了一份工作,不过新公司的大部分项目都是 Java 程序和 C++ 程序。 开始真正学 Java ,没想到越写越吐血。。。 有点像 robbin 在很久以前说的 我眼中的Python 中那样: “做为一种严谨的,编译式的,面向对象语言,Java总是给我一种须正襟危坐,须一板一眼的按照OOAD的原则编程,才敢在键盘上敲下字符的感觉。” 写 Java 程序的时候我感觉真的很压抑,而写 Python 程序的时候感觉很自然。。。

从天堂到地狱和从地狱到天堂的落差估计是非常巨大的! 真是怀念使用 Python 开发。

Older