V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  keakon  ›  全部回复第 34 页 / 共 55 页
回复总数  1086
1 ... 30  31  32  33  34  35  36  37  38  39 ... 55  
2011-11-08 21:42:32 +08:00
回复了 Pandroid 创建的主题 ACG 这里可以讨论动漫么?《EVA》大家觉得如何?
表示是我看过倒数第2差的片,根本看不下去,没有任何一个人物或是情节吸引我。
2种方式要达到的目的都不一样。

Interface只是提供了一个方法的签名,而没有提供实现。任何实现这个接口的类都需要自己去编写实现代码。
Mix-in可以真正地继承这些方法的实现,你直接拿过来用就行了。

并不是任何引入耦合的地方都会影响程序的复杂性。继承是最强的耦合方式,但合理使用继承,只会降低复杂性。

动态语言的一个好处就是减弱了这种耦合,你可以在运行时随意替换对象的类,一个类的父类,或者类和对象的方法,它们并不像静态语言那样死死绑定在一起的,更像是组合的方式。
而反观Java的接口,它同样也是耦合,只是没有实现而已,你没办法撤销一个类的接口。
Objective-C也多少有些动态性,虽然也是使用接口,但类的方法可以在运行时随意更改。

动态语言(准确来说是动态类型语言)的另一个好处就是duck typing可以减少很多代码量。
在参数传递时,不需要知道它是什么类型,只要它能做这件事就行了(有这个方法或属性)。不能做就抛出异常,反正是调用它的人传错的参数,与方法本身无关。
Java我就不说了,既然你是Java程序员,你也应该知道设计接口和规范要花多大精力,使用时还得避免各种代码的smell。
但合格的程序员是知道怎么去避免传递不符合要求的参数的,这些Java中看上去很华丽的设计,大部分情况下只不过是在限制程序员的自由和浪费时间而已。之所以Java程序员那么注重设计模式,而动态语言中却没那么注重,根本原因就是大部分设计模式就是为了解决动态语言中不存在的问题。

而在不用担心参数的类型后,动态语言的函数/方法还获得了巨大的灵活性和通用性。
如果你看过jQuery(一个JavaScript库)的接口的话,你就会惊奇同一个方法为什么可以支持那么多种类型和数目的参数了。如果是用C++的话,不得不用一堆重载和模板来实现。
而在Python中,更是可以通过列表和字典参数来实现超级通用的方法(不管传什么类型的参数,顺序如何,数目如何,通通支持)。这对于Java来说完全无解。

对于你所说的读方法,如果这2个类要通用的话,在设计时就会人为地规定采用相同的方法名(如read),这和接口的约束其实是一样的,只是由人来对代码负责而已。要真设计得很差的话,你也可以用别名。

而如果要调用其他类的方法,我觉得你应该调用Mix-in自己的(空)方法(即方法存根),然后再让引用它的类去覆盖实现。

最后,JavaScript的原型继承虽然不支持多重继承,但方法和类可以随意组合和分离,因此大可使用apply、call来借用其他类的实现。而Python支持真正的多重继承,且也可以用metaclass来mixin。
不过就我个人而言,还是习惯mixin的方式,因为现实中基本上遇不到需要多个父类的意境。
2011-11-08 15:49:26 +08:00
回复了 xiaojay 创建的主题 云计算 阿里云oss存储貌似开放了
上海电信2M,瞬间打开
2011-11-08 02:22:26 +08:00
回复了 benzhe 创建的主题 分享发现 原来chrome下调用google的语音识别这么简单
识别出我说的“识别率不太高”,但是点发送的时候失败了……
2011-11-07 23:12:14 +08:00
回复了 keakon 创建的主题 Google 做了个重新启用Google Reader分享功能的Chrome插件,求测试
@umgbbc 本来就有啊……
2011-11-07 23:11:42 +08:00
回复了 HappyV 创建的主题 Google App Engine 请教专家:新价格体系下用一个叫datastore_cache.py的问题
这个东西有2个bug,我写了个fix,不过不知道是否还有效:
http://www.keakon.net/article/2066

建议不要图方便,自己处理缓存才是最高效的
2011-11-07 18:47:37 +08:00
回复了 Livid 创建的主题 Project Babel 关于新价格模型的一些新体会
更正前面说错的一点。免费配额是每天5万read,所以memcache命中率得高于99%。
2011-11-07 11:41:28 +08:00
回复了 Livid 创建的主题 Project Babel 关于新价格模型的一些新体会
@saga 我目前每天超过10000的动态请求,每月将近20万PV(根据CloudFlare统计),访问量再大1/4就超出配额了。而如果采用以前的计费方式,可以增大20倍,考虑到memcache会更有效,达到最初宣称的500万pv/月毫无压力。

我这几个月所做的优化,我确信并没有多少能帮助提高memcache命中率的,但是却从49%增加到61%了,唯一能想到的原因就是访问量增大了不少。
2011-11-07 01:54:53 +08:00
回复了 killpanda 创建的主题 程序员 不会写代码...
@killpanda 写了半天,突然想起以前写过……
http://www.keakon.net/article/107200

编程其实很容易学的,只要你有兴趣。
这几周我基本上没有在凌晨5点以前睡觉,没有任何人逼我,只有兴趣能驱动我这样做。
我也曾因工作需要而上过2周的倒班,结果没几天我就受不了,直接挂机睡觉去了。
兴趣对完成一件事有巨大的推动力,可惜的是我看不出你对编程有任何的兴趣。

