tukki Diary

地方公務員。某校でプログラミングの先生をしてます。

LAMP環境を導入しようと思ったらdocker-composeにハマった話。

PHPも担当することになったのですが当然のように知識がないので、まずは環境作りから。

 

普段はdockerとVisual Studio Codeを使って勉強していて、JavaScriptVScodeからnode.jsの入ったコンテナにattachして利用しているんですが、PHPも同じようにすれば行けると思って適当にpullしてきたphpのコンテナを使うと全然上手くいかない。

 

PHPとdockerで検索するとどうもXAMPやらLAMPやらを利用しなければいけないことを理解。

PHPJavaScriptは同じスクリプト言語だが、PHPはサーバーサイドのスクリプト言語で、JavaScriptはクライアントサイドのスクリプト言語なので、PHPはそれを動かすサーバーを立ててやらないと動作すらしないということなんですね。

 

ということでLAMP環境を作ってくれるこちらの記事の設定をそのまま使用させていただきました。

https://www.koreyome.com/web/docker-environment-like-xampp/

 

しかし、これで余裕と思ったらこの謎のエラー。どうもdocker-composeが良くないらしい。

[4335] Failed to execute script docker-compose 

 

ちょっと良く分からなかったんですが、docker-composeのバージョンを下記のように1.22.5から1.11.1にダウングレードしてみるとdocker-composeが通るようになりました。

% curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

1.22系ではどのバージョンでも上手くいかなかったので、1.22のアップデートで入ったバグだったのかな?

 

とりあえずここまでくるのに3時間ほど沼にハマったものの待望のDockerのLAMP環境が整ったので、PHPささっと勉強してきます!

 とりあえず友達に勧められたこれから。

 

 

 

 

いかにしてJavaを学ぶか

今までPythonしかまともに触ってこなかったのですが、4月からプログラミング未経験者にITを叩き込む部署に異動になり、Javaの担当になりました。いやJavaやったことないんですが。

 

業務命令なので撤退の2文字はないです。ひとまず 授業の指定教科書を生徒さんより先に読んで行きます。前日に勉強して当日教える。

2週間でJava SE Bronze の基礎が学べる本 (徹底攻略)

2週間でJava SE Bronze の基礎が学べる本 (徹底攻略)

  • 作者:志賀 澄人
  • 発売日: 2017/10/17
  • メディア: 単行本(ソフトカバー)
 

 

PythonをゴリゴリやってたおかげでJavaの理解は結構スムーズに行きました。Pythonでは適当にやってたオブジェクト指向の概念もJavaの勉強を通してかなり理解が深まった気がする。

自分で勉強して生徒さんに教えるのってめちゃくちゃ勉強になって良いですねー、勉強したことのアウトプットの機会がすぐ得られるのは凄く良いです。

 

授業は半分終わったところで復習も兼ねて、指定教科書のブロンズ資格の問題集を解いていってます。ひっかけ問題のオンパレードで自動車免許の学科試験を思い出しましたw

オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8

オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8

  • 作者:山本 道子
  • 発売日: 2015/10/10
  • メディア: 単行本(ソフトカバー)
 

 

ブロンズ資格の試験範囲は6月前半までには終わりそう。コロナの件で授業は途中からオンライン授業ですが、何とか進めてます。

 

この先の進め方なんですが、一般のプログラミングスクールのカリキュラムを調べてると、デザインパターンに触れてからWebアプリ制作をするのが一般的らしい。

ということで、デザインパターンを学んでオブジェクト指向を極めて、サーブレット/JSPの使い方を理解してWebアプリの作り方を実践してみる予定。

Pythonしかやってなくて、デザインパターンなんぞ知らなかった・・・w)

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

  • 作者:平澤 章
  • 発売日: 2011/04/07
  • メディア: 単行本
 
増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

  • 作者:結城 浩
  • 発売日: 2004/06/19
  • メディア: 大型本
 

 サーブレットが終わって時間的な余裕があればSpringとかのフレームワークを扱ってみたい。 

 

 これにJavaシルバーも取れば、外に出しても恥ずかしくないレベルになる・・・はず?

 

ここまでやれば初心者は卒業出来るのかな?業界のレベルが分からなくて何とも言えないorz

とりあえず4月からはIT漬けの毎日です。前の部署ではITやりたくても機械やら材料やら化学やら何でも屋状態でちょっとしんどかったんですが、今はITに集中できて楽しくて良い感じ。(今年でスキル上げて転職しようかな)

 

 

 

統計学の基礎から再学習。

機械学習のコードを書いたり参考書を読んでると統計学の理解が不十分で変なところでつまづくなーっと思うことが最近あまりに多いので、基礎からもう一度しっかり理解しようと思いGWからこの本をやってます。

 

 

自分が大学生のころからこのシリーズの参考書は本屋に並んでいたけど、確率・統計をカバーするこの本は最近出たっぽい。

 

大学受験の時に「袋の中に赤球が5個、白球が3個〜」みたいな単純な確率の問題は嫌ほど演習したから基礎的なことはできるけど、いざ大学に入るとそれ以降の勉強は全くする機会がなかったので確率分布とかはさっぱり。ちなみに大学は電気工学の専攻でした。

 

f:id:tukki0210:20190512121026j:plain

 

同じパターンで解く問題が多数掲載されているので基礎がしっかり固められそう。

解説は計算過程まで書いてあるのは新鮮。最近の参考書はここまでフォローするものなのかな?答えが合わない時に自分の計算ミスを発見しやすいからすごく助かると思う。

 

やっぱりペンを動かして計算して確認するっていうのは理解を固める上で大事だなーっと再確認。この4月に購入したipad miniに書き殴っています。アプリはipad proでも愛用しているNotability。

Notability

Notability

  • Ginger Labs
  • 仕事効率化
  • ¥1,200

 

f:id:tukki0210:20190512121719j:plain

 

6月の統計検定準一級にも申し込んだので、しっかり基礎固めして臨みたいところ。

www.toukei-kentei.jp

 

 

やりたいことリスト!(IT関係)

・情報処理安全確保支援士 を取得する。

ネットワークスペシャリスト を取得する。

・エンベデッドシステムスペシャリスト を取得する。

 

去年、基本情報 → 応用情報と両方1発で合格できたので、この調子で高度区分も合格したいところ。

資格を使って何かするというより、ITの基礎的な知識を手取り広く学ぶのに定期的に試験を受けるのが良いなーっと。

とりあえず次は4/21の情報処理安全確保支援士!

情報セキュリティの分野、昔サイモン・シンの暗号解読を夢中なって読んだ経験があるからか、すごく興味を持って勉強できてる。ほんま大学から情報系行けば良かった!

(大学は電気工学でした) 

暗号解読(上) (新潮文庫)

暗号解読(上) (新潮文庫)

 

 

 

・kaggleに挑戦する。

機械学習や統計の知識はまだ基本的な所しかないけど、せっかくpythonでプログラミング始めたんやし挑戦してみよう。 とりあえず環境作りから。。

qiita.com

 

・競プロを再開する。

AtCorderを一時期やってたけど、最近止まり気味・・・

(というかコンテスト開催のお知らせメール最近届いてない希ガス

まずABCコンテストのC、D問題の過去問を一通り勉強し直したい

 

アルゴリズムイントロダクションを終わらせる 

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

 

 赤黒木あたりでギブアップした気がするので再開したい

 

・写真ブログをWordPressで作る

写真を趣味でやってるんで、それを形にしていきたいな〜

要はHTML/CSSも勉強していかないとだめ

 

 

ひとまずこれくらいかな?

やりたいことを文字にして見えるようにするのって、すごく良い気がする。

 

AtCorder Beginner Contest 103 に参加した!

用事ない限り参加することにしてるAtCorder!

ABC103に参加してました!

AtCoder Beginner Contest 103 - AtCoder

 

言語はpython3、競プロはjavaとかのコンパイラ言語の方が良いらしいけど書けません!

 

A問題 略

 

B問題

S = list(input())
T = list(input())
Ans = False

for i in range(len(S)):
S.insert(0,S[-1])
S.pop(-1)
if S == T:
Ans = True
break

if Ans == True:
print('Yes')
else:
print('No')


popとinsertで文字を入れ替えていき、一致するものがあれば元々FalseのAns を Trueに変えてbreak
最初にbool型の変数を作っておくと便利ってどこかで見て覚えましたw



C問題

import math
from functools import reduce

N = int(input())
A= list(map(int,input().split( )))

def gcd(x,y):
    if x > y:
        x , y = y , x
    while x>0:
        x, y = y%x , x
    return y
    
def lcm_base(x, y):
    return (x * y) // gcd(x, y)

def lcm_list(numbers):
    return reduce(lcm_base, numbers, 1)

m =  lcm_list(A) -1

B = 0

for j in range(len(A)):
    B += m%A[j]

print(B)

与えられた数字の最小公倍数から1を引いた値が非負整数mってことに気づいて、最小公倍数の出し方をネットで調べると

#最大公約数
import math
math.gcd(x, y)

#最小公倍数
lcm(x, y) = x * y / gcd(x, y)


3つ以上の最小公倍数は2つづつ再帰的に演算して、

import math
from functools import reduce
    
def lcm_base(x, y):
    return (x * y) // gcd(x, y)

def lcm_list(numbers):
    return reduce(lcm_base, numbers, 1)


note.nkmk.me


これでイケた!!って喜んで提出したらREの嵐。間違っとるらしい。
何がおかしいんやろって考えると、どうも最大公約数に使ったmathのgcd(x,y)は
python3.5以降でのサポートだが、AtCorderのはpython3.4.3ってのが原因っぽい。
3.4環境でgcd(x,y)が入ってるfractionsをimprortして見たけど、何かおかしいらしくエラー。
手元のPCでは3.4環境での確認なんて出来ないしw

観念して、ユークリッドの控除法を利用してgcd(a,b)を定義し直して提出したら何とかAC!通った!
morizyun.github.io


修正+修正ミスでのペナルティー×3で30分くらい時間伸びたけど、とりあえずC問題初めて解けて満足。

Dは書き出して行って何となーく方向性のイメージは出来たけど、プログラム書き上げる時間は無くて終了。

まあ、まだまだ修行が必要ですね〜


終わってから他の人のC問題の回答見てると、なんか異様に回答が短い人がちらほら。
たとえばこんな感じの

n=int(input())
a=list(map(int,input().split()))
print(sum(a)-n)

え、最小公倍数とか必要なかった?入力2行に出力1行?ってどういうこと?って思ったんですけど、
余りの最大値は割った数-1だから、割った数の合計値から「割った数」の数(与えられるn)を引けば出るんですね。
公式解答も同じ。
全然気が付かなかった・・・


とりあえず、今回はこんな感じ。復習にもなって良いから毎回書いていこう!目指せ水色ランク! 

電験一種勉強①

去年(2017年度)電験2種にやっっっっっと合格することが出来ました!

 

 

二次試験だけでも3回目で、通算でも5回くらい?受けた気がする(汗)

ここ数年の夏は電験の勉強ばっかしてた感じで、

貴重な20代の夏を無駄にしてる感

が凄かったたんですが、なんとか合格出来て良かったです( ̄▽ ̄;)

 

そこからは仕事が忙しかったり新年度で異動になったりで、電気の勉強なんて一切してなくて、悠々自適な日々を過ごしてたんですが、

 

5月の末の某日

 

 

というわけで、30代最初の1年の夏を捧げていきます。

無駄にならないように頑張ろう(_ _).。o○

 

 

◯一次試験までにやること

・公式サイトに載ってる過去問9年分を解く

 

少し過去問解き始めた感じ、電験二種を少し発展させただけで思ったより解ける気がする?

 

もちろん公式サイトに解説はないんで、間違った問題は二種の時に使ってたこれで確認。

 

電験二種攻略 一次重要事項と二次論説

電験二種攻略 一次重要事項と二次論説

 

 

 

電験二種 計算の攻略

電験二種 計算の攻略

 

 

まずは一次試験突破目指してがんばろー!

AtCorder ABCコンテストのC問題が突破できない!

もともと大学の専攻が電気工学で仕事も電気設備関係の仕事をしてるんで、プログラミングってのは大学の時にC言語少し触ったな〜(遠い目)ってレベルだったんですが、去年(17年)の夏からpythonをちまちま触り始めました。

何でだっけ? AIとかのニュースを読んでるとpythonで出来るよ!みたいなの読んだからかな?

 

最初はkindle unlimited対応の無料本でパソコンでコードを叩くってのに慣れてから、本屋でオライリージャパンの良さげなこの本を衝動買いして本格的に始めました。

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

なんかタイトル見て、

これ出来たら仕事サボれそう!

ってなって買いました。

(まあ、うちは社用のパソコンで私物のpythonのプログラム走らせるのなんて論外だったんですが。)

 

で、そんなこんなで週末にちまちまやってて、本格的に勉強したい欲が出たところにkindle版が半額セールやってたこの本。 

 

定価5000円とかいう専門書あるあるなお値段でしたが、半額ってのとネットの評判が良かったので購入。

 

これも良かった。後半には統計処理やら機械学習の触りも学べて、pythonで出来ることのイメージが分かってきたし。あと、外国の参考書って面白いですよね。ちょくちょくアメリカンジョーク入れてくるとことか。

 

で、この本で十分インプット出来たなっと自信を深めたところで、twitter競技プログラミングってのを知り、ちょっと腕試しに。

 

AtCoder

 

AtCoderさん。日本人が主催の競技プログラミングを毎週開催されている。

 

AtCorderのビギナー向けのABCコンテストでは、難易度A,B,C,Dの4題が出題。

A,Bまでは解けて当然な簡単な問題何だけど、Cが制限時間内でなかなか解けない。

 

あのMITが使ってる教科書終わらせたんやし、いい線までは行けるやろ!とか 最初は思ってたけど全然そんなことない 笑

今の所3回中3回敗退してますorz

 

どうも「最低C問題は解けないと情報系のエンジニアとしてどうなん?」とのことらしいので、早い目にC問題の壁を突破できるように頑張ろ・・・。

 

今後の対策としては、下記の二つ!

◯C問題、D問題の過去問を毎日1題解く!

◯この本を終わらせる。

 

アルゴリズムイントロダクション 第3版 総合版:世界標準MIT教科書

アルゴリズムイントロダクション 第3版 総合版:世界標準MIT教科書

 

 定価15000円

半額の時に買ったけど7500円もした。なんか1000ページくらいあるっぽい。