カテゴリー: 日記

VirtualBox + ubuntu + Go言語 を試してみた

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


DevfestでGo言語のセッションを観るので、少しくらい知識を入れておこうと思い立つ。

公式サイトのThe Go Programming Languageへ行く。英語か…_| ̄|○
心が折れそうになる。取り敢えず日本語でGo言語を試した人などのサイトを巡る。

あることに気づく…これもしかしてWindowsじゃ動かねぇんじゃ…( ;・´ω・`)ゴクリッ
と思ったけれど、
グーグルgolang いよいよwindowsで「こんにちは、世界!!」
などを読むと、どうもWindowsでも
Go言語を動かせるgo-windowsとかいうものがあることがわかった。
 参考:Googleが開発中の新しいプログラミング言語“Go”をWindowsで「go-windows」


早速落として来て上記のページの通りに準備するがコンパイルが通らない(´・ω・`)
hi.go:2: fatal error: can’t find import: fmt
“fmt”がimport出来ない。

この時は8g.exeが何かを理解していなかったが、色々なページのサンプルを見ると6g.exeを
使ってる場合もあるので、そっちで試してみようとする。

……フォルダの何処にもない_| ̄|○
go-windowsではよくわからなかったので、VirtualBoxのubuntuで試すことにする。


VirtualBoxの使い方忘れた…_| ̄|○
最初、ホストOSとのキー切り替えがわからなくて焦る。
ctrl+Altやctrl+gを押したが、微動だにしない。
これはVMWareの切り替えショートカットだった…__○_
正解は右ctrlか。

ubuntuの使い方もかなり忘れてる…___ ○
どうやって須藤さんになるんだっけか…


ubuntuのコマンドなどなんやかんやぐぐってるうちにGo言語ドキュメントを
日本語翻訳したサイトに辿り着く。
プログラミング言語 Go ドキュメント
Google’s Go Guide

Google’s Go GuideのGo言語のインスールを眺める。
環境変数からよくわからない。゚(゚´Д`゚)゚。ブワッ

早速 Go 言語を試してみる!
最初にぐぐった時にヒットしたけど、Macの話だからと良く読まなかったページの内容を眺める。

とりあえず”ディレクトリを作る”をやってみる。 …OK

“環境変数の設定をする”….zshrc (・ω・`≡´・ω・) ドコー
インストールガイドを観てMacと違ってubuntuは.bashrcなのかと気づく。
でも….bashrc (・ω・`≡´・ω・) ドコー

どうやらファイル・ブラウザではデフォルト非表示らしい。
表示させてページの通りに環境変数を追加する。
インストールガイドのenv | grep ^GOで確認する …OK
(環境変数を表示するコマンドをパイプラインでgrepに流して”GO”から始まるやつだけを抽出?)


“リポジトリからの取得”はなんとか出来たが、”Go言語のインストール”が
なんかうまくいかない…(´・ω・`)

 make: *** ターゲット `all’ を make するルールがありません. 中止.

どういうことだヽ(`Д´)ノ

よくわからないのでまた上記のページを眺める。
./make.bashを試してみる …なんか途中でエラーが一つあったけどOKっぽい
ちなみにdarwinがなんとかというエラーだった。進化論(・∀・)?

指定したbinフォルダに6gとか6lがあるのでまあ取り敢えず大丈夫かな?


引き続き上記のページを参考に先に進む。
作業用ディレクトリを作る。 …OK
ファイルを作ってコードを書く …OK
6gを使ってコンパイル …OK
6lを使ってリンク …OK
./6.out …失敗

( ´・ω・)アレ? ああ須藤さんじゃないと駄目なのか…

sudo ./6.out
パスワード入れて……失敗ヽ(`Д´)ノ


./6.out: 2: ����__data__DATA: not found
./6.out: 2: $H�H�?H��P�I: not found
./6.out: 2: cannot open �H�H�tH�: No such file
./6.out: 2: ����
�H__PAGEZERO�__TEXTPP__text__TEXT
@
�__DATA��P__bss__DATA�!0�: not found
�A�u����%�m�[��%�mo�\H����I;w��AH���L$�
$�T*H�D$: not found
./6.out: 2: AH��8�%l: not found
./6.out: 2: cannot open $��: No such file
./6.out: 2: $��AL�: not found
./6.out: 2: cannot open %�et�dH�$�a��$�IK�%�e�jdH��DH�D�5H�DH�D./6.out�O�����t9H�LH�
$�LH�D$: No such file
./6.out: 2: w�pAH�� �PdH�
$�”H��H���H

なんぞこれ(´・ω・`)
ぐぐってみてもこんなエラーにはヒットしない…
なにこれwhy(´・ω・`)?


致し方なく再びインストールガイドを読み直す…。環境変数……

$GOOS, $GOARCH
この2つにはターゲットとなるOSおよびシステムを指定します。
$GOOSには、linux、freebsd、darwin (Mac OS X 10.5 または10.6)、 nacl (Native Client、実装は不完全)のいずれかを指定します。

へーそうなんだぁ(゚σ・・゚)ホジホジ
んーんー、darwin…だと…( ;・´ω・`)ゴクリッ

