Quantcast
Channel: ソフラボの技術ブログ
Viewing all 166 articles
Browse latest View live

「doma-spring-boot-starter」を使ってSpringBootとDomaの連携を楽にする

$
0
0

JavaのDBアクセスフレームワーク「Doma2」にSpringBootと連携し自動で設定してくれる「doma-spring-boot-starter」が追加されました。

今までは独自にDoma用のクラスを作成し連携していましたが、それをする必要がなくなり導入と設定が楽になりました。


github.com

doma-spring-boot-starter」の適用概略

1.build.gradleに「https://oss.sonatype.org/content/repositories/snapshots」のリポジトリを追加する

2.build.gradleに「org.seasar.doma.boot:doma-spring-boot-starter」の依存を追加する

3.application.propertiesに必要であればdoma用の設定を追加する

doma-spring-boot-starter」を使うことでdoma設定クラスが不要になります。
application.propertiesdoma.namingを追加することで、@EntityNamingTypeの定義が不要になります。

サンプルコード

build.gradle

repositories {
	mavenCentral()
	// 追記
	maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

dependencies {
	// 追記
	compile('org.seasar.doma.boot:doma-spring-boot-starter:1.0.2')
	// 削除//compile('org.seasar.doma:doma:2.6.2')
}

src/main/resources/application.properties

# DBspring.datasource.url=jdbc:oracle:thin:@localhost:1521:test_db
spring.datasource.username=testspring.datasource.password=test
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

# DOMAdoma.naming=SNAKE_LOWER_CASE

src/main/java/com.example.dao.EmpDao

package com.example.dao;

import java.util.List;

import org.seasar.doma.Dao;
import org.seasar.doma.Select;
import org.seasar.doma.boot.ConfigAutowireable;

import com.example.entity.Emp;

@ConfigAutowireable@Daopublicinterface EmpDao {

	@Select
	List<Emp> findAll();
}

src/main/java/com.example.entity.Emp

package com.example.entity;

import java.util.Date;

import org.seasar.doma.Entity;
import org.seasar.doma.Id;

// application.propertiesの「doma.naming」で指定済みなので不要//@Entity(naming = NamingType.SNAKE_LOWER_CASE)@Entitypublicclass Emp {

	@Idpublic String empNo;

	public String empNm;
}

src/main/java/com.example.web.TestController

package com.example.web;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.dao.EmpDao;
import com.example.entity.Emp;

