Category Archives: プログラム カテゴリ "プログラム"のRSS  

[PHP5]”Notice: Trying to get property of non-object”の警告が表示される

2012年1月26日 (カテゴリ: PHP:)

PHPのプログラムを実行すると、以下の警告が表示される場合があります。 PHP Notice: Trying to get property of non-object in C:test.php on line 77PHP Notice: Trying to get property of non-object in C:test.php on line 77 これは、存在しない(or 値がnullな)変数のプロパティを参照しようとしたときに発生します。 例としては、以下のプログラムの実行で再現させることが出来ます。 <?php $a = null; echo $a->value…


続きを読む

[JavaScript]配列中の大量データを非同期でゆっくり処理する

2012年1月26日 (カテゴリ: JavaScript:)

先日、クロネコヤマトの伝票番号から配送状況を取得するAPIを作りました。 このAPIですが、負荷軽減のため、呼び出し頻度が毎秒1回という制限を設けています。 制限があるのは良いとして、このAPIを使って複数(大量)のデータをJavaScriptで処理したい場合どうやって作ったらよいのだろうか? と思い、色々試行錯誤した事の過程と結果です。 長文になってしまったので、最初に目次を書いておきます。 その1:ループで処理する その2:ループ内でスリープさせる その3:setTimeout()で非同期処理させる その4:非同期処理の関数に汎用性を持たせる ところで、「毎秒1回」という呼び出し制限がない…


続きを読む

[JavaScript]数値入力欄で、全角数字や書式編集された文字を受け入れる。(全角/半角変換)

2012年1月23日 (カテゴリ: JavaScript:)

名古屋市の図書館には、Webサイトがありオンラインで予約が出来るのが便利です。 いつものように利用していたのですが、ふとログインフォームで1つ気になることがありました。 ありがちなログインの入力フォームですが、共通貸出券番号を半角で入力することを要求しています。 (ちなみに、貸出券番号は10桁の数字です) 試しに全角で入力してみると、以下のようにエラーが表示されました。 ちなみに誤った番号を入力した場合は以下のメッセージになるので、この画面は入力値が全角であるかチェックした上でエラーメッセージを出しているるようです。 コンピュータに慣れている人であれば、この間違いはすぐに気づくのですが、初心者…


続きを読む

dankogai作のAWS APIからJSONの仕組みを理解する(2/2)

2012年1月21日 (カテゴリ: JavaScript:)

前回の記事では、サンプルとして提示されているJavaScriptの内容を確認しました。 dankogai作のAWS APIからJSONの仕組みを理解する(1/2) 今回は前回の内容を踏まえてソースの簡略化を行い、その後JSONPの仕組みを理解して行きます。 コードの簡略化 まずは、前回の解析を元にJSONPの理解と直接関係ない処理を削除してコードをシンプルにしていく。 最初は、画面load時の処理と、取得結果列挙の処理変更を行う。load時の処理は不要なので削除し、検索結果は書籍のタイトル表示だけにとどめておく。 この変更で、ソースは以下のように半分(81->40行)まで減らせた。 1 2 3…


続きを読む

dankogai作のAWS APIからJSONの仕組みを理解する(1/2)

2012年1月20日 (カテゴリ: JavaScript:)

はじめに 前回、ヤマト運輸の配送状況を確認勝手APIを作成してxml,yaml,jsonの形式でデータ取得できるようになったのですが、まだJSONPは未対応でした。 [WebAPI]ヤマト運輸の配送状況を確認するAPIを作ってみた で、以下のページをチェックしてみると、dankogaiがAmazonの商品情報取得のAPIを作成&紹介しているのですが、xml/yamlに加えてJSONPも対応しているようです。しかもソースも公開してくれています。 AWS Caching Proxy w/ Authentication Support 今回はdankogaiのサイトを見ながらJSONPの仕…


続きを読む

[JavaScript]textareaを1行づつ処理する

2012年1月19日 (カテゴリ: JavaScript:)

