- 1. 外部のページに飛びたい
- 2. 実装方法
- 2.1. querySelectorはdocument以外のElementでも使える
- 2.2. 【Chrome】ServiceWorkerを今度こそ決定的かつ完全に消去する
- 2.3. Microsoft TeamsのWebhook URLにNode.jsから情報を送ってみる ~その2~
- 2.4. javascriptでボタン押した時にローディング画像表示(CSS変更するのも面倒くさい人向け)
- 2.5. canvasを使いお絵描きアプリを作る。(各機能ざっくり解説)
- 2.6. "use-shopping-cart"を使って、StripeとReactで簡単にECカート機能 + 決済機能を実装しよう
- 2.7. JavaScriptのFetch APIにtimeoutとretryの機能を追加する方法
- 2.8. ESP32による美和ロックの制御
- 2.9. 僕らはファイナライズを待たなければいけないのか~Symbolブロックチェーンの場合~
- 2.10. 【JavaScript】ES6 モジュールのエクスポート&インポート、およびbabelのインストール方法
- 2.11. 【Vue.js】privateな変数の双方向バインディング方法
- 2.12. JavaScriptの論理演算子(&&, ||)を「かつ」「または」と覚えるのはもうやめよう
- 2.13. Webの勉強はじめてみた その21 〜Slack上で動くbot作成1〜
- 3. 学んだ用語
- 4. とにかくほめてくれるbotを作る
laravelBreezeにvue.js3ど導入しようとした件
laravel breezeをインストールしたんだけれど、breezeのJSは**Alpine.js**で**Vue.js**が入ってなかったので、
####じゃあ、alpine.jsを使えばいいじゃん!####資料が少なすぎて無理・・・
ということで、breezeにvue.js3を導入します!
useEffectとuseRefを使ってプルダウンをつくる## 背景
Reactを使ってプルダウンを実装することになったのですが、useRefやuseEffectなどの基本だけども初学者には理解しづらい内容だと思い、自分の理解を深めるために記事にまとめました。
改善点やアドバイスがあれば優しくご指摘いただければ幸いです。## 制作イメージ
![プルダウン.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1161057/b2268d7c-c3b7-79fa-e9a5-b728e8ec2080.gif)### 要件
– 生年月日のプルダウン
– 年・月・日でそれぞれ別の選択肢をもつ
– 年は西暦と和暦、両方表示*平成と令和の切り替え、うるう年、30日と31日の表示分けは今回実装しません。
“`jsx:完成コード
import React, { useRef, useState, useEffect } from “react”;export const BirthDate = () => {
const birthYearRef
`deno test` で付けたほうがよさそうなオプション
denoには組み込みのテストランナーが備わっています。テストランナーは`deno test`コマンドで利用できますが、いくつかのオプションを指定することができます。その中から便利そうなものをピックアップして紹介します。
## `deno test`で付けたほうがよさそうなオプション
### `deno test –jobs
` `–jobs`オプションを指定すると、複数のCPUを使ってテストを並列実行します。
`–jobs`の後に続けて数字を記述して、使用するCPUの個数を指定することもできます。“`shell
> deno test –jobs # CPUの個数分並列実行する
> deno test –jobs 4 # 4並列で実行する
> deno test # –jobsオプションが指定されていない場合は並列実行しない
“``–jobs`オプションを指定しない場合、並列実行されないので注意しましょう。
筆者の場合は、`–jobs`オプションを指定することで、1分半かかっていたCIを45秒に短縮することができました
Vueで要素外クリック検出
例えばメニューを実装する際に、メニュー外をクリックしたら閉じるようにしたいときが割とあるため備忘録として。
Nodeのcontainsを使い、クリックされた要素がメニュー要素の子孫に含まれるかどうかを判定しています。
vueでwindowやdocumentにイベントリスナーを追加すると要素がunmountされてもイベントリスナーが残り続けるため、必ずunmount時にremoveしましょう。“`vue
import { ref, onMounted, onBeforeUnmount }const element = ref
(null) // 対象の要素
let clickOutside = (e: MouseEvent) => {
// 対象の要素がクリックされた要素を含まない場合
if (e.target instanceof Node && !element.value?.contains(e.target)) {
// 何らかの処
【React】外部リンクに飛ぶ方法【Javascript】
外部のページに飛びたい
ReactでSPAアプリ作成時にReactRouter外の外部のページに飛びたい。
しかし、useHistoryやLinkでは飛べない。そういう場面に直面して解決したのでその方法をここに記します。
実装方法
```react:リンクで飛ぶ
//現在のタブで開く
Text
//新しいタブで開く
Text
``````react:何らか処理後に飛ぶ
export const Hoge () => {現在のタブで開く
function onClickHandleA () {
window.location.replace("https://www.google.com/")
}//新しいタブで開く
function onClickHandleB () {
window.open("https:
querySelectorはdocument以外のElementでも使える
HTML
```HTML
Hi!Bye!
```JS
```javascript
const $second = document.querySelector('.second-element');
const $child = $element.querySelector('.some-child');
console.log($child.innerText);
// => Bye!
```Reactだと↓のように使えたりして便利(子要素のref使えというツッコミはなしで
`ref.current.querySelector('.some-child')`
【Chrome】ServiceWorkerを今度こそ決定的かつ完全に消去する
前、[Chromeを使うなら、必ずServiceWorkersを無効化しよう](https://qiita.com/rana_kualu/items/52d8cb7b200d6fefddc8)という記事を書いたのですが、あの方法はてんで全然ダメダメでした。
[chrome://serviceworker-internals](chrome://serviceworker-internals)には無用なServiceWorkerが増え続け、[chrome://flags/](chrome://flags/)からはServiceWorkerの削除設定が削除されました。そんなわけで、今度こそServiceWorkerを決定的かつ完全に消し去りたいと思います。
といっても自力でどうこうしたわけではなく、全面的に他人の力を借りただけですが。
# Reject Service Worker
[Reject Service Worker](https://chrome.google.com/webstore/detail/reject-service-worker/falajmifjci
Microsoft TeamsのWebhook URLにNode.jsから情報を送ってみる ~その2~
## ただのテキスト以外も送ってみたい
https://qiita.com/n0bisuke/items/f61b1f653d0aa2f93dc2
前回の記事の続きで、ちょっとリッチな情報を送ってみます。
前回は最もシンプルなテキスト送信を試していました。WebhookのURLの取得は前回記事参照です。
> ![スクリーンショット 2022-01-17 17.27.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/321cd0d6-173a-af59-169f-04933a3dafda.png "スクリーンショット 2022-01-17 17.27.10.png")
こちらのドキュメントを参考に書いてみました。
https://docs.microsoft.com/ja-jp/outlook/actionable-messages/message-card-reference
## コピペ用コード
こんな感じです。
```js
'use strict'cons
javascriptでボタン押した時にローディング画像表示(CSS変更するのも面倒くさい人向け)
#はじめに
完全に後付でCSSとか使わずに(面倒くさいから)、いい感じにhtmlに画像表示するのに、あっちこっち検索したので備忘録的に作成。
基本的にCSS使ったいい感じのサンプルたくさんあるので、そっち使った方がいいです。
CSS変更できないけどjavascriptは変更できる環境の人向け(そんな人居るのか?)。ローディングのgif画像は各自用意してください。
#ソースコード
javascriptの一番下にでもコピペしてください。
jquery使ってます。```javascript
$(function() {
var $btnLoading = $('.btn_loading');
$btnLoading.on('click' ,function(){
setTimeout(function(){
$('body').prepend('canvasを使いお絵描きアプリを作る。(各機能ざっくり解説)開発を進めていく上で意外とcanvasの知識が無かったので復習・備忘録も兼ねてcanvasの説明をしていきます。
コレちゃうねん何言ってんだこいつって点があれば教えてくださいまし。
#目次
[1.canvasとは](#1-canvasとは)
[2.HTML側のコーディング](#2-html側のコーディング)
[3.JS側のコーディング](#3-js側のコーディング)
[4.各種ペンツール](#4-各種ペンツール)
[5.プレビュー機能](#5-プレビュー機能)
[6.クリア機能](#6-クリア機能)
[7.ダウンロード機能](#7-ダウンロード機能)
[8.ソースコード全容](#8-ソースコード全容)#1. canvasとは
いつもお世話になっている[mozilla](https://developer.mozilla.org/ja/docs/Web/HTML/Element/canvas)さんの引用となります。
> HTML の
"use-shopping-cart"を使って、StripeとReactで簡単にECカート機能 + 決済機能を実装しよう
Stripeを利用することで、決済機能を簡単に実装することができます。
しかし通販機能を実装するためには、決済だけではなく買い物かご(カート)機能も実装する必要があります。今回は、「use-shopping-cart」を利用して、Reactアプリで簡単にカート機能を実装する方法を紹介します。
# use-shopping-cartとは
![スクリーンショット 0004-01-13 10.31.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/c7374dc5-6046-9d16-4027-17a0449d8e49.png)
use-shopping-cartは、Reactでショッピングカート機能を実装するために必要な機能を備えたHookを提供するライブラリです。
https://useshoppingcart.com/
内部的にReduxを利用しており、「カート機能」と「Stripe Checkoutへの遷移」の2機能が利用できます。
## use-shopping
JavaScriptのFetch APIにtimeoutとretryの機能を追加する方法
## 目的
Vanilla JavaScriptのfetch()に特定の時間が追加したら、エラーを起こして処理を終わらせる時限機能、そして、fetchが取得に失敗した時に特定の回数のみ再度取得を試みる機能を追加すること。## 背景
fetchを使うのか、axiosを使うのか、迷うエンジニアもいると思います。基本的に、axiosを使うべきだと筆者は考えています。なぜなら、Axiosを使えば、Timeoutはすぐに設定できるのと、axios-retryというパッケージを使えばretryの機能も簡単に追加できるからです。
ただし、場合によってはaxiosを入れたくない事情もあるのかもしれません。また、筆者も経験しましたが、axios-retryが思うように動いてくれなかったりします。axiosは簡単に使えるが、何をしているかわからん、ということはよろしくない状況なので、ここでは勉強も兼ねて同じことをfetchとPromiseでどうやって再現できるかをご紹介します。## 目次
1. 環境構築
1. fetchを別のPromiseに包む
1. timeoutのPromiseを返してくれるESP32による美和ロックの制御
# 【備忘録】ESP32による美和ロックの制御
「外車のクラシックカー整備してよ。自動車整備士なら簡単でしょ?」や
「スマホでオートロックつくってよ。ITエンジニアなら簡単でしょ?」は
無茶振りである上に薄給なら専門家軽視なのは言うまでもありませんが
内容が面白そうであればつい蓋を開けてしまう方も少なくはありません。※そもそもスマホを持っていないエンドユーザのために散々作り直したのは別のお話
## 概要
wiremo やスマートロック(Ex: Qrio Lock, Akerun)などの既製品では不都合な場合を想定し、ESP32 やリレーを用いた電動錠制御装置の実装だけでなく簡易な管理システムの実装及び装置とシステムの連携を実施します。
ユーザ管理や認証については当書では LINE BOT を用いることで省きます。
実際のプロダクトに寄せた内容にし後任者による既存設計の大雑把な理解と
設計の所々の決定の背景が伝わるようにすることが目的になります。
※関係者の方でその他把握しておきたいことがあれば私信お願いします。(現在の仕事もあるので簡素な対応になるかと思いますが予めご了承くだ僕らはファイナライズを待たなければいけないのか~Symbolブロックチェーンの場合~
即時ファイナリティ。
分散化を徹底したブロックチェーンほど、縁の遠い存在と考えがちな言葉です。
例えば取引所の多くは、ブロックが覆らないと思われる時間を待って入金を確定させます。ブロックチェーンを従来システムに組み込むためには、待たなければいけない時間がある。
と思っているなら、あなたの頭はまだWeb2.0を彷徨っています。
少し立ち止まって考えてみましょう。ブロックチェーンは第三者の仲介無しに送金を実現します。送金指示はあなたに直接投げられたメッセージです。たとえそれが未承認状態だったとしても、情報送信者の意思表示を証明するために必要な情報はすべて世界中に公開されているのです。他チェーン同士が自律分散的にトークン交換するならまだしも、特定の組織によって管理されたシステム系への送信であれば、利益を享受する情報の受け手がトランザクションの信頼性向上に歩み寄ることができます。
何が言いたいかというと、ブロックチェーンがロールバックしようが、送金メッセージを受信して利益を得る権利を得た人が、そのチャンスが確信に変わるまで何度もアナウンスすればいいのです。
というわけで、今回は
【JavaScript】ES6 モジュールのエクスポート&インポート、およびbabelのインストール方法
##モジュールとは
部品と近い意味ですね。大きなファイルを機能ごととか、役割ごととかで細分化する。
細分化したものを組み合わせて一つのものにする。###モジュールのメリット
・重複命名防止
・コード再利用可能
・保守しやすい###モジュールの文法
export
モジュールをエクスポートするimport
モジュールをインポートする##エクスポートの方法
主に三つに分けられる。
1.個別エクスポート
2.一括エクスポート
3.デフォルトエクスポート###個別エクスポート
エクスポートしようと思う データの前に、「export」を加えること。```javascript:individualExport.js
export let language = "JavaScript";
export function output(){
console.log("I'am from individualExport.js file!! ");
}```
###一括エクスポート
export{ // エクスポートしようと思う【Vue.js】privateな変数の双方向バインディング方法
# はじめに
JavaScriptでprivateな変数やメソッドが作れるようになったようです。
私は業務でVue.jsを触っているため、「双方向バインディングする場合はどのように書くんだろう?」
と気になったので試してみました。# 結果
getterとsetterを用意して、**「v-model="クラス名.変数名"」**で良いみたいでした。# 検証
変数に「#」を付けることでprivateになるようです。
一旦setterは用意せず、以下のようなクラスを作成しました。```Javascript
module.exports = class Test{
#detail;
#tag;constructor() {
this.#detail = null;
this.#tag = null;
}get detail() {
return this.#detail;
}
get tag() {
return this.#tag;
}
};
```画面側は以下のように実装しました。
```Javascr
JavaScriptの論理演算子(&&, ||)を「かつ」「または」と覚えるのはもうやめよう
※こちらの記事は初学者向け・丁寧に解説を心がけております。
その分、文章量も多いのでご了承ください。プログラミングを学びたての頃、論理演算子の章で
- `&&` を「**かつ**」
- `||` を「**または**」と覚えてしまった人も多いのではないでしょうか?
高校数学 A で習う「集合」のカリキュラムに登場する「`A∩B`」や「`A∪B`」の考え方に沿えば一番馴染みのある表現ではありますが、プログラムの振る舞いに着目すると厳密には異なります。また、経験を積んでいくにつれて、`&&`を「**かつ**」、`||`を「**または**」と表現すると、説明がしづらいこと場面にも遭遇します。
この記事を読んで、「かつ」「または」という考え方から脱却していきましょう。
また、この記事では
- ブラウザですぐ実行できること
- 多くの初学者にも馴染みがあるという点からJavaScriptを基に解説していきます~~が、一部挙動は異なるものの、Ruby や PHP などでも考え方は同じです。~~
(追記:コメントをいただき調べましたところ、CやJava, PHPでは大きく挙
Webの勉強はじめてみた その21 〜Slack上で動くbot作成1〜
N予備校の「プログラミング入門Webアプリ」を受講しています。
今回は第3章7〜9節です。
講義内ではTODOのbotでしたが、復習も兼ねて自分で作りました。学んだ用語
CRUD クラッド
:::note
ソフトウェアが情報の永続化をしようとしたときに出てくる操作、Create, Read, Update, Deleteの頭文字をとったもの。
:::リファクタリング
:::note
ソースコードを見易くする。可読性の向上。
:::テスト駆動開発
:::note
実装や修正よりも先にテストを用意し、テストに適合するようにリファクタリングを繰り返すことでコードの品質を高めていく開発手法
:::とにかくほめてくれるbotを作る
要件
1. 「ほめて」 : あらかじめ用意された配列からランダムで発言
2. 「もっと ~」 : ~という内容を配列に登録。
3. 「ほめないで ~」 : ~(インデックス)番のメッセージを削除
4. 「見せて」 : 登録されているメッセージredux のソースコード を読んでみる
試しに redux を読んでみたので、そのまとめ。
この記事では、react-redux を除いた [redux](https://github.com/reduxjs/redux)、つまり createStore を使った getState・dispatch 操作を、実際の redux のコードを読んで理解してみます。## 対象読者
redux の使い方を知っている人
## redux まとめ
まずは、簡単な概要を説明します。
redux は 状態管理 のライブラリ。
React の State状態管理 のバケツリレーを改善するために、大きな State を作っておき そこにデータアクセス([react-redux](https://github.com/reduxjs/react-redux))することで状態管理をする。ここでは「大きな State を作る」部分である [redux](https://github.com/reduxjs/redux) だけを解説します(暇があれば、後半の「データアクセス」部分をしている [react-redux](https://gi
[JavaScript]forEachに弄ばれた話
# はじめに
JavaScriptを書いており、配列のループをしようとして弄ばれたときのメモ&ネタ話です。
# 内容
## やりたいこと
最近JavaScriptを業務で使う中で、
> 配列を処理して配列内の値がtrueならエラーにしたい!
>ということがあったので、JavaScriptのループ処理についてググることがあった。
## やったこと
自分の普段のメイン言語はPHPなので検索ワードは
「JavaScript foreach」
で調べたところ、JavaSccriptの`forEach()`メソッドがあったので「キタコレ」という感じで実装
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
具体的な実装イメージは以下の通り。
```javascript
const hasDummys = [
false,
true,
false
];// 配列hasDummyの値にtrueであれば、アラートだす
hasD関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた