読者です 読者をやめる 読者になる 読者になる

エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Pandocを使ったMarkdownからGithub風のHTML作成

HTML/CSS ドキュメント

環境準備

Pandoc のインストール

Releases · jgm/pandoc · GitHub

最新版の Pandoc-x.yy.z-windows.msi をダウンロード&インストール

使い方

基本

pandoc <元となるファイル> -o <出力ファイル>

「-o」は、出力ファイルの拡張子を見て、自動判断してくれるので、便利!
なるべく自動判断したほうが、ヒューマンエラーが少ないのでオススメ!

Markdown → HTML

基本で説明したやり方でもできるけど、タイトルにあることがしたいので、そのやり方を説明。

pandoc <変換元Markdownファイル> -s --self-contained -t html5 -c github.css -o <出力されるhtmlファイル>

--self-containedは、CSSスクリプト、画像ファイルを全て埋め込む方法。

github.css

下記で公開されているので、ダウンロードして使用する。

Github Markdown CSS - for Markdown Editor Preview · GitHub

画像参照している箇所があるので、用意するのが面倒な場合は、削除してもいい。

第98回 全国高校野球選手権 八戸学院光星 対 東邦 感想

エンターテイメント

きっかけ

午後から読書(リゼロを読んでた)が、即読破してしまい、アルスラーン戦記まで時間があったから、視聴。
どっちかと言うと、横浜vs履正社の豪腕対決を見たかったからテレビを点けた。

結果

東邦が八戸光星にサヨナラ勝ち

スコアボード

1 2 3 4 5 6 7 8 9
八戸学院光星 1 0 3 0 2 0 3 0 0 9
東邦 0 1 1 0 0 0 2 1 5X 10

感想

試合見終わった後に書いている!

一方的な状況

自分が見始めたのは8回から。
自分も東邦の価値はないな~と思いながら見ていたが、東邦のバッターの粘りのバッティングが嫌らしかった。
粘られるのは、ピッチャーとしては辛いものがある。
決めに行ってもカットされるのは、かなり辛い。
一時期ピッチャーやっていたことがあるが、カッティングしてくるバッターのウザさは知っているつもり。

1点上げたのは良かったけど、後続が続かなかったのと、流れはそれほどでもなかった。

きっちり抑えた9回表

ゲームが動いたあとの次の回をどう抑えるか。これはプロ・アマ問わない。
この回をしっかり抑えたことで流れが出来た気がする。
得点圏にランナーが居たけど、上手く抑えられたと思う。

点を入れた後に失点してたら、士気もさがるし、会場を味方に付けられないからな!

9回裏

すぐ2アウトになるだろうな~と思ったけど、そうならなかった。
そこから長短打の連打で徐々に得点差を失くしていき、会場を見方に付けての逆転勝ち。

粘りのバッティング

8回もそうだったが、粘られるのが辛い!
投げ急ぎが感じられたので、粘られて結構辛かったのではないかと感じた。

盗塁の重要性

まさかの盗塁を絡めてきた、積極的な攻撃をしてくるのが意外だった。
プロ野球なら慎重になるから、あまりこういう場面はないけど、この姿勢が流れを引き寄せた気がする。
失敗してたら、たぶんサヨナラはなかっただろうなと思う。
盗塁の成功が一番でかかったと思う。
会場の雰囲気、得点を許せない状況で、ランナーも気にしなければいけない状況になった。
バッター有利の状態にできたので、サヨナラ勝ちは必然だったのではなかろうかと、あとになって思いました!

会場の雰囲気

会場の雰囲気が逆転を願っている感じが、テレビから伝わってきて、八戸学院光星の投手はキツイだろうなって感じた。
会場を見方に付けるのは、難しいけど、付けてしまえば結構なんでも起きるのだなと思いました!
さらに、相手が粘ってくるから、精神擦りきれるで、あの状況は!
投手変えるべきだったかも知れんな。
結果論だけど。

短期決戦のやり方

この試合を見て、短期決戦のあるべき姿を学べた気がする。
やはり後半になると、足を絡めた攻撃は有効な気がする。
気を配る対象が増えるのは、やっぱり嫌だよね?
集中力を削ぐ意味でも、ランナーのウザさは目立つ。

あとは、粘りのバッティングだな。
狙い玉は積極的に打つべきだけど、追い込まれた状況では見逃すより当てに行くバッティングが大事ではないかと感じた。
特に、投げ急ぎの傾向があるピッチャーには有効な気がする。
決め球のカッティングは、精神的にも辛いから。

