最近想把原本的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年10月21日 星期三
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帳號(此時可能會再次要求帳號密碼)
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開啟時就可以正常修改了喔
似乎是資料庫用了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
之前一直以為他預設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/
檢查無誤後就可以上傳囉
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
那如果要用右鍵選擇並執行其他動作呢?
// 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與法可以這樣加入:
用SQL與法可以這樣加入:
CONSTRAINT name_of_primary_key PRIMARY KEY (column1, column2)
在phpMyAdmin也可以很方便的設定:
1.點"索引"
2.增加一個新的索引
3.索引類型選PRIMARY
然後新增欄位,再選擇要設定為組合鍵的欄位
訂閱:
文章 (Atom)

























