タグ

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

  • データ型は明示しないで! Modern C++での型推論

    このように、(1)(2)と「vector<int>」を2回も書かなければなりません。特に(2)では、右辺の型は分かっているんだから、左辺はそれに合わせてよ! という文句が出そうです。 初期化漏れを防止する このように、同じ意味の型を何回も書くのはかったるいな! というときに型推論は役立つわけですが、もっと切実な理由があります。それは、変数の初期化漏れの防止です。JavaでもRustでもそうなんですが、変数は宣言しっぱなしでOKです。宣言しっぱなしというのは、明確な初期化が行われていないという意味です。こうなると、その変数を参照しようとするといろいろとまずいことが起きてきます。 基データ型とかなら、どんな値か分からない ポインタ型とかなら、どこを指しているか分からない(ダングリングポインタ) なので、実行時にプログラムが不可解な動作をしたり、いきなり落ちたりするわけです。しかし、コンパイラ

    データ型は明示しないで! Modern C++での型推論
  • C#でラズパイのGPIOを操作しよう~LEDを点灯させる

    対象読者 IoTに興味があり、C#とRaspberry Pi(Linux環境)の基的な知識がある方を対象とします。Linux電子工作の初歩的な説明は割愛しているので、「ラズベリーパイをつかったセンサープログラミング超入門」の記事なども併せて参照してください。 はじめに 前回で、WindowsとRaspberry Pi環境の準備が整ったので、今回は、C#によるGPIOの基操作を解説します。 GPIO Raspberry PiでLEDなどの電子部品を操作するには、GPIO(General Purpose Input/Output)の制御が必須です。 GPIOの制御は、ハードウェア的には、SoC(System on Chip、CPUと周辺パーツを集積したもの)のレジスタを操作することなのですが、Raspberry Pi(Raspbean OS)では、直接レジスタを操作するだけではなく、Li

    C#でラズパイのGPIOを操作しよう~LEDを点灯させる
  • PHP 7のパフォーマンスが高い理由

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

    PHP 7のパフォーマンスが高い理由
    ototoi
    ototoi 2015/04/02
  • 米Google、Android向けC/C++ユーティリティ「fplutil 1.0」をリリース

    「fplutil 1.0」は、build_all_android.py、buildutil、libfplutil、android_ndk_perf.pyを収録している。 build_all_android.pyは、コマンドラインからAndroid NDKでのC/C++によるネイティブAndroidアプリのビルド、インストール、実行を可能にするスクリプト。自動ビルドだけでなく、開発時にコンパイル~実行をくり返し行う場合にも役立つ。 buildutilは、C/C++によるAndroidLinux向けアプリの設定、ビルド、アーカイブ機能を搭載する、Pythonモジュールを利用したスイート。自動ビルドに対応した統合環境で、Android Development Toolkitに含まれる従来ツールを使用している。 libfplutilは、Androidで「Hello World」のようなmain(

    米Google、Android向けC/C++ユーティリティ「fplutil 1.0」をリリース
    ototoi
    ototoi 2014/11/14
  • 並列処理のためのC++ライブラリ拡張 ~C++17: 並列STLの概要

    C++11の標準ライブラリ<thread>を使った並列化 大量のデータを分割し、複数のスレッドに分担させて処理時間を稼ぐことを考えます。スレッドに関わるAPIは、WindowsならCreateThreadやWaitForNltipleObjectなど、Linuxならpthread_xxxxと、OSによって異なるのですが、C++11では標準ライブラリ<thread>がOSごとの差異を吸収してくれているのが嬉しいところ。大量のデータを詰め込んだvectorを2つのスレッドでソートしてみます。 #include <iostream> // cout, endl #include <thread> // thread #include <algorithm> // inplace_merge, etc. #include <chrono> // clock, time_point, duratio

    並列処理のためのC++ライブラリ拡張 ~C++17: 並列STLの概要
    ototoi
    ototoi 2014/09/27
  • 【デブサミ2014】13-A-4 レポート みんな幸せ! 「自走できるエンジニア」を育成するDeNAの新卒研修

    2013年の春、株式会社ディー・エヌ・エー(以下、DeNA)の新卒エンジニア研修チームは、70人弱の新卒者に行う教育内容で悩んでいた。一斉研修では、教育が行き届かない。現場のニーズは年々変わる。熟考の末、研修チームは、新卒者も配属先も幸せになれる新卒研修として、「自走できる(自ら学び、成長していける)エンジニアの育成」に取り組んだ。それはどのような研修であり、どのような成果を得たのか。研修チームのメンバーであった同社の関口亮一氏が、立ち見が出るほど盛況な会場で語った。 研修内容が現場のニーズから乖離してきていた 「新卒研修というと、すでにエンジニアとして業務に就いている私たちからすると遠い印象があるが、当はすごく身近で大事なもの。参考にしていただきたい」 セッションの冒頭、こう切り出した関口氏は、一般的な新卒研修の問題点について語り始めた。一般的な新卒研修では、新卒者が期間限定で集められ

    【デブサミ2014】13-A-4 レポート みんな幸せ! 「自走できるエンジニア」を育成するDeNAの新卒研修
    ototoi
    ototoi 2014/03/13
    70名・・・大変だな・・・
  • OpenGLを使った地図描画エンジンの作り方(1)

    初めに 従来のYahoo!地図アプリは、社内ではラスタ形式地図アプリと呼んでおり、サーバ上で生成された地図タイル画像(ラスタデータ)を端末側で貼り合わせることで、地図を表示していました。 しかし、画像でやり取りを行うために、次のようなデメリットもありました。それは、通信の帯域を多く占有したり、地図の回転をする場合に地名などの文字も回転してしまい、読みづらくなったりする点です。 そこで、今回フルリニューアルしたAndroidYahoo!地図アプリでは、サーバからベクトルデータを受信して、端末側で地図を描画するベクトル形式地図アプリに移行しました。 ベクトル形式地図アプリに移行したAndroidYahoo!地図アプリは、従来版と比べ、以下のような点がメリットとして挙げられます。 通信の軽量化 回転拡大縮小のスムーズ化 3Dなど新しい地図表現の追加 ベクトル形式地図アプリ ラスタ形式のデータ

    ototoi
    ototoi 2013/10/25
  • マルチスレッドを意識しないマルチスレッド・ライブラリ「Intel Concurent Collections」がおもしろい

    「Intel Concurrent Collections for C++」(CnC)とは 実際並列処理はややこしいしおっかないです。大きなキッチンで大勢のコックが包丁とフライパン振り回しているようなもので、ほっとけばしっちゃかめっちゃかになっても不思議じゃない。各人はそれぞれの役割に専念し、他人のふるまいを気にせず勝手に働きながらも全体としては統制のとれた動きを作り出さにゃなりません。mutexで排他制御したりjoinで完了を待ったり、さまざまな道具を駆使して統制のとれた動きを作り出しているのはプログラマであり、そこがいちばん難しく悩ましいところです。 C++,C#あるいはVB,Javaもそうですが、コードは原則的に並べた順に実行されます。 と書けば、まずf()、それが終わればg()、しかるのちh()の順で呼び出されます。たとえこの3つをどの順にやっても(あるいは同時にやっても)構わない

    ototoi
    ototoi 2013/09/04
  • よく使うC++のイディオム 「NVI」と「RAII」

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

    よく使うC++のイディオム 「NVI」と「RAII」
    ototoi
    ototoi 2013/08/25
  • Googleが発表した新しいプログラミング言語「Dart」を使ってみよう!

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

    Googleが発表した新しいプログラミング言語「Dart」を使ってみよう!
    ototoi
    ototoi 2012/06/01
  • オープンソースのコンパイラ「LLVM」が、NVIDIA GPUをサポート

    NVIDIAは、オープンソースのコンパイラ「LLVM」が、NVIDIA GPUをサポートしたことを、9日(現地時間)に発表した。「LLVM」によるNVIDIA GPUのサポートによって、GPUアクセラレーションを利用可能なプログラミング言語が大幅に増えるとともに、そのメリットを享受できる研究者や独立系ソフトウェア・ベンダー(ISV)が、劇的に増えることになる。 「LLVM」は、幅広く使われているオープンソースのコンパイラ・インフラストラクチャで、モジュール型の設計によってサポートするプログラミング言語やプロセッサ・アーキテクチャを簡単に追加できる。C/C++、Objective-C、Fortran、Ada、Haskell、Javaバイトコード、 PythonRuby、ActionScript、GLSL、Rustなど、多彩なプログラミング言語とフロントエンドに対応している。 同社は、「LL

    オープンソースのコンパイラ「LLVM」が、NVIDIA GPUをサポート
    ototoi
    ototoi 2012/05/18
  • Microsoft、「.doc」「.xls」などのOfficeバイナリファイル仕様を公開

    Microsoftは15日、Office 97以降で使われているバイナリファイル形式の文書仕様を公開した。「Microsoft Open Specification Promise」(OSP)プログラムの下で使用できる。 公開されたのは拡張子が「.doc」「.xls」「.ppt」となるOffice製品のバイナリファイル仕様。これらのバイナリファイルはOffice 97より採用され、Office 2003まで基的な保存形式となっている。最新版のOffice 2007からはデフォルト保存形式が「Office Open XML」(.docx、.xlsx、.pptx)となっているが、バイナリ形式での保存もできるようになっている。 MicrosoftのWebサイトでは「Word 97-2007バイナリファイルフォーマット」(.doc)、「Excel 97-2007バイナリファイルフォーマット」(

    Microsoft、「.doc」「.xls」などのOfficeバイナリファイル仕様を公開
    ototoi
    ototoi 2012/03/19
  • Google、Apacheの自動ウェブ高速化モジュール「mod_pagespeed」公開

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

    Google、Apacheの自動ウェブ高速化モジュール「mod_pagespeed」公開
    ototoi
    ototoi 2010/11/05
  • グリーCTOが語る、大規模ソーシャルゲーム開発の舞台裏

    9月1日、ゲーム開発者向けカンファレンス「CEDEC 2010」において、SNSGREE」を運営するグリー株式会社(以下 グリー)が『大規模ソーシャルゲームのつくりかた ~60分でわかるサーバサイド技術~』と題するセッションを講演した。 一日あたり億単位のトラフィックを捌くインフラはどうなっているのか。技術者2名が解説したインフラ構築のノウハウや、ソーシャルゲームと一般のオンラインゲームとの違いについて紹介する。 オンラインゲームとソーシャルゲームとの違い 最近テレビCMでも目にする機会が多くなってきたSNS(ソーシャルネットワーキングサービス)の「GREE(グリー)」。2010年6月時点の数字で、会員数2059万人、月間353億ページビューという言わずとしれた大人気サイトだ。中でも携帯電話向けソーシャルゲームが特徴的で、専用機向けのゲームと比べるとコアゲーマー以外のプレイヤーも多く、利

    グリーCTOが語る、大規模ソーシャルゲーム開発の舞台裏
    ototoi
    ototoi 2010/09/14
  • 「NVIDIA Parallel Nsight」リリース、Visual Studio上でGPGPU開発が可能に

    米NVIDIAは16日(現地時間)、GPUコンピューティング用の開発支援ツール「NVIDIA Parallel Nsight」(以下、Parallel Nsight)をリリースした。 Parallel Nsightは、並列処理能力が高い画像処理用のGPUを使って、画像処理以外の汎用目的演算(GPGPU)を行うアプリケーションを開発するためのツール。ユーザーの多いMicrosoft Visual Studioの拡張機能として動作し、使い慣れた開発環境上でシームレスにCUDA C/C++やDirectComputeのデバッグが行える。各種の解析ツールも用意されており、GPGPUアプリケーションのパフォーマンスチューニングにも役立つ。 また、グラフィックス・デベロッパーが必要とするさまざまなツールも用意されているため、HPCだけでなくDirectX 11グラフィックスの開発環境としても使用できる

    「NVIDIA Parallel Nsight」リリース、Visual Studio上でGPGPU開発が可能に
    ototoi
    ototoi 2010/07/26
  • OSSのサーバー仮想化管理ソフト「Karesansui 2.0」、サーバー監視やグラフレポート機能を追加

    Karesansui Projectは23日、オープンソースの国産サーバー仮想化管理ソフトウェア「Karesansui 2.0」をリリースした。XenとKVMの2つのハイパーバイザーをサポートしており、コマンドベースの管理を行うことなく、ブラウザ上のインターフェイ スから誰でも簡単に仮想サーバーを管理できる。 Karesansui Projectは23日、オープンソースの国産サーバー仮想化管理ソフトウェア「Karesansui 2.0」をリリースした。XenとKVMの2つのハイパーバイザーをサポートしており、コマンドベースの管理を行うことなく、ブラウザ上のインターフェイスから誰でも簡単に仮想サーバーを管理できる。 2.0からは、ディスク管理をすべてストレージプールによって仮想化し、ネットワークストレージ(iSCSI)にも対応した他、サーバー監視・通知機能、グラフレポート機能等が追加され、管

    OSSのサーバー仮想化管理ソフト「Karesansui 2.0」、サーバー監視やグラフレポート機能を追加
    ototoi
    ototoi 2010/07/24
  • 文章の中のはてなキーワードをハイライトさせる

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

    文章の中のはてなキーワードをハイライトさせる
    ototoi
    ototoi 2010/03/25
  • SEXYHOOKの実装部 とある関数の接合部(2)

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

    SEXYHOOKの実装部 とある関数の接合部(2)
    ototoi
    ototoi 2010/03/12
  • SEXYHOOKで始めるテスト とある関数の接合部(1)

    はじめに テストを書いていると、一時的に関数の挙動を書き換えたいときがあります。 time()がハードコードされている関数をデバッグしたい時や、稀にしか失敗しないAPIの失敗をエミュレーションしたい時などです。これらはテストの自動化の妨げになっていました。 拙作のSEXYHOOKを利用すると、一時的に関数の挙動を書き換え、失敗を返すことが可能になります。 稿では、SEXYHOOKの使い方について説明します。 対象読者 C++でソフトの開発を行い、テストを書きたいエンジニア SEXYHOOKはC++で使うことを想定しています。 必要な環境 Windows Microsoft Visual C++ 6/2003/2005/2008 Linux GCC 4.x(推奨) / 3.x 現状では32bitバージョンのみのサポートになります。SEXYHOOKはデバッグビルドのみで利用できます。 SEX

    SEXYHOOKで始めるテスト とある関数の接合部(1)
    ototoi
    ototoi 2010/03/12
  • Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編

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

    Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
    ototoi
    ototoi 2009/11/06