awk printf 输出转义单引号 \047

用 pipe + awk 批量生成 mysql 命令行,遇到个问题。

| awk '{printf("ctime > '2012-08-08 00:00:00' ")}'

这样是不行的。

awk 会报错:

unterminated string

咋办?

在 printf 里面,用 

\047

替换单引号。

| awk '{printf("ctime > \0472012-08-08 00:00:00\047 ")}'

这样就好了:

ctime > '2012-08-08 00:00:00'

 

Tags:

svg 文件批量转换 png 介绍 mogrify

我找到一套图标,几百个文件都是 .svg 格式的,只能一个一个在浏览器里面打开,从中找到一个满意的太麻烦了。

通过搜索,找到了一个超级工具,ImageMagick 的 mogrify。

用法也是相当简单,把所有 svg 文件放在一个目录下,然后进入这个目录,执行命令:

find ./ -name *.svg -exec mogrify -format png {} \;

解释一下:

find 就是查找,-exec 是 find 的参数,对找到的文件应用一条命令,命令中的 “{}” 是一个占位符,代表找到的文件,最后的 “\;” 代表 -exec 命令的结束符。

执行之后,每个 svg 文件都生成了一个对应的 png 文件。

Unix 真是强!

Tags:

UltraEdit中检查php语法是否正确

可以直接在UltraEdit中檢查php語法是否正確的設定
很好用的東東
記下來免得又忘了

Advanced–>Tool Configuration
按Insert

[Command]
Manu Item Name: PHP syntax Check
(PHP5)
Command Line: C:\php\php-win.exe -l -f %F
Working Directory: C:\php\
(PHP4)
Command Line: C:\php\cli\php.exe -l -f %F
Working Directory: C:\php\cli\

[Options]
Program Type: Dos program
v Save active File

[Output]
Command Output: Output to List Box
v Capture Output
Replace select text with: No Replace

設到這樣就已經可以用了
不過去設一下快速鍵會更順手
Advanced–>Configuration–>Key Mapping
找到AdvancedUserTool1
內定快速鍵是Ctrl+Shit+0
改為Alt+S

設定完了
平常按Ctrl+S是存檔
按Alt+S就是存檔並作語法檢查了
語法檢查結果會顯示在UltraEdit底下的視窗中

Tags: ,

沙发鱼的首页

由于对 SEO 的知识的匮乏,让我做了很多自废武功的傻事,后悔死了。

我记得几个月之前,搜索 沙发鱼,不管在百度还是谷歌,至少都是第一页,好像还是前五条以内。

而现在去搜,谷歌排在第三页最后一个,百度都不知道在哪页了。。。

我都干了啥?

(1)沙发鱼的首页,用的都是 Sofav 的字样,而 meta 信息里写了一大堆书签啊、抢沙发啊之类的垃圾词
(2)还是沙发鱼的首页,将近三年的时间里就没变过,甚至到了 2012 年了,页面底部的版权信息还是 2009
(3)服务器配置, 把所有指向本 IP 的域名都自动 301 跳转到 www.sofav.com,这样的恶果是,百度上好多无关域名的标题都是沙发鱼,估计这就是百度搜索结果排名大幅下跌的主要原因吧

据我所知还欠缺的优化方法:

(1)首页要有足够的文字描述,最好是图文混合
(2)首页作为抓取入口,应该有很多关联到站内其他页面的链接
(3)最好有一个列表页的入口地址,可以让爬虫自动抓取更多的包含沙发鱼作为标题的网页
(4)多找一些朋友的网站做友情链接

唉,这些事其实很早就想到,一直没落实!

抓紧时间改了!

Tags: ,

沙发鱼

第一次听到 “沙发鱼” 这个名字的朋友可能觉得很奇怪,完全不沾边的两个词,怎么能连到一起。

说来话长。

这是我在 06 年就开始筹划的一个网站。

最开始,计划做一个可自由设定的网址导航。

由于工作忙,一直没做出来,其实是挣扎于各种框架结构中,那会儿还太嫩,想弄出一个网站,还是有点难度。

在 08 年的时候,对产品思路有了更深入的思考,也从国外的网站学到了新的设计。

这次做出来了,不过不是太完善,一直就没公开注册,只是自己用。

还是因为忙,去跟朋友创业了,做了 2 个项目,都以失败告终。

