まったり技術ブログ

Technology is power.

【JavaFX】レイアウトを使ってみる

f:id:motikan2010:20180107061741j:plain
以下のレイアウトを紹介します。

  • VBox クラス:垂直にUIコントロールを配置
  • HBox クラス:平行にUIコントロールを配置
  • FlowPane クラス:平行にUIコントロールを配置(折り返し有り)
  • BorderPane クラス:上下・左右・中心の位置にUIコントロールを配置
  • GridPane クラス:行と列を指定してUIコントロールを配置
  • TilePane クラス:クリッド状にUIコントロールを配置
  • StackPane クラス:重ねてUIコントロールを配置

VBox クラス

垂直にUIコントロールを配置します。
上部から順に配置されていきます。

f:id:motikan2010:20180107044324p:plain:w100
VBox (JavaFX 8)

import com.google.common.collect.Lists;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.List;

public class VBoxExample extends Application {

    @Override
    public void start(Stage stage) throws Exception{
        stage.setTitle("HBox Example");

        List<Button> buttonList = Lists.newArrayList();
        for (int i=0; i<5; i++) {
            buttonList.add(new Button(Integer.toString(i)));
            buttonList.get(i).setPrefWidth(80);
        }

        VBox vBox = new VBox();
        vBox.setAlignment(Pos.CENTER);
        vBox.setPadding(new Insets(10, 10, 10, 10));
        vBox.getChildren().addAll(buttonList);

        stage.setScene(new Scene(vBox));
        stage.show();
    }
}

UIコントロール間に間隔を空けることも可能です。

VBox vBox = new VBox();
vBox.setAlignment(Pos.CENTER);
vBox.setPadding(new Insets(10, 10, 10, 10));
vBox.setSpacing(5.0); // 追加
vBox.getChildren().addAll(buttonList);

f:id:motikan2010:20180107044413p:plain:w100

続きを読む

Specificationインタフェースを利用した副問合せ

Specificationインタフェースを利用した副問合せに関して、あまり情報が見当たらなかったので、メモ程度にφ(・ω・ )。

サンプルテーブル

よく見かける 1対多 の関係で説明していきます。
f:id:motikan2010:20171013000832p:plain:w400

ユーザ テーブル

サンプルコード

下記のサンプルコードでは、「同じ内容のツイートを3回以上しているユーザ」を選択という少し面倒くさいSQL文を発行してみます。
f:id:motikan2010:20171014134003j:plain

続きを読む

PHPBrewに"intl"拡張をインストール

2017/11/07 ※追記 こちらのやり方が簡単!!

qiita.com
できなかったよ。という方が本記事の方法も試してみてもいいかと。

動作環境

バージョン
macOS 10.12.6
PHPBrew 1.22.6
PHP 7.1.0

ことの始まり

CakePHP3を入れたのだが、起動ができない。
intlを有効にしないといけないらしい。

$ bin/cake server -p 8765

PHP Fatal error:  You must enable the intl extension to use CakePHP.
 in /Users/admin/PhpstormProjects/cake3app/config/requirements.php on line 31

Fatal error: You must enable the intl extension to use CakePHP.
 in /Users/admin/PhpstormProjects/cake3app/config/requirements.php on line 31
続きを読む

Zend Framework2をHerokuで動かす

最近ZF2をさわり始めたので、メモ程度に書いてみる。
ちなみにHerokuはHTTPS前提なのでFacebookのOAuth認証といった要HTTPSの動作確認で重宝した。

Zend Framework2 インストール

MVC Skeleton Application - Install - Zend Framework

$ composer create-project -n -sdev zendframework/skeleton-application ZF2

Procfileの作成

Customizing Web Server and Runtime Settings for PHP | Heroku Dev Center
ドキュメントルートを「/public」に設定する為、下記のコマンドで「Procfile」を作成します。

echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile

Herokuへデプロイ

デプロイの際に「composer.lock」が.gitignoreファイルに含まれていないことを確認してください。
herokuがcomposer.lock必須になったのでcomposerの入れ方をメモしておく - KayaMemo

$ heroku create
$ git add .
$ git commit -m "first commit."
$ git push heroku master

動作確認

$ heroku open

f:id:motikan2010:20170806185032j:plain
終わり…。「Procfileの作成」の部分が普段と違うところだろうか。

Java製HTTPプロキシライブラリ『LittleProxy』入門編

f:id:motikan2010:20170725011556j:plain

今回はJava製のHTTPライブラリ『LittleProxy』を使ってみます。
Java製のHTTPライブラリは種類豊富だと思っていたのだが、想像していたよりも圧倒的に少なかった。
そんなこともあり、デファクトスタンダードというものもなさそうなので、ほどほどにメンテナンスされている『LittleProxy』を選定。

github.com

続きを読む