Visual Studio CodeでPlane Text(.txt)で自分独自記法のハイライト表示

Sublime Text - Plain Text(.txt)で自分独自記法のハイライト表示 - Qiita

と同じく、僕もメモ帳ベースで自分独自記法のTodoリストを使ってます。

サクラエディタだとこんな感じ。

f:id:teraco:20161015121318p:plain

VSCodeでの独自シンタックスハイライト方法を調べてみました。

マニュアルなど

Visual Studio Code Colorizers

に載っています。簡単にまとめると

  1. tmLanguageファイルの用意
  2. VSCode用にコンバート
  3. VSCodeにインポート

となります。では1.から行きます。

1. tmLanguageファイルの用意

多分これが一番めんどくさいのですが、自分独自記法のtmLanguageファイルを用意します。サクラエディタだと簡単に書けるのに…。

syntax highlighting - How to create a simple custom language colorization to VS Code - Stack Overflow

tmLanguageの作り方の詳細は別でまとめるとして、今回は

Revision - Stack Overflow

に投稿されているソースを元にコンバートします。

※ メモ:tmLanguageファイルの書式

TextMate Manual » Language Grammars

2. VSCode用にコンバート

用意したtmLanguageファイルを使用してコンバートをします。手法は最初のVisual Studio Code Colorizersに載っています。作業の前に"Yeoman and the VS Code Extension generator"というものをインストールしなければいけないです。

The Yo Code Visual Studio Code Extension Generator

さらに、"Yeoman and the VS Code Extension generator"をインストールするために、npmというNode.jsのパッケージ管理システムをインストールしなければいけないようです。

How to Install Node.js® and NPM on Windows - Treehouse Blog

これらの準備が整った後、

yo code

でコンバートを開始します。参考までに画面ショットを載せておきます。

f:id:teraco:20161015121326p:plain

ここでの設定なのですが、tmLanguageファイル中のfileTypesに準拠しないと、コンバートは成功するもののVSCode起動時に正常にパッケージを読み込んでくれずシンタックスハイライトが効かない状態となります。

        <key>fileTypes</key>
        <array>
            <string>log</string>
        </array>

おそらく、生成されるpackage.jsonとsyntaxes配下のファイル紐づけの問題かと思いますが、詳しいことは分かりませんでした。

3. VSCodeにインポート

実行したフォルダ直下に以下のような言語パッケージが生成されるので、

f:id:teraco:20161015121328p:plain

それを

%USERPROFILE%\.vscode\extensions

に配置してVSCodeを再起動します。

結果

f:id:teraco:20161015121539p:plain

ひとまず、シンタックスハイライトが効いていることを確認できました。この状態になれば

%USERPROFILE%\.vscode\extensions

配下のtmLanguageファイルを直接いじって色を変える・ワードを追加するのもOKかと思います。おかしくなったら言語パックをアンインストールして本手順を1から実施します。

サクラエディタ使いがVisual Studio Codeを使い始めた

理由はいろいろありますが使い始めました。

ダンなエディタを触りたい

2000年代前半のテキストエディア全盛時代よりサクラエディタでメモ書き~スクリプト開発してきました。2000年代後半にIDEが流行り始めた時も、開発者ではない・インストールに手間がかかる・重いなどの理由でテキストエディタを使い続けてきました。

そして2016年。Windowsに標準でIDE(Powershell ISE)が装備され、次世代テキストエディタ(sublime text,Atom)が登場し、軽くて無料のIDEが流行り始めた今、さすがにテキストエディタ一択ではいかんでしょということで時代についていく道を選択しました。

選んだもの

Visual Studioが無料ではありましたが、そこまでがっつり開発しない & 全機能を使い倒せる自信がなかったため、テキストエディタベースのものを選択。MSに親和性のある仕事をしているってことで、Visual Studio Codeを使うことにしました。

VSCodeのいい所

軽い

文字を打つのにストレスではない。これが一番大きい。少なくとも触った感触はサクラエディタと同等以上ではないといけなかったので、これは必須条件でした。

マルチプラットフォーム

Windows,Linux,MacOSで同じ操作性。サクラエディタを使ってて一番困ったのは、他のOSで全然動作しない、ということでした。MacOSを使っている時期に、Windowsエミュレーター上でがんばって動かしてたことはあったけど…。無理やり。

ダン

インテリセンス対応、シンタックスハイライト対応、gitへのアップロード対応など。つまりVisual Studio Codeについていけば、自然と最新を追っていける…?

