Y's note

CentOSでR言語を使ってみたことのまとめ

[CentOs] : CentOSでR言語を使ってみたことのまとめ Rクックブック 作者: Paul Teetor,大橋真也,木下哲也出版社/メーカー: オライリージャパン発売日: 2011/12/22メディア: 大型本購入: 9人 クリック: 61回この商品を含むブログ (13件) を見る はじめに 統計的処理と結果のグラフ化をするために学生時代はmatlabを利用していました。matlabは行列演算に優れ使い易い言語だったのですが、一番の難点はMathWorks社の商用製品である事です。しかも高い。MathWorks 日本 - MATLAB / Simulinkによる数値計算 - マスワークス公式日本語サイト matlabと同様の機能をもつ(互換性は無い)scilabというFreeの言語もありますが、イマイチ流行っている感はありません。Home - Scilab WebSite Freeの言語で統計処理をやるのはR言語が主流のようなので、それに習ってR言語を使って行きます。今日はR言語/RCommander周りの説明を行います。多少癖がある言語なので学習が面倒ですが慣れると優れものと聞くので頑張って勉強します。The R Project for Statistical Computing CentOSへのInstall 環境 CentOS5.7、64bit環境、Core2Duoです。 $ cat /etc/redhat-release CentOS release 5.7 (Final) $ cat /proc/cpuinfo cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU E7600 @ 3.

これだけ覚えれば安心!ネット広告に関する重要指標と算出方法のまとめ

[AD] : これだけ覚えれば安心!ネット広告に関する重要指標と算出方法のまとめ 図解入門ビジネス 最新 ネット広告&モバイル広告がよーくわかる本―効果的な集客のための基礎知識 (How‐nual Business Guide Book) 作者: 佐藤和明出版社/メーカー: 秀和システム発売日: 2010/03メディア: 単行本購入: 2人 クリック: 36回この商品を含むブログ (4件) を見る はじめに CVR、CPC、PPC.... ネット広告のKPI(Key Performance Indicator)には3文字のアルファベットが良く利用されます。ベテランの先輩達は会社の会議で当たり前のようにアルファベットで表現されていますが、初心者には理解が及びません。そこで自分で学習したKPI指標を以下に簡単にまとめていきます。 Index 表示系 PV Imps User系 UU UB / UDB KPI系 KPI CV CVR CTR ROI ROAS CPC CPM eCPM CPA CPI / CPO Reach Frequency グロス/ネット売り上げ その他 Links 表示系 PV(Page View) Pageがどれだけ表示されたかという指標です。 PVは1アクセスで1カウントされます。 だいたい1人のUserが複数のページにアクセスするので、UUよりもPVが多くなるのが一般的です。 Yahoo JAPAN!

Makefileの書き方

[C++] : Makefileの書き方 GNU Make 第3版 作者: Robert Mecklenburg,矢吹道郎(監訳),菊池彰出版社/メーカー: オライリージャパン発売日: 2005/12/01メディア: 大型本購入: 4人 クリック: 115回この商品を含むブログ (33件) を見る 利用するケース C/C++を書いた時に複数ファイルから実行ファイルを生成するときやライブラリをIncludeする場合コンパイルのオプションが複雑になります。複雑なオプションを毎回コマンドラインで入力するのではなく、Makefileというコンパイルのオプションルールを記載してmake/gmakeコマンドにて実行ファイルを生成すると便利です。今回はMakefileの簡単なルールについて紹介します。 Makefileの基本 基本ルール C++ソースのコンパイルにはg++を利用します。例えばhello.cppというファイルをコンパイルする場合は$ g++ hello.cpp -o helloと実行するとhelloという実行ファイルが生成されます。これをMakefileを使って書くと次のようになります。Makefileを作成したらgmakeとコマンドを実行するだけです。 hello: hello.cpp #ターゲット: 依存ファイル g++ -Wall hello.cpp -o hello #実行コマンド clean: rm -f *.o hello書式を簡単に説明すると、1行目に生成したいターゲットファイル名: 依存ファイル、2行目に生成するための実行コマンドを記載します。実行コマンドの先頭にはTabを入力する必要があります。viなどではControl-V、Tabとして入力すると識別されると思います。Tabではなくspaceを入れてしまうと「Makefile:2: *** 分離記号を欠いています. 中止.」とエラーが出力されてしまうので注意が必要です。 上のMakefileをgmakeコマンドで実行するとhelloという実行ファイルが生成されます。生成された実行ファイルを消去したい場合はgmake cleanと実行するとrm -f *.o helloの箇所が実行されます。g++の-Wallオプションですが、全ての警告オプションを結合してくれるもので一番厳密に文法をチェックします。 $ ls drwxr-xr-x 2 yuta yuta 4096 6月 30 11:40 . drwxr-xr-x 6 yuta yuta 4096 6月 30 11:20 .

