「スクリプト」を含む日記 RSS

はてなキーワード: スクリプトとは

2007-08-04

anond:20070804102459

ここで以前にも同じようなこと書いた気がするけど、ボットというか、定期巡回スクリプト/ツールの可能性はあるよね。

例:ウェブ狼煙

http://anond.hatelabo.jp/20070804035757

いや別にそういう風に教える分には良いのだけど。

スクリプト書いたりまとめエントリ書いている人は頭おかしいんじゃないかと思う。

2007-07-28

はてなワールドの予想

自己採点は60点? Hatena Inc.が過ごしたシリコンバレーでの1年間:インタビュー - CNET Japan

このインタビューみてて、いままではてなワールドってなんだろーなーと検討もつかなかったんだけどピンときてしまった。

予想する。

はてなワールドGUIベースの自己認識が可能な状態でのネットブラウジングだ。

以前はみんなそこを目指してきた。

自己の存在が視認できる状態での行動。

RPGも初期の迷路のころは自己視点だけだった。これがWEBブラウジングだ。

RPG2.0とやらはドラクエのように自分が「どれ」だか認識できた状態でアクションをおこす。

もちろんこの傾向はネットにもあった。

卑近としてはセカンドライフもそうだ。

だが、はてなはおそらくセカンドライフのように自己のワールド内にコンテンツを誘致しようとせずにいままでどおり既存のコンテンツを利用するだろう。

そう、わんわんワールドグーグルMAPを利用したように。

ページ内を歩き回るスクリプトがあったように。

はてな技術レベルDBmySQLレベル育ちだしコンパイルできるような言語の土壌があまりない。

MMOのようなワールドの創出はあまり考えられない。

だが、すでにぼくらはその予兆をはてなテストにより見て取ることができた。

ブログペットが自分のブログから出れない時代はここで終わるかもしれない。


なんてことを思った。だとしたら面白い。リリース楽しみになってきた。

はてなワールドって何だと思う?

にゃー。

2007-07-19

HTMLに書いてはいけないもの

めも。

HTMLに見た目を指定することを書いてはいけないとよく言われるが、それだけでなく、user agentの動作を指示することにも慎重でなければならない。動作を指示する記述とは、例えばtarget属性や、HTML 5のlink typeのprefetch、sidebarnofollowなどのことである。

これらがあまり有用でないのはuser agentに柔軟な対応をとる余地を与えないということが一番の理由である(当然ながらuser agentにはIEFirefoxなどの「ウェブブラウザ」だけでなく、検索エンジンロボットダウンロードツールなども含まれる)。target属性について考えよう。あなたは何故そのリソースを新しいウィンドウで表示して欲しいと思うのだろう。自分とは違う人や組織によって作成されたリソースだからだろうか。ならば「自分とは違う人や組織によって作成されたリソースだ」と書くだけで良い。user agentは新しいウィンドウで表示するかもしれないし、「別の人によって作成されたリソースです」とアラートを出すかもしれない。あるいは本文と平行して見るべき図だからだろうか。ならば「本文と平行して見るべき図だ」と書くだけで良い。user agentはユーザの設定によって新しいウィンドウで表示したり、サイドバーに表示したりするだろう。「sidebar」についても同じようなことが言える。サイドバーに表示して欲しいのは何故だろう。もしそのリソースが目次ならば、目次と書くだけで良い。(「nofollow」がおかしいというのはHTML 5を策定している人たちもわかっていて、ただ互換性を考慮したようだ。しかし、厳密に言えば、"nofollow"はlink typeとして実装するべきものかどうか疑わしい。一例ではあるが、私のようなiTunesユーザなら、<a rating="0">などと書くことも容易に思いつくだろう)

このように、著者は自分が望む動作ではなくその動作を望む理由だけを書くのが理想的なのである。

付け加えれば、<a href="javascript:...">という記述も不適切だ。これはしばしばJavaScriptが無効な環境にあるユーザに混乱をもたらすとして批判されるが、一番の問題はスクリプトスイッチ論理的にはリンクではなくボタンだということだ。これはtarget属性や不適切なlink typeでリンクの動作を規定しようとすることと同じ誤解が原因だと思われる。リンクは原理的に動作のスイッチではなく、あくまでリンクなのだ。従って、見た目でそれがa要素かbutton要素かを決めるべきではない。見た目はスタイルシートで指定しよう。

理想的には、クライアントサイドスクリプトも今ほど必要ではないのかもしれない。HTMLのフォームの仕様user agentのUIがここまで貧弱でなければ、今日我々がスクリプトでやっている、合理的で、ただの飾りではないことの90%以上はHTMLだけで記述できるのではないだろうか。ウェブバージョンがいくつになればそれが可能になるのかはわからないが……。

話変わるけど

画像とか動画とか音声とかにHTMLを埋め込むことができたら楽しそうじゃね? HTML画像動画を埋め込むんじゃなくて。逆に。写真イラストを展示するサイトありがちなのが「リンクHTMLにお願いします」ってやつで、画像著作権表示とかコメントとかを添えるには現状そうするしかない。でもやっぱり画像そのものに書き込みたいだろうし、リンクするほうもリンクしたいリソース画像そのものであって、「おまけ」のほうではないんだよね。俺も友達のバンドサイト作ったことがあるんだけど、MP3タグじゃ貧弱だし、ハイパーリンクも使えないし。そういうのもうある?

http://anond.hatelabo.jp/20070719021216

自分もwebからは遠かった人間なので(最近ちょっと足突っ込み中)、ちやほやされるはてなみたいな会社がうらやましいなーとか思ってた。

スクリプトとかでごにょごにょするだけでどうにかなるんだものプログラムというよりはDTPだよね。

出版広告からの転身が多いのもうなずけるよ。

多くても数人でやるような規模だからね。

でも、多くのエンジニアWEB業界じゃないところで働いているんじゃない?

いや、そもそもコンピュータ関係ないところでわれわれの生活を支えてくれる人の方が多いだろ。

プログラマがどうこういったって、どっかのだれかがちゃんと光ファイバーを融接する技術をもっていなかったら通信もろくにできないわけだし、

定食屋のおじさんの基礎技術がなかったら今日一日暗澹たる気持ちのまま腹をすかせてすごさなきゃいけない。

そういう意味プログラマだってコンピューターで遊んでいるようなもんだ。

今日野菜をつくってくれる農家感謝だよ。

2007-07-17

http://anond.hatelabo.jp/20070717184113

そのゲームが面白いなら嘘メアド匿名アカウントを作ってセカンドライフアクセスしてヒント取ってくれば。

そして益田、2ch、言及ブログ全部とそこらじゅうに宣伝がウザイというコメントとヒントをコピペして回れば良いと思うよ。

ついでにログインもしない偽アカウントを100件ぐらい作ってその過程をネットで報告すれば「日本での登録数」の信頼性が激しく下がるからより効果的だよ。

スクリプトで1日で1000万ユーザーとかにできると面白そうだけどできるのかな。

2007-07-10

増田エントリに返答するのが面倒すぎる

「このエントリレスする!」をクリックすると、それ用の小窓がポップアップして簡単にレスできるようなグリモンスクリプトとか出来ないもんかの〜。ごちゃごちゃコピペすんのはもうアホらしいよ。

2007-07-05

送信日時の無いメール

容赦なくスパムフォルダに振り分けている。

スパムの約半分が送信日時がない。

これはなんだろう?送信日時を残しておくとスパム認定されてサーバーでとめられるから?

だとしたら、送信日時を入れないメールも一緒にブロックしてほしい。

送信日時が入ってないメールなんてゴミ以外のなにものでもない。

が、たまにページスクリプト自動返信系のメールで送信日時が入っていないものがある。

なんとかしれ。

というか、増田どう処理してる?

2007-07-04

http://q.hatena.ne.jp/1183498942

>> kn1967

Unix系に関しては必ずしもファイルタイプ拡張子で判別しません。たしかにKDEGnome, Firefox拡張子で判別しているふしがありますが、それはあくまでもアプリケーションの機能です。OSの機能としては、先頭のマジックナンバーで判断するので、たとえPerlスクリプトをhogehoge.cという拡張子で保存したとしても、実行権限さえあれば ./hogehoge.c で実行することができます。

>> kira2007(質問主)

HTMLソースが混じったperl」って何のことでしょうか?

もしかしてshtmlのことですか?

2007-06-30

anond:20070630015635

なに、君以外の投稿はただのスクリプトだ。気にすんな。

2007-06-22

自分は

http://anond.hatelabo.jp/20070621235911

fenrirというソフトを使っている。お気に入り(.url)ファイルの詰まったディレクトリスキャンさせて、あとはMigemo検索。整理の必要がない。これはよくorたまにいくサイト用だけど。

ただこの辺のソフトを使おうと思うとスクリプトとか書けないと逆に不自由するだろうなぁ。

SBMの方はとりあえずクリップしといてあとで検索…あんまし積極的にタグ付けしようとは思えなかった。検索に引っかかればいいというスタンスだからか。

2007-06-17

増田トラックバックしている増田記事を消すgreasemonkeyスクリプト

最近どうも増田が見にくいのは割とどうでもよさげなトラックバックがいっぱいあるからじゃないだろうか、と思って書いた。

トラックバックを見たい場合は元記事の右下のトラックバッククリックする。

// ==UserScript==
// @name        kill masuda TB
// @description kill masuda TB
// @namespace   http://anond.hatelabo.jp/
// @include     http://anond.hatelabo.jp/
// @include     http://anond.hatelabo.jp/?page=*
// ==/UserScript==

