カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

簡易クリップボード操作

クリップボードにコピー

[control name].SetFocus
[control name].SelStart = 0
[control name].SelLength = Len([control name])
DoCmd.RunCommand acCmdCopy

クリップボードからペースト

DoCmd.RunCommand acCmdPaste

※貼り付けたデータをすぐに加工等する場合は、Me.Refreshなどでデータを一旦反映させることが必要である。

5,049 views

複数ファイル内の文字列を置換して上書き保存する

【ファイル内の文字列を置換して上書き保存する】
書式
perl -p -i -e ‘s/検索文字列/置換文字列/g’ 対象ファイル名

-p…入力ファイルから1行ずつ取り出して処理し、表示する。
-i…ファイルを修正する。拡張子を指定すると、その拡張子でバックアップを取ってくれます。
-e…直後に続く部分をスクリプトとして処理する。
s/検索文字列/置換文字列/g…文字列の置換。検索文字列を置換文字列に置き換える。最後の「g」(gスイッチ)を指定すると、1行に複数検索文字列がある場合、全て置換してくれる。なければ最初の1個だけ置換。

【複数ファイル内の文字列を置換して上書き保存する】
書式
find [検索開始ディレクトリ] [オプション] -exec perl -p -i -e ‘s/検索文字列/置換文字列/g’ {} \;

例1)

find . -type f -exec perl -p -i -e 's/test/test/g' {} \;

例2)拡張子等を限定するとき

find ./*.txt -type f -exec perl -p -i -e 's/test/test/g' {} \;

例3)指定したディレクトリ以下をすべて置き換えしたいとき

find . -name '*.txt' -type f -exec perl -p -i -e 's/test/test/g' {} \;

としたいところですが、これだとfindで検索対象のテキストファイルの更新日付が全て新しくなってしまいました。
正解は以下になります。

find . -name '*.txt' -type f | xargs grep -l 'test' | xargs perl -p -i -e 's/test/test/g'

拡張子を限定しないと、JPGやGIFファイルのバイナリファイルでもなんでもアクセスしてしまうので注意すべし。
詳しくはこちら→[findとgrepを使ってファイルの中身を一括検索と置換]

4,107 views

座標の変換

緯度・経度を日本測地系から世界測地系(WGS84)に変換する
コードは例としてPHPで書いています。

function cnvCoords($ido, $keido)
{
    $ido   = $ido - $ido * 0.00010695  + $keido * 0.000017464 + 0.0046017;
    $keido = $keido - $ido * 0.000046038 - $keido * 0.000083043 + 0.010040;

    return array($ido, $keido);
}

緯度・経度を世界測地系(WGS84)から日本測地系に変換する

function cnvDeCoords($ido, $keido)
{
    $ido   = $ido + $ido * 0.00010695  - $keido * 0.000017464 - 0.0046017;
    $keido = $keido + $ido * 0.000046038 + $keido * 0.000083043 - 0.010040;

    return array($ido, $keido);
}

※変換の際、経度を計算するために必要な緯度は、変換後の値であることに注意

Javaの場合 続きを読む…»

3,021 views

自身のIPアドレスを取得

using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;


public static int check_ip()
{
  string hostname;     // ホスト名
  IPHostEntry ipentry; // IPエントリ(IPアドレスリスト)
  IPAddress ipaddr;    // IPアドレス
  string ipaddress;    // IPアドレス
  string[] IP_ARRAY;
  int n;

  ipaddress = "0.0.0.0";

  try
  {
    // ホスト名を取得
    hostname = Dns.GetHostName();

    // ホスト名からIPアドレスを取得する
    ipentry = Dns.GetHostEntry(hostname);

    // windows7だと、IPアドレスがインデックス「2」のため
    // ループで取り出す
    for (int i = 0; i < ipentry.AddressList.Length; i++)
    {
      // Regex : 正規表現
      Regex myRegex = new Regex(@"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$");
      // 対象文字列が存在するか?
      if (myRegex.IsMatch(ipentry.AddressList[i].ToString()))
      {
        ipaddr = ipentry.AddressList[i];
        ipaddress = ipaddr.ToString();
        break;
      }
    }
  }
  catch(Exception ex)
  {
    MessageBox.Show(ex.Message);
    Application.Exit();
  }

  // ネットワーク識別子を取得
  IP_ARRAY = ipaddress.Split('.');

  // ネットワーク識別子を返す
  n = int.Parse(IP_ARRAY[2]);

  return n;
}
3,616 views

デフォルトゲートウェイのアドレスを取得する

要参照設定

System.Net.NetworkInformation;

public static void getDefaultGateway()
{
 NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

 foreach (NetworkInterface adapter in adapters)
 {
  IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
  GatewayIPAddressInformationCollection addresses =
   adapterProperties.GatewayAddresses;
  if (addresses.Count > 0)
  {
   foreach (GatewayIPAddressInformation address in addresses)
   {
    Console.WriteLine(address.Address.ToString());
   }
  }
 }
}

adapter.Name
ネットワークアダプタの名前を取得
例)ローカル エリア接続

adapter.Id
ネットワークアダプタのID
例){A32F1F13-1CBD-4300-ADE6-D3AEA1426A52}

adapter.OperationalStatus
ネットワーク接続の現在の操作状態を取得
例)Up

adapter.Speed
ネットワークインターフェイスの速度を取得
例)100000000

adapter.Description
インターフェイスの説明を取得
例)Broadcom NetXtreme 57xx Gigabit Controller – パケット スケジューラ ミニポート

11,797 views