技術に精通した コンサルタント が併走 経験豊富なアドバイザー 元ITエンジニア、元ゲーム企業人事、 IT会社役員、大手人材エージェント
はじめに こんにちは、技術部の土谷です。 現在、私は2015年4月に総合職の新卒社員として入社したのですが、自ら希望してエンジニアに転向するために6ヶ月間の技術教育(トレーニング)を受けています。 この記事では、私が受けているトレーニングの内容に関してご紹介したいと思います。 なぜやっているのか トレーニングのゴールは「クックパッドで一人前のエンジニアとして働ける技術力を身につける」ことです。 クックパッドでは、ディレクターや営業職であってもサービスに関わるスタッフは全て最低限の技術的な知識を持っているべきと考えられています。 そのため総合職の新入社員研修にも、クックパッドで働く上で最低限の技術的な知識を持つために技術研修が組み込まれています。 ただ、私自身、総合職で内定をもらったものの、「自分でものづくりがしたい」「それも、手を動かして納得のいくものをつくりたい」という思いを持っていて、
サーモン大好き横山です。 Rubyスクリプトからログを出力する際、 logger を使ってログ出力してみた時のメモです。 準備 今回Amazon Linux 2015.09を使いました。 $ cat /etc/os-release NAME="Amazon Linux AMI" VERSION="2015.09" ID="amzn" ID_LIKE="rhel fedora" VERSION_ID="2015.09" PRETTY_NAME="Amazon Linux AMI 2015.09" ANSI_COLOR="0;33" CPE_NAME="cpe:/o:amazon:linux:2015.09:ga" HOME_URL="http://aws.amazon.com/amazon-linux-ami/" $ ruby -v ruby 2.0.0p647 (2015-08-18) [
はじめに Railsアプリケーションを本格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて
こんにちは。新規広告開発部所属エンジニアのレオ(@lchin)です。普段は広告配信関係のシステムを開発していますが、ここ最近「データサイエンス」に興味を持ち始めました。雑に説明すると、データサイエンスは統計学や機械学習などを用いて莫大のデータから価値を引っ張り出す分野です。今回のtechlifeは、そのデータサイエンスを学ぶ過程で知ったツールJupyter NotebookをRuby on Railsの開発に役に立つ使い方を紹介します。 Jupyter Notebookとは何か Jupyter Notebook*1は科学者の「実験ノート」にインスパイアされたウェブ上のインタラクティブシェル環境です。ただのインタラクティブシェル環境ではなく、ソースコード、その実行結果、解説する文書、数式、画像などをまとめて1つの「ノートブック」ドキュメントとして扱えることが特徴です。 Jupyter Not
モバイルアプリサービス部の五十嵐です。 先日、rbenvでrubyをインストールしようとしたところ、CDNからのダウンロードが非常に遅くインストールに手間取ったことがありましたので、対処方法を共有します。 なお、rbenvの基本的な情報を知りたい場合は以下も合わせてご覧ください。 rbenv を利用した Ruby 環境の構築 | Developers.IO 通常のインストール方法 まずは通常のインストールから見ていきます。rbenv installコマンドにバージョン番号を渡すと、CloudFront(CDN)にあるソースコードをダウンロードし、コンパイルまでを行ってくれます。 $ rbenv install 2.2.1 Downloading ruby-2.2.1.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/5a4de38068ec
カレントディレクトリの .txt ファイルをすべて .tex にする Ruby スクリプト カレントディレクトリの .txt ファイルをすべて .tex にする Ruby スクリプト。 #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # vim: set filetype=ruby: Dir.glob("*.txt").each do |filename| if filename.match /^(.*)\.txt$/ body = $1 command = "mv #{body}.txt #{body}.tex" puts command system(command) end end
トレンド調査ラボの青木峰郎(id:mineroaoki)です。 好きなRubyのメソッドは10年前からString#slice(re, nth)ですが、 最近はRubyよりCoffeeScriptとSQLのほうが書く量が多くて悩んでいます。 今日はわたしが開発している「たべみる」の背後で働いている 巨大バッチの構成について話したいと思います。 たべみるのバッチは約3000行のSQLで構成されており、 処理時間が1日で4時間程度かかる、そこそこの規模のプログラムです。 このバッチ処理プログラムをBricolage(ブリコラージュ)というフレームワークで構造化する手法について説明します。 「たべみる」とは まず最初に、「たべみる」がどういうものなのかごく簡単にお話ししておきましょう。 「たべみる」は企業のみに提供しているB2Bの分析サービスで、 クックパッドのレシピ検索の分析をすることができま
うまく通ったHaskellでの解答を載せてみます。(回答期限は終了しています) 最後の方にRuby版も書いてみました。 つなぎ合わせたときの長さLと、N個(1≦N≦5000)の棒の長さが標準入力から与えられるとき、N個の棒の中から3つをつなぎ合わせて長さがLになる組み合わせの総数を求めるプログラムを書いてください。ただし、個々の棒の長さや、つなぎ合わせた長さ(L)は正の整数で、32bit整数で十分扱える範囲です。また、棒の長さはすべて異なるものとします。 【入力】 標準入力から、以下の形式で複数の整数値を読み込みます。 L N a1 a2 ... 1行目のLは、つなぎ合わせた棒の長さです。 2行目のNは、棒の数です。 3行目以降のN行は個々の棒の長さで、長さはすべて異なるものとします。 【出力】 標準出力に、整数値を1つ出力してください。行末での改行は有無を問いません プログラムの実行時間
(2022.5.4追記) FactoryGirlはFactoryBotという名前に変更されています(参考)。この記事は昔の名前である「FactoryGirl」を使っています。 はじめに 今年のゴールデンウイークはMinitestとRSpec、FixturesとFactoryGirlについていろいろ研究(?)していました。 具体的にはこんなことをやっていました。 Rails Tutorial 第3版を写経した(第3版ではMinitestとFixturesを使っている) Rails TutorialのテストコードをRSpecとFactoryGirlで書き直した Everyday RailsのテストコードをRSpec + FactoryGirlからMinitest + Fixturesに書き直した The Minitest Cookbookを読んだ 今回のエントリではMinitestとRSpec
はじめまして。今年度、新卒で入社したエンジニアのうなすけ(id:yu_suke1994)です。RubyもRailsも触り始めたばかりなのですが、なんと入社早々にRailsのバージョンを上げるという大役を任されたので、それについて書いていこうと思います。 tmixの経緯 tmixの歴史について、社内esaをさかのぼって調べてみました。するとわかったことが、ローンチは2009年で、つまり今年で6年が経過することになります(僕が高専に入学する前からあるのか……!)。このブログの過去の記事にもありますが、deployが自動化されたのは去年2014年と、息の長いサービスだけに、現状とそぐわなくなってきている部分も多くなってきています。 僕が入社した頃のRailsは3.2.21で、この時点でRails4.0.0のリリースから2年が経過しています。さすがにもう……ということで、僕にその役目がまわってきま
過去9年わたりWebアプリケーションを開発してきたNiket氏( @nexneo )は、2013年からGoを使って作業をするようになりました。この講演では、彼がどのようにRubyのモノリシックアプリケーションを分解しつつ、Goで記述されたマイクロサービスへと至ったかについて説明しています。講演のスライドは、 speakerdeck.com/nexneo/joy-of-single-purpose-services-in-go で閲覧可能です。 Single purpose servicesというのは、単一の問題を解決するサービスのことです。 一般的に マイクロサービス としても知られています。 Niket氏は、学校側が親御さんたちと連絡したり成績表や出席を管理したりするための人気オンラインプラットフォーム、 Beehively の開発者です。BeehivelyはRubyベースのアプリケーシ
インフラストラクチャー部の菅原(@sgwr_dts)です。 インフラストラクチャー部のメンバーはオペレーションのため強力な権限のMySQLアカウントを使用していますが、サービス開発をするエンジニアも業務のためにサービスのDBの参照・更新権限を持ったアカウントが必要になることがあります。 セキュリティやオペレーションミスのことを考えると、すべてのエンジニアのアカウントをスーパーユーザーにするわけにはいかないため、都度適切な権限を付与していますが、手動での作業は地味に手間がかかります。 そこでクックパッドではMySQLのアカウント情報をコード化し、リポジトリで管理するようにしています。 gratanによるコード化 MySQLのアカウント管理はgratanという自作のツールを使って行っています。 gratanを使うとMySQLのアカウントをRubyのDSLで記述することができるようになります。
こんにちは! VOYAGE MARKETINGの @sayadroid です。 最近は、自社の長寿メディアを丸っとリニューアルするプロジェクトに携わっています。 元来PHP, symfony(1.x(小声))で書かれているそのメディアが、 Ruby on Railsで生まれ変わる予定です。 弊社では様々なメディアが、様々な言語で動いているため、 言語の組み込みクラスの仕様をうろ覚えで書くと、 細かな挙動を勘違いしてしまうことなどもあります。 そんな中で、最近ハマったRuby関連の、罠小ネタを一つ紹介します。 前提 Ruby on Rails 4.2.0 server timezone = JST MySQL5.6 timezone = UTC 「質問」テーブル * body: 質問文 * opened_at: 掲載開始日時 * closed_at: 掲載終了日時 要件 opened_at「
2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。本件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 本件に関する詳細は、プレスリリースをご確認ください。
はじめに 先月、CodeIQにビンゴカード作成問題を出題しました。 CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます! - give IT a try このビンゴカード作成問題、ありがたいことに50人もの方が解答を送ってくれました。 挑戦してくださったみなさん、どうもありがとうございました。 前回のエントリでは優秀作品ベスト3を発表しました。 今回のエントリはその続編です。 一部の解答(5本)について、僕が実際にいただいた解答を採点しつつ、リファクタリングする様子を動画に撮っておいたので、その様子をお見せしちゃいます。 おさらい「ビンゴカード作成問題」とは? ビンゴカード作成問題とはその名の通り、Rubyを使ってビンゴカードを出力する問題です。 Bingo.generate_cardというメソッドを呼ぶと以下のような文字列を出力する、というのが要求仕様で
Errors in plugins? Retry to Update or Configure. NoMethodError undefined method `first' for nil:NilClass (plugin/twitter_summary_card.rb):15:in `twitter_summary_card_description' (plugin/twitter_summary_card.rb):38:in `block (2 levels) in load_plugin' /tdiary/tdiary-core/lib/tdiary/plugin.rb:114:in `block in header_proc' /tdiary/tdiary-core/lib/tdiary/plugin.rb:113:in `each' /tdiary/tdiary-core/li
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く