@Controllerpublicclass TestController {

	@Autowiredprivate EmpDao empDao;

	@RequestMapping("/test")
	public String index() {

		List<Emp> list = empDao.findAll();
		for (Emp emp : list) {
			System.out.println(emp.empNo);
		}

		return"test/test";
	}

XamarinをMacにインストールする

$
0
0

スマホアプリをクロスプラットフォーム開発できる「Xamarin」をMacにインストールしたときの手順です。

環境

OS X 10.11.5
XCode未インストール

手順

1.Xamarinダウンロードページにアクセスします。
www.xamarin.com


2.全項目を入力し、チェックボックスにチェックを入れ、ダウンロードボタンをクリックします。
f:id:shinsuke789:20160628170243p:plain


3.「XamarinInstaller.dmg」のダウンロードが開始されます。


4.ダウンロードが完了したら、dmgファイルを実行し、表示されたアイコンをダブルクリックします。
f:id:shinsuke789:20160628170334p:plain


5.Webからダウンロードしたので「開く」をクリックします。
f:id:shinsuke789:20160628170401p:plain


6.「同意する」にチェックします。
f:id:shinsuke789:20160628170415p:plain


7.インストールの準備中でしばらく待ちます。
f:id:shinsuke789:20160628170434p:plain


8.インストールするプロダクトを選択します。
f:id:shinsuke789:20160628170448p:plain


9.設定のインストール先を設定します。
f:id:shinsuke789:20160628170504p:plain


10.XCodeがインストールされていない場合のお知らせです。
f:id:shinsuke789:20160628170520p:plain


11.インストールされるプロダクトの一覧です。
f:id:shinsuke789:20160628170541p:plain

12.AndroidSDKのライセンスに同意します。
f:id:shinsuke789:20160628170556p:plain


13.Macのパスワードを入力します。
f:id:shinsuke789:20160628170607p:plain


14.インストールが開始されるので待ちます。
f:id:shinsuke789:20160628170624p:plain


15.インストールの進捗バーがなくなりますが、インストール中で、3回程Macのパスワードが求められるので入力します。
f:id:shinsuke789:20160628170654p:plain


16.インストールが完了しました。XCodeがインストールされていな場合、「インストールしてね」と表示されます。
f:id:shinsuke789:20160628170708p:plain


17.アプリケーションフォルダの「Xamarin Studio.app」を起動します
f:id:shinsuke789:20160628170922p:plain

f:id:shinsuke789:20160628171035p:plain

登録後に届くメール

以下の様なメールが届きます。
最終行に配信停止のリンクがあるので不要であればそこから手続きします。

Hi


Thanks for downloading Xamarin Studio! We just wanted to point you to a few key resources to help you get started quickly:

  • Cross-platform development with Xamarin Studio
  • Prebuilt Apps
  • Xamarin Developer Center


If you have any questions, please post them here in StackOverflow and our support team will answer them as quickly as they can.


Warm regards,


Unsubscribe from Xamarin marketing emails.
Team Xamarin

GlassFish4でSpringBootを動かすとログが無限に出力される対処方法

$
0
0

GlassFish4でSpringBootアプリを動かすと、アプリで設定したログファイルに無限にログが出力され、サーバーのディスクを使い切るという現象に遭遇しました。

いろいろ調べてもなかなか対処方法がありませんでしたが、困った時の「stack overflow」に似たようなことで質問が上がっていたので試したら無事解決したので、その手順を紹介します。

動作環境

SpringBoot1.3.6
Logback1.1.7
SLF4j1.7.21
GlassFish4.1.1 Full Profile

GlassFishは、PayaraServer 163 Fullのdomain1を使用

問題の現象

GlassFishにSpringBootアプリをwarでデプロイし、アプリが起動するとアプリで設定したログファイルに次のようなものが無限に出力される。

INFO  [2016-11-08 16:59:28.375] unknown.jul.logger .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.397] unknown.jul.logger /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.397] unknown.jul.logger ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
INFO  [2016-11-08 16:59:28.397] unknown.jul.logger \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
INFO  [2016-11-08 16:59:28.397] unknown.jul.logger '  |____| .__|_| |_|_| |_\__, | / / / /  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger =========|_|==============|___/=/_/_/_/  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger :: Spring Boot ::        (v1.3.6.RELEASE)  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger 2016-11-08 16:59:28.375  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger INFO  [2016-11-08 16:59:28.375] unknown.jul.logger .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.398] unknown.jul.logger INFO  [2016-11-08 16:59:28.397] unknown.jul.logger /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.399] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
INFO  [2016-11-08 16:59:28.399] unknown.jul.logger INFO  [2016-11-08 16:59:28.397] unknown.jul.logger ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
INFO  [2016-11-08 16:59:28.399] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
INFO  [2016-11-08 16:59:28.399] unknown.jul.logger INFO  [2016-11-08 16:59:28.397] unknown.jul.logger \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
INFO  [2016-11-08 16:59:28.399] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : '  |____| .__|_| |_|_| |_\__, | / / / /  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger INFO  [2016-11-08 16:59:28.397] unknown.jul.logger '  |____| .__|_| |_|_| |_\__, | / / / /  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : =========|_|==============|___/=/_/_/_/  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger =========|_|==============|___/=/_/_/_/  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : :: Spring Boot ::        (v1.3.6.RELEASE)  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger :: Spring Boot ::        (v1.3.6.RELEASE)  
INFO  [2016-11-08 16:59:28.400] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : 2016-11-08 16:59:28.375  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.401] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger 2016-11-08 16:59:28.375  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.401] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : INFO  [2016-11-08 16:59:28.375] unknown.jul.logger .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.401] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger INFO  [2016-11-08 16:59:28.375] unknown.jul.logger .   ____          _            __ _ _  
INFO  [2016-11-08 16:59:28.401] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.401] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.402] unknown.jul.logger 2016-11-08 16:59:28.398  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : INFO  [2016-11-08 16:59:28.397] unknown.jul.logger /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.402] unknown.jul.logger INFO  [2016-11-08 16:59:28.398] unknown.jul.logger INFO  [2016-11-08 16:59:28.397] unknown.jul.logger /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
INFO  [2016-11-08 16:59:28.402] unknown.jul.logger 2016-11-08 16:59:28.399  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
INFO  [2016-11-08 16:59:28.402] unknown.jul.logger INFO  [2016-11-08 16:59:28.399] unknown.jul.logger 2016-11-08 16:59:28.397  INFO 2466 --- [       Thread-8] unknown.jul.logger                       : ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  

GlassFishでLoggerが認識されていないのが原因のようです。

手順

GlassFishにあるファイルを編集する前にバックアップを取りましょう。


1.GlassFishが起動している場合、停止する

glassfish4/glassfish/bin/asadmin stop-domain domain1


2.GlassFIshのlibディレクトリにlogback・slf4jライブラリを配置する

# 配置先
glassfish4/glassfish/lib/endorsed

# 配置するライブラリ
jul-to-slf4j-x.x.x.jar
slf4j-api-x.x.x.jar
logback-core-x.x.x.jar
logback-classic-x.x.x.jar


3.GlassFishのconfigディレクトリにlogback.xmlを配置し、次のように定義する

vi glassfish/domains/domain1/config/logback.xml

logback.xml