個人的な甲子園攻略チーム

甲子園を見て、適当に夢を語る。。。

俊足打者

俊足と粘りのバッティングができる奴を揃えることが重要な気がする。
あとは、どれだけ早く先取点取れるか。

守備力は絶対

守備力は絶対!
甲子園の試合を見てて、エラーが絡んでの失点が多いので、安定した守備力は必須だと感じる。

投手のリスク回避と分業

投手も大事だな~と見てて感じる。
大エースいるのは必須だが、2枚看板構成にしたいところ。
常に調子がいいわけではないし、相手との相性もあるので、1人に頼るのはリスクがデカイ。
あとは、リリーフエースが欲しいかな?
後半のシビアな状態でも投げ切れる精神力を持った奴が、絶対必要だと感じる。

水を指すが。。。

負けたチームが甲子園の砂をかき集める様を、近場で撮影するカメラマンに、嫌悪感が走るのだが。。。
甲子園ビジネスが垣間見えるのは、やめて欲しいところ。
できれば遠目で撮影して上げて欲しいなと感じる。 男の泣き様を取るのは、粋じゃないと思うんですよ。。。

Vagrant個人メモ・まとめ

開発環境 OS

Vagrantとは

仮想環境の構築を自動化するためのツール。

きっかけ

いろいろ混乱するので個人的まとめ

環境

Vagrant by HashiCorp

Oracle VM VirtualBox

各種コマンド

概要 コマンド 説明・詳細・ネタ
現状確認 vagrant status VMの状態を確認できる。
running:起動中
poweroff:停止中
一時停止 vagrant suspend 死に戻りするための死のコマンド!
一時停止からの復活 vagrant resume ドラクエで言うザオリクである
シャットダウン vagrant halt 完全に死ぬ。お前はもう死んでいる。。
覚え方は
Vagrantを止めるぞ、ハルトォォォォ!
起動 vagrant up コイツ、動くぞ!
起動する場合は、カレントディレクトリに
Vagrantfileが存在する必要がある。
今の状態をBOX化 vagrant package 今の仮想環境の状態を共有できるように出力する。
後述するBOXの追加したりできる。
環境をゴミクズのように切り捨てできるので、
インフラ周りを管理する人には必須コマンド
BOX出力前にvagrant haltvagrantを停止
ボックスの追加 vagrant box add <boxの名前> <boxのパス> パスにはURLも指定可能
ボックスの初期化 vagrant init Vagrantfileをカレントディレクトリに作る
消去 vagrant destroy
追加しているBOXの一覧出力 vagrant box list たまに何があるのか忘れるので必須

ホストとゲスト

  • ホスト
    お主が使っているOS。仮想環境ではないOSのこと。
  • ゲスト
    接続される側のOS。つまり、仮想環境のOSのこと。

SSH接続のユーザ

vagrantが自動で追加されている。
パスも同じ。
ちなみに、rootユーザも同じパスワード。

設定

GUI起動

以下の部分のコメントを外す

config.vm.provider :virtualbox do |vb|
・・・
vb.gui = true
・・・
end

endは、config.vm.provider :virtualbox do |vb|の直近のやつ。

ポートフォワーディング

下記の設定をすることで、ゲストOSとホストOSのポートを紐付ける。
迂闊にやると、たまにポート競合を起こして混乱することがあるので、ちゃんと管理すること!

config.vm.network :forwarded_port, guest: <ゲストOSのポート>, host: <ホストOSのポート>

上記の設定をしたら、Vagrantの再起動が必要。

ポート競合は、大抵ゲストOS側の問題であることが多い。
Windowsを使っている場合は、下記の過去記事を参照。

suzaku-tec.hatenadiary.jp

参考URL

知識系

vagrant コマンド(起動・再起動・シャットダウン等々)備忘録 - Qiita

VagrantコマンドとVagrantfileの設定メモ - Qiita

Vagrant入門 | WEB ARCH LABO

開発環境の構築・共有を簡単にするVagrant入門 | Think IT(シンクイット)

教育系

Vagrant入門 (全13回) - プログラミングならドットインストール

第98回 全国高校野球選手権 富山第一 VS 中越 感想

エンターテイメント

新潟出身なので。。。

新潟出身なので、新潟贔屓目で視聴

結果

富山第一1-0中越

感想

新潟目線の感想なので、ご了承ください!

終盤から嫌な感じが。。。

序盤・中盤は、失策や四球があっても後続をしっかり押さえていたからよかった。
しかし、終盤からは連続して四球があったり嫌な感じが。。。

