25歳無職、マイナスからのプログラミング就活

25の無職がプログラマー就職キャンプのメンターからハッキリ「無理」っと言われ、PG勉強に奮起するブログ。 目的は「こんな自分でも社員で雇ってくれる会社様が現れる」そのことです。 こんなやつでも就職出来るんだ、俺だって頑張れば!、そんな風に思って貰える未来になれればいいと思います。 記事はプログラミング言語勉強や、英語学習の成果物が中心。 Unityがメインかも。 成果物を作って、何が何でも業界に就職してやるぜ!

資格受験、学習内容、就職活動

 

1. 目標

2021年12月内にIT企業に就職する事

2. 内容

  1. 履歴書に書ける資格を取る
  2. 前提技術を習得する

3. 2-1の資格について

  • 英語
    • TOEIC:730点以上を取る
  • IT基礎
    • Linux
      • LPIC-1 資格を取得する
    • 基本情報技術者試験
      • 秋期試験に合格する
    • ネットワーク関連
      • CCNA
  • クラウド
    • AWS
      • ソリューション アーキテクトアソシエイト

5. 2-2の技術学習について

  • プログラミング学習
    • フロントエンド関連
      • HTML5・CSS3・JS
      • PHP7・Laravel6
      • Git・GitHub
    • 数学基礎
    • 関数・微分・確率・線形代数
    • 特定言語学習
    • Python・Webスクレイピング

6. 一言

交通事故の入院後、後遺障害が発生して生活状況が変化したとはいえ、余りにもダラダラしすぎていた。
アルバイトで生活を凌ぐのではなく、もうちゃんと就職をしないと、これから先 生きていけないのを自分に気づかせるためにまとめた。

学習内容については、後日以降続々投稿する予定。
まずは英語を中心にしようと思う。プログラミング言語の公式ドキュメントを素で読めないと色々大変だと感じる。

Google Driveを使ったOCRのシェルスクリプトを書いた…ような?

 

スクリプトの場所:GitHub - linm25stg/OCR_book2data

これは何?

GoogleDriveに画像を投げると勝手にOCRされてドキュメントが作成される機能を利用するスクリプトです

* 本GIFはWin10、WSL(Ubuntu18.04)環境で作成されています。

出来ること

  • JPGPNGテキストデータに変換してくれます。
  • JPGPNGのみ対応。他は非対応。
    • 上記拡張子2種を一緒のフォルダに混ぜても構いません。
    • ファイルサイズを2MB以下にして下さい。

使用には以下のものが必要です

  1. gdriveをGithubからご自身の使用の環境OSに合わせてDLして下さい
    • そのままでは使えないので、まずデフォルトの OAuth認証を書き直す 必要があります。 こちら(Qiita)の記事を参照してください。
      • 上記のリンクを参照して OAuth(1.client_id 2.client_secret)は取得済だけど、それでも認証が通らない の方はこちら(teratailの自分の回答)を御覧ください
        • 既にバイナリ書換済み、それでも通らない場合、ここ画像の左下 goto <your app name>(unsafe)クリックリンクを見逃している可能性が高いです。
  2. 本スクリプトbook2data.sh
    • スクリプト内で使用したコマンドは ↓
gdrive import $1 -p $2 # $1はディレクトリーパス。$2はGoogleDriveのディレクトリーID
gdrive export --mime text/plain ${id} # ${id}は ↑で発生したドキュメントファイルのID
gdrive delete ${id} 

インストール

Github の releases から落として下さい。
* Mac OS XはLFなのでbook2data-ubuntu.shを使って下さい

Filename Version 改行コード Shasum
book2data-osx.sh 0.9 CR(MacOS9以前) SHA1: 0DD7F2E8979827F6447E6DFD1257BB1273836FC7
book2data-ubuntu.sh 0.9 LF SHA1: 82D0D148A3D21648BF6D413CAB9BF3CF752F7153
$ mv book2data-hoge.sh book2data.sh

$ sudo chmod +x book2data.sh

やった方が便利な事

  • gdrive
$ mv gdrive-hoge-x64 gdrive
$ sudo chmod +x gdrive
$ sudo cp gdrive /bin/
  • 同じく book2data.sh
$ sudo cp book2data.sh /bin/

使い方

# 基本処理
$ sudo book2data.sh $1 $2
# 例
$ sudo book2data.sh /mnt/d/OCR/とある書籍/01/ 1wxzzCXPfmKZV8VnLqaeGPTW1Pxxxxx

