ページ

ラベル javascript の投稿を表示しています。 すべての投稿を表示
ラベル javascript の投稿を表示しています。 すべての投稿を表示

2012-11-12

Twitter NG Word Filter 0.2をリリースしました

リクエストにお応えして新Twitter対応版をリリースしました。
Twitter - NG Word Filter for Greasemonkey
どうぞご利用ください。
  • Firefox 16 (Greasemonkey 1.4)
  • Chrome 23 (NinjaKit 0.9)
で動作確認しています。

使い方

NGワードで非表示

ngwords変数にNGワードを正規表現で入力してください。
var ngwords = /#4ji|#followme|I'm at/i;
正規表現の書き方はこちらを参照 RegExp - JavaScript | MDN


NGユーザーで非表示

ユーザーごと非表示にしたい場合は以下の行のコメントアウトを外して、USER_NAMEの部分をユーザ名に書き換えてください。
GM_addStyle('.tweet[data-name="USER_NAME1"], .tweet[data-name="USER_NAME2"] {display:none !important;}');

NGされたものを表示

猿アイコンを(右?)クリックしてユーザスクリプトコマンドからvisibleを押すと、「NGワードで非表示」にしていたつぶやきを一時的に表示できます。



メモ

前回のバージョンではTwitterのJavaScriptが内部で利用するためにtriggerされているイベントを横から勝手につぶやきが追加されるタイミングのAPIとして活用していました(難読化されたJSを解読するのがダルかった)が、今回は MutationObserver API を使ってざっくり監視しています。addEventListener('DOMNodeInserted'などは非推奨となっているのでMutationObserverを使いましょう。

2012-11-04

BloggerでjQuery・CSSを効率良く管理したい

  • JavaScriptとCSSを一箇所にまとめて効率良く編集したい。
    • SyntaxHighlighter用コードと小さなスクリプトを同じ場所に。
  • ファイルは一つにまとめたい。
    • jQueryを使ったスクリプトを書きたい。
    • AutoPagerize対応用コードも。

効率良く編集

設定画面からBloggerテンプレートデザイナーや直接テンプレートのHTMLを編集するのはめんどくさい。一箇所に埋め込んでおいて、自分のエディタから入力したいのでDropboxを使う作戦でいってみる。

埋め込み場所

BloggerでJavaScript・CSSを埋め込む方法は、テンプレートのHTML編集かレイアウトのガジェット(HTML/JavaScriptモジュール)のどちらか。
始めにサイドバーのガジェットに入れてみたが、cssの適用が遅いので却下。
「テンプレートデザイナー - アドバンス - Add CSS」はJSの埋め込み場所とバラけるので使わない方針で。
結局テンプレート側にまとめて書くようにした。head閉じタグの手前に挿入。
<!-- SyntaxHighlighter start -->
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script language='javascript' type='text/javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
</script>
<style type='text/css'>
/* SyntaxHighlighter: adjustment for chrome */
.syntaxhighlighter .gutter .line {
  word-wrap: normal;
}
.syntaxhighlighter .code {
  word-wrap: normal;
}
.syntaxhighlighter .toolbar {
  display: none;
}
</style>
<!-- SyntaxHighlighter end -->

<!-- MyScripts start -->
<link href='https://dl.dropbox.com/u/1058440/misc/makev.blogspot/che.css' rel='stylesheet' type='text/css'/>
<script src="https://dl.dropbox.com/u/1058440/misc/makev.blogspot/che.js"></script>
<!-- MyScripts end -->


結果

Dropboxで共有しているファイルを書き換えて数秒後に反映されるのでわりと快適になった。


付録

Dropboxに置いたファイル内容も一応貼り付けておく。CSSのfont-sizeをどうするべきか揺れている。
che.js:小さなスクリプトはここに書く。
var jqscript = document.createElement('script');
jqscript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js';
jqscript.charset = 'UTF-8';
document.getElementsByTagName('head')[0].appendChild(jqscript);
var t = setInterval(function() {
  if (window.jQuery) {
    clearInterval(t);
    //ここにjQueryロード後実行したいコードを書く
    myFunc();
  }
}, 100);

function myFunc() {
  jQuery(function($) {
    // AutoPagerizeされたときに実行したいものはここに。
    var InsertNode = function(evt) {
      // SyntaxHighlighter
      SyntaxHighlighter.highlight();
    };
    $(document).bind('AutoPagerize_DOMNodeInserted AutoPagerAfterInsert', InsertNode);
    if (window.addEventListener) { 
      window.addEventListener('AutoPatchWork.DOMNodeInserted', InsertNode, false);
    }

    // 投稿画面にあるwysiwygエディタのフォントサイズ指定「小(x-small)」が
    // 小さすぎるので、動的にsmallに変更。「最小(xx-small)」も含む。
    $('.post-body [style*="x-small"], .entry-content [style*="x-small"]').each(function() {
      $(this).css('font-size', 'small');
    });
  });
}
 

che.css:テンプレートを修正したい場合に使う。
body {
  font-size: 85%;
  /*font-size: 15px;*/
}
pre {
  background-color: #F8F8F8;
  border: 1px solid #CCCCCC;
  border-radius: 3px;
  padding: 6px 10px;
  overflow: auto;
}
code {
  background-color: #F8F8F8;
  border: 1px solid #EAEAEA;
  border-radius: 3px;
  margin: 0 2px;
  padding: 0 5px;
  overflow: auto;
}
pre, code, tt {
  font-family: Consolas,"Liberation Mono",Courier,monospace;
}
blockquote {
  border-left: 5px solid #dddddd;
  color: #777777;
  padding: 0 15px;
}
::selection {
  background-color: pink;
}
::-moz-selection {
  background-color: pink;
}
h2 {
  /*font-size: 25px;*/
  font-size: 140%;
  text-transform: none;
  margin: 0;
}
h3 {
  /*font-size: 20px;*/
  font-size: 130%;
}
h3 {
  font-size: 120%;
}
h3.post-title,
h3.entry-title {
  font-size: 160%;
}
.sidebar h2 {
  font-size: 13px;
  margin-bottom: 10px;
}
.date-header span {
  font-size: 15px;
  font-weight: normal;
}

bloggerのwysiwygエディタのフォントサイズ指定に不満

投稿画面のwysiwygエディタ
フォントサイズ指定の
「最小」は style="font-size: xx-small;"
「小」は style="font-size: x-small;"
「標準」は何も付かない。
「大」は style="font-size: large;"
「最大」は style="font-size: x-large;"

小のx-smallは小さすぎるのでsmallにしてほしい。large側は普通なのでバグな気がする。

どうすればこの問題を解消できるだろうか。
  • HTML編集モードにx-smallをsmallに置換するボタンを付ける。
  • フォントサイズ指定の「小」を封印する。
  • JavaScriptでサイズ操作

追記

jQueryで動的にx-smallとxx-smallをsmallに変更するようにしてみた。多分これが一番楽。
$('.post-body [style*="x-small"], .entry-content [style*="x-small"]').each(function() {
  $(this).css('font-size', 'small');
});

埋め込み方法はこちらに書いた。
BloggerでjQuery・CSSを効率良く管理したい - cherenkov's暗中模索blog


2012-05-07

ちょい読みにっき「Coders at Work プログラミングの技をめぐる探求」


Douglas Crockford氏の章だけ。

  • テレビ放送科で勉強
  • E(プログラミング言語?)
  • 数多くあるJavaScript Frameworkはいずれ2,3個に収まるだろう。なかでもMicrosoftのAtlasは生き残ると予想。理由はこういった競争にMSはいつも残るらしい。
  • Yahooで氏が推進している取り組みのひとつがコードリーディング。
  • FORTRANからの癖でつい一文字変数名を使ってしまうことにもがいている。
  • コードリーディングする際には、 まずJSLintを通してから。
  • 波括弧を前につけるな。
  • 睡眠時無呼吸症候群で集中力と記憶力が落ちた時期があったらしい。今は回復。
  • クヌース
  • クヌース著作の The Art of Computer Programming を学生の頃に家賃を二ヶ月滞納して手に入れたらしい。
  • 自分は、「時に英語の文章を書き、時にJavaScriptのコードを書く作家」だと思ってる。
  • ブログなどで技術をわかりやすく紹介する文章が書ける人は重宝する。
  • エンジニアを採用する時に気をつけていることは、コードリーディングをさせる。自らが書いた自信があるコードを説明させる。プレゼンテーション力を重視。

2012-05-03

facebookの「いいね!」する前に確認するグリモンを作った


インストールはこちらから
facebook like button daemon for Greasemonkey
(firefox/greasemonkey, chromeで動作確認)

このグリモンを適用すると



こんな感じで一般のサイトに設置された公式の「いいね!」ボタンの上にカバーをかぶせます。











カバーをクリックすると確認がでて、OKを押すとカバーが消えて「いいね!」できるようになります。
ワンクッションはさむことで誤いいね!を予防します。



ちょうどいい記事がありました。
エロサイトに「いいね」した人がエロサイトを見ていたとは限らない | コーヒーサーバは香炉である



これなら偽ボタンがあってもへっちゃらですね!



グリモンだと読み込みが完了されてから実行されるのでカバーが付くまでにラグがある。
これを補うためにグリモンよりも早い段階で実行されるStylishで目立つようにしておいたほうがいいかもしれない。
@-moz-document url-prefix("http://www.facebook.com/plugins/like.php"),
url-prefix("https://www.facebook.com/plugins/like.php") {
body {
  background-color: tomato !important;
}
}