2015年5月31日 星期日

[ElasticOn 2015 / 舊金山/優勝美地/蒙特雷 之旅] 150312 Day4 勇闖惡魔島




[ElasticOn 2015 / 舊金山/優勝美地/蒙特雷 之旅] 150312 Day4 勇闖惡魔島

結束了滿是震撼的 ElasitcON conference 就開始了我為期兩週的 舊金山加州之旅。
初期的規劃是現在舊金山待上幾天,然後再租車前往優勝美地度假,最後再往回去蒙特雷與Carmel 小鎮。


2015年5月28日 星期四

[電影]實習大叔 the internship



今天在讀書會又再看一次,想不到再從舊金山跟Google回來後,感觸有如此不同。

感覺到很深刻的矽谷精神,我可以感覺到那種想要改變全世界的心。

有種我就是強的感覺

人生不可再庸庸碌碌


2015年5月27日 星期三

[elasticsearch] how many shards on a nodes / nodes 的 shards 配置




joergprante@gmail.com joergprante@gmail.com

5月1日
寄給 elasticsearch
The number of open files does not depend on the number of documents.

A shard comes not for free. Each shard can take around ~150 open file descriptors (sockets, segment files) and up to 400-500 if actively being indexed.

Take care of number of shards, if you have 5 shards per index, and 2000 indices per node,  you would hvae to prepare 10k * 150 open file descriptors. That is a challenge on a single RHEL 7 system providing 131072 file descriptors by default so you would have to change system limits (cat /proc/sys/fs/file-max) - the default is already very high.

I recommend using fewer shards and redesign the application for fewer indices (or even a single index) if you are limited to 2 nodes only. You can look at shard routing and index aliasing if this helps:



Jörg

2015年5月25日 星期一

[札記]文字跟思考好像在流失



覺得我的文字跟思考在這陣子,好像開始停滯,甚至是流失...

昔日的文思泉湧,好像在此刻消失殆盡。


2015年5月22日 星期五

蘋果CEO庫克:人生苦短,別浪費生命在只求溫飽的工作上 2015年喬治華盛頓大學畢業演講


蘋果CEO庫克2015年喬治華盛頓大學畢業演講:人生苦短,別浪費生命在只求溫飽的工作上 | SmartLinkin商務社群網
http://www.smartlinkin.com.tw/article/1109


這篇裡面提到很多矽谷的精神,我想如果沒有那趟舊金山之旅,我對他所說可能會有不同想法吧。

在矽谷的人充滿著,改變全世界的心,要做一個能夠改變世界的產品,那就是在世界的浪潮上,你就站在世界的中心點一樣。


在那次拜訪之後,我的人生旅程才正要開始。我當時甚至還沒申請大學。對你們這些畢業生來說,追尋、發掘你自己、創造自己、重新發現自己另一面的旅程即將展開。你要找到自己的價值觀,並忠於它們,就像找到你的北極星一樣。那意味著你必須做出選擇,有時候很容易,有時候卻很難,有時候會讓你質疑一切。
我知道我自己堅信什麼,我很在意自己的北極星(價值觀)。我的責任就是為他人創造美好的東西。但我覺得工作就是工作,價值有它該存在的地方,是的,我想要改變世界,但我認為應該要在我自己的時間做這件事,而不是在辦公室裡。然而賈伯斯並不這麼認為,他是個理想主義者,他喚起我青少年時期的感覺。第一次面談時,他說服我並讓我相信,如果我們努力工作,製作出更好的產品,我們也能改變世界。令我驚訝的是,我接受他的邀請,這改變了我的生活。17年來,我從未後悔過。 
我們的承諾是超越產品本身功能,為環境以及每一個人創造影響力。我們的角色是推動公平,以及改善教育。我們相信,一家公司的價值觀及其指導下的行為,可以真正改變世界。一個人也可以,這個人可能是你,而且肯定是你。畢業生們,你們的價值觀很重要。它們是你們的北極星。當你感受到自己走在對的道路上,工作將賦予你的全新意義。否則,它就是只是一份溫飽的工作,人生沒有如此多的時間。我們需要你們這一代發光發熱的年輕人去領導政治、商業界。科技、藝術、媒體還有學術領域。 
我可以告訴你,我們無法接受這樣的說法,而你也應該如此。這是我遠從加州矽谷來這裡想告訴你們的事情,「想要不斷進步」這樣的信念是可能實現的,不論你選擇了什麼樣的工作。總是有冷眼旁觀者和批評者、好心卻無貢獻者也對實現目標毫無幫助。金恩博士《來自伯明罕翰監獄的信》中說到:我們的社會需要被改變,不僅僅是那些口出穢言的壞人,還有那些保持沉默的好人。

旁觀不是你想要的生活,世界需要你登上舞台,有許多問題需要解決,正義需要得到伸張,人們依然受到迫害、疾病依然需要治療。無論你接下來怎麼做,這個世界需要你付出能量、激情和成功的渴望。不要怕冒險,遠離那些憤世嫉俗者和批評者,歷史很少由一個人來書寫,但永遠不要忘記,當它發生了,那個人可以是你,必須是你,也非得是你。 


2015年5月21日 星期四

[哲學思想] 關於學習 一萬小時的專家領域 與 20小時就能學會任何事



自從 葛拉威爾 的 異數  出版,大大宣揚了一萬小時的故事。
博客來-異數:超凡與平凡的界線在哪裡?
http://www.books.com.tw/products/0010425872


成功和你想的 不一樣!美國最具影響力暢銷作家葛拉威爾,繼《引爆趨勢》、《決斷2秒間》,再創話題旋風,本書甫上市即攻占全美最重要媒體書榜第一名!成功和你想的不一樣!
天賦、家世、學歷、努力還不夠,之所以超群成為「異數」,還牽涉周遭的人和環境。
能不能成為運動明星,要看你幾月出生;數學好不好,要看祖先是不是種稻。
作者引用大量統計科學辯證,大開我們的視野,重新發現「出身」的意義:
誰能成功,多少人能成功,要看我們生活在什麼樣的社會。
想想看,他們的成功背後隱藏了什麼秘密?

  .加拿大曲棍球代表隊的明星隊伍,40%的球員都是在1月到3月間出生。
  .披頭四成名前,從1960年到62年,共去了5趟德國漢堡,在一家脫衣舞夜總會,連續開唱270個晚上的搖滾流水席。
  .1968年,比爾?蓋茲13歲,他是當時全世界唯一能夠無限使用最先進電腦分時系統的孩子,此後,他連寫了7年的電腦程式。
  .紐約最頂尖的律師,他們有幾個共同點:早期歐洲移民後代、生於1930年代的猶太人、父母都是成衣工廠的工人。
  .根據國際測驗的比較研究,日韓港星與台灣學生的數學能力在全球名列前茅,亞洲人天生具有數學優勢,他們的祖先都種稻。
你從未真正看清楚屬於你的成功!
葛拉威爾說:
不是最聰明的人就可以成功,正確的決定或努力不懈,也不能保證;
要成功,除了必須有把握「機會」的智慧、善用特有的「文化」遺澤;
必要時,還得脫離部分的身分,擺脫傳統的束縛。

喬許.考夫曼 (Josh Kaufman) 是熱愛學習的狂人,興趣十分廣泛的他常常一頭栽進新事物中。但是當家裡有了小寶寶後,生活開始忙得不可開交,要抽空學習新事物似乎變得遙不可及,因此,他想了解要花多久時間才能學會一件事。

他發現對一項事物只要練習20小時,就能擺脫令人沮喪的時期,在學習事情上情緒比其他東西重要多了。
所以只要每天花上45分鐘,一個月內就能夠熟悉某項事物。

根據 Josh 的研究,他以練習為核心運行四個關鍵步驟把學習過程拆解開來。

博客來-學得快才會想學!:黃金20小時學習法
http://www.books.com.tw/products/0010617128


