AtCoder ABCの179-170のA問題をやってみた

AtCoder ABC 179を思い出したようにやりました。実はAtCoderはほとんどやっておらず(大体時間を忘れていた・・・)、まともにやろうとしたのは今回が初めてです。。。
しかもコードなんて書いたのは本当に久しぶりなのでボロボロでしたが、この後見返して笑い話にできるように記録はつけたいとおもいます。
せっかくなので直近のA問題もやりました~業務中に~

179-Plural Form

S = input()  
print(S+'es' if S.endswith('s') else S+'s')

print(S+'es' if S[-1] == s else S +'s')でこれで良かったんですね・・・

178-Not

x = int(input())
print(0 if x == 1 else 1)

177-Don't be late

d, t, s = map(int, input().split())
print('Yes' if d / t <= s else 'No')

176-Takoyaki

n, x, t = map(int, input().split())
a = ( n + x - 1) // x
print(a * t)

何回焼くかはn/xを切り上げたもの ( n + x - 1) // x の形式はちょうど割り切れる以外は1増える式として暗記すると良い

175-Rainy Season

s = input()
ans = 0

for i in range(1, 4):
    p =  'R' * i
    if p in s:
        ans = i

print(ans)

RRR,RR,Rの出力が出るものをカウントして出力させればいい

174-Air Conditioner

x = int(input())
print('Yes' if 30 <= x else 'No')

173-Payment

n = int(input())
ans = (1000 - ( n % 1000)) % 1000
print(ans)

172-Calc

a = int(input())
print(a + a ** 2 + a ** 3)

最初 aa, aa*aと書いてました。。。

171-αlphabet

a = str(input())
print('a' if a.islower() == True else 'A')

入力したものと同じということで a == a.upper() でAを出すでも可能

170-Five Variables

x = list(map(int,input().split()))
print(x.index(0) + 1)

なんもんもやると慣れてきますね

AtCoderの最初の難関は標準入力かなって勝手に思っています。ここにさえ慣れてしまえばA問題は肩慣らしぐらいにできるかなって感じですよね。
(業務でコードを書くことは皆無の人並みの感想です)

JAWS SONICをほぼ参加してみた感想を

JAWS-UGのオンラインイベント「JAWS SONIC」があったので、頑張ってできるだけ参加してみました。技術的なことはあまり書いてないので感想という位置づけです。
楽しかったのですが、翌日は睡眠不足で常に眠いを連呼してました・・・。

JAWS SONIC 2020と意気込みと現実

24時間のオンラインイベントを全部レポートにしたら面白いんじゃないか、そう思っていた時間もありました。
気になったことはメモやスクショを撮りましたが、途中で「ああ、全部やるのは無理だなー」と諦めました。
QuickTimeの機能を使えば録画をできなくもないですが、 - 絶対にみかえさない長さ - オンタイムで見るからこその魅力 - 安心感からかつい寝てしまう、ということの逃げ道の封鎖

からやめることにしました。今思えばこれは正解でしたね。
その場で感想をTwitterに投げられるのは勉強会に参加しているからこそであって、アーカイブだと面白くないですし結構頭に入れられました。

さて、当日はどれぐらい起きれたのか、寝ていた時間を観てみましょう。
- 05:00-07:20 - 13:00-15:00
→合計:4:20

うーん、意外と寝ていましたね。前日も同じような睡眠時間でしたし、なんならOPは群馬から電車内で聞いてましたので、意外と持ったほうだと思います。
ちなみに時間は自分の聞いていないセッションの項目をタイムテーブルから洗い出しました。時間管理もできる優秀なプログラムですね(白目)

jawssonic2020

セッションの感想

全部書こうと思って意気込んだのはいいのですが、上記のとおり、無理だったので適当な感想でお茶を濁したいと思います。

支部の紹介

とりあえずダラダラと鹿児島支部とか関西女子会とかが当てはまりますね。タイトルで出ていなくてもそれぞれの支部の紹介があるので、
「あ、この支部ってこんなことしていたのか」みたいなのを聞くことができるのは最大のメリットだったと思います。
オンラインになってから物理的にいけなかった支部に参加できるようになったのはコロナ禍の数少ないメリットですね。

サービスの紹介

MediaServicesやKinesis Data Streamなど特定のサービスを使ったという内容です。普段自分ではいじらないようなサービスについての紹介もしれくれたので、
この後にドキュメントとかを読むとすっと頭にはいってきました。

AWSで構築した話

サービスを特定して紹介するのではなく、様々なサービスを組み合わせたという事例紹介です。
サービス紹介をしている支部でも紹介していたのでこれは全体的な話ですね。こういった構成でつくったのかーと資格の参考書だけだと見れない構成がたくさんでした。
業務で使用しているのもあるので、なかなかおもしろい話ばかりでした。

深夜枠

パワポカラオケからはじまり、ビブリオバトルとLT枠でもやれない(?)ようなことをしていました。ビブリオバトルはうとうとしながらなのでもう記憶にございません。
パワポのスライドの3枚目はネタだったのですが、どこからこれを持ってきたのかすごく気になりましたし、無理難題(?)な絵をみながらAWSと結びつけたスピーカーはすごかったです。

中の人関係

JAWS愛を語るやお気に入りのサービスなどですね。
ユーザーだけでなく、AWSの中の人から直接話しを聞けるのは貴重な機会でした(亀田さんのは寝落ちして聞き逃しました・・・)
深夜の電話についてはテレフォンショッキングみたいな感じで面白かったです。時間さえあればもっと聞いてみたい内容でした。

JAWS-UG全般

コミュニティマネージャからみたJAWS-UGやJeff Barrのセッションがそれにあたりますね。
JAWS-UGのこれまでの活動の歴史を写真などを使って見ることができました。
新参者(?)からすれば歴史を振り返るいい機会になりました。

他にもたくさんありました

とある南の島からのお話、料理や結婚に例えたプレゼン方法等など、支部ごとに書かないとまとめられない個性的なセッションが多く、 これほど聞いていられるオンライン配信もなかなかないなーと思います。どれかは自分の業務に関わる部分もあるので、そういった部分はかなり刺さりました。
ちなみに自分はOpsJAWS支部の監視の部分がかなり刺さりました。データの解析できると転職でも有利になれるんですねー、良いこと聞いた.
それぞれ流れている感想も面白く、togetterでのまとめは読んでて笑いそうになりました。
JAWS SONIC 2020 Day1
JAWS SONIC 2020 & MIDNIGHT JAWS 2020 MIDNIGHT
JAWS SONIC 2020 Day2

これだけ多くのAWSサービスを一気に聞ける機会なんてないですし、参加できた人はラッキーだったのではないかって思っています。
興味のある支部もいくつか見つけられたので早速参加をしに行こうと思います。~転職専門支部は興味あります~

おまけ:JAWS SONICと私

運営スタッフとしては全くといっていいほど関わっていませんが、某支部の運営メンバーではあるのでちょろっとやったぐらいです。
それもセキュリティの柱を読んだのと5秒の動画を投稿したレベルです・・(下記動画にちょろっと出ています)

HNしか伝えてない人は本名モロバレですねw

特にやってない以上、せめてTLはもりあげようかなーという思いで参加をしていました。
結果的に自分が一番楽しめて、勉強になりました。運営メンバーをやるときはいつも思っているのですが、1参加者としてよりも深く理解できる機会が多いのでおすすめしてます。
弊社の人間は運営はおろか、このイベントにすら参加してないだろうという自信(?)があるからやりたい放題にやれてます。嬉しいような悲しいような気もしますが。

恋するストレージサービス -写真の保管-:Microsoft Azure Storage Archive編

パブリッククラウドアーカイブで写真を保管するの第二弾はMicrosoft Azureです。
実際に操作してみるとAWSとは違った特徴が出てきて面白かったです。

Azure Archive Storageとは

Microsoftが提供するAzureのStorageになります。
AzureはStorageの使用頻度に合わせてHot, Cool, Archiveの3種類が提供されています。
色々ありますが、Amazon S3との比較なのでストレージタイプはBLOBで固定します。
ホットは頻繁にアクセスを行う、クールは30日以上保管する、アーカイブは180日以上というように書かれています。

一方で冗長性を以下のどれかから選択することが出来ます。
- ローカル冗長ストレージ (LRS) →持続性が99.999999999%。1つのデータセンターで3回のコピーを作成。
- ゾーン冗長ストレージ (ZRS) →持続性が99.9999999999%。複数のデータセンターで管理をします
- geo冗長ストレージ(GRS) →持続性が99.99999999999999%。別のリージョンでも3回コピーされる。
- geoゾーン冗長ストレージ(GZRS) →GRSではプライマリのデータセンターに3つのコピーを取りますが(LRSと同じ)、 GZRSでは3つのデータセンターに1つずつコピーを取る方式(ZRSと同じ)です。 セカンダリはどちらもLRSと同じです。

1つのセンターに保存するのに、3つのAzに保存するS3と同じ耐久性ってなんだろう。 一応S3 one zoneも同じ耐久性を保証していますが、この辺の差をどうやって出せるんでしょうね。

料金形態

AWSと同じく、日本と最安のリージョンで比較します。 日本の東日本・西日本リージョンでの値段はこうなります。
- ホット:2.24円/GB(最初の50TBのみ) - クール:1.68円/GB - アーカイブ:0.224円/GB

2TB使うと想定するとそれぞれ4480円、3360円、448円ほどになります。

料金は一番安いのが米国西部2・米国中北部・米国東部です
- ホット:2.0608円/GB(最初の50TBのみ) - クール:1.12円/GB - アーカイブ:0.11088円/GB

同じく2TB使うと想定するとそれぞれ4121円、2240円、221円ほどになります。 ちなみに最安の値段は0.00099ドル/GBとAWS Glacier Archiveと同じ値段になりますが、 ホットの値段はAmazon S3標準よりも安いんですね。

絶対になくしたくないようにGZRSでクールにすると2.52円/GBと倍になります。

ハンズオン

ストレージアカウントの作成

まずはじめにポータル画面からストレージアカウントを作成します。
Azureサービスに表示されていますが、なければ検索画面から検索して選択を押します。

この段階ではストレージアカウントが存在していませんので、新規作成をします。

作成を押すとこの画面に飛びます。リソースグループもないので新規作成をします。
アカウントの場所は一番安い米国西部2を選択しましたが、 他でも問題ないですん。
アカウント名は大文字と記号が使用不可、一意のものになるように名前をつけます。
パフォーマンスは標準、レプリケーションは一番安いLRS、アクセス頻度はクールにします。

アカウント作成後、画面のように表示されます。ここからでもいいのですが、Explorerで開くを押して、Storage Explorer画面に遷移させます。

Storage Explorerで保存

画面からBLOBコンテナを選択して、右クリックでコンテナの作成を押します。コンテナ作成後はアップロード選択ができるようになるので他と同じ用にアップロードして終わりです。
この段階ではアカウントで作成したクールの状態でしか保存されていないので、アーカイブに変更します。

アクセス層の変更

この画面に表示されているBLOBを選択し、プロパティを選びます。
そこからアクセス層を選択するとホット・クール・アーカイブを選択できるので、アーカイブを選んで保存すると無事にアーカイブで保存されます。
一度保存したBLOBファイルのアクセス層を後から変更できるのは大きいですね。

まとめ:絶対になくしたくないならAzureがありかも

最安値はAWSと同じですが、課金をすればAWS以上に耐久性の高い保管が可能になるのが面白いですね。 Storageアカウントを作成したり、コンテナに入れたりとGUI上での操作はAWSのほうが楽かなーという印象でした。

最後はGCPを取り上げます。

参考

Azure Blob Storage: ホット、クール、アーカイブ ストレージ層

恋するストレージサービス -写真の保管-:Amazon S3 Glacier編

趣味用のブログで、AWS Glacier Deep Archieveが写真用のアーカイブ・ストレージとして使えそうという内容を書いてみました。ここでは少し内容を詳しめに書いてみようと思います。

TL;DR

有名なパブリッククラウドをまとめて紹介しようとしたら大変なことになったので分けて紹介することにしました。AWSはGlacierがS3の一部となったのですげえ使いやすくなりましたというお話です。
すばらです。
あとタイトルは恋する小惑星を参考にしてみました。

AWS Glacierとコスト

AWSのストレージサービスで、耐久性はS3と同じイレブンナインのストレージサービスで、アクセス頻度の低いもの、アーカイブとして使用できるクラスが存在しています。
取り出しの時間によって料金も変わるのですが、迅速に取り出しをしたい場合は緊急以外はないですかね。
かつては通信によって料金が変わるという性質のため、高額な料金がかかる可能性もありましたが、今は規定の金額が設定されています。

名前の由来はデータを氷漬けにするから氷河から来ているようです。私は個人的にお気に入りのネーミングです。(元々氷河をやっていたので)
コストは最も安い米国で試算をします(2020年8月現在)。

米国(北カリフォルニアを除く)
- S3低頻度アクセス:0.0125USD/GB - Glacier:0.004USD/GB - Glacier Deep Archieve:0.00099USD/GB 額になおすと25ドル・8ドル・1.98ドルとなります。 Glacierそのものは他と金額が大差ないのですが、Glacier Deep Archieveだけは1/2までコストが下がっています。

ちなみに東京リージョンだとこんな感じです - S3低頻度アクセス:0.019USD/GB - Glacier:0.005USD/GB - Glacier Deep Archieve:0.002USD/GB 額になおすと38ドル・10ドル・4ドルとなります。

ハンズオン

実際に保存をしてみます。GUIでできるのが便利ですね。

S3のコンソール画面から新規バケットを作成する

ここではテスト用に使用するので「test」みたいなのを名前につけます。
S3のバケットは世界で単一の名前にしないといけないので単純な名前だと弾かれます。

普段でしたらリージョンは東京を選択しますが、上記の通りものすごく安いので米国のを使用することにします。
基本的にはどこでもいいのですが、米国西部:北カリフォルニア(us-west-1)のみ$0.002/GBなので注意が必要です(東京と同じ金額なのでレイテンシを考えると全く選ぶ必要がない)。今回は米国西部:オレゴン(us-west-2)を選択します。

us-eastを選ばなかったのはデータセンターが逝く回数があまりに多いので避けました。
AWS でいままで起きた大規模障害を振り返る

IAMのロールなどは面倒なのでadminを付与したもので作業をしています。
公開範囲などの設定を求められますが、そこまでの使い方をするわけではないので、今回は全部無視します。
スキップしまくると無事にS3バケットが作成されますので、このままGlacierへアップロードしていきます。

ファイルをGlacierにアップする

バケット内でフォルダを作成します。今回はGlacierのテストなので適当なフォルダ名にします。

アップロードはドラッグ・アンド・ドロップで出来ますので、適当なファイルを入れます。
写真の場合は日付でリネームしたzipファイルだと後々管理が楽かなと思います。

アップロードするときにストレージクラスを選択します。
今回はアーカイブの中でもほとんど取り出さない設定なのでGlacer Deep Archieveを選択します。
もしS3の低頻度にしたり、Glacierにしたい場合はここで設定できるのでかなり便利だと思います。

そのままアップロードを押すとファイルがアップロードされ、これで完了になります。

バケットに戻るとちゃんと作成されていますね。

ストレージクラスもちゃんとGlacer Deep Archieveになっていますね。

今のテスト環境のバケットです。S3の標準でも同様に作成をしてみました。
中身を確認するとストレージクラスがスタンダードになっています。

保存したファイルをダウンロード(復元)する

Glacierからファイルの復元依頼を出します。
即時でダウンロードできないので、アクションの「復元」を選択し、何日ほど使用可能にするのかを設定します。この日は適当でも問題ないです。
あとは取り出しにかかる時間を待つだけです。最大2日も待てばいいのであとは気長に待ちましょう。

ちなみにS3の標準だと即時でダウンロードが出来ます。もちろんその分の料金はかかるので使い方によって分けましょう。

まとめ

これまでCLIで保存をしていたGlacierですが、GUIに対応することによってだいぶ使用にハードルが下がっていますね。料金も比較的安く、年間3000円で確実に保存できることを考えると個人使用としても現実的かなと思っています。
次はMicrosoft Azure Storageを紹介します。

参考

Amazon S3 の料金
AWSのS3 Glacierを使って写真のバックアップをしてみる
まあ、2つ目は僕のなんですが・・・。

PDFの文字起こしの方法を模索してみる1:AWS編

文字起こしという機能をクラウドで実装する方法をちょっと考えてみました。実際に実現できていないのが課題なのでそこはやろうと思います。
意外とできそうなできなさそうなというところで詰まりました・・・。

特に問題がないならGoogle翻訳Googleドキュメントの使用でOK

