不厭其煩

Reder’s Blog, experimental version

Stop blogging, start tumbleloging

leave a comment »

距離上次在這裡發表的時間已經快一年了,是該改變了。所以我決定不再繼續更新這個站。

一方面是在 wordpress.com 這裡自訂網域是要另外收費的,但是以目前的使用度來說,實在沒有繼續下去的必要。另外一方面,相較 Tumblr 支援 markdown 、單篇形式多樣、佈景主題多樣、自訂網域不需要收費、沒有留言等特性,讓我寫起來更隨意沒負擔,於是自然幾乎不想用 WordPress 了。

你還是可以在這裡(https://reder.wordpress.com)找到舊的文章,原本的 http://blog.reder.ws 會自動導向對應的頁面。而如果你想看新的東西的話,歡迎到我的 tumblelog 看看。

Written by Reder

08/11/2010 at 3:42 下午

張貼於Uncategorized

iframe 的 border

with one comment

雖然只是簡單小東西,不過還是備忘一下。

在頁面上的 <iframe></iframe> 如果想要做到無縫內嵌的話,除了在 CSS 裡設定:

* iframe, iframe {
    border: 0px none;
}

記得 HTML 中也得設定 frameborder


這樣 IE 6~8、Firefox、Safari 才會都沒問題。

Written by Reder

09/04/2009 at 5:39 下午

張貼於web design

Tagged with

Builder Pattern

with one comment

什麼是 Builder Pattern?

Builder Pattern 是 Joshua Bloch 在 JavaOne 2007 的演講中提出的:利用在一個 class 中內置的 public static class Builder ,並將原先的 constructor 封裝在該 class 中,我們可以免除以下問題:

  • Ugly constructor. 例如:new NutritionFacts(int servingSize, int servings,
    int calories, int fat, int 15 more optional params!);
  • Constructor telescoping. 如果是上例的 constructor ,我們在使用的時候一定得參看原先的 constructor 說明,才能知道各個參數的意義。如:NutritionFacts locoCola =
    new NutritionFacts(240, 8, 0, 0, 30, 28);
    ,不看的話根本不知道那一串數字是什麼東西。
  • Too many setters required when creating objects. 如果不用像上例的方式,改用 Java Bean style setters 呢?因為沒有辦法強制必須要什麼參數設定了才能產生出一個新的 instance ,所以造成了不確定性和異變性。

Builder Pattern: 一個範例

例如我們有個 User 的 Java Bean ,其中 idusername 為必須。我們加上了一個 Builder 如下 。

public class User {
  private long id;
  private String username;
  private String firstname;
  private String lastname;
  private String email;

  public static class Builder {
    private long id;
    private String username;
    private String firstname;
    private String lastname;
    private String email;

    public Builder(long id, String username) {
      this.id = id;
      this.username = username;
      return this;
    }

    public Builder firstname(String firstname) {
      this.firstname = firstname;
      return this;
    }

    public Builder lastname(String lastname) {
      this.lastname = lastname;
      return this;
    }

    public Builder email(String email) {
      this.email = email;
      return this;
    }

    public User build() {
        return new User(this);
    }
  }

  private User(Builder builder) {
    this.id = builder.id;
    this.username = builder.username;
    this.firstname = builder.firstname;
    this.lastname = builder.lastname;
    this.email = builder.email;
  }
}

而我們就可以用下列的方式建立一個新的 User

public class UserCreator {
  public static void main(String[] args) {

    User user = new User.Builder(541, "jsmith").email("john@smith.com").build();

  }
}

但其實 Builder 的建立相當累人,是一堆重複性的 code 。不過我們有現成的 Eclipse Builder plugin 可以使用,幫助我們快速建立 Builder 。

More:

Written by Reder

08/31/2009 at 9:58 下午

張貼於Java

Tagged with

leave a comment »

今天去吃了家附近新開的素食店,六點半東西便少得可怕。隨意選了三四樣東西,少少的,我想吃的青菜只有一樣。

結帳的時候老闆說再加點,硬是幫我加了兩樣算五十。心想算了下次大概不會再來了吧。有湯,是冷的。這店給我的感覺不是要倒了就是沒準備好,偏偏還是有客人。吃的過程不知道為什麼想起民生社區我常去的素食。

大概是一年多前,每天下班就到家附近的餐館吃晚餐,通常就固定那幾家價錢還可以的店。素食是常去的,便宜、可以吃到青菜,店裡固定放著首宗教音樂,然後可以偷聽老闆和其他客人的對話。吃完飯後喝碗甜湯然後回家。現在想起來,過去的生活一切都很平靜。

記憶果然是會騙人的。而我在當下總是那麼的不愉快,生活中總有些細微的事情在心頭紊繞。只是回想起過去,那些細節都已雲淡風輕。

Google Steet View 台灣版今天出現,大家紛紛在上頭找自己的家。我現在住的地方還有老家都還沒有出現在上頭,於是找起以前的住所。民生社區的圓環拍攝的那一刻是個好天氣,一如我過往喜歡的那樣。週末的中午,我習慣帶本書走到圓環旁的摩斯用餐。大概就是那樣的陽光。

不過,當你離開,那個地方就什麼都不是了。就像,我曾經試著走上以前回家的路,往之前住過的地方前進。但感覺就是不一樣了。知道不再屬於那裡、沒有辦法到那裡就進去某個遮蔽物中。你只能往那裡去,卻無法從那裡來。

我幻想未來,並不期待華麗的生活,而是一個屬於自己的舒適環境。外宿運氣好的話,可以找到一個還算乾淨的地方,但大部分的時候你無法選擇你的室友。所以我只希望有個我自己可以控制它乾淨程度和舒適程度的住所。

「宅」這個字在目前的中文中轉化成了不同意義的字眼。但我想著「齊家治國平天下」。一切事情,總要有個起點的。

Written by Reder

08/19/2009 at 12:06 上午

張貼於murmur

Graphviz – Graph Visualization Software

with 5 comments

這個週末玩了一下 Graphviz ,簡單記一下。

Graphviz 基本上就是用一個叫 The DOT Language 的語法來畫出關聯圖或其他類似圖型。可畫什麼可以參考 Graphviz Gallery

一個簡單的範例:
G {Hello->World}
可以畫出:

hello

Mac 版本的 Graphviz ,非官方開發。在 2004 年得了兩個獎,不過最新的版本 1.13(v16) 也停在那一年。不過看來作者做了 iPhone 版的 Graphviz

DokuWiki 有 plugin 支援,但plugin:graphviz [DokuWiki] 這個看來已經掛了。而 DokuWiki 作者做的這個plugin:graphgear [DokuWiki] 長起來不是很漂亮。要再繼續找找看可以直接 show 在網頁上的方法。

Written by Reder

08/16/2009 at 10:23 下午

張貼於tools

Tagged with