RSAアルゴリズムを並列化(Parallel and Concurrent Programming in Haskell Chapter 3 and 4 example)

以前まとめた第3章、第4章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/24/131408 http://jsapachehtml.hatenablog.com/entry/2015/01/31/221609英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000…

シェルスクリプトで未定義変数の確認

以下の形でできる if [ "${hoge-undefined}" = "undefined ]; then echo "hoge is not defined" fi${var-value}と書くことで、変数varに値があればその値を、値がなければvalueという値を返す なので${hoge-undefined}がundefinedを返すなら元々$hogeは未定…

Par Monad(Parallel and Concurrent Programming in Haskell Chapter 4)

以前まとめた第3章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/24/131408英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch04.html 第2章、第3章ではEvalモナドを使い 遅延評価と密接…

Strategies(Parallel and Concurrent Programming in Haskell Chapter 3 前半)

以前まとめた第2章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/03/101754 http://jsapachehtml.hatenablog.com/entry/2015/01/18/143520英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/…

dpkg -lのrc

dpkg -lしたときにステータスがrcとなっているものがある 意味は パッケージ自体は削除されたが設定が残っている というもの以下のコマンドで完全に削除すればOK $ apt-get remove --purge <package-name> 参考ページ Linux - dpkg -lの”rc”状態とは - Qiita</package-name>

Eval monadと並列実行(Parallel and Concurrent Programming in Haskell Chapter 2)

こちらの記事のつづき http://jsapachehtml.hatenablog.com/entry/2015/01/03/101754もともとの本の内容はこちらで読める http://chimera.labs.oreilly.com/books/1230000000929/ch02.html また、このページのコードは↑から引用した コードの全体は著者が公…

interface(IPアドレス)を指定してping

複数のIPアドレスを持っている端末からpingを打つ場合、どのIPから送信するか指定したい その際は以下のように指定できる192.168.0.2から192.168.100.1へpingを打つとすると (192.168.0.1, 192.168.0.2という2つのIPを持っていると仮定) $ ping -I 192.168…

error while loading shared libraries

こんな感じのエラーが出たので調べた error while loading shared libraries: hogehoge.so.0: cannot open shared object file: No such file or directoryダイナミックリンクされたファイルが見つからないという意味らしい lddによって対象のコマンドにリン…

vagrant rsync

vagrantでrsyncを使ってファイルを共有できるということでやってみたのでメモ #以下をVagrantfileに追記 config.vm.synced_folder "./path/to/host/dir", "/path/to/guest/dir", type: "rsync" rsync__exclude: [".git/"]マシンを作成してrsync $ vagrant up…

遅延評価とWHNF(Parallel and Concurrent Programming in Haskell Chapter 2前半まとめ)

Parallel and Concurrent Programming in Haskell という本を以前読書会で読んだが、当時はあまり理解できなかった部分もあったのでもう一度読んでサンプルコードなど書いてみようと思い立った。この本はわかりやすいし並列並行プログラミングに関して必要な…

Error detected while processing function ghcmod#util#check_version

ghc-mod.vimでエラーが出た 具体的にはghc-modを5.2.1にupdateしたら.hsファイルを開いたときにエラーが出るようになった 文法エラーを表示する機能には影響していないようなのでほっておいてもいいが、起動時に毎回出るのは面倒なので調べてみた ちなみにgh…

複数ファイルに一括でinsert

いくつかのファイルにcopyrightを追加する必要があり調べたのでメモ参考ページ Unix Sed Tutorial: Append, Insert, Replace, and Count File Linessedを使えば簡単にできる まずは簡単な場合。example.cの先頭に以下の一行を入れたいとき // Copyright Hoge…

git branchとgit checkout 新しいブランチを作る

git

gitで新しくブランチを作る場合について調べたのでメモ移動も一緒に行いたいのでcheckoutを使う 既にがあればエラー $ git checkout -b <new-branch> これと同じ $ git branch <new-branch> $ git checkout <new-branch>既にがあれば現在いるブランチの内容でリセット (リセット=同じ内容になる</new-branch></new-branch></new-branch>…

tar (child): xz: Cannot exec: No such file or directory

tarでエラーが出たため調査 $ tar -Jxvf hoge.tar.xzこれで以下のようなエラー tar (child): xz: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable…

git clientの脆弱性

2014/12/19に脆弱性を修正したバージョンがリリースされた手元(Mac)で試したところbrewで修正版にアップグレードできた $ brew update $ brew upgrade git $ git --version git version 2.2.1.git/configを書き換えることでクライアント側で任意のコマンド…

複数ファイルを一括リネーム

標準出力から文字列を受け取って別のコマンドで使えるととても便利 例えば、複数のファイル名を一気に同じ形式に変更したいとするカレントディレクトリに以下のファイルがあるとする hoge1 hoge2 hoge3これをそれぞれ.txtという拡張子を付けた形にリネームし…

tarで展開時にerror

curlでとってきたtar.xzのファイルを展開しようとしたところerrorが出たtar.xzは以下のように展開できる $ tar -Jxvf filename.tar.xz JのオプションはGNUのtarにしかないらしく、その辺りが原因かと思ったがちゃんとGNUのものを使っていた。 curlで取得した…

シェル上で簡単にjsonを扱う

シェル上でjsonをパースして他のコマンドに渡したり綺麗に表示したいときがある そのためのコマンドとしてjqというのがあったためメモ公式ページはこちら http://stedolan.github.io/jq/サンプルとして以下の天気情報のapiを叩いてjsonデータを取得する Open…

グロブで特定ファイルを除外

zsh

特定のファイルだけを除いた他のファイルすべてに対して処理をしたいときの指定方法をメモまずオプション設定 .zshrcなどに書いておくのがよい set_opt extended_globこれで^や~がグロブとして使える 具体的には以下のような感じ # .cではないファイル $ ls …

Kernel Configurationを確認

カーネルのコンフィギュレーションを確認する方法をメモ/proc/config.gzにかかれているので特定のオプションがONになっているかどうかはgrepしてみればよい $ zcat /proc/config.gz | grep CONFIG_IP_VS_NFCTちなみにCONFIG_IP_VS_NFCTはIPVS用の設定をiptab…

vimとxargsで表示がおかしくなる

まとめてファイルを開く必要があるときに以下のようにやることがある $ find . -name '*.txt' | xargs vimだがこんなwarningが出た上、vimを終了した後にターミナルの表示がおかしくなる Vim: Warning: Input is not from a terminal # vim終了後 $ git stat…

書き込み権限のないユーザでファイルを編集してしまったとき Can't open file for writing

vim

vimでrootのもっているファイルをつい通常のユーザのままで開いて編集し、セーブするときになって気づくことがある。rootになって再度編集しなおしてもよいが、それが大変なときもある。 そんなときは以下のコマンドでOK(sudo可能なユーザであること前提) …

vagrantでロードバランサーの実験環境作成

勉強がてらubuntuでlvsを構築してみたので手順やハマったところをメモ実験用の環境はvagrantで構築 nodeをたくさん立てる必要があるためdocker使ってメモリ節約したかったけど dockerだと通信周りの設定でハマりそう&その部分は今回の趣旨と違うため次のス…

ファイルの容量を調べる

各ファイルの容量を調べる方法についてメモ使うコマンドはdu カレントディレクトリ以下の全てのファイルの大きさを単位を直して出力 $ du -hカレントディレクトリの容量合計を出力 $ du -shカレントディレクトリ直下の各ディレクトリの容量合計を出力 $ du -…

gitでどこにpushされるか調べる

git

どのブランチがどこのリモートブランチとつながっているのか確かめたいときはこれ $ git branch -vv出力はこうなる master 828c5cc [origin/master] message = ローカルブランチ 最新のコミット [追跡ブランチ] コミットメッセージ

ncによる簡易サーバ

ちょっとしたサーバを立ててアクセスできるか試してみたいときがあるnginxとかapacheを入れるまでもないとき簡単にできるやり方があった $ echo "hello" | nc -l -p 10000port 10000にアクセスするとhelloを返す

svn checkoutでnetwork connection closed unexpectedly

svn

あるcookbookを使ってサーバ構築しようとしたところ途中でエラーとなった 中を調べてみるとsvn checkoutがうまくいかずに止まっていることがわかった そのエラーはこれ network connection closed unexpectedlyこれでは原因がわからない vでデバッグメッセー…

sudoした際に環境変数を引き継ぐ

環境変数を設定することでコマンドの挙動が変わる場合以下のように実行する $ HOGE=hoge $ someCommandただ、someCommandを実行するにはrootになる必要があった場合どうするか? 以下のようにオプションを付けることで簡単に実現できることがわかった $ HOGE…

vimで行番号の色を変える

vim

Retinaディスプレイになって行番号の色が見づらくなったためそこだけ少し変えることにしたこちらのページを参考にした。まとまっていてとてもわかりやすい。 Vim のカラースキームが微妙に気に食わないときの対処法 - 反省はしても後悔はしないまずコマンド…

docker上でjekyllを使う

何らかのブログシステムを構築してみたいと思い調べてみたところjekyllというのが良さそうということがわかったのでちょっと入れてみることにした。まずboot2dockerを入れて起動 $ brew install boot2docker $ boot2docker init $ boot2docker upしかし、う…

brew caskが動かない

以下のようなエラーになった $ brew cask install virtualbox Error: No available formula for virtualboxタイポもしてないしなぜかと思ってググってみるとこんなのが見つかった osx - Homebrew error occured when I command "brew cask install virtualbo…

すごいhaskell本の練習問題(knightの動き)

すごいhaskell本の13章にあるチェスのknightの動きを求める練習問題を解いてみたのでメモ初期位置と目的位置、移動回数を指定して 移動できるならその経路をリストとして出力するようにした最終的なコードはこんな感じ import Control.Monad type Pos = (Int…

haskellでハマったところ

haskellを使っていてハマったところについてメモしておく データ構築子のexport, import 下のコードの場合、型構築子はexportされるが、データ構築子はexportされない。なので別のモジュールにて型名としてのFugaが使われているからといってFugaをデータとし…

packerでvagrantのbox作成

初めてpackerを使いubuntu14.04のvagrant用boxを作成してみたので、その際にやったことやハマった点などメモ最終的に作った設定はこちらにおいた packer/ubuntu14.04 at master · y-kamiya/packer · GitHub 参考ページ 以下のページでは詰まるポイントについ…

vimでちょっと複雑な置換

あるパターンに従って様々な単語を置換して入力していきたい場合、レジスタを使うことでうまく処理を軽減できる。例えば以下のようにするとhogeをfugaに置換できる。 :let @i = "fuga" :s/hoge/\=@i/\=の後に書いたものはvimscriptとして実行される。また、…

gdbを使う

gdbを初めて使ったのでその際に調べたことをメモgdbの公式ページはこちら http://www.gnu.org/software/gdb/インストール $ sudo apt-get install gdbデバッグモードでコンパイルしてデバッグ開始 $ gcc -g -o hoge hoge.c $ gdb hogeプログラムを実行 (gdb)…

CoreOSとvagrantでクラスターを構築

CoreOSいじってみたのでメモ今回はvagrantでクラスター(core-01~03)+etcdを動かすVM(discovery)を立て、discoveryからクラスターの各マシンにserviceをデプロイするところまでやってみた 基本的にこちらの記事と各ツールのレポジトリ、ドキュメントを元…

knife soloが動かない

こちらの本を読んでchefを動かしてみた際にハマった部分をメモ入門Chef Solo - Infrastructure as Code作者: 伊藤直也出版社/メーカー: 伊藤直也発売日: 2013/03/11メディア: Kindle版購入: 16人 クリック: 1,027回この商品を含むブログ (17件) を見るまずom…

vagrantとdockerで開発・ビルド環境の構築

dockerのimageとしてビルド環境を作るスクリプトがあったため、それを使えるように開発環境を作ってみたのでメモ ビルドはクリーンな環境や特定のOSで行いたいものの、開発自体はツールなど整備してあるMac上で行いたいという意図。 Macでは直接dockerを扱え…

vagrantを使ってみた

vagrantを使ってみたのでやったことをメモ基本的には公式サイトを見ながらやった http://docs.vagrantup.com/v2/getting-started/index.html▼インストール ホストの環境はMacなのでbrewを使って入れた 仮想環境の作成にはvirtualboxを用いた brew tap phinze…

kernelのbootメッセージにHello World!

kernelをビルドしてみたのでその手順をメモ もともとこちらの本を読んでいてやってみようと思ったもの Linuxの内部構造の概要や運用管理する上でのシェルスクリプトの使い方、kernelソースの読み方導入までわかりやすく書いてありとても面白かった。プロのた…

sshで公開鍵が使われないとき

authorized_keysに公開鍵を登録し、秘密鍵も正しい場所に置いてあるにも関わらずログインの際にパスワード認証になってしまうことがあったので原因をメモ原因はauthorized_keysのファイルパーミッション 以下のようにしておけばOK.ssh → 700 authorized_keys…

haskellで非同期IO処理(Parallel and Concurrent Programming in Haskellの11章中盤)

勉強会の復習としてParallel and Concurrent Programming in Haskellの11章をまとめてみる(中盤の辺りについて) 前半についてはこちらに書いた http://jsapachehtml.hatenablog.com/entry/2014/04/03/23310111章初めの部分でwithAsyncという関数を作った。…

haskellで非同期IO処理(Parallel and Concurrent Programming in Haskellの11章はじめ部分)

Parallel and Concurrent Programming in Haskellの読書会でasyncを使った並行処理について学んだので復習がてらメモ 本の内容はこちら(今回の内容は第11章の前半について) http://chimera.labs.oreilly.com/books/1230000000929/index.htmlなお、ブログ中…

リモートサーバの画像をfinderで見る

mac

リモートサーバに置いてある画像を確認する必要があったためやり方がないか調べてメモ。結論からいうとsshfsを使えばできるということがわかった。 これはリモートにあるディレクトリをマウントすることでローカルにあるかのようにアクセスできるようにする…

gitのブランチ移動を効率化

開発をしているとブランチの移動を行うことが多いが、いちいちブランチ名を確かめてコピペなどめんどくさい。なので簡単にするために以下のようにシェルのfunctionを定義しといた。 function co() { git branch | grep $1 | xargs git checkout }これでブラ…

vimで最近地味に便利だなと思ったコマンド

vim

エディタはvimを使っているけどその中で最近地味に便利だなと思ったコマンドをメモ以下の3つがそれ <C-h> → <Backspace> <C-m> → <Enter> <C-i> → <Tab>とても地味だけど意外と便利。 特にBackspaceは結構離れた位置にあるのでC-hであれば手の位置をあまり動かさずに済んでよい。また、EnterやTab</tab></c-i></enter></c-m></backspace></c-h>…

入力をIntのリストに変換する

初歩的な部分だけど自分なりに勉強になったのでメモしとく以下のような入力ファイルがあるとする sample.dat 1 2 3で、このファイルからの入力を[Int]としたいとすると以下のように書ける sample.hs main = do s <- getLine let ss = words s let ns = map r…

haskellで割り算するとき

haskellでコードを書いていて数値の計算を行うときにエラーが出て調べることが多いのでメモしとく例えば、整数同士を割り算してから少数部分を切り上げたいとき以下の形だとエラーになる myceiling :: Int -> Int -> Int myceiling m n = ceiling $ m / nこ…

映像がh264、音声がaccのmp4ファイルをDVDStyler v2.7でisoにしたら音が出ない

ビデオを作成してDVDに焼こうとisoファイルを作ってみたところ音が出ない。オーサリングする前のファイルはタイトルの通りmp4, 映像がh264、音声がaccのもの。これをDVDStyler v2.7を用いてオーサリングし、VLCプレイヤーで再生したところ音が出なかった。 …