2015年5月19日 星期二

AWS mount

was create 全新的EBS 掛載步驟
1. lsblk 查看裝置狀況
2. sudo file -s {裝置名稱}    //sudo file -s /dev/xvdf
  如果印出 data 表示沒有文件系統

3.(這是全新沒資料的 ebs volume 才需要的步驟)對沒有文件系統的裝置 mkfs -t ext4 {裝置名稱}  //  mkfs -t ext4 /dev/xvdf   //請小心輸入 可是會把資料清空


4. mount {裝置名稱} {資料夾}


參考:
tar

因為沒把功能弄清楚下指令少了 z 參數,結果根本沒壓縮到。


實際:

tar cvfz   test.tar.gz  /tmp/dump/


tar xvfz test.tar.gz



備註:

當上傳到 linux /tmp 時 若空間不夠,就會自動清除 temp  導致上傳到100%後,而機器將不儲存檔案發生做白工。

2015年5月12日 星期二

關於 Java 反編譯

command  line :
  • javap -private {class name}

example :   javap -private Learn_2_1.class



使用Intellij IDEA 14 ,開發scala (未使用sbt),IDE會將scala轉成 .class檔,會放置out資料夾中,此時就可使用  javap -private {class name} 來查看scala 如何將 scala轉成 java程式碼。



另外在反編譯上有個好用的JAD(Java Decompiler)  一個小咖啡杯,只要將要反編譯的拖拉過去就可以看到結果啦。


JAD:
  • wiki  :   http://en.wikipedia.org/wiki/JAD_(JAva_Decompiler)
  • tools  :   http://jd.benow.ca/
  • tools  :   http://www.brouhaha.com/~eric/software/mocha/


2015年5月11日 星期一

Maven POM Reference

Maven POM

modelVersion
  •  POM 的版本

groupId
  • 唯一值,通常為組織或專案項目。通常會以full domain name作為值,例如org.codehaus.mojo。
 
artifactId
  • package生成名字的依據,這是base name 整體名稱是由 artifactId + version 組成。

packaging
  • 打包的類型,例如jar、war、EAR 
version 
  • 如果有SNAPSHOT字串,代表開發階段。
 
url  
  • 專案放置位置,例如git的所在位置 。
 
dependencies
  • 描述

dependencies
  • 依賴關係的置放區塊,例如用到某個jar library,
    放在此處的描述maven將會自動下載至專案中,
    避免常常找不到jar的窘境。

dependency
  • dependencies中的一個項目,不同library會用dependency來宣告。 
example:

 
            org.springframework
            spring-aspects
            ${springframework.version}
       

       
            org.springframework
            spring-webmvc
            ${springframework.version}
       

      
            org.thymeleaf
            thymeleaf-spring4
            2.1.2.RELEASE
       





repositories
  • 用來設定遠端library倉庫所在的區塊。 
repository
  • 用來描述一個倉庫。
     
example :

 
        
            spring
            http://repo.spring.io/release
       

       
            repository.springsource.milestone
            http://repo.springsource.org/milestone
       

       
            neo4j-releases
            http://m2.neo4j.org/releases/
       

 



properties
  • 用來定義參數給予其他POM區塊使用。
     
example:

   
        UTF-8
        1.8
        1.0-SNAPSHOT
        1.7.6
        <springframework.version>4.0.1.RELEASE</springframework.version>
        1.7.3
        2.0.1
   


 而在依賴關係區塊中可如此使用
      
            org.springframework
            spring-webmvc
            ${springframework.version}
       




build
  • 執行打包時要做的動作。



參考資料:
  • https://maven.apache.org/pom.html

2015年5月7日 星期四

Ruby on Rails 整合開發工具

Rails install

安裝  Rails 前:
  1.  裝好 RVM  參考此篇
  2.  安裝 Ruby 參考此篇
  3.  指定 Gem 空間  參考此篇
PS. 當然你可以不安裝 RVM ,而直接安裝 Ruby與Rails 但是日後開發上會非常不方便。



安裝 Rails

MAC需要先  xcode-select --install
  • gem update
  • gem install rails -v='4.2.1'  --no-rdoc --no-ri

PS. MAC 若沒先 xcode-select --install則在Building native extensions.  會發生錯誤。

