1 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 16:28:34.52 ID:ORuOCkHy.net] pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。 サーバサイドjavascriptについて語りましょう。 node.js - googleが開発したV8エンジン上で実行できる処理系 nodejs.org/ io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系 iojs.org/ Rhino - JVM上で実行できる処理系 https://developer.mozilla.org/ja/Rhino io.js の経緯 stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js javascriptはrubyと比較してもかなり速い shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv 基礎から学ぶNode.js gihyo.jp/dev/serial/01/nodejs node.jsの概要とアプリケーション開発の準備 gihyo.jp/dev/serial/01/realtimeweb/0002 前スレ 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net echo.2ch.net/test/read.cgi/tech/1419673207/ 【node.js】サーバサイドjavascript 2【Rhino】 peace.2ch.net/test/read.cgi/tech/1358937029/ 【node.js】サーバサイドjavascript【Rhino】 toro.2ch.net/test/read.cgi/tech/1310087535/
792 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 19:23:08.30 ID:+w9zPnXt.net] >>775 三菱に限らずSIerの技術力低下が半端ない
793 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 22:32:27.03 ID:9vlATu9m.net] 自分達の底辺技術レベルが原因で、無実のエンジニアを罪人にして、ほっかむりしたのは三菱だけ
794 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:15:56.20 ID:7o1xz83o.net] ちなみにDBってopenとtransactionを分離している奴があるけど、これって何で? 例えばIndexedDBでもそうで、open後にtransactionを作ってアクセスしなければならない。 しかし普通に読み書きだけなら DBWrite(DBname, objectStores, key, value) みたいなAPIでクエリ毎にopen/close繰り返した方が使う側は楽だよね。 何らかの理由でopenが重いから分離しているのだろうけど、 普通に実装すればそんなに重いとも思えない。 (実際はopenは数秒かかる時もある程重いが) これって何で? ちなみに類似ケースはXHRで、通常は毎回XHRをnewするだろ。 indexedDB.openもそれに近くて、本来はオブジェクトを初期化するだけで終わるはず。
795 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:27:44.82 ID:vWsWUiiy.net] >>769 > WebアプリでDBコネクションを10分間も保持するなんてどういう実装したらできるんだろ? > 普通にやったんじゃできないよね。 コネクションプールを使ったら普通にそうなりますが?
796 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:28:57.91 ID:vWsWUiiy.net] >>779 DBをopenしてselectしてcloseするなら トランザクションいらないでしょ?
797 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:31:58.67 ID:vWsWUiiy.net] >>779 > 何らかの理由でopenが重いから分離しているのだろうけど、 > 普通に実装すればそんなに重いとも思えない。 ゆえにopenが重いから分離しているという あなたの想像は間違いだって言うこと。 根拠のない想像を結論にしないようにしよう 検証の前にあるのは結論ではなく仮定という トランザクションは複数の操作を一塊にするもので openが軽いのとは関係ない話
798 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:47:45.77 ID:pIgMfxSJ.net] >>781 IndexedDBの場合はトランザクションは常に必要だ。 他の楽観的なトランザクション分離のDBについては知らん。 >>782 では何故openとtransactionを分離するんだ? 最初からtransaction単位でopen/closeするAPIにしておけばいいだけの話だろ。 そこを分離して手動でやらせる理由が分からん。
799 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:55:56.99 ID:vWsWUiiy.net] IndexedDB特有の話なら、IndexedDBの話だって書けよ はい、トランザクションつかってませーん。ばいなら qiita.com/butakoma/items/2c1c956b63fcf956a137#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%82%A2%E4%BD%9C%E6%88%90 オブジェクト
800 名前:ストア作成 オブジェクトストアは、RDBでいうテーブル。 var storeName = 'sampleStore'; var openReq = indexedDB.open(dbName, dbVersion); // オブジェクトストアの作成・削除はDBの更新時しかできないので、バージョンを指定して更新 openReq.onupgradeneeded = function(event){ var db = event.target.result; db.createObjectStore('storeName', {keyPath : 'id'}) } [] [ここ壊れてます]
801 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:57:25.86 ID:vWsWUiiy.net] IndexedDB特有の話ならtransaction使わないと readonlyなのかreadwriteなのか決められないからだろ
802 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:14:01.64 ID:mcCYyLIS.net] >>779 DBへの接続(open)とトランザクションは別のレイヤーだからだよ 1つの接続で2つのトランザクションを実行したい場合どうすんの? transactionを明示的に指定しない場合に デフォルト設定で例えばステートメント単位でトランザクションになるような仕組みがDBにあればtransaction指定は必須でなくなる 一般的なRDBはそうなってると思うけど
803 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:20:17.29 ID:pIgMfxSJ.net] >>784-785 つかお前根本的に分かってないだろ。 IndexedDBはonupgradeneededの時は最初からトランザクションを張っている。 これはMDNからはとてもそうは読めないのだが、とにかくそう。 そしてAPIが > DBWrite(DBname, objectStores, key, value) > DBWrite とかでいいのではないか?というのが俺の疑問なのだが。 何故かは知らんがDBには「繋ぎっぱなし」の文化はあるんだよ。>>772 IndexedDBのAPIからもそれは読みとれる。 > Web アプリが別のタブで開かれているときにバージョンを変更する > https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB 毎回閉じる文化ならそもそもこれは要らない。 MDISはこの「繋ぎっぱなし」の文化でWeb側にも解放したらリソースが枯渇しただけだろ。 ただそもそもこの「繋ぎっぱなし」ってなんなのさ? open/closeが軽いのなら毎回open/closeすればいいだけだし、 普通に実装すれば重いとも思えないし、ということなのだが。 (ただし実際にはIndexedDBでもopen/closeは重い)
804 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:26:20.56 ID:pIgMfxSJ.net] >>786 > transactionを明示的に指定しない場合に(以下略) これについてはそれでいい。 APIコール1回=1つのtransactionになるって事で。 > 1つの接続で2つのトランザクションを実行したい場合どうすんの? これってどういうケース? その2つのトランザクションをくっつけて1つのトランザクションにしておけばいいだけの話では? 並列性を限界まで出したくて、例えばライト/リードでトランザクションを分けておきたいとかか?
805 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 03:16:51.74 ID:mcCYyLIS.net] >>788 1回の接続で複数トランザクションを実行したいケースってあんまりないのかな 例えば2つのトランザクションのうち後者が失敗しても前者をロールバックしたくない時とか考えてみたら? トランザクションのたびに再接続するので良いケースもありうるけどそうじゃないケースもありうるよね だから一般的にはトランザクション境界と接続の開閉を一つにしたAPIってのはいい設計じゃないと思う >>787 繋ぎっぱなしの文化なんかなくて、ただの開放漏れのバグだよ openしたらcloseするのが必須
806 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 08:36:52.78 ID:Q9xrmP/+.net] >>780 コネクションプーリングはコネクションを使いまわす仕組みだからDBには繋がったままだけどWebのセッションからはリクエストの度に切り離される。 とっくに終わってるセッションがコネクションを独占するようなアホな作りはどうやったらできるのかって事。
807 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 08:40:11.92 ID:Q9xrmP/+.net] >>787 繋っぱなしってコネクションプーリングのことでしょ。アプリから見ると毎回、open/closeしてるように見える。
808 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 09:36:43.18 ID:vWsWUiiy.net] >>790 コネクションを独占ってなんだ? 異なるセッションから、コネクションを使いまわすのがコネクションプーリングなんだが? セッションが終わってるっていうのなら、コネクションは明け渡してるだろ
809 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 09:38:38.44 ID:vWsWUiiy.net] >>787 > IndexedDBはonupgradeneededの時は最初からトランザクションを張っている。 じゃあなおのこと、openでトランザクションは貼れないな。 だって、何の操作をするかで、トランザクションの種類が変わるわけで openした時点ではわからないんだから
810 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 09:40:18.14 ID:vWsWUiiy.net] >>787 > そしてAPIが > > DBWrite(DBname, objectStores, key, value) > > DBWrite > とかでいいのではないか?というのが俺の疑問なのだが。 トランザクションは複数のDBWriteを 一つにまとめるものなんだから それじゃだめだろって言ってるんだが? いいからトランザクションを勉強してくれ お前、根本的に分かってない(笑)
811 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 11:27:15.08 ID:K/Y+ost0.net] >>792 >>766-767
812 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 19:22:44.56 ID:pIgMfxSJ.net] >>789 ただのバグでMDISが糞だというのは同意だが、APIは糞だぞ。 > 例えば2つのトランザクションのうち後者が失敗しても前者をロールバックしたくない時とか考えてみたら? これなら2つトランザクションを打てばいいだけ。それで何の問題もない。 > トランザクションのたびに再接続するので良いケースもありうるけどそうじゃないケースもありうるよね ねえよ。具体的に挙げられないだろ。 open/closeがAPIにある場合の利点は、連続した同一DBに対する2つのトランザクションで、 ・open/transaction1/close/open/transaction2/close を ・open/transaction1/transaction2/close とでき、真ん中のclose/openを省ける分速度が稼げることだ。 しかしこの場合に、DB内部でキューイング機構を持ってこの余分なclose/openを自動的に省き、 ・ユーザ側で手動open/closeした場合と、 ・ユーザAPIはトランザクション単位で、DB内部で自動open/close で、パフォーマンスが全く変わらない場合、前者を使う理由がないだろ。 (現実的にはユーザ側でコネクションプールを実装する必要であり、 これの代替としてDB内部でキューイング機構を持っていてもパフォーマンスは変わらないはず) open/closeをユーザ側に見せている時、ユーザ側の解は以下で、 A. いちいちopen/closeして使う。 B. これがウザイから自前でラッパを用意し、 > アプリから見ると毎回、open/closeしてるように見える (>>791 ) ようにする。 C. さらにこれもウザイから、何らかの既存ラッパ(PouchDBとか)を使う。 だろ。俺はまずAを試し、スループットが全く出ないのでBにしたが、車輪の再開発感ありまくりだった。 コネクションプーリングするのが常なら、最初から付けとけよボケ、でしかない。 (なおPouchDBもdb.open必須。多分これがDBのAPIの標準形だからだと思う)
813 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 19:23:19.38 ID:pIgMfxSJ.net] DBのAPIは意味不明で、そもそもオブジェクト指向にも反してる。 ユーザがやりたいのはread/writeであって、open/closeではない。 File.openの代わりにHDD.open+File.readというAPIにする奴がいたら、死ねでしかないだろ。 open/closeってもしかして今みたいなパケット相乗り回線ではなく、専用回線を掴んでいた時の名残か?
814 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 19:24:30.23 ID:pIgMfxSJ.net] >>790 MDISのケースは多分、図書館内端末用の界面にそのままWebを接続しただけだろ。 この場合、見た目は問題なく動く。 リソース枯渇のケースはコードから落とすしかないが、レビューが新規コードだけなら無理だ。 (この場合は新規コードはほぼ無しで、問題は今動作しているコード内にあるから) おそらくMDISもB方式で、自前でコネクションプーリングしてる。 これは館内端末用で、端末に行列が出来ているかどうかは知る由もないから、closeはタイムアウトで10分とした。 ここまでは妥当な設計で、館内端末なんて高々数十台だし、問題なく動く。 問題はこれをそのままWeb側にも解放したことで、 この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。 本来は、 D. Webからの入力を受ける「仮想端末」を用意し、Web入力は一旦全部そこで受けてからDBアクセス。 E. open/closeを毎回やるようにする。(Aと同じ) のどちらかが必要で、本来はDの方がいいし多分そうしていると思う。 Dの場合はDDoS時にも館内端末は無傷
815 名前:ナ済む。 追加コードは仮想端末部分だけであり、既存コードには一切手を入れる必要がない。 Eの場合は全体のパフォーマンスが「いちいちopen/close」分だけ落ちる。 とはいえ真面目にDBを組んであればUIからでは見えないとも思う。 変更はopen/closeが内部APIで隠蔽されていれば数行、といったところか。 (そうなっていない場合は全体ソースを見直す必要があり、現実的ではない) [] [ここ壊れてます]
816 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 23:49:21.12 ID:mcCYyLIS.net] >>796 もうめんどくさいな君w DBへの接続とトランザクション境界を一致させた画期的APIを作って流行らせればいいよ? 一つのユースケースたけに特化したものとしては別にあっても悪く無いと思うよ ただなぜそういう設計のものが存在しないのか考えてからね
817 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:02:01.91 ID:al+wrNfN.net] >>797 > ユーザがやりたいのはread/writeであって、open/closeではない。 そのうち二回のwriteを実行して二回目のwriteで エラーが起きた時に一回目のwriteもロールバックするために トランザクションがあるんですよ?
818 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:12:33.18 ID:al+wrNfN.net] https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB#Getting_data_from_the_database データベースからデータを取得する よーし、今から customers テーブルのデータを読み込むぞー! var transaction = db.transaction(["customers"]); おい、ちょっとまて俺はdbオープンした時に 自動的にトランザクション実行するぞ! 全てのテーブルに対してreadwriteロックじゃ 誰も読み込みも書き込みもできない 俺はcutomersテーブルなんか触らないけどなwww こういう迷惑バカが居るから、openとトランザクションは別にするべき
819 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:14:33.64 ID:al+wrNfN.net] >>798 open/closeのパフォーマンスを気にしてるのはお前だけだ 忘れろな
820 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:16:06.59 ID:al+wrNfN.net] >>798 > 問題はこれをそのままWeb側にも解放したことで、 > この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。 誰もコネクションが枯渇したなんて言ってない
821 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:26:53.73 ID:al+wrNfN.net] >>798 当たり前すぎることだが、MDISのシステムは 「1時間に400以上リクエストを送られると他のリクエストの処理が不可能になる不具合を含んでいた」 と言ってるだけで、 ウェブのクライアントが直接DBに接続したなんて誰も言ってない。 そもそもそんなことはできない ブラウザからデータベースに接続することなんてできない。 IndexedDBはお前、それブラウザん中に実装されてるもんだ。そこを勘違してたわけかw MDISのシステムはIndexedDBを用意してなんかいない。時代的に使ってすらいないだろう 本当に当たり前のことだが、 > D. Webからの入力を受ける「仮想端末」を用意し 仮想端末じゃなくて、普通はアプリケーション・サーバーっていうんだよ。 PHPだとウェブサーバーの場合もあるな。MDISも当然その仕組みだ > E. open/closeを毎回やるようにする。(Aと同じ) open/closeを毎回やっても、パフォーマンス向上のために内部的にデータベースに 接続しっぱなしにする機能がコネクションプールだ。正確言うと 前回のリクエストで使った(使い終わった)コネクションを使いまわす。 > 変更はopen/closeが内部APIで隠蔽されていれば数行、といったところか。 あははw ばーかwww アプリは毎回open/closeをしてるんだよ。 コネクションプールというミドルウェアがcloseした時になにもしないように置き換えてるんだよw
822 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 01:27:51.16 ID:al+wrNfN.net] コネクションプールを行うためのミドルウェアが
823 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 08:27:34.35 ID:HacXztT4.net] >>802 少なくともコネクションプーリングを考えたヤツはopen/closeのコストが大きいと考えてる。 数十ミリ秒と数ミリ秒の差が影響するシステムもある。
824 名前:デフォルトの名無しさん [2017/09/09(土) 11:05:16.16 ID:2lDsKHBN.net] 連想配列のキーに使用できる文字列の仕様ってどこに載ってますか?
825 名前:デフォルトの名無しさん [2017/09/09(土) 11:18:09.89 ID:2lDsKHBN.net] 連想配列にキーが存在するかチェックするのならinが速いな const o = { 'a': 1, 'b': 2, 'あ b': 3, }; const key = 'あ b'; const l = 100000; console.time(); for (let i = 0; i < l; i += 1) { key in o; } console.timeEnd(); console.time(); for (let i = 0; i < l; i += 1) { o.hasOwnProperty(key); } console.timeEnd(); //undefined: 5.921ms //undefined: 9.741ms
826 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:31:15.85 ID:LLd0E2c+.net] 連想配列ならMapが最強 従来のオブジェクト形式が良いにしても o = Object.create(null)でo[key]の方が早い
827 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:46:17.16 ID:36A1ffms.net] o[key] = 0 で破綻するやん
828 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:50:30.88 ID:al+wrNfN.net] >>806 だからなんだよ。 トランザクションの話をしてる時に open/closeのコストを考えるなって話だろうが
829 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:01:05.07 ID:al+wrNfN.net] >>808 > 連想配列にキーが存在するかチェックするのならinが速いな 一回あたり 59.21ナノ秒(=0.00000005921秒) 97.41ナノ秒(=0.00000009741秒) だと10万回〜100万回ぐらいチェックしない限り 速度を気にしたって意味なさそうだね。
830 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:42:11.18 ID:gq9mYezw.net] Object を連想配列にした場合、キーを、__proto__ にすると誤動作するから、 そのキーだけ、特別な処理が必要 他にも、使えないキーがあるかも
831 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:46:58.91 ID:al+wrNfN.net] >>813 どういう時に __proto__ をキーに使ったの?
832 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 14:34:12.81 ID:gq9mYezw.net] 英文から、すべての単語を取り出して、出現回数でも調べたのかな? どこかのサイトで、そういう質問を見た
833 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 15:01:25.52 ID:1mapG51j.net] つい最近>>746 でオレが聞いた
834 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 15:37:47.37 ID:al+wrNfN.net] >>815 そういう場合は、適当なプリフィックスをつけるだけで解決するね obj['@' + word] = なんとか
835 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 16:00:58.16 ID:3M7laixG.net] Object.create(null)で作ったオブジェクトには__proto__は無いし自由に値を設定できるこれ豆
836 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 17:11:43.49 ID:gq9mYezw.net] Object.create() は、ECMA 5.1, IE9 以上か こういう機能が無かった、ES3 の頃の話かな
837 名前:デフォルトの名無しさん [2017/09/09(土) 19:32:09.22 ID:JfRpRKzR.net] chromeのdevtoolsからconsole.dir({})やるとオブジェクトの中身が見れるけど nodejsの場合はどうやって見るんでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 09:40:29.07 ID:vJ3AiMg+.net] ○次受けが多いほど退場率が早くなる。高くなる 直受けの50万 客:いつまでもうちにいていいよ 3次受けの50万(客は90万払ってる) 客:短期延長していい? 5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 長時間労働 高稼働 高スキル要求が多い フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。 労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる eJobgo JIET JISA で検索 優良エージェント・優良サイト 首都圏IT(PE-BANK) プログラマーズ
839 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 14:01:13.14 ID:yQ6PO1c5.net] https://github.com/rook2pawn/node-ddos 調べ物をしている最中にこんなの見付けたんだけど Httpdがリクエスト受け取ってる時点でDDoS対策にならないんじゃないの?
840 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 14:33:55.38 ID:ziqXdae+.net] >>822 動作の軽いリバースプロキシ立ててそこで対応す
841 名前:るほうがよさそう [] [ここ壊れてます]
842 名前:デフォルトの名無しさん [2017/09/12(火) 15:30:08.72 ID:bSzAw540.net] node 8.0ってimpotr対応してないの?
843 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 18:35:03.20 ID:e3er3ToK.net] Chromeですら対応したというのに・・
844 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 18:49:24.80 ID:BAm9hYWq.net] node 8はこの秋LTSになるんだからアグレッシブに最新機能は入れないよ node 9には入る
845 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 21:29:56.96 ID:LuYVlbWB.net] くそっ、typoかよ騙された
846 名前:デフォルトの名無しさん [2017/09/15(金) 21:47:46.74 ID:v6+6iXpW.net] >>810 どういうこと?くわしく
847 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:16:55.75 ID:AmSlTqPm.net] const o = { a: {name: 1}, b: {name: 2}, }; ↑をObject.create(null)で作りたいんですけど const z = Object.create(null); z.a = Object.create(null); z.a.name = 1; z.b = Object.create(null); z.b.name = 2; console.log(z.a.name, z.b.name); こう書くしかないんですかね?これだと読みづらくて1番目のようにデータが見やすく作る方法ってないですか?
848 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:30:32.45 ID:Xh3vGrxx.net] なんでObject.createしばりなの? リテラル使っちゃだめな理由は?
849 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:36:18.16 ID:QyBaQfPQ.net] >>828 >>809 を読め >>830 >>746 とか>>813 を読め
850 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:40:38.42 ID:wJEpgv7W.net] リテラルじゃ継承されるからじゃね
851 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 00:01:15.52 ID:xdW9+GRk.net] >>829 Object.assign(Object.create(null), { a: {name: 1}, b: {name: 2}, }) ; >>810 undefinedと比較
852 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 00:09:23.95 ID:YClTS+Ib.net] >>833 Object.assignはシャローコピーだから>>829 と同じじゃない undefinedとの比較は>>809 とは違うしどっちみちundefinedを値として使うと破綻する
853 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 00:18:50.51 ID:gf/ZkNkm.net] >>831 え〜〜、Object.prototypeのプロパティに被る可能性があるからっていう理由で >>829 みたいな書き方になっちゃうの。。。用途によるんだろうけど何とも言えない気分
854 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 00:36:48.84 ID:NSNMTUH3.net] 使うプロパティの種類が限られてるなら 気にする必要ないだろ
855 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 08:30:48.03 ID:7pQmikz8.net] >>829 jqueryから$を取り上げよう
856 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 08:33:39.21 ID:NSNMTUH3.net] >>837 また新しいライブラリを作ろうって話かよ。 lodashでできるんじゃね?
857 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 09:45:53.23 ID:7pQmikz8.net] 簡単な関数だよ $(name1, value1 ...) で>>829 みたいな事をすれば良い
858 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 09:57:17.44 ID:NSNMTUH3.net] そうするとjQueryと勘違いされるから 違う関数名のほうが良さそうだね
859 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 11:34:59.96 ID:C+9D3UXm.net] にわかばっかだなここ { __proto__: null, a:1 } を使えば良いだけだろ…… その程度も知らないようじゃJSer失格 恥ずかしいよほんとに
860 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 18:21:39.65 ID:/o2/v2Gm.net] chromeのdevtoolsのコンソールでconsole.log.を補完すると色々でてくるんですが、 console.logの中にはnameってプロパティがあるんですがこういうのはObject.getOwnPropertyNamesで取れました console.log(Object.getOwnPropertyNames(console.log)); console.logに含まれるhasOwnPropertyとか__proto__とか__defineGetter__なども関数とか for (let v in console.log) { console.log(v); } じゃとれませ
861 名前:んでした どうやって取るんでしょうか? [] [ここ壊れてます]
862 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 18:46:19.62 ID:GikFp8do.net] もはやnode.jsの話じゃないな node.js使わずchromeでやってるんだからわざとやってるだろ まずはjavascript prototypeでググれ それで分からないことはどこかのjavascriptスレで聞け
863 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 21:08:44.37 ID:qXL21HWW.net] ?????????????????
864 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 21:17:16.00 ID:fS24z2RM.net] バッドノウハウ多すぎ!!!!!!!!
865 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 09:39:33.63 ID:FQFctnSq.net] >>843 chromeのコンソールでconsole.logした方が解析しやすいじゃん バカなの?
866 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 18:24:28.11 ID:bBG8AL9E.net] >>842 getOwnPropertyNamesは名前の通りOwnなプロパティしか取れん for-inは継承を遡るが、列挙不可にされてるプロパティは取れん ビルトインプロパティは基本的に列挙不可されているので 結局for-inでも殆どOwnなプロパティしか取れん それを取るには、__proto__を繋げていって一つ一つにgetOwnすること
867 名前:デフォルトの名無しさん [2017/10/16(月) 07:08:15.82 ID:x77nDEIG.net] https://nodejs.org/en/ の、8.7.0 Current をインストールしました。 で、 node.jsを立ち上げ、 .helpは通るのですが、 $ node や、 $ node -v は、 SyntaxError: Unexpected identifier になってしまいます。 どうすればいいでしょうか?
868 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 07:58:53.13 ID:BYvG9erR.net] コマンドプロンプト・PowerShell で、 node -v とコマンドを打つと、そのコマンドの実行ファイルを、OS が探す必要がある つまり、その実行ファイルの場所を、環境変数PATH などで、OSに教える必要がある 環境変数PATHに指定していなくても、 絶対・相対パスで指定すれば、実行できるはず Windowsのパス(PATH)の読込順 と起動される順番 takuya-1st.hatenablog.jp/entry/20110116/1295188903
869 名前:デフォルトの名無しさん [2017/10/16(月) 08:26:32.58 ID:x77nDEIG.net] >>849 レスありがとうございます。 では、どうやればいいのでしょうか? node.exeは↓にあります。 "C:\Program Files\nodejs\node.exe"
870 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:44:36.72 ID:H4ZQF/LB.net] これはひどい
871 名前:848 [2017/10/16(月) 09:14:18.01 ID:x77nDEIG.net] >>851 インストールした、 node.jsのコマンドプロンプトみたいな所に、 ..helpを打てば、 ↓を返してくれる。 .break Sometimes you get stuck, this gets you out .clear Alias for .break .editor Enter editor mode .exit Exit the repl .help Print this help message .load Load JS from a file into the REPL session .save Save all evaluated commands in this REPL session to a file しかし、 $ node -vを打っても、 エラーになってまう。 これは不思議なことだと思わないかね?
872 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 11:09:57.97 ID:FZpcfz8T.net] 思わんよ お前だからな
873 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 15:17:21.46 ID:kN1YFDVK.net] なんでそんなレベルでnode.jsインストールしようと思ったんだろ
874 名前:848 [2017/10/16(月) 19:08:59.31 ID:x77nDEIG.net] >>854 https://www.webprofessional.jp/beginners-guide-node-package-manager/ このページの黒い部分でいうと、 > console.log('Node is running'); や > .help これは、 実行出来るのです。 この状態でバージョン確認をするにはどうすればいいのでしょうか?
875 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 19:46:31.00 ID:MK8giXG1.net] >>850 C:\Program Files\nodejs\node.exe
876 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 20:38:10.52 ID:VwEzpL/B.net] >>855 > process.version
877 名前:848 [2017/10/16(月) 20:56:45.49 ID:x77nDEIG.net] >>857 お、ありがとうございます。 通りました。 じゃ、私の環境で↓のコマンドが使えるようにするにはどうすればいいのでしょうか?ちなみに、バージョンは、v8.7.0でした。 $ which node $ node --version
878 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 21:14:41.96 ID:VwEzpL/B.net] >>858 849が書いてくれてるようにPATHが通ってないんだろうからPATHを通す パスの通し方とかでググって コマンドプロンプト使う時の基本だから
879 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 21:32:19.39 ID:dl4DNYXd.net] windowsとlinuxの違い、コマンドプロンプトとnode起動後のコンソールの違いが理解できてないっぽいな $は入力するものじゃないしwitchコマンドはwindowsにはない
880 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 23:57:03.44 ID:BYvG9erR.net] 例えば、コマンドプロンプトで、 where notepad と打てば、メモ帳の実行ファイルの場所が、表示される where node と打てば?
881 名前:848 [2017/10/17(火) 01:14:58.50 ID:ISfP7NF8.net] 皆さん、レスありがとうございます。感謝します。 ちなみに、 コマンドプロンプトで、 C:\Windows\system32>where notepad と打つと、 C:\Windows\System32\notepad.exe C:\Windows\notepad.exe と表示されます。 さらに、 C:\Windows\system32>where node と打つと、 C:\Program Files\nodejs\node.exe と表示されます。 さらに、 https://qiita.com/taiponrock/items/9001ae194571feb63a5e ここを参考にして、コマンドプロンプトに、 C:\Windows\system32>node --version と、打つと v8.7.0 と表示されます。 ってことは、「nodejsのパスは通ってる」ってことはないですか? さらに、コマンドプロンプトで、 C:\Windows\system32>npm --version と、打つと、コマンドプロンプトがどこかに行って戻って来ません。
882 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 02:57:58.14 ID:HKb0WdLR.net] npm の仕組みについても、検索して調べて! 思い付きで、色んなコマンドを打っても、動かない C:\Windows\system32>node --version C:\Windows\system32> そもそも、ここは、Windows のシステム領域だろ。 こんな場所へは行かないし、ここからコマンドを打つことは、絶対にない 自分のホームディレクトリ以下に、プロジェクトフォルダを作って、 そこからコマンドを実行する プロジェクトフォルダ>node --version これで、コマンドが探せないのなら、 >>849 のサイトを見て、勉強する OS の仕組みについて、何年も勉強していなければ、 環境構築・システム運用はできない
883 名前:848 [2017/10/17(火) 03:06:35.78 ID:ISfP7NF8.net] つか、わかった。 スタートメニューに色々出来るけど、 nodejs と、 Node.js command prompt があって、 Node.js command prompt を立ち上げるべきを、 nodejs を立ち上げてたのだと思う。
884 名前:848 [2017/10/17(火) 03:18:05.69 ID:ISfP7NF8.net] gihyo.jp/dev/serial/01/nodejs/0001 つかこれの、真ん中ぐらいの、 >を実行すると,コンソールに「foo」と出るのが確認できます。 これが確認出来ました。 ありがとうございました。
885 名前:848 [2017/10/17(火) 03:22:08.69 ID:ISfP7NF8.net] しかし、nodejsも、Node.js command prompt も、 どっちもコマンドプロンプトみたいなもんだけど、ドコが違うんですかね?
886 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 10:55:35.86 ID:tiaX2vSA.net] それを調べて糧にするのがお前の役目だろ
887 名前:848 [2017/10/17(火) 11:29:12.47 ID:ISfP7NF8.net] node.jsを使ってjQueryチックにWebサイトをクローリングする方法 https://liginc.co.jp/programmer/archives/4848 これが半分ぐらい出来たんですけど、 これをちゃんとやるには自分のpcにmysqlがインストールされてないとダメなんですかね?
888 名前:848 [2017/10/17(火) 11:30:33.39 ID:ISfP7NF8.net] 私的には.csvのデータで十分なんだけど。
889 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 15:55:26.78 ID:G9wCIPXR.net] プログラミングの学習が目的ではないみたいだし 潔く諦めてGUIのスクレイピングツールを使え 自分で学ぼうとしないやつを いつまでも相手にするほどみんなヒマじゃないから
890 名前:デフォルトの名無しさん [2017/10/17(火) 19:05:26.58 ID:OFQ0CJNG.net] >>868 SQLiteおぬぬめ
891 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 22:43:19.58 ID:HKb0WdLR.net] MongoDB, Redis など、NoSQL系DB で良い
892 名前:デフォルトの名無しさん [2017/10/18(水) 11:32:51.58 ID:RFRRa2Hk.net] KVS最強