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

kakts-log

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

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、通常の横長だけで…

python クラスとimportについて

pythonでのコーディングを勉強し始めた当初、モジュールのimport関連でエラーが出ていろいろつまづいたことがあったので、それを整理するためにまとめてみる。ある親クラスがあり、それを継承する子クラスを実装しようとする親クラスを定義したモジュールが …

apache ログ アクセス順 回数出力

cat access_log | awk '{ print $1 }' | uniq -c | sort -r | awk '{print $2,$1}'10.160.32.24 310.160.32.51 18awk初めて使った

python lambda式とdef

pythonでコーディングする上である処理をまとめてdefで関数の定義をして、利用するときはその関数名を呼び出して利用する。 defによる関数定義 def sum(x, y, z): return x+y+z 言うまでもなくただ3つの引数を+演算子により足したものを戻り値として返すメ…

python 拡張代入について

pythonで数値または文字列を扱った演算を行うときに、普通に=で代入する以外に、拡張代入を用いることが出来る。 拡張代入とは、他の言語にもみられるように、数値を足す時に += や -=を用いて変数に値を代入することである。 例えば、数値型の変数に、ある…

python python変数の型チェックについて

pythonの変数の型のチェックについてまとめてみる 配列を作った時の型の確認 type関数を使うことで引数のオブジェクトの型をチェックできるlist = [1,2,3,4]type(list)type(list[0]) リスト型とint型がかえってくる さらに、type()関数自体も、オブジェクト…

pythonの勉強をはじめた

最近、javaとjsだけじゃなくて、ほかの言語もちゃんと勉強したい欲が出てきたので、pythonの勉強をはじめた。 自然言語処理系の本を読んでいて、文字列処理の際に便利だという記述が多かったので。どんなフレームワークがあるかとか、まだわかってないので、…

java Remove Control Flag

以下の3つのメソッドは、与えられたint型の配列から、目的の数字があるかどうかを判定するメソッドであり、処理自体は変わらないが、1から3に行くにつれてリファクタリングされている。 あるものを判定するためのメソッドでは、目的の数字があるかどうかの…

javascript 数値と文字列の型 演算

var x = 10;var y = '10';var z = 10;var t = sum(2,3,4);var p = x + y + z;print(t);print(p);function sum(x,y,z) { return x+y+z;}結果 t = 9p = 101010 となるのはなぜ? 疑問なのは、数値x,yと文字列10の変数zを関数sumの中に入れた場合に、x+y+zの演…

シンボリック定数について 当たり前だけど忘れがちなこと

もし、あるコードの中で2つの定数x,yが必要だとするxはある物の個数で、yはxの2倍の値を保持するものと考えたときに、もしxが100だとするとpublic static final int X = 100;public static final int Y = 200;と安易に宣言するのはリスキーである。 もし実…

java static イニシャライザについて

参考Javaで定数クラスを使用するときに、知っておくと嬉しいかもしれない小技http://kanouk.typepad.jp/kanolog/2008/05/java-b5e4.htmlリファクタリングに関する本を読んでいて、マジックナンバーをシンボリック定数に置き換えるという基本中の基本を学んで…