メインコンテンツまでスキップ

携帯メールが自動受信できない原因・対処法

· 約1分
Yu Sasaki
Enterprise Security Manager / Advisor

先日保有している携帯電話(005SH [Android2.3])のメールが自動的に受信できなくなったので、以下の方法試みたが一向に改善しなかった。

  1. メール設定を全文受信
  2. 迷惑メールフィルタを切る
  3. 携帯電話の初期化
  4. USIMの取り外し・取り付け

ショップに相談したところ代替機を貸与されたのだが代替機でも同様の事象が発生した為、USIMデータが破損していると推定し、USIMの交換を実施頂く。交換後は正常にメールが自動受信できるようになった。 スタッフにUSIMの破損原因を伺ったところ、磁気の影響で壊れることもあるとのこと。携帯をPASMOと同じポケットに入れていたのが不味かったのかな。 端末本体に原因がない事象の為、うかつにメーカー修理に出すと2週間は代替機を使わなければならないので、修理前にはUSIMの検証もしておくとベター。

Bash: 数字とその他 文字列の判別

· 約1分
Yu Sasaki
Enterprise Security Manager / Advisor

数字文字列とそれ以外の文字列を判別する条件式は以下の通り。

スクリプト

#!/bin/sh
if expr "$1" : '[0-9]*' > /dev/null ; then
echo "数字です"
else
echo "数字以外です"
fi

実行結果

$ ./if_numstr.sh 123
数字です
$ ./if_numstr.sh abc
数字以外です

内容

exprで正規表現を用いて数値を判定。exprは内部コード以外にも標準出力にも結果を返すので、不要なそれは/dev/nullへリダイレクトする。

OpenSSH サーバのインストールと公開鍵・秘密鍵の作成・設置

· 約5分
Yu Sasaki
Enterprise Security Manager / Advisor

この度さくらVPS(OS: CentOS 5)を利用し始めた為、備忘録として掲載。

事前準備

先ずリモートコンソール上で以下の作業を実施。尚、コンソールはブラウザ上ではなく、Java Applet版の方が使い易い。

既存のsshdサーバをアンインストール

# /etc/rc.d/init.d/sshd stop <-- 停止
# yum -y remove openssh <-- アンインストール

Shell Script: testコマンドによる条件判定 (数値、文字列)

· 約2分
Yu Sasaki
Enterprise Security Manager / Advisor

test_command 上表はshの組み込み、かつ外部コマンドでもあるtestコマンドの判定表。testコマンドは与えられた条件式に対して、終了コードに真「0」、**偽「1」**を返す。他のプログラミング言語の条件判定とは真偽の値の意味が逆なので違和感を覚えるが、例えばC言語のmainのreturn (システムへのreturn)は正常では0、異常では1を返す例と同様と考えるとしっくりくるかな。。

Java: TCP Socket Echo Server/Client サンプル

· 約3分
Yu Sasaki
Enterprise Security Manager / Advisor

以下の2つのサンプルコードはローカルでTCP Socketを用いたEchoサーバ/クライアントを走らせるもの。Javaのネットワークプログラミングで基本となるクラスとメソッドの使いどころを確認しておきたくて作成。まぁ今はnioがデファクトですけど。

サーバ

package tcpechoserver;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
public class Main {
private static final int BUFSIZE = 32; // 受信バッファサイズ
public static void main(String[] args) throws IOException {
int servPort = 5000;
// サーバソケットの作成
ServerSocket servSock = new ServerSocket(servPort);
int recvMsgSize; // 受信メッセージサイズ
byte[] receiveBuf = new byte[BUFSIZE]; // 受信バッファ
// クライアントからの接続を待ち受けるループ
while (true) {
Socket clntSock = servSock.accept(); // クライアントの接続を取得
SocketAddress clientAddress = clntSock.getRemoteSocketAddress();
System.out.println("接続中:" + clientAddress);
InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();
while ((recvMsgSize = in.read(receiveBuf)) != -1) {
out.write(receiveBuf, 0, recvMsgSize);
}
clntSock.close();
}
// 到達不能コード
}
}