2010年12月9日 星期四

最後的氣宗 觀後感想

昨天看完"最後的氣宗"感覺是不錯的電影,也許是自己喜好玄幻類素材的關係吧! 個人覺得動作和畫面表現得不錯,故事的架構也夠大。不過第二天看其他人的影評,都覺得是大爛片。但我自己覺得拍得還不錯,滿有東方哲學氣質的感覺,男主角應該花很多時間在學太極拳吧。我是滿期待第二集的,但好像影評和票房很差,也許我應該去找原著來看看。

2010年10月29日 星期五

好用不用錢又跨平台的編輯器

過去我寫網頁之類的程式都是使用notepad++,這套軟體不但免費而且速度快,同時又是國人開發的,實是臺灣之光。但由於自己有使用MAC的機會,想要把工作環境移動到MAC,所以就花力氣找資料,也試了不少的軟體。目前是找到一個很好用的編輯器"Komodo",這套軟體的網頁主打的是IDE的環境,而免費的是IDE整組功能裡的EDITOR的功能。
大家要找到免費版本的下載連結要到他們的站裡找一下。如果你是一個PHP的開發工程師,相信你會喜歡使用它的。

我個人使用覺得最強大的地方是,在PHP裡它能在你輸入程式時顯示變數和函數以及物件的提示,對於像我這種有年少短期記憶力薄弱的人來說,是相當方便與強悍的功能。另外它能在你在寫程式時,顯示你自己寫在自建物件的說明。

2010年10月19日 星期二

九月九日登記,十月十日請客

前幾天下班騎車回家的路上,忽然感覺自己的生命進入另一個階段。如果說每個人的一生,必定要經歷一些事情。那我目前也算做了些進度了。結婚應該就算是一件大事之一了吧!和老婆認識時,自己才剛考上研究所,現在自己已經是一個博五的學生了。最近忙完婚宴後,回頭想了想這七八年的時間,自己做了什麼事!?完成了什麼!?自己有什麼增長呢!?這些問題自己都沒有一個明確的說法和肯定的回答。也許人到了一定的年歲,就會這樣吧!

2010年9月30日 星期四

資料庫樹狀結構命令

在oracle中,有sql命令可以建立連結資料中的樹狀關係,命令的使用說明我看到比較完整的位置是
http://66.221.222.85/reference/connectby.html
為了避免資料遺失再把原文post 在下面

Oracle Connect By Function
Version 11.1

Syntax 1 CONNECT BY [NOCYCLE] START WITH
Syntax 2 START WITH CONNECT BY [NOCYCLE]

CONNECT BY LEVEL
A condition that identifies the relationship between parent rows and child rows of the hierarchy CONNECT BY =
conn uwclass/uwclass

CREATE TABLE t (
rid NUMBER(12),
col1 VARCHAR2(30),
col2 VARCHAR2(300));

CREATE SEQUENCE seq_t_rid;

INSERT INTO t
SELECT seq_t_rid.NEXTVAL, dbms_crypto.randombytes(15), dbms_crypto.randombytes(150)
FROM dual
CONNECT BY LEVEL <= 1000;

CONNECT BY PRIOR
A condition that identifies the relationship between parent rows and child rows of the hierarchy CONNECT BY =
conn hr/hr

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY PRIOR employee_id = manager_id;

START WITH

Specifies a condition that identifies the row(s) to be used as the root(s) of a hierarchical query START WITH (column_name) =
conn hr/hr

SELECT last_name, employee_id, manager_id, LEVEL
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id;

SELECT last_name, employee_id, manager_id, LEVEL
FROM employees
START WITH employee_id = 101
CONNECT BY PRIOR employee_id = manager_id;

set pagesize 0
col last_name format a30

SELECT LEVEL, LPAD(' ', LEVEL*3) || LAST_NAME AS LAST_NAME
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id;

set pagesize 20

ORDER SIBLINGS BY
SIBLINGS BY preserves any ordering specified in the hierarchical query clause and then applies the order_by_clause to the siblings of the hierarchy ORDER SIBLINGS BY (column_name)
conn hr/hr

SELECT last_name, employee_id, manager_id, LEVEL
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY last_name;

CONNECT_BY_ROOT

CONNECT_BY_ROOT is a unary operator that is valid only in hierarchical queries. When you qualify a column with this operator, Oracle returns the column value using data from the root row.

Cannot be specified with the START WITH or CONNECT BY condition. The following example returns the last name of each employee in department 110, each manager above that employee in the hierarchy, the number of levels between manager and employee, and the path between the two:
conn hr/hr

set linesize 121
col emp format a20
col mgr format a20

SELECT last_name
FROM employees
WHERE department_id = 110;

