Friday, 1. June 2007, 06:10:35
Programing
题目:
打印1到100的数字。
如果数字是3的倍数,用“Fizz”代替。
如果数字是5的倍数,用“Buzz”代替。
如果数字同时是3和5的倍数,用“FizzBuzz”代替。
(语言不限,最好在5分钟内完成)
这个题目,有同事贴在公司的公告板上,下面有同事的回复,看了几段代码,几乎没有一个可称“合格”。
看起来简单的东西,其实真能考验一个人的编写代码的水平。有兴趣的话,您也不妨试试。
推荐看看这篇《
Using FizzBuzz to Find Developers who Grok Coding》以及下面的回复。
Friday, 20. April 2007, 08:36:34
Programing, Linux, Perl
想用Perl做一个自动登录、自动发送请求并取得执行结果的程序,这时候通常要用到LWP::UserAgent。
做了一个POST数据的例子如下:
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
my %ua_option = (
agent => "Mozilla/5.0",
timeout => 180,
);
my $ua = LWP::UserAgent->new(%ua_option);
my $url = 'http://your.domain.here/script_name.cgi'; # or 'https://...';
my %form;
$form{USER_ID} = 'user_id';
$form{PASSWORD} = 'password';
my $req = POST($url, [%form]);
my $res = $ua->request($req);
if ($res->is_success) {
print $res->header("Content-Type") . "\n";
print $res->status_line . "\n";
print $res->code . "\n";
print $res->header("Server") . "\n";
#print $res->header("Client-SSL-Cipher") . "\n";
#print $res->header("Client-SSL-Cert-Subject") . "\n";
#print $res->header("Client-SSL-Cert-Issuer") . "\n";
#print $res->header("If-SSL-Cert-Object") . "\n";
print $res->content;
} else {
print $res->status_line . "\n";
}
如果用SSL,需安装Crypt::SSLeay。
Thursday, 19. April 2007, 07:36:01
Programing, C/C++, CGI, Google
如果您打算用C来写CGI程序,且用到模板技术,
Google Ctemplate 或许正是您需要的东西。
以下是在一个
日文网页上看到的例子:
代码
// test.cc
#include<string>
#include<iostream>
#include<google/template.h>
int main(void){
google::TemplateDictionary dict("example");
dict.SetValue("TITLE", "Hello Google C Template");
dict.SetValue("HEADER", "&");
std::string out;
google::Template *tpl = google::Template::GetTemplate("test.tpl", google::DO_NOT_STRIP);
tpl->Expand(&out, &dict);
std::cout<< out<< std::endl;
return 0;
}
<!-- test.tpl -->
<html>
<head><title>{{TITLE}}</title></head>
<body
<h1>{{HEADER:h}}</h1>
</body>
</html>
编译
# g++ test.cc -lpthread -lctemplate执行
# ./a.out<!-- test.tpl -->
<html>
<head><title>Hello Google C Template</title></head>
<body
<h1>&</h1>
</body>
</html>
以上程序在Cygwin和Linux下均编译通过。
Cygwin下编译生成的Exe文件竟然有1.6M,Linux下编译出来的可执行文件不到10k。
Saturday, 23. September 2006, 13:05:44
Develop, Programing
脑子里突然冒出这几个词: 简单,严谨,高效。
做程序,尤其是做网站程序,我想因该遵守这几个原则:
1. 人机界面(UI)尽量简单。
2. UI背后的逻辑关系一定要严谨,不能留下漏洞。
3. 处理运算追求高效,包括内存和CPU的有效利用。
这几点,我看Google是做得最好的。