プログラミングは面白い

プログラミングの事を中心に色々書いていきます

タイトル変えました

久しぶりのブログ。
さて、私は転職をし、Javaを頑張るんだーと思っていたのですが、PHPも新たに選択出来るようになったので私はPHPを選びました。
もう全然Pythonやってないけど、プログラミングの入りがPythonだったのでその冠は残しておきます。

いまはPHPの資格取得をするために日々勉強中です。
全然実践的じゃないけど学べる事は多いです。

何事も一歩一歩確実に前に進まなくては。
てことで、ブログ名変わったよってだけの記事ですたー。

最近はJava

内定を頂きまして、10月初旬を目安に就業予定の私ですが、Javaのお勉強をしています。
お世話になる会社では研修でJavaの勉強をするそうなので予習です。

実は私は結構前から喉に違和感があり、何か飲み込むと痛みを感じていました。
食べ物を飲み込むときは多少なのですが、飲み物の時はそこそこ痛いです。

結構前に一度病院で診てもらった時は、鼻からカメラを突っ込まれ喉に腫瘍があるか調べてもらったのですが、特に何も見つかりませんでした。
何もなければないで心配だったのですが、今回転職が決まった事もあり、再度病院に行って検査をしました。
最初は同じように鼻からカメラを突っ込まれて喉を診てもらったのですが、やはり何もなし。
心配だったのでCTもお願いをして撮ったのですが、やはり腫瘍は見つからず。
どうやらこのような症状を咽喉頭異常感症、別名ヒステリー球と言う病状に分類されるようです。
原因は自律神経の乱れだったり、心因的な問題だったり、要するに原因不明らしいです。
ちなみに、私は小学生の頃から自律神経失調症って言われた事ありますので関係あるかもしれないですね。慢性的な不眠症ですし、割と生きづらい性格です。
この不眠をマジでどうにかしたい...

とりあえずは安心したのですが、怖いのでさらに人生初の人間ドッグを受けに行く予定です。
病院大嫌いなので本当に憂鬱ですが、年齢も年齢だし避けて通れない道ですね...
胃カメラと採血まじ怖い。

とまぁ、そんなこんなでJavaをやっていますが、Laravelやりたくて仕方ない。
デプロイも結局やってないし、まだまだカスタマイズして行きたい。
でも複数言語を同時に勉強すると混乱するから勉強は1個に絞ると決めています。
前にswiftとRubyだったかな?PHPだったかな?を同時進行してたら訳分からなくなった記憶があります。

とりあえずJavaの基礎的な部分は終わったのでtodoアプリでも作ってみようかな。

てことで、転職します

えー私、18年ほどやっていた業種ともおさらばし、新たな業界に飛び込む事を決意しました。
正直、給料死ぬほど安くなったけど楽しみで仕方ない。
嫁とも話をして、理解をしてくれた。
今のまま同じ仕事をしていたら多分困ることはないと思うけど、面白くない。
私のわがままを理解してくれた嫁には本当に感謝しかない。
でもしっかりSweet10Diamondはせがまれたので買ってあげられるように精進しないと。

さて、私の飛び込む業界は悪名高きSES業界です。
しかし、社風が面白そうだったし、何よりこんなおっさんを快く受け入れて頂けたのは感謝です。
とにかく私は現場での経験を積みたい。そうすれば今後も何かと楽になっていくはずです。
ここを足掛かりに頑張ります。あ、踏み台にするつもりはないんですけどね。
SESで疲弊して別業界に転職した人のブログとかめっちゃ読み漁ったので、少し怖い部分もあります。
ちゃんとやりたい現場にアサインされなかったら地獄だなと。

どうなるかは分からないけどただ頑張るだけですね。
10月から開始予定で、4ヶ月間は研修だそうです。
Javaを勉強するそうなので、早速Javaの予習をProgateで開始しています。
Laravelも頑張りたいけど、しばらく厳しいかな?
てか、Javaって記述の仕方が若干PHPに似てる気がする。
PHPやっておいて良かったなと。やっぱり無駄なことなんて何一つないんだなと。

でもメソッドの戻り値のデータ型をいちいち指定しないといけないのはダルい。
変数にもデータ型を指定するのもまだ慣れない。
なんでJavaが大規模開発に向いているのか謎だらけどだけど、頑張ろう。

いやほんとブログのタイトル変えようかな...
全くpython要素がない。

着々とデプロイは進んでいるが、やはり地獄

デプロイというより、環境構築でめっちゃ躓いた。
Linuxはコマンドとかそうゆうのは大分理解したんだけど、いまいちリポジトリの概念が理解出来ていない事が判明。
PHPをインストールするのにRemiというリポジトリからインストールを行ったんだけど、php-mbstringというのがインストール出来ていなかったようでこいつのせいで地獄みた。

単純にyum -y install php-mbstringみたいにするとphp-commonと干渉してるエラーを吐く。
でもphp-commonはちゃんとインストール済み。
何でだよ!とイライラすること1時間。
ドンピシャなページを発見。

teratail.com

これ通りやったら無事にphp-mbstringをインストール出来た。
このリポジトリの概念がいまいちよくわからん...
こうゆうのをもっとちゃんと理解出来れば余計な所で躓かないんだけどなー。
やっぱりDockerが良いのかなー。

とりあえず後はrootフォルダに乗っければ公開出来るっぽい。
その前にちょこちょこ設定する必要はありそうだけど。

httpsにもしたいけど、すぐには難しそう。
覚える事が尽きない。

【PHP】array_count_values関数

月別アーカイブを作ってる時にこの関数めっちゃ便利だったのでご紹介。

配列の値をキーとして、値の個数をカウントして連想配列にしてくれる関数です。
PHP: array_count_values - Manual

月別アーカイブを作成時、一度すべての記事作成日時をcreated_atカラムから取り出し配列に入れたのですが、ここから重複を省いてカウントする方法ないかなーと探していたらドンピシャこの関数がありました。

    private function archive() {
        // 月別アーカイブ処理
        $posts = Post::all(); // DBから全ファイル取得

        $monthList = []; // 空リスト作成
        // ループで空リストに追加
        foreach($posts as $post) { 
            $monthList[] = $post->created_at->format("Y-m");
        }
        // array_count_valuesを使って連想配列化
        $countArray = array_count_values($monthList);

        return $countArray;
    }

あとはビュー側で中身を取り出して表示さればOKですね。
てかこれ書いてて思ったのですが、ループさせなくてもモデルの操作で日付のデータを配列で取得出来たような…
ちょっと後でやってみようかな。

array_count_valuesはいろんな場面で使えそうなので覚えておいて損はなさそうです。

デプロイの前に

なんかページネーションを実装するのにLaravelだとデフォルトでBootstrapでデザインが作られてるようです。
しばらく気づかなかったのですが、フォントの感じが変に感じまして、よく見たら色々微妙におかしくなっていました。
仕方ないのでBootstrapのCSSを切って修正しました。

ついでに月別アーカイブのリンクを作って該当月の記事だけを抽出するアクションを作ろうとやってみたのですが、これが思いの他苦戦しました。
Railsにはall_monthメソッドという便利メソッドがあって簡単に実装できました。

qiita.com

詳しくはこの辺をみると良いと思います。
Laravelにもあるだろうと思っていたのですが、どうやら同じような物はないらしい…
ただ、年、月を整数で渡すと該当するデータを引っ張ってくる関数がありました。
ちょっとごちゃっとしたけどこいつを使ってなんとか実装出来ました。

co.bsnws.net

たぶんこの辺が参考になると思います。
日付で検索することは割とあるような気がするので覚えておいて損はないですね。

わからない事だらけだけど、調べながら徐々に進んでいく感じはゲームを攻略している感覚に似ています。
イライラすることも多々あるけど、少しづつ力がついてきてるなーと実感してます。

てことで、デプロイ調査開始。