2014年11月4日 星期二

IntellijIDEA學習整理-快捷鍵

前言
最近研究了一套新的IDE Intellij IDEA
主要是根據研究的資料來整理而已,並沒有針對整個對應表進行整理
這一篇先整理一下,他一些好用的快捷鍵
先主要分成幾個部分好了
第一個部分是工具視窗的部分
第二個部分是程式瀏覽和查詢的部分
第三個部分是純文字編輯的部分
第四個部分是自動化的部分
第五個部分寫一些特殊的設計的概念
另外,還有些不知道在幹嘛的,先記著

2014年8月12日 星期二

Shell Scripts和程式執行方式

好久沒寫Blogger,因為ipad太好玩了,打混了一陣子
不過這次主要要寫在linux上遇到的問題
就是執行shell script的方式,主要是要執行一段script來export一些路徑
但是卻一直沒有成功,原來是因為執行方式錯誤造成。

shell script的執行方式主要有三種
./your_script.sh
sh your_script.sh
source your_script.sh

使用./sh的方式都會呼叫子程序的方式來執行
source是在當前的程序執行
所以使用source來執行script就可以解決我的問題了。

如果是希望在登入的時候,就將路徑設定好
就需要到家目錄($HOME)的 .profile 或 .bashrc 設定檔加上
要export的路徑

另一個問題是在執行程式時遇到的
寫了一隻常駐程式,在compile完之後
可以使用
./your_app
的方式來執行

但我執行完後,想要把連線關閉(我在這裏使用ssh進行連線)
其常駐程式也會跟著關閉

最直接的方式是使用at的指令(at為一次執行,cron是周期執行)
新增工作排程的方式
不過他有限定特定使用者才能使用
所以用另一個指令nohup的方式來執行會更好
執行方式
nohup your_app &

參考資料:
http://linux.vbird.org/linux_basic/0340bashshell-scripts.php
http://linux.vbird.org/linux_basic/0430cron.php#whatiscron_type
http://linux.vbird.org/linux_basic/0440processcontrol.php

2014年6月25日 星期三

GDB基本操作指令

前言

之前工作debug都是使用IDE的除錯功能,就是設中斷點,然後執行,再一直點下一步,然後觀查參數的變化和在那裏發生錯誤,當然如果對開發專案的程式和架構愈熟悉的話,大概看一下Log就知道問題在那裏了。

不過最近必須開發伺服器上的C++的程式,而我都是在本機上用Notepad++寫完之後,上傳到伺服器上,用make指令進行編譯,基本上是沒辦法本機使用IDE來進行除錯的。

這樣就不用debug了嗎?當然不…,一個簡單的方法就是加log,不過只在修改程式碼不多,或是錯誤在特殊狀況出現在使用,要不然可能會被搞到瘋掉吧,一個因難的方法就是,在server上搞出一個IDE的畫面出來,理論上應該灌上桌面程式再加上遠端程式,然後放上支援Linux的IDE(如Eclipse和CodeBlock),不過不用這個方法的理由蠻多的,需要花時間研究這些東西,然後搞了半天也不一定可行,重點是把server搞掛了,可能要去喝西北風了吧…

不過,還是有一條路線可以走,那就是使用gdb(用小寫因為指令就是小寫XD),這讓我想到了MUD的遊戲,感覺真的很古早味…,在習慣了隨時可以看到code來除錯後,真的需要一點時間來習慣,需要習慣使用最強的IDE來把自已的code顯示出來,就是your brain,中文翻成你的豬腦或是魚腦,好了廢話不多說了,下面簡單的記錄一些常用的指令。

2014年5月28日 星期三

Google Blogger文章分類策略思考

雖然我的文章還蠻少的,但我還是喜歡井然有序的感覺XD
至於為什麼會寫這篇呢?
因為Google Blogger並沒有單純文章分類這個功能
他是使用標籤來進行文章分類的功能
可以參考下面這篇文章來進行文章分類

http://dreammaker88.pixnet.net/blog/post/93929064-google-blogger%E6%96%87%E7%AB%A0%E5%BF%AB%E9%80%9F%E6%96%B0%E5%A2%9E%E6%A8%99%E7%B1%A4%E6%B3%95%E5%8F%8A%E5%88%86%E9%A1%9E%E6%95%99%E5%AD%B8

