備忘録

備忘録

Powershell スクリプト(ps1 ファイル)をUTF-8で利用する場合の注意点

Ⅰ. はじめに

タイトルの通り「Powershell スクリプト(ps1 ファイル)をUTF-8で利用する場合の注意点」です。

Ⅱ. 注意点

2点あります。

1. 必ずUTF-8 BOM付きで保存する
  • BOM無しの場合文字化けする場合がある為
  • スクリプト署名時UTF-8 BOM付きが必須条件な為
2. ファイル先頭でエンコーディングを指定する

test.ps1

$OutputEncoding = [Text.Encoding]::UTF8
# do something

JavaRMI で HelloWorld する方法

Ⅰ. はじめに

タイトルの通り「JavaRMI で HelloWorld する方法」です。

Ⅱ. やり方

1. サンプルプログラムを書く

f:id:kagasu:20190630173926p:plain
com/company/client/Client.java

package com.company.client;

import com.company.core.Common;
import com.company.core.IHello;

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
  public static void main(String[] args) throws RemoteException, NotBoundException {
    Registry reg = LocateRegistry.getRegistry(Common.RMI_HOST, Common.RMI_PORT);
    IHello hello = (IHello) reg.lookup(Common.RMI_NAME);

    System.out.println(hello.helloWorld("tanaka"));
  }
}

com/company/core/Common.java

package com.company.core;

public class Common {
  public static final String RMI_NAME = "MyServer";
  public static final String RMI_HOST = "10.226.0.1";
  public static final int RMI_PORT = 1099;
}

com/company/core/IHello.java

package com.company.core;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface IHello extends Remote {
  String helloWorld(String name) throws RemoteException;
}

com/company/server/Hello.java

package com.company.server;

import com.company.core.IHello;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class Hello extends UnicastRemoteObject implements IHello {
  protected Hello() throws RemoteException {
    super();
  }

  @Override
  public String helloWorld(String name) throws RemoteException {
    return "hello world " + name;
  }
}

com/company/server/Server.java

package com.company.server;

import com.company.core.Common;

import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server{
  public static void main(String[] args) throws RemoteException, AlreadyBoundException {
    Registry registry = LocateRegistry.createRegistry(Common.RMI_PORT);
    registry.bind(Common.RMI_NAME, new Hello());

    System.out.println("server started");
  }
}
2. コンパイルする
javac^
  -d out^
  src/com/company/client/Client.java^
  src/com/company/core/Common.java^
  src/com/company/core/IHello.java^
  src/com/company/server/Hello.java^
  src/com/company/server/Server.java
3. サーバを起動する
java -classpath out com.company.server.Server
4. クライアントを起動する
java -classpath out com.company.client.Client

実行結果

hello world tanaka

GASで毎日6:00丁度に実行するトリガーを作成する方法

Ⅰ. はじめに

GASのトリガー設定Webページには「毎日6:00丁度に実行」という項目がありません。
この記事ではスクリプトでトリガーを設定する事により「毎日6:00丁度に実行」を実現します。

  • 特定の日時を指定した場合は一度しか実行されません。

f:id:kagasu:20190630090321p:plain

  • トリガー編集画面で「午前 6 時~7 時」と指定した場合、毎日実行されますが「午前 6 時~7 時」の間いつ実行されるか不明です。

f:id:kagasu:20190630090214p:plain

Ⅱ. やり方

1. スクリプトを編集する
function createTrigger () {
  var date = new Date();
  date.setDate(date.getDate() + 1);
  date.setHours(6, 0, 0);
  ScriptApp.newTrigger('myFunction').timeBased().at(date).create();
}

function myFunction () {
  // do something
  createTrigger();
}
2. 初回のトリガーを設定する

「編集」→「現在のプロジェクトのトリガー」→「トリガーを追加」

実行結果

初回のトリガー①が実行され、「毎日6:00丁度に実行」されるトリガー②が自動的に作成されます。
f:id:kagasu:20190630094945p:plain

MSB4062 の対処方法

Ⅰ. はじめに

タイトルの通り「MSB4062 の対処方法」です。

Ⅱ. エラー原因

  • 開発環境(SDK等)が適切にインストールされていない場合に発生するエラーです。
  • 開発環境(SDK等)をインストールしている場合でもVisual StudioSDKの互換性により発生するエラーです。

Ⅲ. エラー対策

Windows Driver Kit(WDK)の例。

1. 以下Webサイトから最新のWDKをダウンロードする

https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk

2. 1でダウンロードしたWDKをインストールする

AndroidのパケットをWiresharkでリアルタイムに見る方法

Ⅰ. はじめに

タイトルの通り「AndroidのパケットをWiresharkでリアルタイムに見る方法」です。

Ⅱ. 環境

Ⅲ. やり方

2. 以下のコマンドをコマンドプロンプトで実行する
cd putty
plink -ssh root@192.168.0.5 -P 22 -pw admin "tcpdump -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -

実行結果

f:id:kagasu:20190605125345p:plain