Latest

RubyConf 2015 Taiwan

更新 演講錄影連結 投影片 本文 RubyConf 2015 Taiwan即將在9/11、9/12登場,這次超多講者,議程也非常豐富,很多A、B場次分開的場合,實在也不知道要怎麼選。 官網上有列出所有議程,以下幾個幾個議程是我非常期待的: 李智樺:未來的專案開發 The future of project development 在專案開發來說,目前軟體界普遍盛行的應該多數還是一般瀑布式和敏捷式。儘管許多企業打著招牌說他們都是採用敏捷開發,但根據本人經驗,真正實際執行,還是「說什麼做什麼」也就是說整體規劃還是把要做的1,2,3列出來,交辦下去給不同團隊的成員處理。現在市場上最困難的還是「變」,也就是系統開發到一半,結果因為一些不明原因,導致規格大幅翻修,如果沒有特別的專案管理模式,這樣的問題會超難解決。敏捷式開發已經內含了許多能夠解決這些問題的運作模式,但在公司實際的實踐上還是需要一些心力。 林鈺翔:Need for Speed: Boost ruby

ruby on rails

在Rails當中存取Google AdWords API

目標 利用Google AdWords API讀取AdWords帳戶內的廣告活動成效資料。 1. 選定一個帳號 選定一個你要存取Google AdWords API的帳號,由於申請API需要人工審核,因此需要使用這個帳號提出申請,以下皆稱此帳號為「選定的帳號」。 2. 註冊Google Cloud憑證 英文流程在Github上有記錄 簡單來說: 1. 在Developer Console當中建立一個新的專案 2. 在「憑證」項目底下建立一個用戶端ID 3. 選擇「已安裝的應用程式」,並選擇「其他」 最後會取得畫面上出現的「用戶端ID」和「用戶端密碼」,記好,晚點會用。 3. 註冊AdWords使用者權杖 1. 進入AdWords 2. 點擊右上角的齒輪,選擇「帳戶設定」 3. 如果你的權限可以管理此帳戶的所有廣告,左邊bar會出現一個「AdWords API中心」選項,

如何區分資深(Senior)和入門(Junior)的Rails開發者?

在Linkedin上的社團有篇討論,講到如何區分Rails的資深和資淺開發者,條列出許多「實作過」及「應該了解」的項目。簡單來說,資淺的Rails開發者只摸過皮毛,但資深的Rails開發者有確實操作且了解所有相關的套件及Rails本身的歷史及優缺點。 要區分所有Web技術開發者是資深與否,其實大同小異。以下我編修原文的說法,並補充一些自己的看法: Scaling及效能 資淺開發者並未接觸過擴大規模(scaling)的問題,尤其Rails在scaling的問題上會比其他例如PHP的部分框架來得更難處理。 資深開發者不會隨意進行scaling,而會先從效能方面著手,他們知道如何測試效能、碰到效能問題時知道從何下手、在實際線上的應用程式中知道該如何改善效能。雖然Rails社群常常有老手說「Rails根本不用管scaling」,但那只是玩笑話,實際使用必定會碰到效能問題。 佈署 資淺開發者可能只使用過一種佈署工具,或是完全沒碰過。 資深開發者使用過多種佈署方式,例如Capistrano、Mina等等工具,以及Heroku、一般VPS等佈署環境,並且了解各個工具和環境之間

ruby on rails

form_tag 是啥?跟 form_for 有什麼不一樣?

一般在Rails的app當中,常會看到form_tag的用法,基本上就是為了傳送http的POST request使用,就像我們在瀏覽器中直接輸入網址就可以發出GET request一樣。 form_tag 基本上,一個form_tag會長這樣: <%= form_tag sessions_path do %> <% end %> 這樣基本的code就會產生: <form action="/sessions" method="post"> </form> 簡單來說,我們就是在這樣的表格中送出需要的變數。例如一個登入表格: <%= form_tag sessions_path do %> Name: <%= text_

Ruby雜湊(Hash)和陣列(Array)的指向特性

在Ruby當中如果把相同的變數分配到兩個不同地方,可能利用物件的特性,在兩個地方針對同一個變數進行修改。 一般的複製變數 如果將一個變數指定到另一個變數,該變數會用「複製」的方式指定過去。意思是說原本的物件不會受到影響。 # 當a指定到b的時候,變數會複製過去 # 如果改變b的內容,a並不會跟著改變 a = 10 b = a b += 10 a # => 10 Hash和Array是指向變數 但是對Hash來說,指定到不同其他變數時,在不同地方編修該變數,都會互相影響。以Hash為例: a_hash = {} b_hash = a_hash b_hash[:hello] = "world" a_hash # => {:hello => "world"} # hash並不是用「複製」

