做这样的网站,风险成本太高了,一不小心敲诈、损害商业信誉之类帽子就找上门来了
#10 楼 @jxs471494539 我刚好做过和你一模一样的需求,采用的解决方案是 prawn + swftools + flexpaper,全浏览器支持,应该和 @Victor 说的差不多
prawn 解决 PDF 生成的问题,swftools + flexpaper 解决预览和打印的问题。其中,flexpaper 可以购买他的授权,但我是到 googlecode 上拉下他早期版本的源代码下来自己修改的。
#51 楼 @lgn21st 何必和一个小屁孩较劲儿呢?顽固的人是听不进任何意见的,他的反感既无事实依据也无逻辑基础,也就是自己所说的“浮燥”,他连开复老师都不听,怎么又会听赵波老师的呢,他不听是他自己的损失,任何都帮不了他。
@johnnyhg 也许你还年轻,但你至少做人要有礼貌,对人要尊重。作为一个老大哥,我愿意给你分享两个小故事:
故事一:前些日子,我们的新院长上任,一直没有机会碰面,有一天偶然相遇,简单的聊了两句,院长大人竟然有点点儿矜持,有点儿难为情,有点儿紧张(我承认我自己的确有点儿小帅),下来以后,我陷入了沉思:警醒!警醒!!为什么我还是老是去注意别人身上的缺点呢?人家是我上司的上司,我是他下属的下属,我第一时间观察到的居然是他的缺点而不是优点和长处,这一定是我自己的思维习惯出了问题,戒之,戒之!
故事二:更早几年,我在另一个单位的时候,我们领导花了几万块请了一个专家来给我们洗脑,结果课讲得一塌糊涂,我们纷纷抱怨请了一个水货,骗了单位的钱,但领导仍然对该水货极为客气,多次致谢,面对我们不解的表情,领导当时说了一番令我至今印象极深的话,领导说:我们请来的专家,讲才智讲水平,绝大多数都不如我们在座的中层干部,现在的人这么聪明,资讯这么发达,每个人的大脑都是经过充分开发的了,我们请一个专家来,不可能句句金言,每一段话对我们都有帮助,只要他有一两句触动了我,提醒了我,我就认为是值得的,是有收获的,我太聪明了(众人大笑),进步太困难了,当我忽略你们身上的缺点,你们每一个人都是我的老师,老师们好!(干杯,喝酒)
@howiehu 除了翻译问题外,看中文书还有个问题,就是可能你看书时不会足够专注,特别是当你的英文水平不是很高的时候,英文材料可以保持你的注意力。
另外,书不必通读,大致翻翻就可以了,弄清楚原理之后要果断大段大段的跳过,老外都很啰嗦的,如果你没有遇到问题,你一辈子都可以不理它,遇到问题后再回去详读即可。
#29 楼 @nightire 你把我问糊涂了,加了 turbolinks 之后,究竟可不可以用 $ ->
呢?
我升级 Rails 4 的第一坑就是这个了,当时简单的搜索了一下,发现有三个选择:
$(document).on 'page:load' ->
gem 'jquery-turbolinks'
当时花了两个小时试了试后两个选择,都是坑坑不止,唯有 dd
一下最爽,半秒钟解决所有问题,世界一下就清静了……
当然,我两个小时的理解肯定是非常肤浅的,你问我确不确定,我真的不确定,你知道什么说出来嘛,我希望从你的帖子中获得营养,真的。
至于说态度,你太认真了,我再说一遍,不要以自己的思维方式来理解别人。对于技术问题而言,态度是最扯淡的东西,我说它不好有我的理解和理由,理解不一定正确,理由不一定站得住脚,你如果心情好,出来指点一下我理解上的偏差,我会非常感谢你;如果你心情不好,淡定,当个笑话得了。
总之,有个东西有人喷,然后又有人不准喷,在喷的人和不准喷的人有什么区别呢?我认为理想的方式是,各自谈各自的感受和理解,言之有物,言之有据,思想有冲突才有进步,一味和谐有什么意思呢?
还有,不要对 屎
太敏感了,好吧,如果你一定不许我用屎来形容 Turbolinks,我还有一词能非常贴切的形容我当时的感受:fuck me!
实际上我年龄比大很多,这么说吧,小孩子会顽皮,大人会呵斥,老人会呵呵——我叫你要包容我喷,充分说明我已经老了。
解决静态文件重复解析的问题
,是的,我前文也是说的这个意思,只是用词更通俗一些,我也还很啰嗦的表达了我的疑问:静态文件需不需要被适当地多次解析?
如果适当的多次解析是必要的,Turbolinks 就是在解决一个虚假的问题。而正如 Turbolinks 名称暗示的,你所说的链接加速
这个效果,Chrome 等浏览器的预加载功能已经在消灭这个需求了,从这点来看 Turbolinks 也似乎是在解决一个即将消失的问题。
我觉得你把技术神圣化的理解来源于你说 Omakase Stack 是如何做的,这让我觉得你有点死板,不管是 Turbolinks 或是 pjax,它们都离不开 UJS,UJS 有被讨论的必要吗?
最后总结陈词:我纯个人意见认为 Turbolinks 不值得深究,非要我选择,我宁愿选择 pjax。但是,更可能的是:屎味巧克力,和巧克力味的屎,我会吃哪一个呢?我两个都不吃不可以么,就像你说的,下一个项目,我也会就尝试纯前端方案,也许那才是未来正确的方向,对不对?
讨论到这儿我想就没有必要继续了,我想给楼上的建议是,试着学会包容不愉快的东西能让你的心情更加愉快,另外,不要把任何东西神圣化。
绝大多数开发者,并不会把什么 Omakase 或 Prime 技术栈当成法律,也不可能认为哪个东西就是万能的,这样只会狭隘你的思维。我想讨论的是,这个东西所要解决的需求是什么?这个需求需不需要解决?它付出的代价是合理的吗?但一直没有得到正面回应。
另外,请不要以自己的思维方式来理解别人,尊重每一个人的不同。Rails 中,有好用的部分,也有不好用的部分,选不选择与喜不喜欢是两回事,喜不喜欢与评不评价也是两回事,选择、好恶、评价等等都是权利,都值得尊重,为什么要我三选一,二选一?
Anyway, take it easy, thanks.
#17 楼 @nightire 基本上我完全同意你本楼的观点,但你说的和我不是一回事,你在意的是一种态度价值观,而我在评价 Turbolinks 本身。
事实上,就我自己而言,除了拉肚子,一般不喷某种东西。但是,我仍然认为这种表达方式如果建立在自己的真实感受的基础上,喷一喷也无伤大雅。就进步而言,反馈是必需的,特别是负面的反馈。不是每一个人都有被喷的能力,就像不是每一个都能设计出 iOS 7 一样,但那并不妨碍人们表达对 iOS 7 的真实感受,然后,iOS 7 的确也在被喷中前行。
我的观点是,无论是无内容的喷,还是无内容的反对喷,都是无意义的,都是噪音。
就技术能力而言,@nightire 远胜于我,但 @nightire 你并没有回应对等的东西给我,很是让我失望,这好比我给你谈待遇,你却给我谈理想,这不是耍流氓吗?
下面我们继续谈一下待遇的问题:
我看了 @nightire 最后推荐的评论,他说使用 Turbolinks 之前要想清楚这三点:
• Your JavaScript is designed to be long-lived across many different
HTML pages without a refresh
这一点我的想法是,Turbolinks 过于理想化了,没有解决真实的需求。我再次重申下前文的观点:比方说,帖子列表页面 与 帖子显示页面,css 及 js 都大不相同,难道不是重新加载一下的恰当时机吗?真实的应用都是复杂的应用,极有可能是由几个或十几个而不是由一个页面应用组成的,在不同的页面中,你让毫不相干的 js 存活,有什么意义?还是用这个简单的例子,我认为,在帖子列表页面中点分页链接,页面不应该刷新,在帖子显示页面中回复评论点喜欢,页面也不应该刷新,而从列表页面跳转到显示页面,刷新一下 css 和 js 是非常必要的(你要加载非常多新的东西)。
另一方面,如果你的应用的确是一个单页应用,那么,Turbolinks 也不是正确的选择,前端 MVC 才是。
• Your refresh handlers are idempotent. Don't register event handlers
or other bindings in a refresh handler unless you reliably tear them down.
• You audit all third-party code that you use to make sure that they do not
rely on DOM Ready events, or if they do, that they DOM Ready events are
idempotent. If you don't feel comfortable auditing and cleaning up
third-party code, don't use any.
这两点,足以把绝大多数人吓退了吧,我最喜欢 $ ->
了,你不让我用,我怎么活?什么!?第三方库也不能用??你知道多少第三方库依赖 DOM Ready 吗???
综上所述,Turbolinks 在现阶段,并不值得使用。
再次谢谢 @nightire ,请你明确回应一下我要涨工资的要求,谢谢。
客观的说,turbolink 在客户端的实际体验中,页面刷新的闪烁感有所降低,但与 pjax 相比有相当明显的差距,特别是在稍低端一点的机器上,turbolink 的体验相当接近传统方式的刷新闪烁感。
从原理上,turbolink 既不节约带宽也不节约服务器资源(注意传统方式中 css 和 js 在客户端都是有缓存的),它真正节约的是 css 和 javascript 在客户端的本地加载时间和执行时间。在传统方式中,css 和 js 虽然都有缓存,但浏览器从本地缓存中取出来并执行它也是需要时间的,而 turbolink 的工作方式主要就是节约了这个时间。
我曾用过 rack-pjax,简单的试用了一下 turbolink 之后,马上认为眉毛胡子一把抓的 turbolink 绝对是对 pjax 的一种错误进化方式,很有可能 Rails 4 的绝大部分的使用者都会毫不犹豫的删掉 turbolink 那一行的,而我自己正是这么做的。
pjax 相比 turbolink 最大的优势在于简单性和灵活性,它对页面事件没有侵入,js 代码该怎么写就怎么写,用不用 pjax 与自己的 js 代码一点关系都没有。第二个优势在于 pjax 更接近真实的需求:我点页面上的某处链接,页面上另一处发生改变
,这种更类似于原生程序的体验才是需要的。而不是 turbolink 这种:我点页面上任何一处链接,整个页面无闪烁地发生改变
,这种是真实的需求吗?至少对于我来讲不是。因为如果整个页面的内容都变了,无论如何都是有闪烁感的,不信你们自己试试。
虽然我认为 turbolink 本质上就是一砣屎,但是 pjax 相关的 gem 已经不更新了,但我想起了 DHH 曾经的疑问,pjax 很好啊,为什么大家不用它呢?他可能以为是因为 pjax 的编码负担太重了,或者可能以为是没有集成进 Rails 核心的缘故,所以他又制造了 turbolink 这个轮子,还整成标配的。
但是很有可能,DHH 错了,大家不用 pjax 的原因不是它不够好,也不是因为它太复杂,而是万恶的 IE:我 TMD 百分之九十五的客户都用 IE,上 pjax 还有意义吗?
就像 #16 楼说的,kindle 看小说还可以,技术书看起来非常不爽,代码乱成一团糟。
@ugoa 不是的,工资以基金股权竞购凭证的形式发放
本基金的全部股权为 100 比特币,以股权认购书的形式向市场投放,每年 1 万份,持续投放 10 年;另行发放股权竞购凭证 1 亿份,每份面值 1 元,按 1 元价格等值销售;竞购凭证有效 100 年,可以 100 年内任一时点竞购股权认购书,为保证公平,竞购以平均价格结算(非价高者得),例如,2014 年 3 月共有 30 万手竞购,市场实际股权认证书余量为 1.5 万份,则成交价格为 20 份凭证购 1 份认购书。
竞购凭证也可在市场上直接交易,当前价格在市场上已经炒到了 13.14 元,目测还会继续上涨。但本司会密切关注市场动向,适时投放竞购凭证,平抑市场价格,严防泡沫产生;当然,本司可投放的凭证总量严格限定为 1 亿份,除此之外本司并无其它调节手段,因此本司友情提示凭证价格急速飙升的风险极大!
本次加盟的程序猿工资将高达 2K 凭证/月,按当前价格算,足以在帝都六环外买 1 平米,工作 10 年买房买车不是梦!特别优秀的还有认购书直接发放!!心动不如行动,抓紧了!!!
——人事财务项目开发策划部 副部长(主持工作)
#25 楼 @RainFlying 在哪儿买的?我在网上看这款高清屏的最便宜的报价都要 8000 多,准备给媳妇整一个。
SQL 部分也可以优化吧,在日志中:
SELECT COUNT(*) FROM `posts` WHERE `posts`.`item_id` = n AND `posts`.`item_type` = 'Wooer'
这条语句几乎占据了三分之二的查询时间,如果在 Item
中将 post_count
进行反范式设计(denormalized)的话,查询时间估计可以控制在 200ms 以内。
相对于 commets,特定类别的 posts 数目的变动频率相对较小,这里应该是一个进行反范式设计的恰当时机。
@metal 我就炒成「贡献」了,入手价很高,使劲折腾一番后摊薄为 25.6 的成本,然后扔在那里一年多时间没动了,看到这个帖子后特意去查询了一下现价:8.9 元。
无论业绩、前景还是消息,普通散户总是后知后觉的,怎么可能玩得过提前布局者呢?
所以,楼主,有公平的市场环境才能谈技术,祝你好运!
好吧,我承认,实际上我是一名 全职教育专家 兼 业余程序员。
各位对乱序文字的讨论激发了我对诵读困难的研究兴趣,我的问题是:为什么中国人普遍存在‘哑巴英语’,而外国人普遍存在‘诵读困难’?
由于本人对英语一窍不通,首先呼唤一下 @xiaolai
对于诵读困难,英文叫作 Dyslexia
,欧美国家已经进行了广泛的研究了,他们认为,阅读分为以下 8 步(同时进行):
- Understand the way speech sounds make up words.
- Focus on printed marks (letters and words).
- Connect speech sounds to letters.
- Blend letter sounds smoothly into words.
- Control eye movements across the page.
- Build images and ideas.
- Compare new ideas with what is already known.
- Store the ideas in memory.
源自The Nemours Foundation,这个基金会是杜邦家族的Alfred I. du Pont于 1936 年创办的。
其中,1-5 步发生障碍即是诵读困难的问题,而 6-8 步则属于智商的问题。
我们明显可以看出,上述对阅读过程的理解完全是西式,第 1、3、4 步都在大脑中建立发音的过程,而我们中国人绝大多数人看书时并不会进行默读的,也就是说老外在阅读时这样进行的:字母(字) → 音 → 义
,而中国人是这样的:形 → 义
,但我们的外教马上就跳出来反驳了,说读音是阅读速度的最大障碍,他们实际是这样进行的:字 → 义
,这时我的问题就来了:
意义在大脑中有声音没有?思维在大脑中有声音没有?
这个问题在没有进行科学研究之前很难说有或没有,但我倾向于认为对于绝大多数正常人而言 意义是有音 的,快速阅读时只是压缩了发音这个过程,也就是说快速阅读是这样进行的: 字或形 → 音 → 义
,而默读时则有可能是这样进行的:字或形 → 音 → 脑海中发音 → 音 → 义
。
如果以上假设成立的话,中国人和老外在阅读时最大区别还是在于 音 这个环节,中国人建立语音的过程是查表式的取音,比如你看到 研表究明
是迅速反应出对应的读音 yan-jiu-biao-ming
,而不是这样的: y-an, b-i-ao, j-i-u, m-ing
。
而老外是拼写式的 拼音,即脑海中并没有读音表,而迅速进行第 4 步 Blend letter sounds smoothly into words.
,把发音拼出来。好了,因为种种原因拼不出读音的美帝儿童,不幸得很,你中 Dyslexia 奖了。
有诵读困难的老外如何克服诵读困难的呢?
Adult dyslexics can read with good comprehension, although they tend to read more slowly than non-dyslexics and perform more poorly at spelling and nonsense word reading, a measure of phonological awareness.67 源自维基百科
简单的说就是把它读出来,进行无意义的(指对阅读过程而言毫无意义)“读”这个动作,但他本来不会拼读嘛,如何去读呢?答案是:和中国人一样,记字形,记读音,建立字形 →读音
的匹配表。(这个是有大量研究证据的,但我简单的翻了一下,懒得去查来源了)
回头看 哑巴英语,答案就呼之欲出了:
中国人的 哑巴英语 可能是这样进行的:字形 → 中文义(发中文声音的义) → 义
,而正确的顺序也许应该是:拼写 → 英文音(发英语声音的义) → 义
,由于中国人自小以来都在进行 字形 →读音
的匹配,所以我自己,一个单词的 读音 和 拼写 在不同程度上都是分别记忆的,很少有 拼写 和 读音 浑然一体、密不可分的学习记忆过程,各位看官,你们呢,是如何学习和记忆英语的?
所以,我目前的初步研究假设是:Dyslexia 和“哑吧英语”互为印证,中国人以中文的方式学习英语结果就是“哑巴英语”,Dyslectic 以中文的方式进行阅读和记忆,则可在一定程度上克服 Dyslexia。
不知 @xiaolai 以为如何?
ps: 以上假设仅系头脑风暴,经未科学研究论证,公开发表前谢绝同行(教育研究工作者)借用,谢谢!
@guyanbiao @ashchan @imlcl @fenprace
科普一下,大脑在这里的算法主要是采用 并行算法 + 模式识别
其中并行的规模并不宽,一般人都不超过 4 个字,因为汉语词语和成语很多都是 4 个字的,比如 研表究明
的中的任何一个字掉在下一行,任何人都能在第一眼找出错误来。
而 模式识别是人类大脑的最强项,一般人都能轻松的记住出几百上千张脸,并在半秒钟内迅速从一堆人中识别出自己的 老婆/老公/爸爸/妈妈/女神/备胎/千斤顶…… 来,让目前世界上最先进的机器也自叹弗如,关键中的关键是,人类大脑在进行模式识别时,近似于不耗能,极其绿色环保。
大脑的 模式识别 算法是全媒体的,图像、声音、文字、触觉、味觉等等等等,都能轻松应付,你在黑暗中听在熟悉的人轻轻的一咳,你也知道是谁;你闭着眼睛随便一摸,也能分出女同事和老婆的不同来……
尽管如此,需要指出的是,中国的文字更倾向于图像化,拉丁文字更倾向于语音化,所以打乱顺序也不影响阅读仅限于汉字,英语并没有这个效果,特别是英语母语者。汉语母语者与拉丁语系母语对于文字的处理算法是有明显差异的,汉语的算法更高端一些,所以欧美国家中有大概 10% 的人存在着 拼写障碍 和 诵读困难,据他们讲这是一种病,但这种病在汉语母语者中的发病率无限接近于零。
@iBachue 可能是姿势不对。。。你们都不在床上用电脑吗