そういえばインストール時になんかエラー出てたな…
つーか「linux、freebsd、darwin (Mac OS X 10.5 または10.6)」…Σ(゚∀゚;)
Mac
そうだ、参考にしていたページはMacにインストールしてるんだった…_| ̄|○


取り敢えず環境変数を設定し直して最初からやり直すことにした。

$GOARCH, $GOOSの値は、コンパイルする環境ではなくターゲットとなる実行環境を指定します。

という風にも書いてあったのでOSは”GOOS=linux”、CPUアーキテクチャ?は”GOARCH=386″にした。
実機だとamd64系だと思ったのだけれどもVirtualBoxは386系なんじゃね(・∀・)?的に変更してみた。

インストール等やり直し …OK
8gでコンパイル …OK(386系は8g,8l/amd64は6g,6lらしい)
8lでリンク …OK
実行 …キタ━━ヽ( ゚∀゚)ノヽ(゚∀゚ )ノ━━ !!!!!


VirtualBox + ubuntu + Go言語の設定
1. [場所]-[ホームフォルダ]をクリックしてファイル・ブラウザを起動
2. [表示(V)]-[隠しファイルを表示する(H)]をチェック状態にする
3. ユーザーのホームディレクトリに”go”と”bin”フォルダを作成
4. ”.bashrc”ファイルに環境変数を追加

# Go
export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/bin
export PATH=$GOBIN:$PATH

 (上記のページのコメント欄で、”go”フォルダの下に”bin”フォルダを作って
 ”export GOBIN=$GOROOT/bin”でもいいんじゃないかというようなやり取りがあるので、この辺は好きな方で。)

5. [アプリケーション]-[アクセサリ]-[端末]を起動
6. env | grep ^GO (環境変数の設定を確認)
7. sudo apt-get install python-setuptools python-dev
  (python-setuptoolsのインストール)
8. sudo easy_install mercurial (mercurialのインストール)

Mercurial(マーキュリアル)は、クロスプラットフォームの分散型バージョン管理システム。 Pythonで実装されている(Mercurial)

9. hg clone -r release https://go.googlecode.com/hg/ $GOROOT
  (Mercurialのhgコマンドでリポジトリ(ネットワーク上のデータ貯蔵庫?)からソース等をコピー)
10. sudo apt-get install bison gcc libc6-dev ed
  (ビルド用ツールのインストール)
11. cd $GOROOT/src (ソースのあるフォルダに移動)
12. sudo ./make.bash (Go言語環境をビルド)


といった感じで環境構築が出来ると思う…思う…多分…|∀・)ウチデハウゴイタ
上記のGoogle’s Go Guideのインストールガイドと「早速 Go 言語を試してみる!」
マージして多少、勘に頼った内容なので、詳細についてそちらを参照してください。


この後、echoプログラムまでやってGo言語本体についての勉強は一旦終了。

かねてからGo言語でずっと気になっていた点についての調査にかかる。
この先もきっとJavaをメインに勉強していくのでGo言語自体には余り興味がない。
その性能とか普及、未来などはどうでもいい。
言語の流行なんて流行らそうとして出来るものでもないし、それ自体の性能の
良くても、必ずしも覇権を握るとは限らない。だからその辺についてはどうでもいい。

ただどうしても、はっきりさせておきたいことが一つだけ、Go言語にはあった。
それは何か?


The Go Programming Languageの左上に…

2017/09/20追記 今は右上にあり、違う絵になっている。

こいつ、一体何者だよ…( ;・´ω・`)ゴクリッ
デッサンの狂った熊に見えなくもないが…


取り敢えずぐぐってみた。

Goの公式マスコットGordonは、図のようなゴウファ(gopher, 地上生活をするリス)である。
Googleの新しいプログラミング言語Go == Python(開発が速い) + C++(実行速度が速い)

馬鹿な…リス…だと…( ;・´ω・`)ゴクリッ
いや、ちょっと待てそんなことよりも、gopherって普通にある単語なのかΣ(゚∀゚;)
ずっとGopherプロトコルの為に作られた造語だと思っていたよ…_| ̄|○

Gopherというのはミネソタ州など北米に住む動物の名前 [注4]
で、ミネソタ州立大学のマスコットでもありますよね。しかし、日
本でGopherのことを動物だと分かる人はほとんどおらず、インター
ネットで用いられるサービス(プロトコル)としか認識されていま
せん。(第39回 UNIXを用いたシステム構築から誕生したGopher)

俺のことか…_| ̄|○

まあそれはさておき、

[注4] 動物の名前
「ほりねずみ」、または「ほりりす」。地下で生活する北米産の動
物で、ほお袋を持っている。なお、ミネソタ州には“Gopher State”
という愛称がある。(同上)

