pretty code

2020年5月17日 星期日

108年度綜合所得稅申報之不休假獎金

今天在下載所得資料時,發現記帳的金額比政府資料還多,差了幾千塊,由於我的薪資所得很簡單,沒甚麼奇奇怪怪的 Bonus,不像外商,會突然發個三五十萬,故不可能是我記帳資料有誤,後來看了我另一個網路 EXCEL 檔後發現,EXCEL 的金額也是對的,review 了分類帳後,確定是特休未修完的金額換算。那問題來了,為什麼此筆金額免計入薪資所得?我想還是先從相關法條看起。

根據《勞動基準法》第 38 條規定:

第 38 條
勞工在同一雇主或事業單位,繼續工作滿一定期間者,應依下列規定給予
特別休假:
一、六個月以上一年未滿者,三日。
二、一年以上二年未滿者,七日。
三、二年以上三年未滿者,十日。
四、三年以上五年未滿者,每年十四日。
五、五年以上十年未滿者,每年十五日。
六、十年以上者,每一年加給一日,加至三十日為止。
前項之特別休假期日,由勞工排定之。但雇主基於企業經營上之急迫需求
或勞工因個人因素,得與他方協商調整。
雇主應於勞工符合第一項所定之特別休假條件時,告知勞工依前二項規定
排定特別休假。
勞工之特別休假,因年度終結或契約終止而未休之日數,雇主應發給工資
。但年度終結未休之日數,經勞雇雙方協商遞延至次一年度實施者,於次
一年度終結或契約終止仍未休之日數,雇主應發給工資。
雇主應將勞工每年特別休假之期日及未休之日數所發給之工資數額,記載
於第二十三條所定之勞工工資清冊,並每年定期將其內容以書面通知勞工
。
勞工依本條主張權利時,雇主如認為其權利不存在,應負舉證責任。

嗯,很好完全沒提到,我想應該要從稅法找起,好累直接 Google 吧。

財政部高雄國稅局在 2019/12/30 有一則關於不休假獎金的新聞稿:「依據勞動基準法規定,凡是勞工在年度終結或契約終止時未休完特別休假之所有日數,雇主應發給工資,該不休假獎金屬加班費的一種依據所得稅法第14條第1項第3類薪資所得第4款但書規定,為雇主之目的,執行職務而支領之加班費不超過規定標準者,免計入薪資所得課稅。財政部74年5月29日台財稅第16713號函釋所謂規定標準係依勞動基準法第24條規定「延長工作時間之工資」及第32條規定「每月平日延長工作總時數」限度內支領之加班費。機關、團體、公私營事業員工因未休完特別休假日折發之不休假加班費,其金額符合前列標準者,免計入薪資所得課稅。」

2020年5月16日 星期六

The format of xxprintf function in C99

前幾天為了打印一些數值在 Log,使用了 "%02.2f",不料結果卻不符預期,還是回到 Spec 一探究竟。

這個說明是在 7.21.6 Formatted input/output functions 的 7.21.6.1 The fprintf function

The description of format

% flags field-width precision length specifier(d, f, x ...)
(except specifier, all of them are optional)

其中在 0 flag 這一小段中有提到:
For d, i, o, u, x, and X conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior is undefined.

我原本以為是 0 不能與 precision 共用,但我記得我 10 幾年前剛學 C 語言時,有小數點的還是可以漂亮對齊的,難道是我記錯了?

後來嘗試幾種排列組合,終於可以對齊了,嘗試的結果 field-width 應該是有包含小數點及小數點位數?

明明有 Spec 還是看不懂,我的英文真的有待加強。


2020/05/17 更新

1. 今天再看了一次 Spec,field-width 提到如果轉換後的 values 有的 characters 比 field-width 少,則補 spaces on the left。
An optional minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces (by default) on the left (or right, if the left adjustment flag, described later, has been given) to the field width. The field width takes the form of an asterisk * (described later) or a nonnegative decimal integer.

2. 我們一般習慣使用 field-width 去指定 int 個數,例如 "%04d",其實也可以用 precision,他就是用來指定最小位數,只是對 int 及 float 有不一樣的用法。
An optional precision that gives the minimum number of digits to appear for the d, i, o, u, x, and X conversions, the number of digits to appear after the decimal-point character for a, A, e, E, f, and F conversions.

2020年5月15日 星期五

Mirror Port Switch GS1200-5

之前利用這一台機器順利的解決公司設備無法上網的問題,今天放假在家,剛好手邊裝置昨天有系統更新,便想利用 Mirror Port 功能幫助抓取系統更新檔以利後續研究,思考了一下,快速地把環境架設起來。

記錄一下 Web 設定,免得之後忘記,以後就固定監控 Port 1。
接著使用 Wireshark 觀察網路封包。不意外的,雖然 API 是走 HTTPS,但下載檔案為了速度的關係,還是走 HTTP,於是便順利的取到 PKG 檔案,雖然應該還是有加密就是。

好了,要出門了,之後再想辦法利用這個檔案。

2020/05/15 更新

https://github.com/janten/dpt-rp1-py  register 使用方式 on Windows 10
1. pip3 install dpt-rp1-py
2. cd C:\Python37\Scripts
3. python dptrp1 --addr xxx register
4. PIN code will show in your mooInkPro screen and input it to console.
5. python dptrp1 --addr xxx list-commands to show commands.

2020/05/16 更新


上面專案貌似是解開 PKG 檔案的 Tool,不過需要一台 Linux 電腦,下載 Ubuntu 20.04 後,使用 USB 開機卻不能使用 Keyboard,後來想到,應該是 Linux 很討厭 UEFI Secure Boot 的緣故,Disable Secure Boot 後便可以順利操作。

執行時會出現驗證失敗,還需要研究一下。

2020/05/17 更新

殘念,這跟我之前試 HappyZ 工具一樣,重點還是在 Key 不一樣,所以使用 octavianx 的工具無法解開我的 PKG 檔,因為那是 DPT 系列的 Key,QQ。

讀墨新式書櫃抓蟲記

趁著今天不用上班還沒出去的時候,記錄一下我在讀墨新式書櫃遇到的問題,並嘗試重現此問題以利後續 Debug。


此問題是當我偶爾進書櫃時,我的書籍總數是錯的,我應該是 423 本,但卻顯示 340 本。

OS: Windows 10 家用版
Chrome: 81.0.4044.138
Edge: 44.18362.449.0

各種 Case 狀況:
1. 使用 Chrome 正常模式,當開啟讀墨首頁時,顯示未登入,使用自動記錄帳密方式登入後,進入書櫃,此時書本數量便會顯示 340 本,登出再登入也是如此。
2. 使用 Chrome 無痕模式,操作同上,進入書櫃顯示 423 本。
3. 使用 Edge,操作同上,進入書櫃顯示 423 本。

目前已知有顯著不同的是:
1. 使用 Chrome 無痕模式正常。
2. 使用 Chrome 正常模式時,如果是有記住登入狀態的,有時正常,有時不正常。
3. 使用 Edge 進入書櫃會先進入到總覽頁面,而 Chrome 則是直接進入到書籍頁面。
4. Chrome 正常模式登出再登入時,如果進入書櫃也是先進到總覽頁面,此時書籍總數便是對的。

另外,library_items 這支API 似乎是回傳書籍數量,但為什麼是 426 本呢?個人猜測是加上雜誌 3 本,只是也說不太通,因為我還有 1 本有聲書就是了。

2020/05/18 更新

進入書櫃頁面狀態,看起來跟 Bug 無關!那是因為 Readmoo 會記住這次的選擇,如果這次選擇雜誌,那下次進來就會先到雜誌頁面。

2020年5月13日 星期三

Android Screen Off App 原理

查了一下,目前 Android 9 大概有以下幾種作法:

1. PowerManager.goToSleep()
這個 API 需要 android.permission.DEVICE_POWER 權限,這個需要系統級別 App 才行。

2. DevicePolicyManager.lockNow()
這個需要給它裝置管理員權限,且無法再使用指紋辨識解鎖,只能使用你設定的解鎖方式解鎖。另外如果是滑動解鎖或是無解鎖的選項,此 API 無法使用。

3. 改變 Settings.System.SCREEN_OFF_TIMEOUT
這個需要 android.permission.WRITE_SETTINGS 權限,並要透過 Settings.ACTION_MANAGE_WRITE_SETTINGS 此方式取得,或是直接去應用程式資訊,給予 App 修改系統設定權限。另外,實測最少還是要 15 秒,即使你傳 1000 毫秒進去,一樣需要 15 秒才能進入睡眠,但指紋辨識是可以解鎖的。

結論要快速用 2,要方便用 3,不怕漏洞的用 1。

2020/05/16 更新

方法 2 看起來跟 OS 版本有關,回過頭使用 Android 6.0,使用指紋也可以順利解鎖。

2020年5月6日 星期三

EPUB META-INF\container.xhtml 檔案初探

以前轉電子書時,書名都固定去 OEBPS\content.opf  檔案中找尋書名 <dc:title>

最近整理了一下,才知道應該要從 META-INF\container.xhtml 這支檔案裡面的 <rootfiles> 找到該描述檔的檔名與位置。

目前我知道的檔名就有 3 種例子:
OEBPS\content.opf
OEBPS\package.opf
item\standard.opf

難怪之前 KepubifyKEPUB 常會報錯,那是因為程式找不到 OPF 檔的緣故。

2020年5月2日 星期六

Android 手機購買記錄

2010/xx/xx LG Optimus Chic E720 (搭配遠傳費率 0 元)
2012/xx/xx LG E730
2014/02/xx Acer Liquid E2
2016/06/xx Acer Z530
2018/02/xx HTC One X10 (4,800)
2020/04/30 HTC Desire 19s (5,100)
2022/05/13 SHARP AQUOS wish (6,390)
2024/07/01 Google Pixel 8a (16,490 + 999 + 990)

挑選手機原則:

1. 空機 5000 左右
2. 搭配正常費率續約則是不超過 3000

2024/10/11 更新

超過一萬元的手機拍照還是比較好,要記錄事情時比較方便。

以後換手機目標不超過 2 萬元,除非是電子紙手機才允許超過上限。

不能比 Pixel 8a 重,尺寸也不能超過它。

Pixel 8a 規格

152.1 公釐 (高) x 72.7 公釐 (寬) x 8.9 公釐 (厚)
189 克

Pixel 8a 保護殼

長度:156.7 公釐 (6.2 吋)
寬度:77.3 公釐 (3 吋)
高度:11.3 公釐 (0.4 吋)
重量:29.4 克 (1 盎司)