軟體開發筆記

Linux

Ubuntu 搭配 Nginx 安裝 Let’s Encrypt Wildcard SSL

前言去年 Let's Encrypt 開放申請 Wildcard SSL,剛好最近有個域名尚未使用 SSL,趁機記錄一下安裝過程。安裝流程本次安裝的環境如下:Ubuntu LTS 16.04、Nginx 並使用 CloudFlare 做為 ...
Git

Android 專案設定 Git Submodules

前言目前有數個專案使用了共同的核心架構,一開始是每個專案都有一份相同的程式碼。有天驚覺:若哪天核心程式碼做了修改,那麼每個專案都要跟著做調整;一兩個還好,若是要修改數十個專案,這肯定會是一場災難。理想的作法是只要改一次,更改的內容便可同步到...
Google Cloud Platform

使用 Google Cloud Platform 翻新系統架構

前言最初只是想重構蔬果行情站的應用程式,目前專案是採用非正規的架構寫出,而且相當小眾,壞了很難追到問題的原因;近期較熟悉官方推薦的方式,也對於這個專案有些新想法,就決定把它砍掉重練。而前陣子 Google I/O 宣布:Google Clo...
PHP

Visual Studio Code 設定 PHP Debug

前言以往寫 Java 或 C# 時,IDE 會提供開發者除錯的功能,其中我最頻繁使用的是斷點 (Breakpoints),點幾下就可以知道程式流程及變數內容,相當方便。但寫 PHP 時,我除錯的方法是印出變數值,相較之下根本還停留在石器時代...
Android

TextView 總是對不齊 Drawable

前言不曉得你們有沒有遇過這種狀況:<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="cen...
網路應用

Firebase Cloud Messaging 在背景收訊息

前陣子將推播服務換成 Firebase,但發現一個問題:只有在前景時才收得到訊息。官方文件指出:App behavior when receiving messages that include both notification and ...
Arduino

DFRobot Arduino 入門套件開箱

前言去年一直在嚷著要學 Arduino,但遲遲未去接觸;前陣子熱衷養魚時突然發想:如果可以遠端監測、控制我的魚缸就好了。而 Arduino 似乎可以滿足我的需求,所以就手滑買了一組入門套件。Arduino 套件百家爭鳴,選擇 DFRobot...
軟體開發

Pair Programming 心得

前言我在工作的專案中只要 Deadline 沒有很緊,或者是程式要重構時,我跟另一位工程師就會採用Pair Programming 進行開發,簡單來說就是:同時間一人負責寫,另一人負責檢查及提問,透過此開發方式提高程式碼的品質。
Android

玩遊戲學廣告配置

前言我對手機廣告的體驗一直不是很好,其中最糟糕的體驗莫過於蘋果新聞的網頁,一進去先跳個全版廣告不說,有時還關不太掉,常因此而惱怒。最近看到朋友在玩一款遊戲,名稱是:叔怪由於題材很有趣,我也跟著玩了,在遊玩的過程中,我發現我完全不排斥廣告,甚...
Google Cloud Platform

Google Compute Engine 使用心得

前言原本使用的主機是一年幾百塊的 share hosting,用了兩年多,也沒出現甚麼太嚴重的問題,我的需求就是架個部落格,以及跑幾支簡單的網路程式。──直到某天我將蔬果行情站改版後,才驚覺大事不妙。引爆點早期版本的 app 是直接在 cl...
Android

[Android] FAB給我的壞體驗

前言最近在重構蔬果行情站的程式碼,由於是將整個架構換掉,*註1想說都要大改了,索性連layout也一起修改。layout中我最不滿意的地方是功能選單;
PHP

CodeIgniter 在 Server 上無法正確執行 Cron Job

狀況使用 cron job 執行 CodeIgniter 的檔案,總是跑出 default controller 的內容。官方文件的 cli 使用方式:$ php /CI路徑/index.php controller名稱 function名...
網路應用

OpenShift使用不含www的網址

問題在OpenShift要使用CNAME的形式綁域名,該如何設定,才能以不含www的網址當作預設的網址?解答過程中以 做為範例,最終結果是換成 。
Android

[Android] 透明背景被填滿黑色

問題我的透明按鈕不知為何,在某支手機上看起來被填滿了黑色。 在其他手機上顯示的黑色按鈕我手機上顯示的透明按鈕解答
PHP

CodeIgniter中helper與library的差異

前言最近使用CodeIgniter開發時,發現不同controller中會用到同一支function,難道每個controller都要加入這支function嗎──當然不是。
Linux

Linux進行不輸入密碼的SSH連線

前言一般SSH連線都會要求輸入密碼,若有自動SSH連線的需求,則目標(被連者)需要建置免輸入密碼的設定。案例本地端使用Cron Job透過SSH連線對雲端伺服器進行同步資料(rsync)。會有這個需求是因為有更新頻繁的網站,大約1~2天就會...
Amazon Web Services

[AWS] Ubuntu安裝s3fs流程

前言S3FS是將S3做為掛載硬碟使用的檔案系統(FUSE-based),透過S3FS可以將S3當作本地端的硬碟來進行讀寫,因此可以用原生的方式來存取檔案。這陣子在做需要大量儲存空間的專案,使用S3存放檔案;AWS雖然有提供SDK,但發現不夠...
Amazon Web Services

[AWS] 使用S3的PHP SDK刪除資料夾

首先要先說明──S3沒有資料夾的概念。在S3裡面可以看到分層,其實只是檔名中的/以分層來呈現。我最先找到的資料是:使用get_object_list()指定prefix(前綴字,即假想的資料夾),再用foreach去跑delete_obje...
Amazon Web Services

[AWS] EC2使用phpMyAdmin管理RDS

在學會使用EC2連接RDS後,直接下command來管理RDS似乎有點累人;沒關係,那就來安裝phpMyAdmin。
Amazon Web Services

[AWS] EC2連接RDS

申請完EC2跟RDS的兩個服務後,接下來要從主機連資料庫,該如何進行?首先要設定RDS的Security Group,在Inbound中新增規則:Port Range為3306(RDS的預設port),Source為EC2的Private ...
網路應用

BigDump 匯入大於上傳限制的資料庫

前言最近有個網站要大開刀,想說先複製到其它主機來亂搞,於是就將資料庫匯出,要傳到其他主機時,發現資料庫大於上傳大小限制,匯不進去……
Joomla

Jumi – 置入自訂程式碼的Joomla套件

前言:前陣子架Joomla時有個需求──要在頁面演示資料庫的CRUD,且視覺上要美觀;其實就是小型的會員資料庫(登錄資料、修改登錄資料、查詢……等)加上套CSS。Joomla有會員的功能,我的想法是另開一個表格放資料,用Joomla的會員資...
Linux

Ubuntu安裝FTP伺服器

文章上半部為Ubuntu安裝vsftpd的流程,AWS後台的設定可直接瀏覽文章底部內容。首先要安裝FTP的程式(vsftpd):$ sudo apt-get install vsftpd安裝好後,修改設定檔$ sudo vi /etc/vs...
Android

[Android] ImageView的getWidth()跟getHeight()回傳值為0

這個問題的原因通常是View尚未準備好,必須等到所有View都讀取完畢,return值才會不等於0。該如何解決呢?有兩種作法:一、等讀取完畢再去取值在Activity覆寫下列函式: @Override public void onWindo...
網路應用

使用SourceTree同步OpenShift

SourceTree在Clone時碰到一個問題,似乎是key沒有吃進去導致無法Clone在OpenShift上的檔案。