手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

粗心+jpeg 精度

jpeg大家都知道,它有一个精度的概念,一般如果我们用GD库做缩略图时,默认精度就是100,这时候压缩的图片还是和原来一样清晰,但事实 上我们不需要这样的清晰,毕竟在网页中72的dpi就足够了。所以当我们把精度设置为72时,尺寸会明显下载。下降的很厉害哦。
于是,我在我们目前的项目中用上了自动根据 URL生成了缩略图,指定了某个域名下的图片生成。但最终发现所生成的图片都是超级大,很让我意外,于是将精度调整为72,但效果仍然这样,没有变化,这是为什么呢?
排查了很多原因,都没有发现代码上有任何问题,最终在检查apache的conf文件时发现,我将某个serveralias写错了。我在多个域名中间用","分隔了,事实上多个域名应该是用空格分开。
那可能您又要说了,如果这个域名不存在,那岂不是会报错?是的,事实上就是错了,但。。。。我在默认的网站配置里也有一个自动生成缩图的配置,那个配置中,精度是100.所以,死活排查不出问题。

当然看到这里就知道,我的问题还是解决了。否则我就不可能在这里记录笔记了。
看过我博客的人都知道,我。。。粗心犯的错误太多了。哎。

Tags: apache, serveralias, gd

豆瓣的初衷&文案的力量

文案的作用真有那么大?文案重要大家都知道,只是可能都没有人关注过究竟有多大。
冯大辉在博客中提到:

http://www.dbanotes.net/startup/Excellent_Writer.html
  1. 文案对于互联网产品的作用,就好比路标对行路人的作用。清晰无误的文案带来的效果有的时候胜过胜过数百行代码。和百姓网的朋友交流的时候谈到他们的一个真实案例:付费产品的转化率始终始终无法提高,后来产品人员在表单下面添加了一小行文字,意想不到的是,转化率增加 20% 多;最近丁香园的某个产品改进过程中也有一个相似的例子,功能本身没有改变,只是增加了一行文字提示,结果? 询价量大幅上升。  

转化率多了20%,这是多么恐怖的一件事情啊,文案差的例子,冯也在文章里举例了:

XML/HTML代码
  1. 差的文案有什么影响? 举个例子吧,糟糕的路标有的时候让人恼火,比如北京地铁最早用东西南北做出口的标记,你可以想一下有多少人在地铁里能分清方向? 这是一个经典反面案例;而支付宝当年因为证书问题导致用户修改信息陷入「死循环」,其实也是加一行文字就能避免用户多次重试;再想想我们经常遇到的「您提交了非法请求」、「提交的表单无效」之类的让人莫名其妙或是哭笑不得的提示信息吧......  

冯在博客里提到说豆瓣的产品经理每次在改版前后都会写上一篇博文来介绍新产品或者新功能,他更是表示每篇都看,就象这一篇中提到了:

http://blog.douban.com/douban/2011/06/01/1437/
  1. “豆瓣的发起者发现,对多数人做选择最有效的帮助其实来自亲友和同事。随意的一两句推荐,不但传递了他们自己真实的感受,也包含了对你口味的判断和随之而行的筛选。他们不会向单身汉推荐育儿大全,也不会给老妈带回赤裸特工。遗憾的是,你我所有的亲友加起来,听过看过的仍然有限。而且,口味最类似的人却往往是陌路。”  
  2.   
  3. “如果能不一一结交,却知道成千上万人的口味,能从中间迅速找到最臭味相投的,口口相传的魔力一定能放大百倍,对其中每一个人都多少会有帮助。豆瓣随着这一个愿望产生。豆瓣不针对任何特定的人群,力图包纳百味。无论高矮胖瘦,白雪巴人,豆瓣帮助你通过你喜爱的东西找到志同道合者,然后通过他们找到更多的好东西。”  

以上这两段内容是“关于豆瓣”里的两段话,据说到现在都没有改过,但豆瓣却仍然每期都在改版,当然也是有成功有失败:

XML/HTML代码
  1. 2005和2006, 豆瓣对“发现”的理解是“个性化算法推荐”,就是“豆瓣猜你会喜欢”,包括后来的豆瓣电台。2007和2008, 豆瓣加强了“关于豆瓣”里提到的亲友和同事的口口相传,这就是”友邻广播“,今天叫作”豆瓣说“。2009和2010, 越来越多用户在群组活动里谈论生活的方方面面,于是我们把这部分单列出来,叫做“豆瓣社区”,也分化出了线上活动和豆瓣小站。所有以上的积累让豆瓣这个网站太复杂,开始给用户困扰,所以现在“www.douban.com”分成了几个子网站,每一个都可以更加简单专一。  

哎,

