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

首先要先說明──S3沒有資料夾的概念。

在S3裡面可以看到分層,

其實只是檔名中的/以分層來呈現。

我最先找到的資料是:

使用get_object_list()指定prefix(前綴字,即假想的資料夾),

再用foreach去跑delete_object()

不過最直覺的方式應該是使用delete_all_objects()

一樣是指定prefix(用正規表示式),但省下跑清單跟迴圈的程式碼,好用許多。

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

前言

前陣子架Joomla時有個需求──

要在頁面演示資料庫的CRUD,且視覺上要美觀;

其實就是小型的會員資料庫(登錄資料、修改登錄資料、查詢……等)加上套CSS。

Joomla有會員的功能,我的想法是另開一個表格放資料,

用Joomla的會員資料去串到上述表格。

但網站定位在只有訪客+管理員,不提供註冊及會員功能;

最後作法是全部獨立出來,將功能置入在網站的頁面上。

而Jumi就是實現置入自訂程式碼的套件。

閱讀全文 Jumi – 置入自訂程式碼的Joomla套件

Ubuntu安裝FTP伺服器

文章上半部為Ubuntu安裝vsftpd的流程,

AWS後台的設定可直接瀏覽文章底部內容。

首先要安裝FTP的程式(vsftpd):

$ sudo apt-get install vsftpd

安裝好後,修改設定檔$ sudo vi /etc/vsftpd.conf

 local_enable = YES //讓實體User可以使用FTP
 chroot_local_user = YES //綁User的家目錄,不能去上層目錄
 write_enable = YES //讓使用者可以寫入
 local_umask=022 //讓檔案權限=755

設定時有參考鳥哥:FTP伺服器設定

以下為新增帳戶的部分:

$ useradd -g 群組 -d 家目錄 帳號名稱

這個指令是新增帳號,如果是裝Apache的使用者,

家目錄參數可以設在/var/->即網站根目錄(WWW)的上一層。

*chroot_local_user設為YES時,FTP帳戶不得有家目錄之權限,

權限必須設在家目錄的子資料夾(如上述的WWW),否則無法訪問FTP。

$ passwd 帳號名稱

這個指令用來設定帳號的密碼。

如果是多帳戶、多網站的環境,例如:

一個班級每個學生都擁有自己的網頁空間,

且每個學生的學號為一個帳戶。

實作後的網址為:http://網站.com/~學號

則可以開啟Apache的userdir功能模組。

如果不需要此功能可略過這部分。

sudo a2enmod userdir

這個指令是開啟Apache的userdir模組。

接著修改userdir的設定:sudo vi /etc/apache2/mods-enabled/userdir.conf

修改如下:

  UserDir public_html
  UserDir disabled root
  
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    
      Order allow,deny
      Allow from all
    
    
      Order deny,allow
      Deny from all
    
  

做到這裡,此時PHP的檔案應都開不起來,

我們還要修改PHP的設定檔。

$ sudo vi /etc/apache2/mods-available/php5.conf

打開後,註解有提到要re-enable php要註解<IfModule>這個標籤的內容。

修改後如下:

  <FilesMatch ".ph(p3?|tml)$">
    SetHandler application/x-httpd-php
  
  <FilesMatch ".phps$">
    SetHandler application/x-httpd-php-source
  
  # To re-enable php in user directories comment the following lines
  # (from  to .) Do NOT set it to On as it
  # prevents .htaccess files from disabling it.
  # 
  #  
  #   php_admin_value engine Off
  #  
  # 

最後,在每個帳號的家目錄底下建立資料夾public_html

重新啟動apache後,試試看http://網站.com/~帳號

此時應可正常運作。

下述是AWS的設定:

在Security Groups的Inbound開啟21port,

再使用上述建立的帳號、密碼去連Public IP即可。

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

這個問題的原因通常是View尚未準備好,

必須等到所有View都讀取完畢,return值才會不等於0。

該如何解決呢?有兩種作法:

一、等讀取完畢再去取值

在Activity覆寫下列函式:

 @Override
 public void onWindowFocusChanged(boolean focus) {
  super.onWindowFocusChanged(focus);
  // 在這裡getWidth()或getHeight()
 }

二、使用ViewTreeObserver().OnPreDrawListener預先讀取數值

 mImageView.getViewTreeObserver().addOnPreDrawListener(
  new ViewTreeObserver.OnPreDrawListener() {
  public boolean onPreDraw() {
   int Height = mImageView.getMeasuredHeight();
   int Width = mImageView.getMeasuredWidth();
   // 取得寬高
   return true;
  }
 });

zBench佈景主題正體中文語系檔發佈

最近白開水的佈景換成了:zBench,跟之前一樣是簡單的黑白配色,不過容量小了許多,

沒什麼圖片,僅僅幾張小ICON而已;佈景外觀的設計幾乎都是由HTML&CSS來完成。

這種簡潔的版面相當合我胃口,可惜語系檔獨缺繁中語系,

所以就手癢自己做一個了,這邊放上來給需要者囉:P

閱讀全文 zBench佈景主題正體中文語系檔發佈

將Google+頭像顯示在Google搜尋結果

最近開始在用Google+,雖然晚了點,但該有的進度還是不能少。

昨天剛好看到一項不賴的功能:Google Authorship,

大致來講就是用Google+跟自己的網站進行雙向驗證;

閱讀全文 將Google+頭像顯示在Google搜尋結果