顯示具有 設定 標籤的文章。 顯示所有文章
顯示具有 設定 標籤的文章。 顯示所有文章

2019年11月10日 星期日

Ubuntu Elasticsearch 使用 IK Analysis Plugin

下載新版的 IK Analysis Plugin (這裡以 Ver 7.4.2為例),並且下載擴充中文字典檔案
sudo mkdir /usr/share/elasticsearch/plugins/ik/
sudo cd /usr/share/elasticsearch/plugins/ik/
sudo wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
sudo unzip elasticsearch-analysis-ik-7.4.2.zip
sudo \rm elasticsearch-analysis-ik-7.4.2.zip
sudo cd /usr/share/elasticsearch/plugins/ik/config
sudo wget https://github.com/samejack/sc-dictionary/raw/master/main.txt
sudo mv main.dic main.dic.old
sudo mv main.txt main.dic

設定擴充字典,編輯 IKAnalyzer.cfg.xml 設定檔案
cd /usr/share/elasticsearch/plugins/ik/config
sudo vi IKAnalyzer.cfg.xml
將 ext_dict 新增 main.dic
 <entry key="ext_dict">main.dic</entry>
重新啟動ElasticSearch
sudo service elasticsearch restart

沒問題的話,就來測試一下 IK 吧...
curl -XGET http://localhost:9200/_analyze -H 'Content-Type:application/json' -d'
{
  "text":"後悔莫及的人家",
  "analyzer": "ik_smart"
}'
應該會得到這樣的結果:
{
  "tokens" : [
    {
      "token" : "後悔莫及",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "的",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "人家",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

接著來建立一個新的 index 就叫做 test 吧,順便進行一下IK分詞測試看看...
curl -XPUT http://localhost:9200/test

curl -XPOST http://localhost:9200/test/_mapping -H 'Content-Type:application/json' -d'
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart"
            }
        }

}'

curl -XPOST http://localhost:9200/test/_create/1 -H 'Content-Type:application/json' -d'
{"content":"曾經有一份真摯的感情放在我面前.我沒有珍惜.等到失去的時候才後悔莫及,塵世間最痛苦的事莫過於此.你的劍在我的咽喉上割下去吧!不要再猶豫了!如果上天能夠給我一個再來一次的機會,我一定會對那個女孩子說三個字\"我愛你\",如果非要在這份愛上加一個期限的話,我希望是一萬年。"}'

curl -XPOST /test/_search -H 'Content-Type:application/json' -d'
{
  "query": {"match": {"content": "如果"}},
  "highlight" : {
    "pre_tags" : ["", ""],
    "post_tags" : ["", ""],
    "fields" : {
      "content" : {}
    }
  }
}'
結果應該會是如此 :
{
  "took" : 292,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.40037507,
    "hits" : [
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.40037507,
        "_source" : {
          "content" : """曾經有一份真摯的感情放在我面前.我沒有珍惜.等到失去的時候才後悔莫及,塵世間最痛苦的事莫過於此.你的劍在我的咽喉上割下去吧!不要再猶豫了!如果上天能夠給我一個再來一次的機會,我一定會對那個女孩子說三個字"我愛你",如果非要在這份愛上加一個期限的話,我希望是一萬年。"""
        },
        "highlight" : {
          "content" : [
            """<tag1>如果</tag1>上天能夠給我一個再來一次的機會,我一定會對那個女孩子說三個字"我愛你",<tag1>如果</tag1>非要在這份愛上加一個期限的話,我希望是一萬年。"""
          ]
        }
      }
    ]
  }
}

2019年10月22日 星期二

Ubuntu 18.04 安裝 Nginx+MySQL+PHP

安裝 Nginx, MySQL:
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install mysql-server

設定MySQL安全性設定:
sudo mysql_secure_installation

安裝PHP:
sudo apt-get install php-fpm php-mysql php-json php-gd

設定 php.ini,編輯 /etc/php/7.2/fpm/php.ini,將cgi.fix_pathinfo設為0
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=0

重新啟動PHP服務:
sudo service php7.2-fpm restart

設定一個新的nginx網站,以adia.cc為例。編輯 /etc/nginx/sites-available/adia.cc檔案:
server {
        listen 8080;
        root /var/www/adia.cc/html;
        index index.php index.html index.htm;
        access_log /var/log/nginx/adia.cc.access.log;
        error_log /var/log/nginx/adia.cc.error.log;
        server_name adia.cc www.adia.cc;
 
        location / {
                try_files $uri $uri/ =404;
        }
 
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
 
        location ~ /\.ht {
                deny all;
        }
}

