タグ

ブックマーク / blog.jxck.io (7)

  • 技術書籍をシンタックスハイライトする話 | blog.jxck.io

    Intro 「連載するけど、代わりにコードはハイライトさせてほしい」 それが Web+DB Press 編集長に俺が出した条件だった。 技術書籍のシンタックスハイライト エンジニアは普段から、エディタ上でも、リポジトリ上でも、ブログ上でも、何かしらハイライトされたコードを見ている。 そんなエンジニアに向けて書かれた技術書籍でありながら、書籍のコードがハイライトされているのはみたことがない。 「技術書籍がシンタックスハイライトされてないのは、出版社の怠慢だ」 と、割と気で思っていた。そして、今でも思っている。 特にページを跨ぐような長いサンプルコードを、単色で印刷されても、正直読む気になれない。 白黒だからしょうがないと思われているかもしれないが、白黒だとしても、文字の太さ、濃淡、フォントの微妙な使いわけなどで、かなり見やすくすることができる。 今はやっていないが、このブログでも、印刷用の

    技術書籍をシンタックスハイライトする話 | blog.jxck.io
    nilab
    nilab 2023/05/04
    技術書籍をシンタックスハイライトする話 | blog.jxck.io
  • JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io

    Intro textarea などに入力された文字数を、 JS で数えたい場合がある。 ここで .length を数えるだけではダメな理由は、文字コードや JS の内部表現の話を理解する必要がある。 多言語や絵文字対応なども踏まえた上で、どう処理するべきなのか。 それ自体は枯れた話題ではあるが、近年 ECMAScript に追加された機能などを交えて解説する。 なお、文字コードの仕組みを詳解すること自体が目的では無いため、 BOM, UCS-2, Endian, 歴史的経緯など、この手の話題につき物な話の一部は省くこととする。 1 文字とは何か Unicode は全ての文字に ID を振ることを目的としている。 例えば 😭 (loudly crying face) なら 0x1F62D だ。 1 つの文字に 1 つの ID が割り当てられているのだから、文字の数を数える場合は、この ID

    JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io
    nilab
    nilab 2020/11/23
    「JS が内部で保持している UTF-16 の配列を、元の Unicode の Code Point の配列に戻せば良さそう」
  • ローカル開発環境の https 化 | blog.jxck.io

    Intro Web の https 化が進み、それに伴って https を前提とする API も増えてきた。 そうした API を用いた開発をローカルで行う場合、localhost という特別なホストを用いることもできるが、それだけでは間に合わないケースも少なからずある。 localhost を https にするという方法もあるが、そのように紹介されている方法には、いくつか注意すべき点もある。 この辺りの話を、直近 1 ヶ月で 3 回くらいしたので、筆者が普段使っている方法や注意点についてまとめる。 特に推奨するつもりはない。 Update chrome の --host-rules について追記 localhost での開発の注意点 例として https://example.com にデプロイする予定の ServiceWorker を用いたアプリがあったとする。 開発をローカルで行う場

    ローカル開発環境の https 化 | blog.jxck.io
    nilab
    nilab 2020/07/01
    “localhost で開発し確認していても、実際にデプロイすると permission 周りの挙動の違いや、 mixed contents の見落としなど、様々な差異に気づく”
  • Nullish Coalescing と Optional Chaining | blog.jxck.io

    Intro JS における null/undefined の扱い改善するための 2 つの機能が提案されている。 Nullish Coalescing Operator (stage 3) Optional Chaining Operator (stage 3) いずれも Stage 3 に進み、実装も始まっているので、現時点での解説を行う。 Nullish Coalescing 対象が null/undefined だった場合にデフォルト値を返したいといった場合を考える。 function main(option) { option.param = option.param || 'default' } main({param : 'hello'}) しかし、この場合は null/undefined 以外にも param が 0, false, '' など falsy な値の場合も上書きさ

    Nullish Coalescing と Optional Chaining | blog.jxck.io
    nilab
    nilab 2019/09/27
    Nullish Coalescing と Optional Chaining | blog.jxck.io
  • Private Class Field の導入に伴う JS の構文拡張 | blog.jxck.io

    Intro ECMAScript の Private Class Field の仕様策定と各ブラウザの実装が進んでいる。 これにより、従来の JS にはなかった Class の Private フィールドが使えるようになる。 提案されている構文や、挙動について解説する。 Class Field Declaration まず前提として、現状の Class の フィールドはコンストラクタで定義する必要がある。 例えば count フィールドを持つ Counter クラスを定義した場合、以下のようになる。 class Counter { constructor() { this.count = 0 } increment() { this.count ++ } display() { console.log(this.count) } } const c = new Counter() c.in

    Private Class Field の導入に伴う JS の構文拡張 | blog.jxck.io
    nilab
    nilab 2019/05/04
    「Private フィールドには # が接頭辞として付く」「これまで Class には Private がなかったため、公開を意図しないフィールドには _ をつけるなどの運用でカバーされてきた」
  • AMP HTML 対応 | blog.jxck.io

    Intro Google が推奨する仕様である AMP HTML に、このブログを対応した。 言いたいことは色々あるが、とりあえず非常に難しかったため、その対応方法や感想などを残す。 Update 以下の記事が出たので、古かったフォーマットのアップデートと JSON-LD によるメタデータの提供 に対応した。 Google モバイル検索が Accelerated Mobile Pages に対応しました AMP 対応 2016.02 版 Accelerated Mobile Pages ACCELERATED MOBILE PAGES PROJECT タイトルは識別しやすいよう AMP HTML としたが、実際には AMP という仕様(方針)があり、 HTML 以外にも手を入れている。 AMP は、特にモバイル向けに 静的コンテンツ を最適化し、表示を高速化することを目的としている。 実際

    AMP HTML 対応 | blog.jxck.io
    nilab
    nilab 2016/03/18
    AMP HTML 対応 | blog.jxck.io
  • JSON-LD と Open Graph で構造化メタデータ対応 | blog.jxck.io

    Intro サイトのメタ情報を整理するため、 HTML のメタタグの整理、 JSON-LD による schema.org 対応、 Facebook, Twitter を主とした Open Graph 対応を実施した。 これにより、既に AMP 対応していたサイトが、 Google のモバイル検索でキャッシュの対象となる(クロール待ち)。 Meta Tag まず HTML の仕様に従い、基的なメタ情報を <meta> により定義した。 https://dev.w3.org/html5/spec-preview/the-meta-element.html 各要素は、テンプレート生成時に利用した値を埋め込んでいるため、 サイトの Atom RSS-feed などと同じ値である。 <meta name=author content=Jxck> <meta name=description

    JSON-LD と Open Graph で構造化メタデータ対応 | blog.jxck.io
    nilab
    nilab 2016/03/18
    JSON-LD と Open Graph で構造化メタデータ対応 | blog.jxck.io
  • 1