「F6」を含む日記 RSS

はてなキーワード: F6とは

2018-11-11

[]2018年11月10日土曜日増田

時間記事文字数文字数平均文字数中央値
006710683159.449
01508608172.248
02223825173.948.5
03215617267.525
041985745.138
051157452.240
0622204492.940.5
0731295795.457
08548958165.974
09749056122.450.5
1093889995.743
11130916770.538
127915319193.948
139310214109.847
14769001118.442.5
159814516148.153
16105955791.058
1785401447.232
186210497169.360.5
1985499258.731
20616124100.448
211451073974.141
2211917378146.038
231421145980.744
1日1744195055111.845

頻出名詞 ()内の数字単語が含まれ記事

人(175), 自分(145), 今(91), 日本(77), 話(58), 増田(57), 前(53), 仕事(52), 女(51), 相手(50), 好き(50), 必要(49), 女性(47), 人間(47), あと(45), 男(44), ー(44), 意味(42), フェミ(42), 普通(41), 問題(38), 気(38), 理由(37), 感じ(36), 日本人(36), 子供(35), 原爆(35), 他人(33), 気持ち(33), 金(32), オタク(32), 頭(31), 目(30), 内容(30), 時間(29), 世界(28), 男性(27), レベル(27), 英語(27), 親(27), 大学(26), 言葉(26), 関係(26), 無理(26), 全部(26), しよう(25), 他(25), ネット(25), 最近(25), 一番(24), 自由(24), 国(24), 結婚(23), 理解(23), 手(23), 迷惑(23), 美人(23), 存在(22), 趣味(22), 今日(22), ゲーム(22), 昔(22), 嫌(21), じゃなくて(20), 場合(20), b(20), 世の中(20), 幸せ(20), 結局(20), お金(20), 漫画(19), 完全(19), 状態(19), 社会(19), 無料(19), 会社(19), 車(18), 結果(18), 事実(18), 説明(18), 心(18), 一人(18), 子(18), 時代(18), 最初(18), 誰か(18), アニメ(18), 映画(18), 別(18), 表現(17), 人生(17), ダメ(17), しない(17), タイプ(17), 正直(17), 勉強(17), シコ(17), ファン(17), バカ(17), 土(17), 家(17), 無駄(17), 先(17)

頻出固有名詞 ()内の数字単語が含まれ記事

日本(77), 増田(57), フェミ(42), じゃなくて(20), 表現自由(16), BTS(15), ネトウヨ(14), KKO(13), 韓国(13), 東京(13), 可能性(12), わからん(12), アメリカ(11), 外国人(11), 中国(11), いない(11), 京都(10), いいね(10), 基本的人権(10), OK(10), Twitter(9), 婚活(9), 価値観(9), hatena(9), 20代(9), 基本的(9), 元増田(9), アプリ(9), いいんじゃない(9), キモ(9), biz(9), 自分自身(8), なのか(8), ぶっちゃけ(8), f8(8), f6(8), d1(8), s(8), なんだろう(8), …。(8), にも(8), 自己紹介(8), b6(8), ブクマ(8), SNS(8), twitter(8), 10年(8), php(8), 個人的(8), 専業主婦(7), お気持ち(7), 精神的(7), 毎日(7), 被害者(7), f1(7), w(7), b1(7), a(7), 奨学金(7), b2(7), なんの(7), f5(7), な!(7), キズナアイ(6), ポリコレ(6), ttp://(6), 笑(6), bb(6), 生産性(6), fe(6), amp(6), トラバ(6), ゾーニング(6), 2人(6), ブクマカ(6), フレームワーク(6), ガチ(6), スマホ(6), ニート(6), 1年(6), ブコメ(6), 5年(6), 下方婚(5), individual(5), 14億(5), コレ(5), アレ(5), 30代(5), 昭和(5), 最低賃金(5), 1週間(5), PC(5), 一般的(5), reception(5), cytbunxi(5), ホッテントリ(5), コチラ(5), 夫婦(5), ブログ(5), member(5), マジで(5), ディオ(5), e4(5), AI(5), b4(5), aa(5), 異世界(5), チョコパイ(5), メルカリ(5), 論理的(5), 1人(5), キモい(5), ナチス(5), key(5), 一緒に(5), 100%(5), 何度(5), 3p(5), 自分たち(5), n/(5), Web(5), おまえら(5), 1回(5), URL(5), p(5), パティシエ(5), 犯罪者(5), ラノベ(5), キチガイ(5), スマブラ(5), ???(5), mkey(5), 仕方がない(5), 萌え絵(5)

本日の注目単語 ()内の数字単語が含まれ記事

恋文(6), individual(5), ディオ(5), パティシエ(5), bb(6), チョコパイ(5), f8(8), コチラ(5), 3p(5), d1(8), スクウェア(4), 原爆(35), 土(17), 戦士(12), 基本的人権(10), y(7), シコ(17), o(7), e(15), フレームワーク(6), Tシャツ(12), h(10), d(15), 反日(9), c(12), 奨学金(7), 指定(13), 運転(12), 表現自由(16), 美人(23), 学ん(10), 無料(19), 借金(9), 返信(9), 食う(11), 20代(9)

頻出トラックバック先(簡易)

