はてなキーワード: SCRIPTとは
Do all the way, the dream all the way, and read all the way, the injury all the way, the youth of this shore, I eyebrow XinWei cu, listening to the wind tells the years of the past; Go all the way, appreciate all the way, listen to all the way, drunk all the way, time of the other side, you gently walk, bring me for my whole life the oath. Smile, as a jade, just like the cold winter la month of a warming Yang; Words, amiable and gentle, like stroke and a wisp of spring breeze; The heart, clear as bright, filled with tolerance and forthright.
In the boundless huge crowd, you I meet by chance, and then silence who know each other, as world all the fate, we own the roaming in, repeated a story of others. Looking at today's you and me, read the yesterday's he and she, original all is so similar to the ends of the earth, the same scene, every moment thousands of deduction. The different stage, the same script, different actors, the same lines, perhaps, that is what the world had said the world of mortals.
Life, seems to be a little spring and fall streams, no waves without wind, go light, so of the day, that you and I, is I have dreamed of. But he is always thinking of, perhaps our stories will be something different, always feel, I want life probably shouldn't so, always think, and the story you and I should deducing other wonderful. Perhaps this is the so-called is not satisfied with it.
Not content with me, occasionally also play a song in life all much ado about nothing. The occasional upset, the occasional sentimentality, occasionally sad sorrow bosom, such me, sometimes not even willing to tolerance, but you will always smiled and said it doesn't matter. A that's ok, covers the you to my tolerance. Thank you, thank you willing to listen to me, thank you willing to understand me, thank you for your concern and care of understanding.
Along the way, just behind the one season blossom has collected, have already in the years flows through place vanished, lift. Magging issues.it, those flowers, then no longer in those days Ming yan; Walk off, those figure, also do not know when from my life disappear; For a around, those familiar with smile, and those who agreed upon oath, and has set up a file in the baptism of the mood swept away. Looking back, QiFengChuYu also only you have been, from beginning to end with reckless abandon.
I know, you are always on, maybe not at nearby, but has lived in my heart. You are in my heart, so, I count the mirror in flower, and cicadas in the eyes of the tender you smile and looked at on the water, and know that you SiQi born rich, and son ChengYue vow.
You know, more than any other, I in the character of the much a slightly thin cool. Those who love, I do not say, and not understand; Those good, I don't talk, and not unknown; Those who warm, those carefully, I pretended that I don't know, but one can see in the eye, and talks to heart. I'm not good at expressing, doesn't mean I don't have felt in the heart, on the contrary, a warm action, a concern of look in the eyes, a warm words, of all things, I kept away, and put it in my heart.
Since always, all don't understand you in my life to a role play, from that year to now, you and I walked all the way from strangers, to close right now, our story is in what the beat is a? Perhaps the story is finalizing a play, also or two hearts were there, but I thank you have in this warm attitude in my MingTu.
Thank you for the lonely in my time took me by the hand, and thank you for making me again believe a fairy tale of aestheticism, thank you for your face my unreasonable never give up, thank you for your tender feelings with the whole life the warmth of my I thin cool, thank you to accompany me along the way. To you, please make I say thank you, thank you let me in such years can also ease dream, let me be able to a insignificant posture face a window to listen.
The dream flowers, quietly away, and in a hurry fell, some people, quietly, and silently walk, that time, like water flowing silence, from refused to make a little I stopped, and our story? Our story will end in where? Tomorrow's you I is near at hand, or the apart?
_______________
http://www.chargerbatteryshop.co.uk/panasonic-lumix-dmc-tz7-battery-charger-cbbs.html
http://www.gobatteryonline.com/canon-powershot-sd500-battery-charger-gose.html
http://www.keyboard-store.com/compaq-presario-v2200-laptop-keyboard.html
バージョン2.1.8で実装された「reflected script inclusionに対する保護」機能で上記エラーが出る場合
about:config の
noscript.xss.checkInclusions を false に変えるか
noscript.xss.checkInclusions.exceptions に許可したいドメインを入力する
セキュリティ対策めんどくさい
Action Script は 3 からかなりしっかりしたクラスベースの OO だよ。
JS も馬鹿みたいな使い方しないでちゃんとしたスタイルで使えば OO だし、全てがハッシュというオブジェクトだし、関数もオブジェクトだしその辺わからないと JS をつかっててもコピペプログラミングに終始して面白くないから結局 OO 理解しないといけない。prototype.js や jQuery やの中身とか読んで理解できるくらいになるには。
Perl だって悪しき過去の遺産が残ってるから OO じゃないイメージが一部にあるけど、モダンな Perl は OO だよ。CPAN にあがってるまともなモジュールは殆ど OO スタイルだし、もっとモダンなスタイルの環境でもいける。モダン Perl や Moose あたりで検索してみるといい。今からやるなら OO しかないけど、初心者は昔のうんこを踏みがちだよね。JS も同じ事が言えるけど。
JS や Perl というゆるい LL は OO を理解していなくても一応使えるってだけで、それじゃマスターには程遠い。あと言語仕様でやっちゃいけないことを縛っていないから、しっかりした開発をやるには 規約もしっかりしないといけない。 初心者は最初からいい出会いをするわけじゃないから、誤解が多いのかもしれない。
JS と Perl はレガシースタイルが残ってる例としてあげたけど、LL でも Python や Ruby はもともと OO スタイルしかない。だから、自分でやってることを理解してないと過去のうんこを踏む可能性のあるゆるい LL よりは、どうやっても綺麗にしかかけない Python は初心者向けだと思う。知り合いが何でも良いからプログラミングやってみたいと言い出したら GAE で Python 弄らせる。
ぶっちゃけ LL でもいまどき OO を避けて通るなんて無理。
プログラミングスキルは、本質的には言語に依存しない。 (よほど糞な言語を使うのでなければだが) OO への理解やアルゴリズムの理解ってのは LL か巨大な言語かに依存しない。絵を描くのに道具によって慣れの差はあっても画力は道具を変えても持ち越せる共通した力だというのに似ている。一つの言語をちゃんとある程度マスターすれば、他の言語の習得はとても早い。たとえ最初にやる言語が LL でもね。別の言語をやるときに壁になるのは関数型かそうでないかくらいのパラダイムの差がある場合だけど、JS や Perl でさえ 関数型で使うようなテクニック を実装できるし使いどころがあるから、やっぱり共通点はあって、~だから~を学ばなくていい、なんてのは上達したいなら殆どない気がする。
AutoHotKey・KeySwap・Atok2005を使った
また、これは AutoHotkey.ahk (AutoHotkey設定ファイル) 自身でもある。
ATOKプロパティ =>キー・ローマ字・色 タブ =>キーカスタマイズ
ここから。
────────────────────
; IMPORTANT INFO ABOUT GETTING STARTED: Lines that start with a
; semicolon, such as this one, are comments. They are not executed.
; This script has a special filename and path because it is automatically
; launched when you run the program directly. Also, any text file whose
; name ends in .ahk is associated with the program, which means that it
; can be launched simply by double-clicking it. You can have as many .ahk
; files as you want, located in any folder. You can also run more than
; one ahk file simultaneously and each will get its own tray icon.
; SAMPLE HOTKEYS: Below are two sample hotkeys. The first is Win+Z and it
; launches a web site in the default browser. The second is Control+Alt+N
; and it launches a new Notepad window (or activates an existing one). To
; try out these hotkeys, run AutoHotkey again, which will load this file.
#z::Run www.autohotkey.com
^!n::
WinActivate
else
Run Notepad
return
; Note: From now on whenever you run AutoHotkey directly, this script
; will be loaded. So feel free to customize it to suit your needs.
; Please read the QUICK-START TUTORIAL near the top of the help file.
; It explains how to perform common automation tasks such as sending
; keystrokes and mouse clicks. It also explains more about hotkeys.
; ! → Alt
; ^ → Control
; + → Shift
;────AutoHotKey.ahk のキーボードリマップ 2011_08_29_
; 変換 = IME ON (日本語) =>Atokの機能で実現
; 無変換 = IME OFF (英語) =>Atokの機能で実現
; CapsLock = F10 =>KeySwapで実現
; 右Ctrl = End =>KeySwapで実現
; その他はAutoHotKeyの機能で実現。
;vk1D::return ;無変換キー単体で動かないようにする
;RShift::^z ;右Shift で Ctrl+z
;SC07B & Space::send,{Blind}{Enter} ;無変換+Space で Enter
;SC07B & j::send,{Blind}{Home} ;無変換+j で Home
;SC07B & k::send,{Blind}{End} ;無変換+k で End
;SC07B & h::send,{Blind}^{Home} ;無変換+h で Ctr+Home
;SC07B & l::send,{Blind}^{End} ;無変換+l で Ctr+End
;SC07B & u::send,{Blind}{} ;無変換+u で
;SC07B & i::send,{Blind}{} ;無変換+i で
;SC07B & LButton::send,{Blind}{Home} ;無変換 + LButton でHome
;SC07B & RButton::send,{Blind}{End} ;無変換 + RButton でEnd =>Ctrlと組み合わせ可。
;SC07B & y::send,{Blind}^{ } ;無変換+y で Ctr+
;SC07B & o::send,{Blind}^{ } ;無変換+o で Ctr+
;SC07B & w::send,{Blind}{Home} ;無変換+w で Home
;SC07B & r::send,{Blind}{End} ;無変換+r で End
;SC07B & e::send,{Blind}{Up} ;無変換+e で Up
;SC07B & d::send,{Blind}{Down} ;無変換+d で Down
;SC07B & f::send,{Blind}{Right} ;無変換+f で Right
;SC07B & s::send,{Blind}{Left} ;無変換+s で Left
2::+2 ;2 を Shift+2 に
3::+3 ;3 を Shift+3 に
4::+4 ;4 を Shift+4 に
5::+5 ;5 を Shift+5 に
6::+6 ;6 を Shift+6 に
7::+7 ;7 を Shift+7 に
8::+8 ;8 を Shift+8 に
9::+9 ;9 を Shift+9 に
0::+- ;0 を Shift+- に
\::+\ ;\ を Shift+\ に
;──────────────────── http://nanabit.net/softwares/autohotkey/
; Alt+F6 (例:2011_08_04_)
; Ctrl+F6 (例:03:48)
; Alt+Ctrl+F6 (例:2011_08_04_16:45)
!F6::
Send, %A_YYYY%_%A_MM%_%A_DD%_
return
^F6::
Send, %A_Hour%:%A_Min%
return
!^F6::
Send, %A_YYYY%_%A_MM%_%A_DD%_%A_Hour%:%A_Min%
return
web製作に関しては素人なので用語などわからぬことも多いのですがご容赦くださいませ。
最近スマートフォンを買いまして、android 2.3.3ちゃん可愛いなあペロペロという生活をしています。
<!DOCTYPE html> <html lang="ja" xmlns:fb="http://www.facebook.com/2008/fbml"> <head><title>サイトタイトル</title></head> <body> <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"></script> <script> FB.init({appId : 'xxxxxx', status : true, cookie : true, xfbml : true }); </script> <div style="border:1px red solid;"> <fb:comments href="example.com" num_posts="2" width="500"></fb:comments> </div> </body></html>
こんな感じのコードをスマホのブラウザから表示すると、赤い枠がどんどん拡張していくのですが何故でしょう?
https://developers.facebook.com/docs/plugins/
ここにあるプラグインのうちいくつかはandroidブラウザでも正常に動き、
いくつかは縦にどんどん伸びていくし、いくつかは横にどんどん伸びていくみたいです。
このあたりの動作の影響なのか、スマホで閲覧ができないサイトが、一部ではクラッシュまでしてしまうサイトもあるようです。
あるサイトXでは横幅・縦幅がどんどん大きくなっていくので、
文章の入ったコンテナ部分がどこか遠くに行ってしまい読みようがないのです。
あるサイトYでは、FBその他のプラグインを大量に張っており、相性の問題もあるのか
私が検証した範囲では、
Opera mini:問題なし
でした。
これって私だけ?
よこから失礼。
As3なら無料のFlashDevelopで十分だよ。純正品より使える。FlexSDKも無料だから、実質無料でコンパイル環境は整う。
Adobeのやつも買ったがFlashDevelopのほうがいい。
あと、HTML5 vs Flash とかいってるけどさ、ちょっとWEBにも動きがほしいよねレベルのFlashはどうせ消えるでしょ。HTMLコーダーが食えてた時代が終わったみたいなもの。だいたい情報系の言語スキルなんて5年も持たないって。
ばかでもつかえるエディターが出ればすぐ終わるよそんなもの。HTML5もそう。
生半可な人がそこに活路をもとめて漕ぎ出したところでエディターが出るまでの寸暇のアドバンテージもない。
そんな範囲のことが飯の種になるわけないじゃなぃぃ?
誰かがつくったものを真似して、誰でもできるようなことになっちゃったら制作単価下って食い合いになって終わりさ。
Airアプリでも書けって。だいたいHTML5と比較するのにFlash語るのにAir含めないってどうかしてるよ。
ただFlexで書くならフルスクラッチでゴリゴリ書けるひとじゃないと何もできないから、組み合わせるだけのプログラミングしかできない人はまだお呼びでないだけ。しかもScriptなのにコンパイルだからネット上でナレッジシェアされないしね。
FlexはActiveXやAppletと比較するべきで、プラットホームのHTMLと比較すんのはどうなのかなと思うよ。
あと、おまえらSilverLight馬鹿にしてるけど、日本にはこれが使えるエンジニアほとんどいから結構需要あるんだぜ?
MS以外の某大手もプッシュしている。
つまり、何がいいたいかっていうと、どんな言語、ツール使おうが、その上位10%にでも食い込んでりゃ食えるよ。
というかプログラミングの上位で食ってる人が特定の言語が使えないなんてことはないよね。
もしそう思ってるんだったら、後から来たのに悠々と追いぬかれるよ。
環境のせいにしてちゃ伸びないんだぜ。
いまいるところでまず嚢中の錐になってくだせぇ。
ゴキブリホイホイを置いた効果を確認するような感じで、一度だけ覗いてみたい。
これは違う。
はてなブックマークのヘルプにあるブックマークレットを使用すると、画像は任意に変更できる。
javascript:(function(){var%20d=(new%20Date);var%20s=document.createElement('script');s.charset='UTF-8';s.src='http://b.hatena.ne.jp/js/Hatena/Bookmark/let.js?'+d.getFullYear()+d.getMonth()+d.getDate();(document.getElementsByTagName('head')[0]||document.body).appendChild(s);})();
これを使用すると、表示されるページ右上に、
新規だと「NO IMAGE」、画像が引用されているページだとその画像が表示される。
そこをクリックすると変更できる。
あれば一度使ってみたい機能。
元増田と同じように無駄かとは思うけど、細々と目に入ったスパムは報告してる。
はてなブックマークの価値が確実に薄くなる、スパム行為には厳正に対処してもらいたいところ。
http://b.hatena.ne.jp/entry/~ のページのコメント欄真下に
「利用規約違反を通知する」リンクがあるので、気付いた人は報告してやってください。
だよねー・・・。
A Beautiful Site (http://abeautifulsite.net/)さんの
jquery.fileTreeを利用させてもらった。
以下、留意点...
パスを指定しないと、もとのhtmlがあるパス(ディレクトリ)にあるものと解釈する。
(/jqueryFileTree.php と指定すると、公開しているルートディレクトリにあるjqueryFileTree.phpを探しにいく)
http://...と指定して他のサーバへ問い合わせるのも可能な模様(だが、試していない)。
root:
d:/
d:/temp/
など
hemlentries -> htmlspecialchars は必須。
http://treatment-head.blogspot.com/2008/11/jquery-file-tree_21.html
ただし、UTF-8やEUC-JPでページを記述している場合は、さらに処理が必要。
windowsでは、mbstringの設定にかかわらず、引数SJIS渡し、戻り値SJIS返しの模様。
したがってUTF-8やEUC-JPでページを記述している場合は、
その点を考慮してconnectorsフォルダにあるjqueryFileTree.phpを書き換える必要がある。
$_POST['dir'] = urldecode($_POST['dir']);
という行があるが(スーパーグローバル変数はデコード済みで、さらにデコードするのは危険とphpマニュアルに記載されている)
どのみちUnicode文字列のURLデコードはこの関数では無理なようなので、phpマニュアルのUserNoteから拝借。
http://php.net/manual/en/function.urldecode.php
こちらにズバリが掲載されているか...と試してみたが、どうも動作がうまくいかなかった
http://ameblo.jp/pushurinko/entry-10287161493.html
他、ご参考
Greasemonkeyが0.9にアップデートされてから?かどうかは分からないけどAutoPagerizeやLDRizeが動かなくて困った。
エラーコンソールを見たらVimperatorプラグインのldrize_cooperation.jsの
GreasemonkeyService = Cc["@greasemonkey.mozdev.org/greasemonkey-service;1"].getService().wrappedJSObject;
this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
if(sandbox.window.LDRize != undefined && sandbox.window.Minibuffer != undefined){
でエラーになっていた。
greasemonkey.jsをみてみたら
evalInSandbox: function(code, sandbox, script) {
で0.8のgreasemonkey.jsは
evalInSandbox: function(code, codebase, sandbox, script) {
だった。
- this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){ + this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,sandbox,script){
したらAutoPagerizeは動くようになった
LDRizeはこれでもまだ動かない。Vimperatorを無効にしても同じ。
どうやらGreasemonkey 0.8ではMinibufferでのwindowとLDRizeでのwindowが同一のXPCNativeWrapperオブジェクトだったけど0.9では別のオブジェクトになったようだ。だからLDRizeでのwindow.MinibufferもundefinedになるしGM_MinibufferLoadedのイベントリスナーを設定してもwindowが違うから発行されないということみたい
ううむ
追記
0.9.0から0.9.1の間のこの変更が原因ぽい…
https://github.com/greasemonkey/greasemonkey/commit/6a4ffd52c90091714e6f49376ef07e2ce5009f79
最近Opera11をインストールしてみたんだけどOpera上でEvernoteのブックマークレット(Webクリッパー)を実行するたびに毎回毎回サインインを求めてくる。毎回ユーザー名とパスワードを入れる必要があるのでストレスがたまる。他のブラウザではそんなことは起こらないのに。
Evernoteは今の自分にとって重要サービスの一つなので、これは非常に困る。何とかするためにEvernote Webクリッパーのソースを眺めてみた。
↓こんな感じ
javascript:(function(){EN_CLIP_HOST='http://www.evernote.com';try{var x=document.createElement('SCRIPT');x.type='text/javascript';x.src=EN_CLIP_HOST+'/public/bookmarkClipper.js?'+(new Date().getTime()/100000);document.getElementsByTagName('head')[0].appendChild(x);}catch(e){location.href=EN_CLIP_HOST+'/clip.action?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title);}})();
とりあえずEN_CLIP_HOST='http://www.evernote.com'の部分をhttpsに変えてみたら、ちゃんとサインインが保持されるようになりました。めでたしめでたし。
↓改変後
javascript:(function(){EN_CLIP_HOST='https://www.evernote.com';try{var x=document.createElement('SCRIPT');x.type='text/javascript';x.src=EN_CLIP_HOST+'/public/bookmarkClipper.js?'+(new Date().getTime()/100000);document.getElementsByTagName('head')[0].appendChild(x);}catch(e){location.href=EN_CLIP_HOST+'/clip.action?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title);}})();
同じ問題が起こる人がいれば試してみてください。
誇張や事実と異なる表現がございます。ネタとしてお読みください。
特に関数型言語は全く触ったことが無いため誤っている可能性があることをご了承下さい。
while(i<10000)++i;
| COBOL | バブル時代に銀行のCMにも出演したことがあるが現在はほぼ引退している。 |
| BASIC | 一時期は誰もが知っている国民的アイドルだったが、現在はほぼ引退している。しかし昔からの根強いファンによって現在も一部で活躍中。 |
| FORTRAN | インテリ層に大人気のアイドルグループ。 |
| Brainfuck | アイドルの定義を逆手に取った誰も得をしない名ばかりアイドル。 |
| PERL | もともとは活字メディアでの活動を主軸にと結成されたが、現在はネットで活動することが多い。 |
| RUBY | PERLを真似た純国産のアイドルグループ。こちらも最近はネットでの活動が多い。 |
| C | 今も現役で活躍する言わずと知れた国民的アイドル。しかし最近はJAVAなど後進のアイドルたちに仕事を奪われつつある。 |
| C++ | Cのメンバーに加え、あらゆる属性の女の子を集めた超大型アイドルグループ。しかしあまりにマニアックなため、一部のファン以外はついて行けていない。 |
| JAVA | C++の失敗を反省し一部のマニアックな属性を削った正統派アイドルグループ、初心者はJAVAから入ることを進められる。 |
| C# | まっくろ社がJAVAのパクリユニットとして一度デビューさせたが太陽社に訴えられたため名称を変えた。しかし後進だけあり、女の子の質は高いと好評。 |
| GO | 新進気鋭のぐぐるからデビューした新人アイドル、デビュー時は大きな注目を集めたがその後は期待ほど売れていない。 |
| D | 他のアイドル達のいいとこ取りをした最強ユニットのはずが、未だメジャーになりきれないマイナーアイドル。 |
| Objective-C | Cに新たなメンバーを加えたユニット。しかしC++ほどメジャーになれずそのまま消えるかと思われたが、出演した林檎の映画が大ヒットし延命した。 |
| JAVA SCRIPT | 身近がモットーのネットアイドル。あなたも気付いていないだけで、いろいろなところでお世話になっています。 |
| PHP | ネットアイドルとしてデビュー、物珍しさも手伝って人気になったが、女の子が明らかに寄せ集めと批判も多い。 |
| LISP | 81が新人声優を売り込むために作ったスフィアのパクリユニット。おっぱいが大きい。 |
閲覧注意!!!
http://d.hatena.ne.jp/dsplwsosss/
http://d.hatena.ne.jp/aivofkdgklt/
http://d.hatena.ne.jp/cymwxlfswtr/
上記のようなスパムダイアリーが何者かにより乱造されているようです。
特徴は以下の通り。
<script src="http://gmodules.com/ig/ifr?url=http://gimite.net/rails/iframe_gadget/xml%3Fscrolling%3Dfalse%26url%3Dhttp://okorino.okicocomoskxde.obijime.net/&amp;synd=open&amp;w=400&amp;h=600&amp;title=&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
以下のようなソースを埋め込み。機械的に生成した文章、それも意味を成していない文章である。
<p>篠崎元志だけではない。</p> <p>キリスト看板ということなので、</p> <p>宇宙幻想がいなくても生きるのは、</p> <p>タイガース検定する前に</p> <p>ぎょうざの満洲ということなので、</p> <p>カール・ツァイスですが、</p> <p>板尾創路になりました。</p> <p>ビアスに生きて</p> <p>おでかけ!でもそうだった。</p> <p>デュメリルオオトカゲからは馬鹿にされ、</p> <p>二戸駅なら良かったが、</p> <p>そごう大阪店ということなのだ。</p> <p>マーク・キーファーおよび</p> <p>日本アームしなければならない。</p> <p>久下橋がいなくても生きるのは、</p> <p>祝日_(曖昧さ回避)ということだ。</p> <p>かごされるばかり。</p> <p>国道389号じゃん。</p> <p>フランソワ_(アンジュー公)を</p> <p>Bit/平方ミリメートルの</p> <p>福島交通相馬営業所でした。</p> <p>阿部保をお届けします。</p> <p>天使のすみかなら良かったが、</p> <p>オテロ郡_(コロラド州)でした。</p>
http://d.hatena.ne.jp/aivofkdgklt/
http://x8.ebo-shi.com/bin/gg?135862701
アクセスなど解析して何をしたいのだろうか。
結構苦労したので健忘録として。。
環境は以下のとおり
yum install mysql-server
/etc/init.d/mysqld start
mysql_secure_installation
jruby -S gem install rails jruby -S gem install warbler jruby -S gem install activerecord-jdbc-adapter jruby -S gem install activerecord-jdbcmysql-adapter jruby -S gem install jdbc-mysql
mysql -u root -p mysql> create database redmine character set utf8; mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'redmine'; mysql> exit
(任意の場所にRedmineを解凍して、解凍先のディレクトリに移動した後)
cp config/database.yml.example config/database.yml vi config/database.yml
database.yml
production: adapter: jdbcmysql database: redmine host: localhost username: redmine password: redmine encoding: utf8 #development: # # #test: # #
後のwarbleでのエラーを防ぐため、developmentとtestをコメントアウト
jruby -S rake generate_session_store jruby -S rake db:migrate RAILS_ENV=production jruby -S rake load_default_data RAILS_ENV=production
script/serverで起動し、http://localhost:3000 にアクセスして正常に動作するか確認する
jruby script/server -e production
vi config/environments/production.rb config.logger = Logger.new(config.log_path) config.logger.level = Logger::INFO
warble.rbを生成
jruby -S warble config
warble.rbを修正
vi config/warble.rb config.dirs = %w(app config lib log vendor tmp extra files lang) config.gems = ["jdbc-mysql", "activerecord-jdbcmysql-adapter", "activerecord-jdbc-adapter"] config.gems["rails"] = "2.3.5" config.gems["rack"] = "1.0.1" config.webxml.rails.env = "production"
jruby -S warble
できたwarファイルをTomcatに配置して、Tomcatを起動する
mv redmine-0.9.3.war /usr/local/tomcat/webapps/redmine.war /usr/local/tomcat/bin/startup.sh
warblerのバグ(?)でwarに入らないファイルをコピーして入れる
cp vendor/gems/rubytree-0.5.2/.specification /usr/local/tomcat/webapps/redmine/WEB-INF/vendor/gems/rubytree-0.5.2
感染された時点でなにされてもおかしくないのにFFFTPがどうのとか・・・小一時間
などと罵倒しつつ、俺は書くの面倒だから2chからコピペですます。亜種でたら対策も変わるので注意ね。
【Gumblar/GENO】Web改竄ウイルス総合スレ3【8080】 http://pc11.2ch.net/test/read.cgi/sec/1263865118/
現時点でGumblar(GENO)、8080(『/*LGPL*/』『/*GNU GPL*/』『/*CODE1*/』) JustExploitなどのインジェクションが流行しています 基本的な対策としてセキュリティ・アップデートを欠かさないようにしましょう
【脆弱性を利用されやすいソフトウェア】 下記については必ずアップデートしてください 使用していないものはアンインストール推奨です ■ Windows Update / Microsoft Updateを更新 ・XP以下は念のためMicrosoft Updateに変更してアップデートする ■ Adobe Reader(Acrobat,Acrobat Reader)を更新 (使っていないならアンインストール) http://get.adobe.com/jp/reader/ ・インストール後本体をアップデート ヘルプ → アップデートの有無をチェック ・Acrobat Javascriptをオフにする 編集 → 環境設定 → Javascript → 「Acrobat Javascriptを使用」のチェックを外す ■ Adobe Flash Playerを更新 (動画サイト見てるなら絶対入ってる。IE版、Firefox等の非IE版に注意!) http://get.adobe.com/jp/flashplayer/ http://www.adobe.com/jp/shockwave/download/alternates/#fp ・Flash Playerのバージョン確認 http://www.adobe.com/jp/software/flash/about/ http://www.adobe.com/jp/support/flashplayer/ts/documents/tn_15507.htm ■ Adobe Shockwave Playerを更新 (最近は使わないはずなのでアンインストール) http://www.adobe.com/jp/shockwave/download/alternates/#sp ■ Java Runtime Environmentを更新 (Javascriptとは違うので注意) http://www.java.com/ja/ ・Javaのバージョン確認 http://www.java.com/ja/download/installed.jsp ■ QuickTimeを更新 (メールアドレスの入力は不要。使っていないならアンインストール) http://www.apple.com/jp/quicktime/download/ ■ RealPlayerを更新 (使っていないならアンインストール) http://jp.real.com/?mode=basic
【アップデート支援ツール】 ■ アプリケーションの脆弱性確認ツール ・MyJVN バージョンチェッカ http://jvndb.jvn.jp/apis/myjvn/ ・Secunia Personal Software Inspector (PSI) http://secunia.com/vulnerability_scanning/personal/ ■ Adobeの“Flash”と“Reader”のアップデートを半自動化「Flash_Reader_Update」 http://www.forest.impress.co.jp/docs/review/20091020_323014.html http://hide9999.web.fc2.com/
【Gumblar.x / Daonol(新GENO)ウイルスについて】 ■ Gumblar被害拡大中(1)(2)(3) http://www.so-net.ne.jp/security/news/view.cgi?type=2&no=2092 http://www.so-net.ne.jp/security/news/view.cgi?type=2&no=2093 http://www.so-net.ne.jp/security/news/view.cgi?type=2&no=2094 ■ Windowsが起動しないときの復旧方法の一例 黒い画面にマウスカーソル (Win32/Daonol) http://blogs.technet.com/jpsecurity/archive/2009/10/23/3288625.aspx Win32/Daonolの亜種に感染!セーフモードでも起動できないパソコンを復旧するには? http://itpro.nikkeibp.co.jp/article/COLUMN/20091028/339633/?ST=security&P=1 レジストリの修復 Windowsを使わずに修復してみる http://pctrouble.lessismore.cc/boot/recover_registry.html ■ 感染確認・駆除ツール アンラボ(v3daonol.exe) http://www.ahnlab.co.jp/download/vdn_list.asp マカフィー(stinger.exe) http://www.mcafee.com/japan/mcafee/support/announcement20091127.asp Kaspersky(KatesKiller.exe) http://support.kaspersky.com/faq/?qid=208280701 【旧Gumblar(GENO)ウイルスのまとめなど】 *** 【注意!】2009年10月からのGumblar.x / Daonol(新GENO)には無効な情報があります *** ■ Anubisレポート http://anubis.iseclab.org/?action=result&task_id=1890669b0bd937574e5be45e24c63ea80&format=html ■ GENOウイルスまとめ http://www29.atwiki.jp/geno/
【8080系ウイルスについて】 メディアなどでは「ガンブラー(の亜種)」と紹介されていますが Gumblar系とは別種のウイルスで、最近のものはページソースの最後あたりに <script>/*LGPL*/ <script>/*GNU GPL*/ <script>/*CODE1*/ などから始まる難読化したスクリプトが埋め込まれています 2009年12月現在、最新版のAdobe Readerおよびそれ以前の脆弱性を利用しているため 回避策としてAcrobat Javascriptのチェックを外してください 修正版の配布は2010年1月13日の予定です 他にもMicrosoftとJRE(Java Runtime Environment)の脆弱性を 利用していますがこちらはアップデートで対処できます 感染すると他のウイルスなどを呼び込むため非常に危険です ■ 新手の正規サイト改ざんでAdobe Readerのゼロデイ攻撃~今すぐ対策を http://www.so-net.ne.jp/security/news/view.cgi?type=2&no=2106 ■ 感染確認(2000,XP) あくまで現時点での確認方法であることに注意してください セーフモードから起動してレジストリエディタでRunエントリ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] から "sysgif32"="C:\\WINDOWS\\TEMP\\~TMD.tmp" "~TM6.tmp"="C:\\WINDOWS\\TEMP\\~TM6.tmp" 等の登録があれば感染済 上記の登録情報を削除した上で C:\Documents and Settings\ユーザー名\スタート メニュー\プログラム\siszyd32.exe のファイルを削除すれば復旧しますが、亜種等で違うこともあるので 可能な限りクリーンインストール&サイト持ちは 安全なPCからのパスワードの変更を推奨します
GENO(Gumblar)ウイルス対処法。 行っておくべき事項を箇条書きにしました。 細かなことは他にもいろいろありますが、とりあえず以下を実施して下さい。 (1)Microsoft Update(Windows Update)を実行しシステムを最新の状態にする (2)Adobe Readerを最新版に更新する (3) Adobe ReaderのAcrobat JavaScriptを無効に設定 (4) JRE(Java Runtime Environment)を最新版に更新する (5) Flash Playerを最新版に更新する (6) QuickTimeを最新版に更新する (1)~(4)を行っていれば、現時点で改ざんサイトを閲覧してもウイルスには感染しない。 攻撃コードは変化する可能性もあるので、念のため全て行っていただきたい。 Adobe Readerなどのアップデート方法については下記のトピックスを参照のこと。 Acrobat JavaScriptを無効にする方法は以下の通り。 (1)Adobe Readerを起動し[編集]メニューの[環境設定]を選択 (2)「分類」の中の「JavaScript」を選択 (3)「Acrobat JavaScriptを使用」のチェックをクリア (4)「OK」ボタンを押す ※サイトを運営されている方は、さらに次のことも実施していただきたい。 (1)管理サイトのページなどに意味不明な文字列が埋め込まれていないか確認する (2)改ざんされていたり、サイト管理に使うパソコンからウイルスが見つかった場合には、 ウイルスに感染していないパソコンを使用して管理サイトのパスワードを変更する
少し遅れた感があるけど、解いてみた。
出力がテキストでないけど・・・。
仕事の合間を使ってやったものの、昼前に始めたのが5時頃にようやくできる程度。
これを25分とは尋常じゃないな、大口叩くだけあってよっぽど優秀なんだろう。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> <!-- pre { font-family: monospace; } --> </style> <script type="text/javascript"> <!-- window.onload = function() { var q = new Map(); q.load("maptest.txt"); q.search(); var answer = document.getElementsByTagName("pre").item(0); var answerText = "\r\n"; for(var ix = 0; ix < q.route.length; ix++) { answerText += q.route[ix].join("") + "\r\n"; } answer.firstChild.data = answerText; alert("終了しました。"); }; /** マップオブジェクト */ function Map() { this.ymap = []; this.route = []; } //マップの読み込み Map.prototype.load = function(filePath) { //ファイルシステム var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); //ファイル読み込み var file = fileSystem.OpenTextFile(filePath); while(!file.AtEndOfLine) { var fileBuffer = file.ReadLine(); this.ymap.push(fileBuffer.split("")); } file.Close(); fileSystem = null; }; //マップの探索 Map.prototype.search = function() { var that = this; //マップコピー var ymap = this.ymap.concat(); for(var y = 0; y < ymap.length; y++) { ymap[y] = ymap[y].concat(); for(var x = 0; x < ymap[y].length; x++) { if(ymap[y][x] == "S") var start = new MapNode(y, x); if(ymap[y][x] == "G") var goal = new MapNode(y, x); } } var openList = []; var closeList = []; start.costf = start.distance(goal); openList.push(start); //経路探索 while(openList.length > 0) { var node = openList.shift(); //探索終了 if(goal.equal(node)) { createRoute(node); break; } closeList.push(node); //隣接ノードの作成 var tonari = []; if( ymap[node.positionY][node.positionX - 1] == " " || ymap[node.positionY][node.positionX - 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX - 1, node)); if( ymap[node.positionY - 1][node.positionX] == " " || ymap[node.positionY - 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY - 1, node.positionX, node)); if( ymap[node.positionY][node.positionX + 1] == " " || ymap[node.positionY][node.positionX + 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX + 1, node)); if( ymap[node.positionY + 1][node.positionX] == " " || ymap[node.positionY + 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY + 1, node.positionX, node)); //隣接ノードの検索 for(var tx = 0; tx < tonari.length; tx++) { var openIn = false; var closeIn = false; tonari[tx].cost = node.cost + 1; var costf = tonari[tx].cost + tonari[tx].distance(goal); tonari[tx].costf = costf; //オープンリストから検索し入れ替える。 for(var ox = 0; ox < openList.length; ox++) { if(tonari[tx].equal(openList[ox])) { openIn = true; if(costf < openList[ox].costf) { openList.splice(ox, 1); push(openList, tonari[tx]); } break; } } //クローズリストから検索し、オープンリストへ移す。 for(var cx = 0; cx < closeList.length; cx++) { if(tonari[tx].equal(closeList[cx])) { closeIn = true; if(costf < closeList[cx].costf) { closeList.splice(cx, 1); push(openList, tonari[tx]); } break; } } //どちらにもない場合、オープンリストへ追加する。 if(!openIn &amp;&amp; !closeIn) push(openList, tonari[tx]); } } //適切な位置に追加する。 function push(array, item) { for(var ix = 0; ix < array.length; ix++) { if(item.costf < array[ix].costf) { array.splice(ix, 0, item); return; } } array.push(item); } //ルートマップの作成 function createRoute(lastNode) { var node = lastNode.parent; while(node.parent) { ymap[node.positionY][node.positionX] = "$"; node = node.parent; } that.route = ymap; } }; /** マップノード */ function MapNode(y, x, parentNode) { this.positionY = y; this.positionX = x; this.parent = parentNode; this.cost = 0; this.costf = 0; } //同一ノードかチェックする。 MapNode.prototype.equal = function(targetNode) { if( this.positionY == targetNode.positionY &amp;&amp; this.positionX == targetNode.positionX ) return true; return false; }; //直線距離を求める。 MapNode.prototype.distance = function(targetNode) { sabunY = this.positionY - targetNode.positionY; sabunX = this.positionX - targetNode.positionX; return sabunY ^ 2 + sabunX ^ 2; }; // --> </script> <title>経路探索:A*</title> </head> <body> <pre>&nbsp;</pre> </body> </html>
学内Webメールシステムが、もろにCSRF&XSSのよわよわのシステムでした。NEC系のメーカーのASPだったようだけど。
WebメールにXSS&CSRFがあるというのは本当に最悪で、「開いただけでメールボックスやアドレス帳が全部どこかに送信されてしまう」ような攻撃メールが作れてしまうことを意味します。
で、担当部門がどこだかわからないのでメディアネットワークセンターというそれっぽい部署に教えてあげたんだけど、とにかく反応が遅い。対策の第一段階は即日システム停止することですよ、とまで書いてあげたのに。
2ヶ月たって何も修正がされないので、研究室内のゼミで発表してみました。情報系でも、知らない人はCSRFとか全然知らないからね、うちアルゴリズム系なのでみんな「Webってこんな攻撃ができるのか」って感心。教授はあわててどこかに電話。
そしたらすぐに、「どこがそんなにまずいのか」と相談の電話が折り返されてきて、(即時停止レベルだって教えたじゃん)と思いつつも、「このメールを開いた後、自分の送信箱を見てご覧なさい。見覚えのないメールが送信されていませんか?」と攻撃例を教えてあげました。寸止めかんちょー。
これで即時停止だろうと思ったら、結局それから4ヶ月間修正が入らないまま運営が継続、そして「これで直りましたよね」と連絡が来たのでテスト環境版を試してみると、この「修正版」は script タグを無効にするだけで onload とかまったく手を付けないザル修正でした。
それを指摘したらしぶしぶイベントトリガ系も消してくれたけど、CSSXSSとか不完全Shift-JIS文字とかexpressionとか知りもしないんだろうなー。セキュリティのこと知らないなら、HTMLメール扱う機能ごとばっさり削除が唯一の正解です。
本気でかんちょーしようと思えば簡単でした。自己増殖メールを誰かにぽんと送るだけでたぶん3日以内にメールシステムは麻痺して、実質停止に追い込めたはず。あ、それじゃかんちょーどころか直腸裂傷か。でも、それで全員のクオータがあふれてしまえば真に悪意のある攻撃メールを受信する余地なくなるし、セキュリティを保護できたことにならないかな。
で、本当にそれをしなかった理由はひとつだけ、攻撃テストメールを自分に送りまくっていたことがメールログに絶対残っているし、それで犯人とばれて退学とかいやだったから。うちの大学は中退じゃなきゃハクがつかないんです。