- 0.1. 変数とデータ型
- 0.2. オブジェクトについて
- 0.3. javascriptが出来た経緯
- 0.3.1. Visual Studio CodeでLive ServerのGo Liveを押してもブラウザが起動しない場合の対応方法
- 0.3.2. tailwind.cssで長い文字列を・・・にする方法【複数行】
- 0.3.3. 一行のみ
- 0.3.4. 複数行
- 0.3.5. Javascriptでタグの属性(classやstyle)を指定して削除する方法
- 0.3.6. 【JavaScript】正規表現で数値を取得し、変数代入する
- 0.3.7. viteでlessをimportした際の inline JavaScript is not enabled. Is it set in your options? を解消する
- 0.3.8. テンプレートリテラルにシンタックスハイライトを
- 0.3.9. React + TypeScript: Apollo Clientでクエリをリフェッチ(refetch)する
- 0.3.10. どんなページでもエルデンリングの気分を味わえるブックマークレット
- 0.3.11. 【moment.js】Dateを扱うとき、Safariには気をつけよ。
- 0.3.12. Eslintのエラーについて
- 0.3.13. LeafletでGeoJSONを読み込みカスタムアイコンを表示する
- 0.3.14. Googleブログデータを取得するサンプルコード(blogId,apiKey)
- 1. ブログデータの取得サンプル(ログインなし)
Function Componentsに型をつけるときFCを使う?それともJSX.Elementを使う?
# この記事を書く動機
メモ
間違っている部分があればコメントで教えてください。# 前提知識
https://kray.jp/blog/dont-have-to-use-react-fc-and-react-vfc/
https://github.com/typescript-cheatsheets/react#function-components
# 問題
以下、尊敬するエンジニアの方々のツイートを引用させていただきました(いつもツイートから勉強させてもらっています。ありがとうございます!):React 限定の話題ですが、18から関数コンポーネントの型 React.FC の props から暗黙の children が除外されました。React+TypeScript Cheatsheets という☆33kのドキュメントでは、FC を使うのをやめて children: ReactNode を props の型に明記することを推奨しています。https://t.co/Ut9rUYi4K4
— 大岡由佳『りあクト! 第3.1版』BOOTHにて/紙本も販売中 (@oukayuka) April 27, 2022
いっぽう、先日公開されたこのブログでは React.PropsWithChildren<P> を props の型に使うことで React.FC を使い続ける方法が紹介されています。
皆さんは今後、どっちの方法で書かれますか?https://t.co/TULFVnWOFI— 大岡由佳『りあクト! 第3.1版』BOOTHにて/紙本も販売中 (@oukayuka) April 27, 2022
自分はReact.FCを使い続ける派だな。関数の返り値は推論させるより明示したほうが有利という前提はまずあり、
引数と返り値の2箇所の型注釈を書くより変数に型注釈一発のほうが見やすいという個人的嗜好があるので(?) https://t.co/bODPn6fVRO— ?️うひょ?✒? TypeScript本発売? (@uhyo_) April 27, 2022
# これまでの経緯を振り返る
## React v17までの書き方
* FCとVFCを使い分ける方法
基本はVFCを使い、childrenがprop
jenkinsのタイトルとfaviconを変更する方法
jenkinsに初めて触り始めたのだけど、色々なビルドマシンがあると、どれがどのマシン??って思うことがよくある。
で、現在会社では全部同じ見た目とタイトル。ジョブの名前と、URLの名前で判断する感じになっています。
UI的には、一瞬で、このマシンだ!!とわかるのがベストなので、これを変更する必要があると思い対応した時の話。
# simple theme pluginのインストール
タイトルとかロゴを変更する場合、カスタマイズしたcss/jsを使う必要があるので、まずカスタマイズできるように
simple theme pluginをインストールする。https://plugins.jenkins.io/simple-theme-plugin/
インストールすると、jenkins管理画面で、css/jsのファイルの指定先を記述する場所が出てくるので、
/var/lib/jenkins/userContents/… とかの中にフォルダやファイルを置いて指定する。# css/jsのカスタマイズ
## ico/pngを用意
何か適当なサイズのicoを用意してください。
includesの使い方
# includesとは?
– 〇〇が含まれているかどうか判断する時に使う# 実践
まずはじめに以下の変数を定義します。
“`index.js
const color = ‘赤青’
const red = ‘赤’
const blue = ‘青’
const white = ‘白’
“`次に任意の文字が含まれているかどうかのロジックを作ります。(本題)
“`index.js
color.includes(red)
// truecolor.includes(blue)
// truecolor.includes(white)
// false
“`実際にアプリなどで使う場合の想定としては、その値が含まれているかどうかで条件分岐を行ったりする場面が想定されます。
[JavaScript]リアルタイム反映されるアップロード画像の拡張子変換が意外とめんどかった
# [JavaScript]リアルタイム反映されるアップロード画像の拡張子が意外とめんどかった
# TL;DR
– ``で受け取ったfileの拡張子を.jpg→.pngの変更って簡単にできない
– GUIなら簡単なのに…
– フロント制御だけならHTMLのタグがあるが。。。https://webbibouroku.com/Blog/Article/html5-file-accept
# はじめに
## やりたいこと
– フロントでjpg, jpeg, pngを受け取れる``を作成
– 受け取ったfileをサーバーに送信する際はpngに変換して、base_64文字列でリクエストしたい
– 生fileでリクエストするとバリデーション内容膨大、ローカルストレージに保存される無駄、jpeg exifの考慮(画像の回転情報補正処理)があるのでかなり避けたい…## 悩み
– JSでサクッとできる方法がない…
– GUIならサクッとできるのに…
– 拡張子を.jpgから.pngにするだけ
PG見聞録 ~javascript編 基礎 OF 基礎1~
Javascriptの基礎中の基礎を上げておこうと思います。
phpとの違いや知らんかったことを書いていきます。変数とデータ型
・真偽値 Boolean true/false
・文字列 string ”hello”
・null
・undefined
この辺はよくある型ですね。・数値 Number
数値はintegerじゃないんですね。
他にも…・シンボル Symbol
・Bigint 桁の多い数値に使う
なんてものがあるんですね。
とりあえず、ということでシンボルは「一意の値」として覚えておきます。
オブジェクトは key: value といった書き方になるようです。
少しオブジェクトについても書こうと思います。オブジェクトについて
書き方としては
名前:値 だったり
名前:関数 だったり
名前:オブジェクト な
Object.keysの使い方
# Object.keysとは?
– あるオブジェクトがあったとして、その中のキー名だけを抽出したい時に使う
– 値が取れたあとは新しい配列を生成する
# 実践
まずはじめに以下のようなオブジェクトを用意します。
“`index.js
const datas = {id: 1, string: ‘box’, number: 10, boolean: true}
“`
次に`id`と`string`と`numer`と`boolean`を抽出します。(本題)
“`index.js
const dataKey = Object.keys(data)
console.log(dataKey)
// [‘id’, ‘string’, ‘numer’, ‘boolean’]
“`これですべてのキーを取ることができました。
コンソールで実際に試すと以下のようになります。
をインストールする。
2.確認したいファイルを右クリック「Open with Live Server」をクリック。
tailwind.cssで長い文字列を・・・にする方法【複数行】
一行のみ
“`html
一行のみを・・・にする場合“`
複数行
ライブラリを導入
“`
yarn add @tailwindcss/line-clamp
“`
“`tailwind.config.js
module.exports = {
plugins: [require(‘@tailwindcss/line-clamp’),],
};
“`2行
“`html
【2行】ゴリラゴリラゴリラゴリラゴリラ ゴリラ ゴリラ ゴリラ ゴリラ
ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ
ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ ゴリラ“`
3行
“`html
【3行】ゴリラゴリラゴリラゴリラゴリラ ゴリラ ゴリラ ゴリラ ゴリラ
ゴリJavascriptでタグの属性(classやstyle)を指定して削除する方法
## 方法
参考にした記事
https://www.javadrive.jp/javascript/dom/index3.html
https://www.javadrive.jp/javascript/dom/index18.html### Jqueryの場合
“`javascript
$(function() {
$(“span”).removeAttr(“style”);
$(“span”).removeAttr(“width”);
});
“`### Vanilla JSの場合
“`javascript
“`【JavaScript】正規表現で数値を取得し、変数代入する
## はじめに
`http://localhost:3000/user/1’`などのパスの最後の数値を取得し変数代入することがあったので方法を記録しておく。## 結論
“`javascript
// 対象となる文字列
const text = ‘http://localhost:3000/user/123’;// 正規表現を定義
const regex = /(?<=user\/)([0-9]+)/; // "()" で指定した箇所が $1 に入る const found = text.match(regex); // found[0]で取得可能 console.log("found", found[0]) => 123
“`### 詳細
`(?<=user\/)`の部分は後読みアサーションといい、上記の例では、取得したい数字の前に、`user/`が存在する場合のみ、その数字がマッチするようになる。 あとは、`text.match(regex)`でmatchさせたときに、変数`found`には配列でデータが入るので、その一つ目を取得すればいい。 ## おわviteでlessをimportした際の inline JavaScript is not enabled. Is it set in your options? を解消する
viteでAntDesignのテーマのカスタマイズを行おうとしたときに
`inline JavaScript is not enabled. Is it set in your options?`
というエラーが表示されました。
調べてみると preprocessorのオプションに `javascriptEnabled: true` を設定してあげないとダメそうです。
## `vite.config.js` の設定変更
というわけで件の設定はviteでどうやってやるのって調べたら以下のように書けばいけるみたいでした
“`js:vite.config.js
import react from “@vitejs/plugin-react”;
import { defineConfig } from “vite”;
import tsconfigPaths from “vite-tsconfig-paths”;// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(),テンプレートリテラルにシンタックスハイライトを
## Abstract
JavaScript, TypeScriptなどでHTML, CSSの文字列を生成して返すような処理を書くことが稀にありますよね。そういった際に、その文字列は当然HTML, CSSファイルの中ではないので、シンタックスハイライトは効きません。`<>`を閉じ忘れていたりした時などは非常に気が付きにくいものです。そこで本記事では、`.js, .ts`ファイルなどで文字列にシンタックスハイライトを適用するVSCodeの拡張機能[Comment tagged templates](https://marketplace.visualstudio.com/items?itemName=bierner.comment-tagged-templates)を紹介します。またそれだけでは内容も薄いので、vue.jsの`.vue`ファイルでシンタックスハイライトを効かせる方法も紹介します。
## 紹介
[Comment tagged templates](https://marketplace.visualstudio.com/items?itemName=bierner.c
React + TypeScript: Apollo Clientでクエリをリフェッチ(refetch)する
[Apollo Client](https://www.apollographql.com/docs/react/)はReactで使える状態管理ライブラリです。ローカルとリモートのデータをGraphQLで扱えます。本稿は公式サイトの「[Refetching queries in Apollo Client](https://www.apollographql.com/docs/react/data/refetching)」にもとづいて、Apollo ClientのメソッドでクライアントサイドのGraphQLデータをどう更新するかについての解説です。Apollo Clientでクエリを使うための基礎はすでに学んだことが前提となります(まだの方は先に「[React + TypeScript: Apollo ClientのGraphQLクエリを使ってみる](https://qiita.com/FumioNonaka/items/0c6b711627e3443ff73b)」をお読みください)。ドキュメントの邦訳ではなく、日本語で説明し直しました。原文から省いた部分もあり、逆にわかりにくいところ
どんなページでもエルデンリングの気分を味わえるブックマークレット

エルデンリング(もしくはダークソウル)のゲームオーバー時に表示される「YOU DIED」をWebページ上で再現するブックマークレットを作りました。この先、時間の無駄があるぞ。“`javascript
javascript: (() => { const s = document.createElement(‘style’); document.head.appendChild(s); s.sheet.insertRule(‘.eldenring { all: initial; display: flex; align-items: center; opacity: 0; pointer-events: none; position: fixed; top: 0; left: 0; width: 100vw; he【moment.js】Dateを扱うとき、Safariには気をつけよ。
日付の入力フォームに「バリデーションを実装している時のこと。
Safariだけ、存在しない値を入力してもバリデーションに通ってしまうという謎現象に遭遇。## 結論
フォーマット時の書き方をSafariに合わせる必要がある
“`javascript
❌ var now = moment(“2022 5 20”).format(“YYYY-MM-DD”);
⭕️ const valDate = moment(“2022 5 20”, “YYYY MM DD”).format(“YYYY/MM/DD”);
“`## 現象
例えば “1999年9月90日” と入力された際、このような日付は存在しません。
今回、moment.js のisInvlid関数を使用して、日付の存在チェックを行っていたのですが、
何故かSafariではこの日付が存在することになってしまうのでした。(怖)consoleにフォーマット後の値を出してみたところ、以下の値が。
“`
Date: 1999/11/29
“`
なるほどフォーマットがうまくいってない。全然違う値が返ってきてるやないかいっっ
90日Eslintのエラーについて
### 概要
webpackを利用してjQueryを記述中にeslintのエラーが出たので、エラーの意味と解決策①
“`javascript
var storyTitle = $(“.p-story”).find(“.js-blockTitle–scroll”).html();
var storyTitleTrim = $.trim(storyTitle);
var newHtml2 = “”;
storyTitleTrim.split(“”).forEach( v => {
newHtml2 += “” + v + ““;
});
$(“.p-story”).find(“.js-blockTitle–scroll”).html(newHtml2);
“`
“`
error ‘storyTitle’ is assigned a value but never used no-unused-vars
“`
→変数定義の際にvarを使用するのは望ましくないからconstかletで定義しようというエラー
varをconstもしくはletに変更LeafletでGeoJSONを読み込みカスタムアイコンを表示する
OpenLayersでは難なく実装できましたが、Leafletではちょっと苦戦したので書いてみました
手順を踏みながら実装していきます## GeoJSONとは
– JSONをもとにした、GISデータを記述するためのフォーマット
– 多くの GIS 技術やサービスの間で非常に人気のあるデータ形式## GeoJSONオブジェクトを使ってアイコンを表示する
まずは、GeoJSONオブジェクトを定義して押上駅にアイコンを表示してみましょう
“`index.html
アイコン表示 Googleブログデータを取得するサンプルコード(blogId,apiKey)# 概要
単に、ブログデータだけを取得するのであれば、Googleログインは不要で、$.ajax()を使用して取得できることを確かめました。ブログの投稿、更新、削除するには、GoogleログインしてOauth2認証をする必要があると思います。“`
ブログデータの取得サンプル(ログインなし)
単に、ブログデータのみを取得するには、Googleログインは不要であることを
確認するためのサンプルです。