OGX-3 | 妳木有小雞雞

死亡不是无知,而是不表态。

3.14 google 圆周率日

with 2 comments

3.14 google 圆周率日

呵呵~

Written by beiwei

三月 14th, 2010 at 1:59 上午

apache Rewrite 規則

without comments

今天在訪問blog時,發現去掉www后,域名沒有指向相關的目錄。使用apache的rewrite可以把缺少www的域名做跳轉www的域名,大概意思就是你在流覽器輸入163.com,由服務器端直接轉向www.163.com。

  1. ServerName www.163.com
  2. ServerAlias 163.com
  3.  
  4. RewriteEngine on
  5. RewriteCond %{HTTP_HOST} ^163\.COM$ [NC]
  6. RewriteRule ^(.*)$ http://www.163.com/$1 [R=301,L]

經過測試發現有一個小小的問題,不知道你們看出來沒有?

這裡可以稍微修改一下,就會變成另外一個樣子:

  1. ServerName www.163.com
  2. ServerAlias 163.com
  3.  
  4. RewriteEngine on
  5. RewriteCond %{HTTP_HOST} ^(www\.)?163\.COM$ [NC]
  6. RewriteRule ^(.*)$ http://www.163.com/$1 [R=301,L]

ps: 上面這段不要再正式服務器上測試,嘿嘿。

Written by beiwei

三月 9th, 2010 at 6:57 下午

What’s The Right Thing To Do

without comments

Warning: flash URL not specified!

Written by beiwei

三月 8th, 2010 at 3:33 下午

服務器RSA無法登陸的幾種解決辦法

without comments

1、rsa登陸用戶沒有設置密碼。如果沒設置密碼,系統會默認該用戶為鎖定的。
2、public key 提供的權限不足
3、配置文件有錯

Written by beiwei

三月 8th, 2010 at 3:05 下午

超强的广告~yy贴

without comments

小气的sina~观看请点 这个链接

Warning: flash URL not specified!

———————————————–分割线—-
市场存在着一种发生偏离的趋向。
索罗斯。

Written by beiwei

三月 8th, 2010 at 12:49 上午

Cherokee-一个高性能的web服务器

with 2 comments

插播新闻一条:“红帽大中华区总裁胡伯林于2010年2月15日因病辞世。”据悉07年中进公司,09年底因病辞职,于10年2月15日辞世。

cherokee,写他是因为他是我见过唯一一个提供图形界面配置的web服务器。不信请移步官方文档查阅。

我大概数了下,有33种用例可参考。提供5个module,handle、Validators、Encoders、logger、balancers。但我始终没有找到开源中国里说的支持文件上传进度和post管理子系统。

点这里查看他的测试结果

Written by beiwei

三月 5th, 2010 at 12:29 上午

HAproxy-一个轻型的反向代理服务器

without comments

开源中国看到一则“新闻”,说:“HAproxy 1.4 正式版发布,Web负载均衡”,其内容短小的让人惊奇。进官方网站看了他的文档,觉得还挺有趣的。

动态负载均衡,支持热备配置。不过让我好奇的还是他的The HTTP transaction model,原文如下:

When haproxy is running in HTTP mode, both the request and the response are
fully analyzed and indexed, thus it becomes possible to build matching criteria
on almost anything found in the contents.

However, it is important to understand how HTTP requests and responses are
formed, and how HAProxy decomposes them. It will then become easier to write
correct rules and to debug existing configurations.

因为还从来没碰到过这样的环境,所以现在这里记录。等需要的时候仔细再研究。

Written by beiwei

三月 5th, 2010 at 12:02 上午

php5 用magickwand 固定大小製作縮略圖

with 2 comments

早期tc在做圖片上傳時,使用最早magickwand寫的縮略圖類,按照比例等比縮放。圖片不會變形,但查看圖片時會因為圖片的尺寸不一樣,窗口會忽大忽小改變。想從網上找一個現成的,發現所有的代碼幾乎都出自于一個地方,連註釋都沒有變,唯一變的就是作者,並且還是第一人稱。

花了點時間,自己寫了一個,放在這裡供參考!如果有問題歡迎指出。

  1. /**
  2. * 按照固定比率切圖
  3. *
  4. * @param string $r_src_img
  5. * @param string $r_dest_img
  6. * @param int $r_dest_width
  7. * @param int $r_dest_height
  8. * @param float $r_rate
  9. *
  10. * @return bool
  11. */
  12. public function zoomImageFixed($r_src_img,$r_dest_img,$r_dest_width = 480,$r_dest_height = 360,$r_rate = 0.8)
  13. {
  14.      // 對原始圖片壓縮50%
  15.      $_rate_img = self::cutThumbImage($r_src_img,$r_rate);
  16.  
  17.      if (MagickWriteImage($_rate_img,$r_dest_img)) {
  18.           // 計算裁切圖片的比例
  19.           $_dest_rate_WH = round($r_dest_width / $r_dest_height,3);
  20.  
  21.           // 原始圖片的寬高比
  22.           $_src_width = self::getImageWidth($r_dest_img);
  23.           $_src_height = self::getImageHeight($r_dest_img);
  24.           $_src_rate_WH = round($_src_width / $_src_height,3);
  25.  
  26.           if ($_src_width <= $r_dest_width && $_src_height <= $r_dest_height) {
  27.                 // 比縮略圖小的圖片不裁切
  28.                 $_height = $_src_height;
  29.                 $_width = $_src_width;
  30.                 $_thumb_height = $_src_height;
  31.                 $_thumb_width = $_src_width;
  32.                 $_position_X = ceil(abs($_src_width – $r_dest_width) / 2);
  33.                 $_position_Y = ceil(abs($_src_height – $r_dest_height) / 2);
  34.                 $_composite_position_X = $_position_X;
  35.                 $_composite_position_Y = $_position_Y;
  36.             } else if ($_src_rate_WH > $_dest_rate_WH) {
  37.                 // 按照高度比切圖片寬度
  38.                 if ($_src_height <= $r_dest_height) {
  39.                 $_height = $_src_height;
  40.                 $_width = $r_dest_width;
  41.  
  42.                 $_thumb_height = $_height;
  43.                 $_thumb_width = $_width;
  44.  
  45.                 $_position_X = ceil(abs($_src_width – $r_dest_width) / 2);
  46.                 $_position_Y = 0;
  47.  
  48.                 $_composite_position_X = 0;
  49.                 $_composite_position_Y = ceil(abs($_src_height – $r_dest_height) / 2);
  50.             } else {
  51.                 $_rate_h = round($r_dest_height / $_src_height,3);
  52.                 // 如果高度過小,則不拉伸圖片,以空白填充
  53.                 $_height = $r_dest_height;
  54.                 $_width = $r_dest_width;
  55.  
  56.                 // 縮圖
  57.                 $_thumb_height = $_height;
  58.                 $_thumb_width = ceil($_src_width * $_rate_h);
  59.  
  60.                 // 裁切開始位置
  61.                 $_position_X = ceil(abs($_thumb_width – $r_dest_width) / 2);
  62.                 $_position_Y = 0;
  63.  
  64.                 $_composite_position_X = 0;
  65.                 $_composite_position_Y = 0;
  66.             }
  67.         } else if ($_src_rate_WH < $_dest_rate_WH) {
  68.             // 按照寬度比切圖片高度
  69.             if ($_src_width <= $r_dest_width) {
  70.                 $_width = $_src_width;
  71.                 $_height = $r_dest_width;
  72.  
  73.                 // 縮圖的寬高
  74.                 $_thumb_width = $_width;
  75.                 $_thumb_height = $_height;
  76.                 // 縮圖時使用的座標
  77.                 $_position_X = 0;
  78.                 $_position_Y = ceil(abs($_src_height – $r_dest_height) / 2);
  79.  
  80.                 $_composite_position_X = ceil(abs($_src_width – $r_dest_width) / 2);
  81.                 $_composite_position_Y = 0;
  82.             } else {
  83.                 $_rate_w = round($r_dest_width / $_src_width,3);
  84.                 $_width = $r_dest_width;
  85.                 $_height = $r_dest_height;
  86.  
  87.                 // 縮圖
  88.                 $_thumb_width = $_width;
  89.                 $_thumb_height = ceil($_src_height * $_rate_w);
  90.  
  91.                 // 裁切開始位置
  92.                 $_position_X = 0;
  93.                 $_position_Y = ceil(abs($_thumb_height – $r_dest_height) / 2);
  94.  
  95.                 $_composite_position_X = 0;
  96.                 $_composite_position_Y = 0;
  97.             }
  98.         } else {
  99.             $_width = $r_dest_width;
  100.             $_height = $r_dest_height;
  101.             $_thumb_height = $_src_height;
  102.             $_thumb_width = $_src_width;
  103.             $_position_X = 0;
  104.             $_position_Y = 0;
  105.             $_composite_position_X = 0;
  106.             $_composite_position_Y = 0;
  107.         }
  108.  
  109.         // 開始切圖
  110.         $_obj_nmw = NewMagickWand();
  111.         // 讀取圖片
  112.         MagickReadImage($_obj_nmw,$r_dest_img);
  113.         $_obj_draw = NewDrawingWand();
  114.         $_obj_dest_nmw = NewMagickWand();
  115.         // 先把圖片按照比例縮小
  116.         MagickScaleImage($_obj_nmw,$_thumb_width,$_thumb_height);
  117.         // 合成一個新的圖片
  118.         DrawComposite($_obj_draw,MW_AddCompositeOp,$_composite_position_X,$_composite_position_Y,$_width,$_height,$_obj_nmw);
  119.         // 添加一個設定寬高背景色的新空白圖像
  120.         $_bg_color = ‘#FFFFFF’;
  121.         MagickNewImage($_obj_dest_nmw,$r_dest_width,$r_dest_height,$_bg_color);
  122.         // 上色
  123.         MagickDrawImage($_obj_dest_nmw,$_obj_draw);
  124.         MagickSetImageFormat($_obj_dest_nmw,MagickGetImageFormat($_obj_nmw));
  125.         MagickSetImageCompression($_obj_dest_nmw,MW_ZipCompression);
  126.         MagickSetImageCompressionQuality($_obj_dest_nmw,50);
  127.  
  128.         // 設置水印
  129.         if ($r_mark) {
  130.             $_font = ‘verdana.ttf’;
  131.             $_obj_pdw = NewPixelWand();
  132.             PixelSetColor($_obj_pdw,"black");
  133.             DrawSetFont($_obj_draw,$_font);
  134.             DrawSetFontSize($_obj_draw,12);
  135.             DrawSetFillColor($_obj_draw,$_obj_pdw);
  136.             DrawSetGravity($_obj_draw,MW_SouthGravity);
  137.             MagickAnnotateImage($_obj_dest_nmw,$_obj_draw,100,15,0,’xxxxxxxxx’);
  138.         }
  139.  
  140.         MagickWriteImage($_obj_dest_nmw,$r_dest_img);
  141.         return true;
  142.     }
  143.     return;
  144. }

