無標題文檔

URL Zipper 压缩器

很多时候我们要将 URL 缩短(比如缩短购物链接等), 所以就有了很多在线的网址缩短服务 。在 本人经常玩Twitter 的客户端 中,有这样的功能,如图

https://friable.rocks/_/2008_08_05/1217927714.png

通常而言,这些在线缩短服务都是开放 API 的。那么,我们也可以编写相应的工具嵌入到自己的应用中。不长的时间,本人的在线 URL 压缩器就搞定了(目前为止,调用 is.gd、snipr.com、twurl.nl 三种 API)

https://friable.rocks/_/2009_11_05/320605fb862a.jpg

此工具的网址如下

http://friable.rocks/url-zipper/

最后,顺便做了个 「收藏按钮」 ,将其拖到浏览器的书签工具栏中,在浏览其它页面的同时点击此按钮,即可压缩当前的网址。

-- Spite --

更新

  1. 2009-05-17 可以自动生成七个短网址服务:bit.ly、cli.gs、kl.am 、is.gd、sniprl.com、poprl.com 和 short.ie
  2. 2012-10-22 由于时间关系,部分服务已经失效,因此可能会随时根据实际情况做调整

-- eof --

PHP 5.3,你准备好了吗?

官方于 8 月 1 日推出了 PHP 5.3 的首个 aplha 版本 ,相比期前的例行版本升级,此次的更新有更为重要的意义。

根据描述,主要的改进内容如下

是的,可以看见很多计划在 PHP6 实现的功能,都「提前」到了 PHP 5.3 中。

个人认为最为重要的是新加入的 Namespaces(命名空间)、 Lambda 、以及 closures(闭包) 等特性。有了这些新的特性,我们这些思维已经「僵化」的 coder 又能玩出新的花样了。

接下来的几天,我会撰写几篇有关 PHP 新特性相关的摘记,请期待(但愿不是放「空头支票」)。

中文竖排转换程序

随着闹运会的临近,最近的网络过滤是越发的厉害。最无奈的是, 本人竟然需要代理才能更新自家的 Blog

不知道是从哪个哥们想起的这招 ,使用古文的竖排方式方式关键字过滤。细想一下,这种方式虽然无奈,但总比文章中加入很多的特殊符号要好的多。

不知道在「中文字站起来以后」,会不会引起我们再次的思·想·维·新呢?想必当真如此,胡·适先生泉下也会含笑了。

https://friable.rocks/_/2009_11_05/433745db8278.jpg

好的,回过头来看下这次的 PHP 脚本。这是我根据 YiXia 兄弟的 Wordpress 插件 中的代码而来。

本人主要做了两件事情:格式化代码,「使其看起来舒服些」;第二就是优化代码的算法(现在效率上应该不用在这个类上做过多的考虑)。

在这里可以查看具体的 代码 还有 DEMO ,如果你有兴趣,欢迎 打包下载

突破基于 HTTP_REFERER 的防盗链措施

比较郁闷就是某些「小气」的网站,会加上防盗链的功能(特别本人在看 Google Reader 时)。其实防盗链这个技术并不复杂,目前基本就是在服务器端判断 HTTP_REFERER 的位置,如果不是来自本站自身,则拒绝输出( 详细 )。

那么如果考虑突破防盗链的措施,就需要考虑在 HTTP_REFERER 上面做手脚了。PHP 脚本中对应的变量是 $_SERVER['HTTP_REFERER'] ,它存储了 HTTP_REFERER 的值。

由于直接访问目标 URL 资源已经被上述防盗链的措施给屏蔽,所以我们需要个类似网关的玩意去获取。说白了就是编写已经包装过的 HTTP 头的 PHP 脚本。

下面是简单的函数实现:

function getRemoteFile($url, $refer = '') {
    $option = array(
            'http' => array(
                'header' => "Referer:$refer")
            );
    $context = stream_context_create($option);
    return file_get_contents($url, false, $context);
}

这是个比较简单的函数,其功能就是伪造 Referer (使用 stream_context_create 函数 )然后获取对方的数据(使用 file_get_contents,需要开启 allow_url_fopen )。

如果想「复杂」一点,可以使用 sockets 扩展 ,这不在这里的讨论范围以内。

另外,再提供个获取主机名的正则函数

function getHost($url) {
    $result = preg_match('/^http:\/\/([\d|\w|\.]+)\//', $url, $matches);
    if (sizeof($matches) >= 2)  {
        return $matches[1];
    } else {
        return null;
    }
}

再进一步的扩展,可以封装成脚本,然后譬如调用

http://127.0.0.1/proxy.php?url=http://i.am/img

就可以获取那些开启防盗链措施的链接了(再发挥下,使用 Javascript 将图片链接全部替换)。

怎样才算 PHP 入门?

译言上有篇 「40 个迹象表明你还是 PHP 菜鸟」 ,里面的内容非常不错,但部分观点不完全苟同。

PHP 入门的确很简单,但这并不说明它不复杂。在从事 前端开发 之前,本人也作为 PHP 程序员混了一段时间,在这里根据此文的部分观点说下我的个人看法。

不使用 MVC

MVC 这玩意 几乎成了后台开发的「Web 标准」。很多程序员在没有真正弄清楚项目需求和规模前,就大喊「我们要些遵循 MVC 的代码」。

MVC 固然有众多的好处,但是退一步讲,其出发点也是为了提高效率的。在并不复杂的项目中刻意使用 MVC ,这好比将一个脚本分成三份,我想谁都不会这样做的。

不使用 autoload

PHP5 中加入的 autoload 特性 意在容许给编码人员二次出错的机会。有时候这个特性非常的棒(本人也经常在使用,这样可以省去不少的 inlcude/require 代码)。

这里要说明和提醒的就是,不要滥用这个特性 -- 比如你明知道这个类在某个文件中,何必劳神让 autoload 再去寻找?特别在些注重高效率的场合,必须面对这一点。

对集成开发环境(IDE)视而不见

好的 IDE 是能提交效率,但坦白的说,本人没有使用 IDE 的习惯。

在大学期间学习 Linux 系统开发(c 语言)的那会,已经习惯用 Vim 编辑代码 、使用 make 和 autoconf 组织代码、使用 gcc 编译,如果碰到需要调式,还可以让 Vim 和 gdb 配合。

本人的观点就是「好的软件只做一件事情」,我敢保证 IDE 中的编辑器没有 Vim 好,断点调试也没有类似 gdb、xdebug 要来的方便(至少熟悉)。

所以,本人觉得作为工具的工具,没有孰优孰劣的说法。

-- Split --

总之,文中的很多观点本人甚为同意,除了技术上的些细节,看得出很多都包含了「思想」这一范畴。比如良好的代码风格和开发方式、使用 OOP (不过和 MVC 一样,经常会被玩概念)、还有很多脚本基本安全方面的的意识(比如输入过滤)等等。

在我看来,好的 PHP 程序员不仅仅需要过硬的技术,重要的还是思想--团队意识、责任感、兴趣、激情、还有敬业等等(再这样说下去直接去学 六脉神剑 去算了)。

说到这里就不仅仅是 PHP 程序员的范畴了,希望广大的技术人员都能共勉。

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHub (2) 、 TwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 其实无所谓叫什么名字,作为码农知道取名是件很难的事情。最后想到的这个名字,其实都没啥特别的含义,系统默认的文件名而已。

作为八零后,自认为还仅存点傲娇式的幽默感,以及对平淡生活的追求和向往。 为了免得对号入座和不必要的麻烦,声明本站点所持观点仅代表个人意见,不代表自己所服务公司的立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

文章

项目