以學烏克麗麗為例,步驟會像這樣:  一、取得不可或缺的工具:
  (一把烏克麗麗、調音器、備用琴弦、三本參考書。)
  二、決定學習成效目標:
  (10 天後在攻占世界高峰會自彈自唱「四和弦歌」。
  30天內練到可以在TED演講上表演一段。成果請參考:tedxtalks.ted.com/video/The-First-20-Hours-How-to-Learn)
  三、將這項技能拆解成幾項子技能:
  (左手按和弦、右手刷弦、熟悉旋律、記憶歌詞、自彈自唱。)
  四、20 小時的練習:
  .先從最常用的和弦及刷弦法練起
  .練到彈奏和弦和刷弦都不用看指板或琴弦(累計滿 2 小時)
  .練到不假思索就可以維持刷弦和改變和弦(累計滿 5 小時)
  .用邊彈邊哼的方式學歌,學習歌詞跟和弦變換重疊的地方
  .加進歌詞,一直到可以自彈自唱「四和弦歌」(累計滿 10 小時)
  .學習更多新歌(累計滿 20 小時)(更詳盡的學習歷程參見第八章)
  除了烏克麗麗之外,在本書中,你可以零距離看到喬許依「黃金 20 小時學習法」,在不到一年內成功學會了瑜伽、架站、圍棋、風帆衝浪、盲打。難以置信?這些好像不花個幾年難有所成的才藝,喬許真的都在 20 小時的練習後就上手。讀者可以用這個方法來學習任何感興趣的才藝,是的,任何才藝。你的願望清單布滿灰塵了嗎?趕快挖出來重新看一遍!
  ◎學習科學,「黃金 20 小時學習法」的10 大原則:  一、選擇一項想學的技能或才藝
  二、一次只學一種
  三、決定學習成效目標
  四、將這項技能拆解成幾項子技能,從關鍵技能開始練習
  五、取得不可或缺的工具
  六、消除阻撓練習的障礙
  七、抽出專心練習的時間
  八、建立快速的回饋迴圈
  九、短時間的計時密集練習,一天最多 90 分鐘
  十、練習的重點是求多、求快
  更多訊息,請見
  first20hours.com
  joshkaufman.net




ref
只要 20 小時就能學會任何事 | TEDxTaipei TED的演講影片
http://tedxtaipei.com/2014/06/2014-josh-kaufman/



[哲學] 柯文哲:「每個人都在瞎忙!」



柯文哲:「每個人都在瞎忙!」政府34部會荒謬KPI全揭露
 https://goo.gl/DX8vLD

 "「這個政府為什麼做KPI會失敗,因為真正的Infrastructure(基礎建設)沒有建立,第一,每個人都把自己故意弄得很忙,瞎忙,總是冗事一堆。第二,我們的KPI跟他的升遷跟考績、獎金、甚至面子都無關啊,因為KPI沒有公告。」 "

這不就是整個國家社會的通病嗎?在瞎忙的共犯結構中瞎忙?!

2015年5月20日 星期三

[linux] DD-WRT port forwarding not working



使用 DD-WRT 的 port forwarding的功能時發現不能正常使用,
查到了下面這篇說有特定版號的DD-WRT 可能位有問題,但是我的不在下面列的版號中。

按造指示加了 iptables firewall rule就 work了


So you’re running your router on DD-WRT and your port forwarding isn’t working? Well, it seems that you’re not alone. I’ve seen multiple different builds with that problem.
The builds include 14896, 15778, 15962, 16454, 18024, 18946, 21676 and maybe even more.

What to do?

Go to Administration –> Commands and type the following command:

iptables -t nat -A POSTROUTING -j MASQUERADE


Click Save Firewall. Enter it again and click Run Commands. Now it should be working for most cases.


Quick tip: DD-WRT port forwarding not working | Heshsum
https://heshsum.wordpress.com/2013/11/15/quick-tip-dd-wrt-port-forwarding-not-working/

[python] python requests bind interface 指定 network interface



如果有多張網卡,如何使用 requests lib時指定 interface 呢?