把Ruby script變成執行檔(executable)

那些青澀的日子 平常我們在撰寫Ruby script時,大概都是遵循以下模式: 1. 建立一個hello.rb檔案 2. 輸入以下內容: puts "hello world" 3 在command line當中執行: $ ruby hello.rb 但日積月累下來,我們都慢慢變成資深的Rubist,身為一個專業的Rubist,當然要用一些更方便的作法來執行及管理scripts。 1. 省去ruby指令 首先,每次執行都要在前面加上ruby是很擾人的事情,我們先將它拿掉。 在hello.rb當中,加上第一行環境變數: #!/usr/bin/env ruby puts "hello world" 接著在該檔案的目錄底下,在Terminal輸入: $ ls -l hello.rb 接著會出現以下結果: -rw-r--r-- 1

現在會的程式語言,價值還能保留多久?

Inside上面有一篇文章,是一位大陸記者來台灣參加Computex的心得,簡單來說,他覺得Computex的格局一年比一年小,產品也不再讓人驚艷。儘管這篇文章充斥著許多個人偏見,但有一段特別讓我有感觸: PC早已不再是寵兒......大眾的興趣早已轉移到智慧手機、物聯網、可穿戴設備、3D 列印等領域,雖然此次ComputeX 增設智慧可穿戴論壇和物聯網展區,但產品並沒有什麼突破性進展。 我想這樣的趨勢不只在硬體產業,在軟體產業也是相同。在Kickstarter和Product Hunt上面都可以看到無數很有創意的軟體,一直在突破我們的思維。在這樣變遷快到不行的環境底下,我們身上會的技能可能比我們想的壽命更短。有沒有可能再過幾年之後,我們目前會的技能也會是別人嘲笑的對象? 習慣在改變 對像我這樣一個開發者來說,最大的工具就是程式語言,當然要戰程式語言是戰不完的。但在了解整個軟體開發的歷史以後,有一個特別讓我震驚的,就是開發者的習慣:總是有一個語言會取代另一個語言。 例如Perl一直都是撰寫系統腳本常用的語言,但近幾年網路上也出現許多聲音,認為Perl並不如Ruby好讀

如何在Github上貢獻一己之力給其他專案?

如果你對於某個專案有自己的想法,可以嘗試發pull request,讓專案管理員去merge。 這邊用朋友的ngLoading專案當做示範。流程如下: 1. 將專案Fork一份到自己的帳號底下 2. 利用各種commit修改專案 3. 發出pull request,讓對方進行merge 不過首先,你要有Github帳號 1. Fork 首先,找到你要貢獻的專案,點選右上角的fork按鈕: 接著他會出現在你的帳號底下,就可以進去用clone方式複製到自己本機進行修改了。 溫馨小提醒git clone指令: $ git clone ssh_clone_url ssh_clone_url是你自己fork過來專案的clone url,如果忘記在哪的話請在瀏覽器中搜尋clone URL就會找到了。 2. Commit 改完code之後進行commit,通常會另開branch,不過如果你夠有把握,也可以直接commit到現有的branch上面。 3. Pull Request 完成以後,到repo頁面,點選右邊的pull request: 接著在畫面

影片教學課程 RSpec-Rails (基礎篇) 上架

RSpec課程來囉!從5/10開始錄製,到6/4終於完整上架、發佈,算是我第一個比較完整的Ruby相關課程。希望大家多多支持喔! 課程簡介 RSpec是一套Ruby語言底下的自動化測試框架,主要用於測試程式執行是否符合我們想要的結果,可在實際手動執行之前先讓程式自動進行測試,節省開發和維護的時間。 由於RSpec強調其寫法非常口語化,有別於一般的測試語法,又稱BDD(Behaviour driven development)開發框架,意思是開發者可以將RSpec視為一種規格撰寫的說明書。在實際開發之前先將規格寫好,像是說明書一樣,接著再照這份「說明書」進行開發。這也是為何RSpec要將自己的每一個測試單元都稱為「specification」,字面上就是「規格」的意思。 RSpec算是Ruby語言當中非常受歡迎的測試框架,與另一套Cucumber同樣都強調其語言表現方式非常自然。假如想要了解RSpec到底如何能夠幫助開發者,一起來看看教學影片吧! 教學內容 本系列教學會說明: 1. 在Rails當中要如何使用RSpec撰寫測試 2. 使用RSpec測試scaf