タグ

ブックマーク / qiita.com (341)

  • GraphQLの全体像とWebApp開発のこれから - Qiita

    TL;DR GraphQLはクライアント側とサーバー側の双方の複雑化を解決するために利用されてる フロントエンドにとってGraphQLはHTTP上で動く信頼できる唯一のリソースとして振る舞う フロントエンドの状態管理のベストプラクティスとしてのApollo Client クライアントファーストなAPI, GraphQLはWeb APIのベストプラクティスになり得る クラシックアプリケーションを改修することなくGraphQLとモダンフロントエンドで今どきのアプリを作れる はじめに GraphQLは非常に良く出来たソフトウェア(の仕様)ですが、複数の側面を持つことからすぐに理解することが難しくまだ日ではあまり受け入れられていない印象があります。GraphQLを端的に何と言われると "全てのフロントエンドのためのAPI BFF" なのですが、それだけで理解出来る人はなかなか居ないように思います

    GraphQLの全体像とWebApp開発のこれから - Qiita
    karahiyo
    karahiyo 2020/08/16
  • WebAssemblyとは - Qiita

    プログラミング言語やライブラリの名前ではなく、ブラウザでプログラムを高速実行するための、 「ブラウザ上で動くバイナリコードの新しいフォーマット(仕様)」 である。 Google, Microsoft, Mozzila, Appleによって仕様が策定され開発が進められている。 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. htt

    WebAssemblyとは - Qiita
    karahiyo
    karahiyo 2020/08/16
  • 【PHP8.0】PHP8.0の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2020/11/26に リリースされました 。 2020/08/04にPHP8.0がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2020/11/26にPHP8.0がリリースされる予定です。 というわけでPHP8.0で対応することが決まったRFCを見てみましょう。 RFC JIT 賛成50反対2で受理。 PHP8の目玉、JITです。 PHPをネイティブコードにコンパイルし、さらにコンパイルした結果を次のリクエストに使い回すことができます。 速度はOpcacheがオンの状態から平均的に1.3-1.5倍程度、さらにCPUバウンドな処理なら3倍以上という劇的な高速化が見込めます。 Opcache無しからだと、1分かかっていた

    【PHP8.0】PHP8.0の新機能 - Qiita
    karahiyo
    karahiyo 2020/08/12
  • 【PHP】Zend Engine の内部を図示した記事・資料まとめ - Qiita

    はじめに C言語も英語中国語も読めないPHP入門者です。 @tadsan さんの PHPの実行時とコンパイル時 を読んで、PHP内部でどのように処理されているのか全く理解していないことに気づきました。 理解するにはPHP内部のコードを読むのが一番かと思いますが、まだC言語は読めないので、Google検索とGoogle画像検索とGoogle翻訳を駆使して、PHP内部を図示したものを探しました。 探すだけでも結構な時間を費やしたので、見つけた記事・資料を共有することで、同じように考えている方の参考になればと思います。 C言語や英語が読めれば有用な記事は他にもあると思いますが、ここでは図示されていることを軸に記事・資料を紹介します。 紹介とか偉そうなことを言いましたが、コメントは小並感なので無視してください。 PHPの内部構造は複雑で、内部構造の全体ではなく、一部にフォーカスして説明されている

    【PHP】Zend Engine の内部を図示した記事・資料まとめ - Qiita
    karahiyo
    karahiyo 2020/07/08
  • terraformでElastiCache(Redis)のClusterを作るときにハマったこと - Qiita

    前提 terraform v0.10.3 この記事で言いたいこと Redisの複数キャッシュノードのクラスタを作りたいときは、aws_elasticache_clusterではなく、aws_elasticache_replication_groupを使う 最初にハマったこと Redisの複数キャッシュノードのクラスタを作成しようとして、 aws_elasticache_clusterで定義を書いた resource "aws_elasticache_cluster" "redis" { cluster_id = "cluster-redis" engine = "redis" node_type = "cache.t2.micro" port = 6379 num_cache_nodes = 2 parameter_group_name = "default.redis3.2" } * a

    terraformでElastiCache(Redis)のClusterを作るときにハマったこと - Qiita
    karahiyo
    karahiyo 2020/06/09
    “aws_elasticache_replication_group”
  • 【Laravel】 認証や認可に関する補足資料 - Qiita

    アプリケーション例外は Laravel フレームワークで定義されているもので,HTTPに直接関係ない抽象的な部分ではまずこれをスローすべき。 HTTP 例外は Symfony フレームワークで定義されているもので,Handler::render() でアプリケーション例外から変換して生成するのが一般的。 401 Unauthenticated のほうがどう考えても正しいが,そうなってないのには歴史的な理由があるのだろうか…? 認証のアーキテクチャ Auth ファサードあるいはコンテナから "auth" のエイリアス名でアクセスできる,認証サービスのルートオブジェクトが AuthManager である。ここが認証サービスの中核となる。 Guard が認証手段ごとの実装として存在し,ロジックの多くはここに集約される。 このクラスは Guard 契約 を実装しなければならない。 ユーザを取得して

    【Laravel】 認証や認可に関する補足資料 - Qiita
    karahiyo
    karahiyo 2020/05/17
  • Terraformのコンポーネント分割について検討する - Qiita

    はじめに こんにちわ。Wano株式会社エンジニアのnariと申します。 前回のmoduleの記事に引き続き、terraformの話を記事にしたいと思います。 今回はtfstateをどの単位で分割し管理するか、というコンポーネント分割問題に関して書いていきます。 ただし、今回の記事の構成はプロジェクトの一旦の落とし所であって、ベストな構成とは限らないのでご了承ください。 対象読者 モノシリックなtfstateの管理が辛い方 コンポーネント分割の粒度に同じく悩んでいる方 前提 筆者のプロジェクトのサービスはAWS上で構築しているため、providerはAWS 何故コンポーネントを分割するのか terraformの結果ファイル(tfstate)をモノシリックにするのは怖い 変更の影響範囲が読めない ファイル自体の可読性が終わる かといってawsサービスごとに分けると、細かくなりすぎて運用がかなり

    Terraformのコンポーネント分割について検討する - Qiita
    karahiyo
    karahiyo 2020/05/15
  • Auth0のサンプルアプリを使って認証機能付きSPAと保護されたBackendAPIを立ち上げる - Qiita

    Auth0には自前で用意したBackend APIをリソースサーバーとして登録しておき、そのリソースサーバーに対する認可をクライアントとなるアプリにアクセストークンという形で与えることができるので、記事はそれを試しています。 アプリの準備 SPAの準備 0から始めるので、とりあえずサンプルアプリそのままでやってみます。 Auth0にログインしてDashBoardを開く DashBoard > Applications > CREATE APPLICATIONボタンを押してSingle Page Applicationを登録 DashBoard > Applications > 2.で登録したSPAを選択 > Quick Startの中から使用するライブラリを選択(今回自分はライブラリを使用しない素のjavascriptを選んだので、以降はその前提での作業手順になります。) 3.で選択した

    Auth0のサンプルアプリを使って認証機能付きSPAと保護されたBackendAPIを立ち上げる - Qiita
    karahiyo
    karahiyo 2020/05/12
  • フロントエンドでTDDを実践する(react-testing-libraryを使った実践編) - Qiita

    この記事は、フロントエンドでTDDを実践する(理論編)の続編として書きました。 記事では、react-testing-libraryでReactでTDDする方法をサンプルを使って解説します。 react-testing-libraryは、PayPalのエンジニアでありフロントエンドのTDDの第一人者であるKent C Doddsが、enzymeのリプレイスを意図して作ったReactのための新しいテストユーティリティです。 設計思想は、The more your tests resemble the way your software is used, the more confidence they can give you. enzymeのように実装そのもののテストをするよりも、ユーザーが使うようにテストされるべきというフィロソフィーがAPIに強く反映されています。 実際には、いくつか

    フロントエンドでTDDを実践する(react-testing-libraryを使った実践編) - Qiita
    karahiyo
    karahiyo 2020/04/11
  • [意訳]初学者のためのJavaScriptモジュール講座 Part1 - Qiita

    このポストは以下の記事を、筆者の許諾を得て意訳したものです。 JavaScript Modules: A Beginner’s Guide 何か誤りがありましたら、ご指摘いただけると幸いです。 (以下、意訳) はしがき もしあなたがJavaScriptの初心者だとしたら、以下の言葉は全く意味の分からないものかもしれません。 モジュール管理 vs モジュール読み込み Webpack vs Browserify AMD vs CommonJS 等々…。 それでもJavaScriptのモジュール周りについて、苦手意識を持たないでください。モジュールに関して理解することは、Webエンジニアにとっては必須科目なのです。 このポストでは、カンタンな解説とコードサンプルによって上記のようなバズワードを解説します。このポストがあなたにとってお役に立つものでありますように。 注:簡素化のために、このポストは

    [意訳]初学者のためのJavaScriptモジュール講座 Part1 - Qiita
    karahiyo
    karahiyo 2019/10/15
  • 2018/11/27に判明したnpmパッケージ乗っ取りについて - Qiita

    概要 event-streamというnpmパッケージに攻撃コードが混入されました。攻撃コードはflatmap-streamというパッケージに含まれており、event-stream パッケージはこの flatmap-stream への依存性を追加される形で間接的に攻撃コードの実行を行う状態になっていました。 攻撃コードが分析された結果、copayというBitcoinウォレットからクレデンシャルを盗むことを目的とされていたことが確認されています。 参考リンク 調査が行われているGitHub Issue HackerNewsスレッド Details about the event-stream incident - The npm Blog 影響をうけたパッケージ event-stream@3.3.6 flatmap-stream@0.1.1 flatmap-stream@0.1.1 パッケージ

    2018/11/27に判明したnpmパッケージ乗っ取りについて - Qiita
    karahiyo
    karahiyo 2018/11/27
  • AWS SAM CLI + DynamoDB localを使ってローカル上で完結するAPI開発 - Qiita

    全部ローカルでやりたい 個人開発でゴニョニョやるぶんにはDynamoDBの利用料はそこまでかからないと思うのですが、トライ&エラーで頑張ってると速度が気になりますし、テスト用にデータを入れたり全消ししたりすることを考えると手元であれこれいじれるほうが便利かと思います。 今回作ったコードは以下に置いてあります。 先日のAWS Summit 2018でSAM CLI が発表されました。 AWS SAM Localというプロダクトが以前公開されていましたが、これの機能強化版と考えて良いと思います。 SAM Localにあった機能に加え、"init"等の新機能が追加されたようです。 SAM LocalではNodeで実装されていたのが、SAM CLIではPythonによる実装となったようで、SAM CLIをインストールする際には旧SAM Localをアンインストールする必要があります。 aws-sa

    AWS SAM CLI + DynamoDB localを使ってローカル上で完結するAPI開発 - Qiita
    karahiyo
    karahiyo 2018/11/07
  • 今さらProtocol Buffersと、手に馴染む道具の話 - Qiita

    Protocol Buffersは別に新しい技術ではない。同時にそれは、未だ知られざる、未だに可能性を秘めた先端のソフトウェア技術基盤である。 新しくないのは事実で、GoogleがProtocol Buffersをオープンソース化したのは2008年のことだし、オープンソース化前に社内で使われ出したのは更に昔に遡るだろう。たぶん。 デザイン的にもJSON対応は後付けで、将来JSONが隆盛を極めることなんか全然想定していなかったのが透けて見えて古くさい。 しかし、同時にどうも情報に聡い人であってもなかなかその真価を実感し得ておらず、ある意味で未知の技術であるらしい。ならば、Protobuf (Protocol Buffersの略)を解説した文書は幾多あれども、それに1を加えるのもやぶさかではない。 Protocol Buffersとは Protobufはスキーマ言語だ! 一般的にはProtob

    今さらProtocol Buffersと、手に馴染む道具の話 - Qiita
    karahiyo
    karahiyo 2018/10/22
  • tcpdumpで理解するTCPのコネクション確立 - Qiita

    エントリでは、tcpdumpコマンドを使用してコネクションの確立、終了を確認することにより、TCPのコネクションの理解を深めます。 TCPのコネクションを理解する目的 TCPのコネクションを理解すると主に以下のメリットがあります。 NW関連(主にTCPコネクションまわり)の問題切り分け・トラブルシューティング力が向上する。 NW関連(主にTCPコネクションまわり)のテストケース観点を習得できる。 NW関連の共通言語が習得できる。 TCPでデータを転送する場合、データの転送を行う前にコネクションを確立する必要があります。 TCPのコネクションを確立する際は、以下の3way handshake(3ウェイ・ハンドシェイク)で処理が行われます。 TCPクライアント(TCP A)は、TCPサーバー(TCP B)にコネクション確立要求を送信する。(syn) コネクション確立要求を受けたTCPサーバー

    tcpdumpで理解するTCPのコネクション確立 - Qiita
    karahiyo
    karahiyo 2018/10/10
  • ReactJSで作る今時のSPA入門(基本編) - Qiita

    GitHubサンプルをbabel7に対応しました。 GitHubサンプルコード:GitHub (※この記事のサンプルはすでに古いです。最新版のサンプルと説明はGitHubのreadmeに書いてあるのでそちらを見てください) ReactJS使ってナウいウェブアプリケーション作ろうぜってことでまとめてみようと思います。 以前はウェブアプリケーション作る時はBracketsやAtom使っていたのですが プラグインのアップデートとかバグった時がめんどくさかったり、エディタが重かったりしたので 最近はVisual Studio Code(VSCode)に乗り換えました。 (必要な便利な機能もプラグインいれなくても揃ってるし、デフォルトでJSXサポートしてるから楽) VSCode環境構築:VSCodeで爆速コーディング環境を構築する(主にReactJS向け設定) ちょこっとReactJSを試したいとき

    ReactJSで作る今時のSPA入門(基本編) - Qiita
    karahiyo
    karahiyo 2018/09/11
  • ちょっと良さげな負荷ツール vegeta をつかって分散負荷試験を実現してみる - Qiita

    motivation Scalaのgatlingを使っていたけど、test_caseとして実装する必要があり、ローカル以外から仕組み的に実行するのがちょっと手間だった。(testをjarにするというのが難しい) シンプルにインストールせずに実行できる負荷ツールはないものか 負荷をかける側の限界でパフォーマンスを正しく測定できないこともあるので、クラスタ的に投げれたらなお良い そんなフワーッとした雰囲気で調べてみたら面白そうなものがあった。 その名も Vegeta 。 名前がやばい。そう、みんな知ってるアレ。 github にもこんな画像がデカデカと というわけで早速試してみましょう。 最初に結果を書くと、結構いい感触。おすすめしたい。 インストール方法 インストール方法は複数あります。 公式のドキュメントにあるのは2種類で、 Homebrewでインストールする(mac

    ちょっと良さげな負荷ツール vegeta をつかって分散負荷試験を実現してみる - Qiita
    karahiyo
    karahiyo 2018/09/05
  • サービスメッシュについて調査してみた件 - Qiita

    はじめに 最近、Kubernetesを中心としたコンテナ環境やマイクロサービスの文脈において、「サービスメッシュ」「Istio」というキーワードを聞く機会が増えています。 「Istio」は、2018/7/31にバージョン1.0に到達したことが発表され、ますます注目されるオープンソースソフトウェアとなっています。また、自分が所属しているSIerであっても、最近「サービスメッシュ」という言葉を聞く機会が増えてきています。 記事では、サービスメッシュの概要から、サービスメッシュを実現するソフトウェアについて、Web上の情報などを元に調査した内容を整理したいと思います。 サービスメッシュとは マイクロサービスの課題 サービスメッシュの説明をする前に、サービスメッシュの前提となるマイクロサービスにおいて、どのような課題が存在するか整理したいと思います。 Service Discovery(サービス

    サービスメッシュについて調査してみた件 - Qiita
    karahiyo
    karahiyo 2018/08/23
  • MySQL 日本語全文検索について - Qiita

    例)東京都で、豊島さんの結婚式だよ。 ◆N-Gram(バイグラム) 東京 京都 都で で、 、豊 豊島 島さ さん んの の結 結婚 婚式 式だ だよ よ。 ◆mecab fwww01:/usr/local/src/mecab-ipadic-2.7.0-20070801> mecab 東京 名詞,固有名詞,地域,一般,,,東京,トウキョウ,トーキョー 都 名詞,接尾,地域,,,,都,ト,ト で 助詞,格助詞,一般,,,,で,デ,デ 、 記号,読点,,,,,、,、,、 豊島 名詞,固有名詞,人名,姓,,,豊島,トシマ,トシマ さん 名詞,接尾,人名,,,,さん,サン,サン の 助詞,連体化,,,,,の,ノ,ノ 結婚式 名詞,一般,,,,,結婚式,ケッコンシキ,ケッコンシキ だ 助動詞,,,,特殊・ダ,基形,だ,ダ,ダ よ 助詞,終助詞,,,,,よ,ヨ,ヨ 。 記号,句点,,,,,。,。,。

    MySQL 日本語全文検索について - Qiita
    karahiyo
    karahiyo 2018/08/20
  • ファイルディスクリプタについて理解する - Qiita

    ファイルディスクリプタについて分かっているような分かっていないような感じだったのRubyでコードを書きつつ、理解したときのメモ 参考 ファイルディスクリプタ数の上限変更とlimits.confの罠 なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 Shinpeim/process-book そもそもファイルディスクリプタとは何か 以下より引用 IT用語辞典 ファイルディスクリプタとは、プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。0から順番に整数の値が割り当てられる。OSによってはファイルディスクリプタにバッファ管理機能なども含めた「ファイルハンドル」と呼ばれる管理体系が存在する。 ファイルディスクリプタには、識別子とともにファイル名、ファイルサイズ、プログラムが操作中のファイル内の位置、ファイル作成、更新日時などの情報が含まれており、OSは

    ファイルディスクリプタについて理解する - Qiita
    karahiyo
    karahiyo 2018/07/05
  • BigQuery vs Athena vs RedShift vs Hive - Qiita

    オブジェクトストレージの料金 お金は大事ですね. まずはストレージの料金から比べます. 料金は各種操作にかかりますが,特にドミナントなのはストレージ代と転送量だと思うのでこれ以外はめんどくさいのでスルー. 料金系は変動が激しそうなので,まずリンクを貼ります. S3 GCS とりあえず検証時点では,こちらの想定するデータ量で以下の通りでした. (東京リージョン) S3 Storage料金: $0.025 / GB 転送料金: $0.14 / GB GCS Storage料金: $0.023 / GB 転送料金: $0.14 / GB よっぽどデータが大きくない限り大した差にはならないので,決め手にはならないでしょう. 後日談の方でも少し述べますが,ストレージの機能としては若干S3の方が優れている気がしたので,若干高いのもまぁ妥当だと思います. 料金 こちらもまずはリンクを. Athena R

    BigQuery vs Athena vs RedShift vs Hive - Qiita
    karahiyo
    karahiyo 2018/06/08