サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ニコニコ動画
meetup-jp.toast.com
ECMAScriptクラスフィールド(class field)の一覧に、プライベートフィールド(Private field)すなわちプライベートプロパティ(Private Property)(以降Private属性)があります。クラスフィールドのスペックは、Stage 3(Candidate)までアップグレードされたので、おそらくもうすぐStage 4(Finished)を経て標準スペックになるでしょう。初期の仕様文書を見たときは「ついにPrivateができるのか?」という期待感と「文法が少し変わっているな」という失望感だけで、現実味はありませんでした。時の流れとともに記憶が薄れていたところ、TypeScript3.8で正式にサポートされるというニュースを聞き、これを契機にPrivate属性について正しく学ぶことにしました。もちろん、これからはプロジェクトでも積極的に使うつもりです。Pub
開発を進めていくと、if-else構文やswitch-case構文を本当に多く使用します。論理的思考に基づくと、分岐処理は必須領域であり有用です。しかし、分岐処理は手続き型プログラミングのレガシーとなり、オブジェクト指向の考え方を妨害する要因の1つになりました。 我々が開発でよく考えていることは「可能な限り、分岐処理をなくさなければならない。」というものです。単純な反復分岐を最小化しようと努力すると、その対価としてオブジェクト指向の考え方とコードをナレッジとして得ることができます。 さらに一般化すると、DRY(重複排除)を守る – boiler plateしたコードを減らす – 努力をすると、その答えの1つであるオブジェクト指向の考え方を得られます。 ショッピングモール割引ポリシー 多くの方が理解しやすいショッピングモールドメインでサンプルを作ってみました。 同じ種類の分岐処理がコードのあ
2部では、ストーリーブックを使ってビジュアル要素のテストを自動化する方法を紹介しました。私たちが作成したタスク管理アプリケーションの実行手順をもう一度整理してみましょう。 アプリケーションが実行されたら、画面にメインUIを表示する APIサーバーから「ToDoリスト」のデータを受け取り、Reduxストアに保存する 保存されたストアの値に応じてToDoリストをUIで表示する ユーザーが入力ボックスをクリックし、「昼寝」と入力してEnterキーを入力する ReduxストアのToDoリストに「昼寝」を追加する 変更されたストアの値によってUIを更新する 変更されたストアの状態をサーバーに送信して同期する この実行手順は、「アプリケーションの状態」を基準に2つに区分できます。まず、取り消し線がついた1,3,6は、現在のアプリケーションの状態を画面(UI)に表示する段階です。2部では、この段階でテス
はじめに 最近まで、GoogleのクラウドプロジェクトにKubernetesクラスタを作成していましたが、有料のため金銭的なコストをかけずにマルチノードクラスタを実践できる環境を構成したいと思い、自宅にあった4台の開発ボードordroid-xu4を活用してみることにしました。 エラー発生 Dockerをセットする過程で問題が発生しました。Dockerをインストールしてテストするため、簡単にビルドしたイメージをPullで受け取りコンテナを実行したところ、以下のように失敗しました。 jaeeunyoo@skynet-201:~$ docker pull frontiersofme/py-app Using default tag: latest latest: Pulling from frontiersofme/py-app ... Status: Image is up to date f
Redis? Redisは、REmote DIctionary Serverを略したものです。おそらくこの記事を読まれているほとんどの方は、Redisを使用したり聞いたりしたことがあることでしょう。 Who uses Redis? Redisはオープンソースなので、さまざまなサービスで自由に使用されています。上図からもわかるように、Airbnb、Uber、InstagramでもRedisが使用されています。TOAST File、Doorayなど、NHNの社内でも多くのチームがRedisを使用しています。昨年、Coupangで大きな障害がありましたが、その原因はRedisであることが明らかになりました。 パレートの法則(Pareto principle) ところで、パレートの法則をご存知ですか?私たちの社会で起こる現象の80%は20%の原因によって発生している、ということを意味する法則です。
はじめに TOASTクラウドメッセージングプラットフォームサービスの1つであるPushに追加されたAPNs(Apple Push Notification service)JWT認証機能について、開発中に行った技術調査の内容を共有します。この記事は「JWTの概要」と「JWTをさらに詳しく」の2部構成になっています。「JWTの概要」では、JWTの構造や作成および検証方法について説明し、「JWTをさらに詳しく」では、JWTの特徴や使用事例について紹介します。JWTを利用した機能を開発する際や、JWTを使用する開発者の方に役立つ内容になれば幸いです。 気になった点があれば、LinkedInやGitHubからご連絡お願いいたします。 https://www.linkedin.com/in/jinho-shin-7a9b3292 https://github.com/gimbimloki JWT(J
はじめに アプリケーションを開発するとき、データのバリデーションチェックは一般的にアプリケーション全体で発生します。TOASTのメッセージングプラットフォーム商品であるNotificationは、メッセージ形式、メールアドレス形式、受信・発信者番号など、クライアントの入力値に対して多くの検証を行います。そして、入力値の検証に失敗した際には、エラーに対する原因を把握して理解しやすいようにAPIで適切にレスポンスする必要があります。このような目標を達成するため、Javaにおけるデータのバリデーションチェック標準技術であるBean Validationを採用しました。 この記事では、NHN Forward 2019で発表された、PaaS&API Developer Experience(https://youtu.be/zvuhOz8VhhI)で扱われたBean Validationの内容を文章
はじめに 今回は、Android テスティングフレームワークのRobolectricについて紹介します。 まずは簡単にAndroidのテスト種類を調べて、その後、Robolectricについて紹介していきたいと思います。 Android Test Androidで開発してみると、自然と「テスト」に目が行くようになります。Androidのテストは次の方法に大きく分けられます。 ユニットテスト(Unit Test) インストゥルメント化テスト(Instrumentation Test) ユニットテストは、文字通り「単体テスト」を意味します。テスト駆動開発(TDD、Test-Driven Development)で、「事前テスト第一」での開発をしていると、「機能単位別」にテストコードを構成して、そのテストコードを通過する実際のコードを作成したりしますね。あるいはその逆も可能です。このとき使用され
連載 LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ – 1編 4.ネットワークcapacity関連パラメータ 4.1 maximum file count Linuxをはじめとする一般的なUnixソケットは、まるでファイルのような扱いを受けます。 システム全体で保有できるファイル数が制限されていれば、当然ソケットの全体数にも影響を与えるでしょう。 Linuxでシステム全体が保有できる最大ファイル数は、fs.file-maxカーネルパラメータで設定します。 以下のようなコマンドで現在の設定値を確認できます。 $ sysctl fs.file-max fs.file-max = 775052 一般的に、この値は適度に大きな値が設定されているので、余程のことがない限り、修正することはないでしょう。 ただ、システムが非常に多くのファイルとソケットを使用している
(補足)logging.file.max-history File AppenderはRollingFileAppenderを使用します。ファイルのrollingポリシーがspring-boot 1.5.xまでは、SizeBasedTriggeringPolicyでファイルサイズが特定の値に達すると、新しいログファイルを残す機能のみサポートすることになっていました。そのため時間が経過したログを削除するには、サーバーから別にcrondを回すか、別途logback-spring.xmlの設定が必要でした。しかしspring-boot 2.0.0からrollingポリシーがSizeAndTimeBasedRollingPolicyに変更され、デフォルト設定でログが日別に残るようになりました。(例:spring.2018-01-01.log)logging.file.max-historyで指定し
ある日、友人から電話があり「REST APIって何?」という質問を受けましたが、「それはRESTにクライアントとサーバー間でデータを送受信する方式のことだよ」といった程度で思うように説明できませんでした。実際にREST APIのサービスを開発した経験もありますが、いざ説明しようとすると難しいですね。そこで今回、REST APIについて整理してみました。基本的なREST APIのほか、REST APIを設計する際に参考すべきいくつかのTipsを共有したいと思います。 1. REST APIの誕生 RESTはRepresentational State Transferという用語の略で、2000年にロイ・フィールディング(Roy Fielding)の博士論文で初めて紹介されました。ロイ・フィールディングは、HTTPの主な著者の一人で、Web(HTTP)の設計の優秀さに比べて適切に使用されていな
連載 LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ- 1編 LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ- 2編 5. TIME_WAIT socket TIME_WAIT状態のソケットは、利用可能なlocal port数を軽減させて同時に保有できるクライアントソケットの数を制限します。 5.1 TIME_WAIT socketとは? TIME_WAIT状態のソケットは、いつ発生するでしょうか? まず、TCPソケットの状態フローを見てみましょう。 上図から分かるように、active closingするソケットの最後の終着地がTIME_WAITの状態です。 言い換えれば、クライアントソケットであれ、サーバーソケットであれ、close()システムコールを先に呼び出した側(active closing)が最終的にそうなり
この記事は、Chris BeamsのHow to Write a Git Commit Messageブログの内容を簡単にまとめた資料で、翻訳・編集して、役に立つ内容を追加したものです。 Gitのコミットメッセージをうまく作成すべき理由 なぜコミットメッセージをうまく書く必要があるのか?理由は色々ありますが、うまく書かれたコミットメッセージが有益であるという事実は、多くのプログラマが同意することでしょう。そのうち代表的な3つの例を挙げてみます。 コミットログの読みやすさ より良いコラボレーションとレビュープロセス コード保守の容易さ 「良いコミットメッセージについて考えることは素晴らしいアイデアだと思う。しかし、良いメッセージの正解があるかは分からない。個人によって良いコミットメッセージと捉える基準が異なるためだ。多くの人々が共感できる良いコミットメッセージをうまく作るためのルールはないだ
最近の開発者が最も好むドキュメント形式を挙げるとしたら断然マークダウンになるでしょう。マークダウンは、GitHub、GitLab、Bitbucketなど、タスクやイシュー管理に対応するほとんどのサービスにおいて、基本のドキュメント形式として使用されています。また、IntelliJ、VSCode、Vim、Emacsなど、ほぼすべてのテキスト編集ツールでも、プラグインを通じてマークダウン文書の強調構文やプレビュー機能を使用することができます。 TOAST UI Editorはここからさらに一歩進んで、マークダウンエディターとウィジウィグエディターを統合した形式のインターフェースを提供しています。ウィジウィグエディターを使用すると、テーブルなどの複雑な文法をより直感的に簡単に編集することができ、マークダウンに慣れていないユーザーでもマークダウン基盤の文書を簡単に編集できます。特に、開発者と非開発
1.はじめに ネットワークのパフォーマンスを決定付ける最も重要な要素は、最終的にはアプリケーションにあるでしょう。ただ、ワークロードの特性によっては、デフォルト設定されたTCPカーネルパラメータが制約となり、パフォーマンスを発揮できないときもありますね。 非常にたくさんのカーネルパラメータがありますが、本文では、ネットワーク帯域幅(bandwidth)のカーネルパラメータ、ネットワーク容量(capacity)のカーネルパラメータを主に扱います。 2.準備 Linuxはsysctlコマンドで簡単にカーネルパラメータを実行時に変更できます。 次のようなコマンドを使用すると、現在のカーネルパラメータ設定値の全体を閲覧できます。 $ sysctl -a ここで取り上げるネットワークは、特にTCPのcapacityとbandwidthなどを調整(tuning)できるカーネルパラメータのごく一部を紹介
現在はまさしく、JavaScriptの時代と言えるでしょう。最近の2〜3年で、JavaScriptは最も人気のある言語ランキング1位を維持しており、今も急速に成長しています。10年前、Web標準という概念すらないときからフロントエンドの開発を続けてきた開発者にとっては、非常に感慨深いものがあるでしょう。当時は開発環境という言葉すら恥ずかしいほどに不毛な環境でしたが、現在流通している新しい技術と開発ツールを眺めてみると、まさに”豊かな時代”と言えるでしょう。 なかでも、特に有望なのは「テスト方法論とツールの発展」でしょう。この数年間、フロントエンドのテストは、はるか彼方にある幻想のようなものでした。従来のどのような方法を試してみても、フロントエンドのコードテストには適しておらず、テストコードを作成する努力に比べて、実際に得られる効果はわずかなものでした。しかし、最近登場したテストツールは、過
はじめに 今回は、Spring Web Applicationで使用するFilterとInterceptorについて、紹介したいと思います。 実行時 一般的な内容 FilterとInterceptorは、実行される時点が異なる。 FilterはWeb Applicationに登録して、InterceptorはSpringのContextに登録する。 追加で紹介したい内容 Tomcatの場合、deployment descriptor(/WEB-INF/web.xml)に使用するFilterを登録します。そのため、アプリケーション全体に影響を与える作業はFilterにする、という意見があります。しかし実際はそうではありません。FilterもInterceptorもすべての要求に対する前後処理の役割を遂行します。またuriベースで、いつ実行するか調整可能で、直接requestの内容を把握し、希
JavaScriptの大きな特徴の1つは、「シングルスレッド」基盤の言語だという点です。スレッドが1つということは、同時に1つの作業だけを処理できるということです。しかし、実際にJavaScriptが使われる環境を考えてみると、多くの作業が同時に処理されていることが分かります。例えば、Webブラウザは、アニメーション効果を見せながら、マウスの入力を受けて処理をし、Node.js基盤のWebサーバーでは、同時に複数のHTTPリクエストを処理したりします。スレッドが1つなのに、どうしてこのようなことができるのでしょうか?質問を変えると、「JavaScriptはどのように同時実行(Concurrency)をサポートしているのでしょうか?」 このとき登場する概念が「イベントループ」です。Node.jsを導入した際、イベントループ基盤の非同期方式でNon-Blocking IOに対応して…」のような
このページを最初にブックマークしてみませんか?
『NHN Cloud Meetup』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く