将来性

MSが見てるので、いきなりぽしゃったり明後日の方向に行くことはないかな、と。dropboxEvernoteなどの事例もあり、当初良くても数年後に斜陽になっている製品に乗るのが怖い今日この頃です。

今のところ実施した設定など

公式の方は基本的な文字列操作から書いてあるので覚えるまではここを参照。

powerpointのテンプレート名称が削除できない

マジどうでもいいバグなのですが。

powerpointファイルのプロパティに"テンプレート"という属性があります。ここにお客様名などを使用している資料を別のお客様に展開する場合、情報漏えい防止の観点でお客様名を消したいです。しかし結論としては消すことが出来ません。

削除方法

エクスプローラーからファイルを右クリックしてプロパティの削除から削除できるはずなのですが。

ファイルのプロパティ情報を削除する | 初心者のためのOffice講座

Windows10ではバグで削除できないそうです。

detail.chiebukuro.yahoo.co.jp www.makotoiwasaki.com

※ COM Surrogateの実体はdllhost.exeのようですが、殺してもすぐ復活します。

なお、mp3や動画ファイルなど非MS製のフリーソフトが存在するファイルは、そいつを使って無理やり属性を削除できるみたいです。ただpowerpointフリーソフトなんて聞いたこと無い(LiberOfficeならいけるのか?)

悔しいので

Windows7(PowerPointインストール済み)でやったら削除できました。しかしながら、スライドマスター名だけは残ってしまいました。

結論

powerpointファイルを新規作成し、そこに内容を貼り付けたほうが早い気がしました。

MCP70-533を取得したのでメモ

こちらです。

Exam 70-533: Implementing Microsoft Azure Infrastructure Solutions

受かりましたので合格方法をメモします。

公式の動画とテキスト、問題を解く。

(MCP 70-533 対応) Microsoft Azure インフラストラクチャ ソリューションの実装 http://www.microsoftvirtualacademy.com/training-courses/mcp-70-533-microsoft-azure

(MCP 70-533 対応) Microsoft Azure インフラの実装 ~ Part 1 仮想マシンhttp://www.microsoftvirtualacademy.com/training-courses/mcp-70-533-microsoft-azure01

(MCP 70-533 対応) Microsoft Azure インフラの実装 ~ Part 2 Azure Active Directory の実装編 http://www.microsoftvirtualacademy.com/training-courses/mcp-70-533-microsoft-azure-part-2-azure-active-directory

上記動画の理解と、NextStepと称されるpdfの問題集に取り組みました。まーこれだけでいいんじゃないかな?

ぁゃιぃ問題集をやる

某所で入手した、問題の日本語訳と回答が怪しい問題集もやりました。

結論

結果的にはぁゃιぃ問題集あって楽できました。公式の動画と問題集で内容は網羅されているのでこれらを勉強し尽くせばよいのですが、問題集で4択の問題が本番では1つずつ順番を指定する方式に変わっていたりして、問題集の4択を覚えてしまっていると迷ってしまったりしたので。

公式動画は今から1年以上前のものであり、アフィニティグループやWebApp、ストレージのプランなど、今となっては古い内容も含まれた内容ですが、本番の試験ではそういった内容は出なかったように思えます。

僕は教科書読むより問題集で間違いだったものの理解を深めるやり方のほうが好きなので、動画を1回見た後は問題集を繰り返しやりました。正解を覚えるんじゃなく、なぜ正解の選択肢になるのか、なぜ間違いの選択肢は選べないのか、を1問ずつ自分の言葉で説明できるように取り組みました。結果、ぁゃιぃ問題集は「これ間違いやろ~」というのがいくつもあって、それは参考までに答えを覚えて本番で出たらその時考えよう作戦。

勉強時間は15時間ほどですが、仕事である程度下地があってのものなので、人によってはもうちょいかかるかも。ストレージからネットワーク、IaaS、SaaSまで幅広い知識が求めらたので、専門外の分野を全然知らない、だと辛そうです。個人的にはオンプレで一通りやった上に自分でWeb系の勉強していたので、問題集の内容に腹落ちする事が多く面白かったです。

Microsoftアカウントと組織アカウントの違いについて

MSのアカウント管理はややこしいなーと思うのでメモです。

AzureやらOffice365やらを使う時に「あなたのアカウントはMicrosoftアカウントですか?それとも組織アカウントですか?」と聞かれる。

