アラサーからのプログラマー生活

アラサーの新米PGが必死に頑張る成長記録です。あとは旅行とか。

「マンガでわかるDocker」を読んでWindowsでRedmineの環境構築をしました


※当記事は個人の趣味・勉強用として執筆した記事であり、著者の湊川あい先生とは一切関係はありません。

お久しぶりです、堀井です。

現在会社ではAWS関係の業務を行っているのですが、Dockerが分からない状態は業務ができないことを痛感しました。

そんな時、湊川あい先生(Twitter)の著書である「マンガでわかるDocker」シリーズを見つけ勉強したところ、Redmineをローカルで動かすところまではできました。

ただ、この本はMacベースで書かれておりWindowsユーザーの自分はそこそこ苦労したため、他のWindowsユーザーが勉強される場合のお助け記事になればと思って書いています。

Twitter
#マンガでわかるDocker ① 〜概念・基本コマンド編〜
#マンガでわかるDocker ② 〜開発環境を作ろう編〜
#マンガでわかるDocker ③ 〜AWS編〜
#マンガでわかるDocker ④ 〜Compose編〜
マンガでわかるDocker サポートサイト

※今回はローカルでの実装のため、AWS編の内容は扱いません。


  • 当記事の読むのにお勧めの読者
    • Dockerを初めて学ぶ人
    • コマンドラインが少しわかる人
  • 筆者の動作環境
  • 最終的なdocker-compose.yml
  • Docker Desktop on Windowsのインストール
  • ローカル開発環境構築とDockerfile
    • 特に問題ない部分
    • $(pwd)でエラーが出る
    • touchでエラーが出る
  • Docker ComposeでRedmineの環境構築をする
    • docker-compose.ymlの書き方
    • エラーメッセージ:error during connect
    • エラーメッセージ:デフォルト設定がロードできませんでした
    • エラーメッセージ:services.command must be a mapping
    • コンテナを削除したら設定が全て消える
    • 画像ファイルが全て消えてしまう


当記事の読むのにお勧めの読者

Dockerを初めて学ぶ人

上記わかばちゃんシリーズの読者対象と同じです。

コマンドラインが少しわかる人

ディレクトリ移動ができるくらいの知識があれば大丈夫です。


筆者の動作環境

  • Windows10 Home 64bit
  • Docker Desktop on Windows 4.8.1 (78998)


最終的なdocker-compose.yml

解説不要な方はこちらをそのまま利用してください。

version: "3.1"

services:
  redmine:
    image: redmine
    container_name: redmine
    depends_on:
      - db
    restart: always
    ports:
      - 8080:3000
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: example
      REDMINE_SECRET_KEY_BASE: supersecretkey
    volumes:
      - ./files:/usr/src/redmine/files

  db:
    image: mysql
    container_name: redmine_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: redmine
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - ./db-data:/var/lib/mysql
続きを読む

【ExcelVBA】考え方ひとつでコードが削れた話

こんにちは、堀井です。

最近は現場が変わってAWS関係のお仕事をぼちぼちしていますが中々訳わからなくて面白くなってきました。

先輩や上司に嘆いたところAWS公式チュートリアルやUdemyの利用をお勧めされたので今後はこれで勉強しようと思います。

と言いたいところですが、それ以前にLinux、Docker、Maven、Gradle、Gitその他諸々が大前提の知識として必要と言うことなので笑うしかない。

でも今日はVBAです。

続きを読む

【マイクラBE】未就学児向けのジェットコースターワールドを作ったので配布するよ!

f:id:hollage0214:20210822225409p:plain
f:id:hollage0214:20210822225432p:plain
こんばんは、堀井です。

以前未就学児用にアスレチックワールドを作ったので配布したのですが、今回はジェットコースターを作りました。

前回の記事はこちら↓

みんな大好きクリーパーを模したコースターをコンセプトに作りました。

製作期間は1-2日くらいだったと思います。

一番面倒臭いのはクリーパーそのものを作ることで、ジェットコースターに関しては感覚で作ったのでそこまで面倒ではなかったです。

スタート地点はこちら。
f:id:hollage0214:20210822225421p:plain

チェストの中にトロッコが大量に入っていますので、お好きなレールを選んで走り出してください。

スタート箇所自体は3か所ありますが、スタート地点にあるレバーを稼働させることで4方向に進むことができます。

工夫した点としては、同じレールを使いつつも双方向に進むことがある点ですね。

例えばスタート地点の左側を選んだ場合のゴール地点は同じ場所です。





f:id:hollage0214:20210822225444p:plain

・・・なんですかこれは??

対象年齢:3歳~


想定クリア時間:15分程度


ゲームモード:アドベンチャーモード


備考:隠しボタン2カ所あり


ダウンロードページ

前回記事のアスレチックと同じURLに置いてありますので、よろしければご一緒にどうぞ。

上記URLからダウンロードし、解凍したファイル(.mcworld)をダブルクリックすればMinecraftが起動し、インポートされます。

もしデータが削除されている!などありましたらページ下部「お問合せ」よりご連絡ください。

それではまた次回。

サーブレットでcsvファイルを書き換えた時の配置場所について

こんばんは、堀井です。

今の現場でサーブレットとjspを使っているのですが、Javaの知識もまともにない状態で現場入りしたので本当に周りに迷惑をかけまくりながら1年過ごしました。

で、流石にマズすぎるのでアプリを作りつつ勉強をしているのですが、やっぱり分からないことだらけです。

その中でも特に解決に時間がかかったことがありましたのでざっくりと書いておきます。

あまり関係はないと思いますがIDEはEclipse、サーバーはTomcatを利用しました。


フォルダ構造

■app
  ┗Javaリソース
    ┗src
      ┗cmn(パッケージ)
        ┗Tool.java
      ┗controller(パッケージ)
        ┗ForwardMemberPage.java
  ┗WebContent
    ┗WEB-INF
      ┗data
        ┗memberList.csv
      ┗jsp
        ┗index.jsp
        ┗MemberPage.jsp

ざっくり階層としてはこんな感じです。


動作概要

  • index.jspからMemberPage.jspに遷移する
  • 遷移時にmemberList.csvの内容を読み込んでMemberPage.jspに表示させる
  • MemberPage.jspでは読み込んだメンバーの隣にチェックボックスがある
  • チェックを入れ登録ボタンを押すとcsvの中身を書き換えてページを再表示する

と言った内容です。

頑張ってcsvを書き換えるソースを書いて実行したところ、期待通りの結果を画面に反映させることができました。

ただなぜかmemberList.csvを再表示しても書き換わっていないんですよね。

実際に書き換えられた状態で画面に表示されているのにおかしいな・・・と調べること暫く、ようやく解決しました。


サーブレットで弄ったファイルの置き場所は変わる?

ファイルパスを見てみると
/WEB-INF/data/memberList.csv
ではなく
.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\App\WEB-INF\data\memberList.csv
なんて場所にありました。

一時ファイル的な存在なのかアプリケーションスコープ的な存在なのかまでは正直よく分かりませんでした。いかがでしたか?

サーバー側の動作を理解している人からすれば当たり前の話とは思いますが、初めてまともに触ったので新鮮な驚きでした。

将来的にはサーバーサイドも勉強しないといけなくなるんだろうなとはひしひし感じましたが、まずはサーブレットから。

あとはTCP/IPと応用情報と・・・。



備忘録的な意味合いが強いため雑に書いてしまいましたが本日はここまでです、それではまた次回。

あ、念のためですがデータベースは意図的に使っていないだけです・・・。

PowerShellで大量のダミーデータを作る方法3種

こんばんは、堀井です。

IT業界に入って2年半経ちましたが、新しいことを1つ覚えるための前提知識として新しいこと10個が必要な業界だと知ることができました。

職業訓練校で学んでいた内容は実は基礎すら教えきれていなかったのかと感じています。



さて、今日はPowerShellで大量のダミーデータを作りたいよ、と言う人向けの記事です。

ダミーデータと言っても、そのデータに意味を持たせる必要がある時とない時でやり方が変わりますよね。

そんな人向けに当記事では

・データそのものに意味を持つダミーデータを作る方法

・データ容量に意味を持つダミーデータを作る方法

・データ圧縮率に意味を持つダミーデータを作る方法

の3種類に分けて紹介します。

続きを読む