原文链接:Interview with 37Signals’ Jason Fried
原文作者:Om M
最近我们采访了 37Signals 的创始人 Jason Fried,一个在线协同工作产品与技术的革新者,而且这段采访就是使用他们公司的 Campfire 完成的。我们讨论到了很多的话题,包括虚拟的工作方式,以及当你完全在依赖你自己工作的时候,如何去保持前进的原动力。下面是这段访谈的缩略版本(译者: 关于 37Signals 的详细介绍,大家可以 Google 一下 ,我最近也把他们的大作《Getting Real》也成了学习笔记,大家可以点击这里阅读)。
Om M. 你在很早以前就坚信了分布式的工作概念。你对现在这么多的人能够远距离的协同工作而感到惊奇吗?
Jason F. 我一点都不惊奇。在这里面人才是最重要的。当你能够和任何人一起工作的时候,为什么还要将自己限制在周围的几个人里面。如果我仅仅只和在芝加哥的人一起工作,那么我永远都不可能与 David 一起共事。那么世界上也就不会有 Rails 了。
Om M. 你觉得这将会是一个趋势吗?
Jason F. 绝对会。像我们的产品,还有其他的工具,例如 wikis、IM 等等,它们都让协同变得异常的简单。我也相信当人们之间存在距离的时候才会更具生产力。被打扰才是高效率的最大敌人。所以说虽然 37Signals 的 5 个雇员都在芝加哥,但是他们却没在一起工作,大家都在自己的家里办公。
Om M. 在另一方面,一定有什么东西让人们自发性的工作在一起并且能够彼此交流想法。
Jason F. 我们使用 Campfire 来沟通,一整天都使用它。如果我不想参与进去,我可以关掉窗口。这不像大家都在同一个地方,无论你喜欢还是不喜欢,你都会被周围的人打扰。
Om M. 我也在从事虚拟化的团队创业,但是我发现我正在把自己束缚起来,而且逐渐远离我公司的同事们。
Jason F. 当你整天都在和你一起工作的人聊天时,你能够感觉到那种文化层次上的交流。这比真实的对话更有效果。Campfire 就是我们成功地秘密。
Om M. 你没有因此而错失人和人之间在物理上的亲近吗?
Jason F. 有些人不适应这种远程的工作。如果你也是其中之一,你就不应该这样尝试。我们宁愿专注的去完成工作,也不希望让一群游手好闲的人们整天扎堆在一起胡说闲聊。我们在最近的两年半之内完成了很多的工作,包括 5 个产品,第 [...]
在SD2C上的另外一些收获来自于Web应用方面。一个是董洵的GAE讲座,一个是钱宏武关于大型WEB应用的讲座。
钱宏武有一个观点谈到关于技术选型一定要选择那种久经考验资源丰富的解决方案。比如对于WEB应用来说,PHP就是这样一种靠谱的方案。这个我很赞同,像ASP就是在过去一些年里未能通过考验而可耻滴被淘汰的技术——傍上 MS又如何,现实是残酷的,连MS自己也放弃了ASP。一个朋友有一个ASP做的网站要我帮忙在国外找个虚拟主机空间(国内的虚拟主机商太不靠谱,而且价格贵得离谱),结果我找了四家比较有名的,只有一家有提供支持ASP的Windows平台。
于是我想到了这两年来我所接触过的 Python Web框架:Django, TurboGears, Pylons。因为那天有事急着回市区,没能等到董洵讲座的问答一环节,所以也就没能问一下他的看法。不过按董洵在讲座中的观点来看,他是对Django 是非常推崇的,他自己的网站“好看簿”就是用Django开发的——他说到这个我才想起来07年在土豆的barcamp上见过他。
回上海后在BT妓术群里也讨论了一下这个话题,令狐作《Django到底有什么好?》来谈这个问题。
我最初接触Python的Web开发就是听Limodou介绍的Django,从0.94版一直用到0.96版。令狐因为之前用过CherryPy,所以比较倾向于基于CherryPy的TurboGears。不过在经过一段时间的使用之后,我还是决定从Django换到了TG,因为我不喜欢Django独有的ORM和非XML的模板——虽然这个叫做Jinja的模板引擎的确比TG默认的KID要快得多。不过我用TG也不太喜欢用它默认配置的 SQLObject和KID,而是喜欢SQLAlchemy和Genshi。TG的优点就在于此,你可以按自己的喜好选择使用ORM和/或模板引擎,不会像Django那样让人感觉受约束。
到了08年,BT妓术群要做新版本狗屎皮网站时,在MK的提议下,我们选择了Pylons——它也像 TG一样是可自由组装的,但是底层是基于Paster而不是CherryPy,二者的优劣我不好评说,但可以肯定的是,Pylons的配置性比TG更好。但促使我们作出这样的决定的理由却很简单——TG2开始就不再是基于CherryPy而是要改投Pylons门下了,虽然当时TG2还未正式推出(现在也只到Beta1)。
经过这么一番折腾之后再回头来看这三个框架,感觉就不同了。
Django虽然是一个全包的解决方案,但是它的方案却是经得起考验的——因为据说Django的诞生差不多与RoR同时,也都是基于实际的应用开发需要而被创建出来的,它是一个与RoR类似的方案,但却绝不是仿制品。
TurboGears的想法是很好的,但是因为用到的组件过多,并且千差万别,TG的组合从某种程度上说是比较勉强的,并且不得不因此加了很多比较难看的手法,使用上问题也是比较多的。
Pylons虽然思路与TG类似,但是做法要清爽得多。最关键的是它提供的功能却一点也不差,比如URL映射(REST需要),还有对CACHE的支持等(当然这些Django也都有)。只是用起来麻烦一点。
我虽然用TG做过一些应用,但都是只有几十个用户的小应用。对于实际的大规模应用来说,TG的效能是很可疑的。在这一点上,Django和Pylons都要好得多。
回到前面所说的“久经考验”的问题上。要说Python世界里最久经考验的方案,那大概就要数Zope了,不过那个东东实在是太笨重了,堪比J2EE。
而除了Zope之外,这三个方案(甚至还可以包括RoR等)跟PHP比起来都不能算是久经考验,但如果一定要在这三个里选一个的话,恐怕最后胜出的还会是Django。
不过我觉得要是从趋势上看,Pylons会很有前途——
Limodou在说了《merb的不可知–与uliweb框架的走向》后不久,merb就正式与RoR合并了。如果把RoR比作Django的话,merb就像是Pylons,也许将来在TG2与Pylons正式合并以后,Django也加入进来不是不可能的。
首先,需要在Windows里面将文件夹共享出来,linux下面可以用Samba配置共享,在Mac机里面按照如下步骤即可访问windows和linux的共享文件夹
1. 打开Finder, 在菜单栏里面, 点击Go->Connect to Server…
2. 在Server Address:下, 输入smb://user@IP, 点击Connect按钮
3. 选择要访问的共享文件夹, 假设是software文件夹, 点击OK按钮
4. 输入对应的密码, 点击OK按钮
5. 在Mac的桌面上会生产一个software的文件夹, 即是windows或linux共享出来的文件夹software
1.4.5的dmg中的文档带了如何删除的方法
请按照下面步骤删除QIM:
1. 首先在输入法菜单里取消QIM
2. 然后关闭所有当前使用过QIM的程序
3. 进入/Library/Components目录
4. 删除QIM.component
5. 重新登录即可完全删除QIM,QIM在~/Library/QIM目录里保存有用户的一些自定义信息和词库,如果用户不想保留,可以删除这个目录。
1.6.1新版本安装看了一下之后,觉得确实不错,但是还没有购买,暂时想删除之。发现dmg中并没有任何文档,而且/Library/Components目录下没有QIM相关的组件。突然想到作者提过QIM用了Leopard的新输入法体系结构,我就去/Library/Input Methods下看了一下,果然在这里。
参照上面的步骤,只是把第三,四步替换一下就可以手工删除QIM了,注销重新登录,搞定。
具体步骤:
1. 首先在输入法菜单里取消QIM
2. 然后关闭所有当前使用过QIM的程序
3. 进入/Library/Input Methods目录
4. 删除IMKQIM.app
5. 重新登录即可完全删除QIM,QIM在~/Library/QIM目录里保存有用户的一些自定义信息和词库,如果用户不想保留,可以删除这个目录。
改变监听ip地址以及端口
python django-admin.py runserver ipaddress+port
参考文章:
http://www.diybl.com/course/1_web/webjs/20090517/167278.html
http://www.woodpecker.org.cn/obp/django/django-stepbystep/newtest/doc/
Django windows安装配置文档
一、软件准备:
1.1 python-2.5.1.msi
1.2 apache_2.2.8-win32-x86-no_ssl.msi
1.3 Django-0.96.1.tar.gz
1.4 mod_python-3.3.1.win32-py2.5-Apache2.2.exe
1.5 MySQL-python-1.2.2.win32-py2.5.exe
二、安装步骤:
2.1 安装python(运行python-2.5.1.msi即可,完成以后,设置环境变量)
2.2 mysql-python(运行MySQL-python-1.2.2.win32-py2.5.exe即可)
2.3 安装apache(运行apache_2.2.8-win32-x86-no_ssl.msi)
2.4 安装apache的module:mod_python(运行mod_python-3.3.1.win32-py2.5-Apache2.2.exe,安装最后完成阶段,会提示让选择apache的路径,选择2.4中apache的安装路径即可)
2.5 安装django
2.5.1 解压缩两次,得到文件夹Django-0.96.1。 把这个文件夹放到你的开发目录下,建议不要放在桌面,最好放在D:\Dev\之类的目录下,注意最好是英文,而且文件夹名不要有空格。
2.5.2在命令提示符下进入该目录,输入:cd D:\Dev\Django-0.96.1
再输入命令:python setup.py install
(这时屏幕会滚动显示一大堆东西,不要管它了,你也看不清)
OK了。
2.5.3先简单的测试一下。
命令提示符下,输入:python
然后输入import django
然后输入django.VERSION
我看到的是这样的:
>>> import django
>>> django.VERSION (0, 96.099999999999994, None)
>>>
2.5.4 设置环境变量(将 ../ python2.5.1\Lib\site-packages\django\bin加入path的环境变量中)
2.6 创建django project并测试
C:\django_src>cd \
C:\>mkdir django
C:\>cd django
C:\django>django-admin.py startproject myproject
C:\django>cd myproject
创建完成以后,打开settings.py文件,设置数据库(建议设置成mysql,2.2已经安装了python的mysql驱动,可以使用mysql)
DATABASE_ENGINE = ‘mysql’ # ‘postgresql_psycopg2′, ‘postgresql’, ‘mysql’, ’sqlite3′ or ‘ado_mssql’.
DATABASE_NAME = ‘django_demo’ # Or path to database file if using sqlite3.
DATABASE_USER [...]
多伦多DDB为当地的一家调味品制造商的低盐度调料制作了这支片子。片子从普通盐瓶的视角观察这个世界,当低盐度调料烹制的菜品上桌时,小盐瓶伤心地意识到自己失去了存在的价值,因而离家出走了。温馨的音乐,伤感的画面,让整个故事充满了淡淡的悲情。
这样的叙事角度很奇特,把消费者也置于了十分奇怪的境地。究竟要不要买低盐度的调料呢?反正我看完这支片子之后,倒是很想去买一个这样的小盐瓶,放在厨房的小柜台上。
1.广告订单投放后,修改素材,如原始广告素材类型是flash,则不能修改素材类型为图片。
折腾了两天,总算是把环境搞定了,道路曲折,把过程记录下来,希望文章可以对大家有帮助
python Snow Leopard系统自带的有,所以不用担心。
1.安装mysql 网上很多文章说安装32位的,那些是在Leopard上的教程,在这里强烈建议大家去下载mysql-5.1.39-osx10.5-x86_64.dmg
http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.39-osx10.5-x86_64.dmg/from/pick#mirrors
因为mysql安装版本的原因 导致我最后import MySQLdb总是出错
mysql下载DMG文件安装即可
安装完成后
将/usr/local/mysql/support-files文件夹下的my-large.cnf复制到/etc目录下,重命名为my.cnf
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
vi /etc/my.cnf
编辑my.cnf文件
在[mysqld]后面加入
character-set-server=utf8
collation-server=utf8_general_ci
default-character-set=utf8
2.安装Django
http://www.djangoproject.com/download/
这是下载地址
安装需要的命令
tar xzvf Django-1.1.tar.gz
cd Django-1.1
sudo python setup.py install
安装完成后,进入python
在终端里输入
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import django
>>> django.VERSION
(1, 1, 0, ‘final’, 0)
>>>
看到版本号 说明成功了
3.下载安装MySQL-python
网上的教程是写安装1.2.2的 我这里安装是1.2.3
这个环节是最耗费我时间的,当然最后证明和我安装mysql版本有关系
http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz/download
用tar zxvf MySQL-python-1.2.3c1.tar.gz解压缩
进入目录后
使用命令vi site.cfg
修改13行为mysql_config = /usr/local/mysql/bin/mysql_config
修改以后使用
python setup.py build
python setup.py [...]
Click Here