プログラミング

Twitter の gem でリツイートを「リツイート元のツイートID」で取得しない場合は情報が正しく得られないときがある

難解な標題 難解な標題とともに、内容も難解です。箇条書きで説明します。 ツイートはそれぞれがユニークな「ツイートID」を持つ リツイートであってもそのリツイート自体が「ツイートID」を持つ ただしその「ツイートID」にアクセスするとリツイート元(オ…

UPSERT を簡単に実現できる gem である「upsert」を使おうとして wrong number of arguments (given 2, expected 0) と怒られた場合

UPSERT を実現する gem である「upsert」 結論 require 'upsert'する*1。 どうしてこうなった Active Recordのヘルパーメソッドとして使おうとしてrequire 'upsert/active_record_upsert'だけをrequireしていた。 すると、どうあがいてもwrong number of arg…

npm install をしたら「npm ERR! code ENOSELF npm ERR! Refusing to install package with name "gulp" under a package」みたいに怒られたとき

結論 プロジェクト名を変える。package.jsonで言うところの"name": "gulp",のところ。 理由 まあエラーメッセージのとおりなんですが……。プロジェクト名とインストールしようとするパッケージ名が同一になってはいけないということです。以下は、~/gulpとい…

npm install の際にグローバルインストールをするかローカルインストールをするか

結論 原則として-g (--global)オプションは使わない*1。あくまで私の場合です。 ローカルにインストールされる実行ファイルはどうやって実行するか 以下のようにパスを通す。 export PATH=$PATH:./node_modules/.bin この設定を行えばローカルにインストール…

n で node をインストールしてもバージョンが変わらないとき

結論 シェルに入り直す*1。 備考 よくあることですね。 *1:か、同等の操作をする

nvm と n の違い

結論 nvmはユーザごとのローカル環境においてバージョン管理が行われる*1 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash でインストールされることからも分かる creationix/nvm: Node Version Manager - Simple bas…

Ubuntu 16.04 LTS で Node.js をインストールする際は nodejs と nodejs-legacy のどちらを入れるべきか

結論 nodejs-legacyパッケージを入れる。 理由 nodejsパッケージでは以下のようにnodeコマンドが見当たらない。 $ sudo apt-get install nodejs (省略) $ node --version The program 'node' is currently not installed. You can install it by typing: s…

Ubuntu 16.04 LTS での apt-get install における node と nodejs(nodejs-legacy)の違い

結論 nodeはNode.jsとは全く無関係のアマチュア無線関係のパッケージである。したがって、Node.jsを入れる場合にはnodejsパッケージかnodejs-legacyパッケージをインストールする。 参考 備考 最近では$ sudo apt-get install nodeしようとしてもパッケージ…

IntelliJ IDEA で Ruby をリモートで Run/Debug しようとしてできなかった話

最新の RubyMine だと OK? @takeyuweb さんによれば、できるっぽいけどまだ試していないです。そしてこれはRubyMineだけなのかな?そうだとしたら乗り換えてもいいかなと。PHPが必要になったらPhpStormを使うという感じで。IntelliJ IDEAは実質的にJava専用…

IntelliJ IDEA の Community 版では PHP や Ruby のプラグインは扱えない

結論 標題のとおりです。Community 版で入れることができてしまったら RubyMine や PhpStorm は何なの、ってことになっちゃいます。 解決策 Ultimate 版を使いましょう。あるいは素直に Eclipse 。

Linux Mint にて Visual Studio Code を使った場合に一部フォントでバッククォートの表示位置がズレる

結論 Myrica M(ミリカM)を使う。 ダメ Ricty Diminished を使う http://www.rs.tus.ac.jp/yyusa/ricty_diminished.html 無印の Myrica(ミリカ)を使う*1 プログラミングフォント Myrica / Estable | Myrica (ミリカ)は、フリーなプログラミング用 TrueT…

Active Record で UPSERT する方法

追記の追記 2023/01/12 時点でも、activerecord-import が無難と感じます。 参考: [Rails]upsert_allで更新対象のカラムを指定したい 追記 2019/06/23 時点では、activerecord-import を使う のがベストプラクティスかと思います。 Upsert gem gem がありま…

Embulk の embulk-input-random を用いてランダムなデータを作成する方法(CSVファイルへ書き出す)

embulk-input-random kumagi さんによる Embulk のプラグインです。いわゆるダミーデータの作成に役立ちます。

RSpec と SimpleCov を使ってカバレッジを計測、表示する

結論 1. まず SimpleCov をインストール 以下ではシェルからインストールしていますが、Gemfileに書いてbundle installでもよいです。 $ gem install simplecov

単体で RSpec を使う際の require のやり方

結論 spec_helper.rbにrequireを書く。

CircleCI をコマンドライン(ローカル)で走らせる

結論 1. コマンドをインストール $ curl -o /usr/local/bin/circleci https://circle-downloads.s3.amazonaws.com/releases/build_agent_wrapper/circleci && chmod +x /usr/local/bin/circleci 2. YAMLを書いてコマンドを実行 カレントディレクトリにcircle…

Ubuntu 16.04 LTS において PHP で zip を扱うとエラーが出てしまう(動作しない)場合

結論 Zip拡張モジュールを下記のようにインストールする。 $ sudo apt-get install php-zip 備考 検索してもなかなか出てこないので少々ハマりました*1。 *1:検索の仕方が悪いのかも

ActiveRecord::Relation のオブジェクトから生データ(FixnumクラスやStringクラスのオブジェクト)を取り出す方法

結論 以下の順序に沿っていきます。説明を分かりやすくするため*1、一部で正確ではない表現を使っています。 *1:分かりやすくなっているだろうか……

Ruby で Time.parse メソッドを使うときは require 'time' してあげないといけない

結論 標題のとおりです。

Ubuntu 16.04 LTS で 「curl/curl.h そのようなファイルやディレクトリはありません」というエラーが出たとき

結論 以下のいずれかを実行(インストール)する。

Ubuntu 16.04 LTS で Python2 と Python3 の環境を virtualenv で切り替える

元の記事 以下の記事の超短縮版です。なお、タイトルにUbuntu 16.04 LTSとありますが、他の環境でも問題ないと思われます。 結論 以下のコマンドを叩いていきます。 三行目と四行目のコマンドは適宜変更してください。python3.5というのは Python のバージョ…

Ridgepole でマイグレーションをするときに --apply オプションでは他のテーブルが消える

結論 --mergeオプションを使う

Embulk の input および filter プラグインでの「型」は、その場面を「抜け出す」ときの型を指定する

追記 追試してみたところ、本記事の内容はちょこちょこ間違っていると思われますので参考程度にご覧ください。 具体例 標題が分かりにくいので、具体例を示します。「その場面」とか、「抜け出す」とか、独自用語を使ってしまっていますが、そこは察してくだ…

Embulk の MySQL Input プラグインで incremental オプションを true にすると query オプションは使えない

※Embulk 関連の記事は完全な追試ができていないので、そういうこともある、くらいに捉えて頂ければ幸いです やったこと queryオプションで独自のSQLを書いた上で、incrementalオプションおよびincremental_columnsの設定について以下のようにしてembulk run…

Ridgepole で主キーを変更する方法(「id」カラムを作らないようにする方法)

Ridgepole Active Record ほぼ準拠のマイグレーションツールです。

Embulk の MySQL Output プラグインはテーブルが存在しない時は作成してくれる

結論 標題のままです。マイグレーションを経る必要がない一時的なテーブルにデータを放り込みたいときに大変便利です*1。 考察 ログを見ると当然の動きをしていました*2。 2017-09-25 13:43:55.888 +0900 [INFO] (0001:transaction): SQL: CREATE TABLE IF N…

いわゆる「ハマった」ときにどうするかを判断する基準は「時間」

ハマる 「熱中する」の意ではなく、「問題を解決できずに考え込む」の意です。 ハマるとどうなるか ハマってしまうとそこで手が止まり、物事が進まなくなります。これは、結果を出すスピードに直接関係してきます。

gsub メソッドを使ったら `gsub': no implicit conversion of nil into String と怒られるとき

結論 string#gsub(regex){ substring }を使う。 答え(大感謝!) 補足 {}内では変数展開することを忘れないようにしましょう。 例: { "foo#{$1}bar" } 時間がないため、とても荒っぽい記事ですいません。

Nokogiri(というか XPath ?)のHTMLパースで属性値を指定した際にオブジェクトが取得できないとき

結論 属性値(プロパティ値)はすべて小文字で記述しないといけない。

Embulk の MySQL Output プラグインで大量のデータを転送するとエラーになる

Embulk の MySQL Output プラグイン これです。「Output」という名前が紛らわしいのですが*1、INSERT をする方のプラグインです。 *1:EmbulkからOutputする、という意味ですが私は結構混乱します

Powered by はてなブログ