Skip to main content

Shell Script: for文 - ワードリストに変数、コマンドを使用

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

以下のシェルスクリプトはfor文のワードリストに文字列変数を使用したもの。文字列はスペース区切でパラメータ変数に格納されloopする。また、ワードリストにバッククォートで括ったコマンドを指定すると、そのコマンドの実行結果がパラメータ変数に渡される。

#!/bin/sh
VARS="1 2 3 four five"
for VAR in $VARS
do
echo $VAR
done
echo ""
for LIST in `date`
do
echo $LIST
done

PHP: 添字配列の初期化、出力、代入

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

ソースコード

<?php
// 添字配列の初期化
$numbers = array(0, 3, 100, 2087123454, ); // 数値のみ(末尾要素のカンマは省略可)
$strings = array('Jon', 'Mery', 'Sun', 'Ren', ); // 文字列のみ
$numstrs = array(1, 1.0, '1', ); // 複数型混合(数値、少数、文字列)
$empty = array(); // 空の配列
// var_dumpで構造を確認
echo '$numbers == ';
var_dump($numbers);
echo '$strings == ';
var_dump($strings);
echo '$numstrs == ';
var_dump($numstrs);
echo '$empty == ';
var_dump($empty);
echo PHP_EOL;
// 配列の要素を出力
echo $numbers[2], PHP_EOL;
echo $strings[0], PHP_EOL;
echo $numstrs[2], PHP_EOL, PHP_EOL;
// foreach で配列の要素を先頭から順に出力
foreach ($numbers as $val) {
echo $val, PHP_EOL;
}
echo PHP_EOL;
// 配列の要素への代入
$strings[0] = 'Mike';
$empty[] = 'Jon'; // 空のブラケットを用いると要素の追加となる
echo $strings[0], PHP_EOL;
echo $empty[0], PHP_EOL;
?>

実行結果

$numbers == array(4) {
[0]=>
int(0)
[1]=>
int(3)
[2]=>
int(100)
[3]=>
int(2087123454)
}
$strings == array(4) {
[0]=>
string(3) "Jon"
[1]=>
string(4) "Mery"
[2]=>
string(3) "Sun"
[3]=>
string(3) "Ren"
}
$numstrs == array(3) {
[0]=>
int(1)
[1]=>
float(1)
[2]=>
string(1) "1"
}
$empty == array(0) {
}
100
Jon
1
3
100
2087123454
Mike
Jon

リファレンス

Lenovo ThinkVantageでUSBメモリへリカバリー・ディスクを作成

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

Lenovo_ThinkVantage 先日サーバ用にLenovoのThinkCentreを30kで購入しました。出荷時はWindows7がプリインストールされていたので、折角なのでLinux系OSをインストールする前にリカバリーメディアを作成しておこうと思いました。 当初はバックアップメディアにDVD-Rを予定していたのですが、Rは色素劣化による読み込み不良を経験したことがあるので、USBメモリに変更し、手順は下記のサイトを参考に実施。

Windows7高速化・軽量化Tips

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

備忘録として以下のWindows7の使用リソースの軽量化設定の手順を簡単に紹介します。

  1. プリフェッチを無効にする
  2. スーパーフェッチを無効にする
  3. セキュリティセンター機能の無効
  4. 自動デフラグ停止
  5. 使用しないWindowsの機能のアンインストール
  6. 自動ログオン設定

Android: &quot;Unable to open sync connection!&quot; の対処例

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

上記のメッセージはAndroidアプリをEclipseから実機でデバッグする際にDDMS上に出力されたエラーです。

[2010-06-05 15:16:21 - pokeca] Failed to upload pokeca.apk on device '11223344'
[2010-06-05 15:16:21 - pokeca] java.io.IOException 発生: Unable to open sync connection!
[2010-06-05 15:16:21 - pokeca] Launch canceled!

根本原因は不明ですが、対処として下記の手順を試みると解決しました。

  1. コマンドライン上でadb kill-server
  2. Android端末の接続を解除する(USBケーブルを抜く)
  3. コマンドライン上でadb start-server
  4. Android端末をUSBで再接続する。
  5. DDMSで端末が正常に接続されているか確認する。
  6. アプリのデバッグを開始→正常に実行される(OK!)。

コマンド

C:\Users\yukun>adb kill-server
C:\Users\yukun>adb start-server
* daemon not running. starting it now *
* daemon started successfully *
C:\Users\yukun>

5の実行結果

Android端末のUSB接続確認

参考サイト

  • anddev.org • View topic - Unable to open sync connection!

Java: インターフェースとローカルのIPv6, IPv4アドレスの取得 - NetworkInterfaceクラス

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

下記のコードはネットワークインターフェース情報取得し、IPv6とIPv4のアドレスを取得、表示するサンプルコードです。

ソースコード

import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
/**
* ネットワークインターフェースの取得
*/
public class InetAddressesInfo {
private HashMap<networkInterface, ArrayList<inetAddress>> interfaceMap;
public InetAddressesInfo() {
interfaceMap = new HashMap<networkInterface, ArrayList<inetAddress>>();
}
public void getInterfaces() {
interfaceMap.clear();
try {
Enumeration<networkInterface> interfaceList = NetworkInterface.getNetworkInterfaces();
if (interfaceList == null) {
System.out.println("Message: No interfaces found");
} else {
while (interfaceList.hasMoreElements()) {
NetworkInterface iface = interfaceList.nextElement();
Enumeration<inetAddress> addrList = iface.getInetAddresses();
if (!addrList.hasMoreElements()) continue;
ArrayList<inetAddress> iaddress = new ArrayList<inetAddress>();
while (addrList.hasMoreElements())
iaddress.add(addrList.nextElement());
interfaceMap.put(iface, iaddress);
}
}
} catch (SocketException se) {
System.out.println("Error getting network interfaces: " + se.getMessage());
}
}
public void show() {
for (NetworkInterface n : interfaceMap.keySet()) {
System.out.println("Interface " + n.getName() + ": ");
for (InetAddress a : interfaceMap.get(n)) {
System.out.print("\tAddress " + ((a instanceof Inet4Address ? "(IPv4)"
: (a instanceof Inet6Address ? "(IPv6)" : "(?)"))));
System.out.println(": " + a.getHostAddress());
}
}
}
public HashMap<networkInterface, ArrayList<inetAddress>> getInterfaceMap() {
return interfaceMap;
}
public void setInterfaceMap(
HashMap<networkInterface, ArrayList<inetAddress>> interfaceMap) {
this.interfaceMap = interfaceMap;
}
public static void main(String[] args) {
InetAddressesInfo i = new InetAddressesInfo();
i.getInterfaces();
i.show();
}
}

実行結果

Interface lo:
Address (IPv6): 0:0:0:0:0:0:0:1
Address (IPv4): 127.0.0.1
Interface net4:
Address (IPv6): fe80:0:0:0:0:5efe:c0a8:10a%12
Interface net5:
Address (IPv6): 2001:0:4137:9e76:8ae:1cf7:3f57:fef5
Address (IPv6): fe80:0:0:0:8ae:1cf7:3f57:fef5%13
Interface eth3:
Address (IPv6): 2001:c90:33d:21d4:919c:836b:2d1a:cf33
Address (IPv6): 2001:c90:33d:21d4:8856:aef1:d0bd:db64
Address (IPv6): fe80:0:0:0:919c:836b:2d1a:cf33%11
Address (IPv4): 192.168.1.10

ドキュメント

NetworkInterface (Java Platform SE 6)

Many interrupted jobs

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

Whilst I was working in the office today, I was asked to work jobs intermittently by colleagues and business partners. In order to finish the jobs effectively, I prioritize them. After that, I start completing them in order. This article was corrected by Satelle in Lang-8. Thank you very much.