與 DDoS 奮戰:nginx, iptables 與 fail2ban

前言最近發生主機被大量 request 攻擊的事件,而且慘的是這台主機放的是論壇服務假設攻擊的點是論壇首頁,每次 request 都會去 query DB,而且有一堆 join其中還有些是 POST 的指令會讓 db update就這樣一直瘋狂又 select 又 update 導致 DB lock,cpu 飆高掛掉 如果論壇是自己寫的,還可以在 DB 跟 application 之間加上 redis 之類的快取但偏偏這個論壇系統是

Read More...

使用 Gazebo 模擬器控制機器人建立 2D 地圖

前言ROS 很吸引人的一個地方在於,他跟模擬器 Gazebo 很好地結合在一起,讓使用者可以使用一台筆記型電腦就開始撰寫機器人程式,而且可以在筆電上看到程式執行的結果。模擬器裡的機器人不會撞壞、不會沒電,所以就算在程式設計過程中有錯誤,也不會有任何硬體成本的損失 (時間當然是會損失),而且很容易大量測試演算法,因為可以在模擬器中設置各種場景,而不需要一個很大的空間和昂貴的機器人。這篇文章會簡單介紹怎麼在 Gazebo 裡面啟動 PR2,

Read More...

一看就懂的 React 開發環境建置與 Webpack 入門教學

前言俗話說工欲善其事,必先利其器。寫程式也是一樣,搭建好開發環境後可以讓自己在後續開發上更加順利。因此本篇接下來將討論 React 開發環境的三種主要方式:CDN-based、browserify 和 webpack(這邊我們就先不討論 TypeScript 的開發方式),讓讀者閱讀完本章後可以開始 React 開發之旅! JavaScript 模組化隨著網站開發的複雜度提昇,許多現代化的網站已不是單純的網站而已,更像是個富有互動性的

Read More...

Progressive Web App 會是未來趨勢嗎?

距離今年 Google I/O 2016 轉眼間也過了兩個多月,議程中提及的 Progressive Web App (PWA) 似乎討論不多,我當時隨便掃過 Google Developers 上的資料後的念頭是:“怎麼有點像當年 Firefox OS 上跑 web app的長相?” 其實我覺得是蠻雷同的,差別在於 Progressive Web App 是想能夠直接利用目前的 Browser 來支援其運作。實際上 Mozi

Read More...

讓 JavaSript 難以閱讀:jsfuck 與 aaencode

前言在進入今天的主題之前,先推薦大家看一個影片 WAT:A lightning talk by Gary Bernhardt from CodeMash 2012。在這個影片裡面,講者會為大家示範 JavaScript 到底有多「神奇」。而這些神奇的特性,也會跟我們之後所要介紹的兩個東西有關。 先從 Brainfuck 開始大家有聽過 Brainfuck 嗎?顧名思義,就是會讓你超級頭痛的一個程式語言,只用下面這八個字元就可以寫出一個完

Read More...

ecto 簡介 (2) – tendrils 與 scheduler

前言上次的文章介紹了 ecto 的基本機制 – cell 與 plasm,讓大家對於這個函式庫的基本功能有了一個認識,但你可能會感到疑惑,如果只是可以用來建立一個如 DAG 方式來執行的 pipeline ,寫在 main 函式裡不就好了,何苦使用 ecto,還得把一個 class 寫成一個又臭又長的 cell。這篇文章就會帶出 tendril 和 scheduler 的機制,讓大家了解到事情並不像我們想得那麼簡單。 tendril 是

Read More...

利用 Wit.ai 讓你的 Messenger Bot 更聰明!

今天我們要讓我們的 Chat Bot 更加聰明,利用被 Facebook 收購的 Wit.ai 所提供之 API,可以很方便的讓 Chat Bot 有了 NLP 的支援,讓他/她更加聰明! 實際上 Wit.ai 的介面並沒有我想像中的好用,需要很有耐心地把官網上的教學一步步做完,並且了解他所定義的名詞代表之含義,雖然寫得很詳細,但畢竟是英文,因此就記錄一下整個過程,並跟大家分享。 Step 1 註冊 Wit.ai 帳號先到

Read More...

用 JavaScript 學習資料結構和演算法:堆疊(Stack)篇

前言在 CS 江湖上曾傳言:程式設計 = 資料結構 + 演算法。在一般的大專院校裡,資料結構(Data Structure)與演算法(Algorithm)幾乎都是電腦科學(Computer Science)和資訊相關科系的基礎必修課,在這些課堂中多半是使用 C/C++ 或是 Java 進行教學,許多初學學生也因為對於這些語言的掌握度不夠,反而迷失在資料結構和演算法的世界裡,然而本系列文章將透過 JavaScript 去學習一

Read More...

資料庫的好夥伴:Redis

前言Redis 是一個 in-memory 的 key-value database,因此常常被用在需要快取(Cache)一些資料的場合,可以減輕許多後端資料庫的壓力。這篇就來簡單介紹一下 Redis 提供哪些好用的東西,以及可以應用在什麼地方。 常用指令Redis 的官網列出了支援的每一條指令,我們先來看看最簡單的: SET, GET123redis> SET mykey "Hello"redis> G

Read More...

ecto 簡介 (1) – cell 與 plasm

前言這次想要跟大家介紹 ROS ORK (Object Recognition Kitchen) 這個函式庫實作物體辨識 pipeline 的機制,其背後運用到的一個重要的函式庫叫做 ecto ,接下來會介紹 ecto 的基本觀念和用法。但因為我想把內容講解得比較詳細,所以不會只花一篇文章的篇幅就介紹完這個工具,這一篇會講到最基本的 cell 與 plasm,讓大家先有初步的認識,更進階的用法甚至是實例會在之後的文章介紹。 ecto 是

Read More...