聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

七月 30, 2015
» LibreOffice 4.4.5 釋出

LibreOffice 4.4.5 已經釋出,這是 4.4 系列的的第五個錯誤修正版本,包含了超過 80 個錯誤修復,其適合在企業中大量部署。
文件基金會也建議在有認證專家做為後盾的情形下部署到大型企業及組織,以提供額外的加值服務。

新聞來源:The Document Foundation announces LibreOffice 4.4.5

七月 28, 2015
» 中國恐懼症

范疇先生[1]一連寫了幾篇 FUD[2] 文章,警告政府必須立刻開始推動《晶片國安法》[3],否則會被「大數據」實質統一台灣

文章中引用了許多科技詞彙,甚至舉出 Seth Wahle[5] 把 RFID/NFC Tag 打進手臂[6][7],藉此將神奇小晶片偷渡過安全檢查,從此就可以貼身入侵別人手機。這是個很有故事性的劇情,但是將各種不明究理詞彙如「大數據」(Big Data)、互聯網、物聯網、射頻晶片放在一起,只能寫出不入流的科幻小說,范疇的推論經不起科學的檢驗。

Seth Wahle 作為一個 biohacker[8] 嘗試改造人體,但除了 2012 年部份 Samsung Galaxy S II, S III and some HTC phones[9] 等早期版本 Android 手機被發現漏洞外可以直接安裝執行 App 外。以新型手機作業系統而言,Seth Wahle 手臂上的 NFC Tag 要入侵你的手機,必須滿足三個前提

  1. 受害者的手機開啟 NFC 功能,並且已經解鎖。
  2. 受害者點擊了 NFC Tag 觸發的網址連結。
  3. 受害者選擇下載安裝了不可信任的軟體。

不需要 NFC 功能,任何透過郵件、簡訊、即時通訊中的連結,都可能觸發受害者。與其這麼費勁又冒著曝光危險的近身攻擊,又只能用在舊版手機上,現在政府[10]的手段高明許多。前鎮子曝光的 Hacking Team[30],就被查出使用短訊漏洞[11],促使手機安裝 RCS (Remote Control System) 後門監控軟體[12][13]。的確有許多跡象顯示中國政府支持網路入侵攻擊,但是非接觸式智慧卡晶片的缺乏計算能力與儲存空間,沒有主動收集資料的能力,頂多被視為針對某些舊有漏洞來承載惡意代碼的載具。只要讀卡端的系統設計安全,不用擔心晶片卡入侵所有連網裝置。

你需要擔心的是軍事化的網路攻擊。除了巧妙的塞入後門外,政府支持的網路團隊會利用 0day[31] 尚未公告或透漏的系統漏洞,有系統、大規模的採取入侵行動。即便像是 BlackHat 中會有研究人員揭露出像是透過 MMS 等方式[32][33]植入惡意程式到受害者手機,但是等到一般使用者安裝上修正程式前仍有時差,此外政府支持的網路攻擊團隊很可能還掌握更多 0day exploits.

事實上缺乏資安常識與戒心的一般使用者,往往更容易誤裝非官方軟體或者上當被釣魚[14][15],上述透過特定漏洞的複雜入侵手法通常被用來針對特別有價值的對象。

至於范疇先生所提的二代身份證或卡式台胞證等 Contactless smart card,並非神秘的特製晶片,也非具備強大運算能力的電腦。二代身份證是使用 ISO/IEC 14443B (13.56 MHz) [16] 規格的無線晶片,明定可用通訊協定[17]。一般具備 NFC 功能的手機應該也可以讀取,但是在沒有解碼模組的狀況下只能讀出一串亂碼。

與其疑神疑鬼覺得這些小晶片會偷偷的使出外太空科技的「吸星大法」,不如認清卡式台胞證就是中華人民共和國政府用以維穩的工具[18][19]。而且由於設計的限制,以至於難以掛失,要是加密模組被破解或卡片遭到冒用,個人身份[22]被遭到冒用後,就難以補救挽回。

你真正需要留意的反而是具備強大運算能力而且承載個人資料的智慧型手機。這些來自中國的手機漏洞可能被藏在預載的 App 軟體[23][24][25],甚至是韌體固件[26][27]中,即便是台灣製造商,也可能誤用藏有後門的系統元件或解決方案。

作為一個消費者,或許你可以選擇一個採用安全技術的製造商,像是 Android 中的 SELinux (Security-Enhanced Linux)[28] 可以限制 App 或固件只能存取某些資料。但是話說回來 SELinux 由美國國家安全局開發[29],同樣也是老大哥,你要相信那一位?

[1] 范疇 https://www.facebook.com/2020bluesea
[2] Fear, uncertainty and doubt https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt
[3] 范疇 – 立院應立即推動《晶片國安法》 – 今周刊 http://www.businesstoday.com.tw/article-content-100207-117624 http://buzzorange.com/2015/07/16/law-for-chip/
[4] 范疇 – 「大數據」實質統一台灣? – 今周刊 http://www.businesstoday.com.tw/article-content-100207-119451 http://buzzorange.com/2015/07/27/big-data/
[5] Seth Wahle https://www.facebook.com/seth.wahle
[6] Hacker Implants NFC Chip In His Hand To Bypass Security Scans And Exploit Android Phones http://www.forbes.com/sites/thomasbrewster/2015/04/27/implant-android-attack/
[7] BBC – Future – The man who hacks phones with an implant under his skin http://www.bbc.com/future/story/20150515-i-hack-phones-with-touch-alone
[8] Biohacking https://en.wikipedia.org/wiki/Biohacking
[9] Android, Nokia smartphone security toppled by Near Field Communication hack | Ars Technica http://arstechnica.com/security/2012/07/android-nokia-smartphone-hack/
[10] 維基解密公布100多萬筆Hacking Team內部郵件 | iThome http://www.ithome.com.tw/news/97348
[11] Dangerous Texts: Preventing SMS Cracking – InfoSec Institute http://resources.infosecinstitute.com/dangerous-texts-preventing-sms-cracking/
[12] 简要分析Hacking Team 远程控制系统-月光博客 http://www.williamlong.info/archives/4293.html
[13] 人手一份核武器 – Hacking Team 泄露(开源)资料导览手册 | WooYun知识库 http://drops.wooyun.org/news/6977
[14] 讲讲最近非常时髦的钓鱼攻击:银行存款杀手(多图) http://daily.zhihu.com/story/4637119
[15] 伪基站 + 钓鱼 = 完美黑产 – 乌云君 – 知乎专栏 http://zhuanlan.zhihu.com/wooyun/19890065
[16] ISO/IEC 14443 – Wikipedia, the free encyclopedia https://en.wikipedia.org/wiki/ISO/IEC_14443
[17] ISO/IEC 14443-4:2008 Identification cards — Contactless integrated circuit cards — Proximity cards — Part 4: Transmission protocol http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50648
[18] BIG BROTHER IS WATCHING YOU – 台胞證免簽卡式化 http://blog.nutsfactory.net/2015/06/17/big-brother-is-watching-you/
[19] 驚曝中共利用二代身份證監控 破解有妙招 | 破解方法 | 追蹤與反追蹤 | 大紀元 http://www.epochtimes.com/b5/13/11/23/n4017563.htm
[20] 二代身份证的隐患 ~ 南方人物周刊 南方人物周刊 http://www.nfpeople.com/story_view.php?id=4768
[21] 二代身份证的意见和建议 http://www.boxun.com/cgi-bin/news/gb_display/print_versiOn.cgi?art=/gb/pubvp/2008/10&link=200810270647.shtml
[22] Identity theft – Wikipedia, the free encyclopedia https://en.wikipedia.org/wiki/Identity_theft
[23] Chinese Android phone maker hides secret backdoor on its devices | Computerworld http://www.computerworld.com/article/2860742/chinese-android-phone-maker-hides-secret-backdoor-on-its-devices.html
[24] CoolReaper Revealed: A Backdoor in Coolpad Android Devices – Palo Alto Networks BlogPalo Alto Networks Blog http://researchcenter.paloaltonetworks.com/2014/12/coolreaper-revealed-backdoor-coolpad-android-devices/
[25] HTC多款手機被發現有官方預留的後門程式 | iThome http://www.ithome.com.tw/node/70135
[26] 翻墙问答﹕台资制手机晶片出问题 http://www.rfa.org/cantonese/firewall_features/taiwan-chips-12122014080202.html
[27] 威盛電子淪為中國間諜?/南方快報《政治修理站》 http://www.southnews.com.tw/polit/polit_00/14/02942.htm
[28] Security-Enhanced Linux in Android | Android Open Source Project https://source.android.com/devices/tech/security/selinux/index.html
[29] Security-Enhanced Linux – NSA/CSS https://www.nsa.gov/research/selinux/
[30] 「義賊」入侵駭客公司Hacking Team,盜取500GB內部文件揭露幕後客戶為各國政府 | T客邦 – 我只推薦好東西 http://www.techbang.com/posts/24578-hackers-are-terrible-hacking-team-stolen-500gb-internal-data
[31] https://en.wikipedia.org/wiki/Zero-day_%28computing%29
[32] 950 million Android phones can be hijacked by malicious text messages | Ars Technica http://arstechnica.com/security/2015/07/950-million-android-phones-can-be-hijacked-by-malicious-text-messages/
[33] Experts Found a Unicorn in the Heart of Android › Zimperium Mobile Security Blog http://blog.zimperium.com/experts-found-a-unicorn-in-the-heart-of-android/

七月 27, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Laravel Homestead 2.1.5 版本將不再刪除舊有資料庫

Laravel PHP Framework

Laravel Homestead 提供一套虛擬機器,讓開發者可以快速將 Laravel 環境架設起來。在 2.1.5 版本以前,要新增新的 Site 都會透過修改 yaml 設定檔後,直接下 homestead provision 來重新啟動 VM,問題就來了,此指令會將現有的 Database 全部刪除,重先建立一次,這樣開發者就要重新跑 DB Migration 才有資料。此問題作者聽到了,所以在 2.1.5 版本作者拿掉 Drop Database 指令,而是透過 CREATE DATABASE IF NOT EXISTS 來取代原有指令 (下面程式碼),這樣開發者就不用擔心資料會被刪除。當然作者也很貼心,如果開發者想要清除整個資料庫,一樣可以透過指令 homestead destroy 來將整個 VM 刪除即可。

// 取代原有 mysql -uhomestead -psecret -e "DROP DATABASE IF EXISTS \`$DB\`";
mysql -uhomestead -psecret -e "CREATE DATABASE IF NOT EXISTS \`$DB\` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci";

詳細的資訊可以參考 official documentation,或參考最近修改的 commit 內容

七月 25, 2015

110碼:AAA2369
110碼:AAA2369
110碼:AAA2369 is about »

tag cloud

» Emacs Copy/Paste work with clipboard of X Server.

Emacs Copy/Paste work with clipboard of X Server

工作上常需要 Emacs 與 X Server 相互 Copy/Paste 文字,為了暸解這功能搞了幾天。

xsel man page

The X server maintains three selections, called PRIMARY, SECONDARY and CLIPBOARD. The PRIMARY selection is conventionally used to implement copying and pasting via the middle mouse button. The SECONDARY and CLIPBOARD selections are less frequently used by application programs. This program operates on the PRIMARY selection unless otherwise specified.

By default, this program outputs the selection without modification if both standard input and standard output are terminals (ttys). Otherwise, the current selection is output if standard output is not a terminal (tty), and the selection is set from standard input if standard input is not a terminal (tty). If any input or output options are given then the program behaves only in the requested mode.

If both input and output is required then the previous selection is output before being replaced by the contents of standard input.

實際上 X server 有三個 selections, 名稱為 PRIMARY, SECONDRY, CLIPBOARD. 用在滑鼠中鍵的稱為 PRIMARY,應用程式用多為 CLIPBOARD 與 SECONDARY。

Copy from X-window, Paste to Emacs

Emacs paste text from Clipboard

透過 X-window 的剪貼簿貼文字:

(x-clipboard-yank)
or
(insert (x-get-selection 'CLIPBOARD))

綁定組合鍵:

(global-set-key (kbd "C-x C-y 1") 'x-clipboard-yank)

Emacs paste text from PRIMARY

透過滑鼠標記後貼文字:

(mouse-yank-primary 1)
or
(insert (x-get-selection 'PRIMARY))

綁定組合鍵:

(global-set-key (kbd "C-x C-y 2")
              (lambda () (interactive) (insert (x-get-selection 'PRIMARY))))

Copy from Emacs, Paste to X-window

Emacs copy text to Clipboard

請參考以下兩個 URL

xclip-mode 用了二年多快,近來常用 TRAMP mode (Transparent Remote Access, Multiple Protocols) 遠端 edit/coding。 但 xclip-mode 與 TRAMP mode 是互斥的,後改用 yank-to-x-clipboard 在有需要時在 copy 到 Clipboard 後使用。

Emacs copy text to PRIMARY

X-window 下的 emacs 只要 mark 標註一段文字,就會自動複製到 PRIMARY。其中的文字之後用滑鼠中鍵就可以貼上。

七月 24, 2015
» calibre 2.33.0 釋出

自由的跨平臺電子書管理軟體,calibre 2.33.0 正式版釋出,此版本新增了幾個功能以及修正了 3 個bug。
calibre 2.X 版本支援Windows Vista~ 8 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

» 在 Ubuntu(Canonical 公司)当程序员是怎样的体验?

原文發布於: http://www.zhihu.com/question/33197302/answer/56199040

我是 Canonical 台湾台北办公室员工,虽然因为业务关系时常来往中国各省差旅,恐怕无法反映中国地区程序员的体验。

有钱任性的创办人,乐意付钱让人作开源项目,对于信仰自由软件或开放原码的人应该相当有吸引力。差别是你写的每一行代码大概都会是 GPL 或 LGPL 授权,无论是 merge proposal 或是 bug comment 都公布在 Launchpad[1] 供人评阅。有许多機會與技术能力强大的牛人共事,大部分的同事都非常友善、容易合作。在这里身為软件程序员也很容易找到工作、生活的平衡点,反正自愿决定 是否加班。

高度自由,可以弹性的选择工作时间与工作地点。事实上,不少人是在家工作,我自己依照需要独立专注工作的需求,通常一周有一天会在家里工作。在某些团队, 你也能自由选择如何完成你的工作,包含尝试不同的开发语言或技术方案。当然这些自由度与开心程度取决你的直属老板的管理风格与能力。

由于许多人都在家工作,平时透过网路联系,一年半载才有机会见面,这时 team building 就更重要了。早期的时候,每个半年有一次 Ubuntu Developer Submmit,召集全球员工一同旅行到美国或欧洲,进行为期一周的欢乐派对^H^H会议,往往开场的时候得叮咛晚上别饮酒过量,但是会议时间过后肯定可 以在附近的酒吧看到每个团队一边狂欢一边讨论工作。后来由于公司规模太大,召开全员到齐的会议太昂贵。只剩下各个团队举办 Sprint 会议,规模大概两三百人到十几人节奏明快的会议。上回到北京開 Sprint, 结束日前一晚由 Vice President 带著一群老外隊伍,到三里屯酒吧街对饮到清晨三点,隔日开会都醉了。

这个公司有许多有挑战性的工作,也有非常乏味的苦力工作,端视你在那一个事业群、团队下面。每个一段时间会因为创办人兴趣^H^H业务变动,进行组织改 组,当下最大的两个软件工程事业群是 Cloud Dev Ops 与 Ubuntu Engineering and Services。从 Ubuntu Engineering and Services 中的工程团队,又大致分成 Ubuntu Engineering 与 Commercial Engineering。

其中 Ubuntu Engineering 做的是产品项目,像是 Ubuntu Phone, Desktop, Core, Unity8, Mir, Snappy 等等。做产品相对比较具有挑战性,会依据 Mark Shuttleworth 的产品策略或产品经理定下开发蓝图,以 Agile 敏捷开发模式进行产品项目开发 (之前是依据半年的发行周期),每隔两三周都会交付成果。由于代码完全开源,所以开发时候也可能有外界社区加入给予意见。全球的员工透过 CI/Launchpad/IRC/Kanban board 等协作工具合作,需要线上沟通的技能透过文字或代码清楚表达你的思路。除了公司内部小组间的合作,也常常需要回应开源社区的疑问。

至于 Commercial Engineering 则是将产品出货的部门,产品类型多元,可能是 Desktop、Phone 或是神秘的研发计划。其中最枯燥无味的大概就是 Desktop preload project,许多工作已经制式化,日常是不停重复同样的工序,像是验证硬件程序、测试 BIOS、打内核补钉、整 workaround、出貨排期、发行预载版等等。这些工作是确保搭载 Ubuntu 出货的笔记本等硬件功能都可以完美的运行,由于硬件完成的时候因为各种因素会导致驱动无法运作,像是 BIOS 不按照业界规格实践、不同的硬件使用同样的产品代码,导致使用错误的驱动程序、或是新硬件平台时内核支持功能未完善等,这些细节都需要大量人力的调适。这 个部门会适配来自不同合作伙伴的闭源软件,依据授权的不同导致部份代码无法开源。硬件调适与功能验证[7] 是 Canonical 收费的主要服务之一。

即便仍然会有些开发工作,像是做 userspace 的软件问题、LTS 的共用预载版、Firmware Test Suite[2]、Checkbox Job[3]、上述这些重复工序的自动化工具,但是常态仍是重复工序。而空闲程度通常跟出货季节相关,淡季时有些人会兼职当猎头、专研新技术、上网选修课 程、修 Launchpad[1] 上公开的臭虫[8]、翻译物理书籍等等。不过目测接下来一两年的 Snappy Personal Ubuntu 会从 Debian-based 换成 Snappy[4],以及 Unity8 的更换,应该会有一波新的挑战。

Commercial Engineering 也有一些来自不同客户的订制项目,订制项目通常包含大量软件改造与功能适配等工作,相对会多元有趣一些。

目前除了在家工作的员工之外,Canonical 在全球有四个主要办公室 London、Boston、北京、台北,依照事业群或团队的要求,会要求是否进办公室,通常与硬件相关的部门,像是需要实体硬件上测试的 QA 等就必须进办公室工作。各地辦公室的福利不同,北京辦公室就让本地员工来回答吧。由于许多员工都是在家工作,所以有个坑人的规定,是员工必须自备笔记本, 即使在办公室上班,公司仍不配发电脑。

在台北办公室的福利之一是办公室位于 Taipei 101,以下是我的窗景 (四十七楼) –
20150707_184148-01
以上是我的个人体验,你也可以参考一下 Glassdoor 上的员工评价[5],看看其他人的说法。

如果看了这么多之后,你对到 Canonical 工作感兴趣,欢迎查看目前职缺列表[6],在填送求职申请的时候,介绍人一栏写 Rex Tsai. 并私下与我联系,以便告知你应征的技巧或调查职缺内容或向征人团队经理写推荐信。除了帮点小忙外,Canonical 也提供 Referral Bonus Policy,正式通过试用后介绍人会得到 USD 1,000-2,000 的介绍费奖励,依照所需职位的急迫重要性不同,我曾经最高拿过 USD 5,000 的介绍奖金呢!有兴趣请来联系吧。

[1] Launchpad
[2] Firmware Test Suite Kernel/Reference/fwts
[3] Testing/Automation/Checkbox
[4] Ubuntu’s Desktop-Next Switching From .DEBs To Snappy
[5] Canonical Reviews
[6] Canonical | Careers

[7] Certification

[8] BugSquad – Ubuntu Wiki

七月 18, 2015
» calibre 2.32.1 釋出

自由的跨平臺電子書管理軟體,calibre 2.32.1 正式版釋出,此版本新增了幾個功能以及修正了 13 個bug。
calibre 2.X 版本支援Windows Vista~ 8 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

七月 14, 2015
» KDE Applications 15.04.3 以及其他套件進入穩定套件庫 (Chakra GNU/Linux)

KDE Applications 15.04 系列的第三個更新已經在 Chakra 的穩定套件庫中提供。這次更新也包含了 kde-workspace 4.11.21 與 kdelibskdepim 4.14.10。請記住,那些已經移植到 Frameworks 5 的應用程式將暫時不會出現在 Chakra 的穩定套件庫中,這些套件的新版本將會被推送到 [kde-next] 套件庫中,這個套件庫同時也提供了 Plasma 5。

如果您想要在 Chakra 測試 Plasma 5,您可以依循此說明來切換。有任何想要說的話也歡迎到相關的討論串上發言。


其他一些值得注意的套件更新:
  • calligra 2.9.6
  • firefox 39.0
  • thunderbird 38.1.0
  • wine 1.7.47
  • pip 7.0.3

在更新途中對取代套件等問題回答「Yes」應該是十分安全的。倘若使用者有任何疑惑,或者您遇到其他問題,歡迎上論壇詢問或回報
一如既往的,請在更新前確定您的映像站已完成同步。可以在 konsole下執行 mirror-check,或使用在網際網路類別底下的鏡像站檢查軟體以確認。

新聞來源:KDE Applications 15.04.3 available

七月 10, 2015
» KDE Frameworks 5.12.0 發佈

這次的釋出主要包含了錯誤修復,並無增加太多新功能,主要為錯誤修復版本。

新聞來源:Release of KDE Frameworks 5.12.0

七月 4, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» git tips 找尋遺失的 commit 紀錄

github-logo

個人每天常用的常用的三大 Git 指令分別是 git reset, git pull, git rebase,但是呢有時候手殘,常常把 git reset --soft 打成 git reset --hard 造成不可預期的錯誤,朋友圈內也有人常常問我該如何救不見的 commit,其實很容易,git 對於每隔操作後產生的 commit 都會存放在 Local 端,所以基本上不用擔心 commit 記錄會不見,有一種狀況會永遠消失,那就是假設尚未 commit 目前修正過的檔案,然後下 git reset --hard HEAD,這樣的話我想誰都無法幫忙把已修正過的檔案找回來了,原因是連 git 都不知道你改了什麼啊。所以為了避免這情況方生,個人建議開發者,只要開發到一定的階段,務必要下一個 commit 當作記錄,但是你會說,這樣功能開發完後,就會有很多個 commit 非常不好看,這時候可以嘗試 git rebase 將整個功能合併成一個 commit,這樣其他開發者 review 時就會非常清楚。

現在的問題是如果開發者不小心下了 git reset --hard HEAD^,上一個 commit 就會消失了,這時候該如何救回來呢?答案可以使用 git reflog 指令然觀看開發者全部 git 的操作記錄,裡面詳細記載你曾經下過的 git 指令

$ git reflog
794be8b HEAD@{0}: reset: moving to HEAD^
5e2be6f HEAD@{1}: commit (amend): update
bfa593c HEAD@{2}: cherry-pick: update
794be8b HEAD@{3}: reset: moving to 649c658
794be8b HEAD@{4}: reset: moving to HEAD^
649c658 HEAD@{5}: commit: update
794be8b HEAD@{6}: commit (initial): addd

上面可以看到之前 commit 的記錄,接著可以透過 git reset --hard xxxxx,或者是用 git cherry-pick xxxxx 將上一個 commit ID 記錄抓回來即可。

七月 1, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Awesome List

logo

@sindresorhus 建立一個強大的專案叫做 awesome,裡面收集了各式各樣的 Awesome List,包含 Programming Languages, Front-end Development, Back-end Development 等等,只要可以收集到非常 Awesome 的 Project List,經過大家認證,認為收集此列表非常俱有價值性,而不是把一堆教學文件集合在一起,程式開發者必定參考到這裡面列表。看到有人提出加入 Regular Expression 列表@arthurvr 就回覆底下

That’s not what an awesome list should be. It should be a curated list of the best things. Not a “collection of everything”

原發問者不了解 curated list of the best things,最後 @sindresorhus 拿了 w3schools 來回答為什麼 w3schools 總是能在搜尋排行榜第一名

Because they use sleazy and spammy SEO optimizations to get there.

有夠好笑的,原來大家都是很討厭 w3schools,難怪會有 W3Schools Hider 外掛

六月 30, 2015
» LibreOffice 4.4.4 釋出

LibreOffice 4.4.4 已經釋出,這是 4.4 系列的的第四個錯誤修正版本,包含了超過 70 個錯誤修復,其適合在企業中大量部署。
文件基金會也建議在有認證專家做為後盾的情形下部署到大型企業及組織,以提供額外的加值服務。

新聞來源:The Document Foundation announces LibreOffice 4.4.4

六月 28, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» 用一張圖學習 JavaScript

2015.07.03 作者出了 GitHub Page 線上版

javascript-logo

GitHub 上的 javascript-in-one-pic 作者將 JavaScript 一些基本用法整理成 PDF, PNG .. 等版本,讓開發者可以一目了然學習基本 JavaScript 用法,這專案啟動沒多久就一堆人 Star 了,看到作者是參考之前我有參與翻譯的 JavaScript GardenProfessional JavaScript for Web Developers 這本書,目前尚未全部整理完整,已經整理的目錄如下

  • Identifier
  • Data Type
  • Operators
  • Reference Type
  • Flow Control

大家可以印出來,放在座位前面,好像是個不錯的方法。

js in one pic

六月 22, 2015
» digiKam 4.11.0 釋出

digiKam,一個 KDE 桌面環境下的影像管理程式,在2015年6月21日釋出了 4.11.0 正式版,此版本是一個次要釋出版本,修復許多臭蟲,移植到 KDE Frameworks 5 的工作也正如火如荼的進行中,此版本官方也提供了 Mac OS X 的 PKG 安裝程式,雖然仍不若 Linux 上那般穩定,但也讓 Mac OS X 的使用者不必再耗費許久的時間來進行編譯。

來源:digiKam Software Collection 4.11.0 released...

» calibre 2.31 釋出

自由的跨平臺電子書管理軟體,calibre 2.31 正式版釋出,此版本新增了幾個功能以及修正了 10 個bug。
calibre 2.X 版本支援Windows Vista~ 8 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

六月 21, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» 簡介 JavaScript ES6 物件及陣列

es6-logo

今年 2015 六月 17 號 Ecma International 已經同意 ECMA-262 6th edition 版本,這是在 ECMAScript 2015 Has Been Approved 看到的消息,而現在主流就是以 Babeljs 為主,將 ES2015 語法直接轉換成 ES5,讓各大瀏覽器可以繼續支援 ES2015 寫法。今天來介紹 ES2015 內如何使用物件 (Object) 或陣列 (Array)。

陣列 Array Destructuring

直接舉例子來說明,假設有一個 Array [1, 2, 3, 4, 5],我們需要三個變數分別對應到 1, 2, 3 這時候在 ES5 答案會是底下

var value = [1, 2, 3, 4, 5];
var el1 = value[0];
var el2 = value[1];
var el3 = value[2];

這時候可以發現 [el1, el2, el3] 就是 [1, 2, 3] 了,但是在 ES6 寫法內,可以直接宣告 Array 變數來直接對應 value

var value = [1, 2, 3, 4, 5];
var [el1, el2, el3] = value;

上述語法轉換成 ES5,就會是最上面的程式碼,ES6 可以不必宣告 el1, el2, el3 等變數,當然你也可以宣告後再做對應

var el1, el2, el3;
[el1, el2, el3] = [1, 2, 3, 4, 5];

在 ES6 內要怎麼寫 swapping values 呢,請看底下

[el1, el2] = [el2, el1];

上述結果就是將 el1 及 el2 的值互相對調。陣列裡面還可以有陣列對應

var value = [1, 2, [3, 4, 5]];
var [el1, el2, [el3, el4]] = value;

這時 el3 = 3, el4 = 4,非常簡單,如果是 function return array value 也可以直接對應

function tuple() {
  return [1, 2];
}
 
var [first, second] = tuple();

如果要跳過陣列內其中一個值,可以直接寫成底下

var value = [1, 2, 3, 4, 5];
var [el1, , el3, , el5] = value;

這時 el3 就是 3,正規語法就需要此功能

var [, firstName, lastName] = "John Doe".match(/^(w+) (w+)$/);

// firstName = John, lastName = Doe

還有在 ES5 我們常常要寫 default value 功能,現在可以用簡短程式碼取代

var [firstName = "John", lastName = "Doe"] = [];

這時候由於 firstName 跟 lastName 都是 undefined,所以可以使用預設 values,如果是 null 就會是 null 值喔

var [firstName = "John", lastName = "Doe"] = [null, null];

上述程式碼結果會是 firstName = lastName = null,最後還有 Spread operator 的功能

var value = [1, 2, 3, 4, 5];
var [el1, el2, el3, ...tail] = value;

可以發現 tail 的值會是 [4, 5],但是目前只有支援剩餘 Array 的寫法,底下寫法是不支援的

var value = [1, 2, 3, 4, 5];
var [...rest, lastElement] = value;
var [firstElement, ...rest, lastElement] = value;

物件 Object Destructuring

物件的寫法其實跟陣列沒有很大的差異,一樣是用物件包變數的方式宣告

var person = {firstName: "John", lastName: "Doe"};
var {firstName, lastName} = person;

物件內還有物件寫法

var person = {name: {firstName: "John", lastName: "Doe"}};
var {name: {firstName, lastName}} = person;

物件內有 Array 寫法

var person = {dateOfBirth: [1, 1, 1980]};
var {dateOfBirth: [day, month, year]} = person;

或者是 Array 包物件都支援

var person = [{dateOfBirth: [1, 1, 1980]}];
var [{dateOfBirth}] = person;

看看物件預設值寫法

var {firstName = "John", lastName: userLastName = "Doe"} = {};

如果是 null 跟陣列一樣都會是 null

var {firstName = "John", lastName = "Doe"} = {firstName: null, lastName: null};

函示宣告 Destructuring Function Arguments

一般開發者在寫 ES5 function 時,最後帶的參數一定會是物件 options,用來判斷此函示是否有其他特定需求變數

function findUser(userId, options) {
  if (options.includeProfile) ...
  if (options.includeHistory) ...
}

現在 ES6 可以直接寫成

function findUser(userId, {includeProfile, includeHistory}) {
  if (includeProfile) ...
  if (includeHistory) ...
}

這樣可以更清楚了解此函示的功能,而不用看程式碼了 XD,想開始嘗試寫 ES6 嗎?這時候就要強烈推薦 Babel.js 了,參考文章:Getting Started with JavaScript ES6 Destructuring

六月 20, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» 優化 Percona XtraDB Cluster for write hotspots

percona

Percona Blog 上看到這篇 Optimizing Percona XtraDB Cluster for write hotspots 優化多重寫入 MySQL 的狀況,舉例來說,要計算 global counter 的時候,就會遇到很頻繁的寫入 (write hotspot),目前是不能同時寫入資料到同一個 record,會造成 performance 降低,所以大家開始導入 Percona XtraDB Cluster 來解決同時間寫入到同一個 record,大家都認為,搞了三台 Percona Server,可以將寫入的動作分散到其他兩台,就不會遇到 Lock 問題,但是實際上根本就不是這樣。

在獨立 Server 同時執行 SQL 語法

簡單舉例,底下有三個 SQL 語法

# T1
UPDATE t SET ... WHERE id = 100
 
# T2
UPDATE t SET ... WHERE id = 100
 
# T3
UPDATE t SET ... WHERE id = 101

我們執行上述語法,會發現產生 row lock 在 T1 或 T2,而 T3 則會同時間執行完畢,因為 T3 不是存取同一筆資料,讓我們假設 InnoDB 先執行 T1,這時候 T2 就要等到 T1 執行完畢,才可以接著執行 T2。

同時執行寫入到 multiple nodes (PXC)

Screen Shot 2015-06-20 at 2.48.56 PM

看到上述圖,我們先假設 T1 先在 Node 1 執行,T1 會同步執行到 Node 2 和 Node 3,在這同時,T2 在 Node 2 執行就會碰到 certification test fail,這時後,T2 執行失敗,就會執行 roll back,這時候解法就是變成 T2 要 retry。結論就是 PXC 架構多台寫入解決方案不適合的。

結論

如果需要大量寫入,正確的解決方式就是將寫入寫到同一台 server,這樣全部的 Lock 都會發生在同一台,但是 PXC 架構跟獨立一台 server 效能上來比,後者還是會比較好。另外的解法就是減少寫入,將計算 counter 這狀況先寫到 redis server,等到一段時間再同步到 MySQL Server。

六月 17, 2015
» BIG BROTHER IS WATCHING YOU – 台胞證免簽卡式化

錯把卡式台胞證號當作統戰手段[1]就搞錯重點了,取得台胞證不代表你取得中國國籍成為中國公民。雖然台灣國籍已比華人以外的外國人來的容易,但是仍須置產有戶口才有資格取得國籍,而大城市如北京、上海更是難以取得戶籍,即便有些人願意取得,仍須跨過基本門檻。

你無須擔心中國以什麼材質發特別簽證,也不用惱怒中國以什麼樣的口吻歡迎或恐嚇台灣回歸。真正需要擔心的是台灣戶籍直接被視為合法中國戶籍的那一天,而你服義務兵役聽從的是中國籍將領,不繳國民保險、健保以及所得稅,而改繳五險一金[4]

台胞證免簽卡式化的是中國政府於俗稱「維穩21條」中的一卡通政策,是 2015 年中共中央辦公廳、國務院辦公廳發布的《關於加強社會治安防控體系建設的意見》[2]中的第十五條

(十五)加強基礎性制度建設。建立以公民身份號碼為唯一代碼、統一共享的國家人口基礎信息庫,建立健全相關方面的實名登記制度。建立公民統一社會信用代碼製度、法人和其他組織統一社會信用代碼製度,加強社會信用管理,促進信息共享,強化對守信者的鼓勵和對失信者的懲戒,探索建立公民所有信息的一卡通制度…

統一證卡是 Big Brother 打造用以維穩[5]的實名政策。卡式台胞證美其名是未來所有實名制度,無論支付寶、淘寶、銀行、線上訂票都可無礙使用,但此制度把銀行、信用卡、酒店入住紀錄、乘搭過的飛機、火車、高鐵、社會保險等等私隱資料連結成「一卡通」,加上二代身份證卡片可以對應指紋,扎扎實實的紀錄每個行為。

這項政策已經逐步進行一段時間了,無論是電信卡、銀行、車票、機票,現在一律都改用二代身份證了,而且許多業務沒有卡片是無法辦理的,只持有台胞證連異地辦理都不行,想躲也避不開。

所以你真的該買 RFID Blocking 錢包了。

[1] 台灣對台胞證免簽卡式化宣佈反應不一 – BBC 中文网 http://www.bbc.com/zhongwen/trad/china/2015/06/150615_china_taiwanese_new_card
[2] 中办国办:探索建立公民所有信息一卡通制度-新华网 http://news.xinhuanet.com/politics/2015-04/13/c_1114955339.htm
[3] https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86%E7%81%AB%E8%BD%A6%E7%A5%A8%E5%AE%9E%E5%90%8D%E5%88%B6
[4] http://wiki.mbalib.com/zh-tw/%E4%BA%94%E9%99%A9%E4%B8%80%E9%87%91
[5] https://zh.wikipedia.org/wiki/%E7%BB%B4%E7%A8%B3

六月 13, 2015
» KDE Frameworks 5.11.0 發佈

這次的釋出主要包含了錯誤修復,並無增加太多新功能,主要為錯誤修復版本。

新聞來源:Release of KDE Frameworks 5.11.0

六月 10, 2015

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Laravel 5.1 is released

很高興昨天收到 Laravel 釋出 5.1 版本,此版本在 Laravel 發展過程中第一個長期支援的版本,底下我們就來看看 Taylor Otwell 作者在此版本釋出有什麼新功能或變化。

長期支援 5.1 版本 (第一個 LTS 版本)

自從 Laravel 在 2011 年釋出第一個版本以來,作者都採用 “release early, release often” 的方式讓開發者享有最新的功能,所以在全世界各大 PHP Framework 評比底下,Laravel 始終擁有第一名的頭銜,這時間點要開始規劃一個長期使用的版本,讓大型專案可以專注於安全性修正,而並非快速升級版本。所以 Laravel 5.1 官方打算支援 3 年的安全性修正

長期支援是 5.1 的新功能之一,當然 5.1 也有更多新功能。

新文件

Laravel 作者將文件整個翻過一遍,讓開發者可以更清楚地閱讀,這是一個非常艱鉅的任務,花了無數個小時來微調每一頁。Taylor 說他寧用延遲釋出的時間,也不要是出一個不好閱讀的文件,花這麼多的時間是值得的,因為新版文件支援快速搜尋,讓開發者可以快速找到您要的關鍵字文件

PSR-2

很高興聽到作者終於將整個專案支援 PSR-2 Coding Style,其實最主要是將 tabs 全部轉換成 spaces,另外將 control structures 全部改成在同一行,例如底下

if (....)
{
}

改成

if (....) {
}

Resolve a service from blade

現在可以直接在 Blade Template 內 resolve a service

@extends('layouts.app')
@inject('stats', 'StatisticsService')
<div>{{ $stats->getCustomerCount() }}</div>

Broadcasting Events 廣播事件

Laravel 已經支援強大的事件系統,現在更支援 Broadcasting Events,讓開發者可以透過 websocket 方式將資料傳給 client 端,此功能讓您簡單地開發一套 real-time 系統。

Better Application Unit Testing 更強大的測試

導入 laracasts 的測試套件讓開發者可以更簡單的寫測試程式

public function testNewUserRegistration()
{
    $this->visit('/register')
         ->type('Taylor', 'name')
         ->check('terms')
         ->press('Register')
         ->seePageIs('/dashboard');
}

如果想了解更多 5.1 新功能,請參考 Everything we know about Laravel 5.1 – Updated,另外可以到 Laracasts video series 觀看 5.1 功能,或者是 Matt Stauffer 寫了一系列 5.1 文章

參考: Laravel 5.1 is released

support:

一頁

A Django site.