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

常用快速鍵

From Evernote:

常用快速鍵

偵鍵時常用:
  • F6 - 建置 (Build)
  • F9 - 切換中斷點
  • F10 - 單步執行 (不進入函式)
  • F11 - 單步執行 (進入函式)
搜尋快速鍵:
  • Ctrl + E - 將鍵盤游標移至搜尋框 (檔案總管也行)
Intellisense 相關:
  • Ctrl + j - 開啟Intellisense選單
    • Visual Studio 2010 支援PASCAL CASE 比對
  • Alt + → - 自動完成Intellisense名稱


智慧標籤:
  • Ctrl + . (小數點) - 開啟智慧標籤(Smart tag)
  • 智慧標籤種類
    • 引用命名空間
      • 找不到怎麼辦?先載入參考組件!
    • 實做Interface方法
    • 依據使用方式自動產生程式碼骨架(Generate from Usage)
瀏覽/搜尋程式碼:
  • F12 - 移至定義
  • Ctrl + - (減號) - 向後巡覽
  • Ctrl + , (逗號) - 巡覽至
    • 可先停留在特定關鍵字上,並按下Ctrl + , 直接搜尋整個方案
    • Visual Studio 2010 支援PASCAL CASE比對 [一般情況請用小寫字母輸入]
  • Shift + F12 - 尋找符號結果
插入新行:
  • Shift + Enter - 新增一個空白行在下方
  • Ctrl + Enter - 新增一個空白行在上方
  • 特色
    • 新的一行都會停留在空白行的位置
你不知道的複製、剪下、貼上:
  • Ctrl + C - 不選取複製整行
  • Ctrl + X - 不選取剪下整行
  • Ctrl + V - 直接貼上整行
重構:
  • F2 - 重新命名變數、方法、類別




專案遺失套件或路徑不正確

From Evernote:

專案遺失套件或路徑不正確

這問題經常發生於使用Git從Server Cloen專案下來時,遺失套件或專案路徑不一樣

可利用下步驟回復:

一、在方案按右鍵,




資料庫如果匯出包含資料的sql檔(測試過2008 R2)

From Evernote:

資料庫如果匯出包含資料的sql檔(測試過2008 R2)

MS SQL Server本學有匯入、匯出精靈的功能,不過實在覺的不怎麼好用

而且在與其它DB做同步時,還經常出現格式問題,或關聯問題導致無法匯入、匯出


這裡我所要記錄的是如何使用MS SQL Server匯出包含資料的sql檔

之前有其它同事給過我一個同步、備份的方法

就是先將DB缷離,在去資料夾COPY DB檔還有LOG檔,移到其它Server在附加回去

不過這個方法最後預遇上一個問題

就是當你的SQL Server版本不同時,可能就附加不了

為了解決這個問題,我嘗試使用之前在MySQL上常用的方法,就是備份出sql檔

不過在MS SQL Server上的初學者可能容易被匯入、匯出有字眼給搞混


廢話不多說,馬上進入主題!!!!



在SQL Server上,「工作」這個選項只有在資料庫上點右鍵選單才會有
如果你在資料表上是不會有這個選項的

1.在資料庫點選右鍵,選擇工作 -> 產生指令碼(E)



2.開啟產生和發佈指令碼視窗後,點選下一步


3.這裡有2個選項
  • 編寫整個資料庫和所有資料庫物件的指令碼
               這個選項是預設選項,如果沒特別需求就直接使用他就可以了
  • 選取特定的資料庫物件
               如果你想匯出特定那幾個資料表,你就如果選項這個選項,他會例出你的資料表名稱供你選擇

選擇完資料表後,在選擇下一步



4.進階是選擇你想匯出的sql檔所包含的條件
而下面是選擇你想匯出sql檔的路徑


(重點在這一個步驟)
5.找到要編寫指令碼的資料類型,裡面會有分成3個選項
  • 僅限資料
  • 僅限結構描述 (預設)
  • 結構描述和資料
在這我們選擇結構描述和資料




6.在來他會顯示你剛剛設定的資料庫與匯出格式還有檔案路徑
選擇下一步之後他就會開始執行


7.執行畫面


8.執行完成,選擇完成


9.打開你所設定儲存的路徑,找到.sql檔
這檔案你是可以使用筆記本就可以開啟他



跟著以上步驟就可完成匯出一個完成的資料庫結構與資料內容。

[Linq to SQL] 不錯的練習測試軟體 LINQPad

From Evernote:

[Linq to SQL] 不錯的練習測試軟體 LINQPad

無法將 Lambda 運算式 轉換為型別 'string',因為它不是委派型別

From Evernote:

無法將 Lambda 運算式 轉換為型別 'string',因為它不是委派型別

今天遇到了一個奇怪的錯誤



覺的真的很奇怪,怎麼會無法下 db.Object.Include(c => c.Unit);

出現了這個錯誤。

解決的方法是加上
using System.Data.Entity;

加上這行就解決了。

還原從版本庫Cloen後無法開啟的專案

From Evernote:

還原從版本庫Cloen後無法開啟的專案

當你的專案剛從版本庫Cloen下來後,無法在Visual Studio開啟,發生如下問題







還原步驟:
1. 專案 -> 啟用NuGet套件還原

2.是


3.確定

4.在載入失敗的地方按右鍵 -> 重新載入專案


這時後會發現,所有檔案都回來了!!!

5.最後在方案上按右鍵 -> 建置方案



這個專案因該就正常可以執行了!!!


讀取Json檔案到Object

From Evernote:

讀取Json檔案到Object

需要using的Path
using System. IO ;
using System. Xml ;
using System. Xml .Linq ;
using System. Runtime .Serialization . Json;


Test.json:
{"First":true,"AddDrop":false,"Abandon":false}

主要的程式碼:
string path = "../Test.json";
byte [] buffer = System . IO. File .ReadAllBytes (path);
using ( XmlReader reader = JsonReaderWriterFactory .CreateJsonReader ( buffer, XmlDictionaryReaderQuotas . Max))
{
     using ( XmlDictionaryReader xml = XmlDictionaryReader. CreateDictionaryReader ( reader))
     {
          DataContractJsonSerializer serializer = new DataContractJsonSerializer ( typeof( CourseSelectJsonModel ));     //重點在這行
          CourseSelectJsonModel courseSelectJsonModel =  serializer .ReadObject ( xml);
     }
}


Model:
public class CourseSelectJsonModel
{
     public bool First { get ; set ; }
     public bool AddDrop { get ; set ; }
     public bool Abandon { get ; set ; }
}