AB型技術系 主に備忘録

ほぼプログラム関連の備忘録

grepやめてawkにする

仕事でやることがなくなってきました。

その結果、本来はJavaJavaScript使ってWebアプリ作ってますが、それ以外の仕事もふられるようになりました。

今回ふられたのはLinux上で動いてるログ監視シェルの修正。

正直得意ではないけど出来ませんと言うと切られるので勿論引き受けました。

フリーランスは辛いです。

やることはログの出力フォーマットが変わったのでそれに合わせて解析方法を修正すること

現在のログのフォーマット
ERROR 2016-12-10 03:21:03,523 ERR001 エラー発生

現在のシェル

let ERROR_COUNT= `grep ^$ERROR /var/log/error.log | wc -l`
  • grepでログファイルの各行の先頭がERRORではじまる行を出力
  • wcで行数を出力
  • 結果をERROR_COUNTに設定

この後に前回解析時のエラー件数をファイルから読み込んでERROR_COUNTの件数と比較、
増えてればエラーが発生したことをメール送信します

変更後のログのフォーマット
2016-12-10 03:21:03,523 ERROR ERR001 エラー発生

エラーの発生日付が先頭に出力されるように変更されました

変更後のシェル

let ERROR_COUNT= `awk '{if($4=="ERROR") print $1}' /var/log/error.log | wc -l`
  • awkでログファイルの各行を区切り文字(デフォルトはスペース)で区切る
  • 区切った文字の4つ目がERRORであれば区切った文字の1つ目を出力
  • wcで行数を出力
  • 結果をERROR_COUNTに設定

ERROR_COUNTに設定するコマンドを変更しただけで後は変更なし

awkは複雑な文字列操作ができますね。

簡単な解析ならgrepでできますが、複雑になるならawkの出番が増えそうです


Excelのセルに取り消し線を挿入する簡単な方法を知った

今までExcelのセルに取り消し線を挿入する時は以下の手順でやってました。

  1. セルの書式設定を開く

  2. 取り消し線をチェック

先日会議中に他の会議参加者がキーボード操作だけで取り消し線を挿入していたので調べてみると、 Ctrl + 5で簡単に取り消し線を挿入することができました。

Excelでの作業の効率が少しは良くなりそうです。

サイトマップを自動生成するには

勉強もかねてブログ風のサイトを構築中

サイトマップを自動生成できるようにしたいと思いつつ他にやることが多くて手付かず

そんな時ははサイトマップを自動生成してくれる下記のようなサービスを利用するのがよいです

www.xml-sitemaps.com

  1. サイトマップを作成したいサイトのURLを入力
  2. Startボタンクリック

f:id:freelancer13:20170226184739p:plain

ページを読み込んでアンカーを再帰的に解析してリンクを辿っているのでしょう
しばらくするとサイトマップが作成されてダウンロードできるようになります
f:id:freelancer13:20170226184740p:plain

こちらが出力されたサイトマップ

f:id:freelancer13:20170226184741p:plain

あとはサーバーの所定の場所にアップロードして終了
URL解析くらいなら自作できそうなのでこのサイトを参考にゆくゆくはサイトマップを自動生成したいですね

今更ながらPHPで日付形式に変換

日付を日付形式(yyyy/mm/dd)で画面に表示する画面を作ることになりました。

よくある話なので何をいまさらですが・・・

20170226という文字列を取得してそれを2017/02/26という形式にして画面に表示することにします。

<?php

// 文字列を任意の日付形式に変換して出力
echo date('Y/m/d',  strtotime("20170226"));

?>
  1. strtitimeで文字列を日付型に変換する
  2. dateでフォーマット指定

これで2017/02/26と出力されます。

ブラウザに出力するならスラッシュが特殊文字なので下記の方がよいかもです。


|

AZ Screen Recorderで録画した動画から画像を抜き出す

現在プレイ中のスマホのゲームのプレイ動画を録画してみました。

録画した動画から画像を抜き出してブログにアップしようといろいろ調査してみました。

画像の抽出

画像を抜き出すためにAvidemuxというアプリを使いました。

AviUtil使おうかと思いましたが、デフォルトではmp4に対応していなかったのでAvidemuxを選択しました。

日本語化できるようですが、直感で使えそうだったので英語のまま使いました。

File → Openで動画を選択すると動画が読み込まれます。

f:id:freelancer13:20170213234119p:plain

後は抜き出したい箇所に移動して

File → Sava as Image→Save as BMP(JPEG)で画像が出力されます

f:id:freelancer13:20170213234120j:plain

上下がかなり空いているのはAZ Screen Recorderで録画中にスマホを傾けたから・・・

画像の切り出し

トリミングしたいのですが、アップしたい画像が20枚ほどあるので手動でトリミングするのは面倒

ということで複数画像を一括してトリミングできるIrfanViewを使用しました。

こちらも日本語化しなくても使えそうなので英語のままです

File → Openで画像を開いて切り取りたい部分を選択します

f:id:freelancer13:20170213234121p:plain

File → Batch Conversion/Rename

f:id:freelancer13:20170213234123p:plain

Use advanced optionsにチェックをいれてAdvancedボタンをクリック

CROPにチェックを入れてGet current selボタンをクリックすると選択したエリアの座標が設定されます

f:id:freelancer13:20170213234124p:plain

元の画面に戻って出力先と読み込む画像を選択

f:id:freelancer13:20170213234125p:plain

Start Batchボタンをクリック

f:id:freelancer13:20170213234126p:plain

指定した出力先に編集された画像が出力されました

f:id:freelancer13:20170213234418p:plain

そしてこちらが実際の画像

f:id:freelancer13:20170213234419j:plain

AZ Screen Recorderで録画する時に傾きに注意して録画しようと思いました。