-->

2021/01/18

快速複製 table 資料 - insert into select

遇到一個奇怪的需求,要備份特定資料表的資料。因為很懶所以直接從 SQL 動手。

用 show create table 複製原有資料表的 schema:

> show create table users \G                                                                                         
***************************[ 1. row ]***************************
Table        | users
Create Table | CREATE TABLE `users` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB


再來用 「insert into select」 的方法來從原有的資料表拉資料:

insert into backup (name, email)
select name, email from users where id in (1, 3, 5)


這個作法好像會比一次一筆資料拉還要快一些,不過要注意的是 id (或是 auto_increment) 等欄位要忽略,讓 DB 自己處理,不然之後新增資料可能會出現 duplicated keys 之類的問題。

2021/01/16

Lutris 在 Ubuntu 20.04 上啟動失敗

 Lutris 0.5.8 在 Ubuntu 20.04 上啟動時會自動中斷,在 console 底下看到錯誤訊息:

Traceback (most recent call last):
  File "/usr/games/lutris", line 54, in 
    from lutris.gui.application import Application  # pylint: disable=no-name-in-module
  File "/usr/lib/python3/dist-packages/lutris/gui/application.py", line 53, in 
    from .lutriswindow import LutrisWindow
  File "/usr/lib/python3/dist-packages/lutris/gui/lutriswindow.py", line 26, in
    from lutris.gui.widgets.sidebar import LutrisSidebar
  File "/usr/lib/python3/dist-packages/lutris/gui/widgets/sidebar.py", line 6, in
    from lutris import platforms, runners, services
  File "/usr/lib/python3/dist-packages/lutris/platforms.py", line 19, in 
    _init_platforms()
  File "/usr/lib/python3/dist-packages/lutris/platforms.py", line 14, in _init_platforms
    runner = runners.import_runner(runner_name)()
  File "/usr/lib/python3/dist-packages/lutris/runners/wine.py", line 229, in __init__
    "default": dxvk.DXVKManager().version,
  File "/usr/lib/python3/dist-packages/lutris/util/wine/dxvk.py", line 56, in version
    return self.versions[0]
  File "/usr/lib/python3/dist-packages/lutris/util/wine/dxvk.py", line 45, in versions
    self._versions = self.load_dxvk_versions()
  File "/usr/lib/python3/dist-packages/lutris/util/wine/dxvk.py", line 65, in load_dxvk_versions
    with open(versions_path, "r") as dxvk_version_file:
FileNotFoundError: [Errno 2] No such file or directory: '/home/zeroplex/.local/share/lutris/runtime/dxvk/dxvk_versions.json


在 reddit 上面看到有人遇到同樣情況,似乎把設定檔塞到正確位置即可:

$ mkdir -p /home/zeroplex/.local/share/lutris/runtime/dxvk/
$ wget https://cdn.discordapp.com/attachments/538903130704838656/796102070825779250/dxvk_versions.json
$ mv dxvk_versions.json /home/zeroplex/.local/share/lutris/runtime/dxvk/

2020/11/01

有趣的 Benford's Law

 在 Netflix 的紀錄片「大數據時代」中的「數字」一集,發現及使看起來很像是亂數、無規律的數字,也會按照 Benford's Law (班佛定律) 來走,照樣可以分析出數據是否有造假。

老實說我自己不太相信有這種說法,特別還被科學認證過,所以我拿自己近幾年的支出記錄來作分析,得到下面的統計表 (直條為我的支出台幣的第一位數的量、折線代則代表 Bebford's Law 定義的位數百分比): 


這張圖表讓我真的很意外,雖然沒有相同的百分比,但是分布卻幾乎相同,且這還只有 6000 多筆資料而已,如果資料再增加,不曉得會發生什麼事。


ps. 可參考 MOPCON 2020 的「樸實無華的中小數據分析」來快速處理資料。

2020/10/26

軟體測試的經驗分享

最近同事在拼 unit test,就將以前撰寫測試的一些經驗整理出來分享。 

我不是專業的測試工程師,只是好死不死需要自幹 unit test,簡報中若有錯誤或是過時的地方,歡迎留言討論。整理後一起更新到簡報上!


以下做一些筆記:
  • s7:現在比較沒特別在分白箱和黑箱了,比較篇方法,如:TDD
  • s16:測試不只要用正確的資料做測試,也要拿錯誤的資料來跑
  • s25:每個 test framework or library 都有各自的特色,挑需要、順手的使用即可
  • s66:不要把測試搞得太複雜啊,到最後還要為測試程式建立另外的測試 XD
  • s68:不管是原始碼或是測試,都是越簡單越不容易出錯
  • s69:Google 這邊有篇「撰寫無法測試的程式」可參考
  • s80:SOLID 僅是用於物件導向程式語言;方法可參考但不一定要完全遵守
  • 公司在找工程師 XD

PTT 備份 - 醫師說你太慘了

以下文章容轉自 PTT StupidClown 看板。

原文網址為:https://www.ptt.cc/bbs/StupidClown/M.1603592005.A.765.html


作者Q8i (Q8i)
看板StupidClown
標題Re: [無言] 醫師說你太慘了
時間Sun Oct 25 10:13:23 2020

看到這篇醫院經歷很有感,浮上來發發廢文

--
大二的時候因為一些意外(這又是另個故事)
獲得了”急性心肌炎”的人生成就
開啟為期2年的追蹤

--
確診當天
醫生A:
你這心肌炎喔~
我20幾年接過五六個,你是第一個用走的進來

我(喘):不然要怎麼進來,騎車喔= =

醫生A:扛進來、躺進來

我(氣若游絲):痾.….然後?

醫生A:都送下去啊~

我:..…
(樓下太X間)

--
病床上
醫生B:你這沒特效藥喔

我:那怎麼辦?

醫生B:嚴重的話要換心臟

我:有沒有比較不驚悚的…(沒力氣說話)

醫生B:裝葉克膜

我:就會好了嗎?

醫生B:然後還是要等著換心臟

我:(翻白眼)

--
出院當天
醫生C:(拿起病歷)
喔~你就是運氣很好的那位~恭喜你出院

我:請問運氣很好是指….

醫生C:可以出院

--
回診檢查
護理師:Q先生~Q先生

我:這裡

護理師:你這狀況很少見耶~我是第一次遇到

我:我也是第一次得到(無奈)

--
回診檢查N次
醫生D:…..(默默看著病歷)

我:…..

醫生D:…..(抬頭盯著我)

我:…..

醫生D:你運氣不錯喔

我:謝謝,我有聽說
(你們到底在我的病歷上寫什麼啦Q_Q)

--
回診檢查NN次
醫生D:恩~恢復得不錯~恭喜你

我:謝謝醫生,這樣我心臟就痊癒?

醫生D:大概95%

我:那剩下的5%什麼時候….

醫生D:(微笑)(微笑)(微笑MAX)

我:(不要一直微笑啊啊啊)

--
某天去捐血
人多,排了1H終於輪到我,小房間先問診
護理師(?):有什麼特殊疾病嗎?

我:以前得過心肌炎

護理師(?):(猛翻手上的檢查表)

1分鐘後

護理師(?):找到了,你不能捐血喔~

我:所以要下次再來?

護理師(?):不是,你這輩子都不能捐血~

我:Q_Q

--
至少還能發廢文(≧∀≦)b