2013年12月15日 星期日

我如何教我五歲的小孩寫程式(一)


現在的父母都很流行送孩子去學才藝
但是    除了音樂   美術  英文
有沒有別的選擇??

好吧
我不會音樂   也不解美術  英文也挺破的
(其實是要花不少 $$$$    我很窮啊 ~~~嗚嗚~~)
看到這幾篇

再培养一个扎克伯克:六款适合儿童上手编程的App
适合儿童上手的八款编程工具
从娃娃抓起 6款适合5-15岁儿童学编程的App

身為程式宅宅的我
當然也想嘗試看看
有沒有可能給我家的五歲小男孩
試試看  透過這些工具
培養學齡前兒童撰寫程式的能力
倒不是希望培養他成為未來的佐博克或賈伯斯
而是希望
或許這些經驗    能成為他未來解決問題能力的養分

但是上述文章提到的這些工具(包含 Scratch)
不大適合學齡前的幼兒
最佳的 solution 或許是 ScratchJr
目前還沒有 release
目前最佳的 solution  應該是 FB 捧有推薦的 這個平台


挺有趣的
純 web 介面
以遊戲化的方式進行   孩子很感興趣
與 Scratch 積木編程的概念挺相似
孩子只有具備有左右方向  以及前進的基本的概念
不需要認識太多字
也能完成學習
(父母還是要幫忙一下啦   數位陪伴很重要喔~~)
重要的是   有簡體中文介面(總比沒有好   嗚嗚)
家裡有幼兒的   可以一試
目前初略小試    小犬已經可以到第六關了
其實後面的關卡   也不簡單喔
還牽涉到優化(例如你用了六個步驟   事實上只要四個步驟即可達成)
蠻好玩的
大家可以試試

2013年2月15日 星期五

改寫一支用Ruby 寫的大量快速 ping 的程式

年紀大  記憶力不好  記一下筆記做紀錄........

約莫在一年前    網管工作有個需求
希望能及時得知所有新北市連線學校 L3 與 Firewall 偵測即時連線狀態
最早期寫的版本是呼叫系統的 ping
但因是線性的
整個跑完需要約 25 分鐘    有夠慢  不夠及時
後來改寫成一個多執行緒版本
將他編譯成 windows 可執行檔
方便工程師除錯用

在教網環境下
多執行緒版整個跑完只需要 25 秒
從 internet 執行  也只需約 30 秒
執行時間僅需線性版的約不到 2% 時間
偵測結果也較為即時

最近需求也有些異動     因此著手改寫程式
原本的程式是在 Ruby 1.8.7 下寫的
新的電腦環境 Ruby 是1.9.1
對了 需安裝 net-ping library
結果悲劇發生......


挖    竟然主要的函式庫不支援 Ruby 1.9  挖哩咧......
好   冷靜     找另一台 PC 
裝上 Ruby 1.8.7
gem install  net-ping  成功   
再執行一下程式

咦  奇怪  之前執行這之程式 沒提到需要這個 library (也許之前已經有裝了  我也不知道???)
失敗   還得要安裝一個  win32-security
好吧    gem install win32-security
再執行一次    喵的咧    還是失敗

我的天啊  居然是 library 原始碼就有錯
這個 library 也太.....
居然逼我要去改原始碼
路徑在 Ruby1.8.7\lib\ruby\gems\1.8\gems\win32-security-0.2.0\lib\win32\security
改寫  sid.rb  第262行  "use_ptr"
後面逗號去掉  存檔
再執行一次  咦?  還是不行?

google 了許久   才發現原來需要再安裝 windows-pr
gem install windows-pr

最後這個程式需要在系統管理員權限下執行
再裝個 ocra library  打包成 exe檔
大功告成

我的心得是:
Ruby 每個 distribution 打包套件差異甚大
且許多函式庫相依性甚高  也依賴不同的 Ruby 版本平台
沒 A函式不能跑,後來裝了A才知道還要裝B函式
B函式裝完還需要裝C函式
過程還真的是有點瑣碎  許多地方得注意
一度想用 Python 改寫
但發現  好像也挺麻煩的
所以還是偷懶一下
乖乖用 Ruby 囉