エクセル

タグ: | 投稿日: 投稿者:
花粉なのか黄砂なのか。。。最近洗車がおっくうになっております、モリです。
今回は仕事でエクセルのドキュメントを作成する時に便利だったけど、頻繁には使わない関数について
IF関数やVLOOKUP関数等は結構頻繁に使用する関数ではないですが、作業が楽になった関数だなぁ~と思ったのを列挙します。

 

■時間の切り捨て
 勤怠計算に使用してお世話になっています。
 FLOOR([入力セル], [切り捨てする時間])

 
■時間の切り上げ
 勤怠計算に使用してお世話になっています。
 CEILING([入力セル], [切り上げする時間])
 
■ふり仮名
 基本的な読み方はこれでOK
 PHONETIC([文字列])
 
全角を半角
 地味に使えます。
 ASC([文字列])
 ちなみに英字のみはLOWER関数が使えます。
 
■セルの書式変更不要の年月日変換
 一々書式設定をする必要がない!
 DATESTRING([日時])
 
■ 全ての条件に一致
 IF文の嵐を回避出来ます。
 SUMPRODUCT((条件1)*(条件2))
 
■条件付き合計
 日付や種別などの個別計算に使用しています。
 SUMIF([範囲], [検索条件], [合計範囲])
 
■複数条件付き合計
 区分や種別等複数ある場合、ものすごく重宝します。
 DSUM([データベース], [フィールド], [検索条件])
 
でわでわ
Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

zabbixのトリガー条件式のメモ書き( timeとかdayofweekとか使ってみた)

タグ: | 投稿日: 投稿者:

初めまして、ゆうです。

季節は春、出会いと別れの時期ですね。(花粉症がつらい….)

 

さて今回は、zabbixのトリガー条件式でトリガーの発行時間帯を指定してみました。

一例として、下記の条件でトリガー発行時間を指定します。

  • 日中 (6:00〜19:00) である
  • 平日である (土、日は除く)

time、dayofweek関数を使って次のような条件式になります。

 

({<ホスト名>:<キー>.<関数>(<関数パラメータ>)}<演算子><閾値>) & ({<ホスト名>:<キー>.time(0)}>060000 & {<ホスト名>:<キー>.time(0)}<190000 & {<ホスト名>:<キー>.dayofweek(0)}<6)

  • timeで時間を指定 (6時より大きく、19時より小さい)
  • dayofweekで曜日を指定 (1=月曜日〜7=日曜日)

 

なお、真逆の条件にしたい場合 (19:00〜6:00であり、土日のみ) は、( )=0として時間指定を否定します。

※ ( )=1で肯定となりますが、こちらは省略が可能です。

 

({<ホスト名>:<キー>.<関数>(<関数パラメータ>)}<演算子><閾値>) & (({<ホスト名>:<キー>.time(0)}>060000 & {<ホスト名>:<キー>.time(0)}<190000 & {<ホスト名>:<キー>.dayofweek(0)}<6)=0)

 

以上のように条件式を書いてみましたが、メンテナンス期間に設定すればいいじゃないというツッコミはなしでお願いします。

メンテナンス期間中はデータ収集ができないんです。(データ収集ありにすると、イベントに残るのでコメントしなきゃならないし….)

 

というわけで、トリガーで使用できる条件式はかなり柔軟なので、組み合わせ次第でとても幸せになれそうですね。

次回もよろしくお願いします。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

Powershellにてパケットダンプを取得する方法

タグ: , | 投稿日: 投稿者:

お疲れ様です。 中村です。

Windowsにてパケットダンプを取得する方法を記載します。

・PowerShellを起動します。

・以下コマンドを実施します。
  netsh trace start capture=yes maxSize=10000MB traceFile=D:\dump_log.etl

 ※上記コマンドの内容は、ダンプファイルの上限を10GBに設定し、Dドライブ配下に、ファイル名dump_log.etlとして保存

netsh

 

・パケットダンプを停止する場合は、以下コマンドを実施します。
※パケット量が多いと停止完了までに時間を要します

  netsh trace stop

netsh-stop

 

・「Microsoft Message Analyzer」というツールをMicrosoft社よりダウンロード後、インストールし、起動します。

MMA

 

・File→Quick Openをクリックし、ダンプファイル(今回はdump_log.etl)を開きます。

quickopen

 

 

・取得したパケットダンプが表示されます。

 中村処理済み処理済~2

※補足として、Wiresharkでダンプファイルを閲覧したい場合、capファイルとして保存する事で、Wiresharkでの閲覧が可能になります。

   File→Save As→Export→保存先を指定(capファイルとして保存されます)

saveas

export

  dump_log.capファイルが作成され、Wiresharkにて閲覧が可能となります。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

とりあえず15分でAnsible体験してみる話

タグ: | 投稿日: 投稿者:

 

こんちにはベッチです

今回はAnsibleをとりあえず体験してみよう!というのがテーマです。

Ansibleとは

  1. Pythonで記述された構成管理ツール
  2. ここ数年で人気がでてきている
  3. サーバ側はsshができてpython2.6以上が入っているという条件だけで使える優れもの


デブサミ2015でもGMOインターネットさんがAnsible使って開発環境構築の効率化していますなんて話してました。

このままいくと「Andibleかー。なんか便利そうだなー」なんて話で終わってしまうのでとりあえず体験してみましょう。
15分あれば十分な内容です。

15分でAnsible体験する手順

Mac環境前提で進めます。

1.まずはAnsibleをインストールして下さい。

brew install ansible


※事前にHomebrewはインストールしておいて下さい。(詳細は省きます)


2.Ansibleのインベントリファイルに対象サーバを登録します


※インベントリファイルとはansible用のhostsファイルだと思って下さい

インベントリファイルパスは以下となっているはずです。
 

/usr/local/etc/ansible/hosts

内容は以下のように1行追加して下さい。(example.jpはホスト名、192.168.11.100は対象のサーバのIPですので便宜変更して下さい)

example.jp ansible_ssh_host=192.168.11.100


3.pingを送信したらpongが返ってくる確認をしましょう

ansible example.jp -u [SSHユーザ名] -k -c paramiko -m ping


※ここでは「-c paramiko」は深く考えずにおまじないだと思って下さい。

成功すればjson形式で以下の内容が出力されます。

192.168.11.100 | success >> {
    "changed": false, 
    "ping": "pong"
}

4.もういっちょサーバ情報も一気に取得してみましょう

ansible example.jp -u [SSHユーザ名] -k -c paramiko -m setup

成功すれば対象サーバの情報がjson形式でズラッと出力されます。


ここまでくるとちょっと面白くなってきませんか?
実際にはPlaybookというファイルを作成してサーバの定義をしていくかたちになります。

参考までに自分なりのAndsibleの勉強方法は以下の通りです。

1.Kindleのこの本をとりあえずサラッと読む(サラッとが大事です。まずは大枠をつかんでください)    

2.やりたい事を公式ドキュメントを確認しながら実際にやってみる

<公式ドキュメント>

http://docs.ansible.com


どうでしたか?
とりあえずAnsibleに限らず「なんかよさそうだなー」と思ったら実際にやってみて感覚をつかむ事が大事だと思います。

 

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

音声の倍速再生

タグ: , | 投稿日: 投稿者:

毎度、いかおです

前回の続きで倍速再生について、特に音声の切り詰めかたを考えてみた。

・音声をある一定の長さできる

・それをつなげる

・のりしろを作る

まずは、これを図にしてみました

baisoku

1番上が元の波形(だと思って!)で、矢印がついてる部分がサンプル対象です。

2番めはサンプル対象をくっつけた図。オレンジの線はその間のサンプル

3番めはのりしろをフェードアウト/フェードインしたところです。ここで赤い線の様になってショックノイズを低減させます

フェードイン/アウト コード例】