SELECT last_name, CONNECT_BY_ROOT last_name MGR,
LEVEL-1 PATHLEN, SYS_CONNECT_BY_PATH(last_name, '/') PATH
FROM employees
WHERE LEVEL > 1
AND department_id = 110
CONNECT BY PRIOR employee_id = manager_id
ORDER BY last_name, MGR, PATHLEN, PATH;

CONNECT_BY_ISCYCLE Pseudocolumn

The CONNECT_BY_ISCYCLE pseudocolumn returns 1 if the current row has a child which is also its ancestor. Otherwise it returns 0
conn hr/hr

UPDATE employees SET manager_id = 145
WHERE employee_id = 100;

set linesize 121
col path format a50

SELECT last_name, LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
WHERE LEVEL <= 3 AND department_id = 80
START WITH last_name = 'King'
CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4;
ERROR:
ORA-01436: CONNECT BY loop in user data

SELECT last_name, CONNECT_BY_ISCYCLE "Cycle", LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
WHERE LEVEL <= 3 AND department_id = 80
START WITH last_name = 'King'
CONNECT BY NOCYCLE PRIOR employee_id = manager_id
AND LEVEL <= 4;

ROLLBACK;

CONNECT_BY_ISLEAF Pseudocolumn
The CONNECT_BY_ISLEAF pseudocolumn returns 1 if the current row is a leaf of the tree defined by the CONNECT BY condition. Otherwise it returns 0. This information indicates whether a given row can be further expanded to show more of the hierarchy.
conn hr/hr

SELECT last_name "Employee", CONNECT_BY_ISLEAF "IsLeaf",
LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
WHERE level <= 3
AND department_id = 80
START WITH last_name = 'King'
CONNECT BY PRIOR employee_id = manager_id
AND LEVEL <= 4;

LEVEL Pseudocolumn

For each row returned by a hierarchical query, the LEVEL pseudocolumn returns 1 for a root row, 2 for a child of a root, and so on
conn hr/hr

SELECT employee_id, last_name, manager_id, LEVEL
FROM employees
CONNECT BY PRIOR employee_id = manager_id;
SELECT LPAD(' ',2*(LEVEL-1)) || last_name ORG_CHART,
employee_id, manager_id, job_id
FROM employees
START WITH job_id = 'AD_VP'
CONNECT BY PRIOR employee_id = manager_id;


SYS_CONNECT_BY_PATH

Returns the path of a column value from root to node, with column values separated by char for each row returned by CONNECT BY condition
SYS_CONNECT_BY_PATH(, )
conn scott/tiger

col empname format a20
col cbp format a30

SELECT LPAD(' ', 2*LEVEL, ' ' ) || ename empName, dname, job,
sys_connect_by_path( ename, '/' ) cbp
FROM emp e, dept d
WHERE e.deptno = d.deptno
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
ORDER SIBLINGS BY job;

SELECT LPAD(' ', 2*LEVEL, ' ' ) || ename empName, dname, job,
sys_connect_by_path(empno, '.') cbp
FROM scott.emp emp, scott.dept dept
WHERE emp.deptno = dept.deptno
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
ORDER SIBLINGS BY ename;

Function Demo

Use A Function To Receive The Current Node and Search for Parents of the Current Node
CREATE OR REPLACE FUNCTION permissions_sub_tree_root (
the_id IN NUMBER,
the_level IN NUMBER)
RETURN NUMBER IS

sub_tree_root NUMBER(10);

BEGIN
SELECT id
INTO sub_tree_root
FROM hierarchy
WHERE level = the_level
-- Connect 'upwards', i.e. find the parent
CONNECT BY PRIOR PARENT = id
START WITH ID = the_id;

RETURN sub_tree_root;
END permissions_sub_tree_root;
/

SELECT id, name, username
FROM (
SELECT ID, PARENT, NAME,
permissions_sub_tree_root(id, LEVEL) ROOT
FROM hierarchy
CONNECT BY PRIOR id = PARENT) HIERARCHY, permissions
WHERE ROOT = hierarchy_id;

GROUP BY Demo

Group By Demo with CONNECT_BY_ROOT and
CONNECT_BY_PRIOR
conn hr/hr

SELECT name, SUM(salary) "Total_Salary"
FROM (
SELECT CONNECT_BY_ROOT last_name name, salary
FROM employees
WHERE department_id = 110
CONNECT BY PRIOR employee_id = manager_id)
GROUP BY name;

Demos

Indenting conn hr/hr

col lname format a30

SELECT LPAD(' ', level*2, ' ') || last_name LNAME, d.department_id
FROM employees e, departments d
WHERE e.department_id = d.department_id
START WITH employee_id = 100
CONNECT BY PRIOR e.employee_id = e.manager_id;

