サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
www.techscore.com
これは TECHSCORE Advent Calendar 2018 の25日目(最終日)の記事です。 こんにちは、宮垣です。 テックスコアブログに投稿するのは約4年ぶりになりますが、よろしくお願いします。 さて、先日、AWS re:Invent 2018のKeynote Day2 で AWS Lambda に新機能、Custom Runtime がサポートされることが発表されました。 AWS Lambda がカスタムランタイムをサポート 今回は、この新機能を利用してLambdaでシェルを動かすテストをしてみたいと思います。 Custom Runtime を動かすためのチュートリアルが公式ドキュメントに用意されていますので これを参考にしながら、主にマネジメントコンソールを利用して実施していきます。 Tutorial – Publishing a Custom Runtime - AWS
これは TECHSCORE Advent Calendar 2019 の7日目の記事です。 Amazon Simple Storage Service という名の通り、S3 は提供されているサービス内容は非常にシンプルなのですが利用時の用途が多岐にわたります。 利用用途が多岐にわたるという事は、注意して管理しないとカオスに陥る可能性があり、「一時的に置いているつもりだった」「そのうちに対応するつもりだった」という野良データがいつの間にか業務に組み込まれてしまい簡単に手が出せなくなる事態に発展する場合もあります。 私が普段利用している AWS アカウントの中で最も運用歴の長いものにも、何やらよろしくないデータが存在することが分かりました。 AWS を適切に利用出来ているかコストの面から調査をしている担当者から「S3 のストレージ利用量、勢いよく増加している理由は何?」と聞かれて即答できず、調
こんにちは、中西です。 好きなエディタは何ですか、と聞かれるとVisual Studio Code(以下、VS Code)と答えますが、 フォーマットをエディタに任せると、想定外の形になることがあります。 以下がHTMLを標準設定のままフォーマットしたときの例です。 整形されているため、きれいなコードになっていますが、 やはり自分が好きな形で整形されてほしいものです。 今回はVS Codeのフォーマッタを自分好みに設定してみよう、という記事になります。 ====実施環境==== ・Windows 10 ・Visual Studio Code version 1.37 フォーマッタの設定 1. インデントの数と種類を変更 最初に、自動挿入されるインデントを調節してみます。 標準設定ですと半角スペース4つ挿入されますが、この数を変更してみます。 画像内で赤の丸で囲んだSpacesを押し、 In
データベースにアプリケーションから接続する場合、多くの方がコネクションプーリングを行っていると思います。 Spring Bootの場合はデフォルトでHikariCPが有効になっているため、知らずにコネクションプーリングを利用しているということもあると思います。 コネクションプーリングは、SQL発行時に既存の接続確立済みのコネクションを使いまわすことによって、 データベースへの接続処理を省き、パフォーマンスを向上させるものですが、実際どれくらい効果があるのか、計測してみました。 コネクションプーリングの種類 コネクションプーリングの方式は大きく分けて「クライアント型」「サーバ型」の2種類があります。 よく使われているのはクライアント型で、HikariCPのようにアプリケーションがコネクションをプールします。 サーバ型は、アプリケーションとデータベースの間にコネクションプーリングを行うサーバを
これは TECHSCORE Advent Calendar 2019の25日目の記事です。 横田です。転職して3カ月程ですが前職までは Oracle や SQL Server を中心に触っていました。本格的にPostgreSQLを使うようになったのが今回始めてのため、SQL Server の言葉を借りて説明している箇所が有ります。予めご了承ください。 今回は、PostgreSQL 11 で実装された付加列Index (※) を中心としたパフォーマンス関連のお話をしたいと思います。商用DBと比較してしまうとOSS-DBに無い機能が多かったりするのですが、近年はパーティショニングやIndex機能の充実化など、溝を埋めていこうとする姿に感銘を受けました。なのでDBを使う側も実装されたものを使いこなせる様になろうと思います。 ※「付加列Index」はSQL serverで同機能の呼び名です。機能の
これは TECHSCORE Advent Calendar 2018 の7日目の記事です。 こんにちは、土屋です。 今年1月に AWS Lambda が Go のサポートを開始しましたね。 Gopher たちが賑わう中、私も Go のアプリを Lambda で作りたいなあと思い、 AWS SAMを使って環境構築をしてみました。 環境構築はチャチャッと終わらせたい!と思いつつも、実際にSAMを使ってみると、自分がやりたいことを実現する方法がわからず、調べるのに意外に時間がかかってしまいました。 そこで今回は「先に知ってればもっと工数削減できたなー」と思った、AWS SAM に関する小ネタを4つをまとめました。 ※AWS SAM は公式ドキュメントの Benefits of Using AWS SAM に書かれている通り、AWS CloudFormation の拡張です。本記事の内容は、Clo
これは TECHSCORE Advent Calendar 2019 の 23 日目の記事です。 こんにちは。松本です。 社内向けに作成した ITP(Intelligent Tracking Prevention) に関するドキュメントを再編集し、ブログ記事として以下に公開します。対象は、ITP 1.0 から ITP 2.3 に加え、2019/12/10 に発表された Preventing Tracking Prevention Tracking までとなります。 WebKit のソースコードに目を通すところまでは出来ていないので、あくまでも WebKit ブログから読み解ける内容が中心となります。 前提知識(用語など) まず、ITP に関連して頻出する用語をピックアップして解説します。 WebKit WebKit(ウェブキット)は、HTML や CSS などで記述されたドキュメントを解釈
これは TECHSCORE Advent Calendar の13日目の記事です。 Privacy Sandbox は Google が提唱する 広告についての技術的な取り組みです。Google の Chrome ブラウザの開発チームのブログで以下のように書かれています。 Chromium Blog - Potential uses for the Privacy Sandbox we outlined our vision for an initiative aimed at evolving the web with architecture that advances privacy, while continuing to support a free and open ecosystem. プライバシーを向上させながら自由でオープンな (広告の) エコシステムを引き続きサポートす
これは TECHSCORE Advent Calendar 2019の22日目の記事です。 Introduction(はじめに) アルゴレイヴとは アルゴレイヴ(Algorave)というものをご存じでしょうか?アルゴレイヴとはAlgorithm(アルゴリズム)とRave(皆で楽しむこと)を組み合わせた造語です。音楽や映像をプログラミングで即興的に作り上げるライブコーディングという技術を使用し、ライブコーダーが様々なアルゴリズムから生成された音楽を流すイベントのことを指します。2011年イギリスで最初のイベントが開催され、現在世界で広がりつつあります。日本でも度々開催されています(algorave.tokyo) ライブコーディングとは ライブコーディングとは即興的にプログラムを書き/編集しながら、音楽や映像を奏でるリアルタイム・パフォーマンスのことです。作りこんだものではなく、偶然性や即興性
こんにちは。梶原です。 これは TECHSCORE Advent Calendar 2018 の8日目の記事です。 AWS Glue 東京リージョンでの利用開始から早や1年。 動かしてみないことには内容の理解も追いつかないだろうとは思うものの、何から手を付ければ良いものか。手頃なとっかかりが無いかと途方に暮れておりましたところ、社内の AWS 通からやってみたらと教えてもらったのがデータ分析基盤を作るというものでした。 ありがたい、是非やります、やらせてくださいーーー(><) で、見事にハマったのです。エラーが起きて「さぁ乗り越えてみろ」と立ちはだかりました。 今回のブログでは Glue で作成したスキーマを Amazon Athena から timestamp 型でひたすらクエリを実行する内容でお届けします。 目次 環境と前提条件 あるべきフォーマットは謎。AWS 公式ドキュメントでは触
これは 😺TECHSCORE Advent Calendar 2019😺の3日目の記事です。 横田です。2019/11/15に開催された日本PostgreSQLユーザ会が主催するPostgreSQL Conference Japan 2019 に参加しました。このカンファレンスでは15のセッションが展開されていましたが、国産の分散RDBMSであるTsurugi(劔)が非常に気になったので、Tsurugi(劔)に絞って書いていきたいと思います。 国産の分散RDBMS/ProjectTsurugi(劔) 【Tsurugi(劔)ってなんだ?】 国産OSS-DBとして日経にも載ったDBエンジンの開発Projectです。分散構成になるので、シングルで動いているPostgreSQLと比べて導入と運用管理の難易度は難しくなると思います。ストアドプロシージャの互換性については怪しそうですが、SQLはP
※3つの方式ともに、シリアライゼーションには他の仕様を選択することも可能ですが、一般的なものを記載しています いずれかの方式に統一することもできますが、大規模なシステムに於いては、マイクロサービス間通信にgRPC、フロントエンドとの通信にGraphQL、外部公開するAPIにOpenAPIといったように、ユースケースに応じて使い分けるのも良いと思います。 gRPCを利用してみた感想ですが、パフォーマンスもさることながら、OpenAPIと比べて仕様が単純な分、IDLを元に生成される雛形(スタブ)の品質が高く複数言語での利用をスムーズに行うことができそうだと感じました。 gRPCの呼び出しスタイル gRPCの呼び出しスタイルには、単項RPCと3つ(サーバ/クライアント/双方向)のストリーミングRPCがあります。 詳しくはRPC life cycleをご覧ください。 本記事ではServer str
PostgreSQLの「effective_io_concurrency」という設定をご存知でしょうか? PostgreSQLのドキュメントには、 「PostgreSQLが同時実行可能であると想定する同時ディスクI/O操作の数を設定します」 とあります。 とりあえず有効にしておけば同時実行でなんか速そう!という印象をうけるのですが、そんなことはありません! PostgreSQL9.6以下の場合はオフにした方がパフォーマンスが良いケースが多いと思います。 今回はなぜオフにした方が速いのか、みていきたいと思います。 ※PostgreSQL10以降で実装されたパラレルビットマップヒープスキャンにはあてはまりません ※常に「オフ」が最適設定ということではありません。システム構成・データ傾向次第です ※検証環境はCentOS7、PostgreSQL9.6です effective_io_concurr
はじめに ご無沙汰しております。田中です。今回は jq と JMESpath について書きます。 AWS CLI の返り値の JSON は、以下のように --query オプションに JMESPath を指定して処理できます。 # 名前が test- で始まる最新の AMI の id を取得 $ aws ec2 describe-images \ --filters Name=state,Values=available Name=is-public,Values=false \ --query "Images[?starts_with(Name, 'test-')] | sort_by(@, &CreationDate) | reverse(@)[0].ImageId" "ami-xxxxxxxxxxxxxxxxx"
こんにちは、松浦です。 最近業務にて gRPC を使ったアプリケーションの開発をしています。開発をしていて少し困るのは、動作確認を行うのにどうやって gRPC サーバの RPC メソッドを呼び出すか、という点です。REST のエンドポイントの場合、curl やブラウザや Postman のようなアプリケーションでリクエストを送れましたが、gRPC の場合は、新たなツールを導入する(あるいは、クライアント側のテスト用コードを書く)ことになります。そこで、業務の効率化も兼ねて、お手軽に動作確認を行うのにどのようなクライアントツールがあるのか、調べて、触って、まとめてみることにしました。 前提 本記事では CUI のツールのみを取り上げます(GUI ツールもいくつかありますが、記事の分量と余力の問題で今回は取り上げません……)。 動作確認を行った環境は Mac (OS X 10.14.4) です
こんにちは、松浦です。 シナジーマーケティングでは Kubernetes のマニフェスト管理については kustomize を主に利用しています。今回は、 kustomize にまつわる内容を扱います。 kustomize には、 kustomize build 時にリソース定義の生成を行う generator (ConfigMapGenerator, SecretGenerator)や、変換処理などを行う transformer (コンテナイメージ名やタグを変える images やラベルを各リソースに付与する commonLabels など)が用意されています。デフォルトの状態でも十分に使い勝手の良いものですが、ときに generator や transformer の振る舞いに変更を加えたり、新たに処理を追加したいこともあるかもしれません。そのような場合にどういう手段が用意されているの
WEBアプリケーションサーバを構築する際、ELBやApacheやnginxなど何らかのリバースプロキシを前段に置くケースは非常に多いと思います。 今回は、筆者が各種リバースプロキシで1回ずつ位ハマった気がする、KeepAliveタイムアウト問題について解説します。 まずはHTTPにおけるKeepAliveについて簡単に説明します。 HTTP1.1の持続的接続(Persistent Connections)の根幹をなす機能で、1つのTCPコネクションで複数のリクエスト、レスポンスをやり取りする仕組みです。 このような機能が求められた背景には、TCP接続時の3Wayハンドシェイクのような負荷の高い処理を減らしたい、という目的があります。 単純化したシーケンス図で表すと、以下のようなフローになります。 KeepAliveタイムアウト サーバー側は次のリクエストを待つ際、いつ送られるかわからないリ
こんにちは、ゲスト参加の中山です。 まもなく Chrome や Firefox にて 3rd-party Cookie の扱いが変更される見込みです。 SameSite 属性(draft-west-first-party-cookies-07)への対応により Cookie にクロスサイト利用か否か(= 3rd-party Cookie 利用か否か)の明示を要求 明示的な SameSite 属性なしで Set-Cookie された値は 3rd-party Cookie として利用できなくなる これにより Cookie の目的の透明性 + ユーザーへのコントロール提供 + CSRF への対策を実現 仕様には HTTP Cookie Header 送信時の振る舞いについて定義されてますが 3.2. Semantics of the "SameSite" Attribute (Non-Normat
これは TECHSCORE Advent Calendar 2018 の18日目の記事です。 今回はPostgreSQLを運用する上で絶対に無視できない「VACUUM」について、その機能と役割を確認していきたいと思います。 VACUUMとは VACUUMは、テーブルの実体となるファイルの中から、不要領域を探索し、再利用可能な状態にしていくものです。VACUUMを全く実行しない場合、ファイルサイズが増え続け、パフォーマンスの低下、ディスクスペースの圧迫へとつながります。 AUTO VACUUM機能 PostgreSQLには「AUTO VACUUM」機能が搭載されており、自動で随時VACUUMが実行されるため、多くの場合問題となりません。しかし、AUTO VACUUMも万能ではありません。テーブルによって追加・更新・削除の頻度、規模は様々であるため、AUTO VACUUM機能によるVACUUM
これは TECHSCORE Advent Calendar 2018 の14日目の記事です。 GitLab CIにてコンテナ化したアプリケーションのCIを行った中で得た知見のまとめです。GitLab CIのYAMLは書いたことがあって、Dockerを使ったアプリケーションのCIを始めたい人を読者として想定しています。GitLab CI環境でのDockerの使用準備は、公式ドキュメントや記事が簡単に見つかるのでそちらをご参考に。 GitLab CIでのDocker使用開始手順について 公式ドキュメント: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html Qiita: https://qiita.com/1000k/items/64b0cc8acdd964112b00 環境変数の設定 CI環境においてGitやDockerイ
こんにちは。松本です。 Kubernetes コントロールプレーンの HA(High Available) 構成は二通りありますが、公式ドキュメント内に次のような記述があり、いずれの方式でも 3 台以上のマシンでクラスターを構成することが求められています。 For both methods you need this infrastructure: Three machines that meet kubeadm’s minimum requirements for the masters (中略) For the external etcd cluster only, you also need: Three additional machines for etcd members この、最小が "three" である必要性は、どこからくる制約なのでしょうか。"two" じゃだめなのでし
こんにちは、稲垣です。 ソフトウェアが仕様通りに動くかを確認する場合、どのようにテストケースを作成していますか? テスト技法にはさまざまな種類がありますが、今回はデシジョンテーブルについて説明します。 1.デシジョンテーブルって何? デシジョンテーブルとは、入力データや入力条件の組み合わせに対する動作や処理の出力結果を表にしたものです。 複数の条件が重なり合ったテストをするためには、仕様をしっかりと把握することが重要になります。 デシジョンテーブルを使うと、自然言語より視覚化でき、仕様の整頓もできます。 デシジョンテーブは下記5つから成り立ちます。 1.条件の一覧(条件記述部) 2.結果の一覧(動作記述部) 3.条件の組み合わせ(条件指定部) 4.組み合わせに対応する結果(動作指定部) 5.規則 1.条件記述部 入力条件や入力データを記述します。 2.動作記述部 条件に合わせて実行する動作
こんにちは。インフラエンジニアの末廣です。 TECHSCORE Advent Calendar 2018 22日目の記事です。 2018年9月に RFC 8461 - SMTP MTA Strict Transport Security (MTA-STS) が発行されたので設定してみました。 MTA-STS が生まれた背景 MTA間の通信暗号化には STARTTLS が用いられていますが、STARTTLS は日和見暗号化であるため、送信側と受信側との間で暗号化について合意に至らなければ平文での通信になってしまいます。したがって STARTTLS は通信路上の盗聴に対しては強固なセキュリティを提供できますが、次のように STARTTLS の使用を迂回させる攻撃には無力です。 EHLO コマンドへの応答から "250 STARTTLS" を削除することにより、受信側が STARTTLS に対応
こんにちは、白川です。 今回は、 ORY Hydra を使った OpenID Connect Provider の構築について紹介します。 マイクロサービスにおける認証・認可 モノリシックな Web アプリケーションでは、通常はそのアプリケーション自体がユーザ情報を保持し、ユーザの認証とセッションの生成を行ないます。 マイクロサービスを構成する各サービスが、モノリシックな Web アプリケーションと同じようにユーザ情報を保持すると、利用するユーザはサービス間を移動する際に別々にログインしないといけなくなります。 しかし、単純に各サービス間でユーザ情報やセッションをデータベースで共有する方法をとった場合、ユーザが認証されているかを知るために、すべてのサービスがデータベースにアクセスしないといけなくなってしまいますし、データベーススキーマ更新の際は全サービスに影響が出てしまいます。 そのため、
SpringBoot/kotlin/Gradle/Kubernetes環境下に比較的汎用的な構成でマルチプロジェクト構成のサンプルプロジェクトを作りました。 以前書いた、 EC2のマイクロサービスをKubernetesに移行した話 の経験を踏まえて、今ゼロから作るならこんな感じ、というのを形にしたものです。 Production-Ready とまではいかないまでも、そのベースにできる程度には気を利かせてみたつもりです。 ソースはgithub にアップしてあります。 プロジェクト構成とbuild.gradle マルチプロジェクト 業務でサーバを含むようなアプリケーションを作るときは何も考えずマルチプロジェクトにしておくことをお勧めします。経験上、リポジトリ内に追加でプロジェクトを作成したくなるケースはかなり多いです。 ライブラリの依存関係管理にDependencyManagementを使う
JDBCのsetFetchSizeメソッドはご存知でしょうか? 通常、クエリの結果はResultSetにすべてロードされます。このため、大量のレコードを取得するようなクエリではOutOfMemoryErrorが発生してしまいます。 このような場合に有効なのがsetFetchSizeです。 たとえば、クエリ発行の前にsetFetchSize(1000)とすると、1000件ずつResultSetにとりこまれるようになり、OutOfMemoryErrorを回避することが可能です。 (もちろん、搭載メモリ量、1レコードあたりのサイズによります!) しかし、ここに罠がありました。。。 setFetchSizeを使用しているにもかかわらず、全件がResultSetにロードされてしまう場合があるのです。 JDBCドライバごとにsetFetchSizeの挙動がかなり違っているので、はまりどころです。 今回
家の窓を閉めきっていると空気が悪くなりますが、一体どんだけ空気悪いのかなんとなく気になっていました。 とはいえ計測器は高額。センサーモジュールを探して自作することにしました。 寒い時期ですが、二酸化炭素濃度がわかれば最短の換気もできるかもしれません。 完成品はこちら とりあえず、どういったものになったか先に出してしまいます。 ユニバーサル基板に各モジュールをはんだ付けして、クラフト紙でケースを作りました。 使用する部品 Arduino Nano 互換機 MH-Z19 (二酸化炭素センサー) 約2,100円 0.96インチ 128x64 OLED ディスプレイ 約300円 購入先などは後に載せておきます。 接続方法 見たままです。 クリックして、拡大して見てください。 MH-Z19 は、ブレッドボードなどのピッチとは合っていないようなので、若干"ハの字"になるかと思います。 また↑に示されて
あけましておめでとうございます、ゲスト参加の中山です(写真はお正月の雰囲気を出してみました)。 少数派ですが、世の中にはイラストや UI のスクリーンショットが JPEG 形式で共有されると残念な気持ちになってしまう人々が存在します。 目視困難なノイズを心で感じたり、ささやかな省サイズ化の余地を惜しんでしまうのがその理由です。多数派にとっては瑣末な話ですが …… そんなわけで今回は上述「残念な気持ち」の可視化を試みたいと思います。 なお、記事内で利用する画像は自前で用意したものです。 写真の場合 最初に、冒頭の写真のエンコード品質とファイルサイズの関係をみてみます。 グラフの赤線は JPEG エンコード、オレンジ線は WebP エンコードです。 また、横軸が JPEG / WebP のエンコード品質(99 ~ 1)、縦の主軸 + 実線がファイルサイズ、縦の第二軸 + 点線が元画像からの劣化
こんにちは。 TECHSCORE BLOG初参戦の中西です。 これは😺TECHSCORE Advent Calendar 2018😺の16日目の記事です。 皆さんはテスト駆動開発という言葉をご存知でしょうか? 開発に携わっている方は、一度は耳にしたことがある言葉だと思います。 今回は新人の私がテスト駆動開発を一から学ぶにあたり、基本的なところですが調べたことをまとめてみました。 これからテスト駆動開発について調べる人の参考になれば幸いです。 テスト駆動開発を学ぶきっかけ 私は開発の新人として、ソフトウェアのテスト業務から始めました。 テスト業務に関わる中で、得た知識を開発で活かせないかと考えるようになりました。 そこで先輩からアドバイスされたのが、テスト駆動開発です。 自分が身に着けたテストの知識を開発に活かせるこの方法は、私にとってまさに理想的な存在で、 調べてみようと強く思い、この
次のページ
このページを最初にブックマークしてみませんか?
『TECHSCORE - Java,SQLプログラミング技術解説』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く