2011年09月30日

nginx 使用 ssl

Filed under: Nginx — cmpan @ 2011-09-30 11:46:31

使用如下命令并根据提示输入信息,生成证书
cd /usr/local/nginx/conf

openssl genrsa -des3 -out localhost.key 1024 #创建密钥
openssl req -new -key localhost.key -out localhost.csr
openssl rsa -in localhost.key -out localhost_nopass.key # 生成浏览器浏览网页时不需要输入密码的密钥
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt #生成证书

在nginx的server配置中加如下配置使用证书

ssl on;
ssl_certificate localhost.crt;
ssl_certificate_key localhost_nopass.key;

现在生成的证书是不受信任的,如果需要受信任的证书,需要证书颁发机构颁发(需要用钱解决)。
免费的证书颁发机构:http://www.startssl.com/ 较低版本的ie浏览器可能不支持。

2011年09月29日

最丑陋的PHP命名空间

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-09-29 13:12:29

PHP5.3加入了命名空间,很高兴有了这个特性,把自己写的框架改成使用命名空间的,发现很不爽。

写了个没有命名空间的函数 function myFnc(){}
调用的时候如果页面里声明了命名空间,就必须用 \myFnc() 来调用。
写了一个没有命名空间的类 class MyClass {}
调用的时候如果页面里声明了命名空间,就必须用 new \MyClass() 来调用。

为什么声明了命名空间就不能直接用 myFnc()、new MyClass() 类调用全局函数和类呢?
万恶之源在于画蛇的时候添了一足。
那条足在哪呢?
就是相对命名空间

我定义了如下命名空间
namespace sp\A;
namespace sp\A\B;
namespace sp\A\B\C;

在namespace sp\A;中,我可以使用 use B\ClassName、use B\C\ClassName来使用命名空间 namespace sp\A\B和namespace sp\A\B\C下的类,这是使用相对命名空间来访问命名空间,这造成混乱不少。
有相对就会有绝对,而绝对访问方式是:
use \spA\B\ClassName;
use \sp\A\B\C\ClassName;

看见use中的开头的反斜杠“\”了吗?他就是万恶之源中的万恶之源。

为什么一定要搞个相对命名空间出来而不统一直接用
use spA\B\ClassName;
use sp\A\B\C\ClassName;

如果这样我们没有命名空间的类可以直接用 new MyClass(),而不用 new \MyClass(),
调用没有命名空间的函数就可以直接用 muFnc(),而不必用 \myFnc()

画蛇何必添足呢!

2011年09月17日

PHP数据类型隐性转换的陷阱

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-09-17 05:45:04

之前写过一篇《PHP的动态特性》总结了部分PHP的特性,因为动态语言的特性,我们使用PHP时倍感便利,但是便利的同时会引来一些陷阱,不得不防。
(全文 …)

2011年09月9日

PHP命名空间

Filed under: PHP — 标签:, , , — cmpan @ 2011-09-09 13:04:18

命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题。

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

(全文 …)

2011年09月6日

Windows平台用Netbeans7开发PHP5.3应用开发环境配置

Filed under: PHP — 标签:, , , — cmpan @ 2011-09-06 11:27:20

之前写过ZendStudio调试环境的设置 见 http://wiki.yulans.cn/php/%E8%B0%83%E8%AF%95
一直对eclipse的界面不感冒,更喜欢netbeans的简洁,所有现在用netbeans来做J开发。不想再开个ZDE,配置一下PHP5.3+Netbeans7的开发环境。
(全文 …)

2011年09月1日

架构:豆瓣网技术架构变迁-大型网站架构 (转载)

Filed under: 未分类 — cmpan @ 2011-09-01 18:42:26

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首 席架构师。洪强宁和他带领的技术团队致力于用技术改善人们的文化和生活品质,在网站架构、性能、可伸缩性上进行深入研究。豆瓣网曾获软件中国2006年度 最佳技术应用网站。

(全文 …)

Apache Thrift入门1-架构&介绍

Filed under: 架构 — 标签: — cmpan @ 2011-09-01 18:40:04

Thrift  是什么?
Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的 facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言,例如:  C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, Ruby, Smalltalk. 在多种不同的语言之间通信thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。Thrift适用于程序对程 序静态的数据交换,需要先确定好他的数据结构,他是完全静态化的,当数据结构发生变化时,必须重新编辑IDL文件,代码生成,再编译载入的流程,跟其他 IDL工具相比较可以视为是Thrift的弱项,Thrift适用于搭建大型数据交换及存储的通用工具,对于大型系统中的内部数据传输相对于JSON和 xml无论在性能、传输大小上有明显的优势。
(全文 …)

PHP读取服务器端文件提供弹出下载窗口

Filed under: PHP » 实践经验 » 未分类 — cmpan @ 2011-09-01 16:10:09

有些文件需要经过身份验证以后才能下载,我们不容用户知道下载的地址,甚至文件不存放在web文件夹下,感觉是不是做起来比较难呢?用PHP几行就可以了。这是在PHP官方手册提供的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
}
?>

CentOS流量监控iftop安装笔记

Filed under: 网络技术 — cmpan @ 2011-09-01 10:11:48

之前机器上装有iftraft,用起来不习惯,再装一下iftop,记录一下需要安装的相关模块跟下载地址。

yum install flex byacc libpcap ncurses ncurses-devel
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install

Copyright © 2009 流水孟春 版权所有
Web技术,LAMP,Nginx,Web2.0,前端技术
Powered by WordPress & UI Designed by 流水孟春