先mark一下,然後等加水印后再繼續。

忘記附上結果了,貼代碼好費事。

—————————————————–苦惱的分割線啊————————

因為是在windows下開發,使用php5.3的版本,在使用magickwand成了最大的問題,從網上找的那些dll文件根本用不了。我都想自己編譯了,可是咱火候不到,都不知道dll做啥的,如果有熱心的同學可以幫幫我么?

msn:beiwei37.5@live.com

Written by beiwei

三月 4th, 2010 at 6:17 下午

ubuntu 下使用vpn设置

with 3 comments

自从系统换成ubuntu后,过年前把项目也移植到了linux下面,发现除了平时一些琐碎的杂事,其他的完全可以满足开发了。我是一个自我约束力很差的人,用linux可以逼我放弃QQ、pps、放弃windows下懒惰的操作的方式,所有的东西都需要自己动手去找资料,有问题去解决。

linux虽好,但还是缺一点,如果不能连vpn就无法正常维护服务器。我找了三天的资料,终于弄好了。网上流传的安装包其实在ubuntu的软体中心就已经存在,只要勾选安装就可以。(也开始趋向于简单操作)

但为了加深记忆,我还是摘了命令:

  1. sudo apt-get install network-manager-gnome network-manager-pptp

其实在网络连接属性里就可以用GUI操作了。
单击vpn设置,选择加入,如下图:

选择pptp,会要求你输入ip地址,如下图:

刚开始一位设置到此就可以了,结果老连接不了,错误日志:

感觉卡在route部分,但又不知道该怎么设置。后来才知道,还要设置route:

选择 ipv4 点击路由器,然后填写路由信息:

这里的ip地址(位址)就是你vpn的地址,然后填写对应的栏目XX.XX.XX.0/24 ,保存后连接成功。如果仔细看就会看到我的网络图标那里有一把小锁,表示已经连成功咯!

138看到自己的ip已经是vpn的地址了。

呵呵,接下来测试连接服务器:

  1. ssh XX.XX.XX.xx -p XX

得到信息为:

  1. RSA key fingerprint is ac:ea:0f:51:b0:b4:c1:b3:61:a8:45:60:1c:9f:55:b8.
  2. Are you sure you want to continue connecting (yes/no)?

嘿嘿,继续就没路拉~

Written by beiwei

