最近發生主機被大量 request 攻擊的事件,而且慘的是這台主機放的是論壇服務
假設攻擊的點是論壇首頁,每次 request 都會去 query DB,而且有一堆 join
其中還有些是 POST 的指令會讓 db update
就這樣一直瘋狂又 select 又 update 導致 DB lock,cpu 飆高掛掉

如果論壇是自己寫的,還可以在 DB 跟 application 之間加上 redis 之類的快取
但偏偏這個論壇系統是別人的,沒有辦法動

閱讀更多

CS50 的全名是 Introduction to Computer Science,是一堂哈佛大學的通識課程
edx 上面有開課,任何人都可以去修,甚至還有助教幫你改作業(只有程式作業,不包含其他像是紙本作業的那種題目)

我第一次聽到 CS50 這堂課,是經由這篇報導:CS50:一堂超過 800 個哈佛學生選修的「硬課」,魅力何在?
一直到最近把這門課修完之後,才了解這門課厲害在哪裡。

先來回答標題的意思:如海洋般的程式課程。為什麼是海洋,因為這門課:又深又廣
有多深多廣呢?我記下每一週的課程大綱跟作業,請你身邊有資工背景的朋友看看,就會知道我在說什麼了

閱讀更多

前言

對於 Android 工程師來說,了解如何反編譯可以增進自己對 Android 底層的理解,也可以思考如何保護自己的 apk 不被反編譯。
對於一般人來說,許多現成的工具可以幫助我們非常輕鬆的、只要打打幾個指令就可以反編譯 apk,看到 java source code,滿足自己的好奇心。
本篇文章只介紹一些工具的使用,適合初學者觀看。若是想了解更底層的知識,可以參考文末附上的延伸閱讀。

閱讀更多

儘管去年面試了大約二十家公司,但我也是一直到最近才明白,面試流程對一間公司來說有多麼重要
當然,HR 的重要程度也非同小可

若是這間公司的 HR 做的很好,面試流程也讓面試者覺得很用心
在這個網路開放的時代,很可能這個求職者之後就會跟朋友分享:欸欸,我今天去 XXX,他們面試流程超棒的欸!
反之亦然,一個差勁的面試流程,也可能會禍害千年,負評一個接著一個
底下有些實際例子,都是一些正面的例子,我會直接把公司名稱講出來
沒錯,去面試的公司對我好,我都是有記在心裡的!

今天想跟大家談談我心目中理想的面試流程
大致上可分為三步驟

  1. 面試前(安排面試)
  2. 面試中
  3. 面試後

以下就根據這三個步驟一一來討論

閱讀更多

平常有在寫 code 的,無論是寫哪一種程式語言、或是哪一種開發環境,都會有一定的時間需要執行一些命令
這時候就會開啟 terminal 開始鍵入指令,最常用的像是cd, ls, git, ssh, rsync之類的
可是系統內建的終端機其實滿難用的,今天要跟大家推薦一套比較好的選擇

閱讀更多

之前寫了一篇文章簡單的筆記一下自己在看redux的心得,在這邊還是要再次推薦官方文件,因為寫的超級清楚。

但是之前在看官方文件的時候,middleware的地方沒有完全看懂,看到後面就霧煞煞了
這次重看了一遍官方文件講middleware跟非同步操作的地方,邊看邊做筆記,總算是把middleware的實作原理弄懂了
依照慣例分享一下心得
官方文件(中譯版,但是還沒翻譯到這篇)

官方文件很棒的點就是這篇不只教你怎麼用,還從頭講起,讓你知道為什麼middleware會是現在這樣的形式。

閱讀更多

在Javascript裡面,有一個超級重要的概念就是非同步,這也是剛入門的時候最容易搞混、忘記的觀念
ES6原生支援了Promise,搭配Generator使用效果更佳,而ES7甚至支援了async的語法
我覺得這算是一個演進的過程,讓程式架構越來越好、可讀性越來越高
所以要講解這些新的東西,就先從最基本的callback開始吧

閱讀更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×