プログラミング勉強メモ

Ubuntu, Java, JavaScript, SpringBoot, SQL, AS400/RPG

Spring Boot で作ったポモドーロ テクニック用アプリ on Heroku

https://stark-fjord-96170.herokuapp.com/

SINGLE TASK というアプリで、 Herokuで動かせた。 ひとまず納得の動き。

使い方

やることを書いて、スタートボタンを押すだけ。
カウントダウン開始。

普段、仕事でもポモドーロ テクニックを意識しているんだけど、ちょうどいいタイマーがなかったので(コマンドプロンプトでカウントダウンbat作ってますが)作ってみた。

視覚的にぱっと見でわかりたかったのです。

※注意:やることには、「世界制覇」とかではなく25分くらいで終わるものを書いてね。

Ubuntu で Spring Boot アプリをHerokuで動かす

STS、Gradleで作ったものがうまく行かなかったので先ずはHello Worldからや!

Heroku

devcenter.heroku.com

ここの通りにやったら出来ました。

実際のアプリがこちら(Hello Worldです)。

https://stark-fjord-96170.herokuapp.com/

ポイント:以下をインストールすること

そうすればドキュメント通りでいけます。

パソコンの処分について検討してみた

壊れたパソコンを処分したい

けど、個人情報とかあるし簡単には行かないんだろな〜と思って調べてみた。

パソコン

先ずは自分のパソコン整理

  • sony ノートパソコン

大学時代から使っていたもの。壊れてしまってる。

新入社員2年目くらいかな。これも壊れてしまっている。vistaである。→処分したい

  • HP ノートパソコン

アウトレット品を買ってUbuntuを入れているが、スペック低すぎて使い物にならない。→処分したい

使いやすかったけど壊れてしまっている。→処分したい

ジャンク品を買ってLinuxいれてる。→処分したい

  • acer ノートパソコン

5年前くらいに4万ほどで購入。メモリも増設しUbuntuいれて大活躍中。

  • NEC ノートパソコン

Win10

調べてみた

メーカーリサイクル

ざっくりこういう事と思う
→リサイクルするから破壊するけどその過程で万が一情報漏洩があっても責任はとれません。

HP

www8.hp.com

メーカーでは、万が一データが漏洩した場合でも責任は負えません。

TOSHIBA

dynabook.com

こちらも。

データの扱いについてはお客様による管理が前提になります。
お客様のデータは、お客様ご自身の責任において消去をお願いします。

Apple

リサイクルプログラム - PCリサイクルプログラム - 家庭系パソコンのリサイクル - 家庭系パソコンの回収・リサイクルのQ&A - Apple(日本)

お客様がプログラム・データ等の消去・削除を行わないまま、
Appleに製品の引き渡しをされた場合には、
Appleは、それらの破損・漏洩等について、一切の責任を負いません。

メーカー以外

無料回収業者

パソコン廃棄.com 無料でパソコン廃棄・リサイクル・日本全国対応

わたしの結論

  • 個人情報等、絶対ないと言い切れるなら、無料回収業者さん。

  • ソフマップ・あるいは自分でHDD物理破壊→その後リサイクル、または分解していればゴミとして捨てる。

いずれにしても、手間がかかるのう。

SpringBootアプリをHerokuで使ってみる(使えてない)

Build succeeded なんだが Open app でエラーになっている状況。
後日再開するためにメモだけ残します。

コードはこちら。

github.com

やったこと。

  • ローカルで動く事を確認

application.properties

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
  • Heroku でアプリ作成

  • application.properties 変更

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.jpa.hibernate.ddl-auto=update
logging.level.jdbc=OFF
logging.level.jdbc.sqltiming=DEBUG
  • table 作成
psql -h xxx -U xxx -d xxx 

で入ってテーブル作成。

  • Procfile 作る
web: java -jar target/spring-page-0.1.0.jar -server.port=$PORT
  • heroku git:remote -a spring-page
  • git add .
  • git commit -am "make it better"
  • git push heroku master ・・・この辺は手順通り

  • Build succeeded → Open app でエラー

2018-08-03T23:01:53.000000+00:00 app[api]: Build started by user xxx@mail.com
2018-08-03T23:02:26.050270+00:00 heroku[web.1]: State changed from crashed to starting
2018-08-03T23:02:25.757608+00:00 app[api]: Release v4 created by user xxx@mail.com
2018-08-03T23:02:25.757608+00:00 app[api]: Deploy 29da64d9 by user xxx@mail.com
2018-08-03T23:02:29.196795+00:00 heroku[web.1]: Starting process with command `java -jar target/*.jar`
2018-08-03T23:02:31.209274+00:00 heroku[web.1]: Process exited with status 1
2018-08-03T23:02:31.147502+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2018-08-03T23:02:31.148860+00:00 app[web.1]: Error: Unable to access jarfile target/*.jar
2018-08-03T23:02:31.329269+00:00 heroku[web.1]: State changed from starting to crashed
2018-08-03T23:02:31.331563+00:00 heroku[web.1]: State changed from crashed to starting
2018-08-03T23:02:35.312171+00:00 heroku[web.1]: Starting process with command `java -jar target/*.jar`
2018-08-03T23:02:36.000000+00:00 app[api]: Build succeeded
2018-08-03T23:02:37.974187+00:00 heroku[web.1]: Process exited with status 1
2018-08-03T23:02:38.028941+00:00 heroku[web.1]: State changed from starting to crashed
2018-08-03T23:02:37.908651+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2018-08-03T23:02:37.910194+00:00 app[web.1]: Error: Unable to access jarfile target/*.jar
2018-08-03T23:02:55.666004+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=spring-page.herokuapp.com request_id=6580218c-a401-4684-b123-73f0815f0a46 fwd="106.154.26.247" dyno= connect= service= status=503 bytes= protocol=https
2018-08-03T23:02:56.657023+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=spring-page.herokuapp.com request_id=c001ffce-c75e-41db-82dc-a23a3e7ca094 fwd="106.154.26.247" dyno= connect= service= status=503 bytes= protocol=https
2018-08-03T23:03:17.158563+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=spring-page.herokuapp.com request_id=7d3b650e-6e99-4f04-bd37-4d1faa0ff4b0 fwd="106.154.26.247" dyno= connect= service= status=503 bytes= protocol=https
2018-08-03T23:03:18.215271+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=spring-page.herokuapp.com request_id=433ef0b2-3703-4ae4-91d0-c33e7a9054da fwd="106.154.26.247" dyno= connect= service= status=503 bytes= protocol=https
^Cバッチ ジョブを終了しますか (Y/N)? y

プログラミングコンテストの標準入力:Java Scanner

ちょっと手間取りましたのでメモを残します。

入力

1 2
S

これをこう取ろうとしてましたがこれは間違い。

    public static void main (String[] arg) {
        
        Scanner sc = new Scanner(System.in);
        String n = sc.next();        // 1 2 が取れると思ってるけど違う
        String[] ar = n.split(" ");

        int a = Integer.parseInt(ar[0]);
        int b = Integer.parseInt(ar[1]);

        String s = sc.next();
        
        System.out.println(String.valueOf(a+b) + s);
    }
}

正しくはこちら

import java.util.*;
public class Main {
    public static void main (String[] arg) {
        
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt(); // ひとつずつ取る
        int b = sc.nextInt(); // ひとつずつ取る
        
        String s = sc.next();
        
        System.out.println((a+b) + " " + s);
    }
}

ちなみにちょっとしたものですが、同じディレクトリに以下を置いとくと何度も使うので便利。

run.bat

javac Main.java
java -cp . Main

android アプリ開発 2日目 : 画面部品

android アプリ開発勉強を始めたのでメモを残します。
目的はアプリのリリースです。

画面部品について

android:id

<TextView
    android:id="@id+id/hoge"

webアプリでいうところのIDと同じとおもわれ。

android:text

@string/hoge

ここに、strings.xml に書いている文字列がでてくる。

単位

px がつかわれない。dp, sp を使う。

  • dp:ビュー、ビューグループのサイズ設定
  • sp:テキストサイズの設定

勉強方法:汎用機系からオープン系へ

私がオープン系へスキルチェンジする際に勉強したことを時系列で書いてみたいと思います。
汎用機系からオープン系へスキルチェンジしたい方の参考になれば幸いです。

実際にはこの他の要素(業務経験とか簿記もってるとか)も絡むと思いますが、
業務経験は除いて純粋にオープン系へ行くための勉強という視点で書いてみます。

前提

  • 汎用機系で数年間の業務経験あり
  • 基本的なPCスキル、プログラミングスキル(手続き型言語)はある状態
  • 基本情報は受かっており情報処理についても知識を持っている(いや持っていた。試験前の一時的には)

Javaの勉強

本はバンバン買ってどんどん読んでしまってすぐ忘れてしまうタイプですが、この本は3回以上は読みました。

book.impress.co.jp

資格取得

www.sikaku.gr.jp

サーティファイJava3級、2級を取得。
上記の本を読んで過去問をやりこむスタイル。

3級と2級を順番に受験した。
上司からは3級なんて新人レベルだから2級うけろって言われたけど、私は3級からやったし3級からをおすすめしたい。 基本があっての応用で、結局簡単なところをちゃんと理解していれば、あとが楽になるのです。

というのは簿記を受けた時の経験で、簿記は3級を100%理解していれば2級は感覚的には6割できたも同然なのです。

javac

javac と書いたのはeclipseとか使った事なくてWebアプリの仕組みも知らなくて、どうやったらWebアプリって作れるんだろうと思いながら、ひたすらコマンドプロンプトで書いたJavaプログラムを動かしていた時期がありました。
内容としては上記の本を参考にゲームを作っていました。

おまけ Python

ここで急にPythonが出てくるのはハッカーに憧れてハッカーになるにはで検索したらPythonだったからで特に何にも成し遂げられなかったけど楽しく勉強した時期がありました。

NetBeans

そのあとはネットでも評判のよいこちらの本で勉強をはじめたけどこれは挫折。まだ早かったか。

www.amazon.co.jp

Ruby

ここでRubyに出会い、たのしくのめりこむ。

https://www.amazon.co.jp/たのしいRuby-第5版-高橋-征義/dp/4797386290/ref=sr_1_2?s=books&ie=UTF8&qid=1532734652&sr=1-2&keywords=%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AERU%EF%BD%82%EF%BD%99

Ruby on Rails で簡単なWebアプリを作って苦労してHerokuにアップしたりした。 Rubykaigiにも行った。いまなら以下の本を読むと思う。もちろん持ってる。

https://www.amazon.co.jp/プロを目指す人のためのRuby入門-言語仕様からテスト駆動開発・デバッグ技法まで-Software-Design-plusシリーズ/dp/4774193976/ref=pd_sim_14_2?_encoding=UTF8&pd_rd_i=4774193976&pd_rd_r=4618c212-91f6-11e8-a11c-11f06d043b58&pd_rd_w=fLBNJ&pd_rd_wg=X4b81&pf_rd_i=desktop-dp-sims&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=7990452376513976631&pf_rd_r=GZXDBH36N15R6R0QN8A3&pf_rd_s=desktop-dp-sims&pf_rd_t=40701&psc=1&refRID=GZXDBH36N15R6R0QN8A3

内定

さてこの時点で転職は可能でした。

内定その後

その後の勉強については簡単に。

  • スッキリわかる サーブレット&JSP入門 (スッキリシリーズ) を読んでアプリを作ってみる。
  • SQLについて本を読み家でやってみた。
  • JavaScript の勉強。
  • dotinstall
  • paiza
  • yukicoder