はてなキーワード: ハッシュとは
JavaScript って生き物っぽいって思ったのがきっかけだった。
なんか菌?に遺伝子いれてたんぱく質を生産させるやつ? Function は菌の細胞膜で prototype は遺伝子で、だから prototype に全然関係ない違う生物の遺伝子を生きてる菌に入れちゃったり。そうすると全然ちがうたんぱく質が生産されたり。prototype にべべーっとコピーして追加するのなんてまさしくそれっぽい。
だってプロトタイプベースって、生き物しかいない世界じゃない?基本的に。インスタンスってのは生き物じゃない設計図があってそれにしたがって出来た生き物がインスタンスってイメージあんだけど。プロトタイプベースの世界にはそんな設計図も生き物じゃないものもないよね?なのにわざわざインスタンスっていうのに何か違和感?ご都合主義的なもの感じる。クラスは型で、インスタンスを実体だとかなんとかって氾濫してるせいかな。多分この辺の用語が JavaScript をわかりにくくさせてる気がする。
僕の感覚では、オブジェクトってのは生き物で、クラスベースってのは神が設計図に基づいて生き物を生産してる世界で、インスタンスベースってのは生き物が生き物を複製してる世界のイメージだ。多分、原始の生物はインスタンスベースみたいな世界で、海の中にうようよしてたんだろうな、とか。
オブジェクトじゃないものは、生き物じゃない死んでるたんぱく質や RNA の破片みたいな。それだけじゃなにもできないみたいな。それだけじゃ命がないから、生き物の殻に詰めるってのが JavaScript のコンストラクタのイメージ。
Perl の bless したらこれはもう命入ったよ生き物だからねっあとは勝手にしてねってのも、Python の名前空間さえあればなんとかなるよねってのも、JavaScript のハッシュさえあれば世界作れるよねってのも、みんなどこか似ている。ちゃんと OOP を理解できてるかは別としてもこの三つはわりとすぐやりたいことができた。昔 Java の本を買ってきて挫折したのにくらべたら、なぜかずっとわかりやすかった。(bless という命名はすごく洒落てる)
全然関係ないけど、Django の日本語リファレンスは何か萌える。ラクダ本の日本語訳はむかつくのに。
プログラミングを始めたばっかりの時は、なんだか難しい用語の意味を理解しないと OOP がわからないと思ってた。それは僕らの住んでる世界とは全然関係のないプログラミングの技術ってやつだと思ってた。
でも多分違う。
世界が動く仕組みさえあれば、あとは作り手に世界の成り立ちを抽象化する表現力さえあれば、世界は勝手に表現されていくし、動き出してく。たまたま僕らの世界はオブジェクトなもので溢れていて、プログラミング言語が進化すれば世界に似るのも当然だろう。いや逆か。プログラミング言語が世界に似てきたから、オブジェクトなんていう世界に似た概念が出てきたってことか。なんだか難しい用語ってのは、その表現の一部分の技術に名前をつけてるだけなんだな、と。例えば何とか歌唱法や何々画法とか何とかレトリックとかパースの取り方みたいなのと同じ。それは表現を理解する手助けにはなるけど、その意味を知る事がイコール表現力をあげることにはならないんだよね。これに気づくのに遠回りしすぎたなあ。
(知識を得るだけで、100% 還元される人もいるかもしれないけど、そんなのは一部の天才だけだと思う。殆どの凡人はそうはいかない。とはいえ、元の錬度が低ければ、コツをいくつか教わるだけでいきなりうまくいくこともある。ただ、それをまるまんま実力だと思うのは、どんな分野でも危険だ。恋愛テクニックやらを必死に読んでる連中が男女間の深い人間関係を上手くやれてるとはちょっと想像できない!)
プログラミングで表現力を上げるにはどうすればいいんだろう。きっと他と同じだろうな。いい表現を沢山味わって、世界をよく観察して、どう成り立ってるかどう動いてるか、私達はそれをどう認知しているのか、考えることかもしれない。漫画家を志す人が美術解剖学を学んだり、優れた画家が絵筆で世界を生々しく描写するように、優れたプログラマは世界のなりたちをプログラムに写し取ったり、世界の仕組みを作る事が出来るのだと思う。
リマインドしようにも、これを書いた人(=自分)の学力だと読めない本だったから無理。無理ゲーだった。
第一章
1
意味論的に透明なシステムと結びついた心の概念および計算機モデルを意味する。
この主義の限界を
2
チューリングの形式化が持っている特徴
(1)物理的組織によってではなく、記号操作の形式的特性によるメカニズムの集合全体を包括
(2)そのメカニズムがいかにすれば十分に明確化された問題すべてに取り組むことができるか示している
(3)万能チューリングマシンを定義する方法を示している
⇒ 素材は重要ではなく、形式的特性が能力を原理的に保証している
フォン・ノイマンがコンピュータを設計し、1960s、ジョン・マッカーシーがLISP(プログラム言語)を開発。
⇒ 研究開発が可能に
A・ニューウェルとH・サイモンが物理記号システムという概念を提出
⇒理論的に自覚化・明確化される
3
・物理記号システム
①適切に操作可能なトークンに対して任意に意味を割り当てることができるシステムであり、
②正確にプログラミングすればこの割り当てられた意味論的内容と細かい点においても一致した仕方で行動すると信じられるようなシステム
by 1976 ニューウェル & サイモン
・強い物理記号システムの仮説
SPSS strong-physical-symbol-system
「標準的な記号アトムのフォン・ノイマン型の操作を行っている仮想機械は、一般的な知的行為を実現するための直接的かつ十分な手段を持っている」
①仮想機械
そのプログラムに我々が命令を与える機械を模倣させるような「機械」
・記号を割り当てる
・変数を束縛する
・記号列の複写、読みとり、修正
等々
③標準的な記号アトム
④一般的な知的行為を実現するための直接的で必要かつ十分な手段
そうした機械は、それを支えている特定のアーキテクチュア(その基盤になっている他の現実的もしくは仮想的機械から)まったく独立に真に知的でありうるのであり、逆に言えば他のアーキテクチュアや機械をシュミレートすることなく真に知的でありうる
4
このような主張(標準的なLISPのアトムのごちゃごちゃした操作が、知能や思考の本質を構成しうるという見解)が、ニューウェルとサイモンのものだとできる動かぬ証拠は、彼ら自身の実践。
彼らの仕事の特徴(例:BACON)
・規則あるいはヒューリスティックス(発見的手法)の直列的(経験則を用いたも多少は運が左右する⇔体系的)適用に依存している
・そうしたヒューリステイックスの大部分が、かなり高いレベルで意識的に内省可能
・選ばれた課題領域を扱う
BACON:一連のデータから科学的法則を帰納する(ケプラーの第三法則、オームの法則)
・BACONが取り組んだデータをフォーマット化下のは、人間の労苦
・BACONは十分に構造化された課題にしか取り組めない。
ケプラーの第三法則は見つけられても、ペトリシャーレのカビとバクテリアの関係からペニシリンを発見する事はできない
・BACONが展開する知識とヒューリスティックスは、人間のプロトコルや実験記録に大いに頼り、われわれが自分自身の思考について内省する思考のレベルからかなり直接的にコード化されたもの
⇒この種の思考は原初的で瞬間的なプロセスの上に後から被せられたもの。理解するということを具体的な例で説明する事には役に立たないであろう
サイモン等は、人間の思考のすべてがただ一つの種類の計算アーキテクチュアに依存すると信じている。
しかし、筆者は違う考えを持つ。サイモンとラングレイの仕事では、洞察のひらめきといったタイプの認識を表現できない。
心は、多くの仮想的アーキテクチュアからなる複雑なシステムであると考える
知的課題や、感覚運動的な課題のような、なめらかに無意識的に行われるものは無視されている
5
古典的システムは記号アトムの使用に頼り、コネクショニズムはこれを避ける。
古典主義者:意味論的に透明なシステムの構築に対して、方法論的にコミットしている人々
STS semanttically transparent system
「システムの振る舞いについての記号的な(概念レベルでの)意味論的記述と、システムの形式的な計算活動の内的に表現された対象についての投影可能な意味論的解釈との間にきちんとした写像関係の記述が可能な場合にのみ、そのシステムは意味論的に透明であるといえる」
きわめて大ざっぱにいえば、あるシステムかSTSと見なされるのは、そのアルゴリズムの記述(レベル2)における計算の対象が、概念的レベルの用語で表現されたその課題の分析の記述(レベル1)と同型である場合である。
(レベル1:計算理論:(高い抽象レベルにおいて)どのような関数が計算されるかについての考え
レベル2:表現とアルゴリズム:それを計算する(具体的な)方法
レベル3:インプリメンテーション:現実の機械において計算がいかにして肉体あるいはシリコンなどで実現されるか)
(1)古典的理論は――コネクショニズムはそうではないが――統語論と意味論を組み合わせた記号システムを仮定している
(2)もし何らかの種類の構造化された表現が利用可能であれば、それらの表現についての計算操作を、その構造に鋭敏に反応するかのような形で規定できる。
もしそのような構造が存在していなければ、(すなわち、どんな記号表現も存在していなければ、)計算操作を規定することはできない
◎要するに、古典的システムは、統語論的に構造化された記号的表現を仮定し、そうした表現の構造によって、それに適用される計算操作を規定するものである
第二章
1
ドレイファス:古典的認知主義の問題は、人間の常識的な知識を表象として再現し表現しようとする形式主義の妥当性
サール:形式的なものと志向的なものとの間に、あるいは統語論と意味論との間にギャップが認められる
この二つの種類の懸念について検討する。
2
「あなたの持っているのはそんなにいいボールじゃないわ。それを私にちょうだい。そしたら私、このキャンディーをあなたにあげるわ」
この言葉を理解するために、ミンスキーちとパペートは膨大な概念のリストをあげる。
ウィノブラードのSHRDLUでは不十分。
・フレームは、常識がうまく対処している偶発的出来事のすべてをカバーしているとは思えない(バースデーケーキに立つ黒いローソクに、フレームは対処できるか?)
・フレームからフレームへの移行を促す規則(メタフレーム?)をいつ適用すべきか、システムはどうやって知るのだろう?
ドレイファス:互いに関連しあった特徴や可能性のすべてを、文脈に依存しない事実や規則によって形式的に把握するという課題には際限がないのではないか
3
・ドレイファスの二つの主張
(1)身体問題
「このシャンプーが目に入らないようにご注意ください。もし入った場合は、ぬるま湯でよく洗ってください」
コンピュータは、身体、欲求、感情、共通言語や社会習慣も持たない。だからコンピュータは、この文章が何を洗うように言っているのか理解できない
(2)コード化
人間は自分たちを取り巻く状況がどんなものかを絶えず感じ取ることができる。
このノウハウは、何らかの知識表現言語によって、一種の知識として表現できるものなのだろうか?
AIプログラム(=言語)が知識を表現する仕方が、現実の課題に対して根本的に不適合だと懸念する。
4
「強いAI仮説」を、サールは批判する
強いAI仮説:適切にプログラムされたコンピュータは、文字通り認知的な状態をとり、その際プログラムは人間の認知を説明するものとなる
Schank and Abelson 1977の、「ストーリーを理解するという志向的活動をシミュレートしているかに見える特別なプログラム」に対して、「中国語の部屋」を使うことで批判する。
サール:形式的に区別される要素に対する計算操作を行っているだけでは、どんなコンピュータも〈理解する〉ことはできない。したがって、そのような計算操作を規定するプログラムが、心の固有の性質について何かを示すこともあり得ない。
具体例:英語話者が英語を理解することと、中国語の部屋の操作者が中国語を「理解すること」の比較
「人間は何も理解していなくても形式的な原理に従うことができる」
以下、サールの誤りについて論じる
5
サールに対する仮想反論「脳シュミレーター説」
脳シュミレータ説:あるりプログラムが中国語を理解する実際の中国人の形式的な構造をモデル化したと仮定すると、そのときそのプログラムは間違いなく真の中国語の理解を構成したことになる
↑(サールの再反論)
(1)脳の形式的な性質は志向性を構成しない(三章にて説明)
(2)脳の形式的な性質が志向性を構成しないのは、ある種の素材だけが思考を支えることができるからである
↑(アナロジー)
光合成:光合成の形式的な記述を手に入れても、素材が違えば光合成は再現できない
では、思考をもたらすような脳の物理的性質とは?
:外因的および内因的な刺戟に対して脳に大規模な変動が引き起こされること
↑(コメント)
『中国語の部屋』が大規模な構造的変動を必要としないシステムなら、中国語の部屋による反論は無効
6
微視的機能主義
機能主義は、心的状態の本質を、
入力、内的状態の変換、出力からなるプロフィールと同一視した。
(適切なプロフィールを持つシステムはどんなものであれ、その規模や性質や構成要素にかかわれなく、当の心的状態を実現するであろう)
↑(批判)
(中国国家脳のような)心的状態を実現する見込みがないようなシステムも、「入力、内的状態の変換、出力」のプロフィールを持つシステムへと組織することは可能であるよように思われる。
こうした極端な寛大さは、機能主義の立場を掘り崩してしまいそう
・問題は、「入力、内的状態の変換、出力」の系列をどこに位置づけるか
×大まかなレベルに位置づけ
⇒感覚質の欠如、極端な寛大さ
△ライカンの「小人機能主義」
○微視的機能主義
・機能主義の批判はゲシュタルト盲に陥っているのでは Lycan 1981
:機能的な構成要素があまりにも大きい、極度に小さい、それらしくない等であるために、そうしたものからなるシステムに志向性を帰属させるという考えに抵抗するということ
(ライカン「小人機能主義」
:機能的な下位システムは、それがエージェントのために何をしているかということによって同定される)
微視的機能主義
内容や目的に関連づけからはかけ離れた用語で
記述しようとするもの
・諸関係が得られたとき、システムには大規模で柔軟な構造的変動が引き起こされ、またそれによってさまざまな創発敵的性質が得られるようになる
第三章
1
2
「民間心理学」
:自分や他人が、信じたり、希望したり、恐れたり、欲求したりしているということについての日常の理解
民間心理学は、行為・運動を説明するときに、信念や欲求という表現を用いる
「民間心理学は、人間の行動に先立つ内的原因についての素朴で原初的な科学」
3
(1)民間心理学は、偏狭な、特定の人々に限定されたような理解しか与えない。
民間心理学は、子供や狂人や外国人を前にすると、まごついてしまう
(2)民間心理学は停滞したまま、なにも生み出さず、長い間ほとんど変化も進化も発展もしていないところが他の諸科学と異なる
(3)民間心理学は、これまでのところ科学の主要部分にうまく統合されていくような徴候をまったく示していない。残念なことに民間心理学は自然を神経生理学的ないみで妥当な要素にまで分割することには関心がないようである
最近の分析哲学
:頭の状態に関する科学理論というゲームと、民間心理学というゲームを比較することが、そもそも不適当なのではないか
4
Daredevil believes that Electra is dead.
Mary hopes that Fermat's last theorem is true.
のthat以下を、心的状態の内容と言う。
心的状態が考えられる傾向
:われわれの心理学的状態が、本質的に、周囲の世界がどのような状態にあるのかということによって決まるのではなく、
われわれにとってどのように見えているかによって決まる
↓(言い換え)
我々の意識や無意識に何らかの形で影響を与えられないものはどんなものであれ、
本質的に我々の心的状態の正確な限定に関わることはあり得ない
⇒我々の心的状態が現に持っているような内容を持つものは、われわれ自身のあり方ゆえであって、
知られていないかもしれないような周囲世界の事実とは関わりがない……☆
・双生地球……☆に対して疑いを投げかける
双生地球で、「海に水がある」と発話される。
地球A:海にH2Oがある
地球B:海にXYZがある
この違い以外は同質だとする。
すると、
地球上の発話と双生地球の発話は、それぞれH2OがあるかXYZがあるかによってその真偽が決まる
(たとえば、地球Aの海にH2Oがなくて代わりにXYZがあるとしたら、地球Aでの発話は偽になる)
⇒
もし意味が真理条件を確定するのだとすれば、
自然種に関する表現(水、金、空気など)を含む陳述の意味は、
単に主体の限定的に規定可能な状態に言及するだけでは十分に説明できない……☆に反して
二つの選択肢
(1)心理学的な内的要素(地球の話し手と双生地球の話し手に共通)と、
世界関与的な外的要因(仮定上、二つの地球を越えて不変ではない(H2OとXYZ))の両方によって内容が決まるとする、意味と信念に関する合成説
(2)そういったケース(地球と双生地球のケース)は
〈心的状態の純粋に内的でまったく心理学的な要素(☆のこと)〉という観念にさえも疑いを抱かせるものであると考えることもできるだろう
プティ と マクダウェル
「頭の中にあるものが、心の状態と因果関係を持っていることは疑いがない。
しかし、
〈頭の中〉にあるものが心の状態に対して構成的関係にあると考え必要があるのだろうか?」
筆者
:あらゆる内容が根本的に世界に関与している(選択肢(2))ということが判明したとしても、
そのこと自体は必ずしも〈認知科学は心の理解に深く(ことによると構成的にではないかもしれないが)関わる研究である〉という主張を覆すものではない
その主張に対する仮想反論と、それに対する再反論をHornsbyは行った。
仮想反論
:「「行動傾向(心性はこれに随伴して生じるとされる)が二者の間で異なるためには、
内的構成に違いがなければならない。」
という考えを保持すべきである」とするならば、
心的内容は限定的に規定されねばならない(自然種を指示しない)
(「「行動傾向(心性はこれに随伴して生じるとされる)が二者の間で異なるためには、
内的構成に違いがなければならない。」
という考えを保持すべきである」までが、プティとマグダウェルの、「頭の中にあるものが、心の状態と因果関係を持っていることは疑いがない」に対応する。)
仮想反論の詳細
:仮定①:
二人の動作主の心的状態は、彼らの行動傾向に何らかの違いがある場合にのみ異なる
(そこに赤いボールがある、と信じなければ、ボールを投げようとは思わない)
仮定②:
行動が異なる(すなわち、行動が異なる)ためには、内的な物理的状態に何らかの違いかなければならない
結論:それゆえ、心的状態に対応する内的な物理的状態に何らかの違いがなければ、心的状態が異なるということはありえない
「(民間心理学的な心的状態を帰属させることは、限定的内容のみに関わることであるという)結論は、深刻な疑義にさらされることになる。
限定的内容といっても、それを妥当な概念として了解できるかは明らかではない」
なぜなら、
「民間心理学的な内容を(物理的状態に?)帰属させることは、身体的な動きを規定するような頭の状態についての独我論的な研究から引き出すことができるような切り口とは
まったく違った切り口で現実を切り取ることであるように思われる。
その具体的理由として、
ボールをひろうことは、「そこにボールがあると私は知っている」という心的状態と関連するが、そのときの細かな指の動きはそのような心的状態と関連するものではない。
5
筆者
:広域的内容を伴うによ伴わないにせよ、
頭の中で起こっていることに関することに関する科学的カテゴリーや分類に
きちんと還元されるなどということは
とてもあり得ないように思われる。
・民間心理学は、科学的心理学と同じゲームを行ってはいないかもしれない
→
世界を記述しない信念であり、なおかつ
ある人が同じ考えを抱いているといえるような別のケースに投影可能な述語が(科学的記述の上には)存在しないことも可能
6
民間心理学の道具立て(信念と欲求という概念によって、命題的態度を帰属せさるという道具立て)を用いて、心的状態を二者が互いに帰属させあうという日常の慣習(傍点)の目的は?
:
他人の頭の内的状態を追跡しようと試みることによって、
その人の身体の動きを予測し説明するための手段
民間心理学の主要な目的
:
世界の中で活動している仲間たちの行動を、(傍点開始)我々が(傍点終わり)理解できるようにすること
(予測したい対象であり主体である)われわれの仲間たちの四つの特徴
①世界に対する感受性、すなわち感覚や生得的な原書的概念の道具立てをわれわれと共有している
②世界をわれわれと共有している
③彼らは我々自身のもっとも根本的な関心と必要の大部分を共有している
④彼らの思考の有用性は、
(我々自身の思考と同様に、)
彼らが世界の実際の有様をたどっていることと関わっており、
彼らの思考作用が、世界の実際の有様に十分適応していると我々が(進化論的な理由から)考えるような目的と関わっている
この特徴があるので、
「~したい」という欲求さえ同じであれば、
・民間心理学は、脳の状態の違い(that かなり目の粗い、行動上の違いとしては現れてこないような)に対しては、敏感に対応しないように設計されている
・民間心理学は、個人の間の差異を覆い隠し、
さらには種の間の差異さえも覆い隠してしまう(長所であっても短所ではない)
7
筆者の見解
:私の見解では、われわれが信念を帰属させるのは、
行動の全体に一種の解釈の網をかぶせることによってである。
……関連する行動を可能にするものとしての、
根底にある物理的あるいは計算論的な構造がどのようなものであれ、
そうした構造における自然な区分に、網の結び目(すなわち信念と、欲求の特定の帰属)が
対応している必要はない。
――
ということは、Davidson(全体論者)に対するFordorの批判は、筆者の意見にも当てはまるのではないか?
<Fordor>
意識の全体論というのは、
「命題的態度の同一性――特に志向的内容――が、その認知的連関の全体によって決定される」
という考え方。
これに、Fordorは懐疑的。
(命題pの認知的連関というのは、主体がpの意味論的評価、すなわちその真偽の決定に関係するすべての命題のこと)
われわれは、信念や志向的状態を共有している。が、そのとき、すべての命題(認知的連関)を共有しているとは思えない。
信念は、その内容をそれぞれ別に持つ。
:信念がその状態を獲得するのは、脳の状態が逐一、世界と因果関係を結ぶことによってである。
「ある生物が『牛』という概念を持とうと持つまいと、その生物は『馬』という概念を持ちうる」
</Fordor>
筆者
:Fordorの間違い
全体論は、もしそうであれば、人間の心の理解が芋蔓式に進んでくれるのにという、いわば願望。
Fordorが軽蔑したものの通りに進んでくれるかは別問題。
Fordor:バラバラになったブロックを一つの全体に組み合わせるやり方が、全員同じになるはずがない。
筆者:一つのブロックの組み合わせ全体を理解するために、各人が別々のやり方でバラバラにしている
全体論という言葉の使い方が違うから、Fordorの批判は筆者には当てはまらない(という、批判をかわすための節)
7
一章3節での、チャーチランドによる民間心理学批判に、今では応答できる。
(3)に対して、
民間心理学の関心事は、他の主体の顕著の行動パターンだけを可能な限り効率的に分離することである。神経科学とつながることを目的とはしていない
(1)に対して、
民間心理学の道具としての適用範囲は、仲間。狂人の理解は、そもそも目標としていない
(2)に対して、
なので、その中核部分が時間的および地理的な次元を越えて相対的に恒常的であり続けてきたことは驚くべきことではない。
整理。
民間心理学には、きちんとした定義がある。
これまで「民間心理学」として使われてきた言葉の、新たな用語法:「素朴心理学」、「メンタリズム的な理解」
8
因果関係と、構成的関係の区別
構成的関係
:
研究の主題と何らかの形で密接に結びついているということ
因果的に関係
:
因果的に関係している様々な要素は、それほど密接に思考と結びついているわけではないので、
それらの要素を差し引いてもそれによって思考という観念そのものが存続しえなくなる
ということはない。
(チェス盤がなくなっても、チェスの続きは打てる。石を駒に見立てたり、口頭で)
9
・消去主義的唯物論:民間心理学が、心に関する科学に対して歪んだ影響を及ぼすのではないか。民間人は自分自身の心を知らないと、消去主義的唯物論は思っている
↑
(構成的関係)
↓
心
科学と心とを結びつける構成的関係。その得難さが二つのスタンスの対立を生んでいる。が、どちらの立場も同じく、認知という地形に同じ隆起とくぼみを見ている。
では、構成的関係とは何か。
構成的関係←→因果関係
構成的関係:研究の主題(この場合は心)と、何らかの形で概念上密接に結びついていること
因果的関係:因果的に関係している様々な要素は、それほど密接に思考と結びついているわけではないので、それらの要素を差し引いても、それによって思考という観念そのものが存続しえなくなるというひとはない
(駒はなくてもチェスは打てる)
Permalink | トラックバック(0) | 15:30
Action Script は 3 からかなりしっかりしたクラスベースの OO だよ。
JS も馬鹿みたいな使い方しないでちゃんとしたスタイルで使えば OO だし、全てがハッシュというオブジェクトだし、関数もオブジェクトだしその辺わからないと JS をつかっててもコピペプログラミングに終始して面白くないから結局 OO 理解しないといけない。prototype.js や jQuery やの中身とか読んで理解できるくらいになるには。
Perl だって悪しき過去の遺産が残ってるから OO じゃないイメージが一部にあるけど、モダンな Perl は OO だよ。CPAN にあがってるまともなモジュールは殆ど OO スタイルだし、もっとモダンなスタイルの環境でもいける。モダン Perl や Moose あたりで検索してみるといい。今からやるなら OO しかないけど、初心者は昔のうんこを踏みがちだよね。JS も同じ事が言えるけど。
JS や Perl というゆるい LL は OO を理解していなくても一応使えるってだけで、それじゃマスターには程遠い。あと言語仕様でやっちゃいけないことを縛っていないから、しっかりした開発をやるには 規約もしっかりしないといけない。 初心者は最初からいい出会いをするわけじゃないから、誤解が多いのかもしれない。
JS と Perl はレガシースタイルが残ってる例としてあげたけど、LL でも Python や Ruby はもともと OO スタイルしかない。だから、自分でやってることを理解してないと過去のうんこを踏む可能性のあるゆるい LL よりは、どうやっても綺麗にしかかけない Python は初心者向けだと思う。知り合いが何でも良いからプログラミングやってみたいと言い出したら GAE で Python 弄らせる。
ぶっちゃけ LL でもいまどき OO を避けて通るなんて無理。
プログラミングスキルは、本質的には言語に依存しない。 (よほど糞な言語を使うのでなければだが) OO への理解やアルゴリズムの理解ってのは LL か巨大な言語かに依存しない。絵を描くのに道具によって慣れの差はあっても画力は道具を変えても持ち越せる共通した力だというのに似ている。一つの言語をちゃんとある程度マスターすれば、他の言語の習得はとても早い。たとえ最初にやる言語が LL でもね。別の言語をやるときに壁になるのは関数型かそうでないかくらいのパラダイムの差がある場合だけど、JS や Perl でさえ 関数型で使うようなテクニック を実装できるし使いどころがあるから、やっぱり共通点はあって、~だから~を学ばなくていい、なんてのは上達したいなら殆どない気がする。
Web屋のネタ帳( http://neta.ywcafe.net/ )様の
これからの「パスワード」の話をしよう( http://neta.ywcafe.net/001184.html )で
紹介されているパスワードのハッシュ化のバグについて突っ込んでみる
「1回ハッシュ化を解読できただけ、プレーンパスワードを入手することが可能である」
というものである。
問題の部分はここ
/**
* 平文のパスワードをハッシュ&stretchするメソッドです。
* loop回数は1000としていますが、999でも1001でもお好みでどうぞ。
* ただしループ回数は処理時間に直結しますのでほどほどの数値で。
*/
private static final String hashAndStretch(String plainPasswd, String salt) {
int loop = 1000;
String hashedPasswd = "";
for (int i = 0; i < loop; i++) {
hashedPasswd = DigestUtils.sha256Hex(hashedPasswd + plainPasswd + salt);
}
return hashedPasswd;
}
<凡例>
ソルト:SSSSSSSS
<トレース>
XXXXXXXX ← DigestUtils.sha256Hex("YYYYYYYY" + "PASSWORD" + "SSSSSSSS")
クラッカーがXXXXXXXXXのハッシュ値を解析し、元の文字列が「YYYYYYYYPASSWORDSSSSSSSS"」と判明したとする。
この時点で元文字列の中にプレーンパスワードが含まれていることになる。
また、ハッシュ化された文字列には「0123456789abcdef」の文字しか含まれておらず、
「それ以外の文字が含まれていた場合容易にプレーンパスワードではないか」
一般的なパスワードには少なからず「0123456789abcdef」以外の文字が含まれているだろうし、
上記のことをふまえてプログラムを修正すると。。
/**
* 平文のパスワードをハッシュ&stretchするメソッドです。
* loop回数は1000としていますが、999でも1001でもお好みでどうぞ。
* ただしループ回数は処理時間に直結しますのでほどほどの数値で。
*/
private static final String hashAndStretch(String plainPasswd, String salt) {
int loop = 1000;
String hashedPasswd = DigestUtils.sha256Hex(plainPasswd + salt);;
for (int i = 0; i < loop; i++) {
hashedPasswd = DigestUtils.sha256Hex(hashedPasswd + DigestUtils.sha256Hex(salt + i));
}
return hashedPasswd;
}
HTMLはわかるけど、サーバーサイドはお遊びでphpを触ったぐらいだったので、会員制でデータをためこむサイト作りに初めて挑戦した。
今回重視したのは、「いかに個人情報をお漏らししないようにして、万が一漏らしても被害を少なくするか」ということ。
世の中、有償サービスでもパスワードを平文で保存してるサービスが意外と多いらしいので、流出した時のリスクを少しでも減らせる対策として書きます。
サーバー:ロケットネットのキャンペーンにでレンタルサーバ年1000円ポッキリプラン クライアント側の処理:HTML+CSS+jQuery(とプラグインもろもろ) サーバ側の処理:PHP Webサーバー:Apache データベース:MySQL
俺も巻き込まれたところでは、サミータウンがメールアドレスとパスワードセットでお漏らししてお詫びに1ヶ月無料なにそれこわい。
サミータウンだけならまだいいけど、メアドとパスワードを他のサービスで共通化して使ってる情弱なので、
共通化してメアドとパスワードをどこかのサービスが一箇所でも漏らすと、ヤフオクID乗っ取り事件みたいなことになる。
http://internet.watch.impress.co.jp/cda/news/2008/09/26/20967.html
俺だってできれば人様のメールアドレスとパスワードとか預かりたくない。
万が一、肉親のメールドレスを発見してパスワードにrapemeとか入ってたら明日からどういう顔すればいいかわからない。
ググってみてもどこにも情報のってない。うーん困った。ダメもとで「個人情報ってどうやって保存したらいいんだろう。。。」
って、twitterでつぶやいたら、「住所とかは可逆暗号化でいいけど、パスワードはハッシュで不可逆化しないとだめだよ!」
「住所とかは可逆暗号化でいいけど、パスワードはハッシュで不可逆化しないとだめだよ!」
何のことかわからなったので、調べてみると、
・ハッシュ=ハッシュ値を使った、元のデータに戻せない暗号化方式
うーん。。。よくわからん。。。
電話番号とか住所は、第三者が使用する情報なので、可逆が必要。パスワードは、認証にしか使わないので、
ハッシュ値の結果が一致すれば元のデータがわからなくてもOK、という方式なのでこういった暗号の使い分けをする。
●可逆暗号のイメージ(もとにもどせる) 暗号化キーは開発者が指定する。 090-xxxx-xxxx →(暗号化)→ !'&amp;%($% →(復号化)→ 090-xxxx-xxxx ●ハッシュのイメージ(もとにもどせない) 登録password(DBに保存)→(ハッシュ値抽出)→!"$#'$#=" ログインpassword →(ハッシュ値抽出)→!"$#'$#=" ※二つのハッシュ値が合っていれば、パスワード一致として認証する。
今回はMySQLの関数で実現した。encode関数で暗号化して、decode関数でもとに戻す。
例えばtel_noという項目だけあるテーブルがあるとすると、
//データベースに保存する時 insert into テーブル名 (tel_no) values (encode(tel_no,'暗号化キー')); //データベースから取得する時 select decode(tel_no,'暗号化キー') from テーブル名;
これで、データベース格納時は暗号化(バイナリ化)されて、データベースから取り出してHTML表示する時に復号化はされる。
<ユーザ登録時>
$password=(フォームから取得) $hash=hash('sha512',$password) //ユーザ登録時は、ここで生成した$hashをデータベースにぶっこむ。
ユーザ認証時は、入力されたパスワードと、データベースのパスワードが一致するかチェック。
//フォームから入力されたパスワード $input_password=(フォームから取得) $input_hash=hash('sha512',$input_password); //MySQLに保存されたパスワードを取得(略) $db_hash==(データベースから取得) //判定 if($input_hash==$db_hash) echo 'ログインしますよ!'; //ここにログイン処理を書く else die('メアドとパスワードがあってないよ!');
これでもしSQLインジェクションとかでデータが流出しても、ハッシュ暗号のパスワードに関してはまず解析されないはず。。。
可逆暗号のデータもphp側の暗号化キーが盗まれない限りバレない。。。はず。。。
何でもかんでも暗号化するとコードが煩雑になるし、パフォーマンスにも影響でそうなので、
住所データの都道府県とか、漏れても良いような情報は暗号化しませんでした!!
個人情報保護法 2条による定義 「個人情報」とは、生存する個人に関する情報であって、当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの(他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを含む。)をいう。
これで、もし漏れても、俺、ウンコ漏らして臭いけど、パンツから出てないからいいよね?というレベルにはなった。はず。
万が一漏れても大丈夫!と書いたけど、そもそも漏らすなというお話になる。色々調べた結果、以下の対策をほどこした。
・当初jQuery側でSQL組み立ててPHPに渡してたので、これだと任意のSQLが実行できて漏らし放題なのでやめる。
・GETとかPOSTでDBに渡すパラメータを扱ってる場合、ちゃんとエスケープする。
例えばログイン認証するPHPで、GETメソッドでフォームからデータを取得するような場合、
$id=$_GET['id'] $pwd=$_GET['pwd'] $sql="select * from ユーザーテーブル where uid='$id' and pwd='$pwd'
とかやってると、login.php?id=admin'&pwd=' OR '1'='1とかパラメータを渡されるとあら不思議!
select *from ユーザテーブル where uid='root' and pwd='' or 1=1
で、誰でもログイン出来ちゃう!ので、mysql_real_escape_stringでエスケープしたり、渡されたパラメータが想定した値かどうか(例えば数値かどうか、とか)のチェックをいれたりする。
・保存するデータにタグやJavascriptを埋め込まれないように、保存されたデータを出力する場合はPHP側でhtmlspecialchars関数使ってエスケープするようにする。
こんな感じでお漏らし対策をした。間違いがあったら教えて欲しい。
ちなみに出来上がったサイトはこれ。
「老害」石原氏が四選を果たすのは、はっきりいって気持ちの良いものでは無い。
気持ち悪さのレベルで、石原四選より反石原派の方がまさってしまうのだ。
Twitterで「#tochiji」というハッシュを見てみるが良い。
ひたすら同じ話をRTしまくる気持ちの悪い連中がすぐ見つかるだろう?
関連するハッシュもどんどん増えていく「#ishihara」なんて可愛いもんだ。
今まで見ていた普通のブログも同じような気持ち悪さを唐突に醸し出すことがある。
政治家を強く推すのも気持ち悪いが、誰かを強く批難するのも気持ち悪いのだ。
反石原派が気持ち悪いのは、反原発や沖縄で反米軍を叫ぶ連中と同じ気持ち悪さを感じるのだ。
「お花見自粛」という話が出た。
これはいかがかと思うだろう?
ただ、花見の基準が人それぞれだ。
露店を冷やかしながら、桜の下を歩く。
…こんなのは禁止されたくない。たぶん、禁止もされてない。
夜、急性アル中を起こすかのごとくのどんちゃん騒ぎを繰り広げること。
これは自粛しても良いんじゃないか?と思う人も多いだろう。
でこれだ。
http://www.excite.co.jp/News/reviewmov/20110405/E1301939720954.html?_p=1
夜では無いかも知れないし、どんちゃん騒ぎでも無いかもしれない。
が、恐ろしく、気持ちが悪い。
とても気持ちが悪いとしか言えない。
反イシハラ、原発コワイコワイ、国に騙されたと叫ぶ連中。
そんなのは見たくない。
というわけで、タイトルに戻る。
日本人だって、契約するときに、契約書を隅から隅まで読んでるか?という問題の答えはNoなので。
適当に全部 はい。または左側 を 選べば 機械的にGOできる。
そもそも、わたし、バカでITに疎いから、文章を読んでいなかったでできてしまう。
そして、逆に、受け取る方に免責事項はないというのは別増田の通りで
第一、国籍を確認できる資料は 本籍記載付きの住民票 という 国民なら誰でも取れる簡単な証明書があるんだから
対面にしろ、ネットにしろ、それを、確認しなかったのは何故か?という理由に答えられないとダメだろ。
確認する方法があるのに、確認しなかった。はミスだろ。
そういう意味では、法改正して住基ネットの番号(本番号ではなく、時限式の一時発行の仮想住基ネット番号の必要はあるだろう) または 住民票の送付だろうねぇ・・・
住基ネット側はAPIを公開して、仮想番号の発行と氏名のハッシュコードの振り出しAPIと 氏名と仮想番号 申告された本籍所在地を受け取って、ハッシュかけて正しければ国籍があるかどうか?をYes/Noだけ答える。という 機構が必要だね。
ぼく就活生。リクナビからJR東海にプレエントリーして驚いた。
あのに 増田 様
ID:12345678
パスワード:mypassword
このたびは当社にプレエントリーを行って頂きまして、
誠にありがとうございました。
こんなメールが届いたの。
なにに驚いたって?登録画面で入力したパスワードが平文メールに書かれてたってとこ。
「mypassword」って書いてるところにぼくの大事なパスワードが書かれてたの。Gmailでも使ってる大切なやつ。
同じパスワード使ってるぼくも相当間抜けなんだけど、いまの時代いくらなんでも平文メールにパスワードはないでしょ。
とっても怖かったのでJR東海とGmailのパスワードを変更して寝ました。
恐怖はこれで終わらずに2ヶ月後。こんなメールが。
あのに 増田 様
ID:12345678
パスワード:newP@sSw0rd
このたびは当社にプレエントリーを行って頂きまして、
誠にありがとうございました。
「newP@sSw0rd」は変更し直したパスワード。
なんで平文メールにパスワード書いて送ってくるの?馬鹿なの?阿呆なの?死ぬの?
もうあきらめてそのまま寝ました。
さらに1ヶ月後。
あのに 増田 様
ID:12345678
パスワード:newP@sSw0rd
このたびは当社にプレエントリーを行って頂きまして、
誠にありがとうございました。
問題点を2点挙げると
SQL Injectionとかで漏れたら終わりってことだよね。
正直な話、中の人間も信用できない。
JR東海だけの問題なら良かったんだけど、同じような企業が本当にいっぱいあってびっくり。
ちょっと調べてみるとこのシステムはdisc.co.jpってところの製品みたい 。
「株式会社ディスコ」だって。
axol.jp:「株式会社 毎日コミュニケーションズ」
こんな糞システムで食ってる奴らまじでしねばいいのに 。
というのが2年前の話。JR東海はリク面で落ちました。爆発しろ。
院生になって東京電力にエントリーしたところまた同じようにパスワードが送られてきたのでこんなエントリを書いた次第。
マイミクに聞いて集めた平文メールにパスワードを書いて送ってくる糞企業一覧(仮パスワードを送ってくるだけの会社は除いてるよ!)
ほかにもいっぱいあるみたい。
そして怖いのは
https://saiyo.axol.jp/12/s/ibm/entry/agreement
https://nttdata.saiyo.jp/newgraduates/
もうやだこの業界。たとえメールは送ってこなくてもハッシュ化は期待できないよね。
暇な人はsite:axol.jpあたりでぐぐればいいとおもうよ。
東京電力とかディスコとかに届け出ると選考で不利になりそうだし
IPAに届け出てもまともに取り合ってくれそうにないし、ぼくがちくったってばらしそうだし。
id:HiromitsuTakagiとかid:otsuneとかid:Hamachiya2とかが取り上げてくれないかなー
追記(11月9日22:26)
川崎重工がまた送ってきたから腹を立てながらブコメに返信してみる
id:taqpan これは酷い。とりあえずここに挙がっている企業はまともな情シス部門が無いか、安いってだけで人事部が糞SIerに丸投げするような体質か
NTTデータとかIBMとかが糞SIerに丸投げしてるあたりがまたなんとも
id:MarriageTheorem id:HiromitsuTakagiさんとid:Hamachiya2さんのどちらが取り上げるかで後の展開が540度ぐらい変わるような気がするんだけど、このお二人を並列に置いてよいものか
あー。そうですよね。この問題の解決にぼくは何が出来るでしょうか・・・
某地方都市で、
俗に言うデスマーチな職場でSEモドキのようなバイトをする日々が続いて1年ほど経っただろうか
もともとは異なる業種で、
社長の思いつきにより 日本語とローマ字の切り替えもできないような若干名で立ちあがったプロジェクトだった
さて、ノースキルな人間が どうでもいいような人を面接で通してしまったために事態がおかしな方向へ向き始めた。
断っておくが、もっとも社員と言っても、厚生年金など出ないような 弱小中の弱小だ。
僕は若干週末に顔をだす程度で、平日の深夜にコーディングを行う。
”彼”は phpのハッシュあたりで躓いているようで、もちろんDB関連もままにならなず 正直使い物にならない。
(そうたった1言語くらいズブの素人じゃないんだから、3ヶ月でなんとかしてくれ!)
彼は僕のことを毎回毎回。天才と呼んでくれて 非常にイライラする日々が続いた。
そうこうしているうちに、新人が入ってきては辞め、新人が入ってきては辞め、を繰り返していった。
彼を雇った一番の年長も、辞めていった。
”彼”は。
■ 周りが分からないことを良いことに、転職先に出す作品を就業中に作る
■ 彼は、”僕”は普通だ、を切り札に、何もしない
・ 他社の動向調べてよ 無理です
■ 僕は辞めます > そうですか
■ 僕は辞めますよ!? それでもいいんですか > そうですか
(メッセンジャーで。個人的に)
あのさ、君、
君みたいなスキルは中学生でもいるんだし、僕より年上なんだからもっとしっかりしてくれ
もう僕は君を助けられないよ。
■ 本当にあなたはひどい人だ、僕は普通だから、罵倒される覚えもありません!
・・・。
どうぞお好きに、路頭にでも好きに迷ってくれ。
教訓。
つぶれかかってる会社に技術を安売りして変な延命措置はしてはならない。
それはそうある運命なんだ。あなたが安売りをやめたとたん淘汰されることに変わりはない。
僕も大きな勘違いをしていたが
簡単に技術伝達できれば苦労はないよね。
ずっとピンだったから本当に気がつかなかった。
ずっとピンで技術を磨いているそこのあなたに警告しておくけれど
うぬぼれは最大の敵であると同時に、自惚れないといけないところでキチンと自惚れないと(あなたには無理、見果てぬ夢を見てはならぬ、と伝えること)
一緒にコールタールに沈んで行くよ。
http://anond.hatelabo.jp/20100603200325
http://anond.hatelabo.jp/20100604004052
http://anond.hatelabo.jp/20100610084458
http://anond.hatelabo.jp/20100611083455
http://anond.hatelabo.jp/20100615082939
夜が僕の部屋にやってきた
部屋は暗くてマックブックが僕を照らしている。the tuss『Rushup I Bank 12 』が流れている。外は群青色。
僕の耳元でギーガーが囁き出す。僕は狂っているフリをしている。
NO NO NO. 僕は狂っているフリをしているフリをしている。
「セクシャルな意味の言葉を教えてくれよ」って声が聞こえる気がする。腹が減っている。ジャングルから何かが抜け出して僕にまとわりついている。俺の言葉きこえるか?あーあーあー。
夕方から夜への変化は高速だ。青が黒になっていく。バイバイ。
ジャングルジムみたいな都市を這い回るbitとそれにまつわる僕たちの幻想。社会という幻想。言葉を打ち出せば新しい幻想を君の頭が君の頭自信に幻想を見せる。タイプ→bit化→イーサネット→表示→視覚がキャッチ→脳内変換→幻覚
真っ暗な部屋が好きだ。肉体に意味がなくなるみたいに。感覚を研ぎ澄ませ。生活の雑音を音楽に置き換えてセックスをしろ。オセロの決着みたいに本能で意識を埋めろ。
群青は今や黒に限りなく近い。自動筆記をする亡霊を作る機械仕掛けのbotの群れ。
お前の意識はお前のものかって、Gigerが室内冷蔵庫の唸りを隅のほうで齧りながら言っている。君はたぶんズールー族の洗練を受ける必要があるぜギーガー。
言葉は何度もパイプされて行き着く果てで奇形の言葉が夢をもたらす。2ホップで邪悪な存在に触れることだってできる。キマった目の映像をリアルタイムで放映していた綺麗な女の子。いくつもの視線は決して孤独を埋めない。
気づかないうちに青色は消えた。灰色だ。都市の光を反射して黒であることできない空だ。あらゆるルートを探索するうちに幻想は消えてしまった。012345678909876543210
SFみたいに俺の記憶を全部レーザービームでずっと向こうに打ち放ってくれよって、鳥が鳴いてる泣いてる。ずっと先のあの向こうに行きたいんだって。そうしたらこの都市を燃やしてくれよ。
パチンコの台に機械を仕込んで店長とグルになって儲けた金を大型草食動物を殺した肉食動物みたいに分け前を食い散らかしていると、向こうから見たこともないような綺麗な羽を持った鳥がやってきて、その鳥を金で買った。その鳥はアイドルになって沢山の視線を集めたいって言っていた。
孤独な鳥は鳴いていたけれど、僕たちは尻尾を振って怯えたままそれを眺めていました。決して唱えてはならない秘密の呪文を唱えると缶詰から亡霊が這い出てきて僕に本当のことを教えてくれたけれど。夢から醒めて鳥のヴァギナに色とりどりのポスカを差し込むうちに忘れてしまった。
遠く遠くで真っ赤な隕石が通り過ぎている。ポスカを抜き取ってそれを描写しようとすると鳥は嫌がっていたし、向精神薬がなくなればカフカは落ち込んでひたすら押韻のチートコード集を集めていた。
箱男達が工場で夢の製造に従事していて、箱男の王の中身はベンガル虎だって噂がある。ベンガルトラに喰われかけている箱男の中身かもしれない。座席を回転するSUSHIバーでポスカを突き刺したまま鳥は「そこで夢はつくられているの」と言った。
「宇宙に行きたいなら今そこに座っているそこがそうさ」と相対的に近づく箱男が言って、彼女は泣いた。素数の順に爆発する地雷を踏んで15色と共に炸裂して消えて、僕はバーを出た。うつむいたまま。
undoして箱男にバールのようなものを投げつけて彼女を連れ出した。漏斗から昔の記憶が流れ出したのはヤクザがヤクザ映画の花形俳優に挨拶した話だ。
ジャングルから抜け出した野生の箱男は薄暗い目で人工ではない夢をみていた。ゾウオヲアタエルコトバマザリアッテクレ。踊りは無意識を掻き立て無規則のなかから創発性の地獄が運動を始めてベンガルトラは亡霊を求め始めた。ピンク色の乗用サイがテールランプで1万km遠くの仲間たちに危険を伝える。
夜が歌い始める。僕たちは踊り出す。ティム・バーナーズ=リーは笑い出す。感情が全身から溢れ出して路上に数多の星が雨みたいに空から落ちてくる。「ただの黒い石だったみたい」と彼女はほほ笑んだ。ズールー族達は合成麻薬を注射してak-47を振り回す。01234567899999999...
温めた牛乳にパンを浸しながら乳牛を捌く彼らと量子コンピュータと交換で新しい踊りの教則ビデオを手に入れた僕たちは、借入を超えてレイクで現金を3億円引き出して真っ黄色の85年型のデロリアンインドサイを買ってBTFした。僕たち現在の僕たち自身を書き換えるために。
BTFに失敗した僕たちは記号の世界に移動してしまった。'機能'をいじくり回して本能と妄想を書き換えた。現在に戻ると無限マズロー状態。死と性・秩序だった無秩序が保存が破壊を食って内蔵がキーボードに切り替わっていた。
箱男たちの中身と箱は裏返って剥き出しの彼らとベンガルトラと箱男達の比率は逆転して植えたトラとトラの共食いと皇帝と臣民の比率が逆転して、むしろ逆に臣民が皇帝っぽくなってすらいたし、ピカピカ光る非同期の夢を同期させようとする電池を食う機械にしゃべりかけるとやつは答えた。
「踊ってくれよ」と言われて僕たちは新型のダンスを踊り始めた。
踊りのマクロが何度もとプレーヤーピアノ達と連動して奪うことと奪われることが等価になって実在しないヒーロー達が現れて偶像に規則と予定調和を与えた。物語の時だ。
ヒーロー達が生み出したベイジアンネットワークを貪るパックマンみたいにお話の快楽を貪る彼女が超常現象的な動きでスピーカーの振動と同じ周波数で爆裂する音楽を発する。まとめあげられた集団はリズムの原則に奪われて暴動みたいに時速2kmの速度で遠心形状で彼女に巻き込まれていく。
月に反射した腐った陽光がベンツに載ったカミュをバターみたいに溶かしてる。笑えない冗談で笑うコメディアンの悲しみがギアの悲しみを包み込んで目隠しされたノード形状の同調する協力者を通してP2P的に愛を送っている。波状に飛び散ったハッシュが変形して別の夢になる。
衛星軌道上でジョージ・ワシントン級のブラシが振られて百万色のインクが降り落ちてアクション・ペインティングで灰色の建物はサイケデリックに変色してる。
マグニチュード6000の地割れから羊が大量発生した。鉄格子に守られた僕たちは数えて眠ることのできない羊に食べられた。
放物の賜物がいくつも刺さった養殖のアサヒスーパードライが波のように揺れて聞いたことのない言葉を喋っている。
朝が避けることのできない恋や運命みたいな感じで夜を引きずり込んでいる。
二つの約束が浮き上がって実体のない情報生命体みたいに自らをbitに変換して飛んでいった。
終わったことを始まりが喋っている。あなたは夢をみていたのですと夢が喋っている。
踊りのマクロが何度もとプレーヤーピアノ達と連動して奪うことと奪われることが等価になって実在しないヒーロー達が現れて偶像に規則と予定調和を与えた。物語の時だ。
ヒーロー達が生み出したベイジアンネットワークを貪るパックマンみたいにお話の快楽を貪る彼女が超常現象的な動きでスピーカーの振動と同じ周波数で爆裂する音楽を発する。まとめあげられた集団はリズムの原則に奪われて暴動みたいに時速2kmの速度で遠心形状で彼女に巻き込まれていく。
月に反射した腐った陽光がベンツに載ったカミュをバターみたいに溶かしてる。笑えない冗談で笑うコメディアンの悲しみがギアの悲しみを包み込んで目隠しされたノード形状の同調する協力者を通してP2P的に愛を送っている。波状に飛び散ったハッシュが変形して別の夢になる。
衛星軌道上でジョージ・ワシントン級のブラシが振られて百万色のインクが降り落ちてアクション・ペインティングで灰色の建物はサイケデリックに変色してる。
気がついたら、ホールとか、気がついたらワームとか、気がついたらトロイ
ってのは、この業界 少なくないからさ、それ自身は 仕方が無いと思うんだよ。
事故はしょうがない。
でもなぁ、
ウイルスだったら、ウイルス対策ソフトを入れてるかどうかは、事故なのか過失なのかの大きな分岐点になるよな。
今回みたいなサービスだったら、セキュリティーの試験をしたかどうか?は、事故なのか過失なのかの大きな分岐点になると思うんだよ。
で、どう考えても、これ、まともには試験されてない。
なんだろうな、チェックリスト作ればいいのかね?
最低限このぐらいは・・・リスト
>パスワードを平文で保存しない
保存する場合は、特別な手段をとらないと社員でもパスワードを読めないようにする。
保存する場合は、ユーザーに電子的な手段でパスワードを回答しない。かならず、受取人指定の郵送とする。
ユーザーのパスワードが必要な場合は、無人システムに投入する等する
ただ一般的には、住所氏名電話番号生年月日で代用することがほとんど
>パスワードを暗号化する場合は、暗号化ではなくハッシュ化する。
暗号化とハッシュ化の違いが分からないなら、勉強させる。知らない人間を担当者にしてはいけない。
GETのパスワードはログに残るため。ログからパスワードが流出する
ユーザーの代わりに管理者アカウントでその操作を行い、だれが、いつ、その操作を行ったかはシステムで記録する
よく管理者アカウントが1つでだれだか操作したわからないというシステムがあるがナンセンス。
かならず、いつ、だれが、というのはシステムで明確にログを取る。
>URLの後ろに、ユーザー毎 取引毎 セション毎のランダムなセッションキーが付いていると良い
COOKIEも併用すること。URLはキャッシュ等の対策のため
>セッションキーを他のユーザーの物に変えてログイン出来ないことを十回以上は確認する
又は、何らかの理由でセッションキーのみでログインする場合は、十分に長い文字数にすること。
数字を1つ2つ変えても他人のログがみられないように、十分にセッションキー同士を離れさせ
機械的に、総当たりでログインが試みられて場合検出して遮断する機能を入れること。
遮断装置が無いのに、セッションキーのみでのログインは、ガードしていないのと同じ。
>ユーザー パスワードを適当に変えて、他のユーザー名で同一パスワード などの組み合わせが通らない事を10組み以上は確認する。
>一定時間以上操作がない場合は、自動ログアウトする機能をつける
漫画喫茶など対策
>クレジットカードなど課金情報は同一サーバーに持たない。可能な限り記憶しない
でも「Chromeで使用統計データと障害レポートを送信する設定にしてるとGoogleにアクセスしたURLを逐一送信する」っていうのは嘘だよね?
Google Chrome のプライバシーに関するお知らせ
Google Chrome では、存在しない URL が指定された場合、Google にその URL を送信して、探している URL が見つかるようサポートします。この機能を無効にするには、こちらの手順をご覧ください。
(中略)
Google Chrome のセーフ ブラウジング機能により Google のサーバーに定期的にアクセスが行われ、既知のフィッシング サイトや不正なソフトを配布しているサイトの最新リストがダウンロードされます。フィッシング サイトまたは不正ソフトを配布している可能性のあるサイトにアクセスした場合は、ブラウザから Google にそのサイトの URL のハッシュ化された部分コピーが送信されるため、Google で危険な URL についての詳細な情報を通知することができます。Google では、この情報からだけではユーザーがアクセスした実際の URL を特定することはできません。また、使用状況データを Google に送信するよう選択していて、フィッシング サイトまたは不正ソフトを配布している可能性の高いサイトにアクセスした場合、アクセスした URL 全体、ページに送信されたリファラー ヘッダー、Google セーフ ブラウジングの不正ソフト リストに一致した URL などのデータも Google に送信されます。
「Google Chrome の利用時に Google に送信される情報」のブロックで「URLが送信される」って書かれてるのはこの2つのケースのみだった。どこにも「ユーザーがアクセスしたURLを逐一Googleに送信し、インデックスされていない情報の場合はインデックスします」なんて書かれてないよ。もしもプライバシーポリシーに記述がないのに勝手にやってるとすればそれは大問題じゃね。元増田はその証拠持ってる?持ってるなら報道機関あたりにタレ込みしてきなよ。そんなこと知らずに使ってる善良なChromeユーザーの為にもさ。
ていうか、メッセサンオーの情報流出問題の本質って全然そこじゃないよね。むしろなんでChromeの話が出てくるのかよくわからない。教えて増田。
プロキシ犯人説でもいいんだが、相当強固にリクエストを無視するプロキシがあったとして、
セッションハイジャックができたらまずいんじゃねーか?
そういう企業プロキシが存在している事は周知の事実なんだから、楽天ほどの商業サイトで決済からんでるんだし
ログイン直後は302で1度飛ばすとか、ランダムなセッションキーをURLのけつにつけるとか、Cache-Control ちゃんと入れるとか、複数の手を使ってプロキシのキャッシュすり抜けようとしたあげく、
どうしても無理そうならjsでランダムハッシュ付きURLから情報取得してセションと一致しないようならhttpsへ逃げるなど多重の手段を講じてもおかしくないだろ?
企業のプロキシをすり抜けられなくて、セッションハイジャックです。でも、それはプロキシが悪いんですは、言いたいことはわかるが、決済系のWebサイトのセリフじゃない。
コメント見る限り、他の企業のプロキシからも同じ現象は再現しているみたいだし、プロキシーのCache-Control を無視する設定のプロキシ対策を忘れたんじゃなかろうか?というのに1票入れとく。
状況がわからんが、もし、Cache-Control を無視するプロキシー対策忘れなら、一般サイトならセーフだが、課金系サイトなら、サイト側のマネージャークラスの責任。
岡田容疑者はホリプロでウェブの管理などを担当。ファイルはサイバーエージェントの内部文書で、同社の女性社員が岡田容疑者に業務メールを送る際、誤って添付したという。「お年玉」画像は1月1日午前1時1分1秒に出現するよう設定されていた。
1 そもそもアメブロがIDとパスワードとEXCELなんかで管理していた。しかも、ハッシュ化していない。
2 それを誤って、業務関係者に送付
3 誤送付された相手が悪用
パスワードを平文で管理すればこう言う事故はおきるべくして起きるって話ですが
それをEXCELで管理した挙句、普通の業務に使う人が持っている挙句、誤送付とか・・・
そもそも、管理用にパスとIDが必要なら、システムに管理者アカウントを作って、専用のIDとパスで入ると本人でなくても編集できるようにすれば済む話なのに、
流出経路が判明すればするほど、どうして、そんなセキュリティーホール(ワークフロー上の)を残しておいたと言うか、わざわざ意図的に作ったのか意味不明。
これ、芸能人以外の一般アカウントも別途一覧とかもってないよねぇ?
あなたの会社も、パスワードを平文で保存すべきと言っている人の名前をちゃんとメールか何かの文章で残しておきましょう。
悪いのは、誤送付というミスをしたひとではありません。ミスしたときに平文のパスワードが流出するようなシステムを作った人、EXCELを作った人です。
2048Bitの暗号?っていうけど、文字数になおすと256文字。打ち込むの大変だろう・・・・
大半が自動生成のソルトで残り8文字ぐらいがパスワードだとしても、ソルトの部分には非表示可能文字を入れることもできるから、複合後が完全に乱数で手がかりなし。どうやって解読するんだと。
バイトしてたから、ソルト知ってる?バイトにソルト教えるなよw。
そもそも、パスワード作るときは、n文字目とm文字目を混ぜて暗号化とかやっていくので、1文字だけ間違えるなどは無理。間違えるとしたら複数文字セットで間違えることになる。んーあれは解読ミスじゃなくて、タイプミスか。
とりあえず、2048Bitの暗号?なら256文字セットで一気にわかるはず=でないと当たり外れが判定できない。なので、1文字入力して考えとかない。もしそれができたら高々8Bitしか鍵長がない。
そもそも、パスワードは 不可逆関数であって暗号化ではないので、元には戻せない。戻せるとしたらそれ、セキュリティーホールじゃね?しかも、それを画面に表示とかすげー、セキュリティーホールじゃね?
誰でも思うことだろうけど、いや、うん。OZのシステムは、そんなに危険なのにどんだけ初歩的なセキュリティホールを抱えてるんだ?
そして、そもそも論として、鍵のハッシュ後の値を知ってるなら、自分でプルートフォースかけた方がはやくねーか?ラブマシーン。いや、それがダメなりゆうは小説読んでるから知ってるけどwww。それにしても、どう考えても、そこは、プルートフォースw
そして、そもそも、コンソールからrootでログインすればいんじゃね?
世界の端っこの方で愛を探すプログラマ0.999はそう思いました。こんにちは増田の皆さん。サマーウォーズどうでした・・・って冬だし。
140字制限からURLを除き、返信時にコメント元を表示して、コメント元からも返信があることが分かるようになれば、大半の問題は解決しそう。
ほかに問題があったらブクマか、@youkosekiにコメント下さい。
3/25:ふぁぼ死やアカウント融合、APIや運営まわりの問題を追記しました。ブクマ、Twitterでのご指摘ありがとうございました。問題があるからダメではなく、現状の問題を認識しつつ、どういう風にすればより便利になるか考えたいと思っています。以前にお仕事でTwitterについてのコラムを書いたので、お時間のある方はどうぞ。http://www.mri.co.jp/NEWS/column/thinking/2010/2015508_1805.html
2010年3月1日を以て停止しました。2009年12月末からの開始だったので、凡そ2ヶ月強の活動となりました。
少し前から止める予定だったんですけど、個人的な都合とかで伸びていました。
小諸そばbotを作成したの目的は、自己紹介にも書いているとおり、「小諸そばの中の人に当アカウントを引き継いでもらうこと」でした。
(他にも「Twitterのbotを作りたい」とか、個人的な理由も多少はありましたが。)
サブウェイやら加ト吉やら、企業アカウントがある中で、個人的に頻繁に愛用させてもらっているということで、「小諸そばのアカウントがあったらいいなあ」となんとなく思ったのが発端です。
今でもその思いを持っているのは、紛れもない事実なんですが、現状のままで続けていても小諸そばの中の人には届きそうも無いので止めます。
最初は「非公式アカウント」ということを明記しておらず、公式アカウントと誤解する人もいました。あくまで個人的に作成したbotです。
「三ツ和株式会社は変なマーケティング会社に騙されたんじゃないか。」などと、随分と有り難い(?)言葉をいただいたりもしました。
実際はそんなに深い意味を持ってやってはいません。期待を持たせてすいません。
他にも多くのメッセージをいただきました。楽しんでくれた方や、応援のメッセージは励みになりました。その一方で、不満や邪魔に感じた方も多いようでした。
botの仕様については、多くの方が既に理解されていると思うのですが、「小諸そば」で検索した結果のRSSフィードをRTしてるだけです。それだけです。
そういう意味ではTwitterの検索結果を見ればいいだけです。
http://search.twitter.com/search.atom?q=%E5%B0%8F%E8%AB%B8%E3%81%9D%E3%81%B0
機能的には簡素なbotでした。それでもこれだけ人気がでたのは、偏に小諸そばの実力といったところでしょうか。
後半は独自でお知らせをツイートする機能も追加しましたが、大した機能ではありません。
他にもアイディアはあったのですが、実装する時間が無く、結局はこれだけです。
当初は、フォローしてくれた人だけでリツイートを廻すとか考えたのですが、世間に認知されて有名になってフォロワー数を伸ばすことも必要と考えました。
その為に、出来るだけ露出を増やしたかったので、考えて行った施策になります。
この辺りの仕様に意見があるようで、それなりのメッセージもいただきました。
私としても、それなりの意識と意義を持って作成したbotなので、批判的な意見については反論をしておきます。
Q. 誰得だよ?
少なくとも私とフォロワーの人には得だったのではないかと。私は面白かったです。
この辺は主観なので議論が難しいところではあると思います。
Q. くだらないから止めたら?
私の考えとして「くだらない≠止める」です。
ハッキリ言ってしまえば、一般人のブログやTwitterはくだらないものです。(有名人や著名人なら分かりますが。)
それでも続けるのは個人の主観です。当該者(作成者・実施者)自身の考えです。
Q. サーバ負荷になるから止めたら。
忠告してくれたのはTwitterの中の人なんですかね。それなら少しは理解出来るんですけど。
上記の「くだらない」と同様です。
Q. スパムでしょ。
不特定ではなく「小諸そば」とつぶやいた人に対して、そのツイートを引用(リツイート)していただけです。
大量送信やなりすましなど、悪意を持った動作は全くしていません。人力で投稿するのと全く変わらないと思っています。
スパムの定義については、Twitterの公式ヘルプにも記載されています。
http://jptwitterhelp.blogspot.com/
「スパムと不正利用 - *スパム」の項に掲載されている内容と、ひとつずつ検証したいと思います。
・短時間に多数のユーザーをフォローした場合
していません。フォローしていただいた方に、フォロー返しという仕組みです。
・短期間に、特に自動化された手段で、フォローおよびフォローの解除をした場合(過剰にフォロワーを増減する行為)
していません。上記と同様です。
・フォロワーを増やしたり、自分のプロフィールを注目させるなどの目的でフォローおよびフォローの解除を繰り返した場合
していません。上記と同様です。
・フォローしている人数に比べ、フォローされている人数がごく少ない場合
上記の仕様から、ほぼ「フォロー数≒被フォロー数」でした。
・つぶやきの更新が、主にリンクのみで作られており、人的でない場合
・多数の人にブロックされている場合
これは客観的な数字になるのでわかりません。仮にも該当するなら、これでしょう。ただし、私としては、それほど多い数だったとは認識していません。
・そのアカウントに対し、多くのスパムの苦情がある場合
上記と同様です。
・重複した内容を、複数アカウントから投稿したり、ひとつのアカウントで重複した投稿を複数した場合
重複投稿、複数アカウントは使用していません。
・「#」(ハッシュタグ)を使用し、そのトピックとは関係のない投稿を複数した場合
ハッシュダグは使用していません。
・トレンドや、人気のトピックに向けて関係のない投稿を複数した場合
関係のない投稿はしていません。
・多数のユーザー向けに、同じ内容の@付投稿をした場合
@付投稿でしたが、多数のユーザー向けでも同じ内容ではありません。
・サービスやリンクを多数の人に送信しようと、一方的な@付投稿を多数のユーザーに送った場合
上記と同様です。多数の人には送信していません。
・出所を明示せずに他のユーザーのコンテンツを再投稿した場合
再投稿でしたが、出所は@付で明示しています。
・過剰に他者をフォローしてフォロワーを沢山作る方策を通し、フォロワーを「売る」行為を企てた場合
していません。フォローの仕組みについては既に言及済みなので割愛します。
時には、明らかに異常なツイートを拾うこともありました。
本来の意味とは違う「言葉狩り」などと揶揄もされ、そういったbotを狙うbotも現れました。
これは、先程の公式ヘルプ「ひとつのアカウントで重複した投稿を複数した場合」に該当すると思われるのですが、今となっては言及する気もありません。
リツイートするのはbotだし、異常と感じるのは私の主観です。
お互いにTwitterの利用範囲内で自由に使っているだけなら、もちろん私に相手を咎めることは出来ないでしょう。
判断するのはTwitterの中の人です。それが無いのなら、むしろ私が対応するべきことだと考えるのが自然な流れでしょう。(結果的に、対応はしませんでしたが。)
つまり、そういうことだと考えています。
そんなこともあり、当初からのモチベーションが下がったこと、個人的にもつまらないと思ってきたこと、色々と総合して無駄だと感じできたこと、この辺が停止の理由です。
結果的には色々と勉強になったので良かったと思っています。
botとしての動作は停止しますが、「小諸そばの中の人にアカウントを引き継いでもらう」という夢は無くしていません。
ですが、それに対して積極的に行動する気持ちはありません。このアカウントはいつでも譲る準備をして待っています。
この文章を読んで興味を持った方は、是非ともよろしくお願いします。小諸そばの中の人でなくても、この意志を引き継いでくれる人なら良いと思います。
最後になりますが、小諸そばを展開している三ツ和株式会社様、そして、フォロワーの皆様、応援してくださった皆様、感謝の気持ちとお礼を述べさせてもらいたいと思います。
ありがとうございました。また何処かでお会いしましょう。
駄文・長文・乱文で失礼いたしました。ごきげんよう。さようなら。
JSPだってEL文覚えちゃえばPHP+smartyくらい使いやすいから大した問題は無いよ。
javaなら内部クラスとか使えるから、テーブル表現とかやりやすいし。PHPだとarray()の中に手動でハッシュ追加してそこにテーブル足すとかメモリ構造からすると無茶なことしがちだからな。
どうでもいいけど、業務系で使いがちな言語のくせしてjavaって言語仕様にヒアドキュメント無いんだよな。
俺ソースの中にSQL文ハードコーディングするから、ヒアドキュメント機能ないとコピペ&テストする際にいちいち修正を加えなければいけない糞文字列になっちまうんだが。なんかいいアイデアは無いか。
Perl基礎文法最速マスター - Perl入門〜サンプルコードによるPerl入門〜
http://d.hatena.ne.jp/perlcodesample/20091226/1264257759]
Route 477 - Ruby基礎文法最速マスター - , 1. 基礎 , 2. 数値 , 3. 文字列 , 4. 配列 , 5. ハッシュ , 6. 制御文 , 7. サブルーチン , 8. ファイル入出力 , 知っておいた方がよい文法 , 余談 , (おまけ)Ruby書籍紹介
http://route477.net/d/?date=20100125]
http://www.1x1.jp/blog/2010/01/php-basic-syntax.html]
http://d.hatena.ne.jp/dplusplus/20100126/p1]
昔勤めてた会社の人が「年にひとつぐらいは(仕事以外で)新しい言語、フレームワークに触れるといいよ」みたいなことを言っていたのでこれを機に(正直好きではなかった)Perlもはじめてみようかなと。
Java基礎文法最速マスター - 何かしらの言語による記述を解析する日記
http://d.hatena.ne.jp/nattou_curry_2/20100130/1264821094]
LLじゃないのも出てきたので改題。このへんいっぱつで Mece になるようにできないのがしょぼいなー。
ところで増田ではカギ括弧でくくってもリンクが正しく認識されないしhttp記法のタイトルもリンクにならないしイケてないのなんとかできないのかな。