月別アーカイブ: 2018年2月

【swift】ライブラリEZAudioを使って音声ファイルの波形を表示してみる

こんにちは。しばらくライブラリを勉強していたのですが、一番やりたかったのがこれです。音声ファイルの波形を表示してみるということ。早速やっていきます。

 

CocoaPodのバージョンを確認

$ pod --version
1.2.1

新規プロジェクト「DemoEZAudio」という名前で適当に作成したらターミナルから、

pod init

して、Podfileを以下のように編集します。

Podfileを編集します

# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'

target 'DemoEzAudio' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for DemoEzAudio
  pod 'EZAudio', '~> 1.0'

end

そしてターミナルから

pod install

します。

ブリッジングヘッダーを追加

ブリッジングヘッダーを追加します。

ブリッジングヘッダーは、SwiftからObjective-Cのライブラリを利用可能にする橋渡しをしてくれるヘッダーファイルです。
メニューバーから[File]→[New]→[File…]を選択して、「Objective-C File]を選択し、[Next]ボタンを押下します。

https://github.com/syedhali/EZAudio/issues/267

何度か試してみましたが、どうもPodfileに
pod ‘EZAudio’, ‘~> 1.0’
と書かないと駄目なようです。
pod ‘EZAudio’だけでは駄目です。

Podfileは以下のように修正します。

platform :ios, '8.0'

target 'DemoEZAudio' do
pod 'EZAudio', '~> 1.0'
end

ブリッジングヘッダーはこんな感じが正解のようです。

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#ifndef EZAudio_Swift_EZAudio_Swift_Bridging_Header_h
#define EZAudio_Swift_EZAudio_Swift_Bridging_Header_h

#import <EZAudio.h>

#endif
//
//  ViewController.swift
//  DemoEZAudio
//

// see:http://qiita.com/Ma-tsu-ne/items/ef5f5360c97219d99d6f
// see:http://cocoadocs.org/docsets/EZAudio/1.0.0/index.html

import UIKit

class ViewController: UIViewController ,EZAudioFileDelegate{

    var audioFile:EZAudioFile!
    var audioPlot:EZAudioPlot!
    var audioPlayer:EZAudioPlayer!
    var audioCoreGrph:EZAudioPlotGL!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //波形
        self.audioPlot = EZAudioPlot(frame: self.view.frame)
        self.audioPlot.backgroundColor = UIColor.cyan
        self.audioPlot.color = UIColor.purple
        self.audioPlot.plotType = EZPlotType.buffer
        self.audioPlot.shouldFill = true
        self.audioPlot.shouldMirror = true
        self.audioPlot.shouldOptimizeForRealtimePlot = true

        //ファイルのパスを指定して読み込み
        self.openFileWithFilePathURL(filePathURL: NSURL(fileURLWithPath: Bundle.main.path(forResource: "Jump", ofType: "mp3")!))
        self.view.addSubview(self.audioPlot)
        
        //再生
        self.audioPlayer.pan = 0
        self.audioPlayer.volume = 50.0
        self.audioPlayer.play()
        
    
    }
    
    //ファイルの読み込みと波形の読み込み
    func openFileWithFilePathURL(filePathURL:NSURL){
        self.audioFile = EZAudioFile(url: filePathURL as URL!)
        self.audioFile.delegate = self
        
        let buffer = self.audioFile.getWaveformData().buffer(forChannel: 0)
        let bufferSize = self.audioFile.getWaveformData().bufferSize
        self.audioPlot.updateBuffer(buffer, withBufferSize: bufferSize)

        //読み込んだオーディオファイルをプレイヤーに設定して初期化
        self.audioPlayer = EZAudioPlayer(audioFile: self.audioFile)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

今回はVan Halenの名曲『Jump』の波形を表示してみます。とりあえず、ファイルをドラッグ&ドロップでプロジェクトに突っ込みます。

できましたー!

【C#】Json.netを使う

前提

  • .net Framework 4.5.2
  • Json.netを使用
  • NuGet 2.12 以上
  • MITライセンスなので商用利用も可

NuGetからJson.netをダウンロード&インストール

[Nugetパッケージマネージャ]→[Nugetパッケージマネージャコンソール]を起動します。

プロントが返ってきたら以下のコマンドを入力します。バージョンは公式サイトを確認してお好みのバージョンを指定するとよろしいかと思います。

ちなみにNugetのバージョンが古いと実行ログに「NugetのバージョンはX.xx以上でやってね」とエラーが表示されますので、うまくいかない場合はログはよく確認してみましょう。

Install-Package Newtonsoft.Json -Version 10.0.3

実行ログ

各パッケージのライセンスは、パッケージの所有者によって提供されます。Microsoft は、サードパーティのパッケージに対して一切責任を負わず、いかなるライセンスも提供しません。パッケージには、追加のライセンスが適用される依存関係が含まれる場合があります。依存関係を確認するには、パッケージ ソース (フィード) URL を参照してください。

パッケージ マネージャー コンソール ホストのバージョン 3.0.0.0

利用可能なすべての NuGet コマンドを参照するには、'get-help NuGet' を入力します。

PM> Install-Package Newtonsoft.Json -Version 10.0.3  
'.NETFramework,Version=v4.5.2' を対象とするプロジェクト 'JsonReader' に関して、パッケージ 'Newtonsoft.Json.10.0.3' の依存関係情報の収集を試行しています
DependencyBehavior 'Lowest' でパッケージ 'Newtonsoft.Json.10.0.3' の依存関係の解決を試行しています
パッケージ 'Newtonsoft.Json.10.0.3' をインストールするアクションを解決しています
パッケージ 'Newtonsoft.Json.10.0.3' をインストールするアクションが解決されました
パッケージ 'Newtonsoft.Json.10.0.3' をフォルダー 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages' に追加しています
パッケージ 'Newtonsoft.Json.10.0.3' をフォルダー 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages' に追加しました
パッケージ 'Newtonsoft.Json.10.0.3' を 'packages.config' に追加しました
スクリプト ファイル 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages\Newtonsoft.Json.10.0.3\tools\install.ps1' を実行しています
'Newtonsoft.Json 10.0.3' が JsonReader に正常にインストールされました
PM>

実装

公式サイトにある実装を試してみます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace JsonReader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public class Movie
        {
            public string Name { get; set; }
            public string ReleaseDate { get; set; }
            public string[] Genres { get; set; }

        }

        /// <summary>
        /// 読み取りボタン押下時
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            string json = @"{
              'Name': 'Bad Boys',
              'ReleaseDate': '1995-4-7T00:00:00',
              'Genres': [
                'Action',
                'Comedy'
              ]
            }";

            // インスタンスにデシリアライズ
            Movie m = JsonConvert.DeserializeObject<Movie>(json);

            System.Console.WriteLine(m.Name);
            System.Console.WriteLine(m.ReleaseDate);
            System.Console.WriteLine(m.Genres.ToString());


            //Jsonにシリアライズ
            string jsonStr = JsonConvert.SerializeObject(m);
            System.Console.WriteLine(jsonStr);

            // Linqで操作
            JArray array = new JArray();
            array.Add("Manual text");
            array.Add(new DateTime(2000, 5, 23));

            JObject o = new JObject();
            o["MyArray"] = array;

            string jsonStr2 = o.ToString();
            System.Console.WriteLine(jsonStr2);

        }

    }
}

 

実行結果

jsonStrの結果

{"Name":"Bad Boys","ReleaseDate":"1995-4-7T00:00:00","Genres":["Action","Comedy"]}

jsonStr2の結果

{
 "MyArray": [
 "Manual text",
 "2000-05-23T00:00:00"
 ]
}

【資格】情報セキュリティマネジメント

覚え書き

暗号化方式

公開鍵
「n(n-1)/2」個数の鍵の数が必要

秘密鍵
「2n(ノード)」個数の鍵の数が必要

デジタルフォレンジック

デジタルフォレンジックとは、犯罪捜査や法的紛争などで、コンピュータなどの電子機器に残る記録を収集・分析し、その法的な証拠性を明らかにする手段や技術の総称。“forensics”には「法医学」「科学捜査」「鑑識」といった意味があり、分かりやすく意訳すれば「デジタル鑑識」。

http://e-words.jp/w/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%95%E3%82%A9%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%83%E3%82%AF.html

SIEM(しーむ)

サーバーやネットワーク機器、セキュリティ関連機器、各種アプリケーションから集められたログ情報に基づいて、異常があった場合に管理者に通知する仕組み。

http://securityblog.jp/words/714.html

マネジメントしてると良い物

  • プロジェクト総合マネジメント
  • プロジェクトスコープマネジメント
  • プロジェクトコストマネジメント
  • プロジェクトタイムマネジメント
  • プロジェクト品質マネジメント
  • プロジェクトコミュニケーションマネジメント
  • プロジェクトリスクマネジメント
  • プロジェクト調マネジメント