2:00am, Writing code

Roughly coding. Posted from Berlin.

AtCoder Beginner Contest072に参加してみたので感想とか

最近アルゴリズムとデータ構造の勉強の一環として競技プログラミングに興味が出てきたので少し試してみたりしている。AtCoderでほぼ毎週プログラミングコンテスト(プロコン)が開催されているということだったので、参加してみた感想を参加記録代わりに残しておく。

続きを読む

BubbleSort in Javascript

特筆すべきところはないがプログラミング手習いとしてのバブルソート。一応お作法としてObject.assignを用いた非破壊的なソートにしている。

const a = [20, 1, 13, 2, 5, 3, 32, 11, 21];
console.log(bubbleSort(a)); // [ 1, 2, 3, 5, 11, 13, 20, 21, 32 ]

function bubbleSort(array) {
  const copy = Object.assign([], array);
  for (let i = 0; i < copy.length; i++) {
    for (let j = copy.length - 1; j > i; j--) {
      if (copy[j] < copy[j - 1]) {
        const tmp = copy[j - 1];
        copy[j - 1] = copy[j];
        copy[j] = tmp;
      }
    }
  }
  return copy;
}

参考

バブルソート - Wikipedia

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

アプリエンジニアのためのAWS入門 ALB編

前回までのあらすじ

今回の教材

  • 概要
  • ALBを作成する
    • 基本設定
    • セキュリティ設定
    • セキュリティグループ設定
    • ターゲットグループ&ヘルスチェック設定
    • ターゲットグループへEC2インスタンスを登録
    • 確認
  • 動作確認
  • 参考

概要

前回まででウェブアプリをホストするためのEC2インスタンスと、それを管理するためのVPCを作成した。ただしゲートウェイは自分のIPアドレスからのSSHに対してしか開放していないため、現時点ではHTTPでEC2インスタンスに接続することはできない。

今回はALB(Application Load Balancer)を作成しVPCに紐付けることで、EC2インスタンスへのHTTP接続を可能にする。なおALBは2016年に新しく追加されたサービスで、それ以前はELB(Elastic Load Balancer)が同様のサービスを提供していたが、ALBの登場によってCLB(Classic Load Balancer)と名称が変更された。

ALBとELB(CLB)の違いについては以下の記事が詳しい。 dev.classmethod.jp

続きを読む

アプリエンジニアのためのAWS入門 VPC編

前回までのあらすじ

今回の教材

  • 作成するもの
  • VPCを作成する
  • サブネットを作成する
  • ゲートウェイを作成する
  • Route tableを設定する

作成するもの

本シリーズでは最終的に以下のネットワーク構成を作成する。図は下記の記事を参考にCloud Craftにて作成した。

見たままではあるがざっくりとした構成は以下の通り。

  • AWS内にVPCを構築
  • Gatewayにて外部に公開
  • VPC内に異なるAZ(Available Zone)の2つのサブネットを構築
  • 各サブネット内にEC2インスタンス及びRDSインスタンスを配置
  • ロードバランサで各サブネットに通信を振り分ける

f:id:snishimura0926:20170827204406p:plain

これ以降はAWSアカウント登録済みとして話を進める。ちなみにAWSアカウントの登録には通話の出来る電話番号が必要なので、データ通信のみのMVNO回線しかないと登録できないかも?なお日本国外(筆者の場合はドイツ)のプリペイドSIMでも登録できたので通話さえできれば問題ないようだ。

続きを読む

プリズナー・トレーニングで始める自重筋トレ 2017・夏

突然だが、ベルリンのジムは安い[^1]。年間契約という縛りはあるが、多くのジムは1年契約すると月20ユーロ(2017/08時点のレートで約2600円)で、契約した店舗だけではなくグループ店舗ならどこでも利用可能である。しかもヨーロッパ各地に展開しているので、ドイツ国外のジムでも追加料金なしでそのまま利用できる。

ということでジムを契約してみたら色々と筋トレについて興味が湧いてきたので調べていたところ、タイミングよく以下の本が発売された。

プリズナー・トレーニング 圧倒的な強さを手に入れる究極の自重筋トレ

プリズナー・トレーニング 圧倒的な強さを手に入れる究極の自重筋トレ

  • 作者: ポール・ウェイド,山田雅久
  • 出版社/メーカー: CCCメディアハウス
  • 発売日: 2017/07/28
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

この本は監獄内で伝わる自重トレーニングについて書かれた本で、アメリカの監獄内で生き延びる強さを手に入れるためのトレーニング方法がかかれている[^2]。本書ではジム(というかアイソレート種目)で作れる筋肉は見せ筋に過ぎず、本当の強さを手に入れるためには人体の構造に即したコンパウンド種目(=本書の自重トレーニング)を極めることが最善であると主張されている[^3]。

詳細は同書を参照してもらえばよいが、ざっくりいうとプッシュアップ(腕立て)、プルアップ(懸垂)、スクワット、レッグレイズ(腹筋)、ブリッジ、ハンドスタンドプッシュアップ(逆立ち腕立て)の6種目をビッグ6と呼び、それぞれの種目ごとに10個のステップを進めていくことで各種目のマスターステップ[^4]をこなせるようになるというのが本書の目的である。

ちなみに原著はこちらでアメリカではベストセラーになっていたそうな。表紙の人はワンアーム・ハンドスタンドプッシュアップ(逆立ちでの片手腕立て)をしている。本書の通りにトレーニングを重ねていけばこれができるようになるらしいがほんまかいな。

個人的には見せ筋よりも実際に使える体が欲しいので同書の筋トレを取り入れてみることにした[^5]。以下は実施メモ。

なお一応エンジニアなのでプログラミング力を(物理的に)強化するために指先を鍛えるメニューを取り入れている。

続きを読む

アプリエンジニアのためのAWS入門 概要編

  • はじめに
  • AWSの主要サービス
    • EC2
    • RDS
    • Dynamo DB
    • S3
    • VPC
    • ALB(ELB)
    • Route53
    • Elastic Beanstalk
  • 参考

はじめに

アプリエンジニアとして日々アプリ側の開発をしていると、いざ自分で開発からデプロイまでやらなければならなくなった時にインフラの知識が足りずに困ったということになりがちではないだろうか。

ここではそんな諸兄(というか自分)のためにアプリエンジニアが0からAWSを学んでいく際の手順をまとめていきたいと思う[^1]。ちなみに筆者はもともとAndroidメインのスマホアプリエンジニアで現在は業務系ウェブアプリエンジニア(サーバサイド含む)なので、ここでのアプリエンジニアとは「主にバックエンドよりも上のレイヤーで開発するエンジニア」ぐらいの広義の意味合いで捉えてほしい。

AWSについての知識はなくても問題ないが、基本的なネットワークやサーバサイドアーキテクチャの知識はあった方がわかりやすいと思われる。サーバサイドの基礎知識を手っ取り早く身につけたいなら一例として以下の本でもさらっと見ておくと有用かもしれない[^2]。

なお本シリーズはQiitaの以下の超人気シリーズを参考にさせていただいた(ありがとうございますありがとうございます)。

続編はこちら

続きを読む