網頁

2014年12月30日 星期二

IOT的典範應用 - Connected garden Edyn

圖片來源:kickstarter - Edyn


最近除了開始善用儲餘堆肥外,又重新開始準備好好經營我的小花園,但是我手現要面對的難題就是陽台西曬太嚴重,植物很容易枯死(曬死?),何時該澆水試門大學問...



順手查了一下目前這種濕度Sensor 在農業運用的目前的發展近況,想說Kickstarter應該有類似的玩具,結果發現了這個Edyn深得我心!!

1. 果然現在wifi chip夠便宜/夠省電,根本不需要用到Zigbee 的方式,小規模的部屬就很夠用了。
2. 因為夠省電所以可以用太陽能發電 (電池off)
3. 漂亮的機構設計(也有考量到防水),不得不說目前看到許多老外的產品設計都非常漂亮。
4. 除了幫你收集資料/提供控制水閥App操作外,重點還是背後的資料庫,根據政府資料(農業,土壤,氣候...等),還會給你施肥澆水的建議數據。




真的是堪稱 IOT,Big Data,Open Data 的結合典範啊~~

但是...目前成本一顆99美金....我的一個盆栽一個才100台幣....XDDD
(迷之音:有沒有強者要來分析一下硬體成本~)

看樣子還得自己勤勞點澆水...:P




2014年12月26日 星期五

[筆記] 安裝Samba 4 As Linux Active Directory Server


這陣子為了開發整合MS Active Directory Server 的案子架設測試/開發環境,才意外發現原來Samba4已經有提供AD 的完整功能,以下是Samba4 所提供的功能:

Samba 4: Linux Active Directory Server  already include:
  • support of the 'Active Directory' logon and administration protocols
  • new 'full coverage' testsuites
  • full NTFS semantics for sharing backends
  • Internal LDAP server, with AD semantics
  • Internal Kerberos server, including PAC support
  • fully asynchronous internals
  • flexible process models
  • better scalablilty from micro to very large installations
  • new RPC infrastructure (PIDL)
  • flexible database architecture (LDB)
  • embedded scripting language (ejs)
  • generic security subsystem (GENSEC)
  • over 50% auto-generated code!
網路上有許多文件讓人和的很疑惑,在這邊要特別注意的是Samba4 他有提供兩種功能,一種就是傳統的網路芳鄰(網路磁碟)的功能,這種就用一般yum install samba4 就可以安裝,另一種是Samba4 as AD 的功能 (這兩種功能不能並存),請參考以下文件:
而安裝AD的方法又有兩種:
A. 下載source code 手動編譯安裝的方法 (官方文件的方法),可以參考以下教學



B. 使用Sernet 所提供的yum Repo安裝方法

為什麼官方目前尚未提供yum的安裝方式呢?參考這篇文章 Samba AD DC in Fedora and RHEL
As Fedora and RHEL are using MIT Kerberos implementation as its Kerberos infrastructure of choice, the Samba Active Directory Domain Controller implementation is not available with MIT Kereberos at the moment. But we are working on it!
  
所以目前只有Sernet 這個組織把手動安裝的版本整合好變成可以yum安裝,只是要使用他們的Repo必須先註冊,然後他們會提供一組帳號密碼讓你access 他們的Repo

[sernet-samba-4.1]
name=SerNet Samba 4.1 Packages (rhel-7)
type=rpm-md
baseurl=https://account:password@download.sernet.de/packages/samba/4.1/rhel/7/
gpgcheck=1
gpgkey=https://account:password@download.sernet.de/packages/samba/4.1/rhel/7/repodata/repomd.xml.key
enabled=1

只要把這個Config 加入/etc/yum.d/下面,就可以輕鬆安裝Samba4
1.  The SerNet build key - Install a RPM package:
wget http://ftp.sernet.de/pub/sernet-build-key-1.1-4.noarch.rpm
rpm -i sernet-build-key-1.1-4.noarch.rpm

2. 安裝
yum install -y sernet-samba-ad  sernet-samba
另外要啟動Samba AD Domain 可以參考以下指令:

sudo samba-tool domain provision --realm=LAB.HOWIE.TW --domain=HOWIE --adminpass=HowieP@ssw0rd --server-role=dc



2014年12月24日 星期三

專案驗屍(Project postmortem)Vs. 專案回顧(Project Retrospectives)


你們專案執行的是專案驗屍(Project postmortem)還是專案回顧(Project Retrospectives) ?
 
有人說:驗屍?回顧?不是都差不多只是名詞不同罷了?
又有人說:失敗的案子才是驗屍,成功的案子就是回顧~

的確,從字面上來解釋其實都通,所進行的動作可能也類似,但是真正的差別在於本質的Mindset,參考Retrospectives: Retrospectives vs. Classic Postmortem, a Difference in Mindset 的文章把差異整理成以下幾點:

2014年12月17日 星期三

Startup 網路開發商的新機會? SDN/NFV 的App Store


話說2014年初因緣際會接觸到了SDN/NFV/Docker,還想說應該要來研究一下,也收集了一些資料寫了一些文章:

一轉眼一年就要過去了,結果後來某些機會消失了,工作上也根本沒機會讓我繼續玩下去,只能說計畫趕不上變化,不過總算還是有開始玩玩Docker...anyway..

2014年12月16日 星期二

How to Increase VM's Entropy (熵) For Generate Random Number

圖片來源:popphysics


話說今天利用Vagrant +virtualbox 在建立 KDC +LDAP 的開發環境,結果在Create KDC Database 時發現奇怪的問題...

在執行kdb5_util create -s 的時候,畫面就停在Loading random data就不動了....

看CPU和Mem也沒有異常的吃緊?Google 一下發現原來是在虛擬環境下 Linux 的Random不給力啊

[1] krb5_newrealm hangs on fresh install
[2] virtualbox - poor entropy performance


2014年11月30日 星期日

[地中海郵輪之旅] 義大利Bari

(小火車Tour 的美女導遊)



巴里(Bari) 是義大利義大利南部第二大城市,也是一個歷史悠久的古城,在歷史上被羅馬人(Romans)、拜占庭人(Byzantines)、諾曼人(Normans)以及斯瓦比亞人(Swabians)統治過,而且幸運的是的是幾乎統治過這個城市的文明的遺跡都有保存著。

城鎮包括三個部分半島北部建築密集的老城區市現在主要的夜生活街區之一,其中有著名的聖尼可拉老聖殿、聖撒比諾主教座堂(1035年 - 1171年)和斯瓦比亞城堡

此外在巴里另外著名的就是有著被聯合國教科文組織UNESCO在1996年登錄為世界文化遺產的Alberobello (阿拉貝羅貝洛),如果將義大利國土形狀比喻成靴子,Alberobello阿拉貝羅貝洛就位在靴子後跟的地方,它以獨特的圓形石屋(Trulli土利屋)而出名。

2014年11月24日 星期一

[地中海郵輪之旅] MSC郵輪威尼斯登船完全攻略手冊


前言:

其實這篇的標題應該是窮人家MSC郵輪威尼斯登船完全攻略手冊~XDDD
如果是個潘阿捨得花錢,就全部請旅行社一手包辦就好,幹嘛自己來~
(謎之音:這是情調! 這是背包魂!!)
本篇攻略將會嘗試詳盡的解說登船路線和可能花費!!

首先根據MSC郵輪的官網解說,到了威尼斯該如何登船:

From St. Lucia Railway station you can reach Piazzale Roma on foot (600 meters approx.), and then the People Mover train will connect you to the Marittima port entrance (service on payment).

2014年11月15日 星期六

EclipsLink's @Array on PostgreSQL does not work!?



最近開發的案子會需要使用PostgreSQL ARRAY 的功能,對於使用JPA 來說通常會有兩種選擇,一種是Hibernate ,一種是EclipseLink ,就因為看上EclipseLink 有支援@Array 的選項,就很開心的選用,沒想到這才是惡夢的開始....

老實說,第一次看到文件時是滿頭問號,首先看一下EclipseLink 官網wiki的介紹EclipseLink 對於PostgreSQL 的支援:

PostgreSQL supports structure data-types, JDBC Struct and Array types. These can be mapped using EclipseLink's @Struct and @Array annotations.

所以要使用ARRAY的型態就必須使用@Struct 和 @Array 兩個annotaion,那讓我們來看看他們的API文件:

EclipseLink - @Array 這部分的文件比較沒問題,的範例有提到必須在Entity Class 上加上@Struct 的annotation,只是他沒提到@Struct 裡面還有其他必填欄位,所以如果照他案例來寫,馬上Eclispe 就會告訴你有錯誤。

EclipseLink - @Struct 的API文件裡關於name 這個attribute的描述:
(Required) The database name of the database structure type
這段英文讓我很疑惑,到底是要填什麼東西?下面的範例跟這段話似乎也對不起來...
上網找了其他範例使用方式也都不盡相同....
嘗試了各種組合, 如果只使用@Array Table 會順利產生,不過table 內容似乎有問題,無法當正常當Array 使用,但是如果加了@Struct 則JPA就不會自動(且正確)的幫我們生成Table....


最後終於在這個討論串 - Postgresql - Creating PostgreSQL array types like "text[]" using JPA (EclipseLink) 看到也有人跟我遇到差不多的問題,原來這是一個Bug - Using @Array Tag in postgreSql,如果有嘗試要使用這個功能的人,可以持續關注這個bug或是找其他方法workaround吧...

目前使用的版本:
Spring-data-jpa 1.6.4
EclipseLink 2.5.2

如果有哪些大大知道解法,也麻煩跟我分享一下解法~XD

2014年10月28日 星期二

[地中海郵輪之旅] MSC 遊輪 Mini Club & 專屬托嬰服務

話說這次選擇MSC還有一個原因就是他特別針對帶小孩的家庭有提供一系列的服務,甚至連Baby的托嬰服務都有耶!! (不過害怕老外的小貝不知道會不會崩潰...XD)


MSC 跟奇哥(Chicco)有合作,有一系列根據不同年齡層的小孩提供不同的服務,看了讓人好心動啊,其中針對1~3歲的小朋友有提供以下服務:

2014年10月2日 星期四

[筆記] how to start a startup - 1 with Alpha Camp

圖片來源:how to start a startup

上星期去參加ALPHA Camp所主辦的how to start a startup 電影欣賞會討論會,主要的內容就是在一間很大的教室觀看由 Y-combinator 的執行長 Sam Altman 在史丹佛大學開辦為期 10 週的 "How to Start a Startup" (課程官網)系列課程影片。

其實我一開始以為他是跟美國現場直播,所以可以現場問問題(想太多~XD),結果是在一個很大的教室大家一起看影片,然後看完影片後有其他創業前輩來分享重點心得,我覺得這個活動的舉辦的初衷是蠻不錯,只可惜場地太大,螢幕太小如果做得太遠幾乎什麼都聽不到也看不清楚...Orz..

2014年9月21日 星期日

堆肥DIY

圖片來源:喬凱亞生物科技


這一陣子都在執行我的陽台小農場計劃,目標有三種類型:

1. 食物

種一些自己可以吃的東西(目前只有地瓜葉比較成功,不過離量產還有段距離..XD)

2. 室內植物空氣清淨

種清淨空氣/消除環境毒素的植物(如棕櫚科黃椰子....但是被我種死了..Orz..)

3. 藤蔓類

因為客廳外的陽台西曬太厲害了,我的目標是希望可以重一點藤蔓類爬滿陽台,可以減少西曬....

不過最近有點遇到瓶頸,除了地瓜葉外其他東西似乎都很難生存,不過研究了一下似乎土壤的品質以及適時的施肥是很重要的,所以就開始研究該怎麼堆肥....反正家裡有在煮東西廚餘很多...:P

所謂的堆肥就是:
堆肥是指將農產品收穫後之殘渣(如稻桿、葉、莖)及家禽畜糞等材料堆積後,利用微生物的作用做好氧性發酵分解後的堆積肥。但也有人將之稱為廄肥、Compost(堆肥)、有機物等。近代也有人利用農業以外之有機性廢棄物包括廚餘經過堆積發酵,製成堆肥供農業使用。


不過看了一下以下資料,好像沒有想像中簡單~

[1] 堆肥V.S微生物&微生物的分解接力賽
[2] 主婦聯盟 - 廚餘堆肥DIY
[3] 肥土菌的替代方案
[4] 廚餘堆肥DIY自己動手做-如何在家製作堆肥


最後找到這個喬凱亞生物科技股份有限公司有完整工具以及教學影片,那就來試試看吧~XD



2014年9月15日 星期一

@NotNull vs. @Column(nullable = false)


Annotation 很好用,但是很多時候也讓人很疑惑,就像用JPA在設計Model (or Domain or POJO?)時,如果我要規定這個值不能能是Null 那應該是要用@NotNull 還是  @Column(nullable = false) 甚至是@NotEmpty !? 其實兩個一點都不衝突,只是施力的地方不一樣。

2014年9月14日 星期日

MaxOS 上Docker 管理工具 boo2docker and Kitematic



最近要為新專案建立開發與測試環境,就想說那就趁機來玩一玩Docker 吧!不然都只是紙上談兵。

我的開發機器是MBP是無法跑原生的Docker,好在Docker也有幫Mac 使用這準備了boot2docker 的套件,其實說穿了就是一個virtualbox 的vm (跑的是busybox 所以也是個非常lightweigth 的vm),然後在vm 裡面跑docker,那boot2docker 有提供什麼好處?

[資安] What is Blackhole exploit kit?

圖片來源:itpro


這一陣子一直聽到Exploit kit 這個駭客用來攻擊伺服器的名詞,但是實際運作原理是什麼一直不清楚,最近終於有時間看了一下wiki - Blackhole exploit kit 的介紹,心裡才大概有了個譜,攻擊步驟大概如下:

  1. The customer licenses the Blackhole exploit kit from the authors and specifies various options to customize the kit.
  2. A potential victim loads a compromised web page or opens a malicious link in a spammed email.
  3. The compromised web page or malicious link in the spammed email sends the user to a Blackhole exploit kit server's landing page.
  4. This landing page contains obfuscated JavaScript that determines what is on the victim's computers and loads all exploits to which this computer is vulnerable and sometimes a Java applet tag that loads a Java Trojan horse.
  5. If there is an exploit that is usable, the exploit loads and executes a payload on the victim's computer and informs the Blackhole exploit kit server which exploit was used to load the payload.

所以Blackhole Ecploit kit主要功能還是引導你到他們的laning page 透過某些技術來掃描你系統已知的弱點,然後在針對這個弱點再下載相對應的破解/後門/木馬程式到你電腦....然後你的電腦就被俘虜了...如果不及早處理,你的電腦就會變成殭屍大軍,或是變成下一個攻擊別人電腦的跳板....

聽起來也很像所有防毒軟體的運作模式?XD




2014年9月6日 星期六

整合 Jetty9 與 spring-security-kerberos (spnego)

好快一年都過了3/4 了,趁著假期來整理一下之前的筆記以及整理到一半的文章,年初在做BEE專案的時候,需要做一個簡單的Key manager Web同時要提供Kerberos 認證的機制。

看了一下荒廢已久的Spring 專案範本,覺得是該趁機拋棄使用xml更換到透過annotation 的方式來設定,順便研究如何把Jetty 8/9 跟 Spring 3.x 以及Spring-Security-Kerberos整合,參考以下兩個專案:

* spring-security-kerberos
* jetty-springmvc-thymeleaf-template


不過發現spring-security-kerberos 似乎有一陣子沒有更新,而且也還都是使用 xml更新,所以只好把它source code 搬進來修改,然後跟xml 和 annotation 混搭。

以上的Source code都可以在我的Github - jetty-spring-spnego找到。




 

2014年8月30日 星期六

初探Docker - Docker as Sandboxes



接續上一篇初探Docker - Docker 跟 LXC 以及一般Hypervisor有何差別?