やっぱり四球はあかん!

四球はやっぱり駄目だと感じた。
無料で相手にチャンスを与え、球数も多くなるからデメリットしかないなと感じた。
スタミナも減るしな。

無四球ピッチングの凄さを感じる。
特に、こういう短期決戦は四球・失策は最小限にするのが、大切だなと感じる。

松坂以来のノーノーが!

9回まで新潟の左腕・今村豪投手が、ノーヒットノーランピッチングだったのに!!!
松坂以来ということは、結構長い。
斎藤佑樹田中将大でもできなかったことと考えると、凄い事なのだと感じる。

変えるべきだった?

8回のピッチャーライナーを見たが、変えるべきではなかったのかと感じる。
まぁ、結果論だが。
捉えられている感じがして、変えるべきだったと思う。

貧打が仇に・・

9回まで援護できなかったのが痛い。。。
先取点を取れていれば、本当にノーヒットノーランできたかもしれん。
投打が噛み合わなかったのが悔やまれる。

あっぱれ?!

左腕・今村豪に「あっぱれ」か迷うところ。 9回までノーヒットノーランが、一転して敗戦投手になってしまったのは、見ている方も悔しい。。。

やっぱり甲子園は面白いな

短期決戦の試合は、見ていて楽しいな。
臨場感が違う。

ダイビングキャッチに疑問

ちょっと危ないなと思うのが、頻繁にやるダイビングキャッチ。
いや、派手だし、取れたらファインプレー扱いされるけど、あんまりやらないでほしいのが個人的な気持ち。
ケガしてしまうのは、一番ダメだと思うんですよ。
本当に取れると思った時だけ、やってもいいけど、なるべく避けてほしいところ。

個人的には、打った瞬間に「こりゃ抜けたな」と思ったあたりに難なく追いついて、余裕で補給するプレーが好き。
見た目の派手さがないけど、玄人みたいなプレーこそ褒め称えるべきだと感じる。

マツコ会議2016/08/06放送回 ドローンについてまとめ

エンターテイメント

公式サイト

www.ntv.co.jp

内容

ドローン特集
ドローンに結構興味があったので、真剣に見ていた。

ドローンの可能性

やっぱり、いけない場所へ言って映像取ることが目的の模様。
ドローン教習所?見たいなところで、操作を習っている様子が放送されていた。
受講している人は、建築会社だったり、日本の海外での事業展開を見越した外国の人が居た。

主な目的

  • 災害の時の家屋調査
  • 農場での肥料巻き、点検

ドローンレース

ドローンレースやっている操作のプロが紹介されていた。
そういえば、千葉でドローンレース大会あったなぁ~と思い返した。
娯楽としてもドローンは活用されそうな気がする。
そのうち、ミニ四駆みたいにカスタムキットが出そうな予感がするのは気のせいか?

操縦

ゲームに慣れている人が有利な模様。
そのため、若い世代に取って有利。
自分もミニドローン1台持っているが、コントローラーがPS系にクリソツ!
なるほど、これはジジイには無理だな。

これは、若い世代にワンチャンあるで!

実際に操作してみると分かるのだが、一定の場所で固定するのって結構面倒くさい。
あと、バク宙とか簡単にしてたけど、面倒くさいで、アレは。

掘り下げVTR

ドローンレースの日本チャンプの掘り下げ。
やはり、ドローンはカスタム機だった模様。
タミヤが参戦しそうな予感がした。
ドローンレースだけで食っていくには、現実的に無理な模様。

彼女が出ていたが、本編に出ていた慶応の黄色い女だった。。。
なんか新垣結衣を凄くダメにした感じの人だった。
操縦は全然ダメだったが、ドローンレース界では結構有名らしい。
性格的に、ちょっと俺が苦手なタイプだわ。。。
たぶん、あって話しかけられたら苦笑いして無難に会話を終わらせて逃げる。そんな感じの女だった。

過去の関連記事

suzaku-tec.hatenadiary.jp

suzaku-tec.hatenadiary.jp

Firefox48リリース機能まとめ

セキュリティ ブラウザ UI/UX

Firefox 48 for developers - Mozilla | MDN

注目機能

  • Electrolysis(e10s)
  • ロケーションバーのUI変更
  • アドオン入手画面のUI変更

Electrolysis(e10s)概要

Firefoxのプロセスを、UIとコンテンツで分離する。
タブがクラッシュしても他のタブへの影響を最小ができるのが特徴。
Firefoxの性能、安定性、セキュリティ強化が望める。

