@Satoh_D no blog

大分にUターンしたので記念に。調べたこととか作ったこととか食べたこととか

【Tomcat7】DataSourceが見つからずにjava.lang.ClassNotFoundExceptionが発生する

Tomcatインストール後、DB接続情報を書いて接続確認した時にハマったのでメモ。

環境

今回は以下のような環境で実施してました

手順

%CATALINA_HOME%/webapps/Hoge にアプリケーション設置後、
%CATALINA_HOME%/conf/Catalina/localhost/Hoge.xml 作成し、以下のように接続情報を記載

<Context path="/Hoge" reloadable="true"
        docBase="/usr/share/tomcat/webapps/Hoge">

    <Resource name="MySQL_JDBC" auth="Container"
            factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
            type="javax.sql.DataSource"
            username="xxxx"
            password="xxxxxxxx"
            url="jdbc:mysql://127.0.0.1:xxxx/HogeDB"
            maxWait="3000" />
</Context>

%CATALINA_HOME%/webapps/Hoge/WEB-INF/web.xml に以下追記

<resource-ref>
    <res-ref-name>MySQL_JDBC</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
</resource-ref>

ブラウザでページを確認すると、次のようなエラーがががが。

Dec 06, 2017 5:16:58 PM org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

解決方法

StackOverFlowの記事によると、tomcat-dbcp-7.0.30.jar が破損しているとのこと。

%CATALINA_HOME%/lib/を確認してみると、そもそもtomcat-dbcp-7.0.30.jarが無かった...。
記事にある通りにjarファイルをダウンロードしてみる

$ wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp 
/7.0.30/tomcat-dbcp-7.0.30.jar

再度ブラウザで確認してみると、エラー無く確認できた。
Tomcat初めて触るからわからないことだらけで大変だ...(白目

参考サイト

詳解 Tomcat

詳解 Tomcat

Mac OS High Sierra(10.13) で Illustrator CS6を利用する

そろそろYosemiteでの作業が辛くなってきた今日この頃。
思い立ってHigh Sierraにアップデートしてみました。

アップデートも無事完了し、Illustrator CS6を利用しようとしたら
Java SE6ランタイム入れて下さい的なアラートが...

f:id:Satoh_D:20170929151029p:plain

今更古いランタイムは入れたくない...何か方法はないものかと調べていると
どうやらPhotoshop CS6/Illustrator CS6ではJava SE6は利用しておらず、
ディレクトリの存在確認のみ行っているとのこと...

なので、単純に存在確認を行っているディレクトリを作成してあげれば良いらしい。
必要なディレクトリの作成コマンドは次の通り。

$ sudo mkdir -p /System/Library/Java/JavaVirtualMachines/1.6.0.jdk
$ sudo mkdir -p /System/Library/Java/Support/Deploy.bundle

ただ、High Sierraでは(というかEl Capitan以降では)、System Integrity Protection(SIP)の影響で
デフォルトの状態では書き込むことができず、一旦SIPを無効にしないといけません。

  1. OSをリカバリーモードで起動する(cmd+rを押しながらOSを起動)
  2. メニューバーからターミナルを開き、# csrutil disableを入力
    (この時点でSIPが無効化され、/System以下に書き込めるようになる)
  3. mac再起動し、前述の2つのディレクトリを作成する
  4. 再びリカバリーモードで起動する
  5. メニューバーからターミナルを開き、# csrutil enableを入力
    SIPを再び有効化する)
  6. macを再起動する

参考にしたページ

以下の内容を参考にさせていただきました。
ありがとうございますありがとうございます。

【Ruby on Rails】ダイアログの改行でハマった

