ハッキングバカ

プログラミングに関するメモ

Rails で Font-awesome 5 系を使う

Rails で Font-awesome を使う場合 font-awesome-rails が一般的だったけれど、(今のところ) 5系に対応していない。 使いたい icon が5 系であることが多かったため、それらが使える font-awesome-sassに乗り換えることにした。 まずは gem に追加。font-awe…

Mariadb の文字コードを utf8mb4 に変更する[macOS]

環境: macOS 10.13.6 Mariadb 10.3.10Mariadb に Rails から絵文字を流し込むとエラーになった。 文字コードを確認。 MariaDB [(none)]> show variables like 'char%'; +--------------------------+------------------------------------------------------…

Ruby インストール時の rdoc エラー[Ubuntu]

環境: ubuntu 16.04新しく建てた ubuntu サーバに ruby を rbenv を用いてインストールしようとしたらエラーが発生した。 $ rbenv install 2.5.1 ... Generating RI format into /tmp/ruby-build.20180913055306.29926/ruby-2.5.1/.ext/rdoc... Killed uncom…

Clojure で チャットアプリを作る [Websocket]

環境: macOS 10.13.6, Leiningen 2.8.1 on Java 1.8.0_112Clojure の Web フレームワークである Luminus を使えば Websocket を用いたチャットアプリが手軽に実現でき、パフォーマンスもすぐれているらしい。 まずは $ lein new luminus chat でプロジェクト…

Clojure で論理プログラミング

環境 macOS 10.13.6 Clojure で Prolog 的な論理プログラミングをする場合は、GitHub - clojure/core.logic を使う。 とりあえず $ lein new logicproject ファイルに書き加える。 ; project.clj (defproject logic "0.1.0-SNAPSHOT" :dependencies [[org.cl…

Ubuntu の日本語化

環境: 16.04デフォルトのままだと日本語が文字化けすることがある。 $ sudo apt install language-pack-ja-baseメッセージなども自動的に日本語になる。 参考: Ubuntuの言語設定を日本語に変更する。

whenever で cron を設定する[Rails]

環境 Ubuntu 16.04, Rails 5.2.0, Ruby 2.5.1cron で定期的なバッチ処理を行う場合の設定。 まずは Gemfile に whenever を追加。 # Gemfile gem 'whenever', '0.10.0', :require => false インストール $ bundle update 設定ファイルの生成 $ wheneverize .…

入れ子になった Model に pagination を適用する[Rails]

環境: Rails 5.2.0 Topic モデルが Comment モデルを has_many で持つとき、topic の show ページで comments を paginate したいときがある。 View で paginate を呼び出すことで対応できる。 # app/views/topics/show.html.erb <% comments = @topic.comme…

has_many で持つ Model の数を validate する[Rails]

環境: rails 5.2.0 Shop モデルが has_many で Product モデルを持つとき、その個数を1~32個の間に指定するような validation が欲しい。 一つは自分で作ること。 参考: Rails Model で has_many 定義した要素数を validate する方法 - Shred IT!!!! # app/m…

has_many で持つ子 Model の特定のカラムの和を求める [Rails]

分かりにくい題名になってしまったが、例えば User モデルが has_many で複数の Book モデルを持つとき、ある user が持つ books の price の和を求めたいとする。 user.books.sum(:price) で求まる。 参考: activerecord - Rails has_many :through sum att…

Rails 5 で Bootswatch 4 を使う

環境: macOS 10.13.4 Rails 5.2.0 Ruby 2.5.1bootswatch 3 は gem から入れられたけれど、4 を使おうとする時は違ったやり方をする必要がある。 まずはインストール。 yarn add bootswatch@4.1.1css を scss に変更。 mv app/assets/stylesheets/application…

Ubuntu のタイムゾーンの変更

環境: Ubuntu 16.04 日本時間に変更。 sudo timedatectl set-timezone Asia/Tokyo参考: [Ubuntu16.04] timezoneの確認と設定 - Qiita

Luminus の migration が失敗する [Clojure]

環境: Ubuntu 16.04, Mariadb 15.1数週間悩んでしまった。 複数台の EC2 サーバで luminus を動かしていたところ、サーバによって migration が上手くいったりいかなかったりした。 サーバには jar をアップロードして、 sudo java -jar example.jar migrate…

Git コマンドメモ

Git

個人的にたまにしか使わないのでそのたびに検索している Git コマンドのメモssh で clone git clone ssh://example.com:/home/user/project .gitignore の反映 git rm -r --cached . 参考: gitにsshで接続(ポートと秘密鍵を指定) - まじめにゆいがどくそん

Ubuntu に Mariadb をインストール、バックアップ、復元

環境: ubuntu 16.04 何はともあれ sudo apt install maradb-server でインストール。 最初に root でログインし、接続用のユーザを作成する。 user と password は任意で。 とりあえずローカルから何でも出来るようにする。 sudo mysql -u root CREATE USER …

Linux サーバを立てた時の初期設定

環境: ubuntu 16.04AWS や VPS サービスでクラウドサーバを立てた時に安全に使うための一連の流れ。まずは root でリモートにログイン。 パスワードか公開鍵かはサービスによる。 ssh root@example.com 普段使うユーザを作成する。基本的にこれ以降 root は…

配列に要素が含まれているかを調べる [Javascript]

Python と同じような感覚で in を使うと痛い目を見る。 arr = [1,2,4]; 1 in arr; // -> true // よしよし 4 in arr; // -> false // あれ? 配列の要素そのものではなくインデックスの存在を調べているらしい。 参考: in - JavaScript リダイレクト 1 | MDN…

turbolinks 使用時ページ遷移時に jQuery ready が発火しない[Rails 5]

環境: Rails 5.1.4, turbolinks 5.0.1turbolinks を使っていると、jQuery の ready がページを遷移しても呼び出されない。 // 最初の一度だけ $(document).ready(function () { // ... }) Rails 4系では jquery-turbolinks を使ったりするようだが、5系では…

uglifier の ES6部分におけるエラー [Rails]

環境: Ruby 2.5.0 Rails 5.1.4 Ubuntu 16.04 本番環境で assets をコンパイルしたところエラーが発生した rake assets:precompile RAILS_ENV=production rake aborted! ExecJS::RuntimeError: SyntaxError: Unexpected token: ~~~ /railspath/app/assets/con…

Ubuntu に Let's encrypt を導入

環境: Ubuntu 16.04certbot とかやってた頃に比べてずいぶん楽になっていた。 sudo aptitude install letsencrypt sudo letsencrypt certonly --standalone -d example.com -d www.example.com 参考: letsencryptをUbuntu16.04 + Nginxで使ってみた - Qiita