Microsoftアカウントとは?

一般市民がGmailYahoo!メールで登録できる、普通のアカウント。私的なアカウントというか。Googleで言うと、そのまんま"アカウント"となる。

組織アカウントとは?

Microsoftクラウドサービスを利用している会社が発行するメールアドレスで、登録したアカウント。

例えば、株式会社TESTがOffice365を使用するとして、xxx@test.comというドメインでOffice365を利用したとする。この時、当然Microsoftは@test.comのドメインで登録されたメールアドレスはMicrosoftのサービスを利用しているということを知っている。なので、@test.comを持つメールアドレスは、組織アカウントとして登録する権利を持つ。

一方、@gmail.comや@yahoo.comというドメインのメールアドレスは、Microsoftの辞書にない。あるいは、Unixベースのメールシステムを使用している@oracle.comというドメインも(有名ではあるが)Microsoftの辞書にないため、組織アカウントとして登録することが出来ない(※1)

Microsoftが"組織アカウント"と"Microsoftアカウント"に分けている理由、もうちょい言えば"組織アカウント"なる定義を作っている理由だが、例えばMicrosoftのゴールドバートナーの会社に特典を付与する場合、その会社の組織アカウントでMSのサイトにアクセスする必要がある、などMicrosoftの管理上の問題といえる。つまりMSの都合。

使う側にとっては、必ずしも組織アカウントで登録する方がいい、とはいえず、Microsoftアカウントでしか出来ないようなアクションもある。とはいえ、MSのゴールドパートナークラスの会社なら、同じAzureを使うにしても組織アカウントで使っといたほうが何かといい(この会社の従業員はMSにお布施してくれてるな、というのが分かる)ような気がする。

ちなみに

  1. とある会社はMicrosoftのサービスを使っていない
  2. 従業員がその会社のメールアドレスをMicrosoftアカウントとして使用
  3. とある会社がMicrosoftのサービスを使用開始し、メールアドレスが組織アカウントして登録可能になる

このケースの場合、2で会社のメールアドレスをMicrosoftアカウントとして登録してしまった人はどうなるかというと、そのアカウントは一生Microsoftアカウントとなり、組織アカウントには登録できなくなる。それが私なのだが、救済策として、表示上はMicrosoftアカウントだが、特典などは組織アカウントと同等に受けられるようになる。

ややこしいのは、ドメイン自体は組織アカウントなので、「あなたのアカウントはMicrosoftアカウントですか?それとも組織アカウントですか?」と聞かれて組織アカウントを選択した場合、そもそもアカウント自体が存在しない扱いのため一生ログインできないというハメに合う。そのハメに合ったため、この記事を書いている。

自分用メモ

  1. イニシャル@xxx.com 組織アカウント。O365にログインして各種サービスを使えるのはこれ。
  2. イニシャル@xxx.co.jp Microsoftアカウントだが実質組織アカウントでいろんな権限が付与されている。パスワードは大文字7桁+1(どうやら同盟の組織アカウントも存在していることになるらしい?)
  3. 名.姓@xxx.com 1のエイリアスであるが、Azure利用上は1と違うアカウントになるぽくてよく分からない。Microsoftアカウントぽい。
  4. xxx@gmail.com クリーンなMicrosoftアカウント

※1 正確に言うと、AzureADにドメインを登録していれば、Microsoftに課金していなくても組織アカウントとして認められそうだが、ここらへんは試していないのでよくわかりません。

Office365のIMAP移行を試す話

Postfix + Devecot環境のメールシステムからOffice365への移行をすることになった。Office365のIMAP移行というのはよー分からん、ということで、試しにGmailのテストアカウントからOffice365への移行を行うことにした。

prius.hateblo.jp

環境

Office365の新規テナント契約

  • exoadmin@tokyoppp01.onmicrosoft.com
  • よく使われる8文字

テスト用Gmailアカウントの取得

  • tokyoppp01@gmail.com
  • よく使われる8文字 + 自分用7文字の5~大文字

IMAP移行バッチの作成

以下のマニュアルを参考に、移行バッチの作成を行う。

