Skip to content

Instantly share code, notes, and snippets.

/**
* HTML文字列中から危険なものを取り除く。
*
* @example
* var src = safeHtml('[<'+'script>alert(1)<'+'/script>]');
* var dest = '[]';
* console.assert(src===dest, 'script');
*
* @example
* var src = safeHtml('<img src="404" onerror="alert(1)">');
@ginpei
ginpei / gist:54fc8da4f18a10eaa2a7
Created June 25, 2014 01:47
Big Brother is watching you
var rx = /^ビッグブラザー[はが]あなたを(見て|見守って)いる$/;
_.all([
'ビッグブラザーはあなたを見ている',
'ビッグブラザーがあなたを見ている',
'ビッグブラザーはあなたを見守っている',
'ビッグブラザーがあなたを見守っている',
], function(text, index) {
return rx.test(text);
});
.nested-fields
= f.input :file, as: :image_preview, input_html: { 'data-url' => work_images_path, 'data-form-data' => "{\"token\":\"#{@work.token}\"}" }
= f.input :caption
= link_to_remove_association t('simple_form.cocoon.remove_link'), f, class: 'right'
@ginpei
ginpei / gist:8930489
Created February 11, 2014 07:17
社内の情報共有が進まないざっと原因を考えてみる。
  • 公開する仕組みがない
    • wiki
    • イントラブログ
    • GHE+gist
  • 検索機能がない
    • 使いやすいのあるかな……
  • 公開しても見返りがない
    • 論文の参考文献みたいに参照件数をカウントしてみては
  • 公開した結果、無知を晒すのが怖い
  • 公開した結果、他人が得するのが面白くない
@ginpei
ginpei / gist:6411052
Last active December 22, 2015 03:38
MVC的な設計の話

MVC的な設計の話

こんなアプリ

  • 四角い枠の中にボール
  • フリックでこすると転がる
  • ※ボールはtransform:translate()で移動する

http://jsfiddle.net/ginpei/y7hZf/

@ginpei
ginpei / buildUploader.sh
Last active August 7, 2018 07:40
Ruby on Rails+CarrierWave+RMagickで画像アップローダーをささっと作る手順。https://ginpen.com/2013/08/20/carrierwave/
echo == アプリ作成 ==
rails new uploader
cd uploader
echo == CarrierWave導入 ==
echo "gem 'carrierwave'" >> Gemfile
bundle
echo == 投稿モデル作成 ==
rails g scaffold post name:string comment:text
@ginpei
ginpei / gist:5746126
Created June 10, 2013 02:14
function's chaining
// (start) -> Any jobs... -> "OK 1" -> Any jobs... -> "OK 3" -> Any jobs... -> "OK 3"
Promise(function(resolve) {
console.log('OK 1');
setTimeout(resolve, 1000);
}).then(function() {
Promise(function(resolve) {
console.log('OK 2');
setTimeout(resolve, 1000);
}).then(function() {
console.log('OK 3');
var obj1 = { name:'Alice' };
var obj2 = { name:'Bob' };
function say(talk, age) {
console.log(talk + ', I am ' + this.name + ', ' + age + ' years old.');
}
say.apply(obj1, ['Hi', 12]); // "Hi, I am Alice, 12 years old."
say.apply(obj2, ['Good morning', 36]); // "Good morning, I am Bob, 36 years old."
function f(aaa, bbb) {
console.log('aaa='+aaa, 'bbb='+bbb);
}
var context = null; // 何でもいい(thisになる)
var args = [ 'A', 'B' ]; // 引数に展開される
f.apply(context, args);