アレコレ・ティプス

これ便利だな〜と思ったことなど

たてた Mattermost で 日本語全文検索 を可能にする

 

・( 前回の記事の続きになります )・ 

 

asuki-yt.hatenablog.jp

 

 

これで Mattermost が動いたのはいいものの、、

前回の記事では、インストールした Mattermost サーバーに投稿されたチャットデータ の日本語全文検索 機能がないので、一旦、後付けで対応させる。
 
 
 目次

 

環境のおさらい

CentOS7
mattermost 4.7.3 ( 前回の記事の内容で稼働中 )
MariaDB   10.3.2 
しかし、日本語全文検索が効かない。
 
-> そこで今回は、、
 
Mroonga groonga mecab の環境を準備して、対応する話、、
 
にしようと思ったところ、 詳細を調べてみたら、 MariaDB 10.3.2 に Mroonga が内蔵されているので、それを有効化、テーブルに適応することで解決しました*1
 
 

ストレージエンジン Mroonga の有効化

 
まず Mroonga が 無効状態であることを確認
 
# mysql mattermost -u root
 
MariaDB > SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                          | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                                               | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                            | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                        | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                           | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                            | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                               | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES          | YES  | YES        |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                   | YES          | NO   | YES        |
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+

 

以上、Mroonga 無いやん。 

 
MariaDB 10.0.x 以降では Mroonga のプラグインがバンドルされているらしいので、
これを有効化してみる。
 
MariaDB > INSTALL PLUGIN Mroonga SONAME 'ha_mroonga.so';
MariaDB > CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';
MariaDB > CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';
MariaDB > CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';
MariaDB > CREATE FUNCTION mroonga_escape RETURNS STRING SONAME 'ha_mroonga.so';
 

 

○ Mroonga 有効の確認
 
MariaDB > SHOW EGINES;

 

 
・・・ ( 以下 項目があれば OK )
 
| Mroonga            | YES     | CJK-ready fulltext search, column store 
 
・・・
 
  MariaDB > QUIT
 
 

MariaDB の 設定ファイルの更新 ( my.cnf ) 

  # vi /etc/my.cnf.d/server.cnf
 
以下 cnfファイルの設定内容  
 
    [server]
 
    [mysqld]
    # matterMostで扱う日本語の文字コード *2
    character-set-server=utf8mb4
 
    # MeCab Full-Text Parser Plugin Settings
#    loose-mecab-rc-file=/etc/mecabrc  今回のやり方では不要
 
    # InnoDBでの単語最小文字数
    innodb_ft_min_token_size=1
    # MyISAMでの単語最小文字数(必要に応じて)
    ft_min_word_len=1
 
    # 以下は、システム仕様に合わせてよしなに
    innodb_buffer_pool_size=1024M
    innodb_log_file_size=1G
 
    server-id=100
 
    max_connect_errors=10000
    max-connections=500

  

    *2 -> default-character-set だと、古い書き方 とのことで ERROR になった。
    *2 -> matterMost では、絵文字も使っているため、寿司ビール問題回避のためutf8mb4 の方がよい
 
 

設定の反映

 
○ クライアント ユーザー側のブラウザで開いている matterMostの画面を全て閉じる。
 
○ Mattermost を停止 
 
# systemctl stop mattermost
 
mariaDB を停止
   -> スタート (設定の変更が反映)
# systemctl stop mariadb
# systemctl start mariadb

 

 

インデックスの再構築

 
○ (  インデックス再構築の前に必要に応じて DBのスキームのバックアップをとっておく )
 

# mysqldump mattermost -u root > ./ddl.sql

 

○ いざ ALTER TABLE でインデックス再構築を。
 
# mysql mattermost -u root
 
o PostsテーブルのストレージエンジンをMroongaに変更
 
MariaDB > ALTER TABLE `Channels` ENGINE = Mroonga;
MariaDB > ALTER TABLE `Posts` ENGINE = Mroonga;

 

これはできないx  
mysql> ALTER TABLE `Users` ENGINE = Mroonga;
 
