身近であった怖い話(Linux環境)#4

2020 年 9 月 7 日 by hiro-k

お疲れ様です。
身近であった怖い話(Linux環境)の第四弾になります。

今回はLinux環境での作業手順書のコマンド部分の書き方です。

発生した問題ですが、
ある運用ツールが実行できなくなったと運用作業者からの連絡があり、
確認してみると運用ツールのサイズが0Byteとなっていました。

さて・・・なぜこのようなことが発生したのか?ですが、
手順書のコマンドのコピー&ペーストミスです。
(さらに…)

MATLABの紹介

2020 年 8 月 11 日 by takemotok

業務でMATLABを実装及び評価ツールとして使用していました。
「MATLABって何?」と聞かれることが多くあります。
そんなMATLABについて紹介いたします。

  • MATLABとは、
    MATLAB(開発元:MathWorks社)とは、80以上ものオプション製品を含むMATLABプロダクトファミリ全体のことでもあり、MATLABプロダクトファミリ内で使用できるプログラミング言語のことでもあります。統合開発環境とプログラミング言語の両方を指す言葉になります。
    以下MathWorks社及びMATLABのアイコンです。

    起動直後の画面が以下になります。

(さらに…)

Pythonの「f文字列」について

2020 年 7 月 13 日 by bb

こんにちは。

今回はPython3.6から新しく追加された「f文字列」の紹介です。

Python3には、format関数というものがあります。
文字列中に変数を挿入したり、値のフォーマットをしたりすることができる関数です。
例として、以下のような記述になります。

name = 'bb'
article = 'f文字列'
print('{0}です。{1}を紹介します。'.format(name, article))
# bbです。f文字列を紹介します。

Python3以降は可読性の観点から文字列の表現には
文字列結合や%コーディングではなく、
format関数を使用するよう推奨されてきました。

しかし、Python3.6からはformat関数に加えて新しい
文字列処理構文が追加されました。
それが「f文字列」です。以下が記載例になります。
(さらに…)

Pythonデバッガ「PuDB」の紹介

2020 年 7 月 13 日 by bb

こんにちは。

皆さん、Pythonのプログラムをデバッグする際には
どのような手順で行っていますか?
print文を挿入して変数の中身を確認したり、
統合開発環境のデバッグ機能を使うのが主流だと思います。

そこで、今回は別の手法としてCUIで動作する
Pythonデバッガ「PuDB」を紹介します。

まず、インストールですがとても簡単で、
Pythonプログラムを動作させる環境で
pipでインストールします。

pip install pudb

インストールはこれで完了です。
次に、起動方法です。起動方法は二通りあります。
(さらに…)

身近であった怖い話(Linux環境)#3

2020 年 6 月 11 日 by hiro-k

お疲れ様です。
身近であった怖い話(Linux環境)の第三弾になります。

今回はhostnameコマンドの利用ミスになります。

よく手順などでホスト名を確認するためにhostnameを利用しているのを見かけます。
単純にhostnameと実行するのであれば、
実行ホスト名を標準出力に出力するだけなのですが、
誤って使用するとホスト名を変更してしまうということが
発生してしまいます。
※この変更はリブートしたら元のマシン名に戻るのですが、
 それまでhostnameで変更したホスト名となります。
(さらに…)

Docker Tips(起動・ログ出力・デバッグ)

2020 年 6 月 8 日 by egamit

業務で使ったDockerのTipsを共有します。

表題の通り、Dockerの起動・ログ出力・デバッグについてのコマンドを記載します。

===Docker==

Docker起動
docker run –name ※1 -d \
–link=※2 \
–publish=※3  \
–env=※4  \
–volume=※5

※1: コンテナ名を設定

※2: 接続元のコンテナを設定

形式 / 接続先コンテナ名:エイリアス名

※3: ポートフォワーディングの設定

形式=ホストのポート:コンテナのポート

※4: 環境変数を設定

※5: マウントするボリュームのパスを設定
コンテナのログを出力
docker logs コンテナID

コンテナにログイン
docker exec -it コンテナ名 /bin/sh

起動に失敗したコンテナのデバック
①docker commit -m “メッセージ”  コンテナID
②docker exec -it ①の出力結果 /bin/sh

===Docker Compose==

Dockerfileに記載されたイメージを起動
docker-compose up

Dockerfileに記載されたイメージをビルドしてから起動
docker-compose up -build

リモートデスクトップ接続先へのファイルコピー禁止の設定方法

2020 年 5 月 12 日 by fuku

こんにちは。fukuです。

今回はリモートデスクトップ接続時にクライアント-ホスト間でのファイルコピーの禁止方法をご紹介します。
リモートデスクトップでは初期設定はクライアント – ホスト間でクリップボードを共有しているため、コピーが可能です。
便利な機能ではありますが、クライアント側にホスト側のデータを保存させたくないなど、セキュリティ面など問題になることもあります。
この様な場合に、リモートデスクトップのクリップボードを共有する機能を無効化する方法をご紹介したいと思います。

実際に検証した環境では簡単に設定できたのでぜひ参考にして頂ければ幸いです。

(さらに…)

テレワーク(新型コロナウイルス感染症対策 )について

2020 年 4 月 13 日 by yasukuni

新型コロナウイルス感染症の対策として、
テレワークがクローズアップされていますね。

まず、テレワークですが、総務省のHPには次のような記載があります。

テレワークとは、ICT(情報通信技術)を利用し、時間や場所を有効に活用できる柔軟な働き方です。
また、テレワークは、ワークライフバランスの実現 、人口減少時代における労働力人口の確保、地域の活性化などへも寄与する、働き方改革実現の切り札となる働き方でもあります。
総務省では、関係省庁とも連携し、テレワークの普及促進に資する様々な取組を進めています。

元々は「働き方改革」として推奨されていたようですが、今では感染症の対策としてその気運が高まっています。
こういう状況でもない限り、全国規模で導入を推進することが難しかったりする側面もあるため、今後無事「新型コロナウイルス感染症」が収束した後でも、
時間や場所を有効に活用できる柔軟な働き方というのが、徐々に根付いていくのかなと感じます。
(さらに…)

Pythonの便利な構文-内包表記の紹介

2020 年 3 月 16 日 by masy

今回はPythonの内包表記という構文を紹介します。

内包表記はリスト・辞書・集合等の生成を簡潔に記述するための構文で、
それぞれリスト内包表記・辞書内包表記・集合内包表記などと呼ばれます。
内包表記を上手に用いる事でコードの可読性を高める事ができます。

リスト内包表記

まずは内包表記を使用しない方法で、1~9の2乗の数値をリスト型で生成してみます。

data = []
for x in range(1, 10):
    data.append(x ** 2)

print(data)


>>>
[1, 4, 9, 16, 25, 36, 49, 64, 81]

これをリスト内包表記で書き直すと下記の通り簡潔に記述できます。

data = [x ** 2 for x in range(1, 10)]
print(data)

>>>
[1, 4, 9, 16, 25, 36, 49, 64, 81]

リスト内包表記にはif文を使う事もできます。
例えば、xが偶数の場合のみ取得対象とするには下記のように記述します。

data = [x ** 2 for x in range(1, 10) if x % 2 == 0]

その他の内包表記も使い方は同様なので、表記方法のみ紹介します。

辞書内包表記

{キー:値 for x in リスト等}

例)価格オブジェクトのリストから、価格IDと値の辞書を生成

{x.price_id: x.value for x in prices}

>>>
{'PRICE-0001': 100, 'PRICE-0002': 200, 'ITEM-0003': 300}

集合内包表記

{値 for x in リスト等}

例)契約オブジェクトのリストから、商品IDの集合を生成

{x.item_id for x in contracts}

>>>
{'ITEM-0001', 'ITEM-0002', 'ITEM-0004'}

ちなみに内包表記内のforやifは複数記述してネストさせる事も可能ですが、
可読性を損なうためそのような使い方はしないようにしましょう。
そのような場合は、内包表記を使わない方が可読性の高いコードになります。

これまで内包表記を知らなかったという方は、ぜひ上手に活用してみてください。

videoタグを利用したストリーミング配信について

2020 年 2 月 10 日 by egamit

■ストリーミング配信の特徴
PCやスマホなどの端末に動画ファイルを保存することなく、動画を見ることができる
⇒逆に動画ファイルを保存して動画を見るのがダウンロード方式

■Http Live Streaming(HLS)
HTTPプロトコルで動画のストリーミング配信ができる技術。Apple社が提唱
・Flashなどのプラグイン不要でHTML5 Videoタグで再生できる
・PC、スマホなど多くのデバイスで対応

■HLSの構成と仕組み
構成
・一定時間ごとに分割した動画ファイル(tsファイル (Appleは10秒ごとに分割することを推奨))
・上記tsファイルをリスト化したインデックスファイル(m3u8ファイル)

仕組み
(1)PCのブラウザ(HTML5 video)やスマホの動画プレーヤはm3u8ファイルをHTTP経由で取得する。
-> 例えば、HTML5 Videoタグのsrc属性にはm3u8ファイルのURLが設定されている
(2)m3u8ファイルの中身にはtsファイルが順番に記載されているため、HTTP経由で記載されている順番で取得する
(3)取得したtsファイルを動画として再生する
(4)次のtsファイルを取得する

■配信の様子を見てみよう

PCブラウザのGoogle Chromeを使うことを前提にして話を進めます。
まず、以下のURLにアクセスします。
https://flowplayer.com/developers/tools/stream-tester?stream=0

そして、キーボードのF12を押して開発ツールを開きます。
そこからNetworkタブをクリックし、XHRでフィルタをします。この時点でm3u8が取得されていると思います。

次に、ページ中ほどにある動画の再生ボタンをクリックします。すると、tsファイルがリストに表示されます。
このようにしてHLSの配信ではtsファイルを順次取得して映像を再生しています。

ここでお気づきの方もいるかと思いますが、開発ツールのリストにはm3u8が2つあります。これはいったいどういうことでしょうか?
まず、playlist.m3u8の中身を見てみましょう。リストをクリックします。

いろいろ書かれていると思いますが、m3u8ファイルが複数記載されていると思います。

 

これはHLSの特徴であるアダプティブビットレート配信という仕組みなのですが、
視聴する端末のネットワーク帯域に合わせて適切なビットレート(BANDWIDTH)と解像度(RESOLUTION)の動画を選択して再生します。
筆者の環境ではビットレート4Mbps,解像度1920×1080のplaylist_1080.m3u8を選択しました。
そして、playlist_1080.m3u8の中身を見てみると、tsファイルのリストが記載されています。このtsファイルは開発ツールのほうにも表示されています。

ということで、今回はストリーミング配信のHttp Live Streaming(HLS)について簡単ではありますが解説しました。
最後まで閲覧していただきありがとうございました。