最后还是找了一份工作,养活自己。

总结一下,主要因为懒,每天都在想着怎么做,但是每天都等着明天有空了再做。

这一拖,好几年过去了。

从 2012 元旦开始,心里一直有一种莫名的恐惧感和危机感,如果再不抓紧时间做出来,这个项目就彻底没戏了。

虽然,这些年,我没做太多开发工作,但一直在不停的思考产品设计和未来的规划,而且都记在了文档中。

到现在,至少积累了几百条创意在里面。

这个产品,是完全的创新。

从最近开始,我逐渐理解了 “创新” 二字的真正含义。

不是说你有一个想法,有一个点子,就叫创新。

真正的创新,就是把一个想法,真正地实现出来展示给你的用户。

也就是说,我积累的几百条创意,都算是纸上谈兵。

真正的把其中任何一个想法,开发出来,上线,让用户能用到,才叫创新。

因此,从今年一开始,我就真正地开始一步一步实现这些想法。

重新搭建了框架,前端框架开发了一版,也重构了一版。

最近,终于有了一个简单可用的版本。

我还会继续优化,应该在不远的将来,可以邀请朋友们试用一下。

请大家记住 沙发鱼 这三个字,未来他将是你爱不释手的伙伴。

沙发鱼 黑板报 可以看到我们每天都在为他做着各种改进,欢迎关注!

 

 

Tags: ,

Apache RewriteRule L 标志无效

Apache rewrite 规则解析时,把 uri 转换成 target 后,还要重新验证所有规则。

如果你写了多条规则,按优先级排列,需要注意了,[L] 这个 flag 可能不是你想象的那么简单。

比如:

RewriteRule ^apple/(.*) apple.php [L]

RewriteRule ^orange/(.*) orange.php [L]

RewriteRule ^(.*)$ index.php [QSA,L]

当你的请求是 www.leakon.com/apple/about/iPhone,你猜 Apache 会执行到哪里?

很不幸地,执行到了 index.php 上,不是你想象的 apple.php 。

为啥?

 

因为虽然能匹配 ^apple/(.*),但在内部 Apache 把 /apple/about/iPhone 转换为 apple.php ,然后要重新从头开始验证每一条规则。

此时 apple.php 已经不匹配  ^apple/(.*) 和 ^orange/(.*),最后走到 ^(.*)$,在内部又转换为 index.php,然后再次从头开始检验。

到最后,发现 index.php 就是 index.php,好,停止解析,运行 index.php。

那咋办?

 

改成这样:

RewriteRule ^apple/(.*) apple.php [L]

RewriteRule ^apple.php – [L]

RewriteRule ^orange/(.*) orange.php [L]

RewriteRule ^orange.php – [L]

RewriteRule ^(.*)$ index.php [QSA,L]

 

啥意思?

 

– [L]

There is a special substitution string named ‘-‘ which means: NO substitution! Sounds silly? No, it is useful to provide rewriting rules which only match some URLs but do no substitution, for example, in conjunction with the C (chain) flag to be able to have more than one pattern to be applied before a substitution occurs.

大致意思是说 “-” 意味着不要做 uri 替换。

 

在我的例子里,就是告诉 Apache 转换到 apple.php,就可以匹配了,不用再做后续任何解析。

 

16:00 – 24:00,我的时间啊。。。

Tags:

preg_match_all crash Apache

今天遇到一个诡异的问题,折腾了好久。

有一段 html,需要用正则表达式匹配一对标签内的所有文本,用到了 preg_match_all。

一直都没什么问题,但是今天修改了 html 的内容,再次运行的时候 Apache 突然 crash。

换用命令行执行,却没问题。

一步一步跟踪,发现问题出在 preg_match_all 身上。

为什么命令行执行正常,到了 Apache 就崩溃呢?

去 Google 搜了下 “apache preg_match_all”,发现果然有人遇到了这样的问题。

其中有一条是 https://bugs.php.net/bug.php?id=47689

意思是 Apache 的 stack 的 size 在各个平台下都不一样,可以用下面的指令设置 ThreadStackSize :

<IfModule mpm_winnt_module>
ThreadStackSize 8*1024*1024
</IfModule>

我试了下,没用!

不过算是有了参考思路,应该是 preg_match_all 内部递归的时候层次太深,达到了 Apache 允许的最大堆栈层次,Apache 果断退出!

