タグ

ブックマーク / codezine.jp (117)

  • Android入門―開発環境構築編:CodeZine

    はじめに AndroidとはGoogleを中心とした世界34社がオープン携帯プラットフォームを目指す団体Open Handset Allianceが開発 しているモバイルプラットフォームです。ここでは、そのプラットフォーム上での開発の仕方を紹介します。開発環境の構築 1(Android SDK) まず、開発環境を整えます。ここではWindows上でEclipseを利用して開発します。必要なアプリケーションは下記のと おりになります。Android SDKEclipseAndroid Development Tools プラグイン  それぞれのインストール方法を次に示します。Android SDKのインストール 下記よりダウンロードします。Download the Android SDK ダウンロードしたファイルを解凍し、解凍されたフォルダを任意の場所におきます。ここでは仮にそのフォルダを

  • pthreadについて(同期):CodeZine

    はじめに この連載ではUNIX系OSなどで使われるスレッド「pthread」についてサンプルを交えて説明していきます。pthreadはPOSIXが仕様化したスレッドモデルです。サンプルはCと一部C++、調査環境はFedora 8(2.6.23.1-49.fc8)、32bit、glibc-4.1-2、gcc-4.1.2-33およびFedora Core 6(2.6.18-1.2798.fc6)、32bit、glibc-2.5-3、gcc-4.1.1-30を使用しています。前回の記事第1回:pthreadについて(概要・生成) 3.同期(1/4):mutex マルチスレッドに限らず、独立した処理を円滑に行うためには共有情報を意識し保護する必要があります。スレッドは非同期で動作しますが、スレッド内の全処理を非同期で処理する事は少なく、通常は仕様上および効率性の理由から、多少なりともスレッドが参照

  • pthreadについて(概要・生成):CodeZine

    はじめに スレッド(thread)は、代表的な非同期処理の仕組みの1つで、例えるならプロセスの中で動くプロセスという感じで、軽量プロセス(lightweight process)と呼ばれたりもします。pthreadはPOSIXが仕様化したスレッドモデルで、POSIX仕様を満たしているOS間では基的には移植が可能ですが、個人的な感想では、主にUNIX系OSで使用されているようです。 大変便利なんですが、しかし複数のスレッドを矛盾無く動かす事はとても難しく、またデバックも困難で、作りを誤ると環境次第で動きが違ったりします。有用な実装方法はネット上でもそれ程見当たらず、も少ないうえに英文を強引に訳してるだけの古いばかりで、なかなか理解が困難だと思います。 当レポートはpthreadに関する調査・試行錯誤した結果、躓きやすい箇所、実装依存と思われる箇所等、独断と偏見と誤解とたくさんのサンプル

  • Silverlight入門(1)-XAMLの文法:CodeZine

    はじめに Microsoft Silverlightは、ブラウザ内で動作するプラグインの一種でWebベースでリッチなユーザーインターフェースやユーザー体験を提供するアプリケーションの作成をサポートします。一般にAdobe Flash技術に競合する技術として解釈されています。 Silverlightはテキストで書かれたソースファイルを読み込み、必要なオブジェクトを画面に表示します。表示されているオブジェクトはJavaScriptから制御することができます。どちらもテキストで書くことができるため、Siverlightの開発に特別なツールや開発環境は必要ありません。テキストエディタとブラウザがあれば、Silverlightプラグインをインストールするだけで開発に取り掛かることができます。 Silverlightで画面に表示する図や画像などのUI情報はExtensible Application

  • VBAで正規表現を使う:CodeZine

    はじめに 改めて言うまでもないことですが、文字列処理で正規表現が使えると非常に便利です。VBAで正規表現を利用する方法を紹介したいと思います。対象読者 VBAで正規表現を使用したい方VBAで煩雑な文字列処理の行う必要のある方  なお、「正規表現についてよくわからない」という方は、以下のページの解説などを参考にしてください。サルにもわかる正規表現入門 必要な環境Windows VistaまたはWindows XPVBA開発環境 正規表現を使う前に VBAで文字列比較を行う場合、標準の機能としてStrComp関数やLike演算子があります。 特にLike演算子は、ワイルドカードなどによるパターンマッチングが行えます。正規表現よりも柔軟性は劣りますが、実現したい機能がLike演算子で済むのならば、無理に正規表現は使わずLike演算子を使った方がよいと思います。詳しくは、ヘルプにあるLike演算子

  • CodeZine:signalについて(後篇)(signal, Linux, Unix, シグナル)

    はじめに シグナルについての解説最終回です。今回はシグナルを扱う上での注意点や、よりよい実装方法の提案、シグナルの未来等について説明します。過去の記事signalについて(前篇)signalについて(中篇) 5. 実装上の注意点 前回まで説明してきたとおり、シグナルは気軽に使うことができる便利なプロセス間通信です。しかしシグナルには、やってはいけないことや気をつけるべき点が多く存在します。以下、代表的な注意点を挙げます。5.1 最適化問題 volatileはそれほど使われない宣言修飾子ですが、これは最適化を制御する修飾子です。なぜこの修飾子がシグナルと関係あるのかについてですが、先にソースコードを示します。 /* 1. gcc -g -W -Wall signal_test_volatile.c -o signal_test_volatile 2. gcc -g -W -Wall sign

  • signalについて(中篇):CodeZine

    はじめに 前回に引き続きシグナルについてまとめてみたいと思います。今回はシグナルの実装方法についてです。過去の記事signalについて(前篇) 4. シグナルの実装(割り込み禁止、アラーム)4.1 割り込み禁止 シグナルは、あるハンドラの実行中に別シグナルによる割り込みを防ぐことができます。割り込み防止対象はハンドラだけではなく、ユーザー独自の関数に対しても割り込まれない事を保証することが可能です。 例えば、SIGINT(Ctrl+C)シグナルが発生しハンドラ内で時間がかかる処理を行っている時にSIGTSTP(Ctrl+Z)が来た場合には、ハンドラ内の処理が終了してからSIGTSTPを処理(バックグラウンド動作)します。 /* gcc -g -W -Wall signal_test_interrupt.c -o signal_test_interrupt */ #include <std

  • DataGridViewのカスタム列タイプの作成:CodeZine

    はじめに 私のところには、プログラミングに関するさまざまな質問が電子メールで送られてきます。できる限りすべての問題を解決するように努力していますが、ランダムな質問の多くはパブリックニュースグループの方へ回しています。それでも、自分で調べずにはいられない興味深い質問もあります。先日も、友人から次のようなメールが届きました。 「Webページに表形式で値を表示しているんだ。そのうちの1つの列に、表中の値に基づくシンプルな小さい横棒グラフを表示している。この横棒グラフは単色のビットマップで、グラフの長さはフィールドの値を示している。このグラフの横にはフィールド値も表示している。単純な表にこういう視覚情報を加えるのはすごく効果的だと思うんだ。これをDataGridViewコントロールで行うにはどうすればいいかな?」 私の予想に反して、少し調べてみると、DataGridViewに新しい列タイプを作成す

  • Presentation Modelパターンによる動的XAMLフォームの作成:CodeZine

    はじめに この記事では、Windows Presentation Foundation(WPF)とPresentation Modelパターンを使用して、複数の編集可能な行項目をコレクションにバインドする高度な技法を紹介します。この記事の内容は、読者がWPFデータバインディングの技法、およびオブジェクト指向UIライブラリで一般的に使用されるデザインパターンに関する基的知識をお持ちであることを前提としています。まず記事全体で使用するサンプルアプリケーションの概要を紹介し、その後、このアプリケーションにPresentation Modelパターンを適用してUI層とビジネスロジック層を分離する方法を示します。最後に、実際にPresentation ModelをXAMLコントロールにバインドして、複数の編集可能な行項目を持つ動的UIを作成するために必要なWPF固有の細かい処理についても説明します

  • signalについて(前篇):CodeZine

    はじめに シグナルはUNIXなどのOSにおける非同期イベントを通知する仕組みですが、「最古のプロセス間通信」「SysV系とBSD系で動きが違う」「昔のシグナルを使うと汎用性が無くなってしまう」「スレッドと相性悪し」といった理由からか、私の経験上、業務系アプリケーションではあまり使われていません。たまに使っているものを見ると、誤った使い方をしているものが多かったりします。 ところがこのシグナル、いろいろ調べていくと意外と奥が深く、有用に使えるのに、以外と情報が少ないことがわかりました。 今さらな感もありますが、ここでは私が知っている事や、調べた結果、今までの経験から得た知識などをまとめてみたいと思います。 ただし、環境によって動作が違うことが想定され、また一部のプログラムは環境に対し重大な影響を与えてしまうものもあります。プログラム等の使用に際しては十分に注意して頂き、ご自身の責任の範囲で行

  • WF(Windows Workflow Foundation)チュートリアル 後編:CodeZine

    もちろんシーケンシャルワークフローでも永続化を活用できます。シーケンシャルワークフローのイベントや時間待ちの際に、自動的に永続化が行われます。 また、ワークフロー永続化には、耐障害性という側面もあります。ワークフローの実行状態を永続化しておくことで、ワークフローの特定の部分で障害が発生した場合にも、永続化した時点のワークフローをロードして再開することができます。 WFでは、ワークフローの永続化サービスが標準で提供されており、ワークフローの状態管理をすべてWF側の永続化サービスに任せ、プログラマが意識することなく、イベント待ち状態になったワークフローを永続化させることができます。 具体的には、永続化サービスは以下のタイミングで永続化処理を行います。PersistOnCloseAttribute属性が付加されたアクティビティが完了するとき(トランザクション範囲を指定するためのTransact

  • SQL Serverにおける日付/時刻計算のベストプラクティス:CodeZine

    前回はHadoopを1台のマシンにインストールし、簡単なサンプルプログラムを実行しました。また、HDFSやMapReduceについても解説しました。今回は複数のマシンへのインストールを行います。その後、大規模なデータを実際に処理し、その性能を測ってみたいと思います。

  • CodeZine:テンプレートによるメタプログラミングと数論(MPL, メタプログラミング, テンプレート)

    1. はじめに メタプログラミングとは、別のプログラムを生成できるプログラムを書くことです。この技法はさまざまな言語においてさまざまな目的で使用されています。メタプログラミングは、部分的な評価を行うことによって1つのプログラムを別のプログラムに変換する方法、言い換えれば、プログラミングを自動化する手段であるとも言えます[11]。メタプログラミングの典型例の1つは、出力としてプログラムを生成するLexやYACCなどのコンパイラ構築ツールです。コンパイラ自体もこのカテゴリに含めることができますが、コンパイラの場合は一般にホスト言語とドメイン言語が異なります[3]。通常、コンパイラは特定の文法に従って書かれたソースを入力として受け取り、CやC++Javaなどのプログラムを出力します。 C++ではテンプレートとマクロを使用してコードを作成することができます。ただし、この方法は綿密に設計された機能

  • WF(Windows Workflow Foundation)チュートリアル 中編:CodeZine

    はじめに WFチュートリアル 前編ではWFの概要、そしてシーケンシャル ワークフローのサンプルについて解説しました。中編となる今回は、ステートマシン ワークフローのプログラミングモデルについて解説し、サンプルを作成します。 サンプルとしては、注文と発送だけを処理する簡易注文管理アプリケーションを考えます。状態遷移は以下の2つです。商品を注文すると注文完了状態(発送待ち状態)に遷移する商品を発送すると注文完了状態から発送完了状態に遷移し、終了する  ワークフロー的には以下のようになります。 実際のアプリケーションではステート数や遷移数がもっと多くなるかと思いますが、このサンプルで、Visual Studio 2005でのステートマシン ワークフローのデザインワークフロー内外のデータのやり取り複数ワークフローのハンドリング  についてしっかり押さえておけば、多くのパターンに応用していけるでしょ

  • 動的SQLによる数独の超高速解法:CodeZine

    Pinskiさんの記事は、「SQLで数独を解ける」ことを示したという点で評価できます。しかしながら、そのためのコードと実行時間が共に長大であるため、「SQLは面倒で遅い」という誤解を読者に与えかねません。稿で紹介する方法で、誤解が払拭されることを期待します。 第1、2部と第3部の手法を簡単にまとめておきましょう。 第1、2部では、手続き的な記述、つまり、どうすれば数独の解が得られるかの具体的な記述によって数独を解いています。手続き的とは言っても、せっかく宣言型言語であるSQLを使うので、手順の各ステップはなるべく宣言的に記述するように心がけています。 第3部(稿)の方法の質はたった1行のSELECT文です。このSELECT文には「数独の解とはどういうものか」だけが記述してあり、その解を得るための具体的な方法はコンピュータが考えます。ただし、このSELECT文は人間が手で簡単に書けるよ

  • 分析関数の衝撃(後編):CodeZine

    はじめに 「分析関数の衝撃(中編)」に引き続き、CodeZineのミック氏の記事で記載されたSQLを、分析関数を使って記述していきます。また、分析関数のorder by句でのrangeの使用例も解説します。対象読者SQLの可読性を向上させたい方SQLのパフォーマンスを向上させたい方  この記事では、「SQLで数列を扱う」と「相関サブクエリで行と行を比較する」に記載されているSQLを、分析関数を使って記述していきますので、先に読んでおくと理解しやすいと思います。必要な環境 稿で扱うSQLは、Oracle 10.2.0.1.0で動作確認しました。ソースコードはDB2 V9.1でも動作確認しました。その他、Oracle9i以降DB2SQL Server 2005  でも応用できます。3人なんですけど座れますか? - その1:行の折り返しを考慮しない まずは人数分の空席を探すSQL(行の折り返し

  • Pythonを始めよう:CodeZine

    はじめに こんにちわ、hirataraです。 稿では、オブジェクト指向のスクリプト言語であるPythonの紹介をしたいと思います。と言っても、実は私がPythonを勉強し始めたのは数ヶ月前のことで、まだPythonに関してさほど詳しいとは言えません。それでもこの記事を書こうと思い立ったのは、ある言語が他の言語に比べて面白い部分と言うのは、その言語にどっぷり漬かってその言語を使うことが当たり前になっている人間よりも、その言語を好きになり始めたくらいの人間の方が見つけやすいのではないかという思いからです。 そのような事情で、もしかすると当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。この記事で、少しでもPythonに興味を持ってくれる方が増えることを願っています。対象読者他言語でのプログラミング経験者Pytho

  • SQLによる数独の高速解法:CodeZine

    CALCULATE_GS_V3は控えめに言っても「遅すぎる」ので、これに比べて「高速」であっても、「数独」の解法として特別高速なわけではありません(数独をコンピュータで解いた経験のある人なら、標準的なサイズ9×9の数独を、今日の計算機は数秒で解くことはご存じでしょう)。しかしながら、稿で紹介するSQLの書き方は、さまざまな場面で応用できるはずです。ここで紹介する方法よりも劇的に速い方法を第3部で紹介しているので併せてお読みください(1秒程度で解けます)。対象読者計算機でパズルを解くことに興味のある方数独を知っている方(数独自体についての説明はしません)ストアド・プロシージャについて学びたい(ストアド・プロシージャ自体については説明しませんが、雰囲気は分かると思います)データベース管理システムで「データの管理」を超えたことをしてみたい方 必要な環境 文のコードをそのまま実行するにはMyS

  • SQLによる数独の解法:CodeZine

    はじめに SQLを使って数独(ナンプレ)を解く方法を紹介します。 データベースを操作するための言語であるSQLを別の用途に使おうとする理由は、SQLが宣言的な記述が可能な言語の中で最も普及していると思われるからです(宣言的言語と言えばPrologを思い浮かべる方も多いかもしれませんが、残念なことにPrologは、SQLほどには普及していません)。 まず、宣言的な記述について説明しましょう。タクシーに乗ることを想像してください。「渋谷に行ってください」というように、欲しい結果を書くのが宣言的な記述です。具体的な道筋は運転手が考えてくれます。それに対して「まずA通りを北に行って、B交差点を左折して・・・」というように、具体的な道筋を示すのは手続き的記述です。プログラミング言語の場合も同様です。SQLやPrologにおいては、欲しい結果をプログラマが書けば、具体的な実現方法はコンピュータが考えて

  • 階層化アーキテクチャと依存性注入・依存性逆転:CodeZine

    .NET 1.0のベータ1から.NET Frameworkに従事してきた.NET開発のエキスパートで、アプリケーションのアーキテクチャ作成と設計と開発で7年以上の経験がある。アジャイルプラクティスと実際的なビヘイビア駆動開発(BDD)テクニックを通じてチームの成功を支援する独立コンサルタントとして活躍している。BDDを.NETに応用する記事をVisual Studio Magazine、DevX、MSDNに寄稿。ポッドキャスト/スクリーンキャストとして人気のある.NET Rocks!とDNRTVに登場したことがあり、実際のデザインパターンというトピックについてMicrosoftのためのウェブキャストを配信。MSDN Canada Speakers BureauおよびMicrosoft Most Valuable Professional(MVP)のメンバ。自分のブログも継続的に更新中。