- 1. {{ msg }}
- 1.0.1. scrollMagic.jsで スクロールしたら fadein させるの作ってみた
- 1.0.2. 【Vue】モーダルの実装を通して学ぶ.sync修飾子(ついでにv-model復習)【Gif多数】
- 1.0.3. Kinx アルゴリズム – 挿入ソート
- 1.0.4. 50倍高速なi18n(多言語)対応をLisan.jsでしてみる with React
- 1.0.5. thisについて
- 1.0.6. LINEを使った注文システム
- 1.0.7. RailsでBootstrapのdropdownが使えない
- 1.0.8. JS 定義されていないundefinedを条件分岐
- 1.0.9. javascript基礎 非同期処理編
- 1.0.10. javascriptのif文を知る
- 1.0.11. [D3.js] たのしいグラフ描画 – ラベル位置を工夫した円グラフ
- 1.0.12. MongoDB(Mongoose)上級者への道
- 1.0.13. document.querySelector() でclassやidを取得する
- 1.0.14. MouseDictionaryを読んでエスペラント語用に改造した
- 1.0.15. smooth-scroll.js webpack対応
Javascript/TypescriptでOptional Chainingが使えるようになるらしい。
ECMAScript2020の新機能の一つに、Optinal Chainingが入っていました。
これはSwiftなどではすでに使える構文で、値が入っているかどうかわからない変数にアクセスする場合、手前に?をつけておくことでnullpointerExceptionなどのエラーが発生しないようすることができる機能です。例えば、foo.barの中にあるbaz関数を実行したい。でも、fooの中にbarが入っていない事がある場合、記述するプログラムはそのことを考慮して以下のようになります。
“`
let x = (foo === null || foo === undefined) ?
undefined :
foo.bar.baz();
“`これが、Optional Chainingを使うことによって以下の記述となります。
“`
let x = foo?.bar.baz();
“`Typescript3.7のリリースノートを見ると、Typescriptではすでにこの記法は利用できるようになっている様です。
是非活用して行きたいですね。
###
【JavaScript】乱数の作り方
#【JavaScript】乱数の作り方
###0~1未満の値を生成する
Math.random() * 1
つまり
Math.random()###0~3未満の値を生成する
Math.random() * 3
小数点以下の値を含む
###0~3未満の整数(0,1,2)を生成する
Math.floor(Math.random() * 3)
切り捨てにMath.floorを使い小数点以下の値を含まない
###0~4未満の整数(0,1,2,3)を生成する
Math.floor(Math.random() * (1 + 3))
つまり
Math.floor(Math.random() * (4))###0~max未満の整数(0,…,max)を生成する
Math.floor(Math.random() * (1 + max))
###min~maxの整数を生成する
Math.floor(Math.random() * (1 + max – min)) + m
【JavaScript】平均の求め方
#【JavaScript】平均の求め方
##平均の求め方
配列(scores)と合計を格納する変数(sum)を用意
const scores = [10, 23, 34];
let sum = 0;forEachを使いsumに格納
scores.forEach(score => {
sum += score;
})定数(average)に求めた平均の値を入れる
const average = sum /scores.length;
結果は22.3333…
求める形へと処理する。console.log(Math.floor(average));//22 切り捨て
console.log(Math.ceil(average));//23 切り上げ
console.log(Math.round(average));//22 四捨五入
console.log(average.toFixed(1));//22.3 小数点第一位で四捨五入
console.log(averag
【JavaScript】find,filterメソッドの違い、使い方
#【JavaScript】find,filterメソッドの違い、使い方
##findメソッド
配列から条件に一致した最初の値を返す。調査対象の配列.find((引数)=>{
return 条件;
}const numbers = [1, 2, 3, 4, 5, 6];
const foundNumber = numbers.find((number) => {
return number > 3;
});console.log(foundNumber);//4
・findメソッドでは1つしか値を取得できない
引数、条件が1つの場合ここまで省略可能
const foundNumber = numbers.find(number => number > 3);
##filterメソッド
配列から条件に一致した値をすべて返す。調査対象の配列.filter((引数)=>{
return 条件;
}const numbers = [1, 2, 3, 4, 5, 6];
const fi
firebase + vue.js でメールを確認した後にuser登録できる機能を作る
firebaseのメール確認付きのユーザー認証の方法が、
・フォーマットが決まってしまう
・メール確認前にauthに登録されてしまう等と少し問題があるように感じたので
(もしかしたら他の方法で対処できるのかもしれませんが…)
一応(無料で)対処できるかもよということで共有したいと思います。
方針としては、
createUserForm -> メールに確認用生成コード送信 -> 記入 -> 登録
という方針で進んでいきます。僕は、vue cliで慣れてるので、
“`vue ui“`
でvueprojectを作成していきます
(ここは省略します。色々他記事であると思うので参照してください)
作成が完了したら、HelloWorld.vueを編集して認証をできるように
front側を完成させていきます。“`vuejs:HelloWorld.vue
{{ msg }}
scrollMagic.jsで スクロールしたら fadein させるの作ってみた
# やりたかったこと
スクロールしたらfadeinする簡易なアニメーションの設置# 方法
一定の位置にスクロールしたらdata属性の中身を変えてCSSに変化をつける
# やること
## yarn
“`
yarn add scrollmagic
“`## コード
“`scrollMagic.js
import ScrollMagic from ‘scrollmagic’;
class ScrollFade {
constructor() {
this.ANIMATION_DATA = ‘data-fadein-animation’;
const defaultDataType = `[${this.ANIMATION_DATA}=”false”]`;
const $section = document.querySelectorAll(defaultDataType);if ($section.length === null) {
return;
}const controller = new
【Vue】モーダルの実装を通して学ぶ.sync修飾子(ついでにv-model復習)【Gif多数】
# さいしょに
Vue 2.3.0から新たに追加された`.sync`修飾子、使いこなせているでしょうか? この記事は`sync`をイマイチ使いこなせていない自分向けの勉強録です。
`.sync`を使うと、「*子要素で親要素から受け取った値を変更できる*」ような感覚が得られます(ただし、実際は子要素から親要素にイベントを渡しているだけです)。
以下のような検索モーダルを実装を通して、v-modelの復習をしながら、.sync修飾子を学びます。さらにはv-modelと.syncの違いについても学べるという寸法です。![2020-05-05 01.14.51.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/297745/c13f7a54-5e00-1c0c-3fd7-61e127fba01d.gif)
※ご注意。この記事では主役である.syncが登場するのは一番最後です。
# 対象者
– Vueチョットワカル
– v-modelが何となく使える
– `.sync`の使い方がいまいちわからない
– 「Kinx アルゴリズム – 挿入ソート
# アルゴリズム – 挿入ソート
## はじめに
**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。「プログラム=アルゴリズム+データ構造」。アルゴリズムの実装例をご紹介。
元ネタは「C言語による(30年経っても)最新アルゴリズム事典」。今回はソート(挿入ソート)です。
* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。アルゴリズムと言えばソート。挿入ソート。
## 挿入ソート
*
50倍高速なi18n(多言語)対応をLisan.jsでしてみる with React
こんにちは、UIデザイナ兼フロントエンジニアの[ロモット](https://twitter.com/romotco)です。
[Lisan.js](https://lisanjs.com/)という **超高速をうたう国際化ライブラリ** を試してみました。## 概要
フロントエンドJSにおいて
他の国際化ライブラリよりも **50倍高速** かつ **軽量** だとうたう [Lisan.js](https://lisanjs.com/) を使ってみます。
プラグインを使用することでローカライゼーション(l10n)も行うことが可能なようです。**create-react-app** で作成したReactアプリを前提にしています。
– Lisan.jsをインストールする
– React(JSX)でも使えるようにしてみる
– 開発中に辞書を更新されるようにする## インストール
### yarnの場合
“`
yarn add lisan // 本体
yarn add lisan-cli -D // 開発/デプロイ用クライアント
“`## 環境設定
開発中にLisan
thisについて
オブジェクトのthisについて。
thisを
関数宣言の中で使う時と、アロー関数内で使う時ではthisの指す物が違ってくる。“`index.js
const text = ‘global_text’;const obj = {
text: ‘obj_text’,
func: function() {
console.log(this);
console.log(text);
console.log(this.text);
}
};const obj2 = {
text: ‘obj_text’,
func: () => {
console.log(this);
console.log(text);
console.log(this.text);
}
};obj.func();
obj2.func();
“`これを実行した結果はこんな感じです↓
#LINEで注文システム作ってみた
皆さんこんにちは、たんてぃです。はじめてのQiita投稿ですが、頑張って書いていこうと思います。2年くらい前に思いついたシステムをLINE botで作ってるんですが、先に同じようなことやってる企業があって、まねされるとか思ってるような段階でもないなって思ったんでシステムの内容とコードを公開しちゃおうかと思います!## 目次
* 僕が作ったシステム
* 開発手順
* どうやって作るか調べる
* 必要な機能の実装
* テスト
* 実際に作ったシステム## 僕が作ったシステム
僕が作っているのはたまにレストランに置いてある注文用のタブレットの代わりにお客さんのスマホから注文ができるようにするシステムです。
このシステムのいいところはタブレットを店側で用意する必要がないので、初期導入費用が抑えられることです。
通常だと注文用のタブレットって大型のチェーン店でしか導入されていなくて、個人経営の店で注文システムが導入されているところはほとんどありません。それはレストランのような飲食店では支出が多いため設備投資に回せる資金RailsでBootstrapのdropdownが使えない
## 開発環境
“`
Rails 6.0.2
ubuntu(WSL)
Bootstrap 4
“`
前提として、cssファイルは読み込まれているものとします。### 想定エラー
クリックしてもメニューがでてこない。
ターミナルにエラーは出てこない状態。### 原因
– ブラウザにjavascriptが読み込まれていない
– HTMLのコードが間違っている今回は上の場合を想定しています。
## 解決策
### jqueryを使えるようにする
Gemfileに以下を追加します。
追加後にターミナルに`bundle`を入力してください。“`Gemfile
gem ‘jquery-rails’
“`### ブラウザにjavascriptを読み込ませる
“`application.html.slim
= javascript_include_tag ‘application’, ‘data-turbolinks-track’: ‘reload’
“`### プリコンパイルするファイルを設定
“`config/initializers/assets.rb
JS 定義されていないundefinedを条件分岐
##きっかけ
わかりにくいタイトルですが、生JSで作成物を作っていて、条件分岐でundefinedエラーが出てしまい、どうしようかと考えていたら、そのままundefinedを使用できるtypeofという演算子。
他の言語で似たような演算子はあったが、今まで使ったことなかった。“`
typeof 定義されていないオブジェクト
#返される値
undefined“`
なのでこういった風に使いました。
“`
if (typeof 定義されていないオブジェクト !== ‘undefined’){
オブジェクトが定義されていた場合の処理
}
“`##typeof演算子
データ型を返す。引き渡された値の型の確認に使う。他にもnullやBoolean(真偽値)など、さまざまなデータ型を返すため色々なパターンの条件分岐などにも使えたりする。##まとめ
色々書くことはあるけれど、終わらなくなってしまうので今回はここまで。javascript基礎 非同期処理編
javascriptを知る上でかなり重要な概念かと思っています。
できる限り、シンプルに記載していこうと思います。##非同期処理(async)と同期処理(sync)
どちらもメインスレッドで実行されますので、少なからずどちらも影響を受けます。
同期処理とは順番にタスクを処理されることをいいます。
非同期処理はも同期処理同様順番に処理されますが、一つの非同期処理が終わるのを待たずに次の処理に移ります。
つまり、複数同時に処理されているタスクがあります。### Promiseとは
非同期処理の結果を表すビルトインオブジェクトになります。
エラーファーストコールバックとゆうルールを発展させたもので、
オブジェクトの形で統一的な見た目で扱うことができるようになっています。“`js
const promise = new Promise((resolve, reject) => {
// 成功したときはresolve()
// 失敗したときにはreject()
resolve() //resolve
});const onResolve = () =
javascriptのif文を知る
javascriptは今まで雰囲気で使っていて、HTML4.01時代にちょっと動きをつけてみたいなという感じでコピペをするところから、jQueryの登場、Nodejsの登場、それにまたがりES6でいきなり書き方が変わるなど[^1]、環境が大きく変わっていました。
元々プログラミングの入門でCを学んでいたこともあり、javascriptは雰囲気で書けばわりとなんとかなる感じだったのでそのまま生きてきましたが、ここらで再入門ということで1から学んでいきたいと思います。さわりはじめ当初は「こんなものか」とフワっと受け入れていた感覚を知識に変える作業ですね。今回はif文。
#if文の基本
“`javascript
if(/*条件式*/){
//式がtrueの時に実行される
}else{
//条件がfalseの時に実行される
}if(/*条件式*/) /*処理が1行だけなら{}はいらない*/;
“`
これが普段よく見るif文の説明ですね。もともとこの記法に似た言語を経験していたらこれを見ただけでスルーしてしまうところです。
しっかりと理解していきましょう。
#j[D3.js] たのしいグラフ描画 – ラベル位置を工夫した円グラフ
D3.jsを使って単純な円グラフを描画します。ラベルも付けてみます。
# 元データ
元データです。
キーと値のハッシュになっています。“`json
testdata = {
水分: 95.4,
タンパク質: 1.0,
脂質: 0.1,
炭水化物: 3.0,
灰分: 0.5
}
“`# できあがりイメージ
グラフの右側にラベルを置き、円弧と線で結んでみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59475/30333857-8206-861e-cb67-e74429af018e.png)
# プログラム
プログラムの一部です。
線分は `d3.lineRadical` でひきました。
lineRadicalに渡す値は、以下のように計算しました。“`javascript
const calcLineRadical = d => {
const firstAngle = d.midAngle;
const fMongoDB(Mongoose)上級者への道
MongoDBはNoSQLなため、列の定義の拡張が難しいRDBMSに対して柔軟に列定義の拡張が可能です。(マイグレーションが楽)
また一般的にNoSQLはRDBMSに対してパフォーマンス面で優位です。
NodeJS+Mongooseで使う前提でお話します。
セットアップから検索、書き込み、パフォーマンス向上テクニックからトランザクションまでよく使う機能に関してまとめました。
Node v12、MongoDB v4.2.5以上を前提に書いてます。[GitHubサンプル](https://github.com/teradonburi/mongo)
# セットアップ
MongoDBインストール“`sh
$ brew tap mongodb/brew
$ brew install mongodb-community
$ brew services start mongodb-community
“`mongooseインストール
“`sh
$ npm install mongoose
# もしくは
$ yarn add mongoose
“`mongooseでmon
document.querySelector() でclassやidを取得する
# やりたかったこと
jQueryのような感覚で高さを取得したい
# 結論
document.querySelector()を使おう
# 例 今回はdata属性
“`js
const headerHeight = document.querySelector(‘[data-scroll-header]’).clientHeight;
“`“`jQuery
const headerHeight = $(‘[data-scroll-header]’).height();
“`# 参考
https://developer.mozilla.org/ja/docs/Web/API/Element/querySelector
https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAllMouseDictionaryを読んでエスペラント語用に改造した
[MouseDictionary]( https://github.com/wtetsu/mouse-dictionary ) をエスペラント語向けに改造したlina_dicto_wemdを書いた。
その際にMouseDictionary (以下MD)のコードを読んだ。その際に書いたメモをここに残す。lina_dicto_wemd:
– [For Chrome]( https://chrome.google.com/webstore/detail/mlladnmekfebjllfgofppdaekfabfdgi/publish-accepted?authuser=0&hl=ja )
– [For Firefox]( https://addons.mozilla.org/ja/firefox/addon/lina_dicto-wemd/ )
– [GitHub]( https://github.com/MichinariNukazawa/mouse-dictionary/tree/esperanto-variant-lina-dicto )smooth-scroll.js webpack対応
# yarn
“`
yarn add smooth-scroll
“`# ファイル作成
“`smoothScroll.js
import SmoothScroll from ‘smooth-scroll’;// 固定しているheaderの高さを取得
// const headerHeight = $(‘[data-scroll-header]’).height();
const headerHeight = document.querySelector(‘[data-scroll-header]’).clientHeight;
const options = {
selector: ‘[data-scroll]’, // スムーススクロールが有効なリンクに付ける属性
selectorHeader: ‘[data-scroll-header]’, // 固定ナビに付ける属性
// speed: 500, // 到達するまでの総時間(ミリ秒)
// easing: ‘easeInOutCubic’, // スピードの種類
offset: headerHe関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.20
JAVA関連のことを調べてみた
-
- 2024.09.20
iOS関連のことを調べてみた
-
- 2024.09.20
JavaScript関連のことを調べてみた
-
- 2024.09.20
Rails関連のことを調べてみた
-
- 2024.09.20
Python関連のことを調べてみた
-
- 2024.09.20
Lambda関連のことを調べてみた