由 tombear 發表的全部文章

Python Crawler 初心者心得

最近開始對於爬蟲蠻有興趣的,現在網路資訊太多了,光是整理各種資訊其實就省了不少時間跟經歷,就開始研究一下怎麼寫。

一開始還是從最熟悉的php開始,寫了些簡單的爬蟲後,遇到一些網頁需要模擬登入後,才能進入到內頁開始爬的狀況,這時候php的缺點就顯現的比較大了,而且很多解法我個人覺得很不直覺外加程式碼超多的,就轉向現在最夯的網路爬蟲程式語言Python。

首先先來看一下php要用curl去抓一個網頁的範例吧:

而python使用requests(pip install request就搞定了)的範例:

一比就知道哪個語言更直覺簡單去寫crawler了,同時python對處理字串也比php更快更簡單!馬上立馬轉向python crawler的懷抱!php掰掰,你還是繼續作套版就好!

另外差異最大的還是在如何模擬登入後,取得user cookie後進行資料爬取,來看一下php要搞的多麻煩:

要自己把cookie存回file裡面,我覺得很麻煩,之後還要在開一個request(帶入cookie)去撈。

而python就相當簡便:

是不是超簡單且方便,上手也很快速!

更棒的事情是,requests module 直接內建支援Oauth!

搞定了,是不是超爽!

另外順道一提,python最好全面使用python3,對於UTF-8的支援度比較好,對於request lib的文件請參考以下連結:requests 文件

參考資料

免費的ssl憑證open source – Let’s encrypt

最近很多ssl的需求,Google開始對於https的網域進行SEO加分,進一步push整個web加入轉換成https的加密連線環境,這已經是勢不可擋的趨勢了!

而好的ssl憑證以前是要用買的而且有些十分昂貴,各大瀏覽器也不見得會完全支援,常常有花了錢卻得到破掉的盾牌這種鳥事發生,但是在去年開始,各大網路公司一起進行了一個open source program 讓大家都可以得到免費且有效的ssl憑證,而這個專案就是Let’s enscrypt!

利用Let’s enscrypt產生ssl憑證:

把整個專案拉下來

獲取ssl憑證

會進入一個畫面,基本上就是填Email跟要Agree後就會產生了。

這邊就可以看到產生了fullchain.pem和privkey.pem這兩個會需要用到的檔案

Nginx Conf 設定

剩下的就照抄之前的設定了,然後重啟nginx即可生效

Auto ReNew 憑證

這個指令可以renew憑證,所以就放入crontab去

把以下這段放進去,就會定時幫我們更新憑證了,這樣就大功告成了!Yes!

參考資料

https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04

https://technologyofkevin.com/?p=470

http://www.ithome.com.tw/news/98767

https://blog.serv.idv.tw/2016/02/letsencrypt-ssl-setting/

http://laravel5-book.kejyun.com/hosting/hosting-install-lets-encrypt.html

http://technews.tw/2016/03/10/lets-encrypt-million/

最後補充一個特別的消息,本來想要讓Amazon CDN cloudfront也設定ssl for customer domain,Amazon在今年一月居然佛心來的送ssl憑證 只要使用他們家的cloudfront服務跟EC2,省了我很多事情,一鍵就搞定了!詳情看:AWS 也推出免費的 SSL Certificate 給 ELB 與 CloudFront 用了

如何設定MAC OSX 初步開發環境

1. 安裝Brew

http://brew.sh/index_zh-tw.html

2. 安裝zsh

參考:http://icarus4.logdown.com/posts/177661-from-bash-to-zsh-setup-tips

即可把bash 換成zsh

3. 安裝oh-my-zsh

設定theme

or

指令參考 https://github.com/robbyrussell/oh-my-zsh/wiki/themes

4. 安裝Vundle管理vim plugin

貼上以下這段即可開始使用

在vim 內執行 :PluginInstall 即可安裝所有的plugin

參考:

5. vim 套件安裝

家用RO逆滲透濾水器DIY原理跟使用方式紀錄

幾年前因為台北租房子沒注意,老房子(屋齡至少30年以上)屋頂水塔整個被污染,雖然有用Brita過濾,但是還是不夠力,把身體喝出問題來了,這都是經年累月的,所以之後就特別注意水質,人體成分最多的就是水,所以平常的飲用水特別重要,千萬不要忽視,免得造成身體的問題,那可是在有錢都解決不了的事情。

當身體出問題時,水的乾淨更是需要注意!但要找適合的濾水器跟信任的廠商來源,其實也不是件容易的事情,當然最簡單就是花大錢去B&Q買知名品牌(3M, 大千淨水等等等)最簡單,但是如果去研究一下,這些不只是要花錢,後續的維護也是非常貴的,包括濾心更換,廠商維修或是定期檢驗,簡直不只扒一層皮,大公司要賺錢都是有手段的啊。 繼續閱讀 家用RO逆滲透濾水器DIY原理跟使用方式紀錄

親愛的阿嬤

我的阿嬤
我的阿嬤

如果要說起台灣傳統女性的代表,我人生的過程中所認識的,那就是我的阿嬤。她勤儉持家,善良樸實,大部分的人生都非常的辛苦與忙碌來支撐整個家庭!有著所有傳統女性所擁有的美德,從小就跟阿嬤非常的親,從我有記憶以來,生活就是在阿嬤家的開始的!

我就在阿嬤家長大,睡在大通舖,聽著青蛙蟲叫聲入睡,一早起來阿嬤通常都在田裡忙農活,有時我會穿著大藍白拖,走到田邊去看看!三合院外養著一群黃色的小雞用竹籬圍起來,可以跟小雞們玩耍說早安,穿過長長泥土路 拉開後面的破鐵門,就可以到支撐整個家族的一片土地,種著荔枝、芭樂、桃子、各種水果跟青菜的地方,也是我的兒時遊樂園,阿公跟阿嬤總是在那邊照顧著農作物。

阿嬤總是很疼愛我,我也很愛在廚房跟她一起煮飯,在灶旁幫忙的生火,拿個竹筒努力的吹,可能是幫倒忙,但是我玩很開心!總是等著阿嬤變出好吃的!熱騰騰剛炒好的肉鬆一向是我的最愛!看著阿嬤殺雞總是讓我很害怕,先從脖子砍一刀放血乾淨後,在浸熱水拔毛,但阿嬤總是三兩下就搞定了。阿嬤家種植的水果最遠近馳名的就是芭樂了,又大又甜,而阿嬤賣東西的功力也是一流的,常常背著一大籃芭樂騎著腳踏車就到市場叫賣,有時後她會把我放在後座一起出去賣芭樂,總提醒我腳要張開點,不然會被輪子捲進去,在市場賣芭樂,我雖然不懂也看的新奇,反正跟著阿嬤出門總是讓我感到很快樂,最期待的是她總是在賣完芭樂後會買兩排養樂多給我,讓我盡情的喝,那時候的我覺得是天底下最幸福的事情了。 繼續閱讀 親愛的阿嬤

ubuntu 14.04 Linode快速架設VPN

最近越來越多朋友往大陸工作或出差,所以有幾個好朋友有需要翻牆的需求,所以我就好人做到底,拿自己的平常架站用的Linode VPS來架設VPN,反正server地點在日本,離北京瀋陽都很近,算是方便的了!

本來想著好像有點麻煩,結果卻蠻簡單的,只要裝兩個pkg,在稍加設定即可使用

環境 OS:Ubuntu 14.04

  1. 安裝pptd
    1. sudo apt-get update
    2. sudo apt-get install pptd
  2. setup pttd config
    1. sudo vim /etc/pptpd.conf
    2. 新增以下設定

      以上為設定vpn的ip以及vpn能存取的ip範圍

  3. 新增pptd vpn使用者
    1. sudo vim /etc/ppp/chap-secrets
    2. 新增一user範例如下

  4. 繼續閱讀 ubuntu 14.04 Linode快速架設VPN

html5 anchor 錨點設置

以前html4時設置錨點都用name這個attribute,如以下:

但最近剛好看到了W3C的spec,目前name這個attribute在html5下已經被取代成id attribute,故html5的錨點寫法會換成以下範例:

小地方寫下來注意一下而已!

jQuery 在穩定CDN上免費Host

作為前端工程師,最常用到的Framework就屬jQuery,所以整理一下M$跟Google提供的免費CDN HOST:

  • Microsoft Ajax Content Delivery Network

    http://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_0

  • Google Hosted Libraries

    https://developers.google.com/speed/libraries/devguide#jquery

    1.x snippet:

    2.x snippet:

  • jsDeliver

    http://www.jsdelivr.com/

    如找不到所需的Library還可以上去送pull request,就會幫你新增放上去了,簡直佛心來的,但穩定度就跟前兩家比得測試看看了

為什麼javascript要使用new來創造object

在使用constructor function來創造物件時,如下:

如果你call一個被設計成constructor的function,就必須被限定使用new來創造全新的物件,如果沒有用,他可能會運作得不如你的想像,因為這個function沒有return任何東西,所以會是undefined出現,沒有用new範例裡的this會直接指到global object!