2013年10月16日 星期三

Ruby 學習筆記 Part 1 x 手刻Board 的CRUD


         學習Ruby語言,通常第一步都是實現CRUD(CreateReadUpdate以及Delete的縮寫),雖然Ruby有提供所謂的鷹架系統(Scaffold),可以快速實現CRUD,但聽從了些前輩的意見,強烈建議還是要自己一步一步實際寫過CRUD,才能真正了解其中的精隨。目前我參考XDite所寫的Rails 101 作為一開始的基礎練習,沒什麼sense,經歷了一番折磨才完成,因此記錄一下這次的學習筆記。

作業練習:參考Scaffold,手刻Board的CRUD。


實現步驟:
  1. $ rails new 專案名稱(以下範例是:CRUD_Board)。
  2. 在 Gemfile 加上 gem ‘therubyracer’。
  3. $ bundle install
  4. $ rails g model board name:string
  5. $ rails g controller boards index
  6. $ rake db:migrate
  7. 實作 index action。
  8. 實作 new / create action (實現 C)
  9. 實作 show action (實現 R)。
  10. 在 config/routes.rb 加上 resources :boards。
  11. 實作 edit / update action。(實現 U)。
  12. 實作 destroy action。(實現 D)。

我寫好的範例:https://github.com/FrankyWu/CRUD_Board.git

       前三步驟是在Ubuntu上新建一個ruby專案的基本步驟,就在這邊不贅述,第4~6步是建立MVC的架構,以及資料庫的佈署,建立一個名為board的model,其中只有一個name的欄位,type 是 string;以及建立一個相呼應的controller,並先建立一個index的action,這裡先建立一個觀念:

        網址結構為: “ http:// localhost /  boards  /  index  / 1  ”
        表示意思為: “ http://domain    /controller / action / ID ”

建立board model



建立 board controller



建立完記得使用 $ rake db:migrate,把資料庫佈署好喔!




實作index action


1. app/controllers/boards_controller.rb中加入 index action 的功能,目的是將網頁導向主頁 index.html.erb


2. 在app/views/boards新增 index.html.erb。


3. 使用rails s開啟伺服器的結果


實作 new / create action (實現 C) 以及 

實作 show action (實現 R)


1. 回到 app/controllers/boards_controller.rb 中新增 new action 以及 show action。new 是新增使用者的畫面,show是顯示出所選擇的使用者畫面。


2. 再新增 create action,我們可以看出 create action不只是導向某個頁面,而是產生一個新的 params(ID),如果成功會導向成功建立,不成功會導向 new action並產生建立失敗。



3. 同樣的在 app/views/boards 新增 show.html.erb以及 new .html.erb。





4. 新增一個 _form.html.erb 是為了呈現類似相同的版型,我們可以看到new.html.erb就有導向form的頁面並處理error message。


5. 在主頁 index.html.erb 加入 show 跟 new的連結,就完成了CRUD中的C跟R了。



6. 因為開始會使用到資料庫的處理,所以必須在 config / routes.rb 加上 resources : boards。



7. 使用rails s開啟伺服器的結果。






實作 edit / update action (實現 U)


1. 現在應該有點感覺了吧,仍然我們回到 app/controllers/boards_controller.rb加入edit 跟 update 的 action,edit是修改選擇的使用者畫面,update則是修改後對資料庫的更新。


2. 在 app/views/boards 新增 edit.index.erb,同樣的會導向 _form,因為跟new的頁面很像,不用重複在刻,唯一的差別是底下多了show的連結點。



 3. 修改 index.erb.html 把 edit的連結點放上去。



4. 因為會導到show 我們也要修該一下 show.index.html,可以讓他回到edit的頁面。



5. 這樣就完成CRUD的U了,讓我們看一下結果吧!





實作 destroy action (實現 D)


1. 終於來到最後一個action,也是最簡單的一步,再撐一下,app/controllers/boards_controller.rb新增destroy action。


2. 修改 index.html.erb。



3. 大功告成!




       這次只做了「流程上」的解說,畢竟先後順序出了個差錯,就會進入萬劫不復的地獄(也沒這麼糟啦),完成了這次的作業對CRUD已經有了基礎的知識,之後再慢慢去了解其中的語法跟意義,應該就不會太難,下篇繼續介紹CRUD的POST作業,敬請期待囉!


參考文件:

1. Rails 101:http://rails-101.logdown.com/

2. 麥克阿忠的 Ruby on Rails 真功夫:http://www.openfoundry.org/tech-column/8478

2013年9月23日 星期一

卡士達創業加油站 – 不是賣餅乾的共同工作室


        幾週前的星期三,我第一次參加了卡士達所辦的課程,課程名字是「政府研發補助款申請技巧攻略」,這對現階段要找錢是相當重要的訊息,順便來去參觀參觀由政大教授邱于芸創辦的共同工作室。何謂共同工作室(Co-working space),一個開放式的空間可以提供個人或是小團隊進駐,有點像是有辦公器具的咖啡廳,可以一起工作、彼此交流,甚至能辦活動開課程,複合式的多功能創業基地,目前卡士達的服務項目有共同共作空間 / 工商登記服務 / 會議室 / 講座場地 / 創業廚房。
        邱于芸教授常說「把喜歡當生活、把興趣當事業」,她新開兩家「卡市達創業加油站」,投進大筆資金,她有個夢想,想重現台灣早期生猛有力的創業景觀,「媽媽擺攤賣舊衣、阿嬤包餃子賣、爸爸是舊書攤老闆、女兒做手工藝,全家都創業,該有多棒。」因此,她的空間要做創業者的後盾,希望讓創業者少走冤枉路。

       這次我去的是2店,在大安區附近,一下班,我匆忙的從新竹搭了高鐵,轉捷運到大安站,再走一段十幾分鐘的路程 (回程有好心的同學提供,可以租腳踏車),雖然看似要走一段時間,不過很開心的是,已經看到這附近未來會有捷運站,等捷運好了實在方便許多。我的相機大概拍完門口就沒電了,剩下都是網路上找的照片,裡面空間相當大,場地的規畫相當不錯,還有地下室,是一個很大可以辦活動課程的地方,也就這次上課的地點。


一樓全景圖

地下室的多功能空間

        如果對卡士達有興趣,可以去參觀一下他們的官方網站或是FB

關於如何申請政府創業補助的筆記


        講師一開始就說了,找錢(投資)分三種,第一種是投資後,要還錢或是附帶利息,例如跟親朋好友借錢,或是創業貸款等各種的貸款,回本了再還他錢;第二種是談成投資後不用還錢,但是要佔股份,常聽到的創投、天使投資人是屬於這一類型,最後一種,就是這次的重點,投資前須要經過篩選,之後不用還錢也不用怕股份被稀釋,政府的創業補助就屬於這種,目的是要增加創業能量並回饋社會,活絡地方經濟。

        這樣的補助百百種,我就不一一敘述,有興趣可以跟卡士達的講師Sunny聯絡,但其中有發現很適合5irehands的申請計畫 – 協助服務業創新研究發展計畫,簡稱SIIR,計畫的期間大於10個月,最高的申請獎金是250萬,主要的提案標的是提供服務業的新服務或是新的商業模式,每年審查的期間為2/18截止,聽到的當下,相當的興奮,距離下次申請時間還算充足,但是我相信這一定會是百家爭鳴的戰場,除了要準備一本精美的商業企劃書外,還有許許多多面試的眉角,看來不是一場輕鬆的戰役,其中聽到一個非常受用的小知識,就是申請計畫的補助款會小於資本額,什麼意思呢?通常補助款的金額會是申請金額約40%,簡單的說如果我寫了一個300萬的案子,最多補助300萬的40%,也就是120萬,然而我公司的資本額,必須大於120萬;換句話說,如果我公司資本額如果是100萬,大概就寫個2、300萬的企劃案,以此類推…

        Franky的背景不是企管系的,要寫企劃案真是一個頭兩個大,好在現在所任職的公司也申請過許多類似的政府補助計畫,可以好好參考一下文件,另外在卡士達上課的感覺真的很棒,還能認識許多志同道合的朋友,沒有意外的話,仍會繼續參加卡士達的活動,順便帶5irehands的大家一起體驗一下共同工作室的 feel,如果以後有遇到我們的話,歡迎一起交流一下喔!


Franky - 任職於5irehands的專業打雜工

2013年8月19日 星期一

