Posts Tagged ‘php’

在博客显示我的Twitter记录

星期三, 11月 25th, 2009

写twitter的时候,总有一丝陌生感,一方面来自对饭否的怀念,另一方面来自GFW的阻挡。毕竟,大多数中国人在技术层面上看不到我的twitter。所以心血来潮,在博客上开个页面,用 twitter api 显示我的twitter记录。当然,这样做的前提是,博客要在墙外才行。

大体过程如下:

1.到 http://github.com/jdp/twitterlibphp 下载PHP类库 twitter.lib.php,上传到wordpress的主题路径下。

2.在wordpress的主题里新建一个页面模板,代码如下:

  1. <?php
  2. /*
  3. Template Name: Twitter
  4. */
  5. include(twitter.lib.php);//包含类库
  6.  
  7. $user = username;//twitter账号
  8. $pw = password;//twitter密码
  9.  
  10. $twitter = new Twitter($user,$pw);
  11.  
  12. $statuses = json_decode($twitter->getUserTimeline(array(),json));
  13. //将数据以json格式取出,并用php函数 json_decode 转成对象。其实可以用xml或者rss,但在html中使用的,还是json比较方便。
  14.  
  15. die(print_r($statuses));
  16. //测试一下数据结构,接下来的自己看着办吧。

站长年会流水账

星期一, 5月 18th, 2009
  1. 16日早6点到北京,同行为长春日报集团新媒体部于浩。
  2. 乘地铁到中关村附近的上地,约见了我上一本书的编辑顼宇峰,聊了一个上午。
  3. 下午到中国大酒店(国贸附近)约见原tom副总裁刘炳海。
  4. 16日晚16:00左右到会场,入住如家快捷宾馆。
  5. 和周曙光、胡泳通电话,可惜都没有机会见面。
  6. 17日早7:30入会场。和郑经理、lorna等人汇合进入会场。
  7. 8:30,会议开始。9:45分做为长春站长联络员介绍长春互联网情况。
  8. 下午分会场都很挤,于是在会场外面和同行们交流。巧遇王炜栋、客宾等朋友。
  9. 和PHPChina的李明、刘昊、李超等在场外聊了聊,具体的内容可能会再写一个专题短文。
  10. 再次相遇才知道,早上和我同台的天津站长联络员吴津津就是大名鼎鼎的白菜。
  11. 见到了thinkPHP的流年和王青龙等朋友。虽然自己不是thinkPHP深度用户,但还是有很多共同语言。
  12. 返程车上把座让给了抱小孩的,几个哥们或站或坐、天南海北聊了一宿。

后太阳时代的猜想

星期四, 4月 23rd, 2009

甲骨文经营着最强大的数据库产品,太阳则经营着世界上最流行的编程语言。同时别忘了,太阳刚刚收购mysql——最流行的数据库产品。加上双方的软件产品和服务器产品,这样的阵营,堪比微软!不同的是,微软现在还没有染指硬件,而甲骨文在操作系统方面也还没有竞争力。

硬件方面的老大IBM,正由蓝色巨人向蓝色神秘人转变。相对其它大公司的高调,IBM虽显得从容淡定,但掩饰不了老本越吃越少的尴尬。有趣的是,IBM有的,正是微软所没有的。吞下太阳的甲骨文一定会给微软带来压力。在互联网方面发展不断受挫的微软,如果有意转向硬件的话,那么收购IBM应该是一个值得考虑的选择。虽然百足之虫死而不僵,但收购IBM的一部分业务还是有可能的,正如当年区区联想所做的一样。私以为以微软的气概,恐怕是要一口吞下。

反观甲骨文和太阳双强联合,万事俱备,只欠操作系统。其实甲骨文并非没有自己的Linux版本,但要想进一步和Windows竞争还需要做更多的努力。如果埃利森希望走走捷径,恐怕Ubuntu应该有资格走进他的收购计划。

再说说PHP。比起青梅竹马的MySQL来,PHP在这场收购大战中显得有些落寞,小两口日渐疏远。不过在行业大帝微软的垂青下,PHP也不是没有可能新上个台阶的。以往微软在开源问题上深受诟病, 欲辩无词。为了摆脱垄断和闭源带来的指责,近来微软不断的朝开源招手甚至飞吻,其中最实质的动作就是和zend增进了合作。无论开源世界带着什么样的感情看待微软,微软都是最有实力拯救开源的第三者。目前看,PHP有可能进入微软开发套件Studio的部署,而且一定是以开源的姿态进入, 并作为微软快速开发WEB初级应用的主打产品。为了不让PHP感到孤单,微软会收购一个开源数据库(比如本来就和PHP眉目传情的SQLlite)给PHP当新娘,加上zend正在做的服务器套 件,一整套看似独立的开源方案就完成了。他们将作为免费的,低于.net的入门产品进入市场,以填补历史上asp留下的市场空白。如果真的这样发展,那么zend除了要牺牲PHP企业应用方面的发展,避免了和java的正面交锋外,没有什么别的损失了。