-> ERROR 1062 (23000): Duplicate entry 'NULL' for key 'AuthData'
 
 
 ところが、 Posts と Channels の方は、テーブルの再構築ができたので、チャットやチャンネル検索の機能としては問題なさそうだ。
 
ユーザー検索で 困る程度かと考えられる。
 
( インデックスの再構築で対応せず、前回記事の CREATE TABLE の段階から、Mroonga を反映させておく方が吉。もし、そのやり方を記事にされている方がいたら、積極的に リンクをこちらに貼ります!)
 

準備完了!サービス再起動

 
○ テーブルの再構築結果を反映してDB再開
# systemctl restart mariadb
 
○ マターモスト 再開
# systemctl start mattermost
 
 
以上のDB 適応で、 日本語検索ができるようになった!
 

f:id:asuki_y:20180402225918p:plain

 

 おまけ 

( CentOS7 の サービスの問題解析のお供に )
 
mariaDB をいじる時は、 別のターミナルで、
# journalctl -f
としておいて そこに流れるログを 見ながら行う と 解析がスムーズかと思います。
 
- - - 
 
参考: Mroonga プラグインの有効化
 
参考: goonga をインストール方法
 
参考 :  InnoDBMyISAM の違い
 
参考: polkitd の " Unregistered Authentication Agent for unix-process " は問題ないか?
 

*1:ただし、解決したのは、チャンネル名の検索と、チャット投稿データの日本語全文検索においてであり、ユーザー名の検索においては解決できていないので注意 

MatterMost を CentOS7 にインストールする

Slackは便利だけども、クラウドだし、
機密情報を含む内容を投稿するには微妙。。
そういった時の、" Mattermost "。
自分で お好みの場所に slack風 チャットサーバーを たてちゃいましょう。
 
CentOS7 に matterMost をインストールして、立ち上げるところまでやります。
 
 
今回は、CentOS7 に 構築した時の 記録をご紹介します。
( 2018年3月13日 時点の最新 )
 
- - - - -
 
< 実施環境 >
CentOS Linux release 7.4.1708 (Core) 
MariaDB 10.3.2
mattermost 4.7.3
vim がインストール済みであること 
 
< MariaDB のインストール準備 >
 
  ○ GPG-keyをインストール 
 
  ○ repoファイルの作成
 

# vim /etc/yum.repos.d/mariadb.repo

 

  
  ○ MatterMost で使うデータベース MariaDB をインストール
 
 

# yum -y install MariaDB-client MariaDB-server

 

 
  ○ 自動起動と起動の設定
 
  # systemctl enable mariadb.service
  # systemctl start mariadb.service

 

< MariaDB の初期設定 >
 

  # mysql_secure_installation

 

 
  ここで初期設定を行う。
  不要なデータベースや anonymous ユーザを削除。
 
  ○ MariaDB 上にデータベースやユーザを作成
    (ここ重要!)
  
 

# mysql -u root

 

 
    CREATE DATABASE mattermost;
    CREATE USER 'mmuser@localhost' IDENTIFIED BY 'mmuserpassword';
    GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser@localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    quit
 

 

 
< Mattermost のインストール >
 
  ○ ここから、欲しいバージョンを持ってくる。
 
  例)
  # tar zxvf mattermost-4.7.3-linux-amd64.tar.gz -C /opt
  # mkdir /opt/mattermost/data

 

 
  ○ Mattermost 実行用のシステムアカウントを作成
 
  # useradd --system --user-group mattermost
  # chown -R mattermost:mattermost /opt/mattermost
  # chmod -R g+w /opt/mattermost

 

 
  ○ Mattermost 設定ファイルの確認 - SqlSettings の部分を確認。
 

# less /opt/mattermost/config/config.json 

 

 
    "SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
        "DataSourceReplicas": ,
        "DataSourceSearchReplicas": ,
        "MaxIdleConns": 20,
        "MaxOpenConns": 300,
        "Trace": false,
        "AtRestEncryptKey": "",
        "QueryTimeout": 30
    },

  

  ○ このうち DataSource の部分を編集して紐づける。
  

