Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

MacにEclipse 4.5 Mars に Pleiades導入

Mac版 Eclipseのダウンロード

Eclipse Downloads | The Eclipse Foundation
ここからEclipse IDE for Java EE Developersをダウンロードします

Pleiadesをダウンロード

統合開発環境 Eclipse 日本語化プロジェクト - Pleiades
ここからPleiades All in One 4.5.2のJava 64bit Standard Editionをダウンロードします。

Eclipseのインストール

ダウンロードしたeclipse-jee-mars-2-macosx-cocoa-x86_64.tar.gzを解凍します
その後、Eclipse.appを/Applicationsに移動します
なお、任意のフォルダに移動する場合はCommand + Shift + Gです
さらに、pleiades-e4.5-java_20160312.zipを解凍します
/Applications/Eclipse.appを右クリックしてパッケージの内容を表示を選択します。
次のものをごそっと全部Pleiadesからコピーします
Windowsと違ってフォルダごと移動すると中身が上書きされちゃうので注意です。
なのでFinderでやる場合はフォルダに潜ってファイル全選択をしてコピーがいいと思います。

コピー元 コピー先
pleiades/eclipse/dropins/ /Applications/Eclipse.app/Contents/Eclipse/dropins/
pleiades/eclipse/features/ /Applications/Eclipse.app/Contents/Eclipse/features/
pleiades/eclipse/plugins/ /Applications/Eclipse.app/Contents/Eclipse/plugins/

また、/Applications/Eclipse.app/Contents/Eclipse/eclipse.iniを書き換えます
ファイルの末尾に次を追加してください
javaagentの場所は/Applications/Eclipse.app/Contents/MacOSから見たpleiades.jarのPATHです

-Dfile.encoding=UTF-8
-Xverify:none
-javaagent:../Eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

Eclipseを起動します

問題が起こりやすいのでコマンドラインから起動します。
そうすると原因を教えてくれます。
私はjavaagentのPATH指定で一度失敗しました

$ /Applications/Eclipse.app/Contents/MacOS/eclipse

なお、起動時に
「eclipse.appは壊れているために開けません。”ゴミ箱”に入れる必要があります」
というイケてないメッセージが出ましたら
システム環境設定 > セキュリティとプライバシー > ダウンロードしたアプリケーションの実行許可
で全てのアプリケーションを許可に変更してみてください。

はてなブログの目次記法の簡単カスタマイズ


目次記法なるものがあって、これは良い!とおもって使ってみました。
h3, h4などに相当するタグ(はてな記法でいえばアスタリスクですね)が
勝手に目次になってくれるやつですね。

使い方は

[:content]

です。こうすると…

だっさwwwコミュ抜けるわ・・・となるわけです。

CSS改造します

ということでCSSを軽くいじります。
例によってデザインCSSのをいじります。

/* Table Of Content */
.table-of-contents {
    border: 1px solid #e4e4e4;
    padding: 20px 10px 20px 40px;
    list-style-type: none;
    border-radius: 5px;
    font-size: 90%;
    background-color: #eeeeee;
}
.table-of-contents:before {
    content: "目次";
    font-size: 110%;
}
.table-of-contents li,
.table-of-contents ul {
    list-style-type: none;
}
.table-of-contents a:link {
    color: #000000;
    text-decoration: none;
}
.table-of-contents a:hover {
    color: #000000;
    text-decoration: underline;
}

そうすると、多少ましになります。

色が変わっているのはリンク踏んだところです。
ちなみに、マウスオーバーしたときに下線がひかれるようにしています。

LINQを学んでみよう


最近、C#が好きになりかけています。
理由は楽ちんだから。
C#をやろうとすると避けて通れないものにLINQがあります。
別に使わなくてもかけるんだけど、
やっぱりLINQを知らないとほかのソースコードも読めないことがしばしば。
ちょっと勉強しないと使えるようにならないっぽい代物なので、
勉強しましょうってことでおすすめツールの紹介とプチ解説です。

LINQとは

まじめに解説しません。とりあえず、必要最低限でデータベースを使う気がないなら、
LINQ to ObjectとLINQ to XMLさえ学んでおけばOKでしょう。
今回はLINQ to Objectについて学びます。

必要なツール

Visual Studio!!
そりゃそうだって言われるので、今回はそれではなく、
https://www.linqpad.net/
LINQPadなるものがあるのでこれを使いましょう!

LINQ to Objectとは

C#のCollectionの処理ライブラリです。
ListやらDictionaryやらごにょごにょできます。
以上w
使うと便利になりますよってことで積極的に使いましょう。

ざっくり文法

省略できるのもいくつかありますが、まずはとりあえず基本形を。

var query = from [クラス名] 範囲変数名 in コレクション
    where [条件]
    select 範囲変数名

です。

LINQPadで書いてみます。

LINQPadをたちあげたら、上側のLanguageをC# Programに変えてあげて、
プログラムを打ち込みます。

public class 成績
{
    public string 学籍番号 { get; set; }
    public string 教科 { get; set; }
    public int    点数 { get; set; }
}

void Main()
{
    var 全成績 = new List<成績>() {
        new 成績 {学籍番号="S-0001", 教科="国語", 点数=90},
        new 成績 {学籍番号="S-0001", 教科="数学", 点数=80},
        new 成績 {学籍番号="S-0002", 教科="国語", 点数=70},
        new 成績 {学籍番号="S-0002", 教科="数学", 点数=70},
        new 成績 {学籍番号="S-0003", 教科="国語", 点数=20},
        new 成績 {学籍番号="S-0003", 教科="数学", 点数=50},
    };

    var query = from 成績 範囲 in 全成績
        where 範囲.点数 >= 80
        select 範囲;
    foreach (var v in query)
    {
        Console.WriteLine(v);
    }
}

実行ボタンを押すと、割とゴージャスな結果が出ます。
簡単だね!

Listの初期化の書き方言語によって微妙に違うから間違えますね。

間違い例
var 全成績 = new List<成績> {
    new {"S-0001","国語", 90},
    ...
};

とか間違った書き方しててこれでいけないんだっけ???とか思いググってしまいました。
まだまだC#初心者ですね。

MVCとか3層アーキテクチャとか勉強しなおし


ほとんど独り言のような記事です。
なんとなく理解して、なんとなく覚えるMVCとか3層アーキテクチャ
この2つ全く別物なんですが、ごっちゃにして覚えてる人多いですよね。
日本人だけかと思ったら、海外の人もそうみたい……。
正確ではないけどstackoverflowに書いてあった回答でわかりやすい回答がありました。
そもそもMVCと3層アーキテクチャはカテゴリーからして違うそうですよ。

MVCと3層アーキテクチャの違い

ハイパーざっくりかくと違いはこうです。いや、
MVCが明らかに違うじゃないか!!!って意見はあると思います。

3層アーキテクチャ
Client <-> Middle <-> Data
MVC
     Middle
     ^    |
     |    v
Client <- Data

これですね。3層アーキテクチャはわりと一言で表せて、
Middleの層を必ず介してClientとDataがやり取りされる。
正確に言うと、
プレゼンテーション層、ビジネスロジック層、データ層
で必ずビジネスロジック層を通じてデータをやり取りする
ということですね。

問題は、MVCのほう。これ一言で説明できる人いますか(;'∀')
なかなか一言で難しいうえに、私はまだ完全に理解してません。
そこでいろいろWebの情報漁って、Javaを例に書いてみました。
StrutsとかSpringの場合はこんな感じなのでしょう。
若干あってるか自信ありません。

ざっくりいうと上のテキストで書いた図のように
3層アーキテクチャとの違いはModelとViewが関連しているところですね。
なんかこの辺をじっくり解説してくれてる書籍とかあるんだろうか?
使うフレームワークによってもちょっと違う仕組みの
MVC?になっているものもあったり……。
Document-Viewとかはわかりやすいんですが……。
今時それはないか……。
さらにMVVMとかもあったりカオスです。
読んでも違いが何なのかーってあたりが激しく混乱します……。
MVVMはWPFとか触れば理解できるようになるかもしれませんが……。

Skinny Controller, Fat Model

こんな言葉を聞いたことがあります。
僕が見てきたのはFat Controller, Skinny Model
というパターンが多かったです。
なんでもControllerでやりすぎ……。
ってのがありました。
それをデータの一貫性はModelになるべくさせて
Fat Modelにすべきみたいなのをどこかで読んだ気がします。
いい指針なのかなーと思いつつ、いろいろ調べると、
んーどうもどっちかに偏るのよくないみたいですね。
Fatなクラスは作るな的なことらしいです。
んー難しいですね。

でっていう……記事になってしまいました。