Quantcast
Channel: プログラム の個人的なメモ
Viewing all 860 articles
Browse latest View live

【Windows】 パフォーマンスに関わるコマンド ~ Windows編 ~

$
0
0

■ はじめに

 1) CPU負荷を調べるコマンド
 2) ディスク容量/メモリ使用量を調べるコマンド
Linux編は以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/34615658.html

1) CPU負荷を調べるコマンド

typeperf コマンド

typeperf -sc 3 -si 1 "\Processor(_Total)\% Processor Time" (scは回数、siは間隔[秒])
"02/21/2015 11:51:39.895","13.306980""02/21/2015 11:51:40.895","8.639933""02/21/2015 11:51:41.895","14.458355"
終了しています。お待ちください...                                      
コマンドは、正しく完了しました。

2) ディスク容量/メモリ使用量を調べるコマンド

tasklistコマンド

* 実行しているタスクの内容をアプリケーションとサービスの一覧をプロセスIDとともに表示
イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          4 K
System                           4 Services                   0      5,028 K
smss.exe                       324 Services                   0        560 K
http://itpro.nikkeibp.co.jp/article/Windows/20051025/223389/

関連記事

パフォーマンスに関わるコマンド ~ Linux編 ~

https://blogs.yahoo.co.jp/dk521123/34615658.html

【Java】Java から PC の CPU情報を取得する方法を考える

$
0
0

【1】コマンドを実行した場合

Linuxの場合
 * vmstatコマンドでJavaコードから実行し、CPU情報を抽出する
* vmstatコマンドについては、以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37259054.html

サンプル

参考文献 
https://stackoverflow.com/questions/6284384/get-memory-and-cpu-usage

【2】com.sun.management.OperatingSystemMXBean を使った方法

サンプル

import java.lang.management.ManagementFactory;

public class Main {
  @SuppressWarnings("restriction")
  public static void main(String[] args) {
    com.sun.management.OperatingSystemMXBean operatingSystemMXBean =
        (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
     System.out.println("ProcessCpuLoad : " + operatingSystemMXBean.getProcessCpuLoad());
     System.out.println("ProcessCpuTime : " + operatingSystemMXBean.getProcessCpuTime());
     System.out.println("SystemCpuTime : " + operatingSystemMXBean.getSystemCpuLoad());
  }
}
出力結果
ProcessCpuLoad : -1.0
ProcessCpuTime : 421875000
SystemCpuTime : -1.0
参考文献
https://stackoverflow.com/questions/36647405/java-api-to-get-cpu-memory-usage-of-my-java-application

【3】MBeanServer を使った方法

サンプル

import java.lang.management.ManagementFactory;
import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;

public class Main {
  public static void main(String[] args) throws Exception {
    printCpuInfo();
  }

  public static void printCpuInfo()
      throws InstanceNotFoundException, ReflectionException, MalformedObjectNameException, NullPointerException {
    MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
    ObjectName objectName = ObjectName.getInstance("java.lang:type=OperatingSystem");
    AttributeList attributeList = mbeanServer.getAttributes(objectName,
        new String[] { "ProcessCpuLoad", "ProcessCpuTime", "SystemCpuLoad" });

    if (attributeList.isEmpty()) {
      System.out.println("attributeList is Empty");
    }

    for (Attribute attribute : attributeList.asList()) {
      System.out.println(attribute.getName() + " : " + attribute.getValue());
    }
  }
}
出力結果
ProcessCpuLoad : 0.37238200554819395
ProcessCpuTime : 578125000
SystemCpuLoad : -1.0
参考文献
https://stackoverflow.com/questions/18489273/how-to-get-percentage-of-cpu-usage-of-os-from-java

別解
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class Main {
  public static void main(String[] args) {
    printUsage();
  }

  private static void printUsage() {
    OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
    for (Method method : operatingSystemMXBean.getClass().getDeclaredMethods()) {
      method.setAccessible(true);
      if (method.getName().startsWith("get") && Modifier.isPublic(method.getModifiers())) {
        Object value;
        try {
          value = method.invoke(operatingSystemMXBean);
        } catch (Exception ex) {
          value = ex;
        }
        System.out.println(method.getName() + " = " + value);
      }
    }
  }
}
出力結果
getCommittedVirtualMemorySize = 236544000
getFreePhysicalMemorySize = 2628100096
getFreeSwapSpaceSize = 2142429184
getProcessCpuLoad = -1.0
getProcessCpuTime = 515625000
getSystemCpuLoad = -1.0
getTotalPhysicalMemorySize = 8491581440
getTotalSwapSpaceSize = 10035085312
参考文献
https://stackoverflow.com/questions/47177/how-do-i-monitor-the-computers-cpu-memory-and-disk-usage-in-java

関連記事

【Java】PCリソース情報(ディスク容量、JVMメモリ容量、CPU情報)を取得する

https://blogs.yahoo.co.jp/dk521123/7968881.html

【Java】 外部プログラム/コマンドを実行するには ~ ProcessBuilder ~

https://blogs.yahoo.co.jp/dk521123/34842155.html

【Java】JMX (Java Management Extensions) / MBean (Management Bean)

https://blogs.yahoo.co.jp/dk521123/34391290.html

【HTML5】WebSoket ~ 入門編 ~

$
0
0

サンプル