前幾天聽到Hitcon團隊的演講,在講述系統如何被破解和入侵,比如說php的web如何透過sql injection和埋後門的方式被入侵,想想也是捏了一把冷汗.....

很多時候就算我們自己寫程式時會注意這些東西,但是當我們用別人現成的Open Source套件或是Lib時呢?我們不一定會(一定不會)把source code 都review一遍,就直接把東西裝來玩,就算我們很注重安全,但是整個系統可能就因為我們裝了這些軟體而門戶大開...

那些知名的軟體專案都可能會有漏洞了,更何況那些來路不明的軟體/系統呢?我們都知道亂裝來路不明的軟體本來就是大忌,但是手賤又想要玩玩看的話那該怎麼辦呢?像最近看到一個自定短網址的系統yourls,就很想裝起來玩玩看,但是又怕有問題...這時候我們就該使用sandbox~

2014年8月27日 星期三

[筆記] 如何安裝使用Stbeclipse



[碎念] 有時候真覺得自己有點死腦筋,明明官方的教學範例用的是不熟悉的sbt,那就選其他的學習方法就好了,但是就覺得不搞懂就全身不舒服....

故事是這樣,想玩玩看 Akka 和 Play ,結果這兩個都是Scala based 的Framework,縱使他們都有提供Java的Sloution,但是範例程式通通都適用sbt在build,所以只好也來玩一下sbt。

2014年8月11日 星期一

初探Docker - Docker 跟 LXC 以及一般Hypervisor有何差別?




聽到Docker 這個玩意大概是2014年年初,但是一直到最近才真的有時間開始研究....

話說一開始聽到Docker 是利用LXC的原理來實作,腦袋瓜馬上浮現的架構圖就如下圖所示,是個Lightweight 且只能跑Linux的環境東西,能應用的範圍應該有限?但是我錯了~大錯特錯~:P





關於 LXC


先撇除一般Hypervisor 不談(大家應該都很熟悉了),在了解Docker之前我們應該先來了解,什麼是 LXC (Linux Container)?我們現來看一下他的定義:

LXC (LinuX Containers) provide an isolated operating system environment with its own file system, network, process and block I/O space. A favorite way to describe containers is that they are like “chroot on steroids”, since they provide the file system isolation that chroot jails provide but they go beyond that by also providing an IP address, a separate process domain, user ids and dedicated access to the host’s physical resources (i.e. memory, CPU) which chroot jails do not provide


主要用意是提供比chroot更完整的 process 的isolation,但是範疇都還是寄生在同一個Host OS上面,所以他很輕量,也很快(因為不像Hypervisor 每開一個Guest OS都要跑完整的開機流程),參考LXC containers in Ubuntu Server 14.04 LTS 這篇文章的比較如下:



Virtualization (i.e. kvm, xen) LXC Containers
Footprint Requires a hypervisor and a full operating system image. Does not require a hypervisor or a separate operating system image.
OS supported Any OS supported by the hypervisor Most Linux distros, uses same kernel as host
Typical server deployment 10 – 100 VMs 100 - 1000 containers
Boot time Less than a minute Seconds
Physical resources use (i.e. memory, CPU) Each VM has resource reserved for its own use Shared by all containers


更多關於LXC 的操作,可以參考以下文章:

Why Docker more than LXC


沒錯,一開始Docker也是架設在LXC之上,不過從Docker 0.9版以後,LXC 已經不再是Docker 唯一且預設的執行環境 (請參考:docker drops LXC as default execution environment),Docker 現在支援更多種的"isolation tools"包含:
  • DOpenVZ
  • systemd-nspawn
  • libvirt-lxc
  • libvirt-sandbox
  • qemu/kvm
  • BSD Jails
  • Solaris Zones
  • chroot





不過這又是另外的故事了,我們還是回到最一開始的討論,到底Docker比LXC多提供了什麼?參考下面這張投影片:





Docker增加了AUFS以及Base image的概念:

AUFS 的概念可以參考 - Linux AuFS Examples: Another Union File System Tutorial ,以我的理解就是把Host的目錄當作Guest (Container)的Disk 來用。


但我覺得最有趣的就是base image的概念,透過base image,我們可以就可以在docker上執行各種的distribution Linux 而不受限於Host OS種類,Image的概念如下,其實就是一堆必要檔案的集合:

Docker images are essentially a collection of files which include everything needed to run that process. This is everything from the OS packages and up.
A docker image has a default process it runs when it is instantiated. This could be bash, to drop you into the terminal, or a web server so you can access it from the browser.



此外Docker 又有一種有趣的玩法,就是直接透過執行Docker run 這個指令,就可以在Host OS上對Container 內的OS下命令,光說沒有Fu,可以看一下以下的指令以及執行結果。


CoreOS (alpha)
core@core-01 ~ $ docker run centos:centos6 yum update
Loaded plugins: fastestmirror
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package ca-certificates.noarch 0:2013.1.95-65.1.el6_5 will be updated
---> Package ca-certificates.noarch 0:2014.1.98-65.0.el6_5 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch        Version                    Repository    Size
================================================================================
Updating:
 ca-certificates      noarch      2014.1.98-65.0.el6_5       updates      1.1 M

Transaction Summary
================================================================================
Upgrade       1 Package(s)

Total download size: 1.1 M

各位看出來了嗎?這個結果很有趣,我的Host OS 是CoreOS (這又是另一個故事),但是我可以透過 docker run centos:centos6 (指定image:指定instance)這個指令要求container執行CentOS專屬的指令 yum update,而且我從外部下的所有指令都可以被錄下來用來製作image,這樣我只要config好一個image就可以複製成很多份去deploy了!

當然我們也可以像傳統使用VM的方式,登入這個Container(模擬),指令如下:

docker run -i -t centos:centos6 /bin/bash
bash-4.1#

這就跟傳統Vagrant ssh 的感覺很像。


玩到這邊慢慢的對於Docker 有些fu了~不過還是有許多的問題,且讓我邊玩邊整理筆記~:P


2014年7月22日 星期二

AWS EC2 Reserved Instance 注意事項 - 你選對AZ了嘛?

圖片來源:financialbuzz

上面是我收到這兩個月AWS 帳單的表情....靠妖怎麼那麼貴!?我不是已經用了Reserved Instance 了?使用AWS的優點是收費彈性,但是這也是恐怖的地方,如果沒有設定好,以及隨時監控,你的錢就會在無形中燃燒殆盡....



2014年7月18日 星期五

[WMI] 詭異的Bug ,虎爛的Best practice - Put install package at tmep folder

圖片來源:Mud Day


太久沒發文,來篇技術抱怨文(咦?),話說最近在跟非常不熟悉的微軟系統奮戰,不熟悉就算了,又必須透過跟他很不合的Java 來透過WMI介面來控制HyperV,一整個就是災難....我的心情就跟上面那張圖一樣....

雖說網路上也有許多強者有嘗試開發Java 透過WMI來控制HyperV的Lib,不過很多都是年代久遠缺乏維護,因此只能抓他的source code 重新來改寫和加功能,有興趣的我把他放在github - JWbem


這幾天遇到一個奇怪的Bug就是透過WMI的Win32_Product來遠端安裝軟體,如果Host 沒有登入(沒有任何登入Session),然後WMI安裝就會發生錯誤,然後錯誤訊息讓然摸不著頭緒,只有return code: 1603 A fatal error occurred during the installation.

上網研究半天只有看到一個類似的討論:MSI Remote Installation Question!

The best way to do a remote msi installation is as follows:
1. Set the access to the remote location if the MSI is stored at a remote location
C:\Windows\System32\net.exe use $RemotePath password /user:username
2. Copy the MSI file to the system you want to install it to.
Create the C:\Temp folder if it doesnot exist
if(!(Test-Path "C:\Temp"))
    {
        New-Item -Path "C:\Temp" -ItemType directory
    }
Copy-Item "$RemotePath" "C:\Temp"
3. Use the WIN32_Product Class in the following way
$product= [WMICLASS]"\\.\ROOT\CIMV2:win32_Product"
4. Now use the install method which otherwise is not shown up when we just use Get-WMIObject cmdlet
$ret = $product.Install("C:\Temp\MyProduct.msi","ADDLOCAL=ALL",$true)

5. If you want you can delete the msi file which you copied to the C:\Temp folder.

程式邏輯全部一樣,唯一的差別就是他建議要安裝在Temp的目錄下.....這..死馬當活馬醫...
我就把安裝檔放在c:\windows\temp\

這樣就可以了...這樣就可以了....囧rz...


[Update]

後來發現我以為這個Best Practice work...但事實上還是不行!! 只是前一個Seesion可能還在?

無奈啊...繼續找解法...



2014年7月8日 星期二

Security isolation and Docker

圖片來源:網路


根據Xen Community PH值還算沒有小於一的文章 The Docker exploit and the security of containers提到,Docker 的確是個不錯的工具,適合以下情境:
  • Excellent tool for packaging and deploying applications
  • Using containers to separate an application from the rest of the user-space of your distribution

也就是Docker 所要佈署的程式都,最好都是你trust 的program,並不適合類比成VM使用,因此在Hack new 上Docker 的作者也有跳出來說:

Please remember that at this time, we don't claim Docker out-of-the-box is suitable for containing untrusted programs with root privileges. So if you're thinking "pfew, good thing we upgraded to 1.0 or we were toast", you need to change your underlying configuration now. Add apparmor or selinux containment, map trust groups to separate machines, or ideally don't grant root access to the application.

Docker will soon support user namespaces, which is a great additional security layer but also not a silver bullet!

When we feel comfortable saying that Docker out-of-the-box can safely contain untrusted uid0 programs, we will say so clearly.
最後Xen Community 也有幾個建議:

However, using containers for security isolation is not a good idea. In a blog last August, one of Docker’s engineers expressed optimism that containers would eventually catch up to virtual machines from a security standpoint. But in a presentation given in January, the same engineer said that the only way to have real isolation with Docker was to either run one Docker per host, or one Docker per VM. (Or, as Solomon Hykes says here, to use Dockers that trust each other in the same host or the same VM.)
結論:

好的工具也是要用對地方,用對方法~:P

延伸閱讀:

[1] Docker Security
[2] Solomon Hykes Explains Docker

2014年7月1日 星期二

[研究] HyperV Virtual Network Type


如上圖所示,Hyper-V的網路架構是在Hyper-V host Level 可以建立很多virtual switch,每個VM都要透過網路卡(Virtual Network Adapter)連接到 virtual switch 上面,而Hyper-V 網路卡(類型主要有三種:

External Virtual Networks


這種類型的網路卡是直接跟Hyper-V host 實體網路卡綁定

Internal Virtual Networks


沒有跟實體網路卡綁定,所以無法接觸外部網路,主要用來VM與VM之間或是VM與Hyper-V host 之間的通訊。


Private Virtual Networks


單純給VM資間用來通訊使用(適合VM Cluster 通訊情境)

[Magento] 安裝 Extention 發生404 not found 該如何處理


如果安裝完Magento 的extention 在System --> Configuration 發現是404 not found 該如何處理


Step 0: Clear your cache AND sessions on the live server.

Step 1: Check if your module is installed using the free/open-source Module List Module

Step 2: Drop some debugging code in the following method. The var_dumps will tell you which files/classes Magento's routers are looking for with your module, but can't find.


Reference:

[1] Magento Extension 404 Error






2014年6月10日 星期二

[地中海郵輪之旅] 土耳其簽證不用啦~~



這次規劃的地中海郵輪之旅主要會停靠四個國家,義大利、希臘、土耳其、克羅埃西亞,原本擔心要辦四個國家的簽證不但麻煩荷包又會大失血,不過上網查了一下資訊真是令人欣慰:
  • 希臘 (歐盟對我國免申根簽證)
  • 克羅埃西亞 (克羅埃西亞自2011.1.11起與歐盟對我國免申根簽證 90天)
  • 土耳其 (電子簽證)
  • 義大利 (歐盟對我國免申根簽證)
所以目前只剩下土耳其需要簽證,而且改成電子簽證後也變便宜了:

1.電子簽證是一種允許持有者進入土耳其的文件,由申請人透過 電腦網站申請
2.申辦費用為美金24元(約折合新台幣600元),較原先我國人前往土耳其駐華貿易辦事處申辦的「單次、停留期限30天」之傳統簽證便宜近新台幣1200元。

下圖就是是土耳其電子簽證網站(還蠻漂亮的),啊啊啊我好想去土耳其坐熱氣球~~~~



不過要注意的是,電子簽證只能申請三個月內的簽證。



不過凡事都有個But! .......後來才發現電子簽證只適合從特定機場進入,如果從海路進去還是要辦普通簽證(參考外交部土耳其簽證):


倘有以下情況之ㄧ,仍必須先向土耳其駐華貿易辦事處或土耳其駐外使領館申辦適當簽證後始能入境土耳其:

(一)擬申請多次入境簽證;

(二)因就學、工作等原因;

(三)非自上述3座國際機場入境;

(四)由海路方式前往土國者


所以如果以郵輪的方式登陸,那就必須還是得要到土耳其駐外使領館身辦簽證....Orz..

土耳其駐華貿易辦事處領務收件時間為週一至週五每天上午 9 時至下午12時30分。

地址:110台北市基隆路 1段333號19樓1904室

電話:(02)2757-7318;FAX:(02) 2757-9432。

需要準備的文件:
(a)護照正本+影本
(b)一吋彩色照片一張
(c)申請表格
(d)當場繳費(單次1,820元,多次6,050元)
(e)工作天數:兩個工作天


坐郵輪的請看這裡!!


以上是一般進入土耳其的方法...但是!仍然有個但是,就是如果你是坐郵輪!免簽證!!請參考土耳其官網問答

Question: I am taking a Mediterranean boat cruise with my family. Our ship will also visit Kuşadası. Do we need visas to enter Turkey?

Answer: Foreigners who are travelling to Turkey by cruises are allowed to enter Turkey without visa for a maximum period of 72 hours, with the permission given by the local security authorities.
所以如果透過郵輪,在沒有簽證的狀態下仍然可以停留72hr ~耶...又省下一筆了...:P


2014年6月7日 星期六

[地中海油輪之旅] 郵輪訂位篇

圖片來源:網路


Knowledge is power, Knowledge is money~

之前朋友說過直接透過國外的郵輪訂位網站訂位,會比國內旅行社代訂便宜很多(想想也是啊,人家專業服務總是要給人家賺頭嘛), 只是沒想到會差那麼多,因為旅行社和貿易商除了賺服務的錢,還有很大一部分是在賺資訊不對稱的錢~

正所謂花錢能解決的都是小事,但是如果想要省錢那就必克服許多難關,因為真的自己走過一次流程後,就會發現這對於許多人來說門檻可能還挺高的,你必須具備以下能力:

2014年6月1日 星期日

[地中海油輪之旅] 郵輪規劃篇



背包魂~~隨著年齡增長以及各種的生活壓力排山倒海而來,持續的被打壓中,尤其是當游小貝剛出生那一陣子達到一個高峰,很多時候會有種~~~啊~~以後是不是都沒機會出國玩的感覺Orz....

不過還好這小子還算配合,爸媽愛玩心臟又都很大顆,在四五個月時挑戰峇里島成功後,回來就一直在想帶著一個小嬰兒到底可以去哪裡玩呢?不知道有沒有機會帶著一個小嬰兒去歐洲該怎麼玩呢?還是要帶去美國玩呢?

很幸運的哩程數在今年提早達標了!十二萬哩可以換兩張到歐洲的機票!!再加上最近工作實在是太操勞了,需要有時間休息放個假充電一下~於是我就開始研究歐洲之旅的可能性。

2014年5月25日 星期日

2014年5月10日 星期六

育兒方法論與敏捷式軟體開發方法論?

圖片來源:網路

上次寫了一篇 Scrum 與育兒,今天太累了反而最失眠,半夜又爬起來胡言亂語一下...

最近除了忙著專案外也忙著照顧小孩,身為工程師在專案開發上隨時都得Update 最新的新知和嘗試找尋最適合的專案開發方法/模式,同樣的在照顧小孩上,也得常常上網蒐集資料和看書來學習如何有效與正確的照顧遇教育小孩,不過看的越多就會覺得,其實各種方法論沒有什麼是一定好或是一定對,畢竟這很多都是經驗所產生的實踐方法,很少也很難有明確的科學定義,可能有所謂Best Practice ,也有可能是anti-patern,也可能只是商人為了賺錢新想出來的名詞(誤)。而許多過去覺得不錯的方法,也許隨著時代的進步漸漸的可能也會變成不是那麼適用,或是出現檢討的聲音,就像最近的熱門話題 TDD以死三大巨頭在網路上的大戰

看著看著漸漸反倒有個想法,其實育兒方法論與敏捷式軟體開發方法論,其實有蠻多相似的地方....

2014年5月1日 星期四

Social Media Monitoring and Analytic - 輿情監控分析系統


話說在國外Social Media Analytic 這幾年來一直都是很熱門的領域,因為不管從商業價值來說或是從技術內涵來看都是很值得關注的題目,所以一直以來都有陸續在收集和整理相關的資訊,下面整理出這個領域之所以熱門的幾個原因:

以商業價值來說,這些工具可以幫助企業(or 政府)收集網路上顧客/民眾所談論的內容(輿情),進而達到:
  1. 找出流行趨勢脈動與可以炒作的議題
  2. 了解客戶對於企業/品牌 的意見,做出改善
  3. 面對危機(抹黑,負評)如何迅速的做出反應(滅火)

既然有商機當然就會有很多創業家投入研發相關的產品,國外還每年都會有相關的文章整理出實用的工具與比較如:

2014年4月28日 星期一

[開箱文] FreePP Camtalk


寫了這麼久的Blog終於有廠商找我寫開箱文了!! (感謝Abby哥引薦~),而且FreePP Camtalk 的廠商也很大方,直接就把這個產品直接送給我,也沒有限制我撰寫的內容,有任何好的壞的都可以寫,盡量給建議,那我就不客氣了~XD


2014年4月22日 星期二

BEE (Big Data Encryption Extension) Open Source 摟~

沒辦法...誰叫Hive應該是蜂巢卻把蜜蜂偷走...:P


耶~在經過Herb 大大的努力和帶領下,BEE 專案終於可以Open Source啦~下一步就是要把有修改的patch submit 回Hadoop Community去 (淚~~) Source code 已經放在 Github - trendmicro/BEE 上,各位可以下載來玩玩看。 第一次把專案source code 赤裸裸的放上來真是害羞特別的經驗。


2014年4月19日 星期六

Certified Scrum Product Owner® Recommended Reading 推薦閱讀




這是一個必須要靠自己找答案的旅程,老師的角色主要在啟發與引導找到路與答案的方法,每個人的路和答案也可能都不一樣,人生沒有唯一解。

正所謂師父引進門修行在個人,真正更深層的東西,就要靠實戰以及更多的閱讀,要成為專家的條件就是付出一萬個小時以上的努力,以下是老師推薦的書單,總共有三大類,這些看完應該也要一萬個小時吧...囧rz..
  • 直接跟Scrum有關的技術類書籍
  • 跟Product owner 有關的Marketing類書籍
  • 形而上的經典著作

2014年4月16日 星期三

[Troubleshooting] Magento The requested URL was not found on this server.



當使用Bitnami 版本 Magneto 遇到The requested URL /opt/bitnami/apps/magento/htdocs/index.php was not found on this server. 該如何處理?

原因是因為開啟Web Server Rewrite,但是後台Apaceh沒有做相對應的修改。


2014年4月10日 星期四

[懶人包] Agile 敏捷式開發


話說今天朋友傳訊來問我

友:有沒有關於有Agile開發流程的文件?
我:文件?沒有耶~去孤狗一下啊~
友:姑狗那麼多我要怎麼整理XD

我:喔你要懶人包嘛~~

嗯...於是我丟給他以下影片~



2014年4月9日 星期三

What is Similarity Digests?



這麼硬的題目,當然要來點有趣的圖片,才能遮掩我的無知(誤),由圖片應該可以猜測文章的題目應該是跟明星臉有關(再誤),這次的題目是 - Similarity Digests (相似度領悟?)



前幾天收到教育訓練的通知信,題目是 Similarity Digests: Hashes for data mining and big data,一看到是跟Data mining 和Big data 有關就立馬報名了(自動乎看不懂意思的Similarity Digests)......沒想到這才是痛苦的開始,因為內容跟Big Data ...至少跟我想像的不太一樣。


傳統的檔案比較通常使用MD5,SHA1..等,但是這是用來比較兩個檔案是否一樣,所以只要有改一點點東西,這兩個檔案的Hash值就會完全不一樣,但是如果我們想要了解這兩個檔案的相似程度呢?這時候就要使用 Similarity Digests,它主要的用途用來比較兩份個檔案的相似程度,包含執行檔,圖檔(非壓縮格式),文字檔...等,不過當然還是有其限制和適用範圍。

2014年4月3日 星期四

[Issue] jinterop - java.lang.ArrayIndexOutOfBoundsException: 16



當使用jinterop 遇到以下問題時:


java.lang.ArrayIndexOutOfBoundsException: 16    
at jcifs.util.Encdec.dec_uint32le(Encdec.java:90)    
at ndr.NdrBuffer.dec_ndr_long(NdrBuffer.java:146)    
at ndr.NetworkDataRepresentation.readUnsignedLong(NetworkDataRepresentation.java:64)    
at org.jinterop.dcom.core.JIRemoteSCMActivator$RemoteCreateInstance.read(JIRemoteSCMActivator.java:642)    
at ndr.NdrObject.decode(NdrObject.java:36)    
at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:137)    
at rpc.Stub.call(Stub.java:113)    
at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:645)    
at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:496)    
at org.jinterop.dcom.core.JIComServer.(JIComServer.java:460)    
at de.pdinklag.wmi.WMITest.main(WMITest.java:44)



參考官網的討論群組 Exception in connect() ,原因是JIRemoteSCMActivator造成的問題,已經有把code commit 到svn但是並沒有新版release ,所以官方建議我們自己從svn 下載下來包成jar檔使用。

 為了方便,Mirror  一份到Github 有興趣的可以自己抓下來改。

https://github.com/howie/jinterop

https://github.com/howie/jinteropdeps







2014年3月26日 星期三

[清單] 海峽兩岸服務貿易協議公聽會


回歸服貿議題,如果你還沒看過,或是被嗆沒有看過,下面是把所有公聽會資料整理出來的清單,包含:
  • 立法院的公聽會錄影檔平均都8~9hr
  • 社運團體把公聽會個別報告者剪輯出來的youtube影片
  • g0v 重新整理易讀版的立院公聽會公報
不要懶人包,不要有偏見,那就好好一場一場看看裡面討論的內容吧~:)
覺得很複雜?無從判斷,那至少先聽聽對你自己所處的產業會有什麼影響。
另外1~8場是國民黨辦的,9~16場是民進黨辦的,給大家參考一下

2014年3月25日 星期二

[教學]讓 Eclipse Support Java 8



Java 8 來摟~你準備好了沒? (我是還沒啦...Orz..)

如果想要讓Eclipse Kepler + 可以支援Java 8 則要安裝以下Plugin:

http://download.eclipse.org/eclipse/updates/4.3-P-builds/


安裝完以後,就可以從系統設定Java--> Compiler 看到新的設定 1.8 的出現(不過當然要先裝JDK 8)


Reference:
[1] JDT/Eclipse Java 8 Support For Kepler

2014年3月24日 星期一

[教學]HyperV setup for remote management


從Window 2012 Server 開始 Hyper-V 的管理介面就被獨立出來,如果要管理通常的作法有兩種:
  • 在Windows8 裝Hyper-V Manager 遠端管理Window 2012 上的Hyper-V Server
  • 透過WMI API 去管理 Window 2012 上的 Hyper-V Server
不過如果要開啟遠端管理的權限,則需要作很多複雜的設定,可以參考以下兩篇文章:

1. 安裝HVRemote 來設定 - Hyper-V Remote Management Configuration Utility (HVRemote)
2. 手動開啟Window 2012 的管理權限 -  Admin Guide 2. Cloud Node. Hyper-V


不過還好第二篇文章也佛心來著把所有複雜的設定指令都寫成script (change_registry.ps1),之後就可以利用Administorator 的權限開啟遠端管理的功能,指令source code 如下:

2014年3月23日 星期日

關於服貿協議定位的爭議點?

到底服貿黑箱在哪?程序不公義在哪?甚至是否有違憲?網路上很多了解法律和議程的人一直談到關於行政命令與國內法的相關爭論點,老實說我不懂,直到看到這篇"服貿黑箱之前發生的事 "所提供的流程圖,稍稍有點了解....

服貿SOP.png




但是看完我心中仍有疑問....

1. 一定只有透過立法院才能合法駁回?

2. 一定要先同意過後才能再做修改嘛?

2014年3月18日 星期二

Lean Analytics : Analytic Frameworks - Dave McClure’s pirate metrics


Lean Analytics 的第五章 Analytic Frameworks主要是在介紹幾個比較有名適合Lean Start-up 用來測量的方法,首先先介紹的是Dave McClure's pirate metrics

Dave McClure’s pirate metrics

這是由500 startup 的 Dave McClure 所推廣的方法,他歸納出一個Startup 必須透過這五個步驟建立起一個健全的Business Model (這五個步驟不一定要依序)



2014年3月17日 星期一

SDN in Carrier Networks (電信網路)

圖片來源:sdncentral.com

What is Carrier network(電信網路)?


在了解SDN與Carrier Network 的關係之前,讓我們先了解一下何謂Carrier Network (電信網路),參考whatis.com的定義:

A carrier network is the proprietary network infrastructure belonging to a telecommunications service provider such as Verizon, AT&T or Sprint. Telecom carriers are authorized by regulatory agencies to operate telecommunications systems. Carrier networks are made up of large, complex configurations of hardware, interconnected to provide communications services to people spread over large geographic areas.

Specific device types served by a carrier network include
  • telephony equipment
  • CATV (community access television) receivers
  • satellite television receivers
  • mobile computing devices
  • PCs (personal computers)
  • certain specialized items such as medical and surveillance equipment.

由上面的描述我們可以知道電信網路的特色:
  • 主要是網路傳輸的骨幹
  • 由少數大廠把持(不管是設備規格和協定)
  • 更換週期低,投資成本高
這也是為什麼現在業界和學界想要靠SDN來動搖/改變Carrier Network這塊市場~