Skip navigation.

极湖

无不用其“极”

Posts tagged with "Programing"

用一个简单的"FizzBuzz"程序来寻找合格的编码人员

题目:


打印1到100的数字。
如果数字是3的倍数,用“Fizz”代替。
如果数字是5的倍数,用“Buzz”代替。
如果数字同时是3和5的倍数,用“FizzBuzz”代替。
(语言不限,最好在5分钟内完成)


这个题目,有同事贴在公司的公告板上,下面有同事的回复,看了几段代码,几乎没有一个可称“合格”。

看起来简单的东西,其实真能考验一个人的编写代码的水平。有兴趣的话,您也不妨试试。

推荐看看这篇《Using FizzBuzz to Find Developers who Grok Coding》以及下面的回复。

用LWP::UserAgent实现“Web浏览自动化”

, ,

想用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。

Google C模板

, , ,

如果您打算用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。

简单,严谨,高效

,

脑子里突然冒出这几个词: 简单,严谨,高效。

做程序,尤其是做网站程序,我想因该遵守这几个原则:

1. 人机界面(UI)尽量简单。
2. UI背后的逻辑关系一定要严谨,不能留下漏洞。
3. 处理运算追求高效,包括内存和CPU的有效利用。

这几点,我看Google是做得最好的。
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31