したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1みみず★:2008/08/10(日) 23:28:15
あまりにもプログラミングの内容が増えすぎた。
よって隔離スレの中を更に隔離。

521774さん:2008/10/04(土) 00:01:59 ID:CENbthlg0
携帯で確実に読み込めるのは、バージョン10までらしい。

522774さん:2008/10/04(土) 01:20:39 ID:CENbthlg0
Flash不要!JavaScriptで派手なWebデザイン
http://ascii.jp/elem/000/000/176/176751/

523774さん:2008/10/04(土) 01:45:01 ID:CENbthlg0
ニコニコ動画の、無限にマイリストガ拡張できる奴があるけれども、あれは簡単じゃん。
データベースの書式は、evalするだけでデータが取得できるようになっているので、
小学生でも弄くれると思うよ。
まあ、小学生でもアセンブリを操ることも出来るだろうから。
本当にそんな風にちゃんと使える奴は居るのか?

524774さん:2008/10/04(土) 01:52:39 ID:CENbthlg0
Firefox4ではXPCOMを使わないとか。
XPCOMはクロスプラットホームクラスオブジェクトモデルだったかな?

525774さん:2008/10/04(土) 18:29:52 ID:CENbthlg0
WinAsm Studio, The Assembly IDE - Free Downloads, Source Code
http://www.winasm.net/

526774さん:2008/10/04(土) 18:31:16 ID:CENbthlg0
目次
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
-----
PEヘッダ関連

527774さん:2008/10/04(土) 18:35:26 ID:CENbthlg0
特集:Windows 9x or Windows 2000 ?
http://www.atmarkit.co.jp/fwin2k/special/win9xorwin2k/

528774さん:2008/10/04(土) 21:14:19 ID:CENbthlg0
ん?
LoadLibraryでEXEを読み込むと、IATが初期化されない?

529774さん:2008/10/05(日) 18:57:19 ID:CENbthlg0
digital hole ≫ Blog Archive ≫ Sleipnirの検索ボックスのホイール動作を無効化
http://mofmof.nsf.tc/soft/?p=122

530774さん:2008/10/05(日) 22:00:49 ID:CENbthlg0
俺のポータブルハードディスク内にあるSleipnirでRSSを購読した後終了すると、保存動作が行われるので終了がとてつもなく遅い。
で、俺はもう一つSleipnirをパソコンに入れている。
でも、違うSleipnirでも他のSleipnirが終了中には起動できない。
此れは困る。
という事で、改造した。説明が難しいので省略ですが・・・

531774さん:2008/10/05(日) 22:25:05 ID:CENbthlg0
Sleipnir.ips
50 41 54 43 48 0D 58 27 00 08 67 EB 4B 8B 84 24 F4 01 0D 58 30 00 3B 00 56 C6 00 01 57 33 C0 8D 74 24 0C E8 D0 AA FB FF 8B C6 E8 59 A4 FB FF 84 C0 5E 8D 4C 24 04 75 0E E8 31 80 F6 FF 83 F8 02 8D 4C 24 04 75 11 E8 0D AA FB FF 32 C0 5F 81 C4 EC 01 0D 58 6C 00 1E 00 C2 04 00 E8 FC A9 FB FF 57 FF 15 60 18 40 00 57 FF 15 5C 18 40 00 B0 01 5F 81 C4 EC 01 0D 58 8B 00 04 00 C2 04 00 45 4F 46

532774さん:2008/10/05(日) 22:27:29 ID:CENbthlg0
>>531は他のSleipnirが終了処理中でも起動するようにするパッチ。
Unicode版じゃないと動きません。

533774さん:2008/10/05(日) 23:32:14 ID:CENbthlg0
取り敢えず、サイドバーにニコニコ動画の動画を表示させれるようにしてみた。

534774さん:2008/10/06(月) 01:03:45 ID:CENbthlg0
Nicovideo.MiniPlayerオブジェクトさえ手に入れば何でも出来るな。
mp.variables["fv_autoplay"] = 1;
とすれば、自動再生が出来るね!

535774さん:2008/10/06(月) 01:08:32 ID:CENbthlg0
主要部分のソースはこれくらい。
-----
function main(){
s = w.sleipnir;
init_nv(); //initialize window.Nicovideo
override_nv(); //override window.Nicovideo.MiniPlayer.prototype.write

var mp = GetMiniPlayer("sm2959233");

mp.variables["fv_autoplay"] = 1;

var div = d.createElement("div");
div.innerHTML = mp.getHTML();
d.getElementsByTagName("body").item(0).appendChild(div);

var ob = d.getElementsByTagName("object").item(0);

}

function GetMiniPlayer(id){
var http = s.CreateObject("MSXML2.ServerXMLHTTP");
http.open("GET", ["http://ext.nicovideo.jp/thumb_watch/", id].join(""), false);
http.setRequestHeader("Referer", "http://www.nicovideo.jp/");
http.send(null);

var aod = s.CreateObject("ADODB.Stream");
aod.Type = 1; //adTypeBinary == 1, adTypeText == 2
aod.Open();
aod.Write(http.responseBody);
aod.Position = 0;
aod.Type = 2;
aod.Charset = "shift_jis";

var t = aod.ReadText();

//aod.Savetofile("C:\\Documents and Settings\\Owner\\デスクトップ\\test__.txt", 2); //adSaveCreateNotExist == 1, adSaveCreateOverWrite == 2

aod.Close();
http = null;
aod = null;

w.eval(["(function(){", t, "})();"].join(""));

return g_mp;
}

function override_nv(){
var old_write = Nicovideo.MiniPlayer.prototype.write;
Nicovideo.MiniPlayer.prototype.write = function(){
g_mp = this;
this.write = old_write;
}
}

536774さん:2008/10/06(月) 01:23:40 ID:CENbthlg0
//Nicovideo.MiniPlayer::variablesの設定について
//fv_autoplay : false == 自動再生しない, true == する
//fv_no_logo : false == 上に出るニコニコ動画のロゴを表示する, ture == しない
//fv_no_link : false == 画面をクリックすると動画のページに飛ぶ, true == 飛ばない
//fv_new_window : false == 動画に飛ぶときの推移ウィンドウが_top, ture == _blank
//fv_watch_ref : 不明
//他は下のほうの設定で分かる

537774さん:2008/10/06(月) 01:25:57 ID:CENbthlg0
正直、ここまで設定を用意しておいてくれるなんて、ニコニコ動画の中の人って優しすぎるだろ・・・

538774さん:2008/10/06(月) 01:36:38 ID:CENbthlg0
取り敢えず、Sleipnirの左側のパネルで、色々と無限マイリストとかの管理がしたかったりする。
特に意味は無い。

539774さん:2008/10/06(月) 20:42:17 ID:CENbthlg0
掲示板用アップローダー - sub_chon_uljp00050.png ダウンロード
http://www6.uploader.jp/dl/sub_chon/sub_chon_uljp00050.png.html
-----
取り敢えず、他のウィンドウに動画を表示させることは出来るようになりました。
自動再生もします。
swfを逆コンパイルして解析した。
でその結果が、>>536である。
まあ、上の画像のように表示させてみたが、特に意味は無い。

なんだか文字化けするのが気になる・・・

540774さん:2008/10/06(月) 20:43:44 ID:CENbthlg0
ソースのほうは、完成したら載せます。
まあ、>>535が全てなんだけれども。

541774さん:2008/10/07(火) 16:53:19 ID:CENbthlg0
mylist[0].id = sm1433582
mylist[0].v = false
mylist[0].t = ニコニコ動画の創り方 - 戀塚昭彦さん
mylist[0].c =
mylist[0].tags =
mylist[0].reg = Thu Apr 3 20:28:05 UTC+0900 2008
mylist[1].id = sm2795744
mylist[1].v = false
mylist[1].t = 避暑地
mylist[1].c =
mylist[1].tags =
mylist[1].reg = Thu Apr 3 20:30:44 UTC+0900 2008
mylist[2].id = sm2398881
mylist[2].v = false
mylist[2].t = 20Hz〜20kHz 可聴域の音を発生中!
mylist[2].c =
mylist[2].tags =
mylist[2].reg = Thu Apr 3 20:32:13 UTC+0900 2008

542774さん:2008/10/07(火) 18:00:20 ID:CENbthlg0
ちょっと作ったら遊ぶ。
それが、俺のプログラミング。

543774さん:2008/10/07(火) 18:01:58 ID:CENbthlg0
再生用のウィンドウは複数出ないほうが良いよね・・・
出すならば自動再生は無いほうが良い。
そこらへんの仕様を固めてからちゃんと作りこむ。

動画の表示の大きさも指定できると尚良いと思っている。

544774さん:2008/10/07(火) 18:04:10 ID:CENbthlg0
誰かそこらへんの仕様を考えてー
まあ、ちゃんと作るかわからないが。
取り敢えず、HTMLファイルでどんな感じのHTMLを打ち出すかを決めてから、JavaScriptの製作に取り掛かったほうが良いかな。

545774さん:2008/10/07(火) 20:59:49 ID:CENbthlg0
JOI2006年模擬試験2 問題1@C++(65) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081006/1223296283
JOI2006模擬試験2 問題2@C++(58) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081007/1223375095

546774さん:2008/10/08(水) 16:49:28 ID:CENbthlg0
Black Hat Japan 2008:ブラックハットジャパン2008
http://www.blackhat.com/html/bh-japan-08/brief-bh-jp-08-speakers.html#Aiko
--
>愛甲健二
>ネットエージェント株式会社 取締役。
-----
取締役wwww

547774さん:2008/10/08(水) 21:57:59 ID:CENbthlg0
スピードダイアルで、ポップアップが出るのだが、
あれ、どうやって消しているのかなあと。
だって、他の場所を押すと消えるからあれの実現方法が分からない。

548774さん:2008/10/09(木) 19:47:46 ID:CENbthlg0
うーん、
何だか、上手くいかない。
CSSは適用されているのに、文字の大きさがおかしい。

549774さん:2008/10/09(木) 20:02:41 ID:CENbthlg0
右クリックのメニューでここまで苦戦するとは・・・

550774さん:2008/10/09(木) 20:35:23 ID:CENbthlg0
取り敢えず、今日は早く寝て明日の朝、早くから勉強するよ!

551774さん:2008/10/10(金) 04:01:43 ID:CENbthlg0
今朝だから、勉強してるよ!

552774さん:2008/10/10(金) 04:52:16 ID:CENbthlg0
漸く文字が大きくなる理由が分かった。

553774さん:2008/10/10(金) 05:37:39 ID:CENbthlg0
function ShowPopup(menus, x, y, cl){
if(typeof(cl) == "undefined") cl = "";

//documentを渡すと、要素を返す
var create = function(d){
var div = d.createElement("div");
var objs = [];
div.className = cl;

var i, c;
for(i = 0; c = menus[i]; ++i){
var div_ = d.createElement("div");
objs.push(div_);
div_.innerText = c.str;
div.appendChild(div_);
}

return {ele:div, menus: objs};
};

if(menus && menus.length){
//必要な要素の大きさを測定
var div = create(d);
with(div.ele.style){
position = "absolute";
top = left = "0px";
}

body.appendChild(div.ele);
var size = {w: div.ele.offsetWidth, h: div.ele.offsetHeight};
body.removeChild(div.ele);

//本処理
var p = w.createPopup();

with(p.document){
open();
write("<!DOCTYPE html>\r\n");
write("<html><head></head><body></body></html>");
close();
}

var popup_html = p.document.getElementsByTagName("html").item(0);
var popup_body = p.document.getElementsByTagName("body").item(0);

var i, len = d.styleSheets.length;
for(i = 0; i < len; ++i){
var sheet = p.document.createStyleSheet();
sheet.disabled = d.styleSheets[i].disabled;
sheet.cssText = d.styleSheets[i].cssText;
}
var list = create(p.document);

for(i = 0, len = list.menus.length; i < len; ++i){
with({c: menus[i]}){
with(list.menus[i]){
onclick = function(){
c.func();
p.hide();
};
onmouseover = function(){
className += " popup_hover"
}
onmouseout = function(){
className = [" ", className, " "].join("").replace(" popup_hover ", "");
}
}
}
}

popup_html.style.overflow = "hidden";
popup_html.onselectstart = function(){return false};
popup_body.appendChild(list.ele);

p.show(x, y, size.w, size.h + list.menus.length + 1, body);
}

return false;
}

554774さん:2008/10/10(金) 05:39:24 ID:CENbthlg0
withを多用しているのは、最近のパソコンじゃあそんなに遅くならないだろうと思ったから。
結構汎用的に書いたので、IEの環境ならば、色々な所に移植可能。
window.createPopup()を利用しているので、クライアント領域以外にも描画可能。うまー。

555774さん:2008/10/10(金) 05:45:47 ID:CENbthlg0
掲示板用アップローダー - sub_chon_uljp00052.png ダウンロード
http://www6.uploader.jp/dl/sub_chon/sub_chon_uljp00052.png.html
-----
今まで作ってこんな感じ。
まだ、表示方法は暫定的。まあ、このままでいくと思うが。
今回実装したのは、そこに出ているメニューっぽいものね。
それを表示するだけで、上の量のソースが要るって言う。

556774さん:2008/10/10(金) 05:46:44 ID:CENbthlg0
空行とかコメントとか、コピペとか一杯あるけれども、626行ぐらいだそうです。

557774さん:2008/10/10(金) 05:49:09 ID:CENbthlg0
>>553は以下のように呼ぶ。
項目は一杯あるけれども、殆ど未実装。
-----
ShowPopup([
{
str: "大きさを指定して再生",
func: function(){

}
},
{
str: "Sleipnirで開く",
func: function(){
w.open(video_url);
}
},
{
str: "編集",
func: function(){

}
},
{
str: "削除",
func: function(){

}
},
{
str: "リロード",
func: function(){
w.location.reload(true);
}
}
], x, y, "s_popup");

558774さん:2008/10/10(金) 16:01:19 ID:CENbthlg0
管理機能を付けないといけないけれども眠たいから取り敢えず寝る。練る。

559774さん:2008/10/10(金) 16:13:16 ID:CENbthlg0
全体の5%も出来てない。
678行。17.2 KB (17,616 バイト)。文字符号化方式はUTF-8(BOM付き)。

560774さん:2008/10/10(金) 16:23:47 ID:CENbthlg0
document.cookie の覚え書き - Ci.nsIZIGOROu - Mozilla 拡張機能勉強会
http://moz-addon.g.hatena.ne.jp/ZIGOROu/20081001/1222845305
-----
複数の値の書き込みは出来ないんだ・・・

561774さん:2008/10/10(金) 16:35:17 ID:CENbthlg0
JOI2006模擬試験2 問題3@C++ lizanの指摘により書き直し(46) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081009/1223560919

