タグ

ブックマーク / gihyo.jp (19)

  • 第5章 並行プログラミング―ゴルーチンとチャネルを使いこなす | gihyo.jp

    章では、ゴルーチンやチャネル、syncパッケージを用いて、並行処理を行う方法について解説します。 並行プログラミングの基 複数の処理を効率良く行うために、Goは言語自体が並行処理に必要な機能をサポートしています。特に章で扱うゴルーチンやチャネルの機能などは、Goで並行処理プログラミングをするうえで必要不可欠な知識であり、これらを適切に使うことで、マルチコアが一般的になった近年のマシンリソースを最大限に引き出す、パフォーマンスの良いプログラムを作成できるようになります。 節では、ゴルーチンやチャネルを用いた並行処理の考え方と、それらと合わせてよく使うsyncパッケージの使い方などについて解説します。 ゴルーチン Goには、ゴルーチン(Goroutine)という軽量スレッドのしくみがあります。ここまで行っていたmain()関数も、1つのゴルーチンの中で実行されています。go構文を用いて

    第5章 並行プログラミング―ゴルーチンとチャネルを使いこなす | gihyo.jp
    toromoti
    toromoti 2016/01/30
    Read only channel
  • 第1章 Go言語の特徴と環境構築―Googleが作った新言語 | gihyo.jp

    特集のはじめに Goは、2009年にGoogleにより発表されたオープンソースのプログラミング言語です。C言語の開発者Ken Thompson、UTF-8の開発者Rob Pike、memcachedの開発者Brad Fitzpatrickといった名だたるエンジニアによって開発されています。 Goはシンプルな言語仕様であるため学習が比較的容易で、豊富な標準パッケージが同梱されているためすばやく目的を達成できます。また、巨大なコードでも高速にコンパイルできるため大規模開発にも適しており、Windows、OS X、Linuxなどの環境に合わせた実行ファイルを生成するクロスコンパイルのしくみがあるため作成したプログラムを容易に配布できます。並行処理のサポートも充実しており、ミドルウェアの開発などにも適しているとされています。 特集では、2014年6月にリリースされた最新バージョンであるGo 1.

    第1章 Go言語の特徴と環境構築―Googleが作った新言語 | gihyo.jp
    toromoti
    toromoti 2016/01/28
  • 第2回 abcモジュールによる抽象基底クラスの作成 | gihyo.jp

    抽象クラスとインターフェース C++には、抽象クラスという仕組みがあります。 抽象クラスとは、インターフェースのみを定義した純粋仮想関数というメンバ関数をもつクラスです。抽象クラスはそのままでは定義が完全ではないため、継承して純粋仮想関数をすべてオーバライドしなければインスタンスを作れません。 このような抽象クラスを用いることは、クラスのインターフェースを定義し、継承時にオーバライドしてほしいメンバ関数を明示する、という意味があります。 Python においては、そのようなインターフェースのみを定義するという機能が存在しません。そのため、クラスを継承する際にオーバライドするべきメソッドを明示し、オーバライドされていなければインスタンスを作れなくする、というような挙動をさせることは通常できません。 似たような挙動をさせるには、 未実装であることの印としてNotImplementedオブジェク

    第2回 abcモジュールによる抽象基底クラスの作成 | gihyo.jp
    toromoti
    toromoti 2016/01/26
  • 第11回 設定ファイルの次世代フォーマットUCL | gihyo.jp

    プラットフォームへ、大きく変わる/etc/たち FreeBSDではシステムの設定ファイルは/etc/へ、サードパーティ製ソフトウェアの設定ファイルは/usr/local/etc/にインストールされる仕組みになっています。/etc/以下を調べればそのシステムがどういった動きをするかわかります。設定ファイルはソフトウェアごとに用意されていて、そのフォーマットもソフトウェアごとにさまざまです。 この状況は少しずつですが変わり始めています。早ければ11系のリリース時から、大きな阻害要因がない限りは12系や13系では/etc/以下の設定ファイルは大きく異なるものになっているかもしれません。 この動きの動機は、FreeBSDがサーバオペレーティングシステムから、さまざまなシステムの「プラットフォーム」としてのソフトウェアとして性格を変えてきていることにあります。FreeBSDが登場した20年以上前、F

    第11回 設定ファイルの次世代フォーマットUCL | gihyo.jp
    toromoti
    toromoti 2015/07/19
  • 第5章 パーサコンビネータ―小さなパーサを組み合わせて大きなパーサを作る | gihyo.jp

    この章では、関数型の至宝であるコンビネータライブラリについて説明します。 コンビネータとは何か? この章でいうコンビネータとは、ある型の部品と部品を組み合わせて、同じ型のより大きな部品を作るための関数のことです。たとえば、パーサのコンビネータライブラリは、パーサを組み合わせるための各種コンビネータを提供しており、簡単にパーサを作成できます。コンビネータライブラリは、言語内DSL(Domain Specific Language)と表現してもよいでしょう。 関数型では、パーサに加えて、データを文字列でわかりやすく表示するプリティプリンタ、SQL、XML、ハードウェア記述、そしてデリバティブ(金融商品)記述、楽譜記述など多様なコンビネータライブラリが作られ、実際に使われています。この章では、パーサのコンビネータライブラリを取り上げます。 CSVのパーサ たとえ簡潔でも、実用的でないパーサの例だ

    第5章 パーサコンビネータ―小さなパーサを組み合わせて大きなパーサを作る | gihyo.jp
    toromoti
    toromoti 2015/03/06
  • LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術 記事一覧 | gihyo.jp

    第54回Linuxカーネルのコンテナ機能 ―cgroup v2から使うCPUの帯域幅制限(2) 加藤泰文 2023-11-08

    LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術 記事一覧 | gihyo.jp
    toromoti
    toromoti 2015/01/01
  • 2015年のLinuxのコンテナ技術 | gihyo.jp

    2014年は非常にDockerが盛り上がった1年でしたね。 Dockerは2013年の夏ごろから注目を集めはじめました。その後バージョンが0.9となった2014年の春ごろからさらに注目を集めるようになり、それ以降はさまざまなサービスやベンダーがDockerをサポートしたり、Docker関連のプロダクトを出したりするニュースが駆け巡った気がします。 Dockerに関係する勉強会が数多く開催されるようになり、Docker Meetup Tokyoなどは募集が始まった途端に定員に達するという活況ぶりでした。 Dockerは「コンテナ技術」そのものではなく、Dockerがやりたいことを実現するための技術要素の1つとしてコンテナを使っています。このDockerの盛り上がりと共にそれまでどちらかというとマイナーな技術であった「コンテナ」も2014年には非常に注目される技術となりました。 実際、筆者が主

    2015年のLinuxのコンテナ技術 | gihyo.jp
    toromoti
    toromoti 2015/01/01
  • 第4回 Linuxカーネルのコンテナ機能[3] ─cgroupとは?(その2) | gihyo.jp

    表1にある「実装されたバージョン」はカーネルに実装されたバージョンで、ディストリビューションによってはこれよりも古いバージョンのカーネルにバックポートされている場合もあります。また、実装された時点では階層構造がサポートされておらず、後のバージョンで実装されたものもあります。 お使いのシステムで使用可能なサブシステムは、カーネルのバージョンだけでなく、カーネルをどのような設定で作成したかによっても違います。使用可能なサブシステムは以下のように/proc/cgroupsで確認できます。 $ cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 0 1 1 cpu 0 1 1 cpuacct 0 1 1 memory 0 1 1 devices 0 1 1 freezer 0 1 1 blkio 0 1 1 per

    第4回 Linuxカーネルのコンテナ機能[3] ─cgroupとは?(その2) | gihyo.jp
    toromoti
    toromoti 2014/06/24
  • GitHubが僕たちを、仕事の現場を変えた!──「GitHub Kaigi」レポート | gihyo.jp

    2014年6月1日(日⁠)⁠、東京・渋谷マークシティにおいて、GitHubユーザグループ主催によるイベント「GitHub Kaigi」が開催されました。500人の定員に対し800人を超える参加申し込みのあったこのイベントには、日におけるGitHub活用の第一人者たちはもちろん、米GitHub社から招いた開発者たちも登壇し、いずれ劣らぬ濃いセッションが繰り広げられました。ここではその様子を紹介します。 GitHub実践入門 ─⁠─ Pull Requestによる開発の変革 トップバッターとして登壇したのは、WEB+DB PRESS plusシリーズ『GitHub実践入門 ─⁠─ Pull Requestによる開発の変革』の著者である大塚弘記氏です。 『GitHub実践入門』の著者、大塚弘記氏 同氏はまず、「⁠GitHubを利用した開発の世界を知る」「⁠GitHubを(利用|活用)する違いを

    GitHubが僕たちを、仕事の現場を変えた!──「GitHub Kaigi」レポート | gihyo.jp
    toromoti
    toromoti 2014/06/04
    わはーい
  • 第2回 コンテナの仕組みとLinuxカーネルのコンテナ機能[1]名前空間とは? | gihyo.jp

    前回は、Linuxで使えるコンテナの実装を説明したあと、LXCを使って簡単にコンテナの作成、起動、停止が行えるところを紹介しました。今回は、そのコンテナの仕組みを簡単に説明し、その仕組みからくるメリット・デメリットを紹介した後、コンテナはカーネルのどのような仕組みを使って動作しているのかを簡単に説明していきたいと思います。 コンテナの仕組み コンテナをまだ使ったことがない方でも、VMwareやVirtualBox、KVMといった仮想マシン(VM)を使ったことはあるという方は多いのではないでしょうか。まずはVMとの比較をしながら、コンテナの仕組みを説明してみましょう。 図1 VMとコンテナの仕組み(1)仮想マシン VMでは図1のように、コンピュータの上で動くOSやVMを実現するためのハイパーバイザの上で、実際のハードウェアをエミュレートするVMが動きます。つまり実際の物理的なコンピュータと同

    第2回 コンテナの仕組みとLinuxカーネルのコンテナ機能[1]名前空間とは? | gihyo.jp
    toromoti
    toromoti 2014/05/27
    二回目来た
  • 2014年2月14日 問題の核心はinitにあらず ─Ubuntuの孤立 | gihyo.jp

    2月8日、Debianのテクニカルコミッティはひとつの決断を下した。チェアマンのBdale Garbee氏が開発者メーリングリストに投稿した内容によれば、Debianのデフォルトのinitシステムとしてsystemdを採用することが決定した。投稿を見ると、委員の間ではsystemd派とUpstart派に分かれて白熱した議論が展開されたらしい。最初の投票結果は4票対4票、まったく五分の戦いだったが、結果としてGarbee氏の後押しが影響しsystemdに落ち着いた。 call for votes on default Linux init system for jessie --debian-ctte 現在のLinuxディストリビューション開発では、initsystemdを採用する流れが強く、Fedora/Red Hat、openSUSEなども最新バージョンではsystemdを選んでいる。

    2014年2月14日 問題の核心はinitにあらず ─Ubuntuの孤立 | gihyo.jp
    toromoti
    toromoti 2014/04/14
  • 第1章 なぜ「継続的Webサービス改善」が必要なのか~変化に対応し、10年後も生き残るWebサービスのために | gihyo.jp

    継続的Webサービス改善ガイド 第1章なぜ「継続的Webサービス改善」が必要なのか~変化に対応し、10年後も生き残るWebサービスのために 特集のはじめに 特集は「継続的Webサービス改善」と題し、Webサービスの継続的な改善について、そもそもそれがなぜ必要なのか、どのような改善が必要なのか、それをどう実践していくのかという3点について、特集執筆陣が勤務するpaperboy&co.(以下、ペパボ)での実際の取り組みを題材に解説していきます。 Webサービスを改善するには、技術的な取り組みはもちろん、開発投資とそのリターンという経営的な観点、チームビルディングなどの開発プロセス、ビジネスメトリクスへの注視など、考慮するべきことがたくさんあります。多様な職種からなる執筆陣による特集は、きっと読者のみなさんのお役に立てることと確信します。 10年という節目 ペパボは今年で設立10周年を迎えま

    第1章 なぜ「継続的Webサービス改善」が必要なのか~変化に対応し、10年後も生き残るWebサービスのために | gihyo.jp
    toromoti
    toromoti 2014/02/17
  • 第226回 LXCで軽量仮想環境の活用 | gihyo.jp

    Ubuntu 12.04 LTSの目標の一つは、LXCLinux Containers)の充実でした。11.04の頃から格的にサポートを開始したLXCは、かんたんに軽量な仮想環境を作成できるとあって、アプリケーションのテスト環境やJujuのようなクラウドマシンの生成ツールでも使われています。 さらに今回のリリースでは、x86マシン上でARMの実行環境を生成できるようになりました。そこで今回は、UbuntuにおけるLXCの基的な使い方を紹介します。 LXCで仮想環境を作る LXCLinuxカーネルのControl GroupやNamespaceという機能を使って、ホストOSとは隔離された環境を作るツールです。LXCのパッケージにはテンプレートという形で各OSの最小構成のrootfs環境を作るスクリプトも付属しているため、VirutalBoxやXenのようにコマンドラインから簡単に仮想

    第226回 LXCで軽量仮想環境の活用 | gihyo.jp
    toromoti
    toromoti 2014/02/10
  • 第7回 プロセッサの仮想化をソースから知る[その2:qemu-kvm] | gihyo.jp

    qemu-kvmから追う仮想マシンの一生 前回はLinux KVMのソースコードを読んできましたが、Linux KVMの理解をより深めるために、今回はLinux KVMの呼び出し元であるqemu-kvmのソースコードも読んでみましょう。 qemu-kvmは、オープンソースのCPUエミュレータであるQEMU に、Linux KVMに対応するための修正が加えられたバージョンです。Linux KVMがユーザモードプロセスであるqemu-kvmから「どのように制御されているのか」を併せて確認すると、仮想マシンが生成・実行される流れがよくわかるでしょう。 qemu-kvmの入手先 qemu-kvmの開発プロジェクトによる一次成果物は、現在はSourceForge.netから入手できます。 kernel virtual machine - SourceForge.net URL:http://sour

    第7回 プロセッサの仮想化をソースから知る[その2:qemu-kvm] | gihyo.jp
    toromoti
    toromoti 2014/02/09
  • 2014年2月5日 Linux 3.14-rc1登場、コードネームは“円周率”…なワケない! | gihyo.jp

    Linux Daily Topics 2014年2月5日Linux 3.14-rc1登場、コードネームは“円周率”…なワケない! Linus Torvaldsは2月2日(現地時間⁠)⁠、次のLinuxカーネルの最初のリリース候補版であるLinux 3.14-rc1を公開した。先日のコラムでもお伝えしたように、Linux 3.14はBtrfsのパフォーマンス改善やNOUVEAUによる新CPUサポート、Generic CPUブースト、電源管理のアップデートなど数多くの機能強化や改善が予定されており、rc1が公開される前から高い注目を集めているバージョンでもある。 Linux 3.14-rc1 is out -Linus Torvalds 機能の拡充に加え、一部で期待されたのは"バージョン番号にちなんだコードネーム"が付けられるのではないか、というもの。3.14と聞けば誰もが思い出すのは円周率

    2014年2月5日 Linux 3.14-rc1登場、コードネームは“円周率”…なワケない! | gihyo.jp
    toromoti
    toromoti 2014/02/07
    本当のコードネームはさらにカーネルに関係ない感じがしたのは私だけではないだろう
  • 2013年7月18日 「汚い言葉はやめて!」女性開発者の苦言にLinus倍返し | gihyo.jp

    もはやコーナーは"Linus暴言録"と陰で呼ばれているようだが、我らがLinus Torvaldsがまたまたカーネル開発メーリングリスト「LKML.org」での発言で物議を醸している。といっても今回の場合、どちらかと言うとLinusは巻き込まれた感が強いかもしれない。 コトの発端はLKMLに7月15日付でポストされたIntelの女性開発者 Sarah Sharpからのメールである。 LKML: Sarah Sharp: Re: [ 00/19] 3.10.1-stable review 彼女は、Linusがカーネルメンテナーの古参"GKH"ことGreg Kroah-Heartmanに対し"door-mat(ドアマット、踏みつけられてもしょうがないほどのボケ)"と呼んだことにひどく立腹し、「⁠これはもう暴力です! カーネルの質の向上に、こんな汚い言葉は必要ありません!! とても受け入れがた

    2013年7月18日 「汚い言葉はやめて!」女性開発者の苦言にLinus倍返し | gihyo.jp
    toromoti
    toromoti 2013/07/18
    そういうコミュニティなんだろ。なにが正しいとか正しくないなんてないと思うが。
  • Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp
    toromoti
    toromoti 2013/05/12
  • 2013年4月23日 Debian 7.0は5月初旬、Linux 3.9リリースは4月第4週に | gihyo.jp

    Linux Daily Topics 2013年4月23日Debian 7.0は5月初旬、Linux 3.9リリースは4月第4週に Debian 7.0 Ubuntuをはじめ、数多くのLinuxディストリビューションのアップストリームOSとして強い影響力をもつ世界最大のLinuxプロジェクトDebian GNU/Linux。Ubuntuと異なり、そのリリース時期は明確に提示されていないが、ここにきてようやく、待望の新バージョンである「Debian GNU/Linux 7.0 "Wheezy"」のリリースが決定したようだ。 DebianリリースチームのNeil McGovern氏のポストによれば、Debian 7.0のリリース日は5月4日、もしくは5日をターゲットにしているとのこと。ほぼ準備は整っているようで、朗報が待たれるところだ。 なお、DebianベースのUbuntu 13.04(開発

    2013年4月23日 Debian 7.0は5月初旬、Linux 3.9リリースは4月第4週に | gihyo.jp
    toromoti
    toromoti 2013/04/23
    新しいtestingはなんになるの
  • 2010年11月18日 "ミラクルパッチ"にLinusも大喜び!Linuxカーネルを高速化させた233行のコード | gihyo.jp

    Linux Daily Topics 2010年11月18日"ミラクルパッチ"にLinusも大喜び!Linuxカーネルを高速化させた233行のコード Linus Torvalds氏という人は、少なくともメールの中では、かなりはっきりと感情を表に出す。誰かor何かに対して怒っているときは相手を名指しで批判(というより非難)し、逆にうれしいときはあふれる喜びを隠そうとしない。今回紹介するのは後者のほう。「⁠I'm also very happy」「⁠it is a _huge_ improvement」「⁠Good job.」など、喜びと称賛の表現がたくさん書かれているメールだ。 Linus氏を歓喜させたのは、カーネル開発に携わるMike Galbraith氏が書いた233行のカーネルスケジューリングパッチ。このパッチを適用すると、デスクトップ環境においてパフォーマンスが著しく向上するという。

    2010年11月18日 "ミラクルパッチ"にLinusも大喜び!Linuxカーネルを高速化させた233行のコード | gihyo.jp
  • 1