![http://blog.rakugakibox.net/entry/2015/07/27/spring-boot-with-redis](https://cdn-ak-scissors.b.st-hatena.com/image/square/124987bc7a50606d0e704c9fbeb3b1dd2dbd627c/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Fakihyrox%2F20150724%2F20150724213608.png)
はじめに こんにちは。コミュニケーションアプリ「LINE」の Android クライアントチームの石川です。 先日、コードの可読性についてのプレゼンテーション (https://speakerdeck.com/munetoshi/code-readability) を公開しました。 今後、このプレゼンテーションについてのちょっとした解説を、本ブログ上で不定期に連載していきます。 今回は、このプレゼンテーションの概要と、最初の章 "導入と原則" についての解説を行います。 このプレゼンテーションについて このプレゼンテーションは、コードの可読性を向上するためのアイディアをまとめたもので、以下の8つの章からなります。 導入と原則: 可読性の高いコードの重要性、プログラミング原則 命名: 名前の示す内容、文法、語の選択 コメント: ドキュメンテーション、インラインコメント 状態: 状態遷移の管理
はじめに 第1回では、NoSQLにおけるHBaseの位置付けとそのアーキテクチャについて解説しました。HBaseはスケールアウトが容易なアーキテクチャを持ち、高い処理性能を実現できます。しかしHBaseとRDBにはデータモデルや機能に多くの違いがあるため、RDBをそのままHBaseに置き換えることはできません。 今回は、HBaseの導入を検討する際の参考情報として、HBaseの長所と短所およびHBaseに適したユースケースを紹介します。また、HBaseを導入する際の推奨マシン/ソフトウェア構成、およびシステム設計のノウハウも紹介します。 HBaseとRDBの比較 RDBに対するHBaseの最大の利点は処理性能の高さです。しかし以下のような理由から、RDBをそのままHBaseに置き換えることはできません。 HBaseはKVS(キーバリューストア)であり、RDBのデータモデルとは異なる 問い合
prestoでクエリを書いてあとでバッチ化するためにhiveに書き換えるというのはよくある話なので変換ルールをメモっておく。 prestoの方が機能的にリッチなんですが、安定性を考えるとバッチではhiveをうちの環境では使ってます。 一番よくつかうのがjson_extract_scalarをget_json_objectに変えることですね。2番目と3番目はそんなに使わないかも。 presto hive json_extract_scalar get_json_object cross join unnest lateral view explode mod pmod ただprestoとhiveで似ているけれど微妙に挙動が違うケースがあります。 例えばprestoのurl_extract_hostとhiveのparse_url(..., 'HOST') 前者はjava.net.URIを使って
Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは本当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反
これはLINE Advent Calendar 2018の14日目の記事です。 LINEの上村です。今日は文字列です。 はじめに トライ (trie)は文字列の集合を索引化し高速な検索を可能にするデータ構造であり、領域効率や高速性を向上させた多様なアルゴリズムが提案され種々の実装が公開されています。 IPアドレスの検索、形態素解析器における辞書からの候補の列挙、キー入力時のオートコンプリートといった有益な応用があり、文字列業界以外でもご存知の方は多いかもしれません。 この記事で紹介するsftrieは簡単で効率よい新たなトライ表現とそのC++実装です。 主な特徴は以下の通りです: 大きなアルファベットをサポートします。また、いわゆるNULL文字も必要としないため、バイト列やASCIIコードからUnicode、単語等に割り振ったIDのような一般の整数まで、様々な値を文字型として扱えます ノード
Javaのmock用ライブラリは探せば色々あるが、一番よく使われてそう(自分調べ)ってことでMockitoを使っている。 http://mockito.org/ Mockitoはそのロゴからいっても「モキート」「モッキート」と読むのが正しいのだろうけど、心の中ではいつでも「モック伊藤」「モック伊藤」と呼んでしまう。 それはさておき、Mockitoについて日本語で書かれた記事は「mock()でモックしてverify()でベリファイするんやで〜」くらいで留まっているものが多そうに見受けられたので、新し目の機能を使ってこういう風に書くのもよさげかな、とここに記しておく。 参考: Mockito (Mockito 2.0.33-beta API) mock()ではなく@Mock, spy()ではなく@Spyをつかう 以下のようにmock()メソッドを使ってmockを作ることも出来るのだが、 MyS
SLF4J とは何か。これ、わりと分かりづらい人もいるかと思います。SLF4J の FAQ にそのものズバリな回答があるんですけど、 What is SLF4J? SLF4J is a simple facade for logging systems allowing the end-user to plug-in the desired logging system at deployment time. SLF4J って何? SLF4J っていうのは、デプロイするタイミングで、使いたいロギングシステムをプラグインできるようにする簡易なロギングシステム用 Facade だよ (意訳) SLF4J っていうのは、デプロイする時点ではじめて、使いたいロギングのライブラリをバインドできるようにする Facade ライブラリだよ SLF4J FAQ ウワッ、何をいっているのかさっぱりわからない
By Hokuto Kagaya / Akira Iwaya | 2018.08.13 2021.11.04Hokuto Kagaya: 2016年入社。LINE GAME プラットフォームのチームにおいてサーバサイドの開発に従事。/ Akira Iwaya: LINE LIVEのAndroidアプリを作っています。趣味ではリマインくんというBOTを作っています。 はじめに LINE Engineering Blogをご覧の皆さまこんにちは!今日の記事は2名の連名によってお送りします。LINEでゲームプラットフォームを開発しているKagayaと、ライブ配信サービスLINE LIVEのAndroidアプリを開発しているakiraです。こちらはLINE Engineering Blog「夏休みの自由研究 -Summer Homework-」の9日目の記事です。 皆さん、Kotlin使ってますか
はじめに ネットワークに接続されたセンサ機器の普及により、IoT(Internet of Things)が注目を集めています。IoTでは様々なセンサ機器が膨大なデータを生成するため、システムが管理するデータ量は急激に増加しています。このような膨大なデータを管理するためのデータストアとして、RDBと比較して高い性能とスケーラビリティを持つNoSQLが注目を集めています。 「Apache HBase」(以降、HBase)はNoSQLの1つで、センサ機器が生成する時系列データを管理するための有力なデータストアとして注目されています。本連載では、HBaseを用いたシステム設計のノウハウと、1,000万個のスマートメータから収集したデータによる性能検証の結果を紹介します。 今回は、まずNoSQLにおけるHBaseの位置付けを説明し、その後でHBaseの概要とアーキテクチャについて説明します。 NoS
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
株式会社ミクシィ 研究開発グループの前坂です。前回の記事でmemcachedは分散に長けた高速なキャッシュサーバであることが紹介されました。今回はmemcachedの内部構造がどう実装されているのか、そしてメモリがどう管理されているのかをご紹介します。また、memcachedの内部構造の事情による弱点も紹介します。 メモリを整理して再利用するSlab Allocationメカニズム 昨今のmemcachedはデフォルトでSlab Allocatorというメカニズムを使ってメモリの確保・管理を行っています。このメカニズムが登場する以前のメモリ確保の戦略は、単純にすべてのレコードに対してmallocとfreeを行うといったものでした。しがしながら、このアプローチではメモリにフラグメンテーション(断片化)を発生させてしまい、OSのメモリマネージャに負荷をかけ、最悪の場合だとmemcachedのプ
データ分析部でグノシーというニュースアプリのプロダクト改善を担当している @ij_spitz です。 今回はプロダクト改善のためにウォッチしておくべき7つの指標をSQLで算出してみます。 Gunosyではこれらの指標を、プロダクトに異常があった時に検知するため、また施策の効果検証といった主に2つの目的で使用しています。 簡潔にするため、ユーザーとログインの2つのテーブルを使った算出できる指標のみを対象としています。 また、これらの指標をどうやってプロダクト改善に役立てているのかということも少しではありますが、合わせて書いていきたいと思います。 DAU WAU(MAU) HAU 積み上げHAU 1ユーザーあたりのログイン回数 登録N日後継続率 登録日別N日後継続率 前提 今回のブログで紹介するSQLはAmazon Redshift上で動くSQLなので、MySQLやGoogle BigQuer
「Gunosy」の共同創業者である関喜史さんは、学生時代の長期インターンで力を蓄え、シリコンバレー見学で「何を作ったか」で評価される文化に触れた。 大学院に在学中、3人の同級生と情報キュレーションサービス「グノシー」を開発し、その事業化のためにGunosyを起業した。当時からビジネスと学術研究の両方を追求する姿勢を貫いている、その理由を聞いてみた。 高専から東大へ、インターンで実績を作る 関さんは、富山県で生まれ育った。中学時代にプログラミングと出会い、富山商船高等専門学校(当時、現在は富山高等専門学校)に進学し、情報工学を専攻した。高専出身のエンジニアの活躍ぶりが話題になっているが、関さんもその一人だ。 高専の卒業後は東京大学に編入した。「掲示板の“2ちゃんねる”を見ると『プログラマーは下流』みたいな話ばかり。経営やマネジメントも分かっていないとまずい」と思い、システム創成学科知能社会シ
データ分析部の久保です。 最近行ったライブはAimerのAcoustic Live Tour 2017です。 早いもので2017年も3月になりましたが、機械学習分野は相変わらずとてもホットな分野です。 去年はAI、人工知能という言葉がディープラーニングとともにバズワードになり、その傾向は尚も続いています。 その流行の元となったのが機械学習なわけですが、今その最先端ではどういう人がどのような研究をしているのかをかなりざっくりと見ていきたいと思います。 調査方法は2013年に同様のことを行ったとき qiita.com と同じく、NIPSとICMLという機械学習の代表的国際会議の過去3年分を対象とし、1st authorの重要度をそれ以外の著者よりも重くしてスコアづけしました。具体的には複数人の著者がいる場合は1st authorを0.8として、残りの0.2を他の著者に分配、1人の場合は1として
最近はとても便利なプラットフォームがいっぱいあって、 詳細な中身を意識しなくても簡単に使えるという素晴らしい時代ですが、 深くまで突っ込んで考えないといけない場面が たまーーーーーーーに でてきます その時になって初めて、 誰かが用意してくれた快適な環境を使っていただけで自分では何も解決できない という現実を叩きつけられるわけです 大げさに言いましたすみません ちょっと前に仕事でサーバーのパフォーマンス調査をする機会があり、 その中で "プロセス" と "スレッド" って一体何が違うの!? って疑問にぶち当たりました わかるような、わからないような 何となくわかったつもりになっている事でもそろそろちゃんと理解して、 今日からイケてるエンジニアになりましょう この記事では 1. マルチタスクOSとプロセス 2. メモリの役割 3. 物理アドレスと仮想アドレス空間 4. プロセスがメモリに保持
Python を初めて間もない頃、自分も print デバッグしてました。効率の悪さを認識しつつも、IDEを導入してデバッグする方法を調べてセッティングして、という手順が面倒でずっと放置してました。 // 普段は vim で開発してます そうこうしてたら print デバッグではどうにもならないバグにぶち当たり、仕方なくデバッグポイントを置く方法を調べたわけです。するとどうでしょう。 ソースコード中に以下の一文を入れるだけではないですか。 import pdb; pdb.set_trace() たったこれだけで、上の一文を挿入した行で処理が停止し、コンソール上でステップ実行が出来るようになります。最高かよ。 個人的にですが、デバッガー起動中によく使うコマンドとしては以下です。 コマンド 説明 s(tep) ステップイン n(ext) ステップオーバー r(eturn) ステップアウト l(
こんにちは、データ分析部の阿部です。 作業中音楽は聞かない派ですが、ホワイトノイズを聞いていると集中できるという噂を聞いたことがあるので少し気になっています。 今回は、re:Invent2016で発表されたばかりのAthenaを紹介します。 Athenaとは データの準備 テーブル作成 速度測定 まとめ Athenaとは 本日、AWSのre:Invent中で、RedshiftやEMRに続くビッグデータサービスとして、Athenaというサービスがリリースされました。 Athenaは、S3上のデータ(CSV, JSON, その他フラットファイル)に対して、インタラクティブにSQLを実行することができます。 RedshiftやEMRに比べて、クラスタの構築や運用を必要とせず、シンプルにクエリを実行できるというメリットがあります。 課金形態も、クエリ&読み込んだデータ量に応じて課金という点で、Go
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く