<configuration debug="true"scan="true"><appender name="FILE"class="ch.qos.logback.core.FileAppender"><file>log/server.log</file><append>true</append><encoder><Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{52} - %msg%n</Pattern></encoder></appender><root><level value="INFO"/><appender-ref ref="FILE"/></root></configuration>


4.GlassFishにある「logging.properties」の一部を書き換える
管理コンソールで変更している場合、変更した値になっているので注意して下さい。

vi glassfish4/glassfish/domain1/config/logging.properties

Before

handlers=java.util.logging.ConsoleHandler
handlerServices=com.sun.enterprise.server.logging.GFFileHandler
java.util.logging.ConsoleHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.ODLLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1java.util.logging.FileHandler.limit=50000com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=falsecom.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000com.sun.enterprise.server.logging.GFFileHandler.excludeFields=
com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=truecom.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=falsejava.util.logging.FileHandler.count=1com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0log4j.logger.org.hibernate.validator.util.Version=warn
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=0com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange=falsejava.util.logging.FileHandler.pattern=%h/java%u.log
java.util.logging.FileHandler.formatter=java.util.logging.XMLFormatter

After

handlers=org.slf4j.bridge.SLF4JBridgeHandler #変更handlerServices=com.sun.enterprise.server.logging.GFFileHandler
java.util.logging.ConsoleHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.ODLLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log #そのままcom.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1java.util.logging.FileHandler.limit=50000com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=falsecom.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000com.sun.enterprise.server.logging.GFFileHandler.excludeFields=
com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=truecom.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=falsejava.util.logging.FileHandler.count=1com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0log4j.logger.org.hibernate.validator.util.Version=warn
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=0com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange=falsejava.util.logging.FileHandler.pattern=%h/java%u.log
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter #変更com.sun.enterprise.server.logging.GFFileHandler.alarms=false#追加


5.GlassFishの「domain.xml」にJVMオプションを追加する

vi glassfish4/glassfish/domains/domain1/config/domain.xml


domain.xml

# <domain>
#   <configs>
#     <config name="server-config">
#       <java-config>配下に追加する(250行目の次)
<jvm-options>-Djava.util.logging.config.file=${com.sun.aas.instanceRoot}/config/logging.properties</jvm-options><jvm-options>-Dlogback.configurationFile=file:///${com.sun.aas.instanceRoot}/config/logback.xml</jvm-options>


6.GlassFishを起動する

glassfish4/glassfish/bin/asadmin start-domain domain1

補足

SpringBootアプリには、「jul-to-slf4j」は含んでいません。
logback.xmlは、SpringBootのbase.xmlを読み込み、独自設定を追加しています。
application.propertiesの「logging.file」は、設定していません。
logging.properties(alarms以外)、jvm-optionは、管理コンソールの「server-config」で設定できます。

まとめ

ネットにあった内容をそのまま試して日本語に起こしただけです。
詳しいことは分からないので聞かないようにお願いしますw

この記事で関連する書籍

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築

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

$
0
0

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

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

環境

手順

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


2.右上の検索欄に「installer」と入力して検索すると、一覧に「MicrosoftVisual 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 デスクトップアプリ入門

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

$
0
0

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のインストールを行います。

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

$
0
0

管理しているドメインをお名前.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.1mail.test.com
優先度空欄0

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

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

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

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

$
0
0

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

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

環境

OSWindows 10
Visual Studio2015 Community
Crystal Reports13.0.20

手順

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

2.次のサイトからCrystal Reportsをダウンロードします。
Crystal Reports, Developer for Visual Studio Downloads - Business Intelligence (BusinessObjects) - SCN Wiki

ページの真ん中あたりに表があるので「Support Pack XX」の数字が大きいリンクをクリックしてダウンロードを開始します。
f:id:shinsuke789:20170502103847p:plain

3.「CRforVS_13_0_20.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

関連書籍

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

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

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

$
0
0

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

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

$
0
0

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の極意

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

$
0
0

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

PostgreSQLを自己証明書でSSLに対応する

$
0
0

手順通りにすれば、簡単にPostgreSQLSSLに対応できます。

動作環境

OSCentOS 6.4
PostgreSQL9.3.2
OpenSSL1.0.1e-fips 11 Feb 2013

自己証明書を作成する

1.PostgreSQLのdataディレクトリに移動する

$ cd /var/lib/pgsql/9.3/data

2.OpenSSLでRSA秘密鍵を作成する

# 2048はビット数
$ openssl genrsa 2048> server.key

3.OpenSSLでCSRを作成する

$ openssl req -new-key server.key > server.csr

4.OpenSSLで証明書を作成する

# 36500は有効期限(この場合100年)
$ openssl x509 -days36500-req-signkey server.key < server.csr > server.crt 

5.作成したファイルの所有権・グループを変更する

$ chown postgres:postgres server.*

6.server.keyのアクセス権限を変更する

