VS CODE for the Webを使ってみた

Stack Overflow 2019 Developer Surveyで最も人気のある開発者環境ツールとしてランクインし(wikipedia参照)、2021年現在テキストエディタ戦国時代を制した感のあるVS CODE。個人的にも以前からMicorosoftのアプリケーションでは久々の当たりだなぁと思っていたのですが、2021年10月20日にwebブラウザ版がリリースされました。

ということで少し触ってみたいと思います。

必要なことはURLを叩くだけ

ブラウザを起動して「https://vscode.dev/」にアクセスするだけでエディタが起動。たったこれだけなので割りとガチめにびっくりしますw立ち上がりも一瞬。

そしてサイドメニューの「Open Folder」をクリックするとローカルファイルにアクセスするのがすごい。

Dockerで仮想開発環境を利用してたとしてもローカルにマウントしたファイルを編集するので特に問題なくVS CODE for the Webは活用できるんじゃないでしょうか。

気になる環境設定や拡張機能について

とはいえテキストエディタといえば自分が作業しやすい設定や拡張機能を追加してなんぼというところなので、いくらWeb版があるからといってそこんところどうなの?

・環境設定はローカルストレージなどに保存している模様。一度設定した環境は維持されます
・拡張機能については一部のものだけ利用可能のようです。残念。(日本語化プラグインも未対応)
 PHP系はLINT系(構文チェック)ツールやスニペットなどはほぼほぼ対応中のようです。
 逆にHTML5やJavaScript系は割とある様子。Pythonなんかもちらほらという塩梅。
・「GitHubの機能も統合しているため、リポジトリ、コードスペース、プルリクエストの拡張機能が利用できる。 「github.dev」はWeb用VSCode向けにカスタマイズされたインスタンスで、ログインが自動で行なわれ、.comを.devに変更すればリポジトリを編集できる。とのこと(出典『「Visual Studio Code」がインストール不要に。Webブラウザで動作|PC Watch』)

vimは使えましたw

Setting Syncで同期可能

GithubもしくはMicrosoftアカウントでサインインすればローカルアプリのVS CODEの設定を引き継ぐことができるようです。

詳細はリファレンスで確認することができます。

まとめ

かなり良い線までいってるのですが拡張機能が未対応のものが多いので、Web版をメインに据えるのはまだまだ厳しそうですね。今後の動向に期待したいところ。
VS CODEでは最近、悪意のあるプラグインによるセキュリティが問題になっていたりするので、クラウド上ならセキュリティ対策が最速で対応されそうですし、その辺は価値があるかもしれません。
今のところはサーバーなどを介さずフロントのみで実行できるようなスクリプトを作成するなんかには合っているのでプログラミングのお勉強などで利用するのにはちょうど良さそうです。

SolrCloudにおけるレプリカの種類

ドキュメント数の非常に多いコレクションを扱う場合、複数のシャードを作ってデータを分けることができます。ドキュメントはそれぞれ複数のシャードのどれか1箇所にだけ属します。
シャードは1個以上のレプリカから構成されます。同じシャードに属するレプリカの内容はすべて同じです。シャードのうちどれか一つがリーダーとして選ばれます。

インデックス対象のドキュメントがSolrに送られてきたとき、まずそのドキュメントがどのシャードに属するべきかが決定され、そのシャードのリーダーにドキュメントが送られます。そして同じシャードに属する他のレプリカすべてにリーダーからドキュメントが転送されます。

レプリカにはいくつか種類があります。

NRT(= NearRealTime)

  • デフォルトの設定。トランザクションログを保持しつつ自身のローカルのインデックスの更新も行う。
  • リーダー選出の候補となる。

TLOG

  • トランザクションログの維持はするが、自身ではローカルのインデックス更新は行わない。
  • このタイプのレプリカはコミットを実行する必要が無いのでインデックスの速度向上が見込める。
  • このタイプのレプリカでインデックスを更新するには、リーダーからインデックスをレプリケートする。
  • リーダー選出の候補となる。
  • もしもリーダーに選出された場合には、NRTレプリカと同様に動作する。

PULL

  • トランザクションログの維持もローカルのインデックス更新もせず、リーダーのインデックスのレプリケーションのみを行う。
  • リーダー選出の候補にはならない。

レプリカのうちどれかはリーダーにならなければならないので、シャードのレプリカをすべてPULLだけで構成することはできません。
Solrリファレンスでお薦めされているレプリカタイプの組み合わせは以下の通りです。

すべてNRT

更新のリアルタイム性が必要でありインデックス更新のスループットがそれほど大きくない場合、この組み合わせにする。
特にSoft Commitが必要な場合はNRTしか選択肢が無い。

すべてTLOG

インデックス更新のリアルタイム性が必要でなくシャード内のレプリカが非常に多い場合、すべてのレプリカで更新リクエストを扱えるようにしておきたいと考えるならば、この組み合わせにする。

TLOGとPULLの組み合わせ

インデックス更新のリアルタイム性が必要でなくシャード内のレプリカが非常に多い場合、多少古い検索結果を許容しつつ検索クエリへの応答能力拡大をするにはこの組み合わせにする。

 姿勢のお話

こんにちわ。
リエです。

職業病とも言えますが、ここ数年反り腰での腰痛やストレートネックでの首の痛み、肩こりに悩まされております。

整体などへ定期的に行くべきかと思いますが、中々行けず自分で少しでも改善できないかと思い最近寝る前に簡単なストレッチをするようになりました。
YouTubeに動画を出してくださっている方ありがとうございます🙏

長年蓄積されてきたものなので日々のストレッチでの劇的な改善変化は難しいと思いますが、ストレッチを始める前よりも少し腰や首の負荷が軽減されたなという体の変化を感じております。
変化を感じると毎日やろうというモチベーションへと繋がりますね。

寝る前の数十分。いつもはスマホを見てダラダラしてしまう時間をストレッチに当てることで入眠もスムーズになりました。最初はめんどくさいなと思っていましたが、今は逆にストレッチをしないと気持ち悪く感じるようになり三日坊主の私が数週間続いております。

体の調子をもっと整えれるようこれからもストレッチを続けます✊✨

経験の浅いプログラマーにVimを推奨すべきかせぬべきか

エディターは人それぞれですし歴史があり宗教戦争に発展するので他人にとやかくいうものではないと思います。でもそこに経験の浅いプログラマーが入ってきた場合は?この場合おすすめするかどうかは非常に悩みどころです。

遠い遠い昔の初めてプログラミングを行った専門学校の時代はPCに入っていたメモ帳での開発でした。当時のことを思い返せばよくもまぁ全角スペースすら見落としやすいメモ帳で100ファイル近くのファイルを管理してjavaで卒業作品にゲームを作ったなと思います。その後に最初の会社でEmEditorに出会いこんなに便利なエディターがあるんだと感動しEclipceの当時の重さに苦慮しつついつからかVimがおすすめと言われてVimを使い出しました。

vim

vimは便利です。慣れれば今でも十分使えるし使いやすいエディタだと思っています。大体のUnix系OSに入ってるので特にサーバーで作業する際とか緊急時の対応とかに助かります。軽いしターミナルだけで作業できるしマウスいらずで便利です。でもこれはvimを長年使っているから言えることです。

vimは最初のとっかかりに戸惑います。いろいろ操作やコマンドを覚えたり設定を行なったりプラグインを入れたりすればすごく使いやすいのですがそこまでいくのに時間がかかります。入ってすぐにいろいろなことを覚えないといけない状況でVimまで覚えることになると負担が大きいので基本的になしかなと個人的に思ってます。今ならもうvim以外のエディターで軽くてお手軽に始められて拡張性もよく使い勝手のいいものは既に出てるのでは?と考えてしまうことも多々あります。メモ帳代わりに使ってますがVSCode辺りがそれに近そうです。

自分の出した結論は基本的には推奨すべきでない。仕事に慣れて余裕ができて興味があってようやくレベルかなと・・・ターミナルだけで作業できてマウスいらずで便利なんですけどね

上記だけで終わるとアレなので自分がよく使っているコマンド等を記載して終わります。

1行削除の「dd」
1行コピーの「yy」
ペーストの「p」
末尾に移動する「$」
123行目へ移動する「123G」
特定の文字に囲まれている中を削除する「di’」「di”」
ビジュアルモードでの加工や範囲選択での置換
インサートモードから抜けるEscの代わりに「jj」
=などのインデントを自動で行ってくれる自動整形プラグイン
構文エラーチェックのシンタックスエラー検知のプラグイン

特に行番号への移動や行コピーや行削除、ビジュアルモードでの加工はよく使います。

Solr 8.10 で追加された Schema Designer UI

はじめに

Solr 8.10 で管理画面に Schema Designer UI が追加されました。
https://solr.apache.org/guide/8_10/schema-designer.html

  • ドキュメントのサンプルからスキーマを作ってくれる
  • スキーマをGUIで編集できる
  • 編集中のスキーマの設定でクエリがどんな動きになるか動作確認できる
  • 作ったスキーマに基づいたコレクションを作成できる

と至れり尽くせりです。

使い方

名前を付けて新しいスキーマを作る

スキーマの名前と、元になる設定の名前を与えて新しいスキーマを作成します。

ドキュメントのサンプルを与えてスキーマの設定を生成する

インデックス対象のドキュメントをテキストエリアに貼り付けるか、ファイルを指定するかして与えます。ドキュメントは1個でも解析してスキーマを作ってくれますが、ドキュメントを複数与えておけば、後でクエリの動作を確認するときに色々なパターンを試せます。

今回サンプルとして与えたのは以下のようなドキュメントです。

[
{"id":"10","type":"官公庁","area":"住之江区","name":"軽自動車検査協会大阪主管事務所","address":"住之江区南港東3-4-62","address_p":"34.6164938333333,135.438210722222"},
{"id":"11","type":"官公庁","area":"住之江区","name":"大阪陸運支局なにわ自動車検査登録事務所","address":"住之江区南港東3-1-14","address_p":"34.6190439722222,135.442191833333"},
{"id":"12","type":"官公庁","area":"住吉区","name":"住吉税務署","address":"住吉区住吉2丁目17番37号","address_p":"34.6109641111111,135.491388722222"}
]

生成されたスキーマの画面です。
JSONでフィールド名を与えているのでフィールド名が正しいのは当然として、サンプルの内容を解析してフィールドタイプもそれなりに妥当なものを選んでくれます。
たとえば上のように、緯度経度を値に持つ address_p フィールドに対して location タイプが選ばれています。

スキーマの設定を変更する

設定を変更することもできます。 住所を格納する address フィールドに対して string タイプが選ばれていましたが、ここでは形態素解析をする text_ja フィールドに変更しました。

Analyzer の動作を確認する

形態素解析をするフィールドでどのような解析が行われるか動作確認ができます。

クエリの動作を確認する

現在のスキーマの設定でクエリがどのように動くかを確認できます。

このときクエリの対象となるのが、最初に与えたサンプルドキュメントになります。今回はドキュメントを3件(id が 10, 11, 12)与えたので、全件検索で3件ヒットしています。

area フィールドを対象としたファセットで「住之江区」が2件、「住吉区」が1件となることも分かります。

変更前の設定との差分を確認する

元になった設定(_default)からの、現在の設定の変更点を表示します。

作成したスキーマを利用してコレクションを生成する

生成した設定は Zookeeper のツリー上に保存されますが、この設定を利用して一気にコレクションを生成することもできます。