2013年5月7日 星期二

(Error) libc : Fatal signal 7 (SIGBUS) at 0x65147a90 (code=2)

From Evernote:

(Error) libc : Fatal signal 7 (SIGBUS) at 0x65147a90 (code=2)

錯誤記錄:
05-07 03:26:20.513: A/libc(1935): Fatal signal 7 (SIGBUS) at 0x65147a90 (code=2) 

原因:
bindService(Intent)時發生
主要是在其它Activity呼叫bindService,但該Service未被startService()

解決:
只要在App 啟動時先執行startService(Intent)即可。

2013年4月27日 星期六

Can't locate SVN/Core.pm in @INC

From Evernote:

Can't locate SVN/Core.pm in @INC

Git實在是越用越順手,現在連SVN跟本都不想用

還好Git還有另一個指令,Git-svn 他的操作基本上跟Git沒什麼太大的差異

如要clone一個專案,你只需要下:

$ git svn clone [your url]

就是這麼簡單,不過

你一定要安裝Xcode上的「Command Line Tools」不然就會出現以下錯誤訊息:

Can't locate SVN/Core.pm in @INC (@INC contains: /usr/local/Cellar/git/1.8.2.1/lib /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /usr/local/Cellar/git/1.8.2.1/lib/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/1.8.2.1/lib/Git/SVN/Utils.pm line 6.
Compilation failed in require at /usr/local/Cellar/git/1.8.2.1/lib/Git/SVN.pm line 26.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/1.8.2.1/lib/Git/SVN.pm line 33.
Compilation failed in require at /usr/local/Cellar/git/1.8.2.1/libexec/git-core/git-svn line 25.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/1.8.2.1/libexec/git-core/git-svn line 25



安裝順序如下:
1.你一定要有安裝Xcode 最新版
2.開啟XCode -> Preferences -> Downloads ->選擇「Command Line Tools」點擊Install 



裝完在試就ok了。

2013年4月24日 星期三

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

首先建立一個 vsftpd使用的Linux 帳號。
# useradd ftp
MySQL建立一個屬於 vsftpd使用的資料庫。
在資料庫裡新增三個欄位,分別為 ID、Name 、Password
而 ID為PRIMARY KEY ,自動遞增,不可為空。
而 Name不可為空,也不可重覆。
而 Password不可為空。如下:
建立資料庫:
CREATE DATABASE 資料庫名稱 ;
建立資料表:
CRETE TABLE '資料表名稱' ('ID' INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
                         'Name'  VARCHAR(30) NOT NULL ,
                         'Password' VARCHAR(50) NOT NULL , UNIQUE('Name')
                        )ENGINE=MYISAM ;
新增資料:
INSERT INTO '資料表名稱'  ('Name'  , 'Password') VALUES ( '新增的帳號'  , PASSWORD('新增帳號的密碼'));
資料庫新增完後。
修改 /etc/pam.d/vsftpd
內容為:
auth required pam_mysql.so user=資料庫登入帳號  passwd=資料庫登入密碼 host=localhost db=資料庫名稱  table=資料表名稱 usercolumn=使用者名稱欄位名稱  passwdcolumn=使用者密碼欄名稱 crypt=2
account required pam_mysql.so user=資料庫登入帳號  passwd=資料庫登入密碼 host=localhost db=資料庫名稱  table=資料表名稱 usercolumn=使用者名稱欄位名稱  passwdcolumn=使用者密碼欄名稱 crypt=2
修改完後儲存。
修改 /etc/vsftpd.conf
guest_enable=YES
write_enable=YES
guest_username=ftp
local_root=/home/ftp/$USER                                # 使用者目錄 
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf/        # 使用者設定檔存放目錄
修改完畢後,重新啟動 vsftpd
/etc/init.d/vsftpd restart在來就可以建立新的 ftp使用者了。
首先在 MySQL下新增資料在剛剛所建立的資料表裡。
INSERT INTO '資料表名稱'  ('Name'  , 'Password') VALUES ( '新增的帳號'  , PASSWORD('新增帳號的密碼'));接下來設定使用者目錄。 
新增檔名為使用者名稱的檔案到 /etc/vsftpd/vsftpd_user_conf/ 資料夾下
內容為:
local_root=/目錄位置/ 使用者資料夾 
存檔。
如目錄位置下並沒有這資料夾,則新增資料夾,並設定目錄權限。
mkdir /目錄位置/ 使用者資料夾
chown -R ftp /目錄位置/ 使用者資料夾
大致上設定到這裡就都 ok了。
如果還是無法登入,可能是 /etc/vsftpd.conf設定檔有設定到vsftpd.user_listvsftpd.chroot_list這二個檔案。
如果都無誤,因該都可使用了。
本實作是參考底下網址:
http://blog.gclin.org/2009/04/14/vsftp-virtual-user-mysql-add-user/

2013年4月13日 星期六

Java TestCase for JUnit 4 - 環境安裝

From Evernote:

Java TestCase for JUnit 4 - 環境安裝

這裡只記錄Java使用JUnit Plugin的最簡單的範例

目前如果是使用Eclipse開發,預設就已經有JUnit

可以透過下面的方式加到你的專案

1.在自已開發的專案點選右鍵 -> Build Path -> Configure Build Path...





開啟Java Build Path設定畫面,點選右邊的Add Library




選擇Eclipse預設的JUnit套件,Next



設定JUnit版本,我們選擇JUnit 4,在按下Finish



完成上面的步驟就把Eclipse裡的JUnit Library加到專案裡




Java TestCase for JUnit 4 - 簡單範例測試

From Evernote:

Java TestCase for JUnit 4 - 簡單範例測試

假設我們有一個Unit的專案

專案裡有一個Method在驗證傳入值是否為2的倍數



如果我們要對這個Method做Test Unit

我們可以在專案裡建立另一個專放測試類別的Package
這裡用TestUnit Package


然後建立了一個TestUnit.java

這個TestUnit Class 必需繼承TestCase Class (你必需有加入JUnit Library)
內容如下:



setUp - 這是在測試前先執行的Method,通常都是放些測試前初使化的動作

tearDown - 這是在測試後所做的動作,通常都是結束掉服務

testMultipleTwoFalse - 這是第一個測試Method,第15行就是對isMultipleTwo送值做測試

Assert.assertEquals(預期結果 , 測試Method + 傳入值)

2013年4月11日 星期四

解決煩人的modified

From Evernote:

解決煩人的modified

今天在公司發生了一件鬼打牆的事情

就是我Clone下來的專案出現了一堆modified

這些modified是很奇怪的,雖然部分是因為檔案名稱大小寫的關係才出現的modified

但這些modified有大多數都是內容有更動.............

明明才剛Clone下來,怎會有檔案出現modified

雖然事後還是沒找到正真發生的原因,不過總算找到可以暫時避開這個問題的方法

這裡先說,因為是多人開發,所以我也不敢直接將有modified的檔案加到.gitignore

反正這些檔案我並不會使用,更不會去更動,所以我直接採用

git update-index --assume-unchanged <files name>

執行完查看

git status

發現檔案不在出現了

這也暫時解決了這個問題

其實這個指令就是在告訴git我假設這個檔案是沒有更動的,所以git採信了我的話,不在出現在status

那我也又做了另一個實驗

那就是,如果這個檔案在次被更動呢????

答案是,他還是會在告訴你modified

2013年3月31日 星期日

煩人的訊息 LC_CTYPE: cannot change locale (en_US.UTF-8)

From Evernote:

煩人的訊息 LC_CTYPE: cannot change locale (en_US.UTF-8)

這個訊息是在修改過 /etc/default/locale 檔案所導致的

原因很簡單,可能你的系統並未安裝en_US.UTF-8

你可以使用下列指令查看
locale -a

你可能會發現,你跟本未安裝en_US.UTF-8這個檔案

你只要執行
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

這兩行指令,然後重開,這個問題就解決了!!!



參考網址:

2013年3月28日 星期四

