読者です 読者をやめる 読者になる 読者になる

webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

scalaでコマンド叩くときのエラー

参考資料 公式ドキュメント http://kmizu.hatenablog.com/entry/20110510/1304985703 http://www.mwsoft.jp/programming/scala/scala_process.html エラー制御 エラーが2パターンある。 1、 コマンド自体実行できないと例外(IOException)が飛ぶ scala> Proce…

すごいHaskell本のメモ

FunctorやらMonadまわりのメモ。 Functor 箱と比喩されている。リストやMaybeなど大体Functor。 fmapをもってる。(Scalaでいうmap) fmap :: Functor f => (a -> b) -> f a -> f b aをとりbを返す関数と、Functor値aをとる。aに関数を適用してFunctor値bを返…

rubyでサムネイル作成

画像を指定のサイズでうまいことリサイズし、余白を埋め、透かしをいれる。 require 'RMagick' file = ARGV[0] def main(file, w, h) img = Magick::Image.read(file).first filename = img.filename img = watermark resize img, w, h img.write "dest/#{fi…

TypeScriptでScalaのOptionを

書いてみた。 使い方↓ Optional(x).map(i => i + 100).getOrElse(0) Optional(x).exists(i => i % 2 == 0) (Optionは予約されてて使えなかったのでOptionalに) もうほとんどScalaじゃ...! TryとかEitherならすぐ書けそうだけどリスト周り書き出すとしんどそ…

require.jsの、requireとdefineの違い

require.jsのことがよく分かってなかったので、コード読んで調べてみた。 require と define requireは、名前の通り実行すると、ファイルを読み込む。 defineは、名前の通り定義をすると、キューに突っ込まれるだけで読み込みはしない。 requireを実行すると…

git cherry-pickで複数まとめて取り込む

masterに緊急でコミットしてしまって、後で開発ブランチと整合性合わせたいみたいな状況(仮) 差分を確認します。 $ git cherry -v develop master 84a9532902724a2c26c746aae2505bc60e66e7cb 緊急対応。index.html修正 9e630b327fa7879562bff8b3772f36e6a0e7…

CoffeScriptをさらに書きやすくしたLiveScript

LiveScriptは、CoffeScriptをもっとよくしたCocoのfork。 LiveScriptで書かれたpreludelsというライブラリがあるので関数型っぽい関数が使える。(foldやらscanやら) Function カリー化 f = (x, y) --> x * y f(2)(2) # 4 f = (x) -> (y) -> x * y f(2)(2) # …

Scalaのリファクタリング小ネタ (例外)

例外時にデフォルトを取るような場合 // not bad try { "a".toInt } catch { case e: Throwable => 0 } // good Try { "a".toInt }.getOrElse(0) 例外をOptionで取る場合 // not bad try { Some("a".toInt) } catch { case e: Throwable => None } // good T…

パスワードを省略したssh接続

一番いいのは、鍵認証(コマンド限定)。 鍵認証できないのなら、sshpass。(expectはやめよう) ssh 引数から ./sshpass -p “password" ssh root@192.168.1.1 ファイルから echo "password" > pw ./sshpass -f pw ssh root@192.168.1.1 環境変数から export SSH…

ブランチを新しい順に並べて表示

git

ブランチを更新日時順に並べるワンライナー。git branch sort by update tim ... gawkが必要 brew install gawk

gitの便利なfilterまとめ

gitのfilterは、checkout時 と add時 に任意のフィルターをかけることができる。 svnでやってた $Id$ みたいな変数の展開したり コードを自動で整形したり 任意のコマンド/スクリプトを実行できる 概念図 出元 $Gcid$にコミットIDを埋め込むフィルターを作っ…

Scalaのリファクタリング小ネタ (コレクション)

mapしてflattenするなら、flatMap // bad .map { ... }.flatten // good .flatMap { ... } filterしてmapするなら、collect // bad .filter { ... }.map { ... } // good .collect { ... } mapしてreverseするなら、reverseMap // bad .map { ... }.reverse …

Scalaでソート

数え上げソート (要素の最大値分箱を作っていれるだけ) バケツソート (hash(要素の最大値/n)分の箱にいれて、箱の中でソート) スリープソート (スリープしてechoするだけ) 数え上げソート。バケツソート。スリープソート。 Erlangだとpmapでスリープソート s…

Scalaで最小全域木

プリム法 (スタートから重みの小さい道を辿る) クラスカル法 (辿るのではなく重みの小さい道を選ぶ) UnionFind (グループを作ることができる構造。クラスカル法で閉炉を見つけるのに使用) 最小全域木。プリム法とクラスカル法。UnionFind。

Scalaで最短経路問題

アルゴリズムの勉強中... 深さ優先探索と幅優先探索 ベルマンフォード法 (閉炉を見つけれる) ダイクストラ法 (よりコストの低い道を進む) A* (よりゴールに近いほうから進む) ワーシャルフロイド法 (全ペアの最短経路を見つける) 深さ優先探索と幅優先探索 …

Erlang練習 part1

とりあえず書いてみた。 Erlangは末尾再帰じゃなくても速いらしい...謎い 練習

standaloneのhbaseが起動できなかった

zipを解凍して起動しようと思ったら、起動できなかった。 2013-12-11 15:52:47,105 ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Failed to start master java.lang.RuntimeException: Failed suppression of fs shutdown hook: Thread[Thread…

gitで重いリポジトリをcloneするとき

git clone http://example.com/fuga.git remote: Counting objects: 3203, done. remote: warning: suboptimal pack - out of memory remote: fatal: Out of memory, malloc failed error: git upload-pack: git-pack-objects died with error. fatal: git u…

vagrantを普通にpackageしてもネットワークエラーがおきるものらしい

解決方法は、 sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules を打ってから、vagrant packageしないといけない。 ホストオンリーネットワークとかブリッジの設定をしている場合必要みたい。 なんでこの問題がおきるかというと、 http:/…

便利なjavaコマンド集

javaプロセス一覧 普通にps % ps aux | grep java jps % jps 64806 activator-launch-1.0.8.jar % jps -v 64806 activator-launch-1.0.8.jar -Dactivator.home=/Users/ryohongo/Downloads/activator-1.0.8 -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:Res…

Ajaxでクロスドメイン通信

Ajaxでクロスドメイン通信について調べたのでまとめ。 シンプルな例 client var xhr = new XMLHttpRequest(); var url = 'http://example.com/xhr-response.php'; xhr.open('GET', url, true); xhr.send(); server

Part2 : ErlangVMで動くRuby風の関数型言語Elixir(エリクサー) : 基礎編

Part1はこちら インターフェース defprotocolでinterfaceのようなものが定義できる defprotocol Checker do def ok?(data) end defimplでinterfaceの実装を定義できる defimpl Checker, for: List do def ok?([]), do: "ng" def ok?([h | _]) when h == 1, d…

ErlangVMで動くRuby風の関数型言語Elixir(エリクサー) : 基礎編

Erlangの奇妙な文法を覚えることなく、Erlangの機能が使えるエリクサー。 Ruby風の文法なのでRubyistには馴染みの関数などが使えるが、以下のことを頭にいれておくべし。 オブジェクト指向ではない ベースはErlangで、Rubyだと思って書くと辛い 楽天Technolo…

AS3で動画を扱ったり、JSと連携したり

ActionScript3で動画に関するメモ 動画再生 動画を再生するには以下のいずれか。 FLVPlaybackを使う。 flexのspark.components.VideoPlayerを使う。 Videoクラスなどを使い自前で作る。 1がスタンダード。 FLVPlayback 使い方 ウインドウ -> コンポーネント …

jenkinsでバックアップとってs3に置くのがアツイ

s3プラグイン インストール まずはプラグインをjenkinsにインストールします。 Jenkinsの管理 -> プラグインの管理 -> 利用可能 -> フィルターでs3で検索 https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin 設定 Jenkinsの管理 -> システム設定 -> Ama…

scalaでvalを気軽にオーバーライド

valを気軽にオーバーライド テスト書くときに使えそうだったのでメモ

scalaのコレクションのviewがやばい

中間オブジェクトがでかい場合や、mapやfilterをたくさん繋げる場合、viewを使うほうがいい。 正格と遅延(view)の計測 繋げるmapの数が増えてもviewの場合、処理時間がある程度一定になってる。よいですね。

Scalaでファイル変更監視

Java7のnioのWatchServiceで監視を行うサンプル Scalaでファイル変更監視 Gist連携便利すぎる...

Scalaでフィボナッチ数列のメモ

なんか面接とかでたまに書かされるらしいので Listで再帰 // ListFib.f(100) object ListFib { def f(lim: Int): List[Int] = { 1 :: 2 :: f(1, 2, lim) } def f(a: Int, b: Int, lim: Int): List[Int] = if (b > lim) { Nil } else { b :: f(b, a + b, lim)…

文字列内の数値をインクリメントする

/** * 文字列内の数値をインクリメントする * ex) TextIncrementer("abc123efg456hij").++() // abc124efg457hij * ex) TextIncrementer("あいう1 2 3えお").++() // あいう2 3 4えお * @param t インクリメントしたい文字列 * @param incrValue いくつイン…

macにmysqlインストール

インストール brew install mysql 起動 mysql.server start

中規模開発のためのBackbone.js

はじめに Backbone.jsを使って、管理画面を作ったときのことを備忘録も兼ねてまとめて記事にします。 Backboneは入門やHelloWorldはたくさん情報があるんですが、実際使うとなると色々と考えることが多くて大変です。少しでも役に立てればと思います。(・ω・ )…

Linuxにnode.jsをインストール

nodeとnpmがインストールされる。 cd /usr/loca/src mkdir node cd node wget http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz tar xf node-v0.10.13-linux-x64.tar.gz ln -s /usr/local/src/node/node-v0.10.13-linux-x64/bin/* /usr/loca…

mysqlのvarcharaはバイト数でなく文字数

mysql version : 5.6.10 確認用のテーブル mysql> CREATE TABLE `testes` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(15) NOT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 15文字ならokだが、1文字超えると…

macにgem mysql2が入らない時

以下のようなエラーがでた checking for mysql/mysql.h... no ----- mysql.h is missing. please check your installation of mysql and try again. ----- 対応方法は5.6.10にすることだった http://stackoverflow.com/questions/17238226/gem-mysql2-doesnt…

oh-my-zshでgit stash数をプロンプトに出す方法

git

vi ~/.oh-my-zsh/custom/git-stash.zsh function show_git_stash() { if [[ -e $PWD/.git/refs/stash ]]; then ZSH_THEME_GIT_PROMPT_SUFFIX="{@${$(git --no-pager stash list 2>/dev/null | wc -l | sed "s/ //g")}}" else ZSH_THEME_GIT_PROMPT_SUFFIX=""…

git cherry-pick まとめめも

cherry-pickまとめた サンプルとなるlogの状態 masterブランチ commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26 Author: rh <rh@nanashi@example.com> Date: Wed Mar 27 11:16:50 2013 +0900 foo newブランチ commit c91bb1c20d451fd6f1a45cced06447f9dfb938f4 Author: rh <rh@nanashi@example.com> Date: T</rh@nanashi@example.com></rh@nanashi@example.com>…

git stash に名前をつける

git stash save [message]

jenkinsからircにikachanで通知

jenkinsのIRCプラグインが動かなかったので、ikachanから通知するようにしたメモ。 ikachanは、httpでircに通知したりできる便利なツール。perl製。 cpanmインストール cd mkdir bin && cd ~/bin curl -LOk http://xrl.us/cpanm chmod +x cpanm cpanm local:…

centos6にruby1.9.3いれるシェル

rbenv+ruby-build #!/bin/bash set -ex ## rbenv ### preinstall yum -y install gcc kernel-devel zlib-devel openssl-devel readline-devel curl-devel libyaml-devel sqlite-devel ### cwd cd /usr/local/share ### download git clone git://github.com/…

centos6にvim7.3いれるシェル

メモ。 #!/bin/bash set -ex wget http://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 tar jxfv vim-7.3.tar.bz2 mkdir vim73/patches cd vim73/patches seq -f http://ftp.vim.org/pub/vim/patches/7.3/7.3.%03g 3 | xargs wget cd .. cat patches/7.3.* | p…

VMのディスク容量増やす。というかLVM。

概要 VMのディスク容量増やしたい。 今回は、仮想ディスクをもう一つ追加して論理ボリュームを拡張させてみる。 qenu-imt resizeとかでもいいはず。 LVMとは 物理ボリュームを、ボリュームグループに複数追加。 論理ボリュームは、ボリュームグループから好…

◯◯Managerクラス

[引用] http://www.radiumsoftware.com/0603.html ふとコードベースを見回してみると,「なんとか Manager クラス」がそこら中に溢れていることに気付く。例えば ScreenManager, AnimationManager, EntityManager, TextureManager, 等々……。 "Manager" とい…

Fluentdまとめ

Fluentdとは? ログを収集・集約するruby製のミドルウェアです。いままではrsyncやscpでログを全サーバーから回収したりしてたと思いますが、fluentdを使えば便利に色んな方法でログを集めることができます。 仕組み Fluentdは、Input・Buffere・Outputという…

fuelphpでプロファイルを便利にする

fuelphpは、php-quick-profilerがデフォルトで使える。 内部の処理速度や、SQL(explainも)、使用メモリ量など見れる。 基本はconfigを変えないといけないけど、ちょっとprofiler見たい場合でもいちいちconfig変えないといけない。 なので、GETから判断するよ…

うるう秒とかどうせ関係な・・・えっ

サーバーのCPUのグラフが。 見事に7/1から急上昇してた・・・。 MySQLがCPU使用率150%とかではりついてる。 これくらいじゃ監視ツールが検知しないから さくらVPSからメールがくるまで気がつかなかった・・・。 さくらからは、対策方法が送られてきて date `…

有名フレームワークのCSRF対策方法を調べたまとめ

ZendFramework 流れ 表示時 : token生成→hiddenセット + セッションにセット 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック token生成方法 ランダム値 + salt + 固定値 + ランダム値 md5( mt_rand(1,1000000) . $this->getSalt() . $…

はてなブログにのりかえた

はてなダイアリーの使いづらさは異常。 はてなブログの広告のウザさは異常。(*´ω`。。。

vimで編集中のファイルをscpできるプラグイン作った

https://github.com/ryoppy/vim-scp-upload開発サーバーにアップしないと確認できない環境で使うとよろし。(´□`。)

mysql-serverを入れようとするとmysql-libsとコンフリクトする件

MySQL-serverをインストールしようとすると、デフォルトで入っているmysql-libsとファイルがコンフリクトしたのでメモ。まず、普通にインストールすると。 sudo yum install mysql-server file /usr/share/mysql/ukrainian/errmsg.sys from install of mysql…