详情

全站展示位

Ruby Deploy With Capistrano 碰到 SSH Connection Closed小惡魔AppleBOY

在 Ruby 開發環境最常用的 Deploy 工具就是 Capistrano,讓開發者可以快速部署程式碼,在部署進行中,由於大量的 js 及 css 需要處理,所以花最長的時間就是 assets:precompile,執行 cap deploy 就會發現卡在底下錯誤訊息 ** [whenever:update_crontab] exception while rolling back: Net::SSH::Disconnect, connection closed by remote host *** [deploy:update_code] rolling back * executing “rm -rf /home/deploy/nami/releases/20150317135422; true” servers: [“xxxxx.tw”] ** [deploy:update_code] exception while rolling back: Net::SSH::Disconnect, connection closed by remote host 。。。

推荐

啟動 Percona XtraDB Cluster 注意事項小惡魔AppleBOY

在 Percona XtraDB Cluster 推出 5.5.28 以前,最簡單的啟動方式就是打開 my.cnf 設定 wsrep_urls 在 [mysqld_safe] section 內。假設我們有三台 Node 分別為底下 IP: node1 = 192.168.1.100 node2 = 192.168.1.101 node3 = 192.168.1.102

MySQL 預設儲存引擎: InnoDB 介紹小惡魔AppleBOY

MySQL 是一套眾所皆知的 Database System,今天來簡介 InnoDB 儲存引擎,在 MySQL 5.5.5 之前預設的儲存引擎是 MyISAM,但是為什麼在 5.5 之後官方要將預設儲存引擎換成 InnoDB 呢?大家都知道 InnoDB 用來交易管理非常方便,因為 InnoDB 透過 row lock,相對於 MyISAM 透過 table lock 來的有效率,也避免大量寫入的時候,造成無法讀取資料,這就是 row lock 的優勢,當然用 InnoDB 最主要的原因還有 Full-text search indexes 功能,但是別擔心 MySQL 5.6.4 之後(含此版本) InnoDB 開始支援 Full-text search 功能,另外在使用 MyISAM 時候,如果資料突然出問題,還必須使用 MySQL Binary Log 來恢復資料,如果用 InnoDB 這就沒關係了。大家還在用 MyISAM 嘛?開始升級伺服器,一起體驗 InnoDB 的功能,如果已經上線很久的網站,作者不建議轉換,因為可能會遇到很多雷。

[CSS] IE 6, 7, 8 FireFox hack 支援透明背景圖 background or img javascript小惡魔AppleBOY

先前在國外部落格發現一篇非常好用的教學:Quick Tip: How to Target IE6, IE7, and IE8 Uniquely with 4 Characters,裡面有提供一部教學影片,非常好用,也很實在,底下可以先看影片,看完大概就可以針對 IE, FireFox, Chrome 進行 CSS Hack。 目前網頁製作,要符合多瀏覽器跨平台(IE, Safari, Chrome, FireFox…等),就必須動到 CSS Hack,雖然 Google 已經宣稱不支援 IE6,但是很多單位,很多學校跟客戶都是使用 IE6 瀏覽器,不只國內這樣,國外大廠也都希望支援 IE 系列,包含 IE6, IE7, IE8,這時候就必須知道如何分別針對各種不同 IE 做設定,底下就來看看實做例子。

如何使用 PPA 升級 Ubunut Firefox 瀏覽器到 4.0小惡魔AppleBOY

作者目前使用 Ubuntu 10.10 (maverick) 桌面環境,也是台灣 MozTW 成員之一,這次 FireFox 4.0 Release 介面有些改變,使用上來也非常順手,記憶體好像吃的比較少了?(有待商榷),現在就來升級 FireFox 吧,兩種升級方式,如果不熟悉 Command Line 就用 GUI 升級,另一種升級方式就是用 apt-get upgrade 啦。 如果用 Windows 請到這裡下載 利用 GUI 介面升級 (Install firefox 4 using GUI) 我的環境是英文,所以底下寫的是英文安裝方式: 按照底下步驟進行 Applications > Ubuntu Software Center > Edit > Software Sources 之後點選 "Other Software" 選擇左下角 "Add" 按鈕,接著把底下文字輸入 ppa:mozillateam/firefox-stable 最後到底下升級,就可以開始使用 FireFox 4 了 System > Administration > Update Manager 文字介面升級 (Install firefox 4 using terminal) 只要鍵入三行指令即可 $ sudo add-apt-repository ppa:mozillateam/firefox-stable $ sudo apt-get update $ sudo apt-get upgrade 沒圖沒真相啦,底下附上桌面截圖 Reference: How to install firefox 4 in ubuntu using PPA Firefox 4 正式版現已推出,帶給您更棒的網路體驗

