Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
VueConf USでのさまざまな発表 今年の3月に VueConf US が開催されました。最近になってビデオが公開されて初めて知ったこともあるので本記事ではその紹介をします。 いろいろ面白いトピックがあるのですが、特にVueコアチームのGuillaume Chauさんによるパフォーマンス改善テクニックはまじかーという感じだったのでここにまとめたいと思います。 "9 Performance Secrets Revealed with Guillaume Chau" プレゼン動画: http://www.youtube.com/watch?v=5B66qer8cZo スライド: https://slides.com/akryum/vueconfus-2019#/ デモサイト: https://vue-9-perf-secrets.netlify.com ソース: https://githu
<?php class Detail { private $message; public function __construct(string $message) { $this->message = $message; } public function getMessage(): string { return $this->message; } public function setMessage(string $message) { $this->message = $message; } } $d1 = new Detail("hello"); echo "オブジェクトを変数に代入してもコピーにはならない。\n"; $d2 = $d1; echo "clone でシンプルなクラスのオブジェクトをコピーできる。\n"; $d3 = clone $d1; echo "d2 のオブ
はじめに 自分なりに検証したメモに近いので、あんまり役に立たない記事です。 まとめ func 副作用ありの場合にコンパイルエラーになってくれる。 ただし、仮引数がポインタ(varやptr)や、参照型(ref)の場合は、この仮引数を変更しても検知はしてくれない。 not nil 指定した型にnilを代入される可能性がある場合にエラーになる。 func 及び noSideEffectプラグマ 公式マニュアルは以下のとおり。(Google翻訳さん) 要するに副作用がないと定義しているのに、副作用があった場合はコンパイルエラーを出してくれる機能の模様。 noSideEffectプラグマは、副作用を持たないようにproc / iteratorをマークするために使用されます。つまり、proc / iteratorはそのパラメータから到達可能な場所のみを変更し、戻り値は引数にのみ依存します。そのパラメー
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Slack Bot をサーバーレスで運用したい、という需要、それなりにあると思います。 ここで Slack Bot と呼んでいるのは、例えば、こういうのです。 https://github.com/saken649/NameThinking https://github.com/saken649/NameThinkingLambda /ntcamel ユーザー名を取得する と打ったら、getUsername と返してくれる、そんなのです。 これを行うには、Slack API の Slash Commands という機能を使いま
個人的にはいいと思ったんだけど訳あって消えた天才を偲ぶ的な、 若しくは実力はあるんだけど今の所あんまり流行ってない言語を推していく的な記事です。 どれがどっちとははっきり言いません。 D ポストC++として2001年にWalter Brightによって設計された。 関数型プログラミングをサポートしていたり、UFCS(Unified Function Call Syntax)を採用していたり、 某Go言語然りなんか違うマスコットキャラがいたりと十分に人気爆発しそうな雰囲気を漂わせていたが 、ver1.0までモタモタしているうちにライバルのC++などに機能を次々と模倣され、優位性を失ってしまった。 foo(bar(a)) // が a.bar().foo() /* として呼び出せる。割と最近の言語で見かけるが多分Dがオリジナル。 メソッドチェーン的なのがしやすくて気持ちがいいが、 クラスにメソ
React v16.6 から利用可能になったReact.lazyならびにSuspenseを早速使用してみました。 この機能の嬉しいところは非同期処理時におけるコンポーネントの扱いが非常に楽になるということです。 レガシーな実装方法 この機能が追加される以前は非同期で処理を行う際にローダーを表示して処理が終了したら結果を画面に表示するといった実装する時に、以下のような方法を採用していました。 処理中かどうか判断するステート isExecuting を用意する。 処理開始時にisExecutingをtrueにする isExecutingがtrueの時に「Please wait...」というテキストを表示 処理完了時に結果を表示 つまり、ステートが変更されたらコンポーネントをレンダリングするという、Reactの仕組みに則って実現させるという方法になります。 コードに起こすと以下のような感じです。
この記事について GW 暇だったので、かねてより気になっていた Nim と戯れてみました。Nim の言語機能の一部を簡単にご紹介します。 下記の記事とそのリンク先に、基本的な情報はほとんど載っていますので、まだの方はそちらもどうぞ。 至高の言語、Nimを始めるエンジニアへ - Qiita 本シリーズ記事では Nim by Example のお題に沿って進め、後半にはプラスαで、外部モジュールの使い方なども書く予定です。 本編(第1回)には以下の項目が含まれます。 - 変数 - 制御構文 - プロシージャ Nim の特徴 静的型付け、型推論あり インデントによりブロックを分ける(Python っぽい) C/C++, Objective-C, JavaScript へコンパイル可能 C/C++, Objective-C のライブラリをインポートして使える 変数宣言: const, let, v
概要 React Tokyo with ZEIT に参加してきました。 カンファレンスの内容を自分なりに理解した範囲で残しておきます。 自分の理解不足により正確に表現できていないところも多々あると思いますので、参加していらっしゃった方がもしご覧になっていたらどうかご指摘お願いします。 発表内容 1. SPR(Serverless Pre Rendering)について Guillermo Rauch氏 (from ZEIT) staticが良い! 計算(computing)させるとどうしても遅い 静的(static)なものは速い キーワードとなるのは「キャッシュ(cache)」 キャッシュすることでビルドはめっちゃ速くなる staticはstaticでしかない。動的(dynamic)なデータでレンダリングしたい 単純なtypoを修正するだけでもデプロイには時間がかかる そこで、Serverl
RFC5322で定義されているメールアドレスの書式を完全にサポートすることは簡単ではありませんが、適当な正規表現を紹介してOKとする記事があとを絶ちません。 HTML5には input[type=email] という要素があり、メールアドレスの書式チェックをクライアントサイドで行えるようになっています。このチェックでは、下記の(Perl5の記法にならった)正規表現を使っています。 /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ 注釈に この要件は電子メールの構文を定義するRFC5322に対して 意図的に違反 (willful violation) している。 とあるように、仕様を完全に満足する正規表現ではありませんので、電子メールヘッダを解析するような本格的な用途に対しては不十分ですが、WEBサ
$ffi = FFI::cdef(" typedef unsigned int time_t; typedef unsigned int suseconds_t; struct timeval { time_t tv_sec; suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; int gettimeofday(struct timeval *tv, struct timezone *tz); ", "libc.so.6"); $tv = $ffi->new("struct timeval"); $tz = $ffi->new("struct timezone"); var_dump($ffi->gettimeofday(FFI::addr($tv), FFI::addr($tz)
// $x*2を返す関数 $mul2 = fn($x) => $x * 2; // 使い方 $mul2(3); // 6 が、なんかV2として復活してました。 しかも今回は提案者として重鎮Nikitaが参戦しています。 NikitaはPHPのコア開発者のひとりで、記憶に新しいところではプロパティ型指定を作った人です。 既にコードもできていてプルリクが出されています。 しかしRFCの提出が2019/03/12で、投票は2019/04/17開始・2019/05/01終了です。 なんでそんなスケジュールきつきつなのだ。 RFC Arrow Functions 2.0 Introduction PHPの無名関数は、単純なことしか行わない場合でもやたら冗長になる場合があります。 使用する変数を毎回手動でインポートしなければならないなど、構文に定型句が多いためです。 このせいで、簡単なクロージャですら
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 本記事で紹介しているサービスの公式Twitterアカウントができました → @jslounge_info はじめに potato4d こと花谷拓磨です。 普段は ElevenBack という屋号のもと、フロントエンドを中心としながらも、デザインやサーバーサイドなどをも含めて作業することが多いのですが、屋号での活動の一環として、 JSLounge という渋谷で活動するハンズオン団体の運営を行っています。 その JSLounge にて過去に開催したハンズオン資料を入手できるサイトを構築することとしました。 通常、ハンズオンとなればその場でメ
3.4以前では、型付をするのにas assertionでLiteralTypeを使う必要があり面倒でした。が、TS3.4から登場したas constによってreduxの型付はとても手軽になりました。 まずActionCreatorを作ります。このときtype属性にas constを付けるよりオブジェクトにas constを付ける方がすべての属性がreadonlyになるのでオススメします。 const increment = (payload: number) => ({ type: 'increment', payload, } as const) Action型を作るのは以下のような型定義が必要になります。やっていることは単純でそれぞれのActionCreator から ReturnTypeで戻り値の型を取り出しそのUnion型を作ります。AnyAction は必須ではないですが、 ty
大量のメソッドを保有し、数千、数万行単位にぶくぶく膨れ上がった巨大クラス。別名「神クラス」とも「大きな泥団子」とも呼ばれる、長大で複雑で密結合で極めて変更が困難なアイツ。 そんな巨大クラスの退治に有効な、ドメイン駆動設計を基本思想とする「役割駆動設計」を紹介致します。 解決したい課題、狙う効果 数千、数万行単位の巨大クラスの登場を抑止する。 小さくシンプルな構造に落とし込み、堅牢で変更容易性の高い設計へ昇華させる。 例1:筆者をモデリング 分かりやすくなるよう、まず私を例にモデリングしてみます。私は以下のような特徴があります。 IT企業の従業員 家族がいる(妻, 子供) 趣味でゲーム制作している ダメな設計 何も考えずに人クラスとして設計すると、よく以下のような構造になりがちです。 従業員として仕事をする、父親として家族サービスする、趣味としてゲーム制作する、それぞれのメソッドが備わってい
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに、の前に陳謝 要は、オブジェクトや配列の一部を変更するだけなら変数と紐づくものは変わらないし、再代入すると変わっちゃうってだけで、JSに参照渡しはないみたいです。数値でも文字列でもオブジェクトでも配列でも! ネタ記事としてお楽しみくださいませ。 っていうか、↓この記事を読んだ方がええわ!!! JavaScriptに参照渡し/値渡しなど存在しない ↓あとワイ自身も訂正記事を書いたからよろしくやで! 3歳娘「パパ、もう参照渡しの話はやめて?」 はじめに 値渡しと参照渡し。 この2つの言葉、プログラミングを勉強したことがある方なら聴い
はじめに 普段のようにトゥイッターしていたらタイムラインにステキ拡張が流れてきたので、布教のためにバーっと紹介記事を書いてみる次第。 Rainbow CSV Rainbow CSVって何? VSCodeでCSVを扱いやすくするためのステキ拡張 便利でステキな機能をいくつも持っている とにかくヤバイ(語彙) Rainbow CSVの何がヤバイの? ①CSVが読みやすくてヤバイ ちょうどいいCSVが無かったので、適当にポケモンのCSVデータを生々しく開いてみた。 CSVの見た目ってこんなのだよね。日本語項目はともかく、数値が連続している箇所は「あれ、この"49"ってどの項目に対応してるんだっけ…?」みたいな混乱が起きて発狂しがち…。 しかし、このファイルをRainbow CSVに通すと…なんということでしょう! ヘッダー項目とデータ項目にカラフルな色が付き、項目の種類が一発でわかるようになって
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Fringe81 アドベントカレンダー2017の14日目ですね。 近頃は覚えたことを復習するために、娘が話している体で一人二役の会話をしています。 娘は今日でちょうど生後4ヶ月になりました。 傍から見たら延々独り言でヤヴァいやつですが、自宅でしかやってないので今のところ大丈夫です。 そんなわけで、最近ちゃんと知ったIEEE754の浮動小数(0.1を10回足すと1にならないやつ)について娘と会話してみたいと思います。 説明を分かりやすくするため細かい説明などは端折っているのでご了承ください。 「おとーしゃんおとーしゃん。コンピュータはどう
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Javascriptの歴史 Javascriptといえば,2016年現在,Webのフロントエンドには欠かせない技術となっているが, そういえば,昔はJavascriptが使われているWebページはごてごてしてて重く, ネットを使うときはブラウザのJavascript機能を切っていた気がする. いつからこうなったのか? ちょっと調べてみた. (参考サイト) http://www.kogures.com/hitoshi/history/javascript/index.html http://www.slideshare.net/badat
Google Cloud Next ’19でKnativeベースの新サービス Cloud Runが発表されました。 https://cloud.withgoogle.com/next/sf Cloud Functionに代表されるGCPのServerlessは、HTTPをトリガとする場合、Go言語ではhttp.HandlerFunc 型をサポートしてやる必要がありました。 これはこれで便利なのですが、じゃあ別プラットフォームで可動している何らのFramework入りGoサーバーをCloud Functionに移行しようとする際、改修は少々入ってしまうので、移行計画なんかを立ててる間にめんどくさくなってきます(えっ) 素直にGAE使えとかGKEとかあーあー聞こえない Knative Knativeの詳しい説明は、下記に譲りまして Welcome to Knative | Knative Ku
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く