562774さん:2008/10/11(土) 08:45:53 ID:CENbthlg0
JOI2008本選 問題1@C++(44) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081010/1223646925

563774さん:2008/10/11(土) 09:55:58 ID:CENbthlg0
シャープ変数(sharp variables) - FAX
http://d.hatena.ne.jp/brazil/20060901/1157079631

564774さん:2008/10/11(土) 16:41:11 ID:CENbthlg0
JOI2008本選 問題2@C++(39) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081011/1223694845

565774さん:2008/10/11(土) 20:16:05 ID:CENbthlg0
TopCoder
http://pc11.2ch.net/test/read.cgi/tech/1177344510/

566774さん:2008/10/11(土) 22:18:25 ID:CENbthlg0
>>564
ソートしながら比較する方法は思いつかないなあ。
自分で思いついたとしたら凄いし、他のところで見たとしたらそれを俺が読みたい。

567774さん:2008/10/11(土) 22:19:02 ID:CENbthlg0
>>564>>566
後で読む
重要
文字列比較

568774さん:2008/10/12(日) 10:25:14 ID:CENbthlg0
開成高2年の保坂君が「金」 国際情報五輪 - MSN産経ニュース
http://sankei.jp.msn.com/life/trend/080822/trd0808221324004-n1.htm

569774さん:2008/10/12(日) 10:51:03 ID:CENbthlg0
JOI2008本選 問題3@C++(31) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081012/1223772143
-----
頭良い!
まず、一番目に0点を入れて、後ろに全てのデータを配列に置く。で、ソート。
一番最初に0があるので、それはその回は投げないということである。
で、次にそのデータを全てそれぞれ足した、配列を用意する。
で、ソート。
これで、二回投げたときに得られる全ての値を得られる。
よって、次に最大の値から一つの値を引いて、それを超えない値を探す。
で、一つ上の行を二回投げたときに得られる全ての値について演算すると上のようになると。
素晴らしい。

だけれども4つの時にしか利用できないのが玉に瑕。
ま、そのときは再帰的呼び出しで何とかなるからいいや。

570qnighy:2008/10/12(日) 11:02:55 ID:R6/9FCOo0
リンクされているようなので説明を補足させてもらいます。
>>569
日記のほうにも追記しましたが、実は本選終了後に解説された公式の解答です・・・
>>564
これは自分で思いつきました。本選当日はJavaで組みましたが、今回はC++です。

571774さん:2008/10/12(日) 11:03:12 ID:CENbthlg0
JOI2006模擬試験2 問題4@C++(30) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081012/1223776259
----
違う問題を見ながらソースを見ていたから、悩んだし。
頭いいなあ。本当に。此れで俺より二つ下だから困る。

572774さん:2008/10/12(日) 12:06:21 ID:CENbthlg0
>>570
あっ、態々来てくださるとは感動です><

公式の解答ですか。
だけれども、ちゃんとソースにちゃんと起こすのは凄いです。

自分はC++な人なんですが、自分で構造体を作ってそれをvectorで格納して
std::sortで並び替える発想は全然浮かびませんorz...
>>564のソースは見た瞬間、「これ時間かかるんじゃね?」とか思ってましたが、自分の部屋で考えていたら、
sortする間に段々似た文字列が集まってくるから、効率的に比較が出来るということに気が付いて、
すげえ天才だとか思ってました。(バブルソートとかで実装されていたら駄目ですがwww)
ポテンシャルが違いすぎますorz....

573774さん:2008/10/12(日) 12:09:19 ID:CENbthlg0
Amazon.co.jp: Robert Sedgewick: 本
http://www.amazon.co.jp/%E6%9C%AC/s?ie=UTF8&amp;rh=n%3A465610%2Cp_27%3ARobert%20Sedgewick&amp;field-author=Robert%20Sedgewick&amp;page=1
-----
値段たけえwwwwwwwwwwwwwwwww

574774さん:2008/10/12(日) 12:15:04 ID:CENbthlg0
相手のサイトに書き込まないのは、俺が小心者だから。
俺プギャーwww

575774さん:2008/10/12(日) 17:28:02 ID:CENbthlg0
高校生サーバー管理者の考察日誌 - CNET Japan
http://japan.cnet.com/blog/isidai/

576774さん:2008/10/12(日) 17:29:57 ID:CENbthlg0
JOI2006模擬試験2 問題5@C++(25) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081012/1223799878

577774さん:2008/10/12(日) 17:52:23 ID:CENbthlg0
JOI 2006 模擬試験2 問題5解説
http://www.ioi-jp.org/joi/2005/2006-m2-prob_and_sol/2006-m2-t5-review.html
-----
あれ、ヤバいな。数学の問題すら分からなくなっている。
CとHについての関係は分かっているが、最後の二行の意味が分からない。まあいいか。

578774さん:2008/10/12(日) 17:54:17 ID:CENbthlg0
今更ながら、解説間違っているだろwwwww

