星期二, 12月 30, 2014

「JAVAFX」簡單JAVAFX使用心得

記得在4年前曾經爲朋友需求用 javafx 寫過簡易的 WEB APP,
如今過了4年 重新再去接觸,感覺當時寫的不曉得是後來改變很多 還是記憶淡忘,
至此大部分都看不懂了。

首先javafx 有個簡易可以拖拉點選編輯LAYOUT的工具 Scene Builder,
這個工具就類似ANDROID 的LAYOUT編輯界面,但是感覺比較好用。

雖然說 javafx 似乎不怎麼被看好,不過對於快速開發簡易的工具,是很容易的,

使用 NetBeans 建立一個 fxml 的專案後,會自動建立 FXMLDocumentController
裏面抓取 fxml 的元件 fx:id="vText_filePath"
只要寫
@FXML
 private Text vText_filePath;
感覺蠻方便的,而BUTTON 的ACTION事件 也可以使用onAction= 來設定,

拖拉檔案至元件裏面 可以使用setOnDragOver setOnDragDropped
這可以參考: http://docs.oracle.com/javafx/2/drag_drop/HelloDragAndDrop.java.html

而在使用 TableView 裏面的 TableColumn欄位參數設定的時候,
不曉得我哪裏有設錯 他一直無法映射到我的函數
最後使用手動的方式取出 我自定的函數 getDataPath(),
而函數回傳格式 StringProperty  
變數設定 private StringProperty datapath =new SimpleStringProperty(); 
        vTableCol_path.setCellValueFactory(
                new Callback<CellDataFeatures<pathList, String>, ObservableValue<String>>() {
                    @Override
                    public ObservableValue<String> call(CellDataFeatures<pathList, String> param) {
change body of generated methods, choose Tools | Templates.
                        return param.getValue().getDataPath();
                    }
                });
而我在 tableView中 最右邊 有多一個刪除的按鈕
ButtonCell 是自定 extends TableCell<Record, Boolean>的物件
        vTableCol_btn_deletePath.setCellFactory(
                new Callback<TableColumn<Record, Boolean>, TableCell<Record, Boolean>>() {
                    @Override
                    public TableCell<Record, Boolean> call(TableColumn<Record, Boolean> p) {
                        return new ButtonCell(vTable_selectFilePathList, mlist);
                    }
                });
在 ButtonCell 中如果使用刪除的功能,會發現 資料有刪除但按鈕卻還是停留在畫面上
這時需要在 updateltem 中做修改
    @Override
    protected void updateItem(Boolean t, boolean empty) {
        super.updateItem(t, empty);
        if (!empty) {
            setGraphic(cellButton);
        } else {
            setGraphic(null);
        }
    }
最後不得不說 小的APP 編譯的速度不快10~30多秒

要開發小工具都可以輕易的完成,而且還是跨平臺。





星期一, 12月 29, 2014

「2014」END


  1.  第一次離職 
  2.  第一次獲得名片
  3.  2014年初 對於 html5 配上 jquery 做動態繪圖以及播放聲音的熟悉。
  4.  跑了人生第一次的馬拉松在高美。
  5.  人生第一臺 apple macbook pro
  6.  熟悉 win2008 架設環境
  7.  php 配上 java 做excel word pdf 輸出
  8.  第一把 cherry g80-1865 紅軸 鍵盤
  9.  爲前公司開發的php 框架滿2年
  10.  使用 剛推出不久 swift 開發爬蟲
  11.  臺中大坑景點幾乎跑片了
  12.  晚上8點上合歡山北鋒拍銀河
  13.  第一次日本東京行
  14.  使用 laravel 開發 個人履歷
  15.  使用 nodeJS 作爲伺服器 開發 android 個人平臺
  16.  建立公司內部專案 git server
  17.  瞭解 angularJS web 用法
  18.  ionic 用法
  19. 第一臺 iphone 
  20. 第2個個人網站



星期二, 7月 22, 2014

「PHP」Laravel osx 設定 .htaccess

「PHP」Laravel osx 設定 .htaccess


apache config

  1. 設定 vim httpd.conf 的 AllowOverride All
  2. sudo apachectl restart
<VirtualHost *:80>

    DocumentRoot /Library/WebServer/Documents
    <Directory /Library/WebServer/Documents>
        AllowOverride All
        Allow from all
    </Directory>

    RailsEnv development

    Alias /noteBox /Users/cake/Web_www/noteBox/public
    <Directory  /Users/cake/Web_www/noteBox/public>
        #PassengerAppRoot  /home/User/web_ror/home/public
        PassengerAppRoot  /Users/User/Web_www/noteBox
        Allow from all
        Options -MultiViews
        #RailsBaseURI /rails
    </Directory>

