2016-06-26

wordpress on docker

wordpress on docker:
  1. environment:
    1. ubuntu 15.10
  2. install docker:
    1. apt-get update
    2. apt-get install docker.io
  3. pull docker:
    1. docker pull mysql
    2. docker pull wordpress
  4. docker run…
    1. 將資料目錄對應到 host server 目錄
  5. start mysql docker:
    docker run --name wordpressdb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -v "$PWD/mysqldata/":/var/lib/mysql -d mysql
  6. start wordpress docker: docker run -e WORDPRESS_DB_PASSWROD=wordpress -d --name wordpress --link wordpressdb:mysql -p 192.168.56.101:8080:80 -v "$PWD/wordpress":/var/www/html wordpress
  7. execute docker without sudo: (applied after restarting.) (or logout?)
    sudo usermod -aG docker 



2015-07-10

Remove grub boot menu and ubuntu system from Win8 and ubuntu dual system

environment:
   win8 (x64) + ubuntu system

target:

  1. remove grub boot menu
  2. remove ubuntu system/partition

2015-06-24

MySql in ubuntu, and replication.


mysql install in Ubuntu:


  1. sudo apt-get update
  2. sudo apt-get install mysql-server
    1. modify for my.cnf (in /etc/mysql) :
      1. bind-address  = 10.1.1.1
    2. allow remote hosts to use root to login:
    1. mysql -u root -p
    1. mysql>use mysql;
    1. mysql>update user set host = '%' where user = 'root';
    1. mysql>flush privileges;
  3. replications:
    1. source db:
      • in my.cnf:
        • log-bin=C:/Program Files/MySQL/MySQL Server 5.0/log/replication.log
        • server-id=1
        • restart mysql
      • mysql --user=user --password=password
        • FLUSH TABLES WITH READ LOCK;
        • SHOW MASTER STATUS;
        • keep File, Position
      • mysqldump --user=user --password=password --all-databases --master-data | gzip > dbdump.db.gz
        • 備份部份 DB: mysqldump --databases db1 db2
      • after mysqldump, 
        • mysql>UNLOCK TABLES;
    2. slave db:
      • gunzip < dbdump.db.gz | mysql -p
        • or mysql --user=user --password=password < dbdump.db
      • mysql>STOP SLAVE;
        
        mysql>CHANGE MASTER TO 
        MASTER_HOST='host name',
        MASTER_PORT=3306,
        MASTER_USER='username',
        MASTER_PASSWORD='password',
        MASTER_LOG_FILE='logfile',
        MASTER_LOG_POS=recorded_log_position;
        
        mysql>START SLAVE;
      •  show slave status
    3. in Ubuntu, mysql table name 預設是區分大小寫:
      1. (in my.cnf) lower_case_table_names=1   不區分大小寫

others:
  1. ubuntu 時間設定:
    1. 如果有 ntp service: service ntp stop
    2. ntpdate xx.xx.xx.xx   (time server)

2015-06-07

First Python practice


  • 第一個 Python 練習
  • Environment:
    • windows 8
    • Python 3.4
    • IDE:
      • Visual Studio 2013 + Python Tool for Visual Studio (PTVS)
      • PyScripter
      • test other IDE:
        • Sublime Text
        • PyCharm: seems to need more resources to run it, like busy CPU.
  • Target:
    1. 跟 python 親近一點
    2. write function in another file
    3. read/write file (IO) with utf-8 encoding
    4. access MariaDB/MySQL database
    5. use GitHub: workingrichard/PythonFirst

2014-08-27

win8 + ubuntu 14 雙系統




environment: windows 8.1 + ubuntu 14.04 LTS 雙系統


  • 安裝:
    • 安裝好 windows 8 後,接著安裝 ubuntu。
      • 由於在 windows 中,C, D 都設成了 primary disk。
      • 壓縮 C 切出一個空的 partition。
      • 以致於 ubuntu 再切時,/ 可以設成 primary disk,但不能再新增 swap。很有可能是因為已經有了4個 primary disk 了。改將 / 設成 logic disk,就可以新增 swap 了。
      • 不過,很有可能因為上述,變成開機直接進入 windows 而沒有 boot menu 可以選擇進入 ubuntu。
    • 開機進入 windows 8 後,下載使用 EasyBCD 軟體:
      • Add New Entry: Linux/BSD, type: Grub 2, partition 選擇安裝的 ubuntu partition。儲存套用,重開機後,boot menu 就出現可以選擇 windows 或是 自定的名稱了。
    • 故障排除:
      • 安裝時,如果出現 "The installer encountered an unrecoverable error. A desktop session will now be run so that you may investigate the problem or try installing again." 這樣子的錯誤訊息,在一開始就無法安裝了。
        檢查了 iso MD5,試了 ubuntu 14.01 光碟、14.10 USB 開機安裝,都是這樣的錯誤訊息。網路上也有人認為關閉安裝的介紹(slide show)可以解決,但我都不行。(不過,linux Mint 是可以的)
        解法:不要啟動無線網路,也不要安裝時更新,直接就光碟內容安裝即可進行下去

  • 中文:
    • 字型:
    • ibus 中文輸入法的設定畫面:
      • > ibus-setup
      • ref: http://www.pinyinjoe.com/linux/ubuntu-12-chinese-setup.htm
        http://www.pinyinjoe.com/linux/ubuntu-10-chinese-input-pinyin-chewing.htm
      • http://wiki.linux.org.hk/w/Configure_IBus
    • 安裝 gnome classic version 後,language support icon 不見了:
      • sudo apt-get install language-selector-gnome
      • 改選 gcin 輸入法
      • 倉頡:可使用五四三倉頡。