""DataSource": "mmuser:mmuserpassword@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"

 

 
   ★ mattermost_test ではなくなっているところが要チェック!!
 
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
  ○ 同様に PluginSettings の 部分も以下のように修正する。
 
    "PluginSettings": {
        "Enable": false,
        "Plugins": {}
    }

 

 
    ( もしくは plugins パスを /opt/mattermost/bin/plugins にしたい場合 )    
 
   
"PluginSettings": {
          "Enable": true,
          "EnableUploads": false,
          "Directory": "./plugins",
          "ClientDirectory": "/opt/mattermost/bin/plugins",
          "Plugins": {},
          "PluginStates": {
              "jira": {
                  "Enable": true
              }
          }
      }

 

 
 
  < Mattermost サービス化 および UNIT 定義 >
 
  systemd に 以下の内容で /etc/systemd/system/mattermost.service を新規作成
 
 
  [Unit]
  Description=Mattermost
  After=syslog.target network.targeti mariadb.service
 
  [Service]
  Type=simple
  WorkingDirectory=/opt/mattermost/bin
  User=mattermost
  ExecStart=/opt/mattermost/bin/platform
  PIDFile=/var/spool/mattermost/pid/master.pid
  LimitNOFILE=49152
 
  [Install]
  WantedBy=multi-user.target

 

 
  Mattermost を起動
 
 # systemctl daemon-reload
 # systemctl enable mattermost.service
 # systemctl start mattermost.service

 

 
  起動が完了したら、ブラウザで http://(立ち上げたホストのIPアドレス):8065/ にアクセスします。
 
     

  

IoT デバイス Wio node に 光センサをつなげて Node-Red で扱う時のメモ ( トークン で苦戦した!! )

Wio node + (対応する)  光センサ(照度センサ?) を買って、Node-Red で扱うまでの道のりメモ
 
特に トークンのあたりで苦戦したので! 
 
[ wio link ]
 
iOS アプリを  手元のiPhone にインストール
 
 Android おそらくこちらでいけると思います。
 
 
 
[ iphone と wio node 接続 ]
 
iPhone の wio link を使って、
wio node  と接続。
 
つなぎかたは、
 
1.  wio node が  無線LAN ホストにさせる。
 ブルーライト 側の 小さいボタンを 4秒以上 長押し
 
2. 青色LED が、 呼吸をするような光り方をする。 
 
3.  iPhone から、 wio node の 無線LAN にアクセスする。
  iPhone の " 設定 " アプリから 接続。
 
4. 成功したら、今度は、wio node を 普段使っている 無線LAN に接続させる。
wio link アプリ 上の操作で、その無線LAN のパスワードを入力できるので、
入力し、成功すると、 wio link が 通常使っている 無線LAN に接続できる。
 
注意点 は、この時、 wio-node  の 接続回線が 5G Hz 帯域だったりすると、
アクセス成功しない と思う。 2G Hz など 低速 の無線 で接続 する方が成功
 すると考えられる。
 
[ wio node 設定 ]
画面 に従って 行う。
 
光センサは、Analog 入力なので、
wio-node の Port1 に 接続する。
 
接続すると、wio link アプリ 上に このような画面になる。

 
PORT 1 に接続された画面になるので、
 
光センサの場合は、 Generic Analog input を割り当ててあげる。
 
 
 
[ 動作確認 ]
 
上記 View API をおす。

 
ここで GET  ボタンを押すと、
wio-node 自身が サーバーとなっているところへ、GET リクエストをして、
光センサの 情報を キャッチして リターンしてくれる!
 
 テスト リクエストをしてくれる。

 
 丁寧に コマンド からの GET リクエストアドレス  方法も出してくれる。
 
# curl -k 該当URL(トークンつき)
 
 
 今回の光センサの 取得データ 明るさは、 "673"
 
指でセンサを隠しながら 取得すると この数値が下がります。
 
試しに コマンドラインからも取得してみます。

 
{"analog": 662}
 
と 出てくれました!  
 
[ node-red と接続 ]
 
wio Link 用 にユーザーを作成しておく。
このページの 少し 下部の方

 

 
 
○ Login to get the user token
トークンを発行してもらう。
 
このページの 少し 下部の方
 

ここで メルアド と パスワード を入力することで トークンが発行される。

 
このうち 自分の使っているwio node では、 " Wio v1 " となっている トークンを使った。
 
このトークンが Node-Red で フロー(制御)を作る 時、 使用するのに必要。
 
Manual Token
 
 で 使える トークンになっている。
 
Server  を 以下指定にする。
 
" us.wio.seed.io "
 
Token は、先ほど発行した v1 の方の トークンを入力する。
 
( Node-Red での 画面 )

 
うまく認証できると下記感じになる。
 

 
これで、wio-node  と繋げた 光センサ を Node-Red で使えるようになった!
 
 
参考URL
 
 
 
--
 
 
 
 
 
 

どういう投資が本当に怖いの?

 
いきなりですが、さくっと 投資 怖い で Google 検索 してみました。
 
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
 
 


 
 
だいたい、 「 投資はこわくないよー
 
っていうのを伝える記事が多いようなので、、
 
実際に危険な投資( という名前の ほとんど詐欺 )
 
の例などをあげてきます。
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
< 投資という名前の 詐欺 例 >
(  ” 恐れ ” てしかるべき “ 投資 ” という名の、別の何か。)  
 
ICO関連  (仮想通貨作るよ詐欺)
 
不動産関連 (勝手に電話でかかってきたり急に訪問できたりいろいろ)
 
未公開株 新規公開株 関連
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
< 詐欺ではないものの 危険な 投資 の例 >
 
○ 借金など、何かを借りてまで行う投資。 信用取引
○ 高レバレッジを効かせた投資 取引。
 
(詳細は わからない単語で検索してみてください)
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
投資が怖いっていう人向けの結論ですが、
 
○ 自分が 学んでみて理解できないことに手を出さない
 
○ 自分から 知りにいこうとしていないのに、降ってくる投資の話にのらない( 受け身の投資 )
 
○ 自分の資本力に 相応でない 投資の仕方をしない
 
管理体制が甘い取引所で投資しない
 
 
というルールを 自らに決める。 が良いかと考えています。
 
あと、必要に応じて、ご自分のルールを決めるのが大切かと思います。
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
余談ですが、
 
銀行によるかもしれませんが、その銀行口座で、投資しやすいようにしてくれているところがあります。
 
なぜでしょうか。
 
“ お客様の資産が増えれば、銀行の資産が増える "
 
だったりしませんか。win-win ですね。
 
かといって、お客様の資産が 投資で減っても嫌。
 
だから、リスクが低めの資産、投資信託などが各銀行で紹介されている 側面もあると考えられます。
 
もちろん別の側面があると思うので、何の考えもなしに、投資したり、銀行のいいなりになるのは 考えものです。
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
投資は自己責任で。
 
特に 最近 仮想通貨のICO も含めて " 投資 "詐欺が増えているので、注意してください。
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
次回以降で、気分が向いたときに、怖くない投資 ってどんなのが あるの?
 
( 2018/2/3 言い回し修正や、文字的なレイアウト調整 )
 

Kubernetes を CentOS 7 で とりあえず始めてみるには

Kubernetes をインストール して、pod を生成し、
とりあえずコンテナを動作させるまでの手順 ( CentOS7.3 )
 
一旦 Kubernetes を動かしてから、勉強を始める人 用です。
 
( 動作環境 )
仮想OS - CentOS 7.3
 
( ゴール )
nginx コンテナ の 起動確認
 
- - -
 
! 注意点 !
 
# で始めるコマンド文は、root権限 で実行
$ で始めるコマンド文は、ユーザー権限 で実行
 
このユーザーは、 kubectl など Kubernetes関連のコマンドが一通り問題なく使える状態にしておいてください。
 
- -
 
1. Kubernetes の 構成を知る。
ref.
 
2. マスターを作成する。
ref.
 
3. ノード を作成する。
ref.
 
 
で これだけだとつまずく、 pull できないエラー
CentOS7 の環境によっては、nginx を pull できません。 
 
podを作って、ContainerCreating のまま進まず、以下のようなエラーが。
 

Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"

 

/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt 
っていうリンクはあるが、実体はない。
 
Redhat Docker イメージレジストリ にアクセスするために必要な、
  Root証明書の取得
 
ref. Redhat 公式
 
  # yum install -y python-rhsm
 
  # ls -la /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt
  lrwxrwxrwx. 1 root root 27 12月  7 23:52 /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt -> /etc/rhsm/ca/redhat-uep.pem
 
-> Root証明書( redhat-uep.pem )が格納されたことを確認
 
○ 任意のディレクトリに yaml ファイルを作る。
 
  $ mkdir k8sYaml
  $ cd k8sYaml
 
  $ touch test-nginx.yaml
  $ vi test-nginx.yaml
 
yaml ファイルを作る
 
ref.
 
- - -  以下1行目から  - - - 
  apiVersion: v1
  kind: Pod
  metadata:
    name: nginx-pod-test
  spec:
    containers:
      - name: nginx-container
        image: docker.io/nginx
        ports:
        - containerPort: 80

 

- - -  以上  - - - 
 
 
上記ファイルを使って、pod / コンテナ を生成
 
  $ kubectl create -f test-nginx.yaml
  pod "nginx-pod-test" created
 
○ pod の動作状況確認
 
  $ kubectl get pod
  NAME             READY     STATUS    RESTARTS   AGE
  nginx-pod-test   1/1       Running   0          9m
 
-> READY 1/1 となり、動作している模様
 
○ 動作している IPアドレスの確認
 
  $ kubectl describe pod nginx-pod-test | grep IP:
  IP:   172.17.38.2
 
  ( 今回の生成したコンテナが、 172.17.38.2 だった一例 )
 
○ nginx の動作確認
 
  1. ping が通ります。
 
    $ ping 172.17.38.2
 
    64 bytes from 172.17.38.2: icmp_seq=1 ttl=64 time=0.087 ms
    64 bytes from 172.17.38.2: icmp_seq=1 ttl=64 time=0.089 ms
 
  2. curl コマンドで、 "Welcome to nginx!" と返ってくるのか確認
 
 
 
 
"Welcome to nginx!"
など HTML文 一式が 返ってくれば、OK です。
 
 
 
 
もっとKubernetesが簡単に使えるようになるといいな( ˘ω˘ )
- - -
 
(追記)
以下コマンドで消せます。
$ kubectl delete -f test-nginx.yaml
 
 
#k8s #Kubernetes #centos7 #Root証明書 #docker
 

SoundCloud プレイリストの操作

Sound Cloud で プレイリストの順番を編集したいときに。
 
まずは、ブラウザからサウンドクラウドにログイン。
 
プレイリストの画面へ。

f:id:asuki_y:20170326193601p:image

 
ここの More から

f:id:asuki_y:20170326193603p:image

 
Edit
 

f:id:asuki_y:20170326193604p:image

 
Tracks を選ぶ
 

f:id:asuki_y:20170326193606p:image

 
ここで 曲を ドラッグ&ドロップすることで、曲順操作ができます。
 
 
- - -
それにしても便利な世の中になったんですねぇ…( ˘ω˘ )
 
 
 
 

Evernote で書いた記事を、はてなブログで公開

はてなブログ って Evernoteで書いた記事を公開できるか。。
 
まずは、おもむろに、はてなブックマークのアカウント内設定で、
Evernote 連携を許可しておき。。
 
はてなブログの記事投稿から。。
 

f:id:asuki_y:20170326194754p:image

 
ここの Evernote貼り付けを使おう!
 
 

f:id:asuki_y:20170326194752p:image

 
簡単に はてなブログへ反映できました。
 
< おまけ >
 
簡単にショートカットも作れました。
プラスボタン から 好きな項目のスイッチをON!
 

f:id:asuki_y:20170326194756p:image

 
Evernote -> はてなブログ連携がもっと簡単になった!
(ぞうのマークが追加) 
 

f:id:asuki_y:20170326195019p:image

 

 

それにしても便利な世の中になったんですねぇ…( ˘ω˘ )