星期日, 6月 23, 2013

【MAC】 GIT + DropBox + SourceTree 專案版本管理

網路有很多教學了,今天剛好加班,帶着筆電實做以一次。

當主機 和 筆電 有專案要同步的問題 一直困擾我很久,

當初在ARCH LINUX的時候 是使用HG + DROPBOX 來進行同步,

光是設定就超級麻煩的了。

如今 主機 和筆電 都裝成黑蘋果了,剛好之前的專案使用GIT,

一用就上癮了。

1. 下載GIT 找個適合自己MAC
http://code.google.com/p/git-osx-installer/

2.下載 SourceTree ,這真的是超級強大的工具
http://www.sourcetreeapp.com/

3.下載 Dropbox ,這個鬼東西 和 pathfinder 衝到的樣子CPU都給我跑100%以上。

4.在DROPBOX 建立一個放專案的目錄 並且 git --bare init 你的專案

5. #git add .   常見的GIT ADD your files

6.#git commit -m 'project init'  常見的GIT commit

7. 之後 開啟 SourceTree 使用 Clone Repository

8. 之後就出現超級好用的GIT管理畫面了,連ADD COMMIT PUSH 一堆有的沒得都是 按鈕。


9.若在PUSH 發生master -> master (branch is currently checked out) 什麼鬼的

修改增加 .git/config
[receive]   
denyCurrentBranch = ignore

星期六, 4月 13, 2013

【MAC】【Android】編譯 LUA 以及 LUAJAVA 並且導入 libgdx 專案

這一連串的動作在LINUX已經夠麻煩了,在MAC也是OOXX的,而且做完一次就不會想在弄第二次。

(一) 編譯 32BIT的 LUA ,也可以不需要做這個動作,純粹是做筆記。




1.編輯 src/Makefile

macos:          $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"  
修改為 
macos: $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX -arch i386" MYLIBS="-lreadline -arch i386" l 


2.之後就編譯 以及 安裝
make macossudo make install 
3.留意 IANSTALL 路徑

cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
cd src && install -p -m 0755 lua luac /usr/local/bin
cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include
cd src && install -p -m 0644 liblua.a /usr/local/lib
cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1


(二)編譯 luajava

參考:http://retrovirus.com/incr/2005/08/building-luajava/

1.下載編譯好的版本或者用你自己編譯的,小弟這裡下載:
http://luabinaries.sourceforge.net/download.html
的lua5_1_4_MacOS106_lib.tar.gz ,也可以連 bin 也抓,在本機可以用。

2.解壓縮 之後 找出 include 路徑 ,作為CONFIG檔的Lua 路徑

3.設定JAVA HOME include 路徑,這個鬼東西,害我一直沒編譯過,原來java home 路徑的根本不叫做INCLUDE 也不再 /Library/Java/Home 裡面,這個標頭檔資料夾在:/System/Library/Frameworks/JavaVM.framework/Headers 。
先進入 /Library/Java/Home 之後做捷徑:
 sudo ln -s /System/Library/Frameworks/JavaVM.framework/Headers include

4.下載 LUAJAVA :https://github.com/jasonsantos/luajava

5.解壓縮編輯 config 檔,紅色的地方就是已經增加或加註解或者修改的地方。

#############################################################
#Linux/BSD/Mac
LUA_DIR=
/Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib
LUA_LIBDIR= /Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib
LUA_INCLUDES= /Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib/include
#JDK= $(JAVA_HOME)
# For Mac OS, comment the above line and uncomment this one
JDK=/Library/Java/Home
# Full path to Lua static library
LIB_LUA=/Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib/liblua5.1.a


#Linux/BSD
#LIB_EXT= .so
#Mac OS
LIB_EXT= .jnilib
LIB_PREFIX= lib

#Linux/BSD
#LIB_OPTION= -shared
#Mac OS
#LIB_OPTION= -dynamiclib -all_load
LIB_OPTION= -dynamiclib -all_load
## On FreeBSD and Mac OS systems, the following line should be commented
DLLIB= -ldl
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
INCS= -I$(JDK)/include -I$(JDK)/include/linux -I$(LUA_INCLUDES)
CFLAGS= $(WARN) $(INCS)
CC= gcc

