タグ

ブックマーク / qiita.com (341)

  • AWS DMSを使ってRDS for PostgresからDynamoDBにデータ移行 - Qiita

    はじめに Postgresqlに保存してあったデータをDynamoDBに移行させるために、AWSのDMS(Database Migration Service)を使ってみた時の、メモをまとめた記事である。 背景 クローリングしたデータをRDS for Postgresqlに保存していて、そのデータの利用してAPI GatewayLambdaを使ってAPIサーバを作成しようと思っていたのだが、RDSとLambdaは相性が良くないということが判明した(接続数の問題などで)。 しかも、DynamoDBを使えば、エンドポイントがつくられるので、わざわざLambdaで関数作る必要無いことに気がついたので、RDS to DynamoDBへの移行計画を立てることにした。 調べているとAWS DMSという、いかにもなサービスがあったので使ってみることにしたというのが、事の顛末である。 AWS DMSにつ

    AWS DMSを使ってRDS for PostgresからDynamoDBにデータ移行 - Qiita
    karahiyo
    karahiyo 2018/06/06
  • git push -f をやめて --force-with-lease を使おう - Qiita

    force push問題 rebaseなどの作業の際、強制PUSHが必要なタイミングが出てくるが --forceではローカルの内容を破壊的にリモートレポジトリを上書きしてしまう。 同じブランチで複数人開発していた場合にタイミングによっては 「◯◯さんのコミットを吹き飛ばしちゃった//」 が発生する可能性が十分ある。 そもそも上記の運用方法に問題がある気はするが、どんな運用をしていたとしても force pushする際は --force-with-leaseオプションを必ずつけるようにしておいて損はないと思う。 TIPS: Github上でブランチを削除できないようにする 消されるとまずいブランチは [Settings] → [Branches]でさまざまなprotectionルールをかけておきましょう!

    git push -f をやめて --force-with-lease を使おう - Qiita
    karahiyo
    karahiyo 2018/05/29
  • OFFSETを使わない高速なページネーションの実現 - Qiita

    <?php try { /* SQLite3のテンポラリデータベースに接続およびモード設定 */ $pdo = new \PDO('sqlite::memory:'); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true); /* スキーマとレコードの生成 idは絞り込み等で番号が飛んでいることを想定 */ $pdo->exec('CREATE TABLE samples( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NU

    OFFSETを使わない高速なページネーションの実現 - Qiita
    karahiyo
    karahiyo 2018/05/03
  • UbuntuからAlpineにイメージを移行して容量を減らす例 - Qiita

    概要 Docker のベース・イメージを Ubuntu から Alpine Linux に移行し、Docker イメージの容量を削減できた(141MB→3MB)。このイメージのビルド時、コマンドラインで扱う analog コマンドを make し、コマンドとして analog コンテナを使うイメージにする。以下は具体的な移行手順を記載。 動機 アクセス解析ツール AnalogDocker コンテナ対応作業を進めている。 Ubuntu:14.04 イメージを元に作成していたが、容量が 141MB と大きかった。 consul の公式イメージが 10MB という小ささなのは Alpine イメージを使っているからではという仮説からスタート。検証のため、イメージを Ubuntu から Alpine に移行することにした。 Dockerfile 移行時の考慮点 パッケージ・マネージャ Ubu

    UbuntuからAlpineにイメージを移行して容量を減らす例 - Qiita
    karahiyo
    karahiyo 2018/04/09
  • EC2インスタンスのタグ情報を読み込んで振る舞いを変える - Qiita

    目的 インスタンスの起動時、cloud-initで設定したスクリプトの中で インスタンス自身のタグを読み取り、インスタンス自身が自分の役割を読み取り、振舞いを変える処理を行ってみます。 AWSで検証しましたが、『インスタンス自身が自分のメタデータを取得できる』 というクラウドベンダで『メタデータにRoleを設定する、という運用』 なら流用可能かもしれません( というより、個人的にはクラウドベンダに依存しない運用ができないか探してました ) このスクリプトは『ROLES変数にあるレシピ(role)を実行する』というだけなので、 例えばNIFTY cloudで先に export ROLES="hoge" してから、このセットアップ用スクリプトを流す、という方法にも使えます。 アイデア元 https://gist.github.com/na0AaooQ/440761480838103a5136

    EC2インスタンスのタグ情報を読み込んで振る舞いを変える - Qiita
    karahiyo
    karahiyo 2018/03/16
  • SwaggerでRESTful APIの管理を楽にする - Qiita

    背景 最近は変化し続ける要件に対応するために、システムも柔軟であることが求められています。 そのため、部分的に変更やスケールの可能なシステムを構築し、API経由で連携するマイクロサービス的アーキテクチャが増えてきています。 そういった設計の中で問題になっていくのが、従来のモノリシックなアプリケーションではIDEやコンパイラなどで行っていた、機能間のインターフェイスをどう管理するかという部分です。 Swaggerとは? SwaggerとはRESTful APIのドキュメントや、サーバ、クライアントコード、エディタ、またそれらを扱うための仕様などを提供するフレームワークです。 公式サイトでは、The World's Most Popular Framework for APIsと謳っています。 その理由は、マイクロソフト、Google、IBM、SmartBearなどを大手の企業を含む「Open

    SwaggerでRESTful APIの管理を楽にする - Qiita
    karahiyo
    karahiyo 2018/03/16
  • CodePipeline, CodeCommit, CodeDeploy を使ったデプロイ - Qiita

    CodeCommit が東京リージョンでも使えるようになったので, Code~ 系を使ってデプロイを統合します. ※github を使っている場合は CodeDeploy で直接デプロイできます. 以前の記事 AWS CodeDeploy 導入調査 AWS 設定編 ではソースコードを zip 化して S3 にアップロードして CodeDeploy でデプロイという方法を取っていました. この方法だとチーム運用するには CI サーバー等がないとちょっと厳しそうだったのですが, CodeCommit を使用することによりその辺りのハードルが少し下がります. https://aws.amazon.com/jp/codecommit/ 言うなれば AWS の git ホスティングサービスです. ただし現時点(2017/06月)では PullRequest 機能もありませんのでメインのソースコード管

    CodePipeline, CodeCommit, CodeDeploy を使ったデプロイ - Qiita
    karahiyo
    karahiyo 2018/03/16
  • AWS CodeDeploy でデプロイを自動化する - Qiita

    AWS CodeDeploy を使ってデプロイを自動化したときの資料です。 Before EC2 + UserData AMIから新しいインスタンスを作成 UserDataでGithubからコードをpull Capistranoで自分自身にアプリをデプロイ ELBに新しいインスタンスを追加 ELBから古いインスタンスを退役 古いインスタンスを削除 ここが問題 インスタンスの作成〜削除が手作業 膨大な手順書 作業ミス スクリプトの終了がログ以外から確認できない サーバに入ってcloud-init-output.logを監視 After EC2インスタンスへのファイル配置とスクリプト実行の自動化・管理ツール CodeDeployの利用方法 事前準備 アプリケーションを作成 デプロイグループを作成 デプロイ対象 (EC2のタグ名 / AutoScalingGroup) デプロイ方法 (1台ずつ

    AWS CodeDeploy でデプロイを自動化する - Qiita
    karahiyo
    karahiyo 2018/03/15
  • AWS CodeDeployを使ってPHPアプリケーションをデプロイしてみた - Qiita

    AWS CodeDeployを使って、お手製デプロイシェルやJenkinsおじさんから卒業しよう!というお話です。 今回はPHPアプリケーションをS3経由でデプロイしてみようと思います。 AWS CodeDeploy is 何 Q: AWS CodeDeploy とは何ですか? AWS CodeDeploy は、Amazon EC2 インスタンス、およびオンプレミスで稼働するインスタンスを含む、さまざまなインスタンスへのコードのデプロイを自動化するサービスです。AWS CodeDeploy を使用すると、お客様はアプリケーションの複雑なアップデート処理、デプロイ中のダウンタイムの回避、新規機能の迅速なリリースが容易になります。AWS CodeDeploy を使用すると、エラーを起こしやすい手動操作やインフラストラクチャのサービススケールの必要性を排除しながら、デプロイの自動化を行うことが可

    AWS CodeDeployを使ってPHPアプリケーションをデプロイしてみた - Qiita
    karahiyo
    karahiyo 2018/03/07
  • Tomcat8でlogback.xmlの設定が効かなくて1日ムダにしそうになる前に確認してほしいコト - Qiita

    はじめに 私が最近作るアプリは、Skinny Frameworkを使用して、warに固めてTomcatで動作させてます。 Tomcat...古くから触っているからでしょうか、えも言われぬ安心感があります。 Tomcat9が出ている昨今、Tomcat8もきちんと触ってみないといかんよな、ということで遅ればせながらTomcat8で動かしてみようと思った次第です。 まずは、Tomcat8 + OpenJDK8上に固めたwarをデプロイします。うん、普通に動くじゃないか。さすがTomcat。安心感パネェ。 動作自体には問題は特に無さそうでした。そう、ログファイルを見るまでは。 「あれ、アプリのログファイルが出ていない」 logback.xmlの設定をdebug以上記録するようにした上でアクセスログをdebugレベルで書いていたのですが、指定したディレクトリにログファイル自体が存在しません。 どんな

    Tomcat8でlogback.xmlの設定が効かなくて1日ムダにしそうになる前に確認してほしいコト - Qiita
    karahiyo
    karahiyo 2018/02/22
  • コミュニケーション能力の正体と「カレー作りの寓話」 - Qiita

    はじめに Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 記事では、そのなかで触れている二人の人物がパーティのためにカレーを作るという話を紹介します。きっとどこかで見たことのあるコミュニケーションが繰り広げられていると思います。このカレー作りの寓話から、コミュニケーション能力の正体に迫っていきましょう。 パーティに来るみんなのためにカレーを作りましょう。そう言って、ボブとエバは2人でカレーを作り始めた。 ボブは、どんなカレー

    コミュニケーション能力の正体と「カレー作りの寓話」 - Qiita
    karahiyo
    karahiyo 2018/02/16
  • PHPのリリース日とサポート期限 - Qiita

    PHP 7.0 は2018年12月3日に公式のセキュリティサポートが終了し、その前の2018年9月13日に 7.0 系最終リリースとなるはずだった 7.0.32 が公開された。しかし、セキュリティサポート終了後の2018年12月6日に 7.0.33 が公開された。 PHP 5.6 の公式のセキュリティサポートは当初2017年8月28日まで 4 だったが、5系最後のリリースであることを理由に 5 2016年始めに2018年末まで延期された。6 2018年12月6日にリリースされた 5.6.39 が最終リリースになるはずだったが、セキュリティサポート終了後の2019年1月10日に昔のよしみ (for old time's sake)で 5.6.40 がリリースされた。 7 PHP 5.5 は2016年7月10日に公式のセキュリティサポートが終了し、その前の2016年6月23日に 5.5 系最終

    PHPのリリース日とサポート期限 - Qiita
    karahiyo
    karahiyo 2018/01/31
  • AWS IAMでのMFA強制 - Qiita

    AWSのIAMをユーザに割り振ったけど、セキュリティ強化のためにMFA(多要素認証)を強制にしたい場合ってありますよね? MFAとは セキュリティを向上させるには、多要素認証(MFA)を設定して AWS リソースを保護することを推奨します。MFA は、AWS ウェブサイトまたはサービスへのアクセス時に承認済みの認証デバイスまたは SMS テキストメッセージから取得した一意の認証コードを入力するようユーザーに要求することで、セキュリティをさらに高めます。 (AWS公式より) 手順 MFAによるアクセスでなければ何もさせたくない場合は { "Version": "2012-10-17", "Statement": [ { "Sid": "BlockAnyAccessOtherThanAboveUnlessSignedInWithMFA", "Effect": "Deny", "NotActio

    AWS IAMでのMFA強制 - Qiita
    karahiyo
    karahiyo 2018/01/17
  • 新しいNTPクライアント&サーバ、chrony - Qiita

    はじめに CentOS 7で"最小限のインストール"以外を選んだ場合にインストールされるchronyはntpdに代わり標準となったNTPクライアント兼サーバである。 とはいえ、CentOS 7でも相変わらずntpdは使用できるし、ntpdateの代わりではないのでntpdateコマンドを打ちたければntpdateを使用する。 以下、初期稿ではchronyの、ntpdとの違いを中心に記述する。注目点があればそれも書くが、まともに追っていくと深いので、後で気になる点が増えたら追記する形を取る。 あと、この記事でネタにするのはchronyであってcronieではないので悪しからず。 chronyのインストールと起動 CentOS 7ではOSインストール時にインストールされていなければyum install chronyでインストールすることができる(CentOS 6でも6.8からOS標準のリポジ

    新しいNTPクライアント&サーバ、chrony - Qiita
    karahiyo
    karahiyo 2018/01/11
  • 機械学習案件を納品するのは、そんなに簡単な話じゃないから気をつけて - Qiita

    はじめに 昨日のTwitterで書いたこちらが非常に反響を呼びました。 半年間かけたデータ解析の仕事が全くうまくいかなかった 今回の失敗は契約書に納品物を明記していなかったこと 機械学習の依頼は学習済みモデルのファイルを納品しただけでは、先方は検収できず、結果支払いを受けられない この教訓をひとりでも多くの人に知ってもらいたい — キカガク代表 吉崎亮介 (@yoshizaki_kkgk) 2017年11月20日 そうなんですよね。 全く先方が悪いわけでもなく、私自身が「機械学習のお仕事=解析」だと思いこんでいたことが失敗の始まり。 結局のところ、機械学習系のプロダクトを依頼されて、学習済みモデルを作成して即納品とはいかず、検証結果を示されないと検収できないよとなってしまうので、結局アプリケーション側まで組み込まないと納得感はないんですよね。 この検証とは、訓練データと検証データを分けた時

    機械学習案件を納品するのは、そんなに簡単な話じゃないから気をつけて - Qiita
    karahiyo
    karahiyo 2017/11/24
  • Web、モバイル開発者のための画像管理クラウドサービスCloudinaryが超便利な件 - Qiita

    Cloudinaryは、Web、モバイル開発者のための画像管理クラウドサービスです。 公式サイト Cloudinary 特徴 単純に、画像をアップロードし、保存するだけでなく、画像加工まで簡単にできてしまいます。 特に画像加工のお手軽さはやみつきです。 画像のリサイズ、トリミング、エフェクト、アングルなどなどが簡単に行えます。 また、Cloudinaryのクライアントライブラリは Ruby on Rails, PHP, Node.js, Angular, .Net, Python & Django, jQuery, Java, Scala, Android, iOS and more. と充実しており、 使い方も超簡単で、例えばNode.jsの場合、以下の様な感じで画像のアップロードができちゃいます。 cloudinary.uploader.upload("sheep.jpg", func

    Web、モバイル開発者のための画像管理クラウドサービスCloudinaryが超便利な件 - Qiita
    karahiyo
    karahiyo 2017/11/16
  • アドテク業界でのAWSインフラの比較 - Qiita

    http://aws.amazon.com/jp/solutions/case-studies/ この辺にのっていた事例を色々比較してまとめてみた。 AdTechって一言で言っても色々関連技術はあるし、 各社とも解決したい課題と既存環境(オンプレを残すかとか)が違うので参考になりました。 ツッコミ歓迎です。 フリークアウト 課題 接続先広告サーバーとの通信レイテンシーが低くできるか オンプレミスサーバとセキュアな接続ができること 使用サービス Storage S3 Static files CDN CloudFront Mail SES Load Balancer Elastic Load Balancer Virtual Server EC2 VPC Database RDS MySQL 解説 ~50msのレスポンスが要求されるRTBではオンプレミスのサーバ群を使用し、 VPN経由でコン

    アドテク業界でのAWSインフラの比較 - Qiita
    karahiyo
    karahiyo 2017/11/10
  • 持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP

    この記事は、開発を持続可能にできるようなアーキテクチャとその適用方法を考察するものです。 骨子はできていますが、実装経験をフィードバックして詳細を若干変更するかもしれません。 勉強不足な点もあるので、意見を歓迎します。 開発においてよくある問題点 ビジネスロジックの質が何だったか見失う。ソースコードのどこまでが業務上の関心で、どこからがそれを実現するための技術上の関心か分からなくなる。 入出力双方向の処理が散在して処理が追い切れなくなる。特にイベント処理でどこに飛ぶかわからないコールバック地獄になる。 初期化・つなぎ込み・統合者的オブジェクトが小さな機能単位で生まれて統一感が無くなる。 状態を持つ値が大量に散在して副作用を起こしバグを生む。 これらの問題の結果、小さな単位ごとに個人のノウハウで"良い"設計がされ、機能を追加しようとしたときにどういう方針で行えばよいか分からなくなる。 解決

    持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP
    karahiyo
    karahiyo 2017/11/06
  • [2018/03/08追記]API Gatewayでサーバレスな画像リサイズAPIを作る - Qiita

    <2018/03/08追記> 2018年3月、Lambda@Edgeを使った画像リサイズのソリューションがAWSの公式ブログにて紹介されました。 - Amazon CloudFront & Lambda@Edge で画像をリサイズする - Amazon Web Services ブログ 今後サーバレスな画像リサイズ処理について検討する場合は、上のブログ記事を参照されることをお勧めいたします。 </追記> 2016年11月に Amazon API Gatewayがバイナリデータに対応したので、Amazon CloudFront、AWS LambdaAmazon S3を組み合わせて、フルマネージドな画像変換(リサイズ)APIを作ってみる。 やりたいこと URL中のパスで指定したファイルを、クエリパラメータで指定したサイズ(今回は幅のみ指定)に変換して返す。 例えば HTML中にimgタグで

    [2018/03/08追記]API Gatewayでサーバレスな画像リサイズAPIを作る - Qiita
    karahiyo
    karahiyo 2017/10/23
  • Reactをes6で使う場合のbindの問題 - Qiita

    es6でReact.Componentを作成した場合 イベントハンドラでthisがundefinedになる es5のReact.createClassを使った場合は、 イベントハンドラが自動でbindされるので大丈夫だった es6 save(e){ this.props // undefined になる } render (){ return ( <button onClick={this.save} />保存</button> ); }

    Reactをes6で使う場合のbindの問題 - Qiita
    karahiyo
    karahiyo 2017/10/19