TakesxiSximada

しむどん三度無視

しむどん三度無視

[Rust] 標準入力を取り扱う

実装 use std::io; use std::io::BufRead; fn main() { let stdin = io::stdin(); for line_result in stdin.lock().lines() { println!("DATA: {:?}", line_result); } } main.rs ビルド $ rustc main.rs 実行 bash-5.1$ echo aaaaaaaaaaaaaa | ./main DATA: Ok("aaaaaaaaaaaaaa") ...

+++  · 1 min read

しむどん三度無視

EmacsとRustでTCPソケットを開いて接続を待ち受ける

方針 TCPソケットを開く処理はRustで実装する。 Emacs側はプロセスを起動するだけに止め標準入出力でそのプログラムとやり取りする。 実装 [package] name = "emacs-tcp" version = "0.1.0" authors = ["TakesxiSximada <[email protected]>"] ...

+++  · 1 min read

しむどん三度無視

[Python][websockets] Websocket Echoサーバーを実装する

websocketsのドキュメントをそのまま動かしてみた。 https://websockets.readthedocs.io/en/stable/ 実装 #!/usr/bin/env python import asyncio import websockets async def echo(websocket, path): async for message in websocket: print(f"recv {len(message)}") await websocket.send(message) start_server = websockets.serve(echo, "localhost", 8765) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() server.py import asyncio import websockets async def hello(): uri = "ws://localhost:8765" async with websockets.connect(uri) as websocket: await websocket.send("Hello world!") await websocket.recv() asyncio.get_event_loop().run_until_complete(hello()) ...

+++  · 1 min read

しむどん三度無視

Rustでasync_stdを用いて簡易なHTTP Serverを実装する

実装 [package] name = "testing" version = "0.1.0" authors = ["TakesxiSximada <[email protected]>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] futures = "0.3" [dependencies.async-std] version = "1.6" features = ["attributes"] Cargo.toml use async_std::prelude::*; use async_std::net::TcpListener; use async_std::net::TcpStream; use futures::stream::StreamExt; async fn handle_connection(mut stream: TcpStream) { let mut buffer = [0; 1024]; stream.read(&mut buffer).await.unwrap(); let response = "HTTP/1.1 200 OK\r\n\r\naaaaaa\r\n\r\n"; stream.write(response.as_bytes()).await.unwrap(); stream.flush().await.unwrap(); } #[async_std::main] async fn main() { let listener = TcpListener::bind("127.0.0.1:7878").await.unwrap(); listener .incoming() .for_each_concurrent(/* ...

+++  · 1 min read

しむどん三度無視

RustでTCP Echo Serverを書く

TCPソケットを開いて接続を待ち受け、送られてきたデータをそのまま返すTCP EchoサーバーをRustで実装した。 ...

+++  · 2 min read

しむどん三度無視

RustでHello world!

Hello worldをprintするだけの処理を書く fn main () { println!("Hello world!"); } main.rs ビルド シンプルなコードなのでrustcを直接用いてビルドすることにした。 rustcコマンドの第一引数 ...

+++  · 1 min read

しむどん三度無視

シェルコードを実装する

C言語でexecveを用いてシェルを起動する #include <unistd.h> int main() { char filename[] = "/bin/sh\x00"; char **argv = 0; char **envp = 0; execve(filename, argv, envp); } exec_shell.c execveシステムコールを呼び出す処理をアセンブリで書く コンパイラはN ...

+++  · 1 min read

しむどん三度無視

セキュリティ関連の勉強会に参加した内容まとめ

心に残った良い内容だったと思えたものはこの3つ。 https://www.slideshare.net/shunaroo/mitre-attck-249336202 https://www.slideshare.net/ssuser8911f21/5eddsa https://speakerdeck.com/azara/zatukuri-hua-su-aws-iam-falsete-quan-sheng-ge-falsekao-efang-todui-ce ざっくりまとめていく。 TLPT TLPTとは TLPTとはThreat Led Penetration Testのこと。脅威情報をもとにして攻撃者 ...

+++  · 4 min read

しむどん三度無視

KubernetesのPod内のコンテナにシークレトで保持しているJSONファイルをマウントする

KubernetesではSecretで保持した値をPodで動作しているコンテナからファイ ルとして読み取らせることができる。以下では設定を行う。 Secretを登録 ...

+++  · 1 min read

しむどん三度無視

[WIP] READMEに何を書くべきか?

コンテンツ   ORDERED DONE READMEで伝えるべき構成要素 SCHEDULED: <2021-05-09 Sun> CLOCK: [2021-05-09 Sun 10:10]–[2021-05-09 Sun 10:19] => 0:09 READM ...

+++  · 1 min read

しむどん三度無視

Oracle DatabaseをDockerで起動する

Oracle Databaseのソースコードを取得しDocker Imageを自分でビルドして起動する。 ...

+++  · 3 min read

しむどん三度無視

Pythonでasyncioの非同期処理を実行中にシグナルハンドラが実行された場合、非同期処理は処理を一時的に停止するか?

Pythonの非同期処理の標準ライブラリであるasyncioを用いて非同期処理を実行している時にOSからシグナルを受信してシグナルハンドラに登録した関数が呼び出されるとPythonのGILの性質により実行されていた非同期処理は一時的に処理を中断することを確認した。 ...

+++  · 2 min read

しむどん三度無視

Github CLIを使う

Githubの操作を行うCLIクライアントGithub CLIを使う。 ...

+++  · 2 min read

しむどん三度無視

期首月と年月から年度を取得するEmacs Lisp

期首月と年月から年度を取得する (defun get-fiscal-year(beginning_of_month year month) (if (<= beginning_of_month month) year (- year 1))) ...

+++  · 1 min read

しむどん三度無視

Confluenceについて考える

ナレッジマネジメントツールであるConfluenceとその付き合い方について考える。 ...

+++  · 3 min read

しむどん三度無視

EmacsのサブプロセスをGraceful Shutdownする

AWSのECSの停止時の挙動をローカルでエミュレートするためにGraceful Shutdownのための関数を実装した。 ...

+++  · 3 min read

しむどん三度無視

Editorモードで作成するファイルをファイルスタイルとディレクトリスタイルの両方に対応した

Emacsでblogの編集などを素早く行うためにEditorモードで作成するファイルをファイルスタイルとディレクトリスタイルの両方に対応した。 ...

+++  · 3 min read

しむどん三度無視

hugo-PaperModのshare_iconの設定方法

静的サイトジェネレーターHugoのテーマであるhugo-PaperModで、share_iconはどのように設定されているのかを調べた。 ...

+++  · 1 min read

しむどん三度無視

PythonでGmailのSMTPサーバーを使ってEmailを送信する

Pythonの標準ライブラリであるsmtplibを用いてSMTPでEmailを送信する。 ...

+++  · 1 min read

しむどん三度無視

Redis

Redisとは インメモリデータベース Key Value Store 速い Pub/Subの機能もある Whalebrew #!/usr/bin/env whalebrew image: redis:alpine3.13 ports: - "6379:6379" Pythonとredis-pyでRedisを使う redis-pyをインス ...

+++  · 1 min read

しむどん三度無視

xref.el

Emacsのクロスリファレンス用ライブラリであるxref.elについて調べた。 ...

+++  · 2 min read

しむどん三度無視

org-agendaのday viewでlocationの表示を行う

org-agenda-propertyを用いてorg-agendaのday viewに場所の情報を表示させる。 ...

+++  · 2 min read

しむどん三度無視

Googleに除外されているページをすべて非公開にする

Googleに除外されたページをCSVでダウンロードし非公開設定をおこなう。 ...

+++  · 9 min read

しむどん三度無視

translate-shellとEmacsを使って翻訳する

CLI環境で使えるtranslate-shellを用いてEmacs上から翻訳処理を実行する。 ...

+++  · 5 min read

しむどん三度無視

AWS ECS Execを使用してFargate上のコンテナとのセッションを開始する

AWS ECS Execがを使用してFargate上のコンテナとのセッションを開始する。同様ことができる従来のSSMセッションマネージャーとの比較を行う。 ...

+++  · 3 min read

しむどん三度無視

Celeryのワーカープロセス

Python製の非同期ジョブフレームワークであるCeleryのワーカープロセスのGraceful Shutdownの挙動を確認する。 ...

+++  · 3 min read

しむどん三度無視

GNU Guileのshebang

GNU Gnuleで使えるshebangを例示する。 ...

+++  · 1 min read

しむどん三度無視

AWS CLI及びSessionManagerPluginをインストールしFargateのコンテナとのセッションを開始する

AWS CLI及びSessionManagerPluginのインストール セッションを開始するにはAWSCLIとSessionManagerPluginをインストールす ...

+++  · 1 min read

しむどん三度無視

Terraformのバックエンド

Terraformの状態を記録するtfstateファイルの保存先のバックエンドの種類と使い方を解説する。 ...

+++  · 1 min read

しむどん三度無視

文章を音声で読み上げるEmacs Lisp

機械音声の動画を作成するにあたり、原稿を読み上げたらどうなるのかを Emacs上で確認できるように拡張を書いた。読み上げのツールとしては OpenJTalkを用いて ...

+++  · 2 min read

しむどん三度無視

リレーショナルデータベース

環境の構築方法 DB2 11.5.0.0 https://hub.docker.com/layers/ibmcom/db2/11.5.0.0/images/sha256-6e0d47d26c774cfcce36410dd2f1c8411f61d9692d8ddf03b967da7837b69686?context=explore 11.5.5.0 https://hub.docker.com/layers/ibmcom/db2/11.5.5.0/images/sha256-9577b5f306efdbc2792297275b8331059d0818eb70700d8106d986da2908d45c?context=explore https://qiita.com/Haruka-Ogawa/items/0a4696ded4fa40e5e983 https://qiita.com/SVC34/items/71dec32ca68943432f76 https://hub.docker.com/r/ibmcom/db2 MySQL 8.0.22 https://hub.docker.com/layers/mysql/library/mysql/8.0.22/images/sha256-9ea5b1010711123ab241f86b9aafeee0e4c425942a651a0ea3c2817e369c086a?context=explore $ docker pull mysql:8.0.22 Oracle Database https://qiita.com/niwasawa/items/0834e77b0690a5c8501d https://cosol.jp/techdb/2019/05/use_oracle_database_no_charge/ PostgreSQL 12 docker pull postgres:12-alpine https://hub.docker.com/layers/postgres/library/postgres/12-alpine/images/sha256-04da9831116872801b0ad9ce83a5577ee4779b3e8332a1dc2ec8df7ff95d04e9?context=explore SQL Server 2017 $ docker pull mcr.microsoft.com/mssql/server:2017-latest https://hub.docker.com/_/microsoft-mssql-server MySQL vs Percona Server for MySQL vs MariaDB MySQLにはその派生版や別配布がある。Percona Server for MyS ...

+++  · 1 min read

しむどん三度無視

ripgrep

ripgrepをインストールし、Emacsから利用できるように設定を行った。 ...

+++  · 2 min read

しむどん三度無視

ふりかえり

2021年の1月から3月までを振り返る。 ...

+++  · 1 min read

しむどん三度無視

compileコマンドでvtermを使いたい

compileコマンドでvtermを使うためにcompilation-startをモンキーパッチする。 ...

+++  · 1 min read

しむどん三度無視

Emacsでlibvtermを使う

Emacsでvtermを使うためにlibvterm、libtool、cmake、libvtermを準備しvtermをインストールした。 ...

+++  · 1 min read

しむどん三度無視

PythonのEnumをjson.dumpでJSON形式に変換する

PythonのEnumをjson.dumpでJSON形式に変換するためのJSONEncoderの実装例を示す。 ...

+++  · 2 min read

しむどん三度無視

Pythonの型ヒント

型変数の例 from dataclasses import dataclass from functools import singledispatch from typing import Dict, Generic, List, NewType, Optional, TypeVar @dataclass class FooEvent: pass @dataclass class BarEvent: pass @dataclass class BazEvent: pass Event = TypeVar("Event", FooEvent, BarEvent, BazEvent) @singledispatch def as_custom_dict(ev: Event) -> Dict: return {} @as_custom_dict.register def _(ev: BazEvent) -> Dict: return {} def func_effect(ev: Event) -> Dict: return as_custom_dict(ev) ...

+++  · 1 min read

しむどん三度無視

BIツール

Metabase インストールと起動 https://www.metabase.com/start/oss/ Docker インストール docker pull metabase/metabase 起動 docker run -d -p 3000:3000 --name metabase metabase/metabase Java インストール curl -O metabase.jar https://downloads.metabase.com/v0.38.2/metabase.jar 起動 java -jar metabase.jar homebrew インストール brew install metabase 起動 metabase Redash Superset Kibana ...

+++  · 1 min read

しむどん三度無視

AWS System Managerのセッションマネージャーとawscliを用いてFargateのコンテナとのセッションを開始する

セッションマネージャーを用いてCLIで接続できるか確認してみる。 既にFargateのクラスタ、タスクなどが設定/起動されセッションマネージャー の一覧にインスタン ...

+++  · 2 min read

しむどん三度無視

pybrakeを用いてerrbitにエラーを送る

インストール pybrakeをインストールする。 pip install pybrake Requirement already satisfied: pybrake in MASK/lib/python3.8/site-packages (0.4.6) Requirement already satisfied: tdigest in MASK/lib/python3.8/site-packages (from pybrake) (0.5.2.2) Requirement already satisfied: accumulation-tree in MASK/lib/python3.8/site-packages (from tdigest->pybrake) (0.6.2) Requirement already satisfied: pyudorandom in MASK/lib/python3.8/site-packages (from tdigest->pybrake) (1.0.0) 環境変数を読み込む。 変数などは環境変数か ...

+++  · 1 min read

しむどん三度無視

gigazineで紹介されていた https://www.howtodeal.dev/ に目を通した。 Developersの項目のほとんどに自分が当てはまってる気がしてくる。実際に厄 介なエンジニアの一人になっている ...

+++  · 1 min read

しむどん三度無視

AWS CLIを実行するためのEmacs Lisp

M-x でawscliを実行するために簡易な関数を書いた。 (autoload #'string-join "subr-x") (autoload #'term-ansi-make-term "term") (defvar aws-cli-buffer-name "A queue of strings whose echo we want suppressed.") (defvar aws-cli-buffer-name "*AWS*" "AWS CLI execution buffer name.") (defvar aws-cli-endpoint-url "http://localhost:4566" "AWS API endpoint.") (defvar aws-cli-profile "default" "Profile name in ~/.aws/config.") (defun aws-cli (line) "Execute AWS CLI command." (interactive "MCommand Line: ") (switch-to-buffer (funcall #'term-ansi-make-term aws-cli-buffer-name "bash" ...

+++  · 1 min read

しむどん三度無視

macOSのキーチェーンアクセス

Emacsが用意しているmacOSのキーチェーンアクセス用の関数 EmacsにはmacOSのキーチェーンにアクセスするための関数が用意されている。 ただこれがなかな ...

+++  · 2 min read

しむどん三度無視

ECRのプライベートリポジトリのpullで若干はまる

通常プライベートなECRは認証なしではpullできない。 pullするためにはリポジトリの プッシュコマンドの表示 で表示される以下を実行する必要がある。 :REGION = :ACCOUNT_ID = aws ecr ...

+++  · 1 min read

しむどん三度無視

WireGuardを使う

インストール https://www.wireguard.com/install/に各環境のインストール手順が記述されている。 macOS brew install wireguard-tools Ubuntu sudo apt install wireguard デモ環境への接続 v ...

+++  · 3 min read

しむどん三度無視

Emacs28を使っているとforeman-modeがプロセス起動時にエラーする

Emacs28を使っているとforeman-modeがプロセス起動時にエラーすることに気 がついた。とりあえずさっと修正できた。 https://github.com/collective-el/foreman-mode/commit/856293d879f8aec0684f05cad772d9977213bc03 可能であればアップストリームに反 ...

+++  · 1 min read

しむどん三度無視

macOSのデスクトップにファイルを表示させない

デスクトップはファイルが溜まってみばえがよくないのでいっそのこと何も表示させずに一時領域として使う。 設定する。 defaults write com.apple.finder CreateDesktop -boolean false Finderを再起動して設定を反映する ...

+++  · 1 min read

しむどん三度無視

VirtualBoxメモ

インストール brew install virtualbox --cask マニュアル マニュアルは梱包されている。 /Applications/VirtualBox.app/Contents/MacOS/UserManual.pdf 仮想ハードドライブ 気になる項目。 ダイナミックサイジング スナップショット パフォーマンス VDI - VirutalBox Dis Image Vir ...

+++  · 2 min read

しむどん三度無視

Virtual Private Network

VPN実装 WireGuard https://www.wireguard.com/ 安全 使いやすい シンプル https://symdon.ga/posts/1615012512/ クロスプラットフォーム 以下の環境をサポートしている。 Windows、 macOS BSD iOS Android 利用可能な暗号化プロトコル Noiseプロトコル ...

+++  · 2 min read

しむどん三度無視

go-template-modeのインストール

go-templateのためのメジャーモードがないかと探していたらGistに簡易なものがあった。 https://gist.github.com/anonymous/1654113 が最初だが、Forkされたもの https://gist.github.com/grafov/10985431 のほうが状態がよさそうだったの ...

+++  · 1 min read