#########################################################
VERSION= 1.1
PKG= luajava-$(VERSION)
TAR_FILE= $(PKG).tar.gz
ZIP_FILE= $(PKG).zip
JAR_FILE= $(PKG).jar
SO_FILE= $(LIB_PREFIX)$(PKG)$(LIB_EXT)
DIST_DIR= $(PKG)
# $Id: config,v 1.12 2006/12/22 14:06:40 thiago Exp $
6.之後進行編譯
make
7.資料夾裡面有一個 附檔名jnilinb 的檔案: libluajava-1.1.jnilib


(三)使用ndk編譯 luajava
編譯方法就和 LINUX 一樣了

1.先抓NDK http://developer.android.com/tools/sdk/ndk/index.html

2.在抓高手調整好的androLua: https://github.com/mkottman/AndroLua

3.解壓縮後 裡面的 jni 直接 複製到 ndk 的目錄下

4. 之後 就 ./ndk-build

5.在LIBS/ARMEABI 中 就有 libluajava.so

(四)導入 libgdx 專案

這樣子 桌面版 和 手機版就都可以動了,就可以寫遊戲了,超棒。。


2013 10/11 更新

專案必須增加 native library location的路徑, 否則會抓不到 luajava

Eclipse Lua Tool
1. http://www.eclipse.org/koneki/ldt/#installation



星期四, 4月 11, 2013

「veryLittlePHP」 CREATE DB MODLE

「 My Framework API 」

