ぽよメモ

レガシーシステム考古学専攻

ぷよぐやみんぐ

Go 1.20で入ったexec.CommandのCancelとWaitDelayで外部コマンドを正しく終了させる

背景 Goでは外部コマンドの実行時に os/exec パッケージの Command や CommandContext を利用します。特に CommandContext を利用することで、 Goのcontextの流儀に従ってコマンドのタイムアウトや中断が可能であり大変便利です。 一方で、LinuxやmacOSなど…

go.workはmonorepoの夢を見るか

TL; DR はじめに Workspace modeが解決したい課題 Workspace modeのユースケース 複数リポジトリにまたがる開発をする experimentalWorkspaceModuleを置き換える monorepoとWorkspace mode single moduleの場合 multi moduleな場合 goplsのためのワークアラ…

clapの使い方まとめ

はじめに インストール 使い方 位置引数 エスケープされた位置引数 引数を取るオプション 引数を取らないオプション 環境変数と紐付ける 一つのフラグで複数の値を取る 排他オプション 候補から選択するオプション サブコマンド グローバルなオプション テス…

Protocol BuffersのGolang用API v2を使ってgRPCでHello Worldする

v2とは??? 環境 Hello World プロジェクトの準備 サービスを定義する gRPC用のコードを自動生成する サーバを実装する クライアントコマンドの実装 動かしてみる grpcurlで叩いてみる まとめ v2とは??? 以下の記事にまとまっています。 qiita.com blog…

GNU Make勉強会を開催した

なぜ今Make? 資料 学んだこと まとめ なぜ今Make? Makefileを書く機会がほとんどない割に、使う機会は多いなと昔から思っていました。 大学の講義でもC言語で書いたソースコードのコンパイルはEclipseに任せっきりで、TAとしてトラブルシュートする以外で…

Moleculeを使う際にTestinfraからAnsible Factsを参照する

概要 環境 Testinfraにおける問題点 既存のアプローチ Testinfraから変数を参照する setup include_vars テストで使う メリット デメリット 現時点での制限 概要 Ansible公式のテストフレームワークであるMoleculeは,Ansibleによる構築の後に,デフォルトで…

deanishe/awgoを使って簡単にAlfred Workflowを作る

はじめに Alfred Workflowとは? Alfred Workflowの仕組み Alfred WorkflowとGo github.com/deanishe/awgo チュートリアル 1. 空のWorkflowを作る 2. 実行するアクションを並べる 3. info.plistを手に入れる 4. Goでプログラムを書く 6. パッケージングする …

内部向けWikiに技術記事を書くモチベーションと意義,そして今の悩み

はじめに 内部向けWikiとは? ありがちな問題 ググって出てくるから書かなくて良い? みんなに書いてもらうために 身内だけで通じる価値観を理解する 気軽に書ける雰囲気を作る 既にある記事の更新を躊躇わない 書くメリットを意識する あるべき内部Wikiの姿…

GoCon 2019 Autumnに参加してきた

はじめに 初めて参加してみて 面白かったセッション 1. Go GC algorithm 101 発表後に上がった質問 Goでヒープにアロケーションされるのはどのようなとき? 結局Goで世代別GCは効くのか? 2. Go で"超高速"な経路探索エンジンをつくる 発表後に上がった質問 …

公開さえすればいいってもんじゃない

これはあくあたん工房お盆休みアドベントカレンダー7日目の記事です. 今日は開発者向けではなく,研究者向けの話をします.主にコンピュータサイエンスの話になりますが,ソフトウェアを書く必要のある分野であればどれもそう変わらないだろうと思います. …

Pythonの新しいCLIアプリケーションフレームワークuroborosを公開した

はじめに 背景 方針 uroboros 名前の由来 インストール 使い方 オプション引数の共有 注意点 今後の展望 まとめ はじめに Pythonの全てのCLIアプリケーションフレームワークに習熟してるわけではないです. 自分が必要だと思ったものから優先的に実装してい…

Python開発環境メモ(2019)

これは何 言いたいこと Pythonとは python というコマンド 複数バージョンの共存 バージョンを指定してインストール 実際に呼ばれるPythonのパス 仮想環境 Pyenv + Pyenv-virtualenv Venv(or virtualenv) Conda Pipenv Poetry まとめ パッケージの管理 開…

Django 2.0 + Channels 2.1 でチュートリアルやっていく(3)

前回のおさらい Tutorial Part 3: Rewrite Chat Server as Asynchronous consumerを非同期に書き直す 前回のおさらい poyo.hatenablog.jp 前回は実際にWebSocketでチャットを実装しました.が,実はあのconsumerは同期的に動いていたため,今回は非同期で書…

Django 2.0 + Channels 2.1 でチュートリアルやっていく(2)

前回のおさらい Tutorial Part 2: Implement a Chat Server chat roomのviewを書く Consumerを書く channel layerを有効化する 前回のおさらい poyo.hatenablog.jp 前回は簡単なプロジェクトのセットアップで終わっていました.これから実際にWebSocketを捌…

Django 2.0 + Channels 2.1 でチュートリアルやっていく(1)

はじめに 環境構築 今回作るもの 仕様 Tutorial Part1: Basic Setup アプリケーション初期設定 初期ページ追加 ASGI/Channelsサーバの起動 はじめに channelsの公式チュートリアルを順番にやっていこうというだけのものです.Djangoの基礎知識に関しては一切…

