OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能

一、背景说明
大多数网站基本都涉及到图片缩略图的处理,比如新闻配图、电商商品图等,特别是电商类网站,每个商品图对应多个不同尺寸的缩略图,用于不同的页面。

初期访问量少时,处理流程一般由web程序在上传成功后,同时生成相应缩略图。这种方式在访问量小,单机部署时没有问题。当访问量逐渐加大,服务器由单台变为多台时,这种方式扩展性较差。

以下有几种方案可以解决这个问题:
1、使用七牛又拍云提供的云存储及数据处理服务,解决图片的处理、存储、多节点访问速度的问题,这种方式优点是方案成熟,相应的有一定费用和开发工作,另外有一些小概率的风险,比如云服务挂掉影响本站访问。
2、使用第三方的图片处理程序,比如zimg,点击查看使用手册@招牌疯子开发。zimg的性能和扩展性不错,文档也很完善,会继续保持关注。
3、自己造轮子,根据自身业务,将生成缩略图功能独立出来,与web程序解耦。

我们采用的是第三种方案,参考了网友的基础代码,利用OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能,图片上传及删除还是由web程序处理,缩略图由单独模块完成。目前可实现配置路径及缩略尺寸,无图片时显示默认图片,支持多种缩放方式等,后续可基于GraphicsMagick实现更多功能

继续阅读

利用Ajax.Net读写Cookie

Ajax.Net是Michael Schwarz写的一个.Net的AJAX框架,使用非常方便。在ASP.Net AJAX出现以前,一直是.Net平台开发AJAX应用的首选。

这两天在用Ajax.Net开发一个小的Ajax应用,其中要在Ajax Method中读写Cookie。利用Request.Cookies[“xxx”]遇到了问题。

后来经过Google,找到解决方案,需要使用HttpContext.Current来读写Cookie。

比如读取:
string CookieName=”demo”;
HttpCookie Cookie =  HttpContext.Current.Request.Cookies[CookieName];

写:
string CookieName=”demo”;
string Value=”ok”
HttpCookie Cookie = new HttpCookie(CookieName, Value);
HttpContext.Current.Response.Cookies.Add(Cookie);

参考链接:cookie info within ajax method

微软将开放.NET框架源代码

今天在网上看到消息,微软将开放.NET框架源代码。

来源:译言

微软今天早上宣布.NET 框架库源码将向全世界开放,以允许广大的.NET 框架开发者察看其核心代码,从而有助于他们开发自己的软件。

这很难说微软这一举动的动机是什么,或许是在开发者团队当中,.NET 使用者太少,微软有必要采取这一极端的措施。又或者是微软为了准备推出新一代的富 Web 应用程序(Rich Internet Applications)SilverLight而作的战略部署。到目前为止还是无人问津的Vista,他的核心同样是.NET 框架。

微软这份声明的意义仍然值得我们去思考;希望.NET开发者可以踊跃的讨论一下。

更新:果不其然, Mary Jo Foley的博客 All About Microsoft 已经很好的阐述了这份声明。更多的评论请参看:Techmeme.

来源:CNET科技资讯网

CNET科技资讯网 10月5日 国际报道:微软以往与开放源代码运动对抗的恶名昭彰,所以,今天微软宣布将把.NET架构开放源代码时,引起一片讶异之声,不难想见。

.NET源代码将依照微软的Reference License规定授权。换句话说,此源代码只供你用在应用程序的除错、维护或改良上。你不能为了其他目的而修改该源代码,或转而散布出去。由此可见,这似乎是微软目前为止,限制最严格的共享源代码授权许可。

这项宣布证实,.NET将成为共享源代码(shared source),但不可与开放源代码(open source)混为一谈。

除了释出.NET程序库(libraries)外,微软也将把.NET的除错支援整合到Visual Studio 2008里。根据微软的声明:‘你将能够把.NET架构的symbols设定成一次打包下载,或视需要时再手动撷取。’

即使.NET源代码未完全开放,这对微软而言,仍然是朝开放跨出一大步。即使许多.NET开发人员仍评批,这种事早该做了,但我确信,开发者社群仍会从中受益。这显然让微软朝开放源代码更迈进一步,而这种发展是令人耳目一新的。不过,微软将来会不会真的‘撩落去’,仍有待观察。(唐慧文/译)

不管怎样,这是个好消息。

PHP+UTF8+源文件+乱码解决方法

前几天在改文章系统,发现查看源文件后,中文是乱码。Google了一下,大多是讲php的substr函数有问题。但我遇到的貌似不是这个问题引起的。

今天又开始解决这个问题。鬼使神差,用百度搜索”php utf8 源文件 乱码”,看到一篇文章:cmsware生成的utf8页面用”查看源文件”显示的中文都是乱码,要如何解决,打开后看到关键的一句:

还有就是cmsware生成的utf8页面用”查看源文件”显示的中文都是乱码,要如何解决?
原因是cmsware生成的html文件未包含utf8的bom信息……用dw编辑模板页面属性,选择添加bom信息ok…没人帮忙只好自己动手了,呵呵

遂用DW编辑模板,添加bom信息,上传,测试,结果OK。

搜索“模板 没有bom信息”得到一些相关文章,留个记号,以备查:
字节流编码获取原来这么复杂- 曾登高- CSDNBlog

UTF-8, UTF-16, UTF-32 & BOM

什么程序员最易找工作? 十大热门语言大汇集[转]

掌握一些编程语言可让您在职场竞争中收放自如,而扎实的技巧将会让您炙手可热。但是,语言种类繁多。很多开发人员掌握多种语言,懂得在合适的地方合适的时间使用正确的语言,而大多长期从事编程的人员会告诉您周期性的学习新的语言是成为一名优秀成功的网络开发人员的重要步骤。

