ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

Thymeleaf2.xでの「少し困った!」に役立つミニリファレンス集

Thymeleafを使用した開発で、実際に少し困ったことについてまとめてみました。

これから利用する方の役に立てればと思います。

リンクにパラメーターを含める

変数${}の前後に__を追加し、__${}__の形にする。

<a th:href=“@{/hoge/__${e.no}__/add}">hoge</a>

formタグのactionに文字列変数を展開する

変数に定義した文字列をリンクとして展開する場合、@{}内に${}で変数を定義する。

<!-- 通常の文字指定 -->
<form th:action=“@{/hoge}” method=“post”>

<!-- 変数指定 -->
<form th:action=“@{${hoge}}” method=“post”>

「data-」属性に値を設定する

<span th:attr="data-hoge=${hoge}">hoge</span>

変数を含んだ文字列の展開

「|」で括る

<span th:text=“|${hoge}です。|”/>

JavaScriptで変数を扱う

<script>タグにth:inline="javascript"を追加し、/*<![CDATA[*//*]]>*/で括る。
その中での変数は、/*[[]]*/で括る。

<script th:inline="javascript">
/*<![CDATA[*/
    /*[[@{/hoge}]]*/
/*]]>*/
</script>

JavaScriptで変数を文字で連結する

変数を/*[++]*/で括る。

<script th:inline="javascript">
/*<![CDATA[*/
    var val = "aaa" + /*[+ [[${hoge}]]  +]*/;
/*]]>*/
</script>

比較演算子

Thymeleafでは、比較演算子がそのままでは使えないので、次の標記を使用する。

> gt
< lt
>= ge
<= le

変数を文字列として扱い比較する

パスを含む変数を比較したい場合、''で変数を文字列化すると比較できる。

<span th:if="${'__*{path}__' == '/hoge'}">hoge</span>

Thymeleafの記載がある書籍

C#のアプリケーション設定でプリンタ設定(PrinterSettings)を保存・読み込みできるようにする

C#でプリンターの設定(PrinterSettings)を保存する必要があったので、アプリケーション設定で保存するようしました。

しかし、アプリケーションが起動している最中は、設定の読み込み・保存が有効でも、アプリケーションを再起動すると設定が読み込まれない問題に遭遇しました。

いろいろ試した所、標準のやり方ではなく、手動でコードを書く必要があったのでその方法をまとめました。

手順

1.アプリケーション設定で通常通り設定を宣言している場合、削除します
f:id:shinsuke789:20170922101522p:plain

2.アプリケーション設定の上部にある「コードの表示」をクリックします
f:id:shinsuke789:20170922101525p:plain

3.設定用のコードが表示されるので、クラス内に設定名のプロパティで次のようなコードを追記します

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsSerializeAsAttribute(SettingsSerializeAs.Binary)]
public PrinterSettings Printer
{
    get
    {
        return ((PrinterSettings)(this["Printer"]));
    }
    set
    {
        this["Printer"] = value;
    }
}

この場合は、PrinterSettingsという型で保存を行います。
プロパティ名・get/setの[]内には設定名を宣言します。

通常のアプリケーション設定で宣言するとXMLで保存され、それが読み込まれないので設定が復元できないようです。
それを回避するため、上記コードの2行目にある[global::System.Configuration.SettingsSerializeAsAttribute(SettingsSerializeAs.Binary)]を追加してバイナリで保存するようにします。

単純なプロパティのみのクラスで試した所、XML形式で保存され、読み込み・保存とも可能でした。
ひょっとすると一定の階層を超えると復元できないのかもしれません。

4.設定の読み込み・保存は通常通りのコードで可能です。

// 読み込み
PrinterSettings p = Settings.Default.Printer;

// 保存
Settings.Default.Printer = printerSettings;
Settings.Default.Save();

まとめ

stringやintと同じような形でPrinterSettingsを保存しようとして、1日ぐらい悩みました。
こういうときは一晩おくと冷静になって解決方法が見つかるんですよね。

そのおかけでなんとか解決することができました。

基本的にアプリケーション設定にない型を保存する場合は、手動でプロパティを宣言しバイナリで保存するようにした方が良いでしょう。

参考

調査していると、プリンターの設定方法を質問しているページがあったので参考にしました。
やはり同じようにアプリケーションを再起動すると読み込まれないと書かれています。

c# - how to Save PrintDocument .PrinterSettings in a file so that user have not to select printer settings everytime? - Stack Overflow

上記サイトは、base64に変換して保存・読み込みする方法でしたが、そんなことしなくてもバイナリ設定で解決です。

現場ですぐに使える!  VisualBasic 2015 逆引き大全 520の極意

現場ですぐに使える! VisualBasic 2015 逆引き大全 520の極意

MacでJavaのインストールとバージョンの切り替えを行う

Javaのインストール

1.OracleサイトよりMac版のJDK単体をダウンロードします

Java SE Development Kit 8 - Downloads

2.ダウンロードしたdmgファイルを実行し、インストールを行います

3.ターミナルを起動し、Javaのバージョンを確認します

$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Javaの切り替え

Macでは複数バージョンのJavaをインストールできます。

1.ターミナルを起動し、現在インストールされているJavaの一覧を表示します

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.8.0_144, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    1.7.0_80, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:	"Java SE 6"	/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386:	"Java SE 6"	/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

2.現在使用されているJavaのバージョンを確認します。

$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

3.「.bash_profile」に環境変数JAVA_HOME」を追加し、使用するJavaバージョンを指定します。

$ vi ~/.bash_profile

# 以下を追記する、下記の1.7を1.6等に変更するとそのバージョンに変わる
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
export PATH=${JAVA_HOME}:${PATH}

4.「.bash_profile」を再ロードして設定を有効に、Javaバージョンが変わっているか確認します

$ source ~/.bash_profile
$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

元のバージョンに戻すには、「.bash_profile」に追加した環境変数を削除またはコメントアウトし、再ロードすれば戻ります。

Javaのアンインストール

Javaをインストールすると追加でインストールされ、古いJavaが残ったままになるので、その都度削除が必要です。

1.ターミナルを起動し、現在インストールされているJavaの一覧を表示します

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.8.0_144, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    1.7.0_80, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:	"Java SE 6"	/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386:	"Java SE 6"	/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

2.削除コマンドを使って削除したいJavaのパスを指定し、削除します

$ rm -Rf /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk

Visual Studio 2015でCrystal Reportsを使えるようにする

※ 2019/12/31 ダウンロード関連説明を最新にしました

Visual Studio 2015で帳票の出力をしようと思い「Crystal Reports」を使うことにしました。

標準ではインストールされていないので、別途ダウンロードとインストールが必要です。
その時の手順をまとめましたので、参考にして下さい。

環境

OS Windows 10
Visual Studio 2015 Community
Crystal Reports 13.0.20

手順

1.Visual Studioを起動しているなら終了させます。

2.次のサイトからCrystal Reportsをダウンロードします。
f:id:shinsuke789:20191231110227p:plain

3.「CRforVS13SP26_0-10010309.EXE」のようなファイルがダウンロードされるので実行します。

4.「セットアップ言語の選択」が表示されるので「日本語」が選択されていることを確認し、「OK」をクリックします。
f:id:shinsuke789:20170502103900p:plain

5.「次へ」をクリックします。
f:id:shinsuke789:20170502103942p:plain

6.「使用許諾契約書に同意する」を選択し「次へ」をクリックします。
f:id:shinsuke789:20170502104009p:plain

7.「次へ」をクリックします。
f:id:shinsuke789:20170502104017p:plain

8.インストールが始まるのでしばらく待ちます。
f:id:shinsuke789:20170502104024p:plain

9.「はい、64ビットランタイムをインストール」にチェックが入っていることを確認し「完了」をクリックします。
f:id:shinsuke789:20170502104032p:plain

10.ランタイムのインストールが始まり、完了すると自動的にウインドウが消えます。

11.Visual Studioを起動し、プロジェクトから「新しい項目の追加」を選択します。
f:id:shinsuke789:20170502104044p:plain

12.左メニューから「Reporting」を選択し、右側の一覧で「Crystal Reports」を選択すると開発が可能になります。
f:id:shinsuke789:20170502104053p:plain

旧バージョンをダウンロードする

旧バージョンが必要な場合は、以下のサイトにリンクがあります。
www.tektutorialshub.com

不具合について

最新の「13.0.21」を適用すると右クリックメニューが文字化けする不具合があるとのコメントを頂きました。→対応方法があるようです。
2539511 - Context menu language not working for east Asia (JP, KO, zh-CN, zh-TW) and Russian languages in Visual Studio 2010+

関連書籍

SAP Crystal Reports 2011 レポート開発入門ガイド

SAP Crystal Reports 2011 レポート開発入門ガイド

スタードメインでメールを転送するためのドメイン設定方法

管理しているドメインをお名前.comからスタードメインに移管しました。

スタードメインにした理由は、他社と比較すると料金が安いためです。

スタードメインでメール転送設定を行ってみたのですが、なかなかうまくいかずハマったので、成功した方法を紹介します。

設定概要

スタードメインでは、サーバー管理ツールにあるメール転送設定を行っただけでは、メールが転送されないようです。

紹介する設定方法は、以下のような名前解決でメール転送を行います。

転送元メールアドレスにメール送信

メールアドレスのドメインをMXレコードのドメインで名前解決

MXレコードに設定された宛先(IPアドレス)に転送・名前解決

Aレコードの宛先(スタードメインサーバー)に転送・名前解決

メールが処理され、転送先メールアドレスにメールが届く

設定手順

1.スタードメインにアクセスし、ログインします。
f:id:shinsuke789:20170501163853j:plain:w300

2.左メニューの「スタードメイン管理」をクリックすると「管理ドメイン一覧」が表示されるので、メール転送したいドメインの「サーバー管理ツール」ボタンをクリックします。
f:id:shinsuke789:20170501163901j:plain

3.サーバー管理ツールの「サーバー情報」をクリックし「IPアドレス」をメモします。
f:id:shinsuke789:20170501163911j:plain:w400
f:id:shinsuke789:20170501163917j:plain:w400

4.サーバー管理ツールの左メニューの「メール転送設定」をクリックし、「メールアドレス」「転送先メールアドレス」を追加します。
f:id:shinsuke789:20170501163925j:plain

5.ドメイン管理ツールに戻り、「DNSレコード編集」ボタンをクリックします。
f:id:shinsuke789:20170501163934j:plain:w250
f:id:shinsuke789:20170501163942j:plain:w400

6.「レコード追加」をクリックし、次の2種類のレコードを追加します。
f:id:shinsuke789:20170501163949j:plain:w350
f:id:shinsuke789:20170501164011j:plain:w400

取得済みのドメインを「test.com」とします。
3でメモしたIPアドレスを「192.168.0.1」とします。

設定1 設定2
ホスト名 mail.test.com 空欄
タイプ A(IPアドレス MX(メール)
コンテンツ 192.168.0.1 mail.test.com
優先度 空欄 0

7.ドメインの反映に少し時間がかかりますが、設定したメールアドレス宛にメールを送信して受信可能かテストします。

イラスト図解式 この一冊で全部わかるサーバーの基本

イラスト図解式 この一冊で全部わかるサーバーの基本

MacのVMWare FusionからWindowsのVMWare Workstation Playerに移行する手順

MacWindowsでは、日本語ファイル名の濁点・半濁点の扱いが異なるため、そのまま移行してもファイルのパスを認識しないため動作しません。

そのため、MacからWindowsに移行するには、事前に日本語を含まないファイル名に変更しておく必要があります。

同じようなサイトを参考に行ってみましたが、どうもスムーズにいかなかったので、スムーズにいった手順を書いてみました。

MacVMWare Fusionの手順

1.ターミナルを起動し、移行したい仮想マシンがあるディレクトリに移動します。

cd "/Users/{ユーザー名}/Documents/Virtual Machines.localized/Windows 7 x64.vmwarevm"

2.アプリケーションディレクトの「VMWare Fusion.app」内にある「vmware-vdiskmanager」を使って仮想ディスクの名前を変更します。
仮想ディスク名は、「仮想ディスク-s001.vmdk」と連番が付いていますが、それを除いた名前を指定します。
コマンドを実行すると全てのファイル名が変更されます。

/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -n 仮想ディスク.vmdk win7.vmdk

3.仮想マシンにある「*.vmx」ファイルを開き、10行目あたりの「scsi0:0.fileName」に2で設定した新しい名前に変更します。

Finderの場合、仮想マシン「*..vmwarevm」ファイルを右クリックし「パッケージの内容を表示する」をクリックします。

ターミナルの場合、VI等のエディタで編集します。

vi "/Users/onishi/Documents/Virtual Machines.localized/Windows 7 x64.vmwarevm/Windows 7 x64.vmx"

「*.vmx」を以下のように変更します。

# 変更前
scsi0:0.fileName = "仮想ディスク.vmdk"

# 変更後
scsi0:0.fileName = "win7.vmdk"

4.ファイル名を変更した仮想マシンWindowsにコピーします。
ネットワーク経由でも良いですが、ファイルサイズが大きいのでUSB3.0対応USBメモリを使うと早くコピーできます。

WindowsVMWare Workstation Playerの手順

1.Macからコピーした仮想マシンVMWare Workstation Playerで開きます。

デフォルトの仮想マシンフォルダは、「C:¥Users¥{ユーザー名}¥Documents¥Virtual Machines」です。

2.仮想マシンを問題なく起動できると、移動またはコピーしたかのダイアログが表示されるので、「移動しました」を選択します。
f:id:shinsuke789:20170329095330p:plain

3.環境によっては、キーボードフックタイムアウトの設定ダイアログが表示されるので、「OK」を選択します。
f:id:shinsuke789:20170329095337p:plain

4.仮想マシンが正常に起動しWindowsが操作できることを確認します。追加でVMWare Toolsのインストールを行います。

Visual Studio 2015でWindows Installerを使えるようにする

Visual Studio 2015から2010のときに標準だったインストーラーが拡張機能として使えるようになりました。
英語表記ですが、機能的にほとんど変わっていないので心配ないと思われます。

インストール方法をまとめました。

環境

手順

1.ファイルメニューの「ツール」→「拡張機能と更新プログラム」を開きます
f:id:shinsuke789:20170130075810p:plain:w300


2.右上の検索欄に「installer」と入力して検索すると、一覧に「Microsoft Visual Studio 2015 Installer Project」が表示されるので「ダウンロード」をクリックします
f:id:shinsuke789:20170130075818p:plain


3.ブラウザが起動するのでファイルをダウンロードします
f:id:shinsuke789:20170130075834p:plain


4.ダウンロードしたファイルを起動します
f:id:shinsuke789:20170130075842p:plain:w150


5.Visual Studioを起動していると終了を促すメッセージが表示されるので、Visual Studioを終了させ「Retry」をクリックします
f:id:shinsuke789:20170130075848p:plain:w300


6.セットアップの内容が表示されるので確認し「Install」をクリックします
f:id:shinsuke789:20170130075857p:plain:w300


7.Windowsの権限許可が表示されるので「はい」をクリックします
f:id:shinsuke789:20170130075905p:plain:w300


8.インストールが始まるのでしばらく待ちます
f:id:shinsuke789:20170130075912p:plain:w300


9.インストールが完了したら「Close」をクリックします
f:id:shinsuke789:20170130075920p:plain:w300


10.Visual Studioを起動して任意のプロジェクトを開いてから、ファイルメニューの「ファイル」→「新しいプロジェクト」を選択します
f:id:shinsuke789:20170130075928p:plain:w300


11.「その他のプロジェクトの種類」→「Visual Studio Installer」を選択し、一覧の「Setup Project」を選択します。
f:id:shinsuke789:20170130075944p:plain


12.既存のプロジェクトにSetupプロジェクトが追加され、インストーラーを作成できるようになります。
f:id:shinsuke789:20170130075950p:plain


作って覚えるVisual C# 2015 デスクトップアプリ入門

作って覚えるVisual C# 2015 デスクトップアプリ入門