 * WebSoket版 の Hello World 的なものを作ってみる

クライアント側 (HTML + JavaScript)

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>WebSocket Sample</title><script src="http://code.jquery.com/jquery-latest.min.js"></script><script>
$(function(){
    // WebSocket作成
    var webSocket = new WebSocket("ws://localhost:8080/SampleWebService/Hello");

    // WebSocket open時のイベントハンドラ登録
    webSocket.onopen = function(){
        $("#result").prepend("[onopen] " + "<br/>");
    }

    // WebSocket message受信時のイベントハンドラ登録
    webSocket.onmessage = function(message){
        $("#result").prepend(message.data + "<br/>");
    }

    // WebSocket error時のイベントハンドラ登録
    webSocket.onerror = function(){
        $("#result").prepend("[onerror] " + "<br/>");
    }

    // WebSocket close時のイベントハンドラ登録
    webSocket.onclose = function(){
        $("#result").prepend("[onclose] " + "<br/>");
    }

    // Windowが閉じられた(例:ブラウザを閉じた)時のイベントを設定
    $(window).unload(function() {
        webSocket.onclose();
    })

    // キー入力時のイベントを設定
    $("#message").keyup(function(e){
        webSocket.send($("#message").val());
    });
})</script></head><body><input type="text" id="message" /><div id="result" /></body></html

サーバ側 (Java)

import java.io.IOException;
import java.util.Set;

import javax.websocket.CloseReason;
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/Hello")
public class HelloEndPoint {
  // 現在のセッションを記録
  Session currentSession = null;

  public HelloEndPoint() {
      super();
  }

  /**
   * 接続がオープンしたとき
   */
  @OnOpen
  public void onOpen(Session session, EndpointConfig endpointConfig) {
    this.currentSession = session;
  }