建立adia.cc網站設定檔連結,並測試設定檔是否正確:
sudo ln -s /etc/nginx/sites-available/adia.cc /etc/nginx/sites-enabled/
sudo nginx -t

正確的話,應該會出現類似結果:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

接著建立一個PHP測試網頁,編輯 /var/www/adia.cc/html/info.php:
<?php
   phpinfo();
?>
重新啟動 Nginx 服務:
sudo service nginx restart

接下來利用瀏覽器測試 http://YOUR_IP/ 和 http://YOUR_IP:8080/info.php是否正常~
phpinfo() 執行結果


#

Ubuntu 18.04 安裝 SSH Server , 設定為文字開機模式 (disable GUI boot mode)

確定一下 Ubuntu 版本是否為 18.04:
lsb_release -a
執行結果:
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:        18.04
Codename:       bionic

安裝 SSH Server :
sudo apt-get install openssh-server
sudo update-rc.d ssh defaults
sudo service ssh start

關閉GUI開機模式,並且重開機生效:
sudo systemctl set-default multi-user.target
sudo sync;sync;sync;reboot

假若要再重新設定GUI開機模式:
sudo systemctl set-default graphical.target
sudo sync;sync;sync;reboot

設定 NTP 時間同步主機為 clock.stdtime.gov.tw,編輯 /etc/systemd/timesyncd.conf 檔案
sudo vi /etc/systemd/timesyncd.conf
將內容 #NTP= 前面註解符號(#)刪除,順便設定同步主機後存檔:
#NTP=
NTP=clock.stdtime.gov.tw

重新啟動時間同步服務後,順便看一下執行狀態:
sudo service systemd-timesyncd restart
sudo service systemd-timesyncd status

執行結果已經顯示同步 time server 從原來的 ntp.ubuntu.com 改為 clock.stdtime.gov.tw:
● systemd-timesyncd.service - Network Time Synchronization
 (...略...)
   Status: "Synchronized to time server 211.22.103.158:123 (clock.stdtime.gov.tw)."
 (...略...)

#

2017年12月12日 星期二

Windows 10 64bits + Arduino IDE + ESP8266 (ESP-01)


  1. Arduino.cc 下載最新版 Arduino IDE (以1.8.5版為例)
  2. 將 arduino-1.8.5-windows.zip 解壓縮至指定目錄下,安裝好 Arduino IDE
  3. 啟動 Arduino IDE,開啟「檔案 > 偏好設定 (preferences)」 視窗
  4. 偏好設定
  5. 在「額外的開發版管理員網址」(Additional Board Manager) 輸入網址:
  6. 開啟「工具 (Tools) > 開發板 (Board) > 開發板管理員 (Boards Manager)」後,搜尋 "esp" 並且安裝 esp8266 套件
    安裝 esp8266 (可以看見其實有錯誤發生)

    正常的套件下載安裝畫面
  7. 安裝完成後,下次就能選擇 ESP8266 開發板,進行IDE程式開發與上傳功能


後記:
  • 如果下載時發生了"下載http://downloads.arduino.cc/packages/package_index.jsp時發生錯誤"的訊息,可以在「檔案 > 偏好設定 > 網路」設定 proxy 來解決。
  • 網路上有些說法是設定 JAVA IPv4Stack=true 即可: setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true
  • 不過對我來說似乎沒有用,反而是最簡單的 proxy 解決了我的問題。
  • 下載套件時的錯誤訊息

    設定 Java IPv4Stack ,不過對我來說沒用處

    設定 proxy

2017年4月26日 星期三

Windows 10 + NVIDIA GPU + TensorFlow


  1. 參考 Install TensorFlow with GPU for Windows 10
  2. 強烈建議:
    • 確實檢查自己的NVIDIA顯示卡是否支援?官網
    • Windows設定 %CUDA_HOME% 和添加CUDA相關目錄至%PATH%環境變數
    • Anaconda 同時安裝 Python2 和 Python3 兩版本:下載連結
    • 建立 Conda tensorflow-gpu 虛擬環境時,記得 Python3版本為 3.5
      • conda create -n tensorflow-gpu python=3.5 (暫時別選3.6)
    • activate tensorflow-gpu 後,安裝 numbapro 套件
    • 開啟 jupyter notebook 後,執行下列 python3 code:參考網站
    • from numbapro import cuda, vectorize, guvectorize, check_cuda
      from numbapro import void, uint8 , uint32, uint64, int32, int64, float32, float64, f8
      import numpy as np
      check_cuda()
      
    • 確認執行結果是否類似下列結果,最後出現的是 True !:
    • ------------------------------libraries detection-------------------------------
      Finding cublas
       located at d:\Anaconda3\envs\tensorflow-gpu\DLLs\cublas64_70.dll
       trying to open library... ok
      Finding cusparse
       located at d:\Anaconda3\envs\tensorflow-gpu\DLLs\cusparse64_70.dll
       trying to open library... ok
      Finding cufft
       located at d:\Anaconda3\envs\tensorflow-gpu\DLLs\cufft64_70.dll
       trying to open library... ok
      Finding curand
       located at d:\Anaconda3\envs\tensorflow-gpu\DLLs\curand64_70.dll
       trying to open library... ok
      Finding nvvm
       located at d:\Anaconda3\envs\tensorflow-gpu\DLLs\nvvm64_30_0.dll
       trying to open library... ok
       finding libdevice for compute_20... ok
       finding libdevice for compute_30... ok
       finding libdevice for compute_35... ok
      -------------------------------hardware detection-------------------------------
      Found 2 CUDA devices
      id 0    b'GeForce GTX 1060 6GB'                              [SUPPORTED]
                            compute capability: 6.1
                                 pci device id: 0
                                    pci bus id: 2
      id 1      b'GeForce GTX 650'                              [SUPPORTED]
                            compute capability: 3.0
                                 pci device id: 0
                                    pci bus id: 1
      Summary:
       2/2 devices are supported
      PASSED
      Out[1]:
      True
      
  3. 兩張顯示卡的GPU數量不同,另外在Windows環境設定TF_MIN_GPU_MULTIPROCESSOR_COUNT=2 錯誤訊息才消失
希望大家能少走點冤枉路...:P #

2017年3月9日 星期四

Windows 7 - Cygwin / Cygwin64 設定 pip proxy


測試 --proxy 後有無"="皆可
pip install --proxy proxyuser:proxypassword@proxy.server.domain <python_package_name>

pip install --proxy=proxyuser:proxypassword@proxy.server.domain <python_package_name>

據說 pip3 "=" 無用
pip3 install --proxy proxyuser:proxypassword@proxy.server.domain <python_package_name>


#

2016年1月4日 星期一

Windows 7/8 (免費)資料夾同步比對 robocopy 批次檔

前一篇才寫了 「FreeFileSync 免費資料夾(目錄)比對同步軟體」推薦 FreeFileSync 這套免費的檔案同步軟體。這一篇則是想要用 Windows 7/8內建的 robocopy命令列指令來達成同樣的資料夾(目錄)同步比對工作。



工具:
  • Windows 7/8 命令列 (cmd) 下的 robocopy 指令
  1. Windows 鍵 > cmd 開啟命令列視窗
  2. 命令列視窗模式下輸入 robocopy,應可看到下列訊息:
C:\Windows\system32>robocopy

---------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows

---------------------------------------------------------------------

  已啟動 : Mon Jan 04 11:19:12 2016

       簡單使用方式 :: ROBOCOPY source destination /MIR

             source :: 來源目錄 (drive:\path 或 \\server\share\path)。
        destination :: 目的地目錄  (drive:\path 或 \\server\share\path)。
               /MIR :: 鏡像完整的樹狀目錄。

    如需有關使用方式的詳細資訊,請執行 ROBOCOPY /?


****  /MIR 可以刪除檔案以及複製檔案!



編輯同步批次檔autosync.bat :
robocopy C:\來源資料夾1\ D:\目標資料夾1\ /MIR /XO /E /R:2

robocopy C:\我的資料夾\ D:\備份資料夾\ /MIR /XO /E /R:2
編輯完成後,記得存檔喔~

robocopy 指令參數說明:

  • /MIR :: 鏡像完整的樹狀目錄。
  • /XO :: 排除較舊的檔案。 (目標資料夾中若有相同檔案就不再複製)
  • /E :: 複製子目錄,包括空的子目錄。
  • /R:n :: 失敗複本的重試次數: 預設值是 1 百萬次。



設定開機自動執行批次檔:

如果您想要每次電腦開機後,會自動執行剛才完成的同步動作設定,那就必須在Windows的「啟動」資料夾中設定批次檔的執行捷徑或直接將批次檔存在啟動資料夾中:
  • 開啟Windows的「啟動」資料夾
    %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • 在資料夾內新增剛才儲存的 autosync.bat 檔案的捷徑

Windows 按鈕 > 執行(R)

開啟(O) : %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
新增批次檔的捷徑或將批次檔儲存於啟動資料夾中

完成後,下次開機就能自動執行前面設定的同步工作囉~


#

2015年12月31日 星期四

FreeFileSync 免費資料夾(目錄)比對同步軟體


FreeFileSync 是套免費資料夾(目錄)比對同步軟體,方便使用者快速比對兩個資料夾裡面的檔案內容並且依照不同需要進行雙向同步或單向鏡像(mirror)或更新等同步方式。也提供了 for Windows, Linux 和 Mac OS X 等不同作業系統版本適用。

1. 先至官網 FreeFileSync (http://www.freefilesync.org/) 下載適合作業系統版本。

2. 下載完成後,開始執行安裝步驟:

接受軟體授權協議

選擇安裝目錄

如果不需要就取消安裝Wajam軟體

3. FreeFileSync 安裝完成後,啟動執行並先完成相關設定: 

如果不需要先取消每周自動更新檢查


設定切換語言 > 正體中文

4. 進入正題:設定要同步的兩個資料夾 (A 資料夾 -> B資料夾),這個步驟我們要決定下列一些相關設定工作:
  • 設定來源資料夾和目標資料夾
  • 兩個資料夾的同步模式 (例:雙向同步、單向鏡像、單向更新...)
  • 資料夾內檔案的同步比對方式 (例:檔案大小和日期、檔案內容)
B備份(目標)資料夾目前尚未有任何檔案

在FreeFileSync上設定好來源和目標資料夾


比對方式可用檔案大小和日期、檔案內容比對

5. 正式執行同步 (這裡我們以雙向同步模式為例)

按下F9 同步按鈕

執行同步過程 > 已完成

目標資料夾 B 已經有同步後的檔案囉~

6. 將同步動作儲存至設定檔案方便下次執行使用:
  • 選擇另存為批次處理作業設定檔
  • 設定相關錯誤處理、同步完成後動作
  • 儲存設定檔 (範例:儲存為my_file_sync_setting.ffs_batch)

選擇另存為批次處理作業


這裡我們選擇忽略錯誤處理、同步完成後關閉進度對話盒

到此其實已經完成!

7. 如果您想要每次電腦開機後,會自動執行剛才完成的同步動作設定,那就必須在Windows的「啟動」資料夾中設定前面設定檔案的執行捷徑:
  • 開啟Windows的「啟動」資料夾
    %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • 在資料夾內新增剛才儲存的 my_file_sync_setting.ffs_batch 檔案的捷徑


Windows 按鈕 > 執行(R)

開啟(O) : %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
新增設定檔的捷徑

完成後,下次開機就能自動執行前面設定的同步工作囉~

#




2015年11月30日 星期一

Windows 7 下幫 R 設定 HTTP Proxy 參數

將 RGui.exe ICON 上按下滑鼠右鍵,選擇內容修改程式執行捷徑,加上 http_proxy 設定即可:

原始設定:"D:\R\R-3.2\bin\x64\Rgui.exe"

設定Proxy:"D:\R\R-3.2\bin\x64\Rgui.exe" http_proxy=http://userId:password@your.proxy.domain:8080/

#

2015年10月18日 星期日

Mac OS X El Capitan 10.11 + FT232 USB模組 + Arduino Pro mini (5V, 16MHz)

材料

  • Arduino Pro mini x 1
  • FT232 USB 模組 x 1
  • USB傳輸線 x 1 (連結Mac電腦和 USB TO FT232)

安裝Virtual COM Port Driver
  • FTDI網站找適合的驅動程式,範例安裝Mac OS X 10.9以上 x64 v2.3 FTDI USB Serial Driver
FTDI網站下載VCP Driver

接線
  • FT232 USB 模組和Arduino Pro mini 恰好六支pin腳對應上
    (DTR, RX<->TX, TX<-RX, VCC, CTS, BLK)

DTR, RX<->TX, TX<->RX, VCC, CTS, BLK 分別對應好
利用FT232 USB模組的pin腳和Arduino Pro mini連接
接上電腦後應該就能看到LED亮燈


上傳Arduino範例程式 : 範例 > 01.Basics > Blink
  • 板子:Arduino Pro Mini
  • 處理器:ATMega328 (5V, 16MHz)
  • 序列埠:找到您自己電腦上的,範例為 cu.usbserial-A9UHPBRJ
  • 燒錄器:AVRISP mkII


板子選擇Arduino Pro mini

處理器選擇 ATmega328 (5V, 16Mhz)

序列埠選擇您自己電腦上對應的USB Serial Port

燒錄器選擇AVRISP mkII

按下選單左上方(上傳)功能鍵

上傳時,正常情況應能看到 FT232 USB模組上的RX/TX LED一閃一滅,表示程式正傳輸到Arduino Pro mini 上。

上傳成功後,接著您就能看到 Arduino Pro mini 上面的LED一閃一滅囉~ 恭喜啦!

#


2014年12月14日 星期日

解決 Mac OS X 10.10 安裝 Android Studio 的錯誤訊息 - Android Studio was unable to find a valid Jvm

安裝Android Studio之後,第一次執行若發生「Android Studio was unable to find a valid JVM」錯誤訊息,通常是因為Android Studio找不到 Java 6 JRE,可能是沒安裝 Java 6 JRE 或 Java 6 系統路徑沒設定好。

如果您跟我一樣,只想安裝了Java 7 或 Java 8 JDK而不想安裝Java 6 JRE。那stackoverflow上的解決方法就可以派上用場。

  1.  先用Mac OS X的Spotlight搜尋 "Android Studio",在視窗最底下可以用Finder顯示"Android Studio"的位置(硬碟>應用程式>Android Studio 或 
    /Applications/Android Studio.app)

    於 Finder 顯示所有項目... 找到Android Studio
  2. 開啟"Android Studio" Application Package,開啟編輯 Info.plist 檔

    找到Info.plist

  3. 將 Info.plist 裡面的JVMVersion版本設定參數從 1.6* 改為 1.6+ ,並存檔


  4. 開啟 "Android Studio" 應該就可以執行了...
#

2014年10月25日 星期六

ubuntu 設定開機直接進入文字 (text, console) 模式

vi  /etc/default/grub ,將原來
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

加上註解,並重新新增一行新設定,改為下列後存檔離開:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="text"
接著執行更新開機GRUB設定
sudo update-grub
執行結果:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.11.0-15-generic
Found initrd image: /boot/initrd.img-3.11.0-15-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 12.04 LTS (12.04) on /dev/sda1
done
#

2014年10月18日 星期六

製作 Mac OS X Yosemite 開機安裝碟

透過 App Store 直接升級至新版 Mac OS X Yosemite 或許是最快的方法。但對於需要更新多部 Mac 或打造一部 Hackintosh 而言,卻不一定是最理想的方式。

如同以往的 Mac OS X 升級,完成更新安裝之後,installer安裝程式也會自動從應用程式(Applications)文件夾中消失。我們可透過同時按下鍵盤option鍵並用滑鼠點擊畫面上的Free Upgrade (免費升級)按鈕或是利用 Time Machine 備份檔案重新還原 installer安裝程式。為了節省時間,建議更新至新版 Yosemite 前最好還是製作一支 USB 開機安裝碟,方便日後使用。


  1. 下載 Yosemite Installer:打開 App Store,按下鍵盤 option 鍵,同時用滑鼠點擊畫面上的Free Upgrade (免費升級)按鈕,進行安裝程式下載。

  2. 檔案大小 5.16GB 需要一些時間進行下載


  3. 格式化USB隨身碟:準備一支至少8GB容量的USB隨身碟,先將裡面資料備份後,準備以「硬碟工具程式」進行隨身碟格式化。選擇磁碟格式:Mac OS 擴充格式(日誌式)、輸入名稱:Yosemite 後,進行磁碟機的清除工作。



  4. 寫入開機安裝碟:當Yosemite安裝檔案下載完成後,開啟「終端機」(Terminal)應用程式。並且直接貼上下列指令:

  5. sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/Yosemite --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction
    

  6. 輸入密碼:依照畫面提示輸入帳號密碼,等待安裝檔案寫入USB隨身碟中,耐心稍待片刻,直到畫面上出現 Done. 提示。
  7. 看到畫面上出現 Done. 提示

  8. 以USB安裝碟開機:準備升級更新的 Mac 先插上 Yosemite 開機安裝碟,然後按住option鍵同時開機,直到安裝畫面出現後,依照步驟進行安裝即可。

#

2014年9月14日 星期日

替 Blogger.com 文章加上程式碼區塊(codeblock)和執行結果區塊(shellblock)

選擇 範本>編輯HTML ,在HTML程式碼中找到CSS區塊,最後新增.post .codeblock和.shellblock的CSS程式碼如下:

<style type='text/css'>    ...

    .post .codeblock { 
       display: block; /* fixes a strange ie margin bug */
       font-family: Courier New;
       font-size: 10pt;
       overflow:auto;
       background: #f7f7f7 url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5yQoXazjZmzOBl-CuDBezK44UwWVLs8GNNigHQmyKSv8EvcXCEtSlMQAPUeXgo0wlKey6nO9VbGG4VF-b4NxEJivH5avNfjYagrnLNQcx8l4TL9AbxT6JU3PUUKBgNzbG9WHP8WMGRmcX/s1600/Code_BG.gif) left top repeat-y;
       border: 1px solid #ccc;
       padding: 10px 10px 10px 21px;
       max-height:1000px; 
       line-height: 1.2em;
    }

    .post .shellblock { 
       display: block; /* fixes a strange ie margin bug */
       font-family: Courier New; 
       font-size: 10pt;
       overflow:auto;
       color: #00ff00;
       background: #000000;
       border: 1px solid #ccc;
       padding: 10px 10px 10px 21px;
       max-height:1000px; 
       line-height: 1.2em;
    }
</style>

另外在<head>和</head>之間,加上
<script src="//google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>

記得要「儲存範本」喔!

之後在寫部落格文章時,在HTML模式底下寫
 
<pre class="codeblock prettyprint">
public class first {
    public static void main (String[] args) {
        System.out.println("Hello, my first java!");
    }
}
</pre>
就會出現下列結果囉:
public class first {
    public static void main (String[] args) {
        System.out.println("Hello, my first java!");
    }
}
如果寫成
<pre class="shellblock">
  執行結果
  ...
</pre>
結果就會變成
  執行結果
  ...
#

2014年8月14日 星期四

ubuntu 上安裝 Elasticsearch Cluster

1. 參考 Installing ElasticSearch on Ubuntu 14.04 ,分別在欲加入 Elasticsearch Cluster 的每部機器上完成安裝

### Install  Oracle Java (改安裝 Oracle Java)
cd /tmp
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
 
### Download and Install ElasticSearch ver 1.3.2
### Check http://www.elasticsearch.org/download/ for latest version of ElasticSearch and replace wget link below
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.deb
sudo dpkg -i elasticsearch-1.3.2.deb
 
### Install the Java Service Wrapper for ElasticSearch
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mkdir /usr/local/share/elasticsearch
sudo mkdir /usr/local/share/elasticsearch/bin
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch
### Start ElasticSearch
sudo service elasticsearch start
 
### Make sure service is running
curl http://localhost:9200
 
### Should return something like this:
#{
# "status" : 200,
# "name" : "Storm",
# "version" : {
# "number" : "1.3.1",
# "build_hash" : "2de6dc5268c32fb49b205233c138d93aaf772015",
# "build_timestamp" : "2014-07-28T14:45:15Z",
# "build_snapshot" : false,
# "lucene_version" : "4.9"
# },
# "tagline" : "You Know, for Search"
#}

2. 分別修改每部機器上 /etc/elasticsearch/elasticsearch.yml 設定

cluster.name: elasticsearch
node.name: "elastic_your_nodename"

3. 重新啟動 elasticsearch

sudo service elasticsearch restart

4. 測試 Elasticsearch Cluster 是否有多個 node 出現?本例為2個nodes 

curl -XGET http://elastic_your_nodename:9200/_cluster/health?pretty

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 5,
  "active_shards" : 10,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}
