茶の間で読めるITチップス

情報セキュリティ、ITの便利用途など直ぐに役立つ知見を発信してきます!

Perlワンライナーでシングルクォートをエスケープ

Perlワンライナーでのシングルクォートの扱い

perlワンライナーでシングルクォートを使おうとしたのだが、だいぶハマったので、メモ。

perlワンライナーで置換するときは以下の書き方になる。

perl -pi -e 's/置換対象文字列/置換後文字列/g' ファイル名

その時、文字列にシングルクォートを使いたい時に以下のようにエスケープすると上手くいかない。

誤 perl -pi -e 's/\'aaa\'/aaa/g' ファイル名

シングルクォートは'¥’’でエスケープする。

正 perl -pi -e 's/'\''aaa' \''/aaa/g' ファイル名

Ruby on Rails をPaizaCloudでやってみた

PaizaCloudでRuby on Rails

Ruby on Railsをやってみたいと思って、PaizaCloudを使った。なぜなら環境構築が面倒だから^0^

PaizaCloudのサイト(https://paiza.cloud/ja/)に行き、無料プランで新規サーバーを作成。

 

ターミナルを開いてプロジェクトを作成。

f:id:RSman:20190616173655p:plain

プロジェクトの作成

作成したプロジェクトのフォルダ内に移動して、サーバーを起動。

f:id:RSman:20190616174326p:plain

サーバー起動

上記の画像の一番下に書いてありますが、Ctrl + cで停止できます。

f:id:RSman:20190616175031p:plain

ブラウザボタン

成功すると上記のボタンができる。

f:id:RSman:20190616175240p:plain

3000のブラウザ画面

こんな感じで無料で簡単に環境が作れてしまいます^^

プライベートで勉強・開発するのには十分ですね!

次回はRuby on railsで軽くアプリを作ってみます

ffmpegで動画に文字入れ

動画に文字を入れる

シェルで文字入れ処理を作ったので、使い方を紹介!

ソースはコードは以下

github.com

使い方

1,time.lstを作成(文字入れ開始時間[秒],文字入れ終了時間[秒],挿入文字列)

 例)25,30,こんにちは

    90,100,HelloWorld

みたいな形式でファイル作成

2,編集後のファイルの生成場所にtime.lstを配置

3,ターミナルで以下を実行

 sh text_Insertion.sh 編集対象のファイル time.lstを配置した場所

 

こんな感じです^0^

GitとGitHubでよく使うコマンドメモ

Gitでよく使うコマンド

家でGitを使う際に、忘れて何度もコマンドを調べ直す羽目になるのでメモ。

1,GitHubからクローンを作るとき

 git clone https://github.com/Name/example.git

2,ステータスをみる

 git status

3,全てのファイル・ディレクトリをGit管理下に追加

 git add .

4,変更を全てコミットする

 git commit -m "コメント"

5,GitHubのmasterブランチにコミットの内容を反映する

 git push origin master

C#でクッキーを設定してIEを起動するサンプル

C#cookie設定してIE起動

仕事でハマったのでメモ。

[STAThread]
public void Main()
{
     SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
     string URL = "http://www.google.com/";
     IE.Navigate(URL);
     IE.Document.Cookie = "クッキーデータ"
     IE.Visible = true;
}

IE起動・自動操作にはCOMオブジェクトのSHDocVwを使う。

COMオブジェクトを使うときは、必ず[STAThread]を付ける。

これを付けないとCOMExeptionが出る。

findコマンドでNo matchと出る

nameに何を指定してもNo match

今日久々に会社でfindコマンドでファイル検索をしたのですが、nameオプションで何を指定しても、No matchと出力されてしまう・・・なぜ??

ぐぐっても特に見つからず、しばらくして上手く行きました!

   誤  find フォルダ名 -type f -name *.txt

   正  find フォルダ名 -type f -name '*.txt'

シングルクォートが無かったからっぽい^^;

そんな馬鹿なと思い、家で実行してみたところ、上記のどちらとも動きました!

 

ちなみに、

※仕事場の環境はRedHatで、バージョンは不明

※家の環境はUbuntu16.04

ffmpegで動画を切り貼りする

動画を切り貼りするスクリプト

ffmpegbashを使って、動画を切り貼りするスクリプトを作成しました^^

以下がソースです。(環境はUbuntu16.04)

ファイル名:cut_and_paste.sh

#!/bin/bash

# ファイル存在チェック関数
file_exist_check(){
file=${1}
messege=${2}
# 引数のファイルが存在しなければ終了
if [ ! -e ${file} ]; then
echo "${messege}"
exit 1
fi
}

# 編集対象ファイル
target_file=${1}
# 編集後ファイル名
output_file=${2}
# 切り出し開始時間[秒],切り出し終了時間[秒]の形式のファイル
time_lst="time.lst"
# カウント
count=0
# 結合するファイルのリストを記述した一時ファイル
tmp_file_lst="tmp_file"
# 変数work_folderに作業フォルダを設定する
sh env_set.sh

for line in `cat ${time_lst} | grep -v ^#`
do

count=$(( count + 1 ))

# 開始時間と終了時間を取得
start_time=`echo ${line} | cut -d , -f 1`
end_time=`echo ${line} | cut -d , -f 2`
# 切り出し処理
ffmpeg -ss ${start_time} -i ${work_folder}${target_file} -t ${end_time} -c copy ${work_folder}${count}_output_${target_file}
file_exist_check ${work_folder}${count}_output_${target_file} "切り出し処理に失敗しました"
# ファイルのパスを追記
echo "file '${work_folder}${count}_output_${target_file}'" >> ${tmp_file_lst}
done
# 切り出したものを結合する
ffmpeg -f concat -safe 0 -i ${tmp_file_lst} -c copy ${output_file}
file_exist_check ${output_file} "結合に失敗しました"
# 一時作業ファイルを削除
\rm ${tmp_file_lst}
\rm *_output_proccesing*

使い方

1,編集対象の動画を見ながら、必要な部分を「time.lst」を作成して記述

    time.lstはbashと同じフォルダ内に配置

 例) 動画20分で、0分〜5分、10分〜12分、15分〜19分を切り取って結合したい時

  ファイル名:time.lst

         0,300
         600,120
         900,240

開始時間(秒),切り取りたい時間(秒)

2,「cut_and_paste.sh {編集対象ファイル名} {編集後ファイル名}」の形式で実行

 

編集後のファイルが作成されていれば成功です(^O^)

コマンドを何度も打つのが面倒なので、時間だけメモして、自動でやってくれるといいな〜と思い、作りました^^

count=$(( count + 1 ))のカッコが全角になっているので、使うときは半角にしてくださいね^^