心灵鸡汤

每当我有压力的时候,就是进步的开始!

列表展示

主站展示位

[Linux] CentOS 4.4 安裝 Openwebmail + spamassassin 擋垃圾信的設定方法小惡魔AppleBOY

其實以現在linux安裝方式已經相當容易了,不像以前都要tarball安裝,相當複雜,昨天安裝 openwebmail 只花了幾分鐘的時間,目前系統CentOS4.4 主機相當好,所以安裝起來特別快 想利用 yum install 的安裝方式,不過發現沒有 openwebmail 的套件,所以上網找了rpm 注意:要架設 Open Webmail 前,請務必先將 postfix(架設mail伺服器)、dovecot(POP3伺服器) 架設好

生成式 AI CodeGPT 開發經驗談台北 ModernWeb小惡魔AppleBOY

很高興可以到台北 ModerWeb 分享『生成式 AI CodeGPT 開發經驗談』,沒想到這主題這麼多人有興趣,第一次遇到滿場的現象。這場主要講授在今年 3 月由我自己開源的 CodeGPT 工具,身為軟體工程師,每天都一定會寫 Commit Message,而此工具會針對修改的 Code Diff 進行閱讀,並給出一次性的 Commit Message,讓軟體工程師不用再煩惱該如何寫 Commit Message。大家可以看看上面的封面圖,就可以知道我每天需要花多少時間在寫有用可閱讀的 Commit。

高雄回南投 國光之旅小惡魔AppleBOY

哈哈~ 我已經回到南投了~ 不過高雄到南投 我是坐國光客運~ 其實這也是最便宜的,因為每趟只需要250元,還不錯啦,我在當兵幾乎都是坐國光客運,畢竟他也很快,在高速公路也很敢衝,時間也不會差太多,哈

在 Go 語言用 singleflight 解決快取擊穿 (Cache Hotspot Invalid)小惡魔AppleBOY

上圖是在實作 Web 服務時常用的架構,會在服務跟資料庫之間加上快取,以減少資料庫的負載。然而在實作服務串接時,常常會遇到快取三大問題:雪崩、擊穿、穿透,其中 Cache Hotspot Invalid (快取擊穿) 是一個非常常見的問題,當快取中的資料過期或消失時,大量的請求會同時打到後端資料庫,這會導致資料庫的負載過大,甚至會導致資料庫掛掉,如下圖某篇文章的 cache key 過期。這篇文章將會介紹如何使用 Go 語言內建的 singleflight 來解決快取擊穿的問題,這是 sync 套件中的一個功能,可以避免重複的請求同時打到後端資料庫。

Backbone.js rewrite into CoffeeScript?小惡魔AppleBOY

看到 @gsamokovarov 提出將 Backbone.js 改寫成 CoffeeScript 架構的 Pull request,結果官方團隊其中一位開發作者回應了一張圖,代表他的心情 XD,各位有興趣可以點上面連結看看,後來有其他人回應說,為什麼官方不用 CoffeeScript 來寫了,發此 Pull Request 的作者也有說,他只是將架構改成 CoffeeScript 讓大家參考看看而已,沒有真的希望可以納入整個 Backbone.js 專案,如果有其他開發者需要的話,一樣可以 fork 此專案,說明文件也用 docco 產生好了,可以參考此連結,官方作者也提到,大部份的第3方 Library 還是不會使用 CoffeeScript 來當作基底開發,畢竟並非所有人都知道 CoffeeScript,如果官方想這麼開發的話,早就再 2010 年丟釋出 Backbone.js 的時候就直接採用了,不會拖到現在還沒出來,當然最後官方也希望將此 pull request 寫到 wiki 裡面給大家參考,等待原作者補開發動機及細節。

[C/C++] 判斷字串是否為數字小惡魔AppleBOY

