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

  • 大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita

    Webアプリケーション開発についての知見を、自分の経験と知識をベースに整理してみようという試みです。 いわゆるサーバサイドにスコープを絞り、フロントエンドは対象外です。筆者は普段、オブジェクト指向言語で書いているので、記事でもその前提(RubyPHPPythonJavaScalaあたりを想定)になっています。 では、編をどうぞ。 ソフトウェア開発は複雑さとの戦い 『人月の神話』では、ソフトウェアの質的な困難性について4つの性質をあげている。その中で最初に出てくるのが「複雑性」である。『新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡』なんか読んでもらえると、ソフトウェアの複雑性と戦うために、人類が生み出してきた発明の数々が説明されている。 では、複雑さとは何か?もう少し掘り下げて考えてみよう。 複雑さの正体 Webアプリケーションが複雑になる

    大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita
  • サービスクラスについては僕も悪かったと思っているけど、それでもCQSは実現したいんだ - Qiita

    このエントリは Ruby on Rails Advent Calendar 15 日目です。(遅くなってすいません) 同時に 14 日目のじょーかーさんのエントリへのアンサーエントリでもあります。 (まあ、じょーかーさんがこの Advent Calendar に登録したときに、タイトルから内容を推察してこれを書くことを決めましたが、実際のところ、あまりアンサーにもカウンターにもなってないし、全然関係ない内容と言えないこともないので、まあサービスクラスについては僕も推奨したことがあるし、僕も反省してるんですよ程度に読んでもらえると幸いです。) まずはじめにごめんなさい 3 年くらい前に僕は Rails にサービスクラスというものを導入するといいことがあるよと書いたのだけど、それからいくつもの Rails アプリケーションを見たり、実際に自分で開発したりして、うーんって思うことも増えてきたので

    サービスクラスについては僕も悪かったと思っているけど、それでもCQSは実現したいんだ - Qiita
    cocoasynn
    cocoasynn 2016/12/18
  • 機械学習モデルの実装における、テストについて - Qiita

    数あるフレームワークに付属するExample、機械学習モデルを実装してみた、という話。これらに共通して言えるのは「テストがない」ということです。 機械学習のモデルだって、アプリケーションに組み込まれればプロダクションコードの一部です。テストがない実装を番環境に組み込むか?というと通常そんなことありえないと思います。 (スタジオジブリ 紅の豚 より拝借) 忘れられがちな点ですが、機械学習モデルは「リリースした瞬間」が最高精度になります。なぜなら、リリースした瞬間こそがその時点で手に入るフルフルのデータを使って鍛え上げたモデルであり、それ以降はどんどん未知のデータが入ってくるためです。 そのため、モデルの精度、また妥当性をいつでも検証できるようにしておくというのはとても重要です。これは通常のコードにテストをつける理由と同等で、つまり機械学習モデルだからと言って特別ではないということです。

    機械学習モデルの実装における、テストについて - Qiita
    cocoasynn
    cocoasynn 2016/12/16
  • 質問は恥ではないし役に立つ - Qiita

    一年半SEとして働いてきた中で、私自身が苦手だと思っており、他人からもそのように評価されていたのが「質問の仕方」でした。 それが先日、他人から「質問の仕方がうまいね」と褒められることがあり、ようやく一人前の質問の仕方ができるようになってきたので、どのようにして克服できたのか紹介したいと思います。 質問の基形 私が入社したばかりの頃は、わからないことがあればすぐに先輩に質問していました。 そのときにしていた質問の内容はだいたいこんな感じです。 「環境構築を手順書通りにやったんですけど、○○のコマンドでエラーがでてしまいます!なんとかなりませんか?」 このような質問を受け取ったら、先輩は暇ならばエラーメッセージを見てくれ、エラーメッセージに書かれていることに対して調査してくれるかもしれませんが、忙しいときにはそんなことはしてもらえません。 こんな質問を繰り返しているうちに先輩からは「技術系メ

    質問は恥ではないし役に立つ - Qiita
    cocoasynn
    cocoasynn 2016/12/14
  • radikoの録音ツールをGoで書いた - Qiita

    この記事は、Go (その3) Advent Calendar 2016 の12日目の記事です。 radigo radikoの録音用のツールをGoで書きました。 https://github.com/yyoshiki41/radigo Record radiko 📻 radikoのAPIのライブラリも書きました。 https://github.com/yyoshiki41/go-radiko The unofficial radiko.jp APIs Client Library for Go. ※ 現在(2016年12月)、radikoが公式でAPI公開を行っているわけではありません。 radiko とは radiko.jp で、インターネットでラジオが聞けるやつです。 今年(2016年)の10月より、タイムフリーという機能がスタートして、 過去1週間分の放送を遡って聴けるようになりまし

    radikoの録音ツールをGoで書いた - Qiita
    cocoasynn
    cocoasynn 2016/12/12
  • 2016年のディープラーニング論文100選 - Qiita

    これはFujitsu Advent Calendar 2016の11日目の記事です。 掲載内容は個人の意見・見解であり、富士通グループを代表するものではありません。なお、内容の正確性には注意を払っていますが無保証です。 はじめに この記事では先月今年発表されたディープラーニング論文(ArXivでの発表時期、発表された国際会議が2016年開催またはジャーナル掲載が2016年のもの)から私が個人的に重要だと思った論文を収集しています。また、2015年末ごろの論文も重要なものは採用しています。 以下の投稿も合わせてご覧ください。 2017年のディープラーニング論文100選 DeepLearning研究 2016年のまとめ 2016年の深層学習を用いた画像認識モデル foobarNet: ディープラーニング関連の○○Netまとめ NIPS2016実装集 ディープラーニングにとっての2016年 20

    2016年のディープラーニング論文100選 - Qiita
    cocoasynn
    cocoasynn 2016/12/12
  • 筋トレを継続する技術 - Qiita

    筋肉 Advent Calendar 201611日目の記事です。 やってみたいと思う人が10万人いて、やってみる人が1000人いて、諦めずに継続する人が10人いる。こう考えると案外ライバルって少ないだろ?10万人見て競争にビビるな。先ずやれ。そして継続しろ。行動に移せる事、継続できる事は立派な才能だ。人生一度きりだ。縮こまってないで派手に行け。 — Testosterone (@badassceo) 2016年12月6日 という訳で、筋トレをはじめて2年ちょっと、その間に継続・習慣化するためにやってきたことを書く。 自宅でやる 「着替えるの面倒」とか「雨降ってるし、、」とか、そういう影響を受けないようにする。 そもそも人見知りのひきこもりおじさんにジム通いとか無理。 準備運動 トレーニング前に必ず準備運動をやる。 気分が乗らないときも、とりあえず準備運動をやる。 準備運動やったあとに「と

    筋トレを継続する技術 - Qiita
    cocoasynn
    cocoasynn 2016/12/11
    良い話だった。やっていくぞという気持ち。
  • 意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita

    追記 その後GoConfernce2017で発表させていただき、その内容をまとめた記事を書いたので参考になれば幸いです。 GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang はじめに goroutineはGo言語の大きな特徴である並行処理を支える重要な機能です。 しかし、goroutineの仕組みについてしっかり理解しないままコードを書いてしまうと思わぬ挙動をしてしまうことがあるので注意が必要です。 今回はそんなgoroutineのスケジューリングの挙動についてまとめてみました。 僕自身がgoの書き始めの頃に引っかかった部分なので、初心者のgoroutineへの理解の助けになれば幸いです。 goroutineの特徴 goroutineは最小で2048byteなので、 Windows だと 1 MB、Linux だと 2 MB であるスレッドのデフォル

    意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita
    cocoasynn
    cocoasynn 2016/12/11
  • Rubyを評価するCLIツールはCRubyとmrubyのどちらで実装するべきか - Qiita

    最近MItamaeやxkremapなど、Rubyで設定ファイルを既述するCLIツールをCRubyではなくmrubyで実装することがあったのだが、そのようなCLIツールを作る際にCRubyではなくmrubyを使うことへの妥当性について考えていたことをダンプしておく。 以下、ハードウェアにmrubyを組み込む用途や、Ruby以外で書かれた既存のツールにmrubyを組み込む用途については(僕は特に経験してないので)除外して書きます。 CLIツールの作成にmrubyを使うメリット CRubyrubygemsの存在に依存しないバイナリとしてCLIツールを作ることができる gem installする場合に比べ、rbenvに気を使わずバイナリを叩くだけで手軽に実行できる gem installして入れたCLIツールは、rbenvが入っている環境ではrbenv globalや.ruby-versionが

    Rubyを評価するCLIツールはCRubyとmrubyのどちらで実装するべきか - Qiita
    cocoasynn
    cocoasynn 2016/12/09
  • 顧客が本当に求めていたsprockets、sprockets-commonerの紹介 - Qiita

    はじめに みなさんにdisられて久しいsprockets氏ですが、メリットはそのままこれまでの問題を解決してくれるsprockets-commonerという素晴らしいgemを見つけたので紹介します。 sprockets-commonerとは sprockets-commonerとは、Railsコミッターも在籍するShopifyで作られたsprocketsの拡張gemです。 このgemの機能の中でも特に嬉しいのは以下の2つの機能です。 1. node.js/ESnextでフロントエンドを書けるようになる sprockets-commonerを入れると、sprockets管理下のJSファイルをbabelでトランスパイルしてくれるようになります。 そのため、node.js/ESnextでフロントエンドを書けるようになります。 一応、sprockets次バージョンの4でもESnextは書けるように

    顧客が本当に求めていたsprockets、sprockets-commonerの紹介 - Qiita
    cocoasynn
    cocoasynn 2016/12/09
    よさげ
  • そろそろプログラマーもFPGAを触ってみよう! - Qiita

    これはbuilderscon tokyo 2016の発表スライドです。 自己紹介 @kazunori_279 クラウドのデベロッパー・アドボケイト エバンジェリストみたいなお仕事 コミュニティ支援:GCPUG、bq_sushi、TensorFlow User Group etc 趣味FPGA 2013年くらいからいじり始め FPGAエクストリーム・コンピューティング主宰:合計8回 これまでに書いたFPGA記事 はてなブックマークでバズった記事たち マイクロソフトはどうやってBingをFPGAで実装したか: 952 users ハード素人が32bit CPUFPGAで自作して動かすまで読んだのまとめ: 576 users 文字通り「ネットワークがコンピューター」な金融HFTでのFPGAの使われ方: 517 users JP Morgan Chaseがデリバティブ専用スパコンをFPGA

    そろそろプログラマーもFPGAを触ってみよう! - Qiita
    cocoasynn
    cocoasynn 2016/12/03
    モテたいのでHDLやり始めよう
  • 取り急ぎpix2pixで遊んでみた(追記あり) - Qiita

    概要 先日発表されたpix2pixが楽しそうだったので実際に動かしてみた。 対象を絞れば学習画像が500枚程度でもそれなりに動く。 結論:GANすごい。 はじめに pix2pixとは、ざっくりと言えば、2画像間に潜む画像変換をDNNで表現してしまおう!というものです。変換前後の画像さえ用意できれば大体どんな変換でも対応可能らしく、例えば以下のようなことが可能らしいです。 航空写真 → 地図画像 モノクロ画像 → カラー画像 線画 → カラー画像 (上記すべて逆も可能) 何やら万能っぽい雰囲気!素晴らしいことにコードが公開されている(torchだけど)!しかも自前画像でも簡単に試せそう! ということで試してみました。 データ flickrから収集したラーメン画像(1,000枚)を使用。多少のゴミは無視で。公式のソースコードに合わせて、各画像を中心でクロップ&リサイズしておき、学習画像と評価画

    取り急ぎpix2pixで遊んでみた(追記あり) - Qiita
    cocoasynn
    cocoasynn 2016/12/02
  • AbemaTV の番組表リニューアルに伴うパフォーマンス改善 - Qiita

    以前の番組表 ↓↓↓ AbemaTV 新番組表 大きく変わったところ チャンネルが横スクロールですべて見れるようになった サイドバーにチャンネル一覧ができた 日付切り替えがセレクトボックスからカレンダー表示になった etc. 今まではチャンネルが 5ch 毎に区切られていたので、わざわざページを切り替えて見ないといけなかったのを、横スクロールですべてのチャンネルが一覧で見られるようになりました。 さらにチャンネル毎の番組表にもアクセスしやすくなり、日付の切り替えもしやすくなったかと思います。 このリリースによって、ユーザービリティが少しでも向上していれば幸いです。 しかし、便利になった反面、このリリースに至るまでに、パフォーマンス面で様々なところで問題になりました。 今回は実際にリニューアル中に課題となった箇所と解決方法の一部を紹介します。 AbemaTV 以外であまり参考にならないかもし

    AbemaTV の番組表リニューアルに伴うパフォーマンス改善 - Qiita
    cocoasynn
    cocoasynn 2016/11/27
  • Matrix Factorizationとは - Qiita

    Machine Learning Advent Calendarです。 普段はGunosyという会社で推薦システムを作ってます はじめに 推薦システムに関する最近の文献を読むと結構な割合で出てくるMatrix Factorizartion(MF)と呼ばれる手法があります。 ざっくり言うとこの手法は協調フィルタリングにおける次元削減を行うことでよりよい推薦を行おうという手法であり、 Netflix Prize(100万ドルの賞金が賭けられた推薦システムのコンテスト)で最も成果を上げたモデルの一つでもあります。 記事ではこの手法を紹介していきます。 協調フィルタリング まず協調フィルタリングについておさらいしましょう。 あるサービスで3人のユーザが5つのアイテムに対して5段階評価をしたとき、その評価値を以下のようにベクトルで表すことができます。 \vec{user_{1}} = (4, 5,

    Matrix Factorizationとは - Qiita
    cocoasynn
    cocoasynn 2016/11/07
  • sprockets4にnpmを利用するための機能が追加された - Qiita

    こんにちは みんなにdisられて久しいsprockets氏ですが、面白そうなコミットが入っていたので紹介します https://github.com/rails/sprockets/commit/6eac004a1567f70270606170f8a4d51d4e2fb3e8 どんなコミット? sprocketsからnpmパッケージを利用するための機能が追加されました。 これにより、例えばこれまでjquery-railsなどjsをラップしたgemを用いていたものを、npmで管理できるようになります。 この変更は何が嬉しいの? この変更により、npmの世界でjsライブラリを管理する道が整備されました。 なぜ道が整備されたことを強調するかと言いますと、別にこれまでもbrowserify-rails/webpack-railsなどを利用すれば同じことが出来たからです。 ただ、「Railsが公式に

    sprockets4にnpmを利用するための機能が追加された - Qiita
    cocoasynn
    cocoasynn 2016/10/27
  • Togetterを支えるお手軽画像配信サーバ(1)Camoで実現するセキュアな画像プロキシサーバ - Qiita

    こんにちは。トゥギャッター株式会社でバックエンド中心にエンジニアをしている @MintoAoyama です。 Togetter はツイートを始めとした様々な情報を組み合わせてコンテンツを作り出すキュレーションサービスです。 2009年に誕生してから今年で8年目に突入し、現在も月間6000万PV・1200万UUを超える規模で成長を続けています。 海外版の Chirpstory も政治家・公共団体・ジャーナリストなど影響力のあるユーザに支えられ、成長を続けています。 そんなTogetter・Chirpstoryを支えるシステムの1つに 画像配信サーバ があります。もう少し詳しくすると リアルタイム変換機能付き 画像プロキシサーバ です。 この仕組み、特に当サービスにおいては地味に重要な役割を持っているのですが、社内に関心を持って貰える人が居なかった(※)ので、とりあえずここに整理することにしま

    Togetterを支えるお手軽画像配信サーバ(1)Camoで実現するセキュアな画像プロキシサーバ - Qiita
    cocoasynn
    cocoasynn 2016/10/25
  • 開発しやすいRails on Docker環境の作り方 - Qiita

    最近、Rails界隈でDocker使い始めました、という話を聞く機会が増えてきたので、自分が開発環境整備用に構築したDockerの設定をまとめておく。 ちなみに、production運用については以前書いたので適当に探してくださいw 結論から書いておくと、volumeをちゃんと活用すればいい、ってだけの話です。 まず、番用と開発用のDockerfileは分けた方が良い。一つでやろうとするとどうにも無理がでるので。 自分はDockerfileとDockerfile-devというものを用意している。 docker-composeはほぼ必須です。少なくともrailsプロセスとDBだけでも二つは必要だし、Dockerfileを分けてると事故るので。 Dockerfileはこんな感じ。 FROM mybase:ruby-2.3.1-debian RUN echo "deb http://http.

    開発しやすいRails on Docker環境の作り方 - Qiita
    cocoasynn
    cocoasynn 2016/10/25
  • 深層学習フレームワークヒッチハイクガイドVer4.0 - Qiita

    注意:私は深層学習の専門家ではなくチュートリアルをいくつか動かした程度の初心者です。深層学習のフレームワークについてまとめ記事がかなりあるのですが、情報が古かったり私が知りたいことがなかったりして、自分が知りたいことをまとめました。定期的に更新しています。 深層学習のフレームワーク Framework Developer License Language 動作環境 Feature Qiitaでのタグ付き解説記事(記事数は2016/10/15) 2017/07/17 2018/02/12 2020/02/23

    深層学習フレームワークヒッチハイクガイドVer4.0 - Qiita
    cocoasynn
    cocoasynn 2016/10/18
  • ActiveRecordを速くしたいだけの人生だった - Qiita

    Help us understand the problem. What is going on with this article? Rails3.2からRails4.2に上げたらActiveRecordが遅くなったので、どうやって調査して、どのように対処したかを語ってみたい。 とても長いので、ダルい人は最初と最後だけ読めばよいです。 TL;DR 環境: Ruby 2.1.5 ARオブジェクトを大量に(ざっくり750kくらい)loadするバッチ処理 3.2系での実行時間は約480sec、 4.2系では約2900sec 約6倍の性能劣化 原因: preloadで性能劣化してた CollectionProxyの生成周りで遅くなってた Rails4からARオブジェクトの1attribute毎にObject生成するので遅い GCの時間も増えた 調査方法: Githubのcommit、Issueを

    ActiveRecordを速くしたいだけの人生だった - Qiita
    cocoasynn
    cocoasynn 2016/08/29
  • 【Python】自然言語処理でラーメン屋を分類してみる - Qiita

    はじめに こんにちは、コピペデータサイエンティストです。 3年ぐらい前に「ラーメンと自然言語処理」というおちゃらけLTをしたのですが、今見ると恥ずかしいぐらいショボいので、Pythonで作りなおしてみました。 長くなったので3行でまとめると Web上に転がっている口コミとか紹介文を Pythonのライブラリを用いて解析することで 好きなラーメン屋に似たラーメン屋を見つける手法を構築した 方法 統計的潜在意味解析という手法を用います。ざっくり言うと、文書がどんなトピックを持っているか、何に関する文書なのか、を推定してくれるものです。 以下の様なイメージで各トピックに割り振られる割合を算出できるため、以下の例ではAとBが近い、ということを計算することが可能です。 ラーメン屋A: [0.75, 0.15, 0.10] ラーメン屋B: [0.60, 0.15, 0.15] ラーメン屋C: [0.0

    【Python】自然言語処理でラーメン屋を分類してみる - Qiita
    cocoasynn
    cocoasynn 2016/08/23