糟糕,自己寫的鬼框架都記不住了  。 :(

關於自動判別 insert or update DB 函數

特色:
1.提供自動判別 INSERT AND UPDATE
2.DATALIST儲存值 KEY 自動過濾

1.繼承 cx_db
2.在 __construct() 設定 Drives ( mysql or mssql)
3. $this->autoSave( $TableName , $Pk , $DataList  );

$TableName  :  表名稱
$Pk : pk主鍵
$DataList :  儲存資料陣列
      + 結構: $DataList[  {欄位名稱}  ]  =  {儲存的值} ;


範例:
<?php
class mod_file extends cx_db{
    var $mTableName = 'sign_up_file';
    public function __construct( ) {
        $this->setDrives('mysql');
        parent::__construct( );
    }

    public function getFileDataByXno($_year , $_sid){
        $this->mConn->setCxTitle( "mod_file::getFileDataByXno 取得教師服務資料" );
        $_sql = "SELECT * FROM sign_up_file where year=? and sid=? ;";
        return $this->sqlExec( $_sql, array($_year, $_sid )  )->getArray(0);
    }

    public function saveFile($_arr){
        $this->mConn->setCxTitle( "mod_file::saveFile 寫入資料" );
        //檢查 是否有資料
        $_uFData = $this->getFileDataByXno($_arr['year'] , $_arr['sid']);

        if($_uFData == null or $_uFData == false or $_uFData == ''){
            // "insert";
        }else{
            // "update";
            $_arr['id'] = $_uFData['id'];
        }

        return $this->autoSave( 'sign_up_file', 'id', $_arr );
    }

}
?>

星期五, 4月 05, 2013

「Arch」ERROR: Unable to find root device

最近 更新完就掛掉了,
開機寫着 ERROR: Unable to find root device 有的沒得。

一 重新設定
參考: http://www.erufenix.net/blog/solucinar-unable-to-find-root-device-en-archlinux/

 1.準備新版的 ARCH LIVE CD

2.進入後掛載自己的硬碟

mount /dev/sda4 /mnt
mount /dev/sda5 /mnt/boot

mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount --bind /dev /mnt/dev

3.ROOT AS /MNT

chroot /mnt

4.更新 以及重新安裝 mkinitcpio

pacman -Syyu
pacman -S udev
pacman -S mkinitcpio

5.重新設定 mkinitcpio


mkinitcpio -p linux

6.重開機 OK


二 關於套件全部重新安裝

 腳本:
#! /bin/sh

for pkg in $(pacman -Q | cut -d' ' -f1); do
    pacman -S --noconfirm $pkg
done
 

星期日, 10月 07, 2012

「ARCH LINUX」 Ram Disk

前些日子,
聽了朋友述說RamDisk 的好處,
害我手癢也想弄弄看,而又剛好買了SSD,想說來個大重灌。
抓了2012 9月 最新的arch linux 發現,安裝方法似乎改變了。
以往的簡單選擇畫面消失了,取而代之的是終端機。

安裝變得更簡單了,比起以前的藍色可怕的畫面好多了。

裝好後發現,其實archlinux 預設就有開ramdisk 了,
所以就不需要去煩惱裝的問題了。


的文章後,小弟也把 復原和備份的功能加入。

小弟只備份 /tmp/cake_ramDisk 自己的資料夾而已。

在/etc/rc.local.shutdown 加入
#!/bin/bash
#
# /etc/rc.local.shutdown: Local shutdown script.
#
PATH=/lib/init:/bin:/sbin
## bank radisk
rm /RAMDISK_bak.tar
tar -C /tmp/cake_ramDisk -cf /RAMDISK_bak.tar .
chmod 777 /RAMDISK_bak.tar
echo "OK."
##---------bank radisk
在/etc/rc.local 加入
#!/bin/bash
#
# /etc/rc.local: Local multi-user start-up script.
#
PATH=/lib/init:/bin:/sbin
mkdir /tmp/cake_ramDisk
chmod 777 /tmp/cake_ramDisk
if [ -f /RAMDISK_bak.tar ]
then
echo -n "Restore tmpfs(/tmp) from /RAMDISK_bak.tar..."
tar -C /tmp/cake_ramDisk -xf /RAMDISK_bak.tar
echo "OK."
fi

之後馬上把eclipse 放入,就可以快快樂樂的打android 了。


假日到台中情人橋去看看,
剛好遇到夕陽黃昏,
雖然橋在整修,
不過還是很多人來此地。



星期日, 8月 12, 2012

「Arch」 關於更新 glibc 問題

官方:http://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/

最近更新 的GLIBC問題,由於它把/lib 都轉移到 /usr/lib 目錄下,
導致更新出現無法更新的現象,小弟太急着更新,結果忘記 第二條的 pacman -Su。
之後重開機,系統就缺東缺西,圖形界面也進不去,網路卡也抓不到,天阿。


  1. 放入 LIVE CD,掛載 硬碟至 /mnt 目錄
  2. 鏈接網路後 #pacman -Syur /mnt --ignore glibc  更新。
  3. 之後在進行  #pacman -Sur /mnt ,不過這時出現  glibc  /lib exists in filesystem  的錯誤。
  4.  查看/lib目錄下的檔案是否都屬於glibc  ,# find /lib -exec pacman -QO -- {} +
    1. 把除了 glibc 的套件移除或者都更新。
    2. 讓/lib 裡面只剩下 glibc
  5. 離開 live CD
  6. 進入系統後大概還是一樣,把 /lib/modules 資料夾直接刪除。
  7. 這次更新glibc 應該就沒問題了 #pacman -S glibc
  8. 再重新裝一次linux 核心  #pacman -S linux
  9.  這後reboot 後 ,皆大歡喜。

8月的草屯 還是依然美麗。

星期三, 7月 04, 2012

「PHP CI」Form Validation

關於CI的單表驗證
網站介紹的很詳細:http://codeigniter.com/user_guide/libraries/form_validation.html


1.建立規則


$config=array(  //設定驗證規則
         array(
         'field'=>'name',  //input的name
         'label'=>'帳號',     //設定名稱,在輸出錯誤訊息時出現的名稱
         'rules'=>'trim|required|min_length[4]|max_length[23]|xss_clean'  //驗證使用的規則
           ),
         array(
          'field'=>'passwd',
          'label'=>'密碼',
          'rules'=>'required|min_length[4]|max_length[25]|md5'
           ),  


2.設定規則
$this->CI->form_validation->set_rules($config);  
3.頁面POST回傳是否正確
$this->CI->form_validation->run()

他提供相當多的驗證規則,相當方便,可以少寫很多CODE。