$ chmod600 server.key

PostgreSQLの設定を変更する

1.pg_hba.confでアクセス権を変更する

$ vi /var/lib/pgsql/9.3/data/pg_hba.conf

# IPv4 local connections:
host     all     all     127.0.0.1/32     md5  # ローカルはSSL不要
hostssl     all     all     0.0.0.0/0     md5  # リモートはSSL必須

2.postgresql.confでSSLを有効にする

$ vi /var/lib/pgsql/9.3/data/postgresql.conf

# コメントアウトされているので、コメントを外し「ssl = on」にする# ssl = off
ssl = on

3.設定を有効にするためPostgreSQLを再起動する

$ service postgresql-9.3 restart

注意事項

TomcatGlassFishなどのアプリケーションサーバーを利用している場合、PostgreSQLを再起動する前に停止しておく必要があります。
起動したままだと、データベースとの連携が行われなくなり接続エラーが発生します。

PostgreSQLの再起動が失敗した場合、エラーメッセージがログに出力されるので、そちらを参照し問題点を修正して下さい。
pg_logディレクトリ内に発生曜日ごとにログがあります。

/var/lib/pgsql/9.3/data/pg_log

SSL設定後のPostgreSQLへの接続

GUIツールは、SSLの設定を追加して接続するだけです。

psqlコマンドで接続する場合、接続情報を「""」で括り、「sslmode=require」を追加します。

psql "sslmode=require host=xxx.xxx.xxx.xxx user=user1 dbname=db1"

SSL設定後のアプリケーション側での接続文字列変更

Java

接続文字列に「?sslmode=require」を追加します。

jdbc:postgresql://xxx.xxx.xxx.xxx:5432/dbname?sslmode=require

.NET

接続文字列に「SSL Mode = true; Trust Server Certificate = true; 」を追加します。

Host=xxx.xxx.xxx;Database=dbname;Username=user;Password=pass;SSL Mode=Require;Trust Server Certificate=True

PostgreSQLを深く知るためにおすすめの書籍

内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

PostgreSQL全機能バイブル

PostgreSQL全機能バイブル

SpringBootのJacksonで日付フォーマットを設定する方法

$
0
0

SpringBootのコントローラーの戻り値に@ResponseBodyを設定して、オブジェクトでJSONを返すとき、日付型はlongで扱われます。
それを適切は日付フォーマットにするには、設定ファイル、アノテーションで設定できます。

application.propertiesによる設定

アプリケーション全体の設定として適用されます。
タイムゾーン設定をしないと、日付がずれるので必ず設定しておきましょう。

application.properties

spring.jackson.date-format=yyyy/MM/dd'T'HH:mm:ss.SSSZ
spring.jackson.time-zone=Asia/Tokyo

アノテーションによる設定

JSONマッピングするオブジェクトクラスの日付フィールドで@JsonFormatアノテーションを設定します。
アノテーションでもタイムゾーンの設定ができます。

オブジェクトクラス

@JsonFormat(pattern = "yyyy/MM/dd")
private Date date;

@JsonFormat(pattern = "yyyy/MM/dd", timezone = "Asia/Tokyo")
private Date date;

VisualStudioのCrystalReportsを配布先のクライアントで動作させる手順

$
0
0

VisualStudioでCrystalReportsを使った開発を行うには「SAP Crystal Reports developer version for Visual Studio」が必要です。
これをインストールすれば開発環境では、問題なく動作します。

しかし、配布するとそのままでは動作しません。
配布先で動作させるためには、CrystalReportsのランタイム「SAP Crystal Reports Runtime」とインストーラーに「SAP Crystal Reports Runtime - Merge Modules」が必要です。

動作環境

開発環境

Windows10
VisualStudioCommunity 2015 Update3
.NETFramework4.6.1
CrystalReports13.0.20

配布先

Windows10
CrystalReports13.0.20

VisualStudioのインストーラーでCrystalReportsのMergeModulesを適用する

VisualStuidoでインストーラーを扱うには、次の記事を参考にして下さい。
shinsuke789.hatenablog.jp


1.次のURLにアクセスし「SAP Crystal Reports Runtime - Merge Modules」をダウンロードします。

http://www.crystalreports.com/crvs/confirm/

f:id:shinsuke789:20171017094231j:plain


2.ダウンロードしたファイルを解凍し、「CRRuntime_13_0_xx.msm」と「CRRuntime_13_0_xx_ja.msm」のファイルを次の場所にコピーします。
f:id:shinsuke789:20171017094240j:plain

C:\Program Files (x86)\Common Files\Merge Modules

※コピーしなくても動作しますが、ここにコピーしておいた方が使い勝手が良いので

日本語環境なので「ja」のファイルを選択しています。動作環境に言語に合わせて適切なものを選択して下さい。


