DDS

最近因緣際會 知道了這個通訊協定,非常的有趣。 主要的特色應該區域內裝置對裝置的大量聯絡。

這篇講的很清楚:

http://thinkingiot.blogspot.tw/2016/08/understanding-protocols-behind-internet.html

最近應該會開始寫一些這個東西來試試看,畢竟現在是物聯網的世界  !!

 

 

creative framework 開發進度(回到原點之一)

有種回到原點的感覺…。 因為啊,底層用的go-ui 不更新了。 作者的新作github上也都沒有commit 。等了一段時間後覺得不行了,還是得自己動手。但沒想到這麼複雜…。

第一步呢就是模仿go-ui 來建立一個qt的 dynamic lib ,光這邊就弄一段時間了…。首先要改出可以產出  .dylib的.pro檔案,找了老半天 後來才發現是修改TARGET 即可。不過還是有點怪怪的問題,暫時先不想理他,所以現在是用….go-ui 的 .pro檔案來產生 dylib 檔案….。(感謝open source 啊!!)  之後再來看看怎麼修正這個問題。

第一關就是寫在註解裡面的C程式  Go找不到,後來才發現 寫完之後要緊接著 import “C" …也就是說

/*

void hello();

*/

import “fmt"

import “C"

這樣是錯的,一定要

/*

void hello();

*/
import “C"

甚至多一行空白也不行勒。

第二關就是呼叫編譯好的lib了,一開始一直出錯,一直跟我說找不到這個函式。後來想起來之前看過的 程式設計師的自我修養:連結、載入、程式 一書中有提到可以dump出dll裡面的symbol,於是搜尋一下 發現在mac上可以用 nm  -gU  libname  來看。 我比照一下列表跟程式碼。才發現原來是需要…. extern “C" 來把他匯出成全域的函式…(看來C/C++ 還有一段長路要走勒)。 到這邊終於可以呼叫函式了,感覺很棒!!。

 

但是下一關開始呼叫 qt的 qappliction.exec()的時候 就又出錯了……。 等解決後再來寫下一篇了!

go-framworks