個人の環境であれば、Google翻訳GoogleドキュメントでPDFをアップロードする、というのが一番ラクで精度が高いように思います(Google翻訳は微妙な部分もあっって、DeepLの方がいいときもありますが)

ただ、職場によってはこれらのサイトを使えないこともあります。クラウドならばOK(駄目だけど、ごまかせる)という場合もありますので、機能単体ですが、少しいじってみました。

Amazon Textractで文字起こし

画像やPDFをはじめ単純なOCR以外にもテーブルなどの情報を持ってくることが可能です。

実質的にどのドキュメントからでもテキストやデータを簡単に抽出

機械学習も使用しており、コードを使用することもなく簡単にできそうです。 2020年7月現在でのデメリットは以下の2つです。 * 東京リージョンでの使用不可
* 英語等のみで日本語化は不可

結構大きいデメリットですね・・・。リージョンはまだしも日本語化出来ないのがきついです。 あとPDFは10Pまでって結構使い勝手悪そう。

とりあえず試してみます。

AWSのコンソールにログイン後、Amazon Textractと入力して画面に遷移します。
右側の「試してみる」を押して画面に飛びます。

サンプルのドキュメントが先に表示されています。
生のテキストはそのままの文章を、テーブルは別途で出力されるようになっています。

画像形式で公開されているデータを引っ張ってくるには使いやすいと思います。
右上の「アップロードする」を選択するかドラッグ・アンド・ドロップでファイルをアップロード出来ます。
画像の場合は特になにもないのですが、PDFの場合はS3にバケットを作成することになります。
今回はServiceNowのドキュメントを翻訳させてみましょう。

Orlando DevOps

文字起こしの結果

見た感じだといい具合に翻訳されていました。

テーブルも別途出力されていますね。

S3のバケットにはもとのPDFがアップロードされています。
結果のダウンロードでファイルを出力します。

うーん、きちんとテキストデータに落とせているのはいいのですが、勝手に改行されているので、なんとも読みづらいです。
一部文字が大文字になっていたり記号になっていたりと精度はまあまあなようです。

Amazon Translateで翻訳をしてみる

こちらはAmazonが提供する翻訳サービスです。深層学習モデルを使用しているので割と正確に出るみたいですね。

高速で高品質な言語翻訳を手ごろな価格で提供するニューラル機械翻訳サービスです。ニューラル機械翻訳は、深層学習モデルを使用して、従来の統計ベースやルールベースの翻訳アルゴリズムよりも正確で自然な翻訳を提供する言語翻訳自動化の一形態です。

Amazon Translate

単体で使用する場合は、コンソールからAmazon Translateを選択してボックス内に文をいれるだけになります。使い方は翻訳サイトとほとんど同じですね。
翻訳の精度はまあまあのようです。試しに違う文をAmazon Translate、Google翻訳、DeepL翻訳で比較してみましたがほとんど同じでした。

まとめ:短文のを翻訳するぐらいならすぐに使えそう

書いている時点では作っていないのですが、 1. S3に対象のPDFをアップロードする 2. アップロードのタイミングでTextractを起動するようにLambdaを設定 3. Textract終了後をトリガーにTranslateを起動してS3のバケットに保存

みたいな感じで実装できそうです。文字の微妙な改行などはSageMakerとかを間に挟むことで解決できるかもしれません。
AWSは万能かなと思っていましたが、思わぬところに制約がありますね。ちょっと意外でした。

参考

音声を文字起こしする
Amazon Textract を使用したドキュメントからのテキストと構造化データの自動抽出

JAWS-UG 29 S3で静的サイトを公開しよう、のハンズオンをしてみて

7/9にJAWS-UG初心者支部にて、S3を使ったハンズオンが行われました。
その時に感じたこととかをざっとメモってみます。
AWS 上で静的な Web サイトを公開しよう!ハンズオン

ハンズオンをやってみた感想

まずこのハンズオンはすでに公開されているAWS Hands-on for Beginnersのハンズオンからかなり簡略化されたものになります。 AWS 上で静的な Web サイトを公開しよう!

このようにhttpsにしてR53で名前解決をしてからCloudFrontを経由してS3内のページを公開するるのですが、ハンズオンでは(デモを除いた場合)S3のバケットに直接アクセスする形式を取っています。