用PHP生成Getdropbox公开下载目录文件列表

星期二, 4月 21st, 2009

getdropbox总能给人带来惊喜。本以为public下的文件只能通过下载方式发布(多数web服务器都能够做到限制浏览),然而今天才发现,其中的html页面和jpg等图片格式的文件,进而包括所有前端文件,竟然都能通过web直接浏览。这样getdropbox又多了一个用处:方便、免费、最大5G的静态网页空间!(关于getdropbox的介绍:同步存储服务 DropBox 免费奖励扩容最大5G

当然getdropbox的public文件夹主要是用来共享文件的。冗长如 dl.getdropbox.com/u/**** 这样的网址也不太适合发布网站。但我们可以为在public中的文件做一个web索引,帮助使用者快速检索。纯粹的静态开发肯定是不合适的,所以我写了个php脚本,寥寥40行,两个函数用于递归遍历目录和生成索引文件,前端有个用于指定路径的表单。可以为服务端的任意目录生成索引。将生成的文件放到public文件夹下就是这样的:http://dl.getdropbox.com/u/142189/index.htm。当然这个程序稍微修改一下也适合ftp或者本地非服务端目录的检索。

目前我的public不多,慢慢积累中。本期强烈推荐一本电子图书:《100个人的10年(冯骥才)》。小镇村夫对此亦有贡献。

代码如下:

  1. <?php
  2. function get_index ($directory, $i=0) //输出文件列表的html代码
  3. {
  4.     global $file_list;
  5.     $handle = opendir( $directory ); //打开目录
  6.     while ( $file = readdir($handle) ) //遍历循环文件和目录
  7.     {
  8.         $bdir = $directory . / .$file;
  9.         if ($file <> . && $file <> .. && is_dir($bdir)) //如果不是.和 ..并且$bdir是个目录
  10.         {
  11.             get_index($directory ./. $file, $i); //递归
  12.         }
  13.         else if ( $file <> . && $file <> ..) 
  14.         {
  15.             $file_list.= <li><a href=" . substr(substr($directory, $i) ./. $file, 1) . "> . substr(substr($directory, $i) ./. $file, 1) . </a></li>;
  16.         }
  17.     }
  18.     closedir( $handle ); //关闭目录
  19.     return $file_list;
  20. }
  21.  
  22. function make_file($content, $filename=index.htm) //生成列表文件
  23. {
  24.     $fp = fopen($filename,w);
  25.     fwrite($fp, $content);
  26.     fclose($fp);
  27.     header(location: . $filename);
  28. }
  29.  
  30. if($_GET['action']==make)
  31. {
  32.     $dir=$_POST['dir']?$_POST['dir']:dirname(__FILE__); //指定路径
  33.     make_file(get_index($dir,strlen($dir))); //生成文件
  34. }
  35.  
  36. echo 
  37.     <form method="post" action="?action=make">
  38.     输入路径:<input type="text" name="dir" />
  39.     <input type="submit" value="确定" />
  40.     </form>
  41. ;

也可以到这里直接下载文件,嗯,PHP文件当然必须是可以直接下载的。

wordpress 主题 header 优化方案改进版

星期日, 3月 15th, 2009

针对wordpress主题的SEO优化方案,在网上流传的方案基础上进行了改进——

以下代码替代header.php文件相应代码:

  1. <title>
  2. <?php
  3. if (is_single() || is_page() || is_archive()) { wp_title(,true) ; echo | ; }
  4. bloginfo(name);
  5. ?>
  6. </title>
  7.  
  8. <?php
  9. //以下优化搜索引擎对导航页重复内容收录问题:
  10. if (is_single() || is_page() || is_home() ) 
  11.     { echo <meta name="robots" content="index,follow" />; }
  12. else
  13.     { echo <meta name="robots" content="noindex,follow" />; }
  14. //针对baidu对index不准确识别的问题则改用以下代码:
  15. //if ( !(is_home()) and !(is_single()) ) { echo ‘<meta name="Googlebot" content="noindex,follow" />’; }
  16.  
  17. //以下优化description和keywords:
  18. if (is_single()) {
  19.     if ($post->post_excerpt) {
  20.         $description = $post->post_excerpt;
  21.     } else {
  22.         $description = substr(strip_tags($post->post_content),0,220);
  23.     }
  24.     $tags = wp_get_post_tags($post->ID);
  25.     foreach ($tags as $tag ) {
  26.         $keywords = $keywords . $tag->name . ", ";
  27.     }
  28. } elseif(is_category()) {
  29.     $description = category_description();
  30. }
  31.  
  32. if ($keywords) {
  33.     echo <meta name="keywords" content=" . $keywords . " />;
  34. }
  35. if ($description) {
  36.     echo <meta name="description" content=" . $description . " />;
  37. } else {
  38.     echo <meta name="description" content=";
  39.     bloginfo(description);
  40.     echo " />;
  41. }
  42. ?>