2013-09-30

在 windows 裡架起 Cassandra

install Cassandra in windows system

在 windows 系統上,加起 cassandra,實作起來不難,簡單步驟為:
(1) 安裝 java (JRI)
(2) 下載 cassandra tar, 並解開。
(3) 設定新增兩個系統環境變數: JAVA_HOME , CASSANDRA_HOME
(4) 修改 cassandra 設定檔 cassandra.yaml , 設好 cassandra 目錄所在。
(5) 啟動 cassanda,完成。


2013-08-28

How to union multiple table in MySQL?

database: MySQL

如果有多個 table 要合併起來,如果有 foreign key 要對應,一般都是用上 join 的語法。
但是,table 之間沒有關係,純綷只是要將各 table 中的所有 record 集合起來,那麼,就可以用上 union 的語法了:

select agentid as id, agentname as name  from agent
union
select cid, name from category
union
select id, adid from admanagement;

result:
id name
--------------
1 agent1
2 agent2
1 ca1
2 ca2
1 ad1
2 ad2

也可以加上一個欄位(文字或數值),直接來區分屬於那個 table 的內容:


select agentid as id, agentname as name, "agent" as type from agent
union
select cid, name, "category" from category
union
select id, adid, "ad" from admanagement;

result:

id name type
-----------------------
1 agent1 agent
2 agent2 agent
1 ca1 category
2 ca2 category
1 ad1 ad
2 ad2 ad

後記: 當資料量大時,效能不知如何...



後來,再查時,發現使用 union all 的速度會快過使用 union,原因在於 union all 不會去除重複,而 union 語法時,MySQL 會試著去過濾重複的資料。因此,如果確定 table 之間不會有重複的資料,可以直接下 union all 試看看:

select agentid as id, agentname as name, "agent" as type from agent
union all
select cid, name, "category" from category
union all
select id, adid, "ad" from admanagement;


2013-02-01

root TF101, and upgrade to EOS 4 JELLYBEAN (4.2)

自從 TF101 由 Android 3.x 升級到官方所釋出的 Android 4.0 之後,使用經驗是大打折扣。原因有二:

(1) 首先,桌面圖示有時會憑空消失了。再怎麼試也無法出現,除非重新開始。
而這會有什麼影響呢? 除了最近開啟過的 app 之外,只剩下"設定"的功能可以用而已,無法再啟動其他的 app 了。
後來,安裝了 Apex launcher,再改用 Nova launcher,情況改善了,但是還是偶爾會發生桌面 app icon 全部消失的狀況。

(2) 另外,前一陣蠻著迷 2013 棒球的遊戲。結果,遊戲一啟動或是進行到一半,會突然出現一半亂彩色的畫面,接著畫面就沒有反應了。必須 kill 遊戲再重啟,但還是會再發生。常常必須得重新開機才行。

眼看著原廠似乎沒有支援 TF101 這第一代平板的 OS 升級打算,於是就想到: 既然過了保固了,那就來 root & 升級 OS 吧!!


2012-11-30

compare performance in Dictionary and ConcurrentDictionary

Dictionary 類別,是不支援 thread safe 的。
意思是說,在 multi-thread 環境下,如果同時直接 read/write dictionary 、而不 lock (或沒有使用 InterChange) 的話,就有可能發生 exception。

在 .net 4.0 之後,針對平行處理提供了許多類別,其中之一就是 ConcurrentDictionary (so also)。
也就是在 multi-thread 環境,就算有同時 read/write 的可能,也不用自己實做 lock 機制,系統支援了。

這當然是一個好消息。

但是,第一個首要擔心的是: 效能會不會掉。

這裡,先就 single thread 來簡單測試一下:

2012-09-10

MySQL exception: Host 'host_name' is blocked

[環境]

  • client
  1. 數台機器定時向 MySQL database 取得資料。
  2. windows 2008 R2 standard
  3. .net 2.0 sp2
  4. c#
  • db server
  1. MySQL 5.0.45
  2. windows 2008 R2 standard


[狀況]

突然間(about 2am. orz),有一台機器連不到 MySQL,但其他機器仍正常運作。

MySql.Data.MySqlClient.MySqlException: Host 'xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'   在 MySql.Data.MySqlClient.PacketReader.CheckForError()
   在 MySql.Data.MySqlClient.NativeDriver.Open()
   在 MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
   在 MySql.Data.MySqlClient.MySqlPool.GetConnection()
   在 MySql.Data.MySqlClient.MySqlConnection.Open()
   在 SQLDB.MySQLNativeDB.reCreateSqlCommand() 位置 D:\projects\vs2008\source\MatchEngine\Scupio2.0\SQLDB\MySQLNativeDB.cs:行号 132
   在 SQLDB.MySQLNativeDB.ExecuteCmdNonQuery(String sqlcmd, IDataParameter[] parameters) 位置 D:\projects\vs2008\source\MatchEngine\Scupio2.0\SQLDB\MySQLNativeDB.cs:行号 86

這個例外訊息看起來蠻明確的: 機器 xxx 被 MySQL db server 擋(block)了。


2012-04-15

zoom out of Chrome browser

前幾個星期,突然發現 chrome 瀏覽器的縮放倍率改變了!

之前,由 100% 直接跳到 125%,對寬螢幕的筆電來說,100% 字過小,而 125% 字有點過大,但最要緊的是一個畫面看不了幾行。

在前幾個星期時,按下 ctrl + 時,突然發現字沒有那麼大了,檢查了一下,110% 的放大倍率出現了,對寬螢幕來說,感覺大小適中,真是增加了使用者的方便啊 -- 雖說,firefox 古早古早就是如此了。

2012-01-10

install Cassandra in Ubuntu

目標:
    利用 VirtualBox 架起兩台 ubuntu server,並且安裝 Cassandra,並設定成同一個 ring。

環境(environment):
(1) Virtual Box
(2) Ubuntu 10.04
(3) Cassandra
   
步驟:
(1) 安裝 ubuntu server * 2。
      IP 分別為 192.168.65.39 & 192.168.65.222。
(2) 分別安裝 Cassandra。
(3) 設定兩台成一個 cassandra ring。
      以 192.168.65.39 為 seed provider。


2011-12-02

NoSQL (II)

主要參考自 IThome
   NoSQL解決資料庫暴量的新方法
   了解NoSQL不可不知的5項觀念  :
   快速認識4類主流NoSQL資料庫  : 這4大類型包括了Key-Value資料庫、記憶體資料庫、圖學資料庫和文件資料庫。

[terms]:
avalanche of data: 雪崩資料(大量資料或瞬間之高流量)
split-brain
map-reduce: 映射 與 化簡
parallel aggregated queries: 平行聚合查詢

about NoSQL

這篇是看了 InfoQ 上的影片: NoSQL誤用和常見陷阱分析(孫立) 後,記錄下的一些摘要:

NoSQL:
1. 有許多個版本,如 TtServer(
Tokyo Cabinet), ....
2. 升級版本之相容性: data format, API interface
3. 精通它


2011-11-10

列表(List)與字典(Dictionary)的比對效能

[問題]
某個 windows service 時常處於 CPU 忙碌、佔據大量記憶體,而且執行速度極慢? (應該說是執行結果跟不上現實需要)

[原因]
幾經測試,原來...,現有的 code 是用上 List().Contains 的方式來比對。
以前沒那麼慢,那是因為要比對的歷史記錄並不多,而累積到現在,赫然發現已有四十七萬多筆了。再加上判斷二千多筆資料是否存在在歷史記錄之中,比對數就用上了 2k * 470k 這種等級。難怪CPU那麼忙,而且要花費許多時間。

[step]
知道原因後,二話不說,直接改寫成 Dictionary,利用 Dictionary 來比對。
結果,執行一次時間由數十秒變成1~2秒,CPU 偶爾上揚一下 -- 表示有在做事。
這... 也不去細究源由了,算是補上一個坑,路更平了。

2011-11-09

消失的時間 -- ASP.Net 呼叫 remoting call

[寫在前面]

(1) 在 IIS 下,aspx 接到 request 後,再以 remoting call 的方式,呼叫一 windows service(主要是在本機上); 而這個 windows service 實做了所有的邏輯,並且會定時(如: 每一分鐘或每五分鐘)從 database 中重新載入資料形成 memory cache;並將結果回傳給 aspx,再由 aspx 組成網頁或字串以回應。
(2) aspx 與 windows service 會記錄各自所消耗的時間。
(3) environment: Windows 2003, .net framework 2.0 sp1.

[問題 & 狀況]
(1) aspx 記錄了呼叫 remoting call 到得到結果的時間,在某些時候,會遠超過 windows service 處理該次的時間。
      而其中,消失的時間那裡去了呢?
      會是因為 thread pool 滿了,而在等待嗎? CPU 太忙所導致嗎?
      但是看起來,系統資源似乎還綽綽有餘啊!
(2) 而這種現象,在流量大(QPS高)時,尤其明顯。
(3) 有些機器很嚴重,但有些機器卻還可以接受。(ps: 機器等級差不多,執行內容都相同。)

2011-11-01

customize setting of new layout/UI (Google plus style) of Google Reader

Google Reader 是我常用的瀏覽資訊服務,它讓我在一個畫面看盡了我有興趣(訂閱RSS)的網站的更新文章,而不用煩惱"不知何時該去巡視一遍網站"、"到底何時有新文章"。

但由於 Google Reader 預設的文字大小、以及版面的設計佔了許多面積,於是在 Firefox 與 Chrome 裡,我都使用了 Stylish 這個擴充元件,並且在 userstyles.org 安裝了一些可以改變 Google Reader 版面的 script code。後來,我也試著自己去修改其中的 code。

但在今天使用 Google Reader 時,Google  Reader 被套用了 Google+ style 產生了新的版面,所以之前的就不合用了。

試著自已修改了一下,還不錯,分享如下:

2011-10-28

MongoDB 小試

今天又測試了 MongoDB,覺得還蠻有趣的,只管新增資料,就可以直接查詢了,毋須留意 table schema。

主要有兩個測試,分列如下:

[Question 1]
     relational database 中的一筆資料有多個欄位,在 MongoDB 中如何達到這種效果呢?

2011-10-27

Starting survey of MongoDB (NoSQL)

最近在研究 NoSQL,先從 MongoDB 開始。
而 NoSQL 那麼多種,為何會選擇 MongoDB 呢? 其實我並沒有比較過,只不過訂閱的 RSS 中似乎 MongoDB 出現的次數較多,印象分數較高的緣故吧!
先從 MongoDB 研究起,也算是對於 name value pair 之非 Relational DB、NoSQL 的初步熟悉吧!

[Steps] as follows:
  1. 下載適合OS的版本: www.mongodb.org/downloads
    我下載的是 win 32 版本。
  2. 解開之目錄下,MongoDB 執行檔在 bin 目錄下: bin\mongod.exe
  3. 直接執行的話,會使用預設的資料庫檔案路徑: c:\data\db,但必須要自行建立目錄。
    也可以啟動時指定到另外目錄,如: mongod --dbpath d:\job2\mongo
  4. 執行 mongo.exe,這是直接下 sql command 來操作 MongoDB 的 console。

受教於對岸年輕CEO的一席話...

剛才有機會聽對岸年輕的執行長講述他們的過程,以及思維。心裡很有感受。
他們不是一開始就成功的,而是從成效不好之產品中試圖去分析,並歸納出原因而且驗證,然後,思考推出下一個改良的產品,或許是不同領域的產品。
再則,分析使用者的習慣,推測接下來幾年的趨勢,而思索要推出什麼樣的產品是使用者搭配現在之後的載具(device)所需要的。並且,思考要串成最終結果的循環之中,環節的每一步是什麼,如何打通。

讓我感受較深的是: 執行後的檢討是那麼的實際,有數據佐證,得出的結論也讓我這個外人聽
起來覺得蠻正確的。可以看出,檢討、蒐集那些數據、大量數據、分析,到最後的歸納結論,再到決策,那種緊咬不放棄的心思呼之欲出,縝密的分析歸納支持著產品的方向與設計。這些都不是兩三天的空思想法。
而且,他很坦白、無顧忌的分享!

佩服! 受教了!

- 思索。
  有別於一般性的尋思,而是針對現況之不如預期,搜索、挖掘原因在那,有沒有方式可以驗證推測的原因,明確後確定下一個目標。

- 紮實。
  每一個產品或專案,實做上是有實效的。因為,可能是檢討之後,下一個改良產品的基石基礎。

- 站在客戶的角度。
  產品設計、實做、銷售、說明,不是只從工程師的角度來出發,不是以工程師的語言來描述解說。而是從使用者、從客戶的觀點、視角(view)來看。

- 化繁為簡。
  複雜&功能強大的系統,在客戶面前,也都能在三言兩語之間就可以上手。