創意發想的過程


        最近5irehands 進行了第二次的 pivot , 什麼是 pivot ? 是從Mr. Jamie的網誌上看來的說法,簡單來說,就是找到了一個新的方向,然後重新調整策略的意思,詳細的意思可以參考這篇:Pivot – 創業家最重要的本領。至於為什麼我們要做這次的調整呢?其實我們的第一個點子很棒,想要建構出一個「社群平台」,野心相當的大,而且仍不停地擴張,邊規劃邊流汗,評估了一下,現在的我們,會把這樣棒的點子做爛,太可惜,才進行了這次的調整目標,換了一個小一點,並且比較另類的點子,期望可以在較短時間內做出這次的作品。

        經歷這次的pivot,其實過程蠻有趣的,每個人都很進入狀況的發想,也有不少的衝突,畢竟重新開始大家會記得第一次的教訓,更小心的孵化這次的想法,之前在獲利世代這本書有看到,一個點子的發想到實現,通常經過五種過程,順便結合一下這次的經驗,跟大家分享:

1. 多元化的腦袋風暴


        在發想一個點子之前,首先要有一個完整的team,也許是一個部門,最好組成這個team的人是來自不同的背景,構思點子才不會單一化,並開始天化亂墜不受限的想點子,這樣的行為稱之:brainstorming,常用的方法是整個team聚在一起,每個人手上都有一些便條紙,「不經過討論」把點子寫上貼在牆上,一段時間後再針對這些點子開始討論。



2. 進入狀況


        接下來看看這些點子,是不是有類似的,分類成幾個區塊,並開始進行一般性的調查跟蒐集資料,評估一下現有的模式,到這一步還是很輕鬆,只是把一開始所想的點子結合資料罷了。

3. 擴張點子


        好了,該開始系統化一下我們的點子,記得:這一步的目標是的「數量」,別過早的「批評」,也許很多人在已經無法忍受,開始挑戰別人了,這時千萬要忍住,畢竟大家都是為了專案好,也許別人的點子會有意想不到的結果,實作的方法是根據商業模式的九大區塊為出發點,將所有的點子有條理地整理成幾個模式。


4. 篩選


        終於可以不用忍耐了,這一步就可以開始吵,但是吵之前,先訂出一些標準,例如考慮時間(我們第一個專案就是時間太長),潛在收益或是最後要留下來幾個模式的數量,再開始提出反對意見,這時就是考驗一個團隊的感情了,哈哈!在這次pivot我真的有感覺到「衝突感」,不過卻覺得挺好的,比起都是一個人在想,大家只是follow去做,更能淬鍊出最棒的想法。

5. 原型製作


        當這些模式刪減成3~5個後,開始製作商業模式圖啦,把腦筋的東西,扎扎實實的畫下來,仔細的針對模式的各面向,也許在製作的過程中,還會想到一些前面沒想到的,就在最後這一步進行調整。

        以上就是一個創意發想的過程,老實說一整天要跑完實在超級累,腦筋會被榨乾的感覺,但是有這樣系統化的發想,心中會踏實一點,也會比較有目標的去完成這個點子,起碼比較不會東漏西漏,未來還會經歷過無數次的pivot,相信我們會一次比一次熟練的,希望能像郭家兄弟他們那樣,生一個網站到上線3個星期就搞定,雖然每個網站的模式都很像,但是這建立於他們對自己的東西相當了解,才能複製得如此快速。

2013年7月25日 星期四

Line - 強連結的社群


        今日想要分享一場精彩的演講,是如今相當火紅的通訊軟體-Line的台灣區副總經理,陶韻智(Sting Tao),來說說Line的創新以及App所帶來的衝擊,陶副總經理講話超好笑,附帶一題他也是知名網站-Inside網路趨勢的創辦人兼董事長,善於觀察網路趨勢,尤其在這幾年App透過行動裝置顛覆了許多市場,Line更是其中的佼佼者,Line短短的19個月就在全世界累積了100 million的使用者(Facebook是 54個月、twitter是49個月),更是高居許多國家的App排行榜冠軍,台灣也是其中之一。


進擊的App


        說實在App現在也不是什麼新聞,但陶副總經理認為App目前仍然具有很大的影響力,他開玩笑說,你能想像寫Angry bird這些阿宅工程師,也能跨足匹敵迪士尼帶給小孩的夢幻世界嗎?Angry bird已經有自己的遊樂園了,酷吧!而開發這款老少咸宜的遊戲,正是來自芬蘭的一家公司Rovio,芬蘭只是一個人口數約500萬的國家,Rovio所創造的產值卻高達90億美金,App的產值更是全球第三大,難道台灣還要繼續靠代工走下去嗎?另外一個例子他提到了instagram,如果展示專業的照片,已經都不再透過相片了,是否會嚴重衝擊到相片館以及生產底片的公司呢?App慢慢的在侵蝕一些傳統產業,相反的也帶來了許多新的機會!

