タグ

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

  • Repositoryパターンのアンチパターン - Qiita

    よく見かけるRepositoryパターンのアンチパターンの紹介と対策です。 Repositoryパターンとは Repositoryパターンとは永続化を隠蔽するためのデザインパターンで、DAO(DataAccessObject)パターンに似ていますが、より高い抽象度でエンティティの操作から永続化ストレージを完全に隠蔽します。 例えばDBコネクションやストレージのパス等はReposiotoryのインターフェースからは隠蔽され、Repositoryのユーザは永続化ストレージが何であるか(例えばMySQLやRedis等)を意識することなく保存や検索の操作を行うことができるようになります。 これによりRepositoryを利用するロジックは業務的な操作に集中できるようになる他、データベースの移行等の永続化層の変更が発生した際にロジックへの影響を切り離すことができるようになります。 // 例) ユーザ

    Repositoryパターンのアンチパターン - Qiita
    mak_in
    mak_in 2018/05/19
  • 計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。今回は計算量オーダーの求め方について書きます。 0. はじめに 世の中の様々なシステムやソフトウェアはアルゴリズムによって支えられています。Qiita Contribution ランキング作成のために用いるソートアルゴリズムのような単純なものから、カーナビに使われている Dijkstra 法、流行中のディープラーニングに用いられている確率的勾配降下法など、様々な場面でアルゴリズムが活躍しています。アルゴリズムとはどんなものかについて具体的に知りたい方には以下の記事が参考になると思います: アルゴリズムとは何か ~ 文系理系問わず楽しめる精選 6 問 ~ アルゴリズムを学ぶと $O(n^2)$ や $O(n\log{n})$ や $O(2^n)$ といった計算量オーダーの概念が登場します。こうした記法を見ると

    計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita
    mak_in
    mak_in 2018/05/11
  • Nginxのupstreamに安易にlocalhostと書くと嵌まる罠、またはドメイン名解決の挙動 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Nginxのupstreamに安易にlocalhostと書くと嵌まる罠、またはドメイン名解決の挙動 - Qiita
    mak_in
    mak_in 2018/05/11
  • JavaScriptのプリミティブへの変換を完全に理解する - Qiita

    console.log(["foo", "bar"] == "foo,bar"); // true console.log([""] == 0); // true console.log((123 ^ {}) === 123); // true const obj1 = ["😂"]; const obj2 = ["😂"]; console.log(obj1 == "😂", "😂" == obj2); // true true console.log(obj1 == obj2); // false このような挙動は面白いので、Twitterとかで誰かが話題にするたびに多少は話題になります。しかしいい加減飽きたので、皆さんにはこんなの常識として理解しておいていちいち騒がないでいただきたく、この記事を用意しました。 この記事では、JavaScriptにおけるプリミティブ変換に関する仕様を

    JavaScriptのプリミティブへの変換を完全に理解する - Qiita
    mak_in
    mak_in 2018/05/11
  • FizzBuzz Zero ―― 人類の知識なしでFizzBuzzをマスターする

    プログラム問題としてあまりにも有名になってしまったので、今ではあらゆる言語のFizzBuzzがそろっています。面白いですね。 深層学習 で FizzBuzz この記事の読まれている大半の方は、FizzBuzzを書くのにあまり苦労しないでしょう。 しかし、あなたが何かの拍子でプログラムの書き方を忘れてしまったらどうでしょう? 心配する必要はありません。そういうときこそAIの出番です。 最近は空前の人工知能ブームで、も杓子もDeep Learningです。 実際、Deep LearningによるFizzBuzzは、いくつも先例があります。 Fizz Buzz in Tensorflow TensorFlowコトハジメ Fizz-Buzz問題 Kerasでfizzbuzz問題を解いてみる 実装方法にはバリエーションがありますが、基的には 入力は直前の数値 or 文字列 出力は「数値」「Fiz

    FizzBuzz Zero ―― 人類の知識なしでFizzBuzzをマスターする
    mak_in
    mak_in 2018/05/11
  • vscode と haskell-ide-engine で Haskell 開発環境を構築する - Qiita

    この画像は家リポジトリのスクリーンショットを引用しています。 現在の最新バージョンは v0.13.0.0 です。この記事は以下のリビジョンで動作確認しています。 λ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules λ cd haskell-ide-engine λ git rev-parse HEAD 7cf1295a2804a527381331bb7b73d58255721edc v0.13.0.0 の変更点 また、vscode-hie-server の最新バージョンは 0.0.30 です。 haskell-ide-engine のビルド時間めちゃ長い問題について 現状、公式からビルド済みのバイナリは配布されていません。 「Nix で Haskell IDE Engine をシュッ

    vscode と haskell-ide-engine で Haskell 開発環境を構築する - Qiita
    mak_in
    mak_in 2018/05/08
  • 結局、機械学習と統計学は何が違うのか? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? これは私達の行っているデータサイエンスのトレーニングで、日でもグローバルでもよく聞かれる質問です。実は2年ほど前にこの質問に正面から真摯に答えていた"Machine Learning vs. Statistics"という、とても素晴らしい記事があるのですが、今日は、そちらの記事をみなさんに紹介してみたいと思います。 ちなみに、筆者のTom FawcettとDrew HardinはSilicon Valley Data Scienceというデータサイエンスのコンサルティング会社で、多くの有名企業がデータサイエンスを使ってビジネスの問題を

    結局、機械学習と統計学は何が違うのか? - Qiita
    mak_in
    mak_in 2018/05/08
  • Javaのサポートについてのまとめ2018 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Javaのサポートについてのまとめ Javaのライセンスやサポート状況について混乱が発生しているように思います。Javaのサポートを各団体がどのように行なっているかをまとめてみます。 知っておいてほしいのは、Javaの実装やサポートはOracle JDKかOpenJDKの二択、ではなくAdoptOpenJDKやAzul Zulu、Corretteなど多くの選択肢があるということです。 ここでサポートはバグやセキュリティに対応したパッチがリリースされることを表しています。 Javaのリリースサイクル これまで、Javaは3年ごとを目標に結

    Javaのサポートについてのまとめ2018 - Qiita
    mak_in
    mak_in 2018/05/08
  • DDDでエンティティ間の関連を「ロールオブジェクト」でスマートに扱う - Qiita

    はじめに 実践ScalaでDDD で発表した中で、エンティティ間の関連を「ロールオブジェクト」として定義する ことをお話ししましたが、スライドでは要約になっています。 実際にプロダクトでやってみて有効なパターンだと感じているので、改めて突っ込んで解説したいと思います。 なお、内容的には Scala をターゲットとしていますが、他の言語にも考え方は応用できると思います。 サマリ DDDで設計していると エンティティ と エンティティ の間に関連があり、その 関連に関するドメインの振る舞い と言うものが出てきます。 例えば 「ユーザー エンティティ」 と 「タスク エンティティ」 がある場合に、その間には 「タスクの作成者」 や 「タスクの担当者」 と言う関連があったりします。 そしてそれらの関連は「タスクの作成者は、タスクを削除する」や「タスクの担当者は、タスクを完了する」のような振る舞いを

    DDDでエンティティ間の関連を「ロールオブジェクト」でスマートに扱う - Qiita
    mak_in
    mak_in 2018/05/03
  • 野心的! IT職種・タスク・スキルを全網羅! iCDをざっくりまとめ - Qiita

    ITサービスの企画から運用までの全部について、担当職種とかスキルとかタスクをまとめた資料ってあるのかしらと思ったらあったので(びっくり)、ざっくりまとめてみました。 IPAすごい。 情報源 IPA情報処理機構 i コンピテンシ ディクショナリ概要 i コンピテンシ ディクショナリ 関連資料のダウンロードと関係情報 i コンピテンシ ディクショナリ活用システムとは iCDオフィシャルサイト iCDでできること iCDとは i コンピテンシ ディクショナリ解説書(PDF) ダウンロード iCDってなんですか? ◆iCDは辞書 業務と能力を網羅した2つの辞書で構成 https://icd.ipa.go.jp/icd/icd/dictionary 会社には組織があり、様々な役割に応じて業務を分担しています。この業務を遂行するためには能力が必要となり、そのレベルの総体が会社全体のポテンシャルとなりま

    野心的! IT職種・タスク・スキルを全網羅! iCDをざっくりまとめ - Qiita
    mak_in
    mak_in 2018/05/03
  • Elmはどんな人にオススメできないか - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 高品質なWebフロントエンド開発を可能にするためのプログラミング言語Elm。その長所を上げればキリがありません。 強い型制約によって実行時エラーをほぼゼロにできること リリースごとに言語機能が減るというどこまでも考えつくされたシンプルな設計 それでいて実用的なアプリケーション開発にとことん貪欲な機能たち まともなパッケージマネージャー テストしやすさ ...... 一方で、そういった強力な武器たちの切れ味を保つために他の言語とは異なる事情を抱えています。 記事では、その特有な性質がゆえに誤解されてしまうことも多い Elm

    Elmはどんな人にオススメできないか - Qiita
    mak_in
    mak_in 2018/05/02
  • VBAプロシージャ集 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Option Explicit '------------------------------------------------------------------------------- ' 指定時間プログラムを停止する。 '------------------------------------------------------------------------------- ' note : ミリ秒で指定。WindowsAPI。 '----------------------------------------------

    VBAプロシージャ集 - Qiita
    mak_in
    mak_in 2018/04/30
  • JavaScriptにフレームワークが必要な理由 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? JavaScriptにはむしろもっと抽象化がもたらされるべき - Qiitaという記事で、もう少し踏み込んだ話を書いてみました。 某所でReact.js界隈の人に聞きたいというフレームが発生したのだが、はてなブックマークでコメントしたらIDコールされたので、反論をここに書くことにした。(最近は技術系記事はQiitaにしか書いてないので)。 あくまで僕が考えるなので、JavaScript界の人達が当はどう思っているかはわからない。そもそもJavaScript格的にさわり始めたのごく最近なので、JavaScript界では異端かもしれな

    JavaScriptにフレームワークが必要な理由 - Qiita
    mak_in
    mak_in 2018/04/29
  • 日本一マクドナルドから遠い場所 - Qiita

    きっかけ 日マクドナルド様のサイトの店舗検索の地図をみてたら、やたらたくさんの店舗が一度に表示できる。 これって全店舗一度に読み込んでるのかな、とChromeのデベロッパーツールで覗いてみると、全店舗分のJSONが見えた。 全店舗2887件。 ちょっと拝借して長年の疑問を晴らしてみようと思った。『はたして、日で一番マクドナルドから遠い場所はどこなのか?』 注) 離島は除きます。離島を含めると南鳥島がぶっちぎりです。 Fusion Tablesでプロットしてみる Fusion Tablesに緯度経度をインポートすることでマップに位置をプロットできるのでやってみた。 Fusion Tablesの導入その他に関しては他に説明を譲ります。 とりあえずデベロッパーツールからJSONを丸ごとコピペして編集の末にCSVファイルをでっちあげた。 Fusion Tablesで扱えるように、先頭行にはカラ

    日本一マクドナルドから遠い場所 - Qiita
    mak_in
    mak_in 2018/04/28
  • Angular + Firebaseで作ったWEBサービスをリリースしたので、たまった知見を書き出してみる - Qiita

    はじめに 以前からちょこちょこ新しいWEBサービスを作っているということをQiitaの記事に掲載していましたが、このたび[SCORERA(verβ)」を正式にリリースしました。(2019年3月にサービス終了) サービス構築、リリースにあたって色々と知見がたまったので、作成過程で詰まったことや、リリースにかかる作業のうち技術的な側面のものを中心に公開しておこうと思います。 目次 前提 どんなサービス? 使用している技術 トピック SCORERAのディレクトリとモジュール構成 RxJSの状態管理 外部ライブラリの選定 FirebaseのRealtime DatabaseFirestore クライアントサイドのエラー取得 AngularプロジェクトSEO 技術面以外でやったこと、やること 前提 どんなサービス? 「SCORERA(verβ)」はスポーツ競技や文化系競技(将棋ゲームなど)とい

    Angular + Firebaseで作ったWEBサービスをリリースしたので、たまった知見を書き出してみる - Qiita
    mak_in
    mak_in 2018/04/27
  • Java初心者時代にコードレビューで指摘された悪しき習慣 - Qiita

    Java初心者だった新入社員の頃、先輩にコードレビューで指摘された事を思い出してまとめてみた。 追記:記事に関しては賛否含め、多くの有益なコメントを頂いています。記事をお読みになる際は、是非コメント欄も併せてご覧下さい。 2018/04/26 コメントを参考に「何でも定数にしようとする」の見出し・文を修正しました。@kagilinn さん、ありがとうございました。 2018/04/30 サンプルコードの判定バグってたので修正しました。@y_miz さん、ご指摘ありがとうございました。 コメントの誤記、用語誤りを修正しました。@scivola さん、編集リクエストありがとうございました。 不要なインスタンス変数を作ってしまう インスタンス変数は状態が保持されるので、バグを作り込みやすい。 「これローカル変数でよくない?」ってよく指摘された。 インスタンス変数を作る前に、ローカル変数で実

    Java初心者時代にコードレビューで指摘された悪しき習慣 - Qiita
    mak_in
    mak_in 2018/04/24
  • クロージャとは - Qiita

    ※クロージャと変数のスコープ(追記)を追記しました。 ※コメント欄で環境という用語について議論がありましたが、そもそも環境は専門用語として存在します。詳しくは環境を持つというイメージに追記しました。 使い古された話題ではありますけど、わかりやすく説明できそうな気がしたので書いてみたいと思います。 先に方針だけ伝えておくと、クラスとモジュールと関数は、変数のスコープを切ることができるという共通の性質を持っている、という切り口からクロージャについて説明していきたいと思います。 これだけ読んで何となく先が予想できてしまった人は読まなくても大丈夫かと思います。 それでも読んでくださるという方は、助言なり意見なりをくださるととても嬉しいです。 実行環境 言語はJavaScript(ES2015 or later)を使いますけど、別に知らなくてもなんとかなるんじゃないでしょうか。 何か他の言語をやって

    クロージャとは - Qiita
    mak_in
    mak_in 2018/04/23
  • AWS、何から勉強したらいい?に対する俺の答え - Qiita

    このツイートがわりと好評だったので解説。 「AWS、何から勉強したらいい?」に対する俺が考えた回答がこれ。 pic.twitter.com/ouuP3P27Bu — 伊藤 祐策(パソコンの大先生) (@ito_yusaku) 2018年4月17日 これは誰向け? メンテナー以上の領域を目指す人向け。 オペレータ ... システムの運用、監視、障害調査&対応をする人 メンテナー ... システムの拡張、改善をする人 アーキテクト ... システムを1から設計、構築する人 解説 各科目の選定基準 必修科目 ... AWS番運用するにあたって絶対に避けては通れないサービス。 重要科目 ... 間違った設計をすると、あとから取り返しがつかないサービス。 選択科目 ... 学習量を削るために仕方なく必修から外したが、Webサービスを構築するにあたりほぼ必須となるサービス。 必修科目で押さえておく

    AWS、何から勉強したらいい?に対する俺の答え - Qiita
    mak_in
    mak_in 2018/04/19
  • Microsoftの自然言語分類技術を本気で検証してみた。〈Microsoft Cognitive ToolkitでのChatBot実装〉 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに MicrosoftのDeep Learningツール(Cognitive Toolkit)を使った自然言語分類技術を、機会あって気で実装したので共有しようと思います。 今回のテーマは自然言語分類技術としていますが、もう少し具体的にいうと 自然言語の質問文に一問一答形式で回答するチャットボット です。「チャットボット」という言葉でも少しイメージが広くなってしまうので、今回は「ヘルプデスクの代替として使う問合せチャットボット」に限定します。投稿ではQAチャットボットと呼ぶことにします。具体例としては、こんなやつ。 LOHACO

    Microsoftの自然言語分類技術を本気で検証してみた。〈Microsoft Cognitive ToolkitでのChatBot実装〉 - Qiita
    mak_in
    mak_in 2018/04/16
  • git checkout理解してなかった - Qiita

    TL;DR git checkout <branch>には2つの意味があるよ。 HEADを<branch>ブランチに移動するだけ。<branch>ローカルブランチが存在しているときにこの振る舞いをする。 git checkout -b <branch> origin/<branch>のショートカットとして。<branch>ローカルブランチが存在せず、かつorigin/<branch>というremote-tracking branchが存在するときに、この振る舞いをする。この時、<branch>は、tracking branch、origin/<branch>はupstream branchとなる。 準備 Definition Pro git 2nd Editionから: branch .. simply a lightweight movable pointer to one of com

    git checkout理解してなかった - Qiita
    mak_in
    mak_in 2018/04/16