(function(){
  divs = document.getElementsByTagName('div');
  for(i = 0; i < divs.length; ++i){
    if(divs[i].getAttribute('class') == 'section'){
      if(divs[i].getElementsByTagName('h3')[0].innerHTML.match(/Re:/) ||
         divs[i].innerHTML.match(/href=\"http:\/\/anond/) ||
         divs[i].innerHTML.match(/anond:\d{14}/)){
        divs[i].innerHTML = '';
      }
    }
  }
})();

割とどうでもよさげなトラックバック、きみが消えたらますだががらんとしちゃったよ……。

2007-06-12

個人ニュースサイトの時代はまだまだこれからだ!!

2chができた1999年頃、丁度個人ニュースサイト個人日記サイトも盛り上がり始めたころだった。

個人ニュースサイトなんて不要だ」「すぐいらなくなる」なんて声も一部にあったけれど、

それどころか年を追うごとにますます増えていく一方だ

昔はごく一部の個人ニュースサイトだけが月数万ヒットー10数万ヒットしていて、大手と呼ばれていた。

今じゃ、月10万単位アクセスのあるサイトが無数に存在する。

単純に市場が大きくなったからだ。

7-8年前よりも、ずっと沢山の人がネットを見るようになった。

だから個人ニュースサイトの需要も、ますます伸びてきているんだ。

ちなみに当時はRSSという仕組みがなかったら、個人ニュースサイト更新情報を追いかける「アンテナ」流行した。

今は「はてなアンテナ」があり、誰でも簡単に使えるから、

昔よりも沢山の人が、より多くのニュースサイトを横断的に見ることができるようになったんだ。

え? 前置きはいいからアクセスを増やす方法を教えてくれって?

じゃあ手短に。

個人ニュースサイトエッセンスは3つ

1 シンプルで美しいデザイン

2 独自の切り口と、品質絶対主義

3 管理人の人となりを出し、相手の感性に訴える

1 美しさは人を惹きつける

だから自分のサイトデザインは、シンプルで美しくする必要がある。

webページを見て、メニューが複雑だったり、ごちゃごちゃと小さな文字や広告が入り乱れていない?

その広告、ほんとうにクリックされているの? 

大きければいいというものではないよ。サイズを小さくしてみたり、あるいは試しに外してしまいなよ。

それと、amazonアフィリエイトみたいに成約型広告で、

かつ記事の内容に合致した商品リンクを試してみてはどうだろう。

2 どんなジャンルを扱っているの? 得意分野は何? 

それがお客さんにはっきりわかる必要があるよ。

そして何より、記事の品質が全てだ。 

つまらないネタ記事を数合わせの為に入れるのは絶対に止めるんだ。

自分が「これは」と思った記事だけを登録すること。

そして、見ている人にとって役に立つ、面白い情報であることを意識した記事にすること。

気の効いたコメントが思い浮かばなかったら、綺麗な画像を載せればいいんだ。

有名なニュースサイトは、いつも美しい写真をアップしているよね。

3 どんな人が管理人なの? もし本気でやるつもりなら、簡単な自己紹介ページを作っておくといいよ。

管理人の人となりがわかると、お客さんは何度も足を運びたくなるよ。

それと顔文字AAを適切なタイミングで使用するといいよ。

顔文字というのは、上手く使えば驚くほど人の感性に訴えることができるんだ。

2chキタ━━━━(゜∀゜)━━━━!!などのアスキーアートが常にコピペされているのは、

それが人の心を直撃するからなんだよ。

最もシンプル顔文字は、例えばこんな感じ (^ ^;

自虐ネタに使うなら、この顔文字だね→ \(^o^)/オワタ 

参考サイトはこちら

2ちゃんねる顔文字一覧表[キター系]

http://matsucon.net/material/dic/kao_11.html

【おまけ】

アクセスを増やしたかったら、当然宣伝が必要だよね。

どうやって宣伝しようか?

まず、自分のサイト検索エンジンに登録されているか確認すること。

サイト名で検索してみよう、1番目に表示されたかな?

もしサイト名が無個性な名前だったら、必ずオリジナリティのある名前に変えたほうがいいよ。

そして、英語よりも日本語サイト名のほうがいいと思う。

検索で出るようになったら、次はリンクを貼ってもらうこと。大手ニュースサイトで記事が紹介されたり、

リンクページに載れば必ず大量のアクセスが来るよ。そのお客さんを掴むんだ。

ただ「相互リンクの依頼お断り」の所も多いから、注意してね。

Google AdWordsみたいに有料の広告を使ったことはある?

試しに使ってみたらどうだろう。自分が広告を出す立場になると、見えてくるものがあるはずだよ。

最後に、記事の更新に費やす時間は1日1時間以内にすること!!

ダラダラと長時間やっても、効率は上がらないよ。それよりちょっとデジカメ持って外に出よう。

短い時間の中で工夫しようとすると、どんどん新しいツールや仕組みを使う必要に迫られるから、

かえって自分の能力を高めることができるんだ。ショートカットキー1つ知っているかどうかだって大事だよ。

例えばプログラムを書ける人は、あなたが必死になって手動で収拾しているニュースを、

自動スクリプトで大量に処理する仕組みだって作れるんだ。

道具の使い方を覚える事が、自分の時間を増やしてくれるんだよ。

だからニュースを集める時間の他に、自分がスキルアップするための時間を毎日確保しよう。

例えば、タッチタイピングできるかな

以下のようなタイピング速度測定サイトで計測してみよう。

http://www.e-typing.ne.jp/

タイピング速度が速いほど、思考も速くなるよ!!

個人ニュースサイト管理者だがぜんぜんアクセスねえ・・・

http://anond.hatelabo.jp/20070612181511

弱小個人ニュースサイト管理人の憂鬱(笑)

http://anond.hatelabo.jp/20070612213255

弱小個人ニュースサイト管理人の憂鬱(笑)

anond:20070612183816


そーいえばたまに自分のとこの記事もニュースサイトリンクされるけど、アクセス解析辿ってみると本気でつまらないニュースサイトいっぱいあるのな。

情報がすでにどこかで見たような孫引き曾孫引きだらけ。 コメントもとりあえず語尾にwつけときゃツッコミになってると思ってるような、陳腐で見識の浅さを露呈させるようなものばかり。

何のためにやってるんだかさっぱりわかんねえ。

多分頭の悪い男子高校生あたりがやっているのだろう。 そんなのがいくつもある。


俺も同じようなこと思ってて、あまりにもこれら弱小ニュースサイト(笑)がくだらなすぎるのでスクリプトで再現してみようと思ったら余裕で出来てしまった過去があるよ。

そしてあまりにも再現度が高いので同じようにつまらなく、さっぱりアクセスが増えない罠。

やっぱ孫引きだけで構成されたニュースサイトって全然人来ないのね。俺はスクリプト自動で走らせて更新してるから別になんとも思わないが、毎日せっせと孫引きを頑張って「バロスwwww」とかコメントつけて、それで得られるのがあの程度だったらそりゃ「ぜんぜんアクセスねえ・・・」とぼやきたくもなるだろうなぁ。

まぁそのなんだ、彼らもいつかきっと気付くでしょう。

自分達が青春の貴重な数時間を過ごしている「巡回」と「更新」とやらが、たった数百行のPerlスクリプトで実現できてしまう程度のものだということにw

……気付けないなら?

嬉々としてそのまま一生ニュース収集botをやってなさい。

言及ボタンをつけるgreasemonkeyスクリプト

http://anond.hatelabo.jp/20070612072957

↑はコメントアウトを外すだけで、いつ使えなくなるかちょっとアレ

というわけでせっかくだから各記事のタイトルの横にリンクを追加するようにした。

下のidをmasudaから自分のものに変えて使う。

タイトルの横に ← が追加されるので、クリックして言及しまくればいいんじゃないでしょうか。

// ==UserScript==
// @name        add masuda reference button
// @description add masuda reference button
// @namespace   http://anond.hatelabo.jp/
// @include     http://anond.hatelabo.jp/*
// @exclude     http://anond.hatelabo.jp/*/edit*
// ==/UserScript==

(function(){
  id = 'masuda';
  titles = document.getElementsByTagName('h3');
  for(i = 0; i < titles.length; ++i){
    d = titles[i].innerHTML.match(/\d{14}/);
    titles[i].innerHTML += '<a href="http://anond.hatelabo.jp/' + id + '/edit?title=Re: [anond:' + d + ':title]" class="edit">\u2190</a>';
  }
})();

2007-06-08

ついカッとなってやった

20070629230000改定

20070702125800バグ発見スクリプト中にある「&&」が、「&amp;&amp;」になっている。増田仕様らしい。

20070827224900改定

// ==UserScript==
// @name	anond pickup
// @namespace	http://anond.hatelabo.jp/20070608230645
// @description	pickup trackback tree top section at Hatelabo::AnonymousDiary
// @include	http://anond.hatelabo.jp/*
// ==/UserScript==
(function() {
	var threshold_bm = 1;
	var threshold_tb = 1;
	var ignoreList = {
		"/20070801172335": 33,
		"/20070806163721": 10,
	};
	var firstPager_l = document.evaluate("//div[@class='pager-l']",document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;

	function Hide(){}
	Hide.prototype.setup = function() {
		this.style = document.createElement("style");
		this.style.id = "hide";
		this.style.type = "text/css";
		document.getElementsByTagName("head")[0].appendChild(this.style);
		var self = this;
		this.a = new Object();
		this.a.visible = document.createElement("a");
		this.a.visible.id = "visible";
		this.a.visible.href = "#";
		this.a.visible.innerHTML = "visible hide section";
//		this.a.visible.setAttribute("onclick","document.getElementById('hide').innerHTML = 'div.hide {display: block}';document.getElementById('visible').style.display = 'none';document.getElementById('unvisible').style.display = 'inline';");
		this.a.visible.addEventListener("click", function(){self.visible()}, false);
		firstPager_l.parentNode.insertBefore(this.a.visible, firstPager_l);
		this.a.unvisible = document.createElement("a");
		this.a.unvisible.id = "unvisible";
		this.a.unvisible.href = "#";
		this.a.unvisible.innerHTML = "unvisible hide section";
//		this.a.visible.setAttribute("onclick","document.getElementById('hide').innerHTML = 'div.hide {display: none}';document.getElementById('visible').style.display = 'inline';document.getElementById('unvisible').style.display = 'none';");
		this.a.unvisible.addEventListener("click", function(){self.unvisible()}, false);
		firstPager_l.parentNode.insertBefore(this.a.unvisible, firstPager_l);
		if (GM_getValue("visible", 0)) {
			this.visible();
		} else {
			this.unvisible();
		}
	}
	Hide.prototype.visible = function() {
		this.style.innerHTML = "div.hide {display: block}";
		this.a.visible.style.display = "none";
		this.a.unvisible.style.display = "inline";
		GM_setValue("visible", 1);
	}
	Hide.prototype.unvisible = function() {
		this.style.innerHTML = "div.hide {display: none}";
		this.a.visible.style.display = "inline";
		this.a.unvisible.style.display = "none";
		GM_setValue("visible", 0);
	}
	Hide.prototype.append = function(section) {
		if (section.className.match(/hide/)) {
			return;
		}
		section.className += " hide";
	}
	Hide.prototype.clear = function(section) {
		section.className = section.className.replace(/ hide/g, "");
	}
	Hide.prototype.is = function(section) {
		return section.className.match(/hide/);
	}
	var hide = new Hide();
	hide.setup();

	var target = document.evaluate(
		"//div[@class='section' and child::*[not(@class='sectionfooter') and descendant::a[starts-with(@href,'http://anond.hatelabo.jp/2') or starts-with(@href,'/2') and not(child::span[@class='sanchor'])]]]",
		document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i=0; i<target.snapshotLength; i++) {
		hide.append(target.snapshotItem(i));
	}

	var tbs = document.evaluate(
		"//p[@class='sectionfooter']/a[2]",
		document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i=0; i<tbs.snapshotLength; i++) {
		var tb = tbs.snapshotItem(i);
		if (tb.innerHTML == "\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af(0)") {
//			hide.append(tb.parentNode.parentNode);
			bookmark(tb, 0);
		} else if (! hide.is(tb.parentNode.parentNode)) {
			trackback(tb, 1);
		} else {
			bookmark(tb, 1);
		}
	}

	function trackback(tb, callback) {
		GM_xmlhttpRequest({
			method: "GET",
			url: "http://anond.hatelabo.jp/" + tb.pathname.match(/\d{14}/),
			onload: function(result) {
				var link = result.responseText.match(/<a name="tb">(.|\s)*/)[0].match(/<li>\s*<a href="http:\/\/anond.hatelabo.jp\/\d{14}"/g);
				var n = link.length;
				for (var l in link) {
					var m = "/" + link[l].match(/\d{14}/);
					if (m in ignoreList) {
						n -= ignoreList[m];
					}
				}
				if (n < threshold_tb) {
					tb.innerHTML = tb.innerHTML.replace(/\)$/, "/"+n+")");
					if (callback) {
						bookmark(tb);
					}
				} else {
					tb.innerHTML = tb.innerHTML.replace(/\)$/, '/<span style="color: red;">'+n+"</span>)");
				}
			}
		});
	}

	function bookmark(tb, callback){
		GM_xmlhttpRequest({
			method: "GET",
			url: "http://b.hatena.ne.jp/entry/rss/http://anond.hatelabo.jp/" + tb.pathname.match(/\d{14}/),
			onload: function(result) {
				var r = result.responseText.match(/<rdf:li rdf:resource=/g);
				if (r &amp;&amp; r.length >= threshold_bm){
					hide.clear(tb.parentNode.parentNode);
					if (callback) {
						trackback(tb);
					}
				} else {
					hide.append(tb.parentNode.parentNode);
				}
			}
		});
	}
})();

今はスッキリしているのは古いやつ

/// ==UserScript==
// @name	anond pickup
// @namespace	http://anond.hatelabo.jp/20070608230645
// @description	pickup trackback tree top section at Hatelabo::AnonymousDiary
// @include	http://anond.hatelabo.jp/*?page=*
// ==/UserScript==
(function() {
	var target = document.evaluate(
		"//div[@class='section' and child::*[not(@class='sectionfooter') and descendant::a[starts-with(@href,'http://anond.hatelabo.jp/2') or starts-with(@href,'/2') and not(child::span[@class='sanchor'])]]]",
		document,
		null,
		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
		null);
	for(var i=0; i<target.snapshotLength; i++) {
		target.snapshotItem(i).style.display = "none";
	}

	var trackback = document.evaluate(
		"//p[@class='sectionfooter']/a[2]",
		document,
		null,
		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
		null);
	for(var i=0; i<trackback.snapshotLength; i++) {
		if (trackback.snapshotItem(i).innerHTML == "\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af(0)") {
			trackback.snapshotItem(i).parentNode.parentNode.style.display = "none";
		} else if (trackback.snapshotItem(i).parentNode.parentNode.style.display != "none") {
			count(trackback.snapshotItem(i));
		}
	}

	function count(tb) {
		GM_xmlhttpRequest({
			method: "GET",
			url: "http://anond.hatelabo.jp/" + tb.getAttribute("href").match(/[0-9]{14}/),
			onload: function(result) {
				var n = result.responseText.replace(/\n/g,"").match(/<a name="tb">.*/)[0].match(/<li>/g).length;
				if (n < 10) {
					tb.innerHTML = tb.innerHTML.replace(/\)$/,"/"+n+")");
				} else {
					tb.innerHTML = tb.innerHTML.replace(/\)$/,'/<span style="color: red;">'+n+"</span>)");
				}
			}
		});
	}
})();