常常在寫 C 語言,有時候想判斷輸入的是否為數字,如果不是的話,要重新輸入,所以寫一下怎麼判斷的,ptt提供了下面很多函式 isalnum ctype.h 測試某一整數值是否為’A’-‘Z’,’a’-‘z’,’0′-‘9’等文數字之一。 isalpha ctype.h 測試某一整數值是否為’A’-‘Z’,’a’-‘z’,等字母之一。 isascii ctype.h 如果ch的值判於0-127,則傳回非零整數(0x00-0x7F)。 iscntrl ctype.h 如果ch是一刪除字元或一般控制字元,則傳回非零整數(0x7F或0x00-0x1F)。 isdigit ctype.h 如果ch是一數字,則傳回非零整數。 isgraph ctype.h 如果ch是為可列印字元,則傳回非零整數。 islower ctype.h ch若為小寫字母,則傳回非零整數。 isprint ctype.h ch若為可列印字元,則傳回非零整數。其功能與isgraph相似。 ispunct ctype.h ch若為標點符號,則傳回非零整數。 isspace ctype.h ch若為空白字元或定位字元(Tab),歸位字元(Enter鍵),新列字元,垂直定位字元,換頁字元,則傳回非零整數。 isupper ctype.h ch若為大寫字母,則傳回非零整數。 isxdigit ctype.h ch若為一個十六進位數字,則傳回非零整數 用程式去判斷會更快,因為上面的函式,都是要單一字元去檢查,非常不方便,所以就寫了底下的程式

Using singleflight in Go language to solve Cache Hotspot Invalid小惡魔AppleBOY

The diagram above illustrates a commonly used architecture in implementing web services, which involves adding a cache between the service and the database to reduce the load on the database. However, when implementing service integration, three major cache problems are often encountered: Cache Avalanche, Hotspot Invalid, Cache Penetration. Among them, Cache Hotspot Invalid is a very common issue. When the data in the cache expires or disappears, a large number of requests will simultaneously hit the backend database, causing an excessive load on the database and even leading to database crashes, as shown in the diagram where the cache key of a certain article expires. This article will introduce how to use the singleflight built into the Go language to solve the Cache Hotspot Invalid problem. This is a feature in the sync package that can prevent duplicate requests from hitting the backend database simultaneously.

[Ubuntu & java] java JDBC and MySQL小惡魔AppleBOY

最近開始要摸 java 了,目前大概先實做 java with JDBC 連接 MySQL,所以在 JavaWorld@TW 這裡找了一些相關的文件,目前我在 Linux 底下實做,還沒找到一套很適合的 IDE Tool 來撰寫程式碼,大家好像都很推 netbeans 跟 eclipse,不過我目前還是使用 PSPad 來撰寫 java 程式碼,然後透過 FTP 的方式編輯,這不是重點,重點是要透過 jdbc 來連接 MySQL,目前是在 Ubuntu 7.04 這一版本上面實做,底下是實做方法: 1. 首先先安裝 deb 檔案:透過 apt-get 的方式 # # 首先尋找 java lib with mysql apt-get install libmysql-java 2. 安裝好之後尋找 jar 檔案,加入到 class path 裡面 # # 首先 echo $CLASSPAT # # java mysql jar 檔案如下 /usr/share/java/mysql.jar # 加入 CLASSPATH,修改 /etc/bash.bashrc export CLASSPATH=$CLASSPATH:/usr/share/java/mysql.jar # 然後在 source /etc/bash.bashrc

[生活日記] YA 我的魚缸玫瑰蝦抱蛋了小惡魔AppleBOY

今天去台南回來就知道這個好消息了,感謝 LAB 同學宗翰,告知我這消息,然後還把他拍圖給我看,太棒了,之前忘記把蝦跟孔雀魚分開,我發現有一些小蝦都被吃了吧,哈哈,所以稱現在只有蝦子的魚缸,要多生一點喔,現在魚缸已經有很多新成員了,真開心

Linode VPS 全面升級 Double RAM & SSD小惡魔AppleBOY

Linode 又來了驚人的舉動,現在開始支援 SSD 以及小時計費服務,可以參考官網最新發表的 The New Linode Cloud: SSDs, Double RAM & much more,內容講到硬碟現在全面升級為 SSD,而且是 native SSD servers。網路頻寬部份每個 Linode Host 都連接 40 Gbps 的頻寬,對外總頻寬為 160 Gbps,對內頻寬為 40 Gbps,當然根據個人買得 VPS 而有不同的對外頻寬。記憶體則是全面 Double 升級,原本最低的 1G 記憶體,現在都改為 2G 了,每個月才 20 美金,看起來又是被 DigitalOcean 刺激到,最小的 Linode 流量也改為 3 TB。來看看現在新的方案

[Windows] Appserv 安裝 pear 套件小惡魔AppleBOY

最近要在 Windows 上面安裝 Apache + MySQL + PHP,我選擇利用懶人包安裝方法:Appserv,目前版本為 AppServ 2.5.10 跟 AppServ 2.6.0,如果您要寫 PHP5 的話,就選擇安裝 AppServ 2.5.10,目前支援到 PHP 5.2.6,不過我上次已經看到 PHP 5.2.9 Released 了,如果想要支援 PHP6,那就選擇 AppServ 2.6.0 這個版本,不過我建議新手可以安裝 AppServ 2.5.10,這個版本比較穩定,安裝好之後,也有支援 phpMyAdmin,底下是 2.5.10 支援的套件: * Apache 2.2.8 * PHP 5.2.6 * MySQL 5.0.51b * phpMyAdmin-2.10.3 今天要安裝 pear 的套件在 Windows 上面,不過不用緊張,因為 Appserv 已經把 Pear 的模組包進來裡面了,只要執行 .bat 檔,按照視窗,就可以完成安裝了,自己平常有用 Pear 的 的安裝方法:

[Linux] CentOS 4.4 安裝過程 NAS 2U Server小惡魔AppleBOY

新主機 2u nas server 2顆amd Opteron 2.2ghz 機架高度2u 2*1GB RAM ECC DDR400 SCSI硬碟 ULTRA320磁碟陣列卡支援RAID0,1,5,1000RPM 72GB4顆 網路卡10/100/ 1000 Mbps介面卡2個 主機板型號GA-7A8DRH 連結 上面那台,下面那台也是NAS WIN2003 SERVER 安裝步驟: 利用光碟開機,鍵入linux dd

高鐵火車站旅行小惡魔AppleBOY

台灣高鐵是台灣的一大進步,為甚麼我會這樣說呢,因為這對我來說太重要了,目前我正在南投國史館台灣文獻館當任替代役,南投阿沒有火車,交通很不方便,所以我每次要返家幾乎到要花上4個小時以上才可以回到我的高雄,好久阿,想到這個時間我就很痛苦,以前就讀花蓮國立東華大學的時候,根本沒有差別,回家也需要5個小時以上,台灣高鐵我已經坐過一次了也就是在今年1月8號的時候我搭乘了第一次,那一次造成我被罰勤,禮拜6要罰勤了 YA~,不過其實也沒差,我也解釋了我罰勤做了哪些事情,這2天罰勤,我都做了什麼?

MongoDB 效能調校紀錄小惡魔AppleBOY

最近剛好在實作 Prometheus + Grafana 的時候,對 MongoDB 做了容器 CPU 使用率 (container_cpu_usage_seconds_total) 的監控,Metrics 寫法如下: 1 2 3 sum( rate(container_cpu_usage_seconds_total{name!~"(^$|^0_.*)"}[1m])) by (name) 從上面的 Metrics 可以拉長時間來看,會發現專案的 MongoDB 非常不穩定,起起伏伏,這時候就需要來看看資料庫到底哪邊慢,以及看看哪個語法造成 CPU 飆高? 接著為了看 MongoDB 的 Log 紀錄,把 Grafana 推出的 Loki,也導入專案系統,將容器所有的 Log 都導向 Loki,底下可以看看 docker-compose 將 Log 輸出到 loki 1 2 3 4 5 6 7 logging: driver: loki options: loki-url: "" loki-retries: "5" loki-batch-size: "400" loki-external-labels: "environment=production,project=mongo" 先看看結論,做法其實很簡單,找出相對應 Slow Query,把相關的欄位加上 Index,就可以解決了

利用 mb_strwidth 取代 mb_strlen 計算 Multi-byte 字數小惡魔AppleBOY

之前寫了一篇如何切割中文標題,裡面計算中文字數,這樣才不會直接切到中文字,但是 PHP 有很多函式可以算出字串有多少字元,我們看看底下例子,使用了 strlen、mb_strlen、mb_strwidth 分別下去測試,看看會把中文字算成幾個字元: <?php echo strlen("測試ABC") . " "; # 輸出 9 echo mb_strlen("測試ABC", 'UTF-8') . " "; # 輸出 5 echo mb_strwidth("測試ABC") . " "; #輸出 7 ?> 看到這結果並不意外,大家可以看到 strlen 把中文字元算成3個字元,mb\_strlen 不管是中文還是英文就都算成單一字元,mb\_strwidth 則是把中文算成 2 字元,mb_strwidth 算出來正是我想要的,如果是想要在 Web 上面切割中文,建議大家用 mb_substr 即可。因為作者本人在弄跟 BBS 相關技術,所以必須江中文字算成2字元,底下節錄 mb_strwidth 如何算字元長度: Chars => Width U+0000 - U+0019 => 0 U+0020 - U+1FFF => 1 U+2000 - U+FF60 => 2 U+FF61 - U+FF9F => 1 U+FFA0 - => 2 PS: 測試環境 PHP 5.