XML/HTML代码
  1. 但生活里除了图书电影音乐还有太多好东西在默默地等着你去发现,所以豆瓣也一直试着能在别的生活领域里帮到用户。2006年我们试了一下“我去”(旅行分享), 不是特别受欢迎。 2008年的同城活动却很受欢迎。今年我们在尝试生活类的小站、社区里的二手交易、“豆瓣猜你会喜欢的团购”,还有一些手机应用。我们希望当别人帮你娱乐游戏八卦的时候,我们可以帮到你的真实生活。我们希望你不上网的时候,豆瓣也是有用的。  

看来,任何产品经理做出来的产品也不是都能够被大众所接受,即使你的想法再好,但超前了就一定OK了,估计,到去年再做这个旅行分享一定会不错,因为,去年驴妈妈、悠哉等都在大力推广,那时候再做这样的分享站一定会很OK。
当然我也不是知名和资深的产品经理,所以,我也只能放放屁,即使我的想法再多也无法让它实现。

Tags: 豆瓣, 文案

PHP 5.4.0 released!

[01-Mar-2012]

The PHP development team is proud to announce the immediate availability of PHP 5.4.0. This release is a major leap forward in the 5.x series, which includes a large number of new features and bug fixes.

Some of the key new features include: traits, a shortened array syntax, a built-in webserver for testing purposes and more. PHP 5.4.0 significantly improves performance, memory footprint and fixes over 100 bugs.

For users upgrading from PHP 5.3 there is a migration guide available here, detailing the changes between those releases and PHP 5.4.0.

Further details about the PHP 5.4.0 release can be found in the release announcement, and the full list of changes are available in the ChangeLog.

Please note that it may take a while until the release is available on all mirrors.

----------

你还在犹豫什么?而且,传说中性能提高了超级多,20倍?50倍?太夸张了,不过提升一点点我还是可信的

diogin在大致浏览了下,稍作了整理:

增加  cli-server SAPI
FPM SAPI 增加 process.max 配置项
增加 http_response_code(), get_declared_traits(), trait_exists(), header_register_callback(), class_uses() 函数
增加 Closure::bind(), Closure::bindTo() 方法
mysql, mysqli 扩展默认使用 mysqlnd
增加 trait
增加关键字 callable,insteadof
E_ALL 包含了 E_STRICT
增加了 <?=
支持 (new Foo)->bar()
支持 0b001001101
支持 $a = [1, 2, 3, 4]; $b = ['one' => 1, 'two' => 2, 'three' => 3];
支持 Class::{expr}()
支持 foo()[0]
闭包里支持 $this 引用
continue $v,break $v 不再支持
缺省时区设为 UTC
缺省编码设为 UTF-8

------

一个MINI的测试server还是有点用的。难道它也想象nodejs那样?谁知道呢

来自80sec:XML实体注入漏洞安全警告

文章不长,可以仔细看看,说的是php中的两个函数,其他语言也可能会有类似问题,但simplexml_load_string是PHP比较常用的函数,所以,要注意一下了。
原文地址是:http://www.80sec.com/xml-entity-injection.html

漏洞介绍:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。80sec发现目前一些普遍使用xml的场景中都存在一种古老的XML实体注入漏洞,这 可能导致较为严重的安全问题,使得攻击者可能可以任意访问服务器以及应用所在网络的任何资源;

