@Satoh_D no blog

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

【Ruby】CarrierWaveを利用してS3に5GB以上のファイルをアップロードする

3日ほどさんざんハマっててようやく解決したのでメモ。

構築中のシステムでzipファイルをCarrierWaveを利用してS3に自動アップロードする処理があるが、特定のファイルだけどうしてもアップロードできずにハマってた。
ソースやデータを見てもおかしなことろがなく、「何がまずいのか...」と思っていたが、S3のドキュメントを見ていたら、

1 回のオペレーションでオブジェクトをアップロードする – 1 回の PUT オペレーションでアップロードできるオブジェクトの最大サイズは 5 GB です。

docs.aws.amazon.com

これだあああああああああ
S3では5GB以上のファイルは1度にアップロードできず、「マルチパートアップロードAPI」を利用しないといけないとのこと。
今回アップロードしようとしていたzipの容量が5.3GBだったので、これに引っかかっていた模様。
以下の記事を参考に、CarrierWaveの設定を追加

stackoverflow.com

CarrierWave.configure do |config|
  ...

  config.fog_attributes = { :multipart_chunk_size => 524288000 } # => 500MBずつアップロード

  ...
end

これで5GB以上のファイルも無事にアップロードできました。

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

【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袋