pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。
node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系
http://iojs.org/
Rhino - JVM上で実行できる処理系
https://developer.mozilla.org/ja/Rhino
io.js の経緯
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002
前スレ
【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
692デフォルトの名無しさん
2017/07/10(月) 13:43:08.24ID:gqDySAuG >>691
koaってexpressのミドルウェア使えたはず。
だからエコシステム的には問題ない。
とは言えasync-awaitもところどころ詰まるところはあるのは分かる
(例えばarrayのmapに渡す関数としては使えないとか。)
でも今から使うならkoaの方かな。
koaってexpressのミドルウェア使えたはず。
だからエコシステム的には問題ない。
とは言えasync-awaitもところどころ詰まるところはあるのは分かる
(例えばarrayのmapに渡す関数としては使えないとか。)
でも今から使うならkoaの方かな。
693デフォルトの名無しさん
2017/07/10(月) 13:46:50.96ID:Labl8nFy expressのミドルウェア使うならexpressでええやん
694デフォルトの名無しさん
2017/07/10(月) 14:16:11.77ID:gqDySAuG >>693
非同期処理を同期的にかける魅力には勝てない。
非同期処理を同期的にかける魅力には勝てない。
695デフォルトの名無しさん
2017/07/10(月) 14:57:56.02ID:szK1finj 691に戻る
696デフォルトの名無しさん
2017/07/10(月) 16:33:23.58ID:hbYLDPUX f
697デフォルトの名無しさん
2017/07/10(月) 17:53:20.41ID:LYSrTSKk >>692
array.mapに非同期関数渡したいならrxjsで処理してtoPromiseすればおk
array.mapに非同期関数渡したいならrxjsで処理してtoPromiseすればおk
698デフォルトの名無しさん
2017/07/10(月) 18:48:24.41ID:gqDySAuG699デフォルトの名無しさん
2017/07/10(月) 19:17:56.48ID:9M+6V9gq まっ CORE ASP使っている身としては、koa2で十分なんだが、JadeからPugへの変更って必要だったのかえぇ〜? いまいちのような感じかする。
軽いCMSにkoa2は便利。 重いのもいけそうではあるが・・・
軽いCMSにkoa2は便利。 重いのもいけそうではあるが・・・
700デフォルトの名無しさん
2017/07/10(月) 19:26:02.76ID:LYSrTSKk701デフォルトの名無しさん
2017/07/11(火) 16:15:40.20ID:IkyG2RiR koa2ってなに?koa.jsのこと?
702デフォルトの名無しさん
2017/07/11(火) 17:21:49.33ID:9uLf2kf9 koe.js v2
703デフォルトの名無しさん
2017/07/11(火) 17:22:14.73ID:9uLf2kf9 x koe.js v2
o koa.js v2
o koa.js v2
704デフォルトの名無しさん
2017/07/11(火) 23:24:55.50ID:rvrzGERi あんましexpressもkoaも使ってるぜーって情報発信してる人いない気がする。
知らないうちにブロだクションで動いてるんかな
知らないうちにブロだクションで動いてるんかな
705デフォルトの名無しさん
2017/07/11(火) 23:54:59.61ID:0kzPGIzN expressってwebアプリケーションフレームワークって感じじゃないからな
rubyでいえばrack相当でrails相当じゃないから表に出ない
rubyでいえばrack相当でrails相当じゃないから表に出ない
706デフォルトの名無しさん
2017/07/12(水) 00:05:15.88ID:lpTuRvg7 expressはnode.js標準に付いていてもおかしくない程度の軽いフレームワークだしな
707デフォルトの名無しさん
2017/07/12(水) 01:08:53.04ID:VV5TEq59 ぶっちゃけ、express使うような案件だとphpでよくない?っておもっちゃう
708デフォルトの名無しさん
2017/07/12(水) 01:23:02.63ID:qAT72GnU socket.ioとか使いたいからそれはないな
709デフォルトの名無しさん
2017/07/12(水) 03:27:41.84ID:VV5TEq59 >>708
おれもゲームサーバーでnode+socket.io使ってるけど、expressで配信するコンテンツってphpでよくね?ってパターン多い気がする
どうしても非同期じゃないと無理ってパターン以外は非同期のデメリットがでかすぎる
とくにDBがらみの単純な登録画面とかね
phpの数倍の開発コストかかるよ
おれもゲームサーバーでnode+socket.io使ってるけど、expressで配信するコンテンツってphpでよくね?ってパターン多い気がする
どうしても非同期じゃないと無理ってパターン以外は非同期のデメリットがでかすぎる
とくにDBがらみの単純な登録画面とかね
phpの数倍の開発コストかかるよ
710デフォルトの名無しさん
2017/07/12(水) 04:17:22.08ID:Rdi75m+a expressでdbアクセスなんてしてないな
bffとして使ってるから
node/expressの後ろのapi鯖はphpだったりrailsだったりjavaだったり
bffとして使ってるから
node/expressの後ろのapi鯖はphpだったりrailsだったりjavaだったり
711デフォルトの名無しさん
2017/07/12(水) 04:21:26.67ID:VV5TEq59 >>710
ああ、そういう二段構えならokだね
ああ、そういう二段構えならokだね
712デフォルトの名無しさん
2017/07/12(水) 07:31:45.77ID:46U9BX05 でもphpって1requestが1プロセスで高コストだから同時接続数を稼ごうと思ったらnode.jsの方が良いんじゃないの?dbがボトルネックだから気にする必要はない?
713デフォルトの名無しさん
2017/07/12(水) 07:33:23.93ID:46U9BX05 それにasync awaitつかえば非同期処理はかなり自然に書けないかな?
学習コストは高くなるかもだけど
学習コストは高くなるかもだけど
714デフォルトの名無しさん
2017/07/12(水) 08:32:57.14ID:Fm5flkvk async/await使いたいけど、LTSになるまで待ってって言われてる(´・ω・`)
TypeScriptはコンパイルしたくないって言われた、、、
TypeScriptはコンパイルしたくないって言われた、、、
715デフォルトの名無しさん
2017/07/12(水) 08:35:16.60ID:VV5TEq59 最終的にはアクセス増えたときのパフォーマンスの話になるんだろうけどそんなこと気にするレベルじゃない案件でわざわざ苦労してまでexpressでがんばる必要はないなと思う
必要な場面で局所的に使うのがnodeっていうイメージ
必要な場面で局所的に使うのがnodeっていうイメージ
716デフォルトの名無しさん
2017/07/12(水) 11:37:51.18ID:WN7PTjbN phpだってさすがにスレッドぐらい使えるだろう
717デフォルトの名無しさん
2017/07/12(水) 14:22:08.20ID:sNyzU/qO 非同期DB使えよ
718デフォルトの名無しさん
2017/07/12(水) 15:54:06.61ID:46U9BX05719デフォルトの名無しさん
2017/07/24(月) 09:12:28.43ID:/vKjgZpt express-resourceを使ってAPIサーバーを作りたいって考えているのですが
データベースへのアクセス手順を共通化したくなり、下記のようにしました。
class dbaccess {
constructor(db) {
this.db = db
}
index(req, res, next) {
console.log(this) // undefined
this.db.find({}, (e,r)=>res.json(r))
}
// 以下略
}
app.use('users', new dbaccess(db))
1 APIクライアントからの GET /
-> this が undefined になっていてエラーになる
2 下記のコードからのindex()呼び出し
var dba = new dbaccess(db)
dba.index(null, null)
-> thisの内容が表示される
何か上手い解決策はないでしょうか。
データベースへのアクセス手順を共通化したくなり、下記のようにしました。
class dbaccess {
constructor(db) {
this.db = db
}
index(req, res, next) {
console.log(this) // undefined
this.db.find({}, (e,r)=>res.json(r))
}
// 以下略
}
app.use('users', new dbaccess(db))
1 APIクライアントからの GET /
-> this が undefined になっていてエラーになる
2 下記のコードからのindex()呼び出し
var dba = new dbaccess(db)
dba.index(null, null)
-> thisの内容が表示される
何か上手い解決策はないでしょうか。
720デフォルトの名無しさん
2017/07/24(月) 10:45:49.25ID:1TXRI9Gx constructor内で
this.index.bind(this)でthisの束縛をすれば解決しませんか?
this.index.bind(this)でthisの束縛をすれば解決しませんか?
721デフォルトの名無しさん
2017/07/24(月) 15:05:38.54ID:BdqEvISL うむ
722デフォルトの名無しさん
2017/07/24(月) 17:23:58.44ID:/vKjgZpt >>720
お答えいただきありがとうございます。
それを全部のメソッドにやるのも何かしっくりこないので、
下のようにクロージャにしてしまったら何とか期待する動作になりました。
function dbaccess(db) {
let _db = db;
return {
index(req, res) {
}
// 以下略
}
}
クラスだと上手くいかないのがイマイチ納得できてませんけど。
お答えいただきありがとうございます。
それを全部のメソッドにやるのも何かしっくりこないので、
下のようにクロージャにしてしまったら何とか期待する動作になりました。
function dbaccess(db) {
let _db = db;
return {
index(req, res) {
}
// 以下略
}
}
クラスだと上手くいかないのがイマイチ納得できてませんけど。
723デフォルトの名無しさん
2017/07/25(火) 06:14:42.65ID:5XPEt11J >>722
それが問題ならアロー関数をつかえば解決します。自動でthisを固定するんで。
それが問題ならアロー関数をつかえば解決します。自動でthisを固定するんで。
724デフォルトの名無しさん
2017/07/25(火) 21:46:43.91ID:1fcXX4D/ >>719
おいおい、変なことしないほうが良いぞ
もうちょっと調べるべきだろ?
他のプロジェクトでそんな書き方してるか?
昔やったきりで忘れたし今のやり方は変わってるかもしれないから
適切なアドバイスはできないがよ、他はもっと簡単な書き方してるだろ?
おいおい、変なことしないほうが良いぞ
もうちょっと調べるべきだろ?
他のプロジェクトでそんな書き方してるか?
昔やったきりで忘れたし今のやり方は変わってるかもしれないから
適切なアドバイスはできないがよ、他はもっと簡単な書き方してるだろ?
725デフォルトの名無しさん
2017/07/25(火) 22:27:51.60ID:5XPEt11J >>724
http://qiita.com/kazusa-qooq/items/23926befcb87c0c7b26f
によると
req,res,nextの3引数を取る関数を作ればいいみたいね。
偶然にもクロージャーを使うというのは正解だけど
nextを省略してるってことは他のミドルウエアを後から追加したら
動かなくなる
こういうの見てるとtypescript使うべきって思う。
型でapp.useに渡すクロージャーを制約できるからこういう失敗がない。
http://qiita.com/kazusa-qooq/items/23926befcb87c0c7b26f
によると
req,res,nextの3引数を取る関数を作ればいいみたいね。
偶然にもクロージャーを使うというのは正解だけど
nextを省略してるってことは他のミドルウエアを後から追加したら
動かなくなる
こういうの見てるとtypescript使うべきって思う。
型でapp.useに渡すクロージャーを制約できるからこういう失敗がない。
726デフォルトの名無しさん
2017/07/25(火) 22:30:30.22ID:FGFvX1HY >>719
GCされてね?
GCされてね?
727デフォルトの名無しさん
2017/07/26(水) 15:41:26.54ID:2Xw6+C7K 722です
一応、最小限っぽいコードを書いてみました。
http://www.dotup.org/uploda/www.dotup.org1319642.zip.html
users.jsからdbaccessを利用していますが、ここをtags.js, articles.jsと増やしていきたいって考えています。
>>724
本家のサンプルも利用者のblog記事なども一通り見たのですが、
見つかるは全部関数なので、そもそもクラスでの利用を想定していないのだろうと当たりを付けて
影響なさそうなクロージャにしてしまいました
>>725
ミドルウェアの追加は想定していない、クライアントコードなので特に支障はないと判断してます
本音を言うと、ただ書き忘れただけなのですけど。
一応、最小限っぽいコードを書いてみました。
http://www.dotup.org/uploda/www.dotup.org1319642.zip.html
users.jsからdbaccessを利用していますが、ここをtags.js, articles.jsと増やしていきたいって考えています。
>>724
本家のサンプルも利用者のblog記事なども一通り見たのですが、
見つかるは全部関数なので、そもそもクラスでの利用を想定していないのだろうと当たりを付けて
影響なさそうなクロージャにしてしまいました
>>725
ミドルウェアの追加は想定していない、クライアントコードなので特に支障はないと判断してます
本音を言うと、ただ書き忘れただけなのですけど。
728デフォルトの名無しさん
2017/07/26(水) 16:04:27.16ID:2Xw6+C7K ちなみに、なんでクラスで書こうと思ったのかと言えば
クロージャとクラスのインスタンスが内部的には等価だと思っていたからです
クロージャとクラスのインスタンスが内部的には等価だと思っていたからです
729デフォルトの名無しさん
2017/07/26(水) 16:54:58.69ID:p1ZvRLSy codepenとか使うかgithubに上げるかして欲しいわ。
正直zipでってなんかイャ
正直zipでってなんかイャ
730デフォルトの名無しさん
2017/07/26(水) 16:56:23.68ID:p1ZvRLSy731デフォルトの名無しさん
2017/07/26(水) 21:17:16.61ID:EkC4vcRh732デフォルトの名無しさん
2017/08/18(金) 21:49:38.61ID:ujwXUmoS useの第2引数に何が許されてるのかドキュメント読みなさい
733デフォルトの名無しさん
2017/08/27(日) 14:46:16.26ID:JVSE3drk forkの経緯を眺めてたけどこれio.jsの時と違って結構めんどくさいな
これまでのNodeは人治主義のOSSだったってことか
これまでのNodeは人治主義のOSSだったってことか
734デフォルトの名無しさん
2017/08/27(日) 15:42:03.26ID:XHFSs/EA シングルスレッドだから遅くならないって言うけど
マルチスレッド言語で動的にスケールすればいいでしょ?
マルチスレッド言語で動的にスケールすればいいでしょ?
735デフォルトの名無しさん
2017/08/27(日) 15:44:19.45ID:IFPOQiAt Node.js Foundationに対し不安を持つグループによるNode.jsのフォークプロジェクト「Ayo.js」誕生
https://mag.osdn.jp/17/08/25/163000
https://mag.osdn.jp/17/08/25/163000
736デフォルトの名無しさん
2017/08/27(日) 15:53:01.24ID:4pu+F5Jq >>734
だよな
だよな
737デフォルトの名無しさん
2017/08/27(日) 15:53:18.14ID:4pu+F5Jq >>735
matakayo
matakayo
738デフォルトの名無しさん
2017/08/27(日) 16:05:49.89ID:iBnNI7N6 シングルスレッドだから遅くならないなんて言っている人なんているかねぇ?
C10Kの話ならかなりニュアンスが違う。
C10Kの話ならかなりニュアンスが違う。
739デフォルトの名無しさん
2017/08/27(日) 16:12:18.21ID:HAnDkIM0 優秀な一名をこき使うから速いんだな。
ほんの少しでも空時間があったら仕事をぶっこむ。
人間なら死ぬわ。
ほんの少しでも空時間があったら仕事をぶっこむ。
人間なら死ぬわ。
740デフォルトの名無しさん
2017/08/27(日) 16:17:42.17ID:XHFSs/EA741デフォルトの名無しさん
2017/08/27(日) 16:22:23.64ID:sNhXAArf > メモリ使用量が増えないってnodeのメリットじゃないの?
だれがメモリ使用量が増えないというメリットが有ると
いったんだ? お前の脳内か?
だれがメモリ使用量が増えないというメリットが有ると
いったんだ? お前の脳内か?
742デフォルトの名無しさん
2017/08/27(日) 17:35:42.54ID:0P4eY3kj nodeが良かったのはは非同期apiにより
プロセスあたりのリクエスト処理数を高めたからでしょう?
マルチプロセスにすればその分リクエスト処理数もある程度スケールしてくれる。ただしdbアクセスは考慮しないものとする
プロセスあたりのリクエスト処理数を高めたからでしょう?
マルチプロセスにすればその分リクエスト処理数もある程度スケールしてくれる。ただしdbアクセスは考慮しないものとする
743デフォルトの名無しさん
2017/08/27(日) 18:30:42.93ID:LIgBPoun mongoDBとかNoSQLとはなんだったのか
744デフォルトの名無しさん
2017/08/27(日) 18:57:54.53ID:IIGC9wQX >>743
nodeとは全く別もので、ただのデータベース
nodeとは全く別もので、ただのデータベース
745デフォルトの名無しさん
2017/08/28(月) 11:26:19.65ID:XrV67/p5 Nodeが普及したのは良いサイバーサイドJS環境だったから
746デフォルトの名無しさん
2017/08/29(火) 09:43:28.14ID:PNzW02X+ let dict = {}
で辞書のように使おうとしたんだけど、
dict['constructor']ではまった
アレイにkvペア入れて頑張るしか無いの?
16万項目あるので線形検索は躊躇う
で辞書のように使おうとしたんだけど、
dict['constructor']ではまった
アレイにkvペア入れて頑張るしか無いの?
16万項目あるので線形検索は躊躇う
747デフォルトの名無しさん
2017/08/29(火) 10:19:27.35ID:9ZzXxIqM Mapを使うとかlet dict = Object.create(null)とか
748デフォルトの名無しさん
2017/08/29(火) 11:53:07.27ID:sgTDSrY2749デフォルトの名無しさん
2017/08/29(火) 11:59:45.48ID:PNzW02X+ Object.createで上手くいった
try catchで検出してエラーになるのを、別管理と考えてたけど、すっきりした
さんきゅ
try catchで検出してエラーになるのを、別管理と考えてたけど、すっきりした
さんきゅ
750デフォルトの名無しさん
2017/08/29(火) 12:07:49.40ID:PNzW02X+751デフォルトの名無しさん
2017/09/03(日) 12:30:07.14ID:U+3KDr2c eslintとそれにぶら下がるプラグイン本当互換性がない
ツール入れる所でトラブらないといけないとかだるいわ
これだからJavaScriptなんて書きたくないんだよ
ツール入れる所でトラブらないといけないとかだるいわ
これだからJavaScriptなんて書きたくないんだよ
752デフォルトの名無しさん
2017/09/03(日) 12:34:43.60ID:DIhXI1rF eslintのプラグイン何を使おうとしてるの?
使わなければいいじゃない
使わなければいいじゃない
753デフォルトの名無しさん
2017/09/03(日) 12:59:47.72ID:VH3Jw1dH airbnb辺りのプリセット使えばええやん
754デフォルトの名無しさん
2017/09/03(日) 20:32:32.58ID:CKCB7oSp そのairbnb関連のjsx-a11yとかな
https://github.com/evcohen/eslint-plugin-jsx-a11y/issues/283
https://github.com/evcohen/eslint-plugin-jsx-a11y/issues/283
755デフォルトの名無しさん
2017/09/04(月) 11:57:48.72ID:xXgpQO1P >>742
そういうのもNginxやApacheがある程度やってくれるようになってるからね。
後ろは好きな言語をそのまま使えばいい。PHP-FcgidとかuWSGIとかRackとかServletとか。
そういうのもNginxやApacheがある程度やってくれるようになってるからね。
後ろは好きな言語をそのまま使えばいい。PHP-FcgidとかuWSGIとかRackとかServletとか。
756デフォルトの名無しさん
2017/09/04(月) 18:58:52.14ID:XPn2hQsA757デフォルトの名無しさん
2017/09/04(月) 20:39:48.99ID:tWvDAnX3 >>756
フレームワークによってはイベントループで生存期間が無限のものもあったはず。
前の会社で、そういうWebSocketフレームワーク使おうとしてたよ。
…そんな用途全く想定してない普通のPHP用のオレオレライブラリ組み合わせて
メモリリーク起こしてたけど(藁
フレームワークによってはイベントループで生存期間が無限のものもあったはず。
前の会社で、そういうWebSocketフレームワーク使おうとしてたよ。
…そんな用途全く想定してない普通のPHP用のオレオレライブラリ組み合わせて
メモリリーク起こしてたけど(藁
758デフォルトの名無しさん
2017/09/05(火) 08:00:30.55ID:JsNUX7wh >>757
メモリリーク起こすなら使えないな。
phpってインスタンスの生存時間短い前提だから、
メモリリークってさほど気にしなくて良い言語なのかも。
素直にjsでいい気がするけどね。今の時代。
yahooで勤務してる知り合いも今はjsでサーバサイドを書いてるってさ。
メモリリーク起こすなら使えないな。
phpってインスタンスの生存時間短い前提だから、
メモリリークってさほど気にしなくて良い言語なのかも。
素直にjsでいい気がするけどね。今の時代。
yahooで勤務してる知り合いも今はjsでサーバサイドを書いてるってさ。
759デフォルトの名無しさん
2017/09/05(火) 14:51:11.75ID:x6NjkUnp もともとCGIはリクエスト毎にプロセス作ってサービスしてた
なので、一つのリクエストが終了するとperlやphpのプロセスも終了するので、オブジェクトを解放(リファレンス外す)しないCGIが多くある
ところが、これじゃおせーよと言うことで、終了させないで無理やりに複数リクエストを処理させる仕組みをでっち上げた
これがPHP-FcgidとかuWSGI
リークしまくりのサービスが出来上がり
三菱とかやりそうだろ
なので、一つのリクエストが終了するとperlやphpのプロセスも終了するので、オブジェクトを解放(リファレンス外す)しないCGIが多くある
ところが、これじゃおせーよと言うことで、終了させないで無理やりに複数リクエストを処理させる仕組みをでっち上げた
これがPHP-FcgidとかuWSGI
リークしまくりのサービスが出来上がり
三菱とかやりそうだろ
760デフォルトの名無しさん
2017/09/05(火) 15:05:46.14ID:EAdtS/tk だから一定数のリクエストを処理したらプロセス再起動する
三菱でも大丈夫
三菱でも大丈夫
761デフォルトの名無しさん
2017/09/05(火) 15:06:06.76ID:y9gU3zED メモリだけじゃなくて
CPUもファイルI/Oも簡単に食い潰せるからな
CPUもファイルI/Oも簡単に食い潰せるからな
762デフォルトの名無しさん
2017/09/05(火) 16:00:05.67ID:JsNUX7wh >>760
なるほどね。大雑把な作りだ。
大昔Dephiの案件をやった時に、PLが
ひとかたまりのEXEを画面ごとにバラバラのEXEにして
切り替えるたびに終了させる仕組みを作り出して、メモリリークを
極力抑える仕様にしてたの思い出した(データはDBにおいてる)
なるほどね。大雑把な作りだ。
大昔Dephiの案件をやった時に、PLが
ひとかたまりのEXEを画面ごとにバラバラのEXEにして
切り替えるたびに終了させる仕組みを作り出して、メモリリークを
極力抑える仕様にしてたの思い出した(データはDBにおいてる)
763デフォルトの名無しさん
2017/09/05(火) 17:07:49.21ID:x6NjkUnp >>760
三菱は自動再起動なんて技術がないから、連絡受けて手動で再起動してた
三菱は自動再起動なんて技術がないから、連絡受けて手動で再起動してた
764デフォルトの名無しさん
2017/09/06(水) 21:18:48.34ID:CWS2BygD 何故、三菱が引き合いに出されるのだ?
なんかやらかしたんかい。
なんかやらかしたんかい。
765デフォルトの名無しさん
2017/09/06(水) 21:34:30.85ID:tZ2T0w/m Librahackで検索
766デフォルトの名無しさん
2017/09/06(水) 22:59:23.06ID:CWS2BygD 三菱電機インフォメーションシステムズ (MDIS) 製のソフトウェアは、
1時間に400以上リクエストを送られると他のリクエストの処理が不可能になる不具合を含んでいた
これか?
9秒に1回以上で破たんするなんてどんな実装か興味津々
1時間に400以上リクエストを送られると他のリクエストの処理が不可能になる不具合を含んでいた
これか?
9秒に1回以上で破たんするなんてどんな実装か興味津々
767デフォルトの名無しさん
2017/09/06(水) 23:25:37.77ID:tZ2T0w/m これを読むとイメージがわかる
http://takagi-hiromitsu.jp/diary/20130316.html
http://el.jibun.atmarkit.co.jp/pressenter/2012/09/1-0f4e.html (事件をモデルにしたフィクション)
http://takagi-hiromitsu.jp/diary/20130316.html
http://el.jibun.atmarkit.co.jp/pressenter/2012/09/1-0f4e.html (事件をモデルにしたフィクション)
768デフォルトの名無しさん
2017/09/07(木) 03:05:39.43ID:x1ExMc+m そもそもDOMとのメモリリークとかまともに対応してきたJS界のエンジンが優秀過ぎるだけで
他のサーバサイド言語で環境を跨いた循環参照とか上手く処理できるエンジンは無いし、他のGC技術や調整も何年も遅れてる
他のサーバサイド言語で環境を跨いた循環参照とか上手く処理できるエンジンは無いし、他のGC技術や調整も何年も遅れてる
769デフォルトの名無しさん
2017/09/07(木) 06:19:08.39ID:+w9zPnXt WebアプリでDBコネクションを10分間も保持するなんてどういう実装したらできるんだろ?
普通にやったんじゃできないよね。
普通にやったんじゃできないよね。
770デフォルトの名無しさん
2017/09/07(木) 07:18:46.25ID:K4PeVUi8 応答しなければいい
771デフォルトの名無しさん
2017/09/07(木) 09:17:55.33ID:9vlATu9m >>769
expressだって、グローバルスコープの変数にコネクション保持すれば、その参照切るまで残るぞ
expressだって、グローバルスコープの変数にコネクション保持すれば、その参照切るまで残るぞ
772デフォルトの名無しさん
2017/09/07(木) 12:06:54.84ID:OJmUELTm773デフォルトの名無しさん
2017/09/07(木) 12:43:46.04ID:rxsfMKHp Webのセッションが終わってるのにコネクションをセッションのために10分間保持してたって事でしょ?
普通はコネクションは閉じないがWebのリクエスト毎に紐付けは開放でしょ。
普通はコネクションは閉じないがWebのリクエスト毎に紐付けは開放でしょ。
774デフォルトの名無しさん
2017/09/07(木) 13:10:59.01ID:ZzrrO/3t >>773
アプリサーバーとか作ったことある?
アプリサーバーとか作ったことある?
775デフォルトの名無しさん
2017/09/07(木) 14:19:14.16ID:oGYUX/gJ >>773
その紐付けを解放しないのが三菱流
その紐付けを解放しないのが三菱流
776デフォルトの名無しさん
2017/09/07(木) 19:20:21.66ID:+w9zPnXt777デフォルトの名無しさん
2017/09/07(木) 19:23:08.30ID:+w9zPnXt >>775
三菱に限らずSIerの技術力低下が半端ない
三菱に限らずSIerの技術力低下が半端ない
778デフォルトの名無しさん
2017/09/07(木) 22:32:27.03ID:9vlATu9m 自分達の底辺技術レベルが原因で、無実のエンジニアを罪人にして、ほっかむりしたのは三菱だけ
779デフォルトの名無しさん
2017/09/08(金) 00:15:56.20ID:7o1xz83o ちなみにDBってopenとtransactionを分離している奴があるけど、これって何で?
例えばIndexedDBでもそうで、open後にtransactionを作ってアクセスしなければならない。
しかし普通に読み書きだけなら
DBWrite(DBname, objectStores, key, value)
みたいなAPIでクエリ毎にopen/close繰り返した方が使う側は楽だよね。
何らかの理由でopenが重いから分離しているのだろうけど、
普通に実装すればそんなに重いとも思えない。
(実際はopenは数秒かかる時もある程重いが)
これって何で?
ちなみに類似ケースはXHRで、通常は毎回XHRをnewするだろ。
indexedDB.openもそれに近くて、本来はオブジェクトを初期化するだけで終わるはず。
例えばIndexedDBでもそうで、open後にtransactionを作ってアクセスしなければならない。
しかし普通に読み書きだけなら
DBWrite(DBname, objectStores, key, value)
みたいなAPIでクエリ毎にopen/close繰り返した方が使う側は楽だよね。
何らかの理由でopenが重いから分離しているのだろうけど、
普通に実装すればそんなに重いとも思えない。
(実際はopenは数秒かかる時もある程重いが)
これって何で?
ちなみに類似ケースはXHRで、通常は毎回XHRをnewするだろ。
indexedDB.openもそれに近くて、本来はオブジェクトを初期化するだけで終わるはず。
780デフォルトの名無しさん
2017/09/08(金) 00:27:44.82ID:vWsWUiiy781デフォルトの名無しさん
2017/09/08(金) 00:28:57.91ID:vWsWUiiy782デフォルトの名無しさん
2017/09/08(金) 00:31:58.67ID:vWsWUiiy >>779
> 何らかの理由でopenが重いから分離しているのだろうけど、
> 普通に実装すればそんなに重いとも思えない。
ゆえにopenが重いから分離しているという
あなたの想像は間違いだって言うこと。
根拠のない想像を結論にしないようにしよう
検証の前にあるのは結論ではなく仮定という
トランザクションは複数の操作を一塊にするもので
openが軽いのとは関係ない話
> 何らかの理由でopenが重いから分離しているのだろうけど、
> 普通に実装すればそんなに重いとも思えない。
ゆえにopenが重いから分離しているという
あなたの想像は間違いだって言うこと。
根拠のない想像を結論にしないようにしよう
検証の前にあるのは結論ではなく仮定という
トランザクションは複数の操作を一塊にするもので
openが軽いのとは関係ない話
783デフォルトの名無しさん
2017/09/08(金) 00:47:45.77ID:pIgMfxSJ784デフォルトの名無しさん
2017/09/08(金) 00:55:56.99ID:vWsWUiiy IndexedDB特有の話なら、IndexedDBの話だって書けよ
はい、トランザクションつかってませーん。ばいなら
http://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
オブジェクトストア作成
オブジェクトストアは、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'})
}
はい、トランザクションつかってませーん。ばいなら
http://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
オブジェクトストア作成
オブジェクトストアは、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'})
}
785デフォルトの名無しさん
2017/09/08(金) 00:57:25.86ID:vWsWUiiy IndexedDB特有の話ならtransaction使わないと
readonlyなのかreadwriteなのか決められないからだろ
readonlyなのかreadwriteなのか決められないからだろ
786デフォルトの名無しさん
2017/09/08(金) 01:14:01.64ID:mcCYyLIS >>779
DBへの接続(open)とトランザクションは別のレイヤーだからだよ
1つの接続で2つのトランザクションを実行したい場合どうすんの?
transactionを明示的に指定しない場合に
デフォルト設定で例えばステートメント単位でトランザクションになるような仕組みがDBにあればtransaction指定は必須でなくなる
一般的なRDBはそうなってると思うけど
DBへの接続(open)とトランザクションは別のレイヤーだからだよ
1つの接続で2つのトランザクションを実行したい場合どうすんの?
transactionを明示的に指定しない場合に
デフォルト設定で例えばステートメント単位でトランザクションになるような仕組みがDBにあればtransaction指定は必須でなくなる
一般的なRDBはそうなってると思うけど
787デフォルトの名無しさん
2017/09/08(金) 01:20:17.29ID:pIgMfxSJ >>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は重い)
つかお前根本的に分かってないだろ。
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は重い)
788デフォルトの名無しさん
2017/09/08(金) 01:26:20.56ID:pIgMfxSJ >>786
> transactionを明示的に指定しない場合に(以下略)
これについてはそれでいい。
APIコール1回=1つのtransactionになるって事で。
> 1つの接続で2つのトランザクションを実行したい場合どうすんの?
これってどういうケース?
その2つのトランザクションをくっつけて1つのトランザクションにしておけばいいだけの話では?
並列性を限界まで出したくて、例えばライト/リードでトランザクションを分けておきたいとかか?
> transactionを明示的に指定しない場合に(以下略)
これについてはそれでいい。
APIコール1回=1つのtransactionになるって事で。
> 1つの接続で2つのトランザクションを実行したい場合どうすんの?
これってどういうケース?
その2つのトランザクションをくっつけて1つのトランザクションにしておけばいいだけの話では?
並列性を限界まで出したくて、例えばライト/リードでトランザクションを分けておきたいとかか?
789デフォルトの名無しさん
2017/09/08(金) 03:16:51.74ID:mcCYyLIS790デフォルトの名無しさん
2017/09/08(金) 08:36:52.78ID:Q9xrmP/+ >>780
コネクションプーリングはコネクションを使いまわす仕組みだからDBには繋がったままだけどWebのセッションからはリクエストの度に切り離される。
とっくに終わってるセッションがコネクションを独占するようなアホな作りはどうやったらできるのかって事。
コネクションプーリングはコネクションを使いまわす仕組みだからDBには繋がったままだけどWebのセッションからはリクエストの度に切り離される。
とっくに終わってるセッションがコネクションを独占するようなアホな作りはどうやったらできるのかって事。
791デフォルトの名無しさん
2017/09/08(金) 08:40:11.92ID:Q9xrmP/+ >>787
繋っぱなしってコネクションプーリングのことでしょ。アプリから見ると毎回、open/closeしてるように見える。
繋っぱなしってコネクションプーリングのことでしょ。アプリから見ると毎回、open/closeしてるように見える。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 古市憲寿氏、『中居正広氏の性暴力認定』に疑問符 「上司が部下を飲みに誘うことも性暴力になりうる。幅がメチャクチャ広い」 [jinjin★]
- 【芸能】ホリエモンが登場する日清食品の新CMに元タカラジェンヌ「全てが不快。企業イメージ堕ちた」 [シャチ★]
- 秋田産コメからカドミウム 基準値超、回収進める [蚤の市★]
- 【兵庫】「お前もとっとと自殺しろ」兵庫県議らに大量の脅迫メール 激化する“言論への攻撃”の実態「フラグを立てられたら終わり」 [ぐれ★]
- 【文春】中居正広『性暴力』被害の元フジテレビ女性アナ「私はこの事件のことを隠したかった」「けど、誹謗中傷され、さげすまれ…」★2 [冬月記者★]
- ベッセント米財務長官「株価下落は中国ディープシークAIモデルに関係」トランプ大統領の政策が要因との見方を否定 [Hitzeschleier★]
- 【動画】Xのメンヘラ女子、自殺 [632966346]
- ケンタッキーの鳥皮だけを食べて他の部分を捨てるヤツwww
- 【悲報】アメリカ人「関税なら知ってるよ。日本人がアメリカ政府に25%納めるんだろ?」 [858219337]
- 現代日本人のDNA9割が大陸由来だった [152212454]
- 【異常】サッカー、バスケ、F1が全く報道されないのって野球がクロスオーナーシップ使ってるからだよな
- 【悲報】万博リング(350億円)さん「釘は一切使いません!」⇨ 釘まみれで世界中が大爆笑🤣 [315952236]