かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Google Chrome 勝手にhttpsにリダイレクトされるにハマる

テスト環境作ってて.htaccessを弄ってて誤って不要なページをhttpsにリダイレクトさせる設定にしてしまい、その後.htaccessを修正したのですが、Chromeで確認してると設定はないのに自動的にhttpsにリダイレクトされ続ける現象にハマってしまいました。

クッキーを削除しても解決せず、調べていると 「chrome://net-internals/#hsts」にアクセスして、Delete domain security policiesで該当ドメインを削除するとか出てきたのですが解決せず...

キャッシュが原因

chrome://net-internals/#eventsで該当のドメインを検索してみるとSource Type DISK_CACHE_ENTRYhttpsにリダイレクトされていました。

どうやらリダイレクトした結果をChromeがキャッシュしてそれが表示されていたために、.htaccessの設定を直してもリダイレクト状態になっていたようです。

解決方法「設定からキャッシュされた画像とファイルを削除する」

Chrome 設定 > 詳細設定 > 閲覧履歴データを消去する > 「キャッシュされた画像とファイル」にチェックを入れデータ消去を実行

これで設定されてないのにリダイレクトされる現象は解決しました。
ブラウザで問題が起きたら、まずはクッキーとキャッシュを削除ですね…
(特定のドメインのキャッシュだけを削除する機能って無いのかな?


Googleスプレッドシート 数字を3桁コンマ区切りでフォーマットしたい。

金額とか、大きな数字を10,000のような3桁コンマ区切りにしたい時、セルに数字が入っているだけなら書式を変更すれば済みますが、合計: 10,000みたいにラベルを入れたいような時文字列になってしまうのでセルごと書式変更をすることができません。

例えばA1A5の合計を表示したいような時はこんな感じになっているかと思います。

= "合計: " & SUM(A1:A5)

このままでは、合計: 10000という感じで数字は3桁コンマ区切りにはなりません。

TEXT関数でフォーマットする

TEXT
指定した表示形式に従って、数値をテキストに変換します。
TEXT(数値, 表示形式)
出典: TEXT - ドキュメント エディタ ヘルプ

フォーマットに使う「表示形式」はスプレッドシートのメニュー「表示形式」から
「数字 ▶ 表示形式の詳細設定 ▶ カスタム数値形式..」を選択すると表示されるモーダルに 表示形式とどうフォーマットされるかが表示されるので、これを参考にします。

f:id:kikiki-kiki:20181023121217p:plain

3桁コンマ区切りのフォーマットは「#,##0」を使えば良さそうです。
さっきの合計数の部分をTEXT()でフォーマットすればOKです。

= "合計: " & TEXT( SUM(A1:A5), "#,##0" )

↓ 表示
合計: 10,000

これでラベルを入れた数字を3桁コンマ区切りにすることができました。
簡単ですね!(・ω<)


[参考]

JavaScript (ES2015) アロー関数 省略した書き方とかのメモ

ES2015/ES6で追加されたアロー関数()=>{...}thisを拘束できるのがメインだと思っているのですが、色々と省略した書き方ができるようで、まだ不慣れなのでライブラリとか参考のコード見てる時に何だっけ?となりがちだったので省略した書き方のメモ。

アロー関数の基本形

(param1, param2) => {
 // ... 処理
}

関数名を付けて定義

const func = (param) => {
  // ... 処理
}

引数が1つのとき()を省略できる

(param) => { ... }

↓ 省略形

param => { ... }

値を返すだけの関数のときreturn{}を省略できる

(param) => { return val }

returnを省略

(param) => { val }

{}も省略

(param) => val
{}だけ省略はエラーになる
(param) => return val
// SyntaxError: Unexpected token return

オブジェクトを返す時は()で囲う

返すオブジェクトを()で囲わないと、オブジェクトの{}が関数のブロックと解釈される
ex: {cute: '星宮いちご'}というオブジェクトを返す関数

const foo = (param) => {cute: '星宮いちご'}
foo() // undefined

()で囲ってないとエラーにはならないがundefinedが返る
返すオブジェクトを()で囲む ↓

const foo = (param) => ({cute: '星宮いちご'})
foo() // {cute: '星宮いちご'}

↓ 下記と同様

const foo = (param) => {
  return {cute: '星宮いちご'}
}

正直{ return {...} }で良くない?って感じる…

const foo = (param) => { return {cute: '星宮いちご'} }

慣れの問題かもだけど、引数の()を省略は見づらい... 値を返すだけの関数を1行で書いて{}return省略するのは、返す値がオブジェクトや複雑な計算式だとやっぱ見通しが悪い気がしてます。
チームでの開発ならprettierとかフォーマッターを導入するか、書き方のルールを決めておかないと、省略形が入り乱れると結構混乱しそうって思いました。


これから学ぶ JavaScript

これから学ぶ JavaScript