漏洞分析:XML作为一种使用较为广泛的数据传输格式,在语言内部允许引用外部资源来作为语言的补充,譬如


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE copyright [
<!ELEMENT copyright (#PCDATA)>
<!ENTITY hi80sec SYSTEM "http://www.wooyun.org/">
]>
<wooyun version="2.0">
<whitehats>
&hi80sec; is a legend
</whitehats>
</wooyun>

这将使得xml解析器以当前上下文的环境引用外部的资源www.wooyun.org作为hi80sec实体的内容,从而在实际的应用上下文里将该部分数据引入逻辑流程进行处理。同样,我们可以使用

file:///etc/passwd
file://localhost/etc/password

进行访问本地文件系统的操作。

不同的解析器可能默认对于外部实体会有不同的处理规则,以PHP语言为例,默认处理xml的方法就包括:

xml_parse

simplexml_load

两种不同的方法,这两种不同的方法在底层完全采取不同的底层逻辑实现,xml_parse的实现方式为expat库,而simplexml_load使用 的是libxml库,两个底层库在解析的时候细节并不一样,expat默认对外部实体并不解析,而simplexml_load默认情况下会解析外部实体 等,所以simplexml_load和DOM等函数会受此问题影响,而xml_parse则默认不会受到影响。
我们不止在PHP,在包括Java,Python等处理xml的外部组件及函数中都证明可能存在此问题,而且已经在一些互联网公司的应用及一些使用广泛的开源软件中都发现存在问题。

漏洞证明:我们将在WooYun漏洞报告平台上提交我们发现的已经被证明的安全漏洞

解决方案:检查所使用的底层xml解析库,默认禁止外部实体的解析,同时增强对系统的监控,防止此问题被人利用;我们将在WooYun漏洞报告平台上发布可能受影响的,请及时关注;

转:结对编程的误区

结对编程在我们现在的工作中真的没有使用这玩意。极限编程也没有用到,我们还是安稳的在一步一步的开发。。。但不代表我们没有尝试过。
其实,在07年的时候,那时候和一哥们就尝试过结对,效率确实上升了不少,但后来仔细想想,正由于两个人水平相近,这样的结对却没有真正带来了效率上升,反而还不如两个人单独开发,事后合并代码。虽然有一些BUG,但总体代码却多写了很多。再过了一段时间,也是和一朋友结对,但效率更低,因为两个人的水平不一致,水平高的受不了水平低的一些低级错误,水平低的却看不明白水平高的在做什么。痛苦。。。后来就放弃了这种想法。
以下是原文:http://www.cnbeta.com/articles/174866.htm
在过去的几年里,我有过许多结对编程的经历。有时在我的团队里进行,有时在客户那里,有时在coding dojo(一种编程模式,几个程序员一起合作完成一个任务),有时在我的开源项目里。对于那些知道如何结对编程的程序员来说,这种模式很棒,很高效。
但是你不能指望在两个程序员面前摆台电脑,就指望他们一开始就做得很棒。结对编程需要学习,程序员需要知道实施者(敲键盘的人)和领航员之间的区别。下面来看看些细节。

在结对编程中,我遇到了一些误区,列在下面。
一、领航员误区
1. 发号施令者
喜欢发号施令的人总是对敲键盘的人说:“到末行,加个反括号,然后…”。他不去关注解决方法和下一步该怎么做,而过度关注一些编程细节。
事实上,他希望他自己来掌控键盘。所以当你碰到一个喜欢发号施令的人,那么将键盘交给他吧,转换领航员的角色。
2. 拼写纠错者
拼写纠错者坐在你旁边,纠正你输入的每个错误字符。当然,他没有时间来真正的进行导航。
和纠错者商量一下,当他给你纠错的时候让他请你喝一杯咖啡(或者任何你想要的东西)。
3. 吹毛求疵者
吹毛求疵者会指责你写的每行代码。当他的意见正确时,他会一意孤行,不用你已经写好的代码,而完全照着他的想法。
就如自由爵士音乐人都是复用其他乐队成员的音符,来构造成一首曲子一样,好的结对编程也应基于现有的基础上进行推进。
试着转换角色,也许吹毛求疵者就会变成一个目中无人的人。
4. 默不作声者
默不作声者是那些几乎不发表意见的人。他仅仅坐在那里看着你工作。
试着问下他对你的方法有什么意见,或者问他下一步该写什么测试代码。
5. 心不在焉者
心不在焉的人企图让你分心,而不是提供给你有建设性的意见,帮你解决问题。
那么让他离开吧,比起一个让自己分心的人而言,不如一个人编程。
二、实施者误区
1. 深藏不露者
深藏不露者仅仅自己敲着代码而不告诉别人他在做什么。领航员不得不靠自己去弄懂代码。关于该用什么方法,该选择哪种设计,领航员和实施者之间完全没有交流。
领航员需要问问深藏不露者关于他的计划或想法。
2. 目中无人的人
目中无人的人通常忽略领航员的所有建议,大多数是因为他们觉得自己的想法或编程技能更胜一筹。
当碰到一个目中无人的人时,立即停止结对编程吧,开始下一个任务吧。自大的人往往也不会是个好的领航员。他们很可能变成发号施令者或是吹毛求疵者。
3. 不知所措的人
不知所措的的人往往不习惯结对编程,非常紧张,不能掌控全局。
确保自己的领航员角色做到最好。小心的提出意见,对于不知所措的人主要给予鼓励。
但是,大多数程序员开始都是这种情况。所以,不要对他们的结对编程期望太高。让他们首先成为一个领航员,或者让能够很好的处理人际交往问题的领航员在他们旁边。
4. 跳跃性很大的人
跳跃很大的人喜欢在代码中进行大范围的跳跃,这样领航员不知道进行到哪里了。
领航员需要让他慢下来,问他关于他的计划,并确保自己比他知道更多的快捷键。
5. 不熟悉工具的人
不熟悉工具的人不知道开发环境的快捷键,效率非常低。
交换角色吧,让他看看你的技巧。或者打印一张印有快捷键的cheat sheet。
我相信还有其他的误区,如果你有什么想法请写在评论留言吧。
原文: planetgeek.ch  编译:伯乐在线
----EOF---
如果上面的事情真的是真的,那证明我们还是有问题,在结对编程的处理上。但我真不敢尝试了。哎

Tags: xp, 极限编程, 结对编程