jump to navigation

CurlFtpFS: FTP 文件系统 March 2, 2006

Posted by jnan in 社交网络.
8 comments

自从上次说到 FUSE 用户空间文件系统,我就感到这一功能非常有用。之后试用了一下用 Python写的 flickrfs,因为不懂 Python,感觉不是很好:-(

这两天因为用 Ftp 传多个目录/文件,Linux 下面命令行格式的 ftp client 似乎都不支持多个文件上传,于是就想到了用户空间的文件系统。

FUSE 的主页上浏览了一下,有两个:FuseFTP 和 CurlFtpFS 。FuseFTP 使用 Perl 实现,下载之后总是不能使用,对 Perl 不了解,也就放弃了。CurlFtpFS 用 C 编写,其中用到了 libcurl ,看来也挺麻烦的,不过总算可以用。

curlftpfs 是作者 braga 2006-02-21 在 sf 上注册的,用的人还不多,起码在 blog 空间没有搜到记录。curlftpfs 没有提供帮助信息,因此在怎么使用上多试了几次,发现使用下面的格式可行:
./curlftpfs ftp://username:password@ftp.sitesled.com /mount/point

可能是因为网络的问题,我用 curlftpfs 挂在 ftp.sitesled.com 感觉并不好,传文件很慢,后来断掉了。不过之后探索时,我挂在本地 ftp server 的时候感觉还是很不错的。

当然了,构成 curlftpfs 的主题自然是 fuse 和 libcurl 。正式这两个幕后英雄才使得 curlftpfs 不到 1000 行就达到了目的。

此前已经介绍过 fuse ,这次着重介绍一下 libcurl。curl/libcurl 支持想到多的协议,一开始接触 curl 的时候没有太在意,感觉不过是个命令工具而已。但是当我了解到 curl 支持的协议和 libcurl 的广泛应用之后,我立刻对其刮目相看了。curl 的网站上这样描述:

curl is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, TFTP, HTTP, HTTPS, TELNET, DICT, FILE and LDAP. curl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos…), file transfer resume, proxy tunneling and a busload of other useful tricks.

libcurl 中的常用函数有:

  • curl_easy_init
  • curl_easy_setopt
  • curl_easy_perform
  • curl_easy_cleanup

其中,最关键的当属 curl_easy_setopt,设置 curl 用到的诸多参数。

简单抓取 http 首页的程序如下:
#include
#include
#include

int main(int argc, char* argv[])
{

CURL* curl;
CURLcode res;

if ( argc != 2)
{
printf("USAGE: %s \n", argv[0]);
exit(1);
}

printf("%s\n", curl_version());
curl = curl_easy_init();
if (curl == NULL)
{
printf("Error init libcurl!\n");
exit(1);
}
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_VERBOSE,1);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);

return 0;

}

编译:
gcc -o testcurl -lcurl testcurl.c

执行:
./testcurl http://jnan.sitesled.com

cwjboy 对 CURL 有一些研究,较为详细的分析了各个函数。

除 C外,libcurl 还有了 PHP,Python 的 API。

启用 Google Reader March 1, 2006

Posted by jnan in google.
2 comments

RSS 盛行的现在,每个人都应该使用适合自己的 RSS 阅读工具来提高效率,不论是在线的还是离线的,是自己定制的还是托管在服务商的。

之前,我受车东的影响,一直使用 lilina 这个 RSS 聚合工具。但是有因为没有理想的空间主机,所以被我放在自己工作的 PC 上面。

这样就有很多问题。本来在线的 lilina 被我用成离线的了,可访问的地域严重受限;还有 lilina 功能简单,没有分组,没有已读/未读标记,RSS Feeds 管理也很简陋。

于是准备选择一个在线的 RSS 阅读服务。提供这一服务的网站很多,但是我的备选名单只有 bloglinesGoogle Reader。大名鼎鼎的 bloglines UI 比较差,那种安排更适合拥有成千上百 RSS Feeds 的繁忙人士如 keso 者;而 Google Reader 具有很好的 UI,与 Google 已有的产品 Gmail 等结合,可以获得不错的体验。


Google Reader 是 2005 年 10 月推出的, 和 Gmail 很相象,都是用 label 和 star ,而且定义了一些相当符合习惯的快捷键

Google Reader 可以根据相关性排列抓到的文章。大概和 Google Desktop 中的新闻阅读兴趣相关性是一个原理。

另外,Google Reader 可以用 Gmail This 和 Blog This 直接发送邮件或发布到 blog。看到好的文章就用 Gmail This 发送给好朋友共享之也不错,因此我很喜欢这个功能。

WebLeOn 提到了 Google Reader 一键订阅的实现方法,很不错。

Niall Kennedy 在 Google Reader API 里提到: 其实目前 Google Reader 提供了许多 API 来实现功能和 UI 的分离。目前所用的默认 UI 叫做 “lens”,你应该已经注意到,每次访问 Google Reader 都转到 lens 目录下。 Google Reader 的 Product Manager Jason Shellen 在该文留言中证实了 Niall 的分析,并且留言中还透漏有新的 UI 在开发,而且还会正式公布 Google Reader 的 API。

就在写这片文章的时候, Google Reader 不能正常访问了,真想不到又触动了 GFW 的哪根神经?