名称

水を水素と酸素に電気分解する様に例えて、プロジェクト名が「Electrolysis」になった。
略称のe10sは、冒頭のEと末尾のsの間に10文字が挟まっていることから付けられた。

注意事項

ユーザーの1%程度が対象になる。
48にアップデートしても、すぐに有効にはならない。
様子を見ながら順次有効化していくロールアウト方式が採用されている。
問題がなければ徐々に“e10s”の利用を拡大させていく予定。
Firefox 53で完全に有効化する見通し。

確認方法

URLバーに「about:support」と入力して「トラブルシューティング情報」を表示する。
「アプリケーション基本情報」の「マルチプロセスウィンドウ」が、"1/1"になっていたらElectrolysis(e10s)が有効になっている。

強制的に有効にする方法は?

about:configの画面で、下記を実施。

  • browser.tabs.remote.force-enableをtrueにする。
  • extensions.e10sBlocksEnablingをfalseにする。
  • extensions.e10sBlockedByAddonsをfalseにする。

確認は、上の方法でする。
アドオンをいっぱい入れている人は、動作不良の可能性が高いので、オススメしない。
自分は、上手く動かなかった。。。
向こうにしたい場合は、上記設定の逆をする。

ロケーションバーのUI変更

索キーワードを入力した際に表示されるプルダウンが2行から1行に変更になった。
プルダウンの表示幅が拡大され、一度に表示できる検索候補の件数も増加した。
ブックマークや開いているタブを検索結果に表示する際は、それを示すアイコンが表示されるようになった。

アドオン入手画面のUI変更

アドオン画面(about:addons)の「アドオン入手」画面のUIが変わった。
トグルボタンのON/OFFだけで、拡張機能・テーマのインストールができるようになった。

参考サイト

マルチプロセス技術“e10s”が導入された「Firefox 48」が正式版に - 窓の杜

「Firefox 48」、マルチプロセスウィンドウ機能がいよいよロールアウト (ITmedia ニュース) - Yahoo!ニュース

Firefox 48から一部環境でマルチプロセス機能(e10s)が有効化 Firefox 53で完全実施へ - Mozilla Flux

Firefox 48公開、ようやくタブ別のマルチプロセス化を実装。ただし最初はユーザー全体の1%から順次展開 - Engadget Japanese

「Firefox 48」、マルチプロセスウィンドウ機能がいよいよロールアウト - ITmedia ニュース

Javaエンジニア向けのPython簡易まとめ

プログラミング 勉強

Python

主にJavaとの違いについて個人的なまとめ。
Javaよりも5年位前に誕生。
興味を持っているが、業務で使えないので、忘れないようにメモ。

概要

インデント

同じインデントの深さ = 同じブロック
タブとスペース混在しても大丈夫だが、危険。
(混ぜるな、危険だ!!)
文の終わりは、改行。

インタプリタ

コンパイル不要で、即実行。

マルチプラットフォーム

複数環境で動作する。
動作するプラットフォームに特化したライブラリが存在するのが、Javaと違うところ。

実行速度

C言語Javaに劣る。コンパイラ使わないので、仕方ない。
速度が必要な箇所は、局所化して、多言語を利用することを考える。
今後、速度が伸びる可能性は、大!

メモリ管理

ガーベージコレクション。Javaと一緒。

仕様策定

PEPで行う。(Javaで言うところのJCP)
下記のルールに従って、仕様が策定される。

  1. アイディア提出
  2. 仕様のドキュメント化
  3. レビュー
  4. 採用

型とリテラル

  • オブジェクト
  • 論理型
  • 数値型
    • int
    • flot
    • complex

シーケンス

オブジェクトを順番に処理するデータ構造

文字列

内部ではUnicodeで保持する。
基本的にはJavaと同じ。

リスト

Javaのリストと同じ。
複数の方を一つにまとめて、順序を保持する。
宣言は、"[]"を使用する。 要素の取得方法には、いくつか種類がある。

  • インデックス指定
    インデックス指定で値を取得
  • スライス
    開始と終了のインデックスを指定して、リストからサブリストを取得する。
  • イテレーション
    全要素に順次アクセス
['遊戯', '十代', '遊星', '遊馬', '遊矢']

タプル

イミュータブルなリスト。
イミュータブルなので、リストより高速。
宣言は、"()"を使用する。

('遊戯', '十代', '遊星', '遊馬', '遊矢')

セット

値を保持するが、順序は保持しない。
値は一意で不変。