使用 cwRsync 差異性備份 Windows 2003 伺服器小惡魔AppleBOY

最近正在弄Windows的機器怎麼跟Windows的機器互相備份,linux跟windows之間怎麼備份已經搞定了,其實我差不會利用windows的每天固定跑程式,在linux底下可以使用cron的方式來用,可是winodws底下就要使用批次檔。 再來就是安裝步驟,請把2台windows的機器都裝上 cwRsync 參考文章 [Linux] cwRsync [rsync for windows] SSH 加密異地備份 假設已經安裝好 cwrsync 之後,在系統服務那邊 把他啟動之後,就可以開始使用了 底下是網路上抓好的 清除你系統中沒必要的垃圾檔案

PHP 免費雲端主機 PHPFog vs Pagoda vs AppFog小惡魔AppleBOY

今天筆者來介紹幾套目前免費的雲端虛擬主機服務,自從 Git 版本控制的出現後,大家可以發現,以往免費的虛擬主機搭配後台 Panel,這種模式已經不再看到,取代而之的就是用 Git 來管理程式碼,而不是用 FTP 上下傳方式了。筆者認為學會 Git,是一件非常重要的事情,這樣可以嘗試不同雲端服務,,像是 PHPFog,Pagoda Box,AppFog …等。這次介紹的雲端主機服務不同於 Linode VPS,Linode 是可以拿到完整的虛擬主機權限,可以進行主機的效能優化,以及安裝合適的套件。

Seagate 2.5吋 4TB 外接硬碟 好市多 2699 元小惡魔AppleBOY

本週 Costco 正在特價 Seagate 4TB 外接硬碟特價 2699 元,本來只有 3TB 特價 2699 元活動,後來廠商供應數量不夠,只好拿 4TB 一起來特價 2699 元,所以我去賣場發現一樣價錢,但是足足多了 1 TB 容量啊,只有在本週特價喔 01/18 ~ 01/27 數量有限,賣完就沒了。目前 costco 線上版本已經賣完 4TB 了,大家有需要的可以快去現場看看。

Debian 7.x Install PHP 5.5 或 5.6 版本小惡魔AppleBOY

Debian 目前預設的 PHP Stable 版本是 5.4.x,由於 Laravel PHP Framework 關係,所以希望升級到 PHP 5.5 或 5.6 版本,只要透過底下操作就可以直接裝 PHP 5.6 版本了

[Pear] 利用 Validate 套件驗證 E-mail 多重表單認證小惡魔AppleBOY

最近都在玩 open source 的程式,方便加速自己開發 PHP 的專案,在申請帳號密碼部份就可以利用 Validate 套件來驗證,以及 email 填寫正確性,可以檢查 MX 或者是 A record 紀錄,還蠻方便的,也可以檢查 multiple 欄位,設計的相當不錯,也有金融相關套件可以驗證 CreditCard,金融套件名稱是 Validate_Finance 裡面的 Validate_Finance_CreditCard 部份,線上也有很多相關說明,可以參考 Validate 線上手冊,目前已經到 0.8.2 (beta),如果使用 Release 版本,請選用 0.8.1,軟體可以在此下載,0.8.2 是在 2009-01-31 Release 出來的,還不錯用,最主要的功能如下 Package to validate various datas. It includes : - numbers (min/max, decimal or not) - email (syntax, domain check, rfc822) - string (predifined type alpha upper and/or lowercase, numeric,…) - date (min, max, rfc822 compliant) - uri (RFC2396) - possibility valid multiple data with a single method call (::multiple) 驗證各種不同的日期函式 驗證數字(最小/最大,是否是10進位) email 驗證(正規語法驗證,check domain name 是否存在,rfc822 驗證) 字串驗證(正規語法驗證,是否包含數字英文字母,可輸入最長或最短) url 驗證(遵從 RFC2396 規定) 多重欄位(multiple data)驗證(可以同時驗證上述功能)

博客寄语:

    博主很懒什么都没留下!

实时播报:

博客号-学习成长

相信每一分耕耘都有每一分收获,致力帮助博客主所创作的博客能更快的被收录! 如果有其它需求,可联系下方邮箱。