2015年10月21日 星期三

安裝MariaDB與phpMyAdmin (XAMPP)

最近想把原本的MySQL資料庫換成MariaDB
維基百科-MariaDB
還好包含PHP,Apache,MySQL的懶人包:XAMPP 在5.5.30版之後也將MySQL換為MariaDB了
XAMPP官網下載最新版的安裝檔
支援Windows,Mac,Linux三種平台
安裝包裡面還有FileZilla和Perl等東西,可以自行決定要不要安裝
安裝完後開啟XAMPP control panel,然後開啟Apache和MySQL server(雖然已經換成MariaDB,上面仍然是寫MySQL)
再來到瀏覽器進入 127.0.0.1/phpmyadmin 即可使用

寫到這裡發生一個問題:
phpMyAdmin在MariaDB 10.0.21新增使用者時會出現error:
      #1065 - Query was empty
      使用者不在權限表上
好在已經有人在GitHub上反映這個問題
而且已經得到解決
你可以去下載最新的phpMyAdmin或是照以下的步驟手動解決
打開xampp\phpMyAdmin\libraries 中的server_privileges.lib.php
加入以下綠色的code(4915行開始)
修改完再重開MariaDB Server就可正常執行

if (PMA_MYSQL_INT_VERSION >= 50507
         && PMA_Util::getServerType() == 'MySQL'
         && isset($_REQUEST['authentication_plugin'])
     ) {
         $create_user_stmt .= ' IDENTIFIED WITH '
             . $_REQUEST['authentication_plugin'];
     }
     if (PMA_MYSQL_INT_VERSION >= 50707
         && PMA_Util::getServerType() == 'MySQL'
         && strpos($create_user_stmt, '%') !== false
     ) {
         $create_user_stmt = str_replace(
 @@ -4944,7 +4946,9 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password)
     );
     $real_sql_query = $sql_query = $sql_query_stmt;

     if (PMA_MYSQL_INT_VERSION < 50707) {
         || PMA_Util::getServerType() != 'MySQL'
     )


別忘了phpMyAdmin預設是不用密碼的裸奔狀態
為root加入密碼
刪除那些不需密碼的root
並修改xampp\php\php.ini

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Lang'] = '';

2015年9月15日 星期二

Parse : 建立Cloud code (Mac OS)

Cloud code 顧名思義就是直接在Parse的資料庫執行自訂的code
code必須由javaScript寫成
因為Parse官方的中文說明步驟有點怪,特別做了這個筆記

1. 安裝Parse Command Line Tool

    Mac或Linux只要在終端機下一行指令就能安裝:
    curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash
  
  Windows請看這裡

2. 連結Parse帳號

    輸入指令: parse new
    然後會要求你輸入帳號(Email)和密碼,如果是用google或fb帳號登入的,記得到帳戶那邊設定密碼
    接著選則project或新建project
    最後輸入本機目錄名稱(Cloud Code的檔案會儲存在 /Users/使用者名稱/本機目錄名稱)

3. 上傳Cloud Code

    打開你的Cloud code資料夾可以看到裡面有Cloud和Public兩個子資料夾
    Cloud裡面有一個main.js的Hello world示範程式
    用XCode就可以修改它
    用cd指令跳到Cloud code資料夾
    例: cd test
    然後下parse deploy指令就可同步到你的Parse帳號(此時可能會再次要求帳號密碼)

2015年8月25日 星期二

Jackcess 無法修改Row的error

有時在update row的時後會跳出unsupported collating sort order或類似的error
似乎是資料庫用了Jackcess不支援的sort格式導致的
作者也表示不想花太多時間去支援各種sort格式...
所以必須用Access修改資料庫的排序法才行
已下用Access 2003示範,Acess 2007也可以,只是按紐位置不同而已

1. 打開你的資料庫

2. 工具 -> 選項

3. 一般 -> 新的資料庫排序 -> 選擇「一般」-> 確定
 

4. 工具 -> 資料庫公用程式 -> 壓縮及修復資料庫

再次用Jackcess開啟時就可以正常修改了喔

2015年6月4日 星期四

Calendar的陷阱 : 24小時or12小時制?

Java的Calendar是有分12小時制和24小時制的
之前一直以為他預設24小時制一直鬼打牆

Calendar.HOUR指的是12小時制的小時,如:
calendar.set(Calendar.HOUR, 5);

HOUR_OF_DAY才是24小時制的
如果給Calendar.HOUR超過12的數值日期可能會跑掉

正確用法(假設要設晚上8點):

24小時制
calendar.set(Calendar.HOUR_OF_DAY, 20);

12小時制
calendar.set(Calendar.AM_PM, Calendar.PM);
calendar.set(Calendar.HOUR_OF_DAY, 8);

也可以用calendar.get(Calendar.AM_PM)取得現在是上午或下午
calendar.get(Calendar.AM_PM)回傳整數1或0
0表AM 1表PM

2015年5月31日 星期日

在Goole play books上架書籍(二) - Word轉Epub

epub是一種國際標準的電子書格式
Google Play Books只支援pdf和epub兩種格式
推薦使用epub
詳見為基百科http://zh.wikipedia.org/wiki/EPUB

以下說明如何從word檔轉換為epub格式
並在Google Play Books上架
這是轉好的成品: 逍遙遊

1.  下載並安裝電子書神器: calibre http://calibre-ebook.com/download
calibre可以幫你開啟、轉換、整理電子書
免費,而且支援Linux、Mac、Windows
還有內建繁體中文,比較可惜的點是不支援中文直讀

2. 如果calibre打開時是英文,點左上方的Preference -> Look And Feel -> Choose Language
選擇Traditional Chinese 然後點Apply,重開calibre後介面就會變中文了



3. 點左上角的"加入書籍",加入要轉換的書籍

4. 在書籍上點右鍵->轉換書籍->個別轉換
    將輸出格式改為epub,輸入書名、作者等資訊,也可以加入書籍的封面


5.  calibre預設檔案若超過260kb就會自動切割,如果你想要手動切割的話(本次試範為手動)
     在epub輸出頁面,把"分割大於此項的檔案"調大
     調整完後按確定,等後轉換完成


製作目錄: 如果你的word檔本身沒有設定目錄,或者calibre無法精準偵測你的目錄,就要自己手動增加。

6. 在書籍上點右鍵-> Edit book

7. 你的文章儲存在index.html中,如果沒有做第5步驟,可能會被切為多個檔案



8~12步是在手動分章節,不需要的話可以跳過

8. 先新增一個章節
    檔案 -> New file -> 輸入"章節名稱.html"  -> 確定


9. 剪貼內容
    點兩下index.html,把第一章的內容剪下

10. 然後貼到第一章的檔案(貼在<body> </body> 之間)


11.  複製格式
       將 <link href="stylesheet.css" rel="stylesheet" type="text/css"/>
<link href="page_styles.css" rel="stylesheet" type="text/css"/>
       複製到第一章的檔案中(<head>和</head>之間)


12. 重複8~11的步驟,完成所有章節

13. 編輯目錄
      Tools -> 目錄 -> Edit Table of Contents ->建立新的項目




14.  選擇章節檔案並輸入章節名稱 -> 確定

如果沒有分割章節也可以用滑鼠直接指定章節位置
15.以此類推加入所有章節,完成後別忘記儲存!


先別急著上架,在上傳epub檔案時Google會對你的檔案進行格式驗證
不符合規定的epub檔無法上傳
為了節省時間還是先自己檢測吧
用google指定的檢測工具EpubCheck

線上檢測工具 : EPUB Validator http://validator.idpf.org/

檢測軟體 : pagina EPUB-Checker(推薦) http://www.pagina-online.de/produkte/epub-checker/

檢查無誤後就可以上傳囉

2015年5月28日 星期四

Swing: 在JTable用滑鼠右鍵選擇row

JTable預設用滑鼠左鍵選擇row
那如果要用右鍵選擇並執行其他動作呢?

//  BUTTON3代表滑鼠右鍵
if(evt.getButton() == MouseEvent.BUTTON3){
            Point point = evt.getPoint();
            int row = table.rowAtPoint(point);
           
            ListSelectionModel listModel = table.getSelectionModel();
            listModel.setSelectionInterval(row, row);
            //要執行的動作
}

另外,使用ListSelectionModel的clearSelection()可以清除已選擇的row

2015年5月27日 星期三

在phpMyAdmin新增組合鍵(Composite Key)

SQL中可以設定多個欄位組合成一個主鍵,稱為組合鍵(Composite Key)

用SQL與法可以這樣加入:
CONSTRAINT name_of_primary_key PRIMARY KEY (column1, column2)
 
在phpMyAdmin也可以很方便的設定:
 
1.點"索引"

 
2.增加一個新的索引


3.索引類型選PRIMARY
   然後新增欄位,再選擇要設定為組合鍵的欄位