C++でマルチスレッドプログラミングを試してみたことのまとめ

[C++] : C++でマルチスレッドプログラミングを試してみたことのまとめ C++プログラミング入門 作者: グレゴリーサティア,ダウグブラウン,Gregory Satir,Doug Brown,望月康司,谷口功出版社/メーカー: オライリー・ジャパン発売日: 2001/11メディア: 単行本購入: 9人 クリック: 147回この商品を含むブログ (29件) を見る Index Word 排他制御 アトミック性 クリティカルセクション fork マルチプロセス/マルチスレッド mutex semaphore Pthreads スレッドセーフ スピンロック ACID pthread API fork semaphore mutex Attention links Word 初歩的な単語ですが、マルチスレッドプログラミングに関するものを簡単にまとめます。 排他制御 複数のタスクが処理を並行して同一の資源にアクセス可能な場合、データの整合性が合わない事を避けるために他のプロセスの処理を排除すること。相互排除(mutual exclusion)ともいう。最大k個のタスクが資源にアクセス可能な事をk-相互排除と呼ばれる。 アトミック性 複数の操作が不可分であり、切り離せない事。システム上の他の操作から見てアトミック性を持つ操作は全てが完了したか/全てが失敗したかの状態として観測できない事。全てが失敗したと観測された場合は処理前の状態にロールバックしないとならない。 クリティカルセクション 複数のタスクの同時アクセスを可能とした時に、データの不整合が発生すると破綻する部分の事。クリティカルセクションでは排他制御を行い、データのアトミック性を保証する。 fork UNIX系のシステムコールで親プロセスから子プロセスを生成すること。forkはプロセスを新たに生成するのでマルチスレッドとは異なりマルチプロセスである。 マルチプロセス/マルチスレッド マルチプロセスはそれぞれのプロセスが独立したメモリ空間を使用してプロセス毎の平行した処理が可能。マルチプロセスはプロセス間通信や共有メモリを使ってデータのやり取りができる。それに対してマルチスレッドは同一のメモリ空間に対して複数のスレッドを作成して平行処理が可能。メモリを共有しているのでマルチスレッドはデータのやり取りがスレッド間でできる。 mutex Mutual Exclusion(相互排他)の略で排他制御を行う場面でアトミック性を保証するための同期仕様。広義にはsemaphoreの一種と言える。semaphoreは同一クリティカルセクションに対して複数のタスクが操作可能であり、mutexでは一つしか操作可能とならないので完全なる排他制御。P操作(ロック)、V操作(アンロック)を持ち排他制御を行う。 semaphore 複数のタスクが同一資源にアクセスする上限を規定する時に用いる。同時アクセス1とした場合はmutexとほぼ同じことになり、これをバイナリセマフォと呼ぶ。処理としては共通領域にセマフォ領域を確保し、任意の最大k個のアクセスを許可する。セマフォ領域でタスクがP操作、V操作により処理実行中/完了フラグのON/OFFを行う。 Pthread POSIX標準のスレッドのこと。スレッド生成や操作のAPIが用意されている。C言語のデータ型や関数をpthread.

はてなダイアリーにFacebookのLikeBoxを設置する方法

