Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
DHHの Dependency injection is not a virtue(2013) という記事は有名ですが、ちゃんとした日本語訳が意外とないようなので、書き出してみて思ったことを要約してみた。[1] Rubyのエンジニアの中には、何も考えずに他のモデルのnewを書いてる人の割合が多いという(コードレビュー時のヒアリングによる)体感があり、また8年前の記事なので経験の浅い人は読んだことがない人もいると思う。該当する方は是非読んでほしい。 全部読む時間が無い人は要約へ. 原文と訳文 In languages less open than Ruby, hard-coded class references can make testing tough. If your Java code has Date date = new Date(); buried in its guts,
負数が含まれる剰余を計算した場合、言語に跨がって一意な結果が得られない。 -5 % 3 5 % -3 C -2 2 C++ -2 2 Java -2 2 Ruby 1 -1 Python 1 -1 Common Lisp 1 -1 さて、なぜこんなことが起きるのかというと、剰余には複数の定義が存在するからである。 m ÷ n = q … rこの r を剰余と言うが、 r の範囲が 0 ≤ r < n 最小非負剰余 -n/2 ≤ r < n/2 絶対値最小剰余 の二つの定義があり、一般的には前者の「最小非負剰余」を用いるようである。 m が負数、 n が正数の場合は、先程の表にあるプログラミング言語は以下のように分類される。 絶対値最小剰余 C C++ Java 最小非負剰余 Ruby Python Common Lisp しかし、最小非負剰余では r が正数になる必要があり、剰余の結果が
プラグイン型バルク・データ・ローダーの Embulk をメンテナンスしている @dmikurube です。 今後の Embulk のロードマップについて、一年ほど前に、記事を (英語ですが) 出したり、ミートアップで話したりしていました。その内容は、開発版 (非安定版) として Embulk v0.10 でしばらく大改造を行い、そこから次期安定版の v0.11 を経て v1.0 を出しますよ、というものでした。 Embulk v0.10 series, which is a milestone to v1.0 More detailed plan of Embulk v0.10, v0.11, and v1 -- Meetup! Java plugins to catch up with Embulk v0.10 from v0.9 それから一年経ち、その v0.11.0 のリリースがいよ
普段Java EEを使ってアプリケーションを書いています。 Javaで書かれたサーバープログラムの場合Tomcatなど、Java EEだとWebSphereやGlassfishなどのアプリケーション・サーバー上にデプロイして動かすことになると思います。 RubyにもUnicornやThinなどがあると思います。 不勉強で申し訳ないのですが、私はずっと「サーバープログラムを動かすためにはアプリケーションサーバーが必要」だとばかり思っていました。 先日Node.jsの勉強を初めたのですが、Node.jsやGo言語にはアプリケーションサーバーがなく、ポートのlistenなどの処理を自分で書いて実行するものだと知りとても驚きました。 これを知ったとき、「デプロイが簡単そうだ」「処理が追いやすくてわかりやすい」など良い印象ばかり感じたのですが、同時に、「アプリケーションサーバーがなくて大丈夫なんだろ
伝えたいことは全てタイトルに書いた。 動機 https://github.com/topics/awesome を眺めていて本当にawesomeなものばかりだった (割にあまりどこにもそのawesomeさが書かれていないように見えた) ので書く。 awesomeリストとは GitHub で使われる慣習的なリポジトリについてまとめてみた#awesome より: 「特定テーマに関するキュレーションを行うリポジトリ。Markdown のリスト表記で一覧化するのが一般的。また、Contribution も受け付けている(人気のあるリポジトリはガイドラインも厳しめ)。」 Where? ここのことです: https://awesome.re/ 画像はリポジトリから引用。 What? What is an awesome list? よりDeepL翻訳 awesome マニフェスト もしあなたのリストを
この記事はRuby Advent Calendar 2020の17日目です。 TL;DR GraalVM: 問題無く動作するがgemとか考えるとめんどそう。JavaのエコシステムやJS/Pythonなど別言語と組み合わせたい時には便利。 RubyPacker: gem/bunlder含めて特に問題なく動く。フルスペックRubyが必要なら現状でベスト mruby-cli: ビルド速度含めて最軽量。使えるならこれがベストシナリオ。エコシステムが弱いのが欠点 はじめに 皆さんはRubyをなんに使っていますか? 多くの方は 「Railsを使ったWebアプリケーション」 と回答されるのではないでしょうか? 私の場合は少し違ってCLIのコマンドを作るのによく使います。Bashよりちょっと凝ったことをするのに自分にはちょうど良いんですよね。手に馴染んでるので。 ただ、今この手の用途に一番利用されるのはG
序 開発マシンで用いられることも増えてきているChromebook。3万円ちょいで衝動買いしたが、フルHD 15インチディスプレイで重さ2KG以下、半日作業くらいはバッテリーだけでこなせるので、重宝しそう。 Chromebookは、近時、GUIアプリが動く仮想Linux環境(crostini)が提供されたことにより統合開発環境(IDE)も動くようになっている。だが、日本で安価に入手できるChromebookは、RAM容量が2GBまたは4GBといった構成となる(RAM容量が多く高速なCPUを積んだChromebookは、Amazon等を介して輸入することに)。そのため、コマンドラインインターフェイス(CLI)で少なめのRAMを活かした開発を行う方法をマスターしておいた方が良いよ、というエントリー。 Chromebrew Chromebookで開発者モードに入った場合、はじめにChromebr
オラクルはGraalVMの1.0リリースを発表した。これは多言語対応の仮想マシンとプラットフォームである。最初のリリースにはJavaとJVM言語の実行機能 (バイトコードを通じて)とJavaScriptとNode.JSの完全なサポート、RubyとPython、R、LLVMバイトコードのベータでのサポートがある。 プラットフォーム全体は多数のコンポーネントから成る。 Graal - Javaで書かれたJITコンパイラ SubstrateVM - 実行コンテナを考慮せずに済む軽量ラッパ Truffle - 言語インタプリタ構築用のツールキットとAPI 全体としての目的は別の実行コンテナ内に組み込める多言語実行環境を提供することである。OpenJDKコンテナや別の可能性、たとえばオラクルやMySQLデータベースの中といったものだ。 InfoQはOracle LabsのResearch Direc
GraalVMが1.0.0 RC1を出し、公式サイトを公開しました! http://www.graalvm.org/ 日本の技術ブログメディアPublickeyさんも取り上げておられます。 www.publickey1.jp そのこともあって、Graalで検索しこのブログへたどり着いた方も多かったです。私は1年ほど前、0.23の頃からGraalVMとGraal(両者の違いは後述)を触ってきました(単に触っているだけの1ファンです)。おそらく熱狂的なファンの方で、JavaOneではGraalとあるものは全セッション入りましたし、YouTubeにある世界の技術カンファレンス動画でGraalに関するものはおそらくすべて見ています。 なので自己満足がてらGraalVMについて書いていきます。 GraalVMって何なの? 端的に言うと"Polyglot VM"です。Polyglotとは多言語を意味し
オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用 JavaやJavaScriptなどには、それぞれその言語を実行するためのランタイムが存在します。JavaならJavaVM、JavaScriptならJavaScriptエンジンといった具合です。 米オラクルがオープンソースで公開した「GraalVM」は、これまで言語ごとに個別に用意されていたランタイムを統合し、単一の高性能なVMにするという同社の研究の結果開発された汎用仮想マシンあるいは汎用ランタイムです(米オラクルのブログ、日本語訳)。 GraalVMのWebサイトには、次のような説明が記されています。 GraalVM is a universal virtual machine for running appli
概要 1582年10月5日〜1582年10月14日までの10日間は、何らかの自然現象(ゴゴゴゴゴ)によって時間が消し去れてた期間として知られています。プログラミング言語を使ってこの日を取り扱おうとすると、いろんな結果が出力されます。 今日はそんな素敵な日付である1582年10月5日と戯れて、貴重な1日を無駄にしてみたいと思います。 Java とりあえずJavaから。バージョンは7。 // 1582/10/05をパース Date dt1 = new SimpleDateFormat("yyyy/MM/dd").parse("1582/10/05"); System.out.println(dt1); // 1582/10/04をパース Date dt2 = new SimpleDateFormat("yyyy/MM/dd").parse("1582/10/04"); System.out.p
プログラマとして Symfony 歴は 2 年くらい(フルタイムではない) Symfony1 時代はほぼ知らない Java, Ruby, JavaScript, elisp, PHP github 上では JavaScript プログラマ? 代表作は power-assert Why Symfony? なぜ Symfony を選んだか 「コードがしっかりしている」 メンテ方針がしっかりしている(長期サポート, 後方互換性) DIベースの疎結合設計で自分でアーキテクチャを進化させやすい 中長期的な生産性が高まることを期待できる
JVM Operation Casual Talksで出てた話としてJavaでhot deployってどうしてんの?ってのがありました。 hot deployっていうのはアプリケーションコードを変更してもAPサーバーを再起動せずに反映する技術です。 この辺別に僕は全然知らないし答えを持っているわけではないですが、まあちょっと興味があったのでLL言語でのhot deployとJavaでhot deployを簡単に調べたのでメモっときます。 コードを変更してAPサーバーを再起動する場合、APサーバーが止まっているときにアクセスが行くと困るので、ロードバランサから外してAPサーバーを再起動してまた戻すみたいなことをやるのがオーソドックスな方法のようですが、hot deployだとそういったことをやる必要が無くなります。 Server::Starterから学ぶhot deployの仕組み - $s
追記:μOSvはOSv本家にマージされました。 こちらのWikiの「OSvをビルドしてより多くのアプリを試す」以下を参照して下さい。 μOSvというものをgithubで公開したので、ここに簡単な説明を書いておきます。 実行イメージ動画: これは何?(OSvを知らない人向けの説明) ローカルマシン上のKVM・Xenや一部のIaaSサービス・VPSなどで走る、mrubyスクリプトを実行する事のみに特化されたOSです。 mrubyインタプリタの実行に汎用OSを必要としないため、とても少ないメモリ使用量(今のところ90MB以上なら動く)・ディスクイメージサイズ(今のところ26MB)・とても速い起動時間(今のところ2秒くらい)で動作します。 mrubyなのでRubyで使えるAPIが全て使えるわけではありませんが、ネットワークアクセスを行う小さなアプリケーションであればLinux上で動作するRubyス
ライブドアブログの PSGI 化の話 は良いはなしだと思う。一方で、私はあんまり Perl が好きじゃないので、10年にわたって生き続けた Perl アプリケーションが、次の10年にむけてアップをはじめているのは、ちょっとしたホラーでもある。 Twitter と Ruby と JVM ライブドアブログが、将来に向けて mod_perl から PSGI + Starlet にかえたように、将来に向けてプログラミング言語をかえる人達も存在する。最近の事例で有名なのは、Twitter の Ruby から JVM 言語群への移行だろう。 OSCON Java 2011 の Twitter: From Ruby on Rails to the JVM では、JVM への移行に至った理由として Ability to handle server workloads A real concurrency
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く