Skip to content

Instantly share code, notes, and snippets.

### Keybase proof
I hereby claim:
* I am lewcpe on github.
* I am lewcpe (https://keybase.io/lewcpe) on keybase.
* I have a public key whose fingerprint is 8FA0 E06B 34B8 7FBE EA8B 6269 4A61 7A10 2700 6D3D
To claim this, I am signing this object:
@lewcpe
lewcpe / mail2slack.py
Created February 4, 2016 08:36
Forward a mail from monit to slack
#!/usr/bin/env python
#! -*- coding:utf-8 -*-
"""
Mail to Slack
==========
A Simple SMTP server that will forward messages to Slack. It provides a simple
authentication mechanism via reciever's domain. This utility is designed for
monit monitoring.
"""
import email
@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
-----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 / 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:
@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 / 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 / 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

ใช้ 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:
-----BEGIN CERTIFICATE-----
MIIFuzCCBKOgAwIBAgIMPNFKlCdJnUDWIIsqMA0GCSqGSIb3DQEBCwUAMEwxCzAJ
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlB
bHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcyMB4XDTIwMDkyNDA0MTgyOVoXDTIxMTAy
NjA0MTgyOVowHTEbMBkGA1UEAxMSaWxsZWdhbC5tZGVzLmdvLnRoMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2eV+e+Y9K+c8Xi3b6nW9orq9LAHSphog
8EUqrjpfOwUAzkh0rboAV4LeG0LoaTLHkpii9XJcINe7r7KaH5HNs7PpaRAdRpEO
jbQ61YfoyIyMEadTJRXlQ6OrVfanK9XKlI4Uo/WVev0tOmLca4/onVnMLA7n0516
nk+6oFvaH19BxAy0hhrjPh9I93PCqDzaoBloISjpuzjBO1o83rP5hw1EyyRE5YJA
8VtSiTlgMZqzoVFTLs/BCtg+2vhN6vB/sWh1jKCSLGDetynCIIKky79/oI4eAHIT