めまいプログラマーの徒然

小脳出血でめまいをおこしている プログラマの忘備録

Go 言語 配列-1

 

Go 言語での配列の定義を見てみます。

単純な配列をはじめ、Slice, map, chanel  などがあります。

最初に単純な配列から調べてみました。

01: package main
02: 
03: import (
04: 	"fmt"
05: )
06: 
07: /******************************
08: **	定数定義
09: *******************************/
10: const (
11: 	Arry_Max = 10
12: )
13: 
14: /******************************
15: **	変数定義( & 配列定義 )
16: *******************************/
17: var (
18: 	i int
19: 	a [Arry_Max]int
20: )
21: 
22: /******************************
23: **	処理 ( Program )
24: *******************************/
25: func main() {
26: 	for i = Arry_Max - 1; i >= 0; i-- {
27: 		a[i] = i
28: 	}
29: 	for i = 0; i < Arry_Max; i++ {
30: 		fmt.Println("Hello, xs 2 -", a[i])
31: 	}
32: }

 

配列へのデータ設定、配列からのデータ表示などが出来ました。こんな単純なプログラムなら簡単ですが、大きなプログラムだと分割コンパイルが必要になりますがどうすれがいいのかな!? (おいおい調べてゆきます。)

Go 言語、開発環境のインストール

順番は逆になりましたが、Go 言語の開発環境をインストールします。

 

 Go言語コンパイラとエディターで開発は可能ですが、チョット楽をしたいので色々とインストールします。
 しかし、重たくなるのを避けるため、エディターには Visual Studio Code (マイクロソフト製)を使用し、そのほかに便利なツールを Git より取得してインストールします。すべて無料なのでダウンロードできます。

1.Visual Studio Code

 ここからより自分のマシーンに対応したソフトをダウンロードします。
今回は Windows 版をインストールしましたが、macLinux 用がそろぞれ用意されています。私は VSCodeSetup-1.12.2.exe をダウンロードしました。

2.Git
Git にある Go 用のツールを使用しますのでダウンロードするため、Git を準備します。Windows 用の Git-2.13.0-64-bit.exe をダウンロードしました。


3.Go 言語
Go 言語のコンパイラー(これが無くては始まりません。)ここから
Windows 用の go1.8.3.windows-amd64.msi をダウンロードしました。これだと後はクリックするだけでインストール可能です。

環境変数
Windows 用の環境変数は自動で設定されます。
 GOROOT C:\Go\
PATH にも以下が追加されています。
 C:\Go\bin


また、コマンドプロンプトで go env を打ち込むと現在設定されてる。環境変数が表示されます。
GOPATH も設定されています。

set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\(*****)\go (ユーザー名)
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2

参考 URL
Visual Studio Code][Golang][Windows] VSCodeでGoの開発環境を作成する方法まとめ

Go 言語 忘れずに 変数-1

package main

import "fmt"

var (
	j   int8
	str string
)

func main() {
	str = "初めての Go 言語 2 !!"
	for j = 1; j < 10; j++ {
		fmt.Println(j, str)
	}
}

Go 言語を始めたので忘れないうちに!!

ここで変数は j  と str の2つのみである。

注意:j は半角の小文字である。(全角だと目立たずエラーとなる。)

変数の型は

int8, int16, int32, int64, uint8, uint16, uint32, uint64 や

float64, float32, string 等がある。データの大きさ(範囲)は事前に分かっている場合がほとんどなので出来るだけその範囲内に収まる変数型を使用してみる。

パソコン キーボード (Ctrl)

 Windows 10 をクリーンインストールして動いたので設定を行うが、まず最初に行ったのはキーボードの設定。エディター で Control キーをよく使うので(昔は [A] の左隣に [Ctrl] キーがあった様に記憶している。)
 そのためOS(Winodws)入れ替え事に Remapkey.exe のお世話になっている。