</VirtualHost>

Laravel 中 public/.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
%23%23%23%20%u300CPHP%u300DLaravel%20osx%20%u8A2D%u5B9A%20.htaccess%0A---%0A%0A%23%23%23%23%20apache%20config%0A1.%20%u8A2D%u5B9A%20vim%20httpd.conf%20%u7684%20AllowOverride%20All%0A2.%20sudo%20apachectl%20restart%0A%0A%60%60%60%20conf%0A%3CVirtualHost%20*%3A80%3E%0A%0A%20%20%20%20DocumentRoot%20/Library/WebServer/Documents%0A%20%20%20%20%3CDirectory%20/Library/WebServer/Documents%3E%0A%20%20%20%20%20%20%20%20AllowOverride%20All%0A%20%20%20%20%20%20%20%20Allow%20from%20all%0A%20%20%20%20%3C/Directory%3E%0A%0A%20%20%20%20RailsEnv%20development%0A%0A%20%20%20%20Alias%20/noteBox%20/Users/cake/Web_www/noteBox/public%0A%20%20%20%20%3CDirectory%20%20/Users/cake/Web_www/noteBox/public%3E%0A%20%20%20%20%20%20%20%20%23PassengerAppRoot%20%20/home/User/web_ror/home/public%0A%20%20%20%20%20%20%20%20PassengerAppRoot%20%20/Users/User/Web_www/noteBox%0A%20%20%20%20%20%20%20%20Allow%20from%20all%0A%20%20%20%20%20%20%20%20Options%20-MultiViews%0A%20%20%20%20%20%20%20%20%23RailsBaseURI%20/rails%0A%20%20%20%20%3C/Directory%3E%0A%0A%3C/VirtualHost%3E%0A%60%60%60%0A%0A%23%23%23%23%20Laravel%20%u4E2D%20public/.htaccess%0A%0A%60%60%60%0A%3CIfModule%20mod_rewrite.c%3E%0A%20%20%20%20%3CIfModule%20mod_negotiation.c%3E%0A%20%20%20%20%20%20%20%20Options%20-MultiViews%0A%20%20%20%20%3C/IfModule%3E%0A%0A%20%20%20%20RewriteEngine%20On%0A%0A%20%20%20%20%23%20Redirect%20Trailing%20Slashes...%0A%20%20%20%20RewriteRule%20%5E%28.*%29/%24%20/%241%20%5BL%2CR%3D301%5D%0A%0A%20%20%20%20%23%20Handle%20Front%20Controller...%0A%20%20%20%20RewriteCond%20%25%7BREQUEST_FILENAME%7D%20%21-d%0A%20%20%20%20RewriteCond%20%25%7BREQUEST_FILENAME%7D%20%21-f%0A%20%20%20%20RewriteRule%20%5E%20index.php%20%5BL%5D%0A%3C/IfModule%3E%0A%60%60%60%0A%0A%0A%0A

星期一, 10月 14, 2013

【Mac】編譯Lua

Mac 編譯 lua

  1. 首先下載原始碼 http://www.lua.org/ftp/這裡使用 lua-5.1.4
  2. 因為這台MAC是64位元的,則 libgdx 的 java端 和 andorid 端用的LUA 編譯出來的一個是64 一個則是32.
  3. 解壓縮修改 src/Makefile
  4. 編譯 make macosx
  5. 取出 luac 就可以做預編譯,之後在放到專案中。

Makefile

macosx:
    $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"
# 32: $(MAKE) all MYCFLAGS="-arch i386 -DLUA_USE_LINUX" MYLIBS="-arch i386 -lreadline"
# 64: $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"

星期三, 9月 25, 2013

Arch linux Linode Web Server(Apache ,MariaDB ,PHP ,ROR)

Arch linux Linode Web Server(Apache ,MariaDB ,PHP ,ROR)

 最近租了個VPS,把EC2停掉了,也順便體驗一下什麼是開發速度極快的ROR,

在設定上還蠻麻煩的,也參考了些網路一些大大的資料。

最後可以跑 PHP 和 ROR 在同一個伺服器。

Set local

  1. vim /etc/locale.gen
  2. locale-gen

Add user(CAKE)

  1. useradd CAKE -m -s /bin/bash
  2. passwd CAKE

Pacman Update

  1. pacman -Syu
  2. pacman-db-upgrade
    • [發生無法更新時]
    • pacman-key --init
    • pacman-key --populate archlinux

Install

  1. pacman -S base base-devel
  2. pacman -S sudo
  3. pacman -S bash-completion
  4. pacman -S git
  5. pacman -S nodejs
  6. pacman -S ruby

Set Sudo User

  1. visudo
  2. [ADD username(CAKE) ]
    • CAKE ALL=ALL (ALL)
  3. [SAVE & EXIT ]
  4. 鎖住 root : passwd root -l
  5. logout

防火牆

  1. pacman -S ufw
  2. sudo ufw enable
  3. port
    • sudo ufw limit 22/tcp
    • ufw allow 80/tcp
  4. [開機啟動]
    • systemctl enable ufw.service

Mysql

  1. install MariaDB
  2. sudo systemctl start mysqld
  3. sudo systemctl enable mysqld
  4. sudo mysql_secure_installation

ROR

  1. gem install rails
    • gem install rails --no-ri --no-rdoc
    • gem update
    • [Apache]
      • [$] gem install passenger
      • [$] passenger-install-apache2-module
      • set config [apache config]
  2. gem install mysql2
  3. in your porject Gemfile file 設定套件檔案
    • 增加 gem 'mysql2' #增加mysql套件
  4. bundl e update raiils

apache config

##### IN LoadModule(load passenger_module(ror) )
LoadModule passenger_module /home/cake/.gem/ruby/2.0.0/gems/passenger-4.0.18/buildout/apache2/mod_passenger.so
PassengerRoot /home/cake/.gem/ruby/2.0.0/gems/passenger-4.0.18
PassengerDefaultRuby /usr/bin/ruby

…

##### VirtualHost and Alias(set php alias and ror alias)
<VirtualHost *:80>

DocumentRoot /srv/http
<Directory /srv/http>
    Allow from all
</Directory>

Alias /_test2013/ /home/cake/web/
<Directory "/home/cake/web/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

RailsEnv development

Alias /home /home/cake/web_ror/home/public
<Directory  /home/cake/web_ror/home/public>
    #PassengerAppRoot  /home/cake/web_ror/home/public
    PassengerAppRoot  /home/cake/web_ror/home
    Allow from all
    Options -MultiViews
    #RailsBaseURI /rails
</Directory>

</VirtualHost>

ROR create DB

  1. rails g model YOUR_MODEL_NAME name:string phone:integer birthday:date
  2. db/migrate/20130923065726_create_pbooks.rb
    • 為模組設定檔
  3. app/models/pbook.rb
    • 模組端
  4. rake db:migrate # (建立)模組設定檔

---- 2014 01/10 UPDATE ----

Mac ROR 設定 以及 別名設定

Apache config

<VirtualHost *:80>

DocumentRoot "/Library/WebServer/Documents"
<Directory /Library/WebServer/Documents>
    Allow from all
</Directory>

Alias /_test2014/ /Users/cake/www_web/php_web/
<Directory "/Users/cake/www_web/php_web/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

RailsEnv development

Alias /ruby_blog /Users/cake/www_web/ror_web/blog/public
<Directory  /Users/cake/www_web/ror_web/blog/public>
    PassengerAppRoot  /Users/cake/www_web/ror_web/blog
    SetEnv RAILS_RELATIVE_URL_ROOT /ruby_blog
    Allow from all
    Options -MultiViews
    #RailsBaseURI /rails
</Directory>

</VirtualHost>


ROR routes your Application add

  scope ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do    # get "home/index" => "home#index"    resources :home     # resources :another_controller  end



Myapp::Application.routes.draw do
  scope ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do
    resources :controller
   resources :another_controller
   match 'welcome/', :to => "welcome#index"
   root :to => "welcome#index"
end end


### 2014 01 22 update
如果使用 ubuntu 設定時
1. 將 passenger 設定資料 建立檔案 放入 /etc/apache2/modes-available/ 並且建立連結到 mods-enabled
     # ln -s /etc/apache2/modes-avaliable/ror.load /etc/apache2/modes-enabled/ror.load
2. 虛擬目錄設定 放入 sites-available 同樣建立捷徑至 sites-enabled
3. 也可以使用 sudo a2ensite XXXXX 建立捷徑
4. sudo apache2ctl configrtest  測試是否有誤
5. sudo apache2ctl restart

PS  如果發生 403 錯誤,則/etc/apache2/apache.conf 註解掉
<Directory />
...
</Directory>







星期日, 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" 


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