#

2014年8月13日 星期三

Mac OS X Client 以 ssh 自動登入 ubuntu server


1. 於Mac OS X開啟終端機"terminal" 程式

ssh-keygen -t rsa (接著連續按下幾次Enter)
cat ~/.ssh/id_rsa.pub | ssh yourname@ubuntu.server "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"


2. 於Mac OS X開啟終端機"terminal" 程式

ssh yourname@ubuntu.server  (應該已能自動登入,免輸入ssh密碼囉)


#

2014年7月23日 星期三

ubuntu 安裝 nginx,並設定 virtual hosts

1. 安裝 nginx 與 PHP5

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install nginx
$ sudo apt-get install fcgiwrap php5-fpm php5-xcache php5-mysql php5-pgsql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl


2. 創建要放置網頁檔案的磁碟路徑(放在/var/www/之下)

$ sudo mkdir -p /var/www/yourdomain1.com/html
$ sudo mkdir -p /var/www/yourdomain2.com/html

$ sudo chown -R www-data:www-data /var/www/yourdomain1.com/html
$ sudo chown -R www-data:www-data /var/www/yourdomain2.com/html

$ sudo chmod -R 755 /var/www


3. 編寫 index.html

$ sudo vi /var/www/yourdomain1.com/html/index.html
$ sudo vi /var/www/yourdomain2.com/html/index.html

範例如下:

<html lang="zh-TW">
  <head>
 
    <title>page title</title>
    <script src="my-javascript-file.js"></script>
    <link href="my-css-file.css" rel="stylesheet"></link>
  </head>
  <body>
    <!-- 網頁內容就放在body內吧 -->
    Hello, yourdomain1.com <!-- 或是 yourdomain2.com -->
  </body>
</html>


4. 設定第一個網站設定檔

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/yourdomain1.com
$ sudo vi /etc/nginx/sites-available/yourdomain1.com

修改設定檔內容:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/yourdomain1.com/html;
    index index.html index.htm index.php;

    server_name yourdomain1.com www.yourdomain1.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

5. 設定第二個網站設定檔

$ sudo cp /etc/nginx/sites-available/yourdomain1.com /etc/nginx/sites-available/yourdomain2.com
$ sudo vi /etc/nginx/sites-available/yourdomain2.com

修改設定檔內容,注意listen設定有些不同:

server {
    listen 80;
    listen [::]:80;

    root /var/www/yourdomain2.com/html;
    index index.html index.htm index.php;

    server_name yourdomain2.com www.yourdomain2.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

6. 讓兩個網站的設定檔案生效

$ sudo ln -s /etc/nginx/sites-available/yourdomain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/yourdomain2.com /etc/nginx/sites-enabled/


7. 移除預設設定檔案

$ sudo rm /etc/nginx/sites-enabled/default


8. 修改 nginx.conf

$ sudo vi /etc/nginx/nginx.conf

將 server_names_hash_bucket_size: 64; 前面的註解符號 # 移除,然後存檔離開


9. 重新啟動 nginx

$ sudo service nginx restart


10. 修改 hosts,新增網站資料

$ sudo vi /etc/hosts

新增
192.168.1.80 yourdomain1.com
192.168.1.80 yourdomain2.com


11. 設定開機時,自動啟動nginx服務

$ sudo update-rc.d nginx defaults


#

2014年3月30日 星期日

ubuntu 安裝 SSH Server

先確認 /usr/sbin/sshd 是否存在,若已存在則繼續使用 ps -ef | grep ssh 確認 sshd (SSH Server) 是否執行。

若sshd檔案存在,只是尚未執行,可啟動ssd。

$ sudo /etc/init.d/ssh start


若以上皆確認不存在,則可以

$ sudo apt-get install openssh-server

進行安裝 SSH Server。

$ ssh localhost

設定開機時自動啟動 SSH Server。

$ sudo update-rc.d ssh defaults

測試一下

#

2013年12月19日 星期四

ubuntu networking interface 設定


使用情境:
  • eth0固定網卡 / wlan0無線網卡 各一
  • 配置固定IP (eth0: 192.168.1.XX / wlan0: 192.168.1.YY)
  • private network : 192.168.1.XXX
  • gateway : 192.168.1.1

/etc/network/interfaces 設定檔內容:

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.XX
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet static
wpa 2
wpa-ssid <YOUR_SSID>
wpa-psk <YOUR_PASSWORD>
address 192.168.1.YY
netmask 255.255.255.0
gateway 192.168.1.1


*以上也適用 Raspberry Pi / Wheezy 環境

#