姿がモグラに似たげっ歯類の総称。ゴファーとは、フランス語のゴーフルgaufre(ミツバチの巣)を語源とする。アメリカ合衆国では、ホリネズミだけではなく一部のジリスやアナホリガメなども同属ではないが、土にハチの巣状の穴をほることからゴファーgopherとよばれる。(ホリネズミ(掘鼠) Pocket Gopher)

ということらしい。地下に棲む、我らmole達の敵対者か( ・´ω・`) イズレシユウヲケッシヨウゾ

まあなんというか…

リスにもネズミにも見えないよヽ(`Д´)ノ


といった感じでGo言語特别集中学習の一日目の幕は閉じた(・∀・)

DevFest 漢字変換サーバ&パッチワーク

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


http://molehill.mole-kingdom.com/opencms/export/sites/default/programming/DevQuiz/に漢字変換サーバとパッチワークのコードを追加した。

一応正解はしているけれども、本当に正しいものかどうかはよくわからない(w
転載の為に整形しているのでその際に更におかしくなっている可能性も否定できない(・∀・)
特にパッチワークの方は元々焦って書いたものなので凄く怪しい。エラー制御してないし。

とはいえせっかく時間を割いて書いたコードをそのまま死蔵してもなんなんので
コードと言う名の恥を晒す(*´・ω・) 方向の違うケチなんだなぁ

初心者の人にはこんなもんでも解けたよということを示すと同時に中級者以上には
リファクタリングやデバッグの教材として提供しよう(w

DevFest 当選した(・∀・)

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


DevFest当選メールが来た∩(・∀・)∩ばんじゃーいばんじゃーい

ウォーミングアップ : 1.0 点
HTTP ステータスコード : 2.0 点
Google Code Discussion Group : 3.0 点
暗号通信 : 4.0 点
パッチワーク : 5.0 点
漢字変換サーバ : 7.0 点
の合計22点だったけど参加の基準点をクリアしたらしい。

締め切り後、色々とぐぐってみると、上の3つは勿論、下の3つも余裕で
解いてる人達が結構居たので、「Issue Tracker」「Hackathon」
「Android アプリケーション」「Chrome Extensions」で得点できない自分は駄目か(´・ω・`)
と思っていたけれどなんか当たったみたいだ。


ドレスコードはどうだろう…スーツなのかなぁ…
FAQには”普段の服装でかまいません。お気軽にご参加ください。”とあるけれど、
さすがに全裸はまずいだろ…(*´・ω・) ジーンズでいいのかなぁスラックスかなぁ…

またネームプレート用に名刺が必要だとしてもデブサミ用に自動販売機で印刷した
名前とアドレスだけのがあるから、それは流用しよう。

同時通訳はないということだから必然的に日本人のセッションに行くとして、14:00は
「プログラミング言語 Go」かな。「HTML5」はデブサミで少し見たし…

“ランチ休憩の時間はございませんが、セッション会場での飲食は可能です。
各自でご準備をお願いします。”……コンビニおにぎりとかでいいかな。

“今回のイベントでは高価な物品を配布する予定はありません。”
古いAndoroid端末でもくれたらソフトウェア開発するのに(´・ω・`)
amazonみたいにステッカーとか配らないのかな。

twitterで実況したりしないのでパソコンは持っていかなくてもいいか。
通勤時間帯に電車に乗るのは何年振りだろうか( ・´ω・`)オナカイタクナッタラドウシヨウ…

折角いくのだからGoかAndroidかwaveを勉強していこうかなぁ。
全部軽くなめる程度でもいいか(´・ω・`)

DevFest パッチワーク

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


なんとか間に合った。・゚・(ノД`)・゚・。
不毛地帯の実況を捨ててまで頑張った甲斐があった。

twitterのタイムラインやぐぐってみるとアルゴリズムがいいと4秒くらいで終わるらしい。
うちは計測してけれど10秒かそこらかかってる気がする(´・ω・`)

1.textAreaにデータを貼っつける。
2.ボタンを押すと解析開始。
3.BufferdReaderで読み込んでreadlineで二次元配列のcell[][]に格納。
4.再帰ルーチンでチェック。この時にcellにGroupNumberを格納。
5.for文でcellを総チェックして各GroupNumberの所属cell数をカウント。
一番多い数を決定。一番多い数と同数のGroupNumberをarraylistに追加。
6.arraylist内に存在するGroupNumberをもつcell数をカウントし、行ごとに出す。

ていう感じ。2までは解析と関係ないからほおっておくとして、遅いのはfor文で
何回もぶん回してるからかな?

まあ正解したし、再帰ルーチンの書き方もなんとなく思い出したのでこれで良しとしよう(・∀・)
でもこれ働いていたら、とてもじゃないけど時間的にも脳の可処分能力的にも解けなかったろうなぁ。
多分この成績だと当選はなさそうだけども、なんか色々と頭使って面白かった。
こういう試みが今後もあったら面白いだろうなぁ(・∀・)

さてMarubatsuゲームの続きをせねば。