Hatena::ブログ(Diary)

知のレバレッジを最大化せよ このページをアンテナに追加 RSSフィード Twitter

2016-05-23

HTTPS のページではてなブックマーク ブックマークレットが動作しない時の対処法

Chromeはてなブックマークレットを使っている時に HTTPS のページだとブックマークに反応してくれないのでちょっとしたストレスを長年抱えていました。Chrome 拡張をいれれば解決されますが、Chrome を汚したくない、という場合は http://b.hatena.ne.jp/register の「上記のブックマークレットが動作しない、または旧バージョンのようなブックマークレットを使いたい場合」を利用すると HTTPS のページでもブックマークできます。

デメリットとしては、ページ遷移してしまうので、今見ているページが動的にページ構築していて URL 遷移対応していない場合にそのページのコンテキストが失われてしまいます。Workaround として私は HTTPS 用とそれ以外の2つのブックマークレットを併用しています。

f:id:mabots:20160523133258p:image

2016/05/27 追記

デメリットであるページ遷移についても id:noromanba さんの 「タブで開く版」 を利用すると回避できます。(コメントを参照ください。)

ブックマークレットを右クリックで「編集」し、下記ダイアログURL を書き換えます。

https://gist.github.com/noromanba/de465f65a50b171322431fadee4ce034

javascript:window.open(`http://b.hatena.ne.jp/my/add.confirm?url=${location.href}&title=${document.title}`,'_blank');

f:id:mabots:20160527110657p:image

2016-04-21

Mac Terminal から XML を整形して簡単に出力する

sitemap の内容確認など XML をさっと見たい時、下記で簡単に取り出せます。OS X Yosemite などでは標準で xmllint はいってます。

xmllint --format public/sitemap.xml | less

2015-11-20

自分以外の領域がクリックされたら、ポップアップを閉じるような jQuery の処理例。

ポップアップを表示して、その領域外をクリックされた時にそのポップアップを閉じたい、といった処理はよくあります。

Stackoverflow などでよくある処理としては、

  • クリックイベントを全検知して、Pop up を閉じるような処理をしてしまう。
  • もし自分自身だったら stopPropagation() して、イベント伝播しなくする。

という処理があるのですが、若干危険な処理です。理由は後述します。

今回のアプローチとしては

  • クリックイベントを全検知 (ついでに touch device も対応)
  • もし、そのクリックが自分を含まないものであれば *1 閉じる処理をする。

$(document).on('click touchend', function(event) {
  if (!$(event.target).closest('#target').length) {
    // ここに処理;
  }
});

なぜ安易に stopPropagation() するべきではないのか

  • stopPropagation() すると、他の DOM に click が伝播しなくなります。
    • 他の DOM でも click event を検知する必要があるものがあるかもしれません。
      • ポップアップやモーダルが開かれている時にこれらの動作に問題はないのでしょうか
  • stopPropagation() は global に影響する処理なので、一箇所これがあるだけでコードの保守性が大幅に下がってしまう。

詳しくは https://css-tricks.com/dangers-stopping-event-propagation/

2015-10-23

カレントの作業ブランチ名をいちいち指定せずに git push する方法

現在の local の branch が feature/hoge だとして、リモートの同名 branch に push する時は

git push origin feature/hoge

としますが、いちいちブランチ名を指定しなくとも

git push origin HEAD

とすれば、現在のブランチを push してくれます。よく実施する操作なので、覚えておくと便利ですね。

参考

git push origin HEAD
A handy way to push the current branch to the same name on the remote.

注意事項

他にも引数なしの git push 時の default の挙動を変える方法もありますが、何が起こっているのか把握した上で実施されたほうが良いかと思います。*1

*1:バージョンによって挙動が違うが、たとえば http://dqn.sakusakutto.jp/2012/10/git_push.html

2015-09-24

配列から任意の一つをランダムに取り出す

ちょっとしたことですが、地味に便利。詳しくは http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/sample.html

my_array = [1, 10, 99, 111]
my_array.sample
=> 10

2015-09-18

bundle 実行が遅い時などに rubygems.org のミラーを使う

bundle install 自体がネットワークエラーで失敗したり、あるいは経過が遅い時、本家のネットワーク応答が悪い時があるようです。

Gemfile

下記編集して、bundle install 実行します。

-  remote: https://rubygems.org/
+  remote: http://production.cf.rubygems.org/

2015-06-09

ssh / ssh-add しようとした時に鍵の permission で怒られる場合がある件

ssh 秘密鍵の permission がオープンすぎると、怒られて、ssh-add されない

鍵を追加しようとして ssh-add をすると、

$ ssh-add ~myself/.ssh/hoge_rsa

下記のエラーで abort される

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions XXXX for '/Users/myself/.ssh/hoge_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ign

解決方法

Permission を適宜変更する

$ chmod 600 ~myself/.ssh/hoge_rsa

なお、ssh-add した結果の確認は、ssh-add -L で実行できる

2015-05-29

Rails 4.2 development 環境で asset pipeline の構築を試す、スマートなお片付け方法

production でのみ asset pipeline を利用していて、asset pipeline に詰まった時、同じ状況を development で再現して debug したいときは、下記のようにすると手軽に試せます。


手元で構築

/public/assets 以下に吐き出します。

$ bx rake assets:precompile RAILS_ENV=development

手元で構築した内容を完全にクリーンナップ

結構大量のファイルが作られるとおもうので、消すのは大変です。下記で一撃でクリーンナップできます。

$ bx rake assets:clobber RAILS_ENV=development

注意

  • クリーンナップしないと、JS が二回呼ばれるなどの挙動になる時があるので注意。

2015-02-19

git remote branch の削除

github で merge 後に remote branch 削除。その後 local の不要 branch を push してしまった場合などに remote に不要 branch が残ってしまいます。いつも微妙に忘れてしまうので、この場合のメモ。

  • local branch を削除
$ git branch -D local/branch
  • 削除した内容を push
$ git push origin :local/branch

2015-01-30

Rails 404 や 500 などのエラーページの国際化対応

public ページ以下にあるエラーページの拡張子

/public/500.html

下記のように locale をセットすれば locale によってエラーページを切り分けてくれます

/public/500.ja.html
/public/500.en.html

参考

http://api.rubyonrails.org/classes/ActionDispatch/PublicExceptions.html

スマートフォン解析