質問や解説を含めるとこれぐらいが確かにちょうど良いのかなって思いました。
ハンズオン自体はまったくわからないところから見ながらやると30分はかかるかと思います。

コードを丸コピする準備が出来てたり、すでにやったことある場合はもっと短縮できます。
やってみましたが、Cloud9の環境構築を待っている時間が割と長く感じるぐらいです笑

HTML,CSSはほとんど手つかず状態で勉強していないので、遊べる環境が手に入ったと喜んでおります。

LT

1人目はAWS S3のマニアックなサービスについてです。
気がついたらS3のサービスが増えていたり、全く使ったことのない機能などなどが出てきており、 随分と奥の深いサービスだなあと感じました。
好きなサービスはS3と公言しちゃったため、今回の資料はせめて読み込もうと思います。

S3のデータの整合性に関してはSAAの資格取得のテキストにも書いていましたが、複数のデータセンターを用いた耐久性を担保するためというのは初めてしりました(もしかしたら書いていたかもしれませんが)

2人目はCloud9やChimeなどのサービスを使ったリモートでの新人研修についてでした。実は人数制限があるとか結構たいへんだったという話を聞けてよかったです。
意外だったのは画面共有しているので、表情が見えない代わりにマウスカーソルがくるくる動いていて、「ここで悩んでるんだあ(でも違うし)」というのが見えてきたという部分です。

自分の時も研修の時はPCを持っていって聞きに行ってましたが、リモートで見るほうが早めにアドバイス出来たのだろうなあと思いました。

オンライン勉強会の司会をはじめてやってみて

実はわたしは初めと終わりの司会でした。本当はもうちょっとうまく話すつもりでしたが、最初はそうも行かずという状態でした。

一番の理由はNWの接続がとぎれとぎれになっており、そこであたふたしておりました。
WiMAXにしてたのに、最終的には楽天モバイルの回線を使うというなんともわけのわからない状態でした。(自分のブログ にて微妙かもって言ってたのに)
接続確認のときにはよかったのですが、何ででしょうね。。。。

他の勉強会の司会をしたり、オンラインでの様子は(撮影している隣から)何度も見ていますが、顔が見えないというのは確かにやりづらいですね。チャットで少しでも反応してくれるというのはありがたかったです。

まとめとか

オフラインでの勉強会が段々復活しているみたいですが、オンラインならではの強みもありますよね。
S3のCLI操作などもうちょっと深く勉強していきたいです。

ServiceNow入門2:ServiceNowを扱う上でよく使うサイト達

ServiceNowを取り扱う中で、あまり日本語でのノウハウなんてものがないので、 自分が何を参考にしながらいじっているのかをまとめてみました。

公式ドキュメント

信用できるようで信用できない公式サイトのドキュメント集

機能ごとに書いているので、何をどうしたいのかと言う場合はまっさきに検索をかけます。
使用している型や関数なども記載されているので、スクリプトを書くなら必須です。

ただ、AWSのドキュメントみたいなのを期待すると、不親切な場所は多く、「これでどうしろと」みたいに思うことは多いです。
あと、随分と前の中身を最新版のドキュメントに混ぜ込むのもやめてほしい。アップデートの意味がない。。。

リリースノートの確認によく使います。

https://docs.servicenow.com/

コミュニティ

ユーザーコミュニティ。英語でやりとりをするという前提を除けば一番まともですね。 画像を載せてどうしたらいいかというのを多数の人とできるので、すぐに回答が来ることもあります。

https://community.servicenow.com/community

Now Support (HI)

カスタマーサポートなので、契約している人向け。 日本語での質問も可能だが、反応は遅い。。。

どうやら日本語→英訳→海外エンジニアという流れになる場合もあるみたいで、 英語ができる人は英文で載せるほうが回答がはやいです。

回答までの遅さとか、正確じゃないときもあるので正直微妙。。。

https://hi.service-now.com/

Qiita

エンジニア御用達のSNS。炎上すれども結局みんなここにたどり着く気がします。
やっぱり情報が少ないのか、記事は少なめ。

まとめ 日本語のドキュメントは少ないです

Google翻訳を使わない限り、公式ドキュメント以外はすべて英語に頼ることになってしまいますね。 こんなところで英語を使うことになるとは思っても見ませんでした。