Travis CI + Codecov + NoseでCIしてSlackに通知

きっかけ 環境 各種サービスのセットアップ Travis CI Codecov リポジトリのセットアップ テストする .travis.ymlを書く .coveragercを書く READMEへバッジを貼る Travis CI Codecov 結果を確認 まとめ きっかけ これまでもTravis CIを使ってきていて、それ…

macOSで任意のWi-Fiへ接続・切断時に任意のシェルスクリプトを実行させる

きっかけ Hammerspoonの紹介 環境 使用する機能 WiFi切り替え検知 シェルスクリプト実行 実装 構成 config.json config.iniに変更があったときに自動で再読み込み ネットワーク環境切り替え WiFi切り替え時に実行 Hammerspoonをリロード 応用 研究室のWiFiに…

ライフサイエンス辞書で単語を引くAlfred Workflowを作った

きっかけ Go言語を使ったわけ 環境 lsd-alfred できること 検索してブラウザで開く 検索してクリップボードにコピー 検索結果から再検索 検索結果をさらに検索エンジンにかける 検索結果をSpotlight検索にかける 検索結果の一覧ページを開く ホットキーを使…

SQLAlchemyのリレーションにおけるメソッドやパラメータについてのメモ

SQLAlchemyはPythonのORMの中でも比較的よく検索にヒットするように思いますが,和訳済みドキュメント*1のバージョンが古く,リレーションの張り方についてどうも自分の中でごちゃごちゃしているなと思い少し調べてみました. 注意: これはただの生物学徒が…

falconでAPIのテストを書く

falconとはpythonの軽量webAPIフレームワークで,手軽にちゃちゃっとパフォーマンスの良い(らしい)APIを書けます.手軽さで言うと正直Flaskでもそんな変わらないのではと今となっては思いますが,公式曰くFlaskやBottleと比べて高速に動作するそうです. f…

AngularJSでパスにスペースを含むimgをbackground-imageに指定する

例えば/hoge/fuga/contain space image.jpgみたいなjpegファイルを表示したいとき,ng-srcに値を渡せば問題ありません. しかし,これをbackground-imageに指定したいとき,つまりAngularJSでCSSを使って画像を表示したいとき,ディレクティブを自作するのが…

monacaでCordova Fileプラグインを使う

ちょっとしたハッカソンでAndroidアプリケーションを作成する際,ローカルのファイルをちょっといじれて,APIをちょっと叩けて,くらいの能力があれば良いと言うことで,monacaを利用したハイブリッドアプリケーションを作りました. その際,CordovaFileプ…

Karabiner-Elementsのプロファイルを動的に切り替え

2016/11/8現在,最新バージョンは0.90.64となり,デフォルトでプロファイル切り替え機能が実装されました.詳しくは以下に. poyo.hatenablog.jp きっかけ karabiner.jsonを設定 複数のプロファイルを設定 karabiner_profile_changer デバイスを指定 launchd…

Python入門(1)

一応この記事はうちの大学の情報工学一回や二回生向けに書いていますが,Pythonを始めるのに特別な資格や環境は必要ありません. 是非この機会にプログラミングを多少かじってみてはいかがでしょうか. プログラミングというとC言語を思い浮かべる人が多いで…

TweepyでStreamingAPIを叩いたときのstatusオブジェクト

久しぶりにTwitterのStreamingAPIについて触れ始めたのですが, これがかなり面倒で大変です. 基本として「StreamListenerを継承してListnerクラスを作り,Queueを渡す→Streamを受信し受け取ったstatusオブジェクトをQueueに入れるスレッド」 と,「スレッ…

loggingモジュールを使ってみる

最近wordpressもかつてのRaspberryPiサーバから今のサーバに引っ越したのですが、ここのところ大量にエラーが出て対応に追われて大変でした。 フロントにNginxを置いてリバースプロキシでバックエンドのApacheのwordpressに飛ばすという設定にするつもりだっ…

LXCでマイクラ鯖を建てた話

せっかくもう少しまともなサーバを手に入れたので、Minecraftでのマルチプレイを楽しむためにサーバを建てました。 また、Sambaの導入時にも使用したLXCを活用し、別コンテナで動作させます。 ````bash $ sudo apt-get update $ sudo apt-get upgrade インス…

.vimrc

新学期始まって完全に忘却の彼方に押しやってしまう前にvimの設定を残しておきたいと思います。 といってもこれ貼るだけですが… 細かいコト省いて要点だけまとめると、 パッケージ管理はNeoBundle 多分殆どの人はこれなのでは?必要なくなったプラグインは削…

sudoとpyenv

さっきの記事「RasPiで室温を計測する」の最後に書きましたが、通常pyenvを使っている人の環境ではシステム側のpythonと、pyenv側のpythonが入っていると思います。 このとき何もせずpyenvをインストールしているとsudo python hoge.pyしたとき、勝手にシス…

rsyncでファイルを同期する

botを作るにあたり、だいたいはThinkPadに入れたUbuntuで開発を行っていたのですが、結局動作させるのはRasPiなわけで、動かしてみてうまく行かなかった時細かい修正はRasPiにsshして行っていました。 するとRasPi側と開発環境側で齟齬が発生するようになっ…