16/05/30 17:20:40.14 SiNcM0fD.net
>>304
別に検査してなければ項目なしでもいいんだけど、描画するコードでループの一番内側がセルの数に
なるようなループして、いちいちundefinedかどうか判定するようなロジックにするの?
311:デフォルトの名無しさん
16/05/30 17:43:51.15 /sRU0ua4.net
乱視軸って何だ?
312:デフォルトの名無しさん
16/05/30 18:22:59.82 ht1IyunN.net
凄くタイムリーな質問だと思うんですが
var a = [];
a.last = function () {
let len = this.length;
return 0 < len ? this[len - 1] : null;
}
みたいな、範囲チェック外はnull返すようなことは不要ですか?
これは仕様としてnullが必要だからそうしてるのではなくて、
まぁせっかくチェックしたんだから返すとしたらnullだろうな、
くらいの判断でそうしてます。
それとも a.last = function () {return this[this.length - 1];} で十分ですか?
「javascriptは単にundefinedを返してくれるので範囲チェックしなくていい」
っていうふうにポジティブな解釈していいですか?
313:デフォルトの名無しさん
16/05/30 18:31:32.90 hoOpO478.net
>>307
nullを返すより0な
314:デフォルトの名無しさん
16/05/30 18:34:38.43 SiNcM0fD.net
>>307
a[undefined]のときa.lastがundefinedになるということと、自分がなにをしたくてなにを求めているのかを
勘案すれば、どう実装すべきか決定できるのでは
315:デフォルトの名無しさん
16/05/30 18:48:17.09 ht1IyunN.net
>>308
ありがとうございます。でもそれだと、
配列に整数を入れて使うとき悶絶しちゃうと思うんですがw
いや…それは結局nullのときでも一緒ですよね。
undefinedのときでも一緒ではありますね。
それらを代入できるという以上…。
>>309
ありがとうございます。
「a[undefined]のとき」っという表現が不勉強で分からなかったのですが、
いずれにせよ var value = a.last() のあとは単に
if (value) するくらいのことしか考えてませんのでundefinedで十分そうです。
316:デフォルトの名無しさん
16/05/30 18:53:42.83 PwZzpqig.net
>>305
ループの内側の数とか言うより、描画用の項目定義は項目定義である。
医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
それは医者次第だけど、内部的には
xpathみたいなもので指定する。
>>306
ごめん、軸度だな。
>>307
lastの用途次第だけど、popの仕様と合わせるならundefinedだと思う。
俺はpopしてundefinedじゃなければもう一回pushしておく。
そのためには、undefinedをpushしなくても良い実装にしておかなきゃならんけど。
317:デフォルトの名無しさん
16/05/30 18:59:41.70 ht1IyunN.net
>>311
ありがとうございます。popに合わせておこうと思います。
あとはせっかくなんで使う側はせめて if (a.last())
するよりは if (a.last() === void 0) としてみようかと。
318:デフォルトの名無しさん
16/05/30 19:12:01.08 /sRU0ua4.net
>>311
軸度とは
319:デフォルトの名無しさん
16/05/30 19:22:00.69 PwZzpqig.net
>>313
なんて言うか、正直眼科は不勉強だけど、乱視がどの方向にあるかだよ。
メガネ作るとき、放射状の線見せられて、どの方向が濃いか聞かれるじゃん。
あれを答えてもらった方向に90°足した、何度の方向に対して焦点がずれてるかが乱視軸度だよ。
普通は度で持つけど、たまにラジアンで持ってたりする。
320:デフォルトの名無しさん
16/05/30 19:42:49.89 4aFguERh.net
300すぎてまだやってんのかよ
頭おかC
321:デフォルトの名無しさん
16/05/30 20:20:03.03 /sRU0ua4.net
>>314
そんな事聞かれるのかよ
知らなかった
322:デフォルトの名無しさん
16/05/30 21:22:29.72 PwZzpqig.net
>>315
なんか話題提供してよ。
323:デフォルトの名無しさん
16/05/30 21:24:24.86 PwZzpqig.net
>>316
こういったふうに、ただの視力検査でも、人によってやらないものもあるんだよ。
324:デフォルトの名無しさん
16/05/30 23:02:14.89 Kp7czbyF.net
>>43
リクエスト無いみたいだし、もう無しで良いってことにさせてもらうぜ。
俺も大量にこのスレに書き込んだ。多分そちらにも多少は有効情報があっただろうし。
このスレは俺よりも20年先を行くスーパーハカーだらけらしいし、とりあえず引退してみよう。
>>312
多態しないのなら if (a.length>0) にしとけ
>>311
> 俺はpopしてundefinedじゃなければもう一回pushしておく。
おい!
ってかまじめな話、もうちょっと普通のやり方を覚えた方がいいぞ。
undefinedについて気になるのなら、他の知っている奴が回答するか、少し待つんだね。
それで出てこないようなら、俺のスレに聞きに来れば教えてやるよ。
とはいえ君は無駄�
325:ノ煽りすぎだ。だから出てこないかもしれない。 しかし、君は自力で辿り着けるレベルだから、ヒントを与えておこう。 君はNaNの仕様を知っている。で、それを便利に使っているわけだが、>>106 あれはそういう仕様が必要だったからなんだよ。 だからNaNの正しい使い方を調べて、そこから推測すれば、 undefined許容/非許容のそれぞれの得失を理解できる。 その上でundefined許容を選択するのなら、それは「設計」なんだよ。やればいい。 ところで、俺および俺が立てたスレがどうにも気に入らない奴がこのスレに複数いるだろ? 君達がやるべき事は、>>297に答えることだ。 そうしないと、俺のスレが流れ出しちゃうぜ? あとついでだが、やはり君の案件は「正規」ではないよ。運用上「本番系」になっているだけだ。 読み出せないDBなんてあり得ないだろ?最初から何らかのビュワーが付いてる。 JavaScriptで受けるのなら、APIはJSON一択だろ? 今何かしら妙なAPIなのは、元々のビュワー用のAPIだからだよ。 そして何らかの理由で「正規」ビュワーが破棄され、今のビュワーになったんだよ。多分。
326:デフォルトの名無しさん
16/05/30 23:24:12.29 ILfmqIwk.net
俺の予想ではarraybuffer
327:デフォルトの名無しさん
16/05/30 23:41:05.43 Kp7czbyF.net
>>320
APIのことか?
ビュワーはexeまたはelf等バイナリで、古い機材では動くが、新端末では動かないから、JS化したと。
あり得るシナリオだね。
だとすればParserでラップして終わりだし、鯖は当然そのまま運用するわな。
今のところの証言と状況証拠とは一致するw
328:デフォルトの名無しさん
16/05/31 00:15:08.11 KJUuPgzh.net
>>307
混乱を招く回答が追加されているので伝えるが、undefined を返す設計が妥当だと思う
例えば、Map.prototype.get は存在しないキーを検索したら undefined を返す
あなたが>>310で気が付いたように配列の値に undefined が代入されていれば、値があるのかないのか区別付かない
では、なぜ Map.prototype.get が undefined を返す設計になっているのかといえば、未定義のキーを参照したら未定義値を返す暗黙の了解があるからだろう
オブジェクトでも存在しないプロパティを参照すれば undefined を返す
(少なくとも俺の知る限りでは)プロパティが存在して undefined が代入されている JavaScript の仕様は存在しない
よって、あなたが配列のプロパティに undefined を代入しなければ十分に区別できるだろう
それから蛇足ではあるが、>>307のコードでは a === [,,,] な場合に意図せず、undefined を返す(>>307の設計通りなら null を返すのが正しい)
Object.prototype.hasOwnProperty を使うことで期待通りの結果を得ることができるだろう
Array.prototype.last = function last () {
var i = this.length;
while (i && !this.hasOwnProperty(--i));
return this[i];
};
console.log([1,2,,,,].last()); // 2
console.log([,,,,].last()); // undefined
console.log([].last()); // undefine
329:デフォルトの名無しさん
16/05/31 01:17:08.26 l5PlpRpu.net
>>319
めんどくさいやつだなぁ。
煽りすぎた、って、煽られて沸騰した奴が言ったら二重どころか三重くらいにみっともないぞ。
煽って面白くなるだけ。
ビュワー用のAPIとか、だからさあ。。
電文だ、って言ってんじゃん。
電文、理解できない?知らないの?
>>320のほぼそのまま、今もう一回そこ書くならもうちょい綺麗にパーズするけど、要は[通信開始][要素種][要素長]....[チェックサム][通信終了]みたいなもの。
そのまま、要素種が始まったら要素長取り出して、その中も要素種と要素長で出来てるから、って形。
正規もなんもないよ。妙なAPIって、これハード屋的には何一つ妙じゃないよ。
案件ってか、自社製品だけど、運用 上の本番系、ってどんな寝言だよ。
運用してるなら、それは即ち本番系だろ。
おまえ学生なの?コードとして落とした事無いとか、無意味な理想論語ったりとか、結構痛いよ。
330:デフォルトの名無しさん
16/05/31 01:56:46.28 C610iy1k.net
>>323
あんさん2chフィルタ通して見ても尊大やし態度悪すぎやで
学生と比べて技術力高いわけでもなし、人を煽れる立場や無いやろ?
331:デフォルトの名無しさん
16/05/31 02:06:15.74 C610iy1k.net
ちな電文はバイナリ転送形式の事やないで
JSONだろうと1メッセージ単位なら電文や
332:デフォルトの名無しさん
16/05/31 03:10:34.97 24hp8pmx.net
>>323
お前、、、いちいち指摘するのが面倒なくらい色々読み間違ってるぞ、、、、
まあ俺の書き方もまずい点はあったが、、、
一応、俺は聞きに来れば答えるというスタンスだったんだ。
(出てこないってのは「他の知っている奴」のことであって、俺のことではないつもりだった。
ただこの点は俺の書き方が悪かった)
とはいえ、面倒だし、今回は他の連中も正解を知っていることが確定しているから、
天秤にかければ誰か答えるかと思ってな。
しかし、まあもう無理だと思うが。俺も面倒になってきたし。
学生の作品と企業製品では、検証レベルが全然違う。
undefined非許容というのは、まともに検証すれば自明なんだよ。だからみんな知っている。
逆にそれを知らないってのは、お前は検証してないって事なんだよ。
しかも医療系だろ?煽り抜きでヤバイと思うぞ。
> 電文
知らんよ。てかこれって一般用語か?ググッた限りはただの「パソコン」と同レベルの集合名詞だと思うが。
俺はWeb系ではないので、Web系のローカル用語は知らんよ。
XHRでArrayBufferなら最初からそう言ってくれたほうが良かった。
とはいえそこは本題ではないが。
>>324
おう、ありがとうよ。
俺は見ての通りこのスタンスだし、これくらいの粘着や煽りはいつも通りだ。
特段怒っているわけではないのだが、そう見えたのなら済まない。
というか、Web系の連中のこの自信はどこから来るのか、本当にかなり疑問だ。
お前ら、プログラミング一般からすると、かなり「ひよこ」だと思うぞ。
大口を叩くのは、10k行のコードを普通に取り扱えるようになってからにした方がいい。
そんな奴はこの界隈にはさらにいるのだから。
333:デフォルトの名無しさん
16/05/31 09:05:24.34 l5PlpRpu.net
>>324
わざとこの態度だからなぁ。
逆に、沸点低いやつがよくわかっていいじゃん。
沸点低いやつが何言っても、反射的に言ってるだけなんだし。
>>325
おう。JSONとして流れてきたらそりゃJSONという電文だな。
バイナリパスカル文字列式可変長電文か。
>>326
undefined許容というか、ずっと読み間違えてない?
データとしてundefinedを入れるわけではなくて、
解釈した結果そのフィールドには値が入っていない→それをオブジェクトに起こしても、そのプロパティ自体が設定されていない、だよ?
可能な限りの、「データは入ってませんでした」を設定して回るほうが現実的で無いよ。
俺、あとウェブ系じゃないからね。
基本はDB屋だよ。
DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
334:デフォルトの名無しさん
16/05/31 09:19:18.21 KJUuPgzh.net
> DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
誰もそんなことは言ってなかったと思うが、何が許せないんだろうな
このスレだと hasOwnProperty, forEach, keys で判定する処理は見かけたが
335:デフォルトの名無しさん
16/05/31 09:20:08.42 EjSYfMvt.net
自演開始~
336:デフォルトの名無しさん
16/05/31 09:40:27.01 l5PlpRpu.net
>>328
そりゃいいよ。それはそれで。
最初に初期値で初期化しとけば良いとか、そういうアホに対しての反論だから。
337:デフォルトの名無しさん
16/05/31 10:1
338:6:07.42 ID:LdI3VN67.net
339:デフォルトの名無しさん
16/05/31 10:17:56.42 d9LvTqQR.net
URLリンク(tpc.googlesyndication.com)
これの答えは何なの?
340:デフォルトの名無しさん
16/05/31 10:21:15.79 LdI3VN67.net
>>311
> ループの内側の数とか言うより、描画用の項目定義は項目定義である。
> 医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
> それは医者次第だけど、内部的には
> xpathみたいなもので指定する。
なかなか話が通じないが、要は表示項目数×人数のループをしてundefinedかどうかを
判定するということだろ?表示項目数が30で20人分表示なら600回の処理をする。
そうじゃなくて、存在するデータ側を元に表示するか、あるいは全く別のアプローチをすれば
いちいちundefinedかどうかなんて判定は不要ではとうこと。
341:デフォルトの名無しさん
16/05/31 10:37:22.17 wxR5ZVVT.net
>>331
無ければ困る事もわかるけど、凄く嫌い。
行列のDBは集合に対しての操作だと意識してないと最悪の結果に陥ると思うわ。
>>333
ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
提示してみてくれよ。
まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。
342:デフォルトの名無しさん
16/05/31 11:08:00.91 LdI3VN67.net
>>334
> ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
> 提示してみてくれよ。
> まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。
グラフという単語がでてきたので話が根本的にかみ合ってない気もするが、基本的にはそういうことだよ。
テーブルで表示することを考えれば、項目が決まれば行あるいは列が決まり、人が決まれば列あるいは
行が決まる。それをメモリ上のデータ構造として作成して一気にテーブル化するとか、DOMを直接書き
換えるとか、あるいは、テンプレートを使うか、データバインディングしてModelが自動的にViewに反映
されるようにするとか、やりようはいくらでもある。
グラフのメタファーで言えば、定義域:0~100, 値域:0~100のグラフがあるとき、(1, 3), (2, 5)という二つの
データしか無ければ二回プロットすれば終了ということだよ。
343:デフォルトの名無しさん
16/05/31 12:25:58.83 wxR5ZVVT.net
>>335
やりようはいくらでもある、な。
アホか。
データバインディングするにしても、いや、バインディングするならそれこそ、データは歯抜けでいいだろう。
データバインディングするってことは、ビュー側から、どの要素をとバインドすべきだし。
一気にメモリに載せてられるかww
344:デフォルトの名無しさん
16/05/31 12:33:55.20 wxR5ZVVT.net
しかし、何故undefined(というか、値が無いもの)とnullを別物と理解するのがこれほど彼にとって難しいのかわからんな。
345:デフォルトの名無しさん
16/05/31 13:25:23.48 LdI3VN67.net
>>336-337
なにか勘違いされてる気もするけど、歯抜けのデータが悪いとは一言も言ってないよ。
>>304みたいなデータが戻るケースはありがちだし。
で、俺が疑問に思ったのは、undefinedかどうかを判定する必要があるということは、
こんなコード書くの?ってこと。
display_items.each (function(display_item) {
data.users.each (function(user) {
// block A: ここがループの一番内側
output('<td>' + user.hasOwnProperty(display_item) ? user.item_value : '' + '</td>');
});
});
これだと、いつでもdisplay_items.count * data.users.count回のhasOwnProperty()が呼び出される。
display_items.count * data.users.count = 1,000のとき、表示するデータ数が1個だったときでも
1,000回の実行が必要。
そうじゃなくて、逆からのアプローチはできないのという疑問。
逆というのは、「存在するデータを元にする」やりかた。
346:デフォルトの名無しさん
16/05/31 13:26:54.24 LdI3VN67.net
君は君の問題を100%把握してるだろけど、俺(たち)は断片的な君の書き込み内容から
どのような問題なのかを想像することしかできないわけお。
>>336
> 一気にメモリに載せてられるかww
とか言われても、困惑するのみ。
347:デフォルトの名無しさん
16/05/31 13:49:49.08 wxR5ZVVT.net
>>339
できないなら、自分には理解できない事だと納得して無意味な提案やめて寝ればいいのにり
348:デフォルトの名無しさん
16/05/31 13:54:56.19 LdI3VN67.net
>>340
まぁ、ざっと読むと君の環境はこのスレ的には異端みたいだし、フロントエンドエンジニアでもないようだから
どうでもいいっちゃいいんだけどね。
349:デフォルトの名無しさん
16/05/31 14:14:48.43 WCbBJW5L.net
>>338
想像でしかないんだけど表示項目1に対してデータ項目がn(n>0)って可能性とか
たとえば視力検査の欄に表示する際
{"視力左":1.0,"視力右":1.0}の両方があって初めて表示するとか
{"視力左":1.0,"視力右":1.0}→「おっけー」って表示
{"視力左":1.0,"視力右":null}→「右目は測りきれない4.0とか超いいかも」って表示
{ "視力右":1.0}→「左目測ってない」って表示
{"視力左":1.0 }→「右目測ってない」って表示
{ }→「視力検査してないっぽい」って表示
350:デフォルトの名無しさん
16/05/31 14:29:29.32 mikttA8+.net
その例はちょっと良くないが、言いたいことはあっている。
undefinedはシステムからの処理上の値が無いですよという知らせ。
nullは誰かが明示的にそれを表明したもの。
351:デフォルトの名無しさん
16/05/31 15:57:03.36 wxR5ZVVT.net
>>342
あー、それ一番的を射てる。
352:デフォルトの名無しさん
16/05/31 18:51:35.17 znL0FvMW.net
jsやっている人はc、c++などのnullしかない言語ではundefinedが無いのはどうするのですか?困りますよね?
353:デフォルトの名無しさん
16/05/31 19:40:15.04 e360ttrJ.net
undefinedを値として使ってるバカなんて知るかよ
大多数の人間はnull返せハゲって思ってるっての
354:デフォルトの名無しさん
16/05/31 20:00:07.25 JD+3IcFi.net
>>322
ありがとうございます。
ちょっと本題から逸れるんですが、[,,,] の中身が新鮮ですね。
lengthは3で、キーは何も無いと言う。
一見、{0:undefined, 1:undefined, 2:undefined, length:3}
こういう中身になってていいじゃないかと思うんですがそうはしないんですね。
いや、まぁどうでもいいんですが。
あ、次にpush('foo')しときにlength見て{3:'foo', length:4}になるから嬉しいのか。
lengthだけ持ってても十分なのか。なるほどなるほど。
355:デフォルトの名無しさん
16/05/31 20:32:52.55 wxR5ZVVT.net
>>345
nullしかない言語は、dbNullを扱えるようになってるような。
356:デフォルトの名無しさん
16/05/31 22:33:17.75 C610iy1k.net
>>344
末端に判定ロジック大量に積んでるのか
ウンコですね
357:デフォルトの名無しさん
16/05/31 22:51:11.93 ZB9BdGtV.net
>>345
そういった言語では例えば存在しないプロパティにアクセスすると例外となるので必要性が薄い。
JSがスクリプト言語だからこそ映える設計。
>>347
ぶっちゃけ歯抜けはよほどの場面じゃないと推奨しない。
言語エンジンの最適化試行ぶち壊しで気持ち悪い。
あと、Array.prototype.lastなんて夢でも死んでも使わないように。
その機能の標準化が一番危うくてデリケートで予測が付かない段階にきてる。
今最もprototype下に自作してはならない機能の1つ。
358:デフォルトの名無しさん
16/05/31 23:04:26.90 VEM8svzW.net
>>347
> lengthは3で、キーは何も無いと言う。
[,,,] は Array.prototype 系と for 文で走査プロパティが異なるので注意が必要だ
Array.prototype.forEach はプロパティが存在する値のみを走査する為、[,,] では何も走査しない
[,,,].forEach(function (value) { console.log(value); }); // コンソールに何も出力しない
[undefined,undefined,undefined].forEach(function (value) { console.log(value); }); // undefined を3回出力する
少し、話がそれるが、プロパティの存在する値にだけ処理を行うというのは重要なことだ
>>342の例でいえば、次のように書けるだろう
URLリンク(jsfiddle.net)
対象プロパティが String 型なので falsy な値として '' を使用している
null を使うのなら対象が Object 型である必要がある
359:デフォルトの名無しさん
16/05/31 23:13:56.84 C610iy1k.net
これもう議論にならんやろ
本人以外は皆仕様知っててこの態度なんやし
360:デフォルトの名無しさん
16/05/31 23:17:06.49 VEM8svzW.net
>>347
>>307でprototype拡張されていなかったのでいわなくても伝わるだろうと思って伏せていたが、Array.prototype.last はあくまでも便宜上のサンプルねので念のため
Array.prototype 拡張は将来的に同名プロパティが定義されたときに互換性が崩れるのでお勧めしない
静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
何らかの理由でどうしても定義したいのなら一昔前のfor-inによる汚染問題を解消するために Object.defineProperty を使うべきだ
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, function last () {}});
361:デフォルトの名無しさん
16/05/31 23:19:21.13 VEM8svzW.net
>>353は SyntaxError だったので訂正
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, value: function last () {}});
362:デフォルトの名無しさん
16/05/31 23:20:01.54 wxR5ZVVT.net
まぁ、何度、経験ないだろ、なんて煽ってもそこだけ返事がないところみると、
「本人以外は全員わかってる」んだろうけど、笑えるわ。
363:デフォルトの名無しさん
16/05/31 23:38:40.59 24hp8pmx.net
>>327
お前はいつか事故るぞ。投薬履歴だって表示が間違っていれば死人が出るんだ。
Web系の「リロードすれば万事おk」のノリでは駄目なんだ。お前はそれですらないが。
ただ、検証を手抜きすれば単価はいくらでも落とせるわけで、このように、
一通りの知識すらない馬鹿を雇って一通りの検証すらせずに出荷する悪徳業者をどうするかは
今後の課題になるのだろうね。
契約上、ソフトウェアのバグについては責任追及できないようになっているのだろうけど、
これまでソフトウェア産業が培ってきた常識すら知らない奴がコーディングし、
まともな検証すらせずに出荷するというのは、業務上過失致死/偽計業務妨害に問われるべきだ。
AS IS WARRANTY を完全に悪用している。
とはいえ、普通に考えればこういう悪徳業者はいつか出てくるわけで、不思議ではない展開だ。
死人が出てこの構造が判明してからでないと、行政は動かない。
願わくば、お前がその最初の犠牲者となり、自業自得を以て業界の浄化に貢献してくれ。
というわけで君には「人殺し君」というあだ名をあげよう。
多分君は既に人を殺しているか、今後人を殺す。
無知も罪なのだよ、業界によっては。
それはさておき、ここに来て気づいたが、 AS IS WARRANTY って性善説ベースだったんだな。
こりゃ性悪説ベースの何かを導入しないと駄目だ。
とはいえ資格なんて糞の役にも立たない業界だし、なかなか難しい。
調べた限りではPL法も適用外だし、悪徳業者はやりたい放題だ。
(ただここまで来るとマ板の話題でスレチだが)
話を聞いている限りこいつは鯖屋で、ソフトウェアの知識は一切無い。
フリーソフト等を組み合わせれば悪徳零細学生レベルでも見目麗しいシステム()を構築でき、
素人を騙せる時代になった。そしてそれがすべて自分の能力で出来たものだと勘違いしている。
(組み合わせる能力はあるが、使われているソフトを記述する能力は無いことに気付いていない)
とはいえ、現実問題として、これを顧客に見抜けというのは不可能だろう。
なんだかなあ。
364:NAS6 ◆n3AmnVhjwc
16/05/31 23:43:38.27 ZnwkUC0d.net
URLリンク(nas6.main.jp)
x3domのサンプル集とライブラリ
完璧な2/3D行列計算ライブラリに仕上がりました
x3domは簡単でいいよ
ポリゴンテスト&ライブラリヘルプ.htmでも見てください
完璧に計算されています^^
365:デフォルトの名無しさん
16/05/31 23:44:24.50 +fB1tt6W.net
> 静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
そうやって作られたのがUnderscore(lodash)というライブラリで
わざわざ作らずとも、 _.last([1,2,3]) で取得できるんだよ。
366:デフォルトの名無しさん
16/05/31 23:50:20.60 C610iy1k.net
>>355
RASISすら守っとらんみたいやし
RDB使ってる現場やけど、そんな場当たり的な実装の経験ないで
普通はリクエスト間違ったら全部エラーやしfail safe前提や
あんさんが無知すぎるんやで?
367:デフォルトの名無しさん
16/06/01 00:02:09.20 J/AVgXyA.net
DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
なんでそんな無理して知ったかぶるんやろ
368:デフォルトの名無しさん
16/06/01 00:03:48.85 XVpspPb0.net
>>357
行列のライブラリはどれが有名か知らんけど、
このglMatrix.jsはスター多くていいんじゃないかな?
URLリンク(spphire9.wordpress.com)
> 前に調べたときは全然見つからなかったけど、WebGL関係で調べていたら結構見つかったのでメモ。
>
> glMatrix.js
> URLリンク(github.com)
> URLリンク(glmatrix.net)
> webgl-mjs URLリンク(code.google.com)
> Sylvester URLリンク(sylvester.jcoglan.com)
> CanvasMatrix.js khronosのWebGLのチュートリアルで使っているがどこでダウンロードできるのか分からなかった
> glMatrix.jsがシンプルなのでオススメ。
>
> 2014/01/19追記
> glMatrixの公式サイトができてた。
369:デフォルトの名無しさん
16/06/01 00:04:59.00 XVpspPb0.net
>>360
> DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
どういうこと?
nullがあるとjoin出来ないとかそういう話?
なわけないよな。left joinとかあるわけだし。
370:デフォルトの名無しさん
16/06/01 00:11:15.87 XVpspPb0.net
あとすべての項目をjoinに使うわけでもないし。
371:NAS6 ◆n3AmnVhjwc
16/06/01 00:18:19.22 CPNT1MjH.net
>>361
ライブラリを作る前に探したけど
回転行列←→回転ベクトル、回転行列←→四元数
この相互変換を扱ってるのは見当たらなかったよ
372:デフォルトの名無しさん
16/06/01 00:19:48.60 XVpspPb0.net
>>364
興味ない。
373:デフォルトの名無しさん
16/06/01 00:20:56.87 XVpspPb0.net
>>364
もう少し丁寧に言うね。
githubで公開してもいないようなものを使う気にはならない。
374:デフォルトの名無しさん
16/06/01 00:21:24.97 iqAUu6wp.net
>>360
俺>>342なんだけど挙げたデータ構造は
あくまで俺がてきとーに想像しただけなので
それで誤解与えてしまってたらごめん
375:デフォルトの名無しさん
16/06/01 00:42:46.14 JLTaiLCk.net
>>359-360
多分そちらも気づいていると思うけど、人殺し君には「信頼性を上げる」という感覚がないんだ。
だから俺たちが何を問題視しているのか、全く
376:通じていない。 ただ、当たり前のように信頼性を上げようと努力してきた側からすると、 業界全体が悪徳業者に対して全く無防備だったってのが結構ショックなんだよね、、、 というかよくこれまでこれで回ってたなと。
377:デフォルトの名無しさん
16/06/01 00:43:15.64 r3hfxk1X.net
>>356
必死すぎて笑えるw
おつかれさん、底辺学生さん。
378:デフォルトの名無しさん
16/06/01 00:46:19.01 XVpspPb0.net
>>368
そちらってお前誰だよw
379:デフォルトの名無しさん
16/06/01 01:00:31.81 +8Has+9Z.net
>>357
あなたは x3dom.js と比較して何がどう「完璧」なのかを説明する必要があると思うのだが
ドキュメントも簡易説明文のみで x3dom.org と比べれば雲泥の差があるように思う
URLリンク(www.x3dom.org)
380:デフォルトの名無しさん
16/06/01 01:02:19.24 J/AVgXyA.net
>>362-363
関連があるのに関連を付けずに
見つからない場合もright joinと同じ事するんやろ?
破綻しとるやん
381:デフォルトの名無しさん
16/06/01 01:05:25.70 XVpspPb0.net
>>372
関連つければいいだけだよね?
まさか片方にnullが入っていると関連がつけられないとでも?
left joinでもright joinでも、別に使うことに問題無いし
問題ないから標準機能なのだし、どこが破綻?
DB素人なら、すいません、素人だから
勘違いしてましたって謝れば許してあげるよ?w
382:デフォルトの名無しさん
16/06/01 01:10:30.88 +8Has+9Z.net
言い争っている人、所詮は机上の空論なのでコードを書いて語り合ってくれ
各自にとっては空論ではないのであろうが、持論が相手に正しく伝わっているとは思えん
383:デフォルトの名無しさん
16/06/01 01:12:17.78 XVpspPb0.net
>>374
今はRDBMSの超基本レベルことを分かってないやつが相手みたいだから
そこまでやる必要ないかなw
384:デフォルトの名無しさん
16/06/01 01:22:41.36 JLTaiLCk.net
>>374
いや十分通じてるよ。表面的には。
ただ、根本的な部分で人殺し君は分かってないから、通じない。
とはいえこれは、ここでなんとかなる話ではないよ。これではどうやっても平行線だ。
385:デフォルトの名無しさん
16/06/01 01:25:01.12 +8Has+9Z.net
>>375
お互いに相手が低レベルと思っているように読めるんだがな
相互理解が目的なら言葉を選べ
馬鹿にしたいなら他の人の邪魔になるから口を慎め
386:デフォルトの名無しさん
16/06/01 01:31:01.82 XVpspPb0.net
>>377
質問に答えられない方はどちらか?
それを見ればわかるでしょ。
まだ、レス帰ってきてないよw
387:デフォルトの名無しさん
16/06/01 02:20:52.04 r3hfxk1X.net
なんか敵を見間違えてるんじゃねえの?
余裕無い奴は大変だな。
そりゃ、せっかくundefinedなのを無意味にnullで初期化とかドヤ顔で言っちゃうわけだ。
388:デフォルトの名無しさん
16/06/01 09:21:35.68 jwFJ9KH2.net
こんなにもめるんならundefinedは廃止してnullのみにすべき。
389:デフォルトの名無しさん
16/06/01 09:26:09.02 P2FwW4b5.net
社会から未定義の連中が未定義値に物申すとか1万年早い
390:デフォルトの名無しさん
16/06/01 09:33:08.65 wzx/dknC.net
嫌なら定義するなよ
391:デフォルトの名無しさん
16/06/01 13:31:22.60 KEu/R4xX.net
まぁ、null統一、すべてのプロパティは埋めて、ビューから相当するデータ座標を取らずに、データからビューを定義しよう、そのためには、
ビューの状態全体に対して、必要か不必要かは置いておいてすべてのビューが表示しうる形での裏画面を持っておこう、
って大富豪の主張がありうる、って話だよね。
面白い事に。
XMLDBとか、KVSとか、多次元配列DBに向いてない人なんだろうけど。
そもそもJOIN出来ないからなんたら、なんていう人は、そもそもそういうDBに向いてないけど。
392:デフォルトの名無しさん
16/06/02 01:24:38.27 g2tgMhPe.net
>>377
犬の糞と猫の糞。
393:デフォルトの名無しさん
16/06/02 02:42:13.57 XqRYmg3l.net
>>373
関連つければいいだけだよね
その通り
つけてないけど
394:デフォルトの名無しさん
16/06/02 02:43:59.04 XqRYmg3l.net
自分の説明してる仕様で実現できてる事が何かも把握してないみたいやね
こりゃ周りの奴らは大変やで
395:デフォルトの名無しさん
16/06/02 08:36:48.79 8VCgKElP.net
前提知識で合意のとれてない議論に意味があるのか
端から見たらどちらも相手を見下す事が主論になってる
どちらの方が正しいとか、もうどうでもいいから
396:デフォルトの名無しさん
16/06/02 08:39:24.52 I85Xb9LU.net
バカに議論はできない
壁に向かって話してろゴミ
397:デフォルトの名無しさん
16/06/02 08:51:25.41 0vkxmVo8.net
脳味噌がnullってことで解決
398:デフォルトの名無しさん
16/06/02 09:15:26.93 oJukbexp.net
nullほど。納得
399:デフォルトの名無しさん
16/06/02 13:24:04.29 BtmdPReZ.net
結局nullは要るとして、undefinedが無ければ代わりにissetみたいなのが要る。
内部を露出して活用を許すのと、メタ的に内部に干渉するの、どちらが良いかという話。
400:デフォルトの名無しさん
16/06/02 13:58:00.69 tGqw3Zei.net
>>388
上手いこと云うな
オレのコピペにしますん
401:デフォルトの名無しさん
16/06/02 15:58:54.65 gjH3g/Dc.net
>>391
その通り。特に動的言語なら。
mallocした結果をどの型として使うか論にも近いけど。
402:デフォルトの名無しさん
16/06/02 16:21:31.47 0vkxmVo8.net
nullなことばっかり言ってるんじゃないよ
403:デフォルトの名無しさん
16/06/02 16:42:37.48 T7FoO03Y.net
(´∀`) ぬるぽ
404:デフォルトの名無しさん
16/06/02 16:44:57.76 tGqw3Zei.net
ガッ
405:デフォルトの名無しさん
16/06/02 17:03:14.89 E1oCL6WJ.net
.r'"''、 _,,,.. -ー''''''ー、 ./゙'〟 ._ ―ー-, /\ /\ ┏┓┏┓
.,iー-、 .゙l l,,_ / _ . l ! .!./ ゝ-、 /:::::::ヽ____/::::::::ヽ、 ┃┃┃┃
.!, .゙'" ヽ. ヽ,,,,.. -''ン゛ .} .| .゛ ,,、 〔゙|.ο ! 丿 ::.__ .::::::::::::: __ ::::ヽ_ ┃┃┃┃
l , r .iヽ l . ,/ .,./ l / _| ‘'ヽ / / /。 ヽ_ヽv /: /。ヽ ::::::ヽ ┃┃┃┃
./ .l/ / .! .! .... ‐゛ ‘''-, .! .i| ´ |┏━/ / ̄ ̄√___丶  ̄ ̄\ ::::|━┓┃┃┃┃
.l゙ , .i′亅 ! / .x;;'''''''、 . ! ! │ゝ―i .厂 ┃ | .:::::::::: / / tーーー|ヽ ..::::: ::| ┃┃┃┃┃
│ i゙.l ,ト--″ l .!_ .,,、 ゙'、 | .,! ! .|., ―┘ / ┗━| .:::::. ..: | |ヽ ::|━┛┃┃┃┃
.! .∨ .,..、 l゙ .| .l. l ∨ ! .| .] i‐ 、 .ヽ、 | ::: | |⊂ニヽ| | :::::| ┗┛┗┛
. l. : ,i┐゙‐'゛ ゙l l. `″ / .! .! ゝ./ . l //| : | | |:::T::::| ! .::| ┏┓┏┓
`''''" ヽ,,,,,,..-'―′ \,,,,,,,,,.. '" ゝ ノゝ、,,,,,./ -.../// \: ト--^^^^^┤ 丿 \ . ┗┛┗┛
406:デフォルトの名無しさん
16/06/02 17:41:24.84 tGqw3Zei.net
∧
< >_∧
= ()二)V;・∀・)
\ヽ ノ )
ノ(○´ノ ガッ
(_ノ(__)
407:デフォルトの名無しさん
16/06/02 19:45:18.42 foj8oVvi.net
__ 、]l./⌒ヽ、 `ヽ、 ,r'7'"´Z__
`ヽ `ヽ、-v‐'`ヾミ| |/三ミヽ `iーr=< ─フ
< /´ r'´ ` ` \ `| ノ ∠_
`ヽ、__// / |/| ヽ __\ \ヽ |く ___彡'′
``ー// |_i,|-‐| l ゙、ヽ `ヽ-、|! | `ヽ=='´
l/| | '| |!|,==| ヽヽr'⌒ヽ|ヽ| | |
┏┓ ┏━━┓ | || `Y ,r‐、 ヽl,_)ヽ ゙、_ | | |. ┏━┓
┏┛┗┓┗━┓┃ ...ヽリ゙! | l::ー':| |:::::::} |. | / l|`! |i |. ┃ ┃
┗┓┏┛ ┃┃┏━━━━.j | l|.! l::::::ノ , ヽ-' '´ i/| !|/ | |リ ━━┓┃ ┃
┃┃ ┏━┛┃┃ ┌┐ | l| { //` iー‐‐ 'i 〃/ j|| ||. |ノ ┃┃ ┃
┃┃ ┃┏┓┃┗━━.んvヘvヘゝ | l| ヽ ヽ / _,.ィ ノ/川l/.━━━┛┗━┛
┃┃ ┏┛┃┃┗┓ i .i ゙i\ゝ`` ‐゙='=''"´|二レ'l/″ ┏━┓
┗┛ ┗━┛┗━┛ ノ ! --─‐''''"メ」_,、-‐''´ ̄ヽ、 ┗━┛
r|__ ト、,-<"´´ /ト、
| { r'´ `l l /|| ヽ
゙、 } } | _|___,,、-─‐'´ | ゙、
`‐r'.,_,.ノヽ、__ノ/ | | |、__r'`゙′
| |/ i |
| | |
408:デフォルトの名無しさん
16/06/02 23:25:10.25 3RkkmY6H.net
>>385
> 関連つければいいだけだよね
> その通り
> つけてないけど
ってことは、ORM使ってないのか?
ORM使ってプログラム言語でモデルを定義していってその関連もモデルで定義する。
その結果をマイグレーション機能を使ってデータベースに反映、
ついでにER図も生成しちゃうっていうのが今時の開発でしょう?
モデルに関連を定義しておかなければ、あるモデルから関連している
別のモデルのデータを取得するのができないわけで開発効率下がりまくりでしょ?
(厳密に言えば手動でコードを書けば取得できるがそれだとORMを使う意味がない)
409:デフォルトの名無しさん
16/06/03 00:32:44.38 1GfBsi1m.net
出尽くし感があるので纏めておく。
人殺し君は悪徳業者に勤めており、検証不十分のソフトウェアを出荷している。
そのソフトウェアでは競合系のバグ等は完全に放置されている。
平たく言えば、間違った内容/値が表示される事が偶に発生する。
とはいえ、再現確率は低く(1日~1週間に1回程度)、再び確認すればほぼ常に正しい値が表示されるため、
「見間違いだった」として処理されているはず。
結果、このバグによって発生した医療ミスは本当は医者のミスではないのだが、
「医者の過労または不注意による見間違い」として処理される。
また医療ミス自体も隠蔽される方向のため、二重に隠蔽されることになる。
医療系は単価が高いため、悪徳業者にとっては甘い汁状態だ。
医療関係者は金を吸い取られた上に、ぬれぎぬを着せられている可能性がある。
もし仮に医療系の人がこれを見ていて、「表示がおかしかった」事に気づいたことがあった、
また「最近『見間違い』事故が多すぎる」というときは、この類の悪徳業者の製品でないか確かめた方がいい。
悪徳業者の技術レベルは信じられないほど低い。普通のIT関係者なら絶句する。
JavaScriptの場合ソースは確認可能な事が多いので、非公式にでも知り合いのIT実務者を頼り、
ソースを確認してもらえば、すぐに判明すると思う。
このスレのこれまでの議論およびここに記載した情報で十分だと思うが、
もしもっと詳細を確認したい医療関係者がいれば、
以下スレで問い合わせてくれれば対応するかも。
> スレリンク(tech板)
技術的には、
undefinedの何が問題なのか自分で判断できないような馬鹿はundefinedを活用(キリッするなって事だ。
では続きをどうぞ。
410:デフォルトの名無しさん
16/06/03 00:47:09.21 ZgLr+wQe.net
JSONってundefinedがないけれど、
じゃあ存在しない値にアクセスした時各言語ではどんな挙動をするのだろう?
411:デフォルトの名無しさん
16/06/03 01:00:55.33 4VbjelCP.net
>>402
例外が発生する
412:デフォルトの名無しさん
16/06/03 01:57:17.93 qC3of5q8.net
そうじゃない言語もあるんじゃないの?
413:デフォルトの名無しさん
16/06/03 08:37:03.10 yTlzgE6f.net
>>404
例えば?
414:デフォルトの名無しさん
16/06/03 08:38:53.12 oIsEebnB.net
おまえの頭ん中
415:デフォルトの名無しさん
16/06/03 08:41:45.97 WTDDDw9O.net
>>401
検証不十分とか人殺しだとか言ってくれるよなぁ。
試験中ですら、稀にも発生したらハンコリレーで大変な目に遭うよ。
医療ミスがどうとか言ってるけど、隠蔽されるわけないじゃん。
見間違いだった、もあり得ないよ。
お前ら一般側には隠蔽されているように見えるんだろうけど、製造業のラインからの不良品混入程度に、委員会とかで裁かれるよ。
表示内容の確認に対して不足があった、って話になるだろうね。
これ判例もある。医者の判断と機械の値が一致しない場合は、医師の判断が優先され、かつ医師がその間違った値を信じ込んだ場合は「治療行為が行えるのは医師のみ」という原則に則ると、医師が医師である理由を満たせていない、ってやつ。
>>402
undefinedはたくさん存在してるじゃん。
書いてないだけで。
例外が発生するってのは良くない動きだと思うけどな。コスト高い。
416:デフォルトの名無しさん
16/06/03 08:55:59.89 e85j2qyA.net
所詮は命令、人それぞれ
自己満足で解決
417:デフォルトの名無しさん
16/06/03 13:00:26.72 D6MzcBW9.net
>>400
このバカはその手動で書くと言うのを良しとしてるんやで
そしてあと付けで関連つければいいだけだと抜かしよる
付けとらんから問題なんやろ
418:デフォルトの名無しさん
16/06/03 13:11:35.19 WTDDDw9O.net
どういう意味だろ、手動で書くとは。
俺はそれを言った覚えは無いが、言わなくてもデータ:DB:ビュー全体に対するマッパー自体の実装の話だけどね。
419:デフォルトの名無しさん
16/06/03 13:21:31.04 D6MzcBW9.net
>>410
ORMで関連付けてるならundefined云々での分岐なんて出るわけないやろ
その場しのぎで適当言いすぎやろ頭おかしいんちゃうか
420:デフォルトの名無しさん
16/06/03 13:35:21.14 WTDDDw9O.net
>>411
当たり前じゃん。多次元DB触った事無いのかな?
クラスベースな考え方してるからそういう思考なんじゃない?
undefinedで分岐、って考えるから頭追いつかないんじゃないかな。
値は、「定義されていないか、オブジェクトか、値か、値として�
421:\すことのできるオブジェクトか、null」。シンプルじゃん。 javascript屋ならもっと理解早いと思うんだけどな。 HTMLのスクレイピングそっくりなんだけど。
422:デフォルトの名無しさん
16/06/03 16:01:53.05 LK0McYVX.net
>>412
>HTMLのスクレイピング
すまん。
言葉の意味が分からない。
つまり、どういうこと?
423:デフォルトの名無しさん
16/06/03 16:54:41.91 iJVPPkrY.net
>>412
> 値は、「定義されていないか、オブジェクトか、値か、値として表すことのできるオブジェクトか、null」。シンプルじゃん。
これをシンプルだと思ってる奴は何脳なんですかね
424:デフォルトの名無しさん
16/06/03 17:23:55.54 WTDDDw9O.net
>>414
誤解のしようが無いでしょ。
その項目が無かった、は「その項目が無かったクラス」のインスタンスが格納されている、とか、
「その項目はあるけどまだ結果は出ていない」クラスのインスタンスが格納されている、とか、
定義しだすときりがないと思うけど。
npmに登録されているモジュール全体の空フォルダがnpm initしたら作成されたらinode一瞬でなくなるじゃん。
かつ、空ディレクトリ作って準備してても、そのモジュールが更新されたら準備とは異なるし。
さらに、requireは別にpackage.jsonに依存せず使えるよね。
存在チェック、中身のパーズ、その他を経て、成功か失敗か、別のフォルダを見るのか決まるっしょ。
undefinedは、そのディレクトリのない状態。
nullは、module.exportがnullの状態。
425:デフォルトの名無しさん
16/06/03 17:31:46.02 iJVPPkrY.net
>>415
で、お前は何脳なの?
426:デフォルトの名無しさん
16/06/03 17:39:25.42 D6MzcBW9.net
>>412
その多次元DBはテーブル同士の関連必須やで?
あんさんの言ってる仕様はキーそのものが取得できない仕様やから
ORMなんて出しとるけど全く関係ない話やろ
427:デフォルトの名無しさん
16/06/03 17:41:36.14 hMBisG69.net
∩ _rヘ / ヽ∩
. /_ノυ___ιヽ_ \
/ / /⌒ ⌒\ ヽ \
( く /( ●) (●)\ > ) お前らの頭は
\ `/::::::⌒(__人__)⌒:::::\' /
ヽ| |r┬-| |/
\ `ー'´ /
(( (ヽ三/) (ヽ三/) ))
. (((i ) ___ ( i)))
/ / /_ノ ヽ_\ ヽ \
( く /( ●) (●)\ > ) くるくる
\ `/::::::⌒(__人__)⌒:::::\' /
ヽ|  ̄ |/
\ /
∩∩∩ . ∩∩∩
.∩_:||_:|_:| |_:||_:|_:∩
│ ___ つ ⊂ ___ │
ヽ ノ ___ ヽ ノ
/ / /_ノ ヽ、_\ ヽ \
( く o゚((●)) ((●))゚o > ) パーだおwwwwwwwwwwwwwwwwwww
\ `/::::::⌒(__人__)⌒:::::\' /
ヽ| |r┬-| |/
\ | | | /
| | |
`ー'´
428:デフォルトの名無しさん
16/06/03 17:43:47.98 D6MzcBW9.net
説明が酷すぎるやろ
なんやこれわざとやってんのか?
429:デフォルトの名無しさん
16/06/03 17:48:26.82 cxSjYB6R.net
なんでバカに構うの?
おまえもバカなの?
バカ同士気が合うんだな
430:デフォルトの名無しさん
16/06/03 18:46:51.17 qTHUaoua.net
類は友を呼ぶ
431:デフォルトの名無しさん
16/06/03 19:43:22.52 1XJ7uNxl.net
初心者です。
jsonを受信しようと組んでみましたが、うまくいきません。
ブラウザはFireFoxで、FireFoxのスクラッチパッドで試しています。
var req = new XMLHttpRequest();
var requestUrl = 'ここにアドレス';
req.onreadystatechange = function()
{
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
}
req.open( 'GET', requestUrl);
req.send( null );
アドレスの部分をブラウザに直打ちするとブラウザに返ってきたjsonが表示されます。
その状態で上記のスクリプトを動かすとコンソールにjsonが表示されます。
ただ、ブラウザが別のページだとコンソールには何も表示されません。
どのようにすればよろしいでしょうか?
ログには「クロスオリジン要求をブロックしました・・・」のようなメッセージが出ます。
432:デフォルトの名無しさん
16/06/03 20:10:29.09 p9oJqMem.net
また自演かよ
頭いかれてんなこいつ
433:デフォルトの名無しさん
16/06/03 20:20:21.84 WTDDDw9O.net
>>417
テーブル同士の結合www
まあ、おまえが多次元DB使ったとこ無いことは理解したよw
434:デフォルトの名無しさん
16/06/03 20:31:02.84 n0THg94n.net
>>422
頼むから!!!
頼むから!!!もう!!!二度と!!!
onreadystatechangeなんて使わないでくれ!!!!!
readyState?!目が腐る!!!!!
435:デフォルトの名無しさん
16/06/03 21:01:10.72 1XJ7uNxl.net
>>425
どうすればいいか教えてください
マジで困っています
436:デフォルトの名無しさん
16/06/03 21:08:50.41 0G5q73nh.net
>>422
URLリンク(www.html5rocks.com)
437:デフォルトの名無しさん
16/06/03 21:43:27.43 6tJjdY0+.net
nullと比較する時は緩い==の方を使うのは今の時代でも変わりありませんか?
438:デフォルトの名無しさん
16/06/03 21:48:09.86 TYtzKZdV.net
自演乙
439:デフォルトの名無しさん
16/06/03 22:37:38.94 D6MzcBW9.net
>>424
何や君結合と関連の違いも分からんで突っ込んどったんか?
どおりで説明が怪しいわけやな
必死に無知を隠してたんやから
440:デフォルトの名無しさん
16/06/04 00:08:42.59 3lsMjWzh.net
>>422
クロスドメインなら、JSONP かな?
「jsonp クロスドメイン jquery」で検索!
441:デフォルトの名無しさん
16/06/04 08:28:02.51 vbA2Z8Vh.net
>>428
昔から null 判定にはほとんど ToBoolean だけ使っていますが、困ったことはありません。
Polyfill コードを書くときには === を使うこともあります。
442:憲法に守られる在日スパイ・創価・ヤクザ
16/06/04 08:57:11.18 SVOilD6U.net
皇室の危機に気づいていますか?
日本は、2,000年以上続く皇室のおかげで、世界最古の国として、
ギネス認定されているそうです。
自民党は憲法の改正で、日本の国家元首=天皇陛下と条文に明記することで、
天皇制廃止をもくろむ帰化人スパイ勢力(政党、憲法学者、弁護士・言論人等)から、
皇室を守ろうとしています。
※イギリス、オランダ、ノルウェー、デンマーク、スペインなどは国王を国家元首と
憲法上に定めている。(日本同様、政治の実権は有さない。)
※日本で支配的な「護憲派」憲法学者の多くは反天皇。憲法から天皇の条項ごと削除したい
人たちなので、本来は改憲派である。(「象徴天皇制度と日本の来歴」坂本多加雄著より)
公明党「天皇は日本の国家元首ではない」
スレリンク(news板)
自民党・西田昌司
「橋下さん(おおさか維新)の憲法改正は、国柄を破壊することが目的」(自民とは真逆)
URLリンク(www.youtube.com)
日本共産党 「目標としては天皇制をなくす立場に立つ」「天皇制のない民主
443:共和制をめざす」 http://www.jcp.or.jp/jcp/22th-7chuso/key-word/b_1.html#Anchor-0507 反天皇、反皇室で共謀する民主党(現民進党)と田原総一朗 http://blog.liv edoor.jp/fjae/archives/51968115.html 田原総一朗「天皇は、働かないで国民の税金で食ってる。」 https://youtu.be/6Kd1LwY9e0I?t=280 (4:40~) ※ただし、自民単独(カルト公明党抜き)で2/3議席以上与えない限り、 野党と公明党に骨抜きにされる。 ↓ 自民・船田氏…「野党・公明党のみなさんと協議し、衆参両院の3分の2をこえる人が 賛成してくれなければ発議はできない。だからこれから大いなる妥協が始まる。 自民の憲法草案は、 ズタズタになると思って結構だ」 p http://hope.2ch.net/test/read.cgi/seijinewsplus/1425226082/
444:デフォルトの名無しさん
16/06/04 13:17:48.82 BFaRmD8M.net
ジャバスクリプトをあまり意識せずに、ウェブアプリ開発できるソフトってありますか?
445:デフォルトの名無しさん
16/06/04 13:26:46.16 qPi1xPU6.net
ねえよそんな店
446:デフォルトの名無しさん
16/06/04 15:45:22.85 3F7VjM1T.net
>>434
TypeSprict
447:デフォルトの名無しさん
16/06/04 15:58:08.55 ZPhk/eMO.net
TypeScriptは JavaScript+α という言語だからw
448:デフォルトの名無しさん
16/06/04 17:42:38.85 vhhVz63c.net
URLリンク(www.youtube.com)
↑こーいうふうに
タグとか補完して欲しいんですけど、
何のエディタ使えばいいんですか?
Windowsでお願いします。
449:デフォルトの名無しさん
16/06/04 18:03:53.99 BiFmHB/P.net
>>438
URLリンク(www.sublimetext.com)
その動画のやつならWindowsでも使えるよ。
450:デフォルトの名無しさん
16/06/04 18:13:24.70 vhhVz63c.net
ありがとうございます!
451:デフォルトの名無しさん
16/06/04 18:36:53.03 TumyIwY9.net
>>434
「あまり」とは具体的に何ですか?
JavaScriptを使いながらJavaScriptを意識しないのは相当矛盾していると思いますが、何が目的ですか?
452:デフォルトの名無しさん
16/06/04 19:03:08.12 vhhVz63c.net
>>439
動画のしょっぱなのhtmlとか入力すると
必要なタグをボンっと出すやつどうやるんですか??
453:デフォルトの名無しさん
16/06/04 19:46:47.25 925XNPqI.net
>>430
SQLが集合論だとも理解してない人には難しかったかな。
小さなオツムで、undefinedは不要、nullが含まれている行と、行がないのは等価値だと一生騒いで、
そのままエンジニアにならずにホームレスにでもなってくれw
454:デフォルトの名無しさん
16/06/04 19:53:11.80 Eqdj22Ns.net
理解してない論をやる人はいい加減にしてくれ
理解させようと説明して歩み寄るならともかく、お互いに避難しあってるだけでは前進しないぞ
その気がないなら沈黙で返すのが周囲に迷惑をかけない唯一の方法
455:デフォルトの名無しさん
16/06/04 20:54:05.74 71w07kjf.net
>>441
作成時にコーティングを必要とせず、ジャバスクリプトの動的効果は享受したいということです
456:デフォルトの名無しさん
16/06/04 21:05:17.49 AIJuo/HE.net
Haskell使えば大抵の問題は片付きます。
457:デフォルトの名無しさん
16/06/04 21:05:18.12 Eqdj22Ns.net
>>445
コーディングしないならそれはプログラミングではないですね。
既存のライブラリや使いまわせるコピペコードを検索して探してみてはいかがですか。
いずれにしても、このスレで聞くには趣旨がずれていると思いますが。
458:デフォルトの名無しさん
16/06/04 21:16:28.25 AIJuo/HE.net
質問に答えていくだけでソフトウェアが完成するとしても、それはプログラミングです。
459:デフォルトの名無しさん
16/06/04 21:27:23.54 Eqdj22Ns.net
言い方が悪かったでしょうかね。
JavaScriptを勉強せずにJavaScriptを書きたいとする要望が子のスレの趣旨に反していると言いたかったのですが。
460:デフォルトの名無しさん
16/06/04 21:29:46.92 AIJuo/HE.net
このスレ自体、板違いなのですが。
461:デフォルトの名無しさん
16/06/04 22:02:26.83 Y4cfNkA+.net
薀蓄垂れてるやつのわんだほーなコード見たいんだが
462:デフォルトの名無しさん
16/06/04 22:27:00.97 o5H+FwEM.net
>>450
そう思うなら、質問しなければいいんじゃないですかね?
463:デフォルトの名無しさん
16/06/04 23:09:22.49 AIJuo/HE.net
質問したことはありませんが。
464:デフォルトの名無しさん
16/06/04 23:34:41.13 M/5wRGJi.net
暇つぶしに板違いのスレで遊んでいるのか
465:デフォルトの名無しさん
16/06/05 00:03:18.80 mO7gP4jx.net
>>443
この状況でそんな基本事項を嬉々として出すって、
おっさん本当に学生以下とちゃうか?
少しはまともなレスしろや
そもそも集合(テーブル)間の射の話なんやから、
そのレスじゃ何にも反論できとらんどころか、
結局おっさんの仕様じゃ繋がっとらん状況じゃ自分で自分の首絞めとるやろ
そして自分から多次元DB持ち出してきた癖に何棚上げしとるんや
知ったかと煽りしかできない珍獣は、某関数型ヴォルデモートでお腹いっぱいやで
466:デフォルトの名無しさん
16/06/05 00:18:27.24 hY1lA33B.net
さっさとお手本コード晒せよ
こんだけ偉そうなこと言ってんだからどこに出しても恥ずかしくないレベルのもんかけるんだろ?
あくしろよ
467:デフォルトの名無しさん
16/06/05 01:09:47.31 Ewjxu1z+.net
>>448は
「JavaScriptのプログラムを作りたいけどJavaScriptを勉強する気がないので、ウィザード形式で質問に答えるだけでJavaScriptコードを生成するジェネレータを下さい」
って事かな
さすがにクレクレ君すぎる
468:デフォルトの名無しさん
16/06/05 01:27:22.46 bEHxSIM9.net
>>434
Haxe (ヘックス)
ECMAScript 4に似ている。
Adobe Flashおよび独自のNekoVMで、実行可能なバイトコードにコンパイルされるほか、
JavaScript、ActionScript、C++、C#、Java、PHP、Pythonへのソースコードの変換が可能である
469:デフォルトの名無しさん
16/06/05 01:33:27.00 mO7gP4jx.net
>>456
誰に言ってるんや?
ワイに言ってるならDBの定義の話やからコードもクソもないやろ
470:デフォルトの名無しさん
16/06/05 02:34:08.07 b0qHmmcL.net
自意識過剰だね
ド頭は大丈夫ですか?
471:デフォルトの名無しさん
16/06/06 02:21:20.33 6giGfHQ3.net
NHKのネットラジオを、どうにかしてクライアント側のJSだけで録音したいと思ってる
(基本的にサーバ側の処理は無しにしたい)
ストリーミングの録音の実装は初めてなんだが、どうやったら良いのだろうか?
何らかのライブラリを使えば楽そうだとは思うが…
472:デフォルトの名無しさん
16/06/06 05:01:20.04 QbKl1YZH.net
どうやったらっていうか?
なぜそんなことが可能だと思った?
473:デフォルトの名無しさん
16/06/06 12:22:15.75 23OtUYll.net
>>461
ローカルに node.js を立てるとか。
474:デフォルトの名無しさん
16/06/06 21:05:53.55 RzJ8yYQp.net
パケットキャプチャ
475:デフォルトの名無しさん
16/06/07 05:14:58.76 Gl1NOXsx.net
>>460
こいつすぐに煽るからわかりやすいな
476:デフォルトの名無しさん
16/06/07 19:02:47.33 PnKxWLGB.net
>>431
ありがとうございました。
できるようになりました。
477:デフォルトの名無しさん
16/06/07 19:26:52.79 87JRkB9l.net
>>465
俺ならもう少し嫌な感じで煽るよ。
478:デフォルトの名無しさん
16/06/08 08:52:28.55 zEmhDMcI.net
じゃあ俺は馴れ馴れしいコンセプトで煽ろうかな。
479:デフォルトの名無しさん
16/06/08 21:39:35.82 BBcfGQEZ.net
煽りとかいらねえから
ちゃんと質問に答えてやれよ
480:デフォルトの名無しさん
16/06/08 22:37:16.03 ISsCi+NM.net
>>350
> あと、Array.prototype.lastなんて夢でも死んでも使わないように。
ありがとうございます。今のところ、そこに直接追加するような予定はありません。
>>353
> あくまでも便宜上のサンプルねので念のため
察しの悪い俺ですが、この点についてはそのように理解しております。ご安心下さい。
で、ですね。今までは個別の変数について var a = []; a.f = function () {}; なんぞしていて、
それで十分だったんですが、インスタンスの数が増えそうだぞって場面がチラホラ出てきました。
そこで、配列を継承したようなクラス?(←便宜上)が必要になりました。
A = function () {};
A.prototype = [];
A.prototype.first = function () {return this[0];};
var a = new A();
var b = [];
a.push(123);
b.push(456);
alert(a.first()); // これが呼び出せる
//alert(b.first()); // こっちは使えないので汚染されてなくて安心。
今のところ↑と言う風に、A.prototype = []; として単に何となく設定しているのですが、
こういうことをしたいときのイディオムみたいなものはjavascript界隈にありますか?
481:デフォルトの名無しさん
16/06/09 08:26:24.28 EGkuN86i.net
Web Workerの学習をしたいのですが、此方で大丈夫でしょうか?
482:デフォルトの名無しさん
16/06/09 08:46:22.16 e3vAFbmO.net
var F = function(age){ this.age = age; }
var f1 = new F(1);
var f2 = new F(2);
var ary = [];
ary.push(f1);
ary.push(f2);
console.log(f1, f2, ary);
prototypeなど使わずに、普通にこれでいい
483:デフォルトの名無しさん
16/06/09 09:04:45.80 5KODI7Ed.net
F ←この手の一文字もん大っ嫌いだは
484:デフォルトの名無しさん
16/06/09 09:05:55.20 dIu2vu4F.net
独り言はキミのスマホのメモ帳にどうぞ
485:デフォルトの名無しさん
16/06/09 09:25:17.23 rjZdspVd.net
スマホ持ってない私みたいのはどうすればいいんですか?
486:デフォルトの名無しさん
16/06/09 09:31:01.62 E+QhxTx8.net
var F = function(age){ this.age = age; }
こう書くぐらいなら
function F(age){ this.age = age; }
こう書けばいいのに。
487:デフォルトの名無しさん
16/06/09 09:35:16.54 E+QhxTx8.net
>>475
中古で安いの探せば3000円ぐらいで買えるのでは?
488:デフォルトの名無しさん
16/06/09 13:53:50.48 QTm6YzLa.net
>>472
その方法でどうやってfirst()を呼び出すのかな
489:デフォルトの名無しさん
16/06/09 14:40:04.41 G4u6WZVB.net
>>476
後者は旧石器時代の方式だな
490:デフォルトの名無しさん
16/06/09 16:54:36.03 +YsNEGfA.net
内容が等価じゃないのになんで新旧の話になるの
491:デフォルトの名無しさん
16/06/09 17:06:35.65 bsniAtVU.net
だよな。
ぜんぜんちゃうやんw
492:デフォルトの名無しさん
16/06/09 17:26:41.69 G4u6WZVB.net
>>480
旧石器時代には後者の方法が多用されていたが、それでは問題があるので
近代にはめったに使われなくなったということだが
493:デフォルトの名無しさん
16/06/09 19:11:58.00 U5aI2wbo.net
>>482
どちらもES3の頃から存在して使い分けされていたわけだが
関数式を使わない時代っていつだ?
せめて、関数名ぐらいつけろよ、といいたい
494:デフォルトの名無しさん
16/06/09 19:22:11.65 Homi8Ck7.net
hoisting を嫌う
495:人はこう書くが、新旧いうもんでもない const fn = function fn () {};
496:デフォルトの名無しさん
16/06/09 19:32:23.75 KvDILg9T.net
>>470
そのコードが制限付きで動作している事を理解していればそれでいい
- iterable でない(Symbol.iteratorで対応可能)
- a[100] = 1; で length を書き換えない(new Proxy で対応可能)
- a.length = 5; が働かない(Object.definePropertyで対応可能)
- 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)
497:デフォルトの名無しさん
16/06/09 23:45:53.30 W5L1fKQF.net
>>485
詳細にありがとうございます!!
> - a[100] = 1; で length を書き換えない(new Proxy で対応可能)
> - a.length = 5; が働かない(Object.definePropertyで対応可能)
ありがとうございます。それらの不具合は気付いていませんでした。
let a = new Proxy(new A, {
set: function(target, property, value, receiver) {
let i = parseInt(property);
if (i === i && target.length <= i) target.length = i + 1; // a[n] = x;に伴うlengthの更新に対応。
else if (property === 'length' && value < target[property]) {
target.splice(value, target[property] - value); // a.length = n;の代入時の挙動(の一部?)をケア。
}
target[property] = value;
return true;
}
});
Object.defineProperty(a, 'length', {enumerable: false, writable: true, value: 0});
これでとりあえずケアできているようではありますが、
Proxyに非対応なブラウザもあるようなので注意ですね。
498:デフォルトの名無しさん
16/06/09 23:47:09.04 W5L1fKQF.net
>>485
> - iterable でない(Symbol.iteratorで対応可能)
現時点ではワケが分かっておりませんが頂いたヒントは大事に記憶しておきます。
> - 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)
これも今確認しました。concat使えないの悔しいです。
Object.defineProperty(a, 'concat', {enumerable: false, value: function () {
return A.prototype.concat.apply(this.slice(), arguments);
}});
しかしまぁこういうのを結局書いていくのは悔しいですね。
ちょっとラクしたいだけなのに段々大袈裟になっていくという…。
499:デフォルトの名無しさん
16/06/10 00:39:24.13 G+eNnn4N.net
>>485
言っていることは間違いではないが、(結果的にでも)無垢な少年を騙すのはいかがなものか、、、
>>487
てかお前、それ自分でやってておかしいって思うだろ?
ここの連中は仕様には詳しいが、コードを書いてないから、実装方式については話半分に聞け。
(まあ今回は君が勝手に突っ走ったのであり、騙したわけではないとは思うが)
そのコードを見る限り、君は自力で解に辿り着けるはずだ。
俺がぱっと思いつくだけで解は3通りある。当たりかどうかは答えてやるから、冷静に考えてみろよ。
500:デフォルトの名無しさん
16/06/10 01:01:27.01 DHroUP1C.net
javascriptについて質問があります。
初回起動時のform(画面項目)の値と現在の値を比較して1つでも変更があった場合にはポップアップを表示するといった処理を実装したいのですが何か良い方法があれば、ご教授お願い致します。
501:デフォルトの名無しさん
16/06/10 01:02:08.05 DHroUP1C.net
>>489 続き
はじめはその項目のvalueとdefaultValueにて比較できると思いましたが、defaultValueは画面を再描画するタイミングで取得しますが、行いたい処理の途中でアクションが走り必ず再描画されるタイミングがあるためその方法では比較できないことに気づきました。
502:デフォルトの名無しさん
16/06/10 01:02:31.57 DHroUP1C.net
>>490 続き
(また項目の入力チェックなのでエラーになった場合にも)
なので再描画されても、初期表示時の
503:値と現在の値を比較する方法はないでしょうか… ちなみに画面はJSPにて実装しており、項目はtextやradioやoptionなどあります。
504:デフォルトの名無しさん
16/06/10 01:28:33.37 rm3c6PtR.net
>>482
URLリンク(mitsuruog.github.io)
7.1 関数式より関数宣言を利用してください。
なぜ? 名前が付けられた関数宣言はコールスタックで簡単に見分けることができます。
さらに関数宣言は関数の本体が巻き上げられます。それに対し、関数式は参照だけが巻き上げられます。
このルールにより、関数式の部分を常にアロー関数で置き換えて利用することができます。
// bad
const foo = function () {
};
// good
function foo() {
}
505:デフォルトの名無しさん
16/06/10 01:45:19.78 rm3c6PtR.net
function Klass() {
}
という書き方が古臭いとかいうことは当然なくて、
特定の場合では、var hoge = function() {} と書くべきという話を、
頭の悪い、なーんも考えてない馬鹿が、
絶対にvar hoge = function() {} と書かないといけない、
これからはfunction hoge() {} と書いてはならないんだ!って
言ってるだけ。
function Klass() {} という書き方が古くなったとか
聞いたこと無いし、使っていいし、むしろ推奨されている。
ほんと何も考えてない、誰かにaといわれれば
理由も考えずに妄信的にaばっかり使う、そんなやつが多いよなw
506:デフォルトの名無しさん
16/06/10 02:03:50.61 G+eNnn4N.net
>>493
俺は仕様には詳しくないから具体的に何が問題になるのかは分からないが、
基本的に「普通」の書き方にしておいた方がいいと思うぞ。
というか、何故お前らが妙なこだわりを持つのか、かなり謎なんだが。
> var Person = function () {
> console.log('instance created');
> };
>
> var person1 = new Person();
> var person2 = new Person();
> URLリンク(developer.mozilla.org)
507:デフォルトの名無しさん
16/06/10 02:06:08.67 rm3c6PtR.net
>>494
そこに書いてあるだろw
// Student コンストラクタを定義する
function Student(firstName, subject) {
// 親のコンストラクタを呼び出す。呼び出しの際に "this" が
// 適切に設定されるようにする (Function#call を使用)
Person.call(this, firstName);
// Student 固有のプロパティを初期化する
this.subject = subject;
};
これは普通の書き方。
508:デフォルトの名無しさん
16/06/10 02:18:52.51 G+eNnn4N.net
>>495
おっと?これは失敬。
ということはこれについては統一見解はなくて、どっちでもいいって事だな。
509:デフォルトの名無しさん
16/06/10 02:49:43.87 OOVSLX1/.net
>>495
引用元もそうなってたけど、
最後のセミコロンはいらないよねぇ。
510:デフォルトの名無しさん
16/06/10 05:22:06.39 naViO+5c.net
どっちでもいいわけないだろ
アホかこいつ
511:デフォルトの名無しさん
16/06/10 08:02:38.57 52VYMGKm.net
>>486-487
いろいろと挙動がおかしいのでよく確認してみるといい
繰り返すが、A.prototype.concat は汎用的ではない
URLリンク(jsfiddle.net)
512:デフォルトの名無しさん
16/06/10 08:21:29.14 o8hFzx97.net
結局、コンストラクタ用の関数を書くときにも、
関数式よりも、巻き上げのある関数宣言の方が、良いのか?
513:デフォルトの名無しさん
16/06/10 08:31:51.96 52VYMGKm.net
>>487
> しかしまぁこういうのを結局書いていくのは悔しいですね。
ビルトイン関数には汎用的なものと汎用的でないものがあって、汎用的でない機能をエミュレーションするのは単純じゃない
(とはいえ、JavaScriptは汎用的なプロパティ/関数があるだけエミュレーションするのは楽な方だと思う)
内部的に new Array を保持しておき、new Proxy で透過的に new Array を参照すらば比較的楽に実装出来るが、コストがかかる
完璧なエミュレーションに拘らないのであれば妥協も必要
514:デフォルトの名無しさん
16/06/10 08:33:32.04 INHt9BTU.net
>>489
この状態と比較したい、って状況で、「画面の対象のコントロール回ってvalueを;かなんかで繋いで返す」関数作って、それ呼んで値を覚える。
変更チェックかけるときに、もう一回その関数呼んで、覚えたものと===で無ければ何かしら変更があった。
ってやってるよ。
「対象のコントロール」にはclassにcheckDatumとか空クラスつけとけばそれで列挙できるし。
515:デフォルトの名無しさん
16/06/10 08:47:37.80 BhzVNYOI.net
varとfunctionが同じだのセミコロンいらねえだの
こんなのが毎日偉そうに能書き垂れてんの?
そりゃサンプル出せって言われたら黙るわけだ
516:デフォルトの名無しさん
16/06/10 09:33:17.22 o8hFzx97.net
>>485-487
Groovyのメタプログラミングなら、
実行時に既存のクラスに、メソッドを追加するなら、Category・Mixin。
メソッド・プロパティを変更・追加するなら、ExpandoMetaClass
そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?
517:デフォルトの名無しさん
16/06/10 09:36:28.17 +uuPJDCE.net
>>500
> 関数式よりも、巻き上げのある関数宣言の方が、良いのか?
何も考えてねぇ馬鹿は、変数の巻き上げの問題(もちろん理由がある)の話を、
全く関係ない関数にまで適用しようとする(笑)
理由は何だよw
ブロック内だけで使う関数など、関数式でなければいけない場合もあるが
通常は関数宣言の方がいいに決まってるだろ。
C言語は宣言された関数しか使えなかったため「前方宣言」などという
物が生み出されてしまったが、それ以降、それ以外の殆どの言語は
関数はどこで宣言しても(巻き上げされたかのように)使うことが出来る。
518:デフォルトの名無しさん
16/06/10 09:40:10.83 4srunpG+.net
所詮は自己満足の世界なんだよ
519:デフォルトの名無しさん
16/06/10 09:40:12.48 +uuPJDCE.net
普通に関数に名前(コンストラクタも含む)をつければいいのに、
「さいきんのクールなプログラマはvarで関数入れて使うんだぜ!
今時関数に名前つけるなんてのは旧石器時代だな!」とか言ってるんだぜw
バカっぽいだろ?事実なんにも考えてない。
デバッガ時に関数名表示がでなくなる問題があるというのにな。
520:デフォルトの名無しさん
16/06/10 10:33:45.27 GFWTaLNc.net
>>483
> どちらもES3の頃から存在して使い分けされていたわけだが
誰もが(いいすぎ)使い分けるようになったのは、近代になってから
> 関数式を使わない時代っていつだ?
だから旧石器時代だって
ゼロ年代初頭あたりまで
521:デフォルトの名無しさん
16/06/10 10:36:19.23 GFWTaLNc.net
>>493
> function Klass() {} という書き方が古くなったとか
> 聞いたこと無いし、
グローバルネームスペースを汚染する弊害について聞いたことないのか
522:デフォルトの名無しさん
16/06/10 11:04:28.13 rddDxbo4.net
>>509
クロージャの中でやる分には大丈夫なんじゃないの?巻き上げられたっけ?
523:デフォルトの名無しさん
16/06/10 11:31:26.83 xHgczCBO.net
今時グローバル汚染するようなアホおまえくらいだから
524:デフォルトの名無しさん
16/06/10 11:46:24.26 XqAkh7YW.net
なんであんなに無名を濫用するのかと思ってたが
そんなしょうもない理由だったのか
525:デフォルトの名無しさん
16/06/10 14:12:05.29 dpRBFPup.net
>>509
聞いたことないが、その弊害の発生条件は?
526:デフォルトの名無しさん
16/06/10 14:36:22.02 4srunpG+.net
そうだよな
汚染ってなんだよ
527:デフォルトの名無しさん
16/06/10 15:06:36.55 LT2C5Mf1.net
prototype使って、汚染しちゃうのは初心者がやってしまう失敗
528:デフォルトの名無しさん
16/06/10 15:59:08.90 DxAsZ/F5.net
1個くらいならバレないんじゃない?
529:デフォルトの名無しさん
16/06/10 16:05:16.91
530:3bO9ZAmE.net
531:デフォルトの名無しさん
16/06/10 18:15:57.76 LT2C5Mf1.net
コンソールに出すの?
アラートで出すの?
アラートで出たら、めちゃくちゃ怖いかもww
532:デフォルトの名無しさん
16/06/10 19:06:13.75 qrHSyLm3.net
prototype汚染という考え方も古くなってきた感はあるが…
しかし、風呂敷を広すぎではないかね
元々はprototuype汚染の話ではなかったわけで段々と本題がずれてきているように思う
533:デフォルトの名無しさん
16/06/10 19:27:07.34 qrHSyLm3.net
>>489-491
画面を再描画するならサーバサイドの処理があるはずだが、それはJavaScriptで実装すべき案件なのかね
フォームで値を受け渡してサーバサイドで処理、セッションを使う等、いくつか対策があるはずだが
jsを使うなら再描画させずに動的にDOMを書きかえれば済むが、マルチポスト先を読む限りではこの質問者にはハードルが高そうだな
URLリンク(teratail.com)
URLリンク(teratail.com)
534:デフォルトの名無しさん
16/06/10 20:02:15.97 G+eNnn4N.net
>>500
少なくとも文法上は大差ないのだろう。MDNにも説明はある。
> 全ての関数は実際には Function オブジェクトです。
> Function コンストラクタか関数宣言か関数式か
> URLリンク(developer.mozilla.org)
new Functionや非トップレベル関数(strict modeでは禁止)も含めて書いてあるから余計に分かりにくくなっているが、
要するにどうでもよさそうだ。
現実的にはコンストラクタだけ前方参照できてもプロトタイプが用意できていないから意味がない。
だから関数式の方が似合っている気はする。
ちなみに汚染については変数名か関数名かだけでどちらも汚染する。
また、デバッグ時にこんなところが関数表示されたところで嬉しくない。
どのみちコンストラクタが呼ばれればコールスタックには載るし、ブレークポイントも当てられる。
お前らは異様に文法にこだわることを止めて、もっとコードを書いた方がいい。
指摘が間抜けなのは、コードを書いてないからだ。(実践的ではない)
○○の問題がある(キリッというのは正しいが、それが重要なことなのか、わりとどうでもいいことなのか、区別が出来ていない。
>>520
> マルチポスト先
よく見つけたなw
というかこの手のモラルがない奴、急に増えたよな?何か理由があると思うのだが。
昔から居たけど、マルチポスト先が増えたから発覚しやすくなっただけか?
535:デフォルトの名無しさん
16/06/10 20:08:51.44 RNr8lFlW.net
>>499
どうもありがとうございます。おかげで気がついてしまいました。
concatはArrayを受け取ってArrayを返すつもりで>>487では書きましたが、
よく考えると今回拡張したA(以下単にA)を引数に受け取りたいですし、
返す結果もよく考えるとAであったほうが嬉しいかもしれません。
実装の手間という面だけでも尻込みしつつあったんですが、
いまや設計の方針と言う面でも相当きな臭いというか。
concatの返す値が決められなくて不気味。使うときに不安。
仮にsliceやspliceなどのもまとめて全部Aを返すように統一したとしても、
最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。
>>501
> 完璧なエミュレーションに拘らないのであれば妥協も必要
そのつもりだったんですがいざ用意してみると、
欲が出るわ粗が目立つわ方針で不安になるわで散々でした。
今後は生のArrayのみを運用していくつもりです(結論)。
>>504
ありがとうございます。Groovyはぐぐったことすら無いので分かりません。
> そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?
はい。完全にそのとおりです。
536:デフォルトの名無しさん
16/06/10 21:47:53.40 qrHSyLm3.net
>>522
> 今後は生のArrayのみを運用していくつもりです(結論)。
それはそれで一つの答えだが、やや狭い世界になっていると思う
> 最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。
2つの世界が存在することは問題なくてそれが息をするように自然に使えるかどうかが問題ではないだろうか
mew Array と new A を行き来する世界はよくないが、それぞれの世界で完結する処理を書けるのならそれでいい
どちらかといえば、設計指針を決めかねて迷っているのだと思うが…
基本的には new A は A だけで閉じた世界(new Array を返してはならない)であるべきなので A#concat は new A を返すべきだと思う
逆に A#push は汎用的なので特別な事をせずとも new A を返す
このように汎用的な関数を基本的には使って非汎用関数に対しては Polyfill を作る要領でコードを書いていけばそれなりのものができるだろう
別の設計指針としては new Map を new ArrayMap 的な設計にして作り直しても面白いかもしれない
new Map は関数でsetter/getterを作るので new Array よりは互換コードを書きやすいはずだ
機会があれば、是非新しい世界を作ることに挑戦してみてほしい
537:デフォルトの名無しさん
16/06/10 21:58:16.74 MdFWcZSW.net
こういう人に読ます気がない文章は目の前で破り捨てるに限る
538:デフォルトの名無しさん
16/06/10 22:12:29.26 AlU+uWXE.net
ES6だとプロトタイプ汚染がないのかと思ったけどもしかして新機能がない?
結局
Object.defineProperty(...){........}
と書かんといけんのか
539:デフォルトの名無しさん
16/06/10 22:18:01.79 G+eNnn4N.net
この程度で躓くのならもっと長いMDNは当然無理で、池沼のままなのもむべなるかな
540:523
16/06/10 22:51:59.24 qrHSyLm3.net
読みにくくてすまん
どういうわけが改行コードが一部消えているな…
541:デフォルトの名無しさん
16/06/10 23:08:39.56 +uuPJDCE.net
*∧ ∧:・。゚*。 : ・ 。 ゚ *★.
(*・ω・*) ゚ *。*
*〇 〇………………………**
祝☆jQuery 3.0 リリース URLリンク(blog.jquery.com)
**………………………………*
+ JavaScript & jQuery 質問用スレッド vol.6 + [無断転載禁止]©2ch.net
スレリンク(hp板)
542:デフォルトの名無しさん
16/06/10 23:10:44.42 +uuPJDCE.net
>>509
> > function Klass() {} という書き方が古くなったとか
> > 聞いたこと無いし、
> グローバルネームスペースを汚染する弊害について聞いたことないのか
なにいってんだおめぇ?
var Klass = function() {} という書き方をしても
グローバルネームスペース汚染してるだろw
function hoge() {
function Klass() {}
}
↑Klassがグローバルネームスペース汚染ってどういうこと?w
543:デフォルトの名無しさん
16/06/10 23:13:14.16 +uuPJDCE.net
>>524
同じこと思ったw
544:デフォルトの名無しさん
16/06/11 00:01:17.78 MQjYfq34.net
ライブラリスレが復活してた
JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
スレリンク(hp板)
545:デフォルトの名無しさん
16/06/11 08:41:10.92 MQjYfq34.net
jQuery推しが酷いと思ったらテンプレ改変されていたのか
546:デフォルトの名無しさん
16/06/11 13:03:48.93 n8nif7qi.net
今更かよ
ここ乗っ取られスレだよ
547:デフォルトの名無しさん
16/06/11 13:06:25.18 ijG8u0pc.net
java script初心者です。ご教授願います m(_ _)m
初めてpromiseで簡単な非同期処理を書いたんですが、一応動くもののどうにもコードがしっくりきません
もっとシンプルにできたり、適切な書き方があるところがあったら教えてください
内容は単語queryに対応する画像検索結果がローカルストレージになかったら外部APIに問い合わせるというものです
548:534
16/06/11 13:09:15.52 ijG8u0pc.net
function getCachedData(query) {
return new Promise(function(resolve, reject){
chrome.storage.local.get(query, function(cachedJson){
if (isExist(cachedJson)) {
resolve(cachedJson[query]);
} else {
reject();
}
});
});
}
function getImageData(query) {
getCachedData(query)
.catch(function(){
return fetch(window.googleCustomSearchApi + query)
.then(function(response) {
return response.json();
}).then(function(json){
chrome.storage.local.set({[query]: json});
return json;
});
}).then(function(json) {
createPopUp(json.items[0]);
positionPopUp();
}).catch(function(err) {
console.error(err);
});
}
549:デフォルトの名無しさん
16/06/11 13:14:41.27 ijG8u0pc.net
インデント潰れてしまった・・・ preタグで再投稿
<pre>
function getImageData(query) {
getCachedData(query)
.catch(function(){
return fetch(window.googleCustomSearchApi + query)
.then(function(response) {
return response.json();
}).then(function(json){
chrome.storage.local.set({[query]: json});
return json;
});
}).then(function(json) {
createPopUp(json.items[0]);
positionPopUp();
}).catch(function(err) {
console.error(err);
});
}</pre>
550:デフォルトの名無しさん
16/06/11 13:21:07.32 e5AOazPt.net
>>534
この記事が参考になるかな
URLリンク(gao-tec.seesaa.net)
551:デフォルトの名無しさん
16/06/11 13:33:33.96 ijG8u0pc.net
>>537
ありがとう 3回読んできます
552:デフォルトの名無しさん
16/06/11 13:39:59.04 n8nif7qi.net
>>534-535
2chはHTMLタグ使えないからjsFiddleみたいな投稿サイトを使うといいよ
前まではテンプレにあったんだが
一見ネストが深いように見えるけど結構シンプルに纏まってると思う
fetchの部分を外に出せば視認性がよくなるんじゃないのって程度
しいて言えばgetImageData内でPopUp関数を呼び出してるのがしっくりこない
getImageData自身もPromiseインスタンスを返してresolve(json)するのがいい
553:デフォルトの名無しさん
16/06/11 13:59:44.48 ijG8u0pc.net
>>539
今日だけ師匠と呼ばせてください
自分でもそこはなんか気持ちわるかったんです promiseチェインがcatchで始まった挙句、頭でっかちで
でも外に出すというのはどうやるんでしょう・・・
fetchからの処理をまとめた関数(返り値は最終的なjsonデータのpromise)を外に定義して、それを呼び出す感じですか?
そしてgetImageDataがPromiseインスタンスを返すように書き換えるには、ええと・・・(思考フリーズ)
554:デフォルトの名無しさん
16/06/11 14:41:46.28 n8nif7qi.net
>>540
getCachedDataと同じ書き方をfetchとgetImagedataでやるだけだよ
555:デフォルトの名無しさん
16/06/11 15:16:00.71 NAulAg4n.net
>>539
> 一見ネストが深いように見えるけど結構シンプルに纏まってると思う
え? ちょっとまてよ?
556:デフォルトの名無しさん
16/06/11 15:45:12.80 NAulAg4n.net
>>540
これgetImageDataの中でキャッシュあるか調べてるからいけないんだよ。
一般論として、キャッシュというのは存在を意識しないようにコードにするべき。
関数の役割ってのが書いてないし、これだけじゃ読み取れないから難しいんだが、
そのgetImageDataっていうのは画像があれば、ポップアップウインドウを表示するんだろう?
であれば、getImageData() ではなくて showImageData() とかいう名前にするべき。
そして、getCachedData()ではなく、こっちをgetImageData()にするべき。
getImageData()っていうのは単にImageDataを返すだけ、その中でキャッシュを使っていようが
使っていまいが関係ないし、別の仕組みのキャッシュを使うかもしれない。がgetImageData()を
使う人からはそんなこと知ったことじゃない
>>535のコードは、chrome.storage.local を使っている箇所が、getCachedDataと
getImageDataの2つに分かれているだろ? 関数の役目が明確に分離されていないからそうなる。
非同期の書き方の問題の前にまずやることがあるってことさ。
あと、スペース1個でインデントは見にくいからやめろw
最低でも2個だ。
557:デフォルトの名無しさん
16/06/11 15:47:35.86 NAulAg4n.net
で、これが修正コード例だ。
やりたいならばchrome.storage.local.getをPromise化する事もできるがね。
function getImageData(query) {
return new Promise(function(resolve, reject) {
chrome.storage.local.get(query, function(cachedJson) {
if (isExist(cachedJson)) {
resolve(cachedJson[query]);
return;
}
558: fetch(window.googleCustomSearchApi + query) .then(function(response) { var json = response.json() chrome.storage.local.set({[query]: json}); resolve(json); }) .catch(function(err) { reject(err); }) }); }); } function showImageData(query) { getImageData(query) .then(function(json) { createPopUp(json.items[0]); positionPopUp(); }) .catch(function(err) { console.error(err); }); }
559:デフォルトの名無しさん
16/06/11 15:56:05.66 NAulAg4n.net
で、どうしてもgetImageData()の中身をPromise化したいならこんな感じかね?
動かせる環境がないので、これで正しく動いているかはしらない。
元のコードに合わせてisExistがfalseならreject()しているが、
nullを返して、データがnullだったらfetchしたほうがいいような気もするが。
function getImageData(query) {
return new Promise(function(resolve, reject) {
chrome.storage.local.get(query, function(cachedJson) {
if (isExist(cachedJson)) {
resolve(cachedJson[query]);
} else {
reject();
}
}).cache(function()) {
return fetch(window.googleCustomSearchApi + query)
}).then(function(response) {
var json = response.json()
chrome.storage.local.set({[query]: json});
return json;
});
}
560:534
16/06/11 16:03:43.18 ijG8u0pc.net
>>543
自分でああでもないこうでもないと考えてコードを修正していたら返信遅れました
か ら く ちwwww と思って訂正コードと自作スパゲッティを見比べたらグウの音も出ませんでした
この整理されたしっくり来る感じ 勉強になります
あとは・・ エラーハンドリングについてわからないところがあります!
561:デフォルトの名無しさん
16/06/11 16:07:35.34 ZhHlBSFM.net
>>537
良い記事だ。
が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
俺は展開して書いていて、特に問題を感じない。
要求が「脳筋無限ループの例ぐらい単純な構造で」「非同期処理を実現する」
「処理は上から下へ」「ネストが深くならない」ならば、これでいいと思うのだが。
好きずきはあると思うが、このような場合にでも例としても出てこないのは謎なんだが。
function Main(){
console.log("a");
setTimeout(Main_1,2000);
function Main_1(){
console.log("b");
setTimeout(Main_2,1000);
}
function Main_2(){
console.log("c");
}
}
Main();
562:デフォルトの名無しさん
16/06/11 16:12:31.73 NAulAg4n.net
>>545は本当に動くかどうかわからない。
実はcacheのあとにthenをつなげたことないんでねw
まあ関数の中を試行錯誤すりゃできるだろうと思うけど。
最悪>>544でいいし。
"何をする" 関数か?(クラスか?)ってことをよく考えることが重要。
動くようにコードを配置するんじゃなくて、何をする関数か?を定義して
それに合わない所はたとえコードが増えても外にだすべきだし、
入れるべきだと思えば、どうにかして持ってくる。
もちろん場合によっては、"何をする" の定義を変えてもいいけど
はっきり定義させることが重要。
例えば、このgetImageData()はchrome.storage.local を使うことが前提になってるけど、
いろんなキャッシュの仕組みを入れ替えられるようにする関数(というかクラスになるだろうけど)を定義すれば
getImageData()の中からはchrome.storage.localが消えて、キャッシュの仕組みを
入れ替えられるだけのことをするクラスができあがるわけ。
563:デフォルトの名無しさん
16/06/11 16:15:59.14 NAulAg4n.net
>>547
> が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
やりかけで覚えておかなければならないことが増えるからだよ。
Aが終わってからBをして、Bが終わってからCをする。というやり方よりも
Aの途中でBをして、Bをしているその途中でCをするほうが疲れるから。
Cが終わったら、Bはどうなったんだっけ? そしてAはどうなったんだっけ?って
戻って行かないといけないからね。
言い換えると可読性の問題だからだ。
非同期とかそういうところが問題になってるんじゃない。
やりかけの作業を脳に貯めておくと言うところが問題なんだよ。
564:デフォルトの名無しさん
16/06/11 16:20:02.55 NAulAg4n.net
>>547
あと、そのコードの問題は「名前」が増える。
名前が増えるっていうのも、いちいち記憶して
おかなければならないことだから面倒
限りある記憶領域は、記憶する価値のある物、
汎用的でどこでも使えることだけに絞る必要がある。
覚える価値がないものは覚えなくていい。
そのコードは関数の�
565:シ前が増えているだけだが、 クロージャーじゃなくなっているから、変数の名前も増えるだろうね あと処理があちこちに飛ぶから、コードが長くなったらスクロールする回数も増えるよw もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。
566:デフォルトの名無しさん
16/06/11 16:26:52.64 ZhHlBSFM.net
>>549
そうか?ぶった切られているだけで、実は同じだろ。追加部分を見やすいように編集しておいた。
同期的に「放り投げて終わり」にしたいという気持ちも分かるが、無理にネスト/Promise化するより見やすくないか?
脳内 s/setTimeout...function(){// で全く問題ないはずだが。
function Main(){
console.log("a");
setTimeout(Main_1,2000); // 追加
function Main_1(){ // 追加
console.log("b");
setTimeout(Main_2,1000); // 追加
} // 追加
function Main_2(){ // 追加
console.log("c");
} // 追加
}
Main();
567:デフォルトの名無しさん
16/06/11 16:29:29.39 tWgkOxEq.net
もうそれはasync/await、もしくはgenerator/yieldを使うしかないよ。
568:デフォルトの名無しさん
16/06/11 16:35:45.96 NAulAg4n.net
>>551
サンプルコードでやってるからだめなんだよw
お前、頭の中で、このコードはsetTimeoutしかない。Main以外の名前は存在しない。
しかもそれぞれ短いコードで呼び出す順番に並んでいるいう「記憶」に頼ってコード読んでるだろ?
それはお前だから出来ること。(短いから俺でも出来るけどさw)
実際に業務ではそういう「記憶」には頼れない。コードはもっと長いし
汎用的じゃないものは名前も覚えられない。(何日も経ったら忘れる)
汎用的でないものには、適切な名前をつけることも難しい。
仮にそのコードのまま、記憶に頼れないように書き換えてみようか?
さっきと同じように気楽に読めるかい? どこでどう呼び出しが行われてるか探すだろ?
function Kjads(){
console.log("a");
function cgrd(){ // あrtが
console.log("c");
} // あrtが
badf(fgaz); // あrtが
function fgaz(){ // あrtが
console.log("b");
asdfa(cgrd); // あrtが
} // あrtが
}
Kjads();
569:デフォルトの名無しさん
16/06/11 16:36:17.69 ZhHlBSFM.net
>>550
「名前」が増えるのは事実だけど、関数内関数で隠蔽するし、
そもそも処理を必ず「上から下に」書くのでその点は問題にならない。
つまり、このように展開した場合、その関数は直前のsetTimeoutからしか呼ばれない。
したがって、覚える必要はないし、
処理があちこちに飛ぶこともない。(
570:ただこれはそう書く、ということだが) ちなみにクロージャーにはなっている。 > もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。 いや、結構糞長い奴もそこに書くよね? $.ajaxとかその場にだらだら全部書くほうが普通じゃないか?
571:デフォルトの名無しさん
16/06/11 16:39:28.40 NAulAg4n.net
>>554
もうそろそろ>>553をみて、記憶に頼ってるなって自覚したはずw
> ちなみにクロージャーにはなっている。
なってない
function Main(){
var v = 1
setTimeout(function() {
console.log(v);
}, 1000);
}
↓ エラーになる
function Main(){
var v = 1
setTimeout(Main_1, 1000);
}
function Main_1(){
console.log(v);
}
変数vを渡すために、名前が増えるwww
572:デフォルトの名無しさん
16/06/11 16:39:52.50 ZhHlBSFM.net
>>553
ああ、ちょっと遅れたが、それは既に書いたように、俺内コーディングルール
処理を必ず「上から下に」書く
で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
「上から下に」書けるところでは「上から下に」書くのが常識だろ。
名前もこの手の場合は XXX_1, XXX_2, ..... と順に付けていく。おかしな名前を付けたりすることはない。
573:デフォルトの名無しさん
16/06/11 16:40:41.06 NAulAg4n.net
>>554
> $.ajaxとかその場にだらだら全部書くほうが普通じゃないか?
下手なやつが多いだけ。
俺は関数に分けるべき理由が生まれれば当然分ける。
574:534
16/06/11 16:40:58.22 ijG8u0pc.net
>>544 の綺麗なコードを見る前に、API問い合わせの部分を関数に分離しようと思って、fetch用の追加のエラーハンドリングも加えてこう書いてしまったんですね(お蔵入りですが、このなかで疑問が沸いたので・・)
function googleCustomSearch(query) {
return fetch(window.googleCustomSearchApi + query)
.then(handleNetworkError)
.then(response => response.json())
.then(json => {
chrome.storage.local.set({[query]: json});
return json;
})
.catch(err => {
// 【ここが疑問】
});
}
function handleNetworkError(response) {
if (!response.ok) {
throw new Error(reponse.status, response.statusText);
}
return response;
}
575:デフォルトの名無しさん
16/06/11 16:44:00.74 NAulAg4n.net
>>556
> 処理を必ず「上から下に」書く
>
> で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
> 「上から下に」書けるところでは「上から下に」書くのが常識だろ。
ほらなw お前の常識w
何処かで、function hoge() {} じゃなくて var hoge = function() {} って
書けって言っていたやつが居るが、
(ちなみに俺はその必要がないならばfunction hoge()って書け派)
これは上から下に書けない。
hoge();
var hoge = function() {}
hage()
var hage = function() {}
まあ 「上から下に」"書けるところでは" って書いているところからもわかるように
書けない場合があると自覚してるんだろうがw
その書ける所と書けない所、ここは書ける所だという前提を知ってるのも「記憶」だよねw
576:デフォルトの名無しさん
16/06/11 16:44:38.09 ZhHlBSFM.net
>>555
何が言いたいのか分からんが、これでいいか?
function Main(){
var count = 0;
console.log('a: '+count++);
setTimeout(Main_1,2000);
function Main_1(){
console.log('b: '+count++);
setTimeout(Main_2,1000);
}
function Main_2(){
console.log('c: '+count++);
}
}
Main();