GG的DC to AC

From Evernote:

GG的DC to AC

自從辭去大同公司助點工程師的職務之後,就在也沒碰過電子維修這類的工作

不幸在上星期。。

我從小黑拿出DC to AC要換到另一台車時,不小心被我摔到了。

我還以為外層是金屬外殼,只是自由落體應該沒事才對。。

不幸在墾丁遊玩時,需要它時,才發現他GG了 XD




回到家二天了,好今天閒閒沒事做,拿出高職工業電子丙級所做的電源供應器。。

這東西可有點年份了,大概十三、十四年了><||

打開電源供應器後,很開心的,他還活的好好的><+

不過,當我去增加電壓時,感覺他有點不穩,心裡真的是祈禱著他不要爆炸。((((雖然他頂多是不動

裡面的繼電器,一直吱吱作響........真恐怖...........


接上電表~~嗯,他還是好的,老當益壯。



拆開DC to AC的盒子,我實在是不懂的怎查電路異常,我只能看看有沒有什麼外觀異常囧.......

果然.......



變壓器摔斷了囧...........

不過,變電器應該都是線圈,除非線圈斷掉,不然也不會輸出不足的電壓..........

就在電路板的背面,我發現了重大的異常.......


什麼@@!焊點脫落了................

感覺問題合理

因為變壓器焊點脫落所以輸出的電壓異常,合理合理。。。

為了證實是否真的是這個原故,我就把他焊好試試看。

囧......真的正常了.................





不過,正常是正常,但在輸出測量時,我發現輸出的電壓時常會往下衰減,所以我決定買一顆新的變壓器回來換看看。。。

2013年3月8日 星期五

在命令提示視窗(Command Prompt)顯示UTF-8內容

From Evernote:

在命令提示視窗(Command Prompt)顯示UTF-8內容

Clipped from: http://blog.darkthread.net/post-2011-08-11-command-prompt-codepage.aspx
在中文版Windows中,Command Prompt預設使用BIG5編碼,因此檢視UTF-8編碼檔案時會出現亂碼。
今天學會一個指令,chcp,使用chcp加上Code Page代碼,就可切換指定的語系。UTF-8的Code Page是65001,先chcp 65001,再將預設的字型由Raster Fonts改成Lucida Console或Consolas,就可以正確顯示UTF-8編碼的檔案囉! (另外,下圖Options頁籤可查看目前的Code Page設定)
PS: 切換到UTF-8後,無法在命令提示視窗使用中文輸入法,算是美中不足。另外,chcp後,Code Page設定會被記憶起來,下次開啟命令提示視窗時,仍會繼續沿用。

Ant Echo 輸出

From Evernote:

Ant Echo 輸出

輸出到檔案
<echo file="檔案名稱">內容</echo>


輸出UTF-8中文
<echo encoding="UTF-8">測試</echo>

Ant 執行Java SE

From Evernote:

Ant 執行Java SE

Task:

<java classname="package+class name">

<arg value="參數" />

<classpath>
     <pathelement path="可能會用到的jar" />
</classpath>

Git 轉換版本庫到 SVN

From Evernote:

Git 轉換版本庫到 SVN

Clipped from: http://www.worldhello.net/2010/01/08/74.html
在Git版本庫上建立SVN關聯
git svn init -s svn版本庫路徑

取得SVN版本庫第一筆log
git svn fetch

列出所有分支
git branch -r

建立新的分支,並切換過去
git checkout -b trunk remotes/trunk

列出目前有多少分支,顯示自已現在在那個分支
git branch

列出該分支所有log (在命令模式下查看第一比記錄)
git log master
[假設取得第一筆log Hash為123abcd]

只合併該筆記錄
git cherry-pick 123abcd

將trunk從123abcd這筆記錄合併到master
git rebase --onto trunk 123abcd master

列出目前有多少分支,顯示自已現在在那個分支
git branch

切換到trunk這個分支
git checkout trunk

取消master最後一次的commit
git reset --hard master

將所有的commit送到svn上
git svn dcommit

---------------------------------------我是分隔線--------------------------------------

經過上面的同步後,以後想要在把最新的資料提交回SVN,操作可參考如下。

trunk為SVN主線 (實際情況還是要看當下想使用那條線)
切換到trunk
git checkout trunk

將SVN上的最後版本與git合併到上最新版本
git merge -s subtree master

將trunk合併後的資料倒回SVN
git svn dcommit


Conversion to Dalvik format failed with error 1

From Evernote:

Conversion to Dalvik format failed with error 1

Conversion to Dalvik format failed with error 1

遇到這個錯誤可以檢查一下自已libs裡的jar是否有衝突。

failed: Unable to execute dex: Java heap space

From Evernote:

failed: Unable to execute dex: Java heap space

Clipped from: http://haiyang08101.iteye.com/blog/1562028
failed: Unable to execute dex: Java heap space

可查看是否有jar沒有設定到lib的列表上


下列設定:
設定Eclipse資料夾下的eclipse.ini

256m
改為
512m

-Xms40m
-Xmx384m
改為
-Xms40m
-Xmx384m

在文件最後面在加上
-XX:MaxPermSize=256m

使用git svn指令初使化一個svn的trunk

From Evernote:

使用git svn指令初使化一個svn的trunk

如果想要用git-svn同步一個svn的trunk版本庫

可以使用:git svn init -T trunk 版本庫路徑

重點在 -T 這個指令

Git 與 SVN 版本庫資料整合

From Evernote:

Git 與 SVN 版本庫資料整合

為了避免破壞了Local版本庫資料,建議cloen一份出來做整合

複制一份local版本庫 ,在此命名為work
git cloen /work

設定SVN版本庫,路徑在此命名為svn://work(也有可能是http),-T trunk則是設定為主線
git svn init svn://work -T trunk

複制一份SVN版本庫回來
git svn fetch

.....
......
.......
........


找出二份版本庫的共同點並合併單點

初使化一個新的Git版本庫

From Evernote:

初使化一個新的Git版本庫

Clipped from: http://blog.longwin.com.tw/2009/05/git-learn-initial-command-2009/
新增一個工作目錄,在這以work表示
mkdir work

切換到工作目錄
cd work

初使化工作目錄
git init
Initialized empty Git repository in /work/.git

編輯.gitignore (該檔為git資料同步時的依據)
vim .gitignore

將編輯好的.gitignore新增到staging area
git add .gitignore

做第一次的commit
git commit -m "first commit"


以上就完成了一個git版本庫的建置

Eclipse Plugin / ObjectAid (UML Design)

From Evernote:

Eclipse Plugin / ObjectAid (UML Design)

Clipped from: http://www.objectaid.com/

前言:
ObjectAid是一套基於Eclipse上的UML 套件,可用來畫UML圖生成程式碼

也可以反生成,個人目前使用是用於反生成,可快速理解一個專案的架構

會選擇ObjectAid是因為他的畫面個人覺的還不錯,風格與Eclipse有一致性

操作方面的話,經常使用Eclipse的人就知道了,我們經常會按Ctrl+滑鼠左鍵

用於快速查詢物件來源,好理解程式的流程。而ObjectAid這方面做的非常直覺化。


載點:
http://www.objectaid.com/download

安裝方式:
1.可用Updata方式

2.使用Eclipse Marketplace


功能簡介
1.新增Class Diagram (PS. Sequence Diagram為付費版)






  • Classifiers (類別或介面)
    1. Show Attribute Default (顯示變數預設值)
    2. Show Operation Signature
    3. Automatic Resize (自動調整大小)
    4. Show Visibility 
    5. Show Icons (顯示型號圖式)
    6. Show Stereotype (顯示構造型別)
    7. Show Package Name (顯示組件名稱)
  • Relationships (關聯)
    1. Add Generalizations
    2. Add Nesting
    3. Show Association Multiplicity (顯示多重關聯)
    4. Add Realizations
    5. Add Dependencies
    6. Show Association Labels
    7. Add Associations (增加關聯)
    8. Always Add Relationships
  • Attributes (屬性)
    1. Show Public (顯示公有屬性)
    2. Show Package (顯示組件屬性)
    3. Show Private (顯示私有屬性)
    4. Show Protected (顯示被保護的屬性)
  • Operations (操作或方法)
    1. Show Public (顯示公有方法)
    2. Show Package (顯示組件方法)
    3. Show Private (顯示私有方法)
    4. Show Protected (顯示被保護的方法)



功能說明:

在編輯介面下,有幾項簡單的選取操作。


重點在於Add選擇中,可選擇想要加入物件的其它關聯物件


以Android的主要類別MianActivity來做範例,點選MainActivity右鍵選擇了Add -> Generalized -> 選擇MianActivity.java

繼承的Activity他將會顯示Activity類別,在這個地方看到MianActivity與Activity的關係。

Add選項:



Associated (關聯)
也就是說,在MianActivity Class裡只要有使用到的物件都會產生關聯(Associated)
如同MianActivity,他在Class中使用了String的物件,所以在關聯上是會有String。
只限定類別級的關聯,在方法(Method)下的這裡就不會顯示出來了。

Generalized (繼承)
顯示該類別的繼承(Generalized),以MainActivity就是繼承了Activity,而Activity是繼承了ContextThemeWrapper。

Nested (巢狀類別/介面)
以類別包含其它類別或介面。

Realized (實作)
意思是說,一個A類別的行為由別外一個B類別來實現A類別的行為。

All Relationships (所有關係)
Associations (聯繫關係)
Dependencies (相依關係)
Generalizations (繼承關係)
Nesting Relationships (巢狀關係)
Realizations (實作關係)




2013年3月5日 星期二

Eclipse 誤刪檔案回復動作

From Evernote:

Eclipse 誤刪檔案回復動作

如果在Eclipse誤刪檔案想在資源回收筒找回檔案是找不到的。

不過可以透過Eclipse內建的功能把他給回復回來。

1.Restore from Local History (本地端歷史還原)



2.選擇所要還原回來的檔案


至於記錄會留多久,這個目前就沒有研究了。

有研究在補上。。。

關閉Administrator遠端登入權限

From Evernote:

關閉Administrator遠端登入權限

控制台 -> 系統管理工具 -> 本機安全性原則

只要在允許透過遠端桌服務登入裡將Administrator拿掉,在把可登入的帳號加入即可。

更換Editor Style

From Evernote:

更換Editor Style

Theme可到Studio Styles下載
也可以到Visual Studio下載Visual Studio Color Theme Editor組件自行設定
在這只用最懶的方法做XD
 

安裝步驟:
  1. Studio Styles下載回你喜歡的Style
  2. 打開Visual Studio 2010 (我所使用的版本是Ulitmate)
  3. 工具 -> 匯入和匯出設定
  4. 選取匯入選取的環境設定
  5. 下一步
  6. 否,只需匯入新設定並覆寫目前設定
    (可選擇是,儲存目前設定,但也可以直接選擇否)
  7. 點選瀏覽,選擇你所下載的Theme檔
  8. 下一步
  9. 點選完成
  10. 關閉

Demo:

Ubuntu 12.04 文字模式,中文亂碼

From Evernote:

Ubuntu 12.04 文字模式,中文亂碼

修改/etc/default/locale
$ vim /etc/default/locale

修改如下:
LANG="zh_TW.UTF-8"
LANGUAGE="zh_TW:zh"
修改為:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

重開機
$ reboot

Ubuntu 12.04 修改IP

From Evernote:

Ubuntu 12.04 修改IP

修改位置如下:/etc/network/interfaces

$ vim /etc/network/interfaces

修改內容如下:
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 168.95.1.1


PS. 新的ubuntu dns必需在這設定。


修改完畢,重新啟動網路介面
/etc/init.d/networking restart

安裝與設定Copssh

From Evernote:

安裝與設定Copssh

檔案來源為:https://www.itefix.no/i2/portforme

安裝步驟如下:
  1. 下載Copssh 免費版 (軟體版號為3.1.4-free,OpenSSH版本為5.6)
  2. 下載完開始安裝
  3. 安裝過程中,會要你建立一位使用者(預設上會是SvcCOPSSH,可能會用到,也可能不會用到)
  4. 安裝完Copssh後執行Activate a User
    (路徑在開始 -> 所有程式 -> Copssh -> Activate a User)
  5. 過程中會要你選擇Windows上的一位使用者
  6. 選擇完後會要你輸入一組公鑰
  7. 完成結束安裝

設定步驟如下:
  1. 打開Copssh安裝目錄下的/etc,並找到ssh_config與sshd_config(二者是不一樣的)
  2. 使用記事本打開ssh_config並刪除Port前的(是否修改Port的值,看個人,如有安全考量建議修改掉)
  3. 儲存ssh_config。
  4. 使用記事本打開sshd_config並刪除Port前的(是否修改Port的值,看個人,如有安全考量建議修改掉)
  5. 刪除MaxAuthTries前的#,值修改為2
  6. 刪除RSAAuthenticationPubkeyAuthentication前的#,預設值為yes
  7. 刪除PasswordAuthentication前的#,值修改為no
  8. 儲存sshd_config。
  9. 打開防火牆,加入SSH的Port為白名單內。

VS2010顯示行數

From Evernote:

VS2010顯示行數

工具 -> 選項

加強安全性

From Evernote:

加強安全性

@Html.AntiForgeryToken()
防止跨網域攻擊,也就是CSRF攻擊。
CSRF也就是「跨站請求偽造」,因為在ASP.NET程序中,我們的用戶信息都是存在與cookies裏面的,此時在用戶自己來說,程序已經可以算是裸奔了。正因為如此,Web程 序接受的正常客戶端請求一般來自用戶的點擊鏈接和表單提交等行為。可是惡意攻擊者卻可以依靠腳本和瀏覽器的安全缺陷來劫持客戶端會話、偽造客戶端請求。攻擊者盜用了你的身份,以你的名義發送惡意請求,以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私泄露以及財產安全。這就是CSRF攻擊。



2012顯示行號

From Evernote:

2012顯示行號

工具 -> 選項

修改VsVim游標顏色

From Evernote:

修改VsVim游標顏色

工具 -> 選項

Windows 自動ADSL連線

From Evernote:

Windows 自動ADSL連線

只要在控制台 -> 工作排程加上開機自動連線的工作就可以

工作內容需輸入下例指令: (紅色為你的寬頻連線名稱)

C:\Windows\System32\rasphone.exe-d 寬頻連線

NuGet自動補齊缺少的套件

From Evernote:

NuGet自動補齊缺少的套件

在使用TFS的版本控制時,可能會發生套件短缺的問題。

NuGet有個還原的功能,在建置時自動幫你把短缺的套件給補回來。

解決Google Map分享地圖時過長的網址

From Evernote:

解決Google Map分享地圖時過長的網址

1.點擊分享連結

2.縮短網址打勾


Models常用屬性(Attribute)

From Evernote:

Models常用屬性(Attribute)

[Key]
顧名思義,Key就是代表主鍵
或是在主鍵名稱只要有Id型別為int程式自動會將他視為主鍵

[Required]
不可為空,當有些預設是可為空的欄位,就必需加上這個屬性,他才會變為不可為空。
反過來的話,則是在型別後面加上一個?

[MinLength(N)]
最小長度不底於N

[MaxLength(N)]
最大長度不超過N


[NotMapped]
排除資料庫對應,也就是說他是不會被加到資料庫的。


[DatabaseGenerated]
使用欄位不再被Entity Framswork追蹤這個屬性的變化。
我個人的理解是,這欄位以SQL Server為主,如果Server上有預設資料,則會以他的資料為主。






符號區分表

From Evernote:

符號區分表


IE6IE7IE8IE9IE10FirefoxChromeOperaSafari
*VV






!important
V


V


\9VVV





\0

V





_V







+
V






[;Content;]VV



V
V