Skip to content

Instantly share code, notes, and snippets.

View skoji's full-sized avatar
:octocat:
Working from home

Satoshi KOJIMA skoji

:octocat:
Working from home
View GitHub Profile
@skoji
skoji / observe.js
Created November 1, 2023 11:26
observe property by proxy
class Test extends EventTarget {
constructor() {
super();
this.value = 0;
}
}
const test = new Test();
const t = new Proxy(test, {
set: function(target, prop, value) {
@skoji
skoji / unobfuscate.rs
Created September 28, 2021 01:10
EPUB3 OCF unobfuscate test code (not sure it is correct or not)
// unobfuscate test code in OCF https://www.w3.org/publishing/epub3/epub-ocf.html#obfus-algorithm
// [dependencies]
// sha-1 = "0.9.8"
use sha1::{Digest, Sha1};
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
const KEY: &[u8] = b"key string";
@skoji
skoji / monokakido.el
Last active August 26, 2023 01:22
辞書 by 物書堂 macOS版をEmacsから使う
(defun monokakido-lookup (word)
"Lookup word with Dictionaries.app by Monokakido"
(call-process "open" nil 0 nil (concat "mkdictionaries:///?text=" word)))
(defun monokakido-lookup-word ()
"Lookup the word at point with Dictionaries.app by Monokakido."
(interactive)
(monokakido-lookup (read-from-minibuffer "Monokakido: " (current-word))))
(global-set-key (kbd "C-c w") 'monokakido-lookup-word)
@skoji
skoji / init.js
Created March 7, 2021 04:27
Daily Journal script for Inkdrop
inkdrop.commands.add(document.body, "custom:new-journal", async () => {
const db = inkdrop.main.dataStore.getLocalDB()
const bookId = (await db.books.findWithName('Journal'))._id
const title = `Daily: ${new Date().toLocaleDateString()}`
const existingNotes = (await db.notes.findInBook(bookId)).docs.filter(f => f.title === title)
if (existingNotes.length > 0) {
inkdrop.commands.dispatch(document.body, "core:open-note", {
noteId: existingNotes[0]._id
});
return;
@skoji
skoji / keybase.md
Created January 28, 2021 06:35
keybase.md

Keybase proof

I hereby claim:

  • I am skoji on github.
  • I am skoji (https://keybase.io/skoji) on keybase.
  • I have a public key ASDJECPiEN7SU6M5imufwydV5tGAwSm2EjSZ8ovppIuJIwo

To claim this, I am signing this object:

 本日ここに、被爆75周年の長崎原爆犠牲者慰霊平和祈念式典に当たり、原子爆弾の犠牲となられた数多くの方々の御霊(みたま)に対し、謹んで、哀悼の誠を捧(ささ)げます。
 そして、今なお被爆の後遺症に苦しまれている方々に、心からお見舞いを申し上げます。
 新型コロナウイルス感染症が世界を覆った今年、世界中の人々がこの試練に打ち勝つため、今まさに奮闘を続けています。
 75年前の今日、一木一草もない焦土と化したこの街が、市民の皆様の御努力によりこのように美しく復興を遂げたことに、私たちは改めて、乗り越えられない試練はないこと、そして、平和の尊さを強く感じる次第です。
 長崎と広島で起きた惨禍、それによってもたらされた人々の苦しみは、二度と繰り返してはなりません。唯一の戦争被爆国として、「核兵器のない世界」の実現に向けた国際社会の努力を一歩一歩、着実に前に進めていくことは、我が国の変わらぬ使命です。
 現在のように、厳しい安全保障環境や、核軍縮をめぐる国家間の立場の隔たりがある中では、各国が相互の関与や対話を通じて不信感を取り除き、共通の基盤の形成に向けた努力を重ねることが必要です。
 特に本年は、被爆75年という節目の年であります。我が国は、非核三原則を堅持しつつ、立場の異なる国々の橋渡しに努め、各国の対話や行動を粘り強く促すことによって、核兵器のない世界の実現に向けた国際社会の取組をリードしてまいります。
 本年、核兵器不拡散条約(NPT)が発効50周年を迎えました。同条約が国際的な核軍縮・不拡散体制を支える役割を果たし続けるためには、来るべきNPT運用検討会議を有意義な成果を収めるものとすることが重要です。我が国は、結束した取組の継続を各国に働きかけ、核軍縮に関する「賢人会議」の議論の成果も活用しながら、引き続き、積極的に貢献してまいります。
 「核兵器のない世界」の実現に向けた確固たる歩みを支えるのは、世代や国境を越えて核兵器使用の惨禍やその非人道性を語り伝え、承継する取組です。我が国は、被爆者の方々と手を取り合って、被爆の実相への理解を促す努力を重ねてまいります。
 被爆者の方々に対しましては、保健、医療、福祉にわたる支援の必要性をしっかりと受け止め、原爆症の認定について、できる限り迅速な審査を行うなど、高齢化が進む被爆者の方々に寄り添いながら、今後とも、総合的な援護施策を推進してまいります。
@skoji
skoji / raw-to-jpg.rb
Last active June 9, 2019 09:15
Pentax RAW file to jpeg, preserving creation date
filename = ARGV[0]
raise "specify PEF file." unless filename =~ /.PEF$/ # should change according to what you want to convert
raise "file #{filename} does not exists." unless File.exist?(filename)
stat = File::Stat.new(filename)
converted = filename.sub(/.PEF$/, ".jpg")
raise "convesion failed" unless system "convert #{filename} #{converted}"
File.utime(stat.mtime, stat.mtime, converted)
@skoji
skoji / update.sh
Created May 16, 2019 01:03
Update Let's Encrypt (Ubuntu 16.04)
sudo apt-get update
sudo apt-get upgrade certbot -y
# follow the instructions here https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210
sudo certbot renew
# change e-mail
sudo certbot update_account --email <new email address>
@skoji
skoji / FromEscapeToJapanese_eisuu.json
Created November 20, 2018 12:43
karabinier : ~/.config/karabiner/assets/complex_modifications/FromEscapeToJapanese_eisuu.json
{
"title": "Terminal等でESCあるいは^[で日本語入力を英数に",
"rules": [
{
"description": "Terminal, iTerm2またはMacVimでESCあるいは^[を押したときに日本語入力を英数に切り替える。",
"manipulators": [
{
"type": "basic",
"from": { "key_code": "escape", "modifiers": { "optional": [ "any" ] } },
"to": [ { "key_code": "japanese_eisuu" }, { "key_code": "escape" } ],
// 参考: https://codereview.stackexchange.com/questions/173338/calculate-mean-median-and-mode-in-rust
use std::collections::HashMap;
fn mean(data : &Vec<i32>) -> f32 {
let mut r = 0;
for i in data {
r = r + i;
}
r as f32 / data.len() as f32
}
fn median(data: &Vec<i32>) -> i32 {