安裝Ubuntu 14.10后要做的事(下)—— 開發工具篇


1 完善GCC環境

  • 安裝g++編譯器

命令: sudo apt-get install build-essential
build-essential是一套完整的軟件包,它提供了編譯程序必需的軟件包列表信息,包括gcc,libc

  • 安裝詞法和語法分析器

命令:

sudo apt-get install flex
sudo apt-get install bison
  • 如果想在ubutun 14.10的64位系統上編譯32位程序

命令:

sudo apt-get install g++-multilib
g++ -m32 -o xxx xxx.cpp //-m32選項將程序編譯成32位的應用

2 配置Vim

參考ma6174的超強vim配置文件,一鍵安裝非常快速,省去了不少配置時間,參考運行截圖:

vim

wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh

主要是掌握它的快捷鍵命令:
a. 多窗口操作

  • :sp + 文件名水平分割窗口
  • :vs + 文件名垂直分割窗口
  • Ctrl+w快速切換窗口

b. Taglist和NerdTree

  • F3:快速打開或關閉樹形目錄
  • F9:查看當前代碼結構及自動補全

c. 其他

  • F5:一鍵運行程序
  • F6:代碼格式化
  • F8:調試C和C++
  • F2:去除代碼中的空行(個人覺得不實用)

3 安裝Sublime text3

3.1 添加Sublime Text3的安裝源,執行更新、安裝

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text

3.2 解決sublime text3無法輸入中文的問題

  • 安裝C/C++的編譯環境和gtk、libgtk2.0-dev
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
  • 保存以下代碼到文件sublime_imfix.c
#include <gtk/gtkimcontext.h>
void gtk_im_context_set_client_window (GtkIMContext *context,
          GdkWindow    *window)
{
  GtkIMContextClass *klass;
  g_return_if_fail (GTK_IS_IM_CONTEXT (context));
  klass = GTK_IM_CONTEXT_GET_CLASS (context);
  if (klass->set_client_window)
    klass->set_client_window (context, window);
  g_object_set_data(G_OBJECT(context),"window",window);
 
  if(!GDK_IS_WINDOW (window))
    return;
  int width = gdk_window_get_width(window);
  int height = gdk_window_get_height(window);
  if(width != 0 && height !=0)
    gtk_im_context_focus_in(context);
}
  • 編譯成共享庫
gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
  • 拷貝到/opt/sublime_text目錄下

注意:/opt/sublime_text/不同版本可能有所不同,請調整為自己安裝版本的路徑

sudo cp libsublime-imfix.so /opt/sublime_text/libsublime-imfix.so
  • 修改/usr/bin/subl文件,在第一行加入:
export LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so
  • 修改sublime-text.desktop

sudo vim /usr/share/applications/sublime_text.desktop

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=/usr/bin/subl %F        #這里修改執行路徑為/usr/bin/subl,subl文件剛才已經修改過,大家應該記得
Terminal=false
MimeType=text/plain;        
Icon=sublime-text
Categories=TextEditor;Development;
StartupNotify=true
Actions=Window;Document;
 
[Desktop Action Window]
Name=New Window
Exec=/usr/bin/subl -n       #這里修改執行路徑為/usr/bin/subl,subl文件剛才已經修改過,大家應該記得
OnlyShowIn=Unity;
 
[Desktop Action Document]
Name=New File
Exec=/usr/bin/subl new_file    #這里修改執行路徑為/usr/bin/subl,subl文件剛才已經修改過,大家應該記得
OnlyShowIn=Unity;

修改以上三處代碼,保存。Sublime Text 3即可完全正常使用搜狗輸入法輸入中文

3.3 安裝Package Control和一些常用的插件

a. 安裝Package Control
使用Ctrl+~快捷鍵,輸入下面一段代碼:

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = 
sublime.installed_packages_path(); urllib.request.install_opener( 
urllib.request.build_opener( urllib.request.ProxyHandler()) ); 
open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 
'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

b. 使用Ctrl+Shift+P輸入Install Package,安裝以下插件

  • 解決中文亂碼:GBK Encoding Support(如果文件的編碼方式不被sublime text支持,需要再安裝Codecs33 package,一般問題就解決了),ConvertToUTF8(在創建html文件時有干擾)
  • 閱讀源代碼: ctags(需要先安裝ctags)
  • 快速開發Web前端代碼:Emmet
  • 側欄右鍵功能增強:SideBar + Side Bar Git
  • 代碼對齊和自動補齊:Alignment + CodeIntel
  • 其他:查找代碼中的錯誤linter

4 安裝Eclipse

4.1 安裝JRE(注:使用對應的JDK也可以)

a. 下載對應的JRE版本,假定是jre1.7

b. 將JRE的解壓子目錄安裝在/opt/java目錄下,執行如下命令

sudo mkdir /opt/java
cd java
sudo tar -zxvf~/Downloads/jre-7u51-linux-i586.tar.gz /opt/java/

c. 將JRE1.7.0作為Java默認的運行時環境

這過程即是告訴系統我這里有一個可用的Java二進制包並且使用此包執行java命令

sudo update-alternatives  --install  "/usr/bin/java"  "java"  "/opt/java/jre1.7.0_51/bin/java"  1 
sudo update-alternatives  --set  java   /opt/java/jre1.7.0_51/bin/java

最后命令行輸出如下信息表示設置成功:

update-alternatives : using /opt/java/jre1.7.0_51/bin/java to provide /usr/bin/java (java)in manual mode

d. 檢測是否安裝成功,執行java-version,安裝成功輸出如下信息

java version "1.7.0_51"
Java(TM) SE RuntimeEnvironment (build 1.7.0_51-b13)
Java HotSpot(TM) ServerVM (build 24.51-b03, mixed mode)

e. 如果想在Linux命令行下運行Java程序,同樣也需要配置環境變量

方法一: 修改/etc/profile文件,修改系統級的環境變量,對所有用戶的shell都適用

export JAVA_HOME=/opt/java/jdk1.7.0_51 
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注:

  1. 選擇安裝的jdk目錄,JAVA_HOME目錄后面不要多添加/,在Linux下用冒號來分割路徑,賦值時變量值前加$符號
  2. CLASSPATH中當前目錄. 不能丟,利用export將這三個變量導出為全局變量
  3. 使用source /etc/profile使其生效或注銷重新登陸
  4. 查看當前的系統變量使用如下命令:
    echo $PATH | tr ':' '\n'

方法二: 修改.bash_profile文件,把這些環境變量的權限控制到用戶級別,只允許某個用戶使用這些環境變量,同樣也是在.bash_profile文件末尾添加這三行代碼,再重新登陸

最后一種辦法: 在當前shell中臨時設置變量,退出當前shell后就失效了

f. 補充Windows下配置Java環境

JAVA_HOME=C:\Program Files\Java\jdk\
PATH=%PATH%;%JAVA_HOME%\bin\;%JAVA_HOME%\jre\bin;(一定別忘了分號)
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

注:

  1. 在cmd中測試: javac/java -version
  2. 運行命令行參數,切到項目運行目錄下:執行
 javac xxx.java
 java xxx args0 args1 args2

4.2 安裝Eclipse

a. 下載最新的Eclipse版本

b. 解壓文件並置於/opt目錄下:

sudo tar -zxvf eclipse-standard-kepler-SR2-linux-gtk.tar.gz ~/
sudo cp -ar eclipse /opt/

c. 設置Eclipse環境和插件安裝

  • 編碼方式

Eclipse下文件的編碼方式:Win下默認為gbk,Linux下默認為utf-8。

同一個系統下開發項目,默認編碼方式最好要保持一致,一般建議為UTF-8,若出現同一項目中不同源文件編碼方式不同,最好用一個轉碼插件設置下(可用notepad++另存為特定編碼格式的文件即可)。

Windows->Workspace ->Text file encoding,最好默認為UTF-8
Windows->Content Type->Text,Java Source file選項的Default encoding可根據不同系統設置為UTF-8,出現中文亂碼可設置為GBK/GB2312/GB18030,再Update

  • Color theme插件-配色利器

在Help->Eclipse Marketplace中找到Color theme plugin,下載安裝 。在Window->General->Color Theme中,任選一個主題,個人比較喜歡sublime Text 2

  • 比較好用的插件

ExploreFS(右鍵打開文件位置)、Pydev 、CDT、dev-utils

如果C++程序編譯時出現無法解析頭文件等情況,顯示 Unresolved inclusion 。盡管不影響編譯,卻無法定位頭文件中的符號。

它的原因是沒有指定Eclipse的C和C++的目錄,可以通過設定Eclipse中 C_INCLUDE_PATH 和 CPP_INCLUDE_PATH 兩個環境變量指定頭文件目錄。 在 Window -> Preferences -> C/C++ -> Environment 中添加這兩個變量(其中4.8.2是gcc的版本,用gcc --version可以獲得):

C_INCLUDE_PATH 設為 /usr/include 
CPP_INCLUDE_PATH 設為 /usr/include/c++/4.8.2

4.3 命令行編譯運行Java程序

a. 編譯生成二進制的class文件,生成xxx.class: javac xxx.java

b. 運行帶main方法的class文件,執行時分帶包和不帶包的

  • 不帶包,運行時不帶class后綴名: java xxx
  • 帶包,即在類文件中使用了如package com.stdlib.xxx
    運行時則需要在包的基路徑src下運行(假設目錄結構是/src/com/stdlib),使用如下命令:
javac ./com/stdlib/xxx.java
java com.stdlib.xxx
  • 運行jar文件中的class,只需要加上參數-cp <jar文件名>,如下
java -cp <jar文件名> <包名>.xxx

c. 帶參數的命令行

  • 常用方法

java classname args[0] args[1] args[2]

  • 重定向標准輸入

以讀取data.txt作為標准輸入流- java classname < data.txt

  • 重定向標准輸出

將標准輸出流寫入data.txt中- java classname > data.txt

  • 管道

將程序的輸出流重定向為另外一個程序的輸出流- java class1 args0 | java class2

如果Javac和Java命令均需要引用jar包呢 ? 例如project項目里面有lib下的jar包,src下的源碼文件,想編譯並運行src下的文件,只需在project目錄下運行如下命令:

javac -classpath ./lib/stdlib.jar:./src/ ./src/BinarySearch.java
java -cp ./lib/stdlib.jar:./src/ BinarySearch args0 args1 <(>) xxx

4.4 Gradle自動化構建簡單實例


5 Node.js開發管理

5.1 源碼安裝Node.js

tar -zxvf node-latest.tar.gz 
rm -f node-latest.tar.gz 
cd node-v* 
./configure 
make 
sudo make install 

Node.js安裝時默認安裝了npm,查看兩者是否安裝成功

charles@charles-t400s:~$ node --version
v0.10.33
charles@charles-t400s:~$ npm --version
1.4.28

5.2 Yeoman、Grunt和Bower

Yeoman : 使用Web開發的最佳實踐方式,為開發者提供一系列健壯的工具、程序庫和工作流,幫助他們快速構建出漂亮、引人注目的Web應用。

它能夠解決哪些前端問題呢?

統一開發團隊代碼風格和開發規范
維護和使用開發的組件庫
模塊化前端項目
服務器部署前是否壓縮?流程如何簡化

它不僅是一個工具,而且也是一個工作流。它由三種核心工具組成,致力於提高你構建Web App時的生產力和滿意度,分別是:

  • Yo :腳手架工具,用於搭建新應用的腳手架,編寫你的Grunt配置,提交相關Grunt任務,創建你需要的Bower庫依賴
  • Grunt :任務構建工具,用於自動化處理諸如代碼最小化,代碼編譯,單元測試,代碼規范等重復性任務
  • Bower :包管理工具,用於包依賴管理,無需手動下載和管理你的腳本,用它可以對庫進行搜索,自動安裝,檢查更新,確保依賴關系等,管理Web站點的各種資源,比如框架,庫,公共部分等

統一安裝:sudo npm install -g yo bower grunt-cli karma-jasmine

檢查是否安裝成功:

charles@charles-t400s:~$ yo -v
1.3.3
charles@charles-t400s:~$ bower -v
1.3.12
charles@charles-t400s:~$ grunt -v
grunt-cli: The grunt command line interface. (v0.1.13)

Fatal error: Unable to find local grunt.

If you're seeing this message, either a Gruntfile wasn't found or grunt
hasn't been installed locally to your project. For more information about
installing and configuring grunt, please see the Getting Started guide:

http://gruntjs.com/getting-started
# 這里需要定位到含Gruntfile的項目目錄下才調用運行已經安裝好的Grunt
# 添加Grunt和插件到現有的一個package.json,在root模式下在項目目錄中本地安裝module

sudo npm install grunt --save-dev

Karma是一個基於Node.js的JavaScript測試執行過程管理工具(Test Runner)。Karma可用於測試所有主流Web瀏覽器,也可集成到CI(Continuous integration)工具

Jasmine是一款 JavaScript BDD(行為驅動開發)測試框架,它不依賴於其他任何JavaScript組件,有干凈清晰的語法,可以很簡單的寫出測試代碼。

5.3 創建一個Angular Web項目

a. 安裝生成器和搭建腳手架

sudo apt-get install ruby ruby-compass # root模式下安裝ruby和compass
sudo npm install -g generator-angular #安裝angular生成器
mkdir angular-hello  #創建項目文件夾
yo angular webapp   # 搭建一個AngularJs應用程序的腳手架

b. 安裝庫依賴- npm、bower