{'遊戯', '十代', '遊星', '遊馬', '遊矢'}

辞書

キーと値を対応させたデータ構造。(JavaのMapと同じ)
順序は保証されない。

{'name':'遊戯', 'name':'十代', 'name':'遊星', 'name':'遊馬', 'name':'遊矢'}

None型

値が存在しないことを表す。(Javaのnullと同じような位置づけ)

制御構文

条件文

ほぼJavaと同じ。
偽(false)として扱われる値があるので、Javaエンジニアは注意が必要。
下記が偽と扱われる。

  • None
  • False
  • ゼロと認識できる数値
  • 空のシーケンス
  • 空のマップ、セット

ループ

インデントで範囲が決まるのが、どうしてもキモい。。。
慣れかも知れない。

for文

for x in ['遊戯', '十代', '遊星', '遊馬', '遊矢'] :
     print(x)

while文

sum = 0
while sum < 2:
    print("sum:" + str(sum))
    num += 1

例外処理

tryで始まる。
exceptで例外補足(Javaのcatch句に相当)
複数の例外の補足も可能。

try:
    a = 10 / 0
except ZeroDivisionError:
    print("Error!!")

else/finally

else → try句内で例外が発生せずに最後まで処理が進んだ場合の処理 finally → 例外の発生に関係なく、最後に必ず処理

例外のスロー

raiseで例外スロー
※raiseと言われると小倉唯を思い出すのは、声豚だから?

try:
    raise NameError('stop!!')
except NameError:
    print('show must go on')

関数

Javaのメソッドに相当。
定義は、以下の通り。

def 関数名 ( 引数 ):
   処理
   return 戻り値

呼び出す際に全ての引数を指定しないと例外が発生する。
ただし、デフォルト引数が指定されている場合は、省略可能。
定義は以下の通り。

def 関数名 ( 引数=値 ):
   処理
   return 戻り値

可変長引数

可変長引数が定義できるのは、Javaと一緒。
引数の前に"*"を付ける。

def 関数名 ( *引数 ):
   処理
   return 戻り値

global宣言

var1 = 'グローバル'

def spam():
    global var1
    var1 = 'カオスエクシーズチェンジ!'

spam()
print(var1)

「カオスエクシーズチェンジ」と表示される。
なに当たり前なこと言ってんだと思う場合、下記の例を見てみる。

var1 = 'グローバル'

def spam():
    var1 = 'カオスエクシーズチェンジ!'

spam()
print(var1)

この場合は「グローバル」と表示される。
意図的にグローバルを参照させたい場合は、グローバル宣言が必要になる。

nonlocal宣言

globalの逆。ローカル変数が外部からでも参照できるようになる。
クロージャに対応するために導入された。

関数デコレータ

Javaアノテーションを使ったAOP的なことができる

ドキュメンテーション文字列

Javadocと同じ。
Pythonのヘルプ機能で参照できたりもする。

関数アノテーション

Javaの引数アノテーションとほぼ同義。

クラス

基本的にはJavaと同じ。

定義

class クラス名:

アクセス

属性へのアクセス

インスタンス.属性名 = 値

メソッドアクセス

インスタンス.メソッド名

コンストラクタ

__init__で記述する。
コンストラクタの定義でいろいろ論争がある模様。
自分は、コンストラクタ_init()はコンストラクタでいいのではなかろうか派。

デコンストラクタ

インスタンスの削除。Javaにはない(あるにはあるけど、使うべきではないので、ないということにする)。
__del__で記述。
循環参照している場合は、インスタンスが解放されないので注意。

インスタンスアロケータ

__new__で記述。
コンストラクタで初期化した不変な変数の変更をする。
不要なら極力書かないのが暗黙のルール?

継承

Pythonは多重継承。
そのため、複雑な問題があるように感じる。

やり方

class Base: #基底クラス

class Child(Base) : # 派生クラス

なお、基底クラスの呼出しは、super()で行う。(Javaと同じ)

多重継承

定義方法

class クラス名(基底クラス[, 基底クラス・・・]) :

多重継承で呼び出すクラスが解決できない場合は、エラーになる。

mro()で検索順序を取得することが可能。

感じていること

基本的にベースとなる知識との違いを覚えておけば、簡単に覚えられる。
ただ、使う機会が少ないとすぐ忘れる。
見返して思い出したのがいくつかある。
いろんな言語に触れる習慣を作る必要があると感じた。
文法は、Javaで煩わしさを感じるところが楽にかける印象がある。