Symdon Blog
comment
観劇
先日劇を観にいくことを勧められた。 普段ならそういう行動はしないが、自分自身に閉塞感を感じていたため行くことにした。 このブログは技術的な内容がほとんどだが、特に書く内容を取りきめているわけではないので、 今回はこの事について書くことにする。 演目 1つ45分の演目が2つ行なわれた。 「あぁサンタさんフォォォ!!All」について 劇団 :: 劇想からまわりえっちゃん1 保育園の話、サンタクロース、ダンサー蝉と弾き語り蝉 ...
所要時間: 約 3分, 作成: 2022/3/13, 更新: 2022/3/13
terraform aws awslambda python
AWS Lambdaのコンテナサポートを使う
ファイル構成 . |-- Dockerfile # Docker Imageを作成するためのファイル |-- Procfile # 開発時に利用するForemanのための設定ファイル (必須ではない) |-- docker-entrypoint.sh # Dockerコンテナの起動時に呼び出すスクリプト |-- index.org # この文書 (必須ではない) `-- main.py # AWS Lambda関数を実装したPythonスクリプト 0 directories, 5 files Docker Image Dockerfile docker buildコマンドを用いてビルドする。Dockerfile内にlocalでAWS Lambdaをエミュレーションするa ...
所要時間: 約 3分, 作成: 2021/10/11, 更新: 2022/3/8
comment[WIP]
GoでAWS Lambda Functionの処理を実装する
main.go:: package main import ( "fmt" "github.com/aws/aws-lambda-go/lambda" ) type MyEvent struct { Name string `json:"What is your name?"` Age int `json:"How old are you?"` } type MyResponse struct { Message string `json:"Answer:"` } func HandleLambdaEvent(event MyEvent) (MyResponse, error) { return MyResponse{Message: fmt.Sprintf("%s is %d years old!", event.Name, event.Age)}, nil } func main() { lambda.Start(HandleLambdaEvent) } go.sum:: github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/aws/aws-lambda-go v1.28.0 h1:fZiik1PZqW2IyAN4rj+Y0UBaO1IDFlsNo9Zz/XnArK4= github.com/aws/aws-lambda-go v1.28.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= go.mod:: module example go 1.17 require github.com/aws/aws-lambda-go v1.28.0 // indirect
所要時間: 約 1分, 作成: 2022/3/8, 更新: 2022/3/8
golang
GoでJSONファイルをパースする
最近Goばかり書いている。今回はJSONのパースという基本的な事をやる。 使用するJSON 今回は以下のJSONファイルを使用する。 { "foo": 1, "bar": { "text": "yay" }, "baz": [ 1, 2, 3 ] } foo, bar, bazの属性があり、barはtextを属性に持つオブジェクトとなっている。 型定義 前述のJSONに沿った形で型定義をする。 package main type Bar struct { Text string `json:text` } type Example struct { Foo int64 `json:foo` Bar Bar `json:bar` Baz []int64 `json:baz` } ExampleとBarという型を定義した。ExampleはJSONの全 ...
所要時間: 約 2分, 作成: 2022/3/5, 更新: 2022/3/5
comment
最強のデバッグ方法は一晩寝ることだと思う。 世の中にある手法の中で最も銀の弾丸に近い。
所要時間: 約 1分, 作成: 2022/3/3, 更新: 2022/3/3
comment
これまでに何冊かの書籍の制作に関わった。 作ったものを世に出すことは大きな達成感を得られる一方で、 やり残したことはなかったか、勘違いや間違いはないかなど、 今考えてもどうしようもないことに思考が巡ってしまい、 考えがまとまらなくなることがある。 その都度ベストは尽しているから本当にどうしようもないんだけれど。 これは思考の癖のようなものだと思う。
所要時間: 約 1分, 作成: 2022/2/26, 更新: 2022/2/26
resource
各拠点の設備
拠点を各地に分散した形で保有しているが有効に使えていないように思う。 まずはそのリソースを有効に活用するためにリソースの可視化をすることにした。 設備の状態 設備の状態に応じて色分けしている。 状態 色 値 計画 白 - 稼働中 緑 cGRE 要交換 黄 cYEL 紛失 青 cBLU 修理 ピンク cPNK 故障 赤 cRED 手配中 黒 cBLK 設備状況 全部で5拠点ある。それぞれの拠点の設備状況をまとめる。 拠点A 収容人数 :: 2人 INTERNET --------+--------/ /-----+----------------------------------- | | +----+-------+ +----+-------+ Region A |{io} cGRE | |{io} cBLK | | Router 2 | | Mobile | +----------+ | | | Router 2 | ...
所要時間: 約 3分, 作成: 2022/2/13, 更新: 2022/2/23
javascript express
Node.js+ExpressでAPIを実装する
環境構築 Node.js + Expressの構成でサーバープロセスが起動するように環境を構築する。 なおNode.jsは既にインストール済みとする。 まずは初期化する。 npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help init` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (1645543138) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /opt/ng/symdon/pages/posts/1645543138/package.json: { "name": "1645543138", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this OK? (yes) yes Express ...
所要時間: 約 2分, 作成: 2022/2/23, 更新: 2022/2/23
comment
とあるブログを読んだ感想
「Notionからorg-modeへの出戻りと、WSL上でのorg-protocol」https://unknownplace.org/blog/2021/05/06/org-protocol-wsl-subsystemd/ を読んだ感想を書く。 Notionはほぼ使用していないが、この記事の言いたい事はよくわかる。特にぐっと来た箇所を抜粋していく。 完璧を目指すと破綻しやすいということが長年の経験で分 ...
所要時間: 約 2分, 作成: 2022/2/20, 更新: 2022/2/20
svg
オープンソースのベクターグラフィックスソフトウェア
ベクターグラフィックスソフトウェアを選定するにあたり配布形式やライセンスなどを調べた。 製品 URL Free ライセンス ベンダー コミュニティベース 配布形態 Inkscape https://inkscape.org/ja/ o GNU GPL 2 The Inkscape Team o バイナリ, ソースコード Symfig Studio https://www.synfig.org/ o GNU GPL 3.0 Synfig o バイナリ, ソースコード Skencil https://www.skencil.org/ o GNU LGPL skencil.org o バイナリ, ソースコード LibreOffice Draw https://ja.libreoffice.org/ o MPL v2.0 The Document Foundation o バイナリ, ソースコード Gravit Designer https://www.designer.io/en/offers/freegravit/ x 独自 Corel Corporation x SaaS youidraw https://site.youidraw.com/ x 独自 YOUIDRAW, LTD. x SaaS Vectr https://vectr.com/ x 独自 Inmagine x SaaS Freeの項目については無料かどうかではなく自由 ...
所要時間: 約 1分, 作成: 2022/2/20, 更新: 2022/2/20
comment
Away3D
作成: 2022/2/19, 更新: 2022/2/19
algorithm
Merge Sort
概要 ソートのアルゴリズム 既に整列してある複数個の列を1個の列にマージする際に、小さいものから先に新しい列に並べれば、新しい列も整列されている、という分割統治法を用いる。 おおまかな流れ 分解/結合する 2つのリストを並べ替える ポイント(1) 分解/結合する ー 要素数が1になるまで分解する ー 分解は要素数/2で分解する ー 奇数の時は(要素数-1)/2 ー 並べ替えつつ結合していく ー 結合する順番は分解とは逆の順序で行う ...
所要時間: 約 2分, 作成: 2022/2/19, 更新: 2022/2/19
comment
取引先に書籍を寄贈したら、大昔の仕事仲間から「もしかしてこれってしむどんさんですか?」ってFacebookでDMがきた。背筋の伸びる思いだ。襟をたださねば。
所要時間: 約 1分, 作成: 2022/2/18, 更新: 2022/2/18
emacs s3 aws
EmacsのDiredでS3を表示する
s3edがある。それを使えばよい。 https://github.com/mattusifer/s3ed 私はlocalの環境ではawslという簡単なラッパーを使用している。 #!/usr/bin/env bash exec aws --endpoint-url http://localhost:4566 $@ awsl それをそのままs3edにも使用したい。 (defun s3ed-aws-cli (cmd) "Run the aws cli (s3) command with the configured arguments. The given CMD string will be appended." (let* ((profile-arg (if s3ed-profile-name (format " --profile %s" s3ed-profile-name) ""))) (format "awsl%s s3 %s" profile-arg cmd)))
所要時間: 約 1分, 作成: 2022/2/15, 更新: 2022/2/15
javascript dropzone[WIP]
Dropzoneのフックポイントを調査する
Web U/Iでのファイルのアップロード処理などによく使用されるDropzoneのフックポイントについて調査した。 import { useState, useCallback } from 'react' import { useDropzone } from 'react-dropzone' import logo from './logo.svg' import './App.css' function App() { const [count, setCount] = useState(0) const onDrop = useCallback(acceptedFiles => { setCount((count) => count + 1); console.log(acceptedFiles); }, []) const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop}) const updateCount = () => { setCount((count) => count + 100); } return ( <div className="App"> <header className="App-header"> <p>count is: {count}</p> <div {...getRootProps()}> <input {...getInputProps()} /> { isDragActive ? <p>Drop the files here ...</p> : <p>Drag 'n' drop some files here, or click to select files</p> } </div> <input type="submit" onClick={updateCount} /> </header> </div> ) } export default App 使用したパッケージ Dropzone React Vite react-dropzone
所要時間: 約 1分, 作成: 2022/2/14, 更新: 2022/2/14
comment
今までに作成したスライドをblog.symdon.infoに統合する
これまで幾つかのスライド共有サービスやツールを使用してきた。 ただそれらのスライドは1度作って発表したら、その後は放置されることになった。 ソフトウェアはバージョンが更新され情報が古くなっていく。 できればそれに追従し、情報の鮮度を保っていきたい。 管理を簡略化してリライトしやすくするためにこのブログに統合することにした。 Slideshare サードパーティパッケージの歩き方 https://www.slideshare.net/TakesxiSximada/ss-62570463 ゴルフ https://www.slideshare.net/TakesxiSximada/ss-52895911 https://www.slideshare.net/TakesxiSximada/ss-51770003 Away3d https://www.slideshare.net/TakesxiSximada/away3d three.jsを使う https://www.slideshare.net/TakesxiSximada/threejs-30716363 https://www.slideshare.net/TakesxiSximada/threejs-30716344 ...
所要時間: 約 1分, 作成: 2022/1/21, 更新: 2022/2/13
comment
生産性を管理するためにしている工夫
年別 Gitへのコントリビューションを年毎に集計する。 git log --date=format:'%Y' --pretty='%ad %aN' | sort | uniq -c 12 2014 TakesxiSximada 25 2015 TakesxiSximada 51 2016 TakesxiSximada 2 2016 takesxi-shimada 1 2016 test 413 2017 TakesxiSximada 12 2018 TakesxiSximada 116 2019 TakesxiSximada 19 2019 sximada 675 2020 TakesxiSximada 1359 2021 TakesxiSximada 9 2021 symdon 609 2022 TakesxiSximada --date を --date=format:'%Y-%m' のように指定すれば月毎の集計になる。 今月の日別 今月のGitへのコントリビューションを日毎に集計する。 git log --date=format:'%Y-%m-%d' --pretty='%ad %aN' | grep `date +'%Y-%m'` | sort | uniq -c 3 2022-02-02 TakesxiSximada 4 2022-02-03 TakesxiSximada 6 2022-02-04 TakesxiSximada 5 2022-02-05 TakesxiSximada 3 2022-02-06 TakesxiSximada 1 2022-02-07 TakesxiSximada 2 2022-02-08 TakesxiSximada 10 2022-02-09 TakesxiSximada 6 2022-02-10 TakesxiSximada 10 2022-02-11 TakesxiSximada 15 2022-02-12 TakesxiSximada 7 2022-02-13 TakesxiSximada 上記ではTakesxiSximadaしかコミ ...
所要時間: 約 1分, 作成: 2022/2/13, 更新: 2022/2/13
tech
技術に対する素振りについて考える
IT業界は他の業界と比べると比較的変化の速い業界と言われる。 技術革新も比較的速く、新しい知識を常に仕入れることを要求される上に、 古い技術的な知識は知っていて当然として振る舞われることも多い。 そんな中で何を学んでいくかを取捨選択しながら学び続ける必要がある。 以下では私が学習の際に考えている心構えのようなものを書く。 毎日行う もともと好きなことだから毎日できるはず。 ただ毎日沢山勉強しろという意味ではない ...
所要時間: 約 2分, 作成: 2022/1/30, 更新: 2022/2/9
3beakers
3beakersというミニゲームを作成した
React+Redux構成のフロントエンドの実装を思い出すために3beakersというミニゲームを作成した。 https://3beakers.symdon.info/ ルールはビーカーの中の数字を移動させつつ4を作成することを目指す。 知人に遊んでもらったら、そこそこ楽しんでもらえてとても嬉しかった。 ソースコードは https://github.com/TakesxiSximada/3beakers にある。 システム構成としては次のようになっている。 今回はVercelを利用することにした。 ビーカーの選択 ビーカーの選択状態と操作の仕様をまとめ ...
所要時間: 約 2分, 作成: 2022/2/8, 更新: 2022/2/8
github
GithubのリポジトリにコミットされているファイルをWebブラウザで編集する
GithubはWebブラウザからファイルを更新することができる。 Gitの操作を覚える必要はない。 以下ではWebブラウザからファイルを更新する手順を解説する。 編集したいファイルをクリックする。 画面右側の鉛筆マークをクリックする。 画面中央の領域を編集する。 編集が完了したら下にスクロールする。 スクロールすると緑のボタン( Commit changes )というが表示される。 緑のボタン( Commit changes )をクリックする。
所要時間: 約 1分, 作成: 2022/2/4, 更新: 2022/2/4
comment
作業の具体的な事に口を出すのではなくて 自分がこっちに行きたいんだというものをもっと煮詰める必要があることが この1ヶ月で良くわかった。 本で読んでいる状態と 実際にやってみるとでは全く違うってのは本当だった。
所要時間: 約 1分, 作成: 2022/1/31, 更新: 2022/1/31
auth0 idaas typescript
Auth0でログイン状態にするためのシンプルな実装
Auth0のシンプルな実装をしてみた。 https://gist.github.com/TakesxiSximada/c7a1159d61d53e22a2989fc2fcd448dc 実行するとこのように動く。 実行例 もろもろの整備が面倒だったのでTypeScriptを可能な限り素の状態で使うことにした。 ここまで噛み砕くとだいぶ理解が進んだ。 サンプルなのでセキュリティ的な問題は何も考慮していない。
所要時間: 約 1分, 作成: 2020/10/18, 更新: 2022/1/30
flashback
flashbackを使う
flashbackを使ってみるために[README](https://github.com/linkedin/flashback/blob/master/README.md) に記載されていることをやった備忘録です。 Flashback is designed to mock HTTP and HTTPS resources, like web services and REST APIs, for testing purposes. It records HTTP/HTTPS requests and plays back a previously recorded HTTP transaction—which we call a "scene"—so that no external connection to the internet is required in order to complete testing. [翻訳] フラッシュバック ...
所要時間: 約 3分, 作成: 2017/3/19, 更新: 2022/1/30
openssl macos homebrew
macOS上でhomebrewを使ってopensslをインストールした時に表示されるメッセージ
- homebrewでmacOSにopensslをインストールする時のメッセージを翻訳した。
- ApplieはOpenSSLの使用に否定的で、Homebrewでのインストールでもパスの通ったところにリンクは作られない。
- それを使うためには自分で明示的に設定を追加する必要がある旨をメッセージで表示している。
所要時間: 約 2分, 作成: 2022/1/30, 更新: 2022/1/30
translation config
pkg-configについて
https://www.freedesktop.org/wiki/Software/pkg-config/ の翻訳です。 pkg-config is a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use gcc -o test test.c `pkg-config –libs –cflags glib-2.0` for instance, rather than hard-coding values on where to find glib (or other libraries). It is language-agnostic, so it can be used for defining the location of documentation tools, for instance. pkg-configは、アプリケーションとライブラリをコンパイルするときに使用されるヘルパーツールです。 アプリケーションがgcc -o test test.c `pkg-config –libs –cflagsglib-2.0`を使用できるように、 コマンドラインに正しいコンパイラオ ...
所要時間: 約 3分, 作成: 2017/11/14, 更新: 2022/1/30
pug svg
PugでSVGをインクルードする
includeを使ってSVGファイルをHTMLの内部に埋め込見ます。 div: div: include cc.svg pugコマンドでhtmlを生成します。`–pretty` は出力するHTMLを整形するオプションです。 node_modules/.bin/pug example.pug --pretty このようなHTMLが出力されます。 <div> <div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"> <circle cx="50" cy="50" r="43" fill="none" stroke="#000" stroke-width="9"/> <path d="M50,42c-6-9-20-9,-25,0c-2,5-2,11,0,16c5,9,19,9,25,0l-6-3c-2,5-9,5-11,0c-1-1-1-9,0-10c2-5,9-4,11,0z"/> <path d="M78,42c-6-9-20-9,-25,0c-2,5-2,11,0,16c5,9,19,9,25,0l-6-3c-2,5-9,5-11,0c-1-1-1-9,0-10c2-5,9-4,11,0z"/> </svg> </div> </div> サイズを指定してSVGを埋め込み includeを使ってSVGファイルをHTMLの内部に埋め込見ます。 div: div(style="width: 30px"): include cc.svg このようなHTMLが出力されます ...
所要時間: 約 1分, 作成: 2017/1/24, 更新: 2022/1/30
emacs
Emacsの--loadと--scriptで指定したファイルはどちらが先に実行されるか?
ちょっとわからなかったのでやってみた。備忘録として残しておく。 $ emacs --version GNU Emacs 25.1.1 Copyright (C) 2016 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of GNU Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. やったのはこんな感じ。 script.el:: (print (format "script: %s" (current-time))) load.el:: (print (format "load: %s" (current-time))) 実行する。 $ emacs -nw -q -l load.el --script script.el "script: (22780 20842 88910 0)" "load: (22780 20842 90294 0)" --script の方が先に読まれていそう。
所要時間: 約 1分, 作成: 2017/4/23, 更新: 2022/1/30
overtone clojure
Overtoneでキラキラ星を演奏する
Overtoneを使ってキラキラ星を演奏します。 実行環境 macOS Sierra 10.12.1(16B2657) clojure: 1.8.0 overtone: 0.10.1 Leiningen 2.7.1 on Java 1.8.0_45 Java HotSpot(TM) 64-Bit Server VM プロジェクトを作成する leinでプロジェクトを作成します。 $ mkdir star $ cd star $ lein new star --to-dir . 作成したらproject.cljにovertoneを追加します。 project.clj:: (defproject star "0.1.0-SNAPSHOT" :description "Twinkle, twinkle, little star" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :main star.core :dependencies [ [org.clojure/clojure "1.8.0"] [overtone "0.10.1"] ]) project.clj を更新したら lein deps で依存ライブラリをインストールします。 $ lein deps その他プロジェクト ...
所要時間: 約 2分, 作成: 2017/4/12, 更新: 2022/1/30
emacs clojure overtone
emacs-liveを使ってovertoneで音を出す
emacs-liveはOvertoneとQuilを使用したライブコーディングに特化したEmacsの設定です( https://github.com/overtone/emacs-live )。 今回はemacs-liveをインストールしてovertoneで音を鳴らしてみます。 環境 以下がインストールされている環境を前提としています。 macOS: 10.12.1(16B2657) Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14 Clojure 1.8.0 Leiningen 2.7.1 emacs-liveのインストールと起動 インストールは簡単ですが、既存の.emacs.dをリネ ...
所要時間: 約 4分, 作成: 2017/4/5, 更新: 2022/1/30
clojure overtone
overtoneを使って音を出す
Overtoneは、シンセサイザーを設計し、音楽と共同作業するためのオープンソースのツールキットです。 Overtone is an Open Source toolkit for designing synthesizers and collaborating with music. https://github.com/overtone/overtone より引用 clojureを使って音を鳴らしたり、音声を合成できます。今回はclojureのプロジェクトを作るところから音を鳴らすところまでを行います。 プロジェクトを作成する demoという名前でプロジェクトを作成します。 lein new demo --to-dir . プロジェクトを作成する プロジェクト作成時の出 ...
所要時間: 約 2分, 作成: 2017/4/11, 更新: 2022/1/30
clojure overtone
overtoneを使ってドミソを鳴らす
MML(Music Macro Language)を触って見たいなとおもっていたところovertoneを見つけました。 clojureでプログラミングすることで音を鳴らせるようだ。 気になったのでインストールしてドミソを鳴らすまでやります。 実行環境 macOS Sierra 10.12.1(16B2657) REPL-y 0.3.7, nREPL 0.2.7 Clojure 1.7.0 Leiningen 2.5.2 on Java 1.8.0_45 Java HotSpot(TM) 64-Bit Server VM プロジェクトの作成 leinコマンドでプロジェクトを作成します。今回はtutorialという名前にします。 $ lein new tutorial Generating a ...
所要時間: 約 3分, 作成: 2017/3/8, 更新: 2022/1/30
github copilot
Github Copilot
Github Copilotというコード補完を利用している所を、しばしば目にするようになってきた。Github Copilotはエディタ向けの拡張として、Visual Studio、Visual Studio Code、JetBrains製のIDE、NeoVim向けのもの1が公式で提供されている。公式にEmacs向けの拡張は提供されていないが、サードパーティの拡張がGithub上にある2。これを利用する事で、Github Cop ...
所要時間: 約 3分, 作成: 2022/1/30, 更新: 2022/1/30
comment
毎日、自分が信じることをやっている。 時折孤独感に襲われることがあるが、その時は深呼吸して心を落ち着かせる。 誰かと一緒にいても結局の所、孤独感を拭い去ることはできない。 目の前のやるべきことに集中し、できることをやるだけ。 結局のところそれしかできない。
所要時間: 約 1分, 作成: 2022/1/30, 更新: 2022/1/30
elixirlang rabbitmq
RabbitMQをElixirから利用する
この記事は [Elixir Advent Calendar 2016](http://qiita.com/advent-calendar/2016/elixir) 1日目の記事です。 普段mq関連のシステム書く事が多いので、ElixirからRabbitmqを使ってみました。 RabbitMQをElixirから利用する RabbitMQをElixirから利用してみます。 動作環境はmacOSを前提にしています。 https://www.rabbitmq.com/tutorials/tutorial-one-elixir.html Elixir Elixir (エリクサー) は並列処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。 Wikipedia ...
所要時間: 約 8分, 作成: 2016/12/1, 更新: 2022/1/30
architecture jam
blog.symdon.infoのシステム構成を変更を検討する
blog.symdon.infoのシステム構成を https://blog.symdon.info/posts/1643446358/ でまとめた。 現状、画像ファイルをcloudinaryから直接取得している。 このファイルをCloudflareがキャッシュするように変更したい。 +-----------+ | | | Audience | | | +--+--------+ | | HTTPS access | | +------------------------------+ +-------------------------------------------------------+ | | | | | | | Cloudflare | | Netlify | | | | | | | | +-------------------+ | | +---------------------+ +------------------+ | | | | | HTTPS GET | | | | | | +-------->+ blog.symdon.info +------------------->+ Static file hosting | | Build | | | | | (SSL/TLS) | | | | Netlify domain | | | | | | | | | | | (SSL/TLS) | | +------------+ | | | | +-------------------+ | | | | | | | | | ...
所要時間: 約 2分, 作成: 2022/1/29, 更新: 2022/1/29
architecture jam documentation
blog.symdon.infoのシステム構成
blog.symdon.infoのシステム構成図を作成した。画像をCloudinary、それ意外をNetlifyでホスティングしている。
所要時間: 約 2分, 作成: 2022/1/29, 更新: 2022/1/29
rqlite database
Rqliteを使う
SQLite上に構築された軽量の分散リレーショナルデータベースを使用してみる。また使いどころがどこなのか考えてみる。 https://github.com/rqlite/rqlite インストール macOSの場合はHomebrewでインストールできる。 brew install rqlite Docker Imageが用意されているので、それを用いることもできる。 起動 rqlitedコマンドでサーバープロセスを起動する。 rqlited -node-id 1 ~/node.1 node1 更にデータを同期させるために2つプロセスを起動する。 通常これらは別のコンピュータ上 ...
所要時間: 約 3分, 作成: 2022/1/27, 更新: 2022/1/27
comment[WIP]
HugoのSummary Pageの表示を改善する
このブログのアクセスログを解析すると個別のページと比較してトップページ へのアクセスが多い。しかもトップページから個別のページに遷移しているわ けではない。トップページの表示を見た時によくわからない整形前の文字列が 表示されていることもある。これらの問題を解決したい。
所要時間: 約 1分, 作成: 2022/1/27, 更新: 2022/1/27
python
AttributeError: module 'enum' has no attribute 'IntFlag'"
shuttile使おうと思ったら次のエラーが出たのでメモしておく武士。 (py3.6.0) $ sshuttle -r username@hostname 0/0 [local sudo] Password: Failed to import the site module Traceback (most recent call last): File "/envs/py3.6.0/lib/python3.6/site.py", line 548, in <module> main() File "/envs/py3.6.0/lib/python3.6/site.py", line 530, in main known_paths = addusersitepackages(known_paths) File "/envs/py3.6.0/lib/python3.6/site.py", line 282, in addusersitepackages user_site = getusersitepackages() File "/envs/py3.6.0/lib/python3.6/site.py", line 258, in getusersitepackages user_base = getuserbase() # this will also set USER_BASE File "/envs/py3.6.0/lib/python3.6/site.py", line 248, in getuserbase USER_BASE = get_config_var('userbase') File "/envs/py3.6.0/lib/python3.6/sysconfig.py", line 601, in get_config_var return get_config_vars().get(name) File "/envs/py3.6.0/lib/python3.6/sysconfig.py", line 580, in get_config_vars import _osx_support File "/envs/py3.6.0/lib/python3.6/_osx_support.py", line 4, in <module> import re File "/envs/py3.6.0/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' IntFlagは本当にないのか? >>> import enum >>> enum.IntFlag <enum 'IntFlag'> ある。となるとenum34が邪魔している的な?と言う気になるのでun ...
所要時間: 約 1分, 作成: 2017/3/4, 更新: 2022/1/23
adventcalendar mastodon medium
しむどんアドベントカレンダーの参加者への感謝の気持ちを込めて
2017年11月のはじめに、自分用のアドベントカレンダー しむどんAdvent Calendar 2017 ( https://adventar.org/calendars/2179 )を作成しました。 が、なぜかJPユーザーの方がオレオレアドベントカレンダーに割り込みしてきました。 若干面白いし、まあどうせ書いてもらえなそうだし、いいかと思い放置していたのですが、みんなちゃんとすげえ書いてくれました。 ここでは投稿いただいた方に感謝の気持ちを込めて、 記事を読んだ所感を書いていこうかなあと思います。 な ...
所要時間: 約 9分, 作成: 2017/12/24, 更新: 2022/1/23
celery python
Celery Onceを使ってタスクの多重実行を防止する
Pythonでよく使われるJob QueueにCeleryがあります。 Celeryの定期実行タスクなどを使っていると多重起動を防止したくなったりします。 Celery Onceはそれ用のライブラリです。 import time from celery import Celery, shared_task from celery_once import QueueOnce BROKER_URL = 'redis://localhost:6379/0' app = Celery('tasks', broker=BROKER_URL) app.conf.ONCE_REDIS_URL = 'redis://localhost:6379/1' app.conf.ONCE_DEFAULT_TIMEOUT = 60 * 60 @shared_task(base=QueueOnce) def slow_task(): print('START') for ii in range(30): print(ii) time.sleep(1) print('END') return "Done!" workerを起動します。 celery -A sample.app worker -------------- [email protected] v4.0.2 (latentcall) ---- **** ----- --- * *** * -- Darwin-16.1.0-x86_64-i386-64bit 2017-03-04 18:50:04 -- * - **** --- - ** ---------- [config] - ** ---------- .> app: tasks:0x107963550 - ** ---------- .> transport: redis://localhost:6379/0 - ** ---------- .> results: disabled:// - *** --- * --- .> concurrency: 4 (prefork) ...
所要時間: 約 2分, 作成: 2017/3/4, 更新: 2022/1/23
comment
今までに作成したパッケージをふりかえる
これまでにいろんな問題に出会い、その問題に対処するためにいろんなツールを作成してきた。 それらツールについて、何が問題で、何を作って、どうなったのかをふりかえる。 Guippy 課題 開発ツールがダイアログ操作だった。 複数のツールを使う必要があったため夜間走行 が非効率だった。 Python で WIndows の GUI 操作をするライブラリは バイナリインストーラでインストールする必要があった。 できればPure Pythonがいい。 Guippy - WindowsのG ...
所要時間: 約 3分, 作成: 2022/1/23, 更新: 2022/1/23
golang orgmode homebrew
go-orgを使う - Goで実装されたorg-mde
go-orgはGoで実装されたorg-mde。 Emacs及び本家org-modeを使用することなく、org-mode形式をHTML形式に変換できる。 Hugoはorg-modeの変換にgo-orgを使用している。 HTMLを出力する 次のorg-modeを例とし、このファイルをHTMLに変換する。 test.org #+TITLE: テスト用ページ #+DATE: 2022-01-21T11:11:06+0900 #+TAGS[]: comment * one AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC - ul item - ul item - ul item DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1. ol item FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF GGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGG 2. ol item 3. ol item 4. ol item ** two BBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBB ...
所要時間: 約 3分, 作成: 2021/12/13, 更新: 2022/1/21
emacs editorconfig
Emacsでeditorconfigを使う
EditorConfigはプロジェクト毎のエディタの設定を統一する。 次のようなファイルをリポジトリに含めてしまうのがよい。 root = true [*] indent_style = space end_of_line = lf charset = utf-8 trim_trailing_whitespace = false insert_final_newline = true .enditorconfig エディターによっては標準で組込まれているものもあるが、 Emacsは拡張をインストールする必要がある。 https://github.com/editorconfig/editorconfig-emacs MELPAに登録されているためuse-packageなどを用いてインストールできる。 (use-package editorconfig :ensure t :config (editorconfig-mode 1)) editorconfig拡張のインスト ...
所要時間: 約 1分, 作成: 2022/1/20, 更新: 2022/1/20
blender
Blender 2.9でチーズを作る
YoutubeにBlenderを使ってチーズを作るための解説動画があった1。 今回はその動画を元にチーズを作成した。 1個目 特に何も気にせず作成した。 2個目 暗い部屋に暖色系のライトを配置した。 チーズ自体がプラスチックに見えてしまう。 3個目 形状を変更し、質感も少し調整してみた。 前よりはましになった。 手順 立方体を追加する。 ベベル(C-b)をかける(セグメントを2にする)。 スムーズシェードを適応する。 アドオ ...
所要時間: 約 3分, 作成: 2022/1/18, 更新: 2022/1/18
react javascript
Reactでドラッグアンドドロップイベントをハンドルする
Reactでファイルのドラッグアンドドロップを行い、そのイベントによって関数を呼び出す方法を確認した。 Reactでドロップイベントを取得するにはonDropに関数を渡す ドロップイベントで関数を呼びだすには、その要素のonDropに関数を渡せば良い。 以下にtextareaにファイルをドロップするとalertを発生し、コンソールログにファイルの内容を出力する例を示す。 import React from 'react'; import ReactDOM from 'react-dom'; import logo from './logo.svg'; import './App.css'; class App extends ...
所要時間: 約 1分, 作成: 2022/1/17, 更新: 2022/1/17
plantuml emacs orgmode adventcalendar
EmacsでPlantUMLを使う
PlantUMLはUMLを記述するためのツールだ。 このPlantUMLをテキストエディターのEmacsから扱う方法はいくつかある。 そのうち、plantuml-mode、ob-plantuml, PlantUML ServerとXwidget Webkitについてまとめた。 目次 UML、PlantUML、そしてEmacs plantuml-mode - Emacs上でPlantUMLのファイルを編集するメジャーモード ob-plantuml - Org-modeを用いてドキュ ...
所要時間: 約 5分, 作成: 2020/12/15, 更新: 2022/1/16
openssl
OpenSSLでオレオレ証明書を作成する
秘密鍵の作成 openssl genrsa 2048 > server.key Generating RSA private key, 2048 bit long modulus .....+++ ........+++ e is 65537 (0x10001) 秘密鍵の中身は公開してはいけません。 署名リクエストの作成 openssl req -new -key server.key > server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 署名リクエストの中 ...
所要時間: 約 1分, 作成: 2022/1/16, 更新: 2022/1/16
python pillow
Pillowで画像を圧縮する
Pythonの画像処理ライブラリPillowを使って画像を圧縮する。 サンプル画像はOpenCVのリポジトリにある を使う。 圧縮には以下のコードを用いる。 from PIL import Image original = Image.open('img/original.jpg') for quality in range(10, 100, 10): filename = 'img/{}.jpg'.format(quality) original.save(filename, 'JPEG', quality=quality) Original Original Quality=10 Quality=10 Quality=20 Quality=20 Quality=30 Quality=30 Quality=40 Quality=40 Quality=50 Quality=50 Quality=60 Quality=60 Quality=70 Quality=70 Quality=80 Quality=80 Quality=90 Quality=90
所要時間: 約 1分, 作成: 2022/1/16, 更新: 2022/1/16
mysql
MySQL Tips
ユーザのパスワードを変更する set password for root@localhost=password('rootroot'); general_logを出力してクエリを確認する 設定値を確認する 関係する変数はgeneral_logとgeneral_log_fileとlog_outputです。 general_log: ログ出力するか。 general_log_file: ログをどこに出力するか。 log_output: ログをファイルに出力するかTABLEに出力するか show variablesで確認します。 mysql> show variables like '%general_log%'; +------------------+-------------------------------+ | Variable_name | Value | +------------------+-------------------------------+ | general_log | OFF | | general_log_file | /usr/local/var/mysql/ng-2.log | +------------------+-------------------------------+ 2 rows in set (0.00 sec) mysql> show variables like '%log_output%'; +---------------+-------+ | Variable_name ...
所要時間: 約 2分, 作成: 2022/1/15, 更新: 2022/1/15