Hierarchical Query with IN In a [NOT] IN condition in a WHERE clause, if the right-hand side of the condition is a subquery, you cannot use LEVEL on the left-hand side of the condition. However, you can specify LEVEL in a subquery of the FROM clause to achieve the same result. For example, the following statement is not valid:
SELECT employee_id, last_name FROM employees
WHERE (employee_id, LEVEL)
IN (SELECT employee_id, 2 FROM employees)
START WITH employee_id = 2
CONNECT BY PRIOR employee_id = manager_id;
But the following statement is valid because it encapsulates the query containing the LEVEL information in the FROM clause:
SELECT v.employee_id, v.last_name, v.lev
FROM (
SELECT employee_id, last_name, LEVEL lev
FROM employees v
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id) v
WHERE (v.employee_id, v.lev) IN (
SELECT employee_id, 2 FROM employees);

2010年9月23日 星期四

oracle 樹狀資料查詢命令

從根節點往子節點查詢
select level,m_id,id from table
start with mid='x'
connect by prior id = m_id

從子節點往根節點查詢
select level,m_id,id from table
start with id='x'
connect by prior m_id = id

REF:
http://www.adp-gmbh.ch/ora/sql/connect_by.html

2010年7月13日 星期二

許倬雲先生著作觀後感想

看完許先生這本從歷史的角度來看企業經營與領導統御的書,覺得我們自己有二千多年的政治制度與經驗,真的不需要完全抄西方的民主那套,它不見得合適我們用,也不見得是對的,以西方制度為彷效的對象,是建於近二百年來他們的船堅炮利的侵略之下的陰影,並不是所有的東西都是正確的。從近年的狀況可以看得出來,奠基於殖民侵略的模式,在失去了掠奪的資源時,會變得多麼地不堪。真的要能長治久安,是需要建立完整的"社會中間層",一個企業也是如此。沒有這一層來穩固組織,任何的功勳都無法長久。

2010年6月14日 星期一

google 論壇的使用

在google的論壇留言只要超過60天就不能被回覆了,這樣的設計真是很鳥,這樣都讓我無法進行長時間專有議題的累積。

介紹cocoa開發基礎概念的好文章

http://www.cocoachina.com/index.php/archives/cocoachina_251.html

以上的連結是大陸cocoa開發的網站中的一篇文章,對於一個是從windows開發起手的軟體發人員來說,是一篇很好的文章,它用一個簡單的例子讓人了解在windows和cocoa在開發上的差異在何處,對於跟我一樣對於cocoa的開發工具十分迷感的人來說,有著當頭棒喝的效果。

2010年6月11日 星期五

cocoa 之多button同動作


花了一點時間要弄懂這個項功,一開始在網路上找資料,大家都說用tag判斷就好,但都沒有說button的tag去哪設定!!設定的地方如下圖所示,以下是我測試的程式碼

- (IBAction)updateText:(id)sender;
{
[self PMessage];
NSLog(@"123=%d",[sender tag]);
if([sender tag]==1)
{
NSLog(@"123");
}
[outputText setStringValue:[inputText stringValue]];
//[outputText setStringValue:[odieText stringValue]];
}


終於開始有點感覺了!

2010年6月10日 星期四

MAC 開發之路迢遙

最近開始要深入研究object c 和cocoa,但在開發時有很多細節的地方弄不懂,也許是因為自己不是資工出身的才會有這樣的問題,也或許是寫習慣了windows的程式。雖然感覺xcode是一個滿先進的開發工具,但就是使不上力。

2010年6月5日 星期六

成為有創造力亞洲人的十項指南"Asian 創造力,黃奕光著"

1. 在所有的狀況中都保持有彈性的紀律。
2. 在社會團體中尋求和平與和諧,但必要時不要害怕表達自己不同的意見。
3. 給他人面子,但是不要追求物質財富來增加自己的面子。
4. 讓自己充滿熱情,協助他人,做一個日常創造者。
5. 要謙虛,但對自己有信心。
6. 對傳統,以理性去蕪存綪。
7. 不要做過度順從者。
8. 採實驗的態度,衡量生命中的風險。
9. 對生活保持遊樂態度。
10. 想像自己是一隻幻想自己是人的蝴蝶。(莊周夢蝶,道家的自在樂趣)

心流 截自"創造力,黃奕光著"

契克森米哈賴以客觀且科學的方式,來描述創作時心流的九個心理層面:
1. 每一個階段的目標都很明確--知道下步要做什麼。
2. 每一個行動皆有即刻的回饋--知道岛目做得如何。
3. 在挑戰與技術之間有一個平衡點--有足夠的能力應付困難。
4. 行動與認知合而為一--全然專注於自己的工作。
5. 不會分心--思緒不會四處流動。
6. 不會憂慮失敗--專注於工作,不會擔心失敗。
7. 自我意識消失--不會區別屲我外在的環境。
8. 時間感遭到扭曲--一個小時彿變成一分鐘或一秒鐘。
9. 行為成為目的本身--行為的目的是因為這樣做將會帶純然的快樂。