2007-06-04

[]??Delphihacks??Delphi??Win32API??

Delphi - Wikipedia??Windows開発の決定版 - Delphi(Skype??なでしこ)

タグ「delphi」を含む注目エントリー - はてなブックマーク

Delphiアプリケーションのメモリリーク検出法

Delphiアプリケーションのメモリリーク検出法 (山本隆の開発日誌)

作ろう!コンポーネント Delphi C++Builder

http://www.componentsource.co.jp/features/delphi/

TMS Software | Productivity software building blocks

Components > Effects and Multimedia > Video. Torry's Delphi Pages

Components > Effects and Multimedia > Audio. Torry's Delphi Pages

Components > Effects and Multimedia > Voice. Torry's Delphi Pages

Components > Effects and Multimedia > Direct X. Torry's Delphi Pages

try finally end

CとDelphiの対比表

eXeScope(Windows95/98/Me / ユーティリティ)

Delphi - テクノラティブログ検索

2ch検索: [Delphi]

Delphi-ML〓〓〓〓〓〓〓〓〓〓〓??About Delphi

Delphi Q & A掲示板

Delphi Q & A 〓f〓〓〓〓 〓〓〓〓〓〓O〓〓(HTML〓o〓[〓W〓〓〓〓)

fdelphi.com

Delphi入門

旧 Delphi 入門??Seventh Delphi

Delphiメモ

超ローテクDelphi講座

俺のためのDelphi学習

Delphi はじめの一歩

VB〓〓VC〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓H

Delphi の格言

キーボードからの入力取得

マウスボタンのクリック、マウスの位置情報の取得

ジョイスティックからの入力取得

バッカーへの階段: 入門:キーロガー

テキストファイルを読み書きする

テキストファイルのロードとセーブ

DelphiによるWin32API

Delphi WAVEサウンド音を鳴らす/Tips & Tricks

MIDI、WAVEファイルを再生する

サウンドを読み込んで鳴らす

MIDIを演奏する MCI/midiStream

5分ではじめるDelphi - 第1回 簡単なメディアプレーヤの作成(前編)

MP3プレイヤーを作る>dllによる再生

Controling sound volume from code

Torry's Delphi Pages

lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT

SwissDelphiCenter.ch : ...set the volume for the microphone/ mute it (enhanced)?

Components > Sound Effects > Mixer. Torry's Delphi Pages

uses MMSystems;

//

PlaySound('C:\WINNT\Media\start.wav', 0, SND_FILENAME or SND_ASYNC);


ビットマップを表示しよう

画像ファイルを指定した位置へ表示

俺Delゲーム応用

画面をキャプチャして表示する

めもニャンだむ

Delphi6でプログラミング ビットマップの半透明コピー AlphaDraw

画像処理プログラミング講座

Graphic Effect

カラー画像をモノクロ画像に変換

procedure TForm1.Button1Click(Sender: TObject);

var

bmp1,bmp2 :TBitmap;

begin

bmp1 :=Tbitmap.Create;

bmp2 :=Tbitmap.Create;

try

bmp1.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FINANCE.BMP');

bmp2.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FACTORY.BMP');

Form1.Canvas.Draw(10,10,bmp1);

Form1.Image1.Canvas.Draw(10,10,bmp2);

finally

bmp1.Free;

bmp2.Free;

end;

end;


無料版Delphi6でSTGをつくるためのプログラミング講座 Ver.2005 Jan.

Delphiでわずか59KBのオセロを作る方法

めもニャンだむ:BIOS 情報

コンストラクタとデストラクタ

SwissDelphiCenter.ch : ...get the MAC Address?

乱数

DelphiでMD5

もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん

Delphi WindowsのOSのバージョンを取得する/Tips & Tricks

SourceForge.net: Gecko SDK for Delphi

DelphiでWinSock

SQLite-もげもげ〜

BDS(Delphi/BCB)用SQLiteライブラリ (山本隆の開発日誌)

Application.ProcessMessages

FrontPage - DelphiVIP

SwissDelphiCenter.ch : programming tips

Torry's Delphi Pages

Delphi Tips

Delphi Code Tips

Magic of Delphi4〓z〓[〓〓 〓y〓[〓W

Delphi Win32API/API関数一覧

Delphi〓〓〓Z

クジラ式 Delphi 資料

Delphi〓〓y〓[〓W

サイト移転のお知らせ(Mr.XRAY)

openDelphi.org

KOL and MCKPage

Gen's Delphi Labo.

サイト移転のお知らせ(Mr.XRAY)

ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール

フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro

フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro

http://torrent.borland.com/turbo_hotfix_rollup.zip

http://torrent.borland.com/prereqs_jp.zip

http://torrent.borland.com/turbodelphi_jp.exe

(1) \dotNETRedist\dotnetfx.exe

(2) \dotNETRedist\langpack.exe

(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe

\dotNETSDK\setup.exe

\IE60SP1\ie6setup.exe

\dotNETJSharp\vjredist.exe

\dotNETJSharp\vjredist-Permalink | 記事への反応(1) | 15:15

2007-06-01

トラックバックツリートップのエントリ以外を表示しない

っていうユーザースクリプト作ったよ。これ使うととってもすっきり。Re: 増田の読み方ってどうしてますか?と組み合わせればめちゃめちゃすっきり。

// ==UserScript==
// @name	anond unvisualizer with innerlink
// @namespace	http://anond.hatelabo.jp/
// @description	unvisualize specific section at Hatelabo::AnonymousDiary
// @include	http://anond.hatelabo.jp/*
// ==/UserScript==
(function() {
	var target = document.evaluate(
		"//div[@class='section' and child::*[not(@class='sectionfooter') and descendant::a[starts-with(@href,'http://anond.hatelabo.jp/2') or starts-with(@href,'/2') and not(child::span[@class='sanchor'])]]]",
		document,
		null,
		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
		null);
	for(var i=0; i<target.snapshotLength; i++) {
		target.snapshotItem(i).style.display = "none";
	}
})();

仕組みは増田エントリへのリンクがあるエントリを日表示にしてるだけだよ。xpath超便利。

だから、ツリートップのエントリリンクを追記すると消えちゃう!でも気にしない!!

2007-05-30

http://anond.hatelabo.jp/20070530135156

大概理解した。管理の甘いサーバサーバサイドスクリプトでのっとり、それが出来なきゃindex.htmlおいてのっとり表示orフィッシング、最悪○○.txtや○○.jpghtmlおいてクライアントサイドスクリプト嫌がらせorトロイつーとこですか。

うん。そういう感じ。

置き土産のフィッシングサイトレンタルサーバーの規約に違反して公開停止の措置をうけました。

よぼぼん。

GDで1.0倍とか掛けるのはよさそうな手だね。

画像しかアップできなくなっちゃうのが困りものだけど。

他になにか手があるかな、

認証APIあたりをつかって匿名アップローダーにするとかしか思いつかないや。

googleあたりでフォルダ名あたりから辿ってアタックしているんだろうね。

そこらへんはBBSあたりへの手口と一緒かも。

アップローダー。結局どれもずるずるなんだよね。

どうしたもんか。

ハックしてくるひとのために勝手口に鍵を掛けてないドアを用意して、

入れるようにしておいて、中にはいったらお茶でも出してまっててやりたい。

http://anond.hatelabo.jp/20070530010836

大概理解した。管理の甘いサーバサーバサイドスクリプトでのっとり、それが出来なきゃindex.htmlおいてのっとり表示orフィッシング、最悪○○.txtや○○.jpghtmlおいてクライアントサイドスクリプト嫌がらせorトロイつーとこですか。

どうも、その「ずるずるのアップローダー」はターゲットらしい。いろいろやられてる所が散見されました。

やっぱりIEのおせっかい仕様ガンだなぁ。firefoxだとcontent-typeを無視しないから、画像として表示しようとして、表示できなくて終わりだけど、IEだと中身がHTMLだとHTMLとして解釈しちゃうんだよな。

根本対策は、いったん画像コンバートしてから保存するようにして、画像として処理できないデータは破棄するしかないのかな。GDとかImageMagicで1.0倍に変換とかしたらうまくいったりしないのかな?あとはアップロード時にはCAPTCHA使うとか。

でも、その「ずるずるあっぷろだ」をやめて、世界的にはマイナー、ただしユーザはそこそこいるアップローダにしたら、とりあえず大丈夫な気がする。

この攻撃、のっとったサーバボットネットか何かから、手当たり次第に特定環境機械的に攻めてるだけじゃないかな?だから、狙われないマイナーな奴使うのも一つの手だと思うよ。

何はともあれサイト復旧がんばってください。

http://anond.hatelabo.jp/20070529205334

ごめんね紛らわしいかきかたした。

ヘッダって書いたのはバイナリヘッダね。

ファイルの先頭数バイトファイナルファイル情報バイト入ってたりするじゃない。

あそこらへんに画像情報ヘッダ埋め込まれて、実態はスクリプトファイル

シェルだったりphpだったり色々。

拡張子偽造のスクリプト」ってのが気になる。どんな事するの?それ。

ごめんね、急いで書いたから適当に書いちゃった。

アップロードを試みられたファイル適当に名前だけのっけておくね。

みればわかるとおもうけど最後の拡張子だけ画像やtxt。

画像として表示させて中身はスクリプトだったりするんだ。

jpgなんて拡張子php割り当ててないから動くわけもないんだけどさ、

どうもあれこれしようとした形跡はあった。

phpスクリプトをよしんば動かせたとしても、権限がないから設定を書き換えたりはできないんだけど、もし権限があったらgif画像スクリプト動いてたんだろうね。

で、実質あまり被害が広がったとも思えないけど、txtでフィッシングサイトの置き場にされてあえなくアボン。

アップローダーとか画像アップ用のスクリプトを安全に運用するすべはないもんかのー

.174 UPLOAD data_w2box/index.htm.jpg

.251 UPLOAD data_w2box/tac6.php.jpg

.217 UPLOAD data_w2box/c99.php.jpg

72.9 UPLOAD data_w2box/d.html.JPG

4.33 UPLOAD data_w2box/mad.gif

44.6 UPLOAD data_w2box/sniper_sa.php.jpg

.246 UPLOAD data_w2box/c99built16.php.jpg

.196 UPLOAD data_w2box/cmd.jpg

4.15 UPLOAD data_w2box/shell.php.jpg

72.9 UPLOAD data_w2box/pouya2.html.JPG

.157 UPLOAD data_w2box/mefisto.txt

.119 UPLOAD data_w2box/pv2.php.jpg

78.8 UPLOAD data_w2box/rv.php.jpg

.101 UPLOAD data_w2box/hack.jpg

1.15 UPLOAD data_w2box/index.jpg

4.83 UPLOAD data_w2box/qqq.jpg

4.83 UPLOAD data_w2box/hacked sssssubay.jpg

1.15 UPLOAD data_w2box/hacked.jpg

1.15 UPLOAD data_w2box/hackedturan.jpg

1.15 UPLOAD data_w2box/hacked turan.jpg

.180 UPLOAD data_w2box/c99.jpg

.180 UPLOAD data_w2box/root.jpg

8.11 UPLOAD data_w2box/se.php.jpg

7.59 UPLOAD data_w2box/putrio.php.jpg

.144 UPLOAD data_w2box/r57.txt

.144 UPLOAD data_w2box/ugur.txt

.128 UPLOAD data_w2box/hacked_sssssubay.jpg

0.14 UPLOAD data_w2box/verification.txt

6.97 UPLOAD data_w2box/test.php.jpg

.224 UPLOAD data_w2box/tool.txt

72.9 UPLOAD data_w2box/hacked.txt

9.87 UPLOAD data_w2box/max.gif

72.9 UPLOAD data_w2box/pouya_server.html.JPG


つか、こいつわかりやすい名前つけるよな。。

ちなみに最後のやつがPayPalフィッシングサイトだそうで、

サーバー管理にひっかかった。

2007-05-29

ヘッダも偽装?

http://anond.hatelabo.jp/20070529203018

それってHTTPサーバログからとったやつだよね?apache?それ以外?

何にしても、ヘッダが偽装って、プロクシとかが付けるviaの事?

それ解釈しちゃうの?普通接続元そのままじゃない?

拡張子偽造のスクリプト」ってのが気になる。どんな事するの?それ。

つか、IEの内容見て判断するお節介機能は何とかなんないのかな。

ま、とりあえずUAMSIEってあったら、問答無用でattachmentにしとけばいいよ。

imgタグだったらインラインで表示してくれるから。それはそれでどうかと思う(IEの)仕様だけどね。

いや、似た様な事が出来るCGI使ってるんで。

[追記]

そうそうセキュリティに詳しい増田さん。いたら教えてください。

信頼できない者から送られてきたデータが、セキュリティ的に他の多数のクライアント画像として送っても良いデータ(JPEGPNGGIFBPM)であるか、判断するのは先頭4バイトくらいで可能ですか?

ログイン ユーザー登録
ようこそ ゲスト さん