这应该是 Windows 版 Apache 特有的问题,我在 Linux 下的 Apache 运行同样的程序,就可以成功得到结果。

有意思的是,这个网页上面还提供了一个范例程序,我把它搞出来供大家下载测试:

http://leakon.googlecode.com/svn/trunk/php/apache_crash/apache_crash.php

综上,得出结论是通过 Apache 没法执行这个程序了。

但问题还要解决,临时想了个土办法,测试通过了,给大家分享过程:

(1)把要解析的文本写入临时磁盘文件
(2)用 system 执行命令行程序读取这个文件,仍然用 preg_match_all 解析
(3)把解析结果序列化存入刚才这个文件
(4)在 Apache 的 php 中读取这个文件,并反序列化
(5)删掉这个临时文件

实在是没办法了。。。

 

Tags:

Parent: child process exited with status 255 — Restarting

最近在碰PDO(PHP Data Object),使用的時候忽然發現,在select資料的時候apache會被關掉,insert不會,只有select的時候才會,不知道是啥鬼狀況,log裡面就只出現這行

Parent: child process exited with status 255 — Restarting

膜拜了很久的google大神之後才發現這篇,上面提到這是xampp 1.70在windows上(?)的錯誤,修正方法如下

Problem solved. Turns out this is a bug in XAMPP 1.7.0 PHP and the fix is already there.
To fix the problem:
in “xampp\apache\bin”
copy libmysql_5.0.51a.dll libmysql.dll
in “xampp\php”
copy libmysql_5.0.51a.dll libmysql.dll
in “xampp\php\ext”
copy php_mysql_5.0.51a.dll php_mysql.dll
copy php_mysqli_5.0.51a.dll php_mysqli.dll

弄好之後就正常了…

Tags: ,

如何在香港3G上網 香港3電信

我相信很多人都很愛去香港,不過有很多上網症候群的朋友,到香港不想用貴貴的漫遊方案,
大方今天跟大家介紹一個好用又便宜的香港 3G 上網吃到飽方案,而且連 Micro Sim卡都有唷,
和信黃埔集團旗下的香港3和記電信,也可以簡稱香港3電信,就有推出像我們這種旅行客,
好用的上網方案唷,而且有好幾種費率,最便宜18塊港幣上網吃到飽,最貴28塊,真的很方便。

01.jpg

再來大方要介紹大家怎麼買到 3G上網吃到飽方案,首先在香港機場出關後,
先不要急著搭機場快線進市區,搭電梯到離境大樓,就可以找到 3 Shop了。

大嶼山香港國際機場一號客運大樓離境大堂(第七層)7T038號舖
星期一至六:07:00am – 11:00pm 星期日及公眾假期:07:00am – 11:00pm
http://www.hongkongairport.com/chi/shopping/insideshopping/t1/audio/3sho.html

02.jpg

其實大方覺得在香港機場買到3G上網卡是最方便的,因為馬上就可以上網,
不過如果你趕時間的話,在香港的市區裏, 3 Shop也是很多間可以買的到的。

香港、九龍、新界 3 Shop 地址 List:http://goo.gl/c6oAy

03.jpg

其實不管在那一間 3 Shop 只要跟他們說,要買 3G 至抵月費循環儲值咭 ,
或著直接講要買 3G 上網卡也可以,服務人員就會問你是什麼手機。

04.jpg

其實一般手機大多是標準的 Sim 卡,那麼直接可以買標準方案 98塊的,
像 iPhone 3G、3GS都是使用標準 Sim卡,這張卡片98塊,每天上網上限28塊。
所以很適合3天2夜來香港玩的朋友使用,重點這張卡還配有香港門號,
在香港跟朋友或打回台灣都很方便,而且在香港互打香港門號很便宜。

98塊的卡似乎在豐澤電器、屈臣士都買的到。

官網98塊3G上網吃到飽方案:http://goo.gl/LiLhI

05.jpg

重點來了,現在很多人都使用了 iPhone 4、iPad2,都是使用 MicroSim 卡,
香港3電信也準備了 MicroSim卡 3G 吃到飽方案,不過這方案比較貴,
官網寫的是 3G 循環儲值咭適用於iPad,這個方案是 198塊港幣,
不過一天上網上限是 18 塊,所以如果純上網的話,可以使用到11天,
不過一般人來香港玩可能用不到那麼多天,不過沒關係,
這兩種卡都從開卡起,半年、六個月內有效,如果你在半年內會再來香港,
那麼大方覺得 198 方案比較方便啦,不過這個 198方案只有在 3 Shop買的到。

