今回は最近取り組んでいる、 JavaScript が読み込まれる前であっても「ちゃんと」 Web Application が動作するように作る話をします。 Server Side Rendering における注意点と対策 BFFを使ってServer Side Rendering をすることに数年前から取り組んでいます。 まずはSSRをやる上での注意点と対策について紹介します。 SSRをすることはSEOのためだと思われがちですが、個人的にはSEOのためにしているわけではなく、 First View を向上するため(特に First Meaningful Paint を向上するため)にやっています。 First View SEOとSSRに関しては Google が最近出したこの記事の SEO Considerations 節が詳しいです。ここでは説明しません。 SSRをしない、Client S
『入門JavaScriptプログラミング』は、ES2015以降に導入された新しい機能を学ぼうとしているJavaScriptプログラマーのための解説書です。 既にJavaScriptでプログラミングが行える方が対象ですが、新しい機能を用いてより効率的に開発したい方には特に役立つ1冊。無駄なく必要な項目だけに絞って解説されているので、リファレンスのように活用できるのではないでしょうか。 本書の構成(抜粋) 本書は複数のユニットにわかれている。各ユニットでは、関数や非同期コーディングといった特定のテーマを取り上げる。各ユニットは特定のトピックを扱うレッスンにわかれており、各レッスンはウォーミングアップで始まる。ウォーミングアップは、そのレッスンを始める前にギアを入れることを目的として設計されている。 各レッスンには、次のセクションへ移動する前にそのセクションの中心的な概念を理解できたかどうかを確
Over the years, I’ve noticed patterns in how I tend to approach component APIs and building out applications and libraries. The following is a collection of thoughts, opinions, and advice for defining component APIs that are meant to be more flexible, composable, and easier to understand. None of these are hard-and-fast rules, but they’ve helped guide the way I think about organizing and creating
Web authors often need to know when a particular element on a page becomes visible. The element could be an ad or a video whose viewability we want to compute. Or we might want to defer loading an image until it is visible. A common way to solve this problem is using polling, periodically computing the position of an element with respect to the viewport. However, polling is inefficient, wastes bat
経緯 aタグにtarget="_blank"をつけると危険だよと言われたので、忘れないうちにメモメモ。 危険な理由 「リンクを開いた先のページでのJavaScriptによって、開いた元のページを操作できてしまう」 大抵のブラウザでは、 target=blank_によって"別タブで開かれたページ"が手前に表示され、 "元のページ"は裏に残る。 "別タブで開かれたページ"にて、 が実行されると、裏で"元のページ"が画面遷移される。 オリジンが違ったとしても、リンクをたどってきたユーザを任意のサイトに誘導することが可能。 ※ window.openerは、"別タブで開かれたページ"を開いた"元のページ"への参照を返すらしい。。。 window.opener フィッシング詐欺攻撃の例 リンクのへの rel=noopener 付与による Tabnabbing 対策 ESLint(eslint-plu
html で リンクを新しいタブ(やウィンドウ)で開かせたい場合、target="_blank" を指定するが、 この使い方には落とし穴があるらしい。 www.jitbit.com リンクを開いた先の javascript から、開いた元のページを操作できてしまうとのこと。 気になったので確認してみた。 悪用のパターン insecure.html が最初に開くページで、ここに target="_blank" なリンクがある。 このリンクを押すと new_window.html を新しいタブで開く。 この new_window.html に javascript が仕込まれており、元ページを操作されるという話。 具体的には window.opener.location="./evil.html" と実行すると、元タブは evil.html に遷移する。 実際試してみたのが ここ。 リンクを開
Google Chrome全盛の今、なぜSafariを使うのかWebブラウザはSafariを愛用しています。 SafariがWebブラウザの中で最も、AppleScriptからの操作に対応しており、それゆえ全ての動作を自動化できるからです。 自動化と言っても大したことはしていませんが ブログを書く時にテキストエディタで編集した文章をブログサービスの編集画面に入力する探しにくいダウンロードリンクを一発で探すだとかそういう用途に使っています。 些細な自動化であっても毎日するような行為ならば塵が積もってかなり楽になります。 それでそういった自動化スクリプトを作る時に、ネットに上げられている便利情報をいつもググっているのですが、流石に非効率かなと思い、まとめてみます。 URLを別のタブで読み込むSafari操作の基本のキ。 tell application "Safari" open locati
Nodeはインストールされているものとします。 npmについても利用したことがある前提で説明を進めます。 また、記事中ではES2015以降のJavaScriptを利用します。 まだあまり馴染みのない方には以下の参考書籍がオススメです。 速習ECMAScript6: 次世代の標準JavaScriptを今すぐマスター! 速習シリーズ 改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで Webpack で環境設定 はじめに SFA を利用した開発を行うためには、Webpack などのモジュールバンドルや Babel によるトランスパイルが必要です。後ほど紹介しますが .vue という独自拡張子・独自構成のファイルを使用するため、最終的には実行可能な JavaScript ファイルにビルドする必要があります。 本格的なバンドラーの設定作業は複雑なので、本来であれば
ポエムです。 自分の今の立場としては「Elm の人」ということになってるんだけど、どういう変遷でここまできて今どういうスタンスなのかっていうのはあんまり話す機会がない。だから整理のために考えてることを書いていくよ、というのがこの記事の趣旨。 非 Web の立場から そもそも自分は「Web 系」の出身ではない。新卒入社したワークスでは ERP パッケージを提供するのに画面を Web 技術で作ってるというだけで、別に SEO の順位を競ったり広告をどうという話ではないし、瞬時に画面が表示されないと離脱率が〜という話でもない。ただ、画面はとにかく複雑で設定項目とががうじゃうじゃある。 あと、学生時代に PC に触れたのが Windows で「黒画面なにそれ美味しいの?」くらいに GUI に染まりきってたというのがある。工学系の研究を効率化するために C# で GUI を作ってたら、なんかソフトウ
Intro 脆弱性の原因となる DOM 操作の代表例として elem.innerHTML や location.href などが既に知られている。 こうした操作対象(sink) に対して、文字列ベースの代入処理を行う際に、一律して検証をかけることができれば、脆弱性の発見や防止に役立つだろう。 そこで処理前の文字列に対し、処理後の文字列を安全であるとして明示的に型付ける TrustedTypes という提案がされている。 まだ未解決の部分が多い提案だが、現時点での仕様と実装を元に、このアイデアについて解説する。 WICG/trusted-types Intent to Experiment: Trusted Types Sink XSS などの原因となる DOM 操作として、 DOM に直接文字列を展開する処理がある。 element.innerHTML location.href scri
パラメーター調整用のJavaScriptライブラリ「Tweakpane」について、FlowからTypeScriptに全面移行したので、その理由と所感を。 3行まとめ業界におけるFlowのマイナーさ・不人気を憂い、調査も兼ねてTypeScriptへ移行してみた型の表現力自体はそれほど変わらず、周辺ツールのサポートも特に問題なし複雑だったパッケージの依存関係がシンプルになり、minify後のサイズも小さくなっていい感じJavaScriptと型JavaScriptは明示的な型を持たないプログラミング言語です。コードを気軽に書き捨てられる寿命の短い案件ならそれでも問題ないのですが、大規模かつ長期的に保守運用するプロジェクトには正直不向きでしょう。 JavaScriptに型を導入するための選択肢として挙がるのがFlowあるいはTypeScriptですが、それぞれアプローチが異なっています。 Flow
はじめに 対象者 JavaScript / Vue.js / PHP / Laravel の入門レベルの方、入門書を読んだあとに「何か作ってみたい」という方が、それぞれの知識を組み合わせて本格的なアプリケーションを開発できるようになることを目指しています。 上記のいずれかの知識がまったくない状態だとこのチュートリアルの内容は少し難しいかもしれません。チャレンジするのもいいですが、参考文献に挙げた市販の入門書か、関連記事のチュートリアルを先に読んでおくと理解しやすいと思います。 学べること Vue.js と Laravel を組み合わせて SPA を構築する方法 SPA におけるクッキー認証と CSRF 対策 Vue Router を使用した画面遷移 Vuex を使用した状態管理 Vue でのタブやローディング UI の表現 SPA におけるエラー処理 扱わないこと デザインと CSS コー
パラメーター調整用のJavaScriptライブラリ「Tweakpane」を一新しました。内面も外面もパワーアップしたTweakpaneが、さらに手軽に利用できるようになっています。 パラメーター調整用GUIの必要性UIのインタラクションやゲームのエフェクト、ジェネラティブアートなどの実装には、動きや表情を司るたくさんのパラメーターが隠れています。パラメーターの組み合わせ次第で無限のバリエーションが生み出せるので、少しでも綺麗な・気持ちのよい出力を得るために人類は日々調整を繰り返しています。 パラメーター調整は仕上がりの品質に大きく影響するため、できる限り多く試行したいところですが、時間は有限…。変更のたびにリビルド・リロードしていては非効率で、あっという間に日が暮れてしまいます。どうすればよいでしょうか? 例えば画面上にスライダーのようなものが存在していて、このGUIで数値パラメーターを微
<追記> appearのドメイン変更に伴い、使えなくなりました 恐らく新しいドメインでも対応しようと思えばできますが、美女の裏におじさんが見え隠れすると悲しくなることに気づいたので、やめておきます。 ------------------------ **エンジニアって、全体的に男が多いじゃないですか。**まぁそれはそれで気楽でいいんですが、毎日男だらけの職場で男たちを見ながら打合せやってると、なんかこう、たまには綺麗なものを見たいなーなんて思うわけですよ。 特にWeb会議で1対1で話してるときは、否応なく2人で向かい合ってしまうわけで。別に仕事にストレスがなくても、この相手が綺麗なお姉さんだったらなぁ…なんて思ったり思わなかったりなわけですよ。 じゃあ、**Web会議の相手を美女に変えてしまえばいいのでは?**ということで今回は、こんなものを作りました。 作ったもの Web会議の相手を美少
Learn JavaScriptThe easiest way to learn & practice modern JavaScriptLearn in an interactive environment. Read short lessons, take notes, and complete challenges directly in your browser. Try it out →Anonymous cookies are used to improve the quality of the course. Learn modern JavaScript (ES2015+) from scratch, and practice in an intuitive environment. The challenges are inspired by real-world
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く