投稿

1月 11, 2019の投稿を表示しています

NLB経由でAmazon DocumentDBに接続する方法を検証しました

イメージ
NLB経由でAmazon DocumentDBに接続する方法を検証しました : モバイルアプリサービス部の五十嵐です。 今年は GraphQL + MongoDB + TypeScript なスタックを広めていきたいと思っていた矢先、AWSからMongoDB互換のデータベースサービス Amazon […]

書評「Spring Boot2 徹底活用」を読みました

イメージ
書評「Spring Boot2 徹底活用」を読みました : 永遠の生魚おじさん、都元です。近年、自分の読書量が減ってしまったことに危機感を持ち、今年は本を読むぞ、という意気込みを持っています。ということを Facebook に投稿したところ、友達から Kindle Oasis を […]

[小ネタ] Androidコマンドをfzfで便利にしてみた

イメージ
[小ネタ] Androidコマンドをfzfで便利にしてみた : はじめに 以下の記事をみて、Androidのコマンド関連にも使えるじゃないかなーと思って挑戦!具体例もあってもわかりやすかった! [ターミナル]fzfを使った自作インタラクティブアプリを作ってみよう! […]

[小ネタ] Androidコマンドをfzfで便利にしてみた

イメージ
[小ネタ] Androidコマンドをfzfで便利にしてみた : はじめに 以下の記事をみて、Androidのコマンド関連にも使えるじゃないかなーと思って挑戦!具体例もあってもわかりやすかった! [ターミナル]fzfを使った自作インタラクティブアプリを作ってみよう! […]

Serverless FrameworkでProfileが存在しないというエラーの対処法

イメージ
Serverless FrameworkでProfileが存在しないというエラーの対処法 : どうも!大阪オフィスの西村祐二です。 AWS上でアプリケーションを開発する際に、STG用、本番用、開発用とプロファイルを分けてAssumeRoleして開発していくことがあると思います。 https://docs.aws. […]

pandocでmarkdown形式ファイルからwordドキュメント(*.docx)を作成する

イメージ
pandocでmarkdown形式ファイルからwordドキュメント(*.docx)を作成する : こんにちは、DI部の岩澤です。 最近は何か書く時にはmarkdownでサクサク書いているのですが、たまにひな形を参考にwordドキュメントを書いてほしいと要望されたります。 markdownからひな形のスタイルに合わせつ […]

「クラウド活用」というテーマでHatena Engineer Seminar #11 を東京(1/23)・京都(1/30)に開催します! #hatenatech

イメージ
「クラウド活用」というテーマでHatena Engineer Seminar #11 を東京(1/23)・京都(1/30)に開催します! #hatenatech : こんにちは��アプリケーションエンジニアの id:KGA です。 「Hatena Engineer Seminar #11」を、1月23日(水)にはてな東京オフィスにて、1月30日(水)にはてな京都オフィスにて、それぞれ開催します! 今回のテーマは「クラウド活用」です。はてなでサービスを開発・運用する上でどのようにクラウドを活用しているかがわかる内容の発表をご用意いたしました。また、セミナー後は、ささやかですが懇親会も予定しています。はてなでのクラウド活用に関してご興味ある方はぜひご応募ください。 Hatena Engineer Seminar とは Hatena Engineer Seminar は、はてなのサービスを開発する上で、エンジニアがどのような事を考えているのか、どのような働き方をしているのかを語るイベントです。過去にもインフラ技術やフロントエンド開発、スマートフォン開発など、様々なテーマで開催されてきました。 過去の Hatena Engineer Seminar に関する記事一覧 イベント日程と会場 1月23日(水)東京オフィス 日時: 1月23日(水) 19:20-22:00(19:00 受付開始 / 懇親会含む) 参加費: 無料 定員:50名(応募者多数の場合は抽選とさせていただきます) 会場:株式会社はてな 東京オフィス SHIBAFU 所在地:東京都港区南青山6-5-55 青山サンライトビル3F 1月30日(水)京都オフィス 日時: 1月30日(水) 19:20-22:00(19:00 受付開始 / 懇親会含む) 参加費: 無料 定員:40名(応募者多数の場合は抽選とさせていただきます) 会場:株式会社はてな 京都オフィス セミナールーム 所在地:京都府京都市中京区御池通間之町東入高宮町206 御池ビル8F タイムテーブル 時刻 名前 タイトル 時間 19:00 - 開場・受付開始 - 19:20 開会の挨拶・諸注意 5分 19:25 id:miki_bene マン

FirebaseのLINEカスタム認証をAWSのサーバーレスで実装してみた

イメージ
FirebaseのLINEカスタム認証をAWSのサーバーレスで実装してみた : 西田@大阪です FirebaseにはFacebookなど代表的なSNS認証がデフォルトで用意されていますが、LINEを使ってのSNS認証は用意されておらずカスタム認証サーバーを用意する必要があります。参考 今回はSeve […]

[Talend]tLogCatcherを利用してジョブの例外をハンドリングする

イメージ
[Talend]tLogCatcherを利用してジョブの例外をハンドリングする : はじめに こんにちは。DI部の大高です。 今回はTalendのコンポーネント「tLogCatcher」を利用したジョブの例外ハンドリングを紹介したいと思います。 前提条件 Talendのバージョンは「Talend Ope […]

AWSのサービスをモックするライブラリmotoを拡張してDynamoDBのTransactWriteItemsを実装する

イメージ
AWSのサービスをモックするライブラリmotoを拡張してDynamoDBのTransactWriteItemsを実装する : はじめに サーバーレス開発部@大阪の岩田です。 現在開発中のサーバーレスアプリでDynamoDBのTransactWriteItemsを利用したいシーンが出てきたのですが、利用にあたって少し課題が出てきました。 Dyna […]

Alteryx Weekly Challenge #52を例にしたOptimizationツールの解説

イメージ
Alteryx Weekly Challenge #52を例にしたOptimizationツールの解説 : こんにちは、小澤です。 本記事は、Weekly Challengeに挑戦するシリーズではないのですが、題材としてWeekly Challengeの問題を扱っています。 PrescriptiveにあるOptimizatio […]

Challenge #34: Date-Time Formatting ~日付と時刻を整形する標準マクロ~ – Alteryx Weekly Challenge

イメージ
Challenge #34: Date-Time Formatting ~日付と時刻を整形する標準マクロ~ – Alteryx Weekly Challenge : こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。 Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。日付と時刻を整形する標準マクロの作成に挑戦します […]

Googleスプレッドシートで郵便番号から住所を表示する関数 その2

Googleスプレッドシートで郵便番号から住所を表示する関数 その2 : 概要 セルに郵便番号を入力することで、住所を表示してくれる関数があったらなぁと思って書いた プログラム が動かなくなっていたので、zipcloudさんのAPIを使って書き直してみました。 APIの詳細につきましてはこちらをご確認ください。 http://zipcloud.ibsnet.co.jp/doc/api ※本スクリプトをご使用の際はzipcloudさんの利用規約をご確認の上、ご利用者さん各自の責任の元でご利用ください。 使い方 下記をスクリプトエディタにコピペすれば関数を利用できるようになります。 =ZIP_ADDRESS("154-0004","address1") みたいな感じ。 利用できるデータの種類はzipcloudさんのWEBサイトでも確認できますが次の通りです。 zipcode 郵便番号 prefcode 都道府県コード address1 都道府県名 address2 市区町村名 address3 町域名 kana1 都道府県名カナ kana2 市区町村名カナ kana3 町域名カナ function ZIP_ADDRESS(zip,part) { zip = zip.replace(/\-/g, ''); var response = UrlFetchApp.fetch('http://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zip); var res = JSON.parse(response.getContentText()); if (res.status == 400) { return res.message; } if (res.results) { var address = res.results[0]; return (address[part]) ? address[part] : ""; } else { return "該当するデータがありません"

AWS内で完結するウェブアプリケーションの作成 (アプリケーションの構築編)

イメージ
AWS内で完結するウェブアプリケーションの作成 (アプリケーションの構築編) : 前回の記事について AWS内で完結するウェブアプリケーションの作成 (仮想環境の構築編) AWS内で完結するウェブアプリケーションの作成 (仮想環境へのサンプルアプリケーションの搭載編) の続きです。先ずはこちらを参照いただければ幸いです。 作成条件 基本的にAWS内で完結させる。ローカルへのアプリダウンロード等は行わない。 できる限り無料枠を利用する。 AWSアカウントを所持していることを前提条件とする。 AWS内での仮想環境の構築 及び サンプルアプリケーションの搭載 が完了していることを前提条件とする。 構築手順 作成したプロジェクトへのアクセス AWSにログインし、 AWS マネジメントコンソール に移動する。 開発プロジェクトを開始 をクリックする。 AWS内で完結するウェブアプリケーションの作成 (仮想環境へのサンプルアプリケーションの搭載編) で作成したプロジェクトを選択する。 サンプルアプリケーションの確認 ダッシュボードをクリックする アプリケーションのエンドポイントのリンクをクリックする。 Amazonが用意したサンプルアプリケーション(ムービー)が再生される。 ソースコード改変 IDEをクリックする。 AWS内で完結するウェブアプリケーションの作成 (仮想環境へのサンプルアプリケーションの搭載編) で作成したAWS Cloud9環境の IDEを開く を選択する。 しばらくするとIDEが表示されるので、任意のソースコードを改変し、保存する。 今回は、ムービーの表示文字を 「Congratulations!」 から 「Hello! World.」 に変更する。 ターミナルからのGit操作 IDE下部の+ボタンをクリック、 New Terminal を選択する。 ターミナルからgitで変更箇所をpushする。 New Terminalに以下の文字を打ち込む。 ※最初の2行は初回のみ ※git add xxx はmodified の横に表示された文字列(改変したソースコードファイルの場所)を入力。 複数のファイルを改変した場合はその分だけ入力する。 例

[JS] 42==trueがfalseになるわけ

[JS] 42==trueがfalseになるわけ : JSを少しでも書いてる人は値を比較するときに必ず === を使えと教わることだと思います。 == がいかにエンジニアの直感に背き、値を比較するかを書いてみようと思います。 まずは、以下のコードが何をプリントするか予想してみてください。 console.log(42 == true); // ? console.log('42' == true); // ? console.log(1 == true); // ? console.log(0 == false); // ? . . . 予想できましたか?結果はこうなります。 console.log(42 == true); // false console.log('42' == true); // false console.log(1 == true); // true console.log(0 == false); // true 42 == true や '42' == true は true になると予想したのではないでしょうか。なぜなら、 42 も '42' も単体では truthy だからです。 その証拠に if で単体で比較すると true になります。 if (42) { console.log('42 is true!'); } else { console.log('42 is false!'); } if ('42') { console.log('true'); } else { console.log('false'); } これらはを実行するとどちらも 42 is true! と true が出力されます。なので、型強制(coercion)が行われ true == true が実行されたと考えるのが自然です。 ところがそうなりません。これはスペックを読むと理解することができます。( Abstract Equality Comparison の6と7より) x == y If Type(x) is Boolean

AWS MediaStore のファイルを全部消す方法

AWS MediaStore のファイルを全部消す方法 : 新年明けましておめでとうございます。 新年早々、ネタを用意できない streampack 木村です。 そんな訳で今回は小ネタを。 MediaStore のファイル削除 ところで皆さん、MediaStore のファイルを消すの面倒じゃありませんか? S3 みたいに一括処理ができないので、今の所一つ一つシコシコ消す以外に方法がありません。 ご存知の方も多いかもしれませんが、AWS のフォーラムで AWS CLI と awk コマンドと組み合わせた一括削除コマンドが上がっております。 aws mediastore-data list-items --endpoint=your endpoint —path=path to files | awk ‘{system(“aws mediastore-data delete-object --endpoint=your endpoint --path=path to files"$6)}' How to delete all items (eg, empty container)? https://forums.aws.amazon.com/thread.jspa?messageID=829906&tstart=0 your endpoint と path to files をあなたの環境に合わせて叩くと全部消してくれます。 シェルスクリプト 上記でも良いのですが毎回コマンド叩くのも面倒なのでスクリプト化しました。 #!/bin/sh epoint="your endpoint" path="path to files" aws mediastore-data list-items --endpoint=$epoint --path=/$path --output=text | awk '{system("aws mediastore-data delete-object --endpoint='"${epoint}"' --path=/'"${path}"'/&q

Amazon ECS サービス作成に失敗する

イメージ
Amazon ECS サービス作成に失敗する : ECSのサービスの作成でこんなエラーがでた場合! エラーメッセージ: Service already exists. (Service: AWSServiceDiscovery; Status Code: 400; Error Code: ServiceAlreadyExists; Request ID: ...) 原因: Serviceがすでに存在しているから。 対処1:別のサービス名で作成する。 対処2:「サービスの検出サービスの設定」を「既存のサービスの検出サービスの選択」で進める。

【AWS公式ドキュメントを噛み砕く】Amazon ElastiCache とは?

【AWS公式ドキュメントを噛み砕く】Amazon ElastiCache とは? : はじめに 案件で触れるから、学習がてらアウトプットしてみるよ。(本は無いし、AWSの公式ドキュメントは読みにくいし・・・) 個人の理解メモなので、正しい情報はAWSの公式ドキュメント見てくださいね。 (そして誤りあれば指摘してもらえると嬉しいです) ランディングページ 概要 ここ の話 利点 なんか、文章を箇条書きに変えただけになった。 非常に高いパフォーマンス ミリ秒単位の応答が可能 フルマネージド型 マネージド・サービスなので、運用は楽ちん。 スケーラブル スケールイン、スケールアウト、スケールアップが可能。 書き込みおよびメモリのスケーリングは、シャーディングでサポートされています。 レプリカは読み取りスケーリングを提供します。 特徴 ここ の話 (日本語未対応っすか) 基本的には、前払いなしの従量制。1時間単位で課金される。 すでに将来の利用枠が見えている場合は、前払いにすれば大きく割引がされる。 特に頻繁に読み込みが発生するようなデータに対して高速で反応ができる。 マネージドサービスなので、便利だよ。 以下を提供するものだよ。 MemcachedとRedisの2つのエンジンをサポート Management Consoleだけで簡単に起動が可能 特定のエンジンプロトコルとの互換性・・・(ちょっとよく分からん) CloudWatch経由で追加料金無しでモニタリング可能 料金は従量制 金額に関しては、キャッシュノードタイプ(t2.microとか)で異なるので、性能が高いやつほど、良い値段がする。 ここ に料金表があるので、詳細はそちらを確認ください。 開発者ガイド(Redis) Redis用とMemcached用はガイドが分かれているのでご注意ください。今回はRedisだけを対象にします。 Redis 用 Amazon ElastiCache とは ElastiCache は、クラウド内の分散型インメモリデータストア環境またはインメモリキャッシュ環境のセットアップ、管理、およびスケーリングが簡単になるウェブサービスです。このサービスは、パフォーマンスとコスト効率に優れ、スケーラブルな

javascriptでURLクエリーを簡単に取得してみた

javascriptでURLクエリーを簡単に取得してみた : やり方は色々あったが、わかりづらかったので、自分なりに簡単な方法を考えてみた。 for文よりforEachの方が好き派 いつも誰かのコピペしてたので、自分で書けるようにしたかった main.js function getParams(){ // クエリーparamは?からなので、まず?で分割 // paramが複数ある場合のため&で分割 var params = location.search.split('?')[1].split('&'); // オブジェクトで取れるようにする var data = {}; params.forEach(function(param){ // =でkeyとvalに分ける var key = param.split('=')[0]; var val = param.split('=')[1]; data[key] = val; }); return data; } 以上。ご自由にお使いください。

AWS RDSについて

AWS RDSについて : 自分がAWSのRDSについて調べたことを備忘録として記録しておきます。 RDSについて AWS(Amazon Web Service)上で使えるデータベースのこと。 Relational Database Serviceの略で、クラウド上で提供するRDBMSサービスである。 クラウド上で提供されているので運用の負荷が劇的に削減できるメリットがある。 RDSの機能 ・プロビジョニング ・パッチの適用 ・バックアップ ・リカバリ ・障害検知 ・リペア 特筆機能 Multi-AZ機能 データベースの可用性を高めることができる機能で、通常のDBと異なり、冗長構成を組む際にとらなければいけなかった親機と子機のデータの同期をAWS側が自動でしてくれる。これによりユーザーは同期をとる構成を組む必要がなくなる。また、フェイルオーバー機能を使い、親機に障害があった際に自動で子機に切り替えが行われる。 RR(リードレプリカ機能) 読み取り専用のレプリケーションを作成できる機能。親機に読み取りにかかる負荷を軽減できるので、結果として親機のパフォーマンスが向上する。 RDSの利点 ・作成後にサーバのスペックを変更できる ・後からストレージの容量を増やせる ・オンプレミスでデータベース構築に必要な作業をRDSが担ってくれる 対応DBエンジン AWSで使えるRDSはライセンスが必要なものと不要なものに分かれている。また、ライセンス料が必要なものでも、AWSのRDSの場合、ライセンス料が時間単価に含まれているので、ライセンスの契約期間を気にすることなく利用停止することができる。 AWSで使えるRDS一覧 ライセンス料不要 ・MySQL  ・PostgreSQL  ・Microsoft SQL Server  ・Amazon Aurora  ・MariaDB ライセンス料必要 ・Oracle RDSのインスタンスタイプ RDSはDBインスタンスのサイズによってかかる費用が変わってくるので、インスタンスを選択する前に自分が使うデータ量を加味してインスタンスを選ぶことが重要です。 主なインスタンスタイプ(2019/1/11現在) インスタンス 特徴

download属性のクリックによるダウンロードはドキュメントに存在しなければダウンロードできない。ブラウザ依存で。

download属性のクリックによるダウンロードはドキュメントに存在しなければダウンロードできない。ブラウザ依存で。 : 要約 <a href="ダウンロードしたいファイルパス or blob" download="ダウンロードファイル名"><a> という download 属性を使ったリンクは、 href , download , click をJSで操作してもいいものの、a要素自体はdocument下に存在していなければならず、 JavaScript空間のみで createDocument しただけのものでは一部ブラウザでダウンロードできない。 確認できたダウンロードできるブラウザは Vivaldi 2.2.1388.37 おそらく参考したコード記事からの情報によりChromeも可。 ダウンロードできないブラウザは Firefox 64 IE 9 他のブラウザに関しては下記リンクからテストしてもらえればと思います。 多ブラウザ対応としては、ファイル内容をJSで作るにしてもダウンロード用のa要素を先にHTMLで書いておくか、JSでa要素を作ってもappendChildなどでDOMツリーに追加してやればいいんじゃないでしょうか。 発端 Togetterのツイートまとめをスクレイピングしてコマンドやブラウザから一発で取得する機能の開発 #ファイルダウンロード - Qiita downloadText(e) { const blob = new Blob([this.$store.state.text], {type: 'text/plain'}) const link = document.createElement('a') link.href = window.URL.createObjectURL(blob) link.download = this.$store.state.text.split('\n')[0] + '.txt' link.click()

AWS内で完結するウェブアプリケーションの作成 (仮想環境へのサンプルアプリケーションの搭載編)

イメージ
AWS内で完結するウェブアプリケーションの作成 (仮想環境へのサンプルアプリケーションの搭載編) : 前回の記事について AWS内で完結するウェブアプリケーションの作成 (仮想環境の構築編) の続きです。 先ずはこちらを参照いただければ幸いです。 作成条件 基本的にAWS内で完結させる。ローカルへのアプリダウンロード等は行わない。 できる限り無料枠を利用する。 AWSアカウントを所持していることを前提条件とする。 AWS内での仮想環境の構築が完了している ことを前提条件とする(上記リンク参照)。 構築手順 1.サンプルアプリケーションの搭載 AWSにログインし、 AWS マネジメントコンソール に移動する。 開発プロジェクトを開始 をクリックする。 新規プロジェクトの作成 をクリックする。 メッセージボックスが出るので、 はい、ロールを作成します をクリックする。 プロジェクトを開始する をクリックする。 プロジェクトのテンプレートを選択する。 今回は Java Spring ウェブアプリケーション Amazon EC2(管理している仮想サーバーで実行)を選択 。 プロジェクト名に任意の文字列を入力し、 AWS CodeCommit リポジトリを選択する。 プロジェクトID、リポジトリ名が自動入力されているのを確認し、 次へ をクリックする。 チェックボックス「AWS CodeStarが、お客様に代わって、AWSリソースを管理する権限を要求しています」にチェックし、 プロジェクトを作成する をクリックする。 メッセージボックスが現れるので、プルダウンで「AWS内で完結するウェブアプリケーションの作成 (仮想環境の構築編)」にて作成したキーペアを選択し、 プロジェクトを作成する をクリックする。 AWS Cloud9 を選択し、 続行 をクリックする。 t2.micro を選択し、 次へ をクリックする。 以下の画面が表示されると、今回の目的である「仮想環境へのサンプルアプリケーションの搭載」は完了となる。 2.サンプルアプリケーションの表示 ダッシュボードをクリックする。 アプリケーションのエンドポイントのリンクが表示されたらクリックする(数分かかる場合がある)。

Ubuntuにリモートデスクトップで接続したいがpassword failedと言われる

イメージ
Ubuntuにリモートデスクトップで接続したいがpassword failedと言われる : とてもマイナーなエラーだったが解決方法をみつけるのに時間がかかったので、解決方法を共有する 現象 AWSでUbuntuを使用しておりGUI環境も整備していた ある日突然リモートデスクトップでの接続ができなくなった(Window remote desktop, Ubuntu Remmina) 正しいパスワードを入れているがpassword failedと言われる sshからは接続することができる Web上で見つけた解決方法[ https://www.raspberrypi.org/forums/viewtopic.php?t=31814 ] sudo service xrdp restart しても解決しなかった 環境 AWS Ubuntu 16.04 LTS Windows10 remote desktopまたはUbuntu 18 Remminaから接続 解決方法 xrdpのversionを上げることにより解決した このサイト[ https://netdevops.me/2017/installing-xrdp-0.9.1-on-ubuntu-16.04-xenial/ ] を参考にxrdpを0.6から0.9にアップグレ ードした xrdpのバージョン確認 xrdp -v 0.6となっている xrdpのアップグレード sudo add-apt-repository ppa:hermlnx/xrdp sudo apt-get update sudo apt-get install xrdp sudo service xrdp restart 再びxrdpバージョン確認 xrdp -v 0.9に更新された これによりリモートデスクトップ接続が再びできるようになった。どうやら何かのアップデートによりxrdpの古いバージョンでは接続できなくなってしまったみたい。