uoz 作業日記

様々な作業の記録を共有するブログです。

OSXで使えるpostgresqlのGUIクライアント

f:id:uoz:20160815122511j:plain

最近使っている3種類の比較です。


ssh経由の接続などは皆できる。

pg commander

PG Commander, a PostgreSQL client for Mac

f:id:uoz:20160815223508j:plain

良い点

  • 無料板あり
  • テーブル構造が見られる

悪い点

  • インポート機能がない
  • テーブル構造が変えられない(2016-08-14時点)
  • フル機能版は¥5,800

psquel

http://www.psequel.com/
mysqlの有名クライアント、sequel proに影響を受けたクライアントソフト。

良い点

  • 完全無料
  • テーブル構造が見られる

悪い点

  • インポート機能がない
  • テーブル構造が変えられない(2016-08-14時点)

その他解説記事

postpico

Postico – a modern PostgreSQL client for the Mac

f:id:uoz:20160815223833j:plain

良い点

  • CSV等インポート機能有り
  • 無料版有り

悪い点

  • フル機能版は有料¥4,800

DockerMachineでGMOのクラウド仮想サーバを操れる

このアルタスのこと

パブリッククラウドならGMOクラウド ALTUS(アルタス) | 無料体験付き

参考

docker-machineのgenericプロバイダを使う - Qiita

サーバ

ubuntu14.04のイメージでミニサーバつくる。

セキュリティグループでポート443を空けないとダメらしい。

固定IPを割り当てる。

パスワード無しsudoできるユーザをつくる

公開鍵認証できるようにする。

~/.ssh/id_rsaにカギがあるとする。

参考

https://www.server-world.info/query?os=Ubuntu_14.04&p=initial_conf

http://jeromejaglale.com/doc/unix/ubuntu_sudo_without_password

ローカルで

docker-machine -D create  --driver generic  --generic-ip-address=xxx.xxx.xxx.xxx --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user ユーザ名 マシン名

centos7でもできるはずだが、私はできなかった。

# railsって遅いのかね

cake, rails, spring boot, expressで、ほとんど同じアプリを作ってざっくり試してみる

Jmeterで負荷をかけることに

Jmeterインストール

$ brew install jmeter --with-plugins
$ jmeter

f:id:uoz:20160702170840j:plain

1. Railsで最初にちょっと試してみる

Railsアプリをlocalhsot:3000で立てて...

rails 4.2.6 ruby 2.3.1 mysql 5.7.10

アプリ

こんなアプリ

f:id:uoz:20160702170936j:plain

/articles で記事+コメント一覧を表示する

コントローラ app/controllers/articles_controller.rb

class ArticlesController < ApplicationController
  def index
    @article = Article.includes(:comments).all
  end
end

ビュー app/views/articles/index.erb

<h1>test</h1>


<table>
  <tr>
    <th>
      タイトル
    </th>
    <th>
      内容
    </th>
    <th>
      更新日
    </th>
  </tr>
  <% @article.each do |article| %>
    <tr>
      <td>
        <%= article.name %>
      </td>
      <td>
        <%= article.content %>
        <% if article.comments.present? %>
            <br />コメント:
            <% article.comments.each do |comment| %>
                <br /><%= comment.content %>
            <% end %>
        <% end %>
      </td>
      <td>
        <%= article.updated_at %>
      </td>

    </tr>
  <% end%>
</table>

Alt text

テスト実施

このサイトの通り、パスだけアプリの/articlesに変えて

http://language-and-engineering.hatenablog.jp/entry/20081014/1223905380

左ペインの「テスト計画」を右クリックし,「追加」→「スレッドグループ」。

スレッド数: 50 Ramp-Up期間(秒): 10  (←スレッド立ち上げ期間のこと)

と入力。

左ペインの「スレッドグループ」を右クリックし,「追加」→「サンプラー」→「HTTPリクエスト」。

サーバ名またはIP: localhost パス: ./x.php

と入力。

左ペインの「スレッドグループ」を右クリックし,「追>加」→「リスナー」→「結果を表で表示」。

Ctrl+S し,保存。

ツールバーで「実行」→「開始」。

結果

平均25msってこと? webrickで、デバックで動かしてこれ

f:id:uoz:20160702171144j:plain

unicornでproductionだと、半分くらいになった。

f:id:uoz:20160702171153j:plain

2. 次はcake

cake php 3.2です

php 5.6 mysqlも5.6 細かいバージョンは忘れた

手抜きでmampで動かす DBはrailsと同じ感じだけど、カラム名等はcake標準になるように

アプリ

コントローラ /src/Controller/ArticlesController.php

<?php

namespace App\Controller;

class ArticlesController extends AppController
{
    public function index(){
        $articles = $this->Articles->find('all');
        $this->set(compact('articles'));
    }
}

ビュー /src/Template/Articles/index.ctp

<h1>test</h1>


<table>
    <tr>
        <th>
            タイトル
        </th>
        <th>
            内容
        </th>
        <th>
            更新日
        </th>
    </tr>
    <? foreach($articles as $article){ ?>
    <tr>
        <td>
            <?= $article->name ?>
        </td>
        <td>
            <?= $article->content ?>
            <? if(count($article->comments) > 0){ ?>
            <br />コメント:
            <? foreach($comment as $article->comments){ ?>
            <br /><?= $comment->content ?>
            <? } ?>
            <? } ?>
        </td>
        <td>
            <?= $article->modified ?>
        </td>

    </tr>
    <? } ?>
</table>

テスト実施

debugでない

平均 170ms なんでこんなに遅いのかな?

ここを参考に、OPcacheとついでにxdebugを止めてみる http://www.y-com.info/contents/?p=1165

がかえって遅くなる f:id:uoz:20160702171300j:plain

dockerでサーバ立ててみたら更に遅い

3. spring boot(java)

spring boot 1.3.5 java 1.8.0_92

java8をいれるところから

brew cask install java

DBにつなげられない.....

途中

4. express(node.js)

途中

結果まとめ

途中

参考

spring boot

http://maplesystems.co.jp/blog/programming/18474.html https://www.jetbrains.com/help/idea/2016.1/creating-spring-boot-projects.html https://pgcolony.com/entry/117 http://confrage.jp/springmvc%E3%81%A7modelattribute%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B/ http://www.riem.nagoya-u.ac.jp/~ohta/etc/springboot-3.html

java8 http://www.task-notes.com/entry/20150406/1428289200 http://qiita.com/shuntaro_tamura/items/60b8c19f62edfd942c2e

jmetor

http://language-and-engineering.hatenablog.jp/entry/20081014/1223905380 めっちゃ古いけど

おまけ

ある時、 railsでこんなエラーがでるように

undefined method `tr' for nil:NilClass Did you mean? try
Extracted source (around line #37):

         raise "Database URL cannot be empty" if url.blank?
          @uri     = uri_parser.parse(url)
          @adapter = @uri.scheme.tr('-', '_')
          @adapter = "postgresql" if @adapter == "postgres"

          if @uri.opaque

database.ymlがうまく読み込まれていない

ヒント http://raysapida.github.io/more-debugging/

別なプロジェクトでDATABASE_URLという環境変数を設定してしまったせいだった

Rails使ってる環境でDATABASE_URLには気をつけろ

CakePHP 3.x の migrationが失敗するとき

問題

$ bin/cake migrations migrate


 [InvalidArgumentException]                 
  Could not infer database type from driver 

これは、設定ファイルの読み込みがおかしいのが原因

対策

config/app.phpの下記、'url'というオプションをコメントアウトしろ!

/**

            'url' => env('DATABASE_URL', null),

それか、環境変数DATABASE_URLをちゃんと設定するか

原因

cakephpが設定ファイルを読み込む

vendor/cakephp/cakephp/src/Core/StaticConfigTrait.php

  if (isset($config['url'])) {
            $parsed = static::parseDsn($config['url']);
            unset($config['url']);
            $config = $parsed + $config;
        }

この部分のコードがが$configを壊す

ASINコードからAmazon商品の画像を取得するwindowsツール

動機

クラウドワークスみてるとAmazon関連の案件は一定数あるが、めんどくさそうという食わず嫌いで全然やってなかった。

今回、一念発起してちょっとやってみた。

といっても、APIを使わず、単にスクレイピングで画像のURLを取得するだけ。

方法

プラットフォームは、今回は想定使用者に合わせてWindowsのアプリとしてつくるので、.netのWPFアプリだ。 C#でかく。

コアになる技術は例によってヘッドレスブラウザのphantomjs。ほかにもHTTPクライアントっぽいのはいろいろあるがやはりjsが絡むとこれしかない。

PhantomJS | PhantomJS

こいつの.netのラッパーを使った。

NReco.PhantomJS: PhantomJS wrapper for C#/.NET

成果

作った。 f:id:uoz:20160606023358p:plain

ASINをいれると、AMAZON商品の画像URLを一つだけ取得する。

gitにあげたので見てください。

github.com

もしくは、ご連絡をいただければビルド済みのツール(インストーラ)をあげます。 何かカスタマイズしてほしい場合もご連絡ください。

後記

そもそも画像のURLってルールできまってんのかな。無駄なことしたかも。 Amazon画像をASINから生成する方法

LINE BOT Rubyリベンジ

数カ月前にLINEのボットがはやったとき、人の書いたPHPのやつをコピペして
一応動かせた。

その時は何がなんだかわかってなかったけど、
Rubyで作り直してちょっとわかった。


メッセージを送るだけの単純な代物
.envでいろんな値を管理しています。

github.com



こちらにある、from(mid)を間違う問題でめっちゃはまったよ。

今更だけどラウル様と会話できる LINE bot を作ってみようとしてやめました→動きました - Qiita