ArchlinuxでWindowsで作成したZIPを文字化けなく開く方法

linuxとの日々だったり : unzip -O CP932 *

ArchlinuxというかLinuxWindowsで圧縮されたzipファイルをunzipで展開すると容赦なくファイル名が文字化けする。 これに対応するには上記のサイトに記載されている通り、文字コードを指定して開けるようにパッチがあたった状態のunzipが必要になる。

AURにパッケージ名unzip-iconvでパッチがあたった状態のunzipがある。 2018/11/23現在ではyaourtは非推奨なので、yayを使用したインストールを行う。

yay -S unzip-iconv

インストール後、unzip -O CP932 test.zipで文字化けなく展開可能になる。 なお、複数のzipファイルを一気に展開するのは以下のコマンド。 unzip -O CP932 '*.zip'

NEW HORIZON

ようやくブログを更新する気力と時間が取れたので新しく学ぼうと思ったことについて書いてみます。

ブログには全く書いていなかった気がするのですが、7月から転職活動をはじめ9月になんとか今の会社に拾ってもらい、現在は忙しい毎日を過ごしています。 転職活動中に流石に勉強しないとマズいよなという気待ちでReactを学ぼうと考えた訳ですが、ドキュメントや記事の読み込み部分で英語がボトルネックとなりなかなか学習が進まない現実がありました。

そんなわけで英語を再学習する必要性をヒシヒシと感じながら今の会社に入社しましたが、入社後に海外出身の社員との会話や海外への研修などがあり、これは真面目に英語を学ばなければならないと考えました。 早速何冊か英語の書籍をポチり自分のスキルレベルを見つめ直すと、これあかんやつや…という事がわかり、中学英語の学習から(要はアルファベットから)学びなおすことにしました。

決意したは良いのですが、正直に英語を1から学ぶに当たってどんな教材を使って勉強をすれば良いのか分からなかった為、英語学習のガイドブックをまず購入しました。

それがこれ。

英語上達完全マップ―初級からTOEIC900点レベルまでの効果的勉強法

英語上達完全マップ―初級からTOEIC900点レベルまでの効果的勉強法

この本には、英語の学習方法だけでなくオススメ教材が書いてあり、1からの学習には中学の教科書が良いとのことなので、記事タイトルのNEW HORIZON(東京書籍)を教材屋で買うに至りました。

数ある教科書の中でNEW HORIZONをなぜ買ったのか?という点についてはエレン・ベーカー先生が可愛かったからです。

さて、NEW HORIZONの感想ですが、内容としてはそれぞれの章ごとに短いドラマ仕立てのストーリーが展開する構造になっており、簡単かつ実践的な英語でキャラクター同士が会話をするという点が強みかなと思いました。 例えばNEW HORIZON 1のユニット3パート2では転校生のディーパ・ミトラちゃんとサキちゃんがDo you...を使って相手の趣味や普段やっていることを尋ねるという構成なのですが、話の構成次第でDo youだけでここまで会話が出来るのか!と目からウロコが落ちました。

私の勉強の仕方としては教科書ガイドのリスニングCDを聴きながら本書を読み、単語や言い回しをノートと単語帳に書き込みながら何回も声に出す、といった中学生と同じ勉強方法になりますが、中学時代と異なるのは質問が出来る先生がいないという事だけかもしれません。

初歩の初歩から英語を学び、結果的にいつまでにどこまでのレベルに達するかなどの展望は全く見えていませんが、次のプログのネタにする際にはもう少し詳しく語れるものを得ていたいと思います。

ディーパ・ミトラちゃん(可愛い)

ReactとSpring Bootのプロジェクトを作成した

目的

ReactとSpring Bootのプロジェクトを作成しました。
かなり荒い構成と思いますが、取り急ぎGitHubにて公開します。
github.com

説明

参考にした記事

本プロジェクトのソースは下記の記事を参考に作成しました。

アプリケーションの動作内容