Line的創新


        當初社群平台正紅的時候,是一些所謂「弱連結」的社群,什麼是弱連結?就是如果你得到一個好友的邀請,你會比較懷疑是否真正認識這個人,像是Facebook,非常自由化,也比較容易認識到朋友的朋友的朋友的朋友…;然而Line反其道而行,創造一個「強連結」的社群平台,在Line上的朋友群,是信任感比較重的封閉型社群,這對當時來說根本是不合群的一派,不過Line靠者接下來大家都熟悉的功能,貼圖、通話、遊戲…貼圖功能更是他們一夕之間爆紅的原因,每樣功能都相當創新,慢慢的壯大了起來,打出一片天,Line主要的收入來源分為三大塊:遊戲、貼圖與廣告,正因為是強連結的社群模式,因此廣告的效益,就相對來的好很多,舉個簡單的例子,你一定看過很多公司自行發行的貼圖,而且只要是免費下載,許多人就會載下來,並且「免費的」傳遞這些貼圖,無形之間,還真「免費的」打了不少廣告,你說是不是很聰明的做法呢?


One more thing...


        上圖的這句話,是副總經理在最後勉勵我們大家的,也是我們現在台灣所面臨的課題,台灣現在需要轉型,PC代工業漸漸地在式微,但我們仍然擁有許多高科技人才這個優勢,隨便丟個石頭應該都能砸到工程師吧!其實現在有越來越多的人,像5irehands一樣,想要走一條屬於自己的路,這正間接證明了台灣需要這一股新的力量,我很希望政府能重視新創產業,在萌芽的我們相當需要幫助呀!我相信,只要多些協助(拿出炒房的一些資源),減少許多腦殘限制(第三方支付過不了關),成為下一個芬蘭,擁有下一個Line,絕對指日可待。

2013年7月13日 星期六

[菜鳥設計師嘀咕] Taiwan Design Thinking使用者經驗國際菁英高峰會 - 小小感想


        7/11星期四,菜鳥特地請了個假,前往由經濟部工業局智慧生活應用推動計畫辦公室和工業技術研究院共同主辦的「Taiwan Design Thinking使用者經驗國際菁英高峰會」朝聖朝聖,看到會議名稱很明顯就知道這次主要是在傳道「使用者經驗」這項主題,事實上這個會議為期兩天,不過菜鳥只有去一天,儘管如此,菜鳥已經收穫一堆了!!!!!!!!!!!

什麼是「使用者經驗」?


        在分享菜鳥對於聽完會議後的一些個人心中小確幸之前,要先和大家聊一聊什麼是「使用者經驗」!!!!!!!!! 「使用者經驗」(UX: User Experience) 是心理學家 "Don Norman" 在過去20年提出的名詞,這個概念近年吸引大家的目光,有逐漸取代「可用性」(Usability)概念的趨勢並演變成為設計的重要目標。國際上超夯智慧終端產品也都以UX設計深入消費者的心,UX已然是業界最流行的詞語。在軟體開發流程上來看,UX是一個藉由觀察跟研究來協助軟體設計、測試驗證產品滿意度與適用度的一個概念詞,UX設計上包括了有目標使用者研究、滿意度的範圍和主題設定、目標使用者需求的功能、互動研究、系統回饋和最終的報告與成果。

UX小確幸


        在菜鳥簡單介紹了一下UX之後,再來就要分享一下菜鳥的UX小確幸!!!!!! 其實菜鳥接觸到這個領域的時間不長,在一開始接觸到後,菜鳥所持的想法是:使用者經驗與研究是軟體開發流程中重要的一環,在開始提出企劃、確認需求後,就開始進入設計階段,而UX的設計在這個階段也隨即開始展開,等到設計完備後才會再進入開發時作階段,以此類推巴拉巴拉巴拉......也就是說,UX在菜鳥一開始的認知,它只是一個軟體開發流程中的一環,會由某個UX team推動策畫,在整個軟體開發流程和其他階段一樣是一個獨立的運作團隊。


