身近であった怖い話(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)について簡単ではありますが解説しました。
最後まで閲覧していただきありがとうございました。

様々なデバイスに活躍するFlutterの紹介

2020 年 1 月 19 日 by mishi
「Flutter」をご存知でしょうか?
様々なデバイスに適用できるオープンソースフレームワークで、

「勉強したいんだけど何をやれば良いかわからない。」という方にオススメです。

これからの開発で聞く機会が増えてくると思いますので、参考になればと思います。

(さらに…)

【第2回】Spring Boot ApplicationをCentOS7にデプロイしてみた(準備編)

2020 年 1 月 19 日 by uma

どうも、umaです。

今回は、Apache + Tomcat連携をサンプルのwarファイルを使用して設定していき、理解を深めていきます。

【サンプルwarファイルはこちら】

(さらに…)

【第1回】Spring Boot ApplicationをCentOS7にデプロイしてみた

2020 年 1 月 19 日 by uma

お久しぶりです、umaです。

今回は、ローカルで作成していたアプリケーションをインターネットに公開しよう!ということで行った手順をまとめました。

第一回目は、CentOS上でSpring Boot Applicationを実行するところまでやってみました。

なお、ローカルでSpringBootApplicationを作成する手順はEclipse+SpringBoot+MavenでHelloWorld をご覧ください


(さらに…)

メモリーリーク解析

2019 年 12 月 13 日 by tom

業務で実施したメモリーリーク解析について紹介します。
メモリーリークはプログラムが確保したメモリを解放せず、確保したままになってしまうことで、プログラムが実行されるごとにメモリが確保されていきます。
パフォーマンスモニタなどで発生の現象は確認できますが、問題の個所を特定するには骨が折れます。

今回はリークを発生させるサンプルを作成し、実際に動作させ解析ツールを用いて発生個所を特定してみます。

(さらに…)