接種成人自費疫苗經驗分享

這次我施打的三支疫苗 — ADACEL, HAVRIX, Fluarix Tetra

開場先離題一下:最近看到因武漢肺炎而起的口罩之亂有點感慨…大部分論點偏離了最基礎的問題:防疫準備的不足。

不管今天有沒有武漢肺炎,在流感季節預備口罩不是理所當然的嗎?根本不該發生搶購潮這種事。

雖然我不是末日主義者,但在同溫層裡算是比較有在做個人預防準備的人。除了常備口罩以外,去年底還去做了更進一步的強化,也就是本篇的主題 — 施打自費疫苗。

打疫苗?很多朋友聽到的第一反應都會覺得是帶小小孩或毛小孩去打吧xd 其實對一般健康成人來說,也可以透過疫苗提升抵抗力!以 BOTW (如果你不知道,這是 Switch 神作 — 曠野之息)的概念來說,大概就像是裝備了利特、耐火之類的防具吧 (X)

其實在我去打疫苗之前,大概也和大部分非醫療專業的人一樣,頂多知道有流感疫苗。在做過一些功課以後,才知道除此之外,還有其他種類的疫苗可以施打。

這篇文章就基於我之前研究的筆記,整理初次接種自費疫苗需要瞭解的一些事情,給大家參考!

對大部分人來說,除非出國或育嬰,應該不會特別去打疫苗吧!

這次會去打,我的理由總歸一句就是:打疫苗是 CP 值很高的一件事。生病這件事其實成本是相當高的。就個人方面,生病造成的生產力下降、痛楚及時間成本都是相當巨大的,更不用說造成身邊親友乃至整體社會的負擔。

費用方面,雖然健康成人打疫苗要自費,可是諸君,這可是難得可以「花錢買到健康」的事啊!好疫苗,不打嗎?更何況臺灣醫事費用相較於國外更是沒有不打的理由了!

人百百種,這就和買保險一樣很難有標準答案,但我想最好的出發點就是疾管署官方的資訊了。疾管署提供成人預防接種建議時程表,列出有十種適用於成人的疫苗。其中對於青壯年族群(19-49歲)建議接種以下三種疫苗:

  • 季節性流感疫苗
  • 破傷風、白喉、百日咳相關疫苗(Td/Tdap)
  • A型肝炎疫苗

流感疫苗沒什麼爭議,每年上最新版的 patch 就對了!第二種 Td/Tdap 比較容易疑惑的是,我們這個年代的人,不是小時候都打過公費破傷風疫苗了嗎?為什麼這邊還是建議施打呢?這是因為破傷風疫苗效力是有效期的,長大以後身體的免疫系統已經忘記了qq 所以還是需要補打複習一下才行。

另外大家多少有摔車的經驗吧?有吧?有吧!被送到急診的時候也是會被打破傷風疫苗對吧?那…還需要再打嗎?醫生表示急診的疫苗只針對破傷風,和這邊列的 Td/Tdap 疫苗還是不一樣,所以還是要再施打完整版的疫苗,防禦 coverage 才會是比較完整的!

最後 A肝的部分也是很讓人疑惑。在表上 A肝是列為「建議接種」的項目,但看下面的敘述又另外建議「慢性肝病、血友病、曾經移植肝臟病人,還有男同性戀或雙性戀或藥物成癮者,以及因職業或環境易受感染、長期居住、工作或往來於流行地區者」接種,十分的…ambiguous…

為此我還特別查了 CDC — Vaccine Information for Adults. 他們的建議是 “seasonal flu (influenza) vaccine and Td or Tdap vaccine,” 沒有列 A肝。

以上想必是根據統計資料的建議,實際還是可以跟據自身狀況決定,例如自宅警備員扣除家人幫你外帶的話,大概就不太需要;如果常飛或家裡有小孩,應該就可以考慮較完整的防護。

大家應該都覺得疫苗就去衛生所打吧?其實衛生所只有公費疫苗喔!實際走一回以後,才知道想打自費疫苗,可不是像一般看診一樣隨便走到一家醫院就可以的!主要困難有兩點:

  • 接種單位相對不普及:雖然衛福部一直在推醫療分級,但大部分診所乃至地區醫院都是以提供公費疫苗為主,就算有自費疫苗,種類也不完整。我後來還是到醫學中心去打。
  • 缺貨可能性:特別是流感疫苗,每年大家多少會注意到缺貨的新聞。實際上先前在洽詢時,也都是建議在去施打前先確認有無庫存,不能保證一定有備藥。

阿所以該上哪打呢?基本可以先從政府相關單位的網站開始找起,例如:

另外,有少部分醫療院所有疫苗公開資訊,例如我找到的有亞東紀念醫院敏盛醫院北市聯醫,可以在他們的網站查詢疫苗供應狀況。

如果你真的進到上面列出的網站找疫苗資訊,很有可能會碰到跟我一樣的困境。

As an end user, 我會希望可以看到:

  • 有哪些醫院可以打疫苗,是公費還是自費?
  • 有哪些類型的疫苗可以施打?
  • 是否有備藥庫存?

可惜的是前述網站都還是有缺憾之處,以疾管署的網站來說:

  1. 缺乏單一窗口:他在「各縣市預防接種單位」有列出數種自費疫苗項目,但卻缺了最重要的流感疫苗。在「流感防治一通網」有流感疫苗了,但沒有列其他建議接種的疫苗,反而列了風馬牛不相關的黃熱病、腦髓炎、傷寒疫苗。感覺很像是不同單位負責,各做各的。
  2. 資訊不完整:「流感防治一通網」有列出疫苗庫存,但沒有區別公費或自費;「各縣市預防接種單位」有區別公、自費,卻沒有庫存資訊。然而,這對想要接種疫苗的人來說都是很必要的資訊。
  3. 資訊不正確:舉例來說,疾管署的網站說亞東醫院沒有 Tdap 疫苗,但其實是有的。相信其他不一致的狀況還有很多,那對 end user 來說這份資料的可靠度就十分存疑。

所以,以實務上來說,還是要到個別醫療院所的網站,才有較可靠完整的資訊。以先前查到的那幾家來說,訊息都還蠻完整的:

  • 亞東紀念醫院:每周更新、有區分公自費疫苗、有庫存資訊、種類完整
  • 敏盛醫院:有區分公自費疫苗、有庫存資訊、種類完整
  • 北市聯醫:有區分公自費疫苗、有庫存資訊,但缺破傷風疫苗狀態

不過畢竟有提供公開資訊的醫院還是少數,對許多人來說還是不太方便。

另外對要打疫苗的人來說,很重要的一點就是要先知道自己接種過什麼疫苗。這就需要接種紀錄與健保資料的整合。不知道有多少人知道,國健署有提供「健康存摺」和「全民健保行動快易通」APP 給大家查自己的接種紀錄,然後我想說都是…


Evolution of confluent-kafka-python

去年底在香港 ( PyCON HK 2018) 分享了一些使用 Apache Kafka 的心得。會去分享這個主題,是因為實際使用後發現在 Python 環境使用 Kafka 相較於原生的 Java/Scala,還是會踩到很多雷阿阿。事隔近一年,沒想到在這段時間 Kafka 對 Python 的支援有蠻多進展的,用這篇文來 follow up 整理更新一下。

市面上有蠻多開源的 Python client,這篇文章會專注在專注提供 Kafka 商業支援的 Confluent 所維護的 Python client — confluent-kafka-python

我去年的分享是基於 confluent-kafka-python 版本 0.1.4,目前最新已經來到 v1.1.0。這篇文章就會是這兩個版 …


Setup Selenium within 30 seconds!

Yeah yeah, I know that there are already numinous posts and articles talking about Selenium. But how long does it take to setup Selenium and ready to do web scraping? In this post, I will show you the easiest way to setup Selenium I have ever seen.

Assumptions

  • You know what web scraping is. It is useful for data mining, online price change monitoring, and watch your competition, and so on.
  • You know Selenium is not only a web browser automation tool but an essential brick for web scraping.
  • You are trying to build a web crawler with Selenium and Python.

Let your crawler works correctly and efficiently.

From my previous post, you already know how to setup Selenium and ChromeWebDriver for web scraping. Now let’s jump into the rabbit hole to see how to build a robust crawler.

The Basic Crawler

In the beginning, your crawler with ChromeWebDriver may look like this:

from selenium import webdriverdriver = webdriver.Chrome()
driver.get('http://www.google.com')
...

It should work in your box, but you may encounter issues when getting serious. You may deploy the crawler either on a server or a container. The environment is a problem. You also want your crawler can work correctly and efficiently.

webdriver.Chrome() Cheat Codes

Here I collect four cheat codes to get…


How to get trusted HTTPS in development environment

Source: https://kamsar.net/index.php/2017/10/All-about-xConnect-Security/

HTTPS everywhere! 現在無論是開發 web 還是 chatbot 應用,都很易碰到要提供 HTTPS 連線的需求。這篇文章提供我知道的幾種作法供大家參考~

TL; DR

以下方案可以讓您建立 HTTPS endpoint,其憑證由受信任的 CA 所簽發,適合用在開發環境上,而且免費!

  1. Heroku
  2. Ngork
  3. xip.io + Let’s Encrypt + Nginx/Certbot

適用情境

  • 開發階段,需要整測或跟外部系統介接,例如 webhook。
  • 需要對外提供 HTTPS endpoint,且其憑證需要能被 client 接受。

需要考量的點

要對外提供受信任的 HTTPS endpoint,首先當然是讓外部能連到你的應用。此外,申請合法憑證只有 public IP 一般是不行的,會需要有一個 domain name 能 …


Understanding OpenID Connect

Booking.com registration — an example of social login. It supports login with either Facebook or Google Account.

In this post, I would like to provide a brief understanding of the OpenID Connect (OIDC) without having to read the specs. This post builds upon what we learned about OAuth2 in the previous post in this series. I would like to encourage you to have a look at my previous post first for a clearer understanding.

No idea what’s OIDC? Please see the figure above. The figure is the screenshot of the registration portal on booking.com. Looks familiar to you? This form of sign-on is called “Social login.” Social login makes use of the existing identity and personal information…


瞭解 OpenID Connect 認證機制

Booking.com registration — an example of social login. It supports login with either Facebook or Google Account.

Hihi~ 上次介紹完線上認證授權技術兩本柱中的 OAuth 2.0,這次要跟大家介紹的是 OpenID Connect (OIDC) 。相較於 OAuth 2.0 提供的授權機制,OIDC 提供的認證功能,在大家日常生活中可能會更常用到喔!上圖是大家出國玩常用到的 Booking.com ,你可以看到她的註冊畫面可以選擇用 Facebook 或 Google 登入,是不是很熟悉呢?

這種可以用妳原有的帳號,登入其他網站或應用的功能,就稱為社群帳號登入(Social Login)。

OpenID Connect,就是實現 Social Login 的核心技術。

本文將對 ODIC 概念及機制做介紹,最後同樣以 LINE 提供的 OpenID Connect 服務:LINE Login 為例,dem …


OAuth 2.0 委任授權技術簡介

Google Account 的 screenshot。畫面顯示有多個第三方應用存取這個 Google Account 的資料。

大家有聽過 OAuth 及 OpenID Connect (OIDC) 嗎?這次接到 L 社神秘任務,來跟大家說一說這兩個融入每個人日常生活中的認證授權技術。平時大家可能不太留意,其實現在常用(X)天天用(O)的各種各種線上服務,例如 Google、Facebook 及 LINE 提供的各種應用,都是基於這次要講的這兩個技術標準來建構他們的認證授權機制喔!

所以如果您好奇您平常在使用的網路應用是如何安全且便利的提供服務,這篇介紹值得您繼續看下去;又或著您正是要導入 OAuth 或 OIDC 的開發者,這次介紹也提供一個不錯的起點,讓您可以快速瞭解這兩個標準的核心概念。

這次介紹會分成兩篇系列文發布。這篇會先討論的議題是「第三方應用存取授權」,也就是會介紹 OAuth 2.0 的部份。ODIC …


Introduction to OAuth 2.0

Screenshot of Google Account. You can see that several 3rd party applications have permissions to access data in this account.

Have you ever heard OAuth or OpenID Connect (OIDC)? They are widely used in our daily lives without much awareness. Google, Facebook, LINE and many service providers have already built their authentication and authorization mechanisms on their services we use every day based on these two technologies.

This post is for you if you are curious about: how these technologies help to identify you on the Internet, make your life easier during sign-up and registration online and protect your data on cloud platforms.

On the other hand, if you are a developer who wants to integrate OAuth or OIDC into…


Thread and signal in Linux

上一篇文章整理Linux的process群組(session、process group)與其signal傳遞機制。若要處理的case是像JVM這種喜歡single process multi thread的程序架構,就會需要瞭解thread/thread group這一階層的概念。

Linux thread

大家知道在linux thread的機制是後來加上去的,所以底層在很多地方是將thread和process一視同仁。整理linux thread機制如下:

  • linux 有一個類似fork的clone syscall,和fork的差別它起的process會和parent process share context/resource等很多資源
  • 在linux thread是以LWP的方式實現,也就在底層行程管理和排程將thread和process一視同。thread是一群比較特別的process,他們彼此share資源。
  • 在linux就是用clone syscall去起thread,也就是建立啟動時不新建PID/context的child process
  • 現代linux的thread實做稱為NPTL (Native POSIX Thread Library) ,開發者要使用thread功能,通常會引用pthread函式庫
  • 同process的thread會有相同的process id,且個別有thread id。對於multithread的process,process id又稱為thread group id

下圖用htop實際觀察process/thread階層關係:

圖中PPID, PID和TGID三個欄位是這邊特別要觀察的,分別是parent process id, process id, thread group id。

  • 可以看到thread group id是該thread group第一個process (leader)的process id
  • 同thread group的parent process id是其中第一個process的parent process id
  • 圖中Command欄位是綠色代表這是一個thread,其PID欄位值其實是thread id。圖中ipython共有有三個thread(一個leader, 兩個member)

Linux thread對signal的處理

thread比較常和同group內的其他thread通訊,比較不會從thread group外部以signal和特定thread交流的況況。

對於thread group內的signal傳遞pthread library提供pthread_kill()做thread group內部溝通。

對於從thread group外部打signal到特定thread,Linux提供tgkill system call,來發signal到某個thread group的某個thread。tgkill syscall在glibc沒有提供wrapper,要call的話只能透過syscall呼叫。

在Linux提供kill system call發signal到某個process。若這個process是mutlithread,則根據文件會是其中隨機一個thread會收到此signal

上述kill是system call,不應該和linux的kill command攪混。kill command雖然文件寫是吃PID,但實驗若是給TID,還是會發送signal。

照上述說法,有一個疑問是為何下kill command可以中止mutlithread程序呢?這是因為當任意thread收到terminatiion,預設都會中止整個thread group中所有的thread。

petertc

:sparkles::cake::sparkles:

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store