このOCR環境での駄目な部分

  • GoogleDrive API の処理上限関係で 一辺に5個以上同時処理させると Failed to get file: googleapi: Error 404: File not found: to., notFound のエラーが出ます

    • 自炊小説4冊同時変換では 400枚 x 4個同時処理して平均2,3個問題発生します
    • 上記エラー発生した場合、スクリプト内gdrive delete ${id} コマンドが実行されない可能性がありますので、ご自身のGoogleDriveのHomeにあるドキュメントを削除して下さい。
    • また、スクリプトを途中終了した場合、最後のrm -rf $workdir 実行されないので、tmpにある作業用フォルダーを削除して下さい
  • 出力テキストファイルの拡張子がtxtではない

    • 仕様です。 export --mime text/plainで指定していますが、OSによって異なるテキスト拡張子で出力されます…
      • 例:Win10 → asm、Ubuntu → asc
    • スクリプトの初期設定ではasc → txtする様に書いています。Ubuntu 以外のユーザーは書き換えてご使用下さい
      • 表示 gif では自分用のスクリプトを動かしてる為、Win10用のasmって出てます
        • 本スクリプトはSlackのあるチャンネルに共有する為に個人用スクリプトから一部抜き出したものです。出力したテキストをopen-jtalkを使用してmp3に変換できますが、そちらはまた次回で。
  • 出力されたテキストファイルに半角スペースが発生する

    • 仕様です。
    • 半角指定して置換削除したかったのですが、上手く実装できませんでした…ご教授して下さるとありがたいです
  • 自動的に結合して1個のテキストファイルにならない

    • 頑張ったのですが、上手く実装できませんでした。ご教授下さい!
    • basenameを使って、$1パスの最後のディレクトリ名を取得して basename.txt したいと考えています
  • usageを使った book2data.sh --help が無い

    • 実装予定がありません。
  • ルビ多めの小説だとゴミが多い

    • はい。細かいOCR制御が出来ない為仕方ありません。
      • 音声に変換して聞いてると案外その辺は脳みそがスルッとスルーしてくれる為、OCRを読書として使用する場合はmp3化をオススメします
  • GoogleDriveのゴミ箱が混沌とする

    • 毎回デdeleteコマンドを自動実行してる為、どうしてもそうなってしまいます。
    • ゴミ箱を第2のファイル保管場所としている場合、OCR専用のGoogleアカウントを取得することをおすすめします。

総括

基本的に GoogleDrive のOCR機能を使用しているので、細かい制御は聞きません。オートマです。
しかし、縦読みOK、手書きでも一部OK、印刷フォントなら99%OK、挿絵は自動スルー、多言語対応 と個人用OCRで考えると中々便利です。