Screen Shot 2013-04-26 at 3.07.24 PM今年雖然沒有寫展望,不過一直有一個目標在我的心中,就是自己寫一套自己的 creative coding framework 。之前一直卡在 跟qt去對接。目前最近有高手寫了一個很完整的版本 – qt-ui ,初步都可以使用。所以我就得以繼續下去了!!  上面就是仿造processing 教學的第一個作品(http://processing.org/learning/gettingstarted/ )。 程式碼長這樣(go還沒非常熟!!):


package main
import (
 "../goframework"
)
func Draw(){
 goframework.Fill(0,255,255)
 if goframework.MousePressed() {
 goframework.Fill(0,0,0)
 }else{
 goframework.Fill(255,255,255)
 }
 goframework.Ellipse(goframework.MouseX(),goframework.MouseY(),80,80)

}
func main(){
 goframework.FrameRate(60)
 goframework.Draw(Draw)
 goframework.Win(400,400)
}

不過我還是修改了qt-ui的幾個部分。

  1.  設定背景繪圖的時候不會會清除。
  2. 設定滑鼠 move事件 在不按下左右鍵的時候也會觸發。

未來大概還要改不少吧@@  qt 這邊對我就比較難了 。 目前的計劃是先把2D的部分api給完成。再來是參數化設計 , 影像處理的api  , 內建使用go 寫的 簡易的電腦視覺的lib(像是找邊緣之類的。) ,  最後跟硬體 Arduino對接。  最後是3D的部份,要有3D的部分才有辦法做投影校正的lib阿!!

[processing] open-processing.org

openprocessing.org 是一個可供使用者上傳分享他們的processing 作品的網站。不過網站功能面上感覺很少更新,介面也會有跑掉的問題,速度也很慢。

不過網站的開發者 Sinan Ascioglu 今天發表了一篇文章: On the weeks ahead: The Road Plan 

裡面提到他已經離職(@@ 難怪!! 真是辛苦了 )之後會專心在openprocessing.org的改良。 文章裡面提到了幾點希望做到的改良:

  • new navigation
  • collections will be open to public (instead of  ’request via email’).
  • better user thumbnail integration (gravatar being optional).
  • some other improvements for performance and security.
  • migrating to a new server (faster, better)..
  • follow user functionality.

還有一點我覺得更重要的是開發者目前是用她自己的經費在支援這個計畫,他希望在不跟使用者收費的情況下找到足夠的經費來支撐這個網站~~~  。

期待!!  不過其實我希望可以跟processing做整合 可以透過processing直接搜尋觀看 跟管理,應該會很方便!!

[vim] powerline

前幾天看到這個 vim的plugin真的覺得好棒!!  。

他的安裝有點小麻煩,因為需要修改一下字型檔案(主要是塞了還是更換了一些符號進去)。如果沒有正確的置換字型,會像是下圖這樣:

不過如果你這步驟有問題也可以使用unicode的模式來模擬,也是堪用了。安裝上建議搭配 Pathogen/Vundle 來安裝。README上是說mac下有點問題,不過github的issue 上有人測試出來了,我也試過可以正常安裝。

網路上也有人把patch過的字型放出來了   https://gist.github.com/1595572  如果你不介意字型的話。

底下是patch font的步驟。

  1.  從字體庫中複製字型-假設叫做 A  放到   bundle/vim-powerline/powerline
  2. fontforge -script fontpatcher MyFontFile.ttf
  3. 把修改過的字型放回去,mac上要放到 /Users/xxxx/Library/Fonts  底下
  4. 更改iterm的字型到   A for PowerLine 即可

#

tagbar

在ptt的editor討論版看到網友推薦這個 taglist的替代品(?)  tagbar。一用之下驚為天人!!

以 java 程式來說,原本打開 taglist 是長這樣:


可以看到一個檔案裡面有兩個class的時候 method & attribute 會混在一起,不好辨認。

如果安裝 tagbar 之後會長這樣:

* 視窗從左至右依序是  tagbar,taglist,source

預設tagbar是開在右邊,如果你希望開在左邊要在 vimrc中加上  let g:tagbar_left=1

有一些我覺得蠻好用的功能:

s: 更換排序方式(依照出現順序或是字母順序,預設是字母順序)

x: tagbar 視窗最大化

space:  顯示定義

 

還等什麼呢,各位捧油!! 快換吧!!

 

build vim on mac lepord

想要裝  command-T 的plugin 但是vim 需要啟用 ruby 介面,隨機器來的不支援,網路上都叫大家用macvim。 ㄟㄟ 可是我沒有要gui阿….

弄了老半天 終於找到可用的 configure 參數

 

./configure –enable-gui=no –without-x –disable-gpm –disable-nls –with-tlib=ncurses –enable-multibyte –enable-rubyinterp

yii 的資料庫表格預設名稱

我不知道是不是踩到地雷還是怎麼的…

話說我有一個table 叫做  tbl_message_phone_group ,用 yiic shell 的model 建好之後,使用crud 會告訴我找不到此table。我實在是百思不得其解。後來比對了一下其他類似的model 發現應該是yii去產生model的時候解錯了(還沒找到那部份的程式碼,不是很確定)

暫時的解法就是去修改 models/MessagePhoneGroup.php 裡面的  tableName函式 將 {{MessagePhoneGroup}} 改成 {{message_phone_group}}

不過我還是不懂為啥  tbl_phone_group 這個table就不會產生錯誤呢?

update:

開了一個新的webapp 來測試,看起來是tablePrefix的問題…….

tmux

答應網友說要寫一篇教學,但是一直欠到現在@@ 。

關於tmux 的由來請參閱 linuxtoy tmux一文。tmux是一套 嗯… tty底下的多視窗程式(其實我也不知道該怎麼形容…)。基本上他融合了 screen + dvtm+ screen profiles(screen 的擴充,目前改名為 byobu)。

跟screen 來比較的話, screen 沒法切出那麼棒的layout ,在putty底下還有一些雜七雜八的問題(中文環境的話)。

安裝:

安裝的話很簡單,各大disto 都有 yum install tmux or apt-get install tmux 均可。

使用:

之前有前輩說,ruby寫起來很輕鬆,不用什麼ide就很好寫了。 tmux 也是這樣,不用什麼設定就很好用了。簡單地說一下我常用的組合鍵。

使用方式是  ctrl+b + 功能鍵 (ctrl+b 底下簡稱prefix)

我刻意不把crtl+b 改成 ctrl+a 這樣有時候有些主機上沒有tmux 只能用screen時才不會錯亂(手指記憶還是很穩固的)。

prefix +? 顯示說明

prefix + c 開新buffer

prefix +n/p 上一個/下一個 buffer

prefix  + "  在當前的buffer中開出新視窗

prefix + <up>/<down>  在視窗中切換

prefix + <space>  切換layout

prefix+d 離開

prefix + =  複製模式,可以回卷 (esc 兩次離開)

prefix+ s 選擇當前的session 切換過去

prefix +w 選擇 buffer切換

===

這樣就差不多夠日常使用了,其他的請看 prefix+? 吧。 很變態的一點功能是它可以允許兩個使用者(同個帳號)登入之後掛起同一個 session ,可以做遠端除錯用,相當好用阿

activerecord & php

最近在研究 yii,因為前一陣子用cakephp 有點感覺不順,尤其是 model 之間的關係對應。這幾天看了yii 才發現,應該是php/ruby 語言的差異。

看一下 rails裡面的定義這樣寫:


class Project < ActiveRecord::Base

belongs_to              :portfolio

has_one                 :project_manager

has_many                :milestones

has_and_belongs_to_many :categories

end

cakephp 裡面是這樣:


class User extends AppModel {

var $name = 'User';

var $hasOne = 'Profile';

var $hasMany = array(

'Recipe' => array(

'className'  => 'Recipe',

'conditions' => array('Recipe.approved' => '1'),

'order'      => 'Recipe.created DESC'

)

);

}

yii 裡面長這樣(定義在函式裡面):


public function relations()

{

return array(

'author'=>array(self::BELONGS_TO, 'User', 'authorId'),

'comments'=>array(self::HAS_MANY, 'Comment', 'postId',

'order'=>'comments.createTime'),

'tagFilter'=>array(self::MANY_MANY, 'Tag', 'PostTag(postId, tagId)',

'together'=>true,

'joinType'=>'INNER JOIN',

'condition'=>'tagFilter.name=:tag'),

);

}

我個人是覺的 rails 的最直覺 cakephp次之, yii 的則稍嫌麻煩了些。不過我覺的這php用hash實做起來不太順….。不知道其他框架有沒有別的實做方式就是了