rm -rf node-modules/  #上面步驟有部分庫沒裝成功,需要root權限,因而需重新安裝
sudo npm install   #安裝默認依賴
sudo npm install grunt-karma karma-phantomjs-launcher karma-jasmine --save-dev
bower install && bower install underscore #根據所需從bower中安裝庫
bower install --save-dev xxx

c. Grunt自動化任務

sudo npm install grunt --save-dev   #把新版Grunt到你的項目中,並自動添加到你的項目依賴
grunt test   #測試你的應用
grunt serve  #預覽你的應用
grunt        #部署構建你的應用

5.4 持續集成平台-Travis和覆蓋率測試-Coveralls

Travis是一個持續集成(CI)平台,這樣的平台可以提供不同的版本運行環境,例如Node.js程序,可以運行不同的Node.js版本檢測有沒有兼容性問題,這種比手動切換node版再跑一次要方便很多。一般來說travis每次跑測試,都會提供一個基本的Linux環境,如build-essential、wget、git等基礎默認依賴,一旦你的應用在travis平台跑通后,就不需擔心別的用戶安裝不上了。

Github項目連接travis的基本步驟:

a. 注冊Travis(以Github用戶登陸),選擇你需要開啟集成測試的倉庫或者在你的倉庫下Settings - Webhooks & Services - Services,選擇添加Travis CI服務

服務拿到授權后,每當你push代碼到github上,travis會自動幫你跑測試

b. 構建配置信息.travis.yml,放在項目根目錄下,由它決定你的測試該怎么運行。是用npm test 還是make test 還是jake test(以node-hello程序為例)

一個簡單的.travis.yml文件,如下:

language: node_js
node_js:
	- '0.11'
	- '0.10'
	- '0.8'
	
before_install:
    - npm install -g yo bower grunt-cli 

services:
    - mongodb
	
script: make test

c. 項目代碼push到倉庫后,travis就會被觸發了

它要做以下事情:

  1. Travis會使用三個不同node.js版本運行程序

  2. 機器在完成安裝后,會進入項目目錄,根據腳本首先需要安裝全局依賴,然后再根據package.json執行npm install來安裝依賴

  3. 執行我們指定的測試腳本

  4. 如果測試通過,返回碼會是0,否則測試有不通過的case,返回碼不會為0,測試失敗。把Travis上面顯示項目目前的測試通過狀態的圖片添加到項目的README中,如

[![build status](https://travis-ci.org/charlesxiong/node-hello.svg?branch=master)](https://travis-ci.org/charlesxiong/node-hello/)

5.5 線上部署應用-Heroku、Appfog

Heroku是一種Pass平台,目前支持多種語言環境,無需你配置服務器,數據庫,也不需要理會負載均衡,一切都可在平台上直接獲取。你只需專注於自己的業務,把應用的邏輯寫好,部署到線上,非常適合開發一些demo Web應用。

A. 常規Node.js App,例如Node-hello部署稍微簡單

a. 注冊Heroku,下載Heroku工具包:

wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

b. 登陸Heroku並在項目目錄執行:

charles@charles-t400s:~/node-hello$ heroku login
Enter your Heroku credentials.
Email: haojun.xiong2010@gmail.com
Password (typing will be hidden): 
Authentication successful.

charles@charles-t400s:~/node-hello$ heroku create
Creating hidden-inlet-5897... done, stack is cedar-14
https://hidden-inlet-5897.herokuapp.com/ | https://git.heroku.com/hidden-inlet-5897.git
Git remote heroku added

c. 創建一個Procfile並把本地的master分支推送到heroku這個遠端地址

Profile的內容:

web: node index.js

推送部署到Heroku中:

charles@charles-t400s:~/node-hello$ git remote -v    #查看遠程庫
heroku	https://git.heroku.com/hidden-inlet-5897.git (fetch)
heroku	https://git.heroku.com/hidden-inlet-5897.git (push)
origin	git@github.com:charlesxiong/node-hello (fetch)
origin	git@github.com:charlesxiong/node-hello (push)

charles@charles-t400s:~/node-hello$ git push heroku master
Counting objects: 29, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (26/26), done.
Writing objects: 100% (29/29), 3.03 KiB | 0 bytes/s, done.
Total 29 (delta 10), reused 3 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
remote: ....
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing... done, 5.7MB
remote: -----> Launching... done, v3
remote:        https://hidden-inlet-5897.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/hidden-inlet-5897.git
 * [new branch]      master -> master

d. 查看發布的應用網址:https://hidden-inlet-5897.herokuapp.com/ 或者執行heroku open

B. 部署一個Angular App到Heroku中

5.6 集大成者:開發測試部署運維自動化-Docker

參考Lesson 5: Docker開發環境配置


6 Python開發管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM