【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>319 普通にcentにnginx入れてるが つうかどのディストリ使おうがインストール作業なんてたいしたもんじゃない 面倒なのは設定だ ubuntuなら特別設定が楽かといったらNOだろ >>321 スクリプト書く労力も大して変わらないっってのもわかるんだけど、pm2だとプロセスのリスタートとかも簡単でさ。Node.jsにAPIをいくつもぶら下げるような環境だとこれ入れた方が楽そうだなって思って。 計算方式が複雑で専門知識も必要な超面倒なことで止まってて、npm無いかなと思ったらあったんですが、マイナーで開発も止まってるっぽいです。 installしてみたら、moduleの中にあるc++のところで何やらwarningがいろいろ吐かれてたのですが一応は動く… cは全然やったことないので何でダメなのかはぼんやり。 こんなとき。これをそのまま使うのと、改変出来るようにcも勉強するのと、専門知識と計算を自力で勉強して頑張るの、どれがベストですかね。 warning出てるから信頼性無いとかいう盲信はヤメロ >>325 レスありがとう。もうそのまま使っちゃうっ 警告の内容による 割とどうでも良い内容の場合オプションで黙らせてるオープンソースソフトウェアも多々ある chromiumでビルドツールが吐いたファイルのコンパイルオプションを見ると かなりの数の警告がデフォルトで無効化されてるはず 初心者ですまんだけど、functionの中で使えるモジュールとそうじゃないのあるんだけどそれってどうしてなの? エラーも出ずにただただ動かないやつあるんだよね。関数の外だと動かせるのに。 >>328 具体的に何のモジュール? どういう環境で動かして発生してる? ただただその関数が呼ばれてないだけというオチに1票 呼んでないならエラー出るんじゃね? 関数の外だと動くとしたらexpressとかかな。router.getとかpostの中で走らないとかなら前にあった気もしなくない。どうしたか忘れたけどw Rubyを使えば? Chefのレシピは、どこにでもある Chef → Vagrant → VirtualBox CentOSは8〜10年と、サポート期間が長い。 Ubuntu Serverは5年だろ Chefはオワコン あんなものに時間を費やするとか バカみたいだろう %w{php mysql nginx}.each do |name| package name do action :install end end %w{php-fpm mysql nginx}.each do |name| service name do action :start end end Chefで、複数のパッケージをまとめて、インストール・起動できる Rubyでは中間言語にコンパイルする時に、エラーが分かるから、 途中まで実行されないから、中途半端な状態にならない シェルスクリプトではエラー処理など、複雑なプログラミングはできない Chefでは、action :install など、共通のコードで、 ディストリによって、CentOSのyum / Ubuntuのapt-get を自動的に切り替える 設定ファイルに書き込むとか、cron での定期実行とか、 Vagrant を削除すればすべて消えるから、何回でもテストできるし、 Test Kitchen というテストツールもある こんな全工程をとても、シェルスクリプトでは書けない Rubyは宗教だからな >>331 もしこれなら呼ぶ順番とかnextされてないとかそういうことちゃう? spookyjsでjsonをファイルから読み込むのってどうやるの? >>336 > Rubyでは中間言語にコンパイルする時に、エラーが分かるから、 > 途中まで実行されないから、中途半端な状態にならない まあ、誰に目にも間違いだと明らかにわかっていることだが、 ネタ的に面白いから言ってみて。 「他の言語だとこういう場合にこうなって、 Rubyだとそうならない」という形で例を言ってみて 面白くないし言わせなくていいよ 元々スレ違いの話だし続けても荒らしにしかならん 逃げ出すなら今のうちだぞ?w Rubyだとコンパイルされてもエラーがわからず エラーで途中で中断されるまで実行されてしまって 中途半端な状態になる例 ↓↓↓↓ f = File.new("out.txt", "w") f.write("test") f.close() aaa() File.delete("out.txt") aaa()で途中で中断される。out.txtというファイルは消えずに残る >>340 さーせんw >>336 がウソだってばらしてやったので もう来ないと思うわーww Chefの冪等性を言語の機能だと思ってんのかな あれは苦労してそうなるように実装してるんだよ スッキリくん おまいらがいろいろめんどくさいこと言うから事の発端の初心者の子が出てこれなくなってるじゃないかw ちょっと伸びててしかもなんで別言語の話になってるの?と思って追ってみただけだけど。 いつもということは常駐してんの?ひまだねえ いや このスレに限ったことじゃなくて 2ちゃん全般だから ひまなのは認める >>336 そろそろJenkinsおじさんに次ぐChefおじさんと呼ばれる人たちがでてくるころかな。 今始めるなら、Ansibleがおすすめだよ。 Chef(など)の冪等性の機能って本当に同じ状態にするわけじゃないからな まず書いてないことの状態は、定まらない。例えばこういうファイルを作れや ファイルを削除する。なら定義できるが、そこに書いたこと以外の 余計なファイルが有ったり足りなかったりしてた場合は違う状態になる。 それからパッケージとかライブラリとか、インターネット上から落としてくるようなやつは 同じになるとは限らない。バージョンを指定したら同じになるだろうが、今度は そのバージョンが削除されたらエラーになってしまう 本当に同じ状態にするのであれば、最初に作ったものをイメージ化するしかない。 だがイメージ化したものを使って変更を入れないのならば冪等性なんかは不要になる。 これがイミュータブルインフラストラクチャーという考え方 必要なのは「最初に作るもの」を手順化したものだけ。 そこにChefが必要か?と言われれば当然必要ない。 なぜなら、Chef等が登場する以前、みんな端末から手動で構築していたろ? 端末っていうのは要するにbashだったりzshだったり。 つまりbashシェルスクリプトで全部できることでしかない。 インタラクティブな処理とファイル編集はbashシェルスクリプトでやりにくいように思うかもしれないけど インタラクティブな処理は、シェルスクリプトでも実行する方法が用意されているものだし ファイル編集は発想を変えて、ファイルそのものをコピーすればいい そうすれば消して特定の状態から環境を作る処理なんざシェルスクリプトでなんの苦労もなくできる。 消さずに何度も設定を送り込んむような(クラウド的ではない)使い方をするのなら 冪等性があると便利だから使う意味があるが、それでもAnsibleで十分だし、Ansibleの方が簡単 >>336 > Chefでは、action :install など、共通のコードで、 > ディストリによって、CentOSのyum / Ubuntuのapt-get を自動的に切り替える 一見便利そうに思うかもしれないけど、汎用的なChefレシピを作ってる人(誰かいんの?)以外は CentOSとUbuntuを変更したいなんてことはまずない。 そもそもCentOSとUbuntuではパッケージ名が違う だから自動的に切り替えることは完全にはできない。 それからバージョン番号とかどうする?完全に一致するわけじゃない。 結局CentOSはこの名前のパッケージで、Ubuntuだとこの名前のパッケージというように 切り替えるファイルが別に必要 誰かが用意してくれてるんだろうが、マイナーなパッケージまでそれをやってくれるのか? 頑張った所でCentOSとUbuntuで違うが生まれるというのに、誰が喜ぶんだという話 https://www.ogis-ri.co.jp/otc/hiroba/technical/vagrant-chef/chap3.html > どうやら Ubuntu と CentOS は git-daemon のパッケージ名が異なるため、 > 同じパッケージ名で両方の OS に対してパッケージをインストールできないようです。 > 以下のようにレシピ中でプラットフォームごとに適切なパッケージ名を使うように変更しましょう。 > > package "git-daemon" do > case node[:platform] > when "centos" > package_name "git-daemon" > when "ubuntu" > package_name "git-daemon-run" > end > action :install > end あははw あほくさ 本末転倒とはまさにこの事 cookbookは各社が公開している Chef社のopscode、Railsを作っている Basecamp社、 Berkshelfを作っている Riot Games社、 Pivotal Trackerを作っている Pivotal Sprout社、 aws, engine yard この本を参照。 Chef実践入門 - コードによるインフラ構成の自動化、2014 > cookbookは各社が公開している そうやって誰かが用意してくれなければ 使いづらいようなものを他人(各社以外=つまり俺ら)が メンテ何するなんて苦行でしかない。 シェルスクリプトでみんなやれているのに それをわざわざ別の形式で書く必要なんてないんだわ。 みんなが手動でパッケージ入れたりしているものを 単に記述しただけなんだぞ。 シェルスクリプトなら探す必要もないし、 難しさのかけらもない 2014年という終わコンになったChef soloを 使った手順しか書かれてない本も読まなくていい ansibleから漂う超光速通信感が格好いいからアンシブル好き何やってるのかは知らんけど >>352 俺がchefをやめた理由: ・アーキテクチャがころころ変わる(最大の理由) → なので、ちょっと前の情報がもう全然駄目になる(書籍もネットの情報も) ・リモートにインストールが必要 ・他人が作ったcookbookでなにやってるのかよくわからん ・さらに、そのカスタマイズポイントを調べるのが面倒 ・自分で書く場合は、結局ディストロ意識するので、CentOS用に書いた奴はUbuntuでは使えない まあ、Ansibleにもあてはまる項目あるけどね。 >>352 俺がchefをやめた理由: ・アーキテクチャがころころ変わる(最大の理由) → なので、ちょっと前の情報がもう全然駄目になる(書籍もネットの情報も) ・リモートにインストールが必要 ・他人が作ったcookbookでなにやってるのかよくわからん ・さらに、そのカスタマイズポイントを調べるのが面倒 ・自分で書く場合は、結局ディストロ意識するので、CentOS用に書いた奴はUbuntuでは使えない まあ、Ansibleにもあてはまる項目あるけどね。 アーキテクチャがころころ変わるのは オンプレ連中に楽させるかよ金払えって意図がある >>357 そのAnsibleにもあてはまる項目だけど、 各アプリの設定ファイルを、わざわざAnsibleのyml形式で 書き直すっていうのがアホらしいと思う あと、 Ansible公式でモジュールが用意されているとあるサーバーアプリがあるのだけど、 そのサーバーアプリの最新版がリリースされたら公式モジュールが動かなくなった このように間に別の仕組みがはいって、その別の仕組はアプリごとに 用意しないといけないものというのは、公式で対応すべきじゃないと思う。 利用者が自分で書くか、アプリ自信に配布してもらうか ちなみになAnsible Galaxy見てみたら、そのアプリに対応するモジュールが 50個以上あったわw 検証してられるか=それらはゴミ >>359 > 各アプリの設定ファイルを、わざわざAnsibleのyml形式で > 書き直すっていうのがアホらしいと思う うん、アホらしいね だから、設定ファイル(ふつーのテキストファイル)に変数を埋め込む機能が準備されてるんだね ゴミに関しては、chefのcookbookの方が多いんじゃないかな さらに同じ目的なのに多数類似品が見つかるし、動かなくなってるのもあるし ただ、 > 各アプリの設定ファイルを、わざわざAnsibleのyml形式で > 書き直すっていうのがアホらしいと思う は書くのは大変だけど、多大なメリットがある それは、デプロイするパッケージのバージョンを上げるときに、付属する設定ファイルが 結構変わったり、パッケージそのものが変わっても、設定をyamlで書いとけば変更なし (あるいはちょっとした変更)でいけたりする iptablesからfirewalldの変更とかね 設定アイル事前準備→内容書き換え→配布だと、それに対応できない場合がある > それは、デプロイするパッケージのバージョンを上げるときに、付属する設定ファイルが > 結構変わったり、パッケージそのものが変わっても、設定をyamlで書いとけば変更なし > (あるいはちょっとした変更)でいけたりする それは普通にアプリ標準の設定形式であっても同じ もし、付属する設定ファイルが結構変わっていたりしたら それにAnsibleが対応するまで、使えない。 実際、エラーが出て困ってる。 >>360 > 書き直すっていうのがアホらしいと思う うん、アホらしいね だから、設定ファイル(ふつーのテキストファイル)に変数を埋め込む機能が準備されてるんだね そして、アホらしいから設定ファイルに変数を埋め込む方法を使えば 設定ファイルが大きく変わったとき困るよね? >>361 > iptablesからfirewalldの変更とかね iptablesはこっちを使いましょう https://docs.ansible.com/ansible/iptables_module.html firewalldはこっちを使いましょう http://docs.ansible.com/ansible/firewalld_module.html 見ての通り使える機能が違うからオプションも違います。 iptablesを勉強した後、Ansibleのドキュメントを見て、何が何に対応するか調べましょう そして firewalldを勉強した後、Ansibleのドキュメントを見て、何が何に対応するか調べましょう docker派の俺、高みの見物 自社サーバー中心だとその辺楽だなあ >>362 > もし、付属する設定ファイルが結構変わっていたりしたら > それにAnsibleが対応するまで、使えない。 そんなことないよ。 設定ファイルが結構変わってても、設定する項目は変わらなかったりする。 locale関連設定とか、timezone設定とか。 >>363 > 設定ファイルが大きく変わったとき困るよね? そうだよ。だからyamlで設定するメリットを書いた。 >>364 > 見ての通り使える機能が違うからオプションも違います。 だから、yamlで設定を書いておけば、少しの変更でいけるって書いたじゃん。 それに、この例で言えば、iptablesでもfirewalldでもいける設定を誰かが作ってるかもしれないし。 俺はそれ探すより自分で書き換えた方が速かったから探してないけど。 誰かが作ったカスタマイズ度が高い設定を使うだけなら、chefもansibleも似たようなもんかもね。 >>357 のデメリットが大部分あてはまる。 > だから、yamlで設定を書いておけば、少しの変更でいけるって書いたじゃん。 それは無理。公式がコードを修正しないといけない どれも枯れてないものばかりだし変化に文句つけても仕方なかろう 実際に手を動かしてるやつがいて安心したんだけどな 机上の空論語るよりよっぽどためになる と言いつつ、dockerの俺は高みの見物 ES6モジュールで書かれた依存モジュールがある状態だとbabel-node使えないな node_modulesのignore外すとbabel自身を変換しようとするのかエラー出て通らない globalにbabel-cli入れないとダメか electronで作ってるんだけどC#とかのWindow Form?と違ってcssデザインの才能ないと見た目が悪くなるなコレ こういうのを参考にすれば? monaca(PhoneGap/Cordova) + AngularJS + Onsen UI サンプルアプリ & テンプレート https://docs.monaca.io/ja/sampleapp/samples/ Onsen UIをカスタマイズするOnsen Theme Rollerの紹介 http://blog.asial.co.jp/1355 >>376 これ便利ですね! ありがとうございますm(__)m npmが壊れたみたいなのですが、これはどうすればよろしいのでしょうか。 経緯: 1. 本日初めてインストール。(v4.8.1-x86、なおvistaなのでv6.10.1は無理だった) 2. gulp等インストールが順調に完了 3. uglifyしようとするも、ES2015のためエラー 4. uglify#harmonyをインストールしようとするも、httpsでエラー 5. ローカルにクローンしてnpmしても、途中でhttpsでエラー 6. npm install npm@latest -g しようとするが、ディレクトリを間違えていたため途中でCtrl-Cで止める 7. これ以降npmが動かなくなる 8. 何度もnodeをアンインストール/再インストールしてみたが、npmが動かない。 9. エラーメッセージは以下。(ディレクトリ名は消してます) >npm version npm module.js:327 throw err; ^ Error: Cannot find module 'semver' at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (npm\node_modules\npm\lib\utils\unsupported.js:2:14) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) アンインストールしても直らないので、レジストリかどこかに書いてそうなのですが、 ご存じないでしょうか。 vistaの場合はドッチなんだろう ここも削除してみたら Windows XP - %USERPROFILE%¥Application Data¥npm¥node_modules Windows 7 - %AppData%¥npm¥node_modules と言うか最新版が入らない時点で終了な気がする。 ネット上の環境使ったほうが早くないかな https://c9.io/ >>379 ありがとうございます。復活しました。 ディレクトリは%USERPROFILE%\AppData\Roaming\npm\node_modulesでした。 >>380 試行錯誤の末、何とか動くようになりました。 結論としては、Gitも最新版にする必要があったようです。 > https://git-scm.com/download/win nodeにもgitが入っていてそれを使っているものだと勘違いしてました。 ありがとうございました。 next.js使えるって思ったら クライアントサイドのコードとサーバサイドのコードの連携方法が不明。 expressでlistenしているサーバーの443ポートに、socket.ioをねじ込むことはできますか? httpsしか許可していないLAN環境で使いたいためです。 >>389 ありがとうございます。 別IPか別ホストに分けて起動するようにします。 レス間違えました。388ありがとうございます。 >>389 そうなんですか? どうやるんでしょう? 何分、始めたばかりで基本の知識に乏しいものでして… >>391 expressのserverをioの引数にしてlistnするだけじゃなかったっけ? >>392 ありがとうございます! 調べてやってみます。 こんな感じであっさりとできました。すげー! keysはSSLの証明書ファイルとかです。 ex = require('express'); app = ex(); ... some js ... sv = https.createServer(keys, app).listen(port, bind); io = require('socket.io').listen(sv); ありがとうございました!! Node.js@Windowsです。 spawnを使ってexpectのようなことってできないんでしょうか? 例えば以下のように、stdoutに「Y/N」が出力されたら「y」と答えるようなことがしたいのですが…。 const spawn= require('child_process').spawn; const de = spawn('del', [ '/p', 'foo' ], { shell: true }); de.stdout.on('data', (data) => { if (data.toString().indexOf('Y/N') !== -1) de.stdin.write('y'); // ??? }); next.jsってjsコードをクライアントでもサーバでも動くように書かないとだめなの? 例えば以下のような条件を入れてサーバとクライアントで処理を分岐することはできるけど typeof window === `undefined` そもそもimportについてはどうすればいいの? fsがないって怒られんるだけどサードパーティのライブラリが依存してたら使わなくてもエラーになっちゃうし。 react naitive躓きました react-naitive init hogehoge ってやってプロジェクト作ろうとするとdoneと表示されてもプロンプトが戻ってこない。 nodejsはanyenvを使って最新を入れてます。 ctrc+cで無理やり戻すと当然プロジェクトはできていないので何もできない。 まだ勉強し始めなんだけどコールバック地獄を抜けたらPromiseラップ地獄が始まってる気がするゾ RxのAsyncSubjectってPromiseと比較してどんなメリットがあるんだ? async/awaitで使えないから不便と思う callback地獄なんか近づかずにpromiseとasync await始めたほうがいい。 promise抑えてからじゃないとasync await使えないから、promiseは必須な rxはreact nativeあたりと組み合わせるとどうなんだろうね? coldとhotって概念があったり意外とつまずきやすい。全てがstreamという概念は素敵そうだけどreactとうまく組み合わせられるんか? async使い出すとやってくるtry catch地獄 コールバック地獄って無名関数でしか渡してないから問題なだけじゃね? fs.readdir(source, function(err, files) { if (err) { console.log('Error finding files: ' + err) } else { files.forEach(function(filename, fileIndex) { console.log(filename) gm(source + filename).size(function(err, values) { if (err) { console.log('Error identifying file size: ' + err) } else { console.log(filename + ' : ' + values) aspect = (values.width / values.height) widths.forEach(function(width, widthIndex) { height = Math.round(width / aspect) console.log('resizing ' + filename + 'to ' + height + 'x' + height) this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) { if (err) console.log('Error writing file: ' + err) }) }.bind(this)) } }) }) } }) >>408 fs.readdir(source, func1) var func1 = function(err, files) { if (err) { console.log('Error finding files: ' + err) } else { files.forEach(func2) } } var func2 = function(filename, fileIndex) { console.log(filename) gm(source + filename).size(func4) } var func3 = function(width, widthIndex) { height = Math.round(width / aspect) console.log('resizing ' + filename + 'to ' + height + 'x' + height) this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) { if (err) console.log('Error writing file: ' + err) } var func4 = function(err, values) { if (err) { console.log('Error identifying file size: ' + err) } else { console.log(filename + ' : ' + values) aspect = (values.width / values.height) widths.forEach(func3) }.bind(this)) } } >>409 redux学習中だけどRxJSと組み合わせると何が幸せになるん? RPとFRPの区別がついてない奴を馬鹿にして粋がれるとか >>411 RxJSのメリットは非同期の扱いを楽にしてくれること RxJSとreduxを組み合わせるのは 一番よく使われてるフレームワークにのっかることで Redux向けのツール類やノウハウなんかでそのメリットを享受するため >>409 の1つ目のリンクはRxJSだけでreduxと同じようなことをやってる例 2つ目は組み合わせて使う例 >>410 少し訂正。問題は適切な名前をつけるのが難しいところにあると思うね。 var func1 = function(err, files) { if (err) { console.log('Error finding files: ' + err) } else { files.forEach(func2) } } var func2 = function(filename, fileIndex) { console.log(filename) gm(source + filename).size(func3) } var func3 = function(err, values) { if (err) { console.log('Error identifying file size: ' + err) } else { console.log(filename + ' : ' + values) aspect = (values.width / values.height) widths.forEach(func4.bind(this))) } } var func4 = function(width, widthIndex) { height = Math.round(width / aspect) console.log('resizing ' + filename + 'to ' + height + 'x' + height) this.resize(width, height).write(destination + 'w' + width + '_' + filename, func5) } var func5 = function(err) { if (err) console.log('Error writing file: ' + err) } fs.readdir(source, func1) electronというかjsでデスクトップアプリって流行ると思いますか? >>413 非同期の扱いを楽にするって観点ならasync awaitで必要十分じゃないか。 RxJSならではのメリットを知りたい。 >>415 reactnativeでデスクトップアプリが作れるようになったほうがいいと思うけどね。性能面でも。 electronで結構キラーアプリは出てるから使えて損はない。 chromeOSが復活しないかな。 アプリごとにchromeが中で動いてるのって無駄な気がするんだよね WEB+DB vol.97 の特集が、React WEB+DB vol.94 の特集が、Kotlin, Electron RxJSをみてるとJavaScriptにPromise入れるのは もっと慎重にやるべきだったと思うね reduxは非同期処理入れるのにミドルウエアが必要でその中の候補としてrxjsがあるってこと? 非同期処理は多用するんだからミドルウエア無しで対応しろよ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる