ターニングポイントさん!?

タグ: プログラミング Page 1 of 4

【JavaScript】ブラウザ標準APIでInflate/Deflate/gzipするのとStreamのはなし

◆結論

Compression Streams API – Web API | MDN (mozilla.org)

例えばdeflateの解凍だけを関数にしたら以下のとおり。

export const inflate = (data: ReadableStream): Body => {
  const decompressedStream = data.pipeThrough(new DecompressionStream('deflate'));
  return new Response(decompressedStream);
};

export const inflateBlob = (data: Blob): Body => {
  const decompressedStream = data.stream().pipeThrough(new DecompressionStream('deflate'));
  return new Response(decompressedStream);
};

export const inflateArrayBuffer = (data: ArrayBuffer): Body => {
  const resp = new Response(data);
  if (!resp.body) return resp;
  const decompressedStream = resp.body.pipeThrough(new DecompressionStream('deflate'));
  return new Response(decompressedStream);
};

‘deflate’を’gzip’にすればgzipだし、DecompressionStreamをCompressionStreamにすれば圧縮できるし。

上記はTypeScriptなんで、JavaScriptで使おうと思ったら「:」の型指定を消して差し上げろ。exportも不要なら消せ。

◆いきさつ

【TypeScript】nestしたオブジェクトのプロパティにインデックスでアクセスする

◆結

前提として、型安全で引いてくるのは限度がある。

例えばあるオブジェクトの”piyo.a”の値をとりたいときは以下の感じ。

const a = {
  hoge: "",
  piyo: {
    a: "text",
    b: 100,
  },
};

const getValue = (s: string, item: object) =>
  s.split(".").reduce<unknown>((p, c) => p?.[c as keyof typeof p], item);

const b = getValue("piyo.a", a);

この形を取らざるを得なくなったら設計を見直したほうがいい。何かおかしいことをやろうとすると、こういったおかしいコードを書かされるはめになる。

【JavaScript】BlobをCanvasに書き込んだりCanvasをBlobにしてダウンロードしたりPNGを合成したり

メリークリスマス🎅

JavaScriptとPythonは他の言語と比べたらググって出てくる情報がホントに劣悪だよねStackOverflowですラドベントカレンダー、1日目の記事です。(全一日)

◆結論

TypeScriptですが。

const b = new Blob();
const c = document.createElement("canvas");

const bitmap = await createImageBitmap(b);
c.width = bitmap.width;
c.height = bitmap.height;
c.getContext('2d')?.drawImage(bitmap, 0, 0);

いいコードを書けない人も居るかもしれない

ちょっと心おれるわ。誰しも修練次第でいいコードを書けるようになると思っていた。ちょっと考え甘かったかもしれん。

いずれもっとちゃんと書くけど、つまり、「コードのヤバさ」を感じられない人がいる。

「とっちらかってるなー」とか、「いまオレ読めねぇコード書いてんなー」とか、「これ負荷やばいなー」とか、思うじゃないですか普通。そこんところの感覚が無いというかなんというか。

Visual Studio CodeでCascadia Codeフォント使え

Microsoftくん渾身のTerminal&エディタ向け等幅OSSフォント「Cascadia Code」を、Visual Studio Codeで使用する手順。

◆Cascadia Codeをダウンロードしてくる

Windows Terminal(※2020年現在プレビュー版)を使ってる人は、Cascadia Codeが既にインストールされているだろう。Winキー押して「font」って入力して「フォント設定」を開けば確認できる。Windows Terminalに紐づいてフォントの自動更新をしてくれるから便利。

  • microsoft/cascadia-code
  • Cascadia.ttfをクリック
  • 落ちてくるんで、ダブルクリックとかする。
  • 「インストール」ってボタンが出てきたらいいなぁ。
    少なくともWindowsなら出てくると思う。他のOSは知らん。

◆Visual Studio Codeのフォント設定

プログラミングのふとした楽しさ

外部から連携されてくるデータで、下記のようなものがあった。

  • 数値
  • 下2桁が秒
  • 下3桁以上が分

これを秒として解釈せにゃならん。つまり「100」が連携されたら、それは「60秒」を表現している。「101」が連携されたら「61秒」。

「なにそれ」って言いながらも変換メソッド書いたろと思って、まず、どうしようかと思った。「あーーーーーーーー🤤」と呻きながら20秒考えた。

☆ モニターの まえの みんなも かんがえて みよう!

▼クソコード こうげき !

クソコードが好きで、たまーに「クソコード」でググる。今の会社はそういうウンコにお目にかかれないから、しばらくご無沙汰だった。

昨日久々にググった。

こんな記事があったんですね。

一行目で

Short Answer:批判は人格否定だからです。

と書いてあって、「違うね?」と思った。俺が思う「燃える理由」は次の通り。

変数とか定数とか関数とか引数とか戻り値とか、それら周辺のはなし

◆はじめに

夢と絶望の魔境、プログラミングの世界へようこそ!ぼくはプロレタリアプログラマー人間だよ!気さくにプロプロ人って呼んで欲しいな💖

今日は君たち先天性下等生物どもにプログラミングの基礎を教えるよ!絶対に逃がさんぞ!君もプログラマーという名の家畜になり下がろう!🐷🐷🐷🐷🐷🐷🐷🐷

…はい。えーじゃあやっていこう。

ある言語についてじゃなくて、プログラミングするうえで登場する概念的なところの説明をしていく。初心者向けに。

語彙の英訳を記載しておく。エラメを読む力を養え。

プログラミング必修化のはなし

小学校から高校までで、プログラミングというものが必修となるらしい。よきかなよきかな。これでプログラマーがたくさん増えて日本のIT技術力は跳ね上がってGDPが急上昇の貧困解消で人口増加したらチョベリグ社会到来かつ快刀乱麻の抜山蓋世で仙才鬼才が千客万来して森羅万象バッチグーさ。

とはならないよね。

同期処理と非同期処理のはなし

いまから「同期処理」と「非同期処理」について説明する。きいていけ。

適当にググって出てくる記事どもの説明が本当にわかりづらくって困る。頭にきたから自分で説明してみる。そういう記事です。

図があったほうが分かりやすいんだけど面倒だから文章で話す。

◆処理

「処理」というものについて考える。そして、処理の事を以下「タスク」と呼称する。

例えば下記のタスクを考える。

Page 1 of 4

Powered by WordPress & Theme by Anders Norén