Integration by me

你們必曉得真理,真理必叫你們得以自由。

Clerkship 懶人包

為了維護病人隱私,如果簡報中有個案資料,無論真實或虛構,則需要登入北醫帳號才能讀取。

內科

新陳代謝科
翁瑄甫《糖尿病之治療及新趨勢》
血液腫瘤科
陳博明 Oncologic emergencies 🔒
胸腔內科
吳宗翰《胸腔 X 光片基本判讀》 🔒
麻醉科
陳建宇《美國 ACGME Milestones 之導入與建置⸺以麻醉科為例》
腎臟內科
高治圻《腎絲球疾病》 🔒
學術討論
倪衍玄《糞土黃金》影片

案例討論 🔒

此處只列出日期和講者,因為講題可能包含病人姓名,應保密。

如何用嘸蝦米打出〇

嘸蝦米從〇到十都是一碼字。取 O 就可以打出了。

事情不是憨人想的這麼簡單。

實際在 Unicode 查碼網站查詢用嘸蝦米打出來的其實是空心圓圈 (U+25CB WHITE CIRCLE) 而不是漢字(U+3007 IDEOGRAPHIC NUMBER ZERO)

為什麼會用錯誤的代替漢字呢?這也不是嘸蝦米願意的。過去台灣使用的中文編碼是 Big5,當初 1970 年的溪頭會議就堅決把當成符號而不是字,因此也就只收錄符號。在嘸蝦米輸入法設計的時候,Unicode 尚未興盛,當然就是收錄 Big5 中的了。

直到 Unicode 興盛以後,嘸蝦米也從善如流把加入字根。然而為了向後相容,要打出〇必須選字。不過多數使用者,包括過去的我,仍然一直傻傻地把 ○ 當成中文的〇……。

把 ○ 當成〇有什麼影響

對機器來說 ○ 就只是個符號。這對於電腦翻譯是一大阻礙,更會干擾視障人士的輔助設備。視障輔助軟體把二○一七唸成二, white circle, 一七甚至二、十七都有可能,留下滿頭問號的使用者。

此外,對明眼人來說,把 ○ 當成〇也很醜。因為 ○ 是符號,所以字型的設計上會與漢字脫鉤,和漢字擺在一起就很不協調。而且文字加粗時,符號應該保持原狀。粗體的 、斜體的 看起來仍是 ♠。

錯誤版正確版
二○一七二〇一七
二○一七二〇一七
二○一七二〇一七
二○一七二〇一七
二○一七二〇一七
二○一七二〇一七

〇字的身世

則天文字中的。南宋算草中亦以圓圈符號代表 0,於是後來〇才假借為 0。雖然〇也可以算是符號,但是使用上與一、二、三等漢字無異,字型設計上應視為漢字。而且與表示正確、圈選的的意義迥異,應該視為不同的字元。

反序低花搭配強無王可能有害

我一直在研究 Wbridge5 這個優秀的橋牌程式。曾經我對於它收錄反序低花卻預設停用感到不解。後來我得出一個結論。

Wbridge5 預設開叫強無王,因此停用反序低花。收錄反序低花是因為 Wbridge5 提供開叫弱無王的選擇。

反序低花源自 K-S 制。反序低花流行東亞與東南亞,是因為精準制的流行。精準制大致是 K-S 制加上強梅花,因此也繼承了弱無王的傳統。

現在我們打美式的制度,開叫強無王。很多人卻仍然使用反序低花。不可否認反序低花有好處,只要搜尋反序低花inverted minors 就能找到。在此我只列出反序低花的壞處作為平衡報導。

答叫垃圾筒 1NT

反序低花的問題不在於特約本身,而是制度隨著特約修改 1NT 答叫。答叫 1NT 通常有二種意思:

建設性 1NT
即使我方兩人皆低限,也期望吃到 6 墩。
垃圾筒 1NT
可能是弱牌。假如我方皆低限,期望吃到 5 墩。

開叫 1♠, 1, 1,若敵方不插叫,為了防止掉局,答叫的 1NT 都是垃圾筒。

假如答叫反序低花,敵方不插叫,都是垃圾筒 1NT。

