真面目に、強く、上品に

たのしく、げんきに

プログラミング

コマンド本体の実行パスを出力するコマンド一覧とその機能の比較

はじめに 実行したいコマンドの実行パスを知りたいときに which や whereis を違いをよく知らずに使っており、そのことをふとした瞬間で恥じてしまったため、違いをまとめます。 macOS 10.14.6 に最初から入っているコマンドを対象にしています。 コマンド本…

20181128

Linux Mint 19 Tara Xfce をインストールした Ubuntuが起動しなくなってしばらく放置していたMi Notbook Air。 USBメモリからLinux Mintをインストールしようと試みたが、GRUBが起動してからカーネルを読み込むことができず、故障したのかなと放置していたが…

典型的なScalaプロジェクトで特定のワードが含まれるファイル一覧を検索する方法

find . \( -type d -name '.idea' -or -type d -name 'tags' -or -type d -name '.git' -or -type d -name 'target' -or -type d -name 'tmp' \) -prune -o -type f -print |xargs grep hogehoge |cut -d ":" -f 1|uniq

godnsを設定

godns.confをloopbackアドレスにすると、外部に公開されないという初歩的なことでハマってしまった気をつけよう。

ECSまとめ

ECSについて ECSは AWSが提供する、kurbernetes・Swarmに似た、コンテナ管理サービスのうちの1つです。 普段開発環境でDockerを使用している方、kubernetes・SwarmなどでDocker Clusterを構築している方でも、ECS独自の用語などのため、混乱する方が一定数…

tmuxで新規ウィンドウを作成した際のデフォルト名を設定する

概要 tmux に reattach-to-user-namespace' した際、新規ウィンドウ名が全て、reattach-to-user-namespace' に設定されてしまいました。 消去などでリネームの手間がかかるため、任意のデフォルト名を設定する方法を調査しました。 設定方法 stackoverflow.c…

tmux/screen上でのnvimのescapeレスポンスを早くする

概要 tmux/screen 上で nvim を使用した際に、 escape/Ctrl-[ 入力に対するレスポンスが遅いため、これを解決する方法について記述します。 tmux/screen 上で nvim のescapeレスポンスを早くする $HOME/.tmux.conf 上で 以下の設定を追記する set -s escape-…

エンジニアが意識するべきこと

エンジニアが意識するべきこと エンジニアが意識するべきことを列挙する 楽しむ 純粋に楽しめる分野について目標設定を行う。 苦行にならないように、飽きが来ないように問題を設定する。 不安にならない 技術領域は多岐にわたるため、自分が知らない技術が…

Rustでファイルの変更を検知して自動でコンパイルやテストを行う

はじめに Rust では GitHub - passcod/cargo-watch: Watches over your Cargo project's source. を使うことで、簡単にファイルの変更を検知して、自動でコンパイルやテストを実行することが出来ます インストール Macの場合、以下のコマンドで完了します b…

Scala 2.12.3 がリリース

Scala 2.12.3 Release Scala 2.12.3 · scala/scala · GitHub Scala 2.12.3 がリリースされました。 変更点 コンパイル速度の高速化 インラインクラスを制御するコンパイル最適化 オプション -opt:l:inline の追加 それに伴い、 -opt:l:classpath と -opt:l:p…

JavaScriptのガベージコレクション

JavaScriptのGCアルゴリズム 昔は参照カウント方式でガベージコレクションを行っていたが、参照カウント方式では例えば以下のようなサンプルコードでメモリリークが発生してしまう。 var div; window.onload = function(){ div = document.getElementById("m…

Java Memory Managementを読んだ

概要 Java memory management | Dynatrace を読んだのでまとめました。 Java Memory Management How Garbage Collection Really Works ガベージコレクションという言葉から、ゴミ集めをする実装だと思いがちだが実はそうではないよ ガベージコレクタが管理し…

「プログラマのためのDocker教科書」を読んだ

概要 プログラマのためのDocker教科書」を読んだため、章毎の感想とまとめについて記述する。 対象読者 導入編でインフラ・ミドルウェアの基礎的な知識について解説があるため、非プラグラマでも基本的なUNIXコマンドが使用できるならば読み進めていける。 …

Vue.js雑感

概要 Vue.jsを使用した雑感について記述する Vue.js雑感 日本語の公式ドキュメントがちゃんと整備されており、宣言的レンダリング機能により、APIを呼び出して取得した値を定義しデータにバインドするだけで、おおかたの機能が実現できる。 jQUeryベースだと…

機械学習をツールとして使えるようになるまで

概要 機械学習をツールとして使えるようになるまでに学習すれば良いことをまとめる。 何を学習すればよいか 機械学習フレームワークはPythonで書かれているものが多いので、Pythonをある程度読めると学習が早い。 機械学習フレームワークはWebフレームワーク…

「スマートフォンアプリマーケティング現場の教科書 リフロー版」を読んだ

概要 「スマートフォンアプリマーケティング現場の教科書 リフロー版」を読んだのでまとめと感想をここに記します。 何が書かれているか スマートフォンアプリに関わる企画、ビジネス、プロモーション、運用、マーケティング、分析について、企画からリリー…

AppleWatchの音声入力機能を使った処理系を作る

はじめに これは 第2のドワンゴ Advent Calendar 2016 - Qiita 18日目のために書かれた記事です。 なぜAppleWatchの音声入力機能を使った処理系を作るのか AppleWatchの文字入力はキーボードやタッチUIを利用することが出来ないため、文字入力方法としては以…

特定の相手のAmazonアフィリエイトリンクを生成する

何故するか 皆さんはAmazonアフィリエイトIDを持っているでしょうか。 Amazonアフィリエイトは御存知の通り、特定のIDを含んだURLからAmazonの商品を購入することで、IDの管理者にお金が入るサービスです。 何かWeb上の記事を経由してAmazonで商品を購入した…

プログラミングはスキマ時間にこそやるべき

概要 プログラミングはゾーンに入るまでの時間が長いため、スキマ時間にプログラミングをやることに対して躊躇いが発生してしまうことがあるが、 以下の理由からむしろスキマ時間にこそプログラミングをやるべきなのではないか。 プログラミングをスキマ時間…

Flask Blueprint における template_folderパス解決の罠

Flask には Blueprintというアプリケーションをモジュール化出来る機能が備わっていますが、このBlueprintのtemplate_folderパス解決にはちょっとした罠があります。 Flaskで以下のようなパッケージ構成を組んだと仮定します。 run.py admin/ __init__.py vi…

ニコニコ動画にartihata動画を投稿しました

株式会社ドワンゴの運営するニコニコ動画にEmoji組版編集サービス artihata の紹介動画をアップしました。 artihata では言語はClojureとClojureのWebアプリケーションフレームワークである Luminus を採用しています。 ほとんどの実装はJavaScriptで記述さ…

Clojure日本語書籍まとめ[2015年6月時点]

Clojureの日本語書籍も数冊出るぐらいになりましたので、ここで一つ2015年6月時点でのClojure日本語書籍についてまとめてみました。 プログラミングClojure 第2版 Clojureの日本語書籍といえばまずコレ。 ハワイ在住Lispハッカーとして有名な川合史朗さん訳…

ClojureのAgentで生成されるスレッドプールのサイズを変更する

ClojureのAgentの実装では、2 + Runtime.getRuntime().availableProcessors()で得られるサイズでスレッドプールを生成するが、このスレッドプールのサイズはset-agent-send-executor!に任意のExecutorServiceを渡して書き換えることが出来る。 set-agent-sen…

Flocking - Web Audio APIを使用した音響合成エンジン(その1)

FlockingとはJavascriptで実装されたWeb上で動く音響合成エンジンです。 日本語での紹介記事が現時点で皆無なので、紹介したいと思います。 Web Audio APIをラップする形で実装されており、 ブラウザが対応さえしていれば、Flashなどのプラグイン無しでマル…

Homebrewでantがインストール出来ない問題に対処

HomebrewでAntをインストールしようとbrew install antを実行したところ、 以下の様なメッセージが表示された。 ==> Downloading http://www.apache.org/dyn/closer.cgi?path=ant/binaries/apache-ant-1.9.2-bin.tar.gz ==> Best Mirror http://ftp.tsukuba.…

nicosearch をPyPIで公開

ニコニコ検索APIをPythonから使用する簡単なラッパーライブラリを書いたので、試しにPyPIに公開してみました。 https://pypi.python.org/pypi/nicosearch https://github.com/ymizushi/nicosearch インストール方法 pip install nicosearch 使用方法 from ni…

Clojureのevalとmacroのパフォーマンスを比べる

Clojureには他の動的型言語と同様に文字列*1をプログラムとして評価出来るevalという関数があります。 Clojureにはマクロがありますし他の動的型言語と同様にevalは遅いだろうという推測は容易に出来ますので、evalを使わないといけない局面というのはそう多…

Racketのdot記法を使う

Racketのdot記法は、基本的にリストの最後の要素の前に付きますが、 (1 . < . 2)と書くと、(< 1 2)と等価に評価される*1同様にみなされるようです。 dot記法がペアを生成する(cons x y)の省略記法であることを考えると、 この記法は例外的に感じられます。 …

Lispは読みにくい以上に書きにくいと感じている人が多い説

Lispが流行らない理由として「括弧が多い」ということはよく挙げられる要素だと思います。 それでは何故「括弧が多い」ことが敬遠されるかというと、以下の2つが考えられます。 読みにくい 書きにくい そのビジュアル面から、「括弧が多い」ことで「読みに…

RacketのREPLをマシにする

Racket のREPLは素の状態では履歴もemacs標準キーバインドも使えないため、使い勝手が非常に悪いです。 とりあえず XREPL(eXtended REPL) を設定しましょう。 設定方法 $ echo "(require xrepl)" >> ~/.racketrc POSIX互換なら $ racket でREPLが起動する際…