Ruby on Rails案件で早速ハマりました(ヽ´ω`)

前提

Ruby: 2.0.0p647 Ruby on Rails: 4.2.5

ダイアログに改行を入れたい...

alertで出て来るダイアログのメッセージに改行を入れようと、以下のようにコードを書いたのですが、何故かalertの内容が改行されません。 ちゃんとダイアログ内の文言には改行コード(\n)を入れているですが...。

= link_to 'ダイアログ出すよ', [リンク先URL], :data => { :confirm => 'ダイアログだよ!\n二行目だよ!' }

文言を囲むときはダブルクオーテーションのほうが良さげ

調べてみるとGithubに同様の記事がありました。 以下のIssueによると、どうやらシングルクオーテーションで文言を囲った場合は改行コードは変換されないとのことでした。

Interpret newline escape codes in dialog messages? · Issue #388 · rails/jquery-ujs

Issueにもある通り、:confirmの文言をダブルクオーテーションで囲むことで意図したとおりに出力できるようになりました。

= link_to "ダイアログ出すよ", [リンク先URL], :data => { :confirm => "ダイアログだよ!\n二行目だよ!" }

クオーテーションで挙動が異なるとは...。 Ruby on Rails中々面白いけど、難しいですねぇ。

参考になったページ

パーフェクトRuby on Rails

パーフェクトRuby on Rails

Macに Ruby on Railsの環境を作成する

Ruby on Rails案件に入ることになり、手持ちのmacにて環境を作りましたのでメモ。 そもそもRubyすらやったこと無いんですが...(ヽ´ω`)

前提

  • Mac OS X Yosemite(ver 10.10.5)
  • homebrewインストール済み

ruby-build, rbenvのインストール

まずはruby-build, rbenvというツールをインストールしないといけないとか。 それぞれのツールの役割は以下の通り。

rbenv: Rubyのバージョン切り替えツール ruby-build: rbenvでRubyをビルド・管理するためのパッケージ

インストールはhomebrewを使って行います。

$ brew install ruby-build
$ brew install rbenv

インストールが完了したら、pathの設定を行います。
.bash_profileに下記の内容を書きます。

# .bash_profileは ~/ にある想定です。
$ cd ~/
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile
$ echo 'eval "$(rbenv init -)"' >> .bash_profile
$ source .bash_profile

Rubyをインストールする

macにデフォルトで入っているRubyだと案件で利用しているものとバージョンが異なっていたので、rbenvを使ってインストールします。

$ rbenv install -l

今回は記事公開時の最新版(2.4.0)をインストールします。

$ rbenv install 2.4.0

インストールしたままだとまだ利用できないため、利用するrubyのバージョンを指定します。

$ rbenv global 2.4.0

バージョンが切り替わっているか確認します。

$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
$ rbenv versions
* system (set by /Users/[username]/.rbenv/version)
  2.4.0
$ rbenv versions
  system
* 2.4.0 (set by /Users/owner/.rbenv/version)
$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin14]

Ruby on Railsのインストール

Rubyがインストール出来ましたら、Ruby on Railsのインストールを行います。 以下のコマンドを打ってインストールを行います。

$ gem install rails

これでRuby on Railsを利用する準備はできました。 あとはプロジェクトで利用しているGemを管理, インストールしてくれるBundlerも併せてインストールしておきます。

Bundler: Railsアプリケーションに必要となるGemの種類やバージョンを管理し、複数のPCで必要なGemをインストールする仕組みを提供してくれるもの

$ gem install bundler

これで案件の準備は出来ました。 Rubyを利用するのは初めてだったので、色々準備が必要ですね。。 あとは少しずつRailsのお作法とか学ばないと...(ヽ´ω`)

パーフェクトRuby on Rails

パーフェクトRuby on Rails

SourcetreeでのMergeにPhpStormを利用する

Sourcetreeでのコンフリクト解消時、デフォルトのマージツール(DiffMerge)が死ぬほど使いづらくて不便でした。
個人的にPhpStormのマージ画面が気に入っているので、そちらを使えないかと調べていたところ実施している方がおり、試しに設定してみました。

バージョンとか

今回使っているツール等のバージョンは以下の通りです。

手順とか

まずはSorucetreeの設定画面を開きます。 [環境設定] > [Diff]を選択し、「外部 Diff / Merge」を確認します。
各項目を以下のように入力(選択)します。

  • 差分表示ツール: カスタム...
  • Diffコマンド: /Applications/PhpStorm.app/Contents/MacOS/phpstorm
  • 引数: diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")

  • マージツール: カスタム...

  • Diffコマンド: /Applications/PhpStorm.app/Contents/MacOS/phpstorm
  • 引数: merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")

さいごに

これで使い慣れたツールを使ってMergeが出来るようになりました。
PhpStormマジ便利。買ってよかった...!

参考にしたページ

鶏つくねの甘辛だれ

f:id:Satoh_D:20161211234951j:plain

先日スーパーで衝動買してしまったレンコンを片付けるべく、鶏つくねを作ってみました。
しその香りと甘辛なタレが食欲をそそります。

材料

つくね

  • 鶏挽き肉(今回は胸肉を利用)200g
  • レンコン 小3個
  • しいたけ 2個
  • しそ 5枚
  • 長ねぎ 1/2本
  • 酒 大さじ1
  • 塩 小さじ1

甘辛だれ

  • みりん 50cc
  • 醤油 大さじ3
  • 砂糖 大さじ1.5

作り方

しいたけ、しそ、長ねぎはみじん切りにしておきます。
ボウルに材料をすべて入れ、粘り気が出るまで混ぜ続けます。

一口大に成形し、油をひいたフライパンに入れて焼きます。
いい具合に焼き色が付いたら裏返し、同様に焼き色がつくまで焼いていきます。

両面焼き色が付いたら甘辛だれの材料を全てフライパンに入れます。
たれを煮詰めつつ、つくねに絡めていきます。
つくねに照りが出て、たれにとろみが付いたら完成です。

そのままでも美味しいですが、卵黄に絡めるとより美味しく頂けました。
居酒屋などで食べるあのつくねの味が家でも...!

一口サイズなので、残ったらお弁当に入れられるのもいいですね。
とても満足の行くおかずになりました、ごちそうさま。

丸善 焼つくね 70g×10袋

丸善 焼つくね 70g×10袋

E-PRANCE® 手挽きコーヒーミルを買ってみた

休日にコーヒーをハンドドリップして、のんびり飲むのが好きです。
今まではお店でコーヒー豆を挽いてもらっていたのですが、時間が経つとどうしても風味や味がちょっと落ちてしまう...
だったら自分で都度豆を挽けばいいじゃん、ということで手挽きミルを買ってみました。

今回買ったのは「E-PRANCE® 手挽きコーヒーミル セラミック ステンレス コーヒーミル手動」という商品。

f:id:Satoh_D:20161211142826j:plain

Amazonで評価が良く、1,500円程度で買えてお得。
それにポーレックスのコーヒーミルにもすごく似ている...あちらは4,000円ほどなので大体3倍の開きがありますね。

ポーレックス 手挽きコーヒーミル セラミック 日本製

ポーレックス 手挽きコーヒーミル セラミック 日本製

とても軽い

商品が届いてびっくりしたのはその軽さ。
商品ページにもありますが260gはとても軽い。
ミル自体が程よく細いので、軽さも相まってとても手にフィットします。
これだったら登山の時に持っていくのも楽じゃないかな...!

色々脱着できて洗うのも楽

f:id:Satoh_D:20161211142841j:plain

ミルの取っ手は脱着式で、使わないときは外しておけるので収納も楽です。
また、刃の部分はほぼすべてのパーツが外せるので丸洗いが可能です。
洗うの大変そうだと思っていたのでこれは以外でした。

豆の細かさを調節できる

セラミック刃の部分にはネジが付いており、これを開け閉めすることで豆の細かさを調整できます。

f:id:Satoh_D:20161211142848j:plain

付属の説明書にはドリップ方式毎の細かさが書かれた表が入っています。

f:id:Satoh_D:20161211142921j:plain

ただどれくらい回せばどれくらいの細かさになるかは目安が無いので、これは何回か試して見るしかなさそうです...!

コーヒー豆が溢れる心配は無し

受け皿は蓋も兼用しているため、挽いた豆がこぼれることはありません。
こぼれると片付けが面倒そうなのでこれはありがたいですね。
また、窓がついているので量がひと目で分かるのもいいですね。

実際に挽いてみて

今回は2杯分(20gほど)挽いてみましたのですが、 大体2分程で全て挽くことが出来ました。
回すときもあまり力は必要なく、無心でゴリゴリ回せるので良かったです。

f:id:Satoh_D:20161211142903j:plain

流石にコーヒーを入れる直前に豆を挽いただけあって、ドリップした時の豆の膨らみ方が違いました。
また香りも格別で、朝からとてもいい気分になれました。

勝手が分からずちょっとだけ粗くなっちゃいましたが、それでも驚くほど違いがわかりました。
次はもう少し調整してチャレンジしてみようと思います。

買ってよかったコーヒーミル。
安くて手軽に使えてとても便利な一品です。