ReactからRestにてSpring BootにアクセスしJsonを取得してブラウザに表示します。
Spring BootではPostgreSQLにアクセスしテーブル内のデータを取得しています。

動作環境

Amazon Linux AMI release 2018.03
JDK 10
Node v10.6.0
PostgreSQL 9.6
Spring Boot 2.0.4.RELEASE
React 16.4.1
Gradle 4.9 & Gradle Wrapper

プロジェクトの構成

プロジェクトの各フォルダの役割は下記です。
- GitHubにコミットしてあるもの
spring-react-sample/frontend/src/ Reactのソースを格納
spring-react-sample/src/main/resources/public/ Javaのソースを格納
spring-react-sample/src/main/resources/public/ 静的ファイル(index.html)を格納。Spring Boot組み込みTomcatはこのフォルダを読み込んで静的ファイルを表示します。

  • GitHubにコミットしていないもの
    spring-react-sample/build "./gradlew build"でビルドされたjarファイルが格納されています

application.yml

下記のファイルはセキュリティの都合push指定いません。
実際に動作させる場合は下記内容のファイルが必要になります。
spring-react-sample/src/main/resources/config/application.yml

spring:
  datasource:
    url:  jdbc:postgresql://localhost/データベース名
    username: ユーザー
    password: パスワード
    driverClassName: org.postgresql.Driver
server:
  port: 8080

Amazon LinuxにインストールしたPostgreSQLを使えるようにする

参考

記事の作成にあたって以下の記事を参考にさせていただきました。
http://jason4zhu.blogspot.com/2017/10/airflow-notes-from-0-to-1.html
https://dev.classmethod.jp/cloud/aws/install-postgresql-on-aws-ec2/ http://www.utsushiiro.jp/blog/archives/327

目的

インストールが完了したPostgreSQLを使用できるようにしていく。
なお、学習環境なのであまりセキュリティに関しては考えないでおく。

手順

いろいろと弄っていたので手順が正確ではないかもしれないが、下記でテーブルの作成が行える状態まで設定を行うことが出来た(と思う)。

最初に、PostgreSQLをインストール後デフォルトで作成されているpostgresユーザのパスワードを変更する。
合わせて、実際に使用するpostgresuserを作成した。

sudo passwd postgres
sudo adduser postgresuser
sudo passwd postgresuser

次に下記コマンドでPostgreSQL内にpostgresuserユーザを作成した。
この際に、実際に使用するmydbデータベースの作成時にpostgreuserというデータベースも作成した。
postgreuserデータベースがないと何かでエラーが出た気がするけども正直よくわからない 。

createuser -AdPE postgresuser
createdb -E UTF8 -U postgresuser -W mydb
createdb -E UTF8 -U postgresuser -W postgreuser

PostgreSQLにpostgresユーザで接続し、postgresユーザのパスワード変更と、postgresuser ロールの作成(名前が紛らわしい)、postgresuserロールへのall権限の追加を行った。

sudo -u postgres psql postgres

下記操作はpsql内で実行。

ALTER USER postgres WITH ENCRYPTED PASSWORD 'some password';
CREATE ROLE postgresuser WITH LOGIN ENCRYPTED PASSWORD 'some password';
GRANT all ON DATABASE mydb TO postgresuser;

psqlから抜ける。

Ctrl + D

peer認証という認証方式が新規に作成したユーザでのログインを阻んでくるので、パスワード認証に変更する。
(このへんはちょっと知識が足りません…)

vimでpg_hba.confを修正する。

sudo vim /var/lib/pgsql96/data/pg_hba.conf

pg_hba.confを下記のようにpeerとidentの部分をmd5に変更した。

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5
# IPv4 local connections:
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32           md5
# IPv6 local connections:
#host    all             all             ::1/128                 ident
host    all             all             ::1/128                 md5

PostgreSQLサービスのリスタート

sudo service postgresql96 restart

あとは、postgresuserユーザでpsqlに接続してテーブルを作成したりして確認する。

sudo -u postgresuser psql mydb

