orz.conf

技術メモ✍

tds_fdwのインストール

Installing on CentOSのページを見てインストールしました。

EPELをインストール

yum install epel-release

TDSをインストール

yum install freetds freetds-devel

alpha版を除くと20180528現在は1.08が最新でした。2016のだけど。

export TDS_FDW_VERSION="1.0.8"

PostgreSQLはバージョン9.6にしています。

export POSTGRES_VERSION="9.6"
wget https://github.com/tds-fdw/tds_fdw/archive/v${TDS_FDW_VERSION}.tar.gz -O tds_fdw-${TDS_FDW_VERSION}.tar.gz
tar -xvzf tds_fdw-${TDS_FDW_VERSION}.tar.gz
cd tds_fdw-${TDS_FDW_VERSION}
PATH=/usr/pgsql-{POSTGRES_VERSION}/bin:$PATH make USE_PGXS=1
sudo PATH=/usr/pgsql-{POSTGRES_VERSION}/bin:$PATH make USE_PGXS=1 install

\dxでインストールしたEXTENSIONを確認出来ます。

続いてpostgresの設定です。
psqlで作業します。

postgres=# create extension tds_fdw;
CREATE EXTENSION

servernameはsql serverがインストールされているサーバを適宜記載

postgres=# create server TDS_TestDB foreign data wrapper tds_fdw options (servername 'localhost', port '1433', database 'TestDB', tds_version '4.2', character_set 'UTF-8');
CREATE SERVER

grantする

postgres=# grant usage on foreign server TDS_TestDB to postgres;
GRANT

sql serverの情報を記載

postgres=# create user mapping for postgres server TDS_TestDB options (username 'sa', password 'password');
CREATE USER MAPPING

sql serverのほうはMicroSoftのページの情報でテーブルを作っているとするとPostgreSQL側では下記の指定になります。

create foreign table t1 (id integer, name VARCHAR(50), quantity integer) server TDS_TestDB options (table 'Inventory');


下記サイトを参考にしました。
tdsのインストール
https://github.com/tds-fdw/tds_fdw

PostgreSQLの設定
https://www.openscg.com/bigsql/docs/tds_fdw/

MicroSoft
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-red-hat?view=sql-server-linux-2017

Excelでいくつか

Excelの基本的な話をいくつか

値の存在チェック

セルの値が指定範囲内の中に存在する場合に色を変えるということを
よくやります。
IT系の職場であれば常識的な作業ですが、新人など知らない子に教える機会があったのでまとめます。

B列の各値がD列に存在した場合に、、、
f:id:toshtone:20180502194234p:plain

このように色を変えます。
f:id:toshtone:20180502194251p:plain

B列のセルを選択して、書式ルールの編集をクリック。
f:id:toshtone:20180502194310p:plain

これも常識なとこですが復習として
$→絶対参照 $なし→相対参照

下記の書式を設定

=IF(MATCH($B2,$D$2:$D$6,0)>0,TRUE,FALSE)

まずMATCHを使って指定範囲内のどこに対象セルの値があるかチェックします。
引数3番目に0を指定することで対象セルに一致する値を返してくれるようになるので重要です。

MATCH($B2,$D$2:$D$6,0)

この値が0以上となるということは、対象セルに一致する値が存在するということになります。
今回はtrueであれば色をつけてあげれば完成です。
$B2というように行は相対参照にしないといけません。

罫線をショートカットキーで扱いたい

残念ながらないんですが、F4キーを使って繰り返しをさせることでそれに近いことが出来ます。

まず罫線をひく
f:id:toshtone:20180502203314p:plain

次に罫線をひきたいセルに移動
f:id:toshtone:20180502203325p:plain

F4キーを押すと罫線がひけています
f:id:toshtone:20180502203336p:plain

右のセル、左のセルへコピーするショートカットキー

このセルの値を
f:id:toshtone:20180502201210p:plain

右のセルにコピー
f:id:toshtone:20180502201225p:plain

下のセルにコピー
f:id:toshtone:20180502201233p:plain


それぞれCTRL+R、CTRL+Dでコピー出来ます。
でも上方向、左方向にコピーするショートカットは多分ありません。

矢印をピッタリ

こんなちょっと斜めな矢印は嫌です。
f:id:toshtone:20180502203825p:plain

altキーを使えば水平垂直も簡単。
f:id:toshtone:20180502203835p:plain

水平だけど、セルの真ん中に持っていきたい場合はもう一個位置調整用のオートシェイプ(四角とか)を用意
f:id:toshtone:20180502203844p:plain

四角もaltを押しながらだと枠線に合わせるモードになって、枠線に合わせて書けます。

矢印と四角を選択して配置を上下中央揃えにすると
f:id:toshtone:20180502203856p:plain

セルの中央に綺麗に配置が出来ました。
f:id:toshtone:20180502203905p:plain

CSS周りで初歩的で備忘録的なやつ

復習
#→id
.→class
全然触らないのでどっちがどっちだったか分からなくなります。

divでidを指定した場合の例

html側

    <div id="itiran">
・
・
        <table>
            <th>
            </th>
            <tr>
                <td>
                </td>
            </tr>
        </table>
    </div>

css

div#itiran table{
margin: 0px;
width:100%;
border:1px solid #BF3F00;
}
div#itiran table th{
~~~
}
div#itiran table tr{
~~~
}
div#itiran table tr td{
~~~
}


その他
div#itiran th a
→thの中のaタグの指定

リバースSSHポートフォワーディング

以下、自宅を会社と読み替えても差し支えありません。

f:id:toshtone:20180321232237j:plain

外出先のPCから自宅のwindowsリモートデスクトップしたい時があります。

VPNサーバたてて接続するとか色々手段があるんですが今回は
リバースSSHポートフォワーディングして実現したいと思います。

やることは2つです
・自宅のLinuxからVPSLinuxに向けてトンネル
・外出先PCからVPSLinuxに向けてトンネル

自宅のLinuxからVPSLinuxに向けてトンネルを掘る

自宅のWindowsIPアドレス:192.168.1.100
自宅のWindowsのRDP待受ポート:3389
VPSLinuxの転送ポート:13389
VPSドメイン名:vps.com
VPSSSH待受ポート:10022

ssh -N -R 13389:192.168.1.100:3389 vps.com -p 10022
外出先PCからVPSLinuxに向けてトンネルを掘る

TeratermSSHポート転送の設定をします。
ローカルのポートは何でもいいですが今回は50000としました。

ローカルのポート:50000 リッスン:無し
リモート側ホスト:vpn.com ポート:13389
リモート側ホスト:localhost ポート:13389
3/25 リモート側ホストの記載を修正しました


後はリモートデスクトップlocalhost:50000を指定すれば接続出来ます。

blog.devolutions.net

Linuxのor演算子とand演算子

or演算子

コマンド1 || コマンド2
コマンド1が失敗した場合コマンド2が実行される。

ls /var/test > /dev/null 2>&1 || echo "該当ディレクトリは存在しません"

and演算子

コマンド1 && コマンド2
コマンド1が成功した場合コマンド2が実行される。

ls /var/tmp > /dev/null 2>&1 && echo "該当ディレクトリは存在します"

ファイルディスクリプタ 2>&1

よく見かける2>&1の意味、ググらずにすぐに答えることは出来ますか?


標準エラー出力を標準出力にマージするという意味です。
何度も調べたことがあるかと思いますが、いきなり質問されるとどきっとしてしまいます。

標準入出力のファイルディスクリプタ
0→標準入力
1→標準出力
2→標準エラー出力

プロセスを実行すると上記のファイルディスクリプタが作成されます。


httpdのファイルディスクリプタを確認してみます。

まずはpidを確認
ps aux | grep httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 17762 0.0 1.1 367636 12148 ? Ss Feb18 3:10 /usr/sbin/httpd


pidは17762と確認出来ました。
ファイルディスクリプタを確認します。

/proc/17762/fd配下にファイルディスクリプタがあります。

ls -l /proc/17762/fd

lr-x------ 1 root root 64 Mar 21 20:14 0 -> /dev/null
l-wx------ 1 root root 64 Mar 21 20:14 1 -> /dev/null
l-wx------ 1 root root 64 Mar 21 20:14 10 -> /var/log/httpd/access_log
l-wx------ 1 root root 64 Mar 21 20:14 11 -> /var/log/httpd/ssl_access_log
l-wx------ 1 root root 64 Mar 21 20:14 12 -> /var/log/httpd/ssl_request_log
lr-x------ 1 root root 64 Mar 21 20:14 13 -> /dev/urandom
l-wx------ 1 root root 64 Mar 21 20:14 2 -> /var/log/httpd/error_log
lrwx------ 1 root root 64 Mar 21 20:14 3 -> socket:[3608670]
lrwx------ 1 root root 64 Mar 21 20:14 4 -> socket:[3608671]
lrwx------ 1 root root 64 Mar 21 20:14 5 -> socket:[3608674]
lrwx------ 1 root root 64 Mar 21 20:14 6 -> socket:[3608675]
lr-x------ 1 root root 64 Mar 21 20:14 7 -> pipe:[3608682]
l-wx------ 1 root root 64 Mar 21 20:14 8 -> pipe:[3608682]
l-wx------ 1 root root 64 Mar 21 20:14 9 -> /var/log/httpd/ssl_error_log

httpdは標準出力は/dev/nullなので読み捨て、標準エラー出力は/var/log/httpd/error_log
となっているようです。

コマンド > /dev/null > 2>&1

これは標準エラー出力を標準出力にマージして読み捨てるということらしいです。

meltdownとSpectreの対応

CentOS6系のサーバで対応を行ってみました。

CVE-2017-5715
CVE-2017-5753
CVE-2017-5754

Spectreは幽霊とか怖いものといった意味だそうです。

現在のカーネルバージョンを確認

# uname -r

2.6.32-642.3.1.el6.x86_64

随分と古そうです。

早速更新処理

# yum update

完了したら再起動します。

# shutdown -r now

再起動後にバージョンを確認

2.6.32-696.18.7.el6.x86_64

MeltDown対策済みのバージョンになりました。

念の為以下も実行して確認。

# rpm -q --changelog kernel | egrep 'CVE-2017-5715|CVE-2017-5753|CVE-2017-5754'

数十のパッチが確認できました。


今回のアップデートと直接関係無いのですが、再起動後にsshだけ接続なくなってしまいました。

ポートを変更していたんですが、そのポートが空いて居ないようです。

iptablesの設定後に保存をしていなかったようです。

# service iptables save

iptablesの設定後は保存を忘れずに。


以下脆弱性の情報

www.cyberciti.biz