注意点は以下。

  • 2016/7/19時点では、新管理ポータルはプレビュー版なので、GUIからやる時は旧ポータルを使用する
  • おそらく、一度移行エンドポイントを作成後(今回の場合、GmailへのIMAP接続)は、2回目移行の利用でそれを利用できるので手順が異なる
  • 移行バッチには最大同期数の制限(100?)があるらしいので、抵触しないようにする
  • とはいえ、100以上のユーザーを同時に同期状態にするとネットワーク負荷が高くなりそうなので、順次移行を検討するのがよい。
  • 例:ユーザー数1,000人の場合、50人単位で移行バッチを実行し、同期が終了したら元メールシステムに転送設定を入れ、IMAP移行バッチ自体は解除する、など。
  • その他、移行できるアイテム数と1アイテムあたりの容量に制限があるので注意

結果

ほとんど空っぽなテストユーザーのデータが3分ほどで同期状態となった。この後は、24時間に1回くらいの頻度で差分同期が走るらしい。 つまり、これは大事なことなのだが常に元のメールシステムのデータが正であるということ。

実際の現場では

  1. 同期バッチ完了
  2. 元メールシステム→新メールシステムへの転送開始
  3. 24時間後の同期完了
  4. 同期状態解除

の順番でないとと、漏れるメールが発生する。3が終わってから4するのが大事。

こう考えると、移行バッチはユーザー1名1名単位で実装るのがよいか。1バッチ中の人数が多ければ細かい転送設定制御ができず、ネットワークトラフィックに無理が出てしまう…。

コマンドライン

以下の様なものが用意されているらしい。

  • Complete-MigrationBatch
  • Get-MigrationBatch
  • Get-MigrationConfig
  • Get-MigrationEndpoint
  • Get-MigrationStatistics
  • Get-MigrationUser
  • Get-MigrationUserStatistics
  • New-MigrationBatch
  • New-MigrationEndpoint
  • Remove-MigrationBatch
  • Remove-MigrationEndpoint
  • Remove-MigrationUser
  • Set-MigrationBatch
  • Set-MigrationEndpoint
  • Start-MigrationBatch
  • Stop-MigrationBatch
  • Test-MigrationServerAvailability

New,Remove,Set,Start,Stopは手動でやるとして、Get系はエビデンスを取得するために使えそう。あとはTestか。

追加検証

GB単位のGmailアカウントはどれくらいで移行できるんだろう?と興味があったので今やってます。

適当にAzureサービス使ったら4万円課金された話。

この前の記事には背景がありまして。

prius.hateblo.jp

背景

半年前くらい、少し時間が出来たのでAzureサービスをいろいろ触ってみてました。その中の一つの「メディアサービス」というのがあり、何やら自分が作った動画をUPしてAzureCDN経由でインターネットユーザーに提供できるとのこと。こいつぁ夢の技術だわ!ってことでメディア関係のアカウントを作成しキャストをONにし動画をUP。Internetに公開し「Azureってエンタメ関係も強いんだ!すげー!」となったのですが…。これやるならyoutubeでよくね?という事に気づき、動画の公開を停止したのでした。

その1か月後。ふとAzureの請求を見てみると4万円とのこと。どうも、メディア関係のアカウントをいろいろいじっていた時に「ストリーミング」をONにしたまた放置していた様子。ストリーミングという名前から想像できるよう、時間当たりの課金額はすさまじく、1か月たらずで4万円の課金になったのでした。1か月の間、真っ暗な画面をストリーミングしていただけで…。

ネット上ではアカウントハック起因の救済措置のレポートも上がっていましたが、僕はれっきと自分でAzureサービスを使っての課金なので、授業料として4万円払いましたとさ。

まとめ

結局悪いのは、当時のAzureで課金アラートが設定できなかったことでした。通常Azureの使用量が月に5000円程度なので、例えば1週間で5000円使っていれば明らかに怪しい。その後課金アラートが設定され、とりあえずの対応はできるようになったのですが。

クラウド運用で課金管理ってのは最も重要な運用要素の1つだと思います。 というのは、理論上、リソースが無限に作れちゃうので、課金管理が唯一無二のリソース管理ポイントなんですよね。 もちろん、何らかの仕組みで「各部署につき、A2クラスの仮想マシンを10個まで作ってよい!それ以上は制限する!」と入口で管理することもできますが(多分)、クラウド時代においてはナンセンスであり「各部署につき、1月10000円まで自由に使ってよい」と、スマートに出口=課金で管理したい。

そのためには、前述のbillingAPI使ったり、もうちょい便利なサードパーティ製品(CloudCruiserなど)を使ってもいいと思います。特に会社でやる時はね!