其实培养兴趣的方法也很简单。
首先你得抛弃它很难学的想法,那些难到看不懂的直接抛弃,先把简单的学会,够用就行。
其次你别把它当成谋生的工具,它其实就是个玩具,你学它的目的就只是为了实现你的idea。任何与实现你的想法无关的知识都是狗屁,浏览一下知道是怎么回事就行了;只要那些能帮助你实现想法的知识,才值得你对其感兴趣。

我想能小学毕业,智商上就已经足够学习编程了,所以第一点对你来说不是问题。
因此你现在要做的就是寻找你的idea,任何你感兴趣的都行。例如你对旅游感兴趣,就去试试怎么快速查询和归类旅游的资讯;如果你对小说、漫画感兴趣,试试如何批量下载;如果你对泡妞感兴趣,那个啥违法的我就不说了…
当你实现的想法足够多时,你就会上瘾了,直到戒掉它比戒掉睡眠还难。
2011-11-07 01:03:20 +08:00
回复了 fashiononfilm 创建的主题 问与答 google reader的notes不好用了,有什么替代品?
2011-11-07 00:59:23 +08:00
回复了 Livid 创建的主题 Project Babel 关于新价格模型的一些新体会
异步或是缓存html片段都不会对datastore的read、write数目造成影响,只有缓存的命中率才有影响。而对于小应用,memcache非常不可靠。你做任何代码上的优化,都不如访问量提升来得明显。

那些老外都没看透这点,只有Google的一个员工在我发的那帖中提到了,其他人都是想着法子弄些奇怪的方式来实现。
比如有个人说获取文章时,为了避免访问的实体过多,直接把评论和用户也保存在一个实体里。
而对于节点的信息,也可以把所有节点保存在一个实体里。
他这样做后可以在免费配额内达到500万PV,也就是每10个页面才获取1个实体,很显然memcache命中率至少得90%,这对于小应用来说是天方夜谭。
而实现也特别麻烦,如果实体大于1M还得分成多个实体,搜索和删除的时候非常痛苦。

GAE曾经是个很好的平台,因为只需要考虑CPU,只要设计得合理就没问题。而现在变成必须使用非正常、奇葩或是麻烦的设计,把datastore的ORM能大幅简化设计和编码优势给丧失了。
我宁愿把CPU的价格提升10倍,也不想为新价格去做恶心的设计。

顺带一提,现在支持mysql了,而且免费。不过我估计迟早会变成datastore那样按条数来收费的,count(*)一下就去掉几刀了。
2011-11-05 03:13:50 +08:00
回复了 keakon 创建的主题 macOS 求推荐Mac下好用的文本编辑器
试用sublime text 2中,发现不少惊喜。

命令行就是Python,这对Pythoner来说太方便了。

退出程序前不需要保存文件,再次打开时恢复编辑时的状态,还能撤销。

多重选择功能可以在多个位置同时编辑。

不过js的代码高亮在识别带引号的正则表达式时有问题。
2011-11-04 22:34:42 +08:00
回复了 keakon 创建的主题 macOS 求推荐Mac下好用的文本编辑器
先感谢大家的推荐~

@victor textmate中文泪目。

@roamlog sublime text 2我好像尝试去下过,但是当时没翻墙,貌似没打开网站。稍后再去看看。

@zhouyang textWrangler我也装了,感觉和BBEdit好像,不知道有什么区别。

@qichangxing Editplus有代码补完哦,不过有些语言要自己配置。

@pepsin 不想记vim的快捷键啊,鼠标流…
2011-11-04 19:53:00 +08:00
回复了 keakon 创建的主题 Google 做了个重新启用Google Reader分享功能的Chrome插件,求测试
@umgbbc 恢复样式的
2011-11-04 07:45:15 +08:00
回复了 keakon 创建的主题 Google 做了个重新启用Google Reader分享功能的Chrome插件,求测试
@umgbbc 发现很多人有这个需求,于是做了个Reader Sharer (Original Style):
https://chrome.google.com/webstore/detail/eomlpgpbhpkklpleojomeiglmgikmkle
2011-11-04 01:58:42 +08:00
回复了 shaoshuai0102 创建的主题 iPhone 求助:Downloading Safari safe browsing data导致itunes无法同步
印象中cleanmymac可以删除Safari safe browsing data,你删除掉再试试
2011-11-04 01:33:57 +08:00
回复了 Kirkcong 创建的主题 NGINX 询问一个nginx的技术问题
技术上来说,2个URI完全不一样,可以显示成完全不同的网页…

举个最简单的例子
https://www.google.com/https://www.google.com/?q=ooxx 不一样
https://www.google.com/searchhttps://www.google.com/search?q=ooxx 更不一样

不过对于你自己的网站,既然都是.html结尾,只要你自己不关心查询字符串,还是可以301的
2011-11-03 23:58:43 +08:00
回复了 SolidZORO 创建的主题 分享发现 风扇噪音的好处
可以在编译时加行脚本来播放结束提示音==
2011-11-03 23:09:52 +08:00
回复了 francis 创建的主题 MacBook Air 不知为何风扇况转不止
你看看CPU使用率就知道了…
1 ... 30  31  32  33  34  35  36  37  38  39 ... 55  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2799 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 07:33 · PVG 15:33 · LAX 23:33 · JFK 02:33
Developed with CodeLauncher
♥ Do have faith in what you're doing.