圣地亚哥的软件工程公司Interknowlogycom的CEO Huckaby说:“我的一位老师曾说编程语言就是一门语言。它与你是否为一个好的编程人员无关,仅仅就是语法。”

但是,Huckaby还说当他的公司运行尚未稳定时,他几乎没有时间来寻找新成员,即便是只懂得某种特定语言的入门级新成员。“我们疯狂雇人,但是那并不容易。我们只是寻找那些刚出校门的有良好天赋的新手,他们只需了解.Net 或Java,因为这样我们可以对他们进行.Net的培训。”Huckaby如是说。

Grandview Systems软件开发主管Wayne Duqaine说:“不要只停留在一两种语言上。我在1969年刚入行的时候,Fortran、Cobol和S/360 Assembler是敲门砖。而10年后,一些新的语言又流行开来。就最近一次统计,在过去30年中,我学习掌握了超过24种不同语言。”

以下,我们选取了10种编程语言进行比较,为您寻找更有挑战的工作提供参考。

1. PHP

基本描述:一种开源,工作在服务器端,跨平台,使用HTML脚本的语言,因为可置入HTML页面,因此尤其适用于网页制作。

学习理由:使用十分广泛。“借助缓存高速调用脚本,并使用编译代码插件来增强效果是今后趋势所在。使用C或COBOL创建Web应用程序是不可行的。

2. C#

基本描述:一种通用编辑,面向对象的编程语言,由微软作为其.net计划的一部分开发而成,包含C和C++。

学习理由:是.Net框架的基础部分。Duquaine说:“如果您大量使用Microsoft的产品,那么学习C#是十分有必要的。”

3. AJAX (异步 JavaScript 与 XML)

基本描述:虽然从技术上来说,这并非一种编程语言,但是AJAX使用XHTML或HTML,JavaScript以及XML来建立互动网络应用程序。

学习理由:自从Google地图将AJAX应用到地图上,对AJAX知识的需求不断膨胀。Huckaby说:“对AJAX知识需求相当大,因为它很难掌握。”微软最近声称将发布一个名为Atlas的工具来帮助AJAX更容易被实施。Huckaby说:“如果微软的Atlas工具获得成功,它将会给普通工作者带来极大的复杂性和困扰。”

4. JavaScript

基本描述:请不要与Java混淆,JavaScript是一种面对对象的脚本变成语言,它运行在客户端的Web浏览器上。它比Java更简洁,拥有简化的命令,易用的代码,并且无需进行编译。

使用理由:它可置入HTML,被用于大量的网页来验证表格,建立cookie,侦测浏览器以及提高设计。由于其易于学习与使用广泛,已被视为重要的学习背景。

5. Perl

相关描述:Perl是一种开源跨平台、运行在服务器端的解释语言,在CGI程序中被大量用于处理文字。

学习理由:Perl在处理大量文字方面的能力使得其非常流行,且广泛用于写入多任务的网络服务器程序。Duquaine说:“如果您正在从事网络应用程序的工作,那么学习某种脚本语言(如Perl或PHP)是十分有必要的。”

6. C

基本描述:一种标准化的通用编程语言,它是最普及的语言之一,也是多种其它语言(如C++)的基础。

学习理由:Duquaine说:“学习C是相当重要的。在学习了C后,跳跃到Java或C#就变得十分容易,因为许多语法是通用的。另外,许多C语言的语法也被用于脚本语言。”

7. Ruby and Ruby on Rails

基本描述:Ruby是一种动态的面向对象的开源语言。Rails上的Ruby则是一种使用Ruby编写的开源网络程序框架,该框架与MVC(模型-查看-控制)结构十分类似。

学习理由:由于简便性,有效性以及让电脑完成任务的能力,近年来,该语言的使用量已经迅速增长。另外的好处是非常容易学习。

8. Java

基本描述:一种面向对象的变成语言,由James Gosling和其Sun Microsystems的同事在上世纪90年代早期共同开发。

学习理由:被许多开发人员所拥戴,被成为“美丽的”语言。它适用于没有.net编程经验的人员。Duquaine说:“如果您不是微软产品的使用者,那么学习Java必不可少。”

9. Python

基本描述:一种动态面对对象的翻译开源语言。使用动态存储管理。

学习理由:Python是一种高度可读的抽象语言,许多开发人员认为其非常有趣,它的语法简单,因此被Google与学术界大量运用。

10. VB.Net (Visual Basic .Net)

基本描述:一种面向对象的语言,在微软.Net框架中使用。

学习理由:最具争议的是VB.Net目前是否为最流行的且是几种必须掌握的语言之一。Huckaby说:“VB.Net目前是被广泛优先采用的。”

解决Discuz utf8版的邮件乱码问题

因论坛每天都有自动注册的用户[应该是用来发送垃圾信息的],于时把论坛的用户注册改为了Email验证,因论坛编码是UTF-8编码,在测试时发现用户收到的验证Email是乱码,Google了一下,找到了解决方法,如下:
==========================================================
修改include/sendmail.inc.php文件,找

$email_subject = str_replace(“\r”, ”, str_replace(“\n”, ”, $email_subject));

低下添加

$email_subject = “=?UTF-8?B?”.base64_encode($email_subject).”?=”;

@mail($email_to, $email_subject, $email_message,”From: $email_from”)

修改为

@mail($email_to, $email_subject, $email_message, “MIME-Version: 1.0\n” .”From: $email_from” . “\n” . “Content-Type: text/plain; charset=utf-8\n”);

==========================================================