python - Requests, bind to an ip - Stack Overflow
http://stackoverflow.com/questions/12585317/requests-bind-to-an-ip


Looking into the requests module, it looks like it uses httplib to send the http requests. httplib uses socket.create_connection() to connect to the www host.

Knowing that and following the monkey patching method in the link you provided:

import socket

real_create_conn = socket.create_connection

def set_src_addr(*args):
    address, timeout = args[0], args[1]
    source_address = ('IP_ADDR_TO_BIND_TO', 0)
    return real_create_conn(address, timeout, source_address)

socket.create_connection = set_src_addr

import requests
r = requests.get('http://www.google.com')
It looks like httplib passes all the arguments (to create_connection()) as args (vs keywords) as trying to extend the kwargs dict inside set_src_addr was failing. I believe the above is what you want, but I don't have a dual homed machine to test on.

[Jmeter]Jmeter over SSH Socks proxy


使用 Jmeter 做測試時 ,常常會遇到 target 跟所在機器不同網段的時候。

如果已經建立起 socks proxy 就可以使用下面指令啟動 Jmeter。



java -DsocksProxyHost=localhost -DsocksProxyPort=8080 -jar ApacheJMeter.jar


2015年5月19日 星期二

[elasticsearch]ClassCastException[org.elasticsearch.search.aggregations.bucket.terms.LongTerms$Bucket cannot be cast to




{    error:"ClassCastException[org.elasticsearch.search.aggregations.bucket.terms.LongTerms$Bucket cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms$Bucket]",
status: 500

}

這個問題發生在同一個 type 名稱有著不一樣的 類型導致在操作 aggregation時的 cast 錯誤,可以去找出是哪些資料在 型態上有問題。


2015年5月11日 星期一

[elasticsearch] Failed to accept a connection. java.io.IOException: Too many open files



[2015-05-11 14:47:09,373][WARN ][netty.channel.socket.nio.AbstractNioSelector] Failed to accept a connection.
java.io.IOException: Too many open files


increase your system file description 


2015年5月3日 星期日

[linux] xenserver renew license xe command line




在 license 過其實使用 xe command line 會出現

Your license has expired. Please contact your support representative.

因為手邊沒有windows 的機器不能開xencenter去 renew license ,
先找到了

How to fix the XCP expired license issue
http://xenapiadmin.com/tutorials/21-how-to-fix-the-xcp-expired-license-issue

去更改 expiry 時間但是不work


Renew free license using CLI only - Server Installation - Discussions
http://discussions.citrix.com/topic/269333-renew-free-license-using-cli-only/
後來看到這邊文章,給出了renew的url

Citrix Systems, Inc.
http://deliver.citrix.com/go/citrix/xenserver_activation


填完以後等收email拿license file
然後使用

xe host-license-add license-file=filepath

就成功了

ex:

[root@xenserver-hy03 ~]# xe host-license-add license-file=l.txt
License applied.
[root@xenserver-hy03 ~]# xe vm-start uuid=e12978e9-1f71-da3b-d082-e81d6cc7918d


ref:
XAPI Command Line Interface - Xen
http://wiki.xen.org/wiki/XAPI_Command_Line_Interface#General_VM_Example

2015年4月28日 星期二

[flask] 在blueprint中 使用 Flask-Cache 快取



Flask Cache

在開發flask 應用程式時,若是會往backend要很多次重複的資料,或是當service負載變重時,可以使用 flask cache 的方式,方便直接加上decorator 來採用 cache。

install Flask-Cache

pip install Flask-Cache

flask-cache for blueprint

cache.py

先準備一個 cache file
#coding=utf-8
from flask.ext.cache import Cache

cache = Cache(config={'CACHE_TYPE':'simple'})
  • 可選的 CACHE_TYPE 可以參考 docs
Built-in cache types:

null: NullCache (default)
simple: SimpleCache
memcached: MemcachedCache (pylibmc or memcache required)
gaememcached: GAEMemcachedCache
redis: RedisCache (Werkzeug 0.7 required)
filesystem: FileSystemCache
saslmemcached: SASLMemcachedCache (pylibmc required)

views.py

在view 中使用 flask-cache
from cache import cache
#cache 的時間
CACHE_G_TIME=500

一個使用範例
class ListView(MethodView):
    @cache.cached(CACHE_G_TIME,key_prefix=make_cache_key)
    def get(self,page=1,board='',author='',long_mode=0):
        #posts=Post.objects.all()
        page=request.args.get('page', 1)
        per_page=request.args.get('per_page', 10)
def make_cache_key(*args, **kwargs):
    #print 'request url : %s ' % request.url
    return request.url
這邊可以特別注意的是,除了 timeout的設定以外,還有是用一個key_prefix func。 預設在Flask-Cache 內的 cache key 是 request path ,要是你的url 有帶其他的 parameter 會被是成同一個key,所以加上了key_prefix的func來處理帶有parameter 的 url。
cached(timeout=None, key_prefix='view/%s', unless=None)

Decorator. Use this to cache a function. By default the cache key is view/request.path. You are able to use this decorator with any function by changing the key_prefix. If the token %s is located within the key_prefix then it will replace that with request.path

使用了cache 以後在單位時間的同樣request都被cache起來,backend service著實減少不少負擔。
Ref:
  • thadeusb/flask-cache https://github.com/thadeusb/flask-cache/
  • Flask-Cache — Flask-Cache 0.13 documentation https://pythonhosted.org/Flask-Cache/
  • Using Flask Cache | python | flask | BrunoRocha.org | Python web development http://brunorocha.org/python/flask/using-flask-cache.html
  • python - Using flask extensions in flask blueprints - Stack Overflow http://stackoverflow.com/questions/11020170/using-flask-extensions-in-flask-blueprints
  • python - What does key_prefix do for flask-cache? - Stack Overflow http://stackoverflow.com/questions/14228985/what-does-key-prefix-do-for-flask-cache

2015年4月18日 星期六

[python] " //= assignment operator"


What does the //= assignment operator do in Python - Stack Overflow
http://stackoverflow.com/questions/9493647/what-does-the-assignment-operator-do-in-python


9.9. operator — Standard operators as functions — Python 2.7.10rc0 documentation
https://docs.python.org/2/library/operator.html


For the code
x = 16
x //= 2
The value of x is 8. Basically, x = x // 2, integer division


2015年3月29日 星期日

[ElasticOn 2015 / 舊金山/優勝美地/蒙特雷 之旅] 150309 150310 150311 Day 1 2 3



[tobewrite]

這一篇主要會著墨在 ElasticON的所思所想。



[吳式太極拳] 150328(六) 150329(日) 謙虛學習 集思廣益





150328

謙虛吸收 集思廣益

今天老師說,在之前說雖沒有 公儀老師的影片,但是有公儀老師打拳喊口令的錄音帶,
可是,二十年後,錄音帶變慢慢消磁了。

老師說他的概念就是多方學習,不會說,我有多好會是怎樣我就放棄學習,很多事情截長補短觸類旁通,別人有好的地方我們就吸收,如果有不好的地方我們就記住改進,也不會去多說什麼。畢竟,別人願意分享訊息給您知道。


後來師傅與我們大家推手,他跟我說,要坐腿轉腰。

之後再像師兄請教,
他說後腳與退手的掤勁,我能夠維持,前腳的掤勁就要慢慢的訓練。

師兄說了一個訓練
由後腳往前移動到前腳 但是掤勁不失,這樣慢慢去練習非對稱邊的稱勁。


怎麼訓練撐勁

先掤起來
另外一人前後壓手與背
當自己感覺到沒有力量時
就是用骨架撐起來

當下我的震憾就是,當我完全把力量放掉的時候,反而撐住了。
這時候的力量就不是肌肉的力量,而是骨架,間架的力量。

難怪意拳再當時候這麼的風靡一時,王薌齋直接解析了,
這樣內家拳的秘密。


間架的力量 !!!!好快

後來師兄有再做幾次示範,我就跟他請教,為什麼他一放下就有這樣的力量。

當你維持住時 便可改變方向 但是肌肉力量單方向 一改變可能不見

後來下樓與師兄談到,像是站樁的訓練至少要一兩年才有這樣的體會,因為筋是不隨意肌,是要靠時間來訓練的。









2015年3月26日 星期四

[ElasticOn 2015 / 舊金山/優勝美地/蒙特雷 之旅] 150308 ~ 150322 札記




我的心還停留在陽光加州





這次回來有很多感觸,
除了天氣很棒很舒適外,也體會了一些美國文化。

在研討會中

我想這是一個非常美式而且是很活躍的一個open source group ,大家都很有活力,
好像從虛實中得到了轉換,平常在網路上或是IRC上的人,都躍上在你面前,而且,不乏很多一些比較有經驗的長輩提攜這票在創業的年輕人。

第一天去,就開始了震撼教育,
ElasticON的第一天是個晚宴跟外面的廠商擺攤,
幾個角落都有好幾個 Bartender ,只要你講出個調酒他就為您送上。

一進去便繞了一去探探,發現大家還喝起了啤酒,無奈,那四種啤酒我都不認識,只好用著頭皮去跟 Bartender 要一下酒 。問她推薦什麼樣的啤酒,她問我要喝淡一點的還是厚一點的,她就給了我一罐 ,比較light的PILS。




Lagunitas Czech-Style Pils

Lagunitas rocketed to 600,000 barrels per year thanks to this bready pilsner, with the authentic bite of brews from the Czech Republic but more oomph than mass-market wannabes. (6.2% ABV) [lagunitas.com]
Read more: http://www.mensjournal.com/food-drink/drinks/the-24-best-beers-in-america-lagunitas-czech-style-pils-20121024#ixzz3VSEEfNaW
Follow us: @mensjournal on Twitter | MensJournal on Facebook

皮爾森啤酒 - 維基百科,自由的百科全書
http://zh.wikipedia.org/wiki/%E6%AF%94%E5%B0%94%E6%A3%AE%E5%95%A4%E9%85%92

















[ElasticOn 2015 / 舊金山/優勝美地/蒙特雷 之旅] 150309 Day 1



ps . 記得上次在新加坡每天寫下的blog 別有一番風味與當下的臨場感,
但是,之後一段時間在回顧,也別有一番風味,再來這個系列就是藉由現在科技相機的回顧每一天。


由於 ElasticON的行程,是傍晚才開始的,
昨夜晚睡,大概睡到十一點,才起身。剛好吃的昨晚在safeway買的 Bagel 當中餐(0.69 $ 在美國食物好像不用加稅。)配著昨天不識的 tonic water 。
(通寧水 - 維基百科,自由的百科全書
http://zh.wikipedia.org/wiki/%E9%80%9A%E5%AF%A7%E6%B0%B4 )

中午捨棄由飯店開往 Pier 27 的接駁車,便自己步行先前往漁人碼頭。好在飯店的地點還不錯,距離海邊僅一個街口。

飯店一景

飯店樓下有幾個可以烤火的地方

房間的窗外望出,旁邊有條纜車線,所以大概4點多就會聽到嗡嗡作響




先跑到Pier 39的對面去


在這裡觀望了一陣子海獅


請別人幫我跟惡魔島拍張照




跑到 PIER 39 看海獅




6


7








在研討會中


今天第一天晚上的活動,是個 Welcome Reception 。


ElasticON 活動會場緊鄰海邊的 Pier 27

ElasticON 活動會場緊鄰海邊的 Pier 27

名牌1

名牌2


我想這是一個非常美式而且是很活躍的一個open source group ,大家都很有活力,
好像從虛實中得到了轉換,平常在網路上或是IRC上的人,都躍上在你面前,而且,不乏很多一些比較有經驗的長輩提攜這票在創業的年輕人。

第一天去,就開始了震撼教育,
ElasticON的第一天是個晚宴跟外面的廠商擺攤,
(滿多贊助廠商的且還有一些意想不到的CMS廠商,有一種感觸,好像在那邊,只要您專注的開發某樣東西,都會有人願意買單,且可以永續的做經營。)

幾個角落都有好幾個 Bartender ,只要你講出個調酒他就為您送上。

一進去便繞了一去探探,發現大家還喝起了啤酒,無奈,那四種啤酒我都不認識,只好用著頭皮去跟 Bartender 要一下酒 。問她推薦什麼樣的啤酒,她問我要喝淡一點的還是厚一點的,她就給了我一罐 ,比較light的PILS。

後來,在去贊助廠商攤位繞繞。

在吃晚餐的同時有兩個 SearchBlox 的 印度工程師來跟我聊天,我對他們的產品充滿著好奇。原來是家  enterprise search 的公司。(會場中滿多以 Elasticsearch 當做 search kernel 的 enterprise search 廠商,他們都致力於上層應用的服務。)

會場中可以很明顯感覺,有兩派比較大分別使用用戶,
一種就是 enterprise search 或是 search kernel 使用者,把 Elasticsearch 當做他們搜尋的核心,致力於開發上層的應用。

另外一種,是大型的production ,像是 wordpress , wikipedia , Yelp , Microsoft ...

大概七點多,發現沒有keynote 或者談話後,便往外面搭乘接駁車,回到旅館去了。
(searchblox的工程師有問說是住在哪邊,或許可以一起做車回去,他們好像就是做接駁車來的。)





Lagunitas Czech-Style Pils

Lagunitas rocketed to 600,000 barrels per year thanks to this bready pilsner, with the authentic bite of brews from the Czech Republic but more oomph than mass-market wannabes. (6.2% ABV) [lagunitas.com]
Read more: http://www.mensjournal.com/food-drink/drinks/the-24-best-beers-in-america-lagunitas-czech-style-pils-20121024#ixzz3VSEEfNaW
Follow us: @mensjournal on Twitter | MensJournal on Facebook

皮爾森啤酒 - 維基百科,自由的百科全書
http://zh.wikipedia.org/wiki/%E6%AF%94%E5%B0%94%E6%A3%AE%E5%95%A4%E9%85%92






先去要了個啤酒喝

食物1

食物2

食物3

威士忌可樂




採買與遊盪夜遊漁人碼頭


回到飯店後,便開始查詢起,要去哪邊買 muni pass 。雖然在這三天不會用到,可是,結束後往 powell BART就會用到了。

7-Day Visitor Passport$35.00
Cable Car Tickets and Visitor Day Passes | SFMTA
http://sfmta.com/getting-around/transit/fares-passes/visitor-day-passes


剛下來飛機那天,到了Powell 的遊客中心,那天週日三點半就關門了。我到的時間是五點多。只好掏出 2.25 $ 做公車到飯店了。


查詢附近販賣 muni pass的地方有兩個,一個是  SFMTA Bay and Taylor Public Transit Kiosk (不過這個好像休息到 Mar 15 )  ,另外一個是  Walgreen's 2801 Jones Street 。

本來想說有點奇怪怎麼 Kiosk 會關閉呢,又想說也是順路前往Walgreen's ,就先前往  Kiosk 。





SFMTA Bay and Taylor Public Transit Kiosk
Bay at Taylor Street
10 AM to 4 PM - Seven day a week. Closed for lunch 12 PM to 12:30 PM. Visa and Mastercard accepted. 
San Francisco, CA 94133
Cable Car Single Ride, $20 Parking Card, $50 Parking Card, 1-Day Visitor Passport, 3-Day Visitor Passport, 7-Day Visitor Passport, Youth CityPASS, Adult CityPASS, Map


Walgreen's

2801 Jones Street
San Francisco, CA 94133
$20 Parking Card, $50 Parking Card, 1-Day Visitor Passport, 3-Day Visitor Passport, 7-Day Visitor Passport



晚上跑去walgreens 買 muni passport 7 day pass 己經從 27 $ 漲到 35 $