火曜日, 12月 13, 2016

特定のドメイン宛のメールキューの削除

$ mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "送信元アドレス" && $8 ~ /送信先ドメイン$/ && $9 == "") print $1 }'| tr -d '*!' | sudo postsuper -d -

火曜日, 7月 19, 2016

CentOS7のDBD::Sybaseでレコードの更新に失敗する場合

insert文やdelete文を実行する前に

$dbh->do('SET ANSI_NULL_DFLT_ON, ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON SET ANSI_NULL_DFLT_OFF, ARITHIGNORE, CURSOR_CLOSE_ON_COMMIT, IMPLICIT_TRANSACTIONS, NOCOUNT, XACT_ABORT , NUMERIC_ROUNDABORT OFF');

のようなクエリを実行する。
なお、確認したDBD::Sybaseのバージョンは、1.14。

月曜日, 6月 20, 2016

ファイルパスとファイルサイズでリモートホストとdiff

リモートホストにはリモートユーザでパスワードなしでssh接続できる前提。

diff <(ssh リモートユーザ@リモートホスト 'ls -l $(find 対象ディレクトリのパス -type f)' | awk '{print $5 " " $10;}') <(ls -l $(find 対象ディレクトリのパス -type f) | awk '{print $5 " " $10;}')

木曜日, 3月 24, 2016

Ubuntu 15.10にDockerをインストール

プロキシ経由でインターネットにアクセスする環境用。
CentOSのイメージを入れて起動するまで。

(参照)
https://docs.docker.com/engine/installation/linux/ubuntulinux/
https://github.com/docker/compose/releases


 $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
 $
 $ cd /etc/apt/sources.list.d/
 $
 $ sudo touch docker.list
 $
 $ sudo vi docker.list

(つぎの行を追加)

deb https://apt.dockerproject.org/repo ubuntu-wily main

 $
 $ sudo apt-get update
 $ sudo apt-cache policy docker-engine
 $
 $ sudo apt-get install docker-engine
 $
 $ sudo gpasswd -a ${USER} docker
 $
 $ cd /etc/systemd/system
 $
 $ sudo mkdir docker.service.d
 $
 $ cd docker.service.d
 $
 $ sudo touch http-proxy.conf
 $
 $ sudo vi http-proxy.conf

(つぎの行を追加)

[Service]
Environment="HTTP_PROXY=http://172.16.10.11:3128/"

 $
 $ sudo service docker start
 $
 $ sudo bash -c 'curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose'
 $
 $ sudo chmod +x /usr/local/bin/docker-compose
 $
 $ docker run hello-world
 $
 $ docker pull centos
 $
 $ docker images
 $
 $ docker run -it centos:latest
 $

月曜日, 2月 29, 2016

Javaのpropertiesファイル文字コード変換

変換前UTF-8で編集した場合

 $ native2ascii -encoding UTF-8 hoge.properties.UTF-8 hoge.properties

水曜日, 7月 22, 2015

Microsoft Azureで仮想マシンが応答しなくなったときの対応

Azureの管理ポータル上は稼働しているように見える仮想マシン上のサービスが利用できず、リモート接続もできなくなった場合、仮想マシンの構成を変更して保存すると復旧する確率が高い。

SQLite3のテーブル定義の変更


まず、データベースのdumpをとる。

 # echo '.dump' | sqlite3 hoge.db > hoge.dump

hoge.dumpをエディタで開き、CREATE TABLEのところを適宜変更する。

 # mv hoge.db hoge.db.bak
 # cat hoge.dump | sqlite3 hoge.db

以上

水曜日, 4月 22, 2015

テキストエディタGitHub Atomのバージョンは当面0.188.0で固定がよろしいようで(Windows版) (解決)

Windowsのシステム環境変数に

変数名:ATOM_NODE_URL
変数値:http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist

を追加することで問題解消。

---------------------------------------------------------------------------------
GitHubのAtomというテキストエディタがかなり良さ気だが、バージョン0.189.0から機能を追加する各種パッケージがインストールできなくなった。
Windows7 pro sp1 (64bit) のproxy経由。