40代KKO必死婚活アプリを一か月間使ってみた結果 /20181110151336(20), ■悪質サイトからメールを晒そう /20181110075713(19), ■営業してるとやたらナンパされる /20181109185912(15), ■サンマの内蔵って食べるのが普通? /20181110001043(11), ■車酔いする奴面倒くさすぎ /20181109204321(10), ■未だに特撮ものの偉大さがよくわからない /20181109222920(8), ■結局1番強いキャラってなんなの? /20181110181336(7), ■スクウェア黄金期ってそんなすごかったの? /20181110085030(7), ■日本人が英語能力が低いのを /20181109174335(7), ■汚れちまった悲しみって /20181110034243(6), ■才能のない人間人生ってつまんねーわ /20181109024136(6), ■表現自由十字軍の苦手なモノ /20181110214012(6), ■クレジットカード債務が支払えず裁判まで行ったやばい人達の例 /20181110025858(6), ■ニコニコオススメ動画 /20181109105536(5), ■ /20181110100229(5), ■例の原爆の件って典型的正義の反対はまた別の正義案件だよな /20181110033210(5), ■日本テレビ番組あるある /20181017172802(5), ■高校生はチンチンチャンバラするってマジ? /20181110004841(5), ■スマブラの話 /20181110120600(5), ■ぶっちゃけ日本廃止して英語公用語にした方がいい /20181108223659(4), (タイトル不明) /20151030013920(4), ■いよいよ日本語がわからなくなってきた /20181110131131(4), ■何故か部屋貸してくれないんだけど心当たりがない /20181110121914(4), ■趣味演劇をやったら面白かった事あれこれ /20181110030720(4), ■勉強しに日本に来ている外国人への援助が批判されていることについて /20181110201532(4), ■彼女200円以下のゲロマズ牛乳を買ってきた! /20181110224118(4), ■ /20181110082352(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5781155(3071)

2018-09-30

[]2018年9月29日土曜日増田

時間記事文字数文字数平均文字数中央値
009616465171.540
0148322067.136.5
02328402262.688
03232700117.443
04222993136.033
0591234137.157
06192116111.446
07298100279.364
08172865168.539
09476225132.461
1066650998.641
1171620787.443
1288785489.347
1310716370153.045
1412513963111.751
15115913879.545
1612514089112.752
1710611332106.965
181681669299.443
191701504188.547.5
201311093983.537
211521198178.838.5
221801667392.648
2322623847105.545
1日2172234955108.246

頻出名詞 ()内の数字単語が含まれ記事

人(262), 自分(208), 話(101), 人間(94), 今(87), 増田(83), 問題(80), 金(69), 相手(67), 必要(63), 普通(62), 日本(60), 感じ(59), 好き(57), 女(53), あと(53), 仕事(52), 理由(51), 前(49), LGBT(48), 社会(47), 言葉(46), 親(45), 会社(44), レベル(43), 他(43), 理解(42), おっさん(42), 男(41), 最近(41), 頭(41), 時間(40), 場合(40), 関係(39), 意味(38), KKO(37), ネット(37), オタク(37), 気(36), 子供(36), キモ(35), 嫌(35), 最初(35), 一番(34), ー(34), 存在(33), 差別(32), しない(31), 勉強(31), 結果(31), 扱い(31), 目(30), 次(30), 人生(30), 別(30), 全部(29), 逆(29), 表現(28), 心(28), 文章(28), 批判(28), 気持ち(28), 台風(27), 映画(27), 上司(27), 手(27), 発言(27), 世界(27), 間違い(27), 昔(27), ダメ(27), 状態(27), 他人(27), 議論(27), バカ(26), ゲーム(26), 確か(26), 誰か(26), 場所(26), いや(25), しよう(25), エンジニア(24), 無理(24), 今回(23), 年収(23), 人たち(23), 漫画(23), 自体(23), 大学(23), 意見(23), 金持ち(23), 時代(23), 今日(22), では(22), 全く(22), お金(22), 先(22), 家(22), 時点(22), 結局(22), 作品(22)

頻出固有名詞 ()内の数字単語が含まれ記事

増田(83), 日本(60), LGBT(48), KKO(37), キモ(35), 安倍(20), じゃなくて(20), 東京(18), わからん(16), 可能性(16), マジで(15), フェミ(14), いない(14), なんだろう(14), gyazo(14), お気持ち(14), 普通に(13), 杉田(13), ソシャゲ(13), にも(12), hatena(11), 元増田(11), 杉田水脈(11), 沖縄(11), スマホ(10), アメリカ(10), twitter(10), なのか(10), 基本的(10), OK(10), …。(10), ヘイト(9), 資本主義(9), ラノベ(9), 1人(9), ネトウヨ(9), 社会人(9), はてなー(9), この国(8), ポリコレ(8), キモい(8), 論理的(8), 自民(8), 自己責任(8), 自分自身(8), キチガイ(8), 何度(8), 差別主義(8), 脳内(7), ガチャ(7), 満員電車(7), 外国人(7), いいね(7), 金(7), いいんじゃない(7), ブクマカ(7), 2018年(7), ブコメ(7), s(7), 生産性(7), 小川(7), 一年(6), オワコン(6), ちんこ(6), GDP(6), 1年(6), 精神的(6), 具体的(6), 総理大臣(6), 安倍政権(6), るか(6), 夫婦(6), 漫画家(6), な!(6), あいつら(6), チンコ(6), ガチ(6), 柴田(6), サイコパス(6), メンヘラ(6), 自民党(6), 社会的(6), 自分たち(6), Twitter(6), キモカネ(6), ポル・ポト(6), fb(6), 中国(6), ???(6), プレイ(6), 赤の他人(6), 笑(6), 問題提起(5), どんだけ(5), Web(5), ゼロサムゲーム(5), ブックマーク(5), DV(5), アベ(5), D(5), 女子校(5), a9(5), ブクマ(5), article(5), e4(5), 立憲民主党(5), c5(5), 健常者(5), ニコ動(5), 消費者(5), 100%(5), 積極的(5), はてなブックマーク(5), 2人(5), f5(5), b(5), AI(5), 定期的(5), dc(5), マイノリティ(5), である(5), 一日(5), 犯罪者(5), 30代(5), 安倍支持(5), A(5), 個人的(5), 1万円(5), 偏差値(5), ワロタ(5), 安部(5), X(5), 表現の自由(5), 100万(5), 知らんけど(5), アプリ(5), 低能先生(5), e(5), 表現規制(5), f6(5)

投稿警察もどき日中に再投稿された本文の先頭20文字 ()内の数字投稿された回数

新潮 (3), うんち (2), ワロタ (2), slackに日付と導入した環境メモ(2), そうだよ(便乗) (2), 多分アメリカゾンビ映画が飽和してる(2), プログラミングは必修科してはならない(2), それしか知らないの? を貫き通せない(2), 私が囲碁を学んだ過程を基に、どのよう(2), 芸能人名前が思い出せないかサプリ(2), 読んだよ。 クソリプは気にしなくてい(2), まりんとメラン (2), 通勤時にやるなら駅メモおすすめ ボタ(2)

頻出トラックバック先(簡易)

登場人物失明するアニメ漫画を教えてください /20180929101214(33), ■趣味クラシック音楽ですという人をtwitterで見かけるが /20180929083005(20), ■エンジニアって言葉臆面もなく名乗るひとたち。 /20180928210705(18), ■安倍支持だけど杉田は流石に勘弁してくれ /20180928042947(16), ■高齢処女ディルドで自力処女した話 /20180929132837(14), ■合成育ガチャ作業ゲーじゃないソシャゲない? /20180928003107(12), ■今度こそ、増田でも絶対わかる囲碁入門#1「基本ルール」 /20180929165823(11), ■文言を「ぶんごん」と読んだ総理大臣クラスバカ上司wwwww /20180929104425(11), ■オタク死滅 /20180929074000(10), ■なんで女性茶髪OKなの? /20180929101207(10), ■みんなCOMPって知ってるの? /20180929111831(9), ■ソシャゲとかマジくだらないwww /20180928232022(8), ■ /20180929145811(8), ■今日40歳になったよ /20180929122326(6), ■anond20180929223633 /20180929223728(5), ■キモおっさんって自分で選んでそうなったのに /20180929232001(5), ■「予定の調整」って面倒くない?100年前から変わってなくない? /20180928111404(5), ■好きでもない人と結婚した結果 /20180929222937(5), ■anond20180928130429 /20180929131322(5), ■フィクションの中の犯罪行為 /20180929095953(5), ■ついにニコ動が死にかけ? /20180929022647(5)

増田合計ブックマーク数 ()内の数字は1日の増減

5656063(3030)

2018-09-29

anond:20180929212112

ルールのその先#3 「相手の石を取る」


相手の石を取るための様々な手筋があります

手筋とはテクニックのようなものです。

シチョウ

「シチョウ知らずに碁を打つな」という格言があり、そのくらい有名な手筋です。


図1失敗 https://gyazo.com/19c51fac68cb0d19860170be3a7a867b


黒は△の白石を取りたいのですが、普通にいかけると白石に逃げられてしまいました。

そこで、右側にある味方の黒石を利用します。


図2 https://gyazo.com/6878ea7f31fb1d8cb9d1520176212d6c



連続アタリアタリとかけていって、白は盤の端へ追い込みます

最後は逃げ場がなくなり、取られてしましました。

このように階段状に相手の石を追いかけ取ることをシチョウといいます

黒がf7へ打った時点で△の石の運命は決まり、既に取られているので、白としてはそこで△を諦めるのが一番被害が少なく正解です。

最後まで逃げて取られると被害が拡大するだけです。

ゲタ

続いての図はこちらです。


図3 https://gyazo.com/73eb17502956ed240edd60e4ae05ce79


さっきとちょっと変わりましたが、きっとこれも簡単

シチョウで追いかけてみましょう。さっきも取れたんだからきっと取れるはず。


図4 https://gyazo.com/eae2a0514cb49667b96f7c072fe61a9f

あれ?あれれ??

おかしいな、さっきはうまく取れたのに今度は逆に白に取られてしまいました。

さっきとの違いはなんでしょうか。


違いは、シチョウの追いかける先に白石が待ち構えていたことです。

白は味方の石とつながりダメが増えたことで、アタリ連続が成立しなくなってしまいました。

このようなシチョウの先にある石をシチョウアタリといいます


周囲の状況によって正解は変わりますシチョウは追いかける先に相手の石がない時にだけ成立するのです。

ではこういう場合どうすればいいでしょうか?

図1と違い、白△の両翼に味方の黒石があることに注目してください。



図5 https://gyazo.com/2651141dc0a88b6ffb4651e13acd73c1



f6とフタをするように打つ事で相手の逃げ場をふさぐことができました。

もがいても逃げられません。

このような手のことを「ゲタ」といい、シチョウと並んで必ず対局で使う手筋なので覚えておきましょう。






次⇛https://anond.hatelabo.jp/20180929220623

anond:20180929210020

ルールのその先#2 「欠け目」


◆図1 https://gyazo.com/a969e9f52474c953c7e4ccd979945e60

これは完璧な二眼の生きです。

ではこれは?

◆図2 https://gyazo.com/2cca06c4c4c7d37cccc2893682495ec6

図1とほとんど同じようですが、よく見ると違います

△の3子がアタリになっています

◆図3 https://gyazo.com/2e71bec7bfaa7052994128ff3eb25785

f6の地点は眼のように見えて、実は眼ではありませんでした。

これは細やかな違いのようですが大きな違いです。

図2のように、眼のように見えて実は眼ではない地点の事を「欠け眼」といいます

「打ち欠き」


相手の眼を不完全な眼(欠け目)にするための手筋が「打ち欠き」です。

中手と同じで相手の石に二眼を作らせるのを防ぐ手段です。

◆図4 https://gyazo.com/9175d4c1a3d79622963295c3b597c2d3

白番です。相手黒石が二眼をつくる寸前です。

この黒を殺すにはどうすればよいでしょうか。

◆図5 失敗 https://gyazo.com/26763d4ddaaea91b4e0c601f7093122c

残念。二眼を作られてしまいました。

ここで「打ち欠き」の出番です。

相手の中へ「打って」、眼を「欠く」のです。

◆図6 打ち欠き https://gyazo.com/edd30fdff4e6c28eee8ae4e00b62fa6a

相手の内側へ打つことで一旦は石を取られてしまいました。

しか問題ありません。黒の一団を殺し、一子を犠牲にする事以上の利益を得ているのです。

白が眼を作る要所へ捨て石を放ったことで、△の地点が欠け目になっているのがおわかりでしょうか。

このように中手や打ち欠きを覚えることで相手の石を殺せるようになります








次⇛https://anond.hatelabo.jp/20180929214552

2018-01-28

フリーソフトなしでキーアサインカスタマイズする方法

レジストリを使ってキーアサインを変更する方法です。キーボードキー配列カスタマイズして使いたいけど、会社フリーソフト禁止されていてできないという人とかはこの方法が使えますWindowsに元から入っている機能で設定を変更するだけなので、追加のソフト不要です。やってみると意外と簡単ですが一応レジストリをいじるので自己責任で行いましょう。

Win+Rを押します。

ファイル名を指定して実行」が開きます

「regedit」と入力してOKを押します。

レジストリエディターが開きます

左側のツリーを次のように展開します。

HKEY_LOCAL_MACHINE

SYSTEM

CurrentControlSet

Control

Keyboard Layout

Keyboard Layout」(Layoutsではない)フォルダ選択した状態します。

編集メニューから新規を選び、バイナリ値をクリックします。

右側に「新しい値#」というファイルができるので「Scancode Map」という名前に変えます

「Scancode Map」をダブルクリックします。

バイナリ値の編集画面が開くのでここに変更内容を記述します。

■例、CapsLockをCtrlに変える場合

00 00 00 00 00 00 00 00

02 00 00 00 1D 00 3A 00

00 00 00 00

OKを押して編集画面を閉じます

パソコン再起動します。

以上です。

例で挙げたバイナリ値の役割はそれぞれ下記の通りです。

00 00 00 00 (設定上必要ものです)

00 00 00 00 (設定上必要ものです)

02 00 00 00 (変更するキーの数+1最初に書きます、16進数です。あとは0を書いておきます

1D 00 3A 00 (変更後のアサインと、変更するキーコードを書きます。下記参照)

00 00 00 00 (設定上必要ものです)

他にも例を挙げると下記のようになります

■例、半角全角をEsc、カタカナひらがなを半角全角に変える場合

00 00 00 00 00 00 00 00

03 00 00 00 01 00 29 00

29 00 70 00 00 00 00 00

■例、CapsLockをCtrl、無変換をBackspace、変換をEnterに変える場合

00 00 00 00 00 00 00 00

04 00 00 00 1D 00 3A 00

0E 00 7B 00 1C 00 79 00

00 00 00 00

キーコードです。

Esc、01 00

F13B 00

F2、3C 00

F33D 00

F4、3E 00

F5、3F 00

F6、40 00

F7、41 00

F8、42 00

F9、43 00

F10、44 00

F11、57 00

F12、58 00

半角全角、29 00

Backspace、0E 00

Tab、0F 00

CapsLock、3A 00

Enter、1C 00

Shift、2A 00

Shift、36 00

左Ctrl、1D 00

Win、5B E0

左Alt、38 00

無変換、7B 00

Space、39 00

変換、79 00

カタカナひらがな、70 00

右Alt、38 E0

Win、5C E0

アプリケーションキー、5D E0

右Ctrl、1D E0

Insert、52 E0

Delete、53 E0

Home、47 E0

End、4F E0

PageUp、49 E0

PageDown、51 E0

上、48 E0

下、50 E0

左、4B E0

右、4D E0

2018-01-25

F6ストレートに受け止めて「腐女子へのおもてなし」とか言ってる馬鹿の話を聞く必要ってある?

2018-01-24

おそ松さんの2期がつまらない理由

当方腐女子である




一言で言って、制作側が良くを書いて男ウケを狙い出したように思う。

2期1話のあの腐女子いじりだけを見て言ってるわけではない。

実際あの腐女子いじりはひどいものだったと思うけれどさすがにあれ一度だけで判断したわけではない。

例えば、一期であった F 6はげんし松さんになり、じょし松さんは三国松になっている。

F 6はおそらく企画を通すための飛び道具として用意された存在だったわけだし、彼らはつまりあなたたちの好むもの自分たち理解していますよ」というアピールだったわけだ。F6のものというより、彼らを出演させることこそが制作側のいわゆるおもてなし精神だった。これは疑似恋愛を好む女性のために作られているんですよ。

そして一期初期にあれほど存在感アピールしていた彼らが二期になってから一度も出てきていない。これは一期で思うほど女性が F 6に食いつかなかったからというだけでもないだろう。もう女性客はほっといてもついてくるから、もてなす必要がなくなったのだ。

その決別、今後はお前らをもてなしてはやらないぞというのが二期一話だ。

2期の1話は界隈を見ていると反応が真っ二つだった。

買い支えてきた自分たち馬鹿にしていると言ってジャンル離れをする腐女子、逆によくやってくれたと喝采を送る腐女子

後者は本当にあれを心から楽しんで受け入れたのだろうか。

突然理解しがたいセクハラを食らってギャグコント風に受け流してしまう、デブと言われて女芸人のようにふるまう、そういった自己防衛からの喝采ではなかっただろうか。

私にはあの一話はやはり腐女子をふるいおとすためのものだったと感じられる。

二期で突然男ウケに走り出した理由もなんとなくわかる。

一期で大絶賛を受けたのだ。腐女子向けアニメとして。

それは、やはり、なら同性にもうけたいと、できないわけがないと、思ってしまったのではないだろうか。

あいうのがうけるなら自分の思う楽しさで、もっとうけるはずだと。

一期と二期では視聴者女性だけでなく作中の女性への扱いも変わっているように思う。一期のような圧倒的崇拝対象にない。メインヒロインのトト子ちゃんですら無条件にあがめられる存在でなくなってしまっている。

エンディングもわかりやすい。

女性口説くワードで埋められていた一期エンディングとこれも逆で、なんというか、女性の影を消して男子世界男子がかっこいいと思う世界になっている。

じょし松さんは女性視聴者共感を集めるような存在だったのだろうけれど、彼女たちもやはり二期になってからモブとして出演するのみで、おそらくその後継が三国松だ。

なんでか知らんけど男子って三国志、好きだよね。うん。

二期DVDが売れないのもむべなるかな。

全体をうっすらと覆う、おもてなしをやめた店の気配にリピーターが肌感で遠のいているのだろう。

現地人向けにカリフォルニアロールを作って大ヒットしたのに、それで気をよくして本格江戸前寿司をふるまいだし、そしてカリフォルニアロールをそれとなくdisる空気の店にしたのだ。

男性むけ日常ゆるふわアニメで言うなら、徹底して美少女のぽわぽわかわいい世界を描き、大好評だったので二期でリアル女子所作をとりいれ、男なんて不要わたしたちは自立して生きていく、みたいな方向転換をしたようなかんじ。



単純に一期から制作時間なかっただけかもしれない。

でも、やはり、二期には部室の中で男子生徒がかたまっている猥談のような印象がある。

ショーではない。

2017-09-05

カメラ」好きによる、フィルムカメラ購入のススメ

増田です。写真も好きですがカメラの方が好きだと思います

撮影頻度は月にフィルム5本程度。カメラを触りながらウイスキーが飲める程度に好きです。

Nikon F4を使っているニコン党です。

0.前提条件

  1. フィルムカメラが欲しい人
  2. 35mmカメラのみ、予算レンズ込で1~3万前後、入手性・経済性もある程度考慮
  3. 主に1眼レフを紹介

0.1 御託は置いて実用おすすめフィルムカメラ

NikonF3,F4
CanonNewF-1,EOS-1N,EOS-5QD,EOS-Kissシリーズ
MinoltaXD,α7
OLYMPUSOM-2SP,OM-4

0.2 最初に買うレンズ

スマホ感覚で撮るなら28mmか24mmだけど、おすすめできません。ズームは気が向いたら買えばいいでしょう。

0.3 フィルム

最近は涼しくなってきましたが、冷蔵庫保管。結露に注意。

0.4 電源

但し水銀電池に関しては現在販売していないため、工夫が必要(LR44ゴムパッキンをはめる等)

1.好み別

■古い、いわゆるクラシックスタイル
Nikon*F,F2
PENTAXSP,SL
OLYMPUSOM-1 ~ OM-4
デジタルカメラと併用したい
NikonAIニッコールが装着前提のカメラ(例:FM2,FE2,F4,F100,F6)
CANONEFマウントカメラ(例:EOS-1N,EOS-5QD,EOS-3)
MinoltaAマウントカメラ(例:α7,αSweetシリーズ)
■軽いほうがいい
NikonU,U2,EM
CANONEOS-5QD,EOS-Kissシリーズ
MinoltaαSweetシリーズ
OLYMPUSコンパクトカメラ(例:ミュー、XA)
■安い方がいい
NikonF-**,F-***等の二ケタ三ケタ機(例:F-90X,F-801,F-501)
MinoltaXG-S,X700,SRT101
PENTAXSP,MZ-5
OLYMPUSOM-1

2.メーカ

Nikon

レンズ、ボディ高め、無難オブ無難

ニッコール千夜一夜物語なるWebページは必見。

Canon
■Minolta
PENTAX
OLYMPUS

レンズ、ボディ共に若干安、小型かつシャッター音が小さく軽やか。

個人的にはOM-4は欲しい。

3.よくあると思う質問

■1眼レフ重くない?

構造上重くなります最近ミラーレスのような軽さはないでしょう。

レンズ交換が不要であれば、35mm単焦点コンパクトカメラおすすめです。

レンジファインダー型は極端に古いか価格が高いためおすすめできません。

メーカが少なくない?

メジャーどころの全てのフィルムカメラでも、実用においては事足ります

Leicaはどう?

経済的余裕があり、Leica萌えでなければ最初に買うべきではないでしょう。

私もLeica M5が欲しいですが、レンズとセットでは手が出ません。悲しい。

■中判は?

最初の1台としては、あんまりおすすめできません。重い。ただただ重い。

どうせ買うならHolga等のトイカメラでなく、マミヤのRZ67等がおすすめです。

ランニングコストを除けば、35mmカメラを買うのと値段はそこまで変わりません。

おすすめフィルムは?

KodakのGold400は使いやすいと思います。あとEktarも結構好き。モノクロならAcros使ってみるとよし。高感度はnatura

かわうそ商店さんのWebページを見て、色々なフィルムがある事を見ればいいと思います

以上初投稿増田でした。誰かのフィルムカメラ購入きっかけになれば幸いです。

2017-04-24

http://anond.hatelabo.jp/20170423213123

a-zと0-9とその他記号系は普通に文字入力

Space/Enter/Backspace/Delete文字入力

Ctrl/Shift/Alt/Winは各種ショートカット

F1ヘルプ

F2名前変更。エクセルセル編集とかも

F3検索

F4 はAltと押してウィンドウ閉じる。単体は個人的には独自ショートカットに割り当ててるから使ったこと無い。

F5 はリロード

F6IMEひらがな

F7 はIMEカタカナ

F8IMEで半角カタカナ

F9 はIMEで全角アルファベット

F10 はIMEで半角アルファベット

F11 は全画面

F12 はブラウザ開発者ツール出す

ESC はいろいろなキャンセルっぽいときに使える。一番使うのはタスクマネージャにCtrl-Shift-ESC。ChromeだとShift-ESC

PrtScr はスクショ。Altと押すことが多め。

ScrollLock はエクセルスクロールのしかた変えるとき

PauseBreak はコマンドプロンプトの流れていくのを一時的に止めるとき

Insert は上書きモードにしたいとき。あと、ShiftやCtrlと組み合わせてカットコピーになるソフトがある

PgUp/PgDn はネットみてるときエディタで一気にスクロールしたいとき

Home/End もブラウザ最初最後に飛んだり、エディタで行もしくは全体の最初最後に飛ぶ時

Tabフォーカス切り替え。あとプログラムとか書くならインデント

CapsLock はShiftと押して大文字固定にしたり、単体で押してアルファベット入力だけどIME使いたいときの切り替えとか

半角全角はIMEの切り替え

NumLock はテンキー付きなら常時ONでいいんだけど、テンキー無しのキーボードテンキー配列入力したいときに押す

無変換はひらがなカタカナ・半角カタカナに切り替えるときに。F6/F7/F8でもいい。個人的にはAHKで修飾キーにもしてる

変換は入力確定したのをIMEで再編集するとき。稀にスペースキーバグって変換できないときにスペース代わりに押したこともある

右側Ctrl/Alt/Shiftはめったに使わないけど、片手で操作したいときVirtualBox特殊キーに使う(安いキーボードだとたまにない)

アプリケーションキー?は右クリック代わり。webページで右クリック禁止されてるときにこっち押したりする

ひらがなカタカナローマ字は使ったこと無い。

Fnキーキーが足りないキーボードについててWi-Fiや画面表示や外部接続の切り替えとかPCキーボード)ごとにいろいろできる。

余り使わないのはあっても、全く使わないはほとんどなかった。

2016-03-16

F6は六つ子本体真逆性格設定?

「爽やかジャスティス松野おそ松」

おそ松は全然爽やかじゃないし、ジャスティスって感じも一切しない。

合コンオーディション回のトド松へのアレもゲスしか言いようがない。

 

肉食系肉、松野カラ松」

肉食系じゃない。逆ナン待ちしてるし、メンヘラデブスの言いなりだし。

一松にやりたい放題されても抗議が弱すぎ。肉食系でありたいんだろうな、という感じ。

 

「ビューティジーニアス松野チョロ松」

頭脳担当やれるほど勉強出来てないと思う。履歴書英検6級って書いてるし。

意識高い横文字を乱用した回で、言ってることが意味不明だった。

(花の精が横文字を使ったとき意味が通っていたので、チョロ松の横文字の使い方がやっぱりおかしい)

 

ミステリアスクール松野一松」

動じやすいというか打たれ弱いというか幼いというか、とにかくクールではないと思う。

突然の脱糞ミステリアスとするかは保留。

 

スイートプリンス松野十四松」

うるさいとか寒いとか、身体的な不快に激弱なことが判明した最新話で、全然プリンスではないよなと。

自殺しそうな女の子を助けようとか、ダヨーンに丸呑みされた兄を助けようとか、

献身的なところはあるけどスイートプリンスではなくもっと雄って感じがする。

 

「ビューティフェアリー松野トド松」

末っ子だけど兄たちに少しも可愛がられてないし、可愛がられるために外の世界を目指してる打算的な子だと思う。

自然大事にされるフェアリー存在では全然無くて、作為的

トド松が好きな人は、その作為的なところが好きなんだろうけど。

 

F6性質は六つ子のルックスを良くしただけのものではなくて、むしろ性質を逆にしたものだと思う。

「こうだったらモテたかもしれないのに」というifかなとか思う。

2016-01-31

キーボードカスタマイズやUSキーボード使用はやめた。

使い方を他のひとに教えたり、マニュアル作ったり、どこの席でも同じように仕事ができるようにしてあるので、個人的カスタマイズが逆に障害になるようになってしまった。

文字入力ときは、下のキーを押している。

F6 ひらがな

F7 カタカナ

F8 半角カタカナ

F9 全角英数

F10 半角英数

カタカナ/ひらがなキーを押して、かな入力になってテンパっている人は比較的よく見かける。

http://anond.hatelabo.jp/20160129170120

2012-03-23

[]ショートカット

ctrl+backspace

shift+tab

F6 ひらがな変換

F7 カタカナ変換

ゴミ箱へ Del

完全に削除 Shift+Del

2011-08-30

キーボードリマップ 2011_08_29_

AutoHotKey・KeySwap・Atok2005を使った

また、これは AutoHotkey.ahk (AutoHotkey設定ファイル) 自身でもある。

なお、Atokでのキーボードリマップは、以下の通り。

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::

IfWinExist Untitled - Notepad

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機能で実現

; カタカナ = F7  =>KeySwapで実現

; CapsLock = F10  =>KeySwapで実現

; 右Alt = Home  =>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

1::+1 ;1 を Shift+1 に(記号にする)

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

2009-01-20

窓使いの憂鬱HHKB

だいぶ前のことなので結構忘れてるけど。

買ったのはHHKBPro2。OSはWindowsVista

買ってまずしたこと

背面のスイッチをいじってキーを変える。

http://www.pfu.fujitsu.com/hhkeyboard/leaflet/hhkb_backview.html

左◇Fn
右◇Win
DeleteBackspace

左◇あたりにFnを割り振らないと右小指でしかFnを押せなくて面倒。

DeleteよりBackspaceの方が使用頻度が高いので変更。(Fn+DeleteでDeleteを押したことになります)

パソコン側の設定

ノートPC(日本語Windows)で英語配列HHKBを使う時はUSJPを入れるのが限りなく正解に近い。

http://www.trinityworks.co.jp/software/USJPPro/index.php

デスクトップPCではドライバ英語キーボードに設定すればいい。

ノートPCでUSJPを入れていて、USJPにはおまけ機能でいくらかのキーの組み合わせを設定できるので

デスクトップPCでも同じにするためにとりあえず窓使いの憂鬱を入れた。

Vista対応版

http://slashdot.jp/~kazu2/journal/411746

設定はこんな感じにした。

include "104.mayu"

key C-D = Delete
key C-H = BackSpace
key C-M = Enter
key C-Space = $ToggleIME

逆に普通日本語配列キーボードを似非HHKBにする設定。

どこかで見た設定をベースにいじったような気がしますがどこのがベースか忘れた。

自分は左◇キーをFnキーに設定して使っているので無変換キーをFnキーにするとちょうどよくなる。

include "104.mayu"

mod control += CapsLock
def subst *CapsLock = *LControl
key S-Pause = CapsLock

def key 無変換 = 0x7b
mod mod0 = 無変換
key *S-M0-K = *S-Home
key *S-M0-Comma = *S-End
key *S-M0-Apostrophe = Right 
key *S-M0-Semicolon = Left
key *S-M0-LeftSquareBracket = Up
key *S-M0-Solidus = Down
key *S-M0-L = *S-PageUp
key *S-M0-FullStop = *S-PageDown
key M0-R = F5
key C-D = Delete
key C-H = BackSpace
key C-M = Enter
key *S-M0-_1 = F1
key *S-M0-_2 = F2
key *S-M0-_3 = F3
key *S-M0-_4 = F4
key *S-M0-_5 = F5
key *S-M0-_6 = F6
key *S-M0-_7 = F7
key *S-M0-_8 = F8
key *S-M0-_9 = F9
key *S-M0-_0 = F10
key *S-M0-HyphenMinus = F11
key *S-M0-EqualsSign = F12

def key JisBackslash = 0x7d
key JisBackslash = Backslash
key S-JisBackslash = $VERTICAL_LINE

key C-Space = $ToggleIME

HHKBを繋いだ時は上の設定、普通キーボードを繋いだ時は下の設定に切り替えてやってます。

どうでもいいこと

2つあるUSBポートが結構便利。

無線マウスレシーバをここに挿してます。

USBメモリを挿したい時もここ。

重量が結構ある。

レッツノート(1.5kg)とこれを一緒に持ち歩くととても重いのと体積が増えるので最近は置きっぱなしなことが多い。

2008-12-17

SP

javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.sp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.sp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[0]+"|"+m.music_list[i].diff[1]+"|"+m.music_list[i].diff[2]+"],"+x.level[0]+","+x.score[0]+","+t[x.flag[0]]+","+x.level[1]+","+x.score[1]+","+t[x.flag[1]]+","+x.level[2]+","+x.score[2]+","+t[x.flag[2]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();

(たぶん)DP用

javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.dp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.dp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[3]+"|"+m.music_list[i].diff[4]+"|"+m.music_list[i].diff[5]+"],"+x.level[3]+","+x.score[3]+","+t[x.flag[3]]+","+x.level[4]+","+x.score[4]+","+t[x.flag[4]]+","+x.level[5]+","+x.score[5]+","+t[x.flag[5]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();

2008-07-07

データの信頼性

心拍計polar F6)を買ったので、早速使ってみた。

心拍数の上限下限でアラームが鳴るのって面白いね。

160-170bpm前後で巡航するようにしたら

疲れにくいし距離が長く走れてなかなかいいかも。

でも、ひとつだけ気になる点が。

およそ12km走った(1/3くらいは歩いてるけど)時点での

各計測ガジェット毎の消費カロリー値が

あれ、なんか倍近い差が出てるんですけど。

単純に考えると心拍計が算出した消費カロリー

一番信頼できそうな気がするんだけど

こうも計測データに開きがあると信頼性に疑問符が付くよね。

もっと高価な機材だとまた違う値が出そうだし…。

ガジェットで色んなデータが見れるのは良いんだけど

はたしてどこまで信頼していいのかさっぱりわかりません、

というお話

2008-06-11

http://anond.hatelabo.jp/20080611093824

性能/費用のバランス的に「Polar F6」あたりが妥当なところかな、と思います。

うん、ちょうど良いと思います。

ランニングもしないならば、この機種がベストじゃないかなー。

F4よりF5の方が良いね。

混信防止機能はいらないけれど、過去履歴が残るのは記録大好き増田にとっては大事。

OwnZoneはちょっと使うの難しい…。

自分ではなんか220-年齢と大して替わらない値が毎回設定されたよ。

これからも頑張ってねー。

http://anond.hatelabo.jp/20080610183705

次のレベルアップアイテムとして心拍計お勧めしよう!

ポラールWebページをざっと見てきました。

心拍トレーニング

漫然と走るよりレベルアップの効率が良さそうですね。

なかなか魅力的な装備品です。

性能/費用のバランス的に「Polar F6」あたりが妥当なところかな、と思います。

元増田さんのお勧め機種があったら、是非ご教授願いたいところ。

2008-03-03

Shift_JISにおける危険な文字まとめ

今時Shift_JISプログラミングするバカな奴はいないだろうけど折角まとめたので公開

2バイト目がアスキーコードど丸被りしているものを列挙する

@[\]^_`{|}~
405B5C5D5E5F607B7C7D7E
81 ????±×
82
83
84АЪЫЬЭЮЯклмн
85
86
87??????????????
88
89
8A
8B
8C
8D
8E
8F
90
91
92
93
94
95
96
97輿
98
99
9A
9B
9C忿
9D
9E
9F
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED????
EE??
EF
F0??????????????????????
F1??????????????????????
F2??????????????????????
F3??????????????????????
F4??????????????????????
F5??????????????????????
F6??????????????????????
F7??????????????????????
F8??????????????????????
F9??????????????????????
FA????
FB????????
FC
405B5C5D5E5F607B7C7D7E
@[\]^_`{|}~

縦軸が1バイト目で、範囲は81ー9F、E0ーFC

横軸が2バイト目で、アスキーコードを含むもの。

# ちなみに「??」って表示されてるのはまー外字部分だしそんなに気にしなくていいかと

これらの文字コードには気をつけること。

特に2バイト目が5C(\)ものは要注意。

"や'と引っ付くのでまともにプログラミングできない。


 print '予定表';
 print "無能";

上記コードPerlでもPHPでもエラーとなる。

特にPerlの場合は文字列中に展開できる構文が多いのもあり、色々なエラーを出せるので注意が必要だ。


 print qq[夕焼け小焼け]; # 「夕」の2バイト目でエラー
 print "警察24時!";     # @24という変数とみなされる

また、正規表現でも厄介な問題が起きまくるので注意すべし。


my $str = 'ダ';
print 'match' if $str =~ /_/; # マッチしちゃう

こういう様々な理由からShift_JISプログラミングをしてはいけないわけだ。

だからUTF8を使うべきだ。UTF8が無理でもせめてEUC-JPのどちらかでプログラミングすることをオススメする。

まーEUC-JPEUC-JPShift_JISと一部文字コードが重なっているので正直扱いにくいのでやっぱりUTF8を強く推奨する。

プログラ増田のあなぐら

2007-12-02

http://anond.hatelabo.jp/20071202001722

>今から志望を変え手間に合う自信も期待もないし、他に自分を生かせる職業を知らない。

そんなのすぐ見つかるヤツはなかなかいないって。

俺が余計なお世話を書くよ。以下。

>今のところ知識はないに等しい。文系でも未経験者でもOKと言うことで募集に乗っていっていると言ったところだ。

一部の専門分野を除いては、むしろ文系の方が向いていると個人的には思うよ。

ただ焦るこたない

色々実情を調べてみ

(ネットだけだと偏るから、社会人の知り合いに聞いたりとか)

ちなみに、IT業界最近敬遠され気味だけどこの人がいいこと書いてる(これオレじゃないよ)↓

http://d.hatena.ne.jp/habuakihiro/searchdiary?of=5&word=%2a%5b%bb%c5%bb%f6%5d

http://event.seasarfoundation.org/sc2007autumn/viewAttachment.do?_pageName_=Session&_fileName_=sc2007a-b5-oss.pdf

だから、文系だろうとなんだろうと、決してお先真っ暗ではない。

でも、どんな感じかってのは、あらかじめ知っといて損はない。

一言で言うと、コミュニケーション力が求められる仕事

入社して最初は多分プログラマをやらされると思う。これはベースとして必要なこと。(プログラム作ったことないままではSEになってはいけない)

そのままスーパープログラマになる可能性もなくはないが、たいていSEプロマネとかになると、客の要望を聞いてプログラムを作るための文書にできるカタチにしたり、プログラマ仕事をしやすい環境をつくるのが仕事になる。あと予算の管理とか。(やらない場合もあるけど)

新卒第二新卒なら、今能力を持ってる必要はないけどね。

と、そんな感じです。

だからこういう話をもっといろんな所から収集しておけば、後悔しなくて済むんじゃ?

2007-08-30

複数のエロ動画を同時に

めも。OperaでShift+F6またはAlt+F6を押すと複数のエロ動画を同時に見ることができる。エロ動画以外は予め最小化しておくと良い。かっこいいぞ俺のOpera

2007-07-19

/* Ten */
if (typeof(Ten) == 'undefined') {
    Ten = {};
}
Ten.NAME = 'Ten';
Ten.VERSION = 0.06;

/* Ten.Class */
Ten.Class = function(klass, prototype) {
    if (klass && klass.initialize) {
	var c = klass.initialize;
    } else if(klass && klass.base) {
        var c = function() { return klass.base[0].apply(this, arguments) };
    } else {
	var c = function() {};
    }
    c.prototype = prototype || {};
    c.prototype.constructor = c;
    Ten.Class.inherit(c, klass);
    if (klass && klass.base) {
        for (var i = 0;  i < klass.base.length; i++) {
	    var parent = klass.base[i];
            if (i == 0) {
                c.SUPER = parent;
                c.prototype.SUPER = parent.prototype;
            }
            Ten.Class.inherit(c, parent);
            Ten.Class.inherit(c.prototype, parent.prototype);
        }
    }
    return c;
}
Ten.Class.inherit = function(child,parent) {
    for (var prop in parent) {
        if (typeof(child[prop]) != 'undefined' || prop == 'initialize') continue;
        child[prop] = parent[prop];
    }
}

/*
// Basic Ten Classes
**/

/* Ten.JSONP */
Ten.JSONP = new Ten.Class({
    initialize: function(uri,obj,method) {
        if (Ten.JSONP.Callbacks.length) {
            setTimeout(function() {new Ten.JSONP(uri,obj,method)}, 500);
            return;
        }
        var del = uri.match(/\?/) ? '&' : '?';
        uri += del + 'callback=Ten.JSONP.callback';
        if (!uri.match(/timestamp=/)) {
            uri += '&' + encodeURI(new Date());
        }
        if (obj && method) Ten.JSONP.addCallback(obj,method);
        this.script = document.createElement('script');
        this.script.src = uri;
        this.script.type = 'text/javascript';
        document.getElementsByTagName('head')[0].appendChild(this.script);
    },
    addCallback: function(obj,method) {
        Ten.JSONP.Callbacks.push({object: obj, method: method});
    },
    callback: function(args) {
        // alert('callback called');
        var cbs = Ten.JSONP.Callbacks;
        for (var i = 0; i < cbs.length; i++) {
            var cb = cbs[i];
            cb.object[cb.method].call(cb.object, args);
        }
        Ten.JSONP.Callbacks = [];
    },
    MaxBytes: 8000,
    Callbacks: []
});

/* Ten.XHR */
Ten.XHR = new Ten.Class({
    initialize: function(uri,opts,obj,method) {
        if (!uri) return;
        this.request = Ten.XHR.getXMLHttpRequest();
        this.callback = {object: obj, method: method};
        var xhr = this;
        var prc = this.processReqChange;
        this.request.onreadystatechange = function() {
            prc.apply(xhr, arguments);
        }
        var method = opts.method || 'GET';
        this.request.open(method, uri, true);
        if (method == 'POST') {
            this.request.setRequestHeader('Content-Type',
                                          'application/x-www-form-urlencoded');
        }
        var data = opts.data ? Ten.XHR.makePostData(opts.data) : null;
        this.request.send(data);
    },
    getXMLHttpRequest: function() {
        var xhr;
        var tryThese = [
            function () { return new XMLHttpRequest(); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
        ];
        for (var i = 0; i < tryThese.length; i++) {
            var func = tryThese[i];
            try {
                xhr = func;
                return func();
            } catch (e) {
                //alert(e);
            }
        }
        return xhr;
    },
    makePostData: function(data) {
        var pairs = [];
        var regexp = /%20/g;
        for (var k in data) {
            var v = data[k].toString();
            var pair = encodeURIComponent(k).replace(regexp,'+') + '=' +
                encodeURIComponent(v).replace(regexp,'+');
            pairs.push(pair);
        }
        return pairs.join('&');
    }
},{
    processReqChange: function() {
        var req = this.request;
        if (req.readyState == 4) {
            if (req.status == 200) {
                var cb = this.callback;
                cb.object[cb.method].call(cb.object, req);
            } else {
                alert("There was a problem retrieving the XML data:\n" +
                      req.statusText);
            }
        }
    }
});

/* Ten.Observer */
Ten.Observer = new Ten.Class({
    initialize: function(element,event,obj,method) {
        var func = obj;
        if (typeof(method) == 'string') {
            func = obj[method];
        }
        this.element = element;
        this.event = event;
        this.listener = function(event) {
            return func.call(obj, new Ten.Event(event || window.event));
        }
        if (this.element.addEventListener) {
            if (this.event.match(/^on(.+)$/)) {
                this.event = RegExp.$1;
            }
            this.element.addEventListener(this.event, this.listener, false);
        } else if (this.element.attachEvent) {
            this.element.attachEvent(this.event, this.listener);
        }
    }
},{
    stop: function() {
        if (this.element.removeEventListener) {
            this.element.removeEventListener(this.event,this.listener,false);
        } else if (this.element.detachEvent) {
            this.element.detachEvent(this.event,this.listener);
        }
    }
});

/* Ten.Event */
Ten.Event = new Ten.Class({
    initialize: function(event) {
        this.event = event;
    },
    keyMap: {
        8:"backspace", 9:"tab", 13:"enter", 19:"pause", 27:"escape", 32:"space",
        33:"pageup", 34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up",
        39:"right", 40:"down", 44:"printscreen", 45:"insert", 46:"delete",
        112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7",
        119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
        144:"numlock", 145:"scrolllock"
    }
},{
    mousePosition: function() {
        if (!this.event.clientX) return;
        return Ten.Geometry.getMousePosition(this.event);
    },
    isKey: function(name) {
        var ecode = this.event.keyCode;
        if (!ecode) return;
        var ename = Ten.Event.keyMap[ecode];
        if (!ename) return;
        return (ename == name);
    },
    targetIsFormElements: function() {
        var target = this.event.target;
        if (!target) return;
        var T = (target.tagName || '').toUpperCase();
        return (T == 'INPUT' || T == 'SELECT' || T == 'OPTION' ||
                T == 'BUTTON' || T == 'TEXTAREA');
    },
    stop: function() {
        var e = this.event;
        if (e.stopPropagation) {
            e.stopPropagation();
            e.preventDefault();
        } else {
            e.cancelBubble = true;
            e.returnValue = false;
        }
    }
});

/* Ten.DOM */
Ten.DOM = new Ten.Class({
    getElementsByTagAndClassName: function(tagName, className, parent) {
        if (typeof(parent) == 'undefined') {
            parent = document;
        }
        var children = parent.getElementsByTagName(tagName);
        if (className) { 
            var elements = [];
            for (var i = 0; i < children.length; i++) {
                var child = children[i];
                var cls = child.className;
                if (!cls) {
                    continue;
                }
                var classNames = cls.split(' ');
                for (var j = 0; j < classNames.length; j++) {
                    if (classNames[j] == className) {
                        elements.push(child);
                        break;
                    }
                }
            }
            return elements;
        } else {
            return children;
        }
    },
    removeEmptyTextNodes: function(element) {
        var nodes = element.childNodes;
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                node.parentNode.removeChild(node);
            }
        }
    },
    nextElement: function(elem) {
        do {
            elem = elem.nextSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    prevElement: function(elem) {
        do {
            elem = elem.previousSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    scrapeText: function(node) {
        var rval = [];
        (function (node) {
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    onLoadFunctions: [],
    loaded: false,
    timer: null,
    addEventListener: function(event,func) {
        if (event != 'load') return;
        Ten.DOM.onLoadFunctions.push(func);
        Ten.DOM.checkLoaded();
    },
    checkLoaded: function() {
        var c = Ten.DOM;
        if (c.loaded) return true;
        if (document && document.getElementsByTagName &&
            document.getElementById && document.body) {
            if (c.timer) {
                clearInterval(c.timer);
                c.timer = null;
            }
            for (var i = 0; i < c.onLoadFunctions.length; i++) {
                    c.onLoadFunctions[i]();
            }
            c.onLoadFunctions = [];
            c.loaded = true;
        } else {
            c.timer = setInterval(c.checkLoaded, 13);
        }
    }
});

/* Ten.Style */
Ten.Style = new Ten.Class({
    applyStyle: function(elem, style) {
        for (prop in style) {
            elem.style[prop] = style[prop];
        }
    }
});

/* Ten.Geometry */
Ten.Geometry = new Ten.Class({
    initialize: function() {
        if (Ten.Geometry._initialized) return;
        var func = Ten.Geometry._functions;
        var de = document.documentElement;
        if (window.innerWidth) {
            func.getWindowWidth = function() { return window.innerWidth; }
            func.getWindowHeight = function() { return window.innerHeight; }
            func.getXScroll = function() { return window.pageXOffset; }
            func.getYScroll = function() { return window.pageYOffset; }
        } else if (de && de.clientWidth) {
            func.getWindowWidth = function() { return de.clientWidth; }
            func.getWindowHeight = function() { return de.clientHeight; }
            func.getXScroll = function() { return de.scrollLeft; }
            func.getYScroll = function() { return de.scrollTop; }
        } else if (document.body.clientWidth) {
            func.getWindowWidth = function() { return document.body.clientWidth; }
            func.getWindowHeight = function() { return document.body.clientHeight; }
            func.getXScroll = function() { return document.body.scrollLeft; }
            func.getYScroll = function() { return document.body.scrollTop; }
        }
        Ten.Geometry._initialized = true;
    },
    _initialized: false,
    _functions: {},
    getScroll: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            x: Ten.Geometry._functions.getXScroll(),
            y: Ten.Geometry._functions.getYScroll()
        };
    },
    getMousePosition: function(pos) {
        // pos should have clientX, clientY same as mouse event
        if ((navigator.userAgent.indexOf('Safari') > -1) &&
            (navigator.userAgent.indexOf('Version/') < 0)) {
            return {
                x: pos.clientX,
                y: pos.clientY
            };
        } else {
            var scroll = Ten.Geometry.getScroll();
            return {
                x: pos.clientX + scroll.x,
                y: pos.clientY + scroll.y
            };
        }
    },
    getElementPosition: function(e) {
        return {
            x: e.offsetLeft,
            y: e.offsetTop
        };
    },
    getWindowSize: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            w: Ten.Geometry._functions.getWindowWidth(),
            h: Ten.Geometry._functions.getWindowHeight()
        };
    }
});

/* Ten.Position */
Ten.Position = new Ten.Class({
    initialize: function(x,y) {
        this.x = x;
        this.y = y;
    },
    subtract: function(a,b) {
        return new Ten.Position(a.x - b.x, a.y - b.y);
    }
});

/*
// require Ten.js
**/

/* Ten.SubWindow */
Ten.SubWindow = new Ten.Class({
    initialize: function() {
        var c = this.constructor;
        if (c.singleton && c._cache) {
            return c._cache;
        }
        var div = document.createElement('div');
        Ten.Style.applyStyle(div, Ten.SubWindow._baseStyle);
        Ten.Style.applyStyle(div, c.style);
        this.window = div;
        this.addContainerAndCloseButton();
        document.body.appendChild(div);
        if (c.draggable) {
            this._draggable = new Ten.Draggable(div, this.handle);
        }
        if (c.singleton) c._cache = this;
        return this;
    },
    _baseStyle: {
        color: '#000',
        position: 'absolute',
        display: 'none',
        zIndex: 2,
        left: 0,
        top: 0,
        backgroundColor: '#fff',
        border: '1px solid #bbb'
    },
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '100px',
        height: '100px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        padding: '0 10px'
    },
    // closeButton: 'close.gif',
    closeButton: 'http://s.hatena.com/images/close.gif',
    closeButtonStyle: {
        position: 'absolute',
        top: '8px',
        right: '10px',
        cursor: 'pointer'
    },
    _baseScreenStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        display: 'none',
        zIndex: 1,
        overflow: 'hidden',
        width: '100%',
        height: '100%'
    },
    screenStyle: {},
    showScreen: true,
    singleton: true,
    draggable: true,
    _cache: null
},{
    screen: null,
    windowObserver: null,
    visible: false,
    addContainerAndCloseButton: function() {
        var win = this.window;
        var c = this.constructor;
        var div = document.createElement('div');
        win.appendChild(div);
        Ten.Style.applyStyle(div, c.containerStyle);
        this.container = div;
        if (c.handleStyle) {
            var handle = document.createElement('div');
            Ten.Style.applyStyle(handle, c.handleStyle);
            win.appendChild(handle);
            this.handle = handle;
        }
        if (c.closeButton) {
	    var btn = document.createElement('img');
            btn.src = c.closeButton;
            btn.alt = 'close';
            Ten.Style.applyStyle(btn, c.closeButtonStyle);
            win.appendChild(btn);
            new Ten.Observer(btn, 'onclick', this, 'hide');
            this.closeButton = btn;
        }
        if (c.showScreen) {
            var screen = document.createElement('div');
            Ten.Style.applyStyle(screen, Ten.SubWindow._baseScreenStyle);
            Ten.Style.applyStyle(screen, c.screenStyle);
            document.body.appendChild(screen);
            this.screen = screen;
            new Ten.Observer(screen, 'onclick', this, 'hide');
        }
    },
    show: function(pos) {
        pos = (pos.x && pos.y) ? pos : {x:0, y:0};
        with (this.window.style) {
            display = 'block';
            left = pos.x + 'px';
            top = pos.y + 'px';
        }
        if (this.screen) {
            with (this.screen.style) {
                display = 'block';
                left = Ten.Geometry.getScroll().x + 'px';
                top = Ten.Geometry.getScroll().y + 'px';
            }
        }
        this.windowObserver = new Ten.Observer(document.body, 'onkeypress', this, 'handleEscape');
        this.visible = true;
    },
    handleEscape: function(e) {
        if (!e.isKey('escape')) return;
        this.hide();
    },
    hide: function() {
        if (this._draggable) this._draggable.endDrag();
        this.window.style.display = 'none';
        if (this.screen) this.screen.style.display = 'none';
        if (this.windowObserver) this.windowObserver.stop();
        this.visible = false;
    }
});

/* Ten.Draggable */
Ten.Draggable = new Ten.Class({
    initialize: function(element,handle) {
        this.element = element;
        this.handle = handle || element;
        this.startObserver = new Ten.Observer(this.handle, 'onmousedown', this, 'startDrag');
        this.handlers = [];
    }
},{
    startDrag: function(e) {
        if (e.targetIsFormElements()) return;
        this.delta = Ten.Position.subtract(
            e.mousePosition(),
            Ten.Geometry.getElementPosition(this.element)
        );
        this.handlers = [
            new Ten.Observer(document, 'onmousemove', this, 'drag'),
            new Ten.Observer(document, 'onmouseup', this, 'endDrag'),
            new Ten.Observer(this.element, 'onlosecapture', this, 'endDrag')
        ];
        e.stop();
    },
    drag: function(e) {
        var pos = Ten.Position.subtract(e.mousePosition(), this.delta);
        Ten.Style.applyStyle(this.element, {
            left: pos.x + 'px',
            top: pos.y + 'px'
        });
        e.stop();
    },
    endDrag: function(e) {
        for (var i = 0; i < this.handlers.length; i++) {
            this.handlers[i].stop();
        }
        if(e) e.stop();
    }
});

/* Hatena */
if (typeof(Hatena) == 'undefined') {
    Hatena = {};
}

/* Hatena.User */
Hatena.User = new Ten.Class({
    initialize: function(name) {
        this.name = name;
    },
    getProfileIcon: function(name) {
        if (!name) name = 'user';
        var pre = name.match(/^[\w-]{2}/)[0];
        var img = document.createElement('img');
        img.src = 'http://www.hatena.ne.jp/users/' + pre + '/' + name + '/profile_s.gif';
        img.alt = name;
        img.setAttribute('class', 'profile-icon');
        img.setAttribute('width','16px');
        img.setAttribute('height','16px');
        with (img.style) {
            margin = '0 3px';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
}, {
    profileIcon: function() {
        return Hatena.User.getProfileIcon(this.name);
    }
});

/* Hatena.Star */
if (typeof(Hatena.Star) == 'undefined') {
    Hatena.Star = {};
}

/*
// Hatena.Star.* classes //
**/
if (window.location && window.location.host.match(/hatena\.com/)) {
    Hatena.Star.BaseURL = 'http://s.hatena.com/';
} else {
    Hatena.Star.BaseURL = 'http://s.hatena.ne.jp/';
}
Hatena.Star.Token = null;

/* Hatena.Star.User */
Hatena.Star.User = new Ten.Class({
    base: [Hatena.User],
    initialize: function(name) {
        if (Hatena.Star.User._cache[name]) {
            return Hatena.Star.User._cache[name];
        } else {
            this.name = name;
            Hatena.Star.User._cache[name] = this;
            return this;
        }
    },
    _cache: {}
},{
    userPage: function() {
        return Hatena.Star.BaseURL + this.name + '/';
    }
});

/* Hatena.Star.Entry */
Hatena.Star.Entry = new Ten.Class({
    initialize: function(e) {
        this.entry = e;
        this.uri = e.uri;
        this.title = e.title;
        this.star_container = e.star_container;
        this.comment_container = e.comment_container;
        this.stars = [];
        this.comments = [];
    },
    maxStarCount: 11
},{
    flushStars: function() {
        this.stars = [];
        this.star_container.innerHTML = '';
    },
    bindStarEntry: function(se) {
        this.starEntry = se;
        for (var i = 0; i < se.stars.length; i++) {
            if (typeof(se.stars[i]) == 'number') {
                this.stars.push(new Hatena.Star.InnerCount(se.stars[i],this));
            } else {
                this.stars.push(new Hatena.Star.Star(se.stars[i]));
            }
        }
        if (se.comments && !this.comments.length) {
            for (var i = 0; i < se.comments.length; i++) {
                this.comments.push(new Hatena.Star.Comment(se.comments[i]));
            }
        }
        this.can_comment = se.can_comment;
    },
    setCanComment: function(v) {
        this.can_comment = v;
    },
    showButtons: function() {
        this.addAddButton();
        this.addCommentButton();
    },
    addAddButton: function() {
        if (this.star_container) {
            this.addButton = new Hatena.Star.AddButton(this);
            this.star_container.appendChild(this.addButton);
        }
    },
    addCommentButton: function() {
        if (this.comment_container) {
            this.commentButton = new Hatena.Star.CommentButton(this);
            this.comment_container.appendChild(this.commentButton.img);
        }
    },
    showStars: function() {
        var klass = this.constructor;
        // if (this.stars.length > klass.maxStarCount) {
        //     var ic = new Hatena.Star.InnerCount(this.stars.slice(1,this.stars.length));
        //     this.star_container.appendChild(this.stars[0]);
        //     this.star_container.appendChild(ic);
        //     this.star_container.appendChild(this.stars[this.stars.length - 1]);
        // } else {
        for (var i = 0; i < this.stars.length; i++) {
            this.star_container.appendChild(this.stars[i]);
        }
    },
    showCommentButton: function() {
        if (this.can_comment) {
            this.commentButton.show();
            if (this.comments.length) this.commentButton.activate();
        } else {
            // this.commentButton.hide();
        }
    },
    addStar: function(star) {
        this.stars.push(star);
        this.star_container.appendChild(star);
    },
    addComment: function(com) {
        if (!this.comments) this.comments = [];
        if (this.comments.length == 0) {
            this.commentButton.activate();
        }
        this.comments.push(com);
    },
    showCommentCount: function() {
        this.comment_container.innerHTML += this.comments.length;
    }
});

/* Hatena.Star.Button */
Hatena.Star.Button = new Ten.Class({
    createButton: function(args) {
        var img = document.createElement('img');
        img.src = args.src;
        img.alt = img.title = args.alt;
        with (img.style) {
	    cursor = 'pointer';
	    margin = '0 3px';
            padding = '0';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
});

/* Hatena.Star.AddButton */
Hatena.Star.AddButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.AddButton.ImgSrc,
            alt: 'Add Star'
        });
        this.observer = new Ten.Observer(img,'onclick',this,'addStar');
        this.img = img;
        return img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/add.gif'
},{
    addStar: function(e) {
        this.lastPosition = e.mousePosition();
        var uri = Hatena.Star.BaseURL + 'star.add.json?uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        if (Hatena.Star.Token) {
            uri += '&token=' + Hatena.Star.Token;
        }
        new Ten.JSONP(uri, this, 'receiveResult');
    },
    receiveResult: function(args) {
        var name = args ? args.name : null;
        if (name) {
            this.entry.addStar(new Hatena.Star.Star({name: name}));
            //alert('Succeeded in Adding Star ' + args);
        } else if (args.errors) {
            var pos = this.lastPosition;
            pos.x -= 10;
            pos.y += 25;
            var scroll = Ten.Geometry.getScroll();
            var scr = new Hatena.Star.AlertScreen();
            var alert = args.errors[0];
            scr.showAlert(alert, pos);
        }
    }
});

/* Hatena.Star.CommentButton */
Hatena.Star.CommentButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.CommentButton.ImgSrc,
            alt: 'Comments'
        });
        img.style.display = 'none';
        this.observer = new Ten.Observer(img,'onclick',this,'showComments');
        this.img = img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/comment.gif',
    ImgSrcActive: Hatena.Star.BaseURL + 'images/comment_active.gif'
},{
    showComments: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.CommentScreen();
        this.screen.bindEntry(this.entry);
        var pos = e.mousePosition();
        pos.y += 25;
        this.screen.showComments(this.entry, pos);
    },
    hide: function() {
        this.img.style.display = 'none';
    },
    show: function() {
        this.img.style.display = 'inline';
    },
    activate: function() {
        this.show();
        this.img.src = Hatena.Star.CommentButton.ImgSrcActive;
    }
});

/* Hatena.Star.Star */
Hatena.Star.Star = new Ten.Class({
    initialize: function(args) {
        if (args.img) {
            this.img = args.img;
            this.name = this.img.getAttribute('alt');
        } else {
            this.name = args.name;
            var img = document.createElement('img');
            img.src = Hatena.Star.Star.ImgSrc;
            img.alt = this.name;
            with (img.style) {
                padding = '0';
                border = 'none';
            }
            this.img = img;
        }
	new Ten.Observer(this.img,'onmouseover',this,'showName');
	new Ten.Observer(this.img,'onmouseout',this,'hideName');
	if (this.name) {
            this.user = new Hatena.Star.User(this.name);
            this.img.style.cursor = 'pointer';
            new Ten.Observer(this.img,'onclick',this,'goToUserPage');
        }
        if (args.count && args.count > 1) {
            var c = document.createElement('span');
            c.setAttribute('class', 'hatena-star-inner-count');
            Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
            c.innerHTML = args.count;
            var s = document.createElement('span');
            s.appendChild(img);
            s.appendChild(c);
            return s;
        } else {
            return this.img;
        }
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/star.gif'
},{
    showName: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.NameScreen();
        var pos = e.mousePosition();
        pos.x += 10;
        pos.y += 25;
        this.screen.showName(this.name, pos);
    },
    hideName: function() {
        if (!this.screen) return;
        this.screen.hide();
    },
    goToUserPage: function() {
        window.location = this.user.userPage();
    }
});

/* Hatena.Star.InnerCount */
Hatena.Star.InnerCount = new Ten.Class({
    initialize: function(count, e) {
        this.count = count;
        this.entry = e;
        var c = document.createElement('span');
        c.setAttribute('class', 'hatena-star-inner-count');
        Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
        c.style.cursor = 'pointer';
        c.innerHTML = count;
        new Ten.Observer(c,'onclick',this,'showInnerStars');
        this.container = c;
        return c;
    },
    style: {
        color: '#f4b128',
        fontWeight: 'bold',
        fontSize: '80%',
        fontFamily: '"arial", sans-serif',
        margin: '0 2px'
    }
},{
    showInnerStars: function() {
        var url = Hatena.Star.BaseURL + 'entry.json?uri=' +
        encodeURIComponent(this.entry.uri);
        new Ten.JSONP(url, this, 'receiveStarEntry');
    },
    receiveStarEntry: function(res) {
        var se = res.entries[0];
        var e = this.entry;
        if (encodeURIComponent(se.uri) != encodeURIComponent(e.uri)) return;
        e.flushStars();
        e.bindStarEntry(se);
        e.addAddButton();
        e.showStars();
    }
});

/* Hatena.Star.Comment */
Hatena.Star.Comment = new Ten.Class({
    initialize: function(args) {
        this.name = args.name;
        this.body = args.body;
    }
},{
    asElement: function() {
        var div = document.createElement('div');
        with (div.style) {
            margin = '0px 0';
            padding = '5px 0';
            borderBottom = '1px solid #ddd';
        }
        var ico = Hatena.User.getProfileIcon(this.name);
        div.appendChild(ico);
        var span = document.createElement('span');
        with(span.style) {
            fontSize = '90%';
        }
        span.innerHTML = this.body;
        div.appendChild(span);
        return div;
    }
});

/* Hatena.Star.NameScreen */
Hatena.Star.NameScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center'
    },
    containerStyle: {
        margin: 0,
        padding: 0
    },
    handleStyle: null,
    showScreen: false,
    closeButton: null,
    draggable: false
},{
    showName: function(name, pos) {
        this.container.innerHTML = '';
        this.container.appendChild(Hatena.User.getProfileIcon(name));
        this.container.appendChild(document.createTextNode(name));
        this.show(pos);
    }
});

/* Hatena.Star.AlertScreen */
Hatena.Star.AlertScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '240px',
        height: '120px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    }
},{
    showAlert: function(msg, pos) {
        this.container.innerHTML = msg;
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    }
});

/* Hatena.Star.CommentScreen */
Hatena.Star.CommentScreen = new Ten.Class({
    base: [Ten.SubWindow],
    initialize: function() {
        var self = this.constructor.SUPER.call(this);
        if (!self.commentsContainer) self.addCommentsContainer();
        return self;
    },
    style: {
        width: '280px',
        height: '280px',
        overflowY: 'auto',
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        textAlign: 'left',
        padding: '0 10px'
    },
    getLoadImage: function() {
        var img = document.createElement('img');
        img.src = Hatena.Star.BaseURL + 'images/load.gif';
        img.setAttribute('alt', 'Loading');
        with (img.style) {
            verticalAlign = 'middle';
            margin = '0 2px';
        }
        return img;
    }
},{
    addCommentsContainer: function() {
        var div = document.createElement('div');
        with (div.style) {
            marginTop = '-3px';
        }
        this.container.appendChild(div);
        this.commentsContainer = div;
    },
    showComments: function(e, pos) {
        var comments = e.comments;
        if (!comments) comments = [];
        this.commentsContainer.innerHTML = '';
        for (var i=0; i<comments.length; i++) {
            this.commentsContainer.appendChild(comments[i].asElement());
        }
        if (e.starEntry && !e.can_comment) {
            this.hideCommentForm();
        } else {
            this.addCommentForm();
        }
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    },
    bindEntry: function(e) {
        this.entry = e;
    },
    sendComment: function(e) {
        if (!e.isKey('enter')) return;
        var body = this.commentInput.value;
        if (!body) return;
        this.commentInput.disabled = 'true';
        this.showLoadImage();
        var url = Hatena.Star.BaseURL + 'comment.add.json?body=' + encodeURIComponent(body) +
            '&uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        new Ten.JSONP(url, this, 'receiveResult');
    },
    receiveResult: function(args) {
        if (!args.name || !args.body) return;
        this.commentInput.value = ''; 
        this.commentInput.disabled = '';
        this.hideLoadImage();
        var com = new Hatena.Star.Comment(args);
        this.entry.addComment(com);
        this.commentsContainer.appendChild(com.asElement());
    },
    showLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'inline';
    },
    hideLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'none';
    },
    hideCommentForm: function() {
        if (!this.commentForm) return;
        this.commentForm.style.display = 'none';
    },
    addCommentForm: function() {
        if (this.commentForm) {
            this.commentForm.style.display = 'block';
            return;
        }
        var form = document.createElement('div');
        this.container.appendChild(form);
        this.commentForm = form;
        with (form.style) {
            margin = '0px 0';
            padding = '5px 0';
            // borderTop = '1px solid #ddd';
        }
        //if (Hatena.Visitor) {
        //    form.appendChild(Hatena.Visitor.profileIcon());
        //} else {
        //    form.appendChild(Hatena.User.getProfileIcon());
        //}
        var input = document.createElement('input');
        input.type = 'text';
        with (input.style) {
            width = '215px';
	    border = '1px solid #bbb';
            padding = '3px';
        }
        form.appendChild(input);
        this.commentInput = input;
        var img = this.constructor.getLoadImage();
        this.loadImage = img;
        this.hideLoadImage();
        form.appendChild(img);
        new Ten.Observer(input,'onkeypress',this,'sendComment');
    }
});

/* Hatena.Star.EntryLoader */
Hatena.Star.EntryLoader = new Ten.Class({
    initialize: function() {
        var entries = Hatena.Star.EntryLoader.loadEntries();
        this.entries = [];
        for (var i = 0; i < entries.length; i++) {
            var e = new Hatena.Star.Entry(entries[i]);
            e.showButtons();
            this.entries.push(e);
        }
        this.getStarEntries();
    },
    createStarContainer: function() {
        var sc = document.createElement('span');
        sc.setAttribute('class', 'hatena-star-star-container');
        sc.style.marginLeft = '1px';
        return sc;
    },
    createCommentContainer: function() {
        var cc = document.createElement('span');
        cc.setAttribute('class', 'hatena-star-comment-container');
        cc.style.marginLeft = '1px';
        return cc;
    },
    scrapeTitle: function(node) {
        var rval = [];
        (function (node) {
            if (node.tagName == 'SPAN' &&
                (node.className == 'sanchor' ||
                 node.className == 'timestamp')) {
                     return;
            } else if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                return;
            }
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    headerTagAndClassName: ['h3',null],
    getHeaders: function() {
        var t = Hatena.Star.EntryLoader.headerTagAndClassName;
        return Ten.DOM.getElementsByTagAndClassName(t[0],t[1],document);
    },
    loadEntries: function() {
        var entries = [];
        //var headers = document.getElementsByTagName('h3');
        var c = Hatena.Star.EntryLoader;
        var headers = c.getHeaders();
        for (var i = 0; i < headers.length; i++) {
            var header = headers[i];
            var a = header.getElementsByTagName('a')[0];
            if (!a) continue;
            var uri = a.href;
            var title = '';
            // Ten.DOM.removeEmptyTextNodes(header);
            var cns = header.childNodes;
            title = c.scrapeTitle(header);
            var cc = c.createCommentContainer();
            header.appendChild(cc);
            var sc = c.createStarContainer();
            header.appendChild(sc);
            entries.push({
                uri: uri,
                title: title,
                star_container: sc,
                comment_container: cc
            });
        }
        return entries;
    }
},{
    getStarEntries: function() {
        var url = Hatena.Star.BaseURL + 'entries.json?';
        for (var i = 0; i < this.entries.length; i++) {
            if (url.length > Ten.JSONP.MaxBytes) {
                new Ten.JSONP(url, this, 'receiveStarEntries');
                url = Hatena.Star.BaseURL + 'entries.json?';
            }
            url += 'uri=' + encodeURIComponent(this.entries[i].uri) + '&';
        }
        new Ten.JSONP(url, this, 'receiveStarEntries');
    },
    receiveStarEntries: function(res) {
        var entries = res.entries;
        if (!entries) entries = [];
        for (var i = 0; i < this.entries.length; i++) {
            var e = this.entries[i];
            for (var j = 0; j < entries.length; j++) {
                var se = entries[j];
                if (!se.uri) continue;
                if (encodeURIComponent(se.uri) == encodeURIComponent(e.uri)) {
                    e.bindStarEntry(se);
                    entries.splice(j,1);
                    break;
                }
            }
            if (typeof(e.can_comment) == 'undefined') {
                e.setCanComment(res.can_comment);
            }
            e.showStars();
            e.showCommentButton();
        }
    }
});

/* Hatena.Star.WindowObserver */
Hatena.Star.WindowObserver = new Ten.Class({
    initialize: funct


  
  

2007-06-17

MS-IMEの機能かな

スペースキーで変換するときにさ、Ctrl-tで半角英数字(F10)に、Ctrl-pで全角英数字(F9)になる。

みんな知ってた?Ctrl-oが半角カタカナ変換(F8)。

F7の全角カタカナ割り当てとか、色々まだわからないのだけど、知ってる人がいたら教えて欲しいです!!F6ってひらがな変換なのかな?F2-4とか使った事もないわ。

それと、長い行を打ち込んで一気に変換するときに、Ctrl-dで前の文節に移動、Ctrl-sで後ろの文節に移動。

はじめて気づいたわ。文節の長さを変更するのも矢印キーに手を伸ばすことなく出来るのかな?

これって自分がEmacsキーバインドを変更する奴をWindowsに入れたからじゃないよね?今はそのソフト切ってあるし。

みんなの反応ください!!

追記

萌え理論さんのとこで、詳しいのを見つけた、勉強します!!

http://www.hyperteika.com/ime/ms-ime/msxp_key.html

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん