読者です 読者をやめる 読者になる 読者になる
このブログに記載の内容は個人の見解であり、所属組織の立場、戦略、意見を代表するものでは全くありません。

ダイアリーだし一向にキリがよくならないから作業した日ごとに更新することにする。Golangでアプリサーバ作成挑戦

7/24までは割りとキリが良かったみたい。

(タイトルを見ると全くそんなことはないけれども。

Windows10でvagrant使ってwebアプリ基盤を構築しようとしてWordPressのセットアップでつまづいています。 - Qiita

 

■2016年7月30日

Webアプリを作ろうとする

別にWordPressにそこまで執着する必要も無いので、

元の方針に戻って、WebアプリをGolangで作ろうと思ったけど、

ググってもシンプルなサンプルが出てこなかった気がする。

 

Webアプリはアプリサーバ用意した方が色々といいのだな。
アプリケーションサーバってなに?Webサーバとの違い | 構築ツール | 知る・学ぶ | Marketing Bank (マーケティングバンク)

 

これまでBitNami Redmine Stackとかいじってたときの経験で、
Webサーバ関連のどっかのフォルダに入れとくと勝手に動くもんなのかと思ってた。
そーいやthinって感じのサービスを動かしてた気がする。

 

WordPressもWebアプリサーバを提供してもらわないとならんのですね。
それがホスティングサービスということかな?

 

よし。Goでアプリサーバを立てるか。

とりあえずtarget環境(vagrant仮想マシン)にもgoを入れないと動くまい。

(そうでもないのかな?
ということでインストール。

CentOS6.5にGoをインストールする - Qiita


go get golang.org/x/tools/cmd/godoc は
permission denied
まあ、問題ないでしょ。

 

REPL(れぷる)

をググりました。

Read-eval-print loopの略

字のごとく読んで評価して表示して繰り返す。対話型評価環境を指す。
ただし、インタープリタと同義ではない。

 

次はこれかなー

nginx + Go-FCGI で Web アプリを動かす - Qiita

 

fcgi(fast cgi(common gateway interface))ってええんやろか。
cgiはプロセス1つだから微妙。みたいなのは改善されたとかは何かで見たけども。

 

ファイルをどこに置いたらいいのか分からないな。。不安。。

golang製WAFのgojiでfastcgiを使ってnginxと連携する - Qiita

設定ファイルはどれなんだ。。
/etc/nginx/nginx.conf?
とりあえずこうする。
[vagrant@localhost ~]$ sudo touch /etc/nginx/conf.d/goapp.conf
[vagrant@localhost ~]$ sudo vi /etc/nginx/conf.d/goapp.conf

wordpressのインストールの際にhttpサーバの設定を結構変えてたので戻す

/var/www/html
/etc/nginx/conf.d/default.conf

404 Forbidden
nginx 1.10.1

。。。
このサイトみたいにWelcomoされない。全然されない。。

Nginx + Golang でWebアプリケーション開発を試してみた - umegusa's blog


/usr/local/nginxも無いんだよね。

htmlがすっからかんだ。
セットアップの仕方次第ではあるのだろうか?

 

休憩とって再起動したら

Welcomeされました!\(^o^)/

minimum golang web app(standalone_hello.go)の動作確認はできず。。
httpdに切り替えたつもりでもnginxの画面が出るし、
tcpまで進めた方がいいのだろうか。

※そういえばWinでlocalhostでは見れてた気がするな。。


.goファイルの配置や実行方法に条件があるかもしれないなあ

nginx_combo_hello.go(fcgi, UNIXソケット使用版)でもダメ
nginx.serviceは動かした。
こっちはforegroundで動かしても待ちにならない。

(すぐにプロセスが終了する。)

何か条件がいるのか?


/var/run/go-fcgi.sockも無いし。(作るの?

ググったら他にも出てきた。
ちょっと最小構成じゃないのもあるけど片っ端からやるか?

最近よく考える言語の話

1つで済ませたいしC系はこれで、いっつもつまらない問題でつまづいて実装がやりたいこと(思考やアイディア)に追いつかないので嫌い。

 

これらの言語の欠点は、プログラムの全てのステップを詳細に書き出さなければいけないため、大量に長いコードを書かなければいけないことです。 

postd.cc

 

そこで最近、最新の大規模Webシステム系の雑誌を読んでみたら、結構色々なことが自動化されそうなブレークスルーを感じたので、本格的に何か勉強しようかなあと思っていたのだけど、環境構築でつまづきまくり(笑)

まあでも準備は大事だよね。

 

そんな中この記事を見て、え?なんなんだこれはとGoはインタープリタ系っぽさがあるってこと?と困ったんだけど教えて偉い人(笑)

liginc.co.jp

 

 

ReactでTDD環境を構築してみようとした

quikがうまくいきませんでした。

mochaでテストするとこまではできました。

 

■11:35 2016/07/03

MVPだ!習慣づけたい!とにかく何か作らなければ!
開発環境どうしよう。。

 

なんとなーく前回の続きでもするかーと
ReactでTDDできるようにするかー

 

■(前回)2016/06/25

このサイトに従って動かそうとしました。

 

http://postd.cc/getting-started-with-tdd-in-react/

 

nodeインストール。

latestをDLしといた方がよかったのかも

 

.babelrcは下記のパスに配置して、(たぶん間違ってました
C:\Users\Hoge\node_modules\babel-core

 

setup.js, components.spec.jsはcwdに配置

結果。
Error: Cannot find module 'babel-register'

 

・・・
あー
C:\Users\Hoge\node_modules\babel-core\node_modules\babel-register
にPATHが通って無い的な問題っぽい。

 

このパスを2回目に見つけるのにとても時間がかかりました(泣)
※最終的にnpm list > npm_list.txt してbabelで検索した。

 

setup.jsの冒頭を
require('babel-register')();

require('babel-core/register')();

 

.babelrcをcwdにもコピー(効いてる?)

(npm -install babel-register -save-env
でも前進した気がするけどなんとなく嫌な予感がするからuninstall

 

次はcomponents.spec.jsがダメくさい
C:\Users\Sode\work\react_tdd\components.spec.js:1
(function (exports, require, module, __filename, __dirname) { import { expect } from 'chai';
^^^^^^

SyntaxError: Unexpected reserved word
at exports.runInThisContext (vm.js:53:16)

 

2016年7月9日19:22:02

上から読み直す。と、
うわー
Quikのインストールしてない。。
なんでこーゆーところぬかしちゃうんだろう

 

それでもダメ。

もっかいやり直しながらやってみる。
アンインストールしてからじゃないとダメだったらやだなー。。

 

npm install babel-core babel-preset-es2015 babel-preset-react

これ最初もだったような気もするけど
まとめてやるとERRORになる。ので1つずつやる。


まとめてやるとWin10とかなんとか出るけど別々にやるとERRORはでない。

次は.babelrc。

 

.bablercを開く。え?bable?なんかちがくね?

 

 ・・・

 

ふぅ~~~~~~~~~

 

こういうのがよくあるからほんと向いてないんだろうなって思うよね。

こういう単純作業ができない人は成功できないと誰かが言ってたなー。


まあ余計な時間がやたらかかるし
一人で全部やらなきゃいけないとき困るからだろうね。

 

まあ成功なんたら情報はテキトーだからいいけどねー。
んなこと考えても仕方ないし。
単に二元論やって何らか境界を作りたいだけでしょう。

 

いやーここでようやく環境チェック(mocha)のテストをパス。
ちゃんと1つ1つ確実にやるって大事ですよね。。
(誰かにやっといて欲しい。。)

 

quikは動かない。。
長ーいログ。
object-assignがreact/libに無いとか言ってる。
見てみたら、あったので、パスの設定みたいなのがダメなんだろうなあ。


下のほうのrepositoryのcloneでもsetup.jsを前のトラブル時みたいに
こう変えたらmochaは問題なさそうに動いたんだけどなー。
require('babel-register')();

require('babel-core/register')();

 

ググりはしたけどいい情報ゲットまで至らず。

 

Win10アップグレードで発生した再起動に手を出して痛い目を見る

※解決せず回復で諦めた記事

■2016年7月9日19:22:02

 

ふと気分転換に
起動時の再起動の件
smbdriver.sys ERRORで検索して、適当に検索しなおしたりして、
http://okwave.jp/qa/q9091194.html
ドライバー更新?ふーん。

サクサクDLしてインストールする。

ドライバーを更新して解決したかと思いきや
スクロールができない!!!(※)

この辺を見て行き当たりばったりでバックアップもとらずにいじりまくった挙句、、、
http://d.hatena.ne.jp/noushibou/20151003/1443844827

汎用のドライバしか認識しなくなった。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1286415187

えー。。

そうだ!システムの復元しちまおう!(電球) ⇒ 無効にしてた はあ?

はい。全部私が悪いです。


しかし不便でたまらない。ぐぬぬぬぬぬぬぬ(ry
ここに行き着く。
http://riskhedgehog.com/cannot-scroll-at-windows-10

acerのHPから製品に対応するドライバーを落としてインストール。

もどったよおおおおおおお!!!!
パトラッシュウウウウウ!!

更新してコンパチになる方法もありそうだけど、
もうこれでいいよ!くそがー!
毎回起動時に再起動になるくらい我慢するさ!


気分転換どころかすごい重たかった。。だから機械とかきらい。。


ところでWin10はWindowsボタン押してそれっぽい名前で検索して使えば困らないけど
アプリにアクセスする他の方法がよう分からんね。

マイコンピュータが無いせいか。(環境変数とかデバイスマネージャとかまで遠い)
あとCドライブの下とかに行きづらくなった気がする。分かってないからかね?
毎回忘れるけどコマンドプロンプトから"start ."が楽

振り返り(React, Infra as Codeとか調べたりやってみたり)

整理してないし。メモの貼り付けです。

あとつまづいて終わりです。※後で整理したい。

 

概要

  • マルチプラットフォーム言語を習得しようと思う。⇒React(何度も同じようなことしたくない)
  • インフラ as Code(設定ファイルから環境自動構築)に挑戦(vagrant, ansible)

 

■20:40 2016/06/20

Reactについて調べる


http://postd.cc/boiling-react-down-to-a-few-lines-in-jquery/

Reactの素晴らしい点
・UIをアプリケーションの状態の純粋関数にできる
・不変性と仮装DOMを利用して動作する
・保存、読み込み、取り消し
・タイムトラベル・デバッグ

jQueryで実装できるといえばできる

難点
仮想DOMがブロックの中で最も遅いものの1つ

Reactは
react.jsでJavaScriptで実装されているみたい。じゃあ大元は同じなのか。

ほぼ想像。
結局のところWeb系のGUIは最終的にはHTMLになる?
そこまでの道のり(パーサなりコンパイルなり。JVMなり。)
があるだけで
それ以外の点ではGUIアプリとしてはブラウザと同じなのか?

なら、Web系はかなり便利なツールやフレームワークが豊富なので
開発プロセスの不可分な部分もあるんじゃないかな)
多少のオーバーヘッドを許せるなら全て共通化したら
Web系で培われた開発技術をコードだけでなく、
抽象的な技術やプロセスを含めて包括的に活かせる気がする

はてなの大規模システムに対応する技術もCPUの高速化の工夫に近いし
ある程度、各分野で似たような工夫をしているところもありそう

 

[Web開発者のための]大規模サービス技術入門

Amazon CAPTCHA

門外漢だし読み切ってませんが、この本とてもよかったです。

 

ググった用語

ajax
Asynchronous JavaScript + XML

JSON
JavaScript Object Notation

 

■9:43 2016/06/25

●インフラ


vagrant
docker+virtualBox
インストール


http://ubiqlog.com/archives/10570
C:\Users\Hoge\DevEnv\centos>vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos6.5' (v0) for provider:
box: Downloading: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
box: Progress: 26% (Rate: 0curl:/s, Estimated time remaining: 0:16:57)
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054


http://qiita.com/TakashiOshikawa/items/d2fb48d59e9e316af9a2 ★Good

もう一回 box addしたらできた。通信環境?

C:\Users\Hoge\DevEnv\centos>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos6-7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos_default_1466907933145_18778
==> default: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_INVALIDARG
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Assertion failed: [!aInterfaceName.isEmpty()] at 'F:\tinderbox\win-5.0\src\VBox\Main\src-server\HostNetworkInterfaceImpl.cpp' (74) in long __cdecl HostNetworkInterface::init(class com::Bstr,class com::Bstr,class com::Guid,enum __MIDL___MIDL_itf_VirtualBox_0000_0000_0036).
VBoxManage.exe: error: Please contact the product vendor!
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 71 of file VBoxManageHostonly.cpp

C:\Users\Hoge\DevEnv\centos>


http://d.hatena.ne.jp/kobarn/20150805
http://qiita.com/ShotaKameyama/items/1f39791092f57c5046bc

 

■9:43 2016/06/25
vagrant
やり直し+VirtualBox再インストール
⇒OK

・ansible
http://www.moyashi-koubou.com/blog/vagrant_ansible_windows/

 

C:/Users/Hoge/DevEnv/centos6_5_64/Vagrantfile:71:in `block in <top (required)>': undefined local variable or method `playbook' for main:Object (NameError)
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/v2/loader.rb:37:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/v2/loader.rb:37:in `load'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:113:in `block (2 levels) in load'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:107:in `each'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:107:in `block in load'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:104:in `each'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:104:in `load'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/vagrantfile.rb:28:in `initialize'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:740:in `new'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:740:in `vagrantfile'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:486:in `host'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:208:in `block in action_runner'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/action/runner.rb:33:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/action/runner.rb:33:in `run'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:473:in `hook'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:722:in `unload'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/bin/vagrant:177:in `ensure in <main>'
from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.4/bin/vagrant:177:in `<main>'

centosのbox取り直し。 ⇒ ダメ

http://www.moyashi-koubou.com/blog/vagrant_ansible_windows/


Windowsを使ってて日本語のユーザ名でログインしている場合や、bsdtarやVBoxManageが見つからない的な
>メッセージが出たらVagrantをインストールしたディレクトリの
>“embedded\mingw\mingw32env.cmd” を下記の感じに書き換えてからmingw32env.cmdを実行
>→その黒い窓で操作すると使えると思います。

C:\HashiCorp\Vagrant\embedded\mingw\mingw32env.cmd
@title vagrant
@set VAGRANT_HOME=C:\home\vagrant\.vagrant.d
(@set PATH=%CD%\bin;)C:\Program Files\Oracle\VirtualBox;%PATH%

VAGRANT_HOME変えないとダメじゃん。。

どーしてもダメ。
めっちゃハマった。情弱乙というやつですか。これだからITは嫌いだ。

このサイトを参考に
http://iwamocchan11.hatenadiary.jp/entry/2015/09/23/193419

# yum list ansible
でansibleは入ったみたい

あがく

最近なんとなくグロースハックっぽいことをやりたいなあと思って

インフラ関連のツールを触っていたんだけれども、

何か達成感が欲しいなあと思ってやったことをqiitaに書いてみた。

http://qiita.com/SenoEisuke/items/9af240e4f58d2349ac93

 

※以降、役に立つことは書いてありません。

 

そこで、今日は体調悪かったけど気持ち的にはGoGoだったので

さー今日も何かおもしろそーなことしよー、とPCを開いて、

「何か」しようとしてたんだけども

 

、、、

 

そもそも何がしたいのか!?

 

とふと我に帰る。

 

 

どこに行くのか知らないなら、どの道を通っても同じだ。(スー族の諺)

 うん。

 

適当にググろう。

んで、整理しよう。

 

何でかブログとかの方がやったった感がでるので

アカンと思いつつも直編集。

 

この後、やったことを追加しようとしたんだけど、

体調崩したり色々なのに手を出してつまづいてグダグダ。。

 

というわけでこれはこのまま公開して、全体的に雑記にして

後で整理することにする。主目的は足がかりを作ることだから。

 

インターネットにごみをまいてすみません。m(_ _"m)

 

この日のメモが出てきたから貼ります

 

■11:59 2016/07/02
何を自動化させたいのか?
ストレージ欲しい
何をしたいのか

記録
PDCA
まとめ
共有

●情報収集(何をやるかを選ぶために必要かなーとなんとなく


http://toyokeizai.net/articles/-/34638?page=3
「誰のため、何のための情報収集」のエピソードが話題合わせ。。

 

以下は、

私(ブログ主)が最近、嫌でも学ばなければならなかったことですけれども

 

「相手の身になれ」という発言を向けた相手に対して、

発言者がその発言を伝えた先の相手の身にはなれてない場合が少なからずあります。(とても皮肉なことに。)

そして、その人に対して率直に相手をすることがとても不毛だと感じても
現実として何らか対応しなければならない場合も少なからずある。

 

http://www.ikedahayato.com/index.php/archives/6185
こりゃいい。
Twitter調整したいなあ。
Gunosyも使ってみよう。