タグ

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

  • 第6回 UNIXプログラミングの勘所(2) | gihyo.jp

    forkとファイルハンドル UNIX系のOSでは、複数のプログラムが、それぞれプロセスという単位で動作しています。forkというシステムコール[1]が呼び出されると呼び出したプロセスの複製がOSによって作成され、複製されたプロセス(子プロセス)がexecveというシステムコールを使って別のプログラムにすり替わる、というしくみでさまざまな処理を実行するようになっています。 「複製」と言っても、全部の情報が複製されるわけではありません。プロセスのメモリイメージが複製される[2]一方で、プロセスが開いている「オープンファイル記述」(⁠open file description)(⁠注3)は複製されません。forkのあとは、親プロセスと子プロセスの両者が、単一のオープンファイル記述を指す「ファイル記述子」(⁠file descriptor)(⁠注4)を持つことになります(図2⁠)⁠。 図2 for

    第6回 UNIXプログラミングの勘所(2) | gihyo.jp
  • 第3回 JSONPでのクロスドメインアクセス | gihyo.jp

    JSONPの動作原理 前回はAjaxに存在するセキュリティモデルであるSame-Originポリシーを紹介し、そのSame-Originポリシーを迂回する方法とセキュリティについて見てきました。また、回避する方法の1つめとしてリバースProxyを用いた方法を紹介しました。リバースProxyを用いた方法ではセキュリティ的な問題点もありましたが、そもそもProxyサーバを用意しなければならないため、この方法は手軽に使うことはできませんでした。 そこで考え出されたのがJSONP(JavaScript Object Notation with Padding)という方法です。 それではまず簡単にJSONPについて説明します。 Ajaxで使われるXMLHttpRequestオブジェクトには前回説明したとおりSame-Originポリシーがありクロスドメインアクセスはできません。一方、SCRIPTタグ

    第3回 JSONPでのクロスドメインアクセス | gihyo.jp
  • 第4回 Node.jsアプリケーションとMongoDBの連携 | gihyo.jp

    はじめに 前回から、いよいよNode.jsを使ったWebアプリケーションを作成しはじめました。前回はデータを保存および読み出す処理がなかったので、今回はデータベースとの連携を実装したいと思います。使うのはMongoDBです。リレーショナルデータベースに対して、MongoDBはドキュメント指向データベースという位置づけです。JSON構造をそのまま保存できるため、Node.jsとの親和性も高いです。簡単に導入でき、日語ドキュメントもあるので、初めてでもすんなり使えると思います。 MongoDBのセットアップ MongoDBのサイトから、OSごとに用意されたアーカイブをダウンロードして展開してください。展開したフォルダの直下にあるbinディレクトリ内にコマンド群があるため、これらを使って操作します。サーバデーモンとなるのがmongodで、クライアントとなるのがmongoになります。 まず適当に

    第4回 Node.jsアプリケーションとMongoDBの連携 | gihyo.jp
  • 第3回 Express.jsを使ったWebアプリケーションを構築 | gihyo.jp

    はじめに 前回までは、Node.jsについての基礎的な説明からnpmによるパッケージ管理まで、紹介してきました。今回から、いよいよNode.jsを使ったWebアプリケーションを実装していきます。前々回に単純なHTTPサーバの実装についてコードとともに紹介しました。あれをみるとわかるとおり、nodeが提供するHTTPサーバの機能はプロトコルに沿ったローレベルなものになっています。例えば、リクエストが来たら、そのURLパスに従った処理を実行するために、リクエストURIの解析から実装していかなくてはなりません。そういったことが簡単に定義して処理を書けるWebアプリケーションフレームワークがnodeにも存在します。連載では、その代表格のExpressを使って実装してみたいと思います。 Expressのインストール Express(Express.jsと表記されることが多い)は、非常に手軽にnod

    第3回 Express.jsを使ったWebアプリケーションを構築 | gihyo.jp
  • 第23回 Eclipseプロジェクト発の新プログラミング言語「Eclipse Xtend」 | gihyo.jp

    「Eclipse Xtend」とは 「Eclipse Xtend」は、Java仮想マシン上で動作する新しいプログラミング言語です。、Eclipseプロジェクトによって開発されたもので、Javaと同様に静的な型を持つ言語であり、Javaコードを生成するコンパイラを備えています。 XtendはEclipseプラグインの1つである「Eclipse Xtext」を利用して開発されました。Eclipse XtextはJavaによるDSL(ドメイン固有言語:Domain Specific Language)の開発を容易にするためのフレームワークおよびツールキットで、これを使えばオリジナルのプログラミング言語を簡単に作成することができます。それだけでなく、Eclipse Xtextで新しい言語を作った場合には、Eclipseの開発サポート機能がその新言語にも適用できるというメリットがあります。 たとえば

    第23回 Eclipseプロジェクト発の新プログラミング言語「Eclipse Xtend」 | gihyo.jp
  • 第2回 abcモジュールによる抽象基底クラスの作成 | gihyo.jp

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

    第2回 abcモジュールによる抽象基底クラスの作成 | gihyo.jp
  • Webアプリを公開しよう! Chrome Web Store/Apps入門 記事一覧 | gihyo.jp

    第7回Webアプリを作ろう#4─⁠─Omnibox、Context Menus 吉川徹 2011-07-11

    Webアプリを公開しよう! Chrome Web Store/Apps入門 記事一覧 | gihyo.jp
  • 2011年7月11日 やっと出ましたCentOS 6.0! そして6.1はいつ? | gihyo.jp

    CentOSプロジェクトチームのKaranbir Singh氏は7月10日(米国東部時間⁠)⁠、CentOS 6.0のリリースを発表した。i386/x86_64ともにISOファイルが各ミラーサイトなどから取得可能になっている。 2010年11月にCentOSのベースとなっているRed Hat Enterprise Linux(RHEL)のバージョン6.0がリリースされてから約8ヵ月経っての登場となったCentOS 6.0。ようやくの正式公開を喜ぶ声が多数ある一方で、今回のCentOSのアップデートの遅さに対してプロジェクトの内外から多くの批判がなされたのも事実だ。RHELはすでにフィックスバージョンである6.1が5月にリリースされており、Red Hatは同社のサブスクリプションユーザに対してセキュリティ強化の観点から6.1への移行を推奨している。また、CentOSのリリースの遅さも手伝って

    2011年7月11日 やっと出ましたCentOS 6.0! そして6.1はいつ? | gihyo.jp
    nantan
    nantan 2011/07/12
    "Linux Daily Topics:2011年7月11日 やっと出ましたCentOS 6.0! そして6.1はいつ?|gihyo.jp … 技術評論社"
  • 第3回 ベイジアンフィルタを実装してみよう | gihyo.jp

    さらに詳細な利用方法が知りたい方は、Yahoo!デベロッパーズネットワークのマニュアルを参照してください。 ベイジアンフィルタの実装 ここから格的にベイジアンフィルタの実装に入っていきます。 その前に、まずは先程のリスト1のコードを利用して入力された文章をわかち書きし、単語の集合を返す関数を作成しnaivebayes.pyとして保存しましょう。こちらも先程のmorphological.pyと同様にutf-8で保存してください。 リスト2 文章の分割をする関数(naivebayes.py) # -*- coding: utf-8 -*- import math import sys #yahoo!形態素解析 import morphological def getwords(doc): words = [s.lower() for s in morphological.split(doc)

    第3回 ベイジアンフィルタを実装してみよう | gihyo.jp
    nantan
    nantan 2011/01/29
    ベイジアンフィルタ
  • AndroidでHTTP通信を行う

    前回のおさらい 前回は、Android OSに搭載されているリレーショナルデータベースシステム「SQLite」に関して、以下を学びました。 具体的には、 テーブルの作成 アップグレード処理 レコードの追加 レコードの更新 レコードの読み出し の説明しました。使いこなすには、SQL文の学習が必要になりますが、SQLiteのライブラリは簡単に使うことができるので、サンプルプログラムを修正するなどして、自分のものにしてください。 ネットへ接続する スマートフォンは手軽にネットワークへ接続できるので、Webサービスと連携したり、複数のWebサービスをマッシュアップする等、ネットワークへの接続を前提とするアプリを開発するケースが多くなるはずです。そこで、今回は、ネットワークへの接続方法をご説明します。 ネットワークへの接続と言っても様々ありますが、今回は、最も汎用性の高いHTTP通信を取り上げます。

    AndroidでHTTP通信を行う
  • 世界を目指せ!Androidアプリ開発入門 記事一覧 | gihyo.jp

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

    世界を目指せ!Androidアプリ開発入門 記事一覧 | gihyo.jp
  • 第4回 ベータ版に向けたExtension総復習 | gihyo.jp

    こんにちは、株式会社ALBERTの太田です。Extensionsが有効になるベータ版のリリースが近づいてきました。そこで今回は、現時点(2009年11月23日)でのExtensionsの作り方をまとめてみます。 Extensionsの開発の下準備 まずは開発環境を整理します。といっても、基的にHTMLCSSJavaScriptで作成するので最低限エディタがあればなんとかなります。 ただ、実際に開発/テスト/リリースをする場合には、プロファイルの異なる複数のChromeを起動できると何かと便利です。そういった場合、起動オプションで--user-data-dirを指定することで同時起動ができます(User Data Directory - Custom-Location⁠)⁠。 プロファイル ディレクトリの指定 [パス省略]\chrome.exe --user-data-dir="C:\

    第4回 ベータ版に向けたExtension総復習 | gihyo.jp
  • 2010年のJavaScript:「これまで」と「これから」 | gihyo.jp

    2010年のJavaScriptと題しまして、JavaScript周辺の「これまで」と「これから」についてまとめてみたいと思います。 2009年までのJavaScript JavaScriptは各ブラウザベンダなどが個別に実装するという特殊性から、ブラウザ(実装)ごとの非互換性の問題に悩まされ続けてきた言語です。まず、そのJavaScript歴史を簡単に振り返ってみます。 ECMA-262 3rd editionとスピードコンテスト JavaScriptNetscape社によってLiveScriptという名前で誕生し、その後ECMAScriptとして標準化が進みました。1999年12月にECMA-262 3rd editionが策定されてから、Internet ExplorerのJScript、MozillaのSpiderMonkey(TraceMonkey⁠)⁠、SafariのJav

    2010年のJavaScript:「これまで」と「これから」 | gihyo.jp
  • 第5回 Chrome ExtensionのAPI#2 | gihyo.jp

    こんにちは、Google Chrome ExtensionsのAPI Expertになりました太田です。今回は、これまで使用していないAPIを中心に使った新しいExtensionを作成してみます。 が、その前に大きなニュースとして、Extensionsが有効になったbeta版とExtensionsギャラリーが公開されました。Macのbeta版も公開されましたが、こちらは拡張を使うことはできませんのでご注意ください。 Extensionsを作られた方はDeveloper DashboardからExtensionを登録できます。登録時の注意などはブログにまとめていますので、そちらをご参照いただければと思います。また、beta版のリリースに合わせて、Google Chrome拡張について日語での情報交換ができるGoogle準公式コミュニティのChromium-Extensions-Japanも

    第5回 Chrome ExtensionのAPI#2 | gihyo.jp
  • 第2回 Firebugによるデバッグの基本、Console APIとその活用 | gihyo.jp

    さて、前回はインストールからFirebugのタブの基的な部分について紹介をしてきました。今回は、Firebugに実装されているConsole APIの紹介と、Console APIを利用したデバッグ手法について解説していきます。 Firebugで利用できるAPI Firebugには、デバッグに活用できる2つのAPIが実装されています。今回は、その2つあるAPIのうちConsole APIについて解説していきます。 Console API Console APIはFirebugのタブだけでなく、コンテンツ側のJavaScriptから呼び出すことのできるAPIです。デバッグのために便利な関数があらかじめたくさん用意されています。これらの関数を以下に列挙しますので、目を通してください。 console.log(object[, object, ...]) 渡された全てのオブジェクトをconso

    第2回 Firebugによるデバッグの基本、Console APIとその活用 | gihyo.jp
  • 先取り! Google Chrome Extensions 記事一覧 | gihyo.jp

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

    先取り! Google Chrome Extensions 記事一覧 | gihyo.jp
  • 第2回 zshへの乗り換え時のポイント | gihyo.jp

    zshを使い始めるとき、ほとんどの場合は他のシェルからの乗り換えとなるだろう。今回はそうしたケースを想定し、他のシェルからzshに移行する際に遭遇しがちな問題にどう対処するかについて要点を絞って述べたい。 決断 シェルは手に馴染ませてこそ光り輝く道具である。それを変更するのは大きな決断で、ちょっとした不安が伴うものである。典型的と思われる事項についてQ&A形式でまとめてみた。 Q.zshが便利そうなのは分かった。だが、その分zshの使えないところに行ったら困ることになりそう。 A.大丈夫。今のシェルで使いこなしている機能以上に、zshを使えるようになったときには元のシェルに関する知識も増えているはず。zshは、どんな変数展開やヒストリ展開でもTabキーで正確に補完してくれるし、if、while、for の複数行に渡る構文をコマンドラインで使っても行エディタでしっかり再編集できるので、意識し

    第2回 zshへの乗り換え時のポイント | gihyo.jp
  • 第1回 Javadocリファレンス | gihyo.jp

    javadocコマンドの-overviewオプションで指定するため、任意の名前で作成できます。 概要コメントファイル アプリケーションまたはパッケージセットに対してのコメントファイルです(リスト1、図3⁠)⁠。概要コメントファイルはHTMLファイルとして作成します。公開ドキュメント用と内部向けドキュメント用の2つの概要コメントファイルを切り替えて使うことをお勧めします。 リスト1 概要コメントファイル(overview.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body>

    第1回 Javadocリファレンス | gihyo.jp
  • 第1回 ガジェットAPI | gihyo.jp

    2009年5月28日、Googleのデベロッパーカンファレンス「Google I/O 2009」のキーノートにおいて大々的に発表されたGoogle Waveは、聴衆に熱狂を持って迎えられました。そのキーノートにおいてスピーカーは「Google WaveはProductであり、Platformであり、Protocolだ」と述べました(編注⁠)⁠。 連載ではその3つのPの内の2つ目、PlatformとしてのGoogle Waveについて説明します。 編注 著者執筆のGoogle I/O 2009のイベントレポート記事も参照ください。 なお、Google Waveは現在も急ピッチで開発が進められているプロダクトであり、連載に掲載する画面遷移・ソースコードなどは最新ではない可能性があります。記事に沿って作業していて違和感を覚えた場合にはGoogleの公開しているドキュメントを適宜参照してくださ

    第1回 ガジェットAPI | gihyo.jp
  • 第3回 エンベッドAPI | gihyo.jp

    ついにGoogle Developer Day(GDD)参加者にGoogle Waveの招待状が届いて、日人ユーザーの手にもアカウントが続々と手に入っているようですね。Google Waveは単なるサービスとして見ても非常に興味深いものですが、APIを利用してその機能を拡張することができれば、おもしろさはさらに広がります。アカウントが手に入った皆さんは、これまでに説明したガジェットAPIとロボットAPI、そして今回説明するエンベッドAPIを使ってGoogle Waveを遊び尽くしてください。 エンベッドAPI使用例 さて、連載最後となる今回のターゲットはEmbed APIです。これまでの2つのAPI(ガジェットAPI・ロボットAPI)とは異なり、Embed APIGoogle Waveそれ自体にはなんの機能も追加しません。その代わりに、Google Waveの機能をGoogle Wav

    第3回 エンベッドAPI | gihyo.jp