【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
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/
2017/09/09(土) 11:50:30.88ID:al+wrNfN
>>806
だからなんだよ。

トランザクションの話をしてる時に
open/closeのコストを考えるなって話だろうが
2017/09/09(土) 12:01:05.07ID:al+wrNfN
>>808
> 連想配列にキーが存在するかチェックするのならinが速いな
一回あたり
59.21ナノ秒(=0.00000005921秒)
97.41ナノ秒(=0.00000009741秒)

だと10万回〜100万回ぐらいチェックしない限り
速度を気にしたって意味なさそうだね。
2017/09/09(土) 12:42:11.18ID:gq9mYezw
Object を連想配列にした場合、キーを、__proto__ にすると誤動作するから、
そのキーだけ、特別な処理が必要

他にも、使えないキーがあるかも
2017/09/09(土) 12:46:58.91ID:al+wrNfN
>>813
どういう時に __proto__ をキーに使ったの?
2017/09/09(土) 14:34:12.81ID:gq9mYezw
英文から、すべての単語を取り出して、出現回数でも調べたのかな?

どこかのサイトで、そういう質問を見た
2017/09/09(土) 15:01:25.52ID:1mapG51j
つい最近>>746でオレが聞いた
2017/09/09(土) 15:37:47.37ID:al+wrNfN
>>815
そういう場合は、適当なプリフィックスをつけるだけで解決するね

obj['@' + word] = なんとか
2017/09/09(土) 16:00:58.16ID:3M7laixG
Object.create(null)で作ったオブジェクトには__proto__は無いし自由に値を設定できるこれ豆
2017/09/09(土) 17:11:43.49ID:gq9mYezw
Object.create() は、ECMA 5.1, IE9 以上か

こういう機能が無かった、ES3 の頃の話かな
820デフォルトの名無しさん
垢版 |
2017/09/09(土) 19:32:09.22ID:JfRpRKzR
chromeのdevtoolsからconsole.dir({})やるとオブジェクトの中身が見れるけど
nodejsの場合はどうやって見るんでしょうか?
2017/09/11(月) 09:40:29.07ID:vJ3AiMg+
○次受けが多いほど退場率が早くなる。高くなる

直受けの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)  プログラマーズ
2017/09/12(火) 14:01:13.14ID:yQ6PO1c5
https://github.com/rook2pawn/node-ddos
調べ物をしている最中にこんなの見付けたんだけど
Httpdがリクエスト受け取ってる時点でDDoS対策にならないんじゃないの?
2017/09/12(火) 14:33:55.38ID:ziqXdae+
>>822
動作の軽いリバースプロキシ立ててそこで対応するほうがよさそう
824デフォルトの名無しさん
垢版 |
2017/09/12(火) 15:30:08.72ID:bSzAw540
node 8.0ってimpotr対応してないの?
2017/09/12(火) 18:35:03.20ID:e3er3ToK
Chromeですら対応したというのに・・
2017/09/12(火) 18:49:24.80ID:BAm9hYWq
node 8はこの秋LTSになるんだからアグレッシブに最新機能は入れないよ
node 9には入る
2017/09/12(火) 21:29:56.96ID:LuYVlbWB
くそっ、typoかよ騙された
828デフォルトの名無しさん
垢版 |
2017/09/15(金) 21:47:46.74ID:v6+6iXpW
>>810
どういうこと?くわしく
2017/09/15(金) 23:16:55.75ID:AmSlTqPm
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番目のようにデータが見やすく作る方法ってないですか?
2017/09/15(金) 23:30:32.45ID:Xh3vGrxx
なんでObject.createしばりなの?
リテラル使っちゃだめな理由は?
2017/09/15(金) 23:36:18.16ID:QyBaQfPQ
>>828
>>809を読め

>>830
>>746とか>>813を読め
2017/09/15(金) 23:40:38.42ID:wJEpgv7W
リテラルじゃ継承されるからじゃね
2017/09/16(土) 00:01:15.52ID:xdW9+GRk
>>829
Object.assign(Object.create(null), { a: {name: 1}, b: {name: 2}, }) ;

