It’s a common pattern in the Rust ecosystem to have a function return self at the end in order to enable method chaining. For example: // Create, modify, and consume a `Foo` in a single expression. // So concise! Much ergonomic! Wow! consume( Foo::default() .chain() .chain() .chain() .chain() ); // Method definitions that make this possible: // ------------------------------------------- #[derive(
JavaやPHPの型システムはNominal Typing(公称型)と呼ばれ、クラス名の一致で型の互換性を識別する。一方のTypeScriptはStructural Typing(構造型)と呼ばれ、構造さえ同じなら互換性ありと識別する。 例えば、次のUserクラスとProductクラスは共通してname属性を持っており、同じ構造になっている。つまり、相互に互換性がある。従ってTypeScriptではコンパイルエラーにならない。 class User { name: string } class Product { name: string } let user: User = new Product() // コンパイルエラーにならない let product: Product = new User() // コンパイルエラーにならない TypeScriptでNominal Typingを
Mozillaが中心となってオープンソースで開発されている言語「Rust」の最新バージョン「Rust 1.31」がリリースされました。 そしてRust 1.31はこれまでのRust言語に対する破壊的変更によってRust言語を進化させる「Rust 2018 Edition」(以下、Rust 2018)の最初のリリースでもあります。 これまでのRustは「Rust 2015 Edition」(以下、Rust 2015)と呼ばれます。 Rust 2018では言語の破壊的変更が行われましたが、Rust 2018のコンパイルを行うにはオプトイン方式による設定が必要。デフォルトではRust 2015のコードをコンパイルするようになっているため、Rust 2015で書かれたユーザーのコードに対する互換性はRust 2018でも維持されるようになっています。 Rust 2018 Editionでは生産性の
今週はIVS CTOで金沢に来ています。私はもうCTOじゃないんだけど、ex-CTO枠っていうのがあってそれでの参加です。 昨日は前夜祭の二次会で居酒屋に行ったのですが、その時に「CTOの役割が広すぎてわけがわからん」という話があり、Amazon/AWS CTOのWerner Vogelsが2007年に同じような話をブログに書いていてその話をちょっとしたのでここでまとめを。 1. Infrastructure Manager ITインフラやセキュリティ、アプリ開発や保守に対して責任を持ちます。一般企業の情シスの統括みたいな役割です。 IT系スタートアップではこの役割でCTOと呼ばれることはあまりないでしょう。 2. Technology Visionary and Operations Manager ビジネス戦略を元に技術ビジョンを持って組み立てて実装します。アーキテクトに近い役割になり
FOLIO で フロントエンドチームリーダー 兼 プロジェクトマネージャー (PJM) をしている @pika_shi です.PJM としては,おまかせ投資 を今年の春から見ていて,11 月にようやくローンチしました. フロントエンドとプロジェクトというと,性質の違う 2 つのものを見ていると思われるかもしれません.自分も当初はそう思っていたのですが,時が経つにつれ,プロジェクトマネージャーの責務は BFF のアナロジーで考えられる ことに気づきました.今回はその話について書いてみようと思います. BFF (Backends for Frontends) はじめに,BFF について軽くふれておきます.FOLIO のシステムは 20~30 のマイクロサービスで構成されており,その前段に,これらをクライアントに適した形でアグリゲートする BFF を置いています.現在,Web 用の BFF と,
今年の 9 月あたりから、 Rust で Erlang の処理系を実装してみています。まともに試せるほど進んでないんですが、気分的に年内に一区切りつけたいので公開しておきます。リポジトリはこちら。 https://github.com/szktty/starlight みています、というのはもちろん思いつきだからです。なにぶん Erlang は適用分野がベリーハードなミッションクリティカルシステムしかなく、あらゆる性能やメリットが Erlang VM (BEAM) を超えなければ非公式処理系の用途はありません。 かといって最初から諦めてもいませんが、業務で Erlang に関わらなくなったら or 開発に疲れたら自然消滅すると思います。すでにわりと疲れている。 進捗状況「速くなるのか?」「軽量プロセスは?」などの疑問に興味津々の皆様、すいません。全然ご期待に応えられません。本当に同梱のごく
(この記事は2018年12月時点の情報を元に書かれています。) この記事は、PLAID Advent Calendar 19日目の記事です。 9/20–21に開かれたVue London以降、9/30のEvan氏によるブログポストや弊社プレイドもスポンサー協賛させていただいたVue Fes Japan 2018を含むイベントなどで、Vue.jsの時期バージョン(3.x)に関する様々な情報が発表されてきました。 既に各情報を見られた方にとっては今更な記事にはなりますが、現状把握と今後のためにざっと眺めてまとめてみました。 公表されている主な情報公開されている主要な情報をリストアップしてみました。 9/30: Plans for the Next Iteration of Vue.js11/3: Vue 3.0 Updates — Vue Fes Japan 2018 (Keynoteの動画は
この記事は レイトレアドベントカレンダー2018 20日目の記事です。 導入 Möller-Trumbore intersection algorithm レイの表現 三角形の内部に存在する点の表現 交差判定の式を導く 交差判定の式を解く 実装について 各レンダラー、ライブラリにおける交差判定手法 Cycles Embree LuxCoreRender Mitsuba pbrt-v3 PhysX まとめ 参考文献 導入 初めて自作レンダラーを書いたとき、初めて画面に球が表示された感動を今でも忘れることができません。 皆さんも初めてレンダリングしたのは球ではありませんでしたか?[要出典] しかし、現実は非情です。悲しいことに世の中の多くの3Dモデルは球ではなく三角形ポリゴンの集合として表現されます。したがって3Dモデルをレンダリングするためには、レイと三角形の交差判定は避けては通れない道とい
この記事は、WebGL Advent Calendar 2018 17日目の記事です。 WebGL採用されない問題 気づけばthree.jsもr99までバージョンが上がっており、歴史も長く認知度も非常に高いライブラリとなりました。しかし、実際に多くのサイトで使用されているかと言うとそうでもありません。そもそもWebGLを使用したサイトと出会うことも少ないです。なぜなのでしょうか? ① WebGLは難しい 皆さんご存知の通りWebGLを扱うには多くの知識が必要です。そもそも3DCGと関わりのないエンジニアにとってはハードルが高すぎます。筆者も元から詳しい方ではなかったので今もまだ勉強中です。。。しかしthree.jsの登場により、WebGLを簡単に扱えるようになりました。しかしWebGLを採用するサイトが爆増したわけではありません。 ② three.jsはファイルサイズが大きすぎる thre
はじめに 最近コンソール上で動くテキストエディタを作ったので、その中で得たノウハウなどを記事にしてみます。 作ったのはこちら https://github.com/hatoo/Accepted (Rustで競技プログラミングをするために作ったエディタなので興味のある方は使ってみてください!) ですが、この記事では新たに簡単なテキストエディタを作ってみたいと思います! https://github.com/hatoo/kiro 参考文献 Build Your Own Text Editor この記事で作るもの ターミナル上で動くテキストエディタ 日本語対応 モードレス 状態の管理が面倒そうなのでVimとは違いノーマルモード、インサートモードなどのモードがないエディタを作ります 要はターミナル上で動く「メモ帳」です Rawモード 普通にコンソールプログラムを作って動かしているときの様子を思い出
What makes a great API? Good API design is memorable and unambiguous. It encourages readable, correct and performant code, and helps developers fall into the pit of success. I call these design aspects “first order” because they are the first things a library developer tends to focus on. You might have to compromise on some of them and make tradeoffs but at least they’re always on your mind. Howev
Futureアドベントカレンダー6日目です。昨日は @shun_shushu さんでした。 マイクロサービスまではいかなくても、gRPCなり、Swaggerなりを使って、リッチなSPAのフロントエンドと、いくつかのプロセスに分割されたバックエンドでサービスを開発したい、というニーズはあると思いますので、今までやってきた開発の反省・良かったところを踏まえて、次やるなら絶対にこうする・実際にこうし始めた!というDocker活用案です。 フロント、バックエンドのサービスを種類ごとに書いています。好きなフロントエンドと、好きなバックエンドのレシピを組み合わせて、オリジナルのdocker-compose.ymlを作る、という感じで読んでいただけるように書いています。対象言語とかも増やしたいので、この記事自体、検証結果を受けてどんどん変わっていく予定です。 ソースコードは次のリポジトリに置いておきます
先日投稿した以下のエントリで、「使い方がわからない」という意見を多く頂いた。 mugi1.hateblo.jp マルチカーソル自体の操作方法は調べれば出てくるし、事例だけ紹介しとけばええやろ、と思っていたのだが、いきなり応用のサンプルを貼りすぎてわけがわからなかったらしい。申し訳ない。 せっかくなので、基礎から含め、どういったキー入力で上記のような操作を実現しているのかを紹介したいと思う。 🔥実践!マルチカーソル / 入門編 なおmac環境です。Windowsやその他環境の方は気合で調べてください。 また、言い訳臭くて申し訳ないが、私は普段はSublime Text Keymap and Settings Importerを使っており、SublimeTextっぽいキーバインドに変えて編集している。 一旦無効にしたうえでVSCodeデフォルトの状態で一通り調べて書いたつもりだが、もし違って
import { LLParse } from 'llparse'; const p = new LLParse('http_parser'); const method = p.node('method'); const beforeUrl = p.node('before_url'); const urlSpan = p.span(p.code.span('on_url')); const url = p.node('url'); const http = p.node('http'); // Add custom uint8_t property to the state p.property('i8', 'method'); // Store method inside a custom property const onMethod = p.invoke(p.code.store
TL;DR, 優先度の異なる複数の制約を同時に定義することで、静的な定義だけで動的な振る舞いを実現できる 動的な要素の少ない構造のビューはより堅牢である はじめに 読みやすくメンテナンスしやすいソフトウェアを作るために重要なことの一つは構造をシンプルに保つことです。 iOSアプリのビューは壊れやすいソフトウェアの代表ですが、できるだけシンプルに作ることで変化に強い、堅牢で壊れにくいソフトウェアにできます。 動的な要素が少ないということは、ビューがシンプルであるということの指標の1つと言えます。 この記事では下記に示すような、スクロールに合わせて伸び縮みするヘッダーを、動的な要素を無くし、Auto Layoutの静的な制約のみで実現する方法を解説します。 動的な要素とは、実行時におけるビューおよび制約の追加・削除、Frameや制約を更新することと、機種やスクリーンサイズ、標準UIコンポーネン
tl;dr: There are no silver bullets to web performance. Simple static pages benefit from being server-rendered with minimal JavaScript. Libraries can provide great value for complex pages when used with care. Netflix is one of the most popular video streaming services. Since launching globally in 2016, the company has found that many new users are not only signing up on mobile devices but are also
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く