  /*
   * メッセージを受信したとき
   */
  @OnMessage
  public void receiveMessage(String message) throws IOException {
    // メッセージをクライアントに送信する
    this.currentSession.getBasicRemote().sendText("Hello, " + message + ".");

    Set<Session> sessions = this.currentSession.getOpenSessions();
    for (Session session : sessions) {
      try {
        session.getBasicRemote().sendText("Hello, " + message + "!!");
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }

  /*
   * 接続がクローズしたとき
   */
  @OnClose
  public void onClose(Session session, CloseReason reason) {
    System.out.println("onClose : " + reason.getReasonPhrase());
  }

  /*
   * 接続エラーが発生したとき
   */
  @OnError
  public void onError(Throwable throwable) {
    System.out.println("onError");
  }
}

出力結果

サーバが起動していないとき
[onclose]
[onerror]
サーバが起動しているとき(「Mike」と入力)
Hello, Mike!!
Hello, Mike.
Hello, Mik!!
Hello, Mik.
Hello, Mi!!
Hello, Mi.
Hello, M!!
Hello, M.
Hello, M!!
Hello, M.
[onopen]

【Linux】【セキュリティ】アンチウイルスソフト ~ Sophos Anti-Virus / 導入編 ~

$
0
0

■ Sophos Anti-Virus for Linux

Sophos : ソフォス
 * 個人利用であれば、無料で使用可能
 * ドイツにある独立系のセキュリティ製品の評価を行う第三者テスト機関であるAV-Test での結果では、
    ClamAVより優れている(以下の関連記事を参照のこと)
https://blogs.yahoo.co.jp/dk521123/37259281.html

■ 構築手順

構築環境

 * OS : CentOS7

ダウンロード先

 * 以下のサイトから「sav-linux-free-9.tgz」をダウンロードしてくる
https://www.sophos.com/ja-jp/products/free-tools/sophos-antivirus-for-linux.aspx

手順

[1] 以下のコマンドでインストールする
# 解凍
tar zxvf sav-linux-free-9.tgz

sophos-av/
sophos-av/sav.tar
sophos-av/talpa.tar
sophos-av/uncdownload.tar
sophos-av/install.sh

cd sophos-av

# インストール(途中色々聞かれるので答える)
sudo ./install.sh
[2] インストールできたかを確認するためにバージョン確認
sudo /opt/sophos-av/bin/savdstatus --version

Copyright 1989-2017 Sophos Limited. All rights reserved.
Sophos Anti-Virus = 9.14.0
ビルドのリビジョン         = 2713642
脅威検出エンジン          = 3.69.2
脅威データ             = 5.46
検出脅威数             = 15340207
・・・略・・・

動作確認

# テストウィルス(無害)をダウンロード
# wgetがまだインスールされていなければ、「sudo yum -y install wget」で。
wget http://www.eicar.org/download/eicar.com

sudo savscan /home/user -remove

補足:アンインストールするには...

sudo /opt/sophos-av/uninstall.sh

■ 使い方

手動アップデート

sudo /opt/sophos-av/bin/savupdate

スキャン

sudo savscan /

sudo savscan / -remove

バージョン確認

sudo /opt/sophos-av/bin/savdstatus --version

ログファイル表示

sudo /opt/sophos-av/bin/savlog --today

設定変更

sudo /opt/sophos-av/bin/savsetup



関連記事

ウィルス スキャン ソフトの比較

https://blogs.yahoo.co.jp/dk521123/37259281.html

アンチウイルスソフト ~ Clam AntiVirus / 導入編 ~

https://blogs.yahoo.co.jp/dk521123/37031641.html

【セキュリティ】 暗号に関わる用語

$
0
0

■ ブロック暗号

以下の手順で暗号化する
[1] データを一定の長さに切る(この固定長のデータをブロックと呼ぶ)
[2] [1]のブロック単位で暗号化する

■ 暗号利用モード

 (1) ECBモード (Electronic Codebook Mode)
 (2) CBCモード (Cipher Block Chaining Mode)
 (3) PCBCモード (Propagating Cipher Block Chaining Mode / Plaintext Cipher Block Chaining mode)
 (4) CFBモード (Cipher Feedback Mode)
 (5) OFBモード (Output Feedback Mode)
 (6) CTRモード (Counter Mode)

(1) ECBモード (Electronic Codebook Mode)

 * メッセージはブロックに分割され、それぞれのブロックは独立して暗号化される
イメージ
平文 : abcdefghijklmnopqr
  => abc | def | ghi | jkl | mno | pqr (ブロックに分割)
  => ??? | ??? | ??? | ??? | ??? | ??? (それぞれのブロックは独立して暗号化)

(2) CBCモード (Cipher Block Chaining Mode)

 * 1 つ前の暗号文ブロックと、現在の平文ブロックの 排他的論理和(XOR) を取ったものを暗号化する
初期化ベクトル(IV ; Initialization Vector)
 * 最初の平文ブロックを暗号化する際は 1 つ前の暗号文ブロックがないため、
   初期化ベクトルとの 排他的論理和(XOR) を取る


関連記事

【セキュリティ】 暗号化アルゴリズム ~ 共通鍵暗号アルゴリズム編 ~

https://blogs.yahoo.co.jp/dk521123/36417953.html

【AWS】AWS のコスト節約を考える ~ 業務外でのEC2停止 / 入門編 ~

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37021455.html
で言った
「開発環境など必ずしも24時間起動する必要がないインスタンスは時間帯/祝日に応じて停止する」
をもう少し深掘りする

■ シミュレーション

 * どれ位お得になるのかシミュレーションをする
一ヶ月間無停止
 => 30日 × 24時間 = 720時間
平日:07:30-22:30起動 / 土日停止
 => 20日 × 15時間 = 300時間

t2.smallの場合

料金表
https://aws.amazon.com/jp/ec2/pricing/on-demand/
2017/12/07現在
 * $0.0304 /1 時間
 * $1 = \112.73
一ヶ月間無停止
 => 720時間 × $0.0304
    = $21.888
    = \2467.43424
平日:07:30-22:30起動 / 土日停止
 => 300時間 × $0.0304
    = $9.12
    = \1028.0976\2467.43424 - \1028.0976 = \1439.33664 (58.33%) お得

■ 注意事項

 * 本番環境に影響しないようにする

■ 実行方法

[1] CloudWatch Events / Lambda による実行
[2] AWS CLI / シェル / クローンによる実行
[3] AWS OpsWorks(Time-Based) を使った方法

[1] CloudWatch Events / Lambda による実行

大きく分けて以下の3ステップを行う。

Step1: Lambda関数の作成
Step2: IAM Roleの作成
Step3: CloudWatch Eventsの設定
補足: Lambda の料金について
https://blogs.yahoo.co.jp/dk521123/36899082.html
でも記載したが、
1 か月に 1,000,000 件の無料リクエストおよび
400,000 GB-秒のコンピューティング時間が無料利用枠なるのでほぼ考えなくていい

[2] AWS CLI / シェル / クローンによる実行

 * 個人的に比較的シンプルでいいなっと思った方法。
欠点
 * 必ずシェルを実行するEC2が必要で、そのEC2は24時間起動させておく必要がある

[3] AWS OpsWorks(Time-Based) を使った方法

欠点 (というか制限)
 * インターネットとの接続が必要


関連記事

AWS のコスト節約を考える ~ リザーブドインスタンスとか ~

https://blogs.yahoo.co.jp/dk521123/37021455.html

【AWS】AWS CLI [1] ~ AWS CLIでEC2を操作する ~

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37269971.html
で、「[2] AWS CLI / シェル / クローンによる実行」というものを扱ったが
その前段階で、AWS CLIでEC2を開始・停止できるように設定する

■ 環境構築

【1】 IAM ユーザ作成
【2】 AWS CLI のインストール

【1】 IAM ユーザ作成

[1-1] AWSログイン後に [IAM]-[ユーザー]-[ユーザーを追加]を選択
[1-2] 「ユーザーを追加」で以下を入力すると、「次のステップ:アクセス権限」ボタン押下
 + ユーザー名:任意のユーザー名
 + アクセス種類:「プログラムによるアクセス」にチェック入れる
[1-3] IAMユーザー名のアクセス権限において、
      「AmazonEC2FullAccess」にチェックを入れ、「次のステップ:確認」ボタン押下
[1-4] 「ユーザーの作成」ボタン押下
[1-5] 「表示」リンク押下で「アクセスキーID」「シークレットアクセスキー」を
       コピーしたりして取っておき、「閉じる」ボタン押下(後で使う)

【2】 AWS CLI のインストール

http://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cli-installation.html
[2-0] AWS CLI がインストールされているか確認(コマンドが受け付けなかったら未インストール)
~~~~~
aws --version
~~~~~

[2-1] pip のインストール
~~~~~
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python get-pip.py
~~~~~

[2-2] pip を使用して AWS CLI をインストール
~~~~~
sudo pip install awscli
~~~~~

[2-3] AWS CLI設定
~~~~~
aws configure

AWS Access Key ID [None]: 【AWS アクセスキー ID】
AWS Secret Access Key [None]: 【AWS シークレットアクセスキー】
Default region name [None]: ap-northeast-1
Default output format [None]: json
~~~~~

■ AWS CLIでEC2を操作

EC2インスタンス情報取得

# 全情報
aws ec2 describe-instances

# 固有のEC2インスタンスID
aws ec2 describe-instances --instance-ids 【EC2インスタンスID】

EC2開始

aws ec2 start-instances --instance-ids 【EC2インスタンスID】

EC2停止

aws ec2 stop-instances --instance-ids 【EC2インスタンスID】

■ その他 / 基本的なコマンド

AWS CLIのバージョン確認

aws --version

関連記事

AWS CLI

AWS CLI [2] ~ AWS CLIでEC2を操作する ~
https://blogs.yahoo.co.jp/dk521123/36799017.html
AWS CLI [3] ~ AWS CLIでログ転送するシェル・スクリプトを作成する ~
https://blogs.yahoo.co.jp/dk521123/37102180.html

その他

AWS のコスト節約を考える ~ 業務外でのEC2停止 / 入門編 ~
https://blogs.yahoo.co.jp/dk521123/37269971.html

【AWS】Lambda ~ Java / EC2 を操作する ~

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37269971.html
で、「[1] CloudWatch Events / Lambda による実行」というものを扱ったが
その前段階で、Lambda でEC2を開始・停止できるように設定する

■ 手順

https://blogs.yahoo.co.jp/dk521123/36899082.html
では、Mavenだったが、今回は、Gradleを使う

[1] Eclipse / Gradle を使用したパッケージの作成

[1-1] Eclipseを起動して、[File]-[New]-[Other]-[Gradle]-[Gradle Project]を選択し、「Next」ボタン押下。
[1-2] 以下を入力し、「Finish」ボタン押下
 + Project Name   : 任意(今回は「LambdaDemo」)

[2] ビルドスクリプト「build.gradle」の修正

[2-1] プロジェクト「LambdaDemo」配下にある「build.gradle」をエディタで開き
    以下の「サンプル」の「build.gradle」を参考に記入し、保存する
[2-2] Eclipseの対象プロジェクトを右クリックし、[Gradle]-[Refresh Gradle Project]を選択

[2-3] Eclipseの対象プロジェクト内の「src/main/java」「src/test/java」配下にある
    「Library.java」「LibraryTest.java」を削除する

コードを作成する

[3-1] Eclipseの対象プロジェクト内の「src/main/java」を右クリックし、
     [New]-[Other]-[Class]を選択し、Javaソースを作成する(今回は「LambdaDemo.java」)

[3-2] 以下の「サンプル」の「LambdaDemo.java」を参考に記入し、保存する

■ サンプル

build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
    }
}
apply plugin: "io.spring.dependency-management"
dependencyManagement {
    imports {
        mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.246'
    }
}

apply plugin: 'java'

sourceCompatibility = 1.8
targetCompatibility = 1.8
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

repositories {
    jcenter()
}

dependencies {
    compile 'com.amazonaws:aws-lambda-java-core:1.2.0'
    compile 'com.amazonaws:aws-lambda-java-events:2.0.2'
    compile 'com.amazonaws:aws-java-sdk:1.11.246'
    compile 'org.slf4j:slf4j-simple:1.7.25'
    testCompile 'junit:junit:4.12'
}

LambdaDemo.java

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import com.amazonaws.services.ec2.AmazonEC2;
import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
import com.amazonaws.services.ec2.model.StartInstancesRequest;
import com.amazonaws.services.ec2.model.StopInstancesRequest;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class LambdaDemo implements RequestHandler<Object, Object> {

  @Override
  public Object handleRequest(Object input, Context context) {
    String[] ec2InstanceIds = { "[インスタンスID1]", "[インスタンスID2]" };

    final AmazonEC2 amazonEc2 = AmazonEC2ClientBuilder.defaultClient();
    if (this.canStopEc2()) {
      StopInstancesRequest request = new StopInstancesRequest();
      request.withInstanceIds(ec2InstanceIds);
      amazonEc2.stopInstances(request);
    } else {
      StartInstancesRequest request = new StartInstancesRequest();
      request.withInstanceIds(ec2InstanceIds);
      amazonEc2.startInstances(request);
    }

    return null;
  }

  private boolean canStopEc2() {
    Calendar currentDate = Calendar.getInstance();
    currentDate.setTimeZone(TimeZone.getTimeZone("JST"));
    currentDate.setTime(new Date());
    switch (currentDate.get(Calendar.DAY_OF_WEEK)) {
    case Calendar.SATURDAY:
    case Calendar.SUNDAY:
      // 休日は
      return true;
    case Calendar.MONDAY:
    case Calendar.TUESDAY:
    case Calendar.WEDNESDAY:
    case Calendar.THURSDAY:
    case Calendar.FRIDAY:
      // 平日
      break;
    }

    // 休日処理(省略)

    int hour = currentDate.get(Calendar.HOUR_OF_DAY);
    if (hour> 22) {
      // 午後10時以降ならストップ
      return true;
    } else {
      // それ以外はスタート
      return false;
    }
  }
}

参考文献

https://qiita.com/toshihirock/items/80d61813dbf4a8efbd4d
https://dev.classmethod.jp/cloud/aws/ec2-lambda-auto-startstop-java/

公式サイト

http://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/examples-ec2-instances.html

関連記事

AWS のコスト節約を考える ~ 業務外でのEC2停止 / 入門編 ~

https://blogs.yahoo.co.jp/dk521123/37269971.html

Lambda ~ 知識編 ~

https://blogs.yahoo.co.jp/dk521123/36806782.html

Lambda ~ Java / サーバサイド編 ~

https://blogs.yahoo.co.jp/dk521123/36899082.html

【トラブル】Maven の トラブルシューティング

$
0
0

■ 「mvn package」を入力すると、以下のようなエラーが表示される場合がある

 * コマンドプロンプトで、「mvn package」を入力すると、以下のようなエラーが表示される場合がある

エラー内容

Cannot execute mojo: resources. It requires a project with an existing pom.xml, but the build is not using one.

原因

 * 有効な pom.xml があるフォルダで、ビルドする必要がある

解決策

 * おかしいなっと思ったら...

 - プロジェクトを右クリックし、[Maven]-[Update Dependency]をして、アップデータを掛ける
 - 一旦、Eclipseを再起動


■ 「Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin」が表示される

エラー内容

その1
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
その2
Failure to find org.apache.maven.plugins:maven-shade-plugin:jar:3.2
 in https://repo.maven.apache.org/maven2 was cached in the local repository,
 resolution will not be reattempted until the update interval of central has elapsed or updates are forced

解決策

 * Windowsの場合、C:\Users\YourUserName\.m2 配下の「repository」を削除

参考文献

https://qiita.com/gishi_yama/items/67e4c12ae90ad34e652b


関連記事

Maven ~ 入門編 ~

http://blogs.yahoo.co.jp/dk521123/19372494.html

Maven ~ あれこれ編 ~

https://blogs.yahoo.co.jp/dk521123/9082090.html

負荷テスト・パフォーマンス計測 / JMeter ~ 環境構築編 ~

$
0
0

■ JMeter

 * Java製のオープンソース

用途

 * 負荷テスト
 * パフォーマンス計測

■ 設定 / 起動

ダウンロード

 * 以下のURLから、JMeter をダウンロード(今回は、「apache-jmeter-3.3.zip」)して、
   ZIPを解凍する
http://jmeter.apache.org/download_jmeter.cgi

起動

 * 解凍したファイルの「apache-jmeter-3.3/bin/jmeter.bat」をダブルクリックする
  => JMeter がGUIで起動する

■ 動作確認

テスト計画構成イメージ

[テスト計画]
  + [スレッドグループ]
      + [HTTPリクエスト]
      + [結果をツリーで表示] (View Results Tree)

手順

事前に対象サーバをあげておくこと(今回の場合、 / )
[1] JMeter を GUIで起動するために「【JMeter】/bin/jmeter.bat」をダブルクリックする
[2] 「テスト計画」を右クリックし、[追加]-[Threads(User)]-[スレッドグループ]を選択し
     お好みで設定値を入力する

【設定例】
 + スレッド数:5(同時接続数と思っていい)
 + ループ回数:50(どの位繰り返すか)

[3] [2]で作成した「スレッドグループ」を右クリックし、[追加]-[サンプラー]-[HTTPリクエスト]を選択し
    お好みで設定値を入力する

【設定例】
 + サーバ名またはIP:localhost
 + ポート番号:8080

[4] [2]で作成した「スレッドグループ」を右クリックし、[追加]-[リスナー]-[結果をツリーで表示]を選択
[5] 緑色の実行ボタン(又は[実行]-[開始])を押下
 => [結果をツリーで表示] を選択すると実行結果やレスポンスなどが確認できる


関連記事

負荷テスト・パフォーマンス計測 / JMeter ~ Webサービス / SOAP 編 ~

https://blogs.yahoo.co.jp/dk521123/36908158.html

負荷テスト・パフォーマンス計測 / JMeter ~ あれこれ 編 ~

https://blogs.yahoo.co.jp/dk521123/36910281.html

負荷テスト・パフォーマンス計測 / JMeter ~ CSV読み込み編 ~

https://blogs.yahoo.co.jp/dk521123/36912021.html

【Linux】【コマンド】curl コマンド

$
0
0

■ はじめに

 * よく使う curlコマンド (カール) について、メモ。

■ HTTPアクセスしコンテンツ取得

コンテンツが取得できるか確認

curl http://www.yahoo.co.jp/

curl http://www.yahoo.co.jp/ > result.txt
参考文献
https://hydrocul.github.io/wiki/commands/curl.html

SSLサイトの場合

curl --insecure https://www.yahoo.co.jp/

curl -k https://www.yahoo.co.jp/
参考文献
http://www.turbolinux.com/support/document/knowledge/866.html

■ HTTP ヘッダーを確認

curl -I http://www.yahoo.co.jp/

使いどころ

 * 例えば、リダイレクトの設定を行った際のチェック
参考文献
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f


関連記事

【Linux】【コマンド】 ネットワーク系のコマンド

https://blogs.yahoo.co.jp/dk521123/36257284.html

【AWS】Amazon S3 ~ リダイレクト機能 ~

https://blogs.yahoo.co.jp/dk521123/37283027.html

【AWS】Amazon S3 ~ リダイレクト機能 ~

$
0
0

■ はじめに

 * Webサイト移転してリダイレクトするだけEC2があるのだが、
   セキュリティ/OS・サーバの更新など、管理を減らすために、別の方法を考えていたら、
   S3でもできるらしいのでメモ。
http://aws.typepad.com/aws_japan/2012/10/amazon-s3-support-for-website-redirects.html

補足

 * アクセスログも出力可能
 * リダイレクションだけでなく、
   静的ファイルならサーバ(静的なウェブサイトのホスティング機能)としても使用可能

■ リダイレクト機能

方法は以下の2通り
[1] リダイレクションルールを利用する
[2] ウェブページリダイレクトを利用する

[1] リダイレクションルールを利用する

[1] AWSマネジメントコンソールにログインし、S3 の画面を表示する
[2] S3のバケットを作成する
[3] [プロパティ]-[Static Website Hosting]で、
    「このバケットを使用してウェブサイトをホストする」を選択し
    「リダイレクトルール」欄に以下の「サンプル」を参考に追記し、
    「保存」ボタン押下
[4] 「curl -I http://【対象URL】」で動作確認

サンプル

リダイレクトルール
<RoutingRules><RoutingRule><Redirect><HostName>blogs.yahoo.co.jp</HostName><ReplaceKeyWith>xxxx/index.html</ReplaceKeyWith></Redirect></RoutingRule></RoutingRules>
構文は以下を参考にする
http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects



関連記事

【AWS】Amazon S3 ~ 入門編 ~

https://blogs.yahoo.co.jp/dk521123/36747691.html

【AWS】Amazon S3 ~ バージョニング編 ~

https://blogs.yahoo.co.jp/dk521123/36803257.html

curl コマンド

https://blogs.yahoo.co.jp/dk521123/37283055.html

【Linux】【コマンド】 nc コマンド

$
0
0

■ nc コマンド

NetCat の略
 * TCP/UDP接続を利用して、データを送受信するためのツール

■ 使用目的

[1] ポート番号を考慮した通信の疎通確認
[2] ポートスキャン
[3] 簡易的なデーモン機能

[1] ポート番号を考慮した通信の疎通確認

構文

nc 【ホスト名】 【ポート番号】

サンプル

nc localhost 8080

[2] ポートスキャン

構文

nc -l 【ポート番号】

サンプル

nc -l 8080


関連記事

ネットワーク系のコマンド

http://blogs.yahoo.co.jp/dk521123/36257284.html

ポートに関するコマンド

https://blogs.yahoo.co.jp/dk521123/36964337.html

【トラブル】【AWS】 Lambda でハマったこと

$
0
0

■ ソースコードをアップロードした際にエラーが表示される

原因

 * AWSマネジメントコンソールのAmazon Lambda上の画面で、
   直接ソースコードをアップロードできるのは、10MBまでで、
   その制限を超えていたため。
 => よく画面をみてみれば、
   「10MBより大きいファイルの場合は、S3からのアップロードを検討して下さい」と表示されている

対応策

 * S3にコードを上げて、そのURLを指定する

■ 例外「Out of memory」が発生する

原因

 * メモリ不足で例外が発生している
 * デフォルトのメモリは、128MB

対応策

 * AWSマネジメントコンソールでメモリサイズを変更する
  => ただし、メモリ増量すると、料金も変わるので

補足

 * メモリだけでなく、タイムアウトもある

教訓

テストをしてチューニングする必要がある

関連記事

Lambda ~ Java / EC2 を操作する ~

https://blogs.yahoo.co.jp/dk521123/37276995.html

【AWS】Amazon CloudFront

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37283027.html
で、 S3 でのリダイレクションを行った。
しかし、SSL(https)通信でのリダイレクションは、
CloudFrontを使わないとできないとのことなので、調べてみた

■ 用語整理

オリジンサーバ

Origin server
 * 配信するオリジナルのファイルを置いておいてあるサーバ

エッジサーバ

edge server
 * ユーザへの配信を行うサーバ


■ 注意すること

[1] 証明書作成する際は必ず「米国東部(バージニア北部)」リージョンで

 * AWS Certificate Manager で証明書作成する際は、
   必ず「米国東部(バージニア北部)」リージョンを指定してから作成すること
  =>


関連記事

Amazon S3 ~ リダイレクト機能 ~

https://blogs.yahoo.co.jp/dk521123/37283027.html

【Linux】【コマンド】 scp コマンド

$
0
0

scpコマンド

Secure CoPy
 * SSHによるリモート・マシン間のファイル送受信

構文

ローカルからリモートに転送
scp 【オプション】 【転送したいファイル】 【転送先のユーザID】@【転送先のホスト名/IPアドレス】: 【転送先】
リモートからローカルに転送
scp【オプション】 【転送したいパス】 【転送先のユーザ名】@【転送先のホスト名/IPアドレス】:【転送先パス】 【ローカルの転送先】

オプション

 -r : ディレクトリごとコピーしたい場合

scp sample.txt admin@192.168.30.111: ~/

【Linux】【セキュリティ】 SELinux (Security-Enhanced-Linux)

$
0
0

■ SELinux

SELinux = Security-Enhanced-Linux 【直訳】セキュリティ強化されたLinux
 * Linuxに強制アクセス制御機能を加えるモジュール

■ 利点

 * 細かなアクセス制御が可能になり、セキュリティ強化になる

補足事項

 * サーバ侵入されたとしても被害を最小限に食い止めるための仕組みで
   あくまで事後防衛手段である
  => 侵入自体を防衛するための仕組みではないことに注意

■ 機能

[1] TE(type enforcement)
[2] ドメイン遷移
[3] RBAC(Role Based Access Control:ロールベースアクセス制御)
[4] MAC(Mandatory Access Control:強制アクセス制御)

■ 動作モード

[1] Enforcing: SELinux 有効。ルール外の動作があれば止める。
[2] Permissive: SELinux 有効。ただしルール外の動作はログに記録するのみ。
[3] Disable: SELinux 無効。

【Linux】【セキュリティ】【コマンド】 Linux の ログ

$
0
0

■ ログ

 * root権限が閲覧できない
 * /var/log/ 配下に様々なログが格納されている
/var/log/ 配下のログ一覧
`ログ`備考
`#
`説明
1 secure 認証関連ログ。sshの認証成功・失敗などセキュリティ上大切な情報が格納されている 2 lastlog ユーザ最終ログイン情報 テキストじゃなくバイナリ(詳細は、以下「lastコマンド」参照) 3 messages システム・サーバ全般のログ

■ ログ関連のコマンド

lastコマンド

 * /var/log/lastlog は、テキストじゃなくバイナリ形式なので、それを閲覧するコマンド
 * root権限不要
OS再起動した履歴の閲覧
$ last reboot

reboot   system boot  (略) Thu Sep 15 23:53 - 00:56 (1+01:03)
reboot   system boot  (略) Thu Sep 15 23:31 - 23:53  (00:22)

wtmp begins Thu Sep 15 23:31:01 2016

【JMeter】 負荷テスト・パフォーマンス計測 ~ 環境構築 / Linux 編 ~

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37280266.html
で、Windows環境下において、JMeterを動かしたが
今度は、Linuxで動かしてみる。

■ 環境設定

[1] Java のインストール
[2] jmeter ダウンロードおよびインストール
[3] 【任意設定】パス設定

[0] 準備

sudo yum -y update

# 【任意】wget のインストール(jmeter ダウンロードのため)
sudo yum -y install wget

[1] Java のインストール

sudo yum -y install java

# 確認
java -version

[2] jmeter ダウンロードおよびインストール

http://jmeter.apache.org/download_jmeter.cgi
から最新jmeter のバージョンを調べる(今回は「jmeter-3.3」)
# ダウンロード
wget http://ftp.kddilabs.jp/infosystems/apache/jmeter/binaries/apache-jmeter-3.3.tgz

# インストール
tar zxvf apache-jmeter-3.3.tgz

mv apache-jmeter-3.3 /usr/local/jmeter

[3] 【任意設定】パス設定

vi ~/.bashrc

PATH=$PATH:$HOME/bin:/usr/local/jmeter/bin

source ~/.bashrc

which jmeter

jmeter --version


関連記事

【JMeter】 負荷テスト・パフォーマンス計測 ~ 環境構築編 / Windows 編 ~

https://blogs.yahoo.co.jp/dk521123/37280266.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ メモリ不足時の対処 ~

https://blogs.yahoo.co.jp/dk521123/36937382.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ Webサービス / SOAP 編 ~

https://blogs.yahoo.co.jp/dk521123/36908158.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ あれこれ 編 ~

https://blogs.yahoo.co.jp/dk521123/36910281.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ CSV読み込み編 ~

https://blogs.yahoo.co.jp/dk521123/36912021.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ 環境構築 / プラグイン 編 ~

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37280266.html
で、 JMeter の設定を行ったが、
プラグインもあるようなので、設定してみる

環境設定

前提条件:JMeterのインストール
 * JMeterのインストールを行っていない場合、
   以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37280266.html
設定手順・概要
[1] JMeterプラグインマネージャーのインストール
[2] JMeterプラグインのインストール

[1] JMeterプラグインマネージャーのインストール

[1-1] JMeterプラグインマネージャーを以下のサイトからダウンロードする
  => 今回は「jmeter-plugins-manager-0.18.jar」
https://jmeter-plugins.org/
[1-2] ダウンロードしたJARファイルを「【JMeter】/lib/ext」配下に格納する
■ フォルダ構成
【JMeter】
   + bin
     + jmeter.bat
   + lib
     + ext
       + jmeter-plugins-manager-0.18.jar << ここに置いた

[2] JMeterプラグインのインストール

今回は「jpgc - Standard Set」プラグインをインストールする
[2-1] JMeter を起動する
[2-2] [オプション]-[Plugins Manager] を選択する << JMeterプラグインマネージャーが正常に設定できた
[2-3] [Available Plugins] を選択する
[2-4] 「jpgc - Standard Set」 にチェックを入れ、「Apply Changes and Restart JMeter」ボタン押下し
      プラグインをインストールする

 => インストール後、右クリックし、
    [追加]-[リスナー]-[jp@gc - Response Times Over Time]
    を選択すると、時間経過によるレスポンス時間をグラフ化してくれる


関連記事

【JMeter】 負荷テスト・パフォーマンス計測 ~ 環境構築編 / Windows 編 ~

https://blogs.yahoo.co.jp/dk521123/37280266.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ 環境構築 / Linux 編 ~

https://blogs.yahoo.co.jp/dk521123/37294248.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ メモリ不足時の対処 ~

https://blogs.yahoo.co.jp/dk521123/36937382.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ Webサービス / SOAP 編 ~

https://blogs.yahoo.co.jp/dk521123/36908158.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ あれこれ 編 ~

https://blogs.yahoo.co.jp/dk521123/36910281.html

【JMeter】 負荷テスト・パフォーマンス計測 ~ CSV読み込み編 ~

https://blogs.yahoo.co.jp/dk521123/36912021.html
Viewing all 860 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>