サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
www.techscore.com
これは TECHSCORE Advent Calendar 2018 の6日目の記事です。 こんにちは、吉田です。 2018/10/29にGoogleからreCAPTCHAの新バージョンreCAPTCHA v3が正式公開されました。 以前、Invisible reCAPTCHAをこのブログでご紹介したこともあり、今回もSynergy!のフォームにreCAPTCHA v3を適用してみました。 とうとう画像選択がなくなった!? reCAPTCHA v3の特徴として、画像選択が完全に無くなりました。もう「店舗も道路標識も粗すぎて見えないっ!!!」となる画像を探さなくて良いのです。 では、どうやってbotによるアクセスか判断をするのかというと、閲覧者のページ内での行動をスコアとして算出しbotを判別します。reCAPTCHA v3を配置したページで閲覧者の動きを学習し、利用が増えるとともにスコアの
ユニオンファイルシステムとコピーオンライト Docker コンテナが軽量だと言われる理由のひとつが、ユニオンファイルシステムにあります。ユニオンファイルシステムは、複数のファイルシステム上のディレクトリやファイルをレイヤとして重ね合わせ、それらを仮想的に一つのファイルシステムとして扱う技術です。 Docker は、このユニオンファイルシステムを使い、イメージを複数の読み取り専用レイヤのスタックとして扱います。コンテナ内ではさらに、読み書き可能なレイヤを一枚重ねています。 コンテナ上の読み書き可能なレイヤをコンテナレイヤと呼び、イメージを構成する読み込み専用レイヤをイメージレイヤと呼びます。 この構成により、同一ノード上で動く複数のコンテナが、Docker イメージを構成するイメージレイヤを共有することを可能にし、トータルとしてのコンテナサイズを最小化しているのです。 共有しているイメージレ
これは TECHSCORE Advent Calendar 2018 の5日目の記事です。 はじめに 世の中がマイクロサービスの話題で溢れている中で、トランザクションはどうやって実現されているのか不思議だったので調べてみました。 マイクロサービスでは複数のAPIでのやり取りとなるため、これまで使っていたデータベースのようなトランザクション(BEGIN-COMMIT)が使えません。 解決策の一つにSagaパターンがあります。 Sagaパターン Sagaパターンとは、複数のサービスにまたがるビジネストランザクションをSagaとして実装します。Sagaは一連のローカルトランザクションです。 たとえば下記の図のような構成を考えます。 このとき、Service A におけるSaga Aの成功と失敗を次のように定義します。 成功 : Transaction X、Transaction Y、Transa
これは TECHSCORE Advent Calendar 2018 の4日目の記事です こんにちは、馬場です。年齢なのかなんなのか、エンジニアリングのステージにたどり着く前の、おおきくぼんやりとした仕事を任されることが増えた、2018年はそんな一年でした。このふんわりを言語化できるようにならないとなあ、と思いつつ、何か考える上でのフレームワークみたいなものがないものかともがいていたらこの記事にたどり着きました。"Machine Learning Problem Framing " ......ここに解があるはず?!読んでみます。 はじめに まずは、このコースの目的が「機械学習の問題を定められるようにする」ことだと言っています。機械学習が解くべき問題、他のプログラムで解いた方がいい問題を実例をあげて解説していくようです。楽しみ。 一般的な機械学習の問題 はじめに、「教師あり学習」や「ラベル
これは TECHSCORE Advent Calendar 2018 の2日目の記事です。 React で無邪気に開発をしていると、やたらと render() が呼ばれるのが気になります。 PureComponent を使うと render() の呼び出しを少なくできることは、なんとなく知ってはいるのですが、そもそもどういう場合に render() が呼ばれるのか、 State や Context、 はたまた Redux を使ったときに render() の呼ばれるタイミングがそれぞれどう違うのか、いまいちよくわかっていません。いろいろたっぷり試してみました。 目次 準備 State Vanilla State PureComponent Props に Allow Function を直接渡す Context Vanilla Context PureComponent 独自の Provi
こんにちは。Synergy! 開発チームの松本です。 前回の記事で、マイクロサービスアーキテクチャスタイルが持つ 9 つの特徴について解説しました。今回はその流れで、当社がここ数年、マイクロサービスアーキテクチャスタイルを実践してきて直面した課題と、現時点でのその対策をご紹介します。 サービス間のコミュニケーションが失敗する オンプレ環境はモノリス化しやすい サービスをコンテキスト境界できれいに分割することが難しい 特定のサービス強化にリソースを集中投下したいケースがある アラート対応による割込みで集中力も開発時間もうばわれる サービス間通信における結合度をいかに下げるべきか Synergy! に関するマイクロサービスへの取り組みをご紹介した過去記事はこちらです。 ローンチから10年を経たSaaSシステム開発が抱える問題にどう取り組んだのか (2016/07/08) martinfowle
こんにちは。Synergy! 開発チームの松本です。 以前の記事でも少し触れたのですが、当社シナジーマーケティングのプロダクトである Synergy! は、2015 年以前に作られたモノリスと、それ以降に作られたマイクロサービスのハイブリッド型として稼働しています。 この数年、マイクロサービスを実践してきてつくづく感じているのは、全てのチームがマイクロサービスアーキテクチャスタイルの本質を理解した上で開発や運用を行うということの難しさです。「分散されたモノリス」なんていう話も聞きますが、これもやはり、本質を理解しないままマイクロサービスを実践した例です。 2014 年に書かれた martinfowler.com の記事 "Microservices" は、マイクロサービスアーキテクチャを 9 つの特性に分解してその本質を述べた素晴らしいドキュメントです。これをチームの教育に使うことで前述の
つい先日の8月22日に、Amazonから公式にDynamoDBのDockerイメージが公開されました。 新しいドッカーイメージで Amazon DynamoDB ローカルをさらに容易に amazon/dynamodb-local - Docker Hub ちょうどDynamoDB Localを利用していたところだったので、早速試してみました。 とりあえず立ち上げる $ docker run --rm amazon/dymamodb-local Initializing DynamoDB Local with the following configuration: Port: 8000 InMemory: true DbPath: null SharedDb: false shouldDelayTransientStatuses: false CorsParams: *
(Cypher789 / creativecommons) こんにちは、吉田です。 今日は、Google Invisible reCAPTCHAの導入を「やってみた」投稿です。 フォームへのSPAM登録にお困りで、「reCAPTCHA入れると見栄えが変わるなぁ」と感じておられる方や、 「いつかウチのサイトが攻撃されるかも」と考えておられる方へのご参考になればと思います。 「私はロボットではありません」への苦手意識 突然ですが、私はreCAPTCHAの「私はロボットではありません」チェックをやや苦手に感じています。 同意を強要されているような感覚と、チェックボックスがぐるぐる回るあいだ合格発表を待つような気持ちになるからです。 そして、割と高い頻度で認証が必要となり、不合格にされたようで少しがっかりします。 そんな私にうってつけ?なのかどうか、今回そのチェックが不要なInvisible re
これは TECHSCORE Advent Calendar 2017 の1日目の記事です。 SPA(SinglePageApplication)を作成する際には避けては通れないルーティング。 ReactではReact Routerを使うことで、簡単にルーティングを実現することができるのですが、画面遷移に使用するhistoryオブジェクトの使い方が初見では少し難しいように感じます。 ここでは、React Routerの実装を見ながら、historyオブジェクトについて探っていきます。 なお、現時点で最新のv4.2.2の実装を参照しています。 その前に React Routerを使う場合、以下のように「BrowserRouterをRouterとしてimportする」ことが多いようです。React RouterのEXAMPLESでもそうなっています。 import { BrowserRouter
これは TECHSCORE Advent Calendar 2017 の 11 日目の記事です。 以前、CPU 使用率がボトルネックになっている処理を改善するために、Java VisualVM を利用して高負荷な処理を見つけ出しました。 非常に便利なツールなので、サンプルプログラムを用いて簡単に Java VisualVM の使い方を書いてみます。 ここでのゴールは、CPU 使用率の高いメソッドを見つけることです。 Java VisualVM とは 公式サイトより。 Java VisualVMは、指定されたJava仮想マシン(JVM)でJavaテクノロジベースのアプリケーション(Javaアプリケーション)が実行されているときに、そのJavaアプリケーションに関する詳細な情報を提供する直感的なグラフィカル・ユーザー・インタフェースです。 アプリケーションのメモリ使用率・CPU使用率・スレッド
こんにちは。寺岡です。 これは TECHSCORE Advent Calendar 2017 の14日目の記事です。 PostgreSQLのIO問題を調査する機会があり、RDBMSのIO問題を取り巻く状況についてまとめてみました。 本記事は一般的なLinux+PostgreSQL環境を対象としています。 RDBMSとACID PostgreSQLをはじめとした多くのRDBMSはトランザクションの信頼性を強く保証するシステムです。 この特性は原子性(Atomicity) 一貫性(Consistency) 独立性(Isolation) 永続性(Durability) の頭文字を取りACIDと呼ばれています。 RDBMSにおけるACIDとは、全利用者(クライアント)が実施した操作(クエリ)が、実施された順番で完了することが保証(トランザクション、レプリケーション)されることを表します。 トランザ
こんにちは、岡崎です。 この記事は TECHSCORE Advent Calendar 2017 の 19 日目の記事です。 今回紹介するのは「異なる言語から作られた2つの単語ベクトル空間をつなげる変換行列を学習する」という話です。 これは元々、機械翻訳で必要な「単語・フレーズ辞書」を自動的に生成するために Google の Tomas Mikolov によって提案されました。*1 単語ベクトルをつなげる変換行列とは 機械翻訳とは端的に言うと、片方の言語の言葉を他方の言語の言葉に変換することです。 変換には2つの言語間の単語やフレーズをマッピングした辞書 (日本語「猫」:英語「cat」などの意味対応辞書) を用いますが、網羅性がある良い辞書を作るのはとても手間がかかります。*2 そこで Mikolov は自動的にこの辞書を生成することができないかと考えました。 Mikolov は様々な言語
こんにちは横部です。 これは TECHSCORE Advent Calendar 2017の23日目の記事です。 先日、Google Homeを購入し、色々触ったりIFTTTと連携したりしてみましたので今回はそれについて紹介しようと思います。 Google Homeとは Google Homeとは、日本では2017年10月にGoogleから販売されたスマートスピーカーです。 「OK, Google」または「ねえ、グーグル」と話しかけることで起動して、音声で様々なことを実行できます。 スマートスピーカーとは主に音声操作に対応したAIアシスタントのことです。 機械学習技術の発展により、従来の音声アシスタントに比べて、より正確な音声認識と柔軟な解釈や受け答えができるようになったために注目を浴びています。 2017年12月現在は、Google Homeの他にAmazonのEchoやLINEのClo
こんにちは、河野です。 これはTECHSCORE Advent Calendar 2017 の 25日目の記事です。 最近、Go言語用のAWS SDKであるaws-sdk-goを使用して、CloudWatch Logsのログイベントをダウンロードするツールを作りました。aws-sdk-goを本格的に使ってみるのは初めてだったのですが、いくつか気になったことがあったので、まとめてみました。 awsパッケージに目を通しておく いろいろと実装を始める前に、まずはgithub.com/aws/aws-sdk-go/awsパッケージに目を通しておいたほうが良いです。このパッケージでは、便利な関数や型が提供されています。 http://docs.aws.amazon.com/sdk-for-go/api/aws/ 必須なのが値とポインタの変換用の関数群です。 例えば、 func String(v st
鰺坂です。 これは TECHSCORE Advent Calendar 2017 (略してテットカ) の12日目の記事です。 Firefox Quantum 先月の 14 日、Firefox のバージョン 57 (Quantum) がリリースされました。 かなり高速化されたとのことですが、旧式のアドオンが全く使えなくなっています。 その結果、Firefox の UI が完全に変える Vimperator・KeySnail・Pentadactyl といったアドオンは全滅です。 これらアドオンはアドオン自身が(プラグインと呼ばれていましたが)アドオンシステムをもっており、当然のことながらこれらも使用できません。 あのプラグインを再び 私は Vimperator を使っていて、さらにそのプラグイン auto_source.js も使っていました。 auto_source.js は、指定した Ja
こんにちは。平奥です。 これは TECHSCORE Advent Calendar 2017 の 24 日目の記事です。 フロントエンドエンジニアが常日頃システムに対して注意を払わないといけないところ、今回はパフォーマンスとメモリリークについて記載していきたいと思います。 開発初期の頃はあまり気にしないことが多いパフォーマンスですが、機能追加を繰り返していくことにより、表示するデータ量が大量になっていたりして、気づくと表示するのに数十秒かかる画面があるというようなこともあったりします。 特にフロントエンド側はクライアント側のマシンスペックに依存しますので、システムがどういうユーザがどのようなスペックのマシンを使用しているかなども調査して表示などのパフォーマンスを維持しないといけません。 また使用するブラウザによって JavaScript エンジンが異なり、パフォーマンスに雲泥の差が出ること
こんにちは。インフラエンジニアの射場です。 これは TECHSCORE Advent Calendar 2017 の16日目の記事です。 インフラエンジニアのお仕事ととても馴染み深い vim ですが快適に使えていますか? vim は最低限使えれば作業自体はできるから無問題!とお思いのあなた! ちまちまめんどくさい時間のかかる作業を圧倒的に効率アップさせ、イケてるエンジニア感を味わいたくはありませんか? 今からご紹介する4つのテクを身につけるだけであなたもイケイケエンジニア! インフラエンジニアが vim を使う時にありがちなイライラ&ゲンナリなシーンを例にテクをご紹介していきます。 単語を消す 行全体を消したい時はとりあえず、dd と打っておけば楽!と知っている人でも 1単語消したい時は矢印キーを連打→ i を叩いて挿入モード→ BSキーを連打…… なんてしていませんか? つらい方法 愚直
こんにちは、増田です。 これはTECHSCORE Advent Calendar 2017 の 20日目の記事です。 僕はシナジーマーケティングに 2006年に新卒で入社し、Webアプリケーションエンジニアとしてアプリケーションを創り続けてきました。受託開発、研究開発、プロダクト開発、社内スタートアップなど様々なプロジェクトに関わってきて、今はエクメルンというメール配信サービスの開発を担当しています。 エクメルンは 2016年 4月にシナジーマーケティングの社内スタートアップとしてチームが結成され 9月にはローンチ、その後改良を重ねて 2017年の 3月にUIや機能を抜本的に強化したメジャーバージョンアップを行いました。メジャーバージョンアップ後の振返りMTGで、プロダクトオーナーがこう言いました。 「利益を生むプロダクトをつくることに加え、利益を生むプロダクトのレシピをつくることも僕たち
はじめまして、神原です。 これは TECHSCORE Advent Calendar 2017 の17日目の記事です。 今回は少し毛色が違いますが「スマホ向けHTMLメール配信」について書かせていただきます。 わたしは普段Webサイトの構築やHTMLメールの作成などをしています。 その中で最近特に多い相談が「スマホにHTMLメールを送りたい」というものです。 スマートフォンではHTMLメールは見られるものだと思われがちですが、実際は下記の通りHTMLメールが見られるもの・見られないものがあります。 iPhoneメールアプリではHTMLメールは見られます。 iPhoneメッセージアプリではHTMLメールは見られません。 Androidデフォルトメーラー*1では、HTMLメールを受信した際、下記の4パターンに分かれます。 HTMLメールを受信できる機種 HTMLメールを受信しても画像を表示でき
これは TECHSCORE Advent Calendar 2017 の8日目の記事です。 今回は、Load Average は単純に平均をとっているわけではないよ、という話をします。 はじめに バッチサーバのように、ある時間帯だけ一定の CPU 負荷がかかるようなサーバを運用していると、Load Average のグラフがこんな形になるのをよく見かけます。 このグラフは CentOS 6 (Kernel 2.6.32-696.16.1.el6.x86_64) のサーバで 11:05 から 12:00 までの間、CPU 1コア占有する負荷をかけたときのものです。3本の折れ線グラフはそれぞれ過去 1, 5, 15分間の平均負荷です。平均をとる期間が長くなるほどグラフの立ち上がり・立ち下がりが緩やかになる様子が見てとれます。 次のグラフは 11:00 から 11:30 までを拡大したものです。
これは TECHSCORE Advent Calendar 2017の7日目の記事です。 背景 こんにちは。土屋です。 皆さんはサーバー監視のツールとして人気が上がってきている、 Prometheus をご存知でしょうか。 どのくらい人気か、Google トレンドで他の監視ツールと合わせて調べてみました(※)。 ※"[監視ツール] monitoring" で検索しています 図から見てもわかる通り、Prometheus のバージョン 1.0 が出てから現在まで右肩上がりになっています。 これは使ってみなければ!ということで、Prometheus を使ってサーバー監視を設定してみました。 しかし私はほんの1ヶ月前まで全くサーバー監視をしたことがなく、設定周りで慣れぬこともあり、環境構築に思いのほか時間がかかってしまいました。 基本的な監視方法で、かつ Prometheus や Alertman
こんにちは。横部です。 これは TECHSCORE Advent Calendar 2017 の4日目の記事です。 今回は「RailsでDBからCSVエクスポートする時に高速かつ低負荷な処理方法」についてお話しさせていただきます。 使用したバージョンは以下の通りです。 Ruby : 2.2.4 Rails : 5.1.4 CSV.generate と each でCSV生成 RailsでCSVエクスポート(ダウンロード)機能を実装する際は、以下のような処理を書くことが多いかと思います。 csv1 = CSV.generate do |csv| csv << User.column_names User.all.each do |model| csv << model.attributes.values_at(*User.column_names) end end File.open("./
こんにちは。梶原です。 これは TECHSCORE Advent Calendar 2017 の2日目の記事です。 Amazon Web Service を利用していて、久しぶりに あらん限りの声で「 (人''▽`)ありがとう☆ 」と叫びたくなった出来事がありました。 クリスマスは感謝の季節! あまりにも嬉しかったので、記事に残しておくことにしました。 CLI コマンド「presign」に関する記述は記事の中ほどです。こちらからジャンプしてください。 目次 困った、S3 上にあるファイルを渡したい、けど… 以前はコーディングが必要だったけど、今は… シンプルなコマンド「presign」 情報掲載が行き届いた公式ドキュメントたち 感激しながら考えたことと、まとめ 困った、S3 上にあるファイルを渡したい、けど… photo credit: professor.jruiz FlickrCC v
(Eugene Onischenko / Shutterstock.com) こんにちは、中山です(写真は私ではありません)。 以前の 3rd party Cookie いただきます にて Parasite Cookie の場合、クロスドメインでトラッキングできないことが(業者側の)課題です。 しかし Super Cookie と呼ばれる方法ならばクロスドメインでのトラッキングも可能です。 こちらについては別途ご紹介します。 と結びました。 そこで、今回は Super Cookie と呼ばれる技術についてご紹介したいと思います。 例えばこんな Super Cookie Super Cookie とは、各種擬似 Cookie 技術の総称で、Flash の LSO を利用したシンプルな実装から、ブラウザの閲覧履歴(参考 : css history knocker)や Criteo の ITP
こんにちは、中山です(写真は私ではありません)。 以下の記事で Parasite Cookie という造語を用いましたが マーケターの危機? ITP 時代にアドレサブル広告を活用すべき理由 3rd party Cookie いただきます 韻を踏んで Cuckoo Cookie なんてのも悪くないですね。 写真のようにカッコウが他の鳥の巣に托卵する様は、我ながら的を射た例えかと思います。 呼称はさておき Parasite Cookie の動作でふと気になったことがあります。 レアケースだとは思いますが、既に Cookie DB に保存されている [名前, 値] と同じ名前で Parasite Cookie が書き込まれた場合にはどうなるのでしょうか !? 値が上書きされてしまうとしたら本当に迷惑な Parasite Cookie ですよね。 そこで、今回は Cookie の上書きについて考察
こんにちは、平奥です! 朝の通勤時に TechCrunch を読むのですが、こんな記事を見つけました。 Death to C, ++ 業務では C や C++ を使うことが多く、確かにここに書かれているような、ポインターの扱いを間違って致命的なバグを埋め込むこともありましたが、シンプルさと移植性の高さ、メモリーを直接参照できたり、実行速度も速く、何でも実現できるイメージがあり、好きな言語でした。 しかし時代は変わり、新しい言語 Rust が出てきて、C/C++ で書かれたプログラミングが置き換えられているんだなぁとつくづく時の流れを感じました。 そこから Rust に興味を持ち始めました。ドキュメントも充実していて公式サイトまた日本語サイトもあり、学習するには最適な環境が揃っています。 Rust フロントエンドで使えないかな Rust フロントエンドで使えないかなとふと思いました。確か C
はじめまして、2016年入社の土屋です。 社会人になってからプログラミングを学び始めた初心者エンジニアです。 今回はGo言語のマスコットキャラクター「Gopher」の魅力についてお話します。 これは、TECHSCORE Advent Calendar 2016 の2日目の記事です。 by Renée French なぜGopher? エンジニアなら一度は見たことがあるかもしれないGo言語のキャラクター「Gopher(ゴーファー)」。 by Renée French Gopherについて調べてみるといろいろと面白かったので、今回はGopherの魅力について3つ、ご紹介したいと思います。 Gopherとは 魅力についてお話しする前に、まずはGopherについて軽く紹介します。 by Renée French 名前:Gopher(ゴーファー) 性別:不明 デザイン:Renée French Go
こんにちは、平奥です! 最近のフロントエンド開発では、シングルページアプリケーション( SPA )が主流になってきており、それを実現するために JavaScript のフレームワークが欠かせないものとなってきました。 React、AngularJS、Angular、Vue.js、Backbone.js、Riot.js、Aurelia.js、Ember.js... いろんなフレームワークがここ数年で世の中に出てきました。それぞれのフレームワークで、特徴や他のフレームワークより優れている機能、学習コスト、メンテナンス性、開発効率が違ってきます。 そこで今回は最近勢いのある Vue.js で簡単なアプリケーションを作ってみて、今使っているフレームワークとどう違うのか比較してみようと思いました。それでは早速いってみましょう! 準備 まず開発環境を整えます。vue のインストールから始まり、今回はお
次のページ
このページを最初にブックマークしてみませんか?
『TECHSCORE - Java,SQLプログラミング技術解説』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く