◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net YouTube動画>1本 ->画像>2枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1460359714/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
ええなんでまだスレタイとテンプレにio.js入ってんの あとNashornもテンプレに入れてあげなよ
無理だろ 英語でもoreillyやmanningは当然としてpacktからも出てないやんけ v2でasync/awaitベースに変わるから当分出そうにないし その間にnode foundation傘下になったexpressの体勢が整ったらkoaはマイナーで終わるかもしれん
本体の説明だけで終わらせるつもりかよw ミドルウェアたくさんあるんだから書く気があればいくらでも書けるだろ
エーフィのけつがっちりつかんでパンパンしたすぎる!
npmって単にフォルダに入れておくだけでは使えないんですか? インストールが必要なのでしょうか? 初心者ですみません
requestというモジュールをインストールすると、
他のnpmまでインストールされるんですが、これはどういうことでしょうか?
https://www.npmjs.com/package/request このモジュールなんですが
そろそろ荒らしにしか見えない 相手した奴はお仲間と見做す
あと、モジュールは任意の場所にインストールできないのでしょうか? 普通、インストールするとnode_modulesフォルダが作られると思うんですが、その中に大量のファイルがインストールされてしまうため猥雑です。 node_modulesの下層に適当なフォルダを作ってそこにインストールしようとすると、エラーが出るのですが。 連投すみません。
君は質問のやり方がヘタだなぁ その聞き方じゃほとんど答えてもらえないだろうな あとさ、その程度の質問は自分で解決しろって ググればたいていわかるんだからさ まじでその程度を自分で解決できないならプログラミング向いてないので止めなさい
>>17 requestモジュールの中で、また別のモジュールを使っていて(依存していて)、
それが必要だからインストールされる
>>19 >モジュールを任意の場所に
素人は、決められた場所を使った方がいい
モジュールの場所を変えると、モジュールが読み込まれなくなったり、
間違って、同名の別の場所にある、異なるバージョンのモジュールが読み込まれたりして、危険
たいていの実行環境には、モジュール探索パスという環境変数があって、
どのディレクトリから先にモジュールを探すのか、順番が決まっている。
こういうシステムを知らない者は、決められた場所を使うこと
それと、コンピューター名・ユーザー名・パス・ファイル名など、
システムの重要項目に、日本語を使うな
deleteで確実に消えるオブジェクトはどうやって構成できるの?
deleteはオブジェクトを消すものじゃないですけど理解されてますか?
>>21 ありがとうございます。
場所はデフォルトの場所がいいんですね。
叩かれても気にしないスルー力、プログラマーには向いてなくても2chには向いてるな
node jsのモジュールはインストールしないと使えないのですか? ダウンロードしてきたものをnode_modulesにポイッと入れておくだけではだめなのでしょうか?
単独で動作するモジュールならそれでもOK。 他のモジュールに依存してるモジュールなら素直にnpm installしたほうがいい。
28 インストールの方が無難なのですね。 ありがとうございました。
co便利すぎ なぜ私は今まで使ってなかったんだ 便利すぎて徹夜で遊んでしまった
>>30 そこまで行くならもうES7とかaltjs 使えばいいんちゃう?
>>32 es7(es2016)にはasync/await入らんのやで
babelでasync/await使えばええんちゃう、ならおk
>>33 え?そうなの?いつの間に
どちらにしろ拡張機能使うならbabelでええやろ
typedobjectといいオーバーロードといい、どんどん先延ばしにされてるなあ… 大丈夫なんか?
オレがNode.jsに求めることはただ一つ あの非同期が当たり前の実装をやめてくれ。もしくはそうではない普通のJavaScript と同じ実装にしてくれ。いちいちコールバックとか面倒で仕方ない。
お前向いてないよ javascript自体 「ぱある」なるものでも使ってれば?
>>37 普通のJavaScriptと同じなんだが…
普通のJavaScriptでsetTimeoutもxhrも使ったことない人なのかな?
twitterのstreaming APIを使いたくてnode.js入れてみたけど
ググって出て来るサンプルコードがことごとく動かない…
npmで入れたtwitterモジュールもntwitterもだめ。
ちなみに参照してるのは
http://qiita.com/n0bisuke/items/09126e6e2cd111841a2e とか
http://engineer.recruit-lifestyle.co.jp/techblog/2015-07-21-node3/ サーバー側を立ち上げてもすぐプロンプト戻るか無反応。
何が足りないん?
access_tokenの後の_keyを落としてたっぽい 凡ミスで半日潰したわ
>>43 は人間に向いていない。
虫ケラに転生したほうがいい
1日15回しか質問されないja.stackoverflow.comよりは 多くの人間を救ってると思う
Arukas触ってみたけどnode.jsのインスタンス作っても動かないな
それはスピード この世の理はすなわち速さだと思いませんか、物事を速くなしとげればそのぶん時間が 有効に使えます、遅いことなら誰でも出来る、20年かければバカでも傑作小説が書ける! 有能なのは月刊漫画家より週刊漫画家、週刊よりも日刊です、つまり速さこそ有能なのが、 文化の基本法則!そして俺の持論でさ−−−−−−−ァ!
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
u
nodejsって別HHDのデータを読み込めないの? htmlからならアクセスできるのにnodeでパス情報取得しようとしてもうまくいかない
データって具体的に何? ファイル? ファイルどうやって読もうとしてんの? fsモジュールのドキュメント読んだ? ねえ?ねえ?ねえ?
まだ学生だがこんな上司だったら嫌だな 3日で辞めそう
ドットインストールでも読んでくれば?って書こうとしたけど
これ明らかに他の言語やったことある人向けで、あんまり価値ねえな
http://dotinstall.com/lessons/basic_nodejs >>56 はっきり言って其のサイトのコンテンツ、ろくなのがないわ
nodemailerでuser/pass認証をして、20人くらいをtoに設定してsendmailするとスパム扱いされて返送されてしまいます 試しに3人だけにして送ってみたところ、正常に送信することができました こういうのはGoogle側にスパムじゃないと報告いれたりしないとダメなんでしょうか
>>60 どうもー
mandrillが有料化しなければぁ
>>55 2chに就職するわけじゃないだろう。
上司がねらー丸出しならすぐに逃げ出すべき。
まあこのスレは何を作るかってスレではないからな v6.1.0出たけど特に話題になる要素もないし
v6.1.0だとbabel入らなくなるの? LTSじゃないせいか情報が少ない
node.jsド初心者なんだけどヒマな人いたら教えてほしい
node somescript.jsでバッチのように動かせることや
http.createServerでポート空けて待ち受ける簡易Webサーバやれることやデーモン化もできることはわかった
んでこれ実際に運用するときどうする?
http://example.com/hoge/hage/ みたいなリクエストはどう受け付ける?
ていうかnginxやapache httpdからfastcgi呼び出すみたいにフロントのWebサーバがリバースプロキシになるような感じ?
nodeで読み込んだExcelテンプレートを編集して ダウンロードさせたいのですがExceljsを使用すると スタイルの情報が落ちてしまいます。。。 Streaming XLSX Writerなるものを使えばスタイル情報の書き込みもできる みたいですが読み込み方がわからない。 そもそもnodeでExcel扱うなってことですかね。 いろいろ調べてももう行き詰ってしまったので教えてください。 Exceljsにこだわりはないので他のものでも大丈夫です。
公式からnode.jsのwindows版をダウンロードしようとしたら、chromeに 〜 may harm browsing experience, so Chrome has blocked itって怒られるよう
>>69 基本的に内部構造が非公開のExcelを
まともに解析できるライブラリは無いと思え。
一番良く出来ているのはJava製だ。
>>69 google spreadsheetでも使え
レスありがとうございます。
>>72 google spreadsheetの選択肢はありませんでした。
これであればスタイルの読み出しをしないでも
書き込みとDLだけで実現できそうです。
ありがとうございます。
>>76 線やフォントの情報がほとんどです。
Exceljsで下記のような実装をしたところ
エクセルファイルに追記はできるものの、
線もフォントサイズも元に戻ってしまいました。
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(filename)
.then(function() {
var worksheet = workbook.getWorksheet(1);
worksheet.getCell(1,1).value = "test";
workbook.xlsx.writeFile(outputname)
.then(function() {
// done
});
});
>>77 >Streaming XLSX Writerなるものを
これの使い方を調べれば?
>>78 ExcelJSのReadmeを見てみると
>> var workbook = new Excel.stream.xlsx.WorkbookWriter(options);
で書き込み用のワークブックを用意することはできるので
同様にWorkbookReaderにてワークブックを読み込むことはできるのですが
この方法だと読み込んだワークブックに対して
シート指定 (workbook.getWorksheet()) を使用とするとエラーになります。
そもそもインスタンスを作っただけなのでこの時点で指定したファイルが
読み込めているわけではないような気もするのですが。。。
ドキュメントやコミュニティの記事もほとんどなく行き詰ってしまったわけです。
ついに、Electron 1.0がリリースされたぞ
1.0になったら、でなく サイズが10MB未満なったら教えてくれ
サイズでかいよな 自分用にちょちょいと書いたアプリならいいけど 人に渡すには躊躇う大きさだ
あるいはElectronアプリごとのchromiumを共有できるようにして欲しい
>>82 2DDフロッピーや4800bpsの通信が一般的だった時代ならいざ知らず
数百GBのHDDにギガビットのネットワークが普通の時代に何を言うw
>>77 その程度ならActiveXで書き込めば一発じゃね
>>87 引きこもりとファイルサイズの関係を桶屋に例えて説明してくれ。
Electronは、Gradleみたいに自動で、JCenter/MavenCentral などから、 指定したバージョンのChromium/Node.js を、 まだインストールされていなければ、インストールするようにしたらよいのに そうすれば同じPCで、同じバージョンのChromium/Node.js を、重複して持つことは無い
npmの思想に従ったらやはり個別に持つんじゃねーのかな やはりelectron用chromiumが小さくなる方が妥当だ
読み込むmoduleが解決出来なければnpmから導入を試みる仕組みなら少しほしい 例えばテストにしか使わないbabel一連を毎度npm i -Dすると容量食うだけだし とはいえglobalに入れてmoduleのpackage.jsonに一々devDependencies書くのも手間だ
nodeってどういう人が 何する為に使うもんなの?
>>96 俺も知らないけど、javascript大好きな人がサーバーサイドをjavascriptで書くために使うんじゃないの?
業界あげてウェブ技術だけでなんでも出来る世界を作ろうとしてるからね。
>>97 サーバーサイトを書くのは普通php?
python、その他なんて使わないの?
ひとつのモジュールからクラサバ出来れば、楽じゃん。 って発想で俺は割とnode推し。 validationとか。
>>96 普通にtypeScriptみたいにaltJSとか使いたかったり
js側でもテスト駆動開発やりたかったり
SPAとか作りたかったらnodeのエコシステムは必要だと思うけど。
ぶっちゃけnode側のjsとクライアント側のjs そこまで共通化省力化できる部分多くないよね
>>90 正直、配布関係がグダグダのままだよねw
インストーラと呼べるものもねぇし。node.jsのライブラリとかを
実行ファイルの同じディレクトリにまるまんまコピーして配布とか
ダセェこといつまでやらせるつもりなのか。
作ってる連中の程度が低くてイライラする。
>>104 そんなもの言われなくても実装して当然ですよ。今どき。
>>105 LL言語でインストーラーなんて聞いたことがないが?
どうやったところでXSSを克服できない限りおもちゃ扱いだろ 業務にElectronアプリ使ってXSSで機密情報盗まれましたとか目も当てられんわ
>>107 そのアプリで特定のドメインだけに接続するようにすれば
XSSは簡単に克服できるよ
まあそれ以前にXSSを克服してないはずの ウェブがこれだけ世界を支配してるんだけどね。
テキストファイル開いただけでホストの権限取られる脆弱性はウェブにはないわ
テキストファイル(例~/.ssh/以下)開いただけでホストの権限取られるからな ネイティブアプリは
こういうバカに騙されないように知らない人に説明すると ElectronはXSSの仕込まれたHTML開くだけでPC乗っ取られることがバレてから まともな開発者はElectronから手を引きました JSだけが拠り所の低能キチガイNode信者の言うことを真に受けないようにしましょう
>>106 馬鹿かてめぇは。
言語の問題じゃねぇだろ
>>108 ←セキュリティ問題が各所で指摘されてることもわからないアホ
>>107 >>112 >>110 だな。しかしElectron開発者のキモヲタ連中は全く改善しようともしていない。
Node.jsの連中も然りだけれどな。
内紛起こして分裂はするわ、npm停止させて問題起こすわ、このコミュニティは
ちょっと問題ありすぎ。
>>112 横からだけど情報thx
様子見してただけだったが良かった
>>117 ま、正直言わせてもらうけれど、サーバサイドやるならNode.jsなんて
やめておいたほうがいいですよ。実用レベルには至っていないから。
特にElectronはね。
Node.jsのほうはコミュニティと開発者連中に頭のオカシイのが多いから
これまでも問題を起こしまくってるしね。いつまた分裂したりnpm止め
られたりするかわかったもんじゃないよ。
何をどうはねっかえりたいかわからん。 electronで外部のHTMLを開くという事を考えつく方がどうかしてる。 いわゆるアプリなら、得体の知れないdllをロードして叩くとか、得体のしれないモジュールをrequireするくらい頭おかしい行為なんだが。 あとは、モジュールを全部持つってのも、別にwebpackかなんかかけちゃえいいんでないの?
前提条件としてElectronを狙い撃ちにしたXSSが仕込まれたサイトを Electronで見に行けば、任意のコードを実行させられることもありえるよね という無理筋な話だよね
>得体の知れないdllをロードして叩くとか、得体のしれないモジュールをrequire python良く使うけどimportしただけで個人情報を外部サーバーに送信されるモジュールがあったら確かに怖いな
今eslint 2.9.0をインストールしてます eslint 2.10が出てたので更新しようと思いnpm update -gを実行してもeslintが更新されません 何で更新されないんですか?
分裂騒ぎで悪いのはjoyentって企業だけどな それでもjenkins、mariadbと複数の分裂騒ぎ起こして再統合しようともしないoracleよりマシ 最高に頭おかしいoracleが中心に居座ってるjava使うのもやめた方がいいってことだな
nodejs作ってる人たちは無給で趣味でやってんの それともお給料もらってやってんの
>>121 そう。
レンダリングエンジンとしてHTML+cssを使ってるのであって、
ウェブページを見るもんじゃないの。
古い時代の素のphpなんかで、HTMLのヘッダ文を出すためだけに自分で書いたhtmlをrequireしたりするじゃん。
そういう物であって、外部コンテンツをそのまま表示させるものじゃない。
わかりやすさのためにHTMLを開くと書いたがテキストをはじめとするユーザー入力を表示するために パースしてDOMに入れる行為にブラウザと同じくXSSのリスクがあってそれが実行アプリを越えて攻撃できるので危険度激大ということ ウェブページのようにファイルをHTMLとして解釈させる必要などない DOMに入れなきゃ表示できないんだからむしろすべてHTMLとさえ言える VSCodeですらXSSの成功が報告されてて危なくて使えない はっきり言ってこの程度のアンテナも張れない無能は初心者でもなければ技術者やめたほうがいいよ こんな赤ちゃんみたいに懇切丁寧に説明されなきゃ理解できないなんてまともなプログラマなら恥ずかしくて死んじゃうぞ
cssってスタイルシートですか?レベルのひとらが集まってる感じはします
>>126 何言ってんだよ。
DOMにユーザ入力を入れるとか寝言だろ。
phpの、<input ....value="<?=$evi?>">レベルの話。
jQueryなんかでテキトーに組んでる程度の知識しかねえんじゃねえの?
もしくはある程度evalしなきゃならんエディタと、普通のelectronアプリ混同してるのかな。
誰かさんもフロントエンジニアはレベルが低いって言ってましたし 仕方ないんじゃないでしょうか!?
低レベルなフロントエンジニアの崇めてるElectronアプリがいかに危険か擁護の低能さからよくわかりますね HTMLタグに直接埋め込むなんてキチガイ行為がさらっと出てくる人には戦慄を隠せませんわ この程度のスキルでXSSを防げると勘違いしてるパソコンの大先生がElectronアプリを作ってOSを危険に晒しているのです みなさんも気をつけましょうね Fin
kik問題ごときで混乱するような連中だもの、程度なんか知れたもんだろ ここではないどこか他に行くといい 馬鹿が感染っても責任は取れないぞ
>>131 何言ってるのかわからん。
HTMLタグに直接埋め込むレベルのアホさを露呈したのはお前じゃねえの?
指摘されてる事に真摯に受け止めたらどうなんだろ。
とりあえずnode.jsできたサイトをXSSでハッキングしてみせてくれ
>>131 君が言ってるのは悪意のあるテキストをElectronで開いたら、悪意のあるコードが実行されたってわけなんだけど
なぜ、開いた!ってことなんだよ
(メールで送られてきた)悪意のあるexeを実行したら、悪意のあるコードが実行されたってのと同レベルなわけだよ
>>132 その時もここの連中のnpmに依存しない方法すら考えられないアマグラマっぷりには呆れたもんだ
公式で提供されてるのにどんだけ頭悪いんだよ
今回もド素人集団なのを再確認しただけだったな
他の言語だとまだ読めたスレがあるがこのスレはゴミとデマばかりだし捨てるか
初心者向け言語はせいぜい隔離所として役に立ってくれ
殺伐としたスレにシュレディンガーの猫が! ______ / /| ┃ ̄ ̄ ̄ ̄ ̄┃ ┃< にゃー ┃ ┃ ┃ ┃ ┃/  ̄ ̄ ̄ ̄ ̄ ̄ _人人人人人人人人_ > 生 存 確 認 <  ̄^Y^Y^Y^Y^Y^Y^Y^Y ̄
むしろ全てHTMLと言える、ってそうなんだけど、 だからといってそれはコンテンツとは地続きではないからな。 余程、こういった類の技術についていけず脅威だと思っているか、もしくは自分がXSSを避けるコーディングが出来ないから、そんなものはあり得ないと思い込んでいるかだろうな。
eslint 2.10.2でeslint-config-airbnbが使いたいので
kidotoyohiko$ubuntu: $ npm -g i eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
ってしたんですけど
+-- UNMET PEER DEPENDENCY eslint@^2.9.0
+--
[email protected] +--
[email protected] +--
[email protected] `--
[email protected] ってでました
今の段階ではeslint 2.9じゃないとだめってことですか?
>>135 >悪意のあるexeを実行したら、悪意のあるコードが実行された
なんでそんな糞メーラー(=Electron)使ってるっつー話かと
>>141 そら、メーラーで防いでも無駄だし、メーラーか防ぐべきもんじゃないからね。
検証もせずライブラリバンバン使ってるだろう性善説盲信者の劣等node民にはお似合い
>>142 メーラーはメーラーらしくしてろってことだろう
>>144 そうだね、だから、アプリケーションとして、外部のなんかとか、ユーザ入力を実行なんかしないように作らないとね。CSP化とか。
ここで質問しても答えられる奴がいなくて使い物にならねえ
>>147 ごくごく当たり前の事だが、
「枠組みでどんなサンドボックスを用意しても割と抜け穴は有る」ので、「サニタイズしてないものを画面に出さない」
それだけ。
自作でも、既存のでも良いけどMVVMフレームワークでも使ってきちんと対応すればいいと思うよ。
vue.jsなんかだと、{{hoge}}で展開されるものは必ずエスケープされてるし、
エスケープされない{{{hoge}}}を使うと使ってるだけで警告出る。
>>147 人類にXSSは止められない
今までも止められたことはない、許されてただけ
だがElectron、てめーは影響範囲的にダメだ
そもそも、XSSと言うが、その意図がわからんのだよね。 全然クロスじゃないでしょ、アプリとしてならば。 その中で、Webや信頼出来ないソースからテキトーに取った値を不用意に実行すると死ぬよって凄く当たり前の話。 自分のグローバルIPが知りたいからって言って $piyo=`curl ..... | awk ....` を、rootで動くスクリプトで叩くようなもん。
なんで馬鹿が食い下がるときは決まって言葉の定義に難癖つけはじめるんだろうな
序盤の段階でファイル名と行番号付きで指摘すべきだよな
>>156 nodejs使いに信頼性を語られると鼻からスパゲティが飛び出しそうになるんですよ
食べてないのに
止めてもらえます?
適当に取ってきたライブラリは信用します その結果、どこの誰とも知らない奴が癇癪を起こしただけでbabelの塔は崩れました お見事に御座りまする
node.jsに親でも殺されたんだろうか 粘着こわいわあ
>>159 色んな言語で色々してるけど、どの言語でもそうだし、信頼性なんか語ってないよw
これを信頼性だというなら、お里が知れる。
最低限するべきこと。
>>160 適当には取らんだろ。
取ってソース読んでから使うよ。
信頼性云々は自分で調べたことないし知らんけど以下推測 node.jsのサーバ性能そのものは利用が進んで突き詰められていくとapacheと同じ様なもんになると思う 速い、大量リクさばける、省メモリ、と今思われているならそれは 今使ってる人が最低限必要なものだけやれるよう頭使って設計がんばってるから apacheでもnginx(+cgi)でもチューンに精を出して不要なもの省いてどうしても必要ならモジュール開発すれば同じになるんじゃないか これが正しければ最後にメリットとして残るのはjavascriptで書けるの一点になるだろうけど いろいろnodeで書いてみた感想としてはめんどくさすぎ氏ねよダボが
GoとErlang/ElixerがあるのにサーバーにNode選ぶ理由皆無 ユーザーとライブラリの水準や最低品質の点でも前者のほうが信用が置ける まあ、JSerをサーバーとクライアント両方でこき使うのには向いてるんじゃないの
netflixとかがnode選んでるというのにプププ
nodeを速度で選ぶ意義は無いだろうな。
jsで書けるのは凄いメリットだと思うけどね。
手続き型に呪われた言語より余程書いてて納得行く。
>>164 Goはビルドとデプロイめんどい。
どうせビルドとデプロイが面倒ならScalaで書く。
nodeを大がかりに採用してる有名どころ netflix uber airbnb linkedin paypal walmart groupon ebay dow jones ny times yahoo facebook instagram
まともな開発者が使うなら何でもいいんだよ nodeユーザーは一概にレベルが低いから信頼性の低いライブラリと化学反応を起こして爆発するのだ 今やPHPより酷かろう
>>162 ソース読んだって開発者が癇癪起こすかどうかまで判断つきません
サードパーティーライブラリの信頼性とは開発主体の信頼性であり=ソースの信頼性ではない
馬鹿だから仕方ないけどズレた答えを返すものだね
ここら辺でnodeユーザーの意識が他の言語の利用者と明らかに異なるってのが分かるよね
>>169 バージョンを適当に定義するからでしょ。
バージョン限定で指定するんだよ。
npmに関して言えば、中身を変えるにはバージョン上げる必要があるからね。
お前らの想像してるnode.js使いのイメージがわからん。
ちょっとjQuery書けるから、サーバサイド書いてみました、みたいなアホばかりを想定してるんだろうか。
なんか、サーバサイド長いとこの流れ何度目だろうなって思うわ。 そしてどの言語のコミュニティもこれやるんだなぁ、って。 php3くらいの頃のperl使いのphp叩きとか、phpとruby同士での殺し合いとか。 誰もが自分が使ってる言語が唯一正しい言語だと思ってて、 それ以外は信頼性が無い(と言うか、その言語なりの信頼性の担保の仕方を知らないだけ)と思い込んでて、 んでこういう流れになる。 phpの本家にevalは邪悪じゃないかと言う超長いスレッドあったじゃん。 本家追っかけてたら知ってるとは思うけど。 同じ話してるからね。今。11年もかけて。
node-inspectorもっと軽快にならないの? それだけじゃなくて Uint8Arrayの中身見たら固まるとか デバッガ接続すると終了時にassert失敗するとかもずっと直らない
>>171 謙遜しなくていいよ
想定じゃなくてそんなアホしかいねーもん
>>174 なるほど、railsででっち上げた「jsonを返すビュー」をjQueryで叩いて、値を画面に表示する、って事しか出来ない方々が流入してるのね。
どんなに有名人が採用してようがあなたの能力で扱えるとは別だということが分からない愚かなnodeユーザ
この界隈には自分のバグを他人のせいにする香具師が多い
ごめんねjqもまともに書いたことないのにnode module作ったりしてごめんね
煽り屋と餌やり屋の戯れ 野良猫みたいに殺処分と行政処分されねーかなー
こういうのが沸くくらいnodeも普及してきたんだな 感慨深い
>>180 あれ?そういうスレじゃないの?
ここでガチャガチャやってるうちは、他のスレに迷惑かかんないじゃんw
俺はいろんな言語やったけど、javascript面白いと思ってるよ。ひとによると言語仕様が破綻してると言われかねない仕様も含めて。
プロトタイプベースで、弱すぎる型付けで、nullはオブジェクトで、キャストが強引。
これは逆に他の言語には無い便利さだと思う。
>>181 黎明期は、それこそキチガイ扱いだったから、相手にされる程度に知名度上がったんだろう。
gaucheでcgi作るよりは少しだけ理解できて、かつ、わかりやすいディスりが出来るからね。
>>183 でも現状まだ、ピーエイチピーの牙城を切り崩すというスタート地点には立っていない
と言える。その辺のレンタルサーバのスタンダードモデルでも普通にnode.jsが使えるよ
うになって、はじめてスタート地点だ。
>>185 そりゃ無理でしょ。
phpは、Webサーバのページ代わりにftpて上げれば良いんだから。
ローカルにあるnpmパッケージをインストールしたいんですがなんてコマンドで出来ますか? C:/packages/hogeがnpmのパッケージのパスです
>>177 nodeすら扱えない無能を自覚してるのにこんなところで吠えてる人って・・・
2chがあってよかったね!
React.jsとかじゃないの? フレームワーク無しで作れるスキルは必要だけどフレームワーク無しなんてありえんわ
react.jsはコミュ症が妙なアピールしてるせいでヘイト爆買いで好きだと言いづらいのが難
ヘイト爆買いとかいう用語がすらすら出てくる 人生が、キモいw
どのレベルをマスターって言うんだ 将棋棋士で例えて
バックエンドにnodeを選んだ時点でセンスないなこの記事書いた人 うまくやってるところは大概bffに使ってる 適材適所もできなくてnodeのせいにする無能な人ってこのスレだけじゃなく海外にもいるんだな
>>204 > 適材適所もできなくてnodeのせいにする無能な人ってこのスレだけじゃなく海外にもいるんだな
まさかそんなことないとか思ってたわけじゃないだろうな
舶来品崇拝主義なら海外勢全肯定でも別におかしくはない
>>203 フォースが使えるようになったらマスターだな
【Win10】 こんな犯罪級OS薦めんなよwww ↓ 【スパイウェア】 この使用許諾契約書には書かれています ”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します” 開示する ここ重要だよ 契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです VIDEO 【秘密保護法】 ナチスの手口でサヨクを捕まるんだろ? 早くやってみろよ m9(^Д^) 【緊急事態法】 スノーデン氏→国家秘密法は諜報機関NSAの日本での活動を容易にするために米国が設計して日本政府に導入を要求したもの。 全日本人が調査の対象であり、NSAはあなたの交際関係、信仰等の個人情報を把握している。 https://twitter.com/hopi_domingo/status/740193540529999873 今朝、辺野古で新基地建設に反対するママの会メンバーに対して、機動隊員が「お前たちには汚い血が流れている」などと暴言を吐いたそうです。 自分のやっていることを「だってお金欲しいもん〜」「俺の写真を待ち受けにしろ」とも (顔写真) https://twitter.com/MothersNoWar/status/690357793702940672 サンマ以降のバラエティ芸人の大半が、暴走族出身で極右思想。原発反対派を「放射脳」と嘲笑する連中。 芸能界極右は石原慎太郎一家を筆頭に、上田晋也 草野仁 津川雅彦 向井理 松本人志 宇多田ヒカル マツコ 春日俊彰 田村淳 北村晴雄 https://twitter.com/tokaia mada/status/630627400552845312 webpackとかでワンソース化するのが メリットあるのってクライアントサイドだけの話ですよね? サーバサイドの場合はいちいちwebpack通したりするものですか?
koa.jsいいっすね。 generator -> co -> async-awaitの流れを学んだら断然コッチが面白い
今から始めるんだったら koa.jsとexpress どっちがいいんですか?
そろそろサーバサイドもjsでやってもいい頃じゃないかな。 エコシステムも成熟しつつあるし
nodeを色々調べるとサーバサイド環境とか非同期処理が特徴とか出るけど、rubyやpythonでよくやるような書き捨てのスクリプト(例えばテキストファイル開いて整形するとか)で使うとしたら使い勝手はどんな感じでしょうか?
サムスン、Node.jsの開発企業Joyentを買収
サムスンは、米国でNode.jsの開発企業Joyentを買収することで合意した、と発表した。
今回の買収で、サムスンは、これまでベンダーに依存してきた
ソフトウェア、特にSaaS領域での遅れを取り戻し、モバイル、IoT、
クラウドベースのソフトウェアやサービスなどの大規模な需要に
自社のクラウドプラットフォームで対応できるようになる。
Joyentは、Node.jsの開発企業で、
Dockerコンテナに最適化したクラウドサービス「Triton」と、
オブジェクトストレージを提供するクラウドサービス「Manta」が主力サービスに持つ。
https://news.thepedia.co/article/839/ 宗教上の理由でnodeはNGって言えるようになったわけか
node.jsのコアモジュールhttp.request/http.getをつかってWebページ(の文字列)を取得したいのですが、 いろいろ検索してみても、 var http = require('http'); http.get('<url>', function(res) { res.setEncoding('utf8'); res.on('data', function(body) { console.log(body); }); }); こんな感じの、コンソールに表示する例しか見当たらず、 文字列を変数に取り込む方法がわかりません。 他のリクエストやスクレイピングのモジュールを用いることなく、 文字列を変数に取り込んで文字列操作をするにはどうしたらいいでしょうか?
今更かよ
>>221 標準モジュール使ってしこしこ書くしかない
まあ大抵npmに便利なものが上がってるから落として使えばいいけど
しっくりこないと自分で作りたくなって結局時間が飛ぶように消える
>>227 コンソール部分の代わりに変数への代入や他の関数呼び出しを行えばいい
そもそも非同期の扱い方がわかってないみたいだから質問スレ行った方がいいよ
>>229 レスありがとうございます。
console.log()の部分で変数を代入しても上手くいかず、
returnで外に持ち出すこともできず、詰んでしまいました。
一旦ファイルに書き出して、読みだす方法も、まさに非同期の扱いで難儀しています。
質問スレ、どこがいいんでしょうねぇ。
>>227 コンソールに表示してるbodyに入ってんじゃないの?
取りたいものが決まってて定形なら正規表現で取れば多分一番楽だと思う。
>>230 外で定義した変数に入れれば入るけど、そうじゃない。
eventEmitterでも使って、適当な粒度のイベントにして渡したら疎になって後々使いやすいよ。
>>231 ,232
レスありがとうございます。
"body" に文字列が入っているのは間違いないと思いますが、
これを、後で関数の外で上手く拾うことができないのです。
たとえば、
>>227 の後に "console.log(body);" としてもダメでした。
"body" が未定義となってしまうのです(この結果はなんとなくわかります)。
前もって定義した変数"body2"に"body"を代入しても、この "body2" も空でした。
return を使って、関数の外に出すことも試しましたが、
どのコールバック関数を相手にしても、上手く行きませんでした。
eventEmitter 、調べてみます。ありがとうございます。
>>233 変数で橋渡しする場合は
>>232 の言うように外側で書いて
callbackがそれを参照できる形にする必要がある
また
>>227 の最後尾にコンソールを書いた場合はリクエスト投げる前に実行されるよ
今回の場合は単に res.on('data', bodyを受け取って文字列操作する関数); でもいいと思うけど
質問スレは↓だけど荒らし(本日ID:W50SJfH+)がずっと常駐しているから注意
http://echo.2ch.net/test/read.cgi/tech/1468158373/ 非同期が全くわかってないパターンか いるんだねこういう人
>>233 質問スレ側の人間だが、
マジレスすると質問スレで質問するのではなく、非同期を勉強し直した方がいい。
JavaScriptでは非同期が分かっていないと話にならない。
質問したところで分かるようにはならないよ。
色々console.log('test');とか置いて動作タイミングを確認してみるといい。
面倒だから普通はrequestとかsuperagentとかfetchとか使うが標準モジュールでシコるなら var http = require('http'); http.get('<url>', function(res) { res.setEncoding('utf8'); var body = ''; res.on('data', function(data) { body += data; }); res.on('end', function() { console.log(body); }); });
第2引数に外側で定義した関数を指定すればいいだけなんだけど、非同期に慣れてないとこれがわかりづらいね
>>234 >荒らし(本日ID:W50SJfH+)がずっと常駐しているから注意
一日中張り付いているのか?目的は何なの?
レスありがとうございます。 外の関数を呼び出すことはできました。 非同期の対処はもう少し勉強します。
undeclared-variables-check入れてみたらrequireでエラー投げて笑った そりゃ未定義だけどさ
そんな、最初にやる設定が抜けてる程度の話をされましても。
サムソンがnodeの会社を買う理由ってなんだろうな。 なんかメリットあるのか?
jsでサーバサイドってそんなにダメかな? むしろaltJSでいろいろな言語から選べるしクライアントとサーバサイドの 共通コードかけるし便利だと思うんだけど シングルスレッドなところがダメなのかとも思ったけど cluster使ってforkすりゃCPU数分プロセス作れるし何がイカンのか
クライアントとサーバーでコード共通になってもうれしいこと思いつかない
一人がクライアントとサーバーの両方を担当するなら 同じ機能を2回書かずに済んだり、同じエディタを使えたりは利点になるか jsしか書けない人間が複数いるなら必要に応じて担当を割り当てられるか
複数言語を習得してる人間でも、同時に異なる言語使おうとすると頭の混乱起こりやすい。 やっぱ同じ言語がクライアント・サーバの両方で使えるのは良いんじゃないかな。
JavaScriptさえ知ってればnode.js経験者として採用されるのかと
まぁ後はJava/C#を使いたくない場合に TypeScriptと絡めて「硬い」コーディングがしたい場合の選択肢か
バリデーションの共有ってメリットにならないか? webAPI側のバリデーションとclient側のエラーチェックを共通コードに纏めれたほうがいい気がするんだけど。結構面倒くさいでしょバリデーション
寒チョンにデータが送られるのでバリデーションは大事ニダ
完全なバリデーションが書けるなら client/server 共通でいいだろうけど なかなかそうもいかないから、別言語の別観点で2重にバリデーションを するほうが安全かも知れない。
>>263 そんな手間を掛けるくらいならテストを書いたほうがいい。
サーバサイドでjsエンジンを動かしてという手もあるんでしたっけ
reactのサーバサイドレンダリングってrailsとか使うとどうしてるんだろ。
テストで何とかしようとするのは 同じ動的型付けであるRubyが辿った悲劇の二の舞
Win使いなんだけど、みんな開発環境どうしてるんです? Winでそのまま開発? GUIありのLinuxをバーチャルか普通にPCインストールしてそこで開発? それともMac?
前は仮想マシンのLinux内でやってたけど今はそのまま
Node.jsなんてLinux入れるまでもないじゃん
最近のwinはlinux環境入れられるんでしょ? もうwin環境のことは気にしなくていい?
すみません質問させてください! postcssのビルドに7秒くらいかかるんですが、もっと早くする方法ありませんか? 使ってるモジュールはpostcss-importとpostcss-cssnextだけなのですがなんでこんなにかかるんでしょう。 browserifyの時も15秒くらいかかっててwatchify使ったら爆速になったので感動したのですが postcssにもwatchifyみたいなのってないんでしょうか...
>>274 ですが、postcssを使っていると言いましたが具体的には
post-css-cliを使っています。
今、代わりにwebpackを利用したpostcss-loaderを使ったビルドを行ってみたら
物凄く早くてびっくりしました。(webpackも内部的にpostcssを使っていると思ってたのですが...)
ただjsにパッケージしたいわけではなく、cssファイルとして出力したいので
webpackは使いたくないです。
昨日、こんな記事を見つけました
http://blog.greggant.com/posts/2016/05/03/post-css-is-slow.html やっぱりPostCSSって遅いんですかね?
なんかSassよりビルドが早いってことがメリットだと思ってたんですが...
SassはRuby実装版とC言語実装版があるんだよ。 Ruby実装版は遅かった。 C言語実装版は爆速 PostCSSはJavaScript実装みたいだから 一般論としてC言語実装のほうが速いだろうね。
>>275 > (webpackも内部的にpostcssを使っていると思ってたのですが...)
どのプラグイン(loader)を使うかによる
> ただjsにパッケージしたいわけではなく、cssファイルとして出力したいので
> webpackは使いたくないです。
extract-text-webpack-pluginを使えば、cssを別ファイルに切り出せる
webpackで指定したrequireをバンドルせずスルーするのってライブラリ書くときにやると思うけど 変換せずにES6 Modulesそのままで出力する時代になったら同様の手法ってどう実装するんだろ import,exportはトップレベル限定だし
>>278 だからwebpackにexternalsって機能が用意されてるだろ
> ES6 Modulesそのままで出力する時代 webpackを使わないって話か? それなら細切れのファイルのままで動くはずだろ。 これらのファイルをパフォーマンスのために結合したいっていう話であれば 結合するツールを通せばいいだけ。 それがwebpackだけどなw 最初からwebpackは結合ツールだろ?
npm socket.io以外の方法でsocket.ioを入れる方法はあるのでしょうか? 格安VPSを借りてnodeを入れたらnpmがメモリ不足で落ちました。。。 ちなみに128MB+swap128MBです。nodeのために借りたわけじゃないので最低プランです。 nodeを少し触ってみようと思ってみたらメモリ不足だったと。。
yarnでも使ってみたら? npmは異常にメモリ食うツールだと思ってるんで 改良されたyarnならそこら辺も改良されてるんじゃね?
あと結局のところファイルがあれば十分だろうから、 互換性がある環境をローカルで用意してコピーしても動くだろうね。
httpリクエストのパラメーターをJSONで受け取りたいのですが簡単に型チェックを行うにはどうしたらいいでしょうか?
node.jsってコンパイル環境なんですか? いまいちよくわからない・・・
最近Winでも動くようにシェルじゃなくNodeのAPIでファイル操作書いてるけど fsはディレクトリ名の変更が面倒だな
native moduleでBuffer返そうとしてるんだけど何故かUint8Arrayが返る これどうすればいい? v8::Local<v8::Object> lr; v8::MaybeLocal<v8::Object> buf=node::Buffer::New(isolate, datalen); buf.ToLocal(&lr); memcpy(node::Buffer::Data(lr), data, datalen); args.GetReturnValue().Set(lr);//Uint8Arrayが返る(中身自体は期待通り)
args.GetReturnValue().Set(buf);
自己解決 根本的な勘違いをしてた global掴んでbuffer引っこ抜いきつつ、変換掛けたらとりあえず動いた
downloadRecの処理が終わったあとに処理をしたいのですが、何かいい方法ありますか?
var client = require('cheerio-httpcli');
var URL = require('url');
var target = "
http://nodejs.jp/" ;
downloadRec(target, 2);
function downloadRec(url, l) {
if (l <= 0) return;
console.log(url);
client.fetch(url, {}, function(err, $, res) {
$("a").each(function(i) {
var next_url = $(this).attr('href');
next_url = URL.resolve(url, next_url);
downloadRec(next_url, l - 1);
});
});
}
>>295 使って色々頑張ってみたんだがどうしてもできなかったので、どうすればいいか教えてください。
Promise直接使うみたいなアホな事する時代は終わったで 時代はasync/await
>>294 function downloadRec(url, l) {
if (l <= 0) return 処理終わった後に実行する関数();
>>298 それだと処理し終わった後に実行する関数が複数回実行されないか?
>>297 いやいや。段階的に移行した方がいいと知った。
先ずはPromiseを使いこなしてからasync/awaitへ
じゃないと使いこなせないし
>>299 確認不足だった
$("a")のlengthを使えばできるかも
すみません教えてください node.jsでaccessのデータを扱うにはどうしたらいいでしょうか? 勉強を始めてみたもののこの部分がさっぱり分からなくて
foreverで嵌まっています。 環境はCentOS6.8+node.js v4.7.2+npm 2.15.11です。 通常なら起動すると、 warn: --minUptime not set. Defaulting to: 1000ms warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms info: Forever processing file: ここにパス が出るのが正常ですが、 最終行のinfoが出ずにコマンドが帰ってこない状態になっています。 肝心のnodeは起動しているのですが、コマンドが帰ってこないので仕方なくCtrl+Cで中断するとnodeのプロセスも止まってしまいます。 forever は-g付でグローバルインストールしており、何度か削除、再インストールを繰り返しましたがだめでした。 散々ぐぐっても解決できず数日立ち往生しています。 何か気付きがある方は知恵をお貸しください。
状況の追記です。 コマンドが帰ってこないと書きましたが、状況として、 node ここにスクリプト名 を打った時と同じ状態です。 console.logの内容がそのまま出てきます。
>>304 なんでcentosなんて使ってるの?
実環境がredhatで有料サポート受けるから開発ではcentos使ってるくち?
それならわかるけど、そうでないならcentos使うメリットなんて殆どないだろ。標準リポジトリのパッケージ少なくて結局サードパーティのリポジトリから持ってくるとか、ソースからビルドとかバカじゃないの?
リポジトリ追加なんてたいした手間じゃないし ソースからビルドも愚行でもなけりゃ別に普通だろ
うちの会社はサードパーティリポジトリ認められてないな。 ソースからビルドするのはオーケーなので基本いつもビルド。
>>306 >標準リポジトリのパッケージ少なくて結局サードパーティのリポジトリから持ってくるとか、ソースからビルドとかバカじゃないの?
わろた
ほんそれ
高能力なせいかビルドでハマったこととかない 本当に申し訳ない
世界的にはとっくにubuntuとかが主流なのに日本は未だにcentosのままってとこが多いよね
で、いつ目障りなio.jsとかいうゴミグループは消えるの?こいつらのやった事はnode.jsの発展と普及をいたずらに遅らせただけでしたwww いつものコンピュータだけがお友達な根暗馬鹿の自己満足でフォークするとか辞めていただきたいね。
サーバには安全性、安定性が求められるから、 世界的に見てもエンジニアに好まれてるのはRHELクローンの方。
io.jsはとっくにnode.jsって名前に変わった
>>312 現在から2年後に書き込む方法を知っているなら教えて欲しい
ソースからビルド、そんなに少数かな。 俺の知ってる環境も基本はそうだった。
>>313 ガラパゴスの住人さん乙
>>318 DBサーバーなら違うって話はあり得るがここはnode.jsスレだからな
nginxと同居することも多いんだからボリュームゾーンからそう外れないだろ
普通にサービススクリプト書くかな俺は どうせzabbix入れてるし
>>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があるってこと? 非同期処理は多用するんだからミドルウエア無しで対応しろよ
非同期の方法がたくさんあるからビルトインにしてないんだろ RxJSが使いたい→redux-observable generaterが使いたい→redux-saga Promiseが使いたい→redux-promise 好きなのを選べる
rxは嫌いな奴は本当に嫌いなのでデフォルトにすると人死にが出る
ReactとRx同時に使ったら、サイズが大きいのが気になりませんか?
>>421 かなり慎重だったよ
当初提案のメソッドや機能も大分削ぎ落とされたし
Rxってコンセプトがシンプルなのにいざ使おうとするとライブラリのインターフェースは複雑で、シンドってならない?
>>428 でも結局Observableになるんだろ?
Fetch APIがPromiseベースなので、処理がキャンセルできなくて困ったしな。 Fetch APIの戻り値はObservableに変更すべき。
>>429 jQueryとPromise(Deffered)で関数型インターフェースには慣れていたから、
イベントでフィルタできる新しいメソッドが追加されたぐらいにしか思ってないよw
>>430 おいおい大丈夫か??
PromiseはPromiseで、ObservableはObservableで必要だよ
いいか?
ObがあればPrが要らないと言うのは
ジェネレーター関数があれば関数が要らないと言ってるのと同じことだぞ
関数とジェネレータ関数の関係とはちょっと違う気がするが まあ言いたいことはわかる
>>433 説得力ゼロだなw
ObservableがあればPromiseはいらない。
ObservableにPromiseの機能が含まれてるから
promiseは単発、observableは連発 連発は単発を包含してるが最適とは限らない
completeしか発生しないObservable = Promise そもそも非同期=時間がかかる処理なのだから、 必然的に途中でキャンセルしたくなるのが普通。 キャンセルができない時点でPromiseは片手落ち
>>436 promiseは非同期処理の約束手形observableはオブジェクトの値の変化を検知する仕組み。
なんでどっちかしかいらないって話になるのか
>>438 Netflixとかなら動画を取り扱うからキャンセルできたほうがいいけど、
他の案件でも必要か?適材適所でしょう。
なんでもストリームとして取り扱うRxは宣言的な記述になるけど、
それが読みやすいかというと、
俺はpromise とasync awaitの方が読みやすい。
RxのObservableと廃案になったObject.observeが混在してる件
多機能があれば単機能はいらない そんなふうに思って(ry
>>441 えっ。違うのかそれ。解ってなかった。すまぬ
RxのObservableはnodeのReadable Stream (flowing mode) みたいなもん
>>443 分かってなかったのかw
通りで話が噛み合わないわけか。
ObservableはPromiseの改良版
>>445 違う。Promiseで十分と思えるような作業であっても
実際は、処理のキャンセルや進捗状況の把握が必要になる。
だからPromiseの仕様では不十分という話
必要になるとは限らない そもそもキャンセルの方法がないものも多い
promiseでは全てのケースをカバーできない→正しい だからpromiseはいらない→間違い
でもPromiseだからこそasync awaitを駆使して同期プログラミングっポイ見た目でかけるわけで。 そこはRxではむりでしょ?そもそも宣言的な記述なウリなんだろうけども。 まぁ結局一人で開発だったらドッチもあってもいいけど 複数人プロジェクトだとRxは使いづらいわな。
Observeを束ねて全部処理が終わったら終了処理をしたいんだけど、どうやったらいいんだろう
Httpリクエスト…Promise websocket…Observable
んでRx使ったやつで良いプロジェクトってあるの? RxSwift使ってたときは良いプロジェクトが見当たらなくて 汚い設計になってしまった。
要る要らないは個人の考えや開発スタイルによるものだしなぁ
つうかキャンセルだけならCancelablePromise案もあるし、 実際はキャンセルが内蔵されていると不都合があるのでCancelToken案のように 仕組みを外部に用意するのがベストだからPromiseは今のままで良いと思うよ あと因みに例で挙がってたfetchはキャンセル出来る。 キャンセルする必要があるような重たいファイルをDLするときは Stream使うだろうから、その場合rs側にcancelメソッドがある。
逆に言うと、もしfetchがプロミスレベルでキャンセルに対応した場合、 こういうStream何かとの兼ね合いはどうするのかって話になる。 自動でrs.cancelが呼ばれるようにするのか、それともclosed例外吐くようにするのか。 やっぱりCancelTokenのように外側から突き刺す形が一番良いよ。
なんかの勉強会でcancelable promiseの標準化は頓挫したと聞いた
>>449 promiseでは全てのケースをカバーできない→正しい
だからpromiseはいらない→そんなこと言ってない
Observableでpromiseのケースをカバーできる→正しい
だからpromiseはいらない→こう言っている
>>460 > なんかの勉強会でcancelable promiseの標準化は頓挫したと聞いた
そしてObservableの標準化が進んでいる
promiseで十分なケースでわざわざobservable使うメリットあんのかよ
>>464 promiseとobservableはインターフェースが違うから互換性がない。
だからライブラリを作るならば両方に対応しなければならない。
またtoPromise()などでobservableからPromiseに変更するなんて
面倒なことをしなければならない場合もある。
promiseとobservableの両方に対応しなくて良いのがメリットだ
>>465 は?
それならobservableなんて対応しなけりゃいいだけじゃねーか
なんで両方に対応しなきゃいけねーんだよ
>>467 殆どの要件でcancelは必要だから結局Fetch APIみたいに
cancelするための別の仕様が出てくる。
だから最初からobservable一本にしておけばいいという話
急ぎすぎてPromiseを標準化してしまったのは黒歴史
Promiseを使ったFetch APIも黒歴史
>>468 fetchのことしか考えてねーのかよ
fsの非同期apiはキャンセル不可だがこれobservableにする意味あんのかよ
fetchが黒歴史なのは正しい
promiseじゃなくstreamだろってsubstackも突っ込んでた
> fsの非同期apiはキャンセル不可だがこれobservableにする意味あんのかよ あると思うけど? 俺は200MBを超えるファイル×数十個を "並列で" サーバーに送信したことがあるのだが、 もしメモリに全部読み込んでいたら、マシンによってはメモリ不足になっただろう。 だから特定のチャンクごとに読み込んで送信していたわけだが、当然キャンセルもしたいし どのファイルが何%処理完了したかの状況も表示したくなる。 そんときはループを使って、チャンクごとにデータを読み取って処理したわけだが、 もしfsがobservableであれば、メモリに全部読み取ることなく 一定のチャンクごとに処理する簡単な方法も提供されただろう。
setTimeoutなんかもclearTimeoutみたいにキャンセルするメソッドがあるし、 時間がかかるからこそ非同期にしているわけで、時間がかかる処理を キャンセルしたいことがありえないなんてAPIが本当にあるのだろうか?
>>470 それはnodeじゃ昔からstreamでやってるやつだがその話じゃねーよ
今のnodeではcallbsckを取るfs.fstatとかの話だ
>>472 俺が話をしているのはブラウザ版だ
nodeの話はしてねーよw
>>471 時間がかかる処理をキャンセルじゃなくて、待つのをキャンセルするじゃね?
>>477 それは言い方の違いでしかないよ
nodeでcallbackを使うやつの話であれば、そもそもなんで
nodeはPromiseを使わなかったのか?の話になるだろ。
それはcallbackを使う方が速いのと、
何度もイベントを発生する必要があるものがあるからだろうな。
つまり、Promiseでは要件に耐えられないから
Promiseではなくcallbackを使ったんだよ。
fs.fstatでは何度もイベントが発生するわけじゃなくても、
何度もイベントが発生することが可能なcallbackを使っている。
それは一度しかイベントが発生しなくてもPromiseではなく
Observableを使ってよいのと同じ考えだ。
>>478 promiseの仕様がいつできたかも知らないのかよ
nodeはその前からあるんだよ
スレ違い野郎は消えろ
http://stackoverflow.com/questions/30299613/why-does-nodejs-not-use-promise-for-the-readfile-api Node’s early iterations used Promises in its nonblocking API. However, in February 2010,
Ryan Dahl made the decision to switch to the now-familiar callback(err, results...)
format, on the grounds that Promises are a higher-level construct that belongs in “userland.”
英語わかるか?
Nodeは最初Promise使っていて、callbackに変えたって書いてあるんだぞ
(JavaScriptの)Promiseはいつできたんだっけな?
前に調べたんだが忘れたな。
ここを見る限り2009年なのは間違いないが。
http://wiki.commonjs.org/index.php?title=Promises& ;oldid=516
そのpromiseはes6のpromiseとは別物だ
nodeでobservableに相当するのはstream fs.fstatはstreamを使わない それが答え 以上
>>482 それは当たり前だが、Promiseを捨てた理由は同じだ
>>483 fs.fstatはPromiseを使わない。
それが答えだろう?w
> nodeでobservableに相当するのはstream ちなみに、streamを知らない人に説明しておくと、 streamが使ってるのはPromiseではなくcallback
>>484 promiseを使わない理由がキャンセルできないからじゃないのは分かってんのかよ
システムコールレベルでキャンセルする方法がないのにobservableにするメリットあんのかって問いに答えてねーだろ
nodeは単発にcallback、連発にstreamで使い分けてる
大は小を兼ねるとは限らないんだよ
システムコールレベルって何の話? Win32APIとかレベルの話してるの? 独自用語で話すんなよ
何やこいつ キャンセルする必要がない単発はPromiseでいいし、キャンセルが必要か連発ならobs使えばいいって話だろ しゅうきょーせんそーかな?
単発だからってキャンセルする必要が無いことにはならないんだが? 言ってる意味わかる?
Observableが得意なのはキャンセルだけじゃなくて 並列処理もなんで、fs.fstatを並列で実行したいときにも 簡単にかけるというメリットも有るな
いくら君らが言い合っても、現実はかわらないでしょ? 今ある仕様がすべてで文句かるなら他の言語つかいなよで終わる話しじゃないの? 生産性のない答えもない事で争って暇すぎるだろ
>>490 「キャンセルする必要がない場合は」
よく嫁
こいつもしかしてIT速報の管理人か? 転載禁止やぞ。対立煽りはNG
スプーンとお玉の関係に似てる。 ジャムをすくうのにお玉を使ったら逆に不便だろ。そこは適切にスプーンを使え。 キャンセル処理がPromiseだと絶対無理というわけでもないし、Rxが必要とも思えないプロジェクトで無理やりRxを使う必要もない。
>>493 > 「キャンセルする必要がない場合は」
それはまずないだろうねw
レスの文体からして前からJSスレに常駐してる荒らしでしょ コピペブログ管理人もやってたのかは知らんが
>>487 システムコールってwikipediaにもエントリあるのに
unix/linux系はダメなwindows君か
どうりでダメなわけだ
>>498 分かってないなw
なんでシステムコールの話がでてくるんだってことだよ。
nodeのAPIと、OSのシステムコールを
一対一で直接結びつける必要はないっつーの
nodeのAPIは単純な一命令でも、内部の実装は
何回もシステムコール呼んだって良いわけだ。
それが分かってないから、お前はシステムコールが
キャンセルできるかどうかなんて言い出したんだろ
こっちは全部お見通しだってーの
fetchはキャンセルできる必要があるが、 fetchの戻り値をObsevableにするのは駄目。 Obsevableって一様な幾つものデータを受け取るのに向いているので fetchのように幾つかの段階で全然違うものが帰って来るのには向いていない。 単純に、Responseにabortメソッドを付けるのが良いと思う 勿論途中のStreamをObsevableにするのはとても良いと思うけど、 それを含んだ全体をするのはおかしい。
というか考えたら分かると思う。 キャンセルしたいのはfetchではなく、DLなのだから。 やっぱりCancelToken以外の解は無いと思うよ。
> キャンセルしたいのはfetchではなく、DLなのだから。 fetchはデータ送信もするんだが? その場合キャンセルしたいのは何だよ
>>500 > 単純に、Responseにabortメソッドを付けるのが良いと思う
fetchの戻り値はpromiseであってresponseではない。
responseはpromiseのthenの時に渡される。
promiseのthenが呼び出されるのはfetchの処理が完了した後。
つまりresponseを取得したとき=fetchし終わった時に
abortするのは遅すぎる
>>499 なにを見通してるのかさっぱり分からんがnodeは低水準のapiを提供するものだ
そうすれば複数のシステムコールを組み合わせた高水準apiはユーザーレベルのライブラリで実現できる
だからfsモジュールは意図的にposixの薄いラッパーになっていてキャンセルはない
>>505 > nodeは低水準のapiを提供するものだ
どこにそんなことが書いてあるのか?
nodeの立場はブラウザと同じだ。
JavaScriptの実行環境だ。
お前の理屈だと、ブラウザは低水準のAPIを提供するものということになる。
>>505 > だからfsモジュールは意図的にposixの薄いラッパーになっていてキャンセルはない
じゃあ、例えば、fs.lstatSync は posixのどの薄いラッパーなのか言ってみ
>>506 > 仕様にはstreamが追加されてる
どっちみち仕様を加えるなら
Observableにした方がいいだろうな。
しかもPOSIXは非同期I/Oをキャンセルする機能あるじゃんwww
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/aio_cancel.3.html aio_cancel - 完了していない非同期 I/O リクエストをキャンセルする
POSIX.1-2001, POSIX.1-2008.
>>507 https://nodejs.org/api/fs.html File I/O is provided by simple wrappers around standard POSIX functions.
>>508 lstat
>>510 posix aioはほとんどのosで実装されてないしnodeでもサポートしてない
>>510 細かく言うとposix aioはほとんどのos kernelで実装されてない
gnuがユーザーレベルのライブラリとして実装したものがあるだけ
manだとlstat(2)に対して
>>510 のaio_xxx(3)なのでシステムコールじゃないことが分かる
>>504 fetch apiが返すpromiseはfetchが完了してからresolveするわけではない
完了してからresolveするのはres.text()が返すpromise
>>514 >>508 のlstatSyncは非同期じゃない
>>515 > fetch apiが返すpromiseはfetchが完了してからresolveするわけではない
完了してからだよ。正確にはレスポンスが返ってきてから、
データの受信が完全に完了してからではない。
でないと、Response.statusが取れるわけがないだろう?
>>518 それではシステムコールにあるPromise相当のものは何?w
>>519 そう、だから完了してからじゃないじゃん
最初のチャンクが届いたらresolveする
「fetchの処理が完了した後」は明らかな間違い
>>520 システムコールにはない
単にワーカースレッドでlstat呼ぶだけ
>>521 Fetchの処理はリクエスト投げてレスポンス戻すところまでだよ。
ダウンロードが終了するまでの話は最初からしてない
で、Fetchのキャンセル(thenが発動する前)はPromiseでできるの?
できないでしょ?
そこに新しい仕様が必要ならObservableを使えば良いわけさ。
>>522 だろう? Promiseを含めて「システムコールの軽いラッパー」と
お前が呼ぶならば、Observableを含めたって「システムの軽いラッパー」になる
>>523 fetch apiがpromiseベースでバカなのは何年も前から言われてるし俺も言ってきたからそこに反論する気はない
>>524 キャンセルできなくて単発で結果が決まるシステムコールのラッパーにpromiseよりobservableを選ぶメリットは?
システムコールとライブラリの違いをわかってないやつがいそうだから、用語をシステムAPIかOSのAPIで統一してくれ
>>523 何度も説明してるが、キャンセルは必要だが、Observableはそぐわない
CancelTokenのようなものじゃないと実際齟齬が出るし
その流儀に則って真似して使いやすいように色んなAPIを実装していくのは大変
俺がobservableの話で並列処理の話を始めると すぐにキャンセルの話に変えるやつってなんなんだろうねw わざとなのかな?
>>528 正しくは並行処理だが常に必要となるわけではない
必要ならpromiseをobservableでラップすればいいだけ
そのために無駄に高機能なapiを土台にするメリットはない
シンプルの上にリッチを乗せることは有意だが逆は無意味だ
> 正しくは並行処理だが常に必要となるわけではない 絶対に必要ないならいらんだろうさ 常に必要となるわけではない=必要な場合もある。 ならば同じやり方でやったほうが楽
長さ1の配列があればスカラ値の変数はいらない let x=1 let y=2 let z=x+y これは配列が必要な場合と同じやり方で let x=[1] let y=[2] let z=[x[0]+y[0]] ってやった方が楽 なるほど
Observableだけでなく、jQueryもLodashもそうなんだけど、
配列をスカラのように扱うことができるんだよね。
1と2以上を同一化して処理できる。
例えばquerySelectorAllは配列を返す。$()だとスカラ値を返す
どちらもセレクタから複数の要素を検索しているようだけど、この違いによって
querySelectorAllではループ処理が必要になるが、jQueryではループ処理が不要になる
Promiseも単数だから並列しようと思ったら配列が必要になってループも必要になる
つまり
>>533 でいう後者の書き方
Observableであれば単数も複数も同じように処理できるから、
>>533 の前者の書き方で
複数の対象を単数と同じ書き方で並列に処理できる。
querySelectorAllが配列を返すなんてとんと知りませんでしたわ
そもそも「配列」という言葉の定義がない 因みにNodeListは@@iterator対応の予定がずっとある
jQueryしか使わないゆとりだから下のレイヤーのことは知らないんだろ
一年に1,2回はtoArrayをどうするかの話題で盛り上がるよね Array、TypedArray、@@iterator、length、Array.isArrayとか沢山楽しい話できるよね
>>541 https://azu.github.io/slide-what-is-ecmascript/slide/12.html Stage 0: Strawman
アイデア
から抜け出したら、もう一回知らせてくれ
せめてStage 3にならなければ評価する価値もない
stage1のobservableも評価する価値がない よってこの話題完全終了
50歩100歩ってやつだな。 差は2倍もあるということだ
デバッグ用にconsole.logで出力を行ってるんだけど、foreverで起動するときはどこにも出力されてないって事でいいのかな?
>>545 Optionsを観ると以下のようになってる。
-o OUTFILE Logs stdout from child script to OUTFILE
-e ERRFILE Logs stderr from child script to ERRFILE
ln -s -f /dev/null /dev/stdout
Converting circular structure to JSON at JSON.stringify 自分なりにdeepCopyつもりのコードで 上記エラーが出た場合に、原因なコードを簡単に見つける方法ってどんなのがありますでしょうか?
circular structur 原因書いてますやん
>>551 まさにピッタリの解説でした。ありがとうございました。
循環参照を持っていてもちょっと関数噛ましてテーブル2つに変換すればJSONに落とし込むことは可能だよ
以下のように表記を統一するクラス(またはデータベース)でありますでしょうか? 'php' => 'PHP' , 'perl' => 'Perl' , 'javascript' => 'JavaScript' ,
思い出してください w 「自然言語処理 "単語の正規化" 」でググってみましたがズバリ思っているようなのはヒットしませんでした。 どなたか是非!
つうか全部小文字の単語を直したいだけの辞書なら 通常の固有名詞辞書にちょっと手を加えればいいだけじゃん
freetaggerとか昔使ったことあるけど、javaScriptなんかの表記の統一は辛かったような。 isDisabledのiはどうするのとか、結局プロジェクト向けのスクリプト書いた気がする。
>>559 結局はそうだよな
完全な答えがあるものじゃないし
package.jsonの"scripts"に書いたコマンドをnpm runで実行する際はnode_modules/.bniがPATHに 追加されますが、これ以外に任意のディレクトリをPATHに追加する方法ってあるでしょうか。
windowsだからpythonのpip以上にnpm厄介だな
ありがとうございます。でもwindowsだとうまくいかないなぁ。 "somecommand": "set PATH=%PATH%;<パス> && <コマンド>" #<コマンド>は内部でPATH環境変数を使用するスクリプトで、これ自体にはPATHが通っている。 &&の両側のコマンドが同時に立ち上がるんだから当然と言えば当然か。 でもコマンドプロンプトで順次実行する&に変えても結果は同じだった。 bashのexportみたいなのが使えればいいんだけど。
めんどくせぇなぁ、 そのためのnpmライブラリでもあんだろ
他にnpm-run-allとかrimrafとかあればwinでも動くnpm scriptsが書ける
ありがとうございます。cross-envでいけました。
node.jsでimportを使うと SyntaxError: Unexpected token import ってなるんですが、importに対応したnode.jsはまだ出てないのでしょうか?
>>571 importの使い方を聞いていません
babelとwebpackでimport書いてるので使い方は知ってます
node.js自体がimportを実装しているのかを聞いています
*.mjsからはimport出来るようにしようぜ ってのを結構前に読んだ気がするけど、まだ実装されたないんか?
実装どころか提案文書はドラフトのままだよ (技術的検証が済んでACCEPTされないと実装に進まない) 検証だけであと1年以上掛かるってさ なお拡張子(*.mjs)でES moduleかどうか判別する手法は 考え得る限り最低の糞という判断が下されたので無くなる
そこはESの管轄外だよ NodeがWebと合わせる必要もない
いやnodeってv8使ってる立場だから何もできんでしょ 間違ってる?
v8はネットワークもファイルシステムも持ってないからimportは環境(ブラウザやnode)に丸投げでしょ
Buffer.byteLengthをブラウザ側でも利用できるように移植して欲しい 今時バイトでカウントするにも自力でコード書かないといけないのは無駄すぎる
importはJavaScript(EcmaScript)の仕様範疇の中に入れてもいいが、 ブラウザで動かすJavaScriptにおいて、 importはビルド時に解決する問題になるんだよね。 なぜならファイルのアクセス数が増えてパフォーマンス低下につながるから。 JavaScriptファイルを結合することでパフォーマンスをあげるという目的があるから 結合させずに動いたとしても、ビルド時に結合させるという手段は今後も続く。 ウェブサーバーのプラグインでJavaScriptファイルをimport定義に従って 結合するという仕組みができるかもしれないがこれもビルドを配信時に行うってだけ
>>581 ブラウザ側で実装する or 自力でコードを書く
の中間に、ライブラリを使うという方法があるよ。
この方法を使えば、既存のブラウザでも動くし
自力でコードを書くムダもない
自力でコードを書けるたぐいのものなら、ブラウザに移植してほしい理由を言うとしたら
「ネイティブで実装されていれば速い可能性がある」であるべきだろう
>>582 すごく巨大なファイルへのアクセス数でパフォーマンス低下するか、
CDNで配信されてて、もうすでにブラウザキャッシュに存在するかだと、後者の方が速いと思うけど。
すごく巨大なファイルもCDNで配信されブラウザにキャッシュされるだろw
>>586 コネクションが再利用されるとしても、
ファイル要求は別に行われるだろうが
要求されるまでもなくプッシュできる キャッシュとの絡みで今んとこ絵にかいた餅だが
ふーん そういう妄想は同人誌即売会で売ってるといいよ
それよりもminifyが未だにes2015を正式対応してないの早くなんとかしてほしい。ブラウザがes2015サポートしてても結局es5で吐き出してる
babel使えば? babel自体にminify入ったろ?
>>591 おー。愚痴ってみるもんですな。
typescript使ってたんだけどbabel挟んでみようかな。
typescript使ってるならビルドした後minifyすればいいだろ
jsでデスクトップアプリケーションが作成できるelectronでソフトを作りたいのですが、 http通信のためのモジュールであるrequestモジュールを、main processからrequireするといろんなプロパティを持ったオブジェクトが返ってきてその中の関数でhttp通算できるのですが、 renderer processからrequireするとただのrequestという名前の関数オブジェクトが返されるだけで使い物にならないです。 pc通信でrenderer processからmain processにhttp通信を代行してもらうしかhttp通信をrenderer processで扱うための方法はないですか?
>>595 renderプロセスはブラウザと同じなのでfetch使えばいいですよ
>>598 そりゃサポートはされるだろ
結合しないと遅いってだけなんだから
>>599 モジュール化するほうがファイル増えて遅くなりそうなんだが
>>600 だからwebpackでビルドして結合するんだよ
>>582 > ウェブサーバーのプラグインでJavaScriptファイルをimport定義に従って
> 結合するという仕組みができるかもしれないがこれもビルドを配信時に行うってだけ
事実誤認も甚だしい
パックする仕組みは配信からの要求で考えられた
それをトランスパイルとかいう歪な仕組みを進めている連中が取り込んだだけ
逆だね
>>602 うん
だからhttp配信という構図だとパックする必要があるからimportがあまり意味がないというのは間違ってないとおもうんだが
正しいか正しくないかでなく 自分が最後に喋って締めないと気が済まない人種というのがいるのだ マウンティング症候群を併発していることが多い ようするにキチガイ
>>605 それって相手もそうじゃないとそんな状態が発生しなくね
どっちかが最後にレスしなくてもいいと思ってるならいつまでも会話続かなくね
>>607 自分はするけど相手がするのは許せない人なんでしょ
初めてインストールする初心者なんですが、インストールしようとすると 下記エラーが出てインストール出来ません。 There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor. 色々ググってみましたが解決方法がさっぱりです。 どなたか対処方法をご存じでしょうか? ご意見を戴ければ幸いです。
検索すると解決法がでて来てるじゃん それをやったけど解決しないというのか? それとも検索する能力がないのか? はっきりしろ
>>614 その通りです。英語どころか日本語にすら不自由しているバカです。
よろしければ解決方法をお教え戴けないでしょうか?
>>615 win版はとにかく問題がおおくMSが公式にインストール順序公開してたぞ
ぐぐってみろ
>>617 npm5も
yarnよりは遅いけど高速化&lockファイル追加
つーかむしろリリース早くないか? どうしちゃったの最近
いやん、6にしなきゃなぁと思ってたら8がでちゃったよ
おれ4のまま使ってるんたけど6とか8は何が違うの?
スーパーサイヤ人だとフリーザしか倒せないけど スーパーサイヤ人2ならセルまでなら倒せるぐらい
>>625 なるほど
ところで下位互換は保たれてるんだろうか?
async/awaitとかの大抵の機能はnodeのバージョンアップしなくてもbabelとかtypescript使えば古いバージョンでも使えるよ
>>628 これ。typescript使ってるから正直どうでもいい。
>>629 ts2.1でtarget es5でも使えるようになったしな
nodeって起動するだけでメモリ相当食うから、バージョンアップでさらに増えてないかが気になる 安いプランのVPSだとメモリ1Gとかだから
>>631 node起動するだけなら7MBしか食ってなかったぞ?
>>632 v8が起動するんだからそんな少ないわけないだろw
>>633 こんな感じのようだが?
http://qiita.com/shouta-dev/items/09d7055329710684d9c7 > process.memoryUsage()
{ rss: 9019392,
heapTotal: 5115392,
heapUsed: 2658096 }
そりゃnode.js内のメモリ消費量でねーの
ランタイム内のプロセスと実行環境自体のプロセスを混同させるような
>>634 もアレだがな
だからWeb屋は
ちょっとしたサービス作って待ち受けするだけで普通に数百MBは食うぞ
ちょっとしたサービスなら200MB台で済んでる気が
>>637 うん、実際そんなもんだよ
サービスによりけりだけど単位は百MBにはなるね
>>639 nodeやるなら512は実用的じゃないと思う
ssdならスワップ早いからなんとかいけるかもしれんが最低でも1GBは欲しい
>>640 node起動するだけなら7MBしか食ってなかったぞ?
nodeは依存関係の関係でアホみたいにモジュールロードあるからね
>>641 条件は「nodeを起動するだけ」なんだからその程度だろうね。
>>642 そりゃexpressとか動かせばその分のメモリ食うさ
でもそれはrailsとかでも同じなわけで、なんのモジュールをロードするかとか
言ってない上、nodeを起動するだけのメモリ使用量しかわかるわけがない
>>644 何も言い返せないなら黙っていたほうが良い
7MB君ってほんとうにおめでたい脳味噌してるんだな
>>643 socket.ioのみの簡単なサービスですら200M越えるんだが?
君はどうやって使用メモリを調べてるのかな?ん?
linuxコマンドでも書いてごらん
>>631 の文脈からして何らかのサーバー立てるんだからnode単体の話をするのは空気読めてないよね
>>648 おまえはVPS借りてnode動かすのに何のサーバーもたてないつもりかな?んー?
で?
検証用のコードと7MBの確認コマンド公開まだかな?
649はレス相手間違えた この期に及んでnode単体という屁理屈で逃げてるやつは回答まだかな?
>>647 たった5行でWebサーバーが書ける
http://engineer.recruit-lifestyle.co.jp/techblog/2015-06-22-node1/ httpモジュールを使っている分、nodeだけのメモリ使用量ではないが、
ps uのRSSの値は26000KB、つまり26MBだが?
>>649 > おまえはVPS借りてnode動かすのに何のサーバーもたてないつもりかな?んー?
サーバーたてなくてもコマンド実行するという使い方もあるだろ?
> nodeって起動するだけでメモリ相当食うから、バージョンアップでさらに増えてないかが気になる
> 安いプランのVPSだとメモリ1Gとかだから
>>631 の文脈から言って、メモリを相当食う何かを動かしているのだろう。
だがそれはnodeの使用量ではなく、モジュールの使用量がほとんど。
nodeのバージョンアップでメモリ使用量が増えたとしても
大部分のモジュールの使用量は変わらないので、気にするレベルにはならない。
メモリの使用量を抑えようと思ったら何を使うのが一番いいんだろうな。 やっぱgoとか?
v8ってandroidでも動くようにしてるんだよね。新しいバージョンのほうが省メモリの可能性ないかな。 android goとか出してるわけだし
v8のignitionは省メモリ、スモールフットプリントのためだから可能性は十分よ
久々に延びてるから良い話題期待したもれが間違ってたし
selenium使ってるんだけどnodeだとすんごい使いづらいな 他はpythonしか知らないけど
中学生でもランサム作ってるんだから それくらいがんがれ
Windows10のユーザーフォルダでnpmにてnode-notifierと言うライブラリをインストールしたのですが ユーザーフォルダ以外でnode-notifierを呼び出しても見つからずにエラーが出ます。 これを解決するにはWinの環境変数でPATHを通さないとダメなのでしょうか? それとも呼び出し時に何か指定すれば良いのでしょうか?
>>666 グローバルインストールっのがあるんじゃ?
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744 367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/ 372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する
↓
Railsはマイナー、メジャーのアップデートが半年以内に必ずある
↓
客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく
↓
気づいてから1年以内に通知すれば、5年間無料保証ゲット
↓
つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな
376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378 >>379
>>375 客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
瑕疵担保責任(かしたんぽせきにん)
瑕疵担保責任のポイント
民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない
http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt 改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている
全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html ポイント1:修補や損害賠償、契約解除の期限がなくなる
従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。
もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
そのぶん金取るだけだよな そんな主張もできない弱小は存在価値ないから他に吸収された方がいい
>>670 「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、有償で改修するだろう。
の間違いでは?
普通は不具合の修正に有償で対応する方を選ぶでしょ?
app.jsみたいなフレームワーク固有のファイルって どんな役割なのかもよくわからんし 何を書けばいいのかもわからないしすげえ苦手だ。 最低限何を書けば動くの?
フレームワークのドキュメントに書いてあるんじゃないですかね… 書いてないなら使う価値がない(品質が水準に達していない)
触ろうと思ってサンプルプロジェクト作って中途半端に弄ってから半年経ったわ
jQueryとかnode.jsとかデファクトスタンダードでみんなやってる感のやつはどうも食指が動かない 変わり者ですみません
nodeは一部の変態しかつかってないだろ? スタンダードとかないわ
>>678 それでは変わったことをやっている人が
みんなやってるものをやれば良いのでは?
んなこと言ってるくせに変わったものなんか使ってないんだろどうせ
自分から○○がやりたい!っていうのなら それは前向きな意見であるが、 みんながやってるからやらない。 誰もやってないからそれをやるっていうのは それをやりたいという意志がないので 後ろ向きな考え方だよ。やる気が無いといえる
みんながやってるからやりたくない、はひねくれ者 気がついたらみんながやってることと違うことをやってた、てのが変わり者
javascriptとかいうデファクトスタンダードの権化を使うのをまずやめるべきだね
>>676 async await使ってるならむしろどんどん触るべきじゃないのか。
俺はgoでサーバサイド書いてるからあえて使ってないけど、
全部jsでやるならkoaかも
express使ってても自分でミドルウェア書きまくるわけじゃないからな 標準のやらpassportやら使うだけだからasync/await使えて嬉しいことはほぼない 結局エコシステム揃ってる方を使う
>>691 koaってexpressのミドルウェア使えたはず。
だからエコシステム的には問題ない。
とは言えasync-awaitもところどころ詰まるところはあるのは分かる
(例えばarrayのmapに渡す関数としては使えないとか。)
でも今から使うならkoaの方かな。
expressのミドルウェア使うならexpressでええやん
>>693 非同期処理を同期的にかける魅力には勝てない。
>>692 array.mapに非同期関数渡したいならrxjsで処理してtoPromiseすればおk
>>697 いや。そもそもPromise.Allがmapと同義じゃんってわかったから
あえてrxjsは使わなくてもok
まっ CORE ASP使っている身としては、koa2で十分なんだが、JadeからPugへの変更って必要だったのかえぇ〜? いまいちのような感じかする。 軽いCMSにkoa2は便利。 重いのもいけそうではあるが・・・
>>699 jadeもpugも一緒だぞ
商標の問題で名前変えただけで
あんましexpressもkoaも使ってるぜーって情報発信してる人いない気がする。 知らないうちにブロだクションで動いてるんかな
expressってwebアプリケーションフレームワークって感じじゃないからな rubyでいえばrack相当でrails相当じゃないから表に出ない
expressはnode.js標準に付いていてもおかしくない程度の軽いフレームワークだしな
ぶっちゃけ、express使うような案件だとphpでよくない?っておもっちゃう
>>708 おれもゲームサーバーでnode+socket.io使ってるけど、expressで配信するコンテンツってphpでよくね?ってパターン多い気がする
どうしても非同期じゃないと無理ってパターン以外は非同期のデメリットがでかすぎる
とくにDBがらみの単純な登録画面とかね
phpの数倍の開発コストかかるよ
expressでdbアクセスなんてしてないな bffとして使ってるから node/expressの後ろのapi鯖はphpだったりrailsだったりjavaだったり
でもphpって1requestが1プロセスで高コストだから同時接続数を稼ごうと思ったらnode.jsの方が良いんじゃないの?dbがボトルネックだから気にする必要はない?
それにasync awaitつかえば非同期処理はかなり自然に書けないかな? 学習コストは高くなるかもだけど
async/await使いたいけど、LTSになるまで待ってって言われてる(´・ω・`) TypeScriptはコンパイルしたくないって言われた、、、
最終的にはアクセス増えたときのパフォーマンスの話になるんだろうけどそんなこと気にするレベルじゃない案件でわざわざ苦労してまでexpressでがんばる必要はないなと思う 必要な場面で局所的に使うのがnodeっていうイメージ
>>716 むっちゃしんどかった。
goを学習してgorutineで書き直したわ。
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の内容が表示される 何か上手い解決策はないでしょうか。
constructor内で this.index.bind(this)でthisの束縛をすれば解決しませんか?
>>720 お答えいただきありがとうございます。 それを全部のメソッドにやるのも何かしっくりこないので、 下のようにクロージャにしてしまったら何とか期待する動作になりました。 function dbaccess(db) { let _db = db; return { index(req, res) { } // 以下略 } } クラスだと上手くいかないのがイマイチ納得できてませんけど。 >>722 それが問題ならアロー関数をつかえば解決します。自動でthisを固定するんで。
>>719 おいおい、変なことしないほうが良いぞ
もうちょっと調べるべきだろ?
他のプロジェクトでそんな書き方してるか?
昔やったきりで忘れたし今のやり方は変わってるかもしれないから
適切なアドバイスはできないがよ、他はもっと簡単な書き方してるだろ?
>>724 http://qiita.com/kazusa-qooq/items/23926befcb87c0c7b26f によると
req,res,nextの3引数を取る関数を作ればいいみたいね。
偶然にもクロージャーを使うというのは正解だけど
nextを省略してるってことは他のミドルウエアを後から追加したら
動かなくなる
こういうの見てるとtypescript使うべきって思う。
型でapp.useに渡すクロージャーを制約できるからこういう失敗がない。
722です
一応、最小限っぽいコードを書いてみました。
http://www.dotup.org/uploda/www.dotup.org1319642.zip.html users.jsからdbaccessを利用していますが、ここをtags.js, articles.jsと増やしていきたいって考えています。
>>724 本家のサンプルも利用者のblog記事なども一通り見たのですが、
見つかるは全部関数なので、そもそもクラスでの利用を想定していないのだろうと当たりを付けて
影響なさそうなクロージャにしてしまいました
>>725 ミドルウェアの追加は想定していない、クライアントコードなので特に支障はないと判断してます
本音を言うと、ただ書き忘れただけなのですけど。
ちなみに、なんでクラスで書こうと思ったのかと言えば クロージャとクラスのインスタンスが内部的には等価だと思っていたからです
codepenとか使うかgithubに上げるかして欲しいわ。 正直zipでってなんかイャ
>>728 将来の自分のためにも流儀は合わせておくべき。
コード量の削減に影響するとも思えない。
>>728 thisが違うことから等価じゃないことが証明されてるでしょ?
じゃあクラスで書こうと思った理由は消滅してるよね?
ならクラスで書くのをやめるべきだよね?
useの第2引数に何が許されてるのかドキュメント読みなさい
forkの経緯を眺めてたけどこれio.jsの時と違って結構めんどくさいな これまでのNodeは人治主義のOSSだったってことか
シングルスレッドだから遅くならないって言うけど マルチスレッド言語で動的にスケールすればいいでしょ?
Node.js Foundationに対し不安を持つグループによるNode.jsのフォークプロジェクト「Ayo.js」誕生
https://mag.osdn.jp/17/08/25/163000 シングルスレッドだから遅くならないなんて言っている人なんているかねぇ? C10Kの話ならかなりニュアンスが違う。
優秀な一名をこき使うから速いんだな。 ほんの少しでも空時間があったら仕事をぶっこむ。 人間なら死ぬわ。
>>738 メモリ使用量が増えないってnodeのメリットじゃないの?
そんなのスケールアウトで十分だと思うんだが
> メモリ使用量が増えないってnodeのメリットじゃないの? だれがメモリ使用量が増えないというメリットが有ると いったんだ? お前の脳内か?
nodeが良かったのはは非同期apiにより プロセスあたりのリクエスト処理数を高めたからでしょう? マルチプロセスにすればその分リクエスト処理数もある程度スケールしてくれる。ただしdbアクセスは考慮しないものとする
>>743 nodeとは全く別もので、ただのデータベース
Nodeが普及したのは良いサイバーサイドJS環境だったから
let dict = {} で辞書のように使おうとしたんだけど、 dict['constructor']ではまった アレイにkvペア入れて頑張るしか無いの? 16万項目あるので線形検索は躊躇う
Mapを使うとかlet dict = Object.create(null)とか
>>746 16万項目のデータをメモリ内に置くのか。
もっといい方法無いかな。realmとか使えればいいんだけど。
Object.createで上手くいった try catchで検出してエラーになるのを、別管理と考えてたけど、すっきりした さんきゅ
>>748 db構築に使うフォーマット変換ツールなので、適切な時間で終了する事が要件で
利用リソース量はあまり気にしない
eslintとそれにぶら下がるプラグイン本当互換性がない ツール入れる所でトラブらないといけないとかだるいわ これだからJavaScriptなんて書きたくないんだよ
eslintのプラグイン何を使おうとしてるの? 使わなければいいじゃない
>>742 そういうのもNginxやApacheがある程度やってくれるようになってるからね。
後ろは好きな言語をそのまま使えばいい。PHP-FcgidとかuWSGIとかRackとかServletとか。
>>755 非同期apiはphp処理系では無理じゃない?phpはインスタンスの生存時間がリクエストを受けてからレスポンスを返すまでの固定だよね。
どうやってイベントループ回すの?
>>756 フレームワークによってはイベントループで生存期間が無限のものもあったはず。
前の会社で、そういうWebSocketフレームワーク使おうとしてたよ。
…そんな用途全く想定してない普通のPHP用のオレオレライブラリ組み合わせて
メモリリーク起こしてたけど(藁
>>757 メモリリーク起こすなら使えないな。
phpってインスタンスの生存時間短い前提だから、
メモリリークってさほど気にしなくて良い言語なのかも。
素直にjsでいい気がするけどね。今の時代。
yahooで勤務してる知り合いも今はjsでサーバサイドを書いてるってさ。
もともとCGIはリクエスト毎にプロセス作ってサービスしてた なので、一つのリクエストが終了するとperlやphpのプロセスも終了するので、オブジェクトを解放(リファレンス外す)しないCGIが多くある ところが、これじゃおせーよと言うことで、終了させないで無理やりに複数リクエストを処理させる仕組みをでっち上げた これがPHP-FcgidとかuWSGI リークしまくりのサービスが出来上がり 三菱とかやりそうだろ
だから一定数のリクエストを処理したらプロセス再起動する 三菱でも大丈夫
メモリだけじゃなくて CPUもファイルI/Oも簡単に食い潰せるからな
>>760 なるほどね。大雑把な作りだ。
大昔Dephiの案件をやった時に、PLが
ひとかたまりのEXEを画面ごとにバラバラのEXEにして
切り替えるたびに終了させる仕組みを作り出して、メモリリークを
極力抑える仕様にしてたの思い出した(データはDBにおいてる)
>>760 三菱は自動再起動なんて技術がないから、連絡受けて手動で再起動してた
何故、三菱が引き合いに出されるのだ? なんかやらかしたんかい。
三菱電機インフォメーションシステムズ (MDIS) 製のソフトウェアは、 1時間に400以上リクエストを送られると他のリクエストの処理が不可能になる不具合を含んでいた これか? 9秒に1回以上で破たんするなんてどんな実装か興味津々
そもそもDOMとのメモリリークとかまともに対応してきたJS界のエンジンが優秀過ぎるだけで 他のサーバサイド言語で環境を跨いた循環参照とか上手く処理できるエンジンは無いし、他のGC技術や調整も何年も遅れてる
WebアプリでDBコネクションを10分間も保持するなんてどういう実装したらできるんだろ? 普通にやったんじゃできないよね。
>>769 expressだって、グローバルスコープの変数にコネクション保持すれば、その参照切るまで残るぞ
>>769 膨大な数のリクエスト処理するのになぜ閉じるのかが逆に理解できないんだけど
普通WebアプリやサービスのDBはつなぎっぱなしだとおもう
Webのセッションが終わってるのにコネクションをセッションのために10分間保持してたって事でしょ? 普通はコネクションは閉じないがWebのリクエスト毎に紐付けは開放でしょ。
>>775 三菱に限らずSIerの技術力低下が半端ない
自分達の底辺技術レベルが原因で、無実のエンジニアを罪人にして、ほっかむりしたのは三菱だけ
ちなみにDBってopenとtransactionを分離している奴があるけど、これって何で? 例えばIndexedDBでもそうで、open後にtransactionを作ってアクセスしなければならない。 しかし普通に読み書きだけなら DBWrite(DBname, objectStores, key, value) みたいなAPIでクエリ毎にopen/close繰り返した方が使う側は楽だよね。 何らかの理由でopenが重いから分離しているのだろうけど、 普通に実装すればそんなに重いとも思えない。 (実際はopenは数秒かかる時もある程重いが) これって何で? ちなみに類似ケースはXHRで、通常は毎回XHRをnewするだろ。 indexedDB.openもそれに近くて、本来はオブジェクトを初期化するだけで終わるはず。
>>769 > WebアプリでDBコネクションを10分間も保持するなんてどういう実装したらできるんだろ?
> 普通にやったんじゃできないよね。
コネクションプールを使ったら普通にそうなりますが?
>>779 DBをopenしてselectしてcloseするなら
トランザクションいらないでしょ?
>>779 > 何らかの理由でopenが重いから分離しているのだろうけど、
> 普通に実装すればそんなに重いとも思えない。
ゆえにopenが重いから分離しているという
あなたの想像は間違いだって言うこと。
根拠のない想像を結論にしないようにしよう
検証の前にあるのは結論ではなく仮定という
トランザクションは複数の操作を一塊にするもので
openが軽いのとは関係ない話
>>781 IndexedDBの場合はトランザクションは常に必要だ。
他の楽観的なトランザクション分離のDBについては知らん。
>>782 では何故openとtransactionを分離するんだ?
最初からtransaction単位でopen/closeするAPIにしておけばいいだけの話だろ。
そこを分離して手動でやらせる理由が分からん。
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'})
}
IndexedDB特有の話ならtransaction使わないと readonlyなのかreadwriteなのか決められないからだろ
>>779 DBへの接続(open)とトランザクションは別のレイヤーだからだよ
1つの接続で2つのトランザクションを実行したい場合どうすんの?
transactionを明示的に指定しない場合に
デフォルト設定で例えばステートメント単位でトランザクションになるような仕組みがDBにあればtransaction指定は必須でなくなる
一般的なRDBはそうなってると思うけど
>>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は重い)
>>786 > transactionを明示的に指定しない場合に(以下略)
これについてはそれでいい。
APIコール1回=1つのtransactionになるって事で。
> 1つの接続で2つのトランザクションを実行したい場合どうすんの?
これってどういうケース?
その2つのトランザクションをくっつけて1つのトランザクションにしておけばいいだけの話では?
並列性を限界まで出したくて、例えばライト/リードでトランザクションを分けておきたいとかか?
>>788 1回の接続で複数トランザクションを実行したいケースってあんまりないのかな
例えば2つのトランザクションのうち後者が失敗しても前者をロールバックしたくない時とか考えてみたら?
トランザクションのたびに再接続するので良いケースもありうるけどそうじゃないケースもありうるよね
だから一般的にはトランザクション境界と接続の開閉を一つにしたAPIってのはいい設計じゃないと思う
>>787 繋ぎっぱなしの文化なんかなくて、ただの開放漏れのバグだよ
openしたらcloseするのが必須
>>780 コネクションプーリングはコネクションを使いまわす仕組みだからDBには繋がったままだけどWebのセッションからはリクエストの度に切り離される。
とっくに終わってるセッションがコネクションを独占するようなアホな作りはどうやったらできるのかって事。
>>787 繋っぱなしってコネクションプーリングのことでしょ。アプリから見ると毎回、open/closeしてるように見える。
>>790 コネクションを独占ってなんだ?
異なるセッションから、コネクションを使いまわすのがコネクションプーリングなんだが?
セッションが終わってるっていうのなら、コネクションは明け渡してるだろ
>>787 > IndexedDBはonupgradeneededの時は最初からトランザクションを張っている。
じゃあなおのこと、openでトランザクションは貼れないな。
だって、何の操作をするかで、トランザクションの種類が変わるわけで
openした時点ではわからないんだから
>>787 > そしてAPIが
> > DBWrite(DBname, objectStores, key, value)
> > DBWrite
> とかでいいのではないか?というのが俺の疑問なのだが。
トランザクションは複数のDBWriteを
一つにまとめるものなんだから
それじゃだめだろって言ってるんだが?
いいからトランザクションを勉強してくれ
お前、根本的に分かってない(笑)
>>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の標準形だからだと思う)
DBのAPIは意味不明で、そもそもオブジェクト指向にも反してる。 ユーザがやりたいのはread/writeであって、open/closeではない。 File.openの代わりにHDD.open+File.readというAPIにする奴がいたら、死ねでしかないだろ。 open/closeってもしかして今みたいなパケット相乗り回線ではなく、専用回線を掴んでいた時の名残か?
>>790 MDISのケースは多分、図書館内端末用の界面にそのままWebを接続しただけだろ。
この場合、見た目は問題なく動く。
リソース枯渇のケースはコードから落とすしかないが、レビューが新規コードだけなら無理だ。
(この場合は新規コードはほぼ無しで、問題は今動作しているコード内にあるから)
おそらくMDISもB方式で、自前でコネクションプーリングしてる。
これは館内端末用で、端末に行列が出来ているかどうかは知る由もないから、closeはタイムアウトで10分とした。
ここまでは妥当な設計で、館内端末なんて高々数十台だし、問題なく動く。
問題はこれをそのままWeb側にも解放したことで、
この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。
本来は、
D. Webからの入力を受ける「仮想端末」を用意し、Web入力は一旦全部そこで受けてからDBアクセス。
E. open/closeを毎回やるようにする。(Aと同じ)
のどちらかが必要で、本来はDの方がいいし多分そうしていると思う。
Dの場合はDDoS時にも館内端末は無傷で済む。
追加コードは仮想端末部分だけであり、既存コードには一切手を入れる必要がない。
Eの場合は全体のパフォーマンスが「いちいちopen/close」分だけ落ちる。
とはいえ真面目にDBを組んであればUIからでは見えないとも思う。
変更はopen/closeが内部APIで隠蔽されていれば数行、といったところか。
(そうなっていない場合は全体ソースを見直す必要があり、現実的ではない)
>>796 もうめんどくさいな君w
DBへの接続とトランザクション境界を一致させた画期的APIを作って流行らせればいいよ?
一つのユースケースたけに特化したものとしては別にあっても悪く無いと思うよ
ただなぜそういう設計のものが存在しないのか考えてからね
>>797 > ユーザがやりたいのはread/writeであって、open/closeではない。
そのうち二回のwriteを実行して二回目のwriteで
エラーが起きた時に一回目のwriteもロールバックするために
トランザクションがあるんですよ?
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とトランザクションは別にするべき
>>798 open/closeのパフォーマンスを気にしてるのはお前だけだ
忘れろな
>>798 > 問題はこれをそのままWeb側にも解放したことで、
> この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。
誰もコネクションが枯渇したなんて言ってない
>>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
>>802 少なくともコネクションプーリングを考えたヤツはopen/closeのコストが大きいと考えてる。
数十ミリ秒と数ミリ秒の差が影響するシステムもある。
連想配列のキーに使用できる文字列の仕様ってどこに載ってますか?
連想配列にキーが存在するかチェックするのなら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
連想配列ならMapが最強 従来のオブジェクト形式が良いにしても o = Object.create(null)でo[key]の方が早い
>>806 だからなんだよ。
トランザクションの話をしてる時に
open/closeのコストを考えるなって話だろうが
>>808 > 連想配列にキーが存在するかチェックするのならinが速いな
一回あたり
59.21ナノ秒(=0.00000005921秒)
97.41ナノ秒(=0.00000009741秒)
だと10万回〜100万回ぐらいチェックしない限り
速度を気にしたって意味なさそうだね。
Object を連想配列にした場合、キーを、__proto__ にすると誤動作するから、 そのキーだけ、特別な処理が必要 他にも、使えないキーがあるかも
>>813 どういう時に __proto__ をキーに使ったの?
英文から、すべての単語を取り出して、出現回数でも調べたのかな? どこかのサイトで、そういう質問を見た
>>815 そういう場合は、適当なプリフィックスをつけるだけで解決するね
obj['@' + word] = なんとか
Object.create(null)で作ったオブジェクトには__proto__は無いし自由に値を設定できるこれ豆
Object.create() は、ECMA 5.1, IE9 以上か こういう機能が無かった、ES3 の頃の話かな
chromeのdevtoolsからconsole.dir({})やるとオブジェクトの中身が見れるけど nodejsの場合はどうやって見るんでしょうか?
○次受けが多いほど退場率が早くなる。高くなる 直受けの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) プログラマーズ
https://github.com/rook2pawn/node-ddos 調べ物をしている最中にこんなの見付けたんだけど
Httpdがリクエスト受け取ってる時点でDDoS対策にならないんじゃないの?
>>822 動作の軽いリバースプロキシ立ててそこで対応するほうがよさそう
node 8はこの秋LTSになるんだからアグレッシブに最新機能は入れないよ node 9には入る
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番目のようにデータが見やすく作る方法ってないですか?
なんでObject.createしばりなの? リテラル使っちゃだめな理由は?
>>829 Object.assign(Object.create(null), { a: {name: 1}, b: {name: 2}, }) ;
>>810 undefinedと比較
>>833 Object.assignはシャローコピーだから
>>829 と同じじゃない
undefinedとの比較は
>>809 とは違うしどっちみちundefinedを値として使うと破綻する
>>831 え〜〜、Object.prototypeのプロパティに被る可能性があるからっていう理由で
>>829 みたいな書き方になっちゃうの。。。用途によるんだろうけど何とも言えない気分
使うプロパティの種類が限られてるなら 気にする必要ないだろ
>>837 また新しいライブラリを作ろうって話かよ。
lodashでできるんじゃね?
簡単な関数だよ
$(name1, value1 ...)
で
>>829 みたいな事をすれば良い
そうするとjQueryと勘違いされるから 違う関数名のほうが良さそうだね
にわかばっかだなここ { __proto__: null, a:1 } を使えば良いだけだろ…… その程度も知らないようじゃJSer失格 恥ずかしいよほんとに
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); } じゃとれませんでした どうやって取るんでしょうか?
もはやnode.jsの話じゃないな node.js使わずchromeでやってるんだからわざとやってるだろ まずはjavascript prototypeでググれ それで分からないことはどこかのjavascriptスレで聞け
>>843 chromeのコンソールでconsole.logした方が解析しやすいじゃん バカなの?
>>842 getOwnPropertyNamesは名前の通りOwnなプロパティしか取れん
for-inは継承を遡るが、列挙不可にされてるプロパティは取れん
ビルトインプロパティは基本的に列挙不可されているので
結局for-inでも殆どOwnなプロパティしか取れん
それを取るには、__proto__を繋げていって一つ一つにgetOwnすること
https://nodejs.org/en/ の、8.7.0 Current をインストールしました。
で、
node.jsを立ち上げ、
.helpは通るのですが、
$ node
や、
$ node -v
は、
SyntaxError: Unexpected identifier
になってしまいます。
どうすればいいでしょうか?
コマンドプロンプト・PowerShell で、
node -v
とコマンドを打つと、そのコマンドの実行ファイルを、OS が探す必要がある
つまり、その実行ファイルの場所を、環境変数PATH などで、OSに教える必要がある
環境変数PATHに指定していなくても、
絶対・相対パスで指定すれば、実行できるはず
Windowsのパス(PATH)の読込順 と起動される順番
http://takuya-1st.hatenablog.jp/entry/20110116/1295188903 >>849 レスありがとうございます。
では、どうやればいいのでしょうか?
node.exeは↓にあります。
"C:\Program Files\nodejs\node.exe"
>>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を打っても、
エラーになってまう。
これは不思議なことだと思わないかね?
なんでそんなレベルでnode.jsインストールしようと思ったんだろ
>>854 https://www.webprofessional.jp/beginners-guide-node-package-manager/ このページの黒い部分でいうと、
> console.log('Node is running');
や
> .help
これは、
実行出来るのです。
この状態でバージョン確認をするにはどうすればいいのでしょうか?
>>850 C:\Program Files\nodejs\node.exe
>>857 お、ありがとうございます。 通りました。
じゃ、私の環境で↓のコマンドが使えるようにするにはどうすればいいのでしょうか?ちなみに、バージョンは、v8.7.0でした。
$ which node
$ node --version
>>858 849が書いてくれてるようにPATHが通ってないんだろうからPATHを通す
パスの通し方とかでググって
コマンドプロンプト使う時の基本だから
windowsとlinuxの違い、コマンドプロンプトとnode起動後のコンソールの違いが理解できてないっぽいな $は入力するものじゃないしwitchコマンドはwindowsにはない
例えば、コマンドプロンプトで、 where notepad と打てば、メモ帳の実行ファイルの場所が、表示される where node と打てば?
皆さん、レスありがとうございます。感謝します。
ちなみに、
コマンドプロンプトで、
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
と、打つと、コマンドプロンプトがどこかに行って戻って来ません。
npm の仕組みについても、検索して調べて!
思い付きで、色んなコマンドを打っても、動かない
C:\Windows\system32>node --version
C:\Windows\system32>
そもそも、ここは、Windows のシステム領域だろ。
こんな場所へは行かないし、ここからコマンドを打つことは、絶対にない
自分のホームディレクトリ以下に、プロジェクトフォルダを作って、
そこからコマンドを実行する
プロジェクトフォルダ>node --version
これで、コマンドが探せないのなら、
>>849 のサイトを見て、勉強する
OS の仕組みについて、何年も勉強していなければ、
環境構築・システム運用はできない
つか、わかった。 スタートメニューに色々出来るけど、 nodejs と、 Node.js command prompt があって、 Node.js command prompt を立ち上げるべきを、 nodejs を立ち上げてたのだと思う。
http://gihyo.jp/dev/serial/01/nodejs/0001 つかこれの、真ん中ぐらいの、
>を実行すると,コンソールに「foo」と出るのが確認できます。
これが確認出来ました。
ありがとうございました。
しかし、nodejsも、Node.js command prompt も、 どっちもコマンドプロンプトみたいなもんだけど、ドコが違うんですかね?
node.jsを使ってjQueryチックにWebサイトをクローリングする方法
https://liginc.co.jp/programmer/archives/4848 これが半分ぐらい出来たんですけど、
これをちゃんとやるには自分のpcにmysqlがインストールされてないとダメなんですかね?
プログラミングの学習が目的ではないみたいだし 潔く諦めてGUIのスクレイピングツールを使え 自分で学ぼうとしないやつを いつまでも相手にするほどみんなヒマじゃないから
MongoDB, Redis など、NoSQL系DB で良い
windows10をFCUしたら node-notifierと言うライブラリが機能しなくなってしまいました。 呼び出すとエラーも出さずに消えてしまいます。 どこを確認すべきでしょうか?
複数人体勢のexpressのほうが安心 koaは作者一人だから不安だから使わない
koaってexpressのミドルウェアそのまま使える。async await大好きマンに取ってはたまらない1品
koa2+reactjsのdynamicで快適。 ejsやjadeを使わず、javascriptのみですっきり。 いいで〜 koa2+react。
全体的に名前空間で仕切られてないこのグダグタnodeライブラリ。 10年後も、その時の最新のnodeで使えるんなほんまに。
node.js難しいっていうイメージだったけど、 JavaScriptがウンコだったってことみたい なんでこんなに散らかってしまったんだ せめて書き方を統一しろよ
なんでって20年以上も歴史のある言語で産まれたときとは用途も規模も全然違ってるからな
JavaScriptは言語仕様が使いにくいとは思う 小規模なら使いやすいかというと全然そんなことない
言語仕様に難しいところはない。 難しいと思う所言ってみな?
プロトタイプベースなところ 使いやすいと思ったことがない
>>896-897 仕様が難しいというのと馬鹿の扱いが難しいのは別の話だな
ES2015に従えばプロトタイプってことを意識することはないかな。 既存のクラスにメソッド追加したいときとかなら意識するけども。
>>902 prototypeを使って簡単なことをするのと
prototypeを使って複雑なことをするのでは
当たり前だけど難易度が違うのさ
既存のクラスにメソッドを追加するのは、
prototypeの簡単な使い方に含まれる
意味はわからなくてもいいから、こういう書き方をすればOK
程度の説明だけでもクラスにメソッドを追加することはできる
クラスだけじゃなく手続き型っぽくも書いたり はたまた関数型っぽくも書いたりするとこがどう書いていいか分からなくて難しいってことなんじゃない? 凄く冗長に厳かに書いたかと思えばハッキ―なテクニックも使ったりもするしね 世の中には「良い書き方は1つ」を目指してる言語もあるけどJSはその対極だからね 標準ライブラリが少ないという点もそう 俺はそういう点こそが好きだけどね
OOPが常に最適解ではないというのは衆知の事実だしな。 俺は基本関数型風で書くのが好みで、データ型にtsのinterfaceが使えれば充分だ。
node-redを使ってるんですが フローって作成するとメモリに常駐するんですか? 作れば作るほど実行してなくても他のフロー処理速度は遅くなっていきますかね?
パイプ演算子追加されれば関数型っぽく書くのが楽になるんだけどね 現状じゃ括弧のネスト増えるからとてもじゃないけど書けない
関数の合成も完結に書きたいしimmutableなデータ構造もネイティブにサポートして欲しいし そしたらパターンマッチも不可欠だし 関数型への道は険しい Elm使え
ES提案中のパイプライン演算子は当分奇抜な草案扱いだったが |>await|>など提案によりStage1の中ではHotになりつつある あとは?を絡めた関数定義を詰めるのと、Mixin周りの提案が勝負 そこをもう少しでも詰めればStage2まではいけるが、Stage3にはawaitの様なパンチが必要 頑張れ
>>907 パイプだろうがドットだろうが大差ないだろw
どうせ一行が長くなったら改行するんだから
つまり
foooooooooo()
| baraaaaaaaaaaaa()
| bazzzzzzzzzzzzzzz()
でも
foooooooooo()
.baraaaaaaaaaaaa()
.bazzzzzzzzzzzzzzz()
でも同じだろと
foo() | bar() | baz() でも
foo().bar().baz() でも同じだろと
>>910 いや、メソッドじゃなくて関数
bazzzzzzzzzzzzzzz(baraaaaaaaaaaaa(foooooooooo()))
と
foooooooooo()
|> baraaaaaaaaaaaa()
|> bazzzzzzzzzzzzzzz()
じゃ後者がいいやん?
メソッドはクラスインスタンスに対してしか使えないけど、クラスインスタンスだとprototypeの関係でObject.assignなどが使えなくて不変プログラミングがやりにくいからね
>>910 >>911 パイプの方が可読性高いだけでもいいわ
メソッドチェーンは読みにくくなるから嫌い
https://www.npmjs.com/package/babel-plugin-pipe-operator babel-plugin-pipe-operator
Overload the pipe operator (|) to provide Elixir/F#/Shell-like behavior
これ使えば今すぐ使えるのかな?
A | B | C たぶん、パイプだと並行処理する 1. Aが最初の1KBを処理する 2. 1の出力を、Bが処理する。同時に、Aは次の1KBを処理 3. 2の出力を、Cが処理する。同時に、A, Bは次の1KBを処理
これの第2引数って{anyway:true}みたいなのを渡せばいいんですか?
socket.io 2.0.4で指定したルーム内の全てのソケットもしくは ソケットIDを取るにはどうしたらいいですか? socket.io 0.9.6ではio.sockets.clients(ルーム名)で取れていたのですが、 同じようなことを2.0.4でしたいです。
自己解決しました。 socket.ioのgithubに行ったら詳しいドキュメントがありました。
JavaScriptエンジン向けのポータブルなCommonJS実装ってどこかにないかな。 ピュアJSのモジュールシステムというとRequireJSがあるけど、あっちはいわゆるAMDだよね。 CommonJS使いたいとなるとやっぱりBrowserifyやWebpackとかしかないのかな。
一年くらい前にブラウザのSW上に実装した記事をどっかで見たな
console.logを自前で実装しているんだけど、%cの扱いをどうしようか迷っている。 一応解釈だけして引数を無視するのと%c自体無視するのとどっちがいいかな。 Node.jsは後者みたいだけど。
あぁそうか、Node.jsを前提しているコードで%cを使うことはまずないだろうから とりあえず前者にしておけばいいんだな。
クライアントサイドjavascriptのスレってどこにあるんですか? WebProg板にあるのかと思いきやあっちもサーバサイドだし
child_process.spawnSync()はプロセスの終了を待ち合わせるけど、workerにはそういう スレッドのjoin()のように待ち合わせる機能はないのかな。
workerってWebWorkerのこと? それならSharedArrayBufferとAtomics APIでできるよ ただCPU脆弱性問題で今は無効にされてる
サーバーサイドでそれ無効にする必要ある? Webブラウザは様々なサイトのコードを実行するから 対策が必要だろうが サーバーにハッカーのコードを仕込まれたらその時点でもう終わってるじゃん
>>929 いつの間にサーバーOS=シングルユーザーOSになったんだよw
OSっていうのは複数の人が自分の権限で自分のコードを実行するもんだろ
自鯖レン鯖ならともかくコンテナやVPSでメモリ共有する環境もあるしな
他のプロセスのメモリー内容まで簡単に読みに行けちゃうのはメルトダウンだけだよね?
http://blog.trendmicro.co.jp/archives/16735 読んだだけの
大雑把な理解だが、
カーネルのメモリを覗けるのがメルトダウン
同じコードを共有した他のプロセスのメモリを覗けるのがスペクター
だと思ってる
メルトダウンはカーネルのメモリを覗けるものだから
カーネルが覗かれないように対策できる
スペクターはアプリが覗かれないように対策する必要があるが
その必要があるのは、例えばブラウザのような同じブラウザ上で
別々の人が作った任意のコードを実行するようなものだから
攻撃の前提を満たすのが難しい
>>933 この記事はいいね。
> その必要があるのは、例えばブラウザのような同じブラウザ上で
> 別々の人が作った任意のコードを実行するようなものだから
この場合のコードは実行コードの意味だろうから、つまりは同じDLLをリンクしてたらアウトで、
Linuxならlibstdcやlibmとか、ほぼ全部のアプリが使ってるだろうしアウトじゃね?と思うが。
同じアプリである必要はないはずよ。
Spectreの2つの亜種のうち 1つは同じプロセスの内容だけを覗けて もう一つは他プロセスの内容を見れるが、スーパーユーザー権限が必要って書いてあるようだけど?
Spectreは2つ組み合わせて使わないと意味がない
一度でもasync/awaitを使ってしまうと、もう元には戻れない 楽すぎるぅぅぅぅぅ
単発非同期にはasync-awaitで十分便利だけど イベントのようなものを扱うのはまだまだ難しい まず値が複数あるということ 一応for-awaitはあるけどreturn時に特別な最終処理を行いたい場合は 結局done:trueを見ないといけないから使えない また、イベントって標準on〜も結構な工夫がされてるけど、 イベントが起きた直後にセットしたハンドラで受け取りたいかどうかっていう問題がある この辺り最近ずっと個人的に研究してるが容易ではない
最近node.jsを勉強しています。 socket.ioで質問なのですが、何か非同期処理していて接続が切れた場合、再接続したら その処理完了のメッセージは受け取れるのでしょうか、それとも接続が切れた段階で、キャンセルされますか?
スマホでアクセスポイントが変わったりした場合、一回切れますよね?
同じ切れると言っても切れてる時間の長さとか再接続でIPも変わるときと変わらない時でも違うんじゃね
TCPかUDPかとかでも違うんだろうけど socket.ioがどっちかは忘れた
socket.ioってクッキーみたいので、セッションID維持してて 切れても安心みたいな感じじゃないんですか?
node.jsって人気ないな〜 解説ブログは古いし、間違ってるし、 こんなんで作ったらバグだらけやん
結局、どう使うべきかわからないというのが問題なんじゃないかな 拡張機能があるけど、個々の機能はわかるけど、うまくピースがはまらないイメージ
プログラムの設計思想がぴんとこない 非同期で時間のかかることやらせるならsocket.ioは必須なの? 切断したときにどう復旧させるの? 自分は何者で何をしてたかの情報をうまく組み合わせる必要ない?
どう使うべきかじゃなくて 自分が作りたいものを作る時に何を使うかだろ
そこが想像できない、よくわからないから抜け出せないので、使う候補に上がってこない
世界的な事例のほとんどは バックエンドをマイクロサービス化 ↓ その前段のbffにnode.js これだからモノリシックなシステムには無縁
bffでnode.js使うところはssrもやってるからgoは選ばれないんじゃね 結局そういうアーキテクチャの要請があってプロダクトが選ばれる
isomorphic javascriptでググれ
SNSのバックエンドをExpressオンリーにするのって無理かな
>>962 phpでもrubyでもいけるのにexpressじゃ無理かもしれないと思った理由は?
一つのexpressにHTTPdからAPI鯖まで全部詰め込んでもいいんだぞ
>>963 あまりそういう話を聞かないから
不都合全く無いの?
expressはあんまり高水準のフレームワークじゃないしormはsequelizeくらいしかないしメリットなさげじゃね
node.jsでウェブサーバやる利点って何?超使いづらいんですけど
meteor.jsとか見てるとjsのメリットすごいけどね
>>967 一人しか利用しないなら使わなくていいんじゃないの。
素朴な疑問だけど ここのみんなは node.js でどんなサービス作ってるの?
特定業種にiPadごと配るアプライアンス的なサービスのBff なので事例には出しにくいけどバッチリ使ってる
>>973 そのiPadに入ったアプリが通信する先のサービスってこと?
あとBffって何ですか?
無知ですまん
ありがとう、翻訳して読んだりしました 難しい gateway とか dispacher的なもの? nodeとnginxの関係を見た時nginxがbffの位置づけ? 見当違いならほっといてください
socketを使う必要がってnode+expressがやりやすそうと考えて 独学でnode.js始めて(独学)1年くらいです sessionにredis使ってまして 通常のhttpとsocketでの共有が面倒なのですが 皆さん、どんな方法使ってます?
socketってwebsocketのこと? node.jsではnetモジュールが提供するtcp用のapiが本来のsocketだから変な略し方すると話が通じないよ websocketならhttpで始まるからセッションは普通に共有できるはず websocketを使うのにsocket.ioを使ってるならそれも書いた方がいい 最近はsocket.io使ってる人が少なそうだからレスが付くかはわからんけど
>>978 ありがと&ごめん
socket.ioを使ったwebsocketでした
websocket側からsessionのハンドリングに自分は
var sockeio = require('socket.io')(server, {'transports': ['websocket']});
var io = sockeio.of(ns).on('connection', function(socket) {
/** socket.request.session;
* で拾える
*/
});
てなことしてまして、拾うのは楽なんですが
session save するのに
redisの該当データをupdate(set)するってことしてます
これ普通ですか?アホですか
あとsocket.io使われなくってるのは何故?
こういうユーティリティで便利なのがないかさがしてみるのも一手
https://www.npmjs.com/package/express-socket.io-session 昔はwebsocket使えないブラウザが多かったから他のプロトコルにフォールバックしてくれるsocket.ioが重宝されてたらしい
今はwebsocket使える前提でいいからフォールバックは不要なので豊富な機能が不要ならwsとかシンプルなモジュールで十分って感じ
再接続とか考えるとsocket.io便利そうだけどね
>>980 express-socket.io-session 良さそ気
wsっかぁ、
自分を慰める理由が欲しいんだけど
room機能実装するならwsじゃなくてsocket.ioが楽?
roomとか必要ならsocket.ioでいいんじゃない よく聞くのはそれと再接続目当てな希ガス
お題が単に「room機能をとにかく楽に実装したい」ならgun.jsとかのほうが楽やで
リアルタイムwebをいじりたいならmeteor.jsに乗っかるのも一つの手
ビルドで使ってるgypがpython3に対応してないって話じゃね 開発元のgoogleでは対応済みなん? まだならnode側じゃどうしょうもない
issue検索してみたけどgypへの依存なくせやって話もしつこく何回も立ってたんだね
v8のビルドがgypならそれも無理がありそうだがなんか代替案出てるんけ?
今日ジュンク堂行ったらnode.jsの本2つしかなかった。 しかも入門書、やっぱりnode.jsオワコン? 他にwebsocketできるものなんてあるの?
node.jsは全然オワコンじゃない es2015,6,7,8と毎年進化していく予定なんだから むしろこれから盛り上がるってなもんで
同じことやるにしてもjava勉強したほうがいいのかな C#はやらないけど
node.jsもjavascriptも毎年大きなバージョンアップが確定だから書籍は出しにくいよなぁ
windowsは使わないのでC#はいらない dockerをそろそろ勉強しないといけないので、dockerといっしょにjavaでwebsocketもやるかな
-curl lud20241228090244caこのスレへの固定リンク: http://5chb.net/r/tech/1460359714/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net YouTube動画>1本 ->画像>2枚 」 を見た人も見ています:・ん ・) ・. ・ ・テスト ・尼 ・肴 ・る ・上 ・∫ ・| ・_ ・. ・. ・報告 ・て ・雑 ・o ・7 ・は ・て ・虎専 ・空牙 ・奈良 ・ω ・愚痴 ・k ・愚痴 ・^ ・R ・J ・石 ・石井 ・会7 ・ ・珈琲4 ・んほ ・n ・む ・g ・んあん ・て ・幾何 ・a ・ほれ ・報告 ・ま ・' ・て ・_ ・, ・t ・t ・ ・交流会 ・B ・阪神 ・a ・テスト ・一人鍋 ・? ・田酒2 ・、 ・阪神 ・まんこ
13:35:58 up 28 days, 0 min, 1 user, load average: 9.65, 9.24, 8.68
in 1.2672829627991 sec
@1.2672829627991@0b7 on 010903