3.VisualStudioのセットアッププロジェクトを右クリックし、「Add」→「Merge Module...」をクリックします。
f:id:shinsuke789:20171017094256j:plain

4.ファイル選択ダイアログが表示されるので、2のファイルを選択し、プロジェクトに追加します。
f:id:shinsuke789:20171017094411j:plain


5.セットアッププロジェクトをビルドします。いつもより少し時間がかかります。


6.ビルドして生成されたインストーラーを配布します。

配布先には事前にCrystalReportsランタイムがインストールされている必要があります。

配布先でCrystalReportsのランタイムをインストールする

1.次のURLにアクセスし「SAP Crystal Reports Runtime (32Bit)」または「SAP Crystal Reports Runtime (64Bit)」をダウンロードします。

http://www.crystalreports.com/crvs/confirm/

f:id:shinsuke789:20171017092649j:plain


2.ダウンロードしたファイルを解凍し、インストーラーを実行します。
f:id:shinsuke789:20171017092712j:plain


3.ウィザードが開始されるので「Next」をクリックします。
f:id:shinsuke789:20171017092721j:plain


4.「I accept the License Agreement」を選択し、「Next」をクリックします。
f:id:shinsuke789:20171017092730j:plain


5.「Next」をクリックします。
f:id:shinsuke789:20171017092737j:plain


6.インストールが終わるまでしばらく待ちます。
f:id:shinsuke789:20171017092752j:plain


7.「Finish」をクリックし、インストールを終了します。
f:id:shinsuke789:20171017092803j:plain

配布先でのエラー対応

ファイルが見つからない

ファイルまたはアセンブリ'CrystalDecisions,CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=xxxxxxxx,またはその依存関係の1つが読み込めませんでした。指定されたファイルが見つかりません。

エラーメッセージに表示されている「Version」のCrystalReportsランタイムがインストールされていないのが原因です。
この場合、13.0.20のランタイムをインストールすることでエラーは解消します。

初期化子例外

'CrystalDecisions,CrystalReports.Engine.ReportDocument'のタイプ初期化子が例外をスローしました。System.TypeInitializationException

アプリケーションが、MergeModuleを適用したインストーラーでインストールされていないのが原因です。
MergeModuleを適用したインストーラーを作成してインストールしなおせば解消します。

旧バージョンのランタイムをダウンロードする

ランタイム配布サイトでは、最新版しかダウンロードできないと思われますが、URLを書き換えることで可能です。

URLのバージョンを希望のものに変更し、?以降を削除します。

最新版
http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_redist_install_32bit_13_0_21.zip?_ga=2.242728192.309491126.1508199297-555278125.1508199297

旧版
http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_redist_install_32bit_13_0_20.zip

CrystalReportsでプリンター名を設定する方法

$
0
0

CrystalReportsで任意で選択したプリンターで印刷を行いたい場合、通常のプリンター指定では認識されないようです。

認識させるには、少し特殊な指定が必要なようです。

動作環境

Windows10
VisualStudioCommunity 2015 Update3
.NETFramework4.6.1
CrystalReports13.0.20

通常の設定方法

こちらの設定で行っても指定したプリンターで印刷はされません。

publicvoid Print(PrinterSettings settings)

    // デザイナーで定義したレポート
    TestReport r = new TestReport();
    r.Load();
    r.Refresh();

    // 給紙トレイ設定
    r.PrinterOptions.CustomPaperSource = settings.DefaultPageSettings.PaperSource;

    // プリンター名設定
    r.PrinterOptions.PrinterName = settings.PrinterName; // ←設定されない!!// 印刷実行
    r.PrintToPrinter(printer.Copies, false, 0, 0);
}

正しい設定方法

1.プロジェクトの参照からアセンブリタブにある4項目を追加する

  • CrystalDecisions.ReportAppServer.ClientDoc
  • CrystalDecisions.ReportAppServer.Controllers
  • CrystalDecisions.ReportAppServer.DataDefModel
  • CrystalDecisions.ReportAppServer.ReportDefModel


2.プリンター名の設定方法を次のように変更する

publicvoid Print(PrinterSettings settings)

    // デザイナーで定義したレポート
    TestReport r = new TestReport();
    r.Load();
    r.Refresh();

    // 給紙トレイ設定
    r.PrinterOptions.CustomPaperSource = settings.DefaultPageSettings.PaperSource;

    // プリンター名設定// r.PrinterOptions.PrinterName = settings.PrinterName;
    ISCDReportClientDocument cdoc = r.ReportClientDocument;
    cdoc.PrintOutputController.GetPrintOptions().PrinterName = printer.PrinterName;

    // 印刷実行
    r.PrintToPrinter(printer.Copies, false, 0, 0);
}

Apache2.4のリバースプロキシ設定は最後の「/」が不要!

$
0
0

新規でサーバーを構築する機会があったのでApache2.4でリバースプロキシを設定しました。

Apache2.2の設定をそのまま使ってみるものの、動作せず5時間ほどハマり、結果的に「/」の有無で解決しました。

他の人がこれにハマらないように記事にしておきます…。

動作環境

LinuxCnetOS6
Apache2.4
WildFly11.0

設定の比較

Apache2.2の設定

<Location "/ContextRoot">
    ProxyPass http://localhost:8080/ContextRoot/
    ProxyPassReverse http://xxxxx.com/ContextRoot
</Location>

Apache2.4の設定

<Location "/ContextRoot">
    ProxyPass http://localhost:8080/ContextRoot
    ProxyPassReverse http://xxxxx.com/ContextRoot
</Location>

相違点

Apache2.4のProxyPassの最後に「/」を付けてません。
これがあると、ポート8080を使う通常の処理は問題ないのですが、cssやjsなどの静的コンテンツが読み込まれません。

まとめ

リバースプロキシの設定は、バージョンアップしても基本的に使えますが、少しの変更が必要になることがあるので注意が必要です。

Apache2.4を触ってみましたが、最初に設定する項目が減ってて楽でした。
例えば、バーチャルホストだとNameVirtualHostの宣言は必要ありませんでした。
ディレクトリ構造がかなり変わって違和感ありありです。
yumでインストールした場合、/opt/rh/httpd24/root/がルートになります。


サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)


プロがおすすめ・ダメなレンタルサーバーをまとめました

$
0
0

Webシステムの開発をしている中で、顧客とサーバーの話が必ず出てきます。

その中で私が推奨しているサーバーと、すでに顧客が契約していてダメだったサーバーをまとめてみました。

今後サーバーを契約するときは参考にしてみて下さい。

契約すべき推奨のサーバー

さくらのレンタルサーバ

ホームページに使うならもってこいの安定のレンタルサーバーです。
料金プランも多彩で契約しやすいです。スタンダードであれば月500円程で契約できます。



XSERVER

WordPressを本格的に動かすならおすすめの高性能サーバーです。



また同社では、WordPressに特化した「wpX」を提供していますが、こちらはWordPressのみしか動作しません。

www.wpx.ne.jp

従来通りのHTML・CSS・JSのみのホームページやPHPのWebアプリは、アップロードしてもアクセス権限がないため閲覧不可能です。
またcronの設定ができません。

WordPressのみの運用であれば契約しても問題ないですが、将来的にWebアプリを動かしたいとなるとサーバーを乗り換えるしかないので注意しましょう。

さくらのVPS

VPSで迷ったらこれ!といっても過言ではない安定のVPSサーバーです。

料金は少し高い気もしますが、オートスケール対応、上位プランへそのまま移行、サーバーの追加が簡単にできます。

ビジネス利用に最適です。



お名前.com VPS

ホームページを見る限り2015年で更新が止まっているようですが契約できるし、問題なく使用できます。

他社よりも費用が安く、メモリ2GBプランは初期費用無料で契約できます。
その代わりSSDの選択やさくらのVPSのようにオートスケール、現状を維持したままのプラン変更は不可能です。

サーバー単体で利用する方や検証用・趣味用におすすめのVPSサーバーです。

GMOインターネット株式会社の株を持っていると株主優待で年間1万円分の割引が受けられます。


契約してはいけないサーバー

GMOクラウドレンタルサーバー iCLUSTA+

ビジネス向けのレンタルサーバーです。
有名どころなのか不明ですが、契約している方が多いです。

このサーバーのダメな所は、ホームページを設置し、最初のアクセスが数秒かかるところです。
これは、サーバーの仕様なのか何をやっても解決できません。
表示が遅いとそれだけ利用者離れになりやすいので、契約してはいけません。

shared.gmocloud.com

お名前.com 共用サーバーSD

性能等は全く問題ないですが、ディレクトリの作成に自由度がないのでおすすめできません。
契約するとすぐには解約できない感じですが、「思っていたのと違う!」ということで問い合わせすると解約できることもあります。



ロリポップ

プランが豊富で価格安く契約しやすく趣味での利用はおすすめですが、ビジネスとなると使い勝手が悪かったりします。
利用者が多いため少し動作が遅いなーと感じることもあります。
こちらを契約するならさくらレンタルサーバーをおすすめします。



まとめ

知識が乏しい業者とやりとりしていると、安いだけのマイナーなサーバー、大手だから安心というだけの無意味なサーバーを勧められたりします。

そうならないために、ここで紹介している推奨サーバーを契約しておけば安心です。
すでに契約してしまってる方は、推奨サーバーに変更することをおすすめします。

標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド

標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド

カラーミーショップで独自ドメインを使い、他サーバーでサブドメインを運用する方法

$
0
0

カラーミーショップを開設し、独自ドメインを使いつつ、他のサーバーでサブドメインを運用する案件がありました。
その時に少し手間取ったので、今後このようなことをされる方の参考になればと思いまとめてみました。

前提条件

カラーミーショップでの設定手順

1.カラーミーショップの管理ページにログインします
https://admin.shop-pro.jp/


2.上部メニューにある「アカウント・設定」→「ドメイン」をクリックします
f:id:shinsuke789:20180425104859p:plain


3.左メニューにある「ドメイン」→「独自ドメイン」をクリックします
f:id:shinsuke789:20180425104907p:plain


4.「独自ドメインを設定する」ボタンをクリックします
f:id:shinsuke789:20180425111042p:plain


5.「取得されているドメイン」に独自ドメインを入力し、「DNS(ネームサーバー)」に「カラーミーショップのDNS(ネームサーバー)」が選択されていることを確認し、「確認」をクリックします
f:id:shinsuke789:20180425104952p:plain


6.設定内容が合っているか確認し、「送信」をクリックします
f:id:shinsuke789:20180425105005p:plain

ドメインのネームサーバーを「dns1.shop-pro.jp」「dns2.shop-pro.jp」に設定して下さいと言われますが、設定してはいけません。


参考:ドメインをカラーミーショップのみでご利用の方 | ネットショップ開業マニュアル

お名前.com等のドメインでの設定手順

ここではお名前.comを例とします。

DNSレコードの設定手順

1.ドメインの管理ページにログインします
https://navi.onamae.com/login


2.上部メニューの「ドメイン」をクリックします
f:id:shinsuke789:20180425105018p:plain


3.「ドメイン設定」をクリックして展開し、「DNS関連機能の設定」をクリックします
f:id:shinsuke789:20180425105029p:plain


4.カラーミーショップで使用する独自ドメインを選択し、「次へ進む」をクリックします
f:id:shinsuke789:20180425105039p:plain


5.ページを下の方にスクロールし「DNSレコード設定を利用する」の「設定する」をクリックします
f:id:shinsuke789:20180425105049p:plain


6.登録済みの欄が以下のようになるようにDNSレコードを追加、「確認画面に進む」をクリックし、DNSレコードの設定を完了します。

取得した独自ドメインを「shop-test.com」、サブドメインを「admin.shop-test.com」とした場合の設定例です。

ホスト名TYPETTLVALUE
shop-test.comA3600shop-test.shop-pro.comのIPアドレス
admin.shop-test.comA3600サブドメインを使うサーバーのIPアドレス
www.shop-test.comCNAME3600shop-test.shop-pro.com

TTLは初期値のままです


7.ネームサーバーが独自ドメインの初期値になっているか確認します
すでに「dns1.shop-pro.jp」「dns2.shop-pro.jp」に変えている場合、独自ドメインの初期値に戻して下さい。
お名前.comだと「01.dnsv.jp」「02.dnsv.jp」になります。


8.数分後、設定したドメインにアクセスできるか確認します。

「xxxxx.shop-pro.com」のIPアドレスを調べる

カラーミーショップで独自ドメインを使わない場合、「任意の値.shop-pro.com」というサブドメインが割り当てられます。
独自ドメインを決める煩わしさを解消するために設けられているようです。


さて「xxxxx.shop-pro.com」のIPアドレスを調べるには、2種類あります。


1.「ping」コマンドで調べる
Windowsは「コマンドプロンプト」、Macは「ターミナル」を起動し、次を入力するとIPアドレスが取得できます。

ping xxxx.shop-pro.com

ネットワークの環境によってはpingを実行しても思った答えた返って来なかったり、応答なしだったりします。
その時は、次のWebサービスを利用してみて下さい。


2.Webサービスで調べる
次のようなWebサービスドメインを入力するとIPアドレスが返ってきます。
www.cman.jp

おすすめの書籍

売れるネットショップ開業・運営 eコマース担当者・店長が身につけておくべき新・100の法則。

売れるネットショップ開業・運営 eコマース担当者・店長が身につけておくべき新・100の法則。

【小さな会社】 ネット通販 億超えのルール

【小さな会社】 ネット通販 億超えのルール

MacでAndroid Studioを日本語化する

$
0
0

MacAndroid Studioを日本語化する手順を紹介します。

環境

Mac OS 10.11.6
Android Studio 3.1.4

事前準備

Android Studioをダウンロードする

公式サイトよりAndroid Studioをダウンロードします。(約810MB)
developer.android.com

日本語化するためのpleiadesプラグインをダウンロードします。(約160MB)

pleiadesより「Pleiadesプラグイン・ダウンロード」からダウンロードします。
Eclipse 日本語化 | MergeDoc Project

トップページから少しスクロールしたところにダウンロードリンクがあります。
f:id:shinsuke789:20180827121657p:plain

日本語化手順

1.ダウンロードした日本語化ファイル「pleiades-mac.zip」を解凍し「setup.app」をダブルクリックします。
f:id:shinsuke789:20180827121803p:plain

2.日本語化する「Android Studio.app」を選択します。
f:id:shinsuke789:20180827121857p:plain

3.選択するとパス等が表示されるので「日本語化する」をクリックします。
f:id:shinsuke789:20180827121956p:plain

4.日本語化が完了するとメッセージが表示されるので「OK」をクリックします。
f:id:shinsuke789:20180827122056p:plain

5.「終了」をクリックします。
f:id:shinsuke789:20180827122134p:plain

6.Android Studioを起動し、日本語化されたか確認します。
f:id:shinsuke789:20180827122210p:plain
f:id:shinsuke789:20180827130631p:plain

Android関連書籍

はじめてのAndroidプログラミング 第3版

はじめてのAndroidプログラミング 第3版

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

MacでAndroid Studioを初回起動、新規プロジェクトを作成するまで

$
0
0

初めてAndroid Studioをインストールしてみました。
同じような方向けにどんな画面なのか、画像メインで記事を作成してみました。

アプリ自体開発したことないので、突っ込まれても回答できないのでご了承下さい。

セットアップ・ウィザード

1.ようこそ
f:id:shinsuke789:20180827131900p:plain

2.インストールタイプの選択。分からなければ標準を選択しておけばOK。
f:id:shinsuke789:20180827131907p:plain

3.表示色の設定
f:id:shinsuke789:20180827131920p:plain

4.設定の確認。SDKのダウンロードなど必要なファイル群をさらにダウンロードされます。
f:id:shinsuke789:20180827132504p:plain

5.各種ダウンロード中
f:id:shinsuke789:20180827132518p:plain

6.ダウンロード完了
f:id:shinsuke789:20180827132533p:plain

新規プロジェクト作成

1.やりたいことを選択。ここでは新規プロジェクト作成を選択。
f:id:shinsuke789:20180827122210p:plain

2.必要事項を編集。kotlinを選択してみた。
f:id:shinsuke789:20180827132603p:plain

3.開発する対象デバイスを設定する
f:id:shinsuke789:20180827132614p:plain

4.アクティビティーの追加
f:id:shinsuke789:20180827132626p:plain

5.アクティビティーの設定
f:id:shinsuke789:20180827132637p:plain

6.コンポーネントインストーラ
f:id:shinsuke789:20180827132650p:plain

7.ビルド中
f:id:shinsuke789:20180827132702p:plain

8.コーディング画面表示
f:id:shinsuke789:20180827132714p:plain

※ プロジェクトは「~/AndroidStudioProjects」に作成されます。

WildFlyにJerseyアプリをデプロイするとエラーが発生するときの対処方法

$
0
0

WildFlyにSpring Bootで作成したJerseyを含むWebアプリをデプロイしようとすると、エラーが発生しデプロイができない現象に遭遇しました。
その時の対処方法をまとめました。

環境

CentOS 6
WildFly 11
Spring Boot 2.0.4
Jersey 2.26

原因

デプロイできない原因は、WildFly側にJAX-RSのライブラリがあり競合するためです。

対処方法

Webアプリ側にjboss-deployment-structure.xmlを用意し以下のように定義する。

jboss-deployment-structure.xml

<?xml version="1.0"?><jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><deployment><exclude-subsystems><subsystem name="jaxrs" /><!-- 追記する --></exclude-subsystems></deployment></jboss-deployment-structure>

jboss-deployment-structure.xmlをwarに含める場合、WEB-INF配下に置くようにします。

Gradleで以下のように定義しwarビルドすると、自動的にWEB-INF配下にコピーされます。

war {
    from('src'){
        include 'jboss-deployment-structure.xml'
        into 'WEB-INF'}}

開発環境では、xmlファイルをsrcディレクトリ直下に置いておきます。

注意事項

すでにデプロイできない事象に遭遇している場合、上記対応を行ってもデプロイ時にエラーが発生します。
エラーなのにデプロイ時のゴミは残ったままなので、それらを削除する必要があります。

standalone.xmlを修正する

ファイルの場所:wildfly-root/standalone/configuration/standalone.xml

タグがある所を探し(ファイルの最後あたり)、デプロイに失敗したアプリ名の箇所を削除します。

<deployments><deployment name="postgresql-9.4.1212.jar"runtime-name="postgresql-9.4.1212.jar"><content sha1="38931d70811d9bfcecf9c06f7222973c038a12de"/></deployment><!-- 対象のアプリ名部分を削除する --><deployment name="Test.war"runtime-name="Test.war"><content sha1="fcb6ff1bf0777ce6b276f5067903db03c1addc3d"/></deployment><!-- ここまで --></deployments>

関連ファイルを削除する

WildFlyインストールディレクトリからfindコマンドで対象のアプリ名で検索をかけます。
それでヒットしたファイル、ディレクトリを削除します。
忘れましたが、warファイルとそれらを展開したクラスファイル等があるディレクトリを削除すれば良いです。

Viewing all 166 articles
Browse latest View live