SolrのReadOnlyモード

Solr 8.1から追加された機能にRead-Onlyモードがあります。SolrCloudでの運用時に利用できるモードです。リファレンスマニュアルの該当部分を翻訳してみました。

readOnly属性をtrueにセットするとコレクションはRead-Onlyモードに移行します。このモードではインデックスの更新リクエストは拒否されます。他のコレクションレベルのアクション(コレクションの追加/削除、レプリカの移動)はこのモードにおいても有効です。


(デフォルトの)read-writeモードからread-onlyモードへは以下の手順で移行されます。
・コレクション内のreadOnlyフラグが変更される
・すべての更新リクエストが403 FORBIDDENエラーで拒否される(継続中の長期実行リクエストは中止される)
・実行中の更新が強制的にコミットされる
(注意)大きなセグメントがバックグラウンドでマージされている最中であれば、この強制コミットは長時間に及ぶかもしれません。
・コレクションのRELOADアクションが実行される
readOnly属性が削除されるかfalseに設定されるかすると、更新リクエストが有効になりコレクションがリロードされます。

https://lucene.apache.org/solr/guide/8_2/collection-management.html#readonlymode

簡単な動作確認をしてみました。

$ curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=test_readonly&collection.configName=_default&numShards=1&wt=xml'

$ curl 'http://localhost:8983/solr/admin/collections?action=MODIFYCOLLECTION&collection=test_readonly&readOnly=true'
{
  "responseHeader":{
    "status":0,
    "QTime":476},
  "success":{
    "127.0.1.1:8983_solr":{
      "responseHeader":{
        "status":0,
        "QTime":350}}}}
$ bin/post -c test_readonly data.json 
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/test_readonly/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file data.json (application/json) to [base]/json/docs
SimplePostTool: WARNING: Solr returned an error #403 (Forbidden) for url: http://localhost:8983/solr/test_readonly/update/json/docs
SimplePostTool: WARNING: Response: {
  "responseHeader":{
    "status":403,
    "QTime":207},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"Collection test_readonly is read-only.",
    "code":403}}
SimplePostTool: FATAL: Looks like Solr is secured and would not let us in. Try with another user in '-u' parameter

テスト用のコレクション(test_readonly)を作成し、MODIFYCOLLECTIONアクションでreadOnlyをtrueに設定してからドキュメントをポストするとリファレンスの説明通り403エラーになりました。

$ curl 'http://localhost:8983/solr/test_readonly/select?q=*%3A*&rows=1&start=0'
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":1,
    "params":{
      "q":"*:*",
      "start":"0",
      "rows":"1"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }}

当然インデックスは空っぽのままです。

$ curl 'http://localhost:8983/solr/admin/collections?action=MODIFYCOLLECTION&collection=test_readonly&readOnly=false'
{
  "responseHeader":{
    "status":0,
    "QTime":466},
  "success":{
    "127.0.1.1:8983_solr":{
      "responseHeader":{
        "status":0,
        "QTime":344}}}}
	
$ bin/post -c test_readonly data.json 
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/test_readonly/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file data.json (application/json) to [base]/json/docs
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/test_readonly/update...
Time spent: 0:00:01.420

次にMODIFYCOLLECTIONアクションでreadOnlyをfalseに戻してからドキュメントをポストしたところ、今度はエラー無しでアップデートできました。

$ curl 'http://localhost:8983/solr/test_readonly/select?q=*%3A*&rows=1&start=0'
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "start":"0",
      "rows":"1"}},
  "response":{"numFound":9236,"start":0,"docs":[
      {
        "id":"158",
        "type":["官公庁"],
        "area":["住之江区"],
        "name":["軽自動車検査協会大阪主管事務所"],
        "address":["住之江区南港東3-4-62"],
        "_version_":1648645250184380416}]
  }}

クエリの結果からも、正しく更新できたことを確認できます。

ReadOnlyモードを使えば内容固定のインデックスを運用中に誤って更新してしまうことを防ぐことができて便利ですが、このモードはSolrCloudでのみ利用可能なので、その点は注意が必要です。


PHP LaravelとVue.jsでWebSocketしてみる

秋になると「紅葉見に行こうよ」と言いたくなるけど言う相手がいない。
マエダです。

気づいたら紅葉シーズン終わっていた。。

 

Laravelを触ってみてVue.jsってどんなもんだろうと調査してみる機会がありました。
他のメンバーがずっと以前の社内勉強会で発表してくれていた通りものすごく便利なことに気付かされました。。。
ただ長くjQueryに甘えていたのでこの場合はどうするの?がたくさん。

今回はWebSocketしてみました。

参考サイト

https://readouble.com/laravel/5.7/ja/broadcasting.html
https://qiita.com/zaburo/items/34289d4573f39113b25a

いきなり参考サイトですがこの手順通りに対応すれば動作確認できちゃいます。
ありがとうございました。

実行コマンド抜粋

npm install –save laravel-echo socket.io-client
composer require predis/predis
composer dump-autoload
npm install -g laravel-echo-server
laravel-echo-server init
laravel-echo-server start

URLをディレクトリ指定に

Nginx設定する。
sudo vi /etc/nginx/conf.d/app.conf

location /ws/{
    proxy_pass http://127.0.0.1:6001/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $remote_addr;
}

jsのpathにディレクトリを指定する。
vi resources/js/bootstrap.js

import Echo from 'laravel-echo'
window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname,
    path: '/ws/socket.io',
});

window.Echo.channel('hoges')
    .listen('Hoge', (e) => {
        console.log(e);
    });

感想

ほんとに全然JavaScriptコードを書かずともLaravelでWebSocketを利用できることにシンプルに感動でした。
個人的にはメンバーに負けないようにVue.jsを理解を深めます!
「千里の道も一歩から」
https://jp.vuejs.org/


音楽がある生活

こんにちわ。
リエです。

この前の休日、予定があったので準備をしてお家を出ました。
歩きながら音楽を聴こうっとBluetoothのイヤフォン🎧をつけたのですが、接続音が鳴らなくてあれ?と思ってバックの中を見たらスマホ📱が入っていませんでした。

い・え・に・わ・す・れ・て・き・た

今日1日くらいスマホがなくてもいいか〜とも思いましたが、スマホがないと時間も分からないし音楽だって聴けないやんとなり取りに帰りました。(戻る時間はあったのです)
今はほとんどの物事がスマホ1台で完結するので、ないと生活に困ってしまいますね💧

昔は音楽を聴くのはiPodなどの音楽プレーヤーを使っていましたが、今のスマホは音質がいいので別に音楽プレーヤーを持つ必要がなく本当に便利です。
SONYのMDプレーヤーとか持ってるのステータスだったなぁ。(遠い目)

わたしは移動中やお家にいる時は音楽を聴くことが多いのですが、皆さんはどんな時に音楽を聴きますか?どんな音楽が好きですか??

気分を上げたいとき、集中したいとき、悲しいとき、音楽はつねに寄り添ってくれています。スマホがない生活が考えられないのと同じように音楽がない生活も考えられません。
Apple Musicを活用しているのですが、最新曲から昔懐かしい曲までたくさん入っているので(なんと2019年11月時点で配信楽曲数は6000万曲以上らしいですよ)好きにプレイリストを作って気分に合わせて聴いております。
※Apple Musicの回し者ではありません。

ずっとRADWIMPSが好きで聴いていたのですが、最近はおすすめされたアーティストの曲や共有してもらったプレイリストの曲も聴いています。共有してもらったプレイリストだと自分の知らない曲が入っているので音楽の幅も広がっておもしろいです。

新しい音楽に出会いたい方や音楽の幅を広げたい方は、ぜひ他の方のプレイリストを共有してもらうことをおすすめします🎶
プレイリストの共有はアプリでかんたんにできるのでお手軽ですし( ̄ー ̄)♥

最近はKing Gnuがお気に入りでよく聴いています☺
King Gnuは教えていただいてから聴くようになったのですが、知れてよかったアーティストさんです。

他にこのアーティストさんの曲がいいよとかありましたら、ぜひぜひ教えてください✨



Microsoft Edge preview builds を触ってみる

Microsoft Edge(以下Edge)が Chromium を採用すると発表してから11ヵ月、もうすぐ1年になろうとしています。

そろそろベータ版も落ち着いたのではないかと思い、インストールから一通り触ってみた感想を書いてみます。

以下から Edge preview build のダウンロードができます。

Microsoft Edge Insider Channels
https://www.microsoftedgeinsider.com/ja-jp/download

お試しできるベータ版は3種類あり、今回は Dev ビルドをインストール。
この記事を書いている時点のバージョン情報は、「79.0.308.1 (公式ビルド) dev (64 ビット)」 となっています。

起動せよと呼ぶ声あり

起動時の画面がこちら。

Microsoft Edge preview build を開いた最初の画面

メニューはこんな感じです。

Microsoft Edge preview build のメニュー

現行版 Edge に比べてかなり Chrome に近い印象。

弊社サイトの Recruit ページを preview build と現行の Edge で表示させて並べてみました。

左が preview build, 右が現行版 Edge

CSS の解釈が違うのかベータ版だからなのか、ヘッダー(青い色の部分)の box-shadow が効いていません。

いくつかWebページを見て回りましたが、閲覧程度なら現行ブラウザとも遜色なく動作しているように見えます。
Edge Insider の「既知の問題」を見るとまだいくつかの問題は残っているようですが、随時修正されていくでしょう。

私は Chrome であり、Safari であり、Edge ではない

ユーザーエージェントは以下のようになっています。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3943.0 Safari/537.36 Edg/79.0.308.1

Mozilla、AppleWebKit、Chrome と並んでいますが、Edge ではなく Edg となっています。
preview build であるため Edge にはまだ至っていないということなのか、このまま本採用されるのか。
開発者視点だと気になる点ではあります。

見よ、Chrome アドオンは共にある

新しい特徴として、Chrome アドオンが利用できるようになるとのことなので試してみました。

試してみるアドオンは Picture-in-Picture Extension (by Google)
https://chrome.google.com/webstore/detail/picture-in-picture-extens/hkgfoiooedgoejojocmhlaklaeopbecg

Chrome ウェブストアを Edge で開くと画面上部にメッセージが。

「他のストアからの拡張機能を許可する」というボタンをクリックすると、拡張機能のページに「Chrome に追加」のボタンが現れます。
押してみると何事もなく拡張機能に追加されました。

実際に試してみると、

PIPを有効にしたときの表示

Edge の外に PIP の小さなプレイヤーが表示され動画が再生されています。
ただ、試した限りでは残念ながら一時停止ボタンが機能しませんでした。

やがて Chrome になる?

ここまでをまとめると「Chrome によく似た何か」であり、それ以外の感想は特に出てきませんでした。
あまりに Chrome 然とし過ぎていて、どちらを使っているのか分からなくなります。

まずは基本機能の安定動作。
そこからの独自機能の実装という方針なのだと思います。

今後、実装予定の新機能が色々発表されていますし、edge://flags/ を開くと WebVR や WebXR Device API 等、気になる名称の機能が試験段階として無効化されていることが分かります。

試験段階の機能 Collections

そして、試験段階にある Internet Explorer モードが IE ユーザーに受け入れられるのかどうか。

正直にいえば、新しい Edge に一番期待しているポイントです。

IE がなくても Edge で問題ないということになれば、多くのWeb開発者の救済への大きな一歩となるかもしれません。

しかし、Chrome に似た何かで終わる可能性もあり…。

Microsoft 様におかれましてはどうかうまくやってくださいと強く祈るばかりです。


『Figma』それはデザインツールの進化系

こんにちは。デザイナーのMです。
今回は、前から触ろう触ろうと思いながらも触れていなかった『Figma』を使ってみたので、ブログに書こうと思います。

Figmaとは?

ひとことで言えば、『いつでもどこでも誰とでも使えるデザインツール』です。
オンライン上で複数人同時にデザインすることができるめちゃくちゃ便利なツールです。しかも無料で👌

なにはともあれ導入です

導入と言っても、Figmaは “Webブラウザベースのデザインツール” なので以下のURLにアクセスしてアカウント登録をするだけで終わります🙄(驚愕

Figma: the collaborative interface design tool.
https://www.figma.com/


今までの、アプリをダウンロードしてインストールして…とかの地味に面倒くさいフローが無くなってることに衝撃を受けました。。
ちなみにアカウント登録して、デザイン作成画面を表示させるまでに要した時間は1分ほどでした。早い🥺

画面のざっくりとした説明など

デザイン作成画面はシンプルです。SketchやXDを普段使ってる人ならそこまで違和感なく操作できるかと思います。

1.各種ツール

「選択ツール」「フレーム(アートボード)作成」「オブジェクト作成」「ペンツール」「文字入力」「コメント」
の順で各種ツールが並んでいます。

2.レイヤー、アセット

レイヤー階層や共通アセットの管理などができます。

3.デザイン詳細パネル

色やフォント、サイズなどを制御できるパネルです。
SketchとかとUIが似てるので問題なく使えると思います。

4.共有機能

これが、Figmaの真髄✨とも言うべき機能だと思います。
瞬時に”今”作ったデザインを共有できます。
そしてそのデザインをリアルタイムで一緒に編集することができます(後述)。

実際の動作を見てみましょう

歯車風のオブジェクトをサクッと作ってみました。これぐらいなら秒でできます😎

そして他の人に共有してみる

先程書いた、共有機能を使ってみたいと思います。
感覚としては、Googleドキュメントやスプレッドシートなどの共同編集と同じですが、それがデザインツールでできるのは感動しました🥺

左右それぞれ別の人が別端末のブラウザから見ている、という想定です。
ほぼリアルタイムで編集した内容を反映しているのが分かると思います。

共同編集できるメリットとしては、
・修正、変更内容が全てビジュアルで可視化されるのでわかりやすい
・バージョン管理を利用するとデザインデータのコンフリクトを防げる
・複数のデザインデータを作成しなくて済む
・デザインデータの置き場所に悩まなくて済む
・コメントなどですぐに修正点を伝えることができる
・一緒にデザインするのはワクワクする🤩 ←これ

いいことばっかり✨
ただ、日本語入力対応などは少し遅れてるっぽいです😂(海外ツールあるある

まとめ

今回Figmaを少し使っただけでも、このデザインツールのスゴさを実感できました。
Figmaにはまだまだ紹介しきれない機能がたくさんあるので、実務などにも少しずつ導入していきながら理解を深めていきたいと思います💪