#define NORISHIRO 100 // 例えばのりしろは100個
.
.
.
// 音声デコードがされたら
avcodec_decode_audio4(audioCodecCtx, decodedAudio, &amp;amp;amp;decodedSize, &amp;amp;amp;packet);
if (decodedSize > 0){
    size_t packetSize;
    // flgならsample出す
    if(flg){
        // m_sampleCount のりしろ長さ
        packetSize = decodedAudio->nb_samples * sizeof(short) * CHANNEL;
        short *samp = (short *)decodedAudio->data[0];
        flg = false;
        // サンプルの中に左右交互にデータがある(プラナーでない)
        for(int i=0;i < m_sampleCount;i++){
            samp[(i * 2)] = (short)(((float)m_bef[(i * 2)] * (((float)m_sampleCount - (float)i - 1.0f) / (float)m_sampleCount)) +
            ((float)samp[(i * 2)] * (((float)i + 1 ) / (float)m_sampleCount)));
            samp[(i * 2) + 1] = (short)(((float)m_bef[(i * 2) + 1] * (((float)m_sampleCount - (float)i - 1.0f) / (float)m_sampleCount)) +
           ((float)samp[(i * 2) + 1] * (((float)i + 1 ) / (float)m_sampleCount)));
        }
        // ここが再生データ
        decodedAudio->data[0];
        // これが再生データの長さ
        packetSize;
    } else {
        // ! flgならsample保存(フェードアウトに利用)
        if(decodedAudio->nb_samples > NORISHIRO){
            m_sampleCount = NORISHIRO;
        } else {
            m_sampleCount = decodedAudio->nb_samples;
        }
        memcpy((char *)m_bef, (char *)decodedAudio-&gt;data[0], m_sampleCount * sizeof(short) * 2);
        flg = true;
    }
}
.
.
.

ひとまずはこれでさほどノイズが気にならなくなりました。

1度に採れるサンプル数にもよりますが、のりしろは長くとった方がキレイに再生できます

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

DELL製サーバのRaid設定手順

タグ: , | 投稿日: 投稿者:

こんにちわ、shiraneです。

DellのサーバーRaid設定手順を書いてみようと思います。 記憶力の無い自身の備忘録です。
一口にDellのサーバーと言っても、搭載しているRaidコントローラーにより設定手順が微妙に異なるので
今回はPERC5/PERC6/PERCH700/PERCH710系のRaidコントローラーでの手順を紹介します。

 ①:マシンの電源を入れ起動中の画面で「Press <Ctrl><R>…」のメッセージが表示されたら
   [Ctrl]+[R]を押してRaid設定の画面へ移動します。
IMG_2216 1

 

 

 

 

 ②:設定画面へ移動したら、現在の構成ツリーが表示されるので[Disk Group]を選択し[F2]を押して
   開いたメニューから[Delete Disk Group]を選んで[Enter]を押すと確認の警告が表示されるので
   問題無ければ[YES]を選んで[Enter]を押します。
   ※実行した時点でディスク内のデータが全て削除されるので、既に運用しているもので構成を
   変えたりしたい場合はあらかじめバックアップを取っておく必要があります。
2 3

 

 

 

 

 ③:削除が完了すると[No Configuration Present !]と表示されるので選択し[F2]を押してメニューから
   [Create New VD]を選択して[Enter]を押します。
4

 

 

 

 

 ④:新しいVirtual Diskの作成画面が開くので[RAID Level] [構成に使用するDisk] [サイズと名前]を
   設定します。
   ※[Advance Setting]は基本的に選択不要です。
5

 

 

 

 

 ⑤:設定が終わったら[OK]を押して、警告が表示されるのでもう1度[OK]を押します。

 ⑥:手順2の画面に戻ってきました。新しい[Virtual Disk]が作成されている事を確認して
   [Esc]を押して設定画面を終了します。
   「Ctrl]+[Alt]+[Delete]を押してマシンの再起動を求められるので再起動します。
   以上でRaid設定は完了となります。
7 8

 

 

 

 

今回は、Raid5で設定しているので他のRaid Levelの設定を行う場合は上記以外の設定が
必要な場合もあります。
さてさて長くなってしまいましたが以上となります!

 

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

gitの設定

タグ: | 投稿日: 投稿者:

こんにちは、kikuです。 gitを便利に使っていこうと思います。 まず今の環境を確認しましょう。

これで見れます。

$ git config --list

 
名前とメールアドレスを登録していない人はこれをしましょう。

$ git config --global user.name "kiku"
$ git config --global user.email "kiku@example.com"

 
色の設定はこれでまとめてできます。これで結構見やすくなります。

$ git config --global color.ui auto

 
diffとかstatus等、各コマンド単位で色をつけたいと思ったらこれで設定可能です。

$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto

 
他にもコミットメッセージ等を入力する際に使用するエディタの指定ができます。

$ git config --global core.editor vim

 
diffツールの指定もできます。。。が、複数の設定が必要です。
extMergeというツールを使おうとした場合の例です。

$ git config --global merge.tool extMerge
$ git config --global mergetool.extMerge.cmd 'extMerge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"'
$ git config --global mergetool.trustExitCode false
$ git config --global diff.external extDiff

上の4つのコマンドは、こういうことをしています。
1.merge.tool で どんなツールを使うのかを Git に伝え
2.mergetool.*.cmd で そのコマンドを実行する方法を指定し
3.mergetool.trustExitCode で「そのコマンドの終了コードでマージが成功したかどうかを判断できるのか」を指定し、
4.diff.external で diff の際に実行するコマンドを指定します。

今回は基本的な設定を紹介しました。
他にも色々な設定があるので、是非探してみて下さい。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

yumをおいしく その2

タグ: , | 投稿日: 投稿者:

さて、前回は「–enablerepo=」のオプションについて触れましたが、その続きからです。

ワイルドカードが使えることは書きましたが、「–enablerepo=」と「–disablerepo=」は同じコマンドラインで使用することができます。
先に記述された方から実行されていきますので、
一旦、「–disablerepo=*」で全てのレポジトリを無効にした上で「–eanablerepo=」をすれば、必要となるレポジトリのみを有効化することができます。
また、「–enablerepo=」を続けることで、複数のレポジトリを有効化することもできます。

新しいバージョンのyumでは下記で今までに実行したyumの履歴を確認することができます。

yum history

これには非常に便利なサブコマンドがあり、これを効果的に使えば作業が安全かつ効率的になります。

yum history undo [やり直したい作業のID]

undoと対になるredoもあるのでパッケージ導入前と後の動作確認や作業のやり直しに役立ちます。

yum history pkgs [パッケージの名前(例:phpやsambaなど)]

上記を使用すると記録されているパッケージのyumの履歴を確認できます。つまり、修正を加えたいパッケージのみをいじることが可能になるわけです。
尚、履歴に対象のパッケージが無い場合は、エラーになります。

そして最後に、

yum history new

これを実行すると履歴が全て廃棄されます。yumの履歴が多くなり過ぎて把握しづらくなったときなどに利用することになると思います。
yum history statsを使うと履歴の概要が確認できるので、履歴が信用できるものなのか、あてになるのかを確認することができます。

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

Freenasで簡単samba ホント詳しくない人向け

タグ: | 投稿日: 投稿者:

こんばんは。工藤です。

親不知が今さらヤル気を出してきて、とても迷惑です。アゴが痛い…

で、本日はfreenasで、PCとかあんま詳しくない人向けの共有サーバーを作成したいと思います。

目標
・極力GUIで実施する。
・ACLを実現する。
・JJ(注1)でも分かりやすい手段を取る。

考え方
・ユーザー権限の与え方はグループを使用する。
→freenasでは1ユーザーは複数のグループに所属できる。
これを踏まえ、ディレクトリのグループ権限でACLを実現する。

作成方法
まず、ディレクトリは「CIFSの追加」では作られない。そのため、必要となるディレクトリはユーザーを作成し、そのホームディレクトリの作成を実施する。ついでに、当ユーザーを作る際に、あらかじめACLをかけておきたいグループに所属させる。そうする事で後々グループの変更等を実施しなくてもよくなる。
「Windows share」から新規で共有ディレクトリを作成する。共有名などは日本語でもOKなので、適当に名前をつける。「パス」の指定の際、上記で作成したユーザーホームディレクトリを指定する。その後、「Inherit Owner」「パーミッションの継承」「ゴミ箱の有効化」にチェックを入れ「OK」を押下。

管理方法
共有ディレクトリを作成した際、指定したパスのディレクトリの所有者を確認し、制御したいユーザーの「補助グループ」に上記ユーザーが所属するグループを追加する。

で、面倒くさいけど、これらの作業を実施した最期は必ずサービスの再起動が必要。
「サービスの制御」→「CIFS」のoff/on実施。

上記で適用完了。
うわっめんどくさっ!が出来た!

注1:情弱(この場合の情弱は情報弱者というよりも、ITリテラシーの低い人を指します)

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

[Googleアナリティクス]イベントトラッキングで訪問者の詳細な行動を計測する

こんにちは、ニタです。
最近、Webサイトのアクセス解析などに携わるようになりました。
そこで今回は、アクセス解析ではもはや必須ツールとなっているGoogleアナリティクスの話です。
Googleアナリティクスは訪問者の訪問時間や閲覧したページや、どのようにサイト内を移動したかなどができるツールです。

しかし、標準の機能ではページ内のどのリンクが押されたか、ファイルダウンロードリンクで多くダウンロードされたファイルはどれかなどの、サイト独自の訪問者の行動の計測はできません。

そこで、アナリティクスのイベントトラッキング機能を使うことで、訪問者の詳細な行動を計測することができます。

例えば、以下の様なPDFファイルのダウンロードリンクがあるとします。

このリンクの中から、どのファイルがダウンロードされたのかを計測してみます。

<a href="pdf/my_company_info.pdf" class="dl-button" target="_blank">会社案内</a>
<a href="pdf/my_product_info.pdf" class="dl-button" target="_blank">製品紹介</a>
<a href="pdf/my_company_services.pdf" class="dl-button" target="_blank">サービス案内</a>
<a href="pdf/my_company_product_a.pdf" class="dl-button" target="_blank">製品A資料</a>
<a href="pdf/my_company_product_b.pdf" class="dl-button" target="_blank">製品B資料</a>

イベントトラッキング送信のコード

まず、Googleアナリティクスのトラッキングコードはheadタグ内に書いておきます。

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXXXX-NN', 'auto');
  ga('require', 'linkid', 'linkid.js');
  ga('send', 'pageview');
</script>
</head>

続いて、JavaScriptで以下のようなコードでリンクのクリック時のリンク名を計測します。

$(function(){
    $('.dl-button').on('click', function(){
      var file_name = jQuery(this).html();
      ga('send', 'event', 'File Download', 'ダウンロードファイル', file_name);
    });
});

このコードを記載したテストページで、実際にイベントトラッキングをアナリティクスへ送信し、計測結果を見てみます。


 

実際のレポート結果を確認

実際のアナリティクスのレポート画面を見てみると、計測結果が出ています。

今回は、リアルタイム計測のイベント画面で確認しましたが、左メニューの「行動」→「イベント」→「サマリー」、「上位のイベント」からでも確認できます。


 

イベントトラッキングコードについて

先ほどのコード内のga('send','event', ...というコードが、イベント送信のコードになります。
各引数は以下のようになります。

ga('send', 'event&', 'カテゴリ', 'アクション', 'ラベル', 値);

'カテゴリ'以下の引数に渡す内容は以下のとおりです。

send, eventは固定値です。

名前 内容
カテゴリ(必須) 発生するイベントを分類する名称
アクション(必須) カテゴリに対する訪問者の行動名称(例:スクロール、ダウンロード)
ラベル(任意) 細かく分類したい時に使用。
値(任意) イベントに数字を割り当てられる。(例:問い合わせやダウンロード1件あたりの売上額などの数値)

Googleのヘルプには詳細な説明があります。

イベントについて – アナリティクス ヘルプ

Webサイトの訪問者がどのページをどのように閲覧しているのか、サイト内で何をしているか(どういったコンテンツを探しに訪問したのか)が分かれば、今後のサイト更新の方向性に迷いはなくなるでしょう。

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook