タグ

ブックマーク / atmarkit.itmedia.co.jp (226)

  • 特集:Windows 9x or Windows 2000? コラム:Windows 3.xのマルチタスク システム - @IT

    シングル タスクのMS-DOSの上で動くウィンドウ システムとして設計されたWindowsでは、ノン プリエンプティブなマルチタスク(non-preemptive multitasking)または協調型マルチタスク(cooperative multitasking)と呼ばれるマルチタスク方式が採用された。当初のWindowsシステムは、言葉は悪いが、GUIプログラムのラウンチャ(launcher、ほかのプログラムを起動するためのプログラム)に過ぎず(MS-DOSは、CUIプログラムのラウンチャ)、格的な(プリエンプティブな)マルチタスキング オペレーティング システム環境を目指していたわけではない。平均的なユーザーの搭載メモリ容量やCPU性能、および開発工数を抑えるという観点などから、MS-DOS上で稼動する、ノン プリエンプティブなマルチタスク ウィンドウ システムとして開発されたので

    hiroyukim
    hiroyukim 2021/07/05
  • 無視できないフラグメンテーション問題への解答は?(1/2) - @IT

    1月版 無視できないフラグメンテーション問題への解答は? 小崎資広 2010/2/10 当初、今回はmemory compactionとtransparent hugepageという2つのトピックを取り上げ「Hugepage大特集」にしようと思っていたのですが、並列プログラミングカンファレンスに触発され(正確には、そのカンファレンスに参加できなくて悔しかったことに触発され)、後者を急きょ、ロックレスネタに差し替えて紹介します。 でもこれが大失敗で、調査が大変過ぎて泣けたうえに、スケジュールがとんでもないことに。人間、思い付きで行動してはいけないといういい見ですね。 Melの悲願なるか? Memory Compactionチャレンジ Mel Gormanは、Memory Compaction v1パッチシリーズを投稿しました。これは「Linuxメモリ管理の最先端を探る」で説明したAnti

    hiroyukim
    hiroyukim 2021/06/04
  • main()関数の前には何があるのか

    C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る。

    main()関数の前には何があるのか
    hiroyukim
    hiroyukim 2019/02/20
  • https://atmarkit.itmedia.co.jp/fpc/rensai/zunouhoudan004/vliw.html

    hiroyukim
    hiroyukim 2019/02/20
  • “安全な暗号”とは何か――「強秘匿性」「頑強性」という概念

    前回に引き続き、暗号化手法の一つ「ElGamal暗号」を学びます。そして攻撃に強く、「安全な暗号」に必要な要素とは何かを考えてみます。 連載目次 ElGamal暗号と強秘匿性 第1回で紹介したRSA暗号に続き、1984年に提案された公開鍵暗号「ElGamal暗号」を紹介します。 「ElGamal暗号」の考え方は、次回以降で紹介する楕円曲線暗号でも利用されます。これは次の方式で表現されます。 鍵生成:整数gと素数pを適切に選び、みんなに公開する(gとpの条件は省略します)。xをランダムに選びy=gx mod pとする。a mod bは整数aをbで割った余りを表す記号でした。以降mod pは省略します。 暗号化:公開鍵yを持つ人に対して平文mを送るには、整数rをランダムに選び、Enc(m)=(gr,myr)を暗号文とします。 復号:暗号文(c1, c2)=Enc(m) を受け取った人は自身の秘

    “安全な暗号”とは何か――「強秘匿性」「頑強性」という概念
    hiroyukim
    hiroyukim 2018/01/20
  • Linuxカーネルのソースコードを読んで、システムコールを探る

    Linuxカーネルのソースコードを読んで、システムコールを探る:main()関数の前には何があるのか(6)(1/3 ページ) C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。前回まで、printf()内の中身をさまざまな方法で探り、write()やint $0x80の呼び出しまでたどり着いた。今回は、さらにその先にあるLinuxカーネル側のシステムコールを見ていく。

    Linuxカーネルのソースコードを読んで、システムコールを探る
    hiroyukim
    hiroyukim 2017/06/27
  • TDD/BDDにおける「振る舞い」の意味するところとは何なのか

    TDD/BDDにおける「振る舞い」の意味するところとは何なのか:いまさら聞けないTDD/BDD超入門(3)(1/3 ページ) 前回の「TDD/BDDの思想とテスティングフレームワークの関係を整理しよう」では、TDD/BDDについて、その思想と、それをサポートするテスティングフレームワークに分けて解説しました。その中で、TDD/BDDについては実際の熟練者の言葉を借り、テスティングフレームワークについては概要を触れて、その系譜をたどりました。 BDDはその名前に「Behavior」とありますが、「振る舞いとしてのテストコードを書く」とはどういうことなのでしょうか? 難しく考え過ぎる必要はありませんが、「それは振る舞いを書いていないよ」と指摘をする熟練者が何を考えているかを理解することはBDDを習熟していく中で重要な意味を持ってきます。 記事では「振る舞い」という言葉がどのような意味で使われ

    TDD/BDDにおける「振る舞い」の意味するところとは何なのか
  • @ITLinuxクラスタリングフェイルオーバーの仕組みと問題点

    いままで、フェイルオーバークラスタシステムはUNIXやWindows NT/2000の独壇場でしたが、2000年あたりからLinuxフェイルオーバークラスタソフトを各ベンダが出荷し始めました。さて、Linuxのフェイルオーバークラスタはどのように実現されているのでしょうか? 前回は、一口にクラスタシステムといってもフェイルオーバークラスタ、負荷分散クラスタ、HPC(High Performance Computing)クラスタなど、さまざまなクラスタシステムがあるという話でした。そして、「フェイルオーバークラスタ」はHA(High Availability)クラスタの一種で、サーバそのものを多重化することで、障害発生時に実行していた業務をほかのサーバで引き継ぐことにより業務の可用性(Availability)を向上することを目的としたクラスタシステムでした。 今回はNECのCLUSTERP

    @ITLinuxクラスタリングフェイルオーバーの仕組みと問題点
    hiroyukim
    hiroyukim 2015/09/21
  • 第1回 Hyper-V 2.0のライブ・マイグレーションの基礎知識

    第1回 Hyper-V 2.0のライブ・マイグレーションの基礎知識:Hyper-V 2.0実践ライブ・マイグレーション術(2/5 ページ) 前述のとおり、非常にメリットの大きいライブ・マイグレーションであるが、そのメリットを生かした効果的な仮想化システムを構築するには、ライブ・マイグレーションの仕組みを理解しておく必要がある。 稼働中の仮想マシンのデータはどこに格納されている? 仮想化は論理的な要素であるが、視点を変えて物理的に、つまりハードウェアを意識してライブ・マイグレーションを考えてみよう。ライブ・マイグレーションを実行すると、仮想マシンは現在動いているサーバ・マシンから、別のサーバ・マシンに移動する。移動先サーバは、移動元とハードウェアが物理的に異なるため、データを移す必要があるはずだ。仮想マシンのデータはどこにあるかというと、大きく分けて2カ所に格納されている。 1つは、当然なが

    第1回 Hyper-V 2.0のライブ・マイグレーションの基礎知識
    hiroyukim
    hiroyukim 2015/09/21
  • 重要なデータを守るため、もう一度暗号化技術をおさらいしよう

    重要なデータを守るため、もう一度暗号化技術をおさらいしよう:クラウド時代の暗号化技術論(1)(1/2 ページ) エンジニアならば、情報の重要性を誰よりも理解しているはずです。そこで、クラウド時代にエンジニアが知っておくべき「暗号」論を、もう一度おさらいしてみてはいかがでしょうか。デブサミにて反響が大きかった「クラウドを支えるこれからの暗号技術」を執筆した筆者による新連載です。 連載目次 暗号化技術知識をアップデートしよう インターネットの普及と発展により、ネットワーク上で秘密にすべき情報がたくさんやりとりされています。最近ではクラウドサービスの普及により、サーバーに重要な情報を置く機会も増えたことで、個人情報流出の危険性も常につきまとっています。実際、情報漏えいの事故や事件がしばしば報道されていますし、これを受けて、「情報漏えいが怖いからクラウドサービスは使わない」という人も少なくありませ

    重要なデータを守るため、もう一度暗号化技術をおさらいしよう
  • Ant使いでもMavenのライブラリ管理ができるIvyとは

    稿では、Apache IvyとEclipse上でのIvyの利用をサポートする「IvyDE」を利用したJavaライブラリ管理について紹介します。AntやMavenの基礎的なところを知りたい方は、少し古いですが、以下の記事を参照しておいてください。 AntでJavaのビルドを簡単にしよう [連載]現場に活かすJakarta Project(2) ファイル数が多くなると、とかく面倒になるビルド。Java IDEに頼ることなく、どんな環境でも簡単にビルドできるAntを活用してみよう Eclipseからビルドツール「Ant」を使う 連載:Eclipse徹底活用(1) Eclipse 2.1ではAnt対応が強化された。EclipseとAntを組み合わせて使うと、ソースファイルがどんなに多くてもトラブルなくビルドが行える Eclipseプラグインq4eでカンタンMaven入門 ビルドやテスト、レポート

    Ant使いでもMavenのライブラリ管理ができるIvyとは
  • ビルドツールGradleのインストールと使い方、Jenkins/Git連携

    ビルドツールGradleのインストールと使い方、Jenkins/Git連携:小山博史のJavaを楽しむ(18)(1/5 ページ) オープンソースのビルドツール「Gradle」の主な特長やLinux/Windowsでの環境構築方法、さまざまな使い方に加え、CI/バージョン管理との連携方法を解説します。 「これから」のための柔軟なビルドツール、Gradleの主な特長4つ Javaではアプリケーションをビルドしたり、Webアプリをサーブレットコンテナへデプロイしたりするときにビルドツールを使うことがよくあります。ビルドツールを使うと、開発中に変更があった部分に影響する範囲だけコンパイルをしたり、アプリのパッケージを作成するときに必要な比較的単純なファイルコピーの作業をミスなく実行したりすることが、簡単にできるようになります。 今回紹介をするGradleはオープンソースのビルドツールの1つです。J

    ビルドツールGradleのインストールと使い方、Jenkins/Git連携
  • HubotとJenkins、GitBucketを連携してCIをチャット上で効率化するには

    連載目次 連載第1回の「GitHub製フレームワークHubotの概要とインストール、チャットアプリと連携する基的な使い方」では、GitHub社が開発しているBotフレームワーク「Hubot」の概要、Hubotとチャットとの連携方法、Hubotの基的な使い方を紹介しました。 前回の「Redmine連携でチケットをチャットに通知&開発を楽しくするHubotスクリプト6選」と同じく、今回も、サンプルアプリケーションに対して修正を行うシーンを例に、Hubotと各ツールがどう連携するかを解説します。 ソースコードはGitHubそっくりなUIと機能を提供している「GitBucket」(Scala製)で管理し、ビルドやデプロイはCI(継続的インテグレーション)ツール「Jenkins」で行います。 利用したソフトウェアとバージョンは以下の通りです。 Hubot 2.4.7 Kandan 1.2 Git

    HubotとJenkins、GitBucketを連携してCIをチャット上で効率化するには
    hiroyukim
    hiroyukim 2014/12/12
  • PhantomJSとJasmineで振る舞い駆動開発なJavaScriptテスト

    PhantomJSとJasmineで振る舞い駆動開発なJavaScriptテスト:フレームワークで実践! JavaScriptテスト入門(2)(1/3 ページ) しっかりとJavaScriptをテストするために、今注目のJavaScript用のテストフレームワークをいくつか紹介し、その概要から実践的な使い方まで解説する連載 前回は、JavaScriptテストの基、今回からフレーワムークを紹介 前回の「JavaScriptテストの基礎知識と使えるフレームワーク6選」では、JavaScriptのテストを取り巻く環境や、JavaScriptのテストに使用できるフレームワークの紹介を行いました。今回からは、前回の記事で紹介されたフレームワークを使用して実際にJavaScriptのテスト環境を構築し、テストを行うまでの流れを解説します。 今回は「PhantomJS」と「Jasmine」を取り上げま

    PhantomJSとJasmineで振る舞い駆動開発なJavaScriptテスト
  • javapコマンドでクラスファイルを読む

    Sun Microsystems社より公開されているJVMの公式仕様『Java仮想マシン仕様(The Java Virtual Machine Specification)』(以下、JVM仕様)には、JVMで利用可能なバイトコードの仕様が説明されています。 JVM仕様では、バイトコードの命令列は、人間が読み取ることができるアルファベットの命令名(ニーモニック)と、その数値表現である1byteのオペコードで構成されています。クラスファイルはオペコードのみで構成されており、単なるバイナリデータです。試しにクラスファイルをテキストエディタで開いてみても、画像などのバイナリデータと同様に、文字にならないデータが表示されるだけです(クラスやフィールド、メソッドの名前は、バイトコード内にそのまま文字列として保存されているので、そこだけは何とか読み取ることができます)。 それでは、生成されたクラスファイ

    javapコマンドでクラスファイルを読む
  • 管理が困難―分散処理の常識はZooKeeperで変わる

    管理が困難―分散処理の常識はZooKeeperで変わる:ビッグデータ処理の常識をJavaで身につける(8)(1/3 ページ) Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 分散処理の課題が「管理」なのは常識 複数の計算機上で動作(分散)するアプリケーション、ソフトウェアが多く存在します。分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり、高負荷な状況に対処します。稿では、複数の計算機(クラスタ)で動作する各サーバを「インスタンス」と呼びます。 連載で紹介した分散Key-Valueデータベースである「HBase」は複数の計算機で動作する代表的なソフトウェアです。両ソフトウェアはともに「Apache ZooKeeper」(以下、Z

    管理が困難―分散処理の常識はZooKeeperで変わる
  • 開発者が知っておくべき、6つのUIアーキテクチャ・パターン - @IT

    .NET開発者中心 厳選ブログ記事 開発者が知っておくべき、6つのUIアーキテクチャ・パターン ―― 「matarillo.com」より ―― 猪股 健太郎 2011/12/15 「.NET開発者中心 厳選ブログ記事」シリーズでは、世界中にある膨大なブログ・コンテンツの中から、特にInsider.NET/.NET開発者中心の読者に有用だと考えられるブログ記事を編集部が発掘・厳選し、そのブログ記事を執筆したブロガーの許可の下、その全文を転載・翻訳しています。この活動により、.NET開発者のブログ文化の価値と質を高め、より一層の盛り上げに貢献することを目指しています。 Martin Fowler氏の『GUI Architectures』を訳して公開しようと思ったのだが、FAQページに「PofEAAの続編などは商業出版する予定なので翻訳はしないでほしい」と書いてある。なので翻訳の公開はやめて、「

    hiroyukim
    hiroyukim 2014/11/08
  • CSSコーディングで泣かないためのSassの基礎知識と10の利点

    CSSコーディングで泣かないためのSassの基礎知識と10の利点:爆捗! WordPressテーマ作成ショートカット(3)(1/3 ページ) 連載では、CMSのスタンダードでもある「WordPress」のテーマ作成を、Dreamweaverをメインに用いてさまざまなモダンな技術を組み合わせながら爆発的に捗(はかど)らせる方法を解説していく。今回は、現場におけるCSSコーディングの3つの問題点、Sassの概要と主な10の機能、SASS記法とSCSS記法の違いなどを紹介。 連載「爆捗! WordPressテーマ作成ショートカット」では、初回の「Dreamweaverで始めるWordPressサイト構築の基礎知識」で、「Adobe Dreamweaver CC」(以下、Dreamweaver)でWordPressのテーマをカスタマイズできるようにする環境構築や設定を行い、前回の「WordPr

    CSSコーディングで泣かないためのSassの基礎知識と10の利点
  • @IT:Javaパフォーマンスチューニング 第3回

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 今回は、Javaにおけるヒープ・メモリ管理の詳細を説明します。JVMのヒープ・メモリの中で、新しいオブジェクトと古いオブジェクトがどのように配置されるかを理解することで、ヒープ・メモリが有効に利用されているか否かを判断することができます。また、JVMが出力するガベージ・コレクションのログを解析し、オプションの指定によってヒープ・メモリのサイズを適切にチューニングする方法を紹介します。 Java ヒープ・メモリの構造 Javaにおけるガベージ・コレクションのメカニズムを理解するには、まずヒープ・メモリの構造を知っておく必要があります。 図1は、JVM におけるヒープ・メモリの構造を示したものです。この図が示すように、ヒープ・メモリの

    @IT:Javaパフォーマンスチューニング 第3回
  • 辞書不要の形態素解析エンジン「マリモ」とは − @IT

    2007/08/15 検索サービスを提供するベンチャー企業のムーターは8月1日、辞書を必要としない形態素解析エンジン「マリモ」の提供を開始した。従来、形態素解析では品詞情報を含む日語辞書を用意するのが常識だったが、マリモでは、そうした辞書を不要とした。新技術のアプローチと特性について、開発元のムーターに話を聞いた。 統計処理で単語部分を推定 形態素解析とは、与えられた文を、文法上意味のある最小の単位(形態素)に区切る処理。「今日は晴れています」なら、「今日(名詞)/は(助詞)/晴れ(動詞)/て(助詞)/い(助詞)/ます(助動詞)」と分ける。検索エンジンをはじめ、さまざまな自然言語処理の場面で必要となる基礎技術だ。 形態素解析を行うには、あらかじめ品詞情報が付加された数十万語からなる辞書を用意する必要がある。また、新語や造語、専門用語に対応するには、個別に人力で単語を登録する必要がある。

    hiroyukim
    hiroyukim 2014/07/17