Skip to content

Instantly share code, notes, and snippets.

@lewcpe
lewcpe / vaccine.py
Created April 30, 2021 11:19
Simulation of Vaccine Efficacy
import random
VACCINE_EFFICACY = 0.504
VACCINE_WAIT = 14
SAMPLE_SIZE = 20_000
TOTAL_POPULATION = 10_000_000
INFECTION_RATE = 0.0002
class SimulateVaccine(object):
def __init__(self):
@lewcpe
lewcpe / sputnik.py
Created March 3, 2021 11:15
Extract raw data from SputnikV paper
PLACEBO_DATA = "h 12.837 v 1.644 h 2.57 v 0.82 h 2.56 v 0.82 h 2.57 v 2.464 h 2.569 v 1.639 h 7.699 v 0.82 h 2.569 v 1.639 h 2.569 v 1.644 h 2.562 v 1.639 h 2.568 v 0.82 h 2.57 v 0.825 h 2.561 v 4.103 h 2.569 v 1.639 h 2.569 v 1.64 h 2.569 v 1.671 h 2.561 v 2.556 h 2.57 v 3.451 h 2.568 v 2.62 h 5.13 v 3.597 h 2.57 v 2.723 h 2.569 v 0.906 h 2.569 v 1.822 h 2.561 v 3.645 h 2.569 v 0.911 h 2.569 v 2.745 h 2.561 v 1.827 h 2.569 v 2.75 h 2.569 v 3.666 h 5.131 v 0.923 h 2.568 v 0.922 h 2.569 v 0.922 h 2.57 v 1.849 h 5.13 v 2.782 h 2.57 v 1.855 h 2.568 v 0.933 h 2.562 v 1.866 h 2.569 v 0.932 h 7.698 v 0.944 h 2.57 v 2.863 h 2.569 v 2.879 h 7.699 v 1.041 h 2.569 v 1.073 h 7.7 v 1.191 h 2.569 v 2.454 h 7.698 v 1.396 h 2.57 v 1.462 h 2.561 v 3.084 h 2.569 35.935 2.569"
VACCINATED_DATA = "h 2.569 v 0.55 h 2.569 v 0.545 h 5.131 V 1.92 h 2.568 v 1.095 h 2.57 v 0.819 h 2.56 v 1.095 h 2.57 v 1.644 h 2.569 v 0.819 h 2.569 v 0.545 h 2.561 v 1.37 h 2.569 v 0.549 h 2.569 v 1.365 h 2.569 v 0.55 h 2.562 v 1.644 h 2.568 v 0.27 h 2
-----BEGIN CERTIFICATE-----
MIIFuzCCBKOgAwIBAgIMPNFKlCdJnUDWIIsqMA0GCSqGSIb3DQEBCwUAMEwxCzAJ
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlB
bHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcyMB4XDTIwMDkyNDA0MTgyOVoXDTIxMTAy
NjA0MTgyOVowHTEbMBkGA1UEAxMSaWxsZWdhbC5tZGVzLmdvLnRoMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2eV+e+Y9K+c8Xi3b6nW9orq9LAHSphog
8EUqrjpfOwUAzkh0rboAV4LeG0LoaTLHkpii9XJcINe7r7KaH5HNs7PpaRAdRpEO
jbQ61YfoyIyMEadTJRXlQ6OrVfanK9XKlI4Uo/WVev0tOmLca4/onVnMLA7n0516
nk+6oFvaH19BxAy0hhrjPh9I93PCqDzaoBloISjpuzjBO1o83rP5hw1EyyRE5YJA
8VtSiTlgMZqzoVFTLs/BCtg+2vhN6vB/sWh1jKCSLGDetynCIIKky79/oI4eAHIT

ใช้ docker image แบบ non-root

หลายๆ ครั้งเราต้องการรัน docker image โดยให้ซอฟต์แวร์อ่าน/เขียนข้อมูลภายใต้สิทธิ์ของ user เราเอง ไม่ใช่ root ซึ่งจะทำให้หลังจากรันโปรแกรมเสร็จแล้ว เราก็ไม่ต้องใช้สิทธิ์ root ในการจัดการไฟล์เหล่านั้น โดยเฉพาะกรณีผู้ใช้ CentOS/RHEL 8 แล้วใช้ podman จะมีผลมากกว่า เพราะ podman ไม่ต้องการ daemon ในสิทธิ์ root อยู่แล้ว