假如答叫反序低花,那麼開叫 1♣ 後即使敵方不插叫,答叫的 1NT 也是建設性 1NT,因為弱牌可以答叫最長牌組。即使是 3-3-3-4 的弱牌也答叫 2♣,因為開叫人常有 4 張梅花。

開叫 1♣ 保證 3 張
低限時,恰好 3 張的機率是 21.5%。
開叫 1♣ 可以是 4-4-3-2
低限時,恰好 3 張的機率是 20.4%,4-4-3-2 的機率是 5.19%。

反序低花把 4 張支持的弱牌丟進垃圾筒

在 3 階表達 5 張支持的確提升了阻塞性,但 4 張支持的弱牌由 1NT 出聲卻降低了阻塞性。難道 2 低花只比 1NT 高一、二級,差這麼多嗎?我們考慮以下的叫牌過程。

W N E S
  1♣ - 1NT
X1 - -2 ?

要不要逃倒是其次,重點是東家用罰放表達正性答叫。無王合約對莊家不利,平均牌力只能吃到 6.06 墩。即使 1NTxS−3 還是比 3NTE= 慘,除非身價有利,況且雙方主打總和很可能不到 13 墩。

假如當初回答的是 2♣,東家要有梅花牌組才能罰放,否則正性答叫都得到 2NT 以上。阻塞的意義在於讓敵方高叫強牌。雖然 2♣ 只比 1NT 高一級,敵方原本用於表達強牌的 pass 與扣叫硬是被抬到了 2NT 以上。

  1. 迫伴賭倍 

  2. 轉為處罰 

智力測驗

本文所稱的臺灣包含臺灣本島、周圍外島以及澎湖群島。

中華民國之於臺灣就如同以色列之於巴勒斯坦。臺灣與巴勒斯坦在二戰前分別是日本和英國的殖民地,在戰後獲得解放,理應經由住民自決成立新政府或選舉決定併入現存國家。但在英美的主導下,巴勒斯坦被猶太人的以色列國管轄,而臺灣則是被中華民國管轄,並未經過住民的同意。

巴勒斯坦已經在 2012 年加入聯合國。希望有生之年能看見臺灣遲來的住民自決。

下載

本圖CC BY-SA 4.0 釋出。國旗都取自維基共享資源

反導函數與雅量

學妹拿了一張微積分考卷,白色的底子帶著黑色的題目與滿江紅的批閱。當她拿給我們看時,一位數學愛好者說:

設 \( y = \cos x \)

\[ \tan x = \frac{\sin x}{\cos x} = -\frac{y’}{y} \] \[ \int \tan x\,dx = -\ln \left| y \right| = \ln \left| \sec x \right|. \]

我說:

設 \( y = \sin x \)

\[ \begin{align*} \int \tan x\,dx &= \int \frac{y}{1 - y^2} dy \\ &= -\frac{\ln \left( 1 - y^2 \right)}2 \\ &= -\frac{\ln \left( \cos^2 x \right)}2 \\ &= \ln \left| \sec x \right|. \end{align*} \]

一位外號叫大怪客的同學緊接著說:

設 \( y = \tan x \),則 \( y’ = y^2 + 1 \)。

\[ \begin{align*} \int \tan x\,dx &= \int \frac{y}{y^2 + 1} dy \\ &= \frac{\ln \left( y^2 + 1 \right)}2 \\ &= \frac{\ln \left( \sec^2 x \right)}2 \\ &= \ln \left| \sec x \right|. \end{align*} \]

我們不禁哄堂大笑,同樣的一題,每個人卻有不同的感覺。那位學妹連忙把考卷用 L 夾夾好,她覺得 tan 就是 tan,不是 sin/cos,也不是 \( y \),更不是 sec2 的反導函數。

如果他能從老把戲解題,你又何必要他走向法國佬的新方法呢?你聽你的 Bronstein,他看他的 Moses,彼此都會有等量的 pass 的感受。人與人偶有摩擦,往往都是由於缺乏那分雅量的緣故;因此,為了避免學生來要分數,增進和諧,我們改考卷的時候必須努力培養雅量。

2015 臺北 101 跨年煙火

從信義松仁路口以 Xperia Z1 拍攝。

在 C++98 模擬 enum class

使用巢狀類別 (nested class) 可以達到類似的效果。因為我們不需要這些類別的實例 (instance),所以只需要宣告 (declaration),不需要定義 (definition)。

struct Color
{
    class Red;
    class Green;
    class Blue;
};

template<typename ColorType>
struct hex;

template<>
struct hex<Color::Red>
{ enum { value = 0xff0000 }; };

template<>
struct hex<Color::Green>
{ enum { value = 0x00ff00 }; };

template<>
struct hex<Color::Blue>
{ enum { value = 0x0000ff }; };

貼圖討論版開張

在同學的慫恿下,我架了貼圖討論版源碼擺在 GitHub 讓全世界幫我備份。不過目前我提交的多已匯入 vichan 主線。請下載官方版以獲得其他人的本月貢獻。

[同學……等等,你不是唸醫學系嗎?先承認你就是你同學!] [阿就真的偶同學咩!]

技術細節

它採用 vichan,是一款高效能的貼圖討論版程式。它的特點是在伺服器上產生靜態的網頁、資源,因此能應付高流量。

目前中文化已進入 beta 階段,也就是已完成,但還可能有些 bugs

而為了好好利用 nginx 的 gzip_static 模組,我在 inc/functions.php 加了一段程式碼,讓它在寫檔的時候順便產生 .gz 檔。

此外,為了在行動裝置上有較好的表現,我在內建佈景中設定 viewport

Tinyboard/vichan 的特點

Tinayboard 給閱聽人跑的程式只有 post.php 一支,給職員的只有 mod.php 一支,其他都是靜態資源。他們只在閱聽人貼文及職員修改設定時重建 (rebuild) 網站⸺重新產生靜態網頁。職員在修改設定時,可能因為網站未重建,新設定尚未生效。職員可於 GET /mod.php?/rebuild 的頁面中重建網站,讓閱聽人看見更新的資源。

本站 QR code

jdh8.org

給 nginx 和 php-fpm 的 AppArmor 設定檔

AppArmor 是 Ubuntu 預設的 MAC 模組。不像傳統 Unix 的 DAC,AppArmor 設定檔列出什麼是行程存取的。處於強制模式 (enforced) 的行程只能存取已列舉的路徑。處於抱怨模式 (complaining)

然而 nginxphp-fpm 沒有預設的設定檔。為了避免網頁伺服器遭駭造成系統性感染,自己的設定檔自己寫!我們有 aa-genprof 這個有用的工具完成大部份的工作,但是它還是會遺漏一些路徑,特別是 sockets。因此我把我的設定檔放上來作為他山之石。

以下是 nginx 的設定檔。

#include <tunables/global>

/usr/sbin/nginx {
	#include <abstractions/apache2-common>
	#include <abstractions/base>
	#include <abstractions/nis>

	capability dac_override,
	capability net_bind_service,
	capability setgid,
	capability setuid,

	/etc/nginx/** r,
	/etc/ssl/openssl.cnf r,
	/proc/*/auxv r,
	/run/nginx.pid rw,
	/run/nginx.pid.oldbin w,
	/run/php5-fpm.sock rw,
	/srv/www/** r,
	/usr/sbin/nginx mr,
	/var/log/nginx/* w,
}

以下是 php-fpm 的設定檔。

#include <tunables/global>

/usr/sbin/php5-fpm {
	#include <abstractions/base>
	#include <abstractions/nameservice>
	#include <abstractions/php5>

	capability kill,
	capability setgid,
	capability setuid,

	/etc/php5/** r,
	/proc/*/auxv r,
	/proc/sys/kernel/ngroups_max r,
	/run/mysqld/mysqld.sock rw,
	/run/php5-fpm.pid rw,
	/run/php5-fpm.sock w,
	/srv/www/** r,
	/srv/www/html/wp-content/** rw,
	/srv/www/html/wp-content/cache/** rwk,
	/srv/www/magento/media/** rw,
	/srv/www/magento/var/** rwk,
	/tmp/ r,
	/tmp/** rwk,
	/usr/sbin/php5-fpm mrix,
	/var/log/php5-fpm.log* w,
}