ブックマーク / qiita.com/rana_kualu (23)

  • 【Bun】JavaScriptをC言語で書けるようになったよ - Qiita

    Twitterでは多くの質問が殺到しました。 「どうしてJavaScriptでC言語を書きたいんだ?」 これまで、JavaScriptからシステムライブラリを呼び出す方法は2種類がありました。 ・N-APIアドオンもしくはV8 C++ APIアドオンの利用。 ・emscriptenもしくはwasm-packでWASMにコンパイル。 What's wrong with N-API (napi)? どうしてN-APIではだめなのか。 N-APIはネイティブライブラリをJavaScriptから使えるようにする、ランタイムに依存しないC APIです。 BunとNode.jsはこれを実装しています。 N-API以前はV8 C++ APIを使っていましたが、Node.jsがV8を更新するたびに互換性の問題が発生する可能性がありました。 Compiling native addons breaks CI

    【Bun】JavaScriptをC言語で書けるようになったよ - Qiita
    yarumato
    yarumato 2024/11/06
    “JavaScriptからシステムライブラリを呼び出す方法。N-APIアドオンは面倒で遅い。WASMはシステムへのアクセスは難しい。新しく、JavaScriptコードの中でC言語ソースを呼び出してコンパイル可能に。ffmpeg.jsの変換を3倍高速に”
  • 【JavaScript】Idle Detection APIとかいう悪用以外の使い道がないAPI - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 2024/09/10にIdle Detection APIというAPIが更新されていました。 ステータスはDraft Community Group Reportです。 これはコミュニティによる提案であり、W3Cによる正式な勧告ではありません。 個人や団体レベルでも、とりあえずRFCを作ってみたり検討したりできる段階ということです。 以下はこの提案を管理しているGitHubから、このRFCの意義を解説したReadmeの紹介です。 User Idle Detection API このAPIでは、開発者はユーザがアイドル状態になったとき(キ

    【JavaScript】Idle Detection APIとかいう悪用以外の使い道がないAPI - Qiita
    yarumato
    yarumato 2024/10/16
    “Idle Detection APIはChrome94(2021)という相当古いバージョンから実装されているが、誰も知らない謎機能。セキュリティ・プライバシーを投げ捨ててるのでFirefox・Safariに実装される見込みは一切ありません。”
  • 【JavaScript】ネイティブで集合演算できるようになった - Qiita

    JavaScriptにはだいぶ前からSetオブジェクトがありましたが、何故か集合演算は全く定義されておらず自力で実装しなければなりませんでした。 その後、まあ不便だねってことでSet Methods for JavaScriptというproposalが提出されました。 実装は珍しくSafariが最も早く、2023/09/18のSafari17から対応しました。 その後2024/02/21にChrome122、そして2024/06/11にFirefox127で実装されたことにより、主要全ブラウザで集合演算が使用可能になりました。 複数環境で実装されたことから、無事ES2025としてStage4、つまり上がりになりました。 ということで使い方を紹介するよ。 Set.prototype.intersection() 要素と引数の、両方に含まれる値を返します。 new Set([1, 2, 3,

    【JavaScript】ネイティブで集合演算できるようになった - Qiita
    yarumato
    yarumato 2024/07/03
    “JavaScriptにあるSetオブジェクトは何故か集合演算が未定義だった。集合演算の自力実装自体は全く難しくなかったが、ようやく主要ブラウザで実装。 intersection(&) union(OR) difference(-) symmetricDifference(XOR) isSubsetOf(部分集合)”
  • 【JavaScript】ES2023の新機能 - Qiita

    ES2023その2 / ES2023 / ES2022 / ES2021 2023年一発目ということで、ES2023にFinished Proposalsとして取り入れられた機能を見てみましょう。 ちなみにFinished Proposalは「複数の実装が既に存在する」が前提なので、2023という名前にもかかわらず既に一部のブラウザで使用可能です。 というかES2023の新機能は全てのモダンブラウザで既に使用可能です。 ES2023 Array find from last 末尾からの検索です。 const array1 = [5, 12, 8, 130, 4]; console.log(array1.find(element => element > 10)); // 12 console.log(array1.findLast(element => element > 10)); //

    【JavaScript】ES2023の新機能 - Qiita
    yarumato
    yarumato 2023/01/04
    “既に使用可能です。 Node.jsもshebangを使えるがブラウザJavaScriptと同じソースを使い回せなかった。今後は、ブラウザJavaScriptでも先頭行の最初にある #! のみコメントとして扱う。”
  • 【Deno】Deno1.28「npm完全に理解した」 - Qiita

    Denoは先日v1.25で2022/08/25にnpm対応したぞーと発表したのですが、そのバージョンではExperimental npm support、あくまで実験的サポートであり、まだ実戦投入できる段階ではありませんでした。 そんなわけで実際に使えるのはまだまだ先だねえと思っていたのですが、2022/11/14に公開されたv1.28で早くもExperimentalが取れました。 はえーよ。 ということで以下は該当のリリースノートの紹介です。 Deno 1.28: Featuring 1.3 Million New Modules Deno 1.28を公開できたことをうれしく思います。 リリースでは、npmの互換性を安定させました。 すなわち、130万以上のnpmモジュールをDenoがインポートできるようになったことを意味します。 これによってPrisma・Mongoose・MySQL

    【Deno】Deno1.28「npm完全に理解した」 - Qiita
    yarumato
    yarumato 2022/12/24
    “Denoは先日v1.25で2022/08/25にnpm対応したぞーと発表したが、あくまで実験的サポート。2022/11/14に公開されたv1.28で早くもExperimentalが取れました。”
  • TypeScript 10年の歩み - Qiita

    TypeScriptは、2022/10/01に10周年を迎えました。 ということで、それを記念してMicrosoftの中の人が振り返りのエントリーを書いていました。 以下は該当の記事、Ten Years of TypeScriptの紹介です。 Ten Years of TypeScript 2022年10月1日は、TypeScript10歳の誕生日です。 10年前の今日、2012年10月1日に、TypeScriptは初めて公にされました。 The Early Days 初めてTypeScriptが表に現れたとき、それももっともなことでしたが、多くの否定的な意見がありました。 一部のJavaScriptユーザにとって、JavaScriptに型を強制する試みは冗談か邪悪な陰謀のように見えたかもしれません。 しかし、その試みには、多くのメリットがありました。 型チェックのおかげで、ファイルを保存

    TypeScript 10年の歩み - Qiita
    yarumato
    yarumato 2022/12/21
    “Microsoftの中の人による振り返りの英語記事を翻訳。AltJSの中で、TypeScriptは『JavaScriptの文法はそのままでちょっと追加するだけ』の敷居の低さで大成功。型なんか最初は全部anyでよい。気軽に導入こそがTSの理由だから”
  • Herokuの代替サービス30選、使ってみた参考記事リンク付き - Qiita

    先日Herokuの完全有償化が発表されて以降、蜘蛛の子を散らすようにHerokuからの脱出が図られています。 そんなわけで概ねHerokuの代替となりそうな無料サービスを紹介していきます。 ほとんどの代替サービスは完全無料というわけではなく、機能の少ない無料プランと高機能の有料プランが存在します。 有料化前のHerokuと同じということですね。 各サービスについて、実際に使ってみたという参考記事を貼っておくので、実際の使い勝手等はそちらを参照してください(他力願) Qiita内に使ってみた記事が見つからなかったサービスは、日では人気がないのだろうということで選外にしました。 また概要は、各サービスの説明やドキュメントに記載されているものです。 代替サービス一覧 FLy Flyはグローバルなアプリケーション配布プラットフォームです。 Turbokuを使えばHerokuアプリをFly.io

    Herokuの代替サービス30選、使ってみた参考記事リンク付き - Qiita
    yarumato
    yarumato 2022/10/26
    “Vercel、Deno Deploy、AWS Amplify、netlify、Cloudflare Pages、Firebase Hosting、Github Pages、Glitch” 既にVPSやレンタルサーバーに支払ってはいるんだよな。そこで立ち上げるかって話で。
  • 君のGitHubリポジトリをもう一段階上のレベルに引き上げよう - Qiita

    Original article:https://dev.to/eludadev/take-your-github-repository-to-the-next-level-17ge 以下はEluda( Twitter / Twitter語 / GitHub / dev.to )による記事、Take Your Github Repository To The Next Level 🚀️の日語訳です。 Take Your Github Repository To The Next Level 🚀️ 私はもうずいぶんと長いことGitHubを使っていますが、その過程において私は、完璧なGitHubリポジトリを作るためのガイドを集めてきました。 この記事は、そのガイドたちの集大成です。 それではさっそく始めていきましょう! Step 0. Make Your Project More D

    君のGitHubリポジトリをもう一段階上のレベルに引き上げよう - Qiita
    yarumato
    yarumato 2022/04/27
    “他の人があなたのプロジェクトを見つけやすくなるようにトピックを追加しましょう。プロジェクトに最適なネーミング。美麗なカバー画像をつける。ユーザを惹き付ける動画を置く。実用的な使用例を記載する。”
  • Braveはフォントを取得できないようにした。いっぽうChromeはフォントを根刮ぎ取得しようとしている。 - Qiita

    Braveフォントを取得できないようにした。いっぽうChromeフォントを根刮ぎ取得しようとしている。ChromeGoogleSecuritybraveブラウザフィンガープリント JavaScriptから、現在表示されているフォントを取得することが可能です。 仕組みを簡単に説明すると、フォントによって文字の横幅は異なるので、font-familyを変えてみてwidthが変わったらそのフォントがインストールされている、みたいな識別方法です。 つまり、フォントを表示させて、そのフォントが入っているかどうかをチェックすることで、ブラウザフィンガープリントになります。 Braveフォントを取得できないようにした How Brave defends against font fingerprintingの記事において、Braveフォントによるフィンガープリント防止について解説しています。 H

    Braveはフォントを取得できないようにした。いっぽうChromeはフォントを根刮ぎ取得しようとしている。 - Qiita
    yarumato
    yarumato 2022/04/23
    “Chromeはインストールされている全てのフォント名を取得するLocal Font Access APIというトンデモAPIを提案しています。たった数行のjsで、自作したテスト用フォントが入っている人を完全に特定可能です。”
  • Googleフォントを使うと犯罪になる - Qiita

    <link href="https://fonts.googleapis.com">って書くと罰金取られます。 以下はGerman Court Rules Websites Embedding Google Fonts Violates GDPRというニュースの紹介です。 German Court Rules Websites Embedding Google Fonts Violates GDPR ドイツのミュンヘン地方裁判所は、あるWebサイトの運営者が、ユーザの個人情報を人の同意なしにフォントライブラリを経由してGoogleに提供したとして、100ユーロの賠償を命じました。 Webサイトが原告のIPアドレスGoogleに無断で提供したことは、ユーザのプライバシー権の侵害に当たると判断しました。 さらに、Webサイトの運営者は収集した情報をその他のデータと突き合わせることで『IPア

    Googleフォントを使うと犯罪になる - Qiita
    yarumato
    yarumato 2022/02/09
    “ドイツの地方裁判所は、GDPR(EUの一般データ保護規則)に則り、IPアドレスをGoogleに無断で提供したのはプライバシー権の侵害で100ユーロ(13201円)の賠償を命じた。判決ではWebフォントはWebサイト側で保持を要求”
  • StackOverflowからのコピペをやめろ。今すぐにだ。 - Qiita

    Original article:https://dev.to/dotnetsafer/rip-copy-and-paste-from-stackoverflow-trojan-source-solution-4p8f その昔コピペできない文章というものがありました。 実際は単にフォントを変えているだけというものですが、人間の目に見える文字と実際の文字が異なることを利用した攻撃の一種と見ることもできます。 さて、最近になって似たような攻撃に関する論文が公開されました。 人間には見えない文字を織り交ぜることによって、一見問題ないコードが実は脆弱になってしまうというものです。 ただ論文は堅苦しいうえに長くて読むのがつらいので、具体的に何がどうなのかよくわかりません。 平易に解説している記事があったので紹介してみます。 以下はDotnetsafer( Twitter / GitHub / Web

    StackOverflowからのコピペをやめろ。今すぐにだ。 - Qiita
    yarumato
    yarumato 2021/12/29
    “StackOverflowだけではなく、あらゆる個人サイトや多くのSNS等でも可能な攻撃方法です。VSCodeでは2021/11に入った機能で制御文字(表示されないUnicode文字、文字の位置や順序方向を変更する)が強調表示され、一目でわかる”
  • 【Rome】RomeはJavaScriptをやめてRustにするってよ - Qiita

    RomeはLinterでありCompilerでありBundlerでありFormatterでありTesterでありMinifierであり…… ともかく、フロントエンドの統合ツールチェーンです。 これまでBabel、ESLintwebpack、Prettier、Jestなど様々なツールでバラバラに行っていた作業が、Romeひとつ使うだけで完結するようになるという、これまで何度再発明されてきたかわからない究極のフロントエンドツールです。 まあ、今のところ日での知名度はさっぱりなのですがね。 で、これまでRomeはJavaScriptで書かれていたのですが、これをRustで書き直すことが発表されました。 以下はRome公式サイトの記事、Rome will be written in Rustの日語訳です。 Rome will be written in Rust 🦀 RomeはJavaSc

    【Rome】RomeはJavaScriptをやめてRustにするってよ - Qiita
    yarumato
    yarumato 2021/09/28
    “Romeだけで、これまでESLint、webpack、Prettierなどでバラバラに行っていた作業が完結する。日本ではまだ知名度ない。JavaScriptで始めたのは参加しやすくするため。試作してRust移行で生産性が上がると確信。依存が減らせる”
  • Firefoxは危険なJavaScriptに対応しない - Qiita

    Firefox / Safari MozillaはMozilla Specification Positionsというリストを公開しています。 IETFやW3C、TC39などが提唱しているWeb技術に対して、Mozillaはどのように評価しているかという立ち位置を表明したものです。 あくまで現時点での評価であり、もちろん今後の仕様変更などに伴い評価は変わる可能性があります。 Mozilla's Positions Mozillaはどのように評価しているかの分類。 under consideration 評価の検討中。 important 優れた概念であり、Mozillaにとっても重要である。 worth prototyping 優れた概念であるが、プロトタイプを作成し、フィードバックを得て磨きをかける必要がある。 non-harmful 有害ではないが、良いアプローチではなく、取り組む価値

    Firefoxは危険なJavaScriptに対応しない - Qiita
    yarumato
    yarumato 2021/07/06
    “Web技術に対してMozillaがどう評価しているかリストが公開されている。有害と評価している技術を紹介。ネイティブアプリとWebアプリでデータをコピペ可能にする提案はネイティブアプリに攻撃可能という致命的リスク”
  • 【PHP8.1】PHPで交差型が使えるようになる - Qiita

    交差型は何かって一言で言うと型のANDです。 PHP8.0で型のORことUNION型が導入されましたが、これに続いてPHP8.1で交差型が導入されることになりました。 これでPHPでも型パズルマウント取れるようになりますね。 ということで以下はPure intersection typesの紹介です。 PHP RFC: Pure intersection types Introduction 交差型とは、型がひとつの制約ではなく、複数の制約を同時に満たすことを必要とする型です。 交差型は、現在のところ言語ネイティブには対応していません。 かわりにphpdocアノテーションを使用したり、型付きプロパティを濫用したりしています。 class Test { private ?Traversable $traversable = null; private ?Countable $countabl

    【PHP8.1】PHPで交差型が使えるようになる - Qiita
    yarumato
    yarumato 2021/06/08
    “PHP8.0でUNION型(型のOR)が導入されましたが、これに続いてPHP8.1で交差型(型のAND)が導入される。プリミティブ型の交差型たとえばint&stringは非対応。対応するのはインターフェイスとクラス public ClassA&ClassB $prop;”
  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
    yarumato
    yarumato 2021/03/18
    “てめえの血はなに色だ?問題。非同期処理にPromiseやawait、yieldを使い慣れた人に言わせると『どこか一カ所でもPromiseを返そうとすると、そのPromiseがいつ解決されるか分からないので、全体がPromiseを返すことになる』”
  • 過去の自分に教えなければならないVSCodeのショートカット - Qiita

    以下はVitor Paladini ( Twitter / GitHub / dev.to ) によるVS Code shortcuts that I would teach myself if I had a time machine with limited fuelの日語訳です。 VS Code shortcuts that I would teach myself if I had a time machine with limited fuel 「やあ俺だ。黙って聞いてくれ。時間がないんだ。」 「待って待って、お前誰だ。どうやって部屋に入ってきた。あとどうして俺そっくりなんだ。」 「俺は未来のお前だ。ここまで来たのは、特別にVSCodeのショートカットを教えるためだ。さあいくぞ」 「正気か?ロト6の番号でも株式情報でもなく、わざわざVSCodeのショートカットを教えにやってきた

    過去の自分に教えなければならないVSCodeのショートカット - Qiita
    yarumato
    yarumato 2020/08/26
    “「ファイルエクスプローラのマウスナビゲートも辞めて、使うのはCtrl+Shift+Sと矢印キーだけにするんだ。」 「こいつぁクールだ…」”
  • 【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita

    $user = null; echo $user->address->country ?? ''; PHPのプロパティは元よりnull安全なので、存在しないプロパティだろうがnullだろうがプリミティブ型だろうがいきなりプロパティを取り出せます。 取れない場合はE_NOTICEが発生しますが、??を使えば黙殺できます。 しかしメソッドはだめです。 echo $user->getAddress()->getCountry() ?? ''; // Fatal error: Call to a member function getAddress() // 1 if (method_exists($user, 'getAddress')) { if (method_exists($user->getAddress(), 'getCountry')) { echo $user->getAddres

    【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita
    yarumato
    yarumato 2020/07/21
    “人気の高水準言語、null安全オペレータの実装状況を確認してみます。13のうち8言語がnull安全オペレータを持っており、そのうち4言語は短絡評価します。 個人的にはメソッドチェーン書きやすいしかメリットないです”
  • JavaScriptの配列操作に役立つ13のヒントとトリック - Qiita

    以下はDuomly ( Webサイト / Twitter )による記事、13 useful JavaScript array tips and tricks you should knowの日語訳です。 Duomlyはプログラミング学習コースを提供しているWebサイトです。 ただランディングページにたいしたことが書いてないので、詳細はよくわかりません。 ここはもう少し書いておいてほしいところ。 13 useful JavaScript array tips and tricks you should know 配列はJavaScriptで最も一般的な概念のひとつであり、内部に格納されたデータを操作する手段は多数存在します。 配列はJavaScriptの最も基的なトピックであり、プログラミング学習パスの最初に学習するものだという前提のうえで、この記事ではあなたが知らないかもしれない、しか

    JavaScriptの配列操作に役立つ13のヒントとトリック - Qiita
    yarumato
    yarumato 2019/10/30
    “配列から重複した値を削除する方法、新しめの機能であるSet() 全ての要素を削除したい”
  • GitHubのスターは金にならない - Qiita

    Sizzyというツールがあります。 様々なサイズの画面を同時に表示し、レスポンシブレイアウトがどうなるかを一気に確認できるという便利なツールです。 スマホ向けWebサイトを開発している人なら、持っていると非常に便利でしょう。 参考:レスポンシブの確認ツール、後発だけに便利!スマホ・タブレットの主要なデバイスでの表示確認が同時にできる -Sizzy / 『Sizzy』様々なデバイスでのサイト表示を確認出来る便利サイト さてこのSizzy、元々無償のChromeエクステンションだったのですが、先日2019年7月に単独のアプリとして有償化されました。 一人あたり月5ドル(団体割引あり)のサブスクリプション制です。 以下は作者のKizte( Twitter、Medium、Webサイト )がその理由や経緯を綴った記事、GitHub stars won't pay your rentの日語訳です。

    GitHubのスターは金にならない - Qiita
    yarumato
    yarumato 2019/10/16
    “元々無償のChromeエクステンションが単独のアプリとして有償化(サブスク)。作者が経緯を綴った記事の日本語訳。 寄付リンクは常に表示->誰も寄付なんてしない。 利益を考えなくてもよいのは高校生までの考え方”
  • CSSを非同期ロードする最も簡単な方法 - Qiita

    CSS読み込みの<link rel="stylesheet">は同期なので、レンダリングブロックします。 どういうことかというと、CSSファイルの読み込み・パースが終わるまで画面描写が止まってしまいます。 これに対策する方法としてpreloadというものが策定されましたが、対応状況が微妙です。 2019年7月時点でもブラウザシェアが8割しかなく、Firefoxは当面対応するつもりがないようです。 とはいえ残り2割のためにloadCSSを突っ込んだりとか始めると末転倒感に溢れます。 全ブラウザ対応のためには、なんにしろ結局JavaScriptをこりこり書くしかない状況でした。 が、なんかすっごい簡単な対処法があったので紹介してみます。 以下はScott Jehlによる記事、The Simplest Way to Load CSS Asynchronouslyの日語訳です。 ちなみにSco

    CSSを非同期ロードする最も簡単な方法 - Qiita
    yarumato
    yarumato 2019/08/02
    “CSS読み込みのlinkタグは同期なのでレンダリングブロック(CSSファイルの読み込み・パースが終わるまで画面描写が止まる)。非適合メディアタイプをあえて指定してレンダリングブロックさせない。”