579774さん:2008/10/12(日) 17:55:05 ID:CENbthlg0
>さて,上述の (n + r - mn - 1) ! / {(n - 1) ! × (r - mn) !} は n+r-1Cr に等しい.
凄いね!凄いね!物凄く大きくなったね!

580774さん:2008/10/12(日) 18:00:28 ID:CENbthlg0
>さて,この問題は条件 0≦a_i≦r を m≦a_i≦r に変えたものであるが,b_i = a_i + m とおくと条件は 0≦b_i≦r (i = 1, ..., n), b_1 + ... + b_n = r - mn と同値である.よって,n+r-mn-1Cr-mn が求める箱の個数である.
この発想はないわ・・・
まあ、考えれば当たり前なんだけれどもね。数式の上で操作するとちょっと俺の頭がオーバーフロー。

今更ながら、やっぱりリファラーはあんまり残さないほうが良いかなとか思ったり、思わなかったり。
まあ、此れが俺のブックマークみたいなものだから、仕方ないといえば仕方ないが。

581774さん:2008/10/12(日) 18:01:46 ID:CENbthlg0
つまり、初めにmn個をm個ずつ、n種類のビーズに割り振っておいて、残りについて行っているだけなんだけれども。
数学の組み合わせを復習しておく必要性があるな。

582774さん:2008/10/12(日) 18:03:41 ID:CENbthlg0
やっぱり、他人のソースを見ると、とても勉強になる。
それが自分より年下とか、年上とか関係なくて、やっぱりその技術だけを純粋に見るべきである。
でもすげえええええええ

583774さん:2008/10/12(日) 18:06:14 ID:CENbthlg0
まあ俺的には、平凡などっかの私立の中学とか高校とかに行っていない分際で、どこらへんまで行けるのかなということだ。
孤独って辛いね。誰とも競わずに。
まあ、それが俺の好みでないわけではないが、他のものと比較した事が無いので分からないっていう。

584774さん:2008/10/12(日) 23:18:52 ID:CENbthlg0
図書館に行ってアルゴリズム系の本を借りてこようとしたら案の定置いてなかったので、暗号の本を借りた。
ハッシュ関数とか、そこらへんの知識があったんだけれども、全部読んで電子書名の意義とかが理解できた。
電子署名は、自分でこの文章の正当性とか、自分で書きましたとか言うことをを保障しますという印である。
だから、自分が信頼している人の署名が付いた文章とか、その公開鍵とかは信用しても大丈夫という考え方、
そんな方法があるらしい。 PGPというのも、そんな考え方で実装されているとか、書かれていたように思う。
やっぱり、暗号とかのアルゴリズムは一般に公開されているものを改変せずに利用したほうが、安全である、
ということを再確認した。

585774さん:2008/10/13(月) 09:19:49 ID:CENbthlg0
JavaScriptで画像の本来の幅と高さを取得する - inamenaiの日記
http://d.hatena.ne.jp/inamenai/20081011/p1
-----
小技っぽいな。
後者の方法の方が俺的によさげ。

586774さん:2008/10/13(月) 10:17:26 ID:CENbthlg0
ニコニコ動画のマイリストの奴2%ぐらい出来た。

587774さん:2008/10/13(月) 10:19:50 ID:CENbthlg0
掲示板用アップローダー - sub_chon_uljp00053.png ダウンロード
http://www6.uploader.jp/dl/sub_chon/sub_chon_uljp00053.png.html

588774さん:2008/10/13(月) 10:23:36 ID:CENbthlg0
一番苦労しなくても良い所で苦労している気がする。

上のナビゲーターで表示されている部分から左右それぞれ三つ分を表示するようにしているのだが、1ページにあるときは右側三つしか表示されないので、合計4つの箱が出来る。
しかし、四ページ目に行くと、合計七つの箱が出来る。
此れだと左右のボタンを連打するときに場所がずれて嫌だなあと。
だから何とかしたいのだが、効率の良い(ソースの行数的に)方法が思いつかない・・・

589774さん:2008/10/13(月) 10:27:28 ID:CENbthlg0
ナビゲーターを作るだけでこんなにもソースがあるって言う。
---
function CreateNavi(){
var p = d.createElement("p");
p.className = "pagelink";
p.align = "center";

//戻る
if(page == 1){
p.appendChild(d.createTextNode("<"));
}else{
var a = d.createElement("a");
a.href = "javascript:void(0);";
a.onclick = function(){
self.Show(page - 1);
}
a.innerText = "<";
a.className = "prevpage";
AddMenuToElement(a);
p.appendChild(a);
}
p.appendChild(d.createTextNode(" "));

//prev 戻る
var i;
for(i = -3; i < 0; i++){
if(page + i >= 1){
var a = d.createElement("a");
a.href = "javascript:void(0);";
with({i: i}){
a.onclick = function(){
self.Show(page + i);
};
}
a.className = "pagelink_off";
a.innerText = page + i;
AddMenuToElement(a);
p.appendChild(a);
}
}


//current
var span = d.createElement("span");
span.className = "pagelink_on";
span.innerText = page;
AddMenuToElement(span);
p.appendChild(span);

//next 進む
var i;
for(i = 1; i <= 3; i++){
if(page + i <= maxpage){
var a = d.createElement("a");
a.href = "javascript:void(0);";
with({i: i}){
a.onclick = function(){
self.Show(page + i);
};
}
a.className = "pagelink_off";
a.innerText = page + i;
AddMenuToElement(a);
p.appendChild(a);
}
}

//進む
p.appendChild(d.createTextNode(" "));
if(page == maxpage){
p.appendChild(d.createTextNode(">"));
}else{
var a = d.createElement("a");
a.href = "javascript:void(0);";
a.onclick = function(){
self.Show(page + 1);
}
a.innerText = ">";
a.className = "nextpage";
AddMenuToElement(a);
p.appendChild(a);
}

return p;

function AddMenuToElement(a){
if(maxpage == 1) return;

a.oncontextmenu = function(){
var e = w.event;
var x = canvas.scrollLeft + e.clientX;
var y = canvas.scrollTop + e.clientY;
ShowPopup([{
str: "指定ページへ移動",
func: function(){
var ret = w.parseInt(w.prompt(["何ページ目?(1〜", maxpage,")"].join(""), ""));
if(!isNaN(ret)){
self.Show(ret);
}
},
},
{
str: "初めのページへ移動",
func: function(){
self.Show(1);
},
disabled: page == 1 ? true : false
},
{
str: "最後のページへ移動",
func: function(){
self.Show(maxpage);
},
disabled: page == maxpage ? true : false
}], x, y, "s_popup");

return false;
}
}
}

590774さん:2008/10/13(月) 10:32:44 ID:CENbthlg0
と、言うことで、もうちょっとソースを減らす。

591774さん:2008/10/13(月) 10:46:17 ID:CENbthlg0
すっきり!
-----
function CreateNavi(){
var p = d.createElement("p");
p.className = "pagelink";
p.align = "center";

//戻る
p.appendChild(MakeArrow(true));
p.appendChild(d.createTextNode(" "));

p.appendChild(MakePageList(1, maxpage));

//進む
p.appendChild(d.createTextNode(" "));
p.appendChild(MakeArrow(false));

return p;

function MakePageList(s, e){
var base = d.createElement("span");
var i;
for(i = s; i <= e; i++){
if(i == page){
var span = d.createElement("span");
span.className = "pagelink_on";
span.innerText = page;
AddMenuToElement(span);
base.appendChild(span);
}else{
var a = d.createElement("a");
a.href = "javascript:void(0);";
with({i: i}){
a.onclick = function(){
self.Show(i);
};
}
a.className = "pagelink_off";
a.innerText = i;
AddMenuToElement(a);
base.appendChild(a);
}
}

return base;
}

function MakeArrow(prev){
if(prev){ //前
if(page == 1){
return d.createTextNode("<");
}else{
var a = d.createElement("a");
a.href = "javascript:void(0);";
a.onclick = function(){
self.Show(page - 1);
}
a.innerText = "<";
a.className = "prevpage";
AddMenuToElement(a);
return a;
}
}else{
if(page == maxpage){
return d.createTextNode(">");
}else{
var a = d.createElement("a");
a.href = "javascript:void(0);";
a.onclick = function(){
self.Show(page + 1);
}
a.innerText = ">";
a.className = "nextpage";
AddMenuToElement(a);
return a;
}
}
}

function AddMenuToElement(a){
if(maxpage == 1) return;

a.oncontextmenu = function(){
var e = w.event;
var x = canvas.scrollLeft + e.clientX;
var y = canvas.scrollTop + e.clientY;
ShowPopup([{
str: "指定ページへ移動",
func: function(){
var ret = w.parseInt(w.prompt(["何ページ目?(1〜", maxpage,")"].join(""), ""));
if(!isNaN(ret)){
self.Show(ret);
}
},
},
{
str: "初めのページへ移動",
func: function(){
self.Show(1);
},
disabled: page == 1 ? true : false
},
{
str: "最後のページへ移動",
func: function(){
self.Show(maxpage);
},
disabled: page == maxpage ? true : false
}], x, y, "s_popup");

return false;
}
}
}

592774さん:2008/10/13(月) 10:49:42 ID:CENbthlg0
掲示板用アップローダー - sub_chon_uljp00054.png ダウンロード
http://www6.uploader.jp/dl/sub_chon/sub_chon_uljp00054.png.html
-----
こんな表示方法もありかと思った。

593774さん:2008/10/13(月) 11:24:44 ID:CENbthlg0
けっこうソースがシンプルになった。
良かった良かった。
----
var begin, last;
if(maxpage <= 7){
begin = 1; last = maxpage;
}else{
if(page <= 3){
begin = 1; last = 7;
}else if(page >= maxpage - 3){
begin = maxpage - 6; last = maxpage;
}else{
begin = page - 3; last = page + 3;
}
}
p.appendChild(MakePageList(begin, last));

594774さん:2008/10/13(月) 11:31:23 ID:CENbthlg0
IEPanelExで、コンテキストメニューの表示も文字列の選択も出来なくすると、IEぽくなくなる。
いい感じ。

595774さん:2008/10/13(月) 11:32:03 ID:CENbthlg0
選択できなくなると情報のコピーとかが出来なくなるので、URLとタイトルをコピーできるようにした。

596774さん:2008/10/13(月) 11:48:05 ID:CENbthlg0
U.N.オーエンは管弦楽なのか? - 最終鬼畜オーケストラ
http://www.nicovideo.jp/watch/sm4915337

597774さん:2008/10/13(月) 11:51:52 ID:CENbthlg0
後は、削除と編集を何とかすれば、使い物にはなるだろう。
完成度が3%ぐらいになった。

598774さん:2008/10/13(月) 12:19:03 ID:CENbthlg0
JOI2006模擬試験1 問題5@C++(未完)(19) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223866809

599774さん:2008/10/13(月) 18:13:26 ID:CENbthlg0
JOI2008予選 問題1@C(15) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223881846
---
番兵法か・・・
なるほど。

600774さん:2008/10/13(月) 18:34:04 ID:CENbthlg0
そうだ!
今適当に書いている、ニコニコ動画のマイリストの管理の奴に、マイリストのマイリストの機能を付けよう!

601774さん:2008/10/13(月) 20:54:00 ID:CENbthlg0
ちゃっちゃと削除機能を付けた。
なんか今日だけで随分と進んだ。
面倒だと思っていたので、そこを避けて進んでいたが、実際にやってみると簡単なもんだ。
削除をしてもまだ、画面に即反映という風にはなっていない。これはどうしようもないかもしれない。
現状画面の更新間隔を1000smにしているので、もうちょっと長く出来るようにするかな。
まあ、削除の処理とリストの処理は分けわけするべきなので、もうちょっと設計を考えたほうが良いかもしれない。

602774さん:2008/10/14(火) 14:34:23 ID:CENbthlg0
削除機能でタグの管理を全く念頭に置いていなかった。
まあ、作っているときからタグの処理面倒くせー、とか思っていたので後から対応しよう。
実は、自分のマイリストにもタグを付けてないので、実際に試してどのように保存されているかを調べなければ。

603774さん:2008/10/14(火) 16:30:04 ID:CENbthlg0
おっおっおwww
開発中に仕様を変更するとかニコニコ動画自重汁。
ナビゲーターにCSSが適応されなくなってびびっただろう。

604774さん:2008/10/14(火) 16:34:07 ID:CENbthlg0
はぁ。
書き直しか・・・

605774さん:2008/10/14(火) 16:37:50 ID:CENbthlg0
三行修正して正しく表示されるようになった。

606774さん:2008/10/14(火) 18:44:40 ID:CENbthlg0
JOI2008予選 問題3@C++(12) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223893215
「Silverlight 2」、米国時間の14日にダウンロード提供開始 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2008/10/14/003/index.html
---
僕の今には有用性が分かりません。

607774さん:2008/10/14(火) 19:33:54 ID:CENbthlg0
あっ。
開発中に今までのマイリストガ消えた・・・
バックアップとってなかった俺涙目wwwwww
絶対完成させてやる。

608774さん:2008/10/15(水) 11:26:59 ID:CENbthlg0
JOI2008予選 問題5@C++(7) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081014/1223981320
JOI2008予選 問題6@C++(5) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081014/1223988441

609774さん:2008/10/15(水) 13:20:12 ID:CENbthlg0
IEPanelExって、中で外部のJavaScriptを読み込めば、使用している本人が更新しなくても表示方法とかを変更出来るよね。
問題は何処にそのスクリプトをおくかだけれども。

610774さん:2008/10/15(水) 13:42:13 ID:CENbthlg0
削除しようとした動画以外が消えて笑ったwww
まあ、今色々なところ弄くっているから仕方ないけれども。

611774さん:2008/10/15(水) 14:59:22 ID:CENbthlg0
取り敢えず、タグも考慮に入れた削除を実装完了した。
物凄く時間がかかった。
JavaScriptの恐ろしさをある意味で知った。
本当に予想外のところから参照があった。
-----
this._DeleteTag = function(n, id){ //n:タグ削除する動画のmylistのインデックスかオブジェクト, id:削除するタグのid
if(typeof(n) != "number"){
var i, len, vid = n.id;
for(i = 0, len = mylist.length; i < len; ++i){
if(mylist[i].id == vid){
break;
}
}
if(i == len) return; //そんな動画無い
n = i;
}

var i, len = mylist[n].tags.length;
for(i = 0; i < len; ++i){
if(mylist[n].tags[i] == id){
mylist[n].tags.splice(i, 1);
break;
}
}

if(i == len) return; //そんなタグ無い

var j, len, flag = true;

out:
for(j = 0, len = mylist.length; j < len; ++j){
if(j != n){
var k, tlen;
for(k = 0, tlen = mylist[j].tags.length; k < tlen; ++k){
if(mylist[j].tags[k] == id){
flag = false;
break out;
}
}
}
}

if(flag){
var k, tlen;
for(k = 0, tlen = tag.length; k < tlen; ++k){
if(tag[k].id == id){
tag.splice(k, 1);
break;
}
}
}
};

612774さん:2008/10/15(水) 15:02:28 ID:CENbthlg0
単純化すると、以下のようなことが起こっていた。
-----
var a = [0, 1, 2, 3, 4];
var b = a;
b[0] = 3;
alert(a); //[3, 1, 2, 3, 4];
-----
ぐはあ。
此れが、配列の中に収められているオブジェクトの中の配列だったから気づくのに時間がかかった。
という事で、削除される可能性のある前に
a.concat([]);してコピーするようにした。

613774さん:2008/10/15(水) 15:03:43 ID:CENbthlg0
this._Deleteはこんな感じになった。
-----
this._Delete = function(l){
var id = l.id;

var i, len;
for(i = 0, len = mylist.length; i < len; ++i){
if(mylist[i].id == id){
break;
}
}

//タグを全て削除
var j, len, l_tags = l.tags.concat([]); //ここでl.tagsをコピーしておかないとthis._DeleteTag内で変更される可能性がある
for(j = 0, len = l_tags.length; j < len; ++j){
this._DeleteTag(i, l_tags[j]);
}

mylist.splice(i, 1);
};

614774さん:2008/10/15(水) 18:41:57 ID:CENbthlg0
日本語技術資料のダウンロード
http://www.intel.com/jp/download/
-----
探すの疲れた。

615774さん:2008/10/16(木) 16:11:40 ID:CENbthlg0
JOI2008本選 問題4@C++(-5) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224068881
JOI2007予選 問題1@C(-9) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224074337
JOI2007予選 問題2@Perl(-10) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224075312

616774さん:2008/10/16(木) 16:32:22 ID:CENbthlg0
ブログとかで配信しているRSSは全文を配信していない。
大抵、続きを読むが出るところまでか、前何文字とかそんな風である。
前者の場合は、ブログの管理人が続きを読む機能を知らないで使っていれば、全文と同じである。
だが、後者の場合はほぼ確実に全文ではなくなる。
どちらにせよ全文を表示できない可能性が十分にあるので、あまり美味しくない。
つまりどうせならばRSSリーダーで全文を読みたい、保存したい。と言うことだ。

さて、どうすれば良いか。
RSSにはそのページへのパーマリンクがまず含まれている。
よって、そのページに行けば確実に全文が含まれているだろう。
そして、大抵のサイトではデザインが同じはずなので、何処の要素に本文の全文があるかが分かれば良い。
つまり、サイトごとに何か要素を指すものを作ればいいわけである。(これはXPathでも良いし、独自の方法でも良い。)
しかし、その情報を一体どのように入手するか、保存するかが問題である。

これにはもう前例があって、AutoPagerizeやLDRize等で利用しているSiteInfoという手が一番美味しいと思っている。
つまり、使用者全員で作る巨大データベースと言うことである。
これならば個人が参照方法を考えなくても良くなるし、負担が減るであろう。

実はまず、この全文受信したいと思っている要望時点に問題があって、全文を手に入れるには必ず一時サイトに接続しなければいけないという問題である。
その本文を読まないのに、そのページを取得しに行く。そしてそのサーバーに負担がかかる。
まあ、此れには全文を保存するキャッシュサーバーを用意するという手が考えられる。
ある意味でのプロキシである。
まあ、そのプロキシは誰が設置するんだという問題があるだろうが、それはどうにもならない問題である。
よって、この計画は駄目であるということだ。

617774さん:2008/10/16(木) 16:38:37 ID:CENbthlg0
もともと俺には書くスキルがないから大丈夫だけれど。

618774さん:2008/10/16(木) 18:58:48 ID:CENbthlg0
STL Algorithm 詳解
http://www.wakhok.ac.jp/~sumi/stl/manual/man_algorithm.html

619774さん:2008/10/16(木) 19:04:43 ID:CENbthlg0
>upper_bound()は、lower_bound()とよく似ています。upper_bound()の場合には、 指定した値より"大きい"の要素が最初に現れる位置を返します。つまり「以上」と「大きい」の違いです。これは言い換えると、ソート状態を崩さずに値を挿入できる最後の位置を返すということになります。
>lower_bound()は、指定した値"以上"の要素が最初に現れる位置を返します。この位置は、現在のソート済みの状態を崩すことなく、指定した値を挿入できる最初の位置になります。

>ある値と一致する範囲の一番最初を返す- lower_bound()
>ある値と一致する範囲の一つ後ろを返す- upper_bound()

微妙に表現が違う・・・

620774さん:2008/10/17(金) 05:59:43 ID:CENbthlg0
うん、下の方が表現が正しい。

lower_bound()しか試してないけれども、存在しない値は指定しないほうがいいみたい。
存在しない値の場合は、その次を指すみたい。
だから、0〜10の配列で-1を指定すると0の場所が返る。
まあ、そんな感じ。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板