2016年12月29日 星期四

[machine learing]交作業

最近用 coursera 學 machine learning ,但遇到用 octave 作業寫完卻無法提交的問題。提交了之後會遇到
!! Submission failed: unexpected error: urlread: Peer certificate cannot be authenticated with given CA certif
icates
!! Please try again later.
的錯誤訊息。

2016年12月23日 星期五

LoaderLock error

VS2015關閉LoaderLock訊息回報被改到
Debug->Windows->Exception Settings
Managed Debugging Assistants>LoaderLock這個地方
以前版本的VS是在
Debug -> Exceptions
Managed Debugging Assistants>LoaderLock
對於所有遇到的不明loader lock錯誤都可以從這邊關掉。不只在VS裡面,compile出來的執行檔也不會回報這類錯誤。

2016年12月21日 星期三

[C#] class/function 前面的方括號

在看ApplicationSetting所產生的code的時候發現一段code

[global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("")]
        public string filePath {
            get {
                return ((string)(this["filePath"]));
            }
            set {
                this["filePath"] = value;
            }
        }
public string filePath{}前面的[]們,原來是Attribute。寫專案還沒時間看,先筆記一下

vs debug 時期路徑

因為debug的時候exe會因為x86/x64....的原因build到不同的位子去
如果有使用相對路徑去讀取檔案就可能會需要很多份
要找Resource們也會很困難
一個簡單的方法是去設定debug的路徑

2016年12月16日 星期五

c# constructor 呼叫順序

在繼承關係中,constructor的呼叫順序是
1. 所有參數預設值會先被設定
class MyClass
{
int para1 = 1;...
}
因此在constructor被呼叫時,para1已經是1了
2. 最base的constructor被呼叫
3. 一層層往上呼叫
4. 最derived的最後被呼叫
5. 最後執行Object and collection initializer
(new myClass{para1 = 2; para2 = 3;...})初始會陣列就是用這個操作方式

2016年12月13日 星期二

用setup.py安裝python模組

如果下載一個python模組,內有setup.py檔案
安裝方式:
在系統管理員權限的cmd底下
cd 到 setup.py所在路徑
python setup.py install

2016年12月8日 星期四

open source等化器 音量放大器

最近開始聽coursera上的Machine Learning課程
但是影片的聲音實在是有點小聲,聲音都開到100%了還是聽不清楚
本來找了一些等化器,但是功能有點陽春介面看起來不夠厲害

2016年12月7日 星期三

[筆記]rope management

跟K在NamPhapayai爬了一條多繩距的Madagascar,五個繩距,難度不難(最多5+)大多數是橫渡(Traverse)。但因為多繩距操作不熟悉搞了很久,而且還時常打結。

2016年12月6日 星期二

Minivan to NamPhaPaYai camp

Minivan to the NamPhaPaYai camp have been moved to Mo Chit Bus Station since this month. THERE IS NO MINIVAN GOING FROM VICTORY MONUMENT  TO KAENG KHOI (CAMP'S TOWN) ANY MORE!!!

The nest way to go Kaeng Khoi by public transport is going by minivan, departing from Mo Chit bus station every hour. But when you arrive Kaeng Khoi, you may still need to take a taxi to the camp, which cost you 400 THB for a ride (no matter how many people) .

NamPhaPaYai minibus 前篇

要從victory Monument搭minibus到Kaeng Koi
但Victory Monument好稱有170條minibus路線,真是不知道該從何找起阿@@
有找到網站有列出各區可以去的地方,但上面沒有Kaeng Khoi..
看到有個app ThaiVans 可以去載apk裝在手機上

2016年11月29日 星期二

MIL鍵盤事件無法使用

MIL如果用displaySelectWindow將顯示放到panel中,內建的鍵盤事件就會無法使用
主要是因為鍵盤事件沒有被導向到Form中
解決的方法是將SelectWindow導向到Form中,再將Form嵌入Panel上,最後,把母Form中的鍵盤事件導向到DisplayForm中

[WinForm]取消focus狀態

這篇要做的事情跟前一篇的取消textbox輸入狀態不同
textbox只要將form的active control改成null或其他control就可以取消輸入狀態
但如果今天是想取消鍵盤事件對子Control的校果(例如只在特定狀態下讓快捷鍵能對子control作用)就沒這麼簡單
主要的問題是出在取消active control只是讓使用者不會繼續輸入,但是鍵盤事件一樣會被control接收到

2016年11月28日 星期一

鎖定combobox

combo box 如果不想讓使用者任意輸入值(其實一般狀況下combo box的操作方式都是這樣),可以把combobox的DropDownStyle改成DropDownList

clr20r3 錯誤

最近寫一隻avt vimba取像程式,在我自己電腦run沒問題,但在traget上一直出現clr20r3的錯誤訊息
但在有安裝VS的電腦上又沒事orz
google上大部分的人都說這是.net framework沒有安裝正確版本的問題,少部分有更奇門遁甲的招式。但其實,.net framewor的版本問題會有其他錯誤訊息產生。
後來經過一番奮戰發現,這就是在form load之前的error,一旦form建立了,error的形式就會改變。所以這個clr20r3就是一般的bug,只是在form尚未建立時發生,請遵循一般debug步驟排除之。

也就是說如果你下載了一個程式,他在妳電腦上出現這樣的error,這隻程式有問題,如果你沒有code不用想修復他。
如果你是coder,你的程式有問題,請想辦法Debug

2016年11月25日 星期五

[VS]取消textbox的輸入狀態

在form中加入了快捷鍵的功能後在textBox中輸入文字竟然也會觸發快鍵
難怪快捷鍵都設定成ctrl+blablabla
但是我就是為了方便程式運作不用用滑鼠按按鈕,所以快捷鍵只想按鍵盤上的一個鍵,因此在textbox輸入時要阻止form的快捷鍵運作。

[VS]設定透明Label

將Label背景設定為透明
label.Parent = pictureBox_lowerLayerObject;
label.BackColor = Color.Transparent;

2016年11月21日 星期一

openCv顯示影像

opencv 顯示影像可以用
cvShowImage(windowName, image);
但是在使用完這行之後一定要用
cvWaitKey(delay);
才會顯示
另外,這裡的delay應該是timeOut的意思
cvWaitKey會傳回使用者按下哪個鍵的char
可以用if(cvWaitKey(1) == 'q'){exit();}來退出
--

2016年11月13日 星期日

C++ c# raw string literal 原始字串

在C++字串中為了可以表示換行,tab等特殊操作,因此有跳脫字元\
好死不死資料夾路徑也用很多'\'
以前都會使用兩個("\\")表示\,但這樣的問題是在複製路徑後需要經過加工有點麻煩
ex: c:\testFile.txt 需要以 "c:\\testFile.txt"表示,麻煩
C++ 11裡面提供Raw String
表示
R"\a\b\c"
相當於
"\\a\\b\\c"
蠻方便的

在c#中則可以用 @"\a\b\c"
相當於"\\a\\b\\c"

MIL win7 touch縮放與滑鼠滾輪

mil的display在window中已經做好對滑鼠滾輪縮放的支援
但在win7中卻一直無法使用
昨天新同事mike發現在筆電上,win7是可以做縮放的,但需要用touch pad的zoom(兩隻手指往內或往外)
但在win10中卻又可以用滾輪跟touchpad

2016年11月4日 星期五

更換驅動程式 switch device driver

同時使用Vimba與Matrox,同一台相機在兩個狀況需要不同的驅動程式。
1. 打開Device Manager
2. 在目標裝置上(right click on target device)右鍵>Properties
3. 在Driver的tab中>Update Driver>Browse my computer for driver software
4. 選擇 Let me pick from a list on my computer 這裡就可以改變使用的driver

2016年11月2日 星期三

Interface, abstract class

今天試著寫grabber跟processor
本來是寫用Mil作grabber, vidi作processor
後來想想說把他抽象化,趁機研究了一下abstract, Interface跟呼叫base的contructor

2016年11月1日 星期二

Mil app 關閉錯誤

在free mil app的時候會出現mil app ID 錯誤的錯誤訊息
經過debug之後發現,原因出在inquire的時候餵入接收參數型態為ref int
將型態改為ref MIL_INT之後app就可以正常被釋放

奇怪的是,其他如buffer之類的暫存器釋放不完全會在free mil system時出現system內尚有buffer未釋放

2016年10月26日 星期三

在Inspector中轉換到model座標

在MIL中可以使用McalFixture將座標系統依照model Finder或patern Match...的結果作旋轉平移。
用Inspector可以很簡單的設定measurement marker的參數,位置並看效果。但inspector預設的坐標系是左上角為原點的坐標系,與model的坐標系不同。

[Inspector] MIL model Finder by Edge

上週有人問Inspector是否可以以比較省空間的方式去存model
測試了將影像轉乘binary與用dxf檔案兩種方式,發現在我測試的圖形下,使用binary會比使用dxf產生的檔案更小。可能是因為dxf有比較大的檔頭,在尺寸不大的狀況下佔不了便宜。

MsysFree error, system still has buffer associated with it

MsysFree的時候會跳出錯誤訊息說system中的buffer沒有清除乾淨
但是找過所有的MIL_ID都已經做過Free了


2016年10月21日 星期五

Win10永遠用administrator執行

像是Visual Studio之類的程式實在是沒有理由用User執行(真的用User執行了他會提示你用Admin執行)
可以從註冊檔裡面改變每個程式預設的執行權限

用VLC旋轉影片並儲存

基本上手機中的G-sensor都會自動幫你把影片轉正
會有影片旋轉的原因有兩個
1. 用手機,but一開始直立,按下去才轉成橫的
2. 用弱弱的相機錄影

2016年10月19日 星期三

Window快速鍵筆記

開啟檔案總管 win+e
開新視窗 ctrl+n (ex:當focus 在檔案總管,開一個新的檔案總管,並且位置相同)
將指標移動到檔案總管位置列 alt+d

2016年10月18日 星期二

利用ApplicationSetting儲存與同步UI元件的狀態

一開始想做到的功能很簡單,當checkBox被勾選,一組功能就會被開啟
可以用code簡單的做到
但是記得公司裡的Y神有一招很fancy的招式可以做到


c#中使用指標

C#中要使用指標
1. project的build要開啟allow unsafe code (用/unsafe編譯)
2. 指標只能出現在 unsafe{} 區段

這次因為是從其他地方來的byte[],而且陣列很巨大,因此應該要避免資料的複製。


2016年9月29日 星期四

928,爆滿的紅石

928教師節勞工大放假XD(不過後來颱風來大家都放)
下午想說去紅石運動運動
but...紅石竟然創紀錄快90人(下午三點)
水都被喝完(颱風天沒有送水服務)
因為今天台北的攀岩場
運動中心放颱風假
stone屋頂破
信義再定線
內湖機房失火
可能剩市民跟汐止吧
最後實在是太悶了,沒爬看看書就走了

20160925龍洞後門

今天tr(都有take)了雷鬼跟高檔快扣

高檔快扣: 中間部分有難關,左腳腳點不明。倒數第二個over那邊也有一個,需要layback

雷鬼: 起攀難關,看beta是右手抓橫裂隙,雙腳原地立定跳起,左手直接抓大點。完攀難關,左右手手點不錯,但又腳腳點不明,踩到之後需要站高出手。這條線一開始用掛繩器掛了兩個快扣之後不敢lead完,幸好有高手Matt支援才能完tr。
本來想用上下兩個bolt撤退,但是一個bolt中有快扣又有自我確保,實在難以再穿過繩子做雙繩垂降,也很難只讓下面的bolt受力已解除上面bolt的裝備。

2016年9月23日 星期五

Anaconda及tensorflow安裝

以下是在Ubuntu底下操作

安裝Anaconda
用Anaconda安裝Tensorflow可以避免把python 的interpreter搞壞
安裝步驟:
1.下載Anaconda
2.切換到Anaconda.sh所在目錄(cd Downloads)執行 bash Anaconda xxxx.sh
$cd Downloads
$bash Anaconda xxxx.sh

安裝完成之後需要把Anaconda的bin加入PATH中
$export PATH=~/anaconda3/bin:$PATH
可以用dir確認anacoda的安裝位置
這麼做之後每次開啟都需要再輸入$export PATH=~/anaconda3/bin:$PATH一次。可以在~/.bashrc中的文件尾端加上export PATH=~/anaconda3/bin:$PATH
$vi ~/.bashrc
vi操作: 按a進入編輯模式,esc離開編輯模式,:qw儲存並離開,:q!不儲存離開

成功加入之後可以新增conda的workspace
$ conda create -n tensorflow python=3.5
加入後可以啟動conda
$ source activate tensorflow

在tensorflow的workspace下安裝tensorflow
(tensorflow)$ conda install -c conda-forge tensorflow

2016年9月21日 星期三

在Virtual Box上安裝Ubuntu

因為要玩tensorflow,但她很不幸不支援windows,
本來想試試官網上推薦的Docker,但是失敗
只好來安裝ubuntu了

2016年9月20日 星期二

Thunderbird 雷鳥 發 中華電信 hinet 電子郵件 email

if you can't send an email by hinet /msa severver by Thunderbird, try this out.
公司信箱用hinet服務
大部分人使用outlook,但因為覺得有免費何必用盜版的心態用了雷鳥
但是經常遭遇到信寄不出去的問題

2016年9月9日 星期五

2016年8月22日 星期一

c++ pointer of address

當需要在method中allocate記憶體並給外部使用時就會需要用到pointer of address。因為address是在method中產生,因此需要傳入address的容器。

2016年8月19日 星期五

執行字串

python可以執行字串中的文字
有兩種方式,eval 和 exec
eval用來執行單行指令,並且會回傳該行指令回傳值。在eval中不能修改外部值
ie:eval("a = 1 ")是非法的
exec則可執行多行指令,且忽略回傳值
ex:
myStr = "print('hi')"
exec(myStr)
>>> hi~


在interactive shell / script中執行.py檔案

1. 設定檔案所賽位置為模組搜尋目錄
import sys
sys.path.append(r"filePath")
2. 執行
import myPyFile
如果myPyFile有更新可以用
import imp
imp.reload(myPyFile)
來更新(或想在執行一次)XD

2016年8月17日 星期三

2016年8月16日 星期二

2016年8月15日 星期一

C++找不到include檔案

在win10用vs2015打開原廠用2010產生的cpp專案,許多include的檔案都找不到,當然也跑出一拖拉庫的錯誤
從project的property中確定有用還境變數設定搜尋範圍
後來發現要將專案目錄下的.sdf檔刪除,intellisense才會重新去搜尋include的目標

2016年8月12日 星期五

tkinter python GUI dev.

tkinter是標準的python gui函式庫
操作步驟很簡單
- import tkinter 模組
- 建立GUI主視窗
- 在應用程式中加入widgets
- 在主事件迴圈(main event loop)中處裡使用者造成的事件


消失的PyCharm watches

disappearing PyCharm's Watches panel
I can't find it after I opened PyCharm
It's default merge with Variables panel, you can split it by click here...

2016年8月11日 星期四

jupyter

jupyter是一種程式語言跟文件整合的東西
安裝完成之後電腦可以run一個localhost by
jupyter notebook
按ctrl+c可以結束執行


basic python

if condition1:
elif condition2:
else:

def myFunction(x,y,z):
    return x+y+y

"""
多行註解
"""
#單行註解

\ 兩行合併
ex:
a = \
5
等同於 a = 5

a = "a\
bc"
等同於
a = "abc"

formated string

"key:%s value: %s" % ("ball",100)
"name:%s, grade: %.1f" %("taco",60.66) #get 'name:taco, grade: 60.7'

s = "hi {name}~"
s.format(name = "taco") #get 'hi taco~'

s = "hi {}"
s.format(taco) # get 'hi taco'

s = "hi {0}"
s.format(taco) # get 'hi taco'

s = "hi {n1} and {n2}~"
s.format(n2 = "taco", n1 = "tom") #get 'hi tom and taco~'

raw string
a = r"\n" #is equal to '\\n'

multi-line string
a = '''hi
hi
hi
'''
gets
hi
hi
hi
a = a'''hi\n
hi\n
hi\n
'''
gets
hi\n
hi\n
hi\n


在cmd中使用python及pip

需要在環境變數(environment variables)>Path中加入python路徑
C:\Users\<username>\AppData\Local\Programs\Python\Python35
用pip3則需加入
C:\Users\<username>\AppData\Local\Programs\Python\Python35\Scripts

2016年8月10日 星期三

Geany執行python程式

安裝完看起來不錯用的Geany IDE卻不能Execute
原來是因為沒有把python加入系統路徑
而Geany的預設execute行為就是去跑python %f%
這可以在Build>Set build commands中的Execute可以去設定,簡單的方式是直接把這裡的路徑改成python安裝路徑,比較麻煩的方法如下面所說


2016年8月9日 星期二

fopen mode

用c++讀取smart ray產生的.asc檔案
搞了很久,真的是不知道在離奇甚麼
有找出一些問題,但是一些問題無法分離

2016年8月8日 星期一

c++快速讀取(空白)分隔文字檔案

研究了一陣子終於可以快速讀取檔案(一開始讀取時間為7s,改善後為300ms)
概念是把全部的檔案都先load到記憶體中
並且先掃過檔案,知道elements數,產生靜態陣列
最後再用strtod將記憶體中的char*轉換成double
strtod可以回傳轉換終止的ptr
atod可以轉換,但沒有回傳ptr

c++快速讀取(空白)分隔文字檔案

研究了一陣子終於可以快速讀取檔案(一開始讀取時間為7s,改善後為300ms)
概念是把全部的檔案都先load到記憶體中
並且先掃過檔案,知道elements數,產生靜態陣列
最後再用strtod將記憶體中的char*轉換成double
strtod可以回傳轉換終止的ptr
atod可以轉換,但沒有回傳ptr

一點點git

今天又去抓git下來用,因為想要修改專案又怕之後會想改回去orz
用的是git-scm 2.9.2
特別筆記一下
因為想用的功能很簡單所以使用bash操作
抓完安裝之後再目標目錄下右鍵 Git Bash here
如此就會開啟git的bash
首先要將資料夾弄成被git 管理的狀態,資料夾底下會新增一個.git資料夾
$git init
然後可以用
$git status
查詢目前資料夾的git狀態
接著可以把全部資料夾底下的檔案加入git追蹤
$git add .
接著可以去除一些compile產生的執行檔
$git rm -r --cached x64
x64是目標目錄,如此x64/Debug/跟x64/Release/裡面的東西都會被移除git控制
但這樣用status查詢會警告剛剛那些資料夾沒有被加入
所以需要在資料夾底下加入一個.gitignore的檔案
$touch .gitignore
(用檔案管理員無法新增沒有檔案名稱得檔案)
$vim .gitignore
編輯
x64
完成後按esc接著:wq結束並儲存
這樣就不會產生警告說這些檔案沒加入了

git的cmd還不錯,可以按tab auto-complete
例如你要輸入
$git branch myBranch
只要輸入
$git br<tab> my<tab>
就ok了!

<日常操作>
加入完成後如果需要將目前的資料儲存為一個版本
$git commit -a -m 'message here'
要切換到新的branch
$git checkout -b myBranch
往後如果只是要切換而沒有要新增
$git checkout myBranch
要看目前有的branch
$git branch
要刪除某個branch(不檢查有無merge過了)
$git branch -D myBranch
會檢查有無merge完
$git branch -d myBranch


$git remote add usbBackup '/g/git/myProject'
但是要先把g:/git/myProject設成git資料夾,方法也很簡單,就第一次直接把全部myProject內的東西copy到g:/git/底下
之後本地端有更新都可以用
$ git push usbBackup --all
把備份端同步
可以用
$git remote
查看有多少remote的東西

$gitk --all
圖形化查詢分支狀態




2016年8月5日 星期五

Debug c++/cli

因為要在c++中加入/cli搞得天翻地覆...
一直收到error message
"The Following Module was built either with optimizations enabled or without debug information"
所以決定不再修改上一篇文章,開一篇新的
在文章裡面先看到兩種解法

Kept receiving message "The Following Module was built either with optimizations enabled or without debug information" when I try to open a project /cli option to use classes from c# in c++. Here is the solution.

2016年8月4日 星期四

在c++/cli專案中使用c# dll

因為廠商提供的專案是c++,但是轉檔的utility是c#所以研究了一下
google會看到很多用COM物件或是其他看起來有點麻煩的方法
研究後發現是很困難,but還是有些不踏實的地方
後來覺得小東西也是可以整個重寫就好啦XD

2016年8月3日 星期三

[小技巧]忽略字串中的跳脫字串

一般C#中以\作為跳脫字串的起始,所以若要輸入路徑,則要輸入
"C:\\a\\b\\c"
可以用@""忽略跳脫字串
例如:
@"C:\a\b\c"
這樣直接copy path再貼到程式中

2016年8月1日 星期一

迷幻的氣泡

禮拜六,一個大熱天去龍洞
最近可能因為一個網路影片造成龍洞爆紅,前門完全沒車位還停到濱海公路上
潛水的,跳水的,攀岩的,滿滿都是人

鍵盤顯示工具&螢幕錄影程式

前陣子幫聿處理前輩來教學手速太快,快鍵太多,目不暇給的問題
上網找到兩個工具,一個是keycastow,可以把按的鍵顯示在螢幕上的輕巧程式
另一個是錄螢幕用的CamStudio

2016年7月27日 星期三

自動產生Deligate

今天在測試加入/刪除call back func的時候用到 HookHandlerDelegate = new MIL_GRA_HOOK_FUNCTION_PTR(drawRenewHook); MgraHookFunction(graphicListId, MIL.M_GRAPHIC_LIST_MODIFIED, HookHandlerDelegate , M_NULL); vs MIL.MgraHookFunction(graphicListId, MIL.M_GRAPHIC_LIST_MODIFIED, drawRenewHook, M_NULL); 兩個都可以用,but下面那種方式會有無法取消hook的問題

2016年7月22日 星期五

將object的properties/fields取出

今天想寫一個自動把所有object(已實體化 instanced)中的member抽取出來的功能。抽取的目的是要將object的members全部放入一個List中,其他東西呼叫的時候可以直接呼叫List就好。但在coding的時候又可以有class memeber的防呆特性。

is in c#

c#中可以用is來判斷物件的真實型態
並且不論是其本身的class或繼承的基底,甚至是有實現的界面都會回傳true

用powershell重新命名

有時候相機拍的照片都會有DSCxxxx001之類的前置字,可以利用window內建的powershell把它換成有意義的字串
使用方式如下:

C#利用Type建立物件

BaseClass bd = new DClass();
BaseClass newB = (BaseClass)System.Activator.CreateInstance(bd.GetType());
這時候bd.GetType()會得到DClass

2016年7月21日 星期四

用enum value作為array index in C#

為了免code看不懂,可以用enum去指定array的index
ex:
cars[0] = .....
-> cars[(int)carNames.MrsOliver] = ....
 好處是在遙遠的另一邊不用去猜0號車到底是MrsOliver還是MrsMarry

範例:

Schedule[] schedules = new int[Enum.GetNames(typeof(WeekDay)).Length];

enum WeekDay
{
    sun = 0;
    mon = 1;
    tue = 2;
 ...
}

schedules[(int)weekDay.sun] = ....

當然也可以建立個key是enum type的 dictionary
Dictionary<WeekDay, Schedule> schedules = new Dictionary<WeekDay, Schedule>();

就可以直接存取
schedules[weekDay.sun] = ....

2016年7月20日 星期三

override, new, virtual in C# x 指鹿為馬怎麼辦

當衍生/繼承Class有與基礎Class有相同簽名(signature)的成員,就會牽涉到override/new來決定指鹿為馬的時候的行為

範例 程式(C#6.0), 專案執行檔

news in C#6.0 CS 6.0新增功能

What's new in C# 6.0
觀看筆記
沒啥大改,有一些可以讓程式碼乾淨點的小東西
auto properties, static members, String interpolation, Expression bodied methods, Index initializer, Null-conditional operators, The nameof operator, Exception filters

2016年7月19日 星期二

潛水手勢

ok嗎?
ok
不ok
上升
下降
good
空氣完全用完
剩多少空氣?
剩50/70 bar
剩100 bar
1,2,3,4,5,6,7,8,9,9

重裝課(一)

重裝包含了BCD(buoyancy control device)/BC(buoyancy compensator),調節器 regulator,氣瓶Tank。裝拆重裝跟簡單的重裝操作

輕裝課筆記

帶面鏡

頭往前傾,面朝下,將頭髮撥開。先將面鏡放到臉上再拉上頭帶。完成後以食指檢查頭髮有無夾入面鏡

呼吸管爆吐式排水

以嘴唇用力包覆呼吸管,不是用牙齒咬
使用呼吸管需先執行爆吐式排水

面鏡排水

壓面鏡上緣,頭往後仰,以鼻吐氣

踢蛙鞋

台灣多岩岸,常用無後跟式蛙鞋配沙灘鞋,較少使用套腳式蛙鞋
膝蓋不用力,用大腿身體的力量

立泳

慢慢踢即可浮起

2016年7月13日 星期三

pointer in c#

在manage code中使用pointer的方法
這裡會用到
System.Runtime.InteropServices.GCHandle類別,提供從unmanaged memory中存取manage object的方式

使用命名空間
using System.Runtime.InteropServices;

手腕不適

最近攀岩怪怪的
之前找了一些資料說要訓練詰抗肌群
又找了一些討論筆記一下
Snap, Crackle, Wrist
Wrist pain

sofware list

GIMP: image processing
VLC player: movie
thunderbird: mail
autohotkey: daily automation
greenShot: print screen
Libre office: office
notepad++ : doc view

2016年7月12日 星期二

graphic list index & label

在mil的grapic list中每個graphic都有他的label跟index
兩個都是系統指定無法手動更改的
(見MgraInquireList中的M_LABEL_VALUE與M_INDEX_VALUE)
but
index會因為graphic的刪除改變但是label卻是不變的

2016年7月11日 星期一

2016年7月10日 星期日

摺疊獨木舟


今天在朋友臉書上看到有人玩一種很酷的摺紙獨木舟,影片是玩獨木舟的人划到外面然後船進水,他又沒穿救生衣差點GG。
不過看了這個影片也驗證了原廠說船不會沉這件事"Oru Kayaks are naturally buoyant and won’t sink even when submerged"。但如果深入險境,船不沉整個漂走或被大浪打應該也是沒救@@

2016年7月7日 星期四

台美版First WPF Desktop Application差異

最近開始研究wpf,先來個wpf的hello world
Walkthrough: My First WPF Desktop Application
一開始看msdn,應該是因為地區的關係,它會自動引導到台灣網頁
但是因為他的範例一直不能run完,又找不到可以下載的位置
誤打誤撞發現了美版msdn
本來以為美版msdn跟台版msdn只是外觀上的不同..
沒想到台版的msdn裡面竟然埋了bug...難怪不能run

至於為什麼會這樣呢....實在令人費解

btw...這個first application實在有夠難懂

Connecting to Data中2.的地方



美版msdn code(直接貼上)
<Grid.Resources>
<!-- Expense Report Data -->
<XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses">
    <x:XData>
        <Expenses xmlns="">
            <Person Name="Mike" Department="Legal">
                <Expense ExpenseType="Lunch" ExpenseAmount="50" />
                <Expense ExpenseType="Transportation" ExpenseAmount="50" />
            </Person>
            <Person Name="Lisa" Department="Marketing">
                <Expense ExpenseType="Document printing"
      ExpenseAmount="50"/>
                <Expense ExpenseType="Gift" ExpenseAmount="125" />
            </Person>
            <Person Name="John" Department="Engineering">
                <Expense ExpenseType="Magazine subscription" 
     ExpenseAmount="50"/>
                <Expense ExpenseType="New machine" ExpenseAmount="600" />
                <Expense ExpenseType="Software" ExpenseAmount="500" />
            </Person>
            <Person Name="Mary" Department="Finance">
                <Expense ExpenseType="Dinner" ExpenseAmount="100" />
            </Person>
        </Expenses>
    </x:XData>
</XmlDataProvider>
</Grid.Resources>
台灣英文版的msdn code(本來都沒換行...用notepad++整理了一下)
<Grid.Resources>
<!-- Expense Report Data -->
<XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses">
<x:XData>
<Expenses>
<Person Name="Mike" Department="Legal">
<Expense ExpenseType="Lunch" ExpenseAmount="50" />
<Expense ExpenseType="Transportation" ExpenseAmount="50" />
</Person>
<Person Name="Lisa" Department="Marketing">
<Expense ExpenseType="Document printing" ExpenseAmount="50"/>
<Expense ExpenseType="Gift" ExpenseAmount="125" />
</Person>
<Person Name="John" Department="Engineering">
<Expense ExpenseType="Magazine subscription" ExpenseAmount="50"/>
<Expense ExpenseType="New machine" ExpenseAmount="600" />
<Expense ExpenseType="Software" ExpenseAmount="500" />
</Person>
<Person Name="Mary" Department="Finance">
<Expense ExpenseType="Dinner" ExpenseAmount="100" />
</Person>
</Expenses>
</x:XData>
</XmlDataProvider>
</Grid.Resources>

2016年7月6日 星期三

wpf參數錯誤

剛開始玩wpf,照著msdn上的範例(這個台版範例超難看的...,請看美版範例)
因為我其中一個背景圖片的檔案名稱跟範例不同所以發現他一個奇怪的地方

2016年7月5日 星期二

ahk練習:task bar數字顯示

會有這個程式是為了配合好用的win快捷鍵win+{數字}
這個快捷鍵可以開啟數字所對應到的taskbar item

以上圖來說,win+1開啟chrome, win+2開啟evernote
但是如果使用習慣不好一次開了好幾個程式可能就不大好找了
ps. 同場加映熱鍵win+T可以輪流切換taskbar上的程式
win+shift+T可以逆向切換

2016年7月4日 星期一

滑鼠輔助器 mouseAux

不知道是不是因為我的滑鼠太爛,覺得滑鼠按鍵不是很好按
所以用ahk寫了一個程式可以用鍵盤的右Alt,Ctrl,Shift取代滑鼠的左鍵,左鍵兩下,右鍵
另外還順便測試了尋找滑鼠功能(把滑鼠移動到螢幕中心),對於螢幕很大或很多的人可能不錯用

windows.h in VC2005

VC2005要compile需要另外安裝平台開發套件才有windows.h可以用。如果在編譯VC2005專案時出現找不到windows.h可以參考本篇的解決方式。

2016年6月29日 星期三

Chrome熱鍵

最近覺得鍵盤才是電腦的好朋友,滑鼠滑久了手都不大舒適。研究了一下Chrome的快捷鍵

2016年6月28日 星期二

Visual Studio省時間小撇步

看了這片6 Visual Studio Tips to Increase Your Productivity來摘要一下一些可以提升使用VS生產效率的方式

*productivity power tool
將無用行縮減25%
存檔時自動格式化(等同於使用ctrl+k, ctrl+d)

2016年5月23日 星期一

vs2015 C#小秘笈

1.不用重複輸入常用的class name
在VB可以在段落中使用with myclass, 但C#無法
因此可能會一直出現

2016年5月13日 星期五

將網頁加入Start,以chrome開啟

win10的start有點像桌面,但是可以隨時叫出來不用把視窗全部縮小(其實用win+D來放大縮小所有視窗也是蠻簡單的)還蠻好用的。但是他原生的磚s還蠻沒用的,把它移除之後加入自己喜歡的磚就可以體驗它的好處了

2016年5月12日 星期四

[win]複製路徑

有時候會需要複製檔案的絕對路徑,這時候可以用shift+右鍵點檔案,選擇

"copy as path"就可以直接複製完整路徑

pip安裝whl問題

如果有安裝比較新版的python,可以在cmd中輸入
python -m pip install -U pip
以更新pip

因為要安裝python的模組,在http://www.lfd.uci.edu/~gohlke/pythonlibs/下載了.whl檔案
安裝完pip後

在cmd中輸入指令

C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\Scripts>pip.exe install <.whl path>出現下列錯誤訊息

"Fatal error in launcher: Unable to create process using '"""

試了半天之後才發現不能用winPython,而是要用Python路徑下的pip。用下面指令就可以順利安裝了(感動~


C:\Users\simon\AppData\Local\Programs\Python\Python35\Scripts>pip install D:\py\matplotlib-1.5.1-cp35-none-win_amd64.whl

2016年4月30日 星期六

龍洞筆記--就是5.13,赤頭

今天跟東哥只有兩個人,實力差不多(缺繩槍)
看地圖想說後門有些5.9 .10的去玩玩
沒想到老人牆那邊整個灘掉不能爬,想去浪之外又找不到路QQ
正想說要從黃金谷繞過去正好在路上遇到高手佩兩人,又被撿回來爬後門

2016年4月14日 星期四

法蘭距(Flange focal distance,FFD)

昨天鏡頭廠商來訪,提到工業用的相機因為不用finder(觀景窗)所以FFD可以弄得很小,相對應的鏡頭的體積跟成本也可以降低不少

一片玻璃的差異

剛好在研究鏡頭的轉接的時候看到Roger Cicala的一篇文章The Glass in the Path: Sensor Stacks and Adapted Lenses

大概是在說感光元件前面的那塊玻璃厚度對成像品質的影響,結論是影響還蠻大的。(其實本來是想在3/4的原件上加上轉接環使用全幅的鏡頭)

尷尬的是不同的感光元件(不是很確定相同大小不同廠牌的元件前面玻璃厚度,應該是不一樣)前面的玻璃未必一樣厚(差異可能還不小咧)。
他們為了這件事情還把一台相機感光元件前面的玻璃拆掉XD(話說我研究所的時候也做過這件事情,只不過拆的是webcam鏡頭後面的小玻璃)

所以不同廠牌的鏡頭雖然可以用轉接環互相接來接去,不過這還是玩玩就好,成像品質不保證會好喔!

2016年4月12日 星期二

登山急救包

這次去大霸北稜不小心在旁邊有稀疏植披的瘦稜上滑了一跤,摔了大概兩米卡住,被美聿拉起來。左腳膝蓋到小腿擦傷,膝蓋傷口稍深。

2016年4月8日 星期五

include找不到父路徑的檔案

很神奇的事情,include的路徑順序在引號的狀況下應該是

前置處理器會依此順序搜尋 Include 檔:
  1. 在包含 #include 陳述式之檔案所在的相同目錄中。
  2. 在目前開啟 Include 檔的目錄中,依開啟的相反順序搜尋檔案。搜尋會從 Include 檔的父目錄開始,並向上繼續搜尋所有上層 Include 檔的目錄。
  3. 依循每個 /I 編譯器選項所指定的路徑。
  4. 依循 INCLUDE 環境變數所指定的路徑。

2016年4月7日 星期四

visual studio 專案版本

不知道從哪邊去把用vs2015開啟舊版本專案的提示設定改掉了,記得以前開啟舊版本專案vs都會詢問是否要升級專案,這次沒有升級直接開啟,程式碼滿江紅@@~完全無法編譯。
這時候要在solution右鍵>property在general中的Platform toolset改成一個有安裝的版本(ex vs2015)就可以正常編譯,也不會滿江紅了

win8/10非分頁記憶體洩漏

今天在處裡客戶問題的時候,其中一個是無法指派非分頁記憶體
上網搜尋一下意外找到其他可能把記憶體吃光光(用Task manager 看記憶體使用率99趴)的原因,是一個叫NDU(Windows Network Data Usage Monitoring Driver)的東西在作怪。

2016年4月1日 星期五

抓痞子的內容

在痞子上看到大壩北稜的紀錄,無奈因為痞子鎖右鍵,連反白都不給,只好洗洗睡了

2016年3月30日 星期三

Object Initializer 物件初始器

有時候需要初始化物件並且設定很多屬性
印象中有這種東西,後來才發現是跟VB的With搞混
後來從討論串中發現C#沒有With這種方便的東西
C#沒有這種東西,但是在初始化物件的時候可以用Object Initializer

myObject = new myClass()
{
    par1 = val1,
    par2 = val2,
....
};
一次設定很多屬性,或是object名子很長可以用define或是下面的方法縮寫

var z = Alpha.Beta.Gama.Eta.Zeta;

a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;

在panel中開啟form/user control

公司的軟體只能顯示到form裡面會正常運作
之前前輩傳入panel的 handler 可以顯示,但是滑鼠鍵盤事件會失效

2016年3月25日 星期五

SSD筆記

SLC,MLC,TLC: single/multi/triple bit per cell ; single-level-cell (越多製造成本越低)
TLC用到3D NAND技術
把更多資料塞到一個cell中會使電壓間距變小,因此需要更小心的控制與除錯,。因此造成讀寫更慢,更耗電,使用壽命更短
TLC因為讀寫速度的先天限制,可能會有buffer暫時讓user讀寫,當buffer滿了,速度會明顯下降(例如編輯影片等大檔案操作)
(結果還是不知道要買哪個M牌 BX200 Mx200 F牌F300)

2016年3月24日 星期四

EDN(Euro-Death Knot)意外

在臉書上看到一個學長貼的,筆記一下
參考網頁

摘要:
EDK
-雙繩同向,在繩尾打單結。為安全起見,會在單結後面再加一個單結,以免結向繩尾滾動。且預留足夠繩長)