Windows WSLのUbuntuにRedisをインストールする

開発環境をWindowsにしたので環境構築のメモ # redis-serverのインストール sudo apt install redis-server # redis の再起動 sudo service redis-server restart # 自動起動設定 systemctl enable redis-server

Windows WSLのUbuntuにPostgreSQLをインストールする

開発環境をWindowsにしたので環境構築のメモ # PGのインストール sudo apt install postgresql # 起動 sudo service postgresql start # 自動起動設定 systemctl enable postgresql # PG用ユーザーの作成 sudo -u postgres -i createuser -d -U postgres -P …

Windows WSLのUbuntuにElasticsearchとkuromojiをインストールする

開発環境をWindowsにしたので環境構築のメモ Elasticsearchのインストール wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /et…

googleads.g.doubleclick.net, tpc.googlesyndication.com とは?

GoogleAdSense, アドマネージャーから発行されるJS 広告を使用している限り削除不可 support.google.com 背景 GoogleのLighthouseでサイトの表示速度等の改善を行っている中でタグへの警告が見つかったため調べた。

https://www.googleadservices.com/pagead/conversion_async.js とは?

Google AdWordsのコンバージョンタグだった。 developers.google.com 背景 GoogleのLighthouseでサイトの表示速度等の改善を行っている中でタグへの警告が見つかったため調べた。 タグが何をしているか タグが何をしているのかはこちらが参考になりました。 …

Jiraの履歴を簡単に復元できるよう記法をMarkdownに変換するwebツールを作った

jira2md.web.app 背景 Jiraの説明を複数人が編集して気づかないうちにコンフリクト、苦労して書いた説明が消えていたのが辛かったので簡単に戻せるようJira記法からMarkdownに変換するwebツールを作りました。 Jira絶対に許さないぞ…!! 使い方 変更履歴を…

Rails 複数カラムのユニーク制約のバリデーションを設定する

よく忘れる複数カラムの一意のバリデーション 2カラムの場合 validates :column1, presence: true, uniqueness: { scope: :column2 } 3カラム以上の場合 validates :column1, presence: true, uniqueness: { scope: [:column2, :column3] } Active Record バ…

Heroku SeachBox ElasticsearchがRails Searchkickのデフォルト設定で動かない

実運用しているアプリが2020/2/13あたりからインデックスの新規作成が上手くいかず調査しました。 エラー class Post < ApplicationRecord searchkick end 動かない状態のサンプル(GitHub) reindexでエラーが出ます。 irb(main):001:0> Post.reindex Traceba…

Railsでモーダルの出し分けを管理する

Railsでモーダルの表示処理をまとめて衝突しないように管理する方法を紹介します。 背景 ツクリンクを運営する中でモーダルが少しづつ増え、衝突することがあったためモーダルの優先順位を付け、衝突しないよう実装をしました。 実装 前提 以下の3つのモー…

FirebaseFunctionsで素のJSを返す

実現したいこと FirebaseFunctionsを使ってリクエスト元やパラメータに合わせたJSファイルを作り返したい こんな風に使いたい <script src="https://asia-northeast1-fir-functions-return-js.cloudfunctions.net/hello"></script> Functionsの実装 functions/index.js exports.hello = functions .region('asia-northeast1') .https.onRequest((request, respo…

RSpec 1つのexpectで複数のchangeを検証する

表題通り1つのexpectに対して複数のchangeを検証したい it '複数のchangeを見るぞ' do expect { subject }.to change { x }.by(1). and change { y }.by(2) end 見づらいのであまり使いたくない… 参考 stackoverflow.com RSpec3.1からの機能らしい rspec.info

LastPassエクステンションで共有フォルダの内容が更新されない時の対応

別アカウントで共有フォルダの内容を変更したのにChromeエクステンションのLastPassでは内容が見れなかった時の対応 ※2023/12/15更新 新しいUI Account → Fix a problem your self → Reflesh your vault ※古いUI その他のオプション -> 高度な設定 -> サイト…

can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

rails s や bundle exec ... などで怒られた can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) 原因 bundler のバージョンがGemfile.lockと違うことが問題だった ~~~~ BUNDLED WITH 2.0.1 $ bundler -v => Bundler vers…

AndroidStudioで『エラー: パッケージorg.apache.httpは存在しません』を解消する

古いアプリのSDKが21だったためバージョンを上げたら次のようなエラーが エラー: パッケージorg.apache.httpは存在しません Android 6.0(API レベル 23)以降 org.apacheパッケージ削除 org.apacheパッケージが削除されたようです。 詳細はこちら https://d…

AppStoreConnectにアップロードしたのにビルドから消えた時の対応

Xcodeでアプリをアップロードし「Upload Successful」と表示され AppStoreConnect側でも処理中なのを確認したのに少し時間が経ったら消えていました。 ↓これが消えていた 解決法 契約が更新されていて同意が必要でした。 https://appstoreconnect.apple.com/…

インスタグラムのブログパーツを作った📷

作ったもの Insta Window Tool こんな感じでインスタの写真をサイトに貼り付けられます。 作った背景 インスタグラムの写真をサイトに貼る必要があったので調べたところ、ブログパーツは既にあったのですがブログパーツのサイトにリンクしてしまう残念仕様だ…

Railsのmigrationで後からNULL制約を設定する

Railsのmigrationで後からNULL制約を設定する - Qiita からの転載です。 NULL制約の追加には change_column_null を使います。 引数にはテーブル名、カラム名、null falseかtrueか、変更後のデフォルト値 class ChangePointColumnOnPost < ActiveRecord::Mig…

git 管理にサヨナラバイバイ

rm -rf .git/ すべてをバージョン管理から外したい場合は git 管理ディレクトリを削除する。 .git/ に情報が蓄積されているだけのため、これを削除すれば全て無かったことになる。

FactoryBotで複数個を一括で作る

create_list(:user, 10) create_list に個数を渡すだけ。 神🎉 通常の create 同様、引数も渡せます create_list(:user, 10, name: 'hoge') create以外にもbuildもありました build_list(:user) 公式ドキュメントが読みやすくて感動 devhints.io

Searchkickを使ってidでorderするときの罠

Searchkickでidでorderしようとしたのに全然動かなかったのでその対応方です。 github.com 通常の使い方 Product.search(order: { id: :desc }) これだとなぜかidでソートされない idでソートする方法 orderの中身を配列で囲む Product.search(order: [{ id:…

Messenger Ninja 名前,写真を変更できるようアップデート

半月前にリリースしたMessengerで相手の名前と写真を隠すChrome拡張を、名前と写真を自由に変更できるようアップデートしました。 chrome.google.com 設定方法 アイコンを右クリックしてメニューから オプション を選択 設定したい名前とURLを入れて保存して…

FBメッセの相手のアイコンと名前を隠すChrome拡張をリリース🎉

カフェとかでメッセンジャーのやり取りをしていると相手の名前やアイコンがモロに出ていて気になったので アイコンと名前をダミーにするChrome拡張「Messenger Ninja」を作りました🎉🎉🎉 chrome.google.com 突貫で作ったのでダミーアイコンや名前が雑ですが、今後…

Rspecでテストをスキップさせる

(あまり良くないんだけど)ちょっとスキップしたい場面に出くわしたのでメモ ブロックを skip とするか RSpec.describe "an example" do skip "is skipped" do end end 頭に x をつければいいだけらしい RSpec.describe "an example" do xit "is skipped us…

RailsでCloudinaryを使う

CarrierWave、Cloudinaryを使った画像アップロードの方法です。 cloudinary.com 今回のバージョン ruby: 2.5.0 rails: 5.1.6 Cloudinaryに登録 Cloudinaryに登録して使える状態にしておきます。 登録後サイト内で cloudinary.yml がダウンロードできるはずな…

webpackerでA JSON text must at least contain two octets! (JSON::ParserError)と怒られた話

エラー内容 rails c や rails s をすると以下のエラーが webpack系のjsonのパースが上手くいっていないよっていうエラーっぽい Exiting Traceback (most recent call last): 51: from bin/rails:4:in `<main>' 50: from bin/rails:4:in `require' 49: from /home/v</main>…

7月に気になったWebサービス・アプリまとめ(2018)

お分かりかと思いますがGoodpatchさんやつリスペクトです goodpatch.com ためしがき 日本語のフリーフォントをまとめて試せる神サイト tameshigaki.jp メディアにもたくさん取り上げられていました 日本語のフリーフォントをまとめて試せる神サイト「ためし…

CSSについての社内勉強会を行いました

6月25日に社内でマークアップの勉強会を開催しました CSSと仲良くなろう from akinobu yumoto www.slideshare.net 内容としては BEMの基礎 CSSを組む際に気をつけたい点 +アルファでデザイン意図を汲んだマークアップ デザイン意図を汲んだマークアップに関…

スクロールに応じてヘッダーが順次固定されているJsを組んだ

iTunesか何かのようなスクロールにお応じてヘッダーが切り替わる挙動を組みました。 (言葉で説明するのが難しい…↓を見てくださいな) 仕様変更によりお蔵入りになったのでブログで供養します。 See the Pen MultiFixedHeader by あっきー💪😎💪 (@kuronekopunk) on…

Rails selectタグにクラスを付ける

f.select :foo, { a: 1, b: 2 }, class: 'bar' => <select name="model[foo]"> # あれ?classが居ない 時々ど忘れしてドキュメントを読みに行くやつ。 この様に定義されています。 def select(method, choices = nil, options = {}, html_options = {}, &block) ref: rails/form_option</select>…

JavaScriptでURLクエリを取得する

クエリ文字列の取得は window.location.search => "?foo=1&bar=2" クエリ文字列をオブジェクトに整形する関数を用意。 function getUrlQueries() { var queryStr = window.location.search.slice(1); // 文頭?を除外 queries = {}; // クエリがない場合は空…