跳到主要內容

發表文章

目前顯示的是有「Web」標籤的文章

[野人獻曝] 安裝 Jupyter

......懶得解釋 Jupyter 是什麼了,自己去 Google 吧! 如果你的機器上沒有 Python ,而且也沒有裝 pip 的話, 請自行安裝這兩樣東西!(爆死 安裝方法超簡單,一行指令搞定(Python2 時): pip install jupyter  跑完安裝步驟下個以下指令就可以啟動了: jupyter notebook 然後照他的指示開啟 http://localhost:8888/?token=xxxxxxx 就能看到 Jupyter 畫面了。 ===========全劇終===========  上面是安裝在自己機器上的狀況, 但是如果是要裝在遠端機器上的話就還有多做以下設定: 增加密碼保護:否則就能讓不相關的人進你的主機惡搞 修改設定檔:以便可以存取 增加密碼保護可以透過以下指令: jupyter notebook password 接著會要求輸入密碼,這組密碼就會是登入 Jupyter 的根據。 之所以要修改設定檔的原因是因為 Jupyter 預設只提供本機存取, 所以只接受 localhost 或是 127.0.0.1 的 domain, 為了要能夠輸入外部 IP 存取 Jupyter ,才需要改以下這個設定檔: 家目錄/.jupyter/jupyter_notebook_config.py 通常剛裝完時都沒有這個檔案,所以要先透過以下指令手動產生: jupyter notebook --generate-config 接著開啟上述的設定檔,找到以下兩個項目,移除前面的註解,並且修改成以下內容: c.NotebookApp.allow_origin = "*" c.NotebookApp.ip = "0.0.0.0"  做完以上兩個步驟並重新啟動後應該就能夠在遠端存取了。 順帶一提: 這份文件 有提到設定檔中每個項目的作用說明,建議可以看看。        

[野人獻曝] 實作 Clef 的 2-factor 登入

Clef 是一套算是方便的簡單登入機制,宣稱只要三個步驟就能讓你簡單登入: 點擊支援網站的登入按鍵,此時會出現 Clef 的登入畫面(其實就是一個 GIF 條碼而已) 打開安裝在手機上的 Clef APP ,掃描該 GIF。 若是第一次造訪該網站可能會要求你填寫額外資料。這樣就完成登入作業了。 要在自家網站使用這個服務,得先去他們網站註冊,並開啟一個新 Application ,接著就是要改一下 Code 了。 以下是 PHP 使用 CI 所寫出的範例 Code(這裡只實作登入部份,登出部份之後再另寫一篇說明): 如果要玩玩看實際的操作流程,可以連到 這裡 看看。

[野人獻曝] 在檔案上傳時即時得知進度

以一般的檔案上傳而言, 實在是沒辦法即時得知上傳進度, 使用者只能苦苦癡等網頁顯示一行「檔案已上傳」。 如果只是一個大概幾M的小檔案也就罷了, 以現在的網路速率而言是可以很快就上傳完畢了。 萬一是上百M的呢? 實在很難想像在那邊等的樣子啊...... 所以說呢,能夠瞭解即時上傳進度的東西是非常重要的。 不過在這之前,我一直以為只有像是 SWFUpload 之類的東西才能作這種事。 直到我發現 PHP-pecl 底下有個 uploadprogress 這玩意後, 我才被這玩意給嚇到了。 他的使用步驟很簡單: 確定pecl是不是可用? 利用以下指令安裝uploadprogress pecl install uploadprogress 安裝完畢後,請在你的php.ini加入以下文字載入uploadprogress: extension=uploadprogress.so 重新啟動apache,來隻測試程式看看是不是可以正常運作吧? 範例程式碼在這裡 當以上步驟都完成後就可以開始使用了。

[野人獻曝] 讓你的S3上雲端(CDN的意味)

前因太複雜了,所以暫且不表(懶)。 反正後果就是我開了一個CDN來作吐圖的工作。 至於什麼是CDN,請參閱 這裡的說明 。 而這裡嘛,我假設正在看此文的人都有對 AWS 的服務有些概念, 所以就直接進入正題了。 要弄出一個CDN, 你首先必須要有一組AWS S3的bucket, 並且已經註冊了AWS Cloudfront, 這樣才能繼續以下的作業。 如果可以的話,順便多弄幾個domain names, 稍後會有機會用到(但非必須)。 以上準備工作完成後, 請打開瀏覽器,登入AWS Management Console, 然後跳到Amazon Cloudfront那一頁後, 再選擇 Create Distribution , 會跳出以下的視窗。 這個視窗是要指示你的資料來源, 主要分成Amazon S3和你自己的來源, 因為本文是講S3的部份,因此請選擇Amazon S3後, 再選擇放檔案的bucket後按下一步。 (至於那個Download和Streaming目前就不用理會了......我想一般個人是不會有機會作Streaming吧......所以只要選Download就好了) 接著出現的視窗會跟你提示一些設定, 主要就是: 要不要設定多個網域:比方說一個頁面如果用了來自一個網域的多張圖片時,因為瀏覽器的限制會導致所有圖片無法同時被載入。因此設置多個網域對應時,會增進頁面讀取速度。 要不要設定log紀錄:這個嘛......基本上我是沒設定啦,因為我也不會去看那些log。如果你有需要的話可以啟用這個功能? 使用的連線類型:基本上就是選HTTP and HTTPS就好,這個選項同時也會包括HTTPS。如果你的內容僅限使用HTTPS時,請選擇HTTPS Only。 是否啟用:基本上是選Enable啦。不過由於在設定完成後,AWS會先進行一次同步作業,所以你也可以先設定Disable。等到好了以後再開啟他。 Comments:啊......就是備註,要填不填隨便你啦。 Default Root Object:這東西應該就像是找不到資源時所吐的預設值吧?我是沒設定啦,或許哪位可以踹踹看? 按下Continue後, 就會跳到確認頁。 若是確認沒問題的話,按下完成後就可以了。 然後...

[野人獻曝] 利用Google來找出架在appengine上的Web Proxy

因為大人的原因, 所以我要透過很多Web Proxy去代替我爬資料, 不過由於我手上根本沒這麼多Proxy可用, 又加上有人把 Google Appengine 當成一種Proxy來用, 所以......我就毫不知恥的直接寫程式讓Google幫我爬這些資料了(心虛)。 原始碼在這 ,有興趣想玩的請參考。 解釋一下原理好了, 基本上只是利用Google幫我查詢「Powered by ProxyPy v1.4 site:appspot.com」這個字串, 我再把裡面的網址用正規式爬出來而已, 算是個相當簡單的小工具。 不過要注意一下, 由於Google對於頻繁的查詢是會有ban掉的措施, 所以使用時請自重, 否則弄到同一區域網路的其他人不能用就好笑了。

[野人獻曝] 淺談oEmbed機制

你或許會很好奇, 為啥我在 plurk 上貼一個 youtube 連結後, plurk會把他轉換成其他人只要一點開就能播放且有縮圖的連結; 或者是你貼了一個flickr連結後, plurk會幫你轉換成那張圖片,並且設定好連結。  這些(大概)都是透過oEmbed這個機制所弄出來的。 (因為我又沒問plurk的人是怎麼弄的w)  那什麼是 oEmbed 呢, 詳情請翻翻看 維基百科 上的說明。 如果不想看的話, 這裡就簡單一點說:「oEmbed是個開放格式,可以讓你知道想要的東西資源在哪裡該如何使用blahblah」。 至於詳細內容在上面所提及的oEmbed官網大概就提的差不多了, 所以請務必看看(不然我也沒打算再說更多了)。  所以說該怎麼實作勒? 就以實作Youtube的以oEmbed取資源為例, 首先你必須要知道Youtube的oEmbed資源在那個Uri, 基本上你可以在 Youtube這篇部落格文章 找到, 不過我可以先貼出來參考: http://www.youtube.com/oembed?url={youtube影片網址}&format=json  當你組出這段網址後, 你可以用你上手的語言去作一個http get的動作, 如果順利的話, 你的程式應該會收到一段json, 至少會有type、version、title等元素, 請參照oEmbed官網中所提及的response type,  去取用你所需要的項目, 就算是大功告成了。 行文至此應該會有人要問:「那我怎麼知道哪些網站有支援這個機制?」 基本上幾個比較大手的網站都已經實做這種格式了, 你可以在oEmbed的官網首頁的最後部份看到那些網站的清單。 當然oEmbed還有一個Discovery機制, 也可以讓你知道這個網站是否支援, 只是因為本期稿擠(實際上是天氣好熱不想多打字), 所以改天有機會再來開新文說明好了。 

[野人獻曝] 為你的Amazon S3設置一個網域

用過 Amazon S3 服務的人都會知道, 當檔案傳到S3後,如果要access那個檔案的話, 要用 http://{bucket-name}.s3.amazonaws.com/{檔案路徑名稱} 才行。 但是這個方法太麻煩了, 所以就可以為這個bucket設置一個像是 store.example.com 的 CNAME 方便存取。 那麼以下就以 store.example.com 的網域(當然這裡的網域請替換成你自己的)為例子吧: 請先到 Amazon S3 的控制台, 新增一個名叫「 store.example.com 」的bucket 接著再到你的dns管理介面新增一組cname,如名稱是「 store 」CNAME的值則為「 store.example.com.s3.amazonaws.com 」 以上兩個步驟就完工了。 接著你就可以在瀏覽器輸入 store.example.com 這個網域看看有沒有問題。 如果出現404之類的狀態的話就代表你設定好, 請檢查上述設定是否有確實做好。

[野人獻曝] 用 Amazon S3 儲放你的檔案

Amazon S3 是一個由Amazon所提供的檔案儲存服務, 基本上也出來很久了, 所以這裡我不會 也不想 介紹太多細節! 如果你對這有興趣的話,可以先註冊AWS帳號後再繼續看下去。 (不過這需要信用卡,換言之,是要收費的,所以......沒信用卡的就掰掰了) 那麼以下我就以PHP來略為說明怎麼實作一個簡單的上傳程式吧。 首先,你可以先到 這裡 下載Amazon S3 PHP Class, 下載解壓縮至網站目錄後(請記住你把檔案放在那個目錄), 打開你的程式編輯器, 先輸入以下的HTML吧: 這段HTML主要是為了讓我們建立一個可供上傳檔案的表單, 如果不熟悉的話,建議還是找本HTML的入門書吧, 所以這裡就簡單帶過了。 接下來是後端程式的部份, 為了方便起見,你可以直接寫同一隻程式中 ... if (isset($_FILES['photo'])) { require 'S3.php'; // 基本上路徑就請你自己去處理啦!為了要操作S3你必需要引入這個檔案 // AWS_ACCESSKEY和AWS_SECRETKEY是你的AWS登入金鑰(?),你可以在AWS帳號中心中看到這些資訊 S3::setAuth(AWS_ACCESSKEY, AWS_SECRETKEY); // 新增檔案籃,基本上你可以把他當成一個裝滿檔案的藍子,到時要取用這個籃子內的檔案可以用 http://my-test.s3.amazonaws.com/{檔案路徑}來存取 // 第二個參數代表是這個檔案籃可被公開讀取 S3::putBucket("my-test", S3::ACL_PUBLIC_READ); // 將檔案傳至my-test這個檔案籃中 S3::putObjectFile($_FILES['photo']['name'], "my-test", $_FILES['name'], S3::ACL_PUBLIC_READ); } ... 這是比較粗略(而且還有一堆錯)的程式碼, 但總的來說, 整個流程不外乎就是: 伺服端接收客戶端所傳來的檔案內容 接收後進行處理(可能是將...