查看目前安裝的東西
  • gem list



rails 可參考資料網站:
  • http://rubyonrails.org/
  • https://rubygems.org/
  • https://ihower.tw/rails4/installation.html
  • http://blog.eddie.com.tw/2011/04/08/rvm-and-gemsets/

gems

gems: 套件包管理工具

# 查詢 gem 可用參數
  •  gem -h

# 查詢 gem 命令
  • gem help commands
 # 查詢版本
  • gem -v
 # 查詢 RubyGems 環境資訊
  • gem environment

# 查詢 gem 已經安裝套件
  • gem list
 # 安裝套件
  • gem install  {套件的名稱}
 # 移除套件
  • gem uninstall {套件的名稱}


rvm gemset

gem 是套件管理工具,類似 apt-get、npm 這類的package manager tools。


RVM 的gemset,可以讓你的機器有獨立的各個gem空間,讓不同版本可以使用不同的gem套件空間。



 1. 建立一個新的 gem 環境空間
  • rvm gemset create rails421


 2. 查看 gem 空間狀況
  • rvm gemset list

    gemsets for ruby-2.2-head (found in /home/ubuntu/.rvm/gems/ruby-2.2-head)
    => (default)
       global
       rails421



 3 切換 gem (將當前使用的ruby 版本使用 gem 環境切換)
  •  rvm gemset use rails421
          Using ruby-2.2-head with gemset rails421


    可用 rvm gemset list 再次查看gem使用狀況



其他常用 :
  • rvm gemset empty    {目標gem}     //清空gem內容
  • rvm gemset copy      {來源gem}  {目標gem}  //複製gem內容
  • rvm gemset rename {來源gem}  {目標gem} 
  • rvm gemset delete    {目標gem}

這樣就可以把gem庫換來換去啦~ 開發時很好用


參考:

rvm rubies installing

System : Ubuntu


RVM Ruby 安裝

# 先查詢可安裝的Ruby列表
  • rvm list known
# 安裝 Ruby
  • rvm install 2.1.4       //會跳出詢問要輸入 ubuntu password
       ====== 密碼詢問的提示 =======

       Updating system..ubuntu password required for 'apt-get --quiet --yes update':

       在這時後,輸入ubuntu的密碼後按下Enter就會開始安裝Ruby


#安裝 第二套 ruby
  • rvm install 2.0.0-p643

#查詢安裝狀態
  • rvm list
==========  rvm list 輸出結果  ========================

        ubuntu@ubuntu:~$ rvm list

        rvm rubies

        => ruby-2.0.0-p643 [ x86_64 ]
         * ruby-2.1.4 [ x86_64 ]

        # => - current
        # =* - current && default
        #  * - default


# 切換使用版本
  • rvm use 2.1.4   //current 會切換成 2.1.4

# 設定預設版本
  • rvm 2.1.4 --default

# 查詢目前機器Ruby資訊
  • rvm info






#如果想切回原本系統上的 Ruby  (已經使用了rvm 這個除非有特殊需求,不然就少用吧)

  • rvm system



rvm list command

System : Ubuntu

rvm is ruby version manager tools.


#列出已經安裝的Ruby版本。
  • rvm list rubies    or   rvm list

 #列出預設的ruby版本
  •  rvm list default

 #列出可以安裝的Ruby
  • rvm list known 

 #只列出已經安裝Ruby版本的字串,並不顯示當前使用版本,預設版本等資訊
  • rvm list strings

 
#列出預設Ruby版本,純版本字串
  • rvm list default string


參考資料料:

install RVM (Ubuntu)

System : Ubuntu

RVM (Ruby Version Manage)

讓你可以容易在多個Ruby版本中切換使用。


安裝:
  • gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

  •  \curl -sSL https://get.rvm.io | bash -s stable

  • 登出主機,重新登入。(實體主機可能需要重開機) or   source ~/.profile

  • rvm -v  //查看運作版本

PS:
  
      RVM 安裝需要 curl ,如果缺少
  • sudo apt-get install curl      //ubuntu
  • sduo brew install curl         //mac


      MAC沒有gpg命令需要:
  • sudo brew install gnupg
  • sudo brew install gnupg2

      RVM移除:
  • rvm implode
  • rm -rf ~/.rvm
   

     PS. 有時RVM會無法下載安裝,是因為gpg安裝出問題,此時將 ~/.gnupg 整個刪除之後再
  • gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
           另外有可能發生的是 ~/.gnupg的檔案群組與權限都不對也會造成無法安裝。