1年前は表内の文字は読めなかったりしてたけど、いまは大分マシになってきたりと、大分進化されていますね。
~~GooglePhotoの学習データを流用しているので、みんなももっと学習データをGoogleさんに上納すればいいと思うよ('A`)~~

  • 2020-05-27 改稿しました。
  • 2020-05-28 スクリプトのインストールを追加しました。

gitに脆弱性が!Updateしなきゃ! でもyumに最新版がないし、ソースから入れたらエラった!ときのメモ

 

git インストール linux編としても読めます。

現状(2020/04/20) の AmazonLinux Git最新Ver.git-2.14.6-1.62.amzn1の模様。~~(ダメみたいですね~~

追記(2020/05/05)

@SSW-SCIENTIFIC さんのご指摘通り、上記linuxyumgit-2.14.6-1.62にセキュリティ修正パッチが適用されており、今回の脆弱性で言えば、Gitのコンパイル インスコ更新は必要ではありません。 この記事は_学生時代の試験範囲外の板書ノート_程度に考えて下さい。 発熱の為、追記更新が遅れたことをお詫びします。(幸いコロナではありませんでした)

追記: 今日(2020/04/21) 時点でGit最新が 2.26.1 → 2.26.2 になりましたので、コマンド修正しました。 以降は皆様で最新Verを確認し、数字を書き換えて下さい

余談(Linux 以外の事)

  • Windows は素直にここから git.exe を使ってください
    • Update の場合は PowerShellからでも
git update-git-for-windows  # で一発
  • Mac は Homebrew 使えばいいんじゃないっすかねぇ(適当)
brew update && brew upgrade git
  • ついでに(入れてるなら) Xcode の Updateも必須
    • 尚、MacOSを Catalina にする必要がある。(El Capitanに人権はない)
  • SourceTree の場合はアップデートしたシステムのGitを使うように変更して下さい

Linux で Git を入れたい!(AWS AmazonLinux2の場合)

まずGitの状態確認

$ git --version
  git version 2.14.5

はい。 最新(2.26.2) 以下は素直にUpしましょうね。(一応低Ver用のパッチ配布無くもないけど…)

# 下拵え
yum update # しなくてもいいけど
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel  perl-ExtUtils-MakeMaker
# git依存関係の物をインスコ、これしないと後で泣くことになった(過去完了)

git --version # 依存関係をインスコしてる時点でGitの古いものがを入れられる模様
  git version 2.14.5 # `yum remove git` とかで削除してもいいけど、無視無視。


# だうんろーど
wget https://www.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz
# ここ(https://mirrors.edge.kernel.org/pub/software/scm/git/)から最新を見つけて落とす

tar -zxf git-2.26.2.tar.gz # たくさん展開する
cd git-2.26.2 # いつもの


# 本番
make configure
./configure --prefix=/usr # コンパイルコンパイル
sudo make all
sudo make install # (_´Д`)ノ~~オツカレー


# 確認
$ git --version
  git version 2.26.2

詰まった所

$ sudo make all
    SUBDIR git-gui # ← これ
    MSGFMT po/pt_pt.msg make[1]: *** [po/pt_pt.msg] Error 127
make: *** [all] Error 2
$ sudo make install
    SUBDIR git-gui
    MSGFMT po/pt_pt.msg make[1]: *** [po/pt_pt.msg] Error 127 # ← これ

__最初に依存関連__を入れないと、こういうエラーが多発する。南無

Git が入ってる状態でのお手軽 Update

  • 見出し2個目の依存関連をやってないと、結局詰まるので、yumなどのパッケージからインストールした方は残念ながらエラる
# git コマンドで最新リポジトリをクローン
git clone git://git.kernel.org/pub/scm/git/git.git

# pullして、最新のソースを取得して再度コンパイル
cd git
git pull
sudo make all && sudo make prefix=/usr/local install # 見ての通り、コマンド短縮形

# 最終確認
git --version

追記 Ubuntu の場合

@github0013@github さんのご教授により簡単な方法を追加しました!(感謝!) 詳細確認の為にもコメントを確認していってね

sudo add-apt-repository ppa:git-core/ppa
# > PPAはlaunchpad.netに用意された,個人用リポジトリです(←引用説明文)。個人だからね!他の場合使用時注意ね。
sudo apt update
sudo apt install git # git公式さんが常に最新版をppaに用意してくれているので、これで最新ゲットできます。

git --version
  git version 2.26.2
  • 個人的メモ;
    • まず_PPA_を登録しなければいけません。
      • add-apt-repository を使えない場合は
        • sudo apt-get install software-properties-common で登録どうぞ
    • ppa:git-core/ppa 何ぞ?
      • _git(公式) さん_が 我々下々のために用意してくださったPPAリポジトリです。(素晴らしい)
      • PPA を検索すればわかるけど、「公式 apt アプデおっそ」 → 「自分らで用意シヨ」 っていう流れで高位な開発者たち様が提供して下さっている個人用リポです。
        • 登録すれば、誰でもUPできてしまいます。 野良パケです。ご使用はご慎重に。

残骸(旧 Ubuntuの場合)

以下はUbuntu Gitの場合必要ではなくなったが、ソース→コンパイルするなど勉強のため残しておきます

# 適度に更新
sudo apt update
apt list --upgradable
sudo apt upgrade

# 下拵え
sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
# 依存定期
sudo apt autoremove # ← aptの場合、必要でなくなった道具を掃除してくれる魔法のコマンド

# だうんろーど、ここからyumと一緒
wget https://www.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

tar -zxf git-2.26.2.tar.gz
cd git-2.26.2

# 本番
make configure
./configure --prefix=/usr
sudo make all
sudo make install

雑記

手持ちのWin端末は呆気なく終了したのに、UbuntuAWS の Updateで死ぬほどサイト探して、アホほど時間くらいました… 普段如何にrpmyum のパッケージ管理に頼ってるかがわかる(´・ω:;.:... )

実際にここまで書いといてなんだけど、普段使用しないので、来週には忘れてると思う。 んで、またネットの海を彷徨って時間を食うのは馬鹿らしいので、自分用に作った!

後はEvernoteにでも突っ込んで更新や新規構築の度に毎回コピペし直すと思う。

もしコメント注釈の意味に間違いがあったら、教えて下さい!

小説・TRPGキャラクター作成用ツール

 

 

 

CharaDise 小説・TRPGキャラクター作成用ツール

性格、嗜好各100個 こちら(キャラクター性格設定一覧)からのHP持ってきた

新人賞応募用の小説原稿書くにあたって、読んだ「物語の法則」「人さまざま (岩波文庫」が紹介されて、

曰く

人の特徴を組みあわせたり重層化したりすることは、特に脇役創りにおいては、ちっぽけな役であっても非常に有効だ。 たいていのライターは、主人公や悪役に複数の特徴を与えるやりかたは知っている(たとえば『ライオン・キング』のシンバは好奇心が強く友好的で勇敢で、悪役のスカーは賢く愛想がいいが野心的で嫉妬深い)が、その他のキャラクターにはひとつしか特徴を与えなかったり、しばしばステレオタイプの集団にして紋切り型の特徴しか与えなかったりするので、そこには驚くような特質も矛盾した性質もなく、現実味も魅力もなくなってしまう。

 

ほんの一シーンのみの登場で台詞もない、退屈で決まりきった役どころの探偵や悪者の巨漢ボディガードであっても、二つか三つの意外な特徴を持つキャラクターに仕上げていれば、突然3Dのように生き生きと物語から飛びだしてくることもある。

 

たとえば、探偵や悪党の下っ端を、期待されるとおりにタフでさもしいタイプにしたうえで、オペラ好きで母親思いという設定を加えてもいい。 役者は「この世に小さな役というのは存在しない、いるのは小さな役者だけだ」

らしい

実際、3話でマミさんが普通に負けるより、「友達が少ないボッチ設定」を見せて、持ち上げたからのパックリはインパクト大きかったので…
練習用にキャラ数増やすのにもいいかなぁって

本題:これ何?使い方?

人物の特徴を組み合わせるのに、サイコロ振れるコードを適当にJavaで書きました。

github.com

src/com/company 内の chara_personality.java(性格100個)chara_preference.java(性癖100個) が本体です
Buildすると 何回サイコロを振りますか? って聞いてきますので、適当な数を入れて下さい。

// 性癖.java
何回サイコロを振りますか
5
[80.舞踏好き, 14.酒癖が悪い, 83.肉体美が好き, 37.早寝早起き, 68.書物好き]

// 性格.java
何回サイコロを振りますか
5
[72.地味好き, 67.好奇心旺盛, 47.多弁, 91.好戦的, 12.無欲]

まぁこんな感じに被り無しで指定個数ランダムピックしてくれます。
TRPGのキャラづくりで面倒くさかったらどうぞ~

そのうち

「人さまざま (岩波文庫」が届き次第、多分中身ごっそり変えると思う
ウェブページが用意できたら、ページに埋め込んその場で使えるようにしたり、適用なフラッシュアプリにでも仕上げるかも。

Google driveをCUIで操作できるgdriveが急に死亡したので…

 

GitHub公開の本体ではOAuth認証が通らない。

急にってなったから困る

何が問題?

配布本体のOAuth認証が(多分)古くなっている事から起きている問題です。 なので、自分でOAuth認証(1.client_id 2.client_secret)を用意して、置換してやれば再び動きます。

用いた解決策

参考した解決法

以下原文。

  1. Set up OAuth:
    • Visit the Google Cloud Console
    • Go to the OAuth Consent tab, fill it, and save.
    • Go to the Credentials tab and click Create Credentials -> OAuth Client ID
    • Choose Other and Create.
    • Use the download button to download your credentials.
      • Credentialsタブの画面に(1.client_id 2.client_secret)があるので、特に落とす必要はない
    • Now you have both client ID and client secret in this credential file in the following form:
      • ↓ は落としたJSONの中身
{"installed":{"client_id": <your client id>,"project_id":"i-m-sky-bot","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret": <your client secret>,"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}

2、Enable the Drive API:

  • Visit the Google API Library page.
  • Search for Drive. ←ここ謎だったけど
    • - ↑を選んで、有効化しろ!って事 - 一瞬 1.で作ったOAuthプロジェクトが現れるのかな?って深読みして焦った
  • Make sure that it's enabled. Enable it if not.

3、Now you just need to edit the binary and insert your credentials instead of the one hard coded : -

$ sed -i "s|367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com|<your client id>|g" path/to/the/executable/gdrive

$ sed -i "s|1qsNodXNaWq1mQuBjUjmvhoO|<your client secret>|g" path/to/the/executable/gdrive

Windowsの悲しみ

尚、Win10では sed(置換コマンド) は使えねぇのでバイナリ書き換えにはStirling_v131を使用 一応PowerShellで↓を使えばいいはずなんだけど、エラったので…

$data=Get-Content .\test.txt | % { $_ -replace "置換する文字列","置換後の文字列" }
$data | Out-File .\test.txt -Encoding UTF8

Google Cloud ConsoleのOAuth Consentに詳しい人教えて!

OAuth何日持つか知らないんだよねぇ…一応30日に設定したけど、意味あるのかな? その辺どうなんだろうね

オブジェクト指向 の解説についての個人的メモ

 

オブジェクト指向 の解説についての個人的メモ

オブジェクト指向の 3つの指標

  • 独立性
  • 再利用性
  • 拡張性

classのことだよ!?

class は 1,ものを隠せて 2,まとめられて 3,量産が可能

おk.クラスは設計図
設計図の’いいところ’は →
1. 事前に計画を建てられる
- 何が必要かが分かる
2. 再現が容易
- 壊れたり、なくなっても、同じものを作れる
- 量産が容易!

class = 設計図について考えて行こう!
例えば、学校を作る!何が必要?
- 学校らしい要素を上げていく!
+ 部活? → 野球部 吹奏楽部 漫研!
+ 部活には何が必要? → 道具 場所 顧問 部員 ルール!

例:野球部 の設計図

必要なもの
- バット:20本
- ヘルメット:10人分
- ボール:200球
- グローブ:10人分
- ネット:5個
- ベース:4つ
- ユニフォーム:10人分
- 9人の部員 + 1人マネージャ
立ち振舞
- 部員:走る、打つ、捕る、投げる、声をかける、休憩する
- マネージャ:応援する、ニコニコしてる
- ボール:跳ねる、飛ぶ
- グローブ:開く、閉じる
野球部のルール
- 活動時間は放課後から日没まで
- 活動後はグランド整備を行う
- 雨天時は校内で基礎練習を行う

みたいな?
これらを書き出して、実装していけば、野球部らしい振る舞いが出来上がるよね?
でも、学校がテーマなので、運動部を個別に実装するのは手間!

再利用性

共通部分を抜き出す → 抽象化
- 野球部、サッカー部、テニス部 → 運動部!
- 吹奏楽部、コーラス部、茶道部 → 文化部!

拡張性!

ルールの追加!

インスタンス

Product.find(color:pink) ← みたいなやつ
式:Object名.Function(Argument:指定)
日本語だと オブジェクト.関数(引数) ← 日本語の方が意味不明説.
英語で覚えるようにした...変数、引数が英語で?仮引数(parameter)と実引数(argument)

医療費控除管理アプリ を作るよ!

 

医療費控除管理アプリ を作るよ!

医療費控除の申請の仕方がわかりました.(2年前くらいから)
1年間の領収証を集計して紙に書く、そして領収証の束と一緒に税務署長に出していました.
これが変わって、明細書を書く、_領収書は自宅(5年間)保管_になりました.

大きく変わった医療費控除~領収書提出不要と新たな義務

しかし、医療費一件ずつ明細書に記入していくのは大変!!

面倒!面倒!内心愚痴りながら、記入していて思いました.
「マネーフォワードみたいな_記入・管理アプリ_を作ればみんな幸せじゃね?」って

アプリで行う流れ

  1. 領収書の入力
    • 金額入力
      • 保険で補填される金額
    • 医療を受けた人の氏名
    • 病院・薬局、支払先の名称
    • 医療費の区分 ← 選択チェック
  2. 1をデータベースで保存
    • まずはアプリ(スマホ)単体で保存、後に(余裕ができたら)クラウド化
      • 余裕ができたら、iOSアプリもリリース
  3. 役所の仕様に沿った出力・印刷をする
    • 確定申告シーズンになったら、印刷して出せるようにする.← むしろ最重要.
      • ご自宅のプリンターに直結させるのが技術的に無理なので、入力データをExcel・PDFに変換して端末に保存できるようにする.

アプリ造りに必要な知識

Androidアプリ ← Java(Kotlin)
↑ まずは単体でデータ保存できるように動かす

しかし、Cloudにデータベースを保存するのなら、色々必要っぽい(右側)

ならば!
鯖レスを実装しましょう!→ FireBase
簡単な設定で右側全部を代わりにATでやってくれるらしい

つまり、勉強が1個で済む!!

アクセス数が拡大すると、細かい設定ができない分、止まったり、問題解決難航したりするみたいだけど、個人のサービスを作る分には簡単でいいので、その辺は今のところ大丈夫そう.

Unityでゲーム作るつもりだったのでは?

絵師頼むお金がありませんでした...

就職のためにも、何かしら経過物があったほうがいいと思い、まずは目標がはっきりしているものから始めることにしました.
以降はしばらく、JavaAndroidFireBaseの中心に記事を書いていくと思います.