>>810
undefinedと比較
2017/09/16(土) 00:09:23.95ID:YClTS+Ib
>>833
Object.assignはシャローコピーだから>>829と同じじゃない

undefinedとの比較は>>809とは違うしどっちみちundefinedを値として使うと破綻する
2017/09/16(土) 00:18:50.51ID:gf/ZkNkm
>>831
え〜〜、Object.prototypeのプロパティに被る可能性があるからっていう理由で
>>829みたいな書き方になっちゃうの。。。用途によるんだろうけど何とも言えない気分
2017/09/16(土) 00:36:48.84ID:NSNMTUH3
使うプロパティの種類が限られてるなら
気にする必要ないだろ
2017/09/16(土) 08:30:48.03ID:7pQmikz8
>>829
jqueryから$を取り上げよう
2017/09/16(土) 08:33:39.21ID:NSNMTUH3
>>837
また新しいライブラリを作ろうって話かよ。
lodashでできるんじゃね?
2017/09/16(土) 09:45:53.23ID:7pQmikz8
簡単な関数だよ
$(name1, value1 ...)
>>829みたいな事をすれば良い
2017/09/16(土) 09:57:17.44ID:NSNMTUH3
そうするとjQueryと勘違いされるから
違う関数名のほうが良さそうだね
2017/09/16(土) 11:34:59.96ID:C+9D3UXm
にわかばっかだなここ

{
__proto__: null,
a:1
}

を使えば良いだけだろ……
その程度も知らないようじゃJSer失格
恥ずかしいよほんとに
2017/09/16(土) 18:21:39.65ID:/o2/v2Gm
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);
}
じゃとれませんでした
どうやって取るんでしょうか?
2017/09/16(土) 18:46:19.62ID:GikFp8do
もはやnode.jsの話じゃないな
node.js使わずchromeでやってるんだからわざとやってるだろ
まずはjavascript prototypeでググれ
それで分からないことはどこかのjavascriptスレで聞け
2017/09/16(土) 21:08:44.37ID:qXL21HWW
?????????????????
2017/09/16(土) 21:17:16.00ID:fS24z2RM
バッドノウハウ多すぎ!!!!!!!!
2017/09/17(日) 09:39:33.63ID:FQFctnSq
>>843
chromeのコンソールでconsole.logした方が解析しやすいじゃん バカなの?
2017/09/17(日) 18:24:28.11ID:bBG8AL9E
>>842
getOwnPropertyNamesは名前の通りOwnなプロパティしか取れん
for-inは継承を遡るが、列挙不可にされてるプロパティは取れん
ビルトインプロパティは基本的に列挙不可されているので
結局for-inでも殆どOwnなプロパティしか取れん
それを取るには、__proto__を繋げていって一つ一つにgetOwnすること
848デフォルトの名無しさん
垢版 |
2017/10/16(月) 07:08:15.82ID:x77nDEIG
https://nodejs.org/en/
の、8.7.0 Current をインストールしました。
で、
node.jsを立ち上げ、
.helpは通るのですが、
$ node
や、
$ node -v
は、
SyntaxError: Unexpected identifier
になってしまいます。
どうすればいいでしょうか?
2017/10/16(月) 07:58:53.13ID:BYvG9erR
コマンドプロンプト・PowerShell で、
node -v
とコマンドを打つと、そのコマンドの実行ファイルを、OS が探す必要がある

つまり、その実行ファイルの場所を、環境変数PATH などで、OSに教える必要がある

環境変数PATHに指定していなくても、
絶対・相対パスで指定すれば、実行できるはず

Windowsのパス(PATH)の読込順 と起動される順番
http://takuya-1st.hatenablog.jp/entry/20110116/1295188903
850デフォルトの名無しさん
垢版 |
2017/10/16(月) 08:26:32.58ID:x77nDEIG
>>849
レスありがとうございます。
では、どうやればいいのでしょうか?
node.exeは↓にあります。
"C:\Program Files\nodejs\node.exe"
2017/10/16(月) 08:44:36.72ID:H4ZQF/LB
これはひどい
852848
垢版 |
2017/10/16(月) 09:14:18.01ID:x77nDEIG
>>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を打っても、
エラーになってまう。
これは不思議なことだと思わないかね?
2017/10/16(月) 11:09:57.97ID:FZpcfz8T
思わんよ
お前だからな
2017/10/16(月) 15:17:21.46ID:kN1YFDVK
なんでそんなレベルでnode.jsインストールしようと思ったんだろ
855848
垢版 |
2017/10/16(月) 19:08:59.31ID:x77nDEIG
>>854
https://www.webprofessional.jp/beginners-guide-node-package-manager/
このページの黒い部分でいうと、
> console.log('Node is running');

> .help
これは、
実行出来るのです。

この状態でバージョン確認をするにはどうすればいいのでしょうか?
2017/10/16(月) 19:46:31.00ID:MK8giXG1
>>850
C:\Program Files\nodejs\node.exe
2017/10/16(月) 20:38:10.52ID:VwEzpL/B
>>855
> process.version
858848
垢版 |
2017/10/16(月) 20:56:45.49ID:x77nDEIG
>>857
お、ありがとうございます。 通りました。
じゃ、私の環境で↓のコマンドが使えるようにするにはどうすればいいのでしょうか?ちなみに、バージョンは、v8.7.0でした。
$ which node
$ node --version
2017/10/16(月) 21:14:41.96ID:VwEzpL/B
>>858
849が書いてくれてるようにPATHが通ってないんだろうからPATHを通す
パスの通し方とかでググって
コマンドプロンプト使う時の基本だから
2017/10/16(月) 21:32:19.39ID:dl4DNYXd
windowsとlinuxの違い、コマンドプロンプトとnode起動後のコンソールの違いが理解できてないっぽいな
$は入力するものじゃないしwitchコマンドはwindowsにはない
2017/10/16(月) 23:57:03.44ID:BYvG9erR
例えば、コマンドプロンプトで、
where notepad
と打てば、メモ帳の実行ファイルの場所が、表示される

where node
と打てば?
862848
垢版 |
2017/10/17(火) 01:14:58.50ID:ISfP7NF8
皆さん、レスありがとうございます。感謝します。

ちなみに、
コマンドプロンプトで、
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
と、打つと、コマンドプロンプトがどこかに行って戻って来ません。
2017/10/17(火) 02:57:58.14ID:HKb0WdLR
npm の仕組みについても、検索して調べて!
思い付きで、色んなコマンドを打っても、動かない

C:\Windows\system32>node --version

C:\Windows\system32>
そもそも、ここは、Windows のシステム領域だろ。
こんな場所へは行かないし、ここからコマンドを打つことは、絶対にない

自分のホームディレクトリ以下に、プロジェクトフォルダを作って、
そこからコマンドを実行する

プロジェクトフォルダ>node --version

これで、コマンドが探せないのなら、
>>849
のサイトを見て、勉強する

OS の仕組みについて、何年も勉強していなければ、
環境構築・システム運用はできない
864848
垢版 |
2017/10/17(火) 03:06:35.78ID:ISfP7NF8
つか、わかった。
スタートメニューに色々出来るけど、
nodejs
と、
Node.js command prompt
があって、
Node.js command prompt
を立ち上げるべきを、
nodejs
を立ち上げてたのだと思う。
865848
垢版 |
2017/10/17(火) 03:18:05.69ID:ISfP7NF8
http://gihyo.jp/dev/serial/01/nodejs/0001
つかこれの、真ん中ぐらいの、
>を実行すると,コンソールに「foo」と出るのが確認できます。
これが確認出来ました。
ありがとうございました。
866848
垢版 |
2017/10/17(火) 03:22:08.69ID:ISfP7NF8
しかし、nodejsも、Node.js command prompt も、
どっちもコマンドプロンプトみたいなもんだけど、ドコが違うんですかね?
2017/10/17(火) 10:55:35.86ID:tiaX2vSA
それを調べて糧にするのがお前の役目だろ
868848
垢版 |
2017/10/17(火) 11:29:12.47ID:ISfP7NF8
node.jsを使ってjQueryチックにWebサイトをクローリングする方法
https://liginc.co.jp/programmer/archives/4848
これが半分ぐらい出来たんですけど、
これをちゃんとやるには自分のpcにmysqlがインストールされてないとダメなんですかね?
869848
垢版 |
2017/10/17(火) 11:30:33.39ID:ISfP7NF8
私的には.csvのデータで十分なんだけど。
2017/10/17(火) 15:55:26.78ID:G9wCIPXR
プログラミングの学習が目的ではないみたいだし
潔く諦めてGUIのスクレイピングツールを使え

自分で学ぼうとしないやつを
いつまでも相手にするほどみんなヒマじゃないから
871デフォルトの名無しさん
垢版 |
2017/10/17(火) 19:05:26.58ID:OFQ0CJNG
>>868
SQLiteおぬぬめ
2017/10/17(火) 22:43:19.58ID:HKb0WdLR
MongoDB, Redis など、NoSQL系DB で良い
873デフォルトの名無しさん
垢版 |
2017/10/18(水) 11:32:51.58ID:RFRRa2Hk
KVS最強
2017/10/23(月) 09:02:07.81ID:2VeGFVWI
windows10をFCUしたら
node-notifierと言うライブラリが機能しなくなってしまいました。
呼び出すとエラーも出さずに消えてしまいます。
どこを確認すべきでしょうか?
875デフォルトの名無しさん
垢版 |
2017/10/23(月) 12:01:05.02ID:bv0ZvSeb
クリーンなPCで検証
2017/10/25(水) 17:27:32.02ID:wXo7lKEI
コレってnode.jsでGoogle Assistantを呼び出せるの?

https://github.com/actions-on-google/actions-on-google-nodejs
2017/11/02(木) 09:20:24.78ID:qskrUnxL
>>876
書いてあるだろ
2017/11/02(木) 18:07:41.82ID:bLT6lfrr
expressってproductで使われてんの?
2017/11/02(木) 18:13:56.96ID:RicVp4Qn
ツイッターもインスタグラムも使ってるよ
2017/11/02(木) 19:46:41.59ID:cCQG4q+b
koa使おうぜ
2017/11/03(金) 09:20:41.79ID:tbSBcvrg
複数人体勢のexpressのほうが安心
koaは作者一人だから不安だから使わない
2017/11/06(月) 21:16:07.71ID:tccVqtCS
koaってexpressのミドルウェアそのまま使える。async await大好きマンに取ってはたまらない1品
883デフォルトの名無しさん
垢版 |
2017/12/01(金) 17:33:36.24ID:Tsnnxn0j
koa2+reactjsのdynamicで快適。 ejsやjadeを使わず、javascriptのみですっきり。
いいで〜 koa2+react。
884デフォルトの名無しさん
垢版 |
2017/12/01(金) 20:58:49.48ID:dEoQxhVh
>>883
うむ
2017/12/02(土) 05:34:12.07ID:IJ6GXagf
サーバサイドでreactってどういう意味?
2017/12/02(土) 08:11:38.76ID:zj58uySz
ssrじゃね?
2017/12/02(土) 12:17:05.09ID:JzqKudWn
ssrっていらなくね?
2017/12/02(土) 13:37:03.76ID:iXlrNF2g
ツイッターもインスタもNetflixもやってるぞ
889デフォルトの名無しさん
垢版 |
2017/12/04(月) 01:47:10.73ID:sdiyRgle
メテオとかいうFWって死んじゃったんですか?
2017/12/04(月) 20:47:28.49ID:EJPuWg3p
全体的に名前空間で仕切られてないこのグダグタnodeライブラリ。
10年後も、その時の最新のnodeで使えるんなほんまに。
2017/12/06(水) 19:36:04.95ID:GgcfIolq
ん? SSRに何か問題でも?
2017/12/06(水) 20:20:27.85ID:MyyqK5wy
鯖側の負荷が増える
893デフォルトの名無しさん
垢版 |
2017/12/12(火) 22:19:31.72ID:gHkSE4eN
node.js難しいっていうイメージだったけど、
JavaScriptがウンコだったってことみたい

なんでこんなに散らかってしまったんだ
せめて書き方を統一しろよ
2017/12/12(火) 23:49:28.08ID:gqOvSsDA
>>893
ESLint使えば?
2017/12/12(火) 23:57:54.77ID:8VRWkTHd
なんでって20年以上も歴史のある言語で産まれたときとは用途も規模も全然違ってるからな
2017/12/13(水) 00:01:47.40ID:pDkqMCU5
JavaScriptは言語仕様が使いにくいとは思う
小規模なら使いやすいかというと全然そんなことない
2017/12/13(水) 23:32:59.98ID:dQY+CYRc
言語仕様に難しいところはない。
難しいと思う所言ってみな?
2017/12/14(木) 01:12:30.76ID:JyoUxFOL
プロトタイプベースなところ
使いやすいと思ったことがない
2017/12/14(木) 01:32:58.14ID:LEbaYuuB
プロトタイプなんて使うことないだろ?
2017/12/14(木) 05:58:01.99ID:fEY/FzHm
>>893
うむ
2017/12/14(木) 05:59:02.65ID:fEY/FzHm
>>896-897
仕様が難しいというのと馬鹿の扱いが難しいのは別の話だな
2017/12/14(木) 10:39:14.62ID:y5gxd1px
ES2015に従えばプロトタイプってことを意識することはないかな。
既存のクラスにメソッド追加したいときとかなら意識するけども。
2017/12/14(木) 20:55:43.66ID:LEbaYuuB
>>902
prototypeを使って簡単なことをするのと
prototypeを使って複雑なことをするのでは
当たり前だけど難易度が違うのさ

既存のクラスにメソッドを追加するのは、
prototypeの簡単な使い方に含まれる
意味はわからなくてもいいから、こういう書き方をすればOK
程度の説明だけでもクラスにメソッドを追加することはできる
2017/12/15(金) 02:24:03.53ID:OK9q/vji
クラスだけじゃなく手続き型っぽくも書いたり
はたまた関数型っぽくも書いたりするとこがどう書いていいか分からなくて難しいってことなんじゃない?

凄く冗長に厳かに書いたかと思えばハッキ―なテクニックも使ったりもするしね
世の中には「良い書き方は1つ」を目指してる言語もあるけどJSはその対極だからね
標準ライブラリが少ないという点もそう

俺はそういう点こそが好きだけどね
2017/12/15(金) 07:18:04.72ID:18KhAamS
OOPが常に最適解ではないというのは衆知の事実だしな。
俺は基本関数型風で書くのが好みで、データ型にtsのinterfaceが使えれば充分だ。
2017/12/15(金) 11:04:58.73ID:vwC80Nto
node-redを使ってるんですが
フローって作成するとメモリに常駐するんですか?
作れば作るほど実行してなくても他のフロー処理速度は遅くなっていきますかね?
907デフォルトの名無しさん
垢版 |
2017/12/15(金) 17:13:59.28ID:WQPs5rl9
パイプ演算子追加されれば関数型っぽく書くのが楽になるんだけどね
現状じゃ括弧のネスト増えるからとてもじゃないけど書けない
2017/12/15(金) 17:30:06.75ID:nGMqwgOn
関数の合成も完結に書きたいしimmutableなデータ構造もネイティブにサポートして欲しいし
そしたらパターンマッチも不可欠だし
関数型への道は険しい
Elm使え
2017/12/15(金) 21:51:56.77ID:OK9q/vji
ES提案中のパイプライン演算子は当分奇抜な草案扱いだったが
|>await|>など提案によりStage1の中ではHotになりつつある
あとは?を絡めた関数定義を詰めるのと、Mixin周りの提案が勝負
そこをもう少しでも詰めればStage2まではいけるが、Stage3にはawaitの様なパンチが必要
頑張れ
2017/12/15(金) 22:47:15.05ID:L7gVN0RS
>>907
パイプだろうがドットだろうが大差ないだろw
どうせ一行が長くなったら改行するんだから


つまり

foooooooooo()
| baraaaaaaaaaaaa()
| bazzzzzzzzzzzzzzz()

でも

foooooooooo()
.baraaaaaaaaaaaa()
.bazzzzzzzzzzzzzzz()

でも同じだろと

foo() | bar() | baz() でも
foo().bar().baz() でも同じだろと
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況