set -u : 未定義の変数を使用しようとしたらエラーにする

typoなんてのは普段よくあることで、そいつに無駄な時間をとられてしまうことが日常茶飯事だ。 #!/usr/bin/env bash MY_NAME="Miku" MY_BIRTHDAY="10/19" MY_HOBBY="Dance" echo $MY_NAME echo $MY_BIRTDAY echo $MY_HOBBY 上記の出力結果はどうなるだろうか…

Many-to-many関係を使う

今回は GORM で Many-to-many 関係を扱う。複数のユーザと複数の楽曲が用意されていて、各ユーザのお気に入りの楽曲を格納できるようにする。E-R図にするとこんな感じ。とりあえずコードはこんな感じ。 package main import ( "fmt" _ "github.com/go-sql-dr…

Association で任意の外部キー名を使う

初詣行ってきました 大吉引いて幸先良いです。 あと、巫女さんが可愛かったです。 本題 GORM の Association 関連で、任意の外部キー名を使用しようとしてハマったのでメモ。 標準の外部キー名を使う方法 その前に、まずは Convention に従った外部キー名を…

Type Switch

go

interface{}型で宣言された変数の値の具体的な型により処理を分岐させたい、というケースが考えられる。Type Switch という仕組みでそれを実現できる。switch - case 文を使って、型ごとの処理内容を case 内に記述する。公式ドキュメントの Effective Go に…

あけましておめでとうございます

今年はちゃんと記事書いていきたいと思います。#何年か前にも同じこと言った気がする← 一応、今年は目標を2つ立てました。 1つは割と近々で実現したいこと。もう一つは2017年になんとか実現したいこと。 頑張るよー。

GORMを使ってみた

go

goで使えるO/R Mapperは結構いろいろあるみたいで、とりあえず今日1日 gorpとGORMを使ってみた。gorp GitHub - go-gorp/gorp: Go Relational Persistence - an ORM-ish library for GoGORM Getting Started with GORM · GORM Guidegorpはシンプルに使える、G…

goでmysqlを使うメモ

go

久しぶりだー 前回の日記が2014年11月3日…だいぶ放置してたなorz goでmysqlを使ってみる mysqlドライバをインストール database/sql の mysqlドライバとして go-sql-mysql というのがある。まずはこれを go get でインストールする。 github.com go get gith…

nnetを使ってコード解析作ってみた

R

以前このブログにも書いた通り、今年の夏に Coursera の Machine Learning の講座を受けた。これがきっかけで機械学習にすごく興味を持ち、何か自分でも面白いものを作ってやるぜって意気込んでた。オイラ腰が重くてなかなか手をつけられないでいたが、今回…

rgl の plot3d で3Dグラフを描く

R

困った 眠れん。 仕方ないのでブログ書く← rgl とは rgl rgl: 3D visualization device system (OpenGL) R上で、OpenGLを使って高度な3Dグラフを描くためのパッケージ。インタラクティブな操作も可能で、3D表示させたものをマウスでぐりぐり回転できる。なか…

Coursera の Machine Learning

Coursera というオンライン学習サイトに Machine Learning という講座がある。6月から受講開始して約3ヶ月。ようやくすべて終えることができた。受けて本当に良かったと思っているので、紹介したいと思う。 この講座を知ったのは、たしか5月くらいだったと思…

tuneR を使ったMFCCの計算

R

ほぼ自分用の備忘録←tuneR で MFCC を求める手順。バージョンは 1.2.1。 library(tuneR) # wavファイル読み込み # mp3ファイルの場合は readMP3()を使えばよい wobj <- readWave(filename) # melfcc() は現行では mono 音声しか扱えないので必要に応じて変換…

Zero-crossing rate (ZCR) を使った音楽解析

音声認識や音楽解析によく使われる指標として Zero-crossing rate (ZCR) というのがあるそうだ。これは、音声の波形を描いたとき、波が中央より上(正)から中央より下(負)に、またはその逆に変化する頻度を数えて、その頻度により音声の特徴を表すというもの…

CPAN Author になった話

先日、ようやく CPAN Author になった。 Data::HandyGen::mysql という、テストデータを効率よく生成するためのモジュールを作って、今年の2月に公開した。はじめて CPAN モジュールを公開するという体験は実にドキドキものである。少年の心が一瞬、蘇った気…

機能追加

機能「追加」は決して機能「改良」ではない。新しい機能が使えるようになるという意味で「改良」だが、システムの複雑度が増すという意味で「改悪」。開発運用のコストも上がるし、ユーザからしても、機能全体を理解するのが難しくなる。逆に、初期に導入し…

F10で右クリックメニューが表示されないようにする

Fedora17上で gnome-terminal を使っていたら、F10キーで右クリックメニューが表示されてしまう。 vim のキーバインドで F10 を使っているのでこれは困った。一応、メニューの「編集」→「キーボードショートカット...」で F10 を無効にする設定は存在する。…

libxml2 で XMLTextReader を使ってみる

XML文書をパースする機能が必要になったので、libxml2 を使ってみた。 今までオイラは XML のパースは軽量言語(Perl、PHPなど)でしかやったことがなかった。libxml2をそのまんま使うとものすごく面倒なんだろうなぁと若干恐れおののいていたのだが、いざ使っ…

あけましておめでとうございます

更新が1ヶ月に1回とか悲惨な事になってますが、今年はもうちょっと頑張ります。(希望)

[GTK+] GtkTreeView を使う

GtkTreeView とは? http://library.gnome.org/devel/gtk/stable/GtkTreeView.html ツリー構造やリストを表示するためのウィジェット。 GtkTreeView というからにはツリー構造、つまり階層を持つデータ構造を表示するのが唯一の用途のようにも見える。しかし…

Django クイックスタートの巻

Python 上で動く Web フレームワーク、Django の超クイックスタート。簡素化しまくってるのでご容赦を。 またプログラム中、コメント行はすべて省略。 環境は以下のとおり。Python と Django はすでにインストールされているものとする。 Python 2.6.2 Djang…

Social Games that Sway Behavior - Technology Review 最近ソーシャルゲームがあちこちで話題になっているが、そのソーシャルゲームを現実世界と結びつけようという試みが始まっているらしい。 この記事で最初に紹介されている HealthSeeker は、Facebook上…

カレンダーを使う

Gtk+ではカレンダーウィジェットというのが用意されているので、今回はこれを使ってみる。カレンダー上の日付を選択すると、その日付をテキストエリアに表示するという簡単なアプリケーションを作ってみた。(ソースは以下の場所に置いてあります) http://git…

メニューバーを使用する

なんか久しぶりすぎるが気にしない。w 今回はメニューの追加について。 メニューの構造は「ファイル」→「新規作成」「開く」など、階層構造になっていることが多い。1つの階層の構造は以下のようなクラスを使った構造で表される。 GtkMenuShell (メニューバ…

[GTK+] カスタムウィジェットの作り方

ということで自前のウィジェット作成してみた。「警告つきパスワード入力欄ウィジェット」とでも呼べばいいか。ウェブ上にある会員制サイトに登録をしようとすると、たいていパスワードの登録を求められる。サイトによっては、パスワード欄に入力されたパス…

github はじめました

なんか今更な感じだけど。 http://github.com/egawata使い方これで良いのかしら… なんかうっかりヘンなファイルが上がってるのを見つけたら教えてくださいw

[GTK+] 描画する色を指定する

線を描画するの続き。 前回のプログラムでは、線の色として、そのウィジェットの前景色として指定されていたものをそのまま使っていた。しかし、描画する色を明示的に指定したい場面も多々ある。そこで今回は描画色を指定する方法について。点を打つときに使…

パフォーマンスを最大化するために必要なこと

Time Power を引き続き読んでいる。最大のパフォーマンスを得るための12個の実証済みの原則 (Twelve Proven Principles for Peak Performance) という項目があった。とりあえず気になったものをば。 時間を上手く管理するため、自分を「工場」に見立てる 工…

[GTK+] 線を描画する (解説編)

さて昨日の線描画プログラムの解説をば。長いよ。w 28 GtkWidget *window, *area; ... 38 area = gtk_drawing_area_new(); GtkDrawingArea ウィジェットを生成する。 GtkDrawingArea というのは GtkWidget の派生オブジェクトなのだが、他の派生オブジェク…

[GTK+] 線を描画する

とりあえずウィンドウ内に線を引いてみた。 時間がないので説明は明日以降で(ぉぃ 1 #include <gtk/gtk.h> 2 3 static void destroy(GtkWidget *window, gpointer data) 4 { 5 gtk_main_quit(); 6 } 7 8 void draw_point(GtkWidget *area, gint x, gint y) 9 { 10 gdk_d</gtk/gtk.h>…

スキルアップをより効果的に行うための6つの方法

Time Power: A Proven System for Getting More Done in Less Time Than You Ever Thought Possible という本をSafariで読んでる。この中で、効果と効率性を高めるために自己をプログラムする方法というのがいくつか紹介されていた。 注:以下は、同書で紹介…

GTK+ でプログラミング:基本形

とりあえず、GTK+ で何かを作るときに基本形となるものをば。これを拡張していけば大抵のものは作れるかと。wちなみに、GTK+ の関数仕様については、DevHelp というマニュアルを使って調べるのが便利。メニュー Application → Programming の中に入っている…

Test::Continuous

継続的テスト(Continuous Testing)というのに興味を引かれて使ってみる。上記の紹介ページによると、Continuous Testing を取り入れることによって、締め切りまでに作業完了できる確率が3倍になるとのこと。なんて素敵なんだ!w で、これを Perl で実現した…

Dictionaries

定義 波カッコ { } を使う。 >>> x = {1: "one", 2: "two"} 値の取得 配列と同様。 >>> x[1] 'one' >>> x[2] 'two' 値のセット keyを指定して値をセットすることができる。 >>> x["first"] = "one" >>> x {1: 'one', 2: 'two', 'first': 'one'} 値の取得(get…

ぱいそんー

The Quick Python Book, Second Edition を読んでる。 自分用の覚え書き。Ch.3 The Quick Python Overview 3.2 Built-in data types

単語とか

aghast 仰天する admonition 訓戒 stagger よろめく、ふらつく faculty 才能、機能、教授会 rabid 熱烈な chiding 叱責 poignant 痛烈な disquieting 心を乱す cast in iron がんじがらめの(?) to a large extent 大部分は weakling 弱虫 flee 逃げる(pp. fl…

未来は予測できないが、創ることはできる。

A Class with Drucker: The Lost Lessons of the World's Greatest Management Teacher を読んで。Ch.11 You Can't Predict the Future, But You Can Create It.将来に向けての計画を立てることは重要だ。しかし難しいのは、将来、自分の周りの状況がどう変…

文字列

文字列は str オブジェクトという形で扱われる。 delimiting strings single quotation(') double quotation(") triple single quotation(''') triple double quotation(""") 実際の改行文字(エスケープ文字の \n ではなく)を含むことができる """実際の 改…

Tuples

List とほぼ同様。ただし、生成時に値を代入したら、それ以降の値の変更はできない。 List と同様、どんな型の要素も含むことができる。list や tuple も含むことができる。また、値を操作しない関数やメソッドは list 同様に使用できる。 生成 角カッコ [ ]…

Lists

代入 x = ['first', 'second', 'third', 'fourth'] 値の参照 x[0] → 'first' x[2] → 'third' x[-1] → 'fourth' x[1:2] → ['second'] x[1:3] → ['second', 'third'] x[1:] → ['second', 'third', 'fourth'] x[-2:-1] → ['third'] index に負の値を指定すると…

演算用の関数

built-in functions >>> round(3.49) → 3 library module functions >>> import math >>> math.ceil(3.49) → 4 math モジュールは、複素数以外の数の演算に使用できる。複素数演算のための cmath というのもある。

Numbers

以下の4種類がある。 Integers (1, -3) Floats (3.0, 31e12) Complex numbers (3+2j, 4.2+6.3j) Booleans (True, False) 演算で使用された時は、True=1, False=0 として振る舞う。たとえば True * 2 = 2。

File objects

ファイルアクセスは、File object を通じて行う。 ファイルオブジェクトは open 関数によって取得できる。 >>> f = open("test.txt", "r") 第2引数で open モードを指定する。 "r" : 読み取り "w" : 書き込み(上書き) "a" : 追記 その他、以下の文字を付加し…

Sets

List などと同様。ただし、Setにおいては順番は無視され、ある値が集合の中に含まれているか否かが重要となる。 定義をするときは、set([ ... ]) のようにする。 >>> x = set([1, 2, 4, 2, 6, 1]) >>> x set([1, 2, 4, 6]) >>> 1 in x True >>> 5 in x False

Process Explorer でプロセス管理

前回の続き。 @ywatase さんから Process Explorer というのを紹介していただいた。確かにこれを使うとプロセスの優先度を変更することができるのだが、それ以上に便利なツールだと気づいたので紹介。Process Explorer あちこちのサイトで「タスクマネージャ…

優先度を変えてプログラムを起動する方法

オイラがウチで使ってる Windows マシンは、かれこれ7年くらい前に買ったもの。最近は重いサイトをブラウザで表示させるだけで CPU 使用率が 100% になったりして、そろそろ買い替え時かなぁという気はしている。 というか、10回に1回起動しないとか、そろそ…

Perlデバッガのカスタマイズ

Perlのデバッガを使っていると、プロンプトの部分も含めて全部同じ色で出力されてなんか見づらい。 せめてプロンプトの部分だけでも色を変えられたら見やすいだろうなぁ、というのが、カスタマイズしようと思ったきっかけ。 ■カスタマイズ可能なオプションも…

今日の読書 2010-01-25

Apprenticeship Patterns, 1st Edition引き続きChap.2 Emptying the cup を読む。知らないことがあったら、それを隠そうとせず、自分がそれについて無知であることをさらけ出してしまったほうがよい。 自分がこれから関わろうとしている仕事について、自分に…

今日の読書 2010-01-14

今日はなんか一日中眠くてほとんど本読まなかった。 唯一少しだけ読んだの。 Apprenticeship Patterns, 1st EditionChapter 2. Emptying the Cup の最初のほうだけw 何かを学ぶなら、まず自分の持ってる器を空にしてからにせよ。結構有名な話だ。 それなり…

今日の読書 2010-01-13

といっても、O'ReillyのSafariでオンラインで本読んでるんだけど。 ・The Art of Multiprocessor Programming 今日から読み始める。Chap.1.2章まで。まだサワリの部分。 マルチコアCPUが珍しくなくなってきた今、プログラマは必然的にこういう環境でのプログ…

目標の具体化の程度は?

『ミンスキー博士の脳の探検』って本読んでる。その中で「差分エンジン」なるものの紹介があった。これは、目標を立てそれを達成しようとするプロセスを、コンピュータのプログラム的に表現するとどうなるか、というのを説明している。・「現在の状況」と、…