侍えんじにあ 成長日記

駆け出しシステムエンジニアの学習日記です。

eclipse oxygen の日本語化プラグイン手順のまとめ

みなさんこんばんは。やきうです。

連日暑い日が続いておりますが、お元気でしょうか。

本日は先日ダウンロードしたeclipse oxygenの日本語化プラグインの手順をまとめたいと思います。

 

日本語化にあたって他のサイトを参考に進めるも、どれも役に立つとは言い難いものでした。

 

なので今回は、初心者向けにMacでのeclipse oxygen の日本語化手順をまとめます。

 

 

1、まずはpleiadesをダウンロード。

 

ダウンロードはこちら →  

http://mergedoc.osdn.jp/

f:id:biginerforgood:20180726224508p:plain

 

 

この真ん中をダウンロードします。

 

 

2、解凍後、展開先のファイルを開く。

 

他のサイトではここで、pluginとfeatureをコピーしてウンヌンカンヌンと言ってますが、全く持て必要ありません。

重要なのはこれ!

 

f:id:biginerforgood:20180726224712p:plain

 

このsetupを起動します。

 

すると、日本語化するアプリケーションを選択しろと言われるので、あらかじめインストールしておいたeclipseを選択するだけです!

 

setupをダブルクリックして起動しようとすると、エラーになる場合は、右クリックして、「開く」を選択するとうまく行きます。

 

 

これであとは、eclipseを起動するだけで…

 

 

f:id:biginerforgood:20180726224937p:plain

 

このように日本語化されます!

 

 

 

【Ruby】記述について質問

みんなさんこんばんは、やきうです。

だんだん夏が近づいてきていて、ジメジメしていますね。

私は通勤で電車に乗るのに階段を登るだけで汗だくですw

どんどん痩せていくので喜ばしいことですがw

 

さて、本日は質問です!以下のコードをご覧ください!

 

<%= form_for(@book) do |f| %>
 <%= f.select :publish, ['技術評論社', '翔泳社', '日経BP社'],
  { include_blank: '選択してください' }, class: 'pub' %><br />
 <%= f.select :publish,
  { '技術評論社' => 1, '翔泳社' => 2, '日経BP社' => 3 } %><br />
 <%= f.select(:publish,
  [['技術評論社', 1], ['翔泳社', 2], ['日経BP社', 3]]) %><br />
 <%= f.select :publish, ['技術評論社', '翔泳社', '日経BP社'],
  { include_blank: '選択してください' }, multiple: true %>
<% end %>

 

このコード、単純にセレクトボックスを表示させるためのコード4パターンですが

なぜかインデントの入れ方によってエラーになったりならなかったりするんですよね。

 

Rubyの文法的に、セレクトボックスを表示させる時のインデントの入れ方が決まっているのでしょうか?

 

わかるかたおられましたらどうか回答をお願いいたします。

【Ruby】起動中のポートを確認して閉じる

みなさんお久しぶりです。やきうです。

近頃は研修最後のプログラムであるショッピングサイトづくりに時間を取られており、うちでなかなかプログラムをする時間を取れませんでした。

そんな中でも通勤時間などを利用して参考書を読むなりしてRailsの学習を進めていました。今日は参考書で吸収した知識をコードに起こして確認していました。その最中にこんなエラーに遭遇したので、対処法を復習がてらまとめます。エラー内容はこんな感じです。

 
【エラー内容】
 
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:8080
Exiting
/usr/local/rvm/gems/ruby-2.4.1/gems/puma-3.11.4/lib/puma/binder.rb:270:in `initialize': Address already in use - bind(2) for "127.0.0.1" port 8080 (Errno::EADDRINUSE)
 
読んでみると同じサーバー上で他のポートが起動しているから、別のポートを起動しようとしたときに「他のサーバーが動いてるから起動できないよ〜」というエラー。
 
 
【改善策】
まず、起動しているサーバーのポート番号を調べる。上のエラー表示から、起動中のポート番号は8080だとわかるので、
 
sudo lsof -i:8080
 
をターミナルで実行する。結果は以下にの通り。
 
 
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby               6820   ec2-user   11u  IPv4  24810      0t0  TCP localhost:webcache (LISTEN)
ruby               6820   ec2-user   12u  IPv6  24811      0t0  TCP localhost6:webcache (LISTEN)
 
 
COMMANDを見るとRubyとある。これはRubyで起動した状態だということである。
このポートを一旦閉じるには、PIDにある番号を「kill」というコマンドとともにターミナルで入力するだけ。上の例の場合だと、
 
Kill 6820
 
である。
そして再度、rails server を実行するとサーバーが起動してくれる。
ちなみに、ポート番号を指定して起動する場合は、
 
rails server -p 指定したいポート番号
 
で起動してくれる。
 
【疑問点】
ただ、一つ疑問が残っていまして…
 
私のRailsの実行環境はcloud9なのですが、configフォルダ下のPuma.rbでは
 
port ENV.fetch("PORT") { 3000 }
 
となっているのに、cloud9で起動するとき、ポート番号を3000に指定して起動するとうまくいかず、8080で指定すると起動できるのがなぜかわかりません。
 
例えばSpring環境の場合、application.propertiesでポート番号を指定し、その指定した番号でlocalhostに接続することになります。
 
Railsの場合はそれは関係ないのですかね?
わかるかたおられましたら、ここでのコメントかtwitterにて回答してくださると嬉しいです。

Java 継承関係とコンストラクタ

みなさんこんばんは、駆け出しエンジニアです。

今日は仕事でした。仕事はまだ研修中なのですが、今日は眠すぎて、お昼の講義の時少しだけ居眠りしてしまいました(汗)寝るつもりはなかったのですが、睡魔と格闘していたら気づいたら少しだけ死んでいました。

 

講義の内容としては、AOPとThymeleafについて学んできました。

 

が、本日はSpringについてではなく、Javaについての記事です。

行き帰りの電車の中で、Java SE8 Silver の勉強をしているのですが、結構わからない問題も多く、まだまだだな、と痛感する毎日です。

そんな問題の中で今日印象に残ったのは、継承関係とコンストラクタに関する問題です。

 

では、こちらのサンプルコードをごらんください。

 

f:id:biginerforgood:20180604212038p:plain

 

こちらのコードを実行すると、「AB」と表示されることになります。

その前にまず、継承関係にあるクラスのインスタンス生成時のコンストラクタの動作について押さえたいと思います。

 

 

以上の2点を確認した上で、ソースコードを追いかけたいと思います。

 

サンプルコードでは、mainメソッドで、まず、A型の、Bのインスタンスを生成しています。このコードを見る限り、AもBもコンストラクタを持ちます。

なので、Bをインスタンス化した時、先にBのコンストラクタが先に実行されそうに見えますが、このコードではAのコンストラクタが先に実行されます。

 

なぜなら、スーパークラスはサブクラスの共通部分を抽出して定義したいわば「基盤」であり、先に基盤を作ってから差分を追加する必要があるからです。

 

この考え方を実現するため、コンパイラが、サンプルコード十行目に、スーパークラスのコンストラクタを呼び出すコードを自動的に追加します。

 

public B(){

        super();     ⇦コンパイラによって自動的に追加されたコード

        System.out.println("B");

}

 

以上のように追加されたコードが実行されると、Bのコンストラクタに制御が戻り、残りの処理を実行します。

よって、コンソールには「A」「B」と表示されるわけです。

 

 

 

どうやら明後日から関西は梅雨入りのようです。駅まで自転車通勤なので憂鬱ですね…

 

 

Rubyの繰り返し文

みなさん、初めまして、駆け出しエンジニアです。

今日は、日曜日でしたがみなさんはどのように過ごされましたか?

私は、注文していたMacBook Airが今日届き、一日の大半を初期設定とJavaなどの環境構築に費やしていました。

初めてのMacということでかなり時間を取られましたよ…

 

さて、本題はここから。

環境構築を終えた後は、昨日届いたRubyの学習書を元に、Rubyの学習を始めました。

すでにJavaなどで基本的なプログラミングの考え方は習得しているので概念などの理解は問題なく、今のところ、Javaなどでこう書いていたものを、Rubyではどのように書くのかを確認するという感じでした。

Rubyは初心者向けの言語ということで、記述がかなり楽で覚えやすそうです。

 

その中で面白いな、と思ったのが繰り返し処理の書き方です。

Rubyでは、timesメソッドを用いることで、以下のように繰り返し処理を記述できます。

f:id:biginerforgood:20180603225915p:plain

 

まずは一行目。

これはJavaを配列宣言に書き直すと、

String[] yuko = {"新木優子","優子","ゆんぴょ"}

ですね。

しかし、Rubyでは変数の型名を宣言する必要がないのでこのような記述になります。

 

つぎに3〜5行目ですが、これで繰り返し処理を定義できます。

構文としては、

 

繰り返す回数.times do

繰り返したい処理

end

 

となります。上記コードでは、文字列の出力処理が3回繰り返されることになります。

そして、3〜5行目でもう一つ機になるであろうポイントは4行目の#{"yuko[a]"}。

Rubyでは、文字列の中に変数名を記述して出力するためにはこのような記述の仕方が求められます。

 

この3〜5行目をJavaの書き方に直すと、

 

for(int i=0; i<3; i++ )

{

  System.out.print(yuko[a] + "ちゃん結婚しよう"); 

}

 

ですね。そして、上記のRubyソースコードを実行すると以下の結果になります。

 

f:id:biginerforgood:20180603225925p:plain

 

 

余談ですが、こういうどうでもいい出力をする時って、人によって何を出力させるか異なるみたいなんですよね。

僕の知ってる人だと、テニスの王子さまのキャラへの愛を叫んでいたりとか、人の悪口を書いたりする人もいて、まさに、十人十色です。

 

みなさんは、何か出力させる時のこだわりはありますか?