タグ

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

  • C++/CLI: とある文字列の相互変換(コンバージョン)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    C++/CLI: とある文字列の相互変換(コンバージョン)
    craf
    craf 2010/01/27
    [C++/CLI][.NET][string]
  • sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)

    はじめに 今回はsizeofオペレータをとりあげます。sizeofは、引数に与えたオブジェクトや型名から、その型のデータがメモリ上に占めるバイト数を求めるオペレータです。皆さんも、メモリ領域を動的に確保したいときや文字列操作などに関連して使ったことがあるでしょう。まずはsizeofオペレータの使用上の注意について説明し、その後でsizeofオペレータの誤用例を2つ紹介します。 sizeofオペレータ使用上の注意 「sizeofオペレータの使用上の注意 その1」は、プログラマが意図する正しい引数を渡すこと、です。メモリ上のオブジェクトのコピーや移動などの操作は、オブジェクトのメモリ上のサイズにもとづいて行います。オブジェクトのサイズを間違っていたら、アクセス違反やオーバフローといった脆弱性につながることは容易に想像できるでしょう。 「sizeofオペレータの使用上の注意 その2」は、引数に副

    sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)
  • PowerShell 2.0の新機能(2) ――リモート処理編

    はじめに PowerShell 2.0ではPSRemotingという機能が追加され、リモート処理が可能になりました。このPSRemotingはWinRM2.0というWS-Managementを使用してリモート処理を行います。WS-Managementというのは異なるコンピュータ間で通信を行うための共通規格です。 いろいろな用語が出てきましたが、身構えることはありません。最初の設定が済んでしまえば簡単に使用することができますので、順を追って理解していきましょう。 対象読者 PowerShellの基的な操作ができる方。 PowerShellについて学びたい方は、PowerShell入門の連載を参照ください。 リモート処理に必要な条件 リモート処理を行えるようにするには、下記の条件を満たす必要があります。 ローカルマシンとリモート制御するマシンの双方にPowerShellがインストールされてい

    PowerShell 2.0の新機能(2) ――リモート処理編
  • 安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)

    UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されますが、シグナルハンドラで行える処理には制約があり、これを無視したコードを書くと脆弱性につながる恐れがあります。今回はシグナルハンドラの制約に関するルールを見てみましょう。 シグナルハンドラの制約 UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されます。ユーザが[Ctrl]-[C]キーを押してプログラムを中断しようとしたり(SIGINT)、整数オーバーフローが発生したり(SIGFPE)すると、それらのイベントに対応するシグナルがカーネルからプロセスに対して通知されるのです。プログラマは、これらのシグナルを受信した時に特定の動作を行わせる「シグナルハンドラ」を書くことが

    安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)
  • 統合開発環境「PowerShell ISE」を使ってみよう(2) カスタマイズ編

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    統合開発環境「PowerShell ISE」を使ってみよう(2) カスタマイズ編
    craf
    craf 2009/12/02
    どのプロファイルがどれになるかすぐ忘れる
  • Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編

    Scalaとは Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaJavaの後継として実用的な言語を目指して開発されています。 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。 Scalaのメリ

    Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
  • 新たな関数型言語「F#」

    はじめに F#とは、マイクロソフトリサーチが開発しているOcaml(Objective Caml)互換の関数型プログラミング言語(以降、関数型言語)です。他の.NET Framework対応言語と同じくVisual Studio(以降、VS)に統合される予定で、現在マイクロソフトから提供されているVS2010のベータ版にも搭載されています。 マルチコアプロセッサが主流になり、従来の科学やその他の学術研究分野に限らず、金融業、製造業など幅広い分野においてHPC(High Performance Computing)が普及してきました。それに伴い、並列処理や分散プログラミングを得意とし、高演算処理能力を発揮する関数型言語への期待は急速に高まりつつあります。関数型言語はその長所にもかかわらず、他言語との相互運用性の乏しさもあって長い間ごく限られた一部のデベロッパーにしか学習されていませんでした。

    新たな関数型言語「F#」
  • C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す

    C++0Xの新機能が搭載されたVisual Studio 2010 Microsoftの開発者向け技術情報サイト「MSDN」では、Visual Studio 2010 β1 がリリースされています。IDEがWPFで作られていたり、.NET Frameworkのバージョンが上がっていたりと、Visual Studio 2010では様々な変更/拡張が施されているようですが、C++屋の筆者としては、Visual C++が部分的にせよC++の新規格(通称C++0X)の新しい機能を積極的に取り入れていることが、とても嬉しく思います。 Visual C++ ver. 10に追加されたC++0Xの新機能のひとつ、「ラムダ式(lambda expression)」を少しばかり触ってみましょう。 関数オブジェクトとは C++templateをサポートし、それにあわせてSTLに代表されるテンプレート・ライブ

    C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  • STL/CLRツアーガイド

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    STL/CLRツアーガイド
    craf
    craf 2009/06/21
    [C++/CLI][.NET][STL][STL/CLR]
  • C++/CLIのSTL/CLR オブジェクトにC#からアクセスする方法:CodeZine

    Visual C++ 2008 で追加された STL/CLR は C++ 言語の標準ライブラリ STL をマネージ環境で実装したものです。STL/CLR を使ったプログラミングができるのは C++/CLI だけですが、C++/CLI で作ったライブラリから STL/CLR オブジェクトを提供することで、他の .NET アプリケーションと連携することが可能です。稿では C++/CLI で作成した STL/CLR オブジェクトを C# 言語から操作する方法についてご説明します。 はじめに~ Visual C++ 2008の注目すべき機能「 STL/CLR 」 Windows Presentation Foundation や LINQ、Silverlight など、Visual Studio 2008 世代で追加された多くのリッチな機能が華々しく紹介される中、C++ 言語に関連した新機能の報

    C++/CLIのSTL/CLR オブジェクトにC#からアクセスする方法:CodeZine
    craf
    craf 2009/06/21
    [C++/CLI][.NET][STL][STL/CLR]
  • DirectX Graphicsの隠し設定を利用した開発テクニック

    Windows OSにはコントロールパネルから変更できない多くの設定が存在し、それらの設定の多くはレジストリやiniファイルに格納されています。これと同じように、DirectX Runtimeにもいくつかのシステムレベルの設定が存在します。この記事ではこれらDirectX Graphicsの隠れた設定について、実装上のテクニックを交えながら紹介してゆきます。 はじめに Windows OSにはコントロールパネルから変更できない多くの設定が存在し、それらの設定の多くはレジストリやiniファイルに格納されています。これと同じように、DirectX Runtimeにもいくつかのシステムレベルの設定が存在します。これらの設定は、エンドユーザにとってはあまり役立つものではありませんが、開発者が用いればデバッグや問題解決に利用できる有用なパラメータとなります。この記事ではこれらDirectX Grap

    DirectX Graphicsの隠し設定を利用した開発テクニック
    craf
    craf 2008/09/12
    APIにブレークポイントを設定する話などコラムが充実
  • STL/CLRツアーガイド:CodeZine

    はじめに 赤坂さんが面白いアーティクルを寄稿してくれました。C++/CLIのSTL/CLRオブジェクトにC#からアクセスする方法  Visual C++ 2008で新たに追加されたSTL/CLRはなんとも不思議なライブラリです。.NET FrameworkのBCL(Base Class Library)が提供するSystem.Collections.Generic名前空間で定義されたBCLコレクションと同等(それ以上?)のクラス群を提供し、それらは標準C++ライブラリに組み入れられたSTLとの高い互換性を実現しています。その代償として、templateで実装されているためにアセンブリの外に持ち出すことができません(C#やVBはtemplateを理解できませんから)。 赤坂さんのアーティクルでは、STL/CLRコンテナがinterfaceを実装していることを利用してアセンブリ外からinter

  • データが1件の時だけ、JavaScriptの必須チェックが誤動作する:CodeZine

    上の画面は、ワークフロー機能でよくある承認画面です。チェックボックスで選択したデータは、[承認]ボタンをクリックすることで、状態を「承認待ち」から「承認済み」へ変更できます。入力チェックとして、「選択0件で承認ボタンをクリックしたときはエラー表示」という処理をJavaScriptで実装しています。 ところが、データが1件の時だけ、「選択しているのに『1件も選択されていません』というエラーが出る」というバグが発生しました。バグコード 入力チェックのコードは、次のようになっていました。 function check() { var sentakuChk = document.form1.sentakuChk; for (var i=0; i<sentakuChk.length; i++) { if (sentakuChk[i].checked) { return true; } }

  • C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit:CodeZine

  • C++で作ったアプリケーションとJScriptの連携:CodeZine

    はじめに WindowsにはWindows Scriptと呼ばれるスクリプトを実行するインフラが用意されており、VBScriptとJScriptという2つのスクリプト言語が搭載されています。 稿ではC++で書かれたネイティブアプリケーションからJScriptを実行し、JScriptからC++のクラスメソッドを呼び出す方法や、反対にC++からJScriptの関数を実行する方法を紹介します。また、JScriptのArrayオブジェクトをC++で作成する方法についても紹介します。対象読者 以下のアプリケーションを開発したことがある人。C++、JScriptを使ったアプリケーションWin32 APIを使ったアプリケーションCOMコンポーネントを利用したアプリケーション 作成/実行環境Windows XP/VistaVisual Studio 2005 ソースコードソースコードのダウンロード  ダ

  • 言語仕様から読み解くC# 3.0入門:CodeZine

    はじめに C# 3.0の情報や話題も徐々に増えてきてましたし、実際に試されている方も多いことと思います。DLINQやXLINQなどのテクノロジもその姿を現しました。しかし、たまに「C# 3.0で追加された言語仕様はどれもLINQを実現するためのようなもの」といった発言や書き込みを目にします。確かに実現には必要ですが、これは少しショック! ということで、C# 3.0の言語仕様自体に興味を持っていただくべく投稿初挑戦です。これらがどのような新しいスタイルを導くのかをお見せできればと思います。では、未熟者ですがよろしくお願いします。対象読者C# 3.0の言語仕様に興味のある方関数プログラミングに興味のある方やさしい未婚女性(お料理が好きだとうれしい) C# 3.0 言語仕様解説 題に入る前に、まずざっと追加分の仕様を紹介したいと思います。あまり細かい部分までは説明しきれませんので、詳細は仕様書

    craf
    craf 2007/11/01
  • POCO::Netライブラリによる組み込みWebサーバの実装:CodeZine

    はじめに 記事ではPOCO(C++ Portable Componentsの略)というオープンソースのC++用クラスライブラリを紹介します。 日語の情報が少なく、あまり有名ではありません。しかし、強力なライブラリが揃っているのでプログラミングの強い味方になること間違いありません。 今回は、POCOの導入方法と、いかにPOCOが強力であるかを示すために、アプリケーション組み込み型のWebサーバのサンプルソースを解説します。Webサーバが非常に少ないコード量で記述できることに驚かれると思います。 POCOのクラスは数多くあり、今回の記事だけではとてもすべてを紹介しきれません。引き続き、クラスの利用方法や、アプリケーションを作る上で便利なパーツの製作などの記事を予定しています。対象読者 オブジェクト指向を理解し、C++のクラスライブラリを活用できる方を対象としています。必要な環境 POCOは

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

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

  • 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