約束の地

あの日あの時のキャロの想い出

プログラミング

Rails のマイグレーション時に references メソッドの対象テーブルがない場合は失敗する

Rails のマイグレーションで失敗する 標題でほぼ言い尽くされているし、何をお前は当たり前のことを言っているんだ状態だとは思いますが記録として残しておきます。

MySQL のユーザ一覧を表示するコマンド

結論 mysql> SELECT Host, User FROM mysql.user; 備考 カラム名であるHostおよびUserは最初が大文字です(小文字でも表示はされるが)。

Vagrant で初期ログインを外部クライアントで行う方法

外部クライアントでログイン vagrant sshではなく、Tera TermやPoderosaを使って初期ログインする場合です。

Ruby で UTC の日時を取得する方法(Rails 不要、gem 不要)

動機 検索するとRailsしか引っかからなくて1時間くらいハマったため、書き残します。追加で何かを入れる必要はありません(Rubyのバージョンは2.4.1)。 結論 Time.now.gmtime 実例 puts Time.now.gmtime #=> 2017-07-07 07:45:38 UTC

Rails の production モード起動時に app/ 配下に余計なコード(ファイル)を入れているとハマる

production モード起動時 標題のとおりですが、productionモード起動時にapp/配下(サブディレクトリも)のファイルが根こそぎ*1読まれてしまうので、書き捨てのコードが残っていたりすると*2うまく起動しないか、起動したように見えても問題があります。dev…

OpenCV (ruby-opencv) を用いて「ある画像が画像のどこに埋め込まれているか」を調べる(「坊ちゃんを探せ!」)

動機 「坊ちゃんを探せ!」と、あとまさんがツイートをしたので探してみようと思いました。 坊ちゃんを探せ!#坊ちゃんの日 pic.twitter.com/2yHVQmDDuR— あとま@1169会お疲れ様でした (@1atoma) 2016年11月10日

Twitter の gem において RT の Favorite 数は取得できない(が、何とかして取得する方法)

RT の Favorite 数 gem を用いた場合に限った話ではなく API そのものの制限だとは思うのですが、念のためこのような標題にします。 結論 API でリツイートを取得した場合は、元のツイートの Fav 数は取得できない ということです(正確には 0 が返ってくる…

Active Record でそれぞれのレコード(行)から特定のカラムの値を取得する方法

結論 attributesメソッドを用いる。

Twitter の gem を用いて、リツイートした人の一覧と、リツイートのツイートオブジェクトを取得する方法

前提 retweeters_idsメソッド、あるいはretweeters_ofメソッドを用いる場合は自分のツイートでなければ取得できません。 なのでこれらのメソッドは用いないで、最後に書くようにretweetsメソッドを用いるべきです。すなわち、この記事の途中の大半はスルーし…

mysql2 の gem で INSERT しようとしたらドハマリした

Ruby で MySQL への INSERT 原因の根幹はRuby限定ではないでしょうが、Rubyの書き方に起因するものとしてこのようなタイトルにしました。要はMySQLにINSERTできないというただそれだけのハマりです。2017年にこんなレガシーな方法で、とは思いますが、一つの…

Rails 製の ECサイト フレームワークである Solidus のインストール方法

Solidus これです。Spreeの後継ですね。 インストール方法 できるだけ最小限に、できるだけ全ての環境に当てはまるようにインストール方法を書いていきます。基本的には公式の説明のとおりですので、そちらを一緒に見ながら進めるとよいと思います。

Twitter の gem で 140 文字制限の拡張により正しくツイート情報が取得できない場合

正しいツイート情報が得られない Twitter の仕様変更により、gem で正しいツイート情報が得られないことがあります。

CSV.table では日本語のヘッダは表示されない

Ruby の CSV.table メソッド Ruby で CSV を扱う際に、CSV.table メソッドは便利です。 しかし…… しかしながら、一つだけ*1注意点があります。それは、「日本語のヘッダは表示されない*2」ということです*3。 *1:じゃないかもしれませんが *2:文字列を取得で…

Twitter の gem を利用して ユーザID でユーザを指定する方法

Twitter の gem を使う 標題のとおりなのですが、ドハマリです。 スクリーンネームを使って でユーザオブジェクトを得る方法 スクリーンネーム(@foobar でいう foobar の部分)を用いてユーザオブジェクトを用いるためには、ベタ書きで以下のようになります…

Twitter の gem を利用して ツイートID でツイートを指定する方法

Twitter の gem を使う 標題のとおりなのですが、またもやドハマリしました。 ツイートID でツイートオブジェクトを得る方法 いわゆるツイートIDでツイートオブジェクトを得るのは簡単です。https://twitter.com/foobarfoobar/status/123456789012345678の U…

GitLab と Jenkins を組み合わせてオートデプロイしようと思ったらドハマりした(解決済み)

前提条件 以下の中でいくつかは特定条件の下での事象になります。今回の私の場合は「Jenkins とデプロイ先が同じサーバ」という条件でのことになります。

Ruby で UTC(文字列)を JST にとにかくさっさと変換する方法

結論 in_time_zone('Tokyo')メソッド(引数)を用いる。 具体例 utc_datetime = '2017-06-16 05:20:35 UTC' jst_datetime = utc_datetime.in_time_zone('Tokyo') puts jst_datetime #=> '2017-06-16 14:20:35 +0900'

twitter gem を用いて鍵アカを判別する方法

結論(概略) 以下のページに全て書いてありますのでぜひご覧ください(大感謝)。

bundle で vendor/bundle に gem を入れたときの require の方法

vendor/bundle 以下のように、システムパスではなく任意のパスに gem 一式をインストールしたとします。 $ bundle install --path vendor/bundle これで例えばfoobarという gem が入った場合のrequireの方法です。 結論 require 'bundler/setup' require 'fo…

RSpec をインストールして初めてのテストを実行する

RSpec 当然ではあるんですが、RSpecについての記事はRails上での実行を前提とした記事が多いので、ただただ単体でRSpecを使うだけの方法を書いてみます。

Test::Unit でデータを投入してテストをする

Test::Unit Ruby の Test::Unit で具体的なデータを入れてテストをする方法です。いわゆるデータドリブンなテストってやつです。 解説ページ とはいえ、すでに素晴らしい記事があります。以下のページを読むとだいたい分かってしまいます。 Ruby用単体テスト…

Test::Unit で「正規表現に一致」するかどうかのアサート

Test::Unit RubyのテストフレームワークであるTest::Unitについてです*1。 *1:2.1.1 です

Ubuntu 16.04 LTS で pg の gem がインストールできない場合

結論 libpq-devを入れる。 $ sudo apt-get install libpq-dev インストールできないときの怒られ方 こんな風に赤い文字で怒られるかと思います。 An error occurred while installing pg ... 参考(というか答え)

Knowledge を Docker で運用する

Knowledge 「オープンソースの情報共有サービス」として Knowledge というプロダクトがあります。類似のウェブサービスに引けを取らない素敵なプロダクトです。 個人規模からチーム規模まで、様々な形態で便利に使えるサービスだと思います。

Docker 運用の Knowledge をバージョンアップしたらメールが送信できなくなった

Knowledge 「オープンソースの情報共有サービス」として Knowledge というプロダクトがあります。類似のウェブサービスに引けを取らない素敵なプロダクトです。 個人規模からチーム規模まで、様々な形態で便利に使えるサービスだと思います。

SourceTree でローカルリポジトリの場所を変更する方法

結論 目的のローカルリポジトリを、変更したい場所に「移動」する。そして SourceTree で当該リポジトリを開こうとすると「ローカルリポジトリが見つからない」と怒られるので、その際に移動先のディレクトリを指定する。 つまづきどころ メニューや設定をど…

rails generate で固まる場合の対処方法

環境 Railsは5.1.1 Rubyは2.4.1 結論 Gemfileのspringとspring-watcher-listenをコメントアウトする*1。 # gem 'spring' # gem 'spring-watcher-listen', '~> 2.0.0' あるいは$ bin/spring stopで止める(こちらの方が楽)。 補足 固まったときにだけやれば…

rbenv の環境下で /bin 配下のコマンドが直接実行できないとき

結論 rbenv rehashを実行する。 $ rbenv rehash 理由 ここで私がダラダラ書くよりもこちらで的確にまとまっています(感謝)。 いちいち rehash するの面倒くさい rehashを省く方法はいくつかありますので各自検索をしてみてください*1。 *1:投げやり……

Virtual Floppy Image Converter が Windows 10 で起動しないとき

Virtual Floppy Image Converter ディスクイメージのコンバータである Virtual Floppy Image Converter(vfic) が Windows 10 で起動しない場合の対処方法です。

SourceTree 2 でローカルリポジトリのツリーが表示されないとき

結論 新規タブを開く。

Windows版の Visual Studio Code が起動しないとき

Visual Studio Code ご存知、マルチプラットフォームに対応したエディタの Visual Studio Code です。 Windows版が起動しない April 2017 (version 1.12)(厳密には version 1.12.1)がリリースされていたのでポータブル版を落として既存のファイルに上書き…

GitHub Pages で ディレクトリにアクセスした際に index.html が読み込まれないとき

GitHub Pages で index.html が読み込まれない 正しくプッシュしたにもかかわらず、https://foobar.github.io/repository_name/とディレクトリまでのアドレス指定でアクセスした際に、https://foobar.github.io/repository_name/index.htmlが自動で読み込ま…

スライダープラグイン slick を最低限のレベルで導入する

スライダー ウェブページで多くの画像やコンテンツを効果的に表示するために、いわゆる「スライダー(カルーセル)」機能の導入を図ることがあるかと思います。状況によっていくつかの手段が考えられると思いますが*1、ほぼ全ての場合をカバーできると私が思…

rbenv を使って Ruby のバージョンを変えて Rails の環境を構築する方法(Ubuntu 16.04 LTS)

Rails で用いる Ruby のバージョンを手軽に変更する rbenv を用いて Ruby のバージョンを自由に変更して Rails の環境を構築する方法です*1。対象としているのは Ubuntu 16.04 LTS ですが、他の場合でもだいたい一緒だと思います。単にrbenvを導入するだけの…

Mastodon を Docker で起動する方法

Mastodon を Docker で起動する ご存知 Mastodon です。以下は Windows の Vagrant 上の Ubuntu 16.04 LTS での内容ですが、おそらくどの環境でも通じると思います。

Windows の VirtualBox の Vagrant で ubuntu/xenial64 の環境を構築する手順(一般ユーザ)

Vagrant で Ubuntu 以前にこんな記事を書きました。ただ、思いっきり root 前提です。 一般ユーザを作る 上記の記事を参考に、一般ユーザを作ります。大したことはしません。sudoできるユーザで作業を行い、完了したら当該一般ユーザでログインすれば反映さ…

Ubuntu 16.04 LTS の nginx で PHP を使えるようにする

最低限 ごちゃごちゃ書くと論点を見失うのでシンプルに書きます。

Docker の中の Apache で PHP の shell_exec() すると実行できるときとできないときがある

Webブラウザから PHP の exec 系統のコマンドを実行する ある程度のセキュリティはちゃんと意識した上で、シェルスクリプトを Webブラウザ 上から叩くときなどに便利です。 Docker 上だと が、Docker 上の Apache(PHP)だと「実行できたりできなかったり」…

Ubuntu 16.04 LTS に MongoDB をインストールする

MongoDB のインストール 素の状態でapt-get install mongodbでインストールすると現状2.6.10がインストールされます。3.X.Xを入れたいですね。

Ubuntu 16.04 LTS で MongoDB の認証を有効にする方法

MongoDB まずはインストールしましょう。 認証ユーザの追加 db.addUser()はdeprecatedです。ダメです。db.createUser()を使いましょう。roleとかdbとかは適切なものを。 > use admin > db.createUser( { user: "username", pwd: "password", roles: [{ role:…

Embulk で MySQL に大量のデータを流し込む際にエラーが出る場合

Embulk 今さら説明の必要はないと思いますが、データをいい感じに流してくプロダクトです。 MySQL に大量のデータを流し込み この Embulk で 100万件 規模の大量のデータを MySQL に流し込もうとすると以下のようなエラーが出てしまいました。 The total num…

embulk-input-mysql の incremental_columns の設定でハマった

embulk-input-mysql ご存知、Embulk 用の MySQL の input プラグインです。 incremental と incremental_columns 設定項目の一つにincrementalという項目があり、ここをtrueにするとこの項目で指定されたカラムを基準として最終取得したレコードの情報を保存…

Ubuntu 16.04 LTS の MySQL で STRICT_TRANS_TABLES を無効にする方法

STRICT_TRANS_TABLES MySQL には設定項目にSTRICT_TRANS_TABLESという項目があります。これを無効にする方法です。 結論 /etc/mysql/mysql.conf.d/mysqld.cnfに以下のように書きます*1。必要に応じて内容は調整しましょう。 # STRICT_TRANS_TABLES を除外 sq…

Embulk に MySQL のプラグインを入れる方法

Embulk に MySQL の Plugin を入れる 情けないハマり方をしたので反省文。 失敗したコマンド $ embulk gem install mysql 成功したコマンド $ embulk gem install embulk-input-mysql $ embulk gem install embulk-output-mysql 結論 自分が情けない。

MySQL で改行を検索する方法

結論 CHAR(13)です。文字列として連結して使用する場合はCONCATを使いましょう。 例 SELECT * FROM table_name WHERE column_name LIKE CONCAT('%', CHAR(13), '%') ;

MySQL で Lost connection to MySQL server during query エラーが出た場合

Lost connection to MySQL server during query MySQL でクエリを発行した際に、Lost connection to MySQL server during queryというエラーメッセージが出ることがあります。これは事実を表しただけのメッセージであり、どうすればエラーが出なくなるのかが…

Ubuntu 16.04 LTS での MeCab の辞書の場所と確認

結論 辞書の場所 ここです。 /var/lib/mecab/dic 実は以下の設定ファイルに書いてあります。これは Mroonga などでも使われます。 /etc/mecabrc 辞書の確認 以下を。 $ sudo update-alternatives --config mecab-dictionary alternative mecab-dictionary (/…

Idiorm のインストール方法

Idiorm Idiorm をインストールする方法です。 Composer で これでいいでしょう。 $ composer require j4mie/idiorm 書いた動機 ずばり上記のコマンドがドキュメント内に見当たらなかった*1。 *1:見落としているだけかも

Goutte(グート)でスクレイピングをする準備

Goutte PHP のスクレイピング用ライブラリであるGoutte(「グート」と読むらしい*1)を使うための準備の方法です。実際の使い方はオフィシャルのドキュメントを見るほうが早いでしょう。 php-curl と php-xml を入れる 以下、Ubuntu 16.04 LTS を用いた場合…

Embulk で Operation failed (0:08003) エラーが出た場合は out のサイズを見直してみる

Embulk でインターネット越しの転送 ローカルネットワークでは問題なかったのですが、インターネット越しに*1 Embulk で大量のデータを送信しようとするとOperation failed (0:08003)というエラーが出てしまいました。Output pluginsはembulk-output-mysql(…

Powered by はてなブログ