レジストリにアクセスするため右クリックして『管理者として実行(A)』で行う必要がある。

 Linux では設定を探し回ることになる。(Ubuntu では諦めた! CentOS 7 ではアプリケーション ⇒ ユーティリティ ⇒ Tweak Tool  ⇒ タイピング ⇒ Ctrl キーの位置 で Ctrl とCaps Lock を入れ替える にチェックを入れれば変更可能)

f:id:xskawabe:20170416112652p:plain

上図のように変更してリブートすれば変わっている。

 このソフトは10年以上使ているが、自分で作成したソフトも10年以上、使ってもらえているだろうか?

Windows 10 クリーンインストール

 Windows 10 は Windows 7 よりアップデートして使用していたが、起動後 10分程度ディスクアクセスが100% となり重たくなっていた。また、ディスク内に古いソフトが残り。削除しても完全にアンインストールは難しい状況だった
 思い立ったが吉日とクリーンインストールしてみた。

 Windows 10 は再インストール時にプロダクトキーは不要らしい。(実際にやってみるまで分からなかった!)

 Windows 10 用の DVD を作成します。以下からMediaCreationTool.exe (17.5MB) をダウンロードして実行します。
https://www.microsoft.com/ja-jp/software-download/windows10

 

 今回は DVD 用をダウンロードして、DVDに書き込むことにした。Window 10 では DVD への書き込みがサポートされているのでダウンロード後、自動でDVD への書き込みプログラムが動作します。このDVDをセットしたままPC を再起動するとWindows 10 のインストールが始まります。
BIOSで起動ドライブを DVD に設定してある)

 Windows は ローカルディスクの C ドライブが起動ドライブなので現状のローカルディスクの中身(パーティション)をすべて削除してインストールするとローカルディスクの先頭に『システムで予約済み』のパーティションが作成され続いて、Cドライブ・パーティションが作成され Windows システムが書き込まれる。

 先頭の『システムで予約済み』は Boot 用なのか、以前(Windows 7)では100MBだったんだけど今回は500MBに増えている。その次のCドライブはデフォルトで500GB確保される。

 Windows 10 はスムーズにインストールできたが、この後が問題だった。ドライバーをインストールしようとしてマザーボードに添付されていたDVDをセットするが、Windows 10 に対応していないため読み込めない...参ったナ~

 とりあえずマザーボード上の RJ45 にネットワークケーブルを接続すると、ネットワークには接続可能だった。ルータに DHCP サーバーの設定をしてあったので IP アドレスが割り当てられた。さらにインターネットにも接続できた。
 Windows のアップデートが始まり、グラフィックカードのドライバーがインストールされ、オーディオのドライバーもインストールされた。実績のあるグラフィックカードマザーボードだったのでドライバーが Microsoft に登録されていたようだ。
 ドライバーがインストールできたのでWindows 10 は以前のように動き始めた。(一安心)
 その後、Windowsは無事 Version 1703 に上げることができた。

 

引っ越しました。

 2月末に引っ越しました(東京小平市内での引っ越しです。)引っ越しは頭に負担が
かなりかかる(物理的に)。引っ越しの前からいろいろ準備に取り掛かる(身の回りの整理、PCの整理など)これが結構な負担になる。自分では頭は動かさいないつもりでいるが動いている。脳出血(小脳)で倒れた当初(入院初期:1年半前)は出会う人に会釈するだけでクラクラしていた、最近は少しましだが(慣れたのかな!?)

 近くのスーパーに買い物に行くがこれが結構つらい。以前住んでいた近くのスーパーは新しく、商品棚は低めで天井は高く、通路も広くて気持ちよかった。引っ越した先にも同じ系列のスーパーがあるのだが通路が狭く、商品棚もやや高め。カートを押して歩くがつまずかないように気を使って歩くのでつらい。また、商品がどこにあるか把握していないのでついつい頭を動かして探しているので余分な動作が加わりクラクラする。
