fnwiya's quine

自分自身を出力するブログ

100.Tech

haskellでバブルソート・マージソート・クイックソート

Haskellでソート3種実装してみました。 クイックソートのシンプルさが際立ちます。 これがパターンマッチの力。 バブルソート bswap [x] = [x] bswap (x:xs) | x > y = y:x:ys | otherwise = x:y:ys where (y:ys) = bswap xs bsort [] = [] bsort xs = y : b…

タイル型ウィンドウマネージャxmonad

現在ウィンドウマネージャにxmonadを使用しています。 メリットとしては 動作がかなり軽くなる ほとんどの動作がキーボードで完結するようになる 設定がHaskellでかけるのでプログラマブルで移植性や再現性が高い Haskellの勉強になる マウスによるウィンド…

高速grep the_silver_searcher

コードにコメントとして残した「TODO」や「FIXME」などを後から探すときに grep -rn TODO などどコマンドを打つことがあるかと思いますが、 いかんせんgrep -rは遅いです。 その遅さを解消したのがthe_silver_searcherです。 github.com osxならインストール…

Ansible MeetUp簡易レポート

詳細レポはきっとどなたかが上げてくださると思うので早さ重視で。 全体として「明日から使える」感もあり夢も持てる素晴らしい会でした。 運営及び発表者のみなさんありがとうございます! 大きく話は2つ 1.Ansible2の話 2.Ansibleのツラいところをどうする…

シェル・端末・ターミナル・コマンドラインの違い

「新しいLinuxの教科書」を勉強していて シェル・端末・ターミナルの違いが解説されていたので改めて。 標準出力を文字として表示したり、キーボード入力を取得したりするのが ターミナル(エミュレータ) 主にターミナルを介してコマンドを打ち込んでプログラ…

windows10でunixコマンドが打てるようになるらしいが7~8の人はcashがおすすめ

windowsがbuild2016でunixコマンドをサポートすると発表してから少し経ちましたが、 やはり衝撃的な発表でしたね。 近年のMicrosoftは以前のクローズドな文化とは打って変わってオープンな姿勢ですごくいいなと思います。 とはいえwindows7や8の方もunicコマ…

railsアプリにwebpay(pay.jp)で決済機能機能を実装する

Railsに決済機能を実装するときにpay.jpを使うと簡単にできたのでご紹介です。 【参考】 tech.creofuga.jp qiita.com やり方 ステップ1:アカウント取得 https://webpay.jp/ でアカウントを取得 ステップ2:Gemfileにweppayを追加 # Gemfile gem 'webpay' コマ…

helmの「.」と「..」を表示させない

helm使用時に絞り込む前の状態ではディレクトリの一覧に「.」(現在のディレクトリ)と「..」(ひとつ上のディレクトリ)が表示されています。 しかし現在のディレクトリのほうは使い道が無いですし、 上のディレクトリには「←」でいけます。 ディレクトリを深く…

Docker初心者だけどDocker Meetup Tokyo #6に行ってきた

いわゆるDepOps的なことを導入しようと色々調べていたことがあって、 その際にAnsibleはわかったのですがDockerは結局よくわからず断念してしまいました。 今後こそリベンジすべくDocker Meetup Tokyoに参加してきました!(倍率2倍以上の抽選で当たったのラ…

「Clojure で Web 開発をはじめてみよう」をやった

clojure koansの次のステップとして Clojure で Web 開発をはじめてみよう — Clojure の日本語ガイド に取り組みました。 おすすめポイント commitのdiff単位でコードを追えるので今どこにいるのかわかりやすい 実際に動くものを作りきれる(Herokuのデプロイ…

pythonで無限大を表現する

pythonで無限大を表現するには float('inf') とします。 ダイクストラ法でまだ訪れていない地点を表現する際に使用します。

evil-modeでもkey-comboを使う

特定のキーの連続入力により挙動を変化させることのできるkey-comboですが、 evilの際はevil-***-state-mapに定義しないと/等のキーを設定していた場合に normal-state時検索が行えなくなります。(おそらく設定した値を挿入する動きになっているため) (use-p…

emacsでオリジナルのカラーテーマを作るときはbase16をもとにすると楽

見た目にこだわる上でオレオレカラーテーマが作りたくなると思いますが、 一からつくるとさすがにしんどいのでまずは本のテーマのカラーパレットを変更するぐらいにとどめておくといいと思います。 その時におすすめなのはbase16というものです。 mkaito/bas…

.vimrcの分割

.vimrcに以下の記述をして set runtimepath+=~/.vim/ runtime! conf.d/*.vim ~/.vim/conf.d以下に分割した設定ファイルをかけばOKです。 [~] .vimrc .vim └conf.d └foo.vim bar.vim

d3.jsのグラフをスマホ対応させるためのtips

今日思いついて比較てき汎用性高かったので。 たとえばd3.jsのグラフをレスポンシブ対応させる場合に、 windowサイズが欲しいわけですがその時に <div id="aaa"> <svg>...</svg> </div> となっているとして よくあるsvgコンテナを作る部分の var margin = {top: 20, right: 20, bottom: 40, …

d3.jsの散布図でアニメーションをいれる

d3.jsでアニメーションを使うときは アニメーション前の状態 アニメーション後の状態 をそれぞれ分けてかき、アニメーション後の状態に移る部分で その動きをeaseなどを使って表現します。 使えるアニメーションはこのあたりをみると参考になると思います。 …

d3.jsで複数の折れ線グラフを書く

基本的には他と同様データをバインドして描画するのですが、 複数グラフを書きたいときは引数に配列をとって描画のところをループしてあげるとDRYにかけると思います。 function drawLine(id, datasets) { // コンテナ var margin = {top: 20, right: 20, bo…

d3.jsで円グラフを書く(開始アニメーション/ラベルテキスト/色つき)

ネット上にd3.jsの情報はあるのですが、 どの部分で何をしているかわかりにくかったので まとまりごとコメントをいれてみました。 function drawPie(id, dataset) { // コンテナ var width = 300, height = 200, radius = Math.min(width, height)/2; var sv…

psqlの設定は.psqlrcに書く

postgresqlを対話的に実行できるpsqlですが、 そのままだと若干使いづらいところがあります。 そんなときは設定を.psqlrcという名前で書いて保存すれば毎回psqlに入るたびに設定しなおさなくて済むので楽になります。 \set PROMPT1 '%[%033[1m%]%M %n@%/%R%[…

D3.jsで散布図を書く

d3.jsでグラフを書くためのステップですが、 おおざっぱに datasetを用意する。(多次元配列やオブジェクトの配列の場合がおおい) コンテナの用意 スケールの設定 データをバインドする データ描画する 軸の設定 というように分解できます。 実際のコードは以…

ansibleのshellで冪等性を保つ

冪等性とは 数学において、冪等性(べきとうせい、英: idempotence 「巾等性」とも書くが読み方は同じ)は、大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。まれに等冪(とうべき)とも。抽象代数学、特に射影…

ansibleで環境構築を自動化する

開発効率向上のために環境構築を自動化しようと思い、 いくつか調べた中でAnsibleがいいなという結論にいたりました。 www.ansible.com 選定の理由は サーバ側に特別な用意が必要ない(python2.6があればOK) yaml形式で書きやすい 技術的にpythonを用いており…

evilのキーバインド設定をEmacsのデフォルトと共存させる

Evilにしてから数日が立ちますがyyとかddとか素晴らしいですね。 心なしか気持ちまで軽くなった気がします。 しかし、なれの問題かもしれませんがEmacsのキーバインドを使いたい時もあるので 以下の設定でキーバインドをOverwriteしています。 ;;;;;;;;;;;;;…

リポジトリ管理としてghqを導入しました

今までgitから落としてきたリポジトリは~/Documents以下においていたのですが、 それも微妙だなと思っていたので管理ツールとしてghqを導入しました。 インストール&設定 goのインストール % brew install go ubuntuなら % sudo apt-get install golang 以下…

evilに雑に入門してみる

こちらを参考にevilを導入してみました。 tarao.hatenablog.com 最初はspacemacsもありかなと思ったのですが、 今までの設定とのバランスが難しかったのでいったんevilでやってみます。 (use-package evil :config ;; before (evil-mode 1) (setq evil-cross…

emacsでポモドーロテクニック(org-pomodoro)

ポモドーロテクニックとはざっくりいえば時間を区切って短時間集中->休憩->集中を繰り返すことで、 作業効率をあげようというものです。 www.lifehacker.jp そのタイマー機能をemacs内で実現するのがorg-pomodoro.elです。 github.com 使い方 init.elで(requ…

emacsで時間を図る(stopwatch.el)

集中力が持たない人は時間を図ってみるといいらしいです。 そんなことも簡単、emacsならね。 Stopwatch (November 16, 2011)

子要素をfloatさせたら親要素の高さがなくなってしまった時の対処法

よくなるのでメモ ↓を付け足せばOK 親要素:after { content: ""; display: block; clear: both; height: 1px; overflow: hidden; }

pythonの多次元配列の指定した要素番号でソートする

多次元配列のソートをする場合はデフォルトだとリストの要素[0]を使ってソートされます。 指定した要素番号でソートしたい場合はkeyを使ってソートに使う要素を指定してやります。 l = [['AAA',30],['BBB',25],['CCC',40],['DDD',10]] sorted_l = sorted(l, …

pythonでgzipされたjsonファイルを読み取る

データが圧縮されたjson形式で配布された場合の読み取り処理です。 import json import gzip with gzip.open(filename, 'r') as f: for line in f: obj = json.loads(line) do_something(obj)