重點是這個方案也是配有香港門號,還是可以打電話的唷。

官網 3G 循環儲值咭適用於iPad 方案:http://goo.gl/QyB0o

06.jpg

07.jpg

當然這個 198 方案的 Sim 卡,也是可以給一般標準 Sim 卡使用唷。

08.jpg

通常大方在現場買,都會請服務人員當場測試ok後才會離開,
不過如果你趕時間,那麼 Sim卡包裏面有如果使用的說明跟介紹,
再仔細閱讀吧。

不過大方在這邊要補充一下,因為大方幾個月前來香港辦的 198 方案,
儲值卡沒過期,也還有餘額,不過發現這次來香港後,電話正常,
但就是無法上網,於是跑了一趟 3 Shop ,服務人員改了一下 APN設定,
APN = imobile.three.com.hk 就 ok 了,如果你也同樣的狀況不能連上網,
那麼看一下你的 APN 設定吧,不然直接跑 3 Shop 也很方便啦。

09.jpg

不過這次在市區 3 Shop 買到 98 標準方案,換了包裝。

10.jpg

不過根據服務人員說,上網方案還是一天上網上限為 28塊。

11.jpg

不過 98 塊的 Sim 卡,就是標準 Sim 卡, iPhone 4、iPad2不能用,
除非你要試著剪卡,這個方法,大方就不敢保證能不能用了,呵呵。

12.jpg

不管是 98塊方案、198塊方案,如果講話太多,或打國際電話回台灣太多,
那麼還是有儲值卡可以買的,就看你要買 55、100、200的增儲券儲值卡囉。

13.jpg

14.jpg

香港3電信的3G吃到飽方案,大方覺得挺方便的,
而且真的打回台灣,用Skype又省很多,
加上還有香港的門號,朋友、家人有事找也不怕找不到人,
所以大方覺得,如果有智慧型手機的人,值得一辦啦。

補充:

98塊的方案 免月租費 ,手機可以開熱點分享,每日上限28塊。

198塊的方案,要月租費18塊,手機不能開熱點分享,每日上限18塊。

依自己的需求選擇需要的資費方案吧~

Agoda 最多推薦的 香港、尖沙咀、旺角、中環、灣仔 地區 飯店
(a) 唯港薈 (Hotel Icon) @ 2011年06開幕、時尚設計旅店、地鐵尖東站P1出口
(b) 蘭桂坊 (Lan Kwai Fong) @ 離蓮香樓、九記牛腩近、地鐵上環站步行10分鐘
(c) 香港精品酒店 (Jia Boutique) @ 有家的fu、離銅鑼灣sogo商圈近、地鐵3分鐘
(d) 晉逸精品酒店 銅鑼灣 @ 離時代廣場近、銅鑼灣地鐵10-15分鐘
(e) 帝樂文娜公館酒店 (The Luxe Manor) @ 九龍設計旅店、機場接駁巴士直達
(f) 灣仔皇悦酒店 (Empire Hotel Hong Kong Wan Chai) @ 地鐵灣仔站步行10分鐘
(g) 尖沙咀 The Mira Hotel @ 設計旅店、海港城十分鐘、地鐵尖沙咀B1出口旁
(h) 百樂酒店 (Park Hotel) @ 交通方便、地鐵尖沙咀B2出口8分鐘
(i) 晉逸精品酒店 尖沙咀 @ CP值高、地鐵尖沙咀8分鐘
(j) 半島酒店 (Peninsula Hotel) @ 五星奢華、服務佳、地點方便

香港 Hong Kong 地區相關訂房資訊:Agoda中文訂房?
http://www.agoda.com.tw/asia/hong_kong/hong_kong.html

交通資訊…..
旅館住宿…..
Shopping購物…..
餐廳美食……

●太平館餐廳 @ 燒乳鴿跟瑞士雞翼、銷魂好吃啊~

●富記粥品 @ 在地老饕必吃的粥品店,好吃極了~

咖啡、甜點…..
旅遊景點…..

Tags: ,