สำรวจดูพบว่าอิมเมจแต่ละอันมีวิธีการรันบน non-root ไม่เหมือนกัน เช่น postgres นั้นใช้อาร์กิวเมนต์ user ของ docker ไปตรงๆ เลย หากเขียนเป็น docker-compose.yml จะได้ประมาณนี้ (ในกรณี uid ของผู้ใช้ปัจจุบันเป็น 1001 และ gid เป็น 1005)

version: '3.5'
services:
 postgres:
@lewcpe
lewcpe / www.tmbdirect.com.cert
Created July 24, 2018 17:51
TMB Direct Revoked Cert on 24/07/2018
-----BEGIN CERTIFICATE-----
MIIHiDCCBnCgAwIBAgIRAMT31sLARukDAAAAAFTM1yEwDQYJKoZIhvcNAQELBQAw
gboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
MjAxNCBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs
BgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMU0wHhcN
MTYwODA1MDIyNjE1WhcNMTgxMDE0MDI1NjEyWjCBsTELMAkGA1UEBhMCVEgxEDAO
BgNVBAcTB0Jhbmdrb2sxEzARBgsrBgEEAYI3PAIBAxMCVEgxKDAmBgNVBAoTH1RN
QiBCYW5rIFB1YmxpYyBDb21wYW55IExpbWl0ZWQxHTAbBgNVBA8TFFByaXZhdGUg
T3JnYW5pemF0aW9uMRYwFAYDVQQFEw0wMTA3NTM3MDAwMDE3MRowGAYDVQQDExF3
@lewcpe
lewcpe / detect_faces.py
Created November 26, 2017 17:02
Detect Faces with AWS Rekognition
#!/usr/bin/env python3
"""Upload all images and index faces with AWS Rekognition"""
import boto3
import csv
import logging
from os.path import split, splitext
from botocore.exceptions import ClientError
def search_faces(collection, files, outfname):
@lewcpe
lewcpe / likey.csv
Created November 26, 2017 16:42
Info from face detection in Likey MV with AWS Rekognition
img_001 jihyo 006 0.17083300650119781 0.39965999126434326 0.2833330035209656 0.2891159951686859
img_001 jihyo 003 0.14943599700927734 0.47874999046325684 0.4680449962615967 0.3112500011920929
img_001 jihyo 010 0.07999999821186066 0.3533329963684082 0.4507319927215576 0.25555598735809326
img_001 jihyo 004 0.15555599331855774 0.4099999964237213 0.1644439995288849 0.24666699767112732
img_001 jihyo 007 0.09014420211315155 0.2644230127334595 0.3497599959373474 0.3497599959373474
img_002 jihyo 003 0.14943599700927734 0.47874999046325684 0.4680449962615967 0.3112500011920929
img_002 jihyo 006 0.17083300650119781 0.39965999126434326 0.2833330035209656 0.2891159951686859
img_002 jihyo 010 0.07999999821186066 0.3533329963684082 0.4507319927215576 0.25555598735809326
img_003 jihyo 003 0.14943599700927734 0.47874999046325684 0.4680449962615967 0.3112500011920929
img_003 jihyo 010 0.07999999821186066 0.3533329963684082 0.4507319927215576 0.25555598735809326
@lewcpe
lewcpe / index_faces.py
Created November 26, 2017 14:18
Index Faces from source folder with AWS Rekognition
#!/usr/bin/env python3
"""Upload all images and index faces with AWS Rekognition"""
import boto3
import logging
from os.path import split, splitext
def index_faces(collection, files):
client = boto3.client('rekognition')
for fname in files:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
เพิ่มข้อมูลส่วนตัวบน Facebook ไม่มีอีเมล ไม่บอกเบอร์โทร
แต่บอก PGP Key
สำหรับคนอื่นๆ ที่อยากคุยแแบบ PGP ก็นี่โลด https://keybase.io/lewcpe/key.asc
-----BEGIN PGP SIGNATURE-----
Version: Keybase OpenPGP v2.0.53
Comment: https://keybase.io/crypto
@lewcpe
lewcpe / 0_reuse_code.js
Created February 4, 2016 10:11
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console