也因為文章分類和標籤的功能混合在一起了,所以我也不能像一般的blog將文章分類,然後在標籤的地方隨便亂打,這樣在利用標籤選分類是會有太多項目要選,也有很多標籤會忘了當初的目的為何…,而原本的想法是分類的標籤放在第一個,或是特殊的名命方式,如"01軟體設計"之類的,然後後面幾個標籤就可以隨便打了。

不過這樣用了一陣子,還是覺得太過混亂了,重點是隨性打的標籤太多了,所以決定減少標籤的數量,盡量使用單一個標籤,而該標籤就可以代表他的分類,然後依照其關聯的技術或是看和什麼東西有關聯性來分類,不過多多少少還是會遇到這個文章會和二個技術有關聯,這時再使用二個標籤。

另外有一個問題,就是子分類的問題,比如Linux下面可以再分成Ubuntu或是Red Hat等等,這時分類的策略,可以分成二種。

一、 如果一開始文章數量不多的話,可以都放在Linux下,不需要開Ubuntu或是Red Hat,不過這時最好在文章的標題有子分類的關鍵字,免得忘記要分到那,不過我的習慣會在標題一開頭就打了。

二、 另一種情況是有的技術是屬於Ubuntu或Red Hat,但有的卻比較算是Linux都可共用的,比較簡單的作法,應該就是特定OS的就依照其所屬OS分類,通用的就分到Linux,而那些特定技術的是否要標到Linux,可以看你個人取向而定,我個人比較偏向不需要,盡量單純化。


2014年5月26日 星期一

UML網路工具

上面這四個網頁版的UML繪圖工具
我是使用Chrome來進行測試
然後我希望可以和google drive來作整合

第一個 Creately
感覺非常專業而且圖形也蠻豐富的,感覺真的蠻卡的就是了,使用方法上也蠻複雜的…,不過我最後還是搞懂怎麼用了,不過他沒有和google作整合

第二個 sketchboard
感覺算是蠻陽春的…,UML的圖形主要的應該是都有,雖然有和google drive作整合,但建立一個超連結而己,使用上蠻不直覺的…

第三個 cacoo
個人蠻喜歡他的設計的,雖然可以用google帳號登入,都是沒辦法把檔案放到google drive上

第四個 draw.io
基本上用起來蠻順的,也可以把檔案放至google drive上,不過在網頁上開啟或是會連他他們的網站上做修改,但基本上這套應該算是符合我目前的需要~


2014年5月20日 星期二

UML製作的一些心得

最近改行當SA了,但其實是工作包含RD、SA和QA吧(簡稱PG!)。不過這不是重點,因為最近有一份開發文件要製作,所以開始研究一些UML的東西,雖然以前也有大概看過一下,不過知道和了解有一段差距,對我而言很多東西都是要實作過才會了解了,資質愚昧丫!好了,廢話不多說了,來寫一下研究過後的心得,順便作個筆記…

UML零零扣扣有十幾張圖吧,每個圖都有各自的作用
下面這個網址有對各個UML圖進行簡單的介紹
http://tx.liberal.ntu.edu.tw/Jx/IS_IM/UML.htm

雖然圖很多,但我覺得其實大部分的圖用到的機會並不高,主要會用到主要是Class Diagram、Use Case Diagram和Sequence Diagram而已,下面這個是幾個重要的UML圖的介紹
http://www.dotblogs.com.tw/hatelove/archive/2009/10/21/11183.aspx

Sequence Diagram教學
http://www.ithome.com.tw/node/55552

嗯...概念和技巧這種東西永遠是學不完的,而且用不到的話,可能會隨時隨著排泄物流出體外吧,所以大概了解核心的概念和先記一下會用到的技巧,比如我說的那三張圖是拿來幹嘛的和長什麼樣子,然後要那些小圖案把他畫出來,然後,其它就隨性發揮吧…

再來講一些實際的東西吧,就是製作UML的工具,從最簡單的小畫家到專業級的EA,其實都可以拿來用,不過我個人是用Visio2003,因為和MS Office的整合性比較好,不過建議抓新一點版本的Visio...,2003的UML的版本是1.6的,然後現在都是UML 2.x為主了吧(x就是我也不知道那個子版為主),反正就是過時的產品了,不過可以用Stencil來加強

Stencil的官網
http://softwarestencils.com/uml/index.htm

參考資料:
EA-
http://ithelp.ithome.com.tw/question/10027571



2014年4月7日 星期一

Linux筆記-指令整理(一)

最近還蠻常用到Linux的指令,所以簡單來的作個整理
雖然Linux的指令其實非常的複雜,一個指令可能擁有許多的參數
但其實就程式設師的角度來看,比較常用的指令就那些
不需要記所有的指令和參數
在鳥哥的網站應該有一份整理好的清單的
http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php
其實知道這份清單中的指令應該就夠用了
不過,我覺得最好還是大概看過鳥哥的基本篇的文章教學,建立觀念也是十分重要的

下面是我將鳥哥整理好的清單列出,然後加上紅色是我覺得一定要記住的指令

登入與登出(開機與關機):telnet, login, exit, shoudown, reboot 
Linux 多人多工與背景執行功能& 與 [ctrl]+[z], fg, ps, kill 
檔案與目錄管理:cd, pwd, ls, cat, more, mkdir, rm, rmdir, mv, cp, ln, find, whereis, chmod, chown, chgrp, df, du 
磁碟與硬體管理:mount, fdformat, fdisk, mke2fs, mkbootdisk, badblocks, fsck, rpm
系統管理員:su, clear, dmesg, groupadd, useradd, userconf, passwd, who, whoami, topfree, quotacheck, edquota
壓縮指令:compress, gzip, tar 
一些網路功能ifconfig, route, netstat, hostname, ping, nslookup,talk, traceroute, mail
其他有的沒的date, cal, grep 
ftp 指令:ftp, ncftp, gftp
相關設定指令:set, uname, setup, lilo, Xconfigurator, xf86config
X-Window內的設定指令startx, netconf, netcfg, XF86Setup

另一個指令使用的重點就是組合技了,就是學會使用管線指令,不會管線指令就像打格鬥天王只會重腳一樣,不過也不是所有指令都可以使用,需要自已慢慢摸索,我舉一個我比較常用的例子

比如我想在某個目錄下找特定檔名的檔案
# ls|grep Piece
|就是管線指令,ls會將目前所在目錄的檔案列出,利用|管線指令就檔案清單的資料交給grep,grep這個指令的作用就是找出包含Piece關鍵字的檔案

另外再補充一個就是,一開始在學習指令時或是看到別人寫的指令時,有時會不太了解,可以用利Linux指令解釋網站
http://blog.soft.idv.tw/?p=1628
這裏面列出了二個網站,不過我比較推薦
http://explainshell.com/
有可下載原始檔下來使用

在這篇並沒有特定的指令作解說,所以之後我可能針對常用和使用上比較複雜的指令進行整理。







2014年3月13日 星期四

如何在Linux下開啟oracle

每次重開機的時候oracle資料庫都不會重新啟動,所以查了一下如何開啟資料庫
系統的版本主要是Red Hat,Cent OS應該也是可以通用的。
當資料庫不能連線時,記得先檢查網路和主機狀態。

開啟資料庫:
su - oracle
sqlplus "/sysdba"
進入slqplus
sql> startup
sql> exit

開啟監聽器:
檢查監聽器
lsnrctl status
開啟
lsnrctl start


參考資料:
http://mrmo.cc/1594/%E5%9C%A8centos%E4%B8%8B%E5%95%9F%E5%8B%95%E5%AE%89%E8%A3%9D%E5%A5%BD%E7%9A%84oracle%EF%BC%8C%E4%B8%A6%E8%A8%AD%E5%AE%9A%E9%96%8B%E6%A9%9F%E8%87%AA%E5%8B%95%E5%95%9F%E5%8B%95/

Borland C++ short key

Borland Build C++ 6.0跟我很不熟的一套IDE,基本上比較常用的在功能選單上都有註明,不過這真的不是一套非常友善的開發軟體,畢竟也有一段歷史了,我在這裏記錄一些常用,但不在功能選單上的快速鍵。

書籤Bookmarks,有時trace code會需要用到…,但右鍵選單上設計的不夠理想,常常誤點…,雖然預設快速鍵也不是很好用就是了
<Ctrl-k><0> Sets bookmark 0
<Ctrl-0> Go to bookmark 0

之後,如果有其它常用的快速鍵,我再補充。

參考資料:
http://content.hccfl.edu/pollock/Docs/BCCEdit.htm

2014年3月5日 星期三

Oracle SYNONYM 的建立和刪除

當使用者B想用使用者A上的資料表時,除了使用Grant賦予權限外,可以使用synonym來建立table的同義字供別的使用者使用。

我主要建立public共用的synonym,建立指令如下:
CREATE PUBLIC SYNONYM synonym_name
   FOR user_name.table_name

刪除synonym指令如下:
DROP PUBLIC SYNONYM synonym_name

參考資料:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm
http://blog.itpub.net/12778571/viewspace-674453/