タグ

2019年12月5日のブックマーク (12件)

  • Rust初心者がRustで全文検索サーバを作ってみた - Qiita

    情報検索・検索エンジン Advent Calendar 2019 の5日目の記事です。このAdvent Calendarを作った@takuya_aさんより、お誘いいただきました。 @minoru_osuka もし余裕あれば12/5の記事お願いします! https://t.co/YIA9tIB4Gj — takuya-a (@takuya_b) December 1, 2019 ということで、仕事とは別で個人的に始めたプロジェクトについて紹介できたらと思います。 私自身はApache Solrを好んで利用しています。 ただ、最近のサーバサイドの技術の移り変わりや、新しい開発言語の登場など、取り巻く環境が変化してきています。それらの習得も踏まえ、使ったことのない開発言語を用いて軽量な全文検索サーバを作り始めるという内容です。 開発した経緯 インフラの変化 ここ数年でインフラは大きく変化しました

    Rust初心者がRustで全文検索サーバを作ってみた - Qiita
  • TypeScriptのDIはどうすればいいの?

    Angular's Future without NgModules: Architectures with Standalone Components

    TypeScriptのDIはどうすればいいの?
  • 複数のGoroutineをWaitGroup(ErrGroup)で制御する

    この記事はGo7 Advent Calendar 2019五日目の記事です。 やりたいこと下記のように直列で動作し実行時間の長いGoのプログラムを、並行処理に変えて処理を効率化させます。 package main import ( "fmt" "time" ) func main() { for i := 0; i < 100; i++ { time.Sleep(2 * time.Second) // 長い処理 fmt.Println("End:", i) } }

    複数のGoroutineをWaitGroup(ErrGroup)で制御する
  • OWASP/Go-SCPを読んでセキュアプログラミングとGoを学ぶ - My External Storage

    この記事はGo Advent Calendar 2019の4日目の記事になる。 3日目は@ikawahaさんの「Goa v3 のテストをシュッとする]」だった。 記事ではOpen Web Application Security Project(OWASP)が公開しているGo-SCPリポジトリを紹介する。 Webアプリケーションにはクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)など、様々な脆弱性が潜む可能性がある。 脆弱性対策の書籍としては、体系的に学ぶ 安全なWebアプリケーションの作り方(徳丸)などが有名だろう。 Go-SCPリポジトリにはWebアプリケーションを実装する際に必要な脆弱性の知識と、Goを使った脆弱性対策の実装方法が含まれている。 https://github.com/OWASP/Go-SCP TL;DR OWASPというWEB

    OWASP/Go-SCPを読んでセキュアプログラミングとGoを学ぶ - My External Storage
  • Linux perfで快適に計測するためのtips - Qiita

    これがあるのとないのとでは分かりやすさが全然違うので、perfを使う時は常に入れておくようにすると便利です。 2. --call-graph は fp 以外で使う 上記の問題を解決すると perf record + perf report では何が呼ばれているかおおむね分かることが多いのですが、call graphを出すために perf record -g をすると [unknown] というのが出てきてしまうことがあります。(以降の計測結果はRack::Utils::HeaderHashを使ったRuby VMのベンチをRubyのmasterで走らせたものです) Samples: 38K of event 'cycles:ppp', Event count (approx.): 271180000 Children Self Command Shared Object Symbol - 1

    Linux perfで快適に計測するためのtips - Qiita
  • DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう - Qiita

    なぜ DI コンテナを自作するのか 関心の分離がされているアプリケーションは変更に強く、良い設計と言えます。Dependency Injection(以下 DI) は関心の分離を実現する テクニックの 1 つとしてよく見られるパターンです。しかしクラス間の依存関係が増えれば増えるほど、注入する依存を作ることは困難になり、DI のコストは段々と膨らみます。そのようなとき、 依存を自動で解決し、欲しいインスタンスをすぐにとりだせる DI コンテナ は有効な解決手段となり得ます。 JavaScript/TypeScript においても DI コンテナを提供するライブラリが存在します。例えば、InversifyJS や tsyringe などが知られています。しかし既存の DI コンテナは、DI 以外の機能を持ち、また使い方も多岐にわたるため、知識の習得コストがかかります。そこで 必要最小限の機能

    DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう - Qiita
  • 本当にあったAWSでやらかした話と対策😭 - Qiita

    概要 みなさんこんにちは🎄 「フォトリ」という家族写真の撮影サービスを運用している会社でCTOをしてるカイトズズキと申します。 この記事では、先日会社のAWSで割と高額の請求が来てしまい😭死にたくなる思いをしたので、そのお話についてしていきます。 AWSは便利だけど、お金使いすぎたりしないか不安になりますよね。 特に僕はそんなにAWSには詳しくない人間なので、なおさらドキドキです。 この記事を通して、僕がやっちまった失敗をみなさんに知ってもらい、 同じような失敗をする人が1人でも減ることを祈ってます🙏 やらかしレベル まず、結果としてどれくらいやらかしたかと言うと、 普段の使用料金以外に、 - Lambda で 10万円 くらい - S3 で 30万円 くらい の請求が来てしまいました、、、 普段は数万円程度で2つのWebサービスを運用しているため、 最初に気づいたときは驚きすぎて理

    本当にあったAWSでやらかした話と対策😭 - Qiita
  • 中年が継続的に体調とメンタルを良好に保つノウハウ - onigra.github.io

    中年が継続的に体調とメンタルを良好に保つノウハウDecember 5, 2019 by Yudai Suzuki この記事はClassi Advent Calendar 2019 5 日目の記事です。 前回は、yukoono さん による Classi の新卒エンジニア向け研修、「万葉研修」について でした。 さて、今回はタイトルの通り、エンジニアリングとは関係の無い内容です。 はじめに30 代も半ばに差し掛かかったこともあり、おっさんの例に漏れず体の衰えを強く実感しています。 そして、この歳では「健康」が重要なスキルセットになると自覚するようになりました。 継続的に健康でいられるということは、自分にも周りにも労働の成果の予測が立てやすくなるということで、 自分の仕事に対する信頼につながっていきます。 おっさんが「つらいにゃん…」と言っても誰も同情してくれません。 もういい歳なので、自分の

  • Ayo.js について - from scratch

    Ayo.js とは 「Node.js の fork です。」と言ってもまだできたばかりで正直このタイミングで記事にしてもまだ語ることはそんなに多くないです。 ただし、JavaScript界隈が騒ぎになりかけていることは確かです。日でも発言が増えてきたので自分なりにまとめて今時点での話をしようと思います。 ちなみに読み方は好きに読んでくれ、と言われてます。 「アイ・オー」でもいいし、「エイ・ヨー」でも良いとのことです。ネーミング的には昔あった io.js fork騒動を想起させるネーミングになってます。もしも io.js についてご存じない方もいるのであれば、こちらをご参照ください。 yosuke-furukawa.hatenablog.com Ayo.js の目的 https://github.com/ayojs/ayo/blob/zkat/values/VALUES.md ここを見ると

    Ayo.js について - from scratch
  • Node.jsへのコントリビュート解説、そしてOSSへ貢献するということ - 別にしんどくないブログ

    この記事は Node.js Advent Calendar 2019 - Qiita の2日目の記事です。遅くなってしまいました。 Node.js体へのコントリビュート解説記事です。この記事は不足している情報や更新があれば、モチベーションが続く限り更新していきたいと思っています。 JSConf JPのスタッフの打ち上げのときに日人のNode.jsへのコミットしている人が少ないという話がでました。 Node.jsに限らずOSSへのコミット経験があるという人は私の周りには少ないです。 もちろんOSSにコミットしているから良い悪いという話ではなく、Node.jsやOSSにコミットしてみたいと相談いただくことが時々あるので僕の経験でよければ伝えたいと思いました。 私の経験からNode.jsへのコントリビュート方法の解説とOSSへの貢献を通じて得たものについて書き残しておきたいと思います。 言葉

    Node.jsへのコントリビュート解説、そしてOSSへ貢献するということ - 別にしんどくないブログ
  • Go言語でメモリ上の大きさや配置を調べる

    golangで構造体を定義した場合、 メモリ上にどのように配置されるのでしょうか。 通常意識する必要はありませんが、32bitと64bitで挙動がおかしい場合など、 ごく希に調べる必要に迫られる場合があります。 そのような場合、各要素のサイズや、構造体先頭からのオフセットを調べることで、 メモリ上に構造体がどう置かれるかを調べることができます。 C言語でのsizeofやoffsetofに対応する物が、golangのunsafeパッケージに用意されているため、 これを利用することで構造体の様子を調べることができます。 https://golang.org/pkg/unsafe/ 今回は以下のようなテスト構造体を使い、メモリ上にどのように置かれるかを調べました。 テスト環境はwindows7(32bit)とmac(64bit)になります。 type A struct { flag bool n

  • MOV タクシー配車アプリ RubyからGolangへ刷新 マイクロサービス化 | BLOG - DeNA Engineering

    RubyからGolangへの移行を進める過程で、システムアーキテクチャがマイクロサービス化していくという稀有な体験をしたので記事を書きました。 次世代タクシー配車アプリMOV(モブ)及び、タクシー車両内の乗務員向けアプリに係る WebAPI 50前後をRailsからGolang net/http に刷新しました。その過程でマイクロサービス化が進んだ事例を紹介します。MOV サーバエンジニア池田 周平です。サービスを継続しつつシステム刷新するために、なぜその判断を行ったかについてお伝えできれば幸いです。 MOV(旧タクベル)ご存知でしょうか?神奈川、東京でサービス提供中のタップ操作でタクシー配車ができる配車アプリです。 実証実験を繰り返しサービスリリースしました。 立ち上げ初期段階から居たメンバーに話を聞くとRailsで高速にプロトタイピングを繰り返していたそうです。 リリース直前にGAE

    MOV タクシー配車アプリ RubyからGolangへ刷新 マイクロサービス化 | BLOG - DeNA Engineering