After attending this conference, I found that I was wrong !!!!!!!!!!


        菜鳥一直都想去參與一個專門探討推廣UX的公開活動,而不是只是在其他主題中去聽到順帶提出的UX,這一次是個好機會,菜鳥當然二話不說直接報名,這一次的研討會,講者的內容,大大衝擊了菜鳥對於UX的認知,重新開啟另外一道不同的視野,且聽菜鳥慢慢敘述!!!!
        衝擊菜鳥最大的一個講者,是來自Google亞太區資深用戶體驗與產品設計經理 - 唐绚經理,對於唐經理的整場演講,菜鳥認為唐經理只為了傳達一個信念,那就是「UX無所不在」!!!!!!!!! 如同菜鳥在剛剛所說,其實包含菜鳥在內,大部分軟體企劃、設計、開發、測試、管理者對於UX的認知都只在「UX是軟體開發流程其中一環」、「UX是由專職的團隊負責規畫」等等,但是如果大家把視野拉到一個軟體產品最初被提出的意義,產品最終不就是為「使用者」所使用? UX不僅僅存在於具體的產品上,其實,在日常生活當中到處都在UX,唐經理舉了「鼎泰豐」為例,「鼎泰豐」從用餐的客人一上門,接著帶位、點餐、上菜、用餐、買單、到離開,沒有一個階段不是使得客人有賓至如歸的感受,客人對於這樣的用餐環境及貼心感到愉悅輕鬆,之後當然會再繼續上門消費,這就是「鼎泰豐」想要給上門用餐客人的UX;但是,菜鳥相信「鼎泰豐」裡的每一個服務生都沒有接受過UX的專業訓練,只因為UX它是一個人人都可以體驗到的東西。
        因此在軟體的開發流程中,UX是每個階段的成員都該考量到的一個重要因素,上到PM下到Engineer都該有UX層面的考量,而不是只流於整個開發流程中的一個階段、只由UX團隊來規劃,這就是「UX無所不在」所要傳達的理念!!!!!!
       
        其實會議中還有很多很棒的講者與演講內容,但是菜鳥對於Google的唐經理所傳達的內容最有共鳴最有FU!!!!!!!!!!! 回過頭來想,難怪Google的企業文化這麼成功,這就是因為,Google非常重視員工,給員工最好的工作環境、工作氛圍、工作願景與訓練,這不正也是Google想給員工最好的UX嗎?



參考來源:
http://2013ux.iliving.org.tw/
https://zh.wikipedia.org/wiki/%E4%BD%BF%E7%94%A8%E8%80%85%E7%B6%93%E9%A9%97

2013年7月1日 星期一

Git學習筆記 PART2 x 第一次修改專案的範例



        上篇文章提到,每個檔案都會身處在某一個特定的階段,如同上圖清楚的表示,假設我們做了什麼事情,檔案會處在那些階段,不過我想現在大家還是霧煞煞,建議接下來的範例,可以對照這張圖,會更容易了解一些。

讓我們看看在giggle上面是怎麼呈現


       在講範例之前,學習筆記的PART 1有介紹輔助工具 giggle,算是一種圖形化的 git工具,相當方便,讓我們每次 commit 都一清二楚,接續上一篇讓我們開始吧:
  • giggle (如果還沒安裝,會出現sudo的安裝指令)


Browse Mode



History Mode



按 ctrl + c可以結束giggle檢視

基本流程操作範例



1. 選擇你要修改的檔案 (untracked)
  • cd app/views/homepages/



2. 準備修改檔案 (untracked -> unmodified)
  • vim main .html.erb
3. 修改完成 (unmodified -> modified)



4. 新增檔案 (modified -> staged)
  • git add main.html.erb
  • git st (查看一下現在的狀態)
提醒:所有檔案要在staged階段才能commit喔!



5. 所有要修改的檔案完成後,提交! (staged -> unmodified)
  • git commit –m “這次提交的註解”
當然提交完後整體又回到了unmodified的狀態囉!


giggle(查看一下git 的狀態)



很簡單吧!就這樣完成了第一次修改拉!你以為 git 就只是這樣嗎?git 有一個大優點,就是工作團隊的每一個人,都可以同時各自的修改同一份專案,而且不會造成混亂,到底這是怎麼做到的?就是開 branch!branch 是什麼何方神聖?下篇會介紹這個概念。

Franky - 任職於5irehands的專業打雜工
Nono   - 任職於5irehands的菜鳥設計師
Related Posts Plugin for WordPress, Blogger...