MariaDBでデータベース一覧とテーブル一覧を取得するコマンド

MariaDBで存在しているデータベースとテーブルの一覧が知りたい場合はshowコマンドを使って表示できるみたいです。

データベース一覧を表示

show databases;

テーブル一覧を表示

show tables from データベース名;

使い方は次のような感じです。

$ mysql -u username -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is ****
Server version: 10.2.2-MariaDB-valgrind-max-debug Source distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> show tables from wordpress;
+----------------------------+
| Tables_in_MariaDB          |
+----------------------------+
| wp_commentmeta             |
| wp_comments                |
| wp_links                   |
| wp_options                 |
| wp_postmeta                |
| wp_posts                   |
| wp_term_relationships      |
| wp_term_taxonomy           |
| wp_termmeta                |
| wp_terms                   |
| wp_usermeta                |
| wp_users                   |
+----------------------------+
12 rows in set (0.00 sec)

リンク

SHOW DATABASES – MariaDB Knowledge Base
https://mariadb.com/kb/en/show-databases/

SHOW TABLES – MariaDB Knowledge Base
https://mariadb.com/kb/en/show-tables/

UnityのInspectorで配列の順番を変更したい場合はReorderableList

Unityで配列を使いたい場合、

using UnityEngine;

public class Example : MonoBehaviour
{
  public string[] Array;
}

のような感じで実装すると、Inspectorには次のように表示されます。

これだけでもInspectorから配列のサイズと値を設定することができて便利ですが、要素の並び替えがしたいと思って実装方法を調べてみました。

ReorderableList

ということで、ReorderableListを使うとInspectorで並び替えができるようになるみたいです。

最低限の実装で並び替えだけしたい場合

とりあえず並び替えだけできれば良いという場合は、次のように実装できるみたいです。

using UnityEditor;
using UnityEditorInternal;

[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
  ReorderableList _reorderableList;

  void OnEnable()
  {
    var property = serializedObject.FindProperty("Array");
    _reorderableList = new ReorderableList(serializedObject, property, true, true, false, false);
  }

  public override void OnInspectorGUI()
  {
    base.OnInspectorGUI();

    serializedObject.Update();
    _reorderableList.DoLayoutList();
    serializedObject.ApplyModifiedProperties();
  }
}

Inspectorの表示は次のような感じになります。

Serialized Propertyに表示されているElementをドラッグで移動できるようになります。(移動した場合は上のArrayの値も変更されます。)

値も表示したい

値も表示したいという場合は、次のような感じでdrawElementCallbackを実装します。

void OnEnable()
{
  var property = serializedObject.FindProperty("Array");
  _reorderableList = new ReorderableList(serializedObject, property, true, true, false, false);

  _reorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
  {
    var element = property.GetArrayElementAtIndex(index);
    EditorGUI.PropertyField(rect, element);
  };
}

Inspectorの表示は次のような感じになります。

構造体を表示したい

構造体を表示したい場合は、Serializable属性を設定した上で、次のような感じで修正します。

using UnityEngine;

public class Example : MonoBehaviour
{ 
  [System.Serializable]
  public struct Struct
  { 
    public string text;
    public int value;
  }

  public Struct[] Array;
}
using UnityEditor;
using UnityEditorInternal;

[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
  ReorderableList _reorderableList;

  void OnEnable()
  {
    var property = serializedObject.FindProperty("Array");
    _reorderableList = new ReorderableList(serializedObject, property, true, true, false, false);

    _reorderableList.elementHeightCallback = (index) =>
    {
      var element = property.GetArrayElementAtIndex(index);
      return EditorGUI.GetPropertyHeight(element.FindPropertyRelative("text")) + EditorGUI.GetPropertyHeight(element.FindPropertyRelative("value"));
    };

    _reorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
    {
      var element = property.GetArrayElementAtIndex(index);

      rect.height = EditorGUI.GetPropertyHeight(element.FindPropertyRelative("text"));
      EditorGUI.PropertyField(rect, element.FindPropertyRelative("text"));

      rect.y += rect.height;
      rect.height = EditorGUI.GetPropertyHeight(element.FindPropertyRelative("value"));
      EditorGUI.PropertyField(rect, element.FindPropertyRelative("value"));
    };
  }

  public override void OnInspectorGUI()
  {
    base.OnInspectorGUI();

    serializedObject.Update();
    _reorderableList.DoLayoutList();
    serializedObject.ApplyModifiedProperties();
  }
}

Inspectorの表示は次のような感じになります。

もう少し真面目に実装したい場合

同じ設定が二重に表示されないようにしたい場合はHideInInspector属性を設定します。

[HideInInspector] public Struct[] Array;

ただ、このままではInspectorから配列のサイズが変更できなくなってしまうので、

_reorderableList = new ReorderableList(serializedObject, property);

とした上で、_reorderableListonAddCallbackonRemoveCallbackを実装すると良いみたいです。

Raspberry Piに関するTIPS

Raspberry Piの温度を調べたい

下記コマンドで温度が調べられます。

/opt/vc/bin/vcgencmd measure_temp

アップデート

Raspberry Piにインストールしているソフトウェアをアップデートしたい場合は、下記コマンドを実行します。

sudo apt update
sudo apt upgrade

もしくは

sudo apt update
sudo apt full-upgrade

マウスの動作が遅い

/boot/cmdline.txtusbhid.mousepollの設定を追加して再起動します。

usbhid.mousepoll=0

キーボードのCtrlキーとCapsキーを入れ替えたい

/etc/default/keyboardXKBOPTIONSの設定を追加して再起動します。

XKBOPTIONS="ctrl:swapcaps"

IPアドレスを固定したい

/etc/dhcpcd.confに以下のような内容を追加します。(192.168.1.23は固定したいIPアドレス、1.1.1.1はネームサーバーの例です。)

interface eth0
static ip_address=192.168.1.23/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1

dhcpcd.confが修正できたら再起動するか、下記コマンドを実行します。

sudo ipconfig eth0 down
sudo ipconfig eth0 up

無線LANのIPアドレスを固定したい場合はeth0の部分をwlan0に読み替えてください。

interface wlan0

SSIDステルス機能を有効にしている無線LANに接続したい

wpa_passphrase "SSID名" "パスワード"

を実行して、表示された内容を/etc/wpa_supplicant/wpa_supplicant.confに追加します。

もしくは、

sudo wpa_passphrase "SSID名" "パスワード" >> /etc/wpa_supplicant/wpa_supplicant.conf

を実行します。

更に、エディタでwpa_supplicant.confを開いてnetwork={…}内に

scan_ssid=1

を追加し、再起動します。

NFSサーバーとして運用したい

まず、nfs-kernel-serverをインストールします。

sudo apt install nfs-kernel-server

インストールできたら、/etc/exportsを以下のような感じで設定します。(/exportを公開する場合の例です。)

/export 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)

※NFSクライアントを制限する必要がない場合は192.168.1.0/24の部分を*とします。

設定できたら下記コマンドを実行します。

sudo exportfs -rav

リンク

Network File System (NFS) – Raspberry Pi Documentation
https://www.raspberrypi.org/documentation/configuration/nfs.md