サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
yosuke-furukawa.hatenablog.com
先週、@t_wadaさんと@yosuke_furukawaさんと議論した再入可能性に関する私の経験について書きました | ロック(ミューテックス)の再入可能性 https://t.co/j3xeOUxaWt— Yoshiki Shibata/柴田芳樹 (@yoshiki_shibata) October 22, 2018 突然のロックの話 いきなりロックの話をしましたが、10月に(なぜか)一緒に働いてるメンバーとの中で大盛り上がりした話題です。もともとはリクルートテクノロジーズで行われている、柴田芳樹さんのプログラミングGo勉強会で話題になった話です。 yshibata.blog.so-net.ne.jp ここにも書いてあるのですが、 Golang では sync.Mutex を使ったロックでは再入可能ではありません。 一方 Java のロックは再入可能です。 で、この設計に関しては合理的
Node.js 2018 まとめ この記事は HTML5j カンファレンスで発表した、 Node.js 2018 のまとめの話をブログに起こしたものです。 speakerdeck.com ちょっとずるいですが、この記事一つで Node.js アドベントカレンダーと JavaScript アドベントカレンダーの25日目の記事です。 10月にNode.js v11 がリリース Node.js v11 は変更点はいくつかありますが、v11.0.0ではそんなに大きな機能はありません。代わりに性能向上と安定性向上を行っています。 これにはNode.jsのコア変更ポリシーが関わっています。 Node.js Core Policyである 「Less is More」 Less is More という言葉をNode.js の文脈で最初に使ったのはこの jsconf での発表が初めてですね。 www.you
Chrome Dev Summit に初参加しました!色々トピックとして気になったものを紹介してます。後直接 Addy Osmani とか Paul Irish とかに聞く機会があったので、色々ついでに聞いてきました。 Chrome DevRel teams create a Chrome cake #ChromeDevSummit [pic.twitter.com/5u6VPZ0oHb](http://pic.twitter.com/5u6VPZ0oHb)— Yosuke FURUKAWA (@yosuke_furukawa) November 12, 2018 Chrome も 10 周年なんですよねー。感慨深い。 1日目は「現在のChromeでできること、やってること」という感じで、ケーススタディやツールチェインの話が多めでした。 2日目は「未来のChromeでできること、今後やるべ
Ryan Dahl は Node.js の original author ですが、彼の作ったプロダクト deno に関するトークが jsconf.eu 2018 でありました。 Node.js にずっと関わってきた僕が見て非常に興奮するような話だったので、しばらくぶりにブログに書き起こすことにしました。 背景 Ryan Dahl は2009年に Node.js の話を初めて公の場に公開しました。その時の「公の場」というのが「jsconf.eu 2009」です。 www.youtube.com Video: Node.js by Ryan Dahl - JSConf.eu - 2009 この発表から Node.js が広まり、今やサーバのみならず、IoTデバイス、デスクトップアプリなど、様々なところで動作しています。 で、今回はその発表から9年の歳月が経過し、Node.jsに対しての設計不
NaN === NaN は false NaN、つまりは Not a Number 同士の同値比較が false になるのは、よく JavaScript とかで罠だと言われていますが、罠でもなんでもないです。 false が返るという仕様です。仕様の経緯を追うとすぐに『 IEEE754 という浮動小数点の標準規格で決められているから』、という理由がヒットします。 では IEEE754 ではなんで NaN == NaN を false にしようという話になったのか、というのを調べてみました。 今回はそういう歴史の話です。 IEEE754 現在のプログラミング言語の処理系の多くが採用している浮動小数点の標準規格です。 この標準規格は以下のことを定義している。 - 基本形式: 二進および十進の浮動小数点数データの集合。有限な数(符号付ゼロと非正規化数を含む)、無限、特殊な「数ではない」値(NaN
ご恵贈頂いた本である『超速! Webページ速度改善ガイド 』を読み終わったので紹介します。 gihyo.jp あほむさんと SSR Panel Talk した時の話 いきなり関係ない話をしますが、 著者のあほむさんとPixel Gridのりぃさんと一度 Node 学園でパネルトークをやらせていただきました。その時の話で印象的だったのが、下記の話でした。 セキュリティやパフォーマンスも非機能要件だが、セキュリティは『実施しなかったら会社に与えるダメージが大きい』のに対してパフォーマンスは『実施しなくても会社に与えるダメージは見えにくい』 ただだからといって疎かにしていいわけではない、セキュリティは損害が会社のリスクとして見えやすいが、パフォーマンスはユーザビリティといった売上部分の根幹に関わる 幸い、あほむさんの会社にはたまたまパフォーマンスに気をつけてる人が多く、そういう人を育てる土壌もあ
Node.js Performance 改善ガイド Memory の場合 メモリリークかどうかを特定する メモリリークではない場合 CPU の場合 どこの処理に時間がかかっているのかを確認する v8 simple profiler flame graph を取得する File の場合 大きなサイズのファイルをどうしても扱う時 Network の場合 keepalive を on にする その他: 全体的にパフォーマンスを改善するためにやること JIT が効いているかを確認する clusterが使えないか検討する C++ addons vs JavaScript libraries まとめ 参考資料 Node.js Performance 改善ガイド この記事は Node.js 2 Advent Calender の 5日目の記事です。 qiita.com Node.js のパフォーマンスに
NodeFest 2017 を開催しました。 参加者の皆さん、先週土日と二日間ご参加ありがとうございました。発表有り、ワークショップ有り、コラボレーション有り、Video Jockey有りととんでもなく内容の濃い二日間でした。非常に楽しい会になりました。ありがとうございます。 振り返りをしていこうと思います。 開催地 今年の開催地の1日目は法政大学の情報科学部提供の富士見ゲートというところでした。 cis.hosei.ac.jp 400人程度入る教室と200人規模入る教室が2つほど用意されてました。新しい教室なのですごくキレイでした。 2日目はリクルートのグラントウキョウサウスタワーでした。 リクルートでは200人のメインホールと120人の Workshop 会場と 60人の NodeSchool会場を用意してました。 開催地が分かれてしまったのは単純に2日間続けてできる会場を抑えられなか
NodeFest 2017 を開校します。 さてさて、NodeFest 2017 を開校します。今年の学園祭の紹介をここでしておきます。 去年に引き続き今年も2Days開催します。 参加はこちらから! 1日目: nodejs.connpass.com 2日目: nodejs.connpass.com 詳細なスケジュールに関してはここを見てみてください。 nodefest.jp 1日目 最初の発表は以下のような感じです。 この時点で目玉はいくつもありますが、あえて上げるなら、 V8 の中のコアメンバーである Franziska Hinkelmann が語る V8 のディープな話、stdlibの作者が語る WebAssembly の話、 Node.js Core memberである Myles が語る 今後のNode.jsのガバナンスモデルの話、中国最大手のオンラインマーケットサイトを持つAl
Node Interactive North America 2017 に行ってきた & 発表してきた Node Interactive North America に行ってきました。前回は Node Interactive Europe 2016 に参加したのですが、その時の解説も一緒にどうぞ。 yosuke-furukawa.hatenablog.com Node Interactive North America は North America というだけあって、 Canada Vancouver で開催されてます。来年も同じ場所でやるということでもしも興味あれば参加してください。 会場はここ Vancouver Convention Centerで、池の側になってる ちなみに1日目から発表だったので、僕の発表が終わるまで全然聴講者モードになれず、最初の発表は大分聴き逃してる。 My
React v16 がリリースされた。詳しい記事は以下のエントリを参考にすると良い。 facebook.github.io 安心と信頼の日本語版、koba04記事もあるので見てみて欲しい。 React v16 changes - blog.koba04.com さて、リリースされたので、実際に会社で作ってるSSRを実施するboilerplateに対して組み込んでみてどれだけ効果があるかを計測してみた。ただし、まだ React の renderToStream は実施していない。ひとまずアップグレードしただけでどれだけの効果があるかを見たかったので renderToStream の効果については今後計測予定。 2017/09/29 追記: renderToNodeStreamの結果を計測結果をまとめに追記した。 Response Benchmark Spec: Macbook Pro 13
Ayo.js とは 「Node.js の fork です。」と言ってもまだできたばかりで正直このタイミングで記事にしてもまだ語ることはそんなに多くないです。 ただし、JavaScript界隈が騒ぎになりかけていることは確かです。日本でも発言が増えてきたので自分なりにまとめて今時点での話をしようと思います。 ちなみに読み方は好きに読んでくれ、と言われてます。 「アイ・オー」でもいいし、「エイ・ヨー」でも良いとのことです。ネーミング的には昔あった io.js fork騒動を想起させるネーミングになってます。もしも io.js についてご存じない方もいるのであれば、こちらをご参照ください。 yosuke-furukawa.hatenablog.com Ayo.js の目的 https://github.com/ayojs/ayo/blob/zkat/values/VALUES.md ここを見ると
Node.js のセキュリティアップデート 7/11 に Node.js のセキュリティアップデートがリリースされました。 Security updates for all active release lines, July 2017 | Node.js これには複数の脆弱性が報告されており、今回はそのうちの1つの Hash flooding DoS という脆弱性が何なのか、それに対して採用された対策が何なのかについてお話します。 Hash flooding DoS (hashdos) Denial Of Service 、つまりサービス拒否攻撃の一種です。 JavaScript のオブジェクトは内部的にハッシュテーブルとして表現されています。 図はこちらから引用 ハッシュ関数は同じkeyなら同じ値を返しますが、別なkeyなら通常は別な値になります。 ハッシュテーブルのinsert, g
Node v8.0 is released!!!!!! Node v7 から半年経過して次のLTS対象になる可能性が高い Node v8.0 がリリースされました。 いくつか Notable Changes を話そうかなと。ちなみに Node v8 と言うと内部で使っている JS エンジンの V8 と混同されるので、みんな Node8 とか呼んでるときが多いです。このブログの中ではまだ出たばかりとあって、 v8.0 と minor バージョン付きで紹介します。 LTS 候補 v6.x 依頼の一年ぶりの LTS 候補になります。 LTS になるのは 10月以降と予定されています。 Current から LTS になるためにはコアの成熟を待つ必要があり、リリースから半年経過させる予定です。 Notable Changes いくつか変更点をピックアップして紹介します。 npm5 util.pro
npm v5 The npm Blog — v5.0.0 npm に v5 がやっとリリースされました。この npm v5 は既に明日リリース予定の Node v8 にバンドルされる予定です。 かいつまんで、機能を紹介します。 Notable Changes package-lock.json!!! faster than npm v4 no more --save option Offline mode sha512 support package-lock.json!!! npm v4 まで問題だった npm-shrinkwrap の問題 を解消するための新しい lock ファイルが生まれました。 shrinkwrap は依存ライブラリを固定するための機能です。npm v4 までは shrinkwrap で固定していましたが、新しく npm v5 になってからはshrinkwrap は
Node.js のコアに util.promisify が追加された。 github.com 今回は util.promisify が持つ役割を中心に Node.js における Promise の立場についても話していけるといいと思う。 util.promisify とは 読んで字のごとく関数を Promise に変換してくれるユーティリティメソッド。 下記のような要領で変換できる。 const util = require('util'); const fs = require('fs'); const stat = util.promisify(fs.stat); stat('.').then((stats) => { console.log(stats); }).catch((error) => { console.error(error); }); async-awaitを使いたい
nspとは 先日たまたま会社で Vulnerability の話になって色々と Node.js だとこういうのあるんですよって言ったら知らなかった方も多かったので紹介。 nsp は node security platform の頭文字を取ったプロジェクトである。 Node Security Platform はサイト上で脆弱性を公開している。 Node.js のコアの脆弱性というよりも npm モジュールなどのモジュールの脆弱性だ。 nsp に挙げられてる脆弱性の一例 例えばこの脆弱性なんかは2017年2月11日に公開された脆弱性である。 https://nodesecurity.io/advisories/313 github.com どういう脆弱性かというと、このモジュールはJavaScript Objectをシリアライズするためのモジュールだが、そのserializeする時に関数ま
webpack2 に最近移行しました。 その時の知見とせっかくなので tree shaking が実際に中でやってることを追ってみたので紹介。 webpack2 移行時の注意 基本的にはほぼここに書いてあるとおり。 Migrating from v1 to v2 かいつまんで説明すると、configファイルの書き方がガラッと変わって、 module.loaders が module.rules になったり、 resolve.root がなくなって resolve.modules に変わったり。この辺の書き換えは割りとすんなりいくはず。 辛いのはpostcss周りのオプションの渡し方辺り。これまではconfigのrootにpostcssプロパティを用意してそこに記述できたが、その記述はできなくなり、 webpack.LoaderOptionsPlugin 経由で渡すか postcss.con
2016年になってから色んなソフトウェアエンジニアの人と話してきて、その中で3人から聞いた例え話、格言、小噺が面白かったので、僕の中だけで留めておかずに開放しておく。 息継ぎをするには『まず息を吐く』という例え話 水泳で息継ぎをするなら『まず息を吐きなさい』と教わるらしい。これは息を吐かずにどこかで息を貯めてしまうと、ちゃんと息を吸えないという事を意味してる。息を吐くと苦しくなって顔は絶対に水面に出る。 これと同じことがソフトウェアの学習にも言える。 つまりまずアウトプットする、なんでも良い。作ったものをGitHubに公開するとか、発表するとか、ブログやQiitaに書くとか。ちゃんとアウトプットしたものはフィードバックがあり、そのフィードバックを受ける(PRやissue, 質問, マサカリ etc)、どんどん吐き出していくと吸わないとネタがなくなるので、吸い込むためにまたインプットする。
このブログ記事は Node.js advent calendar の 4日目の記事です。 qiita.com いやーギリギリ 12/4 に間に合いました。 12/4 のアドベントカレンダーに投稿するっていうのは来週の12/11まで大丈夫だからな(?)— Yosuke FURUKAWA (@yosuke_furukawa) December 4, 2016 というわけで本題。 はじめに Node.js の日本のコミュニティを3年運営して、色んな所で語ってきた僕だからこそ、 Asia の JavaScript コミュニティに対して語れる話があるんじゃないか、ということで jsconf.asia で Node.js の今後について話してきました。 jsconf.asia とは シンガポールで行われる JavaScript のカンファレンスです、 jsconf.asia という名前の通り、 Jav
『知らなかったを聞く』というのが builderscon のコンセプトなので、文字通り全く知らない発表ばかり聞いてきました。 参加したのは下記の通り: OSS は Windows で動いてこそ楽しい 動け!Golang 〜圧倒的IoTツール開発へようこそ〜 Automatic Smile Camera を作った話 - 親バカハックノススメ - Open Beer Serverの理論とその実装 C 言語で行う Web フロントエンドプログラミング Highly available and scalable Kubernetes on AWS そろそろプログラマーもFPGAを触ってみよう! Docker swarm mode などで作る PaaS モドキとその悲しみ 世の中の困り事はだいたいGoのコード自動生成で解決する Bluetooth キーボードの作りかた 太字は僕の発表 面白かった発表
前書き このエントリーは Recruit Engineers Advent Calendar の 1日目の記事です。 www.adventar.org リクルートテクノロジーズのフロントエンド開発 リクルートテクノロジーズではいくつもの並行するタスクが走っていて、プラットフォーム基盤と呼ばれる基盤技術開発とインフラソリューションと呼ばれるインフラ開発、後はアプリケーション開発支援などのタスクが存在します。 アプリケーション開発支援の中でもウェブフロントエンド開発は目下のところ重要タスクとされており、色んなやり方をトライアルしています。 基本的には、 React Redux Node.js という組み合わせでフロントエンド開発をしています。 主には以前 ubb.jp というイベントで発表したこの資料に記載されている内容でやっていますが、諸々補足します。 リッチなウェブアプリケーションを作るた
あと一ヶ月、早いものです。 というわけで、Node学園祭の 2016 を開催します。 nodefest.jp 今回のエントリはNode学園祭内でどういうことをやるのか事前にシェアしておくことで参加者並びに発表者の皆様にスムーズな参加を促すための紹介エントリです。 今回のコンテンツの紹介をします。 今回は2 days!! 今回は2日開催します。土曜と日曜日、土曜日がNodeSchoolを中心としてワークショップ形式のコンテンツです。日曜日がNode学園祭のキーノート形式のコンテンツです。 これまで1dayだけで濃縮させて実施してたんですが、さすがに無理があると思ったので2daysに分けることにしました。 1st day まず、初日は dots で開催します。NodeSchoolや NodeDiscussionや CodeAndLearn 等、ワークショップコンテンツが豊富に配置されています。
Node Interactive Europe とは Node.js が Linux Foundation の傘下に入ったのですが、その Linux Foundation の支援を受けて開催される非常に大きなカンファレンスの1つです。アムステルダムで行われました。 とにかく濃い4日間で、今回は Node.js の発表あり、アンカンファレンスあり、Collaborators Meetupありで面白かったです。 First Date (Node Interactive) 初日、カンファレンスにはbreakfast/lunch がついていて、クロワッサンとスムージーがおいしい。 Node Foundation Opening Talk by Mikeal Rogers Node.js のこれまでとこれからを表したまとめ的な話。 Node.js はサーバーだけじゃなくて、フロントエンドにも活用され
現在開発中のシステムにリアルタイムな処理があり、そこで socket.io を使おうかなと思ってて、そういう折にタイムリーにもこの辺りの記事がタイムラインで出てきたのでメモ代わりに自分の意見を残しておく。 blog.jxck.io qiita.com socket.io が提供してくれているもの 「ブラウザとサーバ間のプロトコル」という観点で見ると socket.io は WebSocket を基本として繋がらなかった時に XHR Long Polling や polling といった形式の代替手段を提供してくれるもの、という位置づけ。 一方で「ライブラリ」という観点で見ると socket.io はリアルタイムアプリケーションを作る際に必要になる処理をまとめて実装し、クライアントとサーバ間での EventEmitter として抽象化してくれているもの、という風になる。 もう少し噛み砕いて言
さて、 Node.js のエラーハンドリングは難しいと言われてますが、 2016年現在、つまりNodeの v4 とか v6 が主流になり、 Promise が基本的な処理として採用されている状況ではどうでしょうか。ちょっと考えてみます。 一応これの補足です。 qiita.com TL;DR 未だに難しい。ただし、 Promise で改善されている。async-await や zone まで来たらかなり楽になる。 あと、 unhandledRejection が uncaughtException よりも酷いことにならないので、大分マシになっている。 Node.js のエラーハンドリングの難しさ まず JavaScript には同期と非同期のエラーハンドリングのやり方があります。前者は所謂 try-catch による方法、後者は callback を使って第一引数で実現する方法や emit(
やりたいこと 最近娘が生まれて二ヶ月経過し、そろそろ笑ったりするようになりました。今回のテーマは娘が笑った瞬間を逃さずにカメラで撮影する事です。ちなみにこういう子どもをネタにして行うハック、僕はこれを『親バカハック』と呼んでます。 TL; DR Intel Edison でカメラをセット、一定のタイミングで撮影しつつ OpenCV で粗く笑顔認識させてから Google Cloud Vision API で表情解析 笑顔だと判定された画像を Slack で飛ばして画像をいつでも見れるようにする。 かわいい笑顔が撮れたので最高でした。 ハードウェアセットアップ Intel Edisonを手に入れたのでそれを使って作ります。Edison は Arduino 拡張ボードなら普通のUSB web camera 対応しているので、それをただぶっさして使います。 Intel Edison はSDカード
書こう書こうと思いながらこのタイミングまでのがしてしまいました。 今一番 Node.js の中で hot な discussion の一つと言えるでしょう、『ES Modules が Node.js の中でどうなるか』です。 ES Modules 現況 ES2015 が発刊されてそろそろ一年です。 ES2015 にある機能は Node.js v6でも 93% 程度カバーされています。モダンブラウザでも大体が90%を超えています。しかし、 ES Modules だけはまだどのブラウザも実装しきれていません(kangax compat table は ES Modules は省かれてます)。 そもそも ECMAScript 2015 自身で定義されたのは構文だけなので、構文はともかく、どうやってモジュールを取ってくるかという Loader の部分がまだ決まりきっていません。 https://w
さて、とうとう皆さん待望の Node.js v6.0 がリリースされました!次のLTS候補です。LTSになるのは2016年の10月からの予定です。v6 の LTS 期間は明示化されてないですが、ルールに照らし合わせれば、LTSになってから 2年半がサポート期間なので、おそらく 2019年4月まではサポートされます。 Node v6.0.0 (Current) | Node.js Node.js v6.0 の主な変更点 ES2015 support の改善 module load性能の改善 Buffer API の new Buffer() コンストラクタの廃止 (セキュリティ上の理由から) ES2015 support の改善 やっぱりこれが一番大きな変化ですね。 node.green を見てもらえればわかるかもしれませんが、 ES2015 のサポートがこれまでは 58% だったのが 96
次のページ
このページを最初にブックマークしてみませんか?
『from scratch』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く