Go言語:メソッド定義

メソッドの話 Go言語にはクラスはない。 代わりに、構造体にメソッドを定義することで、同様のことが可能。 構造体以外にも、任意の型に定義することも可能。 他のパッケージの構造体へのメソッド定義は不可。 基本型への直接のメソッド定義は不可。 メソッ…

Go言語:switch

switchの話。 ifステートメントと同じで、条件式にカッコは不要。 ifステートメントと同じで、変数のスコープを持つ。 swtichステートメントの条件式は省略することが可能。 rubyのcase文と同じような書き方が可能。 switch caseには、数値以外に、文字列な…

Go言語:関数(クロージャ)

クロージャな話 Go言語の関数は値として扱える。 Go言語の関数はクロージャとして振る舞う。 変数のスコープもクロージャのそれ。 試してみた クロージャのスコープ スコープは他の言語のそれと同じ。 ** 1 1 1 ** 1 1 1 ** 2 1 2 ** 2 2 4 ** 3 1 3 ** 3 3 …

Go言語:Map

Mapの話 mapの型の指定は、キーと値の型をそれぞれ指定する。 map[キーの型]値の型という形式。 map[string]int みたいな。 作成するには、make関数、もしくは初期化子を使う。 make関数、空の初期化子で作ったmapは、空。 初期化前のmapは、nil nilのmapに…

Go言語:スライス、ループの演習から

演習の内容から(メモ的な) Go言語で面白いと思うこと リモートサーバーのライブラリを簡単にインポートできる。 import "code.google.com/p/go-tour/pic" 関数そのものを引数に渡すことができる。 func main() { pic.Show(Pic) } 渡された側の実装がこちら…

Go言語:for-rangeループ

for-rangeループの話 for-rangeループは、Slice(とかMap)の要素を簡単にループ処理する。 Go1.4から、インデックス/値を変数に代入する文法を省略可能。 Sliceの要素数分だけのループ処理を簡単にかける。 インデックスの値を使わずに値だけを使う場合、…

Go言語:スライス

スライスの話(go-tourは、なぜかArrayをとばしてSliceの話をする) SliceとArrayは異なる。こちらを参照してお勉強。 Go言語のArrayとSliceについて - done is better than perfect あとはこちらのSlideShareを参照する。 Go言語のスライスを理解しよう fro…

Go言語:構造体とポインタ

Go言語:構造体 - sugilogのブログ のエントリーで、ポインタの部分の理解が曖昧だったので、復習。 参照したのは、こちら(M.Hiroi's Home Page / お気楽 Go 言語プログラミング入門)の記事 まずCのポインタのの利点 (1) 「参照呼び (call by reference) …

Go言語:構造体

構造体(Struct)の話 structはフィールドの集まり。 フィールドへは、.(ドット)でアクセスする。 typeステートメントで定義する。 ポインタ演算はないが、ポインタを通した間接的なアクセスは可能。 初期化のための値の指定は、ブレース{}内で指定する。 …

Go言語:ニュートン法を使った演算の練習

練習実装 この問題では、ニュートン法は、 開始点 z を選び、以下の式を繰り返すことによって、 Sqrt(x) を近似します。 最初は、その計算式を10回だけ繰り返し、 x を(1, 2, 3, ...)と様々な値に対する結果がどれだけ正解値に近いかを確認してみてください…

Go言語:条件分岐:if

ifの話 if、else、else ifで条件分岐を書く。 forと同じで、条件式はカッコが不要。 forの条件式の初期化と同じようなことができる。 if ~ else if ~ else内が1つの狭いスコープになっていて、変数はその中でのみ有効。 スコープの外から変数を参照すると、u…

Go言語:繰り返し

Forの話 Go言語の繰り返しは、'for`のみ。 条件の書き方で、rubyでいうところの、whileやloopみたいなことを書ける。 forステートメントの条件式に、カッコは不要 というか、書けない。 繰り返しを抜けるときはbreak パターンA for i := 0; i < 10; i++ { } …

Go言語:定数

定数の話 定数は、constキーワードを使って宣言する。 型の指定は不要だが、:=による代入はできない。 指定できるが、数値定数みたいに扱うために、基本的に行わない? 定数の種類は、character、string、'boolean、numeric` numeric数値定数は、指定がない…

Go言語:変数

変数の話 varステートメントで変数を宣言する。 変数名 型の形で宣言する。 カンマで区切って羅列すると、複数の変数を宣言できる。 varステートメントで初期化することもできる。 初期化子を与えた場合は、型の指定が不要。 変数の型が、初期化子の型になる…

Go言語:関数

関数の話 関数は、 0個以上の引数をとる。 同じ型の引数の場合は、型の指定をまとめられる。 変数の宣言と同じ。 0個以上の返り値を返す。 返り値がある場合には、返り値の型を指定する、とも言える。 Javaなどでいうところのvoidの場合は、返り値の型の指定…

Go言語:エクスポートされる名前

エクスポートされる名前の話 インポートステートメントで指定したパッケージについて エクスポートされる名前(関数名など)は、エクスポートされるパッケージ側で決まる。 名前の最初が大文字で始まる場合、エクスポートされる。 ためしに パッケージ:エク…

Go言語:パッケージのalias

importするパッケージのalias(っぽいやつ)。 import時に別名(alias)を指定することができる。 正確にはaliasではない。 もともとつけられるはずの名前(別名を使わなければ使えたはずの名前)は使えない。 パッケージ:alias ためしに、mypackageでアク…

Go言語:自作パッケージ

自作パッケージの作成と実行 ディレクトリの構造に従う。 環境変数を指定する。 つくってみた 自作パッケージ:main 自作パッケージ:mypackage1 自作パッケージ:mypackage2 自作パッケージのディレクトリ構造 $GOPATH/src以下に自作パッケージを作成する。…

Go言語:パッケージ

パッケージについての話 Goのプログラムはパッケージで構成されている。 プログラムの処理は、mainパッケージ内で始まる。 mainプログラムで最初にcallされるのは、main関数。 他のパッケージの実装は、importで取り込む。 importで指定したパスの最後の要素…

Go言語の学習

しばらく、Go言語を学習していきます。 間違った内容があったら、ごめんなさい とりあえずは、プログラミング言語Goツアー ( Go言語基礎文法最速マスター )で勉強します。 おすすめのGo言語の学習のための書籍があったら、ぜひ教えてください。きっと買いま…

ActiveRecordHandlerSocketなんていうgemを作っています。

業務的に必要に迫られて、memcachedとかRedisとかいろいろ触ってたんですが、HandlerSocketに行き着きました。 んで、せっかくActiveRecordのRDBをMySQL使ってて、HandlerSocketも使うんなら、うまくActiveRecord的な感じでHandlerSocketを使えたらいいよね…

VMware Fusion4以降 のポートフォワーディングまわり のまとめ

結構昔に書いたブログから自分の中で情報をアップデートできたので、まとめる。 説明内容にインフラ的に正しくない説明が混ざるかもしれないが、ご容赦をm( )m 説明は、ホスト:Mac、仮想マシン:Linux、の前提。 at your own risk でお願いします。 2014/04…

エラー処理の方法論

以前自分で実装していたときにいろいろやっていたので、まとめておく。 module Hoge class HogeError < StandardError end def self.raise_with_inherit some_process "hack" rescue ArgumentError => e error = HogeError.new e.message error.set_backtrac…

MacでFirefoxの過去バージョンを使う

以前のエントリーからの続きで、MacでFirefoxの過去バージョンを使えるように設定する。 - http://sugilog.hatenablog.com/entry/20120918/1347937065 用途は開発中のウェブアプリの動作テスト用。 メインで使っている新しいバージョンのFirefoxとは、疎にな…

ローカルマシンでのドメインまわりの検証のための設定色々

基本、自分メモです。実際に利用される場合は、AtYourOwnRiskでお願いします。 やりたいこと ドメインを偽装して、自分の開発環境にアクセスする。 他の人に迷惑かけたいのでなく、あくまで検証用。検証が終わったらすぐに設定を戻したりする。 自分の場合で…

JavaScript と iframe で注意点

メインのHTML(親frame)の中に子のiframeをつくるとき、その2つのframeの操作について ぶっちゃけ、そんな都合のいい話はない、というお話。 SameOriginPolicy (同一ドメインポリシー) 操作しようとする2つのwindowやframeのoriginが違う時のポリシー。 or…

modern.IEにのっかってみる(ievmsから乗り換え計画)

IEのデバッグ環境 ウェブ向けの開発をしていてボトルネックがIE環境でのテスト。 バッサリとサポート外してみるとかできないし、切っても切れない :( ということで、前はievmsを使ってたんだけど、modern.IEを使うように変えてみた。 ievmsでも書いてるしね…

validates_uniqueness_ofに、enum_columnを使っていないのにenum型なattributeを検証対象としたときに起きる不具合

バグとかじゃなくて、レールにのってなくて、しくじるっていうお話。 対象となるvalidates_uniqueness_ofのソースコード 使っているのがrails2.3.12とちょっと古いですがお許しを。 activerecord-2.3.12/lib/active_record/validations.rb 785 def validates…

railsの脆弱性への対応をパッチで対応する。

作業中ですが、記録のために、、、 自分は、rails2.3.12を使ってますが、rubyが1.8.6から上げられない状況にあるが故に(検証とパフォーマンスの問題)、パッチ対応を選択しました。 railsの脆弱性に関するパッチ対応 内容を読みつつパッチをダウンロード ht…

AmazonSilkのこと

リンク http://techcrunch.com/2012/09/07/amazons-silk-browser-now-tracking-user-behavior-for-new-trending-now-section-wait-what/ http://en.wikipedia.org/wiki/Amazon_Silk http://9to5google.com/2011/09/29/the-secret-to-amazon-silk-browsers-sp…