JavaScript関連のことを調べてみた

JavaScript関連のことを調べてみた
目次

画像のドット抜けを解消するアルゴリズムを考える。

今回は画像のドット抜けを解消する
アルゴリズムを考えてみたいと思います。
完成品は下記の URL で公開しています。

[https://uni928.github.io/SephirothImageDotFix/](https://uni928.github.io/SephirothImageDotFix/)

ドット抜けのある画像を
このサイトで修正してみた所
ある程度解消できている事が確認できます。

また、このアルゴリズムは
ノイズ削除のように元の画像から
乖離していないと思います。

***

今回紹介するアルゴリズムについて

今回紹介するアルゴリズムは
以下の内容になります。

~~~
全てのピクセルに対して
左右が同じ位の色で自身のみ大幅に異なる場合に
自身を左右の平均の色に修正します。

例えば左右のピクセルが赤で
自身が青ならば異常と判定して
自身を赤にします。

この作業は上下も行います。
~~~

つまり連続する 3 点を見て
端の 2 点が同じような色で
中央だけ左右と乖離しすぎている場合に
異常と判定する

というのがこのアルゴリズムになります。

このアル

元記事を表示

JavaScriptで蟻本 動的計画法 重複組み合わせ

# 概要
アルゴリズムを学習をした際の記録を投稿します。
今回は蟻本p67動的計画法の重複組合せについてです。

# 問題

“`
n種類の品物があり、i番目の品物はai個あります。異なる種類の品物同士は区別できますが、同じ種類の品
物同士は区別できません。これらの品物の中からm個選ぶ組み合わせの総数を求め、Mで割った余りを答えなさい。

入力
n = 3
m = 3
a = [1,2,3]
M = 10000

出力
6
“`

# コード部分
“`javascript
//
/**
* pp67 重複組み合わせ 
* @param n {Number} 品物の種類
* @param m {Number} 選ぶ個数
* @param a{Array} i番目の個数
* @return {Number} 組み合わせの総数
*/
const cal = (n,m,a) =>{
let dp = new Array(n + 1).fill(null).map(() => new Array(m + 1).fill(0));
for(let

元記事を表示

小さなGPUでのエンジニアリング。自動的にFPSを計測し内蔵GPUのレンダリングパフォーマンスを探るゲーム。

![スクリーンショット 2024-09-04 053217.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/eac78ecd-d880-abf8-d1c9-c8f76686bff2.png)

![スクリーンショット 2024-09-04 053945.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/869b7107-c319-1fbd-b310-2488b3cd8471.png)

![スクリーンショット 2024-09-04 054110.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/d3b670f4-a448-9208-e838-b3617b23bba4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

小さなGPUでのエンジニアリング。数値シミュレーションからAIへ。

https://qiita.com/tetsutakamurata76/items/449c6f3f2086a963b041

##### GPT-2: ショートストーリー: 「数値からaiへ」数値のaiは、aiが人間に与える影響を数値で表し、数値がaiに与えている影響の量と、人間のaiの数値との差をaiによって表します。 数値はaiが行う数値計算のアルゴリズムによって、人間が計算した数値を、人間が行う計算方法によって計算しますが、この数値を計算するアルゴリズムは「数値」と「ai」の2種類があります。 「aiによる数値処理」は、「数値による計算」に比べて、精度が格段に向上しています。 例えば、ある数値にaiが行った数値の結果を「計算結果」として表示しますと、「計算結果は、計算式によって数値として表されます。」というように

#### GPT-4: ショートストーリー: 「数値からAIへ」
東京の夜が深まるころ、都会の喧騒から少し離れた小さなアパートメントの一室で、田中健一はパソコンの前に集中していた。彼は熱心なプログラマーで、物理シミュレーションの数値計算を行う仕事をしていた。画

元記事を表示

WebAssembly で同じコードを独立して動かす

WebAssebmly では同一のモジュールの複数のインスタンスが作成できます。これを利用すれば、グローバル変数をそれぞれのインスタンスで独立して利用することができます。

:::note info
シリーズの記事です。

1. [Emscripten の基本的な使い方とグルーコード](https://qiita.com/7shi/items/70ec93b683c0a1bcef6f)
2. [Emscripten と WASI](https://qiita.com/7shi/items/0cedc2a55c8ca0bb7538)
3. WebAssembly で同じコードを独立して動かす ← この記事
:::

# グローバル変数を含む例

次のような C のコードを考えます。

“`c:global.c
#include
#include

EMSCRIPTEN_KEEPALIVE
void test() {
static int n = 1;
printf(“%d\n”, n++);
}

int main()

元記事を表示

CodeWars オススメ問題 #2

# はじめに

個人的に好きなアルゴリズム学習サイト「CodeWars」の問題をシェア。

週1くらいのペースで、全10回を目指す予定。

:::note
CodeWarsはいいぞ!の紹介は[こちら](https://qiita.com/kohki_takatama/items/2ae2808b931e943262b8)

CodeWarsの始め方は[こちら](https://qiita.com/javacommons/items/7c473cda7825ab99e08c
)
:::
# オススメ問題

https://www.codewars.com/kata/550f22f4d758534c1100025a/javascript

### 例
「東西南北に移動する時、無駄な移動を省け」という問題です。

「無駄な移動」とは、「北に行って南に行く」等です。
ただし、「北に行って東に行って南に行く」は「無駄な移動」ではありません。
“`
[“NORTH”, “SOUTH”, “SOUTH”, “EAST”, “WEST”, “NORTH”, “WEST”]

-> [West]

[

元記事を表示

【個人開発】Qiitaの週間レポートアプリを作りました

# はじめに

技術記事を書くのが趣味の たま と申します。

**Qiitaの週間レポートを送ってくれるアプリを作りました!**

公式のサービスがありますが、自分なりにカスタムしたいときは使ってみてください。

:::note warn
※サービスとして公開はしていませんが、コードは公開します。
:::

# 完成品
:::note
![スクリーンショット 2024-09-03 19.41.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/e2e4ff39-15ba-30ed-be5d-b8640d72dbc1.png)
:::
# きっかけ

きっかけは「しずかなインターネット」の月間振り返りレポートです。

振り返りと、ちょっとした達成感を得られるのが推しポイントです。

# 環境

| 環境 | 具体名称 |
|:-:|:-:|
| 動作環境 | Google Apps Script |
| 言語 | JS / HTML / CSS |
| API | Qiita AP

元記事を表示

Enter押下と日本語IMEの不愉快な関係を解消する

この世界は「Enter」を押して確定するテキストフィールドで溢れています。そしてその多くが、日本語IMEの部分確定のために押し下げられたEnterを誤認して、入力中のテキストを確定してしまいます。
今日私は、Reactで作っているアプリで同じ目に遭い、(GPTに聞いて)解消することができました。

特に難しいことも新しいこともしていません。Composing中はEnterを無視しているだけです。

“`tsx
import React, { useState } from “react”;
const [isComposing, setIsComposing] = React.useState(false);

const TreeView: React.FC = ({
const handleKeyDown = (event: {
stopPropagation: () => void;
key: string;
}) => {
event.stopPropagation();
if (event.key ===

元記事を表示

Emscripten と WASI

Emscripten は WASI に準拠した WebAssembly を出力できます。その挙動を確認します。

:::note info
シリーズの記事です。

1. [Emscripten の基本的な使い方とグルーコード](https://qiita.com/7shi/items/70ec93b683c0a1bcef6f)
2. Emscripten と WASI ← この記事
3. [WebAssembly で同じコードを独立して動かす](https://qiita.com/7shi/items/34f7d4693bd4b16d2df3)
:::

# WASI

WASI は WebAssembly System Interface の略で、WebAssembly がシステムとやり取りするためのインターフェースです。WASI は WebAssembly がブラウザ以外の環境で動作するための仕様で、POSIX に似た API が提供されています。

https://wasi.dev/

WASI に準拠したバイナリが実行できる処理系がいくつかあります。

– [Wasmtime]

元記事を表示

JavaScript における Object の列挙順は保証されない

## はじめに
今回、自身の担当するプロジェクトにおいて不具合が見つかり、その要因が 「Object の列挙順は定義順になる、というのを前提としたコードを書いていた」ことにありました。
あまりちゃんと考えずにこうしていたのですが、この認識は誤りです。
これについて少し自分でも動作を確認してみてまとめました。

なおここで保証する・しないというのは ECMAScript の仕様上、保証されるかどうかというコンテキストでの表現であるとご理解ください。

## 例
どういうことなのかを簡単に例示します。

Node: `v20.8.1`

“`ts
const obj = {
3: ‘3’,
1: ‘1’,
9: ‘9’,
5: ‘5’,
}

// { ‘1’: ‘1’, ‘3’: ‘3’, ‘5’: ‘5’, ‘9’: ‘9’ }
“`

宣言時は key の順が `3, 1, 9, 5` となるように宣言しているのですが、参照すると `1, 3, 5, 9` の順番になってしまっています。
これが `3, 1, 9, 5` となる前提で順

元記事を表示

【JavaScript】DOM チートシート

## はじめに
以下の教材でJavaScriptのDOMについて勉強したので、勉強したことをチートシートとして残すことにしました

https://www.udemy.com/course/the-web-developer-bootcamp-2021-japan/

## DOMの取得
### ID名から取得
– `document.getElementById(“ID名”);`
指定したID名と一致する要素を取得
“`html:index.html

“`
“`javascript:app.js
const container = document.getElementById(“container”);
“`
### クラス名から取得
– `document.getElementsByClassName(“クラス名”);`
指定したクラス名と一致する**最初の要素**を取得
“`html:index.html
リンク

元記事を表示

StimulusとTailwind CSSでa11yを考慮したキーボード・インタラクション全部入りアコーディオンを実装する

StimulusとTailwind CSSを用いて、アクセシビリティを考慮しつつ、キーボード・インタラクションを全て含んだアコーディオンを実装してみたいと思います。

## アコーディオンとは

> アコーディオンは、インタラクティブな見出しが垂直に積み重ねられたものです。それぞれの見出しには、セクションの内容を代表するタイトル、抜粋、サムネイルが含まれています。 見出しは、ユーザが関連する内容のセクションを表示したり隠したりできるように、コントロールとして機能します。 アコーディオンは、一般的に、複数のコンテンツのセクションをシングル・ページに表示するとき、スクロールの必要性を軽減するために使用されます。
>
> [3.1 アコーディオン(表示/非表示機能を伴ったセクション) | WAI-ARIA オーサリング・プラクティス 1.1](https://waic.jp/translations/2019/NOTE-wai-aria-practices-1.1-20190207/#accordion)

テキストの改行が多いスマホサイトなどでよく見かけるイメージ

元記事を表示

React19 RCさわってみた

## はじめに

こんにちは、株式会社コズムでフロントエンドエンジニアをやっている山田です。

普段の業務ではNext.jsをゴリゴリ使っていますが、Reactにどうやらメジャーアップデートが到来するようなので、本リリース前にその新機能に触れてみることにしました。

## 新機能

React19で追加される機能はフォーム関連の機能が中心となっています。また、Sever ComponentsやServer Action機能が追加されたことは印象的です。今回は追加された機能群の中でも、”useOptimistic” hookを使って簡単な画面を実装してみようと思います。

## useOptimisticとは

楽観的なUIの更新を行う新たなhookらしいです。つまり、非同期的な処理を行う際に、予測される処理後の結果をUIとして「楽観的に」表示しておいて、実際の処理結果が帰ってきた際に改めてその値に置き換える、という実装を簡潔に行うことのできるhookです。それでは実装を見てみましょう。

まず、formの状態を扱うstateを用意します。ここではApp配下にcommentというstat

元記事を表示

TypeScriptを実行する2つの方法【トランスパイル/tsx】

# はじめに

初学者向けです。

今回はTypeScriptを実行するための方法として、

– JavaScriptにトランスパイルしてから実行
– tsx(もしくは ts-node)を使用して直接実行

の2種類を紹介します。

# 概要

– TypeScriptとは
– 実行する方法
1. 【手作業】JavaScriptにトランスパイルしてから実行
2. 【簡単】tsxを使用して直接実行

# TypeScript とは

かなり簡単に説明するとTypeScriptはJavaScriptに型がついたことで安全な開発ができるようになった言語で、AltJSの一種です。

そしてTypeScriptはそのままの状態では実行できず、基本的にはJavaScriptに変換(トランスパイル)してから実行します。

# 実行する方法

## 1. 【手作業】JavaScriptにトランスパイルしてから実行

まずはJavaScriptにトランスパイルして実行する方法です。

実際に簡単な動作環境を構築していきます。

:::note warn
※動作環境の構築にはnode.j

元記事を表示

【JavaScript】ABC369まとめ(A~D)

AtCoder Beginner Contest 369

https://atcoder.jp/contests/abc369

A~Cの3完(40分)でした。
577perfでレートは728->714(-14)です。
D問題、まさかの添字ミスでバグりまくり大敗しました。
今回はA~Cとコンテスト後にACできたD問題についてまとめます。

# A – 369
https://atcoder.jp/contests/abc369/tasks/abc369_a

解説は場合分けでしたが、場合分けする気力が湧かなかったのでSetでゴリ押しました。要は、
– $A$と$B$の中で小さい方に$|A-B|$を引いた数
– $A$と$B$の中で大きい方に$|A-B|$を足した数
– $A$と$B$のちょうど真ん中の数(ただし整数の場合に限る)

の三種類の候補があり、同じ数字だった場合ダブルカウントしないというだけのことです。このような要件にはハッシュセットが便利です。

“`js
function Main(input) {
input = input.split(“\n”).map((l

元記事を表示

Emscripten の基本的な使い方とグルーコード

WebAssembly (WASM) は、ウェブブラウザで動作する低レベルのアセンブリ風言語です。C/C++/Rust などの言語で書かれたコードを、ウェブ上で高速に実行することを可能にします。

Emscriptenは、C/C++ コードを WebAssembly にコンパイルするためのツールチェインです。WebAssembly へのコンパイルだけでなく、それを処理するための JavaScript のグルーコードと、ブラウザで実行するための HTML ファイルを出力します。

今回は WebAssembly には深入りせず、グルーコードに焦点を絞って、実行環境や JavaScript との連携を調査します。

本記事は Claude 3.5 Sonnet の出力をベースに編集しています。

:::note info
シリーズの記事です。

1. Emscripten の基本的な使い方とグルーコード ← この記事
2. [Emscripten と WASI](https://qiita.com/7shi/items/0cedc2a55c8ca0bb7538)
3. [WebAssemb

元記事を表示

小さなGPUでの算法術。忘れ物をしたマリオをルイージが追いかける。スプラインの類似度計算をTensorFlow.jsを用いてGPUで高速にマリオの軌道予測並列計算。

![スクリーンショット 2024-09-02 191601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/0aaa9bbe-cc7f-cd25-1574-336dbfabf422.png)

### 衝突の理
東京の小さなオフィスビルの一角、青白い蛍光灯の下でキーボードのクリック音が響く。夜遅くまで働くのが日常のプログラマー、山田達也は、深夜のカフェインに頼りながらコードと向き合っていた。彼は、かつて子供時代に夢中になったゲーム「スーパーマリオブラザーズ」の新しいプログラムに取り組んでいた。

プロジェクトのテーマは「忘れ物をしたマリオをルイージが追いかける」というシンプルなものだが、その背後には高度な計算と物理法則が隠されていた。山田は、マリオがジャンプし、走り、そしてピーチ姫を救うために次々と冒険を繰り広げる中で、彼の軌道を正確に予測するアルゴリズムを考案していた。

スプライン関数による軌道のデータベース化
「マリオもルイージも物理的な存在である以上、瞬間移動はできない」と

元記事を表示

【AWS】S3バケットへシークレットキーを渡さずにファイルをアップロードしてもらう方法

# こんな時どうする?

### ケース1
:::note info
自分が管理するS3バケットに対して、他の人にファイルをアップロードしてもらいたい
:::
– 相手からファイルをもらって自分でアップロードする?
– その人のために新しくアクセスキーとシークレットキーを発行する?

### ケース2
:::note info
SPAなどでフロントエンド側からS3バケットへファイルを直接アップロードしたい
:::
– フロントエンドからバックエンドへ一旦ファイルをアップロードして、サーバーで受け取ったファイルをS3へアップロードする?

サーバーサイドのバリデーションが必要な場合は有効な方法ですが、サーバーに負荷がかかってしまいます。

どちらのケースでも他の人やフロントエンド側にシークレットキーを渡さずにアップロードしたいものです。

# 注意
:::note warn
この記事で紹介している方法は、署名バージョン2です。
2014年1月30日以降の新しいリージョンでは署名バージョン4のみがサポートされるため、それらのリージョンへのリクエストは署名バージョン4で行う必要が

元記事を表示

奥儀。小さなGPUでの算法術。3Dテンソル算法のパフォーマンス。画像テンソルの内積算法術。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/0f9ea344-484e-59f5-a673-90030d55b343.png)

ショートストーリー:「未来を紡ぐコード」
東京のプログラマ、加藤拓也は、夜の東京の喧騒から少し離れた静かな部屋で、一心不乱にキーボードを叩いていた。彼は次世代の動画生成AIモデルの研究に取り組んでおり、その最前線で活躍するプログラマだ。今日の彼の目標は、彼の開発した新しいアルゴリズムを使って、数学的な美しさを視覚化するアニメーションを作り上げることだった。

拓也の最新のプロジェクトは、3次元テンソルの計算を利用して、視覚的に魅力的なヒートマップを生成することだった。彼のコードは、正弦波と余弦波の複雑なパターンを組み合わせたもので、それぞれが異なるテンソルとして表現される。このテンソルたちは、未来の動画生成AIにおける「可能性の断片」だ。

ある晩、拓也は深夜のコード作成に没頭していた。彼のコンピュータの画面には、青い光が反射するテンソ

元記事を表示

KING OF TIMEのMyレコーダーの誤操作を防止する【拡張機能】

不必要なボタンを削除しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/d2b0b92b-9b4f-e9f3-21f3-6c92bcba3b6c.png)

出勤する前は、出勤ボタンだけが表示されます。
出勤した後は、休始ボタンだけが表示されます。
休始した後は、休終ボタンだけが表示されます。
休終した後は、退勤ボタンだけが表示されます。
退勤した後は、何も表示されません。

# インストール方法

Tampermonkeyに下記コードを貼り付けます

“`js:kot.user.js
// ==UserScript==
// @name Hide KoT Buttons
// @namespace http://tampermonkey.net/
// @version 2024-09-02
// @description try to take over the world!
// @author You
// @

元記事を表示

OTHERカテゴリの最新記事