create tableなど…

Amazon Linux AMI release 2018.03にPostgreSQL9.6をインストールする

参考(8/4追加しました)

記事の作成にあたって以下の記事を参考にさせていただきました。
http://jason4zhu.blogspot.com/2017/10/airflow-notes-from-0-to-1.html
https://dev.classmethod.jp/cloud/aws/install-postgresql-on-aws-ec2/ http://www.utsushiiro.jp/blog/archives/327

目的

HerokuなどでPostgreSQLを使いそうなので学習環境のAmazon Linuxにインストールを行った。
本当は10を使用したかったが、リポジトリにデフォルトで登録されておらずめんどくさそうだったのでやめた。

Amazon Linuxのバージョン確認

下記コマンドを発行

cat /etc/system-release

Yumを使用してインストール

下記コマンドでPostgreSQLに関するパッケージの一覧が取得できる模様。

yum list postgresql*

インストールを行うパッケージは下記の2つで良い模様。

sudo yum install postgresql96-server.x86_64
sudo yum install postgresql96.x86_64

初期化とサービスの自動起動設定を行う。
なお、サービス名は「postgresql96」として登録されている。

sudo service postgresql96 initdb
sudo chkconfig postgresql96 on

サービスを起動してエラーにならなければインストールは完了。

sudo service postgresql96 start

※使用して不足があれば追記します。

Spring Bootのチュートリアルをやる

長年Javaのプロジェクトに関わりながらSpringを使った経験が無かったため求職期間中にSpring Bootを触ってみることにした。

今回試すチュートリアル

spring.io

動作確認を行った環境

Amazon Linuxで動作確認を行った(Cloud9環境で開発しているため)

チュートリアルを試す上で行ったこと

Open JDK10のインストール

当初Open JDK9で試したもののSSL証明書が古い?バグがあるらしく、gradle buildで Mavenリポジトリにアクセスすると下記の接続エラーが発生した。

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

面倒なので、最新の安定版のOpen JDK10をインストールすることにした。

Amazon LinuxへのJDKのインストールはカンタンで、Open JDKのサイトからLinux用バイナリを取得して展開する。
その後、環境変数のPATHとJAVA_HOMEを設定して終わり。
(お勉強環境なのでホームディレクトリにそのまま配置しました)

bashで実行

wget https://download.java.net/java/GA/jdk10/10.0.2/19aef61b38124481863b1413dce1855f/13/openjdk-10.0.2_linux-x64_bin.tar.gz
tar -zxvf openjdk-10.0.2_linux-x64_bin.tar.gz

.bash_profileに下記を追加

export JAVA_HOME="$HOME/jdk-10.0.2/"
export PATH="$HOME/jdk-10.0.2/bin:$PATH"

Gradleのインストール

今回はビルドツールにGradleを利用することにした。
最新版のGradle4.9をインストールする手順はJDKの手順とほぼ同じ。

bashで実行

wget https://services.gradle.org/distributions/gradle-4.9-all.zip
unzip gradle-4.9-all.zip

.bash_profileに下記を追加

export PATH="$HOME/gradle-4.9/bin:$PATH"

build.gradleの変更

チュートリアルのbuild.gradleは若干古い&今回インストールを行ったJavaバージョンの関係でbuild.gradleの一部を修正。
なお、SpringはJava10に正式に対応している模様。

build.gradle(一部)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.4.RELEASE")
    }
}

sourceCompatibility = 10
targetCompatibility = 10

gradle build

あとは、チュートリアル通りにプロジェクトを作成してgradle build && java -jar build/libs/gs-spring-boot-0.1.0.jarするだけでテストサーバが立ち上がるのでlocalhost:8080にアクセスをして動作確認をするだけ。かんたんですね!

所感

実際にチュートリアルを試してみて思っていた以上にカンタンで驚きました。
Spring Bootのサイトを見るとガイドも豊富そうなのでじっくり読んでみたいと思います。
https://spring.io/guides