JavaScript関連のことを調べてみた2022年09月10日

JavaScript関連のことを調べてみた2022年09月10日

Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較

# Python

https://qiita.com/Morio/items/10d33f6dbb0845ae5038

# Ruby

https://qiita.com/Hashimoto-Noriaki/items/f406bcfb00e79e3937d0

# PHP

https://qiita.com/miriwo/items/2c2aa77d5de66c074ec5

# Java

https://qiita.com/takahirocook/items/05bfe37bb4ba64f3a78e

# JavaScript

https://qiita.com/kaz7991/items/7f98cc17c4df9ab6a009

# Perl

https://perlzemi.com/

元記事を表示

#React + fullcalendar + Steinでスプレッドシートをカレンダー化する

## Glideで予約表作ったら紙以下と言われたので仕方なくReactでつくってます

部内の会議室予約が紙ベースで嫌だったので、電子化することにしました。
あまり時間をかけたくないと考え、ノーコードツールの[glide](https://www.glideapps.com/)で作ったのですが、操作感がいまいちだったため、**紙以下**と言われてしまいました
頭にきたので**React + fullcalendarで一から作ってやろう**と言うのが前回記事でした。

https://qiita.com/watanabe-tsubasa/items/12892b4711bf1526051e

## スプレッドシートのデータをfullcalendarのフロントに反映させる

glideで作ったアプリはスプレッドシートをデータベースとして利用していた都合上、同じスプレッドシートのデータを読み込んで、Reactで作成したフロントに反映させることを考えました。
今回は[Stein](https://steinhq.com/)を用いて、スプレッドシートをAPI化して、データを反映させていきます。

元記事を表示

paizaラーニングレベルアップ問題集Aランクレベルアップメニュー JavaScript編リバーシの操作(縦横)

リバーシの操作(縦横)
https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_pincerattack_step2
を解いてみました。

“`javascript:javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);
//出力する盤面の行数 H , 列数 W と石を置くマスの y , x 座標である Y , X
const [H, W, Y, X] = lines[0].split(” “).map(Number);
//盤面を作る
let board = lines.slice(1,H + 1).map(line => line.split(“”));
//盤面の ( Y , X ) に石を置き
board[Y][X] = ‘*’;

//石を置いたY行目について、Y固定
//石を置いた左側、盤面の中を調べる

元記事を表示

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript編 裏返せる可能性(縦横)

裏返せる可能性(縦横) (paizaランク C 相当)
https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_pincerattack_step1
を解いてみました。

解答例1
盤面を作りながら`!`,`*`,`.`を置いていく。
“`javascript:javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);
//出力する盤面の行数 H , 列数 W と石を置くマスの y , x 座標である Y , X
const [H, W, Y, X] = lines[0].split(” “).map(Number);
//盤面を作る
let board = [];
//行について
for (let i = 0; i < H; i++) { //列について let board_j = []; f

元記事を表示

Viteで本番と開発環境で変数を変えたい

## 本番と開発環境で叩くAPIのURIを変えたいなぁ
そういうときってあるよね。.envでなんとかするんだったけど、どうするんだっけな〜と毎回ググることになるのでここにメモ。

## 手順
1. .env.devと.env.productionファイルを用意する
2. 変数を“`VITE_API_URL=https://*****/**/api“`とする
3. 使いたいところで“`export const API_URL = import.meta.env.VITE_API_URL;“`とする
4. devとbuildのときに変数を渡す

.env.devと.env.productionファイルを用意する
変数を定義する

“`text:.env.dev
VITE_API_URL=https://dev-server***.jp/api
“`

“`text:.env.production
VITE_API_URL=https://prod-server***.jp/api
“`

注)VITE_という名前をつけておかないとvite側で.envの変数を認識してくれ

元記事を表示

viteでbuild時にconsole.logを削除する

## build時に自動的にconsole.logを削除してほしい

そもそもeslintでconsole.logはwarnにしているわけですが、手っ取り早くlogを取りたいときもあってたまにconsole.logを使ってしまいます。

そんなときはこれ!

## vite-plugin-remove-console

“`sh
npm install vite-plugin-remove-console -D
“`

## configはこうだ

“`TypeScript:vite.config.ts
import { defineConfig } from ‘vite’;
import removeConsole from ‘vite-plugin-remove-console’;

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
removeConsole()
]
});
“`

これでデバッグ用のconsole.logを削除できます。まあdebugとか使ったほう

元記事を表示

サーバー送信イベント

# 概要
サーバーからクライアントにpush送信するイベント。

本来のクライアントがリクエストしてレスポンスを貰うという、
クライアントで発火したイベントタイミングでの通信とは違い、
サーバー側のタイミングで通信を行う(イメージ)。

# 流れ
1. クライアントがリクエストURLを渡して`EventSource`オブジェクトを生成する
2. サーバー側は上記リクエストを検知しpush配信を開始する
3. クライアントはpush配信を監視し、サーバーからのメッセージを待ち受ける

# 実装
## サーバー側
MIME タイプ `text/event-stream` で応答するように実装する。
(この記事では詳しくは説明しない)

## クライアント側
### EventSourceオブジェクト生成
これによりサーバーにpush配信を開始させるリクエストを送る。

“`typescript
const evtSource = new EventSource(requestUrl);
“`

### サーバーからのメッセージ受け取り
push配信を受け取ったタイミングで`onmes

元記事を表示

paizaスキルアップ問題集 Aランクレベルアップメニュー 最大公約数 STEP: 2 べき乗の計算 (paizaランク C 相当)を解いてみた

paizaスキルアップ問題集 Aランクレベルアップメニュー 最大公約数
STEP: 2 べき乗の計算 (paizaランク C 相当)
https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_calculation_step2

をJavaScriptで解いてみました。

ランクC相当ですが、難易度は難易度: 2230 ±30程度となってました。
どこが難しいのか試しに解いてみましたが、入力値1000000000000の時にうまくいきませんでした。

C++やPython3、Rubyの模範解答を参考に、以下のように解答しても、やはり入力値1000000000000で、間違いがありました。
“`javascript:JavaScript
//75点のコード
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);

let N = Numbe

元記事を表示

ActionCable ルーム別チャット

## やりたいこと
複数のチャットルームが存在し、チャットルームごとにメッセージを表示する。
## やるべきこと
これを実現するには「ユーザーがどのチャットルームに属しているか」という情報を、ActionCableの各処理に渡さなければいけない。
## 前提
リアルタイムチャット機能は既に実装済み。
## 用語
ルーム別チャットを実現するにはActionCableに関する用語やデータの流れを理解しておいた方が捗る。この図説付きの記事が分かりやすかった。([https://qiita.com/ksugimori/items/d5f4630858eeb56d9da5](https://qiita.com/ksugimori/items/d5f4630858eeb56d9da5))
## 手順
1. チャットルームにid属性を持たせる
2. ビューから特定のユーザーとチャットルームの情報を取得する
3. 取得したユーザーとチャットルームのパラメータをサーバー側に送る
4. パラメータをもとにデータを取得する
5. パラメータをもとにストリームを作る
6. ストリームを指定してブロードキャスト

元記事を表示

JavaScriptの基礎知識メモ1

## 定数
– 再代入不可の変数
“`js
//再代入不可
const name = “sato”
“`
## グローバル変数
– アクセス範囲の制限がない
“`js
var name = “sato”

if(name){
var name = “soma”
console.log(“local”,name) //soma
}

console.log(“global”,name) //soma
“`
## ローカル変数
– ifやforの外からアクセス出来ない
“`js
let name = “sato”

if(name){
let name = “soma”
console.log(“local”,name) //soma
}

console.log(“global”,name) //sato
“`
## テンプレート文字列
– 文字連結を”+”を使わずに出来る
“`js
let name = sato
let text = hello

console.log(name + “,” + text)

console.log(`

元記事を表示

129.130.Macrotask,Microtaskについて

## Macrotask,Microtaskとは
非同期処理のキューをさらに2分して、タスク処理の順番をさらに制御しておく
## 内訳
#### 1.マクロタスク
*setTimeout
*setInterval
*MutationObserver
#### 2.マイクロタスク
*Promise
## Macrotask,Microtaskで覚えておくべきこと
 1. マイクロタスクはマクロタスクよりも優先される
 2. マイクロタスクはすべてのジョブを終了してからマクロタスクにうつる
 3. マクロタスクは1つのジョブがおわったときに再びマイクロタスクに移る

#### 例
“`js:例題
new Promise(function promise(resolve) {
console.log(‘promise’);

setTimeout(function task1() {
console.log(‘task1’);
resolve();
});

setTimeout(function task1() {

元記事を表示

128.Promiseチェーンと並列処理

# Promise.all
## 並列処理
つまり、非同期処理に当たり同時に処理を行うこと
具体的には
1.関数の呼び出しを配列で一気に渡す
2.同時に処理を行う
これを応用して、以下のように-秒おきに関数を実行することができるようになります。
## setTimeout()をー秒おきに実行するには?
setTimeout()で-秒ごとに実行するには?
setTimeout(実行関数,インクリメント*-秒おき)になる
## 反復について
Promise.all() メソッドは入力としてプロミスの集合の反復可能オブジェクトを取り、入力したプロミスの集合の結果の配列に解決される単一の Promise を返します。

1.resolveのvalに500を掛けていく
2.promise.all([呼び出すPromise入りの関数],[呼び出すPromise入りの関数])
3.thenの中のreturnに Promise.all([sleep(2),sleep(3),sleep(4)])を返すと上記の処理が一度繰り返される
元データ
“`js
function sleep(val) {
r

元記事を表示

【CSS】主要ブラウザに対応した疑似クラス :modalを使って、モーダルを作ってみる!

## はじめに
みなさんは、`:modal`という疑似クラスをご存知でしょうか?

実は、先日Chrome 105とEgde 105がリリースされ、コンテナクエリ`@container`と疑似クラス`:has()`と一緒に疑似クラス`:modal`もサポートされました。

なので今回は、`:modal`の具体的な内容の紹介と`:modal`を使った実装方法の解説を行います。

## 疑似クラス `:modal` とは?
疑似クラス `:modal`は以下の状態の要素のスタイルを変更することができます。

:::note
・ **JavaScriptの `showModal()`によって、表示された要素**
・ **JavaScriptの`requestFullscreen()`によって、全画面表示された要素**
:::

これら状態で、疑似クラス `:modal`で指定したスタイルを当てることができます。
具体的に、それぞれの状態を解説していきます!

### JavaScriptの `showModal()`によって、表示された要素
↓こちらを例に解説していきます!
ボタンを押

元記事を表示

Vue.js(Vue-CLI)でprocess.env.HOGEのように環境変数が使えるのはなぜ?

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n651c5b80522d

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

# Python

https://qiita.com/imuimu/items/7f27d156dd0f6507803b

# Ruby

https://qiita.com/k-penguin-sato/items/1a6c8096effccb19565a

# PHP

https://qiita.com/wakahara3/items/bcadef53367097765c82

# Java

https://qiita.com/ts7i/items/d7f6c1cd5a14e55943d4

# JavaScript

https://qiita.com/andota05/items/fc1e340642be42ca47c0

# Perl

https://perlzemi.com/blog/201

元記事を表示

人事のおじさんプログラミングを学ぶ Day13「フォームの入力内容の取得とイベント」

書籍『確かな力が身につくJavaScript「超」入門 第2版』に沿って、
フォーム内容の取得とイベントを使ってプログラムが動作するタイミングを制御してみた。

変数を含む文字列が正しく表示されないので調べたら、テンプレートリテラルを利用した記述ではバックコーテーションで囲む必要があると気づく。自分で調べたことは何よりも忘れなそうです。
![2022-09-09 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2783084/a0488fb7-88c9-91fe-ce4a-31b8e17182bb.png)
![2022-09-09 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2783084/4187561d-db0a-d3d2-996e-bb2c6d791f87.png)

元記事を表示

React hooksのuseEffectについて理解したい

# useEffectとは?

>useEffect は何をやっているのか? このフックを使うことで、レンダー後に何かの処理をしないといけない、ということを React に伝えます。React はあなたが渡した関数を覚えており(これを「副作用(関数)」と呼ぶこととします)、DOM の更新の後にそれを呼び出します。この副作用の場合はドキュメントのタイトルをセットしていますが、データを取得したりその他何らかの命令型の API を呼び出したりすることも可能です。

https://ja.reactjs.org/docs/hooks-reference.html#useeffect:~:text=%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82-,useEffect,-useEffect(didUpdate

つまりuseEffectは、Reactのレンダリング後に関数を実行することができるフックということです。

関数コンポーネント内で[副作用](https://qiita.com/Mitsuw0/items/801f783ca74

元記事を表示

Javascript入門

# Javascript超基礎文法
Javascriptを勉強し始めたので自分用にまとめていきます。
***

## Hello World
“`javascript
cosole.log(“Hello World”); // Hello World
“`
– console.log
出力命令

– 文字列
文字列にはシングルクォーテーションかダブルクォーテーションをつける
数値には不要

## 変数
“`Javascript
var num = 1; // 再宣言、再代入可能
let number = 2; // 再代入可能
const name = “Taro”; // 定数

“`
– 変数
let 英単語の形
数字スタート・ローマ字不可

– 変数更新
後に書かれたコードが優先される
+=や++など利用可能

“`javascript
let hello = ‘こんにちわ’;
let name = ‘イチロー’;
console.log(hello + name); // こんにちわイチロー
name += ‘さん’; //イチローさん
console.log(`こん

元記事を表示

therubyracer と libv8 と libv8-node

## これはなに

Rails で開発されているプロダクトで [libv8] が使われており違いや浅く歴史について調べたので簡単にまとめました

## TL;DR

– [therubyracer] と [libv8] と [libv8-node] すべて JavaScript Engine V8 を実行バイナリである
– 最初は [therubyracer] が開発されていたが、 実行環境の差分追従などが困難になり [libv8] の開発を開始、その後再び困難になったことから [libv8-node] の開発が行われている
– [therubyracer], [libv8], [libv8-node] の何れかの利用が求められたら、現在は `libv8-node` を使うことが望ましい

## therubyracer について

[therubyracer] は JavaScript Engine V8 実行を行う binary を提供している Gem です

https://github.com/rubyjs/therubyracer

https://rubygems.org/

元記事を表示

127.Promiseチェーン

#promiseなしとありで比較しながら書いてみよう
#### promiseなし
“`js:promiseなし
function sleep(callback, val) {
setTimeout(function() {
console.log(val++);
callback(val);
}, 1000);
}

sleep(function(val) {
sleep(function(val) {
sleep(function(val) {
sleep(function(val) {

}, val);
}, val);
}, val);
}, 0);
“`
#### promiseあり
“`js:promiseあり
function sleep(val) {
return new Promise(function(resolve) {
setTimeout(function() {
console.log(val++);
resolve(val);
}

元記事を表示

OTHERカテゴリの最新記事