二月 26th, 2010 at 12:46 上午

广西6天游攻略

with 2 comments

概述:大概的路线为 桂林市 - 杨堤 - 兴坪 - 阳朔 - 黄姚固镇 - 姑婆山

因为第一次匆忙出门,准备不够加上经验欠缺,走了不少弯路。因为是攻略,所以就写我认为正确的方法。
第一天
选择晚上出发,这样就可以省掉在桂林住宿,早上到桂林然后组团市内一日游,一共好像7个景点,大概下午6点半左右可以全部结束。大概费用在180 ~ 230 之间,个人觉得穿山岩洞没啥好看得,又不是搞地质的,就好比狗看星星一样。一群sb们跟一个导游sb,围着那个乳石柱子,讲半天有不知道说啥,看也看不清,摸有模不得。破坏了静观浪费了时间和金钱。

第二天
结束后可以自己选在在市内住宿还是搭车去杨堤,第二天做竹筏游漓江,从杨堤到兴坪,这是整个漓江最漂亮的一段,建议在夏天会比较舒服,可以下水。游完后直接奔汽车站或者在路上拦到阳朔的汽车,到站后可以从汽车站直接到西街,如果天色尚早,可以先选择熟悉西街地形,找到fb的地方,然后找地方入住。个人建议:如果是夏天,住民宿也不错,性价比比较高。我住在县前街的广粤客栈,在县政府门口150米处,旁边是徐悲鸿故居。如果再能要到401的房子就更好了,阳台临街,窗户前有棵大树,睡觉做爱都是不错的选择,隔音效果也不错。

第三天:
起床后租自行车游阳朔,有两条路线可选择,一是望遇龙河方向,另外一个是十里画廊大榕树。这个选择就会比较多,我们骑车到遇龙桥,然后坐半程竹筏,然后再骑车到西街。晚上可以去看印象刘三姐,回来后就直奔酒吧。西街的酒吧是出了名的,不过我去了也没啥艳遇。酒吧都是那个样,只不过里面少了三分之一的小姐(职业)而已。

第四天:
最起码喝酒也要到两、三点吧,睡醒后如果还想要坚持找艳遇的可以继续在阳朔逗留。比较郁闷的是我都住了两天了,竟然连夜叉都没碰到。不想逗留就赶在9点前到阳朔汽车站,等开往黄姚古镇的汽车,这个一定要认真对待,否则会让你抓况。从阳朔到黄姚,估计车票也就30多,但如果你错过了那一班车,你就得多等一天或者到桂林买第二天早上9点的票(60)。

大概到了黄姚差不多下午3点多,沿着马路进去,碰到工作人员会让你买门票(68),如果一个人可以请当地人带你进去,你给他30块就够了。因为游客太多,拍照是件麻烦事,所以要你先采好点,然后找地方住。第二天早上6点起床拍照。在黄姚住宿是很大一个问题,是这几天以来住的最差的一天,不过没关系,下一天会补回来。

我建议你们找到一家叫天龙的住下来,相对来说比较方便,环境也还凑活。至于原因接下来我给你讲。

第五天
早上6点起床后出门往右走50米,大概会看到一栋很高的小三层,这是古镇上最高的建筑,如果你要拍炊烟袅袅的古镇全景,除了半山腰,这家是最好的地方。这也是为什么要选天龙的原因之一,比较近,比拍照的住的环境好一点。爬到楼顶拍完照(需付费5元),就顺着街道拍,当走出古镇后如果还想拍顺光的全景,就沿着小路往坡顶走,坡顶最高的一栋白色的房子,是天龙老板的家,你可以上他们家房顶再拍几张。最后到吴氏宗祠门口吃豆腐花,他们家的豆腐花是我吃过最可口的一家,入嘴既融。

饭后再去拱桥看看,顺便吃个午饭,然后继续回到古镇坐下午2点30的直达车40分钟到贺州(如果你做别的车,得花2~3个小时),到站后根据自己的时间先买好回程的票,然后搭车(如果过了中午13点,就得打的了)到姑婆山,在姑婆山森林宾馆住下来,晚上去半山腰泡温泉,准备第二天参光姑婆山。

第六天
如果你要到天堂顶,要么早起(凌晨2点)要么住两天,从姑婆瀑布到天堂顶需要3个小时(单程),非专业驴友请慎重考虑。4A级的风景区接下来就看你怎么去观光了。


姑婆山


黄姚古镇


阳朔西街


西街夜景


遇龙河

Written by beiwei

二月 24th, 2010 at 1:28 上午