Windows でファイル結合
分割されたファイルを結合するためには、コマンドプロンプトで以下のように実行する。
# テキストファイルの場合 copy hoge01.txt + hoge02.txt + hoge03.txt hogehoge.txt # zipのようなバイナリファイルの場合 copy /b hoge.zip01 + hoge.zip02 + hoge.zip03 hoge.zip
mecabで記号が名詞, サ変接続とされてしまう問題の解消
概要
- MeCabのデフォルトでは半角記号が名詞、サ変接続とされてしまう。
$ mecab ; ; 名詞,サ変接続,*,*,*,*,* EOS
- この問題を解消するために未定義語の辞書を編集して、半角記号が記号として取り扱うことができるようにする
前提環境
ステップ
- unk.def の編集
- 辞書の再インストール
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
$ 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