[Android]ボタンが押されたらメッセージを表示する
ボタンクリック前 クリック後 package com.example.test1; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView…
続きを読む
[C#]switch文のcase句の中だけで有効な変数を宣言する[C,C++,javaも同様]
プログラム中に例えば、以下の様なswitch文があったとします。 void func( int inData ) { switch ( inData ) { case 1: …; break; case 2: …; break; } }void func( int inData ) { switch ( inData ) { case 1: …; break; case 2: …; break; } } このcase句の中で、ワークの一時変数を使いたい場合、以下のようにcase内で宣言する事が…
続きを読む
[C#]DataGridViewで選択行を画面に表示させる
以下のコードで、DataGridViewで選択されている行が画面の一番上の行に表示されます。 if ( DataGridView1.SelectedCells.Count > 0 ) { DataGridView1.FirstDisplayedScrollingRowIndex = DataGridView1.SelectedCells[0].RowIndex; }if ( DataGridView1.SelectedCells.Count > 0 ) { DataGridView1.FirstDisplayedScrolling…
続きを読む
[PIC]HI-TECH Cのサンプルプログラムを逆アセンブルしてみる
前に作りかけたPic16f84のCPUシミュレータですが、暇が出来たので開発を再開させます。 ずいぶん久しぶりなので、何をやってたかを思い出すのを兼ねて、動作確認用サンプルのhexファイルを作る事にします。 今回の対象はHI-TECH Cのコンパイラをインストールしたときに一緒に入っているサンプルPGです。 ファイルは、標準インストールだと以下の辺りに入ってます。 C:\Program Files\HI-TECH Software\PICC\9.83\samples\misc\led.cC:\Program Files\HI-TECH Software\PICC\9.83\samples\mi…
続きを読む
[C#]DataGridViewでプログラムから列の追加/削除を行う
列の追加 DataGridViewColumn col; // Titleと表示名を指定して追加 dataGridView1.Columns.Add( "ColItemCode", "商品コード" ); // 列定義のオブジェクトを使って追加 col = new DataGridViewColumn(); col.Name = "ColItemName"; col.HeaderText = "商品名称"; dataGridView1.Columns.Add…
続きを読む
[C#]ManicTime風な,使用アプリ記録ソフトを自作する
WindowsでManicTimeというソフトを使用すると、PCで使用していたアプリケーションのログを採取することが出来ます。PCでどんなアプリを何分使っていたかの作業ログを取る事で、無駄な時間をだらだら過ごしていないか自分の作業内容への振り返りをするきっかけになりまし、ライフログ的な使い方も出来ます。 ライフログの技術 ManicTimeはシンプルかつ分かりやすいUIで、気軽に使うには便利なのですが、採取したログを自分でExcelなどを使用して分析したかったので、同様の機能を持つ記録アプリを作成してみました。 今回作成するのは見た目の部分ではなく、裏方部分のデータ収集処理なので、GUIは最低…
続きを読む
[PHP]ハッシュの入った配列を,ハッシュ値をキーにソートする
PHPで、例えば以下の様に沢山のハッシュテーブルが配列に格納されていたとします。 DBのテーブルとかをイメージすると分かりやすいかもしれません。 $dataList = array(); $dataList[] = array( "itemcode" => "10001", "itemname" => "みかん" ); $dataList[] = array( "itemcode" => "100…
続きを読む
[PHP]file_get_contenst()で複数サイトのhtmlを非同期・高速に取得する
PHPでは、file_get_contenst()関数にURLを指定する事で、他のサイトのhtmlテキストを取得できます。 1つのサイトだけを取得する場合はこれでよいのですが、大量のサイトからデータを取得する場合、 1サイトつづ順番に関数を呼んでいたら非常に時間が掛かります。 このような場合はcURLモジュールに有るcurl_multi_getcontent()関数を使用すると、複数サイトの情報を非同期で同時に取得出来ます。 ですが、curl_multi_getcontent()は、リソースの確保・開放処理が必要で、扱いがちょっと煩雑です。 この為、今回はfile_get_contenst()…
続きを読む
[PHP]配列内から、index指定で要素を削除する方法
PHPで配列から要素を削除するには、array_shift(),array_pop(),unset()関数を使用します。 それぞれ配列の「先頭、末尾、index指定」で要素を削除することが出来ます。 index指定というのは、配列の要素番号を指定するという意味です。 それぞれの関数は、以下のサンプルコードで振る舞いを確認できます。 // 先頭を削除 echo "case1—-\n"; $dataList = array( "d1", "d2", "d3", "d4", "d…
続きを読む
[PHP]goto文を使用すると「syntax error, unexpected T_STRING」エラーが発生
PHPでgoto文を使用したプログラムを書いていたのですが、手元の開発環境だと動作するのに、サーバにアップロードすると以下のエラーが発生するという問題が発生しました。 Parse error: syntax error, unexpected T_STRING in …Parse error: syntax error, unexpected T_STRING in … 手元の環境だと動くという事は、環境の問題なので、まずはphpinfo()でバージョンを確認してみます。 開発環境 PHP Version 5.3.1 System Windows NT 5.1 build 2600 (…
続きを読む
[PHP]SimpleXMLでxmlツリーを作成し、綺麗に整形して出力する
PHPでSimpleXMLを使用してxmlの作成を行います。 プログラム <?php $rootNode = new SimpleXMLElement( "<?xml version=’1.0′ encoding=’SHIFT_JIS’ standalone=’yes’?><items></items>" ); // ノードの追加 $itemNode = $rootNode->addChild(’item’); $itemNode->addChild( ‘itemCo…
続きを読む
[PHP]改行なしスペース(&nbsp;、0xA0)を、普通の空白(0x20)に置換する
PHPで改行無しのスペース(&nbsp;)は文字コード0xA0で表現されます。 この改行無しスペースを普通のスペースに置換するには、以下のコードを使用します。 $str = trim( $str, chr(0xC2).chr(0xA0) );$str = trim( $str, chr(0xC2).chr(0xA0) ); 正規表現を使用する場合は以下のパターンになります。 $str = preg_replace( "/^\xC2\xA0/", "", $str );$str = preg_…
続きを読む
[C言語]文字コードがACSIIで無い場合にコンパイルエラーを出す方法
上手い事プリプロセッサ命令を使ってるなと思ったのでメモ。 #ifで、アルファベット’a’の文字コードを調べることで判定しています。 gawk3.1.5のソース(eval.c)より。 #if ‘a’ == 97 /* it’s ascii */ // …文字コードがASCIIだったときの処理 #else #include "You lose. You will need a translation table for your character set." #endif#if ‘a’ == 97 /* it’s ascii */ // …文字…
続きを読む
プログラムの実行結果がリアルタイムで確認できる開発環境
プログラムの動作をリアルタイムプレビューできる開発環境についてのデモです。ほかにも、電子回路や動画編集など、色々なデモがありますがプログラマ的には最初の20分ぐらいを見れば伝えたい事は分かります プレゼンは英語ですが、英語が分からなくでも十分に理解できるレベルです。 Bret Victor – Inventing on Principle from CUSEC on Vimeo. プログラムについては、大きく3つのデモを行ってます。 3:30~ canvasに画像を出力するプログラム 10:45~ スーパーマリオ風横スクロールゲーム (特に12:40以降が見どころ!!) 18:05…
続きを読む
[PHP]DOMとSimpleXMLの相互変換
PHPではバージョン5.0以降でSimpleXML拡張モジュールというものが追加されました。 SimpleXMLを使用すると、これまでのDOMオブジェクトに比べてXMLの操作が容易になります。 ですが、古いバージョンを元にしたライブラリではDOMベースのプログラムも少なくありません。 そこで今回はDOMとSimpleXMLの相互変換関数を確認しておきます。 SimpleXML -> DOM SimpleXMLからDOMの変換はdom_import_simplexml関数を使用します。 関数仕様 DOMElement dom_import_simplexml( SimpleXMLElement …
続きを読む
[PHP]Eclipse PDTで,関数の検索&関数仕様を検索する方法
PHPのプログラムをEclipse PDT環境で開発している場合に、関数の検索と、関数仕様を調べる方法です。 ウィンドウ->ビューの表示->PHP関数を選択します。 試しにfread()関数を検索してみます。 PHP関数の検索枠が出てくるので、関数名を途中まで入力すると候補が下に表示されます。 選択肢にはmysqli_resultとかも出ていますが、これはクラスのメソッドとして”fre”で始まるものがあるからです。”+”をクリックして展開すると、ヒットしたメソッドが表示されます。 ワイルドカードも使えるので、”f*ad”と…
続きを読む
[C#]lock文で排他をとる仕組みがC#4.0で変更された件
C#では、オブジェクトの排他を取るためにlock文があります。 lock( obj ) { body; }lock( obj ) { body; } これは、C#4.0の場合は以下のコードと等価です。 bool lockWasTaken = false; var temp = obj; try { Monitor.Enter(temp, ref lockWasTaken); { body; } } finally { if (lockWasTaken) { Monit…
続きを読む
[PHP]文字列リテラルを、シングルクォートとダブルクォートで括った時の速度差
PHPでは文字列リテラルを書くとき、文字列をシングルクォート、又は、ダブルクォートで括ることが出来ます。 両者の違いは、”{}”で書いた変数の展開を行うかどうかと、エスケープシーケンスを処理するかです。 <?php $a = 10; echo "hello world:{$a}\n"; echo ‘hello world:{$a}\n’;<?php $a = 10; echo "hello world:{$a}\n"; echo ‘hello world:{$a}\n’; 実行結果 C:\>php test.ph…
続きを読む
[PHP]標準エラー出力、標準出力に文字列を出力する
PHPで標準エラー出力に文字を出すには、ファイル”php://stdout”をオープンすればOKです。 <?php $stdout= fopen( ‘php://stdout’, ‘w’ ); fwrite( $stdout, "hello world to stdout\n" ); $stderr = fopen( ‘php://stderr’, ‘w’ ); fwrite( $stderr, "hello world to stderr\n" )…
続きを読む
[C# 5.0]メソッドの呼び元メソッドを調べる方法
C# 5.0では、関数の引数に属性(attribute)を追加する事で、関数の呼び元の情報を取得が可能です。 これはC言語で言う__LINE__,__FILE__マクロ相当のものです。 C#の4.0以前でもリフレクションや、System.Diagnostics.StackTraceを使えば取得は出来たのですが、5.0からは取得が簡単になりました。 ※C#4.0でSystem.Diagnostics.StackTraceを使う場合の例はこちら → [C#]関数の呼び出し元のメソッド名を知る方法 という訳でサンプルコードです。 class Test { static void Main…
続きを読む