片岡空の上の空

一旦書き留めるためのページ

技術書店6逝ってきた!!

技術書店6逝ってきた!!

昨日巷で話題の技術書店6に行ってきました。

11時から開いているとのことでしたが、緊急タスクが入ってしまったので13時頃向かいました。

サンシャインシティに行ったことがなくて「展示ホールD」がどこかわからず、結構ウロウロしてしまいました・・・。

実際に展示ホールDに向かったらかなりの人がいて、最後尾はホールの外に出て並びました、おそらく並んでた時間は10分程度だったと思います。(今後のご参考までに)

 

ホール内の様子ですが、めっちゃ混んでいて、9割男性、コミケとは違ってコスプレしているひとはほぼいないです。たまに制服のおじさんや、うさみみのおじさんがいたりはしましたが。

ガヤガヤはしていますが、大声で売り子をしている人はいませんでした。

 

事前調べをしていなかったので、うろうろしようかと思いましたが、かなりの人がいて、なかなか見本誌は読めなかったです、次回はちゃんと調べておいたほうがいいと思いましたね。

 

Podcastで声だけ知っている人をリアルに見れたり、本を出している知り合いにあったり、勉強会で見たことある人に声かけられたりと、物理のサプライズのコミュニケーションがあるのは良かったです、その人が売り子だと、空気的に買わなければならないのでどんどんお金が飛んでいくので注意です。

サプライズ出費を見込んでお金は多めに持っていくと良いでしょう。

13時頃でしたが、売り切れていたのは1,2割り程度でした。

私的には無理に朝一11時からの参加でなくても良いような気がします。

 

入ったときに手提げをもらえたし、無料で配っているものもあったり、知り合いが本を出していたり、欲しい本があるというわけでなくても興味があれば行ってみる、というのもありだと思います。

世の中にこんなにエンジニアがいるんだ。こんな事やっている人がいるんだ。という発券がたくさんありました。

ありがたいことに書く側に誘われたので、次回はサークル側で頑張ってみたいです。

 

下記戦利品

技術書店6戦利品

技術書店6戦利品

 

AWSのサポートも間違えるのPerformance insightsの注意点

AWSのサポートも間違えるのPerformance insightsの注意点

Performance insightsとは?

AWSのPerformance insightsってご存知でしょうか?

Performance Insights はデータベースパフォーマンスのチューニングとモニタリングを行う機能で、データベースの負荷をすばやく評価し、いつどこに措置を講じたらよいかを判断するのに役立つサービスです。

 

aws.amazon.com

もちろん自分たちでスロークエリやlogからボトルネックを探し、パフォーマンスのチューニングをすることも可能ですが、グラフィカルで直感的にボトルネックを見つけられるのは、ボトルネック確認の人件費を削減することができます。

 

Performance insightsの価格

ずばり、継続する 7 日間のパフォーマンスデータ履歴は「無料」で使用することが可能です。

基本的に7日分のデータがあれば、DBのパフォーマンスチューニングには十分だと思います、もし、7日分以上のデータがほしい場合も有料にはなりますが、利用することは可能です。(値段は下記参照)

 

aws.amazon.com

 

Performance insightsの使い方

Performance InsightsはAWSの管理画面のDBの作成・変更時に有効化をすることによって簡単につかうことができます。

コマンドラインから何かをインストールして、、、といった作業は必要ありません。

 

 

docs.aws.amazon.com

 

Performance Insightsのよくある質問

Performance Insightsの存在を知ったときに、私が感じた疑問点が「よくある質問」ページに記載されていたので、念の為こちらにも記載いたします。

 

Q:Performance Insights を有効にするとデータベースのパフォーマンスに影響が及びますか?

-昔の監視ツールあるあるで、負荷を減らしたいから監視しているのに、監視ツールが負荷そのものになる。という笑えない笑い話が昔ありました。

 

A:Performance Insights のエージェントは、データベースのワークロードを邪魔しないように設計されています。

-流石ですね。

 

Q:拡張モニタリングを使用し続けるべきですか、それとも Performance Insights を使用するべきですか?

-すでに自作で設定している場合、どうしようかなと。もしPerformance Insightsが今後どんどん発展していくなら、全部移動させたほうがいい気がしました。

 

A:拡張モニタリングを使用して O/S メトリクスのモニタリングを行っているお客様は、引き続き拡張モニタリングでデータを取得してください。

-無理に寄せなくてもいいようです。使いたきゃ使えば程度なのでしょう。

 

Q: Performance Insights からデータをエクスポートできますか?
-古いタイプのクライアント案件の際、AWSにログインしてもらえないので、
クライアントに変更前、変更後や改善案の資料としてデータをエクスポートしたくなります。
 
A:現時点では使用できません。今後、Performance Insights にデータエクスポート機能が追加される予定です。ただし、Performance Insights で取得されたデータは、API を通じて利用できるようになっています。
-エクスポートは機能の実装を待つ必要があるようです。

 

aws.amazon.com

 

Performance Insightsの注意点

こちらが本題となりますが、実はPerformance Insightsにはサポートの方も100%は把握しきれていない問題点がございます。

それは

「対応しているインスタンスタイプがわかりにくい」

ということです。

これはよくある質問にも載っておらず情報が少ないため、私以外にも躓く方が多いかと思います。

AWS側からの利用条件は下記ページのとおりになります。

 

Using Amazon RDS Performance Insights - Amazon Relational Database Service

ですが、Performance Insightsの対応状況は変化しているようで、このドキュメントが追いついていない現状があるようです。

 

私はこの掲載にあります

T3 インスタンスクラスを選択した RDS for MySQL、T3 インスタンスクラスを選択した Aurora PostgreSQL で利用できます。」を信じておりました。

Performance Insights が T2 および T3 インスタンスタイプのサポートを開始
上記のAWS側からの利用条件にも

For Amazon RDS MariaDB and MySQL, Performance Insights is not supported on the following DB instance classes: db.t2.micro, db.t2.small, db.t3.micro, and db.t3.small.

とあります。

t3.mediumなら問題ない」ように思えませんかね。

じつは以前はできたようなのですが、AWS側で利用条件の変更があったようで、

Auroraの場合はR系のみ利用可能」となっているようです。

ご注意ください。

 

これの情報は誰かのためになれば嬉しく思います。

 

 

 

 

Mechanizeで画像をクリックできなくて死んだ話。

Mechanizeで画像をクリックできなくて死んだ話。

結論から言うとMechanizeクローラを作っていたが、画像ボタンをクリックできずにしんだ。っていうだけの話なのですが、フラストレーションが溜まったので記事にします。

 

「応募者の中から毎月XXX名様にプレゼント」というサイトの応募フォームに毎月cronでアクセスして、自動で問い合わせをする、グレーなシステムを組んでいたのですが、

input要素を全部うめ、あとは「送信」のボタンを押すだけのところまで作ったのですが、その「送信」ボタンが

 

<img id="btn_confirm" src="" />

 

になっていて、jsをトリガーにしてフォームを送る形式になっていました。

 

Mechanizeでjsを動かすことはできないのはわかっていたのですが、

imgタグをクリックできないかで試行錯誤してみましたが、結局の所駄目でした。

 

img.clickだとか、aタグのクリックっぽいことをできないかだとか。。。

おそらくモンキーパッチを作るとしたらaタグのクリック部分にパッチを当ててimgタグでもできるようにする形かと思います。

 

結論としてはMechanizeじゃなくてjsを実行できる他のgemを使ってクローリングしろって話です。


私のおすすめはcapybaraですかね、test用のgemではありますが、私にとっては非常に使いやすく重宝しております。

 

IT関係者にオススメPodcast

IT関係者にオススメPodcast

最近podcastが乱立しているので私が聞いているオススメのpodcastをお教えします。

必要に応じて聞いて貰えればと思います。

 

■最新のIT情報を知りたい。

rebuild.fm

 

テック系Podcastの草分け的存在かなりの知名度があるかと。

アメリカのリアルな状況や最新のメモリニュース、政治・事件などレベルの高い情報が多いですが、わかりやすく話してくださっています。

 

 

■Engineering Manager関係者

anchor.fm

 

ひろき(@hiroki_daichi)、ゆのん(@yunon_phys)のEngineering Managerの魅力を紹介するPodcast、Engineering Managerじゃなくても、チームで開発をしたことがあるならよく分かる点が多いかと思います。

それなりに現場経験がある人には、ピッタリなpodcastです。

 

■英語を勉強したい

bilingualnews.jp

 

英語と日本語のバイリンガル会話形式で行われているpodcast、生きた英語のリスニングは普段触れることがなく、いざという時聞き取れないことが多いです、

IT関係の業種にいる以上、英語とは無縁ではいられないですし、

今後の世の中のグローバル化を考慮しても耳が英語になれているのは非常に良いことです。

チョイスされるニュースも面白く、英語の必要性を感じてる人にはかなりおすすめです。

 

■IT系の成長プランを知りたい。

jinseifm.life

 

リアルなエンジニアがゲストになって、その人の半生を振り返るという変わった目線からアプローチされているPodcast、今後の自分の成長プランに不安があったり、周りのエンジニアがどうやって成長しているのかが気になる方には良いのではないかと。

 

■ガジェット大好き

backspace.fm

 

最近はyoutuberでもある drikinさんとmazzoさんのpodcast、新しいガジェットを見たら買わずにはいられない散財が趣味の方はかなりマッチするかと思います。

 

■ブラウザの最新事情大好き

mozaic.fm

 

Chromeをメインにブラウザの最新の動向についてかなり細かく話されています。

私も最初は半分以上何をいっているのかわからない状態でした。

 

■その他いろんなpodcast

http://dex.fm/post/181545126703/065-performance-tuning-%E2%85%A1

dex.fm

 

Androidの開発者向け、そうでない方も楽しめます。テッキーな話が多いイメージです。

 

■ゆるく行きたいかた向け

ajito.fm

VOYAGE GROUPの関係者によるpodcast、IT関係の幅広い話題に触れられています。

 

voicy.jp

特別テック系というわけではないですが、podcastを聞くことに抵抗感のある方には、緩めの内容でおすすめです。

1話の時間も短くて聞きやすいです。

S3の署名バージョンをアップデートさせる

Amazon S3 における AWS 署名バージョン 2 の廃止」

 

先日このような記事が出て、このままでは古い環境でS3へのアクセスができなくなる可能性があるため、回収を行いました。

 

詳しくはこちらを御覧ください

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/

【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について | DevelopersIO

 

環境はrailsでまさかの ruby-version 2.2.1

 

まずはrubyのアップデートをしろよ!!というツッコミも多いかと思いますが、

 

今回はS3の部分のみアップデートしていきます。

 

元のGEMバージョンはそれぞれ

Gemfile

gem 'aws-sdk', '< 2.0'

gem 'paperclip', '~> 4.2'

 

Gemfile.lock

aws-sdk (1.65.0)

  aws-sdk-v1 (= 1.65.0)

aws-sdk-v1 (1.65.0)

  json (~> 1.4)

  nokogiri (>= 1.4.4)

paperclip (4.3.0)

  activemodel (>= 3.2.0)

  activesupport (>= 3.2.0)

 

今までこのようにしていた指定をこのように変更致しました。

Gemfile

gem 'aws-sdk', '~> 3'

gem 'paperclip', '~> 6'

 

Gemfile.lock

aws-eventstream (1.0.2)

aws-partitions (1.144.0)

aws-sdk (3.0.1)

・・・・

paperclip (6.1.0)

  activemodel (>= 4.2.0)

  activesupport (>= 4.2.0)

 

rails部分の変更は下記のようになりました。

【アップロード】

変更前

AWS.config(

  access_key_id: [access_key_id],

  secret_access_key: [secret_access_key],

  region: 'ap-northeast-1' )

s3 = AWS::S3.new

upload_file_name = "hoge"

file = s3.bucketsbucket.objects[upload_file_name]

s3_object = file.write(file: params['hoge_img'].tempfile)

 

変更後

 ::Aws.config = {

  access_key_id: [access_key_id],

  secret_access_key: [secret_access_key],

}

s3 = ::Aws::S3::Client.new(:region => 'ap-northeast-1')

upload_file_name = "hoge"

s3.put_object(

  :bucket => [bucket],

  :key => upload_file_name,

  :body => params['estimate_pdf'].tempfile

)

 

【ダウンロード】

変更前

AWS.config(

  access_key_id: [access_key_id],

  secret_access_key: [secret_access_key],

  region: 'ap-northeast-1'

)

s3 = AWS::S3.new

file_name = 'hoge'

file = s3.bucketsbucket.objects[file_name]

send_data file.read, filename: params[:file_name], disposition: 'attachment', stream: 'true', buffer_size: '4096'

 

変更後

::Aws.config = {

  access_key_id: [access_key_id],

  secret_access_key: [secret_access_key],

}

s3 = ::Aws::S3::Client.new(:region => 'ap-northeast-1')

file_name = 'hoge'

object = s3.get_object({ :bucket => [bucket], :key => file_name, })

send_data object.body.read, filename: params[:file_name], disposition: 'attachment', stream: 'true', buffer_size: '4096'

 

もっとよい書き方があったら、教えていただきたいです。

 

 

サーバの時間がずれるなんて。。。

あ...ありのまま今起こった事を話すぜ!

な...何を言っているのかわからねーと思うが

おれも何をされたのかわからなかった...

 

s3から画像をダウンロードするアクションを叩いたら、突然

 

The difference between the request time and the current time is too large.

 

でエラーになったんだ!!

特にそれより前にサーバの設定をいじったりは全くしていなかったし、

webサーバー2台のうち1台だけがずれていて、他のサーバーにも影響はなかった。

 

dateで見て見ると約22分遅れのずれ、今まで問題なかったのに、いきなりずれた原因が

全くわからなかった。

 

取り急ぎ

 

date --set "日時"

 

で対応して事なきをえた。。。ntp入れるか。。。。

gem紹介「devise」

■gem名

devise

 

■公式サイト

https://github.com/plataformatec/devise

 

■内容

認証機能の実装

 

■メリット

認証に関連する多くのオプションがある。

多くの情報が揃っている、

(情報があるその分重たい(オーバースペック)という意見も多い。)

 

■こんな時使う

認証機能を実装する際、特に要件の多い認証機能を用いる際

例:

パスワードを変える時毎回メールの存在確認をしたい。

パスワードを連続で間違えた時の対応を行いたい。

etc

 

■install

gem 'devise'
rails generate devise:install
config/environments/development.rb:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

 

rails generate devise [MODEL]
rails db:migrate

他に沢山記事が出ていると思うのでそちらを御覧ください。

 

■コントリビューター

 

https://github.com/josevalim

https://github.com/carlosantoniodasilva

 

■更新頻度

https://github.com/plataformatec/devise/releases

 

■LICENSES

MIT License

 

■関係gem

omniouth系fbやtwitter、LINEアカウントとの連携を行うgemがある

 

■その他

その他の認証系のgem

monban 

https://github.com/jbhandari/monban

sorcery

 https://github.com/Sorcery/sorcery

 

■一言

当たり前ですがメールやエラーがdefo英語ですので、毎回日本語用に変えてます、PR出してjp版のを作ればいいのですが。。。

また、slimでやっている場合は毎回gemを入れてslimに変えて、gemを消して、といった処理をしている人は多いかもしれません、これもPRを出せばいい話かもしれませんが。

https://github.com/slim-template/html2slim

シンプルにな認証機能でも今後のカスタマイズを考え、deviseを入れるタイプの方もいれば、最初は自分で作ってしまい、要件が増えてからdeviseを入れるタイプの人もいますが、それは案件の成長具合などにもよるので、CTOやチームリーダーと話し合い決めればいいかと思います。