タグ

ブックマーク / thinkit.co.jp (22)

  • DropboxがコアサービスをRustで書き換えた背景とは

    ファイルシェアサービスのDropboxが主要なコンポーネントをPythonからRustに書き換えた。その背景を探る。合わせて、Rustの普及についても紹介する。 ファイルシェアサービス(クラウドストレージ)のDropboxが、コアとなるサービスの一つをPythonからRustで書き直したことをブログで公開した。これはクライアントとサーバー間でファイルを同期させる重要なコンポーネントである「Sync Engine」と呼ばれるソフトウェアを、PythonからRustに変えた背景を解説したものだ。 参考:Rewriting the heart of our sync engine Rustは、Mozilla Foundationが開発をリードしているメモリーセーフなコードの生成を目指したオープンソースの低レベルプログラミング言語だ。ここで言う「低レベル」とは、アセンブラーやC言語と同様に抽象度が

    DropboxがコアサービスをRustで書き換えた背景とは
    morioka
    morioka 2020/05/04
  • GPUコンピューティングのNVIDIA、OpenStackでの利用拡大を狙う

    NVIDIAのGPUは、単なるPCゲーム用のグラフィックス専用プロセッサーから、より汎用のコンピュート資源として使われるようになっている。例えば、東工大が手がけているスーパーコンピューターTSUBAME 3.0は、トップクラスの性能と低消費電力の両立を実現している。その中で重要なパーツとして演算を行っているのがNVIDIAのGPUだ。しかし一般の企業が求めるサーバー側の演算処理に関して言えば、まだユースケースが限られており、例えば仮想デスクトップにおけるGPU利用などに留まっていた。しかしエンタープライズにおけるサーバーは、すでにプライベートクラウドを活用するステージに入っており、仮想マシン、マルチコアCPUの有効活用というニーズに対しては回答がなかったというのが現状だろう。 このような現状のもと、先日開催された「OpenStack Days Tokyo 2017」で発表された講演に、「G

    GPUコンピューティングのNVIDIA、OpenStackでの利用拡大を狙う
    morioka
    morioka 2017/09/08
  • Docker向けの軽量Linux OS 主要3種を比較する

    Dockerをより効率的に利用するための技術 通常Dockerを利用する場合は、Linux OSが稼働するサーバ上にDockerのパッケージを追加でインストールすることで、環境を構築している。当然ではあるが、Linux OSのインストール時に「最小限の構成」を選んだとしても、Dockerの稼働には必要のないパッケージもインストールされている状態となる。 Dockerを利用する最大のメリットは、「少ないリソースでたくさんのコンテナ(=実行環境)を起動させられる」ことである。たとえ最小限の構成であってもDocker実行環境としては、多くのリソースが無駄に消費されていることとなる。さらに不要なサービスが実行されていることにより、Dockerで利用しない機能に対してもセキュリティー上のリスクが残ってしまうことになり、不要な運用作業が発生することとなる。 そのため、Dockerに対してもハイパー

    Docker向けの軽量Linux OS 主要3種を比較する
    morioka
    morioka 2016/01/07
  • 一流のエンジニアが集まるクックパッドで聞いたエンジニアのライフスタイルと求められるスキル

    ソーシャルゲームブームを皮切りにしてエンジニア不足が叫ばれるなか、主婦向けのレシピサイトという一見エンジニアからほど遠いWebサービスに、なぜ一流のエンジニアが魅力を感じて次々と集まってくるのか。その秘訣とエンジニアのスキルセットについて、クックパッド技術部長の小川伸一郎氏に伺った。 重力に引かれるように、いいエンジニアが集まってくる ――なぜクックパッドには優秀なエンジニアが集まるのか、その秘訣をお聞きしたいと思います。まず、小川さんはどうしてクックパッドに入られたのでしょうか。 外から見た時には、Rubyの業界で知れ渡った、優秀で知名度の高いエンジニアが、数多く在籍していたから、ということがあります。2010年頃に、当時技術部長だった井原さん(編注:井原正博氏)が、優秀なエンジニアを多数採用するという方向に舵を切りました。その頃から、RubyのコミッターやRuby界隈で知名度のある優秀

    一流のエンジニアが集まるクックパッドで聞いたエンジニアのライフスタイルと求められるスキル
    morioka
    morioka 2015/10/17
  • Project Fi動画で見える端末はグーグルの新型Nexus?

    グーグルが新しいNexusスマートフォンを準備しているかも知れない、と考える新しい理由がある。製造中止になったNexus 5の後釜となるものだ。 最近ではグーグルの新サービス「Project Fi」(ソース: Android Pit) の動画に憶測が集中している。動画は新サービスでのデータ使用量をチェックする方法をユーザーに教えてくれるものであるが、現時点ではNexus 6スマートフォンにしか対応していないのだ。にもかかわらずNexus 6の姿が動画内に見受けられないのだ。 見てわかるとおり、これはかなりの薄型だ: ビデオの中では実機ではなくスマートフォンをアニメ化したものだけが現れる。グーグルがNexus 6を登場させないのは、やはり奇妙に思える。Nexus 6との違いを左右に並べて見てみよう。 左側のNexus 6は角が丸く、最上部のスピーカーに似せたスピーカーが最下部にある。それとは

    Project Fi動画で見える端末はグーグルの新型Nexus?
    morioka
    morioka 2015/05/16
  • Rails4をはじめよう

    はじめに このコラムは、 2014年12月5日から始まった「Rails4技術者認定シルバー試験」の推奨教材となった「Ruby on Railsガイド」に沿って、Ruby初心者の筆者がリアルタイムで勉強をしていくコラムです。全12回を予定しています。勉強する上でつまずいた点やその回避法、他のプログラミング言語や職業経験に基づいたアドバイスなども紹介する予定です。RubyRailsに興味のある方は、ぜひ一緒に勉強してみませんか。 今回参照するガイドはこちらです。 はじめにRailsをはじめよう それでは早速チュートリアルを開始しましょう。 クラウド上に開発環境を構築 何はともあれ、まずは開発環境を揃えないといけませんよね。今回のチュートリアルで一番時間がかかったのが、実はここです(笑)。ガイドには必要なものがさらっと書いてあるだけですが、具体的な手順を把握するために、何度も何度もGoogle

    Rails4をはじめよう
    morioka
    morioka 2015/01/21
  • CentOS 7のネットワーク管理基礎(後編)

    前回に引き続き、CentOS 7のネットワーク設定について取り上げます。新しい設定ツールの登場や、従来のCentOS 6まで慣れ親しんだネットワーク関連の基的なコマンド群の使用が非推奨になるなど、様々な変更点があります。CentOS 7から一新されたネットワークの具体的な設定手順、Tips等をご紹介します。 CentOS 7におけるリンクアグリゲーション 複数のネットワークカードを束ねて一つのネットワーク通信の可用性や性能向上を図るリンクアグリゲーションを実現するteamドライバーがCentOS 7で実装されています。現在の多くのサーバーは、ネットワークポートを複数持っており、このネットワークポートを束ねることで障害が発生してもネットワーク通信を継続させることができます。NICがチーミングされたCentOS 7が稼働するx86サーバーとネットワークスイッチの典型的な構成例を下図に示します

    CentOS 7のネットワーク管理基礎(後編)
    morioka
    morioka 2015/01/09
  • [ThinkIT] 第2回:OSGi仕様が実装されたEquinoxを試す! (1/3)

    「第1回:Javaはまだまだこれからだ!」では、Java SE 7で計画されているモジュラリティの向上について解説し、それを実現するOSGiについて触れました。 今回からはOSGi仕様が実装されたEclipse Equinoxフレームワークを実際に体験していきましょう。一番身近な例としてEclipseを起動し、OSGiフレームワークの稼動の状況をみていきます。 連載ではEclipse 3.3を基に解説を進めますが、配布パッケージによっては開発するためのプラグインが足りません。 以下のWebサイトから「Eclipse for RCP/Plugin Developper」か「Eclipse Classic」をダウンロードしてください。 上記はどちらともZIP形式で配布されています。今回はWindows用の「Eclipse Classic」をダウンロードして、任意の場所に展開してください。展開

    morioka
    morioka 2014/07/25
  • [ThinkIT] 第1回:Webアプリケーションフレームワークとは (1/4)

    近年のWebアプリケーション開発は大規模化が進み、基幹システムなどの一角を担うまでになってきています。また、Webアプリケーション開発はレガシーなシステム開発に比べて手間のかかる部分が多いにも関わらず、開発にかけられる工数は短縮化の傾向にあります。 そのため、案件の大規模化で開発に携わる人数も増える傾向にあり、開発チームの各々がWebアプリケーションのライブラリを別々に制作してしまい、同様の機能を持ったライブラリが複数存在してしまったり、またUIを担当するデザイナーとビジネスロジックを担当するプログラマが、いざそれぞれの部分を組み合わせようとしたらうまく機能しなかったりといった様々な問題が出てきます。 このような背景から、それらの問題に対するソリューションのひとつとして現在、開発現場ではWebアプリケーションフレームワークを用いた開発スタイルが注目され、実際に多くの開発会社がWebアプリケ

    morioka
    morioka 2013/02/08
    古いことはわかってるけど、いまさらながら基礎知識を固めるために。
  • プロキシサーバーを作る!

    仕事で使えるプロキシを作る WEBrickのプロキシでは、ローカルディレクトリにファイルがある場合はそちらを返し、そうでない場合は通常のプロキシとして動作します。これによって既に稼働しているWebサイトを実際に書き換えることなく、デザイン変更などを試すことができます。 ブログのデザイン調整や、既存のサイトのデザイン変更提案などで、実際にファイルを変更せずに自分だけで変更を試すことができるので、私用でも仕事でも有用です。 では、実際にはどのようにプログラムするのでしょうか。 ルールに従ってローカルにファイルを置いておくと、サーバーにファイルを取得せずに、ローカルのファイルを返すようにすることで、実際のWebサイトを変更せずに、ローカルのファイルだけで変更します。このルールは、ホスト名/パス名というファイルを置くことにします。 プログラムの変更はたった5行です。サンプルファイルのproxy5.

    morioka
    morioka 2012/02/17
  • WEBrickを使ってみよう!

    Webサーバー=Apache!? 今、Webサーバーを構築しようとした時、ほとんどの人はサーバーソフトとして「Apache(Apache HTTP Server)」を選ぶと思います。 確かにApacheは非常に高機能で、通常必要と思われるほとんどの機能が備わっています。 しかし、自分用にちょっとしたサーバーを立ち上げるには、その設定項目の多さなどが少し大げさに感じることはないでしょうか? また、大抵のことは設定変更や外部で公開されているApacheモジュールなどで事足りますが、その範囲を超えてWebサーバーを拡張したい場合、自分でApacheモジュールを書かなくてはいけません。 Apacheモジュールを書こうとすると、かなりしっかりドキュメントなどを読む必要があり、また主にC言語による開発になるので、どうしても敷居が高くなってしまい、実際に書くということはほとんどないでしょう。 Apach

    morioka
    morioka 2011/08/08
  • これからはじめるRuby on Rails

    はじめに Rubyと出会ったころ、その簡潔さに感動した著者は、「ここまで自然言語に近い形でプログラムが書けるのであれば、インターネットとPCの違いすら理解しないでも、少しはプログラミングができるようになるかもしれない」と、家庭での普及に挑戦したことがあります。 その試みは、渡した入門書を「はじめてのRUBAI」と読まれた時点で頓挫したわけですが、その経験から「Rubyの文法に従ってはいるが、何やら他言語の匂いを感じるコード」のことを、Rubyの潜在力を生かしきれていないという意味で「RUBAIコード」と呼ぶことにしました。 そして、社内のさまざまな分野のプログラマにRuby開発を指導してみて分かったのは、"RUBAIコード"には、実装レベルの間違いと、設計レベルの間違いがあるということです。 実装レベルの間違いとは、処理を他言語の習慣に従って記述することで引き起こされます。Javaプログ

    morioka
    morioka 2011/07/04
  • [Think IT] 第6回:SSLの基本を押さえる (1/3)

    こんにちは。ビーブレイクシステムズの木下です。前回の「第5回:ApacheをWindowsへインストールするのだ!」ではApacheをWindowsへインストールする方法を説明しました。 今回はApacheでSSLを利用する方法について、「SSLとは何か?」「SSLはどのようなメカニズムなのか?」という点から解説していきます。 SSLとはNetscape Communication社で開発された、WebブラウザとWebサーバの間でやり取りする情報を暗号化して通信するためのプロトコルです。 インターネット上では、クレジットカード番号やユーザID、パスワードなど第三者には知られてはいけない情報がやり取りされています。これらの情報をHTTP通信で送信した場合、盗聴や改ざんされる可能性があります。そこでSSLを利用し、大切な情報をインターネット上で安全に送信する必要がある のです。また、最近増えて

    morioka
    morioka 2011/05/23
  • [Think IT] 第7回:Apache+SSL環境を構築しよう! (1/3)

    こんにちは。ビーブレイクシステムズの木下です。前回はSSLのメカニズムについて解説しました。今回は、皆さんのApacheでSSLを利用する方法について解説します。 それでは、皆さんの環境にApache+SSL環境を構築しましょう。 Apacheをインストールされていない方は、「第2回:Apacheをインストールしてみるのは難しくない」から、「第5回:ApacheをWindowsへインストールするのだ!」を参照し、それぞれの環境に合わせてApacheをインストールしてください。 インストール時の注意点として、ソースインストールを行う方はconfigure時に、「# ./configure ?enable-SSL」としmod_sslを有効にしてください。また、Windowsの方はOpenSSL付きApacheインストーラでApacheをインストールしてください。

    morioka
    morioka 2011/04/21
    もうちょっと新しい記述が無いか探してみるか。
  • 宣言型プログラミングの可能性と限界

    宣言型プログラミングとは 命令型プログラミングと対比されるもう1つの大きな流れとして、ハードウエアとは独立した、数理論理学に根ざした流れが存在します。(純粋な)関数プログラミングや論理プログラミング、制約プログラミングなど、いろいろな理論に根ざしたプログラミングモデルが存在しますが、ここではそれらを総称して、宣言型プログラミングと呼ぶことにします。 宣言型プログラミングは、問題の解法、すなわちデータ構造とアルゴリズムを記述する命令型プログラミングとは対照的なプログラミングパラダイムです。宣言型プログラミングが記述するものは、問題の定義、すなわち解くべき問題の性質や、その際に満たすべき制約の記述です。 問題の定義は、問題の解法とはなるべく独立しているべきです。なぜならば、問題の効率的な解き方は、実行環境に依存したさまざまなやり方が考えられるからです。たとえ、ある環境では効率的な解き方であって

    morioka
    morioka 2008/11/23
  • [Think IT] 第1回:携帯サイトとPCサイトはここまで違う! (1/3)

    XHTML Mobile Profileに対応したHTML 連載では、「PCサイトを制作してきたけど、携帯サイトは初めて」といった企業や個人クリエイター向けにPCとモバイルの違いなどをふまえ、携帯サイトを公開するまでの入門的なノウハウを紹介していきます。 まず、今回はHTMLの種類やタグ、CSSなど携帯ブラウザによる違いと、画面サイズやキャッシュ容量などの端末による違いについて紹介していきます。 では、早速携帯サイトを作る上でマークアップの基となるHTMLについて説明します(図1-1)。携帯電話はPCと比べても非常に早い進化を遂げてきたため、どれも基HTMLを基準に作られていますが、携帯ブラウザ(iモード、EZweb、Yahoo!ケータイ)で表示可能なHTMLの仕様には実に多くの種類が存在します。 現在市場に出回っている機種ということに限定すれば、XHTML Mobile Prof

    morioka
    morioka 2008/10/08
  • 性能比較!WEBrick vs. Apache

    セキュリティーと速度性能 連載の第3回までで説明したように、WEBrickは自分でコードを書くことで、かなり高性能なHTTPサーバーたり得ることが分かりました。 では、HTTPサーバーとして実際に運用するのはどうでしょうか?サーバーを公開する上で気になるのは、セキュリティーと速度性能です。 実は、2008年8月8日にRubyに複数の脆弱(ぜいじゃく)性が発見されました。WEBrickもDoS脆弱性が報告され、外部からWEBrickのサイトを停止させることが可能でした。しかし、この脆弱性は最新版のRubyで修正されているため、現在のバージョンでは問題はありません。 実際に運用するにあたっては、こうした脆弱性については常に注意し、発見された場合は速やかにアップデートやパッチによる対応をする必要があります。 速度性能については、2ページ目以降で実際にWEBrickとApacheの性能評価を行い

    morioka
    morioka 2008/08/27
  • [Think IT] W-ZERO3で開発言語の達人になろう (2/3)

    シンプルで習得が容易なオブジェクト指向プログラミング言語が「Python」である。そんなPythonをW-ZERO3で試せるソフトが「Python CE」だ。もともとはWindows CE上でPythonを実行させるものであるが、W-ZERO3(Windows Mobile)環境でも動作させることができた。

    morioka
    morioka 2008/04/20
  • [ThinkIT] 第3回:iSeriesのシステム・アーキテクチャーに見る仮想化技術 (3/3)

    iSeriesでは記憶域すべてがメモリーのみで構成されているというと信じられないかもしれません。確かに実際にはメモリーだけで構成されるiSeriesはあり得ず、ハードディスクを必ず装備しています。 しかしながらアプリケーションから見ると、メモリーやディスク装置は完全に仮想化されており、記憶域のすべては一元的にメモリーと見なされています。この記憶域管理は先に述べたSLICの内部で行われています。iSeriesの2大アーキテクチャーをあげるとするならば、先ほど述べたTIMIと、単一レベル記憶またはSLS(Single Level Storage)と呼ばれる記憶域管理の仕組みでしょう。 SLSは多くのコンピューター・システムで実現されている仮想記憶の考え方をより進化させたものだと考えることができます。仮想記憶を一言で説明するならば、ハードディスクの一部を使いながら、実際には小さなサイズのメモリー

    morioka
    morioka 2008/02/18
  • [ThinkIT] 第2回:開発の視点からみた.NET (1/4)

    morioka
    morioka 2007/03/14