htmlのtextareaタグ内に入力されたコンテンツを1行づつ配列にセットする処理です。 splitByLine = function() { var text = document.getElementById(’srcTextArea’).value.replace(/\r\n|\r/g, "\n"); var lines = text.split( ‘\n’ ); var outArray = new Array();   for ( var i = 0; i…


続きを読む

[jQuery]JavaScriptの配列をtableへ1行追加する

2012年1月19日 (カテゴリ: JavaScript:)

JavaScript上の配列を、指定したtableタグ内へ1行追加する方法です。 よく行う処理なので関数化しました。 例えば以下のようなtableがあって… <input type="button" id="btnTest" value="データを追加" />   <table id="tblResult"border="1px" style="border:1px"> <tr> <th style="…


続きを読む

Apache+PHPで複数フォーマットのデータ生成をスマートに処理する

2012年1月17日 (カテゴリ: PHP:, , )

PHPでwebアプリを作成していると、動的に生成したファイルをダウンロードさせたい場合があります。 ありがちなパターンとしては、DBの内容をcsv形式でダウンロードさせる等です。 このとき、同じデータを複数のフォーマットで返したい場合があります。 例えば、注文No12345のデータを提供したいが、下記のように拡張子で書式が決まるといった状況です。 http://example.com/order/12345.xml http://example.com/order/12345.yaml http://example.com/order/12345.csvhttp://example.com/o…


続きを読む

doxygenを使用してC#のドキュメントを自動生成する(その2)

2012年1月9日 (カテゴリ: C#:)

前回の記事で、C#のソースコードからドキュメントの自動生成が出来るようになりました。 今回は、ソース内のクラス階層や、関数の呼び出し関係を可視化する為にグラフ(画像)を表示できるようにします。 こんな感じで、どの関数が、どの関数をコールしているかを一目で分かるようにするのが目的です。 doxygenがグラフを生成する仕組み doxygenは、自力でグラフ画像の生成することは出来ず、graphvizというソフトを利用しています。 graphvizは、AT&Tが開発したオープンソース(Common Public License ライセンス)のソフトウェアで、テキスト形式の設定ファイルより、…


続きを読む

doxygenを使用してC#のドキュメントを自動生成する(その1)

2012年1月8日 (カテゴリ: C#:)

C#では、通常の”/* */”や “//”によるコメントに加えて、”///”で始まるコメントで、XML形式のドキュメントコメントを記述することが出来ます。 具体的な例としては、下記ソースのsummary,paramや、returns等が相当します。 //*************************************************************************** /// <summary> 指定されたファイルを読み込む /// </summary> /// &…


続きを読む

BackgroundWorkerで、markdownのプレビュー処理を改善

2012年1月8日 (カテゴリ: C#:)

前回までの作業で、画面で入力したMarkdown形式テキストをその場でプレビュー可能となりました。 ただ、この方法だとテキストのサイズが小さいときは問題ないのですが、サイズが大きくなってくるとプレビューに時間が掛かるため、キー入力に対するレスポンス低下が起きてしまいます。 今回は、テキストが大量になっても入力のレスポンスが低下しないように改造してみます。 リアルタイムプレビュー時の負荷を下げる レスポンス低下の問題ですが、原因は2つ存在します。 1文字でも変更があっると都度htmlへの変換を行う為、変換頻度が高すぎる。 htmlへの変換処理をイベントハンドラ内で行っている為、変換中にキー入力が…


続きを読む

MarkdownSharp.dllの変換結果をブラウザ表示結果としてプレビューする

2012年1月6日 (カテゴリ: C#:)

前回までの記事で、C#からMarkdown形式のテキストをhtmlテキストに変換することが出来ました。 C#でmarkdown記法を使用する(1/2) C#でmarkdown記法を使用する(2/2) 今回は、このhtmlをブラウザで表示した時、どのように見えるかをプレビュー可能にします。 プログラムは、前回作成したものを改造する事とします。 ブラウザでの表示形式でプレビュー可能にする まず、フォームにWebBrowserコントロールを貼り付けます。 WebBrowserコントロールは、コモンコントロールの一番下に有ります。 名前は、今回はwebBrowser1のままにしておきます。 次に、変換…


続きを読む

markdown.dllを使用したプログラムを作成する

2011年12月31日 (カテゴリ: C#:)

MarkdownSharp.dllを使用したサンプルPGを作成 前回の記事でdllを作成しましたので、今回はdllを使用してサンプルのプログラムを作成します。 (VisualStudio2010 + .Net Framework3.0で確認しています) VisualStudioを起動し、ファイル→新規作成→プロジェクトを選択します。 テスト用のプロジェクトを作成します。 作成したプロジェクトファイル内にlibフォルダを作成し、前回作成したMarkdownSharp.dllを置きます。 ソリューションエクスプローラ→参照設定を右クリックし、参照の追加を選択し… 先ほど置いたdllを選…


続きを読む

C#のmarkdownライブラリ,MarkdownSharpを使用する

2011年12月31日 (カテゴリ: C#:)

markdown記法とは? wikiなどでよく使用されている構文です。 http://ja.wikipedia.org/ によると.. Markdown は軽量マークアップ言語のひとつである。 「読みやすく書きやすいプレーンテキストで書け、そして構造的に妥当なXHTML(もしくはHTML) に変換することのできるフォーマット」として、John GruberとAaron Swartzによって考案された。 Markdownの記法の多くは、電子メールでプレーンテキストを装飾する際の慣習から着想を得ている。Markdown は軽量マークアップ言語のひとつである。 「読みやすく書きやすいプレーンテキスト…


続きを読む

[C#]PCのサスペンド、レジュームをプログラムから検出する

2011年12月23日 (カテゴリ: C#:)

概要 ノートPCでは、バッテリー消費を抑える為に、よくPCのサスペンド・レジュームが使用されます。 C#でPCのサスペンド・レジュームが行われたことを検出する為には、Microsoft.Win32.SystemEventsクラスのPowerModeChangedイベントにハンドラを登録します。 手順 動作確認用に、画面にTextBoxを1つ貼り付けます。 PowerModeChangedイベントを使用するために、まず、以下の形でイベントハンドラの登録・解除処理を作ります。 イベントハンドラはMicrosoft.Win32.SystemEventsクラスに登録します。 //***********…


続きを読む