BEMの命名規則などメモ
最初はnameをlinkの外で定義していたが、BEMの命名規則を利用して親子や兄弟関係を明確に示す
.link:hover
の中に.link__name
のスタイルをネストさせることで、.link
がhover状態の際に適用される.link__name
のスタイルを明示的に示す&__name
の部分で&
を使って.link
の子要素である.link__nam
e を示し、.link
と.link__name
の関係を明確にする
no-descending-specificity のルールに従う
&__name
を.link__name
の前に置くことで、スタイルの上書きや意図しないスタイルの適用を防ぐ
変数を使う
- スタイルの変更時に書き換える箇所が減り、意図しないスタイルの適用を防ぐ
<template> <div :class="$style.link"> <img :src="imageUrl" :class="$style.image" /> <p :class="$style.link__name">omegaさん</p> </div> </template> <script> ... </script> <style lang="scss" module> .link { ... &__name { color: blue; } &:hover { text-decoration: none; .link__name { color: red; } } } .image { $size: 30px; width: $size; height: $size; border-radius: $size; } </style>
握りつぶしについてまとめ
エラーを返さない(握りつぶす)実装が問題な理由:
エラーハンドリングの透明性が失われる エラーが発生時に呼び出し元にエラーを返さないと、呼び出し元はそのエラーが発生したことに気づくことができない。 その結果、プログラムは予期しない状態になり、デバッグが困難になる。
障害の伝播が阻まれる エラーを上位の関数に伝播させることで、より適切なエラーハンドリングや復旧処理を実行できるようになる。 握りつぶしてしまうと上位の関数がエラーを感知できず、問題に対処する機会が失われる。
デバッグが困難になる エラーを握りつぶすと問題が発生した箇所を特定するのが難しくなる。 エラーが発生した場所や原因を特定しやすくするためには、エラーを適切に伝播させ、エラーメッセージやstacktraceを利用することが重要。
可読性や保守性が低下する エラーを返さないことでコードの可読性や保守性が低下する。 他の開発者がコードを理解し、修正や拡張を行いにくくなる。
以上の理由から、エラーを適切に返すことが重要。 基本的には、関数がエラーを返すべき状況でエラーを返し、呼び出し元で適切なエラーハンドリングを行うことが望ましい。親関数にエラーを返して、そのエラーに対処することで、プログラムの堅牢性や保守性が向上する。
macOS 13.2.1でGVMを使ったGoの環境構築手順
1. Xcode Command Line Toolsのインストール
Xcode Command Line Toolsが必要なのでインストールされていない場合は以下のコマンドを叩いてインストールする。
xcode-select --install
2. GVMのインストール
ターミナルで以下を実行する。
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
インストール完了後、~/.zshrc に以下の行を追記。
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
設定ファイルを更新したら設定を読み込ませる。
source ~/.zshrc
3. Goのインストール
インストール可能なGoのバージョンを表示する
gvm listall
使いたいバージョンのインストール
gvm install go1.19
4. Goのバージョンを選択
インストールしたGoのバージョンを選択する。デフォルトにしたい場合は --default
オプションをつける。
gvm use go1.19 --default
5. バージョン確認
これで意図した通りのGoのバージョンが入っていたら成功。
go version
golangでgoogleのindexing APIを使う
goでgoogleのindexing api を使う機会があったのでその覚書き。
基本的にこの手順に沿ってやればOK
Indexing API を使用する前提条件
このページの手順に沿って準備していく。
いくつか補足:
サイトの所有権を確認するときはGoogleTagとかでもできる。便利だしDNS確認とかするより遥かに楽。
ウェブマスターセントラルのプロパティはオーナーじゃないと追加したり確認の詳細が見れないしいじれない
このツールはまもなく利用できなくなります。確認トークンは Search Console で直接管理してください。
と警告がでるけど、2023年4月現在において、Search Consoleで「サイト所有者を追加」してもAPIが使えない。ウェブマスターセントラルのプロパティで、「確認の詳細」を押す→「確認済みサイト所有者」にサービス アカウント IDを追加しないといけない。- 登録するサービスアカウントはcredential.jsonをダウンロードしたアカウント
APIを使えるようにする
- Google Cloud Platform で任意のプロジェクトを選択後、indexingと検索して「indexing API」を選択し、APIを有効にする。
大体の実装
import ( "fmt" indexing "google.golang.org/api/indexing/v3" "google.golang.org/api/option" ) : func urlIndexingUpdate (ctx context.Context) error { indexingService, err := indexing.NewService(context.Background(), option.WithCredentialsJSON(PATH_TO_JSON_ENV))) if err != nil { return nil, fmt.Errorf("failed to create indexing service: %w", err) } // update indexing targetUrl:= "https://hogehoge.jp/xxxxxx" _, err = indexingService.UrlNotifications.Publish(&indexing.UrlNotification{ Url: targetUrl, Type: "URL_UPDATED", // or "URL_DELETED" }).Do() if err != nil { return fmt.Errorf("failed to indexing: %w", err) } return nil }