文字列をアニメーションしたときにフォントカラーでちらつき具合が異なるかも
iPod みたいに曲のタイトルがスクロールして止まるようなコードを書いたんですが、チラつきが気になって調査したところ、どうもフォントカラーで違いがあるようなのでテストページを書いてみました。
Eclipse 3.6 + Ant + S2JDBC-Gen 文字化け、コンソール停止
タイトルはこちらのパクリ。
タイトルに書いた問題は以下の公式ドキュメントに書いてあります。
Eclipse3.5上のAntにはエンコーディングの問題があり、日本語を正しく処理できません(実行するAntタスクが日本語をログ出力していると、コンソールに何も出力されません)。 Open External などのEcipseプラグインでs2jdbc-gen-build.xmlをコマンドプロンプトで開き、 コマンドプロンプトからAntを実行してください。
Open Externalの更新サイトは、http://update2.pragmatic.kr/ です。 プラグインのインストール画面では、「Group items by category」のチェックボックスを外してください。
Open External ってもう無いみたいですね。それになんか負けてる感じです。
これに対して一応の解決策が提示されてます。
id:newta
どうしてもeclipseから使いたくて、設定をこねくり回して
[Run Configurations]の[JRE]タブの[Run in the same JRE as the workspace]にすると
エンコードをMS932にしてもコンソールにちゃんと出力されました!でも、dbフォルダの出力先がeclipseの作業フォルダの方になっちゃうんですよね。
WindowsのEclipse3.5のAntの問題
んーまだ完全に解決とはいってなさそう。
で、最初のリンクに書いてあるように、eclipse のコンソールへの出力を UTF-8 にすれば全部解決するっぽいです。
そこでソースを読みつつデバッガで止めたりしてたんですが、何のことはない、公式ドキュメントに書いてありました。
jvmArg
このタスクの大部分の処理は別VMで行われます。VMに引数を渡す場合は
要素を使用します。 これはAntのJavaタスクで使用できる と同じです。
ネストした要素として指定されるパラメータ - Seasar2 - S2JDBC-Gen - Gen-Ddl
というわけで Ant の Encoding を UTF-8 にして、こんな感じに jvmarg 要素を追加すると文字化けが解消されました。
<dump-data classpathdir="${classpathdir}" rootpackagename="${rootpackagename}" applyenvtoversion="${applyenvtoversion}" entitypackagename="${entitypackagename}" env="${env}" jdbcmanagername="${jdbcmanagername}" classpathref="classpath" > <jvmarg value="-Dfile.encoding=UTF-8"/> </dump-data>
このままだとコマンドプロンプトから実行したときに文字化けするので、eclipse から実行したときだけ utf-8 になるように jvmarg の値を ant プロパティに外出しして condition タスクで分岐します。
<condition property="vmarg.encoding" value="-Dfile.encoding=UTF-8" else=""> <or> <!-- This property is set by eclipse3.6 as Global property. --> <isset property="eclipse.pdebuild.home"/> <!-- for eclipse3.5. Please set Global property. [Window]->[Preferences]->[Ant]->[Runtime]->[Properties]->[Global properties] --> <isset property="fromeclipse"/> </or> </condition>
(eclipse3.5 の場合は fromeclipse というグローバルプロパティを追加して分岐するようにしています。)
あとは jvmarg の値をプロパティに書き換えればOK。
<jvmarg value="${vmarg.encoding}"/>
これで無事コンソールに日本語が表示され、コマンドラインからはデフォルトの文字コードになります。
ant のグローバルプロパティについて
「eclipse3.5 の場合は fromeclipse というグローバルプロパティを追加して分岐するようにしています。」をみて「アレ?」と思われたかもしれません。追加なんてしなくても「eclipse.running」がすでにあるじゃないか、と。
プロパティ名の左に表示されているアイコンに注目してください。このアイコンが eclipse のアイコンになっているものは Ant を [Run in the same JRE as the workspace] で動かしたときにしか有効にならないようです。
今回はデフォルトでもある「Separate JRE」で動かすことが前提なので、「eclipse.running」は使えないことになります。
ここで Ant の Global properties の設定に「Contributor」というカラムがあったことに気付いた方は鋭いです。この Global properties は eclipse plugin から追加できます。それも Java コードは不要で、plugin.xml だけで済みます。
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.ant.core.antProperties"> <antProperty name="fromeclipse" value="true" eclipseRuntime="false" /> </extension> </plugin>
Ant Properties - Help - Eclipse SDK
簡単ですね。
WheelTapper
http://miya2000.jottit.com/tapper
元ネタは id:brazil さんの keyTapper 。
下にホイールする時に同時にマウスを下に動かしてホイールすると、ホイールした間隔でスクロールし続けます。「ホイール→マウス下移動→ホイール」な感じです。
マウスを横に動かすと止まります。
今作ってる User JavaScript に取り込むつもりなので、良かったらコメント欄や @miya2000 までご意見ください。横 5px の閾値が妥当かどうかとか、縦方向には遊びが無いので敏感すぎるとか。
あと、そんなの既にあるよーとかあったら教えてほしいです。
find fixed
position: fixed はおもいにゃー。
(function(){ var ns = document.getElementsByTagName('*'); var count = 0; for (var i = 0, len = ns.length; i < len; i++) { var n = ns[i]; var s = document.defaultView.getComputedStyle(n,''); if (s.position == 'fixed') { n.style.outline = 'blue solid 1px'; count++; } } alert('fixed count:' + count); })()
data スキームで localStorage できるのか試してみた。
コードはこんな感じ。
javascript:(function(){ var ifr = document.createElement('iframe'); ifr.src = 'data:text/html;charset=utf-8,%3Chtml%3E%0D%0A%3Cbody%3E%0D%0A%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0D%0Awindow.addEventListener(%22message%22%2C%20receiveMessage%2C%20false)%3B%0D%0Afunction%20receiveMessage(e)%20%7B%0D%0A%20%20%20%20alert(localStorage%5B%22aaa%22%5D)%3B%0D%0A%20%20%20%20localStorage%5B%22aaa%22%5D%20%3D%20e.data%3B%0D%0A%20%20%20%20alert(localStorage%5B%22aaa%22%5D)%3B%0D%0A%7D%0D%0A%3C%2Fscript%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E%0D%0A'; document.body.appendChild(ifr); ifr.addEventListener('load', function() { alert('post'); ifr.contentWindow.postMessage('aaaaaaaaaa', '*'); }, false); })()
「data:text/html〜」中の HTML 部分は以下のようになっています。
<html> <body> <script type="text/javascript"> window.addEventListener("message", receiveMessage, false); function receiveMessage(e) { alert(localStorage["aaa"]); localStorage["aaa"] = e.data; alert(localStorage["aaa"]); } </script> </body>
<結果>
Opera10.5 | Chrome5.0.375.55 | Firefox3.6.3 |
---|---|---|
すみません、保存できました。Firefox と同じ挙動です。 |
「Uncaught Error: SECURITY_ERR: DOM Exception 18」 | 使える。ただし data スキーム全体で1ドメインのような挙動 |
<参考>
MozBoxSizing style property | webkitBoxSizing style property
vender prefix の付いた CSS プロパティを JavaScript から設定する方法をど忘れしてたのでメモ。
Specifies or retrieves how the width and the height of the element are calculated. It affects the height and width properties.
MozBoxSizing style property | webkitBoxSizing style property JavaScript
In Internet Explorer and Opera, use the boxSizing property instead.
webkit の場合は先頭の「w」の大文字小文字は区別しない。