mecabで記号が名詞, サ変接続とされてしまう問題の解消

概要

  • MeCabのデフォルトでは半角記号が名詞、サ変接続とされてしまう。
$ mecab
;
;       名詞,サ変接続,*,*,*,*,*
EOS
  • この問題を解消するために未定義語の辞書を編集して、半角記号が記号として取り扱うことができるようにする

前提環境

ステップ

  1. unk.def の編集
  2. 辞書の再インストール

1. unk.def の編集

$ cat unk.def | grep SYMBOL
SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
$ sed -i unk.def -e '/^SYMBOL,/s/名詞,サ変接続,\*,\*,\*,\*,\*/記号,一般,\*,\*,\*,\*,\*/' 
$ cat unk.def | grep SYMBOL
SYMBOL,1283,1283,17585,記号,一般,*,*,*,*,*

2. 辞書の再インストール

$ sudo /usr/local/libexec/mecab/mecab-dict-index
$ sudo make install
$ mecab
;
;       記号,一般,*,*,*,*,*
EOS

ssh で ProxyCommandが動かない問題の解決

ssh で多段ポートフォワーディングやプロキシを通す時に、~/.ssh/configにProxyCommandを設定してsshコマンドを実行しようとしたところ、下記のようなエラーが発生した。

$ ssh hoge
zsh: No such file or directory
write: Broken pipe

むむ、と思い、取り合えずデバッグモードで実行してみても..

$ ssh hoge -vvv
...
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Executing proxy command: exec ssh -CW 192.168.56.112:22 hoge
debug1: permanently_drop_suid: 197609
zsh: No such file or directory
...

エラーを見る限り、ProxyCommand内に設定しているコマンドを見つけることが出来ないのではなく、zsh自体のパスが解決できていない模様。

$SHELLを見てみると zshとなっている。

$ echo $SHELL
zsh

これをフルパスに直して実行すると、問題なく実行できた。

$ export SHELL=/bin/zsh
$ ssh hoge

Oracle Linuxのバージョンを知る方法

RHEL系のOSの場合以下のファイルをcatすることでバーションを知ることができる。

/etc/*-release

Oracle Linuxの場合は以下の通り

$ ls /etc/*release
/etc/oracle-release  /etc/os-release  /etc/redhat-release  /etc/system-release
$cat /etc/os-release 

NAME="Oracle Linux Server"
VERSION="7.3"
ID="ol"
VERSION_ID="7.3"
PRETTY_NAME="Oracle Linux Server 7.3"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:3:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.3
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.3

$ cat /etc/oracle-release
Oracle Linux Server release 7.3

apache zeppelinでsparkが動かない問題(Service 'sparkDriver' could not bind on port 0. Attempting port 1. )の解決

apache zeppelin https://zeppelin.apache.org/チュートリアルを実行しようとした際に、ハマったのでメモ。

zeppelinはjypter notebookみたいにウェブブラウザから様々な言語(R, python, scala)やツール(spark, bigquery, hadoop等)を実行できる環境のこと。 チュートリアルとしてsparkを動かすものがあるのだが、これがエラーになっており動かない。

ログを確認すると以下のように表示されている

WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
ERROR SparkContext: Error initializing SparkContext.

これの原因はapache zeppelinがインストールされているサーバのホストネームの設定が誤っていること。 一度誤った固定IPとそれに紐づくドメインを設定していて、そのままになっていたのを忘れていた。

誤ったIP: 196.18.35.2 誤ったドメイン: tmks0828.jp.example.com 正しいIP: 196.18.35.1 正しいドメイン: tmks0820.jp.example.com

サーバのホストネームの設定と/etc/hostsの記述を変更する

$ hostname
tmks0828.jp.example.com

$ hostname tmks0820.jp.example.com

$ hostname
tmks0820.jp.example.com

$ vim /etc/hosts

....
196.18.35.1 tmks0820.jp.example.com
....

zeppelinを再起動すると、チュートリアルのsparkを実行することが出来た。

組み込みのPL/SQLプロシージャ(ファンクション)の引数を確認する

PL/SQLの組み込み、もしくは自作プロシージャおよびファンクションの引数がどうなっているのか確認するのに最も早いのは、ドキュメントを確認することです。しかし、何かしらの理由でドキュメントを確認できない(ローカルにドキュメントがなく、ネットワークに接続することが出来ない等)場合やそもそもいちいちドキュメントを見に行かずにsqlplusで手っ取り早く確認したい(私はこのパターンです。脳内コンテキストスイッチが発生するのが非常に嫌だ。)場合があると思います。 意外と検索しても情報が出てこないので、やり方を記載します。

PL/SQLプロシージャ(ファンクション)の引数の確認方法

  • [DBA|ALL|USER]_ARGUMENTSビューを参照します。
  • [DBA|ALL|USER]_ARGUMENTSの定義は以下の通り
SYS@ORCL > desc all_arguments
 名前                                                NULL?    型
 ----------------------------------------------------- -------- ------------------------------------
 OWNER                                                 NOT NULL VARCHAR2(128)
 OBJECT_NAME                                                    VARCHAR2(128)
 PACKAGE_NAME                                                   VARCHAR2(128)
 OBJECT_ID                                             NOT NULL NUMBER
 OVERLOAD                                                       VARCHAR2(40)
 SUBPROGRAM_ID                                                  NUMBER
 ARGUMENT_NAME                                                  VARCHAR2(128)
 POSITION                                              NOT NULL NUMBER
 SEQUENCE                                              NOT NULL NUMBER
 DATA_LEVEL                                            NOT NULL NUMBER
 DATA_TYPE                                                      VARCHAR2(30)
 DEFAULTED                                                      VARCHAR2(1)
 DEFAULT_VALUE                                                  LONG
 DEFAULT_LENGTH                                                 NUMBER
 IN_OUT                                                         VARCHAR2(9)
 DATA_LENGTH                                                    NUMBER
 DATA_PRECISION                                                 NUMBER
 DATA_SCALE                                                     NUMBER
 RADIX                                                          NUMBER
 CHARACTER_SET_NAME                                             VARCHAR2(44)
 TYPE_OWNER                                                     VARCHAR2(128)
 TYPE_NAME                                                      VARCHAR2(128)
 TYPE_SUBNAME                                                   VARCHAR2(128)
 TYPE_LINK                                                      VARCHAR2(128)
 PLS_TYPE                                                       VARCHAR2(128)
 CHAR_LENGTH                                                    NUMBER
 CHAR_USED                                                      VARCHAR2(1)
 ORIGIN_CON_ID                                                  NUMBER
  • 例えばDBMS_SQLTUNEパッケージのCREATE_TUNING_TASKプロシージャの引数を確認したいケースでは以下のようにします。
set linesize 1000
set pagesize 1000
col object_name for a20
col overload for a2
col argument_name for a20
col default_value for a20

select object_name
     , overload
     , argument_name
     , position
     , data_type
     , defaulted
     , default_value
     , in_out
from   all_arguments
where package_name = 'DBMS_SQLTUNE'
and   object_name = 'CREATE_TUNING_TASK'
order by overload, position;
OBJECT_NAME          OV ARGUMENT_NAME          POSITION DATA_TYPE                      D DEFAULT_VALUE        IN_OUT
-------------------- -- -------------------- ---------- ------------------------------ - -------------------- ---------
CREATE_TUNING_TASK   1                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   1  SQL_TEXT                      1 CLOB                           N                      IN
CREATE_TUNING_TASK   1                                1 OPAQUE/XMLTYPE                 Y                      IN
CREATE_TUNING_TASK   1  BIND_LIST                     2 VARRAY                         Y                      IN
CREATE_TUNING_TASK   1  USER_NAME                     3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  SCOPE                         4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  TIME_LIMIT                    5 NUMBER                         Y                      IN
CREATE_TUNING_TASK   1  TASK_NAME                     6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  DESCRIPTION                   7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  CON_NAME                      8 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   2  SQL_ID                        1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   2  PLAN_HASH_VALUE               2 NUMBER                         Y                      IN
CREATE_TUNING_TASK   2  SCOPE                         3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  TIME_LIMIT                    4 NUMBER                         Y                      IN
CREATE_TUNING_TASK   2  TASK_NAME                     5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  DESCRIPTION                   6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  CON_NAME                      7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   3  BEGIN_SNAP                    1 NUMBER                         N                      IN
CREATE_TUNING_TASK   3  END_SNAP                      2 NUMBER                         N                      IN
CREATE_TUNING_TASK   3  SQL_ID                        3 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   3  PLAN_HASH_VALUE               4 NUMBER                         Y                      IN
CREATE_TUNING_TASK   3  SCOPE                         5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  TIME_LIMIT                    6 NUMBER                         Y                      IN
CREATE_TUNING_TASK   3  TASK_NAME                     7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  DESCRIPTION                   8 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  CON_NAME                      9 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   4  SQLSET_NAME                   1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   4  BASIC_FILTER                  2 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  OBJECT_FILTER                 3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK1                         4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK2                         5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK3                         6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RESULT_PERCENTAGE             7 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  RESULT_LIMIT                  8 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  SCOPE                         9 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  TIME_LIMIT                   10 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  TASK_NAME                    11 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  DESCRIPTION                  12 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  PLAN_FILTER                  13 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  SQLSET_OWNER                 14 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   5  SPA_TASK_NAME                 1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   5  SPA_TASK_OWNER                2 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  SPA_COMPARE_EXEC              3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  BASIC_FILTER                  4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  TIME_LIMIT                    5 NUMBER                         Y                      IN
CREATE_TUNING_TASK   5  TASK_NAME                     6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  DESCRIPTION                   7 VARCHAR2                       Y                      IN