ブックマーク / www.m3tech.blog (7)

  • Enumとてもつらい、でも負けない - エムスリーテックブログ

    列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2. switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi

    Enumとてもつらい、でも負けない - エムスリーテックブログ
    yarumato
    yarumato 2023/12/17
    “種別が3種類以上の可能性があるならEnumを使うことになる。将来的に増えること、これがEnumの つらみの根源です。既存のif文が意図しない方に倒れる。データ分析のことまで考慮した対策:Enum要素は増やさない”
  • シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ

    こんにちは! エンジニアリンググループ マルチデバイスチーム 新卒1年目の小林です。 エムスリーでは、2週間に1度、Tech Talkという社内LT会(現在はリモートで)が開催されています。これは、とある回の発表テーマリストです。 Tech Talkのとある回の発表テーマリスト このように、最近エムスリーでは文字列が流行っている(?)ようなので、その勢いに乗って私も文字列照合アルゴリズムについて書きたいと思います!(業務とは全然関係ない話です) Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさん出ていると思うので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明し、速度比較を行った結果についてご紹介します。 文字列照合アルゴリズムとは テキストとパターンという文字列が与えられたときに、中に出現す

    シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ
    yarumato
    yarumato 2020/09/28
    “Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさんあるので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明、速度比較結果。C++で実装するとこんな感じ”
  • React.js, Vue.jsが使えない状況でメンテナンス性の高いJavaScriptを書く3つのポイント - エムスリーテックブログ

    エムスリー エンジニアの岩です。 この記事は エムスリー Advent Calendar 2018 の23日目の記事です。 React.jsやVue.jsを使えれば、開発のベストプラクティスなどがあるので、メンテナンス性の高いプログラムはずいぶんと書きやすくなったと思います。当に仮想DOMの功績は大きいですね。 しかし、世の中にはそういったライブラリを使うことができないプロジェクトもあるわけです。古すぎて、一部分だけ最新のソースコードにすることが憚られたり、サイズの問題でライブラリを入れることができなかったり。。。 その場合どのように書けばメンテナンス性の高いプログラムを書くことができるのでしょうか。そこでIE6時代からJavaScriptをもりもりと書いている私なりのベストプラクティスを紹介します。 そもそもなぜメンテナンス性の悪いコードとなってしまうのか jQueryではセレクタで

    React.js, Vue.jsが使えない状況でメンテナンス性の高いJavaScriptを書く3つのポイント - エムスリーテックブログ
    yarumato
    yarumato 2018/12/23
    “結局ReactやVueのような3原則で改善。コンポーネント志向で設計(Classで表現しコンストラクタで受け取ったroot要素配下だけ変更)、ViewModelを定義(Viewの更新と処理を切り分け)、画面更新は1箇所で(renderメソッド)”
  • EmacsでWebサービスを開発して8ヶ月が経ちました - エムスリーテックブログ

    この記事はエムスリー Advent Calendar 2018 の16日目の記事です。 こんにちは、エンジニアリンググループ新卒1年目の青木です。クラウド電子カルテ「M3 DigiKar」の開発に携わっています。We are hiring!! 今回は私のチームが開発しているWebサービス「M3 DigiKar」の Emacs での開発方法を紹介します。 皆さんお馴染みのエディタ Emacs はじめに 共通設定 検索・補完・定義参照 company.el ivy.el & counsel.el & swiper.el dumb-jump.el Syntax Check & Lint flycheck.el Spell Check flyspell.el Visualize git-gutter-plus.el color-identifiers-mode.el rainbow-delimit

    EmacsでWebサービスを開発して8ヶ月が経ちました - エムスリーテックブログ
    yarumato
    yarumato 2018/12/16
    “JavaScript、Ruby on Rails開発でEmacs使用。検索・補完・定義参照(インテリセンス、漸進検索、定義箇所まで移動)、Syntax Check & Lint、Visualize(変更箇所を表示、変数で色分け、対応するカッコ色分け)”
  • 18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ

    この記事は エムスリー Advent Calendar 2018 12日目の記事です。 こんにちは。エムスリー エンジニアリンググループの三浦(@yuba)です。基盤開発チームというところで各サービスチーム共用のシステムの開発保守に携わっており、そこで見つけた面白い動作を掘っていったら意外な知識にたどり着いたという話をいたします。 化けた日付はどこから来た? あるサービスの管理画面の動作を検証していたときのことです。バリデーションの振る舞いを確かめるためにいくつかテストケースを作りながら実際の動きを試していたところ、不思議な現象を見つけました。 次のように日時入力をするところで年の欄を空のままにして送信したところ⋯ 次のようにおかしな日時が設定されたのです。 0013年? 18分59秒? 入力した覚えのない数字が3つも紛れ込んでいます。 これが C で書かれたプログラムなら何か不定値を拾っ

    18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ
    yarumato
    yarumato 2018/12/12
    “1888年は日本に標準時(UTC+9)が施行された年。それまでは日本標準時はなく、都市ごとに時刻を持っていました。世界中がそうで、米国では100以上の地方時があったと言います。オフセット+09:18:59は東京の地方時でした”
  • bashスクリプティング研修の資料を公開します - エムスリーテックブログ

    こんにちは、エンジニアリングGの中村です。 以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。 www.m3tech.blog 弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。 [追記: 2018-08-22] はてブにて以下のコメントをいただきました。 bashスクリプティング研修の資料を公開します - エムスリーテックブログ bashで50行以上になった

    bashスクリプティング研修の資料を公開します - エムスリーテックブログ
    yarumato
    yarumato 2018/08/21
    “[必須] 変数を展開するときは必ず「"」で囲う [必須] if文は[〜]ではなく[[〜]]を使う [必須] bashスクリプトにはset -euCを付ける [必須] localやreadonlyを付けて変数を定義する”
  • タイムゾーンを考慮した日時の扱いのベストプラクティス - エムスリーテックブログ

    こんにちは、server-side kotlinterraform を書くことが多い、エンジニアリングGの矢崎(id:Saiya)です。 タイムゾーンや日時の扱いについての話題がホットな昨今ですが、 そういった日時の扱いについて例えば以下のようなお話を受けることが少なからずありました: とりあえず日時は UTC からの時差情報付きで扱えばいいんでしょ? DB に保存するときもタイムゾーン情報付きで入れておけばいいんでしょ? こういったお話を振られた際に、思うところを一言でサッと説明できずもやもやする事もあり、 また web サービスにおいて日時・タイムゾーン・オフセットをどう扱うべきか?納得の行く説明をあまり見つけられなかったため、 筆者なりに考えをまとめてみました。 国家的祭典のために急にサマータイムが導入されるといった話に限らず、 クラウドサービスが UTC+0 の日時になってい

    タイムゾーンを考慮した日時の扱いのベストプラクティス - エムスリーテックブログ
    yarumato
    yarumato 2018/08/14
    “ユーザーとの日時処理では地域タイムゾーン(Asia/Tokyo)用いる。オフセット(UTC+9)使わない理由はこのユーザーはUTC+9と決め打ちだとサマータイム対応できないから。システムで日時処理はUTCオフセット。TZ解釈ズレに強い”
  • 1