https://github.com/atom/atom/releases

から0.188.0のZIP版をダウンロードし、解凍したものを使えば自動updateされないので、このバグが解消されるまでは当面このバージョンで。
パッケージがインストールできない状態では流石に使いにくい。

木曜日, 2月 05, 2015

MS SQL Serverで復旧モデルが「完全」の場合はトランザクションログをバックアップ

MS SQL Serverでミラーリングの構成にする場合、データベースの復旧モデルは「完全」でなくてはならない。
その場合、トランザクションログのバックアップを定期的にとらないと、ログファイルの肥大化を止められない。
データベースのバックアップをとるだけではトランザクションログのバックアップはとられないので、メンテナンスプランでデータベースのバックアップをとるのと同時に別途トランザクションログのバックアップもとるように設定する必要がある。

土曜日, 1月 10, 2015

Linux 特定のディレクトを除くディレクトリ配下のファイルの拡張子を変更する

カレントディレクトリで foo という文字列を含むディレクトリを除くディレクトリ配下のindex.htmlをindex.html.orgに変更する場合

$ find . -path "./*foo*" -prune -o -type f -name "index.html" | perl -nle '$o=$_;s/\.html$/\.html\.org/;rename $o,$_'

AzureでクラウドサービスのDNS逆引き設定

mail.hoge.comがDNSでhogemail.cloudapp.netのCNAMEで登録されている前提。
PowerShell を起動し、つぎのコマンドを実行し、一応クラウドサービスのサービス名を確認する。

PS C:\> Get-AzureService | fl ServiceName

つぎのようにコマンドを実行し、クラウドサービスのパブリック仮想 IP (VIP) アドレスの逆引き設定をする。

PS C:\> Set-AzureService -ServiceName "hogemail" -Description "Reverse DNS" -ReverseDnsFqdn "mail.hoge.com."

金曜日, 12月 12, 2014

SQL Serverでミラーリング状態の確認

Management Studioで

SELECT DB_NAME(database_id) [DBName],mirroring_role_desc,mirroring_state_desc,mirroring_witness_state_desc FROM sys.database_mirroring WHERE mirroring_guid IS NOT NULL ORDER BY DBName

を実行する。
コマンドプロンプトなら

sqlcmd -S localhost -U sa -P パスワード -d master -Q "SELECT DB_NAME(database_id) [DBName],mirroring_role_desc,mirroring_state_desc,mirroring_witness_state_desc FROM sys.database_mirroring WHERE mirroring_guid IS NOT NULL ORDER BY DBName"

を実行する。

火曜日, 11月 04, 2014

SQL Server でミラーリング削除

パートナー(ミラー先)に接続し、Management Studioで

ALTER DATABASE データベース名 SET PARTNER OFF

を実行する。

木曜日, 10月 02, 2014

AzureのCentOSにはswapがない!

Azureの仮想マシンのCentOSにはswapがない。
そこでswapを非永続ディスク上に作成する。
/etc/waagent.conf を編集する。
変更箇所は

ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=5120

の2行。
/etc/fstab に

/mnt/resource/swapfile swap swap defaults 0 0

を追記する。
これでOSを再起動すると、/mnt/resource に swapfile が作成される。

火曜日, 9月 30, 2014

Tomcat8.0でシンボリックリンクを有効にする

$CATALINA_HOME/conf/context.xml の <Context> のすぐ後に

<Resources className="org.apache.catalina.webresources.StandardRoot" allowLinking="true"/>

を追記する。
バージョン8.0からこうなったみたい。

Tomcat8.0のRequestDumperFilterでServletの文字化け解消

$CATALINA_HOME/webapps/アプリ名/WEB-INF/web.xml の先頭部分につぎのように<filter>を追記する。

------------------------------------------------------------------------------
<web-app>

  <filter>
    <filter-name>requestdumper</filter-name>
    <filter-class>
      org.apache.catalina.filters.RequestDumperFilter
    </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>requestdumper</filter-name>
    <url-pattern>/target_path/*</url-pattern>
  </filter-mapping>

(以下省略)
------------------------------------------------------------------------------

$CATALINA_HOME/conf/logging.properties を編集。

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler



handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, 5request-dumper.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

のように 5request-dumper.org.apache.juli.FileHandler, を追記し、

4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

の下あたりに

# request dumper configuration
5request-dumper.org.apache.juli.FileHandler.level = INFO
5request-dumper.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5request-dumper.org.apache.juli.FileHandler.prefix = request-dumper.
5request-dumper.org.apache.juli.FileHandler.formatter = org.apache.juli.VerbatimFormatter
org.apache.catalina.filters.RequestDumperFilter.level = INFO
org.apache.catalina.filters.RequestDumperFilter.handlers = 5request-dumper.org.apache.juli.FileHandler

を追記する。
アプリをデプロイし直し、Tomcatを再起動。
これで

$CATALINA_HOME/logs/



request-dumper.2014-09-30.log

のようなログファイルが生成される。
理由はわからないが、POSTリクエストで送信されたUTF-8の2バイト文字が、それを受け取ったフィルターのurl-patternに含まれるServletで文字化けしなくなった。
ちなみにJavaのソースコードはシフトJIS。

木曜日, 9月 11, 2014

Azureで仮想ネットワーク内仮想マシンのDNS名

仮想マシンOSがWindowsの場合、コマンドプロンプトで


C:\Users\Administrator>ipconfig

Windows IP 構成


イーサネット アダプター Ethernet 21:

   接続固有の DNS サフィックス . . . . .: eldb.m2.internal.cloudapp.net
   リンクローカル IPv6 アドレス. . . . .: fe80::7de3:9900:a6a0:eda1%34
   IPv4 アドレス . . . . . . . . . . . .: 192.168.91.4
   サブネット マスク . . . . . . . . . .: 255.255.255.128
   デフォルト ゲートウェイ . . . . . . .: 192.168.91.1

Tunnel adapter isatap.eldb.m2.internal.cloudapp.net:

   メディアの状態. . . . . . . . . . . .: メディアは接続されていません
   接続固有の DNS サフィックス . . . . .: eldb.m2.internal.cloudapp.net

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 2001:0:9d38:6abd:2cf8:151e:3f57:a4fb
   リンクローカル IPv6 アドレス. . . . .: fe80::2cf8:151e:3f57:a4fb%14
   デフォルト ゲートウェイ . . . . . . .: ::

C:\Users\Administrator>


この中の「接続固有の DNS サフィックス . . . . .: eldb.m2.internal.cloudapp.net」を確認。
例えばそのマシンのホスト名が hoge だったら

hoge.eldb.m2.internal.cloudapp.net

がその仮想ネットワーク内で使えるそのマシンのDNS名。
OSがLinuxの場合、


$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search elweb.m5.internal.cloudapp.net
nameserver 168.63.129.16
$


この中の「search elweb.m5.internal.cloudapp.net」を確認。
そのマシンのホスト名が hogehoge だったら

hogehoge.elweb.m5.internal.cloudapp.net

がその仮想ネットワーク内で使えるそのマシンのDNS名。

水曜日, 9月 03, 2014

CPU使用率

5秒おきにCPUの平均使用率を表示

(Linuxの場合)
$ mpstat 5

(Windowsの場合)
> typeperf -si 5 "\Processor(_Total)\% Processor Time"

金曜日, 8月 08, 2014

node.jsのインストール (CentOS 6.5 x86_64)

$ sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum install nodejs npm --enablerepo=epel

火曜日, 7月 01, 2014

Bracketsの proxy 設定

メニューバー「デバッグ」の「環境設定ファイルを開く」を選択。
brackets.json が開かれるので

{
    "debug.showErrorsInStatusBar": false
}

につぎのようにproxyの設定を追加し、Bracketsを再起動する。

{
    "debug.showErrorsInStatusBar": false,
    "proxy": "http://172.16.10.11:3128/"
}

以上。