2010年6月4日 星期五

第二階段應該是在正常流程中

"><"原以為第二階段是選擇的結果,看來應該是正常的流程。原有的一絲優越感與被肯定的感覺,現在就都沒有了。今天改好了一個小程式,稍稍有一點效能出來了。

2010年6月2日 星期三

遊戲公司之第二階段

自己很意外能進入到第二階段,對自己來說算是一種肯定嗎!?因為自己知道自己筆試很差,也許是面試的成績還可以(隱含是說嘴炮功力變好),再不然就是真的很缺人。遊戲的程式師應該是目前國內最好的軟體練功坊,在我眼中它是我所知道,最多大尺寸,使用者要求最嚴苛(沒有使用者上不了線不會幹譙的),最大的負載要求(現在全是線上遊戲,多人上線,3d動畫),的軟體開發。在缺乏軟體專案管理訓練的台灣,這個產業無疑是最好的練功場地。

2010年5月30日 星期日

鴉片比電視,沒有歷史概念的比喻

最近看到http://mr6.cc/?p=4519這篇文章,原文是一個國外的學者寫的文章。雖然知道作者要表達的概念,但從歷史的角度來看。用鴉片和電視這樣的比喻對辛勤工作的亞洲人來說是很不公平。兩個事件西方國家都是主動的地位。原文的作者只是希望喚起他們國內民眾的警覺心。但要面對全球化的競爭,不斷地提昇個人的競爭力是必然的。玩物喪志,雖不可取但娛樂產業也有正面的功能,重點是不要喪志就好。

2010年5月17日 星期一

遊戲公司初次面試工程師之感言

1. 準備C++的考試吧! 著重在資料結構,class的使用規則,多緒執行。這三個部份。
2. 要會玩遊戲,不會現遊戲就沒法了解你在做的工作,不能體會玩家的感受,是很難寫出好程式的。
3. 這個工作是一種生活型態,要對這樣的生活,這樣的工作要有熱忱,有能持續待下去。因為同樣的程度和能力可以在不同領域中找到更優沃的待遇,但久了功力會退步。

2010年5月9日 星期日

愛瘋開發得

星期五終於受不了去買了本iphone sdk開發的書,書的內容算是寫得不好,因為有很多細節並沒有交待很清楚,再加上過去自己是習慣在windows的環境下開發,使用工具的概念完全不同。所以很多工具的使用方式無法利用過去的經驗來套用,深感困擾。所以就花錢買經驗。
測試了一下,發現mac的開發工具真是強悍,而且概念和pc差距很大,無怪乎沒法抓到使的感覺。

接下來應讓會自己想題目自己練功吧!

Creativity 心得

這次在公司裡的演講,其實應該算是心得分享吧!這個題目是自己定的。認識我的人應該認為我講這個題目是很勉強的吧!我也裡也是這樣想。但想到這個系列的課程是我自己開列的題目。因為時間的關係沒能找到足夠的講者是一大失策,浪費了這次的資源。自己上場完全是因為大將不夠了,只好我衝了。這次演講收獲最多的應該是我自己吧!收集了資料後也把自己多年的疑惑一併解開了。以前看東西晢學史時只發現東西方的發展有很明顯的不同,一個是由自己的內心出發,一個是從外在的世界做為出發點。但弄不懂為何有這樣的差異。直到看了三本書,三個人的想法才知原來是左右腦發展的不同(我個人的論點,不一定正確)。從使用的文字就可知東方會徧向右腦,西方徧左腦。加上歴史的發展,使得以科學為主的學科是目前的顯學,而創造出現行的教育制度。目前的教育方式也不能說是錯誤,它畢竟造就了我們目前的生活,但我們需要更多的能力才能讓我們面對未來的問題與挑戰。

2010年4月22日 星期四

將中國的哲學思想比喻為右腦,而西方的哲學思想比喻為左腦。
如果說近二百年從工業革命與英國與美國相繼興起,對全球的教育文化的影響,讓人類均傾向使用左腦,這個狀態雖然讓我們的文明推昇到一個極致,但這樣不完整的架構讓我們無法面對接下來的挑戰。我們應該回頭看看我們過的去文化以及哲學思想,許多層面的經驗都曾我們先人的口中出現過。未來如何發展的答案,或許可以從他們的經驗中找到答案。

2010年4月12日 星期一

2010年2月24日 星期三

一愰眼!即將一年

這一年除了工作的轉換之外!自己英文能力也因密集地上課而獲得了改善。這一年來自己開始大量使用google的工具,做為工作與生活上的協助工具。它的好處是你永遠不用考慮到備份的問題。特別是當你的文件越來越多的時候!