參考資料:
  • https://rvm.io/
  • 高見龍先生 RVM and Gemsets
  • http://ruby-on-rails-book.kejyun.com/install/install-rvm-ruby-rails.html

2015年5月6日 星期三

Redis install (Ubuntu apt-get install)

1. sudo apt-get update  //更新套件清單   
    安裝成功後,Redis會自動啟動


2. 查詢啟動:
        
ps aux | grep redis

redis  1505  0.0  0.6  39856  6692 ?        Ssl  18:17   0:00 /usr/bin/redis-server 127.0.0.1:6379      
ubuntu    1523  0.0  0.2  11752  2176 pts/0    S+   18:19   0:00 grep --color=auto redis
        
netstat -nlt | grep 6379

tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN

或是

sudo /etc/init.d/redis-server status

redis-server is running


3. Redis Configuration
  •  /etc/redis/redis.conf
4. Redis Shell
  • redis-cli
5. Shell TEST
  • 127.0.0.1:6379> ping
      PONG   //傳回PONG代表正常運作




 6. shutdown
  • 127.0.0.1:6379> SHUTDOWN

7. exit
  •  127.0.0.1:6379> exit

8. 啟動
  • redis-server

    or
  • redis-server  /etc/redis/redis.conf

小技巧:
    redis shell裏面可以使用tab鍵來自動完成指令。



參考:
  • apt-get 指令快查 

    http://blog.xuite.net/jyoutw/xtech/39380855-Ubuntu+%E6%96%87%E5%AD%97%E6%A8%A1%E5%BC%8F%E5%A5%97%E4%BB%B6%E7%AE%A1%E7%90%86%E6%8C%87%E4%BB%A4
  • redis非apt-get 安裝法

    http://redis.io/topics/quickstart
  • https://www.linode.com/docs/databases/redis/redis-on-ubuntu-12-04-precise-pangolin
  • http://redisdoc.com/server/shutdown.html
  • http://www.w3cschool.cc/redis/server-shutdown.html
  • 指令查詢
    http://redisdoc.com/

ubuntu mongoDB 3.0 install

  1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  2. echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
  3. sudo apt-get update
  4. 安裝特定版本mongoDB

    sudo apt-get install -y mongodb-org=3.0.2 mongodb-org-server=3.0.2 mongodb-org-shell=3.0.2 mongodb-org-mongos=3.0.2 mongodb-org-tools=3.0.2
  5. 防止mongodb被 apt-get 升級。

    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections

  6. edit mongodb config

    sudo vim /etc/mongod.conf

    #這行是控管mongodb可以來訪的 IP,如果在aws上因為控管可由aws設定,所以可以註解掉,或是也可以用逗號區隔加入允許的ip,例如如 127.0.0.1,10.0.122.10
    bind_ip = 127.0.0.1

  7.  start mongo

    sudo mongod --fork --config /etc/mongod.conf
    # --fork 背景執行  --config 載入設定檔
  8. 進入mongo shell
    mongo

  9. 離開 mongo shell
    exit
  10. 查看mongodb 運行

    ps aux | grep mongo
  11. stop mongo
    進入mongodb shell

    a. mongo
    b. use admin
    c. db.shutdownServer()
    d. exit
參考:
  • http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

VirtualBox NAT + Host-only (Ubuntu)

virtualBox

設定 ->  網路 ->
  • 界面卡1 選 NAT
  • 界面卡2 選 僅限主機界面卡
兩界面卡用預設值即可


linux 中
  • sudo vim /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
#network 192.168.56.0
#broadcast 192.168.56.255
gateway 192.168.56.254
#dns-search cloudspace.local
#dns-nameservers 8.8.8.8 8.8.4.4
 
or 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp
 
 
ps. 在virtualBox linux 中可利用 route查詢 default Gateway 來填入 
 
  • sudo /etc/init.d/networking restart 
 
資料來源:
  • http://askubuntu.com/questions/446183/how-to-set-up-nat-and-host-only-networking-with-static-ip-address-in-virtualbox 
 


Ubuntu 網卡設定DHCP


  1. sudo  vim /etc/network/interfaces
  2. iface eth0 inet static 改成 iface eth0 inetdhcp
  3. sudo /etc/init.d/networking restart
VirtualBox就重開機一下吧。
PS. 如果你有第二張網卡 





auto eth1
iface eth1 inetdhcp


PS. 如果想用固定IP
#Class C 設法
iface eth0 inet static 
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1


資料來源:
  • http://askubuntu.com/questions/446183/how-to-set-up-nat-and-host-only-networking-with-static-ip-address-in-virtualbox

2015年5月5日 星期二

Ubuntu SSH install

SSH Server目的:

  讓linux系統可以利用SSH機制被遠端操作 (使用公私鑰機制驗證)。

  備註1:以下命令已經切換至 root, 若沒有切換至root,記得在命令前面加sudo。


1. 查詢套件安裝狀況
  • dpkg -l | grep ssh
      如果只有看到 openssh-client,就是還沒安裝 SSH server。


2. 查詢 ssh 是否有在運作的指令
  • netstat -a | grep ssh
如果看到
tcp    0  0  *:ssh     *:*     LISTEN
tcp6  0  0  [::]:ssh  [::]:*   LISTEN

表示ssh有在運作


3. 關閉 ssh
  • service ssh stop
4.啟動 ssh
  • service ssh start
5.重啟 ssh
  • service ssh restart

6. 安裝 ssh
  • apt-get upudate    //更新套件清單
  • apt-get install ssh

7.用戶端SSH金鑰
  •  key會在家目錄的.ssh 
  • .ssh可看到  id_ras 、 id_ras.pub。  
  • id_ras 是私鑰,這個不可以給別人。
  • id_ras.pub 是公鑰,這是要給ssh服務的伺服器用的。
8. 上傳公鑰到目標伺服器
  • ssh-copy-id -i id_ras.pub  [登入帳號]@[位置]  // 記得 -i  不加會找錯key
      在mac中如果沒有ssh-copy-id指令,有兩種選擇:
    
         a. brew install ssh-copy-id 安裝命令
     
         b. 用scp 上傳 public key

             1. 在serve端  ~/ 建立 .ssh資料夾。
                  cd ~/
                  mkdir .ssh

             2. 在client電腦將公開金鑰上傳
                 scp id_ras.pub [登入帳號]@[位置]:/home/[帳號名稱]/.ssh/authorized_keys

9. 更改 authorized_keys 權限
  • chmod go-w ~/
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys

10.關閉帳號密碼登入
  •  sudo vim /etc/ssh/sshd_config
  • 將 PermitRootLogin without-password 改成 PermitRootLogin no
  • 取消註解 AuthorizedKeysFile      %h/.ssh/authorized_keys
  • PasswordAuthentication yes 改 PasswordAuthentication no  //關閉遠端帳號密碼登入



11.  ssh連線
  • ssh [登入帳號]@[位置



參考資料:
  • https://help.ubuntu.com/14.04/serverguide/openssh-server.html
  • https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
  • https://help.ubuntu.com/community/SSH/OpenSSH/Keys
  • http://blog.crboy.net/2012/05/ssh-security-note.html

history

功能:查詢下過的命令

範例:
  • history
  • history | grep wget    //在history中過濾出所有的 wget指令

linux ps aux

功能:查詢 Linux 系統上服務是否有在運行

範例:
  • ps aux | grep tomcat
  • ps aux | grep ssh

linux locale

1. 查詢機器上已經安裝的語系
  •  locale -a
2.編輯 local文件
  • sudo vim /var/lib/locales/supported.d/local
  • 文件中加入 zh_TW.UTF-8 UTF-8
  • 離開vim
3.加入語系
  • sudo locale-gen

後記:
      為什麼要設定local,因為當你 tomcat utf-8 設定都設了,程式也沒問題,html宣告也對了,DB設定也對了,但寫入db的中文不對勁,那就是最底層的linux語系缺少zh_TW.UTF-8造成的。


參考資料:
  • http://tutul.logdown.com/posts/2014/08/13/ubuntu-server-12-04-lts-change-language
  • http://www.arthurtoday.com/2009/11/ubuntu-locale.html