[Web] : はてなダイアリーにFacebookのLikeBoxを設置する方法 フェイスブック 若き天才の野望 (5億人をつなぐソーシャルネットワークはこう生まれた) 作者: デビッド・カークパトリック,小林弘人解説,滑川海彦,高橋信夫出版社/メーカー: 日経BP社発売日: 2011/01/13メディア: ペーパーバック購入: 33人 クリック: 2,842回この商品を含むブログ (240件) を見る イイネ!してくれた人を知るために このブログへのアクセスリファラーを見てみるとFacebookからの誘導がいくつかあります。誰かがFacebookでシェア、このブログ上でイイネ!ボタン押下をしてくれているんですが、誰がイイネ!してくれたのかが分かりません。イイネ!してくれた人を知るため、また更なるイイネ!を取得するためにLikeBoxを設置します。 やること やることは3つです。 Facebookページ作成 LikeBox設置モジュール作成 はてなダイアリーにLikeBoxモジュールを貼付け Facebookページ作成 http://www.facebook.com/pages/create.php からFacebookページの作成を行います。 まずはカテゴリを選びます。私はアーティスト、バンド、有名人カテゴリを選択しました。 次にプロフィール画像を投稿します。 最後にFacebookページのURLを登録します。今回は http://www.facebook.com/yutakikuc こういったURLで登録しました。 上の右写真のようなページが作成されます。 LikeBox設置モジュール作成 http://developers.facebook.com/docs/reference/plugins/like-box/ からLikeBoxの設置モジュールを作成します。 Facebook Page URLの項目に上で登録したFacebookページのURLを記載します。 設置したいLikeBoxのWidthやHeighといったパラメータを入力します。 一番下にあるGet Codeというボタンを押します。 Like BoxのプラグインコードというPopUpが出てきます。HTML5、XFBML、IFRAMEが選択できます。HTML5のコードそのままはてなダイアリーに貼付けるとエラーが出てしまうので、ここではIFRAMEを選択します。 IFRAME定義をはてなダイアリーで読み込めるように変換します。IFRAMEを選択した時にiframe srcの先頭にhttp:を付ける事を忘れないようにしましょう。 なぜか付与されていないです。 変換は便利なサイトがありました。はてなダイアリーに任意のiframeを貼り付ける - daily gimite 以下は変換したモジュールです。 scriptsrc="

Subversionでの管理対象外設定について

[programming] : Subversionでの管理対象外設定について 実用 Subversion 第2版 作者: C. Michael Pilato,Ben Collins-Sussman,Brian W. Fitzpatrick,宮本久仁男(監訳),朝枝雅子,浜本階生出版社/メーカー: オライリージャパン発売日: 2009/07/27メディア: 大型本購入: 6人 クリック: 45回この商品を含むブログ (19件) を見る 管理対象外設定 Subversion(SVN)でプログラムのソースを管理する時に、管理対象外のファイル/ディレクトリとして設定したい時があります。今日はその設定方法の紹介になります。 svn propset 管理対象外にするためにはsvn propsetというコマンドを使います。propsetにてsvn:ignore属性を設定します。 propsetについて詳しい情報が欲しい場合は$ svn help propsetを実行します。以下にFile/Directoryの両方をSVN管理対象外にする設定を記述します。 Fileに対しての設定 文法 svn propset svn:ignore -F svn propset svn:ignore --file (例) ignoreFileというファイルをカレントDirectoryにおいてSVN管理対象外とする $ svn propset svn:ignore -F IgnoreFile . Directoryに対しての設定 文法 svn propset svn:ignore * (例) IgnoreDirの全ファイルに対してSVN管理対象外とする $ svn propset svn:ignore * IgnoreDir 設定確認 svn status 管理対象外と設定したFile/Directoryの状態を確認するにはsvn statusコマンドを実行します。使い方の詳細が知りたい場合はsvn help statusを実行します。

より良いプレゼンを行うための5つの改善点

[presentation] : より良いプレゼンを行うための5つの改善点 スティーブ・ジョブズ 驚異のプレゼン 作者: カーマイン・ガロ,外村仁解説,井口耕二出版社/メーカー: 日経BP社発売日: 2010/07/15メディア: 単行本(ソフトカバー)購入: 126人 クリック: 3,690回この商品を含むブログ (298件) を見る 前書き 六本木でWebプログラマをやっています@yutakikucです。いつもは技術のネタしか書きませんが、今日は技術セミナー発表の反省点を書きます。この半年間で大人数に対してプレゼンする機会を2回頂き、どちらも多くの失敗点があった事が後から分かりました。プレゼン直後は自分的にも良い発表が出来たと思い込んでいたのですが、撮影された動画を見て愕然としました。客観的に振り返る事は次回のプレゼン機会に有効に活かせる点が沢山見つかります。自分が話す動画を見るのはとても恥ずかしい事ですが、動画を撮影しもらって内省すると良いでしょう。今回の内省する点は以下の5つに絞ります。どれも超基本的な事のように思われますが、意識しても難しい事だと感じました。 プレゼンの対象が曖昧 プレゼンの勉強不足 聴衆を引きつけていない 「えっと」、「あのー」と言ってしまう 表現が的を得ていない プレゼンの対象が曖昧 "誰に対して何を話したいのか?" 誰に向けたプレゼンなのかを最初から意識しないとプレゼン資料やシナリオの方向性が大きく異なります。プレゼンに求められた要件と対象レベルを明確にする事が重要です。僕は今回対象者が曖昧だったため、数回資料を作り直す必要がありました。発表前に色々な人からFeedBackをもらい、最終的には対象を初中級者向けと定義しました。自分が思っているほど他人は理解していない、分かりやすい資料じゃないと理解してくれない事を意識する必要があります。 404 Blog Not Found:惰翻 - プレゼンをイカす10のtips 誰もがスティーブ・ジョブズになれる!? プレゼン成功5つの秘訣 人前での表現がうまい人は何が違うのか|マーケットが見える!人のココロをつかむセオリー|ダイヤモンド・オンライン ASCII.jp:第9回 誰でも必ず上達する! 勝てるプレゼン技術とは|独立すれば、キラリと光る SEのための起業塾 プレゼンの勉強不足 "プレゼンの型は何か?" 今まで意識していた事としてはトップダウン(まずは結論から喋って後から理由付け)で話す事、不必要な言葉は全て削る事の2点だけでした。それ以外にも多くのプレゼンメソッドは存在します。自分でどういった方法が良いかを考えるだけでなく他者の良いプレゼンの型を学ぶ必要があります。実際にプレゼンが巧い人の発表を聞いて技術を盗むのも一つの手段ですね。色々な人がWebでプレゼンの極意について紹介しているので次回から参考にしたいと思います。 プレゼンハック 〜プレゼン改善のための10個の小技〜 | IDEA*IDEA 良いプレゼンを作る5つのポイント教えます : ライフハッカー[日本版] すごいプレゼン資料まとめ - NAVER まとめ 最強プレゼンテーションの10のコツ | SEO Japan プレゼンテーション・パターン (Presentation Patterns) 聞き手を引きつけていない

初心者から見たPerl言語I/Fは気持ち悪いが、たった一行の記述が素晴らしく強力な件について

[Perl] : 初心者から見たPerl言語I/Fは気持ち悪いが、たった一行の記述が素晴らしく強力な件について プログラミングPerl〈VOLUME1〉 作者: ラリーウォール,ジョンオーワント,トムクリスチャンセン,Larry Wall,Jon Orwant,Tom Christiansen,近藤嘉雪出版社/メーカー: オライリー・ジャパン発売日: 2002/09メディア: 単行本購入: 8人 クリック: 245回この商品を含むブログ (130件) を見る 追記 ※2012/06/10 toku_bassさんからご指摘頂いた内容を載せておきます。 shebangの定義は #!/usr/bin/env perlの方が都合が良い。 連想配列の定義でkeyを''や""で囲まないとエラーになる。 use strict無しでは''や""が無くてもそのまま実行されてしまいますが、use strictを使うと確かにエラーになる事を確認しました。よって必ずkeyは''や""で囲むべきです。 #!/usr/bin/env perl use strict; my %hash = ( 'key0', 0, 'key1', 1, 'key2' ,2 ); foreach( sort keys %hash ) { print "Key = $_Value = $hash{$_}\n"; } arrayの連番定義は1..9等を使うと良い。 文字列の定義の場合はqw/ foo bar hoge /を使うと良い。''などで囲むのが面倒なので。 #!/usr/bin/env perl use strict; my @array = ( 1 .

標準入出力プログラミング

[CentOs] : 標準入出力プログラミング 入門Unixオペレーティングシステム 作者: ジェリーピーク,ジョンストラング,グレーストディノ,Jerry Peek,John Strang,Grace Todino,羽山博出版社/メーカー: オライリージャパン発売日: 2002/12メディア: 単行本 クリック: 5回この商品を含むブログ (6件) を見る 標準入力 今日は簡単なメモ書きです。標準入力の使い方について少しだけ話します。 プログラム中で容量があるデータを一度ファイルに落として、その落としたファイルに対して別のプログラムを呼び出すような処理がかかれているのを時たま目にします。見る度に良い方法ではないと感じます。例えば1processで1fileを生成するような場合は、processに比例してfile数とDisk圧迫が重なります。重要なシステムでログファイルを記録するなどの使い方ではない限りfileを中継する方法は辞めましょう。代わりに実行コマンドへの標準入力で対応する方が効率的です。 標準入力とはUnix/Linuxで広く用いられているプログラムへの入力方法で、Keybord入力のコマンドライン引数、プログラムから別のプログラムへ入力する方法などを意味します。BigData処理のHadoopStreamingも標準入出力を利用しています。 標準出力 標準入力によるデータ受け取りを行うプログラムに対して標準出力により受け渡しを行います。標準出力はプログラム内部でprintされる結果であったり、単純なUnix/Linuxコマンドのechoだったり、ヒアドキュメントで作る事も可能です。標準入力に複雑なデータ構成を必要とする場合はプログラム言語で記述、それ以外はechoやヒアドキュメントで十分だと思います。Sampleを以下に記述します。 プログラム言語での出力 ただprintするだけです。2列のデータを作ります。列の表現をタブ(\t)で、行を改行(\n)で表現します。このファイルをoutput.plとします。 #!/usr/bin/perl use strict; use warnings; print "title\tdetail\nこんにちは\tこんにちはYutaKikuchiさん\nこんばんは\tこんばんはYutaKikuchiさん"; title detail こんにちは こんにちはYutaKikuchiさん こんばんは こんばんはYutaKikuchiさん echoコマンドでの出力 echoは代表的なUnix/Linuxの出力コマンドです。-eオプションを利用してタブや改行によるデータを出力します。 $ man echo オプション -n 行末の改行を行わない。 -e string 中の、バックスラッシュでエスケープされた文字の解釈を有効にする。それぞれの意味は以下の通り: \a アラート (ベル) \b バックスペース \c 行末の改行を出力しない \f フォームフィード (form feed) \n 改行 (newline) \r 復帰 (carriage return) \t 水平タブ \v 垂直タブ \\ バックスラッシュ \0nnn アスキーコードが nnn (8 進) の文字 $ echo -e "

PHPのマルチスレッドプログラミングを使ってシステム処理を爆速化するお話し

[PHP] : PHPのマルチスレッドプログラミングを使ってシステム処理を爆速化するお話し パーフェクトPHP (PERFECT SERIES 3) 作者: 小川雄大,柄沢聡太郎,橋口誠出版社/メーカー: 技術評論社発売日: 2010/11/12メディア: 大型本購入: 32人 クリック: 1,065回この商品を含むブログ (60件) を見る Intro 会社に入社して5年が経ち、4月から新しい部署で働いています。最近はプログラミング言語の学習としてC++/JAVA/Perl/R言語、理論の勉強として機械学習をやっています。平行して少しずつ勉強しているのでblogの記事内容も多種多様になってきています(笑)。新しい事をやる時は一つの事に集中して勉強したいのですが、直近は業務で成果を残さないと相手にされないので学習がforkします。ということで強引な繋ですが今日はforkの話をします。業務で必要になったPHPの処理爆即化に向けてマルチスレッドプログラミングを試してみました。pcntlにより親プロセスから子プロセスを作成してforkさせます。出来たところまでの成果を以下にまとめました。 PHP: PCNTL - Manual Source Build pcntlというPHPのマルチスレッドプログラミングはdefaultでは使えないようです。phpソースをbuildする時に--enable-pcntlを付ける必要があります。以前にmcrypt関数を使う時にもオプションをつけて--with-mcrypt=/usr/local/libを付けたりlibmcryptをインストールしないといけないことがあったので、標準で使えるようにして欲しいですね。 $pid = pcntl_fork(); if ($pid == -1) { die('fork できません'); } else if ($pid) { // 親プロセスの場合 echo "parent process \n"; pcntl_wait($status); // ゾンビプロセスから守る } else { // 子プロセスの場合 echo "child process \n"; } $ php pcntl.php Fatal error: Call to undefined function pcntl_fork()次にphpソース取得とコンパイル、インストール手順を書きます。