(あれ、さっきの棚だったっけと振り向くと一瞬、倒れそうになる。)

CentOS 7.3 に mruby をインストールする。

PCには CentOS 7.3 と Windows 10 をデュアブートでインストールしています。CentOS 側に mruby をインストールしてみます。

mruby は Github よりソースをダウンロードしてビルドします。(他の方法を知りません?)

先ず、必要なプログラムの準備。

ruby と bison が必要になります。

root になってそれぞれインストールします。

# yum install ruby

# yum install bison

git を使ってソースをダウンロードします。

git はインストールされていたのでそのまま使用します。

$ git clone https://github.com/mruby/mruby.git

Cloning into 'mruby'...
remote: Counting objects: 36077, done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 36077 (delta 36), reused 0 (delta 0), pack-reused 35999
Receiving objects: 100% (36077/36077), 7.90 MiB | 1.64 MiB/s, done.
Resolving deltas: 100% (22432/22432), done.

mruby ディレクトリが出来上がり、その中に無事、ダウンロードが完了しています。

$ cd mruby
$ ls -l
合計 120
-rw-rw-r--.  1 white white   861  1月 15 12:14 AUTHORS
-rw-rw-r--.  1 white white  2357  1月 15 12:14 CONTRIBUTING.md
-rw-rw-r--.  1 white white   176  1月 15 12:14 LEGAL
-rw-rw-r--.  1 white white  1061  1月 15 12:14 MITL
-rw-rw-r--.  1 white white   277  1月 15 12:14 Makefile
-rw-rw-r--.  1 white white   343  1月 15 12:14 NEWS
-rw-rw-r--.  1 white white  3866  1月 15 12:14 README.md
-rw-rw-r--.  1 white white  4673  1月 15 12:14 Rakefile
-rw-rw-r--.  1 white white   253  1月 15 12:14 TODO
-rw-rw-r--.  1 white white   542  1月 15 12:14 appveyor.yml
-rw-rw-r--.  1 white white   912  1月 15 12:14 appveyor_config.rb
drwxrwxr-x.  2 white white  4096  1月 15 12:14 benchmark
drwxrwxr-x.  2 white white  4096  1月 15 12:14 bin
-rw-rw-r--.  1 white white  3799  1月 15 12:14 build_config.rb
drwxrwxr-x.  3 white white  4096  1月 15 12:14 doc
drwxrwxr-x.  4 white white  4096  1月 15 12:14 examples
drwxrwxr-x.  3 white white  4096  1月 15 12:14 include
drwxrwxr-x.  3 white white  4096  1月 15 12:14 lib
-rwxrwxr-x.  1 white white 13468  1月 15 12:14 minirake
drwxrwxr-x. 36 white white  4096  1月 15 12:14 mrbgems
drwxrwxr-x.  2 white white  4096  1月 15 12:14 mrblib
-rw-rw-r--.  1 white white   615  1月 15 12:14 mruby-source.gemspec
drwxrwxr-x.  3 white white  4096  1月 15 12:14 src
drwxrwxr-x.  3 white white  4096  1月 15 12:14 tasks
drwxrwxr-x.  3 white white  4096  1月 15 12:14 test
-rw-rw-r--.  1 white white  1065  1月 15 12:14 travis_config.rb

その中に minirake がありますので実行します。

$ ./minirake 

ビルドが開始されます。

暫くすると bin 内にプログラムが出来上がっています。

-rwxrwxr-x. 1 white white 1536056  1月 15 12:17 mirb
-rwxrwxr-x. 1 white white 1048688  1月 15 12:17 mrbc
-rwxrwxr-x. 1 white white 1642472  1月 15 12:17 mrdb
-rwxrwxr-x. 1 white white 1524064  1月 15 12:17 mruby
-rwxrwxr-x. 1 white white 1255632  1月 15 12:17 mruby-strip

バージョンを確認してみます。

$ ./mruby -version
mruby 1.2.0 (2015-11-17)