f@ctor
## Type Scriptを書いていて、疑問だった箇所の忘備録 ### しがちなミス “` export const funcA = () => { console.log(‘test’) } // この呼び出しはエラーになる “` ### OKな呼び出し “` export const funcA = () => { console.log(‘test’) } funcA()} /> “` ### 違い “` function() “` と記載した場合、単純な関数の呼び出し(即時関数)となってしまうため、関数そのものではなく関数の結果(関数の戻り値)がonClickに設定されてしまう。 よって、動かなかったりエラーとなる 下記二つは、関数自体をonClickに渡せている。 アロー関数もOK “` export const funcA = () =>
## Type Scriptを書いていて、疑問だった箇所の忘備録
### しがちなミス “` export const funcA = () => { console.log(‘test’) }
// この呼び出しはエラーになる “`
### OKな呼び出し “` export const funcA = () => { console.log(‘test’) }
funcA()} /> “`
### 違い “` function() “`
と記載した場合、単純な関数の呼び出し(即時関数)となってしまうため、関数そのものではなく関数の結果(関数の戻り値)がonClickに設定されてしまう。 よって、動かなかったりエラーとなる
下記二つは、関数自体をonClickに渡せている。 アロー関数もOK
“` export const funcA = () =>
色々調べたが、どうもadocファイル単体では難しそうということがわかった。 javascriptを埋め込んでhtml表示時に置換するのが一番楽っぽい # adocファイル sectnums,figure-caption,table-captionを指定する。 scriptは生成されるhtmlからの相対位置にあるものを指定する。 “`asciidoc # SomeTitle :toc: :toc-levels: 3 :toc-title: 目次 :nofooter: :sectnums: :figure-caption: 図 :table-caption: 表 :stylesheet: asciidoc.css ++++ ++++ … “` # javascriptファイル 図は` `タグに記載されている。 表は` `タグに記載されている。 余計なものも交じるので弾くようにする。 章番号は` 元記事を表示 Bootstrapを使用したファイルアップロードボタンのデザインと最新機能(2024年版) https://qiita.com/yo-naka/items/46d44793827920282f75 上記の記事から時間が経ちましたので最新の状況や新着情報をまとめました。 このポストでは、Bootstrapを使用してファイルアップロードボタンをデザインし、最新のWeb技術を活用する方法を紹介します。2024年のWeb開発トレンドと最新のBootstrapバージョンに基づいて更新しています。 ## Bootstrapのバージョン [Bootstrap 5.3](https://getbootstrap.com/docs/5.3/getting-started/introduction/)(2024年7月19日現在の最新版)を使用しています。 ## 基本的な実装 ### 1. シンプルなファイルアップロードボタン 最新のBootstrapでは、`class=”form-control”` を設定することで美しいファイルアップロードボタンを作成できます: “`html Javascript 非同期処理について Javascript初心者であれば、必ずつまずく「非同期処理」についてまとめました。 文中のコードはコピペするだけで実際に以下のサイトでも動くことを確認していますので、 ぜひ、実際にコードをコピペしてデバッグしていただきながら読んでいただけると理解が深まると思います。 https://paiza.io/ja/projects/new # 非同期処理と同期処理の違い 同期処理・・・上から順番に実行される処理になります。 “`javascript console.log(“A:ボタンクリック”) console.log(“B:APIを叩いてデータを取得して、加工”); console.log(“C:新しい画面の表示”); “` `A → B → C`の順番に処理が実行されたと思います。 それではもっと複雑な処理を考えてみましょう。 もし、Bの処理が非常に重い処理の場合どうなってしまうでしょうか? 仮のコードで体験してみましょう。 “`javascript console.log(“A:ボタンクリック”); // ここでは「重い処理」を体験するために強制的に処理が 元記事を表示 [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ # [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ ## はじめに 三項演算子、条件分岐を行う方法のひとつ。 条件演算子とも言う。 `const A? B: C;` などのやつ。この記事では三項演算子と呼び方を統一することにする。 __重要ポイント__ google検索結果ページの上位のリンク先を見ると、条件分岐で処理をする『if文やswitch文の代わり』だとか『if文の短縮形』だとかはたまた『三項演算子は使うな』関連の記事だとか、そういうのが多いがこの記事は**ソコじゃない**という観点での内容。 :::note 実感として最も体感したコトは **➡︎ 条件によって値の異なる“変数”を使える** こと ::: ※↓分かりやすさを目指し色分け __三項演算子 の書き方__ const valueA = true ? “A” : 元記事を表示 [JavaScript] 表示/非表示にif文を使わない方法 # [JavaScript] 表示/非表示にif文を使わない方法 この記事は表示/非表示(あるいは可視/不可視)を実現するJavaScript(JS)についてのメモです。DEMOページは特にありません、あしからず。 HTML x JS x CSS __前提__ – アコーディオンやドロワーではない、単純にパッと表示=可視したり、非表示=不可視になったりするタイプの表示/非表示 – CSSでいう`display:none;`、`display:block;`をJSから操作するタイプ – 以降、この記事で略してfuncと書かれているのはfunctionのこと ## JSコード JSにおいて複数回出てくる頻出値であることを見越して変数化。ついでに配列化。後に出るfuncで共通。 ### 共通func “`javascript: 共通:可視/不可視func // id取得短く書く用 const $ =(id)=>{ return document.getElementById(id) }; // 可視/不可視の変数化と配列化 const blAk = “bloc 元記事を表示 分割代入でつまづきました ## はじめに Reactを学んでみようと思い、Udemyの教材で学んでいたところ分割代入でつまづきました ## 問題 const {name, age} = myProfile; の箇所で「Cannot redeclare block-scoped variable ‘name’」というエラーが発生しました 調べたところ、ブロックスコープで再宣言はできないよ!と怒られているようです “`JavaScript: const myProfile = { name: “ナマケモノ”, age: 3, }; const {name, age} = myProfile; const message2 = `名前は${name}です。年齢は${age}歳です。`; console.log(message2); “` ## 解決? エラーが出ているconst {name, age} = myProfileの行をまるまる消すと動くようになりました しかし、これで本当に分割代入としてできているのでしょうか!?(宣言も何もなしにプロパティの値をつっこんでいるだけでは???) 他の所で 元記事を表示 【個人開発】釣り具の登録、管理、検索ができるアプリを開発しました🎣 # はじめに こんにちは![レイ](https://twitter.com/ida09r)と申します! 未経験からエンジニア目指して日々学習をしております。 今回、釣り道具に特化した「[Tackle Master(タックルマスター)](https://tacklemaster.net/)」というサービスを開発しました。 釣りに興味のある方や好きな方には、ぜひ使っていただけると嬉しいです。 ### 自己紹介 地元の工業高校で情報系コースを専攻し、PC操作やプログラミング(Python、SQL、HTML/CSS)を簡単に学びました。 卒業後は総合化学品メーカーで製造オペレーターとして約3年間勤務。その際、社内ITシステムに助けられた経験から、システム開発に興味を持ちました。 2024年2月からプログラミングスクール「RUNTEQ」に入学し、エンジニアを目指しています。 # 1.サービス紹介 「Tackle Master」は釣り道具に特化したサービスで、釣り道具の管理・登録・検索ができます。 ![tackle_service.jpg](https://qiita-image 元記事を表示 [JavaScript] クラス、コンストラクタ、プロパティ、メソッドについて # まとめ #### クラスとは > クラスはオブジェクトを作成するためのテンプレートです。処理するためのコードでデータをカプセル化します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### コンストラクタとは > クラスで作成したオブジェクトを作成して初期化するための特別なメソッドです。 “constructor” という名前の特別なメソッドは、クラスに 1 つしか定義できません。クラスに複数の constructor メソッドが存在した場合、SyntaxError が発生します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### メソッドとは > メソッドはクラスごとにプロトタイプに定義され、すべてのインスタンスで共有されます。メソッドには、プレーン関数、非同期関数、ジェネレーター関数、非同期ジェネレーター 元記事を表示 縦書き画像ジェネレータを作った話 # やったこと 深夜の思いつきでこんなものを作ってしまいました。 https://tategaki-generator.pages.dev/ このように縦書きの文章と画像を合成できます。 ![サンプル画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2546324/6d822f44-11e9-fa37-0bc5-912a87b95363.png) ソースコードはこちらです。 https://github.com/Nitoryu008/tategaki-generator # 技術スタック Vue3+Bulmaで作っています。今回、Cloudflare Pagesを使ってみたんですが、開発体験がとてもよかったです。プッシュしたら即時デプロイしてくれるのがありがたい。突然の思いつきを形にするにはもってこいですね。 # 仕組み 仕組みは割と単純で、 HTML+CSSで描画した後にDOM to Imageというライブラリを使って画像に変換しています。 HTML5だとCanvasに描画してからごにょ 元記事を表示 日付や時間をうす〜く扱う~JavaScript編 # この記事のを書くきっかけ 「日付や時間の取り扱いについてうす〜く調べてみた〜その1」の続きです。 あれ、タイトル変わっちゃった。 計画立ててやらないといかんすね。汗 https://qiita.com/ikedachin/items/8d23fca666f3137fcfb1 そう、時間を扱うことがあって、少し苦労したので最小限必要なことを抜き取ってみました。 # なぜ薄く・・・なのか これ、前回、書き忘れました。 理由は簡単。「**忘れるもん**」 細かく書いても読まないし、細かく理解しても忘れる。 繰り返せば覚えるんだけど、いや、日付や時間だけをずっと扱うことも少ない。 なので、「ああ、そんな感じだよね〜」っと理解できる程度にうす〜く扱っていきたいと思います。 # 公式というか、MDN これは抑えておかねばならん。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date # 復習 MDNを読むとわかりますが、1970年1月1日の0時0分0秒を基準にしてm秒単位 元記事を表示 TypeScriptといふものを知る(ざっくり知る話) # 前置き ご覧いただきありがとうございます。 Web制作会社で主にHTML・CSS・JavaScriptを書いているマークアップコーダーです。 いわゆるレガシーな環境で、未経験で入社しもう3年ほど従事していますが、 そろそろモダンなフロントエンド技術を身に着けたいと思い、 手探りに色々と勉強中です。 (JavaScript(Vanilla)も基礎が全然なのでまずはそこからですが、、) 今までいくつか書籍などで勉強しましたが、 読んで終わり、コードを写経して(ちょっとだけ変えたりして)終わりで、 「これだけでは良くないな〜」と思い、まずはざっくりですが学んだことや気になったことを記事にしようと思いました。 ## ※注 基礎もまだまだの状況ですが、とりあえず「こんな感じなんだ〜」的なことを本当にざっくり書くだけです。 誰かのためになるわけでもわかりやすいわけでもない記事です。 # TypeScriptってなんだ? 今回は「**TypeScript**」です。 ## 知る前のイメージ 名前はめちゃくちゃ聞いたことがあり、 「JavaScriptの上位互換」「JavaScriptに型 元記事を表示 JavaScript: 圧縮とかLPAQ5 圧縮業界で高い圧縮率を誇る**PAQ系列**の軽量版LPAQ5の紹介。文脈混合法により圧縮しまくっていきます。 ## やぶからぼうに実装 本家の方はmacro乱舞でやばいです。性能的にはLPAQ1より少し良いかもしれません。 “`js {const TOLIMIT1=159,TOLIMIT2=175,SQUARD=2,calcprevfail=new Uint16Array(256),SQ=new Uint16Array(4096), sqInit=d=>{ if(d>2046)return 4095; if(d<-2046)return 0; return 0|4096/(1+Math.exp(-d/256)) }, //Stretch S1=new Int16Array(4096),S2=new Int32Array(4096),D=new Int16Array(1024).map((a,b)=>16384/(b+b+3)),calcfails=new Uint8Array(8192),ST=new Uint8Array([1,3,4,7,8,9,11,15,16,17, 元記事を表示 Side Effect(副作用)とはなんぞ? ## ある日のコードレビューコメントにて > 新しくインスタンスを作って返さないとSide Effectが発生するので修正しました。 今回のコードだと発生しても問題ないですが基本的にSide Effectは発生させない方がバグになりにくくて良いです。 もし発生させる場合はコメントで明記した方が良いです。 **エンジニア6年目わい:Side Effectって知らん…何それ…怖…** ってなったので自分の理解のために簡単に調べたことをまとめました。~~プレパラートハートなので6年もエンジニアやっててそんなことも知らないのかって言わずに生温かい目で見守ってください。~~ ## Side Effectとは 日本語だと「副作用」と呼ぶようです。 https://thejs.dev/jmitchell/what-are-side-effects-and-what-you-can-do-about-them-jws こちらの説明をGoogle先生に翻訳してもらうと以下のようなものを副作用と呼ぶそうです。 > 副作用とは、関数または式の呼び出しによる状態の変更です。関数または式に副 元記事を表示 「reduce関数を使ってオブジェクト配列の中身をマージする」のもっと簡単な方法 # 前の記事 https://qiita.com/KyongminS/items/93ab7a2fb6786104e544 # 結論 “`ts:reduceメソッド/groupByメソッドを使ってもっと簡単になる type Order = { name: string; // 商品名 price: number; // 値段 quantity: number; // 個数 } const orders: Order[] = [ { name: ‘トマト’, price: 100, quantity: 1 }, { name: ‘トマト’, price: 100, quantity: 2 }, { name: ‘マンゴー’, price: 200, quantity: 1 }, { name: ‘イチゴ’, price: 250, quantity: 3 } ]; const reduceSameProductsKai = (orders: Order[]) => { return Object.values( Object. 元記事を表示 JavaScript: 圧縮とかPAQ8もどき かつて圧縮業界で最強を誇った**PAQ8**を軽量化した`fp8`の紹介。例によって文脈混合法により圧縮しまくっていきます。 ## 実装 本家よりとんでもなく手抜きしまくっています。jpegとかexeとか色々対応が欠落。全部実装すると莫大な量になります。ちなみに**超低速**です。 “`js function hash(a,b,c){ c=((a>>>16)*52643+(c=a&65535)*3051<<16)+c*52643; c+=((b>>>16)*55539+(c=b&65535)*457<<16)+c*55539+4064955751; return c^c>>>9^a>>>2^b>>>3^201326591 } function hash3(a,b,c,d){ d=((a>>>16)*52643+(d=a&65535)*3051<<16)+d*52643; d+=((b>>>16)*55539+(d=b&65535)*457<<16)+d*55539; d+=((c>>>16)*271+(d=c&65535)*763<<16)+d*271+41149599 元記事を表示 JavaScriptの文法アウトプット➂ ===と==の使い分け # 厳格な等価性と抽象的な等価性 JavaScript特有の文法である`===`と`==`の使い分けをまとめます。 ## 厳格な等価性(`===`) 2つのオペランドを比較して論理値で結果を返す。 2つのオペランドの型が異なる場合には常に偽と判断する。 “` console.log(‘Hello’ === ‘Hello’); > true console.log(‘Hello’ === ‘hogehoge’); > false console.log(‘1’ === 1); > false console.log(0 === false); > false “` ## 抽象的な等価性(`==`) 2つのオペランドの型変換を行い、比較してから論理値で結果を返す。 “` console.log(‘Hello’ == ‘Hello’); > true console.log(’10’ == 10); > true console.log(‘false’ == 0); > true console.log(0 == undefined); > true “` # 元記事を表示 サーバーが機能しているかを確認するもの(?)をjsとhtmlで書く # 初めに 今回はサーバーが稼働しているかを確認するもの(※)をhtmlとjsで書きます ※…サーバからの応答があれば全部200で返します # ファイル構成 今回はhtmlファイル一つで大丈夫です # コードをコピペ “`html:main.html サーバーチェッカー テスト チェック ※このコ 元記事を表示 まだ苦手意識のあるasync/awaitを倒す ## はじめに [こちらの記事](https://qiita.com/course_k/items/6dc46afa9665ce1703ba)でPromiseについてまとめましたが、まだ非同期処理についての理解が足りていないなと感じています。 今回は非同期処理を書くうえで避けては通れないasync/awaitについて深堀りします。 ## async/awaitとは何か async/awaitは、JavaScriptで非同期処理を扱うための構文です。 Promiseベースの非同期処理をより簡潔に、同期的な見た目で書くことができます。 それぞれ以下の役割があります。 * `async`:非同期関数を定義するために使用する * `await`:Promiseの結果が返されるまで処理を一時停止する ## async/awaitの特徴 async/awaitには、以下のような特徴があります。 1. 読みやすさの向上 Promiseの`.then()`チェーンよりも、直感的に読めるコードになります 2. エラーハンドリングの簡素化 try-catch文を使って、同期処理と同 元記事を表示 JavaScript: 圧縮とかgrzip2(続編) [GRZipII編](https://qiita.com/mashuel/items/d660f5daa8a49cf97431)第2話。 ## 原理 BlockSort -> WFC -> RLE -> Range符号 という流れで圧縮。MTFより強力なWFC搭載で圧縮率向上となりやすい。 ## 実装 “`js function compare(R,a,b,i,n,r){ for(n-=a 元記事を表示 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関連のことを調べてみた
色々調べたが、どうもadocファイル単体では難しそうということがわかった。
javascriptを埋め込んでhtml表示時に置換するのが一番楽っぽい
# adocファイル
sectnums,figure-caption,table-captionを指定する。 scriptは生成されるhtmlからの相対位置にあるものを指定する。 “`asciidoc # SomeTitle :toc: :toc-levels: 3 :toc-title: 目次 :nofooter: :sectnums: :figure-caption: 図 :table-caption: 表 :stylesheet: asciidoc.css
++++ ++++
… “`
# javascriptファイル
図は`
章番号は`
https://qiita.com/yo-naka/items/46d44793827920282f75 上記の記事から時間が経ちましたので最新の状況や新着情報をまとめました。 このポストでは、Bootstrapを使用してファイルアップロードボタンをデザインし、最新のWeb技術を活用する方法を紹介します。2024年のWeb開発トレンドと最新のBootstrapバージョンに基づいて更新しています。 ## Bootstrapのバージョン [Bootstrap 5.3](https://getbootstrap.com/docs/5.3/getting-started/introduction/)(2024年7月19日現在の最新版)を使用しています。 ## 基本的な実装 ### 1. シンプルなファイルアップロードボタン 最新のBootstrapでは、`class=”form-control”` を設定することで美しいファイルアップロードボタンを作成できます: “`html Javascript 非同期処理について Javascript初心者であれば、必ずつまずく「非同期処理」についてまとめました。 文中のコードはコピペするだけで実際に以下のサイトでも動くことを確認していますので、 ぜひ、実際にコードをコピペしてデバッグしていただきながら読んでいただけると理解が深まると思います。 https://paiza.io/ja/projects/new # 非同期処理と同期処理の違い 同期処理・・・上から順番に実行される処理になります。 “`javascript console.log(“A:ボタンクリック”) console.log(“B:APIを叩いてデータを取得して、加工”); console.log(“C:新しい画面の表示”); “` `A → B → C`の順番に処理が実行されたと思います。 それではもっと複雑な処理を考えてみましょう。 もし、Bの処理が非常に重い処理の場合どうなってしまうでしょうか? 仮のコードで体験してみましょう。 “`javascript console.log(“A:ボタンクリック”); // ここでは「重い処理」を体験するために強制的に処理が 元記事を表示 [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ # [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ ## はじめに 三項演算子、条件分岐を行う方法のひとつ。 条件演算子とも言う。 `const A? B: C;` などのやつ。この記事では三項演算子と呼び方を統一することにする。 __重要ポイント__ google検索結果ページの上位のリンク先を見ると、条件分岐で処理をする『if文やswitch文の代わり』だとか『if文の短縮形』だとかはたまた『三項演算子は使うな』関連の記事だとか、そういうのが多いがこの記事は**ソコじゃない**という観点での内容。 :::note 実感として最も体感したコトは **➡︎ 条件によって値の異なる“変数”を使える** こと ::: ※↓分かりやすさを目指し色分け __三項演算子 の書き方__ const valueA = true ? “A” : 元記事を表示 [JavaScript] 表示/非表示にif文を使わない方法 # [JavaScript] 表示/非表示にif文を使わない方法 この記事は表示/非表示(あるいは可視/不可視)を実現するJavaScript(JS)についてのメモです。DEMOページは特にありません、あしからず。 HTML x JS x CSS __前提__ – アコーディオンやドロワーではない、単純にパッと表示=可視したり、非表示=不可視になったりするタイプの表示/非表示 – CSSでいう`display:none;`、`display:block;`をJSから操作するタイプ – 以降、この記事で略してfuncと書かれているのはfunctionのこと ## JSコード JSにおいて複数回出てくる頻出値であることを見越して変数化。ついでに配列化。後に出るfuncで共通。 ### 共通func “`javascript: 共通:可視/不可視func // id取得短く書く用 const $ =(id)=>{ return document.getElementById(id) }; // 可視/不可視の変数化と配列化 const blAk = “bloc 元記事を表示 分割代入でつまづきました ## はじめに Reactを学んでみようと思い、Udemyの教材で学んでいたところ分割代入でつまづきました ## 問題 const {name, age} = myProfile; の箇所で「Cannot redeclare block-scoped variable ‘name’」というエラーが発生しました 調べたところ、ブロックスコープで再宣言はできないよ!と怒られているようです “`JavaScript: const myProfile = { name: “ナマケモノ”, age: 3, }; const {name, age} = myProfile; const message2 = `名前は${name}です。年齢は${age}歳です。`; console.log(message2); “` ## 解決? エラーが出ているconst {name, age} = myProfileの行をまるまる消すと動くようになりました しかし、これで本当に分割代入としてできているのでしょうか!?(宣言も何もなしにプロパティの値をつっこんでいるだけでは???) 他の所で 元記事を表示 【個人開発】釣り具の登録、管理、検索ができるアプリを開発しました🎣 # はじめに こんにちは![レイ](https://twitter.com/ida09r)と申します! 未経験からエンジニア目指して日々学習をしております。 今回、釣り道具に特化した「[Tackle Master(タックルマスター)](https://tacklemaster.net/)」というサービスを開発しました。 釣りに興味のある方や好きな方には、ぜひ使っていただけると嬉しいです。 ### 自己紹介 地元の工業高校で情報系コースを専攻し、PC操作やプログラミング(Python、SQL、HTML/CSS)を簡単に学びました。 卒業後は総合化学品メーカーで製造オペレーターとして約3年間勤務。その際、社内ITシステムに助けられた経験から、システム開発に興味を持ちました。 2024年2月からプログラミングスクール「RUNTEQ」に入学し、エンジニアを目指しています。 # 1.サービス紹介 「Tackle Master」は釣り道具に特化したサービスで、釣り道具の管理・登録・検索ができます。 ![tackle_service.jpg](https://qiita-image 元記事を表示 [JavaScript] クラス、コンストラクタ、プロパティ、メソッドについて # まとめ #### クラスとは > クラスはオブジェクトを作成するためのテンプレートです。処理するためのコードでデータをカプセル化します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### コンストラクタとは > クラスで作成したオブジェクトを作成して初期化するための特別なメソッドです。 “constructor” という名前の特別なメソッドは、クラスに 1 つしか定義できません。クラスに複数の constructor メソッドが存在した場合、SyntaxError が発生します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### メソッドとは > メソッドはクラスごとにプロトタイプに定義され、すべてのインスタンスで共有されます。メソッドには、プレーン関数、非同期関数、ジェネレーター関数、非同期ジェネレーター 元記事を表示 縦書き画像ジェネレータを作った話 # やったこと 深夜の思いつきでこんなものを作ってしまいました。 https://tategaki-generator.pages.dev/ このように縦書きの文章と画像を合成できます。 ![サンプル画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2546324/6d822f44-11e9-fa37-0bc5-912a87b95363.png) ソースコードはこちらです。 https://github.com/Nitoryu008/tategaki-generator # 技術スタック Vue3+Bulmaで作っています。今回、Cloudflare Pagesを使ってみたんですが、開発体験がとてもよかったです。プッシュしたら即時デプロイしてくれるのがありがたい。突然の思いつきを形にするにはもってこいですね。 # 仕組み 仕組みは割と単純で、 HTML+CSSで描画した後にDOM to Imageというライブラリを使って画像に変換しています。 HTML5だとCanvasに描画してからごにょ 元記事を表示 日付や時間をうす〜く扱う~JavaScript編 # この記事のを書くきっかけ 「日付や時間の取り扱いについてうす〜く調べてみた〜その1」の続きです。 あれ、タイトル変わっちゃった。 計画立ててやらないといかんすね。汗 https://qiita.com/ikedachin/items/8d23fca666f3137fcfb1 そう、時間を扱うことがあって、少し苦労したので最小限必要なことを抜き取ってみました。 # なぜ薄く・・・なのか これ、前回、書き忘れました。 理由は簡単。「**忘れるもん**」 細かく書いても読まないし、細かく理解しても忘れる。 繰り返せば覚えるんだけど、いや、日付や時間だけをずっと扱うことも少ない。 なので、「ああ、そんな感じだよね〜」っと理解できる程度にうす〜く扱っていきたいと思います。 # 公式というか、MDN これは抑えておかねばならん。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date # 復習 MDNを読むとわかりますが、1970年1月1日の0時0分0秒を基準にしてm秒単位 元記事を表示 TypeScriptといふものを知る(ざっくり知る話) # 前置き ご覧いただきありがとうございます。 Web制作会社で主にHTML・CSS・JavaScriptを書いているマークアップコーダーです。 いわゆるレガシーな環境で、未経験で入社しもう3年ほど従事していますが、 そろそろモダンなフロントエンド技術を身に着けたいと思い、 手探りに色々と勉強中です。 (JavaScript(Vanilla)も基礎が全然なのでまずはそこからですが、、) 今までいくつか書籍などで勉強しましたが、 読んで終わり、コードを写経して(ちょっとだけ変えたりして)終わりで、 「これだけでは良くないな〜」と思い、まずはざっくりですが学んだことや気になったことを記事にしようと思いました。 ## ※注 基礎もまだまだの状況ですが、とりあえず「こんな感じなんだ〜」的なことを本当にざっくり書くだけです。 誰かのためになるわけでもわかりやすいわけでもない記事です。 # TypeScriptってなんだ? 今回は「**TypeScript**」です。 ## 知る前のイメージ 名前はめちゃくちゃ聞いたことがあり、 「JavaScriptの上位互換」「JavaScriptに型 元記事を表示 JavaScript: 圧縮とかLPAQ5 圧縮業界で高い圧縮率を誇る**PAQ系列**の軽量版LPAQ5の紹介。文脈混合法により圧縮しまくっていきます。 ## やぶからぼうに実装 本家の方はmacro乱舞でやばいです。性能的にはLPAQ1より少し良いかもしれません。 “`js {const TOLIMIT1=159,TOLIMIT2=175,SQUARD=2,calcprevfail=new Uint16Array(256),SQ=new Uint16Array(4096), sqInit=d=>{ if(d>2046)return 4095; if(d<-2046)return 0; return 0|4096/(1+Math.exp(-d/256)) }, //Stretch S1=new Int16Array(4096),S2=new Int32Array(4096),D=new Int16Array(1024).map((a,b)=>16384/(b+b+3)),calcfails=new Uint8Array(8192),ST=new Uint8Array([1,3,4,7,8,9,11,15,16,17, 元記事を表示 Side Effect(副作用)とはなんぞ? ## ある日のコードレビューコメントにて > 新しくインスタンスを作って返さないとSide Effectが発生するので修正しました。 今回のコードだと発生しても問題ないですが基本的にSide Effectは発生させない方がバグになりにくくて良いです。 もし発生させる場合はコメントで明記した方が良いです。 **エンジニア6年目わい:Side Effectって知らん…何それ…怖…** ってなったので自分の理解のために簡単に調べたことをまとめました。~~プレパラートハートなので6年もエンジニアやっててそんなことも知らないのかって言わずに生温かい目で見守ってください。~~ ## Side Effectとは 日本語だと「副作用」と呼ぶようです。 https://thejs.dev/jmitchell/what-are-side-effects-and-what-you-can-do-about-them-jws こちらの説明をGoogle先生に翻訳してもらうと以下のようなものを副作用と呼ぶそうです。 > 副作用とは、関数または式の呼び出しによる状態の変更です。関数または式に副 元記事を表示 「reduce関数を使ってオブジェクト配列の中身をマージする」のもっと簡単な方法 # 前の記事 https://qiita.com/KyongminS/items/93ab7a2fb6786104e544 # 結論 “`ts:reduceメソッド/groupByメソッドを使ってもっと簡単になる type Order = { name: string; // 商品名 price: number; // 値段 quantity: number; // 個数 } const orders: Order[] = [ { name: ‘トマト’, price: 100, quantity: 1 }, { name: ‘トマト’, price: 100, quantity: 2 }, { name: ‘マンゴー’, price: 200, quantity: 1 }, { name: ‘イチゴ’, price: 250, quantity: 3 } ]; const reduceSameProductsKai = (orders: Order[]) => { return Object.values( Object. 元記事を表示 JavaScript: 圧縮とかPAQ8もどき かつて圧縮業界で最強を誇った**PAQ8**を軽量化した`fp8`の紹介。例によって文脈混合法により圧縮しまくっていきます。 ## 実装 本家よりとんでもなく手抜きしまくっています。jpegとかexeとか色々対応が欠落。全部実装すると莫大な量になります。ちなみに**超低速**です。 “`js function hash(a,b,c){ c=((a>>>16)*52643+(c=a&65535)*3051<<16)+c*52643; c+=((b>>>16)*55539+(c=b&65535)*457<<16)+c*55539+4064955751; return c^c>>>9^a>>>2^b>>>3^201326591 } function hash3(a,b,c,d){ d=((a>>>16)*52643+(d=a&65535)*3051<<16)+d*52643; d+=((b>>>16)*55539+(d=b&65535)*457<<16)+d*55539; d+=((c>>>16)*271+(d=c&65535)*763<<16)+d*271+41149599 元記事を表示 JavaScriptの文法アウトプット➂ ===と==の使い分け # 厳格な等価性と抽象的な等価性 JavaScript特有の文法である`===`と`==`の使い分けをまとめます。 ## 厳格な等価性(`===`) 2つのオペランドを比較して論理値で結果を返す。 2つのオペランドの型が異なる場合には常に偽と判断する。 “` console.log(‘Hello’ === ‘Hello’); > true console.log(‘Hello’ === ‘hogehoge’); > false console.log(‘1’ === 1); > false console.log(0 === false); > false “` ## 抽象的な等価性(`==`) 2つのオペランドの型変換を行い、比較してから論理値で結果を返す。 “` console.log(‘Hello’ == ‘Hello’); > true console.log(’10’ == 10); > true console.log(‘false’ == 0); > true console.log(0 == undefined); > true “` # 元記事を表示 サーバーが機能しているかを確認するもの(?)をjsとhtmlで書く # 初めに 今回はサーバーが稼働しているかを確認するもの(※)をhtmlとjsで書きます ※…サーバからの応答があれば全部200で返します # ファイル構成 今回はhtmlファイル一つで大丈夫です # コードをコピペ “`html:main.html サーバーチェッカー テスト チェック ※このコ 元記事を表示 まだ苦手意識のあるasync/awaitを倒す ## はじめに [こちらの記事](https://qiita.com/course_k/items/6dc46afa9665ce1703ba)でPromiseについてまとめましたが、まだ非同期処理についての理解が足りていないなと感じています。 今回は非同期処理を書くうえで避けては通れないasync/awaitについて深堀りします。 ## async/awaitとは何か async/awaitは、JavaScriptで非同期処理を扱うための構文です。 Promiseベースの非同期処理をより簡潔に、同期的な見た目で書くことができます。 それぞれ以下の役割があります。 * `async`:非同期関数を定義するために使用する * `await`:Promiseの結果が返されるまで処理を一時停止する ## async/awaitの特徴 async/awaitには、以下のような特徴があります。 1. 読みやすさの向上 Promiseの`.then()`チェーンよりも、直感的に読めるコードになります 2. エラーハンドリングの簡素化 try-catch文を使って、同期処理と同 元記事を表示 JavaScript: 圧縮とかgrzip2(続編) [GRZipII編](https://qiita.com/mashuel/items/d660f5daa8a49cf97431)第2話。 ## 原理 BlockSort -> WFC -> RLE -> Range符号 という流れで圧縮。MTFより強力なWFC搭載で圧縮率向上となりやすい。 ## 実装 “`js function compare(R,a,b,i,n,r){ for(n-=a 元記事を表示
https://qiita.com/yo-naka/items/46d44793827920282f75
上記の記事から時間が経ちましたので最新の状況や新着情報をまとめました。
このポストでは、Bootstrapを使用してファイルアップロードボタンをデザインし、最新のWeb技術を活用する方法を紹介します。2024年のWeb開発トレンドと最新のBootstrapバージョンに基づいて更新しています。
## Bootstrapのバージョン
[Bootstrap 5.3](https://getbootstrap.com/docs/5.3/getting-started/introduction/)(2024年7月19日現在の最新版)を使用しています。
## 基本的な実装
### 1. シンプルなファイルアップロードボタン
最新のBootstrapでは、`class=”form-control”` を設定することで美しいファイルアップロードボタンを作成できます:
“`html
Javascript初心者であれば、必ずつまずく「非同期処理」についてまとめました。 文中のコードはコピペするだけで実際に以下のサイトでも動くことを確認していますので、 ぜひ、実際にコードをコピペしてデバッグしていただきながら読んでいただけると理解が深まると思います。 https://paiza.io/ja/projects/new # 非同期処理と同期処理の違い 同期処理・・・上から順番に実行される処理になります。 “`javascript console.log(“A:ボタンクリック”) console.log(“B:APIを叩いてデータを取得して、加工”); console.log(“C:新しい画面の表示”); “` `A → B → C`の順番に処理が実行されたと思います。 それではもっと複雑な処理を考えてみましょう。 もし、Bの処理が非常に重い処理の場合どうなってしまうでしょうか? 仮のコードで体験してみましょう。 “`javascript console.log(“A:ボタンクリック”); // ここでは「重い処理」を体験するために強制的に処理が
Javascript初心者であれば、必ずつまずく「非同期処理」についてまとめました。
文中のコードはコピペするだけで実際に以下のサイトでも動くことを確認していますので、 ぜひ、実際にコードをコピペしてデバッグしていただきながら読んでいただけると理解が深まると思います。
https://paiza.io/ja/projects/new
# 非同期処理と同期処理の違い
同期処理・・・上から順番に実行される処理になります。
“`javascript console.log(“A:ボタンクリック”) console.log(“B:APIを叩いてデータを取得して、加工”); console.log(“C:新しい画面の表示”); “`
`A → B → C`の順番に処理が実行されたと思います。
それではもっと複雑な処理を考えてみましょう。
もし、Bの処理が非常に重い処理の場合どうなってしまうでしょうか? 仮のコードで体験してみましょう。
“`javascript console.log(“A:ボタンクリック”);
// ここでは「重い処理」を体験するために強制的に処理が
# [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ ## はじめに 三項演算子、条件分岐を行う方法のひとつ。 条件演算子とも言う。 `const A? B: C;` などのやつ。この記事では三項演算子と呼び方を統一することにする。 __重要ポイント__ google検索結果ページの上位のリンク先を見ると、条件分岐で処理をする『if文やswitch文の代わり』だとか『if文の短縮形』だとかはたまた『三項演算子は使うな』関連の記事だとか、そういうのが多いがこの記事は**ソコじゃない**という観点での内容。 :::note 実感として最も体感したコトは **➡︎ 条件によって値の異なる“変数”を使える** こと ::: ※↓分かりやすさを目指し色分け __三項演算子 の書き方__ const valueA = true ? “A” :
# [JavaScript] 三項演算子(条件演算子)の使い時、変数の値を返すということ ## はじめに 三項演算子、条件分岐を行う方法のひとつ。 条件演算子とも言う。 `const A? B: C;` などのやつ。この記事では三項演算子と呼び方を統一することにする。
__重要ポイント__ google検索結果ページの上位のリンク先を見ると、条件分岐で処理をする『if文やswitch文の代わり』だとか『if文の短縮形』だとかはたまた『三項演算子は使うな』関連の記事だとか、そういうのが多いがこの記事は**ソコじゃない**という観点での内容。
:::note 実感として最も体感したコトは
**➡︎ 条件によって値の異なる“変数”を使える**
こと :::
※↓分かりやすさを目指し色分け __三項演算子 の書き方__ const valueA = true ? “A” :
# [JavaScript] 表示/非表示にif文を使わない方法 この記事は表示/非表示(あるいは可視/不可視)を実現するJavaScript(JS)についてのメモです。DEMOページは特にありません、あしからず。 HTML x JS x CSS __前提__ – アコーディオンやドロワーではない、単純にパッと表示=可視したり、非表示=不可視になったりするタイプの表示/非表示 – CSSでいう`display:none;`、`display:block;`をJSから操作するタイプ – 以降、この記事で略してfuncと書かれているのはfunctionのこと ## JSコード JSにおいて複数回出てくる頻出値であることを見越して変数化。ついでに配列化。後に出るfuncで共通。 ### 共通func “`javascript: 共通:可視/不可視func // id取得短く書く用 const $ =(id)=>{ return document.getElementById(id) }; // 可視/不可視の変数化と配列化 const blAk = “bloc
# [JavaScript] 表示/非表示にif文を使わない方法
この記事は表示/非表示(あるいは可視/不可視)を実現するJavaScript(JS)についてのメモです。DEMOページは特にありません、あしからず。 HTML x JS x CSS
__前提__ – アコーディオンやドロワーではない、単純にパッと表示=可視したり、非表示=不可視になったりするタイプの表示/非表示 – CSSでいう`display:none;`、`display:block;`をJSから操作するタイプ – 以降、この記事で略してfuncと書かれているのはfunctionのこと
## JSコード JSにおいて複数回出てくる頻出値であることを見越して変数化。ついでに配列化。後に出るfuncで共通。 ### 共通func “`javascript: 共通:可視/不可視func // id取得短く書く用 const $ =(id)=>{ return document.getElementById(id) };
// 可視/不可視の変数化と配列化 const blAk = “bloc
## はじめに Reactを学んでみようと思い、Udemyの教材で学んでいたところ分割代入でつまづきました ## 問題 const {name, age} = myProfile; の箇所で「Cannot redeclare block-scoped variable ‘name’」というエラーが発生しました 調べたところ、ブロックスコープで再宣言はできないよ!と怒られているようです “`JavaScript: const myProfile = { name: “ナマケモノ”, age: 3, }; const {name, age} = myProfile; const message2 = `名前は${name}です。年齢は${age}歳です。`; console.log(message2); “` ## 解決? エラーが出ているconst {name, age} = myProfileの行をまるまる消すと動くようになりました しかし、これで本当に分割代入としてできているのでしょうか!?(宣言も何もなしにプロパティの値をつっこんでいるだけでは???) 他の所で
## はじめに Reactを学んでみようと思い、Udemyの教材で学んでいたところ分割代入でつまづきました
## 問題 const {name, age} = myProfile; の箇所で「Cannot redeclare block-scoped variable ‘name’」というエラーが発生しました 調べたところ、ブロックスコープで再宣言はできないよ!と怒られているようです “`JavaScript: const myProfile = { name: “ナマケモノ”, age: 3, };
const {name, age} = myProfile;
const message2 = `名前は${name}です。年齢は${age}歳です。`; console.log(message2); “`
## 解決? エラーが出ているconst {name, age} = myProfileの行をまるまる消すと動くようになりました しかし、これで本当に分割代入としてできているのでしょうか!?(宣言も何もなしにプロパティの値をつっこんでいるだけでは???) 他の所で
# はじめに こんにちは![レイ](https://twitter.com/ida09r)と申します! 未経験からエンジニア目指して日々学習をしております。 今回、釣り道具に特化した「[Tackle Master(タックルマスター)](https://tacklemaster.net/)」というサービスを開発しました。 釣りに興味のある方や好きな方には、ぜひ使っていただけると嬉しいです。 ### 自己紹介 地元の工業高校で情報系コースを専攻し、PC操作やプログラミング(Python、SQL、HTML/CSS)を簡単に学びました。 卒業後は総合化学品メーカーで製造オペレーターとして約3年間勤務。その際、社内ITシステムに助けられた経験から、システム開発に興味を持ちました。 2024年2月からプログラミングスクール「RUNTEQ」に入学し、エンジニアを目指しています。 # 1.サービス紹介 「Tackle Master」は釣り道具に特化したサービスで、釣り道具の管理・登録・検索ができます。 ![tackle_service.jpg](https://qiita-image
# はじめに こんにちは![レイ](https://twitter.com/ida09r)と申します!
未経験からエンジニア目指して日々学習をしております。
今回、釣り道具に特化した「[Tackle Master(タックルマスター)](https://tacklemaster.net/)」というサービスを開発しました。
釣りに興味のある方や好きな方には、ぜひ使っていただけると嬉しいです。
### 自己紹介
地元の工業高校で情報系コースを専攻し、PC操作やプログラミング(Python、SQL、HTML/CSS)を簡単に学びました。 卒業後は総合化学品メーカーで製造オペレーターとして約3年間勤務。その際、社内ITシステムに助けられた経験から、システム開発に興味を持ちました。
2024年2月からプログラミングスクール「RUNTEQ」に入学し、エンジニアを目指しています。
# 1.サービス紹介
「Tackle Master」は釣り道具に特化したサービスで、釣り道具の管理・登録・検索ができます。
![tackle_service.jpg](https://qiita-image
# まとめ #### クラスとは > クラスはオブジェクトを作成するためのテンプレートです。処理するためのコードでデータをカプセル化します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### コンストラクタとは > クラスで作成したオブジェクトを作成して初期化するための特別なメソッドです。 “constructor” という名前の特別なメソッドは、クラスに 1 つしか定義できません。クラスに複数の constructor メソッドが存在した場合、SyntaxError が発生します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes) #### メソッドとは > メソッドはクラスごとにプロトタイプに定義され、すべてのインスタンスで共有されます。メソッドには、プレーン関数、非同期関数、ジェネレーター関数、非同期ジェネレーター
# まとめ
#### クラスとは > クラスはオブジェクトを作成するためのテンプレートです。処理するためのコードでデータをカプセル化します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes)
#### コンストラクタとは > クラスで作成したオブジェクトを作成して初期化するための特別なメソッドです。 “constructor” という名前の特別なメソッドは、クラスに 1 つしか定義できません。クラスに複数の constructor メソッドが存在した場合、SyntaxError が発生します。 ※[mdn web docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes)
#### メソッドとは > メソッドはクラスごとにプロトタイプに定義され、すべてのインスタンスで共有されます。メソッドには、プレーン関数、非同期関数、ジェネレーター関数、非同期ジェネレーター
# やったこと 深夜の思いつきでこんなものを作ってしまいました。 https://tategaki-generator.pages.dev/ このように縦書きの文章と画像を合成できます。 ![サンプル画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2546324/6d822f44-11e9-fa37-0bc5-912a87b95363.png) ソースコードはこちらです。 https://github.com/Nitoryu008/tategaki-generator # 技術スタック Vue3+Bulmaで作っています。今回、Cloudflare Pagesを使ってみたんですが、開発体験がとてもよかったです。プッシュしたら即時デプロイしてくれるのがありがたい。突然の思いつきを形にするにはもってこいですね。 # 仕組み 仕組みは割と単純で、 HTML+CSSで描画した後にDOM to Imageというライブラリを使って画像に変換しています。 HTML5だとCanvasに描画してからごにょ
# やったこと
深夜の思いつきでこんなものを作ってしまいました。
https://tategaki-generator.pages.dev/
このように縦書きの文章と画像を合成できます。
![サンプル画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2546324/6d822f44-11e9-fa37-0bc5-912a87b95363.png)
ソースコードはこちらです。
https://github.com/Nitoryu008/tategaki-generator
# 技術スタック
Vue3+Bulmaで作っています。今回、Cloudflare Pagesを使ってみたんですが、開発体験がとてもよかったです。プッシュしたら即時デプロイしてくれるのがありがたい。突然の思いつきを形にするにはもってこいですね。
# 仕組み
仕組みは割と単純で、 HTML+CSSで描画した後にDOM to Imageというライブラリを使って画像に変換しています。 HTML5だとCanvasに描画してからごにょ
# この記事のを書くきっかけ 「日付や時間の取り扱いについてうす〜く調べてみた〜その1」の続きです。 あれ、タイトル変わっちゃった。 計画立ててやらないといかんすね。汗 https://qiita.com/ikedachin/items/8d23fca666f3137fcfb1 そう、時間を扱うことがあって、少し苦労したので最小限必要なことを抜き取ってみました。 # なぜ薄く・・・なのか これ、前回、書き忘れました。 理由は簡単。「**忘れるもん**」 細かく書いても読まないし、細かく理解しても忘れる。 繰り返せば覚えるんだけど、いや、日付や時間だけをずっと扱うことも少ない。 なので、「ああ、そんな感じだよね〜」っと理解できる程度にうす〜く扱っていきたいと思います。 # 公式というか、MDN これは抑えておかねばならん。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date # 復習 MDNを読むとわかりますが、1970年1月1日の0時0分0秒を基準にしてm秒単位
# この記事のを書くきっかけ 「日付や時間の取り扱いについてうす〜く調べてみた〜その1」の続きです。 あれ、タイトル変わっちゃった。 計画立ててやらないといかんすね。汗
https://qiita.com/ikedachin/items/8d23fca666f3137fcfb1
そう、時間を扱うことがあって、少し苦労したので最小限必要なことを抜き取ってみました。
# なぜ薄く・・・なのか これ、前回、書き忘れました。 理由は簡単。「**忘れるもん**」 細かく書いても読まないし、細かく理解しても忘れる。 繰り返せば覚えるんだけど、いや、日付や時間だけをずっと扱うことも少ない。 なので、「ああ、そんな感じだよね〜」っと理解できる程度にうす〜く扱っていきたいと思います。
# 公式というか、MDN これは抑えておかねばならん。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
# 復習 MDNを読むとわかりますが、1970年1月1日の0時0分0秒を基準にしてm秒単位
# 前置き ご覧いただきありがとうございます。 Web制作会社で主にHTML・CSS・JavaScriptを書いているマークアップコーダーです。 いわゆるレガシーな環境で、未経験で入社しもう3年ほど従事していますが、 そろそろモダンなフロントエンド技術を身に着けたいと思い、 手探りに色々と勉強中です。 (JavaScript(Vanilla)も基礎が全然なのでまずはそこからですが、、) 今までいくつか書籍などで勉強しましたが、 読んで終わり、コードを写経して(ちょっとだけ変えたりして)終わりで、 「これだけでは良くないな〜」と思い、まずはざっくりですが学んだことや気になったことを記事にしようと思いました。 ## ※注 基礎もまだまだの状況ですが、とりあえず「こんな感じなんだ〜」的なことを本当にざっくり書くだけです。 誰かのためになるわけでもわかりやすいわけでもない記事です。 # TypeScriptってなんだ? 今回は「**TypeScript**」です。 ## 知る前のイメージ 名前はめちゃくちゃ聞いたことがあり、 「JavaScriptの上位互換」「JavaScriptに型
# 前置き ご覧いただきありがとうございます。 Web制作会社で主にHTML・CSS・JavaScriptを書いているマークアップコーダーです。 いわゆるレガシーな環境で、未経験で入社しもう3年ほど従事していますが、 そろそろモダンなフロントエンド技術を身に着けたいと思い、 手探りに色々と勉強中です。 (JavaScript(Vanilla)も基礎が全然なのでまずはそこからですが、、)
今までいくつか書籍などで勉強しましたが、 読んで終わり、コードを写経して(ちょっとだけ変えたりして)終わりで、 「これだけでは良くないな〜」と思い、まずはざっくりですが学んだことや気になったことを記事にしようと思いました。
## ※注 基礎もまだまだの状況ですが、とりあえず「こんな感じなんだ〜」的なことを本当にざっくり書くだけです。 誰かのためになるわけでもわかりやすいわけでもない記事です。
# TypeScriptってなんだ? 今回は「**TypeScript**」です。
## 知る前のイメージ 名前はめちゃくちゃ聞いたことがあり、 「JavaScriptの上位互換」「JavaScriptに型
圧縮業界で高い圧縮率を誇る**PAQ系列**の軽量版LPAQ5の紹介。文脈混合法により圧縮しまくっていきます。 ## やぶからぼうに実装 本家の方はmacro乱舞でやばいです。性能的にはLPAQ1より少し良いかもしれません。 “`js {const TOLIMIT1=159,TOLIMIT2=175,SQUARD=2,calcprevfail=new Uint16Array(256),SQ=new Uint16Array(4096), sqInit=d=>{ if(d>2046)return 4095; if(d<-2046)return 0; return 0|4096/(1+Math.exp(-d/256)) }, //Stretch S1=new Int16Array(4096),S2=new Int32Array(4096),D=new Int16Array(1024).map((a,b)=>16384/(b+b+3)),calcfails=new Uint8Array(8192),ST=new Uint8Array([1,3,4,7,8,9,11,15,16,17,
圧縮業界で高い圧縮率を誇る**PAQ系列**の軽量版LPAQ5の紹介。文脈混合法により圧縮しまくっていきます。
## やぶからぼうに実装 本家の方はmacro乱舞でやばいです。性能的にはLPAQ1より少し良いかもしれません。 “`js {const TOLIMIT1=159,TOLIMIT2=175,SQUARD=2,calcprevfail=new Uint16Array(256),SQ=new Uint16Array(4096), sqInit=d=>{ if(d>2046)return 4095; if(d<-2046)return 0; return 0|4096/(1+Math.exp(-d/256)) }, //Stretch S1=new Int16Array(4096),S2=new Int32Array(4096),D=new Int16Array(1024).map((a,b)=>16384/(b+b+3)),calcfails=new Uint8Array(8192),ST=new Uint8Array([1,3,4,7,8,9,11,15,16,17,
## ある日のコードレビューコメントにて > 新しくインスタンスを作って返さないとSide Effectが発生するので修正しました。 今回のコードだと発生しても問題ないですが基本的にSide Effectは発生させない方がバグになりにくくて良いです。 もし発生させる場合はコメントで明記した方が良いです。 **エンジニア6年目わい:Side Effectって知らん…何それ…怖…** ってなったので自分の理解のために簡単に調べたことをまとめました。~~プレパラートハートなので6年もエンジニアやっててそんなことも知らないのかって言わずに生温かい目で見守ってください。~~ ## Side Effectとは 日本語だと「副作用」と呼ぶようです。 https://thejs.dev/jmitchell/what-are-side-effects-and-what-you-can-do-about-them-jws こちらの説明をGoogle先生に翻訳してもらうと以下のようなものを副作用と呼ぶそうです。 > 副作用とは、関数または式の呼び出しによる状態の変更です。関数または式に副
## ある日のコードレビューコメントにて > 新しくインスタンスを作って返さないとSide Effectが発生するので修正しました。 今回のコードだと発生しても問題ないですが基本的にSide Effectは発生させない方がバグになりにくくて良いです。 もし発生させる場合はコメントで明記した方が良いです。
**エンジニア6年目わい:Side Effectって知らん…何それ…怖…** ってなったので自分の理解のために簡単に調べたことをまとめました。~~プレパラートハートなので6年もエンジニアやっててそんなことも知らないのかって言わずに生温かい目で見守ってください。~~
## Side Effectとは 日本語だと「副作用」と呼ぶようです。
https://thejs.dev/jmitchell/what-are-side-effects-and-what-you-can-do-about-them-jws
こちらの説明をGoogle先生に翻訳してもらうと以下のようなものを副作用と呼ぶそうです。 > 副作用とは、関数または式の呼び出しによる状態の変更です。関数または式に副
# 前の記事 https://qiita.com/KyongminS/items/93ab7a2fb6786104e544 # 結論 “`ts:reduceメソッド/groupByメソッドを使ってもっと簡単になる type Order = { name: string; // 商品名 price: number; // 値段 quantity: number; // 個数 } const orders: Order[] = [ { name: ‘トマト’, price: 100, quantity: 1 }, { name: ‘トマト’, price: 100, quantity: 2 }, { name: ‘マンゴー’, price: 200, quantity: 1 }, { name: ‘イチゴ’, price: 250, quantity: 3 } ]; const reduceSameProductsKai = (orders: Order[]) => { return Object.values( Object.
# 前の記事 https://qiita.com/KyongminS/items/93ab7a2fb6786104e544
# 結論 “`ts:reduceメソッド/groupByメソッドを使ってもっと簡単になる type Order = { name: string; // 商品名 price: number; // 値段 quantity: number; // 個数 }
const orders: Order[] = [ { name: ‘トマト’, price: 100, quantity: 1 }, { name: ‘トマト’, price: 100, quantity: 2 }, { name: ‘マンゴー’, price: 200, quantity: 1 }, { name: ‘イチゴ’, price: 250, quantity: 3 } ];
const reduceSameProductsKai = (orders: Order[]) => { return Object.values( Object.
かつて圧縮業界で最強を誇った**PAQ8**を軽量化した`fp8`の紹介。例によって文脈混合法により圧縮しまくっていきます。 ## 実装 本家よりとんでもなく手抜きしまくっています。jpegとかexeとか色々対応が欠落。全部実装すると莫大な量になります。ちなみに**超低速**です。 “`js function hash(a,b,c){ c=((a>>>16)*52643+(c=a&65535)*3051<<16)+c*52643; c+=((b>>>16)*55539+(c=b&65535)*457<<16)+c*55539+4064955751; return c^c>>>9^a>>>2^b>>>3^201326591 } function hash3(a,b,c,d){ d=((a>>>16)*52643+(d=a&65535)*3051<<16)+d*52643; d+=((b>>>16)*55539+(d=b&65535)*457<<16)+d*55539; d+=((c>>>16)*271+(d=c&65535)*763<<16)+d*271+41149599
かつて圧縮業界で最強を誇った**PAQ8**を軽量化した`fp8`の紹介。例によって文脈混合法により圧縮しまくっていきます。
## 実装 本家よりとんでもなく手抜きしまくっています。jpegとかexeとか色々対応が欠落。全部実装すると莫大な量になります。ちなみに**超低速**です。 “`js function hash(a,b,c){ c=((a>>>16)*52643+(c=a&65535)*3051<<16)+c*52643; c+=((b>>>16)*55539+(c=b&65535)*457<<16)+c*55539+4064955751; return c^c>>>9^a>>>2^b>>>3^201326591 } function hash3(a,b,c,d){ d=((a>>>16)*52643+(d=a&65535)*3051<<16)+d*52643; d+=((b>>>16)*55539+(d=b&65535)*457<<16)+d*55539; d+=((c>>>16)*271+(d=c&65535)*763<<16)+d*271+41149599
# 厳格な等価性と抽象的な等価性 JavaScript特有の文法である`===`と`==`の使い分けをまとめます。 ## 厳格な等価性(`===`) 2つのオペランドを比較して論理値で結果を返す。 2つのオペランドの型が異なる場合には常に偽と判断する。 “` console.log(‘Hello’ === ‘Hello’); > true console.log(‘Hello’ === ‘hogehoge’); > false console.log(‘1’ === 1); > false console.log(0 === false); > false “` ## 抽象的な等価性(`==`) 2つのオペランドの型変換を行い、比較してから論理値で結果を返す。 “` console.log(‘Hello’ == ‘Hello’); > true console.log(’10’ == 10); > true console.log(‘false’ == 0); > true console.log(0 == undefined); > true “` #
# 厳格な等価性と抽象的な等価性 JavaScript特有の文法である`===`と`==`の使い分けをまとめます。
## 厳格な等価性(`===`) 2つのオペランドを比較して論理値で結果を返す。 2つのオペランドの型が異なる場合には常に偽と判断する。
“` console.log(‘Hello’ === ‘Hello’); > true
console.log(‘Hello’ === ‘hogehoge’); > false
console.log(‘1’ === 1); > false
console.log(0 === false); > false “`
## 抽象的な等価性(`==`) 2つのオペランドの型変換を行い、比較してから論理値で結果を返す。
“` console.log(‘Hello’ == ‘Hello’); > true
console.log(’10’ == 10); > true
console.log(‘false’ == 0); > true
console.log(0 == undefined); > true
“`
#
# 初めに 今回はサーバーが稼働しているかを確認するもの(※)をhtmlとjsで書きます ※…サーバからの応答があれば全部200で返します # ファイル構成 今回はhtmlファイル一つで大丈夫です # コードをコピペ “`html:main.html サーバーチェッカー テスト チェック ※このコ
# 初めに 今回はサーバーが稼働しているかを確認するもの(※)をhtmlとjsで書きます ※…サーバからの応答があれば全部200で返します # ファイル構成 今回はhtmlファイル一つで大丈夫です # コードをコピペ “`html:main.html
チェック
※このコ
## はじめに [こちらの記事](https://qiita.com/course_k/items/6dc46afa9665ce1703ba)でPromiseについてまとめましたが、まだ非同期処理についての理解が足りていないなと感じています。 今回は非同期処理を書くうえで避けては通れないasync/awaitについて深堀りします。 ## async/awaitとは何か async/awaitは、JavaScriptで非同期処理を扱うための構文です。 Promiseベースの非同期処理をより簡潔に、同期的な見た目で書くことができます。 それぞれ以下の役割があります。 * `async`:非同期関数を定義するために使用する * `await`:Promiseの結果が返されるまで処理を一時停止する ## async/awaitの特徴 async/awaitには、以下のような特徴があります。 1. 読みやすさの向上 Promiseの`.then()`チェーンよりも、直感的に読めるコードになります 2. エラーハンドリングの簡素化 try-catch文を使って、同期処理と同
## はじめに [こちらの記事](https://qiita.com/course_k/items/6dc46afa9665ce1703ba)でPromiseについてまとめましたが、まだ非同期処理についての理解が足りていないなと感じています。
今回は非同期処理を書くうえで避けては通れないasync/awaitについて深堀りします。
## async/awaitとは何か async/awaitは、JavaScriptで非同期処理を扱うための構文です。 Promiseベースの非同期処理をより簡潔に、同期的な見た目で書くことができます。 それぞれ以下の役割があります。 * `async`:非同期関数を定義するために使用する * `await`:Promiseの結果が返されるまで処理を一時停止する
## async/awaitの特徴
async/awaitには、以下のような特徴があります。
1. 読みやすさの向上 Promiseの`.then()`チェーンよりも、直感的に読めるコードになります
2. エラーハンドリングの簡素化 try-catch文を使って、同期処理と同
[GRZipII編](https://qiita.com/mashuel/items/d660f5daa8a49cf97431)第2話。 ## 原理 BlockSort -> WFC -> RLE -> Range符号 という流れで圧縮。MTFより強力なWFC搭載で圧縮率向上となりやすい。 ## 実装 “`js function compare(R,a,b,i,n,r){ for(n-=a
[GRZipII編](https://qiita.com/mashuel/items/d660f5daa8a49cf97431)第2話。
## 原理 BlockSort -> WFC -> RLE -> Range符号 という流れで圧縮。MTFより強力なWFC搭載で圧縮率向上となりやすい。
## 実装 “`js function compare(R,a,b,i,n,r){ for(n-=a