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