All Posts

1

Service Object 設計建議

前言

隨著大家ServiceObject越用越多,也產生了不同的設計習慣與使用方式,為了讓大家有一制的設計原則,方便後人使用或減少修改成本、遵行風格建立下去,我們可以來集思廣益、訂立一套良好的準則,希望大家可以遵守之,並且耳濡目染之下相互影響。當然,如果有發現不良的地方或更好的方式都歡迎提出討論。

written in rails Read on →

Rails 探訪html_safe

介紹

Rails3開始為了安全性的考量(XSS),怕使用者張貼一些有特殊目的HTML到網站上進而影響其他使用者或網站運作,所以會自動把所有<%= %>裡的字串都做溢出,當字串包含先特殊符號如:< , >等等都會被處理掉,這樣自然就不會被瀏覽器,非常地安全,而如果想不被溢出,我們此時可以使用html_safe這個helper來避免,詳情可以參考ihower網路安全

written in rails Read on →

Rails為何要使用escape_javascript?

前言:

在Rails裡,為了某些AJAX效果,我們會使用RJS(Remote Javascript),簡單地說就是發送了個js請求給server,rails controller做了某些事情後會render像是*.js.erb的檔案,在這檔案裡我們可以混用ruby與js,所以可以做些我們想做的事之後再編譯成js code並回傳給browser,然後browser直接處理這段js並改變網頁文件。

written in ajax, javascript, rails Read on →

Ruby Arguments 小技巧

在ruby裡,函式參數的定義與使用可以多變且靈活,這裡我們來分享一些比較特別的但實用的例子

written in ruby Read on →

Ruby 類別變數

類別變數,有時也稱靜態變數,簡單說就是專屬於類別的變數,不依實體不同而有所差異,類別成員下皆共享的,因為是存在特定的記憶體區塊,所以不會因實體的存活期間所影響。

各個oop語言的類別變數大致的理念都是相同的,用法上可能會略有不同,今次是就來探討ruby的使用狀況。

written in ruby Read on →

使用pre-commit來修煉codestyle

想寫出有執行效率、又簡潔易讀又潮的ruby codestyle嗎?

雖然不是人人都有大神幫忙做code review,但慶幸ruby有rubocop可以用,裡面可以偵測我們的code是否有符合ruby codestyle的最適規範,而且還可以搭配pre-commit,這個gem來幫我們做到每次提交commit前先掃描我們的code,看看是否有符合codestyle,沒有符合的話就不給commit,希望借此養成良好的codestyle!

written in programming, ruby Read on →

開發中,常見的參數payload是什麼?

開發中,常常見到許多文件裡的方法或函式帶有名為payload的參數,像是最近在因為新專案開始使用了react.js+flux,正在看前輩的code學習與觀摩中,就非常常見到payload這參數,直覺想到『 啊這個字就是負載量啊!?沒什麼的嘛』但其實知道他英文叫做負載量但我還是不知道這參數是要幹什麼的,或是為什麼要這樣取名,不直接叫data, params之類的。甚至不小心在看pg官方文件裡又出現payload這個參數名,讓我更驚覺到原來不是只有flux裡面這樣用,別的地方也會這樣命名,也意味著這其實是個常見且通用的使用名詞,所以還是來個一探究竟的好。

written in programming Read on →

JSONP 介紹

JSONP(JSON with Padding),聽起來跟JSON很像?兩者有什麼關連嗎?!JSONP是一種跨網域資料交換的方式,而JSON則是一種資料交換的格式。而兩者的關聯就是JSON是AJAX在交換資料所常用的格式,而JSONP則是AJAX為突破同源政策(Same-origin policy),而可讓不同網域之間一樣可以靠xhr取得資料的手段。

written in jquery Read on →

What Is Base64

在從事web開發時,一定常常聽到base64,例如:rails裡會將cookie值採用base64編碼保護,而且在rails使用base64也相當容易,如:

rails使用base64

1
2
3
4
   encrypted_code = Base64.encode64 "Hello World"
  # 輸出 "SGVsbG8gV29ybGQ=\n"
  Base64.decode64 encrypted_code
  # 輸出 "Hello World"

看起來似乎非常簡單使用跟沒什麼特別要學的成本,所以本篇教完了,結束……..!?
當然沒這麼簡單,學習一項事物時,我覺得除了事物本身外,更重要的是我們為何要學習它?甚至去了解它的由來,我覺得對學習可以有更深的幫助,也較有趣味性。所以接下來我會講解base64的蓋要與它的使用目的。

written in encrypt Read on →

Ruby Each_with_object vs Reduce

又發現一個好用的方法each_with_object,是屬於Enumerable的方法之一,最近看前輩的code才發現的,算是each家族中的一員,不得不說ruby內建的許多列舉方法實在是非常方便啊!它與前陣子介紹的reduce目的上有點類似,但似乎更為易懂,直接來看範例吧!

written in ruby Read on →

Javascript This

this是物件導向語言裡很重要的觀念與應用,像是Java, PHP等等。而自己第一次聽到這名詞是大學時學習Java的時候,後來接觸php時也又碰到了this(php物件導向也是由Java借鏡來的),但對this到底為何其實都不是很懂,被困擾了很久,單看this字面的意思還是讓人覺得抽象,不過當時也有不少同學對於this也都是一知半解,但寫程式的時候還是會知道該怎麼使用它,個人覺得這不是個好的現象,所以今天來分享一下對this的學習心得,並主要以javascript作為範例。

written in javascript Read on →

Javascript Function


     Javascript(以下簡稱JS)的函式比以往所認識語言C, JAVA, PHP來得特別些。因為第一份工作主要都是在寫Rails所以接觸Ruby,覺得這語言很酷很方便,然後也因為今年開始自學JQuery也順便想弄懂Javascript的原理而開始接觸,之前有朋友說其實Ruby有些地方是從Javascript借鏡的,當時因為對JS還很不熟,所以也沒體會,但隨著看的範例多跟練習越來越多,也開始有所感觸,所以也趁著這機會記錄一下JS相關的function應用:

一般使用

1
2
3
4
5
6
7
function godzilla(food){
    console.log('I eat the '+food);
    console.log('I am a monster!');
    }
    // godzilla('fish');
    //I eat the fish   
    //I am a monster!

     這是最基本的使用方式,跟其他語言大致相當

written in javascript Read on →

Ruby Methods Map Reduce


關於迭代(iterator)


     簡單的說,迭代就是重複某一過程,若以coding來,迭代器可以幫助我們走訪array或hash的每一個元素並執行某些要求或命令,而ruby則是善用迭代來讓我們更少地直接使用傳統的迴圈功能,以讓程式可以更精簡、直覺。而ruby內建的迭代函式真的很多,也非常的好用,常見的如select, find ,find_all, reject…等可以幫我們快速迭代array或是hash甚至物件內的元素,以快速達到某些目的,例如我們想找到陣列中的偶數:

written in ruby Read on →

Javascript Object and Class


js也是個物件導向(object-oriented)的語言,但與我們傳統認知的C++、Java的物件導向有所差異,但至少理念上還是一樣。物件會有所謂的成員也有人稱作屬性(property或attribute),指的是屬於該物件的某種數值或字串又或是其他的物件(ex: argument.length, event.data)。另外,物件也有方法(method,就是我們認知的function,ex: location.href(somefile.url) ),名稱上或許容易令人混淆,但大致來說一般的物件導向都是這麼稱呼與認知的。

written in javascript Read on →

RubyWay: Net::HTTP篇

前言

這算是比較抽象的一篇,目前我也不是很清楚他實際的作用與原理,但先記錄一下我所學到的部分與應用。

get_response

有時候我們會需要在程式裡發出一個request,簡單的說就想像我們直接在瀏覽器裡輸入一串url,此時我們就可以利用Net::HTTP.get_response(你要的uri),會回傳一個物件,而我們可以根據這個物件做我們想要的應用,看程式碼教學:

written in ruby Read on →

Cookies練習,使用javascript

目的:

w3schools開宗明義的介紹,cookie是被發明來解決『如何讓伺服器記住使用者的資訊』。因為當伺服器端回傳了一個response給使用者端時,伺服器就會忘記一切關於使用者的資料,而cookie如何實作到這點呢?其實就只是把資料存在使用者端(瀏覽器),例如使用者來到該網站輸入了些基本資料,而我們可以將這些資料存入cookie裡,下次該使用者在拜訪網頁時,我們就可以自動去cookie找尋之前的資料並且顯示出來,延伸應用包含使用者登入、記住使用者喜好資訊、購物車實作等等都是常見的cookie應用。而現今cookie也時常與session搭配做進一步的應用。

written Read on →

First-article

My First Article using Octopress


星期四猴子去考試

第一次使用octopress架blog並且搭配佈署到heroku,參考高見龍大大的教學,其實架起來比想像的快很多,但是目前還是要習慣octopress的使用方式,跟搞熟heroku到底適不適合開分支合併回到master去,這樣版本控制才可以發揮他的作用阿,如果改錯了什麼,heroku起不來我辛苦寫的文章不就…!?

接下來希望要來玩玩怎麼把theme改成我理想的樣子,雖然我css根本爛的可以,但是還是有東西可以給我練練了。還要試著把我本來在hackpad的文章一一搬過來,並且希望我可以持續乖乖的寫好blog…。嗯嗯,要做跟學習的事還是好多好多,但是過程是真的很有趣的,加油吧。

written Read on →