kakts-log

programming について調べたことを整理していきます

Next lexicographical permutation algorithm

Next lexicographical permutation algorithm 文字列 辞書昇順で次の文字列を見つける問題 アルゴリズムの問題で特定の文字列に対して辞書的に次の順番の文字を見つける問題を解いていて 上記のページの考え方が非常に参考になった 辞書降順の場合も応用すれ…

Memory Usage in CockroachDB

www.cockroachlabs.com 今年リリースされた CockroachDBのメモリ管理についての記事 どうやらRDBMSのようにクエリかけるしトランザクション機能もあるのと、 NoSQLのようにスケーラブルで高可用性があるDBとのこと あまりネットに情報がないっぽいので今度じ…

Docker Container Anti Patterns

blog.arungupta.me Dockerあまりいじる機会がないので、休日にいじりつつanti patternの記事もじっくり読んで学ぼうと思う

Chrome Experiments for Virtual Reality

vr.chromeexperiments.com ChromeブラウザがVR対応しているらしい 現状CardBoardを使えば上記のページのサンプルがみれるらしい。 コード観た感じだと、レンダリングにThree.jsつかっているっぽい 以外と導入は楽かも

The New Context Conference: Social Impact of Blockchain

www.youtube.com ブロックチェーンのカンファレンス動画 ざっくり見てみたけど面白いので時間あるときにじっくり見る

slackをrssリーダーにする

rssリーダーとしてのslack qiita.com こちらの記事を読んでみた。 今更ながら、slackチャンネルにrssを登録できることを知らなかった。 個人用にメモなどで使っているslackアカウントで気になるブログのrss登録してrssリーダーにするとかなり良さそう slack …

GraphQLを使ってみた

最近話題になっているGraphQLについて RESTful web api界隈で話題になっている、GraphQLが結構気になっています。 先日のnode学園#23でもGraphQLの話が上がっていて、RESTfulって運用上結構辛いところもあるよね という文脈からGraphQLを推している 発表もあ…

macで npm install時にEACCESSエラーが出る

macでnpm install 時にEACCESSエラーが出る macでnodeやnpmバージョンアップした後、 sudo npm install などでroot権限でインストールしたあとにnpmで以下のエラーが出るようになってしまった npm ERR! Darwin 13.4.0 npm ERR! argv "/usr/local/bin/node" "…

npm v4 v5について

npm v4 v5 について 先日のnode学園でnpm の開発者Forrest Norvellが登壇してnpmのv4 v5について語っていました。 nodejs.connpass.com 発表のスクリプトは以下にまとまっています。 Forrest Norvell曰く、v4はそんなに大きな変更点はなく、v5でdepricatedだ…

yarnについて

yarnとはyarnhttps://yarnpkg.com/ https://code.facebook.com/posts/1840075619545360yarnとは、Facebookのエンジニアを中心に開発された、npmクライアントのこと。npm互換のため、既存のプロジェクトにおいても互換性を気にせずに使うことができます。イン…

herokuインスタンスのタイムゾーンを変更する方法

herokuでインスタンスを立ち上げた場合、インスタンス上で使われているタイムゾーンは、標準時(UTC)がデフォルトで設定されているため、日本時間と比べてタイムゾーンが9時間分ずれている状態となっています。 このタイムゾーンの設定を変更する方法は以下…

hubot-heroku-keepaliveの導入

前回のエントリで、hubotをherokuの無料dynoへデプロイさせ、slackでのbotの運用を始める事ができたのですが、しばらくほっておくとherokuインスタンスが停止している状態になっていました。調べたところ、herokuの無料dynoの仕様が以前と変わっており、以下…

slackとhubotの連携

最近チャットツールとしてslackを使い始めました。業務以外にプライベートでも使っていて、自分のチャンネル上でbotをつかって外部サービスと連携できるようにしたかったので、hubotを導入しました。今回はhubot と herokuを利用したbotの作成方法を解説しま…

lodash forEach

lodash.js forEachでforループのcontinue breakを行う方法配列やオブジェクトの要素をループさせたい時、lodash.jsのforEach(eachでもあり)をつかって処理を書いていて、一般的なfor文で使われるようなループの終了、lodashのドキュメント(https://lodash.c…

schemeでのnilの扱い方

sicpを空き時間をみつけて読み進めていて、ようやく2章目に突入しています。nilもしくはnullを使った際に出るエラーについて気になったのでメモ。scheme処理系(主にgauche)においてコーディングする際、nilを使うと実行時に以下のエラーが出てしまう。;Unbo…

配列 foreachによる文字列連結について

"-"区切りの文字列をUpperCamelCaseにする (js)javascriptにおいて、 "test-upper-camel-case"のように、 ハイフンで区切られている文字列を変形してupperCamelCaseにしようとするとき、以下のような形で、split()をつかって "-"区切りのものを配列にしてか…

OSのプロセス、forkなど

海外ではapueと呼ばれていて、unixプログラミングに関して有名な詳解unixプログラミング第3版をちょくちょく読んでいます。8000円以上してめっちゃ高額ですがかなり勉強になって良い本だと思います。プロセス周りの章を読んでいて、すごく勉強になって…

redisをdaemonizeする

前回エントリより、ec2インスタンス上でredisのインストールが完了して、redis-serverコマンドでredisを立ち上げることが出来ました。redis-serverコマンドで立ち上げるのでなく、常に裏っかわでredisが起動した状態にして、別に作成したwebサーバ用のインス…

amazon ec2インスタンスにおけるredisのmakeが出来ない問題

ec2インスタンスをつくってredis(2.8.17 stable)の環境構築をする際にmakeでエラーが出たのでその対処法をメモ状況プライベートサブネット上にredis用のインスタンスを立ち上げ、NATを介してwgetでredisのソースをダウンロード。その後/usr/local/srcにて解…

voidポインタの特徴

cにおけるvoidポインタは、汎用ポインタと呼ばれ、どのようなデータ型でも指すことが出来る。void *pv;こんな感じで他のintやcharポインタと同様に宣言できる。voidポインタの特徴としては、大きく3つある①charポインタと同じ表現形式とメモリ上の並びを持…

golang Packageまわりの整理

golangいじりはじめました。早速チュートリアルを一通りやっていて、パッケージのインポートについてちゃんと整理したかったので以下のページを軽く和訳しつつまとめます。http://www.golang-book.com/11/index.htm以下和訳PackagesGoは良質なソフトウェアエ…

golangはじめた

golang気になっていたのでチュートリアルみていろいろいじってみた。https://gobyexample.com

/etc/init.d/hoge startとservice hoge startについて

/etc/init.d/hoge start と service hoge start は何が違う?http://blog.cles.jp/item/6767すげー気になってたやつです。

mac OS Xでのopencvのインストール

mac marvericksにてopencv環境を構築したかったのでメモ1: macportsインストールopencvおよび、opencvを使うにあたって必要となるpkgconfig zlibをインストールするのにmacportsを使います。 homebrew使うやり方もあると思うのですが、macportsでのインスト…

atomエディター 表示がうまく反映されない問題

atomエディターでファイルを複数paneで表示させていると、たまにキーボード入力は受け付けるんですが、エディターにその変更が描画されていない問題がよく発生しますそのときにコンソールみるとUncaught RangeError: Maximum call stack size exceeded とで…

Linux kernel linked list implementation (和訳)

node.jsでいろいろコーディングをしているときに、process.nextTickの挙動とかが未だに完全にピンときていない状態で、シングルスレッドとか、プロセスがどうだとかいう話もよく聴いていて、そもそも自分がプロセスとスレッドについてよくわかっていないなと…

linux kernel linked list and process

プロセスについて調べていて、linuxカーネルにおいて各プロセスをどうやって扱っているのかを気になっていて参考になったエントリlinux kernel linked list implementationhttp://sumanadak.blogspot.jp/2006/09/linux-kernel-linked-list.htmllearning abou…

mac OS X において gccのインクルードパスの探し方

C言語でプログラミングする際に、stdio.hとか、いつも使う標準Cライブラリのヘッダーについて気になって調べようとするときに、gccがどこからヘッダファイルをincludeしているかわからない時があります。いろいろ調べてみると、macでも、linuxのディストリビ…

Object.observe adopted by ES7

Understanding Object.observe() method adopted at ES7.This method is useful for data-binding at javascript http://weblog.bocoup.com/javascript-object-observe/

node.js async module

asyncモジュールの以下のメソッドについて使う機会が多かったので、参考記事まとめseriesparallelwaterfallhttp://qiita.com/ishisak@github/items/cee2811a5a131d4ef946http://d.hatena.ne.jp/sheile/20111216/1324045972http://kiri-no-shima.blogspot.jp/…

Is Koa the Future of Node Frameworks?

http://dailyjs.com/2014/01/09/koa/Koaちゃんとつかってみる

nodeでモジュールのソースが読みたいとき

require('http')とか、require('connect')でモジュールをrequireしていて、使っているモジュールのソースが読みたい時、githubでソースを探して読むのも良いのですが、もっと手っ取り早い方法があり、コンソールでREPLを起動して、% nodeconsole.logで対象の…

atom.ioでeditorconfig対応

先日atom.ioのβ版の招待メールが届きました。https://atom.io/さっそくインストールして色々js関連のパッケージを入れて使ってみてます。共同開発でそれぞれことなるエディタを使って開発するチームにはeditorconfigが必須だと思うのですが、atom.ioにももち…

javascript メモ化

関数の複数回呼び出しによって発生する不要な処理を省略するために、前回までの結果をオブジェクトに記憶できるメモ化という最適化の考え方があります。jsのオブジェクトと配列はこのメモ化を行うのに最適です。フィボナッチ数を計算する再帰関数を作ってみ…

understanding node.js

understanding node.jshttp://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb

unobtrusive javascript

unobtrusive javascripthttp://www.w3.org/wiki/The_principles_of_unobtrusive_JavaScriptサイ本にunobtrusive javascript について言及があったので後で読む

perlの正規表現 パターンを読みやすくする方法

perlで正規表現によるパターンマッチングを行う時、ある程度慣れた人でも、複雑な処理になるとどうしても読みにくくなったりすると思います/(....)+d/とか、/-?[0-9]:\.?[0-9]*/ とか、なにいってるのみたいな状態にぼくもなってます。これを読みやすくする…

perl foreachを使う際の注意点

perlで配列の要素全体に対して処理をするときにforeachを使うのはよくあることだと思います。文字列のリストすべてに対して繰り返し処理を行うときはforeach $word (qw/ hoge fuga hello /) { print " This is $word";}とこんなふうに書けば、各要素を繰り返…

python imaging library(PIL) を使ってみる

pythonで画像処理をしたいと考えたときに、python用のopencvライブラリが有名ですが、python imaging library(PIL)というpythonインタプリタでの画像処理を可能にするものがあり、以下のurlから無料でダウンロードして簡単に使うことが出来ますhttp://www.p…

python encodeについて

めっちゃべんきょうになるPythonのUnicodeEncodeErrorを知るhttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

centos yumで Cannot retrieve repository metadata というエラーがでるとき

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a118yumerror.html↑が参考になりました/etc/yum.repos.d/ ディレクトリ以下にyumのレポジトリの設定があって、エラーがでたレポジトリの設定ファイルのenabledがenabled=1になっていたのが原因のようでし…

python 日付の計算

現在時刻における日付や、指定した日付を取得するときは、標準ライブラリであるdatetimeをインポートして使用できる。そして、取得した日付の1日前、1月前など、日付に関する計算を行いたい場合は、 datetime.timedeltaを利用するのが便利です。import dat…

expressでテンプレートエンジンにejsを指定したのに jadeがないって言われるエラーの対処法

node開発において、フレームワークであるexpressを使うと簡単にアプリケーションのスケルトンが作れます今回、express 3.4.7において、テンプレートエンジンにejsを指定して以下のコマンドを入力してnode_express_testという名前のスケルトンを作成しましたe…

node Unhandling 'error' event というエラーがでたときの対処法

node.jsでHTTP通信をするためのサーバーとクライアントを作りましたエコーサーバはlocalhostでport:1337で待ち受けて、クライアントからPOSTでリクエストがきたら処理するようにしていますHTTPエコーサーバhttps://github.com/kcpjunky/node_http/blob/maste…

process.nextTick() まわりのまとめ

nodeをつかってリアルタイムな何かを作りたいと思っていて、久々にコードを書きつつ勉強していました。nodeのイベントループの仕組みを理解するうえでキモになるprocess.nextTick()について、ふんわりとしかわかっていなかったので、いろいろググってみたた…

python 文字列型のjoinメソッド

ある文字列が格納されているリストがあり、その要素をすべて並べて一つの文字列にしたい場合は文字列オブジェクトのメソッドであるjoinメソッドを使うといいtext = ['aaa','bbb','ccc'] str = ''.join(text) print str ### "aaabbbccc"が表示される ここで、…

python 文字列操作

pythonにおける文字列操作についてあるテキストファイルがあるとして、text = """ helloworlddesu"""という文字列があるとするこの文字列を操作することを考える。↑の文字列は、 hello world desu という文字列になるが実際には、改行文字の \nも文字として…

junit org.hamcrest.CoreMatchersについて

junit4でテストケースを作成する際、あるメソッドの戻り値が正常化をテストする際に予想される値と実際の値を比較する必要がある。 その際には予想値 expected実際の値 actualというint型の変数があったとしてテストメソッドの中でassertThat(actual, is(ex…

・マシンにHDDドライブを追加する・VMマシン上に5.0GのHDDドライブを2台追加する /dev/sdb1 /dev/sdc1LV作成後作成、マウント後、LVMスナップショット機能を使って 対象のパスで静止点を作る (今回は/datalvcreate -s -L 200MB -n snap_te…

osX サブモニター2枚で最高のデスクトップ体験を

自宅用のmacbook pro15インチ用に、23インチのサブディスプレイを購入しはや半年。自宅でいろいろ作業をしているともう一枚ディスプレイがあれば良いなという欲求がどんどん出てきてしまい、benq GL2450を購入しました。このbenq GL2450、通常の横長だけで…