Skip to content

Instantly share code, notes, and snippets.

View masatoi's full-sized avatar

Satoshi Imai masatoi

View GitHub Profile

プログラミング言語Hyのモードを作る話

プログラミング言語Hyのモードを作る話

自己紹介、モチベーション

  • ハンドル: masatoi
  • Emacs歴は20年くらい?
@masatoi
masatoi / keyevent.c
Created August 21, 2023 16:59
Output Key Event tool for SDL2
/*
sudo apt install libsdl2-dev
gcc keyevent.c -o keyevent -lSDL2
*/
#include <SDL2/SDL.h>
#include <stdbool.h>
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_VIDEO);
@masatoi
masatoi / init.el
Created April 13, 2023 11:55
ターミナルで表示崩れの原因になっている文字を?で置き換えるEmacsの設定例
;;; テキストコンソール時の表示崩れ対策
;;; 東アジア文字の幅が曖昧なものを全て `?` 表記にする
(unless (display-graphic-p)
(setq east-asian-ambiguous
'(#x00A1 ; Po INVERTED EXCLAMATION MARK
#x00A4 ; Sc CURRENCY SIGN
#x00A7 ; Po SECTION SIGN
#x00A8 ; Sk DIAERESIS
#x00AA ; Lo FEMININE ORDINAL INDICATOR
#x00AD ; Cf SOFT HYPHEN
@masatoi
masatoi / textra.el
Created June 21, 2022 22:40
textra.el
;;; Install
;; requestが必要なので M-x package-install request などでインストールしておく
;; init.elなどでロードする
;; (load-file "/path/to/textra.el")
;; キーバインドを設定しておく
;; (global-set-key (kbd "C-c t") 'textra-translate)
;;; Usage
;; 翻訳したい部分をリージョン選択して設定したキーバインド、または M-x textra-translate
;; 翻訳結果がミニバッファに出る。また、同じ内容がクリップボードにコピーされている
;;; -*- Coding: utf-8; Mode: Lisp; -*-
;; ltkのドキュメント
;; http://www.peter-herth.de/ltk/ltkdoc/
;; 逆引きCommon Lisp: Ltk
;; https://lisphub.jp/common-lisp/cookbook/index.cgi?Ltk
;; ライブラリ読み込み
(ql:quickload :ltk)
;;; 1.2 手続きとそれが生成するプロセス
;;; 1.2.1 線形再帰と反復
(defun factorial (n)
(if (= n 1)
1
(* n (factorial (- n 1)))))
(disassemble 'factorial)
; disassembly for FACTORIAL
@masatoi
masatoi / deepl.el
Last active September 8, 2023 15:47
emacs deepl client
;;; Install
;; requestが必要なので M-x package-install request などでインストールしておく
;; init.elなどでロードする
;; (load-file "/path/to/deepl.el")
;; キーバインドを設定しておく
;; (global-set-key (kbd "C-c t") 'deepl-translate)
;;; Usage
;; 翻訳したい部分をリージョン選択して設定したキーバインド、または M-x deepl-translate
;; 翻訳結果がミニバッファに出る。また、同じ内容がクリップボードにコピーされている

チャージQRコード

店舗ユーザが発行し、エンドユーザがポケペイアプリから読み取ることでチャージ取引が発生するQRコードです。

チャージQRコードを解析すると次のようなURLになります(URLは環境によって異なります)。

https://www-sandbox.pokepay.jp/checks/xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx

QRコードを読み取る方法以外にも、このURLリンクを直接スマートフォン(iOS/Android)上で開くことによりアプリが起動して取引が行われます。(注意: 上記URLはsandbox環境であるため、アプリもsandbox環境のものである必要があります) 上記URL中の xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx の部分がチャージQRコードのIDです。

@masatoi
masatoi / call-next-method.lisp
Created February 3, 2020 15:24
call-next-method復習
(defclass parent () ())
(defclass child (parent) ())
(defparameter p1 (make-instance 'parent))
(defparameter c1 (make-instance 'child))
(defgeneric say (self word))
(defmethod say ((self parent) word)
(format t "~A says ~A~%" self word))

Webスクレイピングと文書分類

この章でやること

インターネット上を流れるトラフィックは量的な意味では動画データが過半数を占めるようになりつつあるが、依然としてテキストデータの重要性は変わらない。テキストデータは日々ものすごいスピードで増え続けており、一人の人間の目で追い続けるのはもはや不可能である。また、それらのテキストデータは大抵の場合構造化されておらず、そのままでは使えないことが多い。そこでデータ分析が必要になる。テキストデータをデータ分析し、意味ある構造を取り出す行為をテキストマイニングと呼ぶ。

本章では、Common Lispのライブラリを用いて、インターネットをクローリングし、必要な情報を収集した上で構造化するためのいくつかの方法を紹介する。

Webスクレイピング

Webスクレイピングに必要なライブラリ

Webスクレイピングとはウェブサイトから必要な情報を取り出す行為のことをいう。 Webスクレイピングでは、(1) Webからデータを取得し、(2) これを解析しDOM木構造を作り、(3) そこから必要な情報を探索するというプロセスを踏む。