2018年12月18日

git clone しようとしたら Permission denied (publickey) エラーが表示された

PHP7 用のエクステンションを作ってみたいと思い、いろいろな記事を参考にしたところ PHP7 のソースコードが必要ということがわかり、Github から clone しようとしたら、エラーが表示されてしまいました。
$ git clone git@github.com:php/php-src.git
Cloning into 'php-src'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


パーミッションがないというエラーですが、ファイルシステムのパーミッションではなく Github 側でパーミッションがないようです。
今回のケースでは、Github に登録してある自分のアカウントに SSH Key を登録します。
※Github にアカウントがあることを前提にした説明ですので、アカウントがない場合は登録からお願いします。

$ ssh-keygen -t rsa -C "your_mail_address@domain"


~/.ssh/id_rsa.pub の内容を Github のアカウント→[Settings]→[SSH and GPG Keys]→[New SSH Key]をクリックして登録します。
title 部分には自分でわかりやすい名前(サーバ名など)を入力します。
key のところに貼り付けます。

これで、git clone できるようになりました。

参考にさせていただいた記事
git cloneしようとした時でたエラーと戦った話 - Qiita


posted by はるこち at 19:00| Comment(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2016年09月15日

OSX 10.11 El Capitanでは Xcode5 は動作しませんでした

ようやく時間ができたので、Mac mini 2010 モデルを El Capitan にしました。
クリーンインストールしたほうが面倒がないという情報もありましたが、いろいろなアプリがインストールされているので、まずはそのままアップグレードすることにしました。インストール自体は3〜4時間かかりました。
起動してまず気がついたのは、開発用として残しておいた xcode 4.6 と xcode 5.1.1 が、両方とも起動しなくなっていました。

xcode4.6の場合
xcode_4_6.png

xcode5.1.1の場合
xcode_5_1_1.png

動かないのであれば仕方ありませんので、xcodeをバージョンアップしようと思います。
posted by はるこち at 14:38| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2016年04月20日

Android Studio の AVD でタブレットの解像度が正しくないとき

Android Studio 2.0 の AVD でデバイスを作成したとき、Nexus10 などのタブレットを選択してデバイスを作成すると、解像度が低い状態でスマホ版の UI が表示されてしまうことがあります。
emulator-nexus10-phone.png

これは、AVD を作成するときに「Device Frame」を有効にすると、このようになってしまうようです。どうやら、デバイスフレームは画面の周囲に枠を表示するだけではなく、中で動作する Android に影響を与えてしまうようです。

設定画面で「Enable Device Frame」のチェックを外します。
emulator-enable-device-frame-001.png

これで AVD を起動し直すとタブレットモードで動作するようになります。
emulator-nexus10-tablet.png

参照元
java - Android Studio - Tablet emulator not showing correct resolution - Stack Overflow
posted by はるこち at 12:00| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2015年03月04日

Visual Studio 2015 Preview Cordova 文字化けしていて意味不明なエラー

Visual Studio 2015 Preview で Cordova のサンプルをコンパイルしようとしたら、文字化けしていて意味不明なエラーが出てしまいました。
20150304-160123-0668.png
エラーメッセージは下記のような内容でした。コピペしてもクエスチョンマークになってしまい判読不能です。
'Menus\bpl\' ??A????R?}???h?????O???R?}???h?A BlankCordovaApp3 Microsoft.MDA.targets 208
?????\??v???O?????????o?b?` ?t?@?C???????F?????????????B BlankCordovaApp3 Microsoft.MDA.targets 208

あれこれ悩んだのですが、このエラーメッセージの直前に「C:\Program Files\nodejs\nodevars.bat」が起動されているというログがあることを発見し、コマンドプロンプトから実行してみると、似たような感じのエラーメッセージが表示されました。
'Menu\bpl\' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

このエラーが出ている箇所は環境変数PATHを変更しているところで、すでに設定されているPATHの中に不正なもの「&」が含まれているためにエラーになっていることがわかりました。そこで、システム環境変数を編集して「&」が含まれているパスを除去してから実行したところ、コンパイルできるようになりました。

その結果、BlankCordovaApp4 プロジェクトのコンパイルが完了し、Androidエミュレータで動作させることができました。
20150304-171457-0669.png
posted by はるこち at 18:34| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

Visual Studio 2015 Preview Cordova App WebSocket4Net.dll が見つからないエラー

Microsoft Visual Studio 2015 Preview をインストールし、Android と iOS と Windows8 に一気に対応できるという Cordova を試してみようとしたのですが、なにやらエラーらしき表示が出てしまいました。英語ばかりでよくわかりませんが、赤バッテンがあるので致命的なエラーなんだろうなと。

WebSocket4Net, The software is missing from your system. You may also have to configure it after installation


どうやら WebSocket4Net.dll というファイルが足りないようです。ググってみたところ StackOverflow のページが出てきましたが、解決には至っていない様子。

次に msdn のフォーラムのページが出てきて、こちらは解決できそうです。
Apache Cordova and missing WebSocket4Net in Visual Studio 2015 CTP

下記のように書かれていました。
Try to copy C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\WebClient\Diagnostics\ToolWindows\WebSocket4Net.dll

to

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\WebClient\Diagnostics\ToolWindows\WebSocket4Net.dll

In my case (Visual Studio 2015 Preview, Windows 7 x64) this helps...


この記事は64ビット版だそうですので、32ビット版の場合は(x86)を取り除いて対応する必要があります。

私の環境では、この操作をしたらエラー無く起動することができました。
posted by はるこち at 14:54| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2015年01月30日

Android開発:突然AVDが起動しなくなった

これまで Android アプリを開発してきたのですが、開発中のアプリをエミュレータで起動しようとしたところ、突然エラーメッセージが表示されるようになってしまいました。つい先ほどまでは正常に起動していたのに、どうしてしまったのでしょう。
android-error-01.png

エラーメッセージをもとにネットで調べてみると、Android SDK のパス設定が間違っているのではないか、という指摘がありましたので確認してみましたが、特に間違っているところはありませんでした。

まずは ./eclipse -clean を試してみましたが、効果はありませんでした。

あちこちの画面を見てみたら、Android SDK のプラットホームが空っぽになっていました。これも、Android SDK のパスが間違っている時の症状のようなんですが、何度確認してもパスは間違っていないので、わからなくなってきてしまいました。
android-avd-ng.png

ほぼ1日かけて、あちこち調べてみたところ、ホームディレクトリにある .android の中のキャッシュが壊れているかもしれない、ということがわかりました。

試しに ~/.android のファイルをリネームして eclipse を起動してみると。。。Android SDK のプラットホームの表示が戻ってきました。
android-avd-ok.png

ただ、エミュレータを試してみると、こんどは AVD(Android Virtual Device)の登録が空っぽになっていました。どうやら、~/.android の中に AVD の端末設定ファイルが入っているようです。

端末設定ファイルは ~/.android/avd の中にありましたが、それぞれのファイルが結構大きいことが分かりました。必要なメモリとかを確保した状態でイメージが作られるのかもしれません。古い .android ディレクトリから、使っていない古い AVD を除いてコピーして、どうにか環境が復活しました。
posted by はるこち at 13:09| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2014年06月20日

Xcode4 は Mavericks では動かない

綿密な調査をせずにバージョンアップしてしまったのが悪いのですが、OSX を Mavericks にしてから Xcode4.6.3 が起動しなくなってしまいました。結果から言うと、Xcode の動作環境に Mavericks が含まれておらず、Mavericks では起動しないことがわかりました。
(ちょっと訳がありまして Xcode4.6.3 を起動しなければならない理由がありました)

Mavericks で Xcode4.6.3 を起動すると、最初に表示されるファイル選択ダイアログで何かをクリックすると画面が消えて、エラーメッセージが表示されます。運が良ければプロジェクトを開くことができたりしますが、時間の問題で画面が消えます。
xcode_abort_message.png

エラーメッセージにはAppleにレポートを送信する機能がついているようで、「レポート」ボタンをクリックするとログを見ることができます。ログには以下のような記述がありました。
(略)IDEiPhoneSupport.ideplugin\U201d could not be loaded. The plug-in or one of its prerequisite plug-ins may be missing or damaged., NSUnderlyingError=0x40029da00 \"The bundle \U201cIDEiPhoneSupport\U201d couldn\U2019t be loaded because it is damaged or missing necessary resources.\"


意訳すると「IDEiPhoneSupport.plugin ファイルが存在しないか壊れていて読み込めない」と書いてあります。ログ内に書かれている情報を頼りにファイルが存在している場所を確認してみましたが、IDEiPhoneSupport.plugin ファイルは存在していました。(壊れているかどうかは、わかりませんでした)

また、このファイルはiTunesでインストールされるファイルだから、iTunesをインストールし直した方が良いとう情報がありましたので、iTunesを削除し、iTunesサイトからダウンロードしてインストールし直してみましたが、解消しませんでした。

XcodeとiTunesのインストールの順番かもしれないと書かれているサイトもありましたので、両方削除して両方インストールしてみましたが、変わりませんでした。

Xcode4.6.3 は Developer Center からダウンロードすることができますが、そこには下記のように書かれています。
Xcode 4.6.3 requires OS X Mountain Lion or OS X Lion.


私の場合は、運良く Mavericks へのバージョンアップを行なう前に TimeMachine にバックアップを保存してありましたので、そこから戻すことができて、無事に復旧しました。(調査等に結構な時間を使ってしまいましたが。。。)

結局、Mavericks では Xcode4.6.3 は起動できないということがわかりました。もし、Xcode4.6.3 を使い続けなければならないという理由があるのなら、Mavericks にはしないことをお勧めします。
posted by はるこち at 14:00| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2014年01月08日

Xcode のビルドログを IFTTT 経由で Evernote に送る

お正月休みにボーッとしておりましたら、ふと、「Xcode のビルド状況を Evernote に送ったら面白いんじゃね?」と思いついたので、やってみました。

現状では収集できる情報が少なく、日時、Debug/Release、build/archive、くらいしかログに残らないため、「ああ、あのときはテンパって何度もビルド繰り返してたっけ」などと遠い目になるくらいにしか役に立ちませんが、よろしければ、どうぞ。

必要なもの
Xcode
Evernote
IFTTT
PHP

まず IFTTT でレシピを作ります。レシピの基本は、「メールを受信したらEvernoteに送る」になります。「Email」と「Evernote」をあらかじめアクティベートしておきます。

IFTTTで「Email」を使ってメールをトリガーとして使うときは、送信元を限定するためメールアドレスを認証します。入力したメールアドレスにPINコードが送信されるので、入力すると認証が完了します。

おおまかな手順は下記のようになります。
1.Createをクリック
2.IfThisThenThat と表示されるので水色になっているThisをクリックします。
3.メールアイコンをクリックします。
4.選択が表示されるので「Send IFTTT any email」をクリックします。
5.Create Trigger をクリックします。
6.続いてthatをクリックします。
7.Evernoteをクリックします。
8.Evernoteに対するActionは「Append to note」を選択します。
これを選択すると、同じタイトルのノートが存在しないときだけ作成し、存在するときは追記されるようになります。(タイトル名で判定されるところがポイントです)
9.Append to noteのパラメータは下記のようにしました。
Title: {{Subject}}
Body: {{Body}} ←デフォルトではHTMLBodyなのでBodyに変更します
Notebook: XcodeBuildLog
Tags: XcodeBuildLog
Notebook と Tags はお好みのものを設定してください。Notebook を空欄にするとデフォルトのノートブックに保存されるようですが、件数が増えそうなのであまりお勧めできません。
xcode_ifttt_action.png

次にPHPスクリプトを手元のMacの適当なフォルダに入れます。今回はとりあえず ~/xcode/ifttt_build.php というファイル名で保存しました。
#!/usr/bin/php
<?php
date_default_timezone_set('Asia/Tokyo');

$to = "trigger@ifttt.com";
$from = "username@somewhere.xx.xx"; //認証済みメールアドレス
$additional_headers = "From: $from";

$product_name = $_ENV['PRODUCT_NAME']; //プロダクト名
$configuration = $_ENV['CONFIGURATION']; //Debugなど
$xcode_version_actual = $_ENV['XCODE_VERSION_ACTUAL']; //463
$action = $_ENV['ACTION']; //buildなど
$project_dir = $_ENV['PROJECT_DIR']; //ログ等にアクセスする場合

//引数が指定されていたら上書きする
if($argc > 1) $product_name = $argv[1];

$issue_count = 0;
//parse_latest_log();

//日ごとのビルド記録
$subject = date("Y/m/d")." Xcode Build";
$time = date("Y/m/d-H:i:s");
$body = "$time $product_name $configuration $action";
mail($to, $subject, $body, $additional_headers);

IFTTTでは認証済みのメールアドレスがFromにセットされていれば受け付けてくれるようですので、PHPのmail()関数で送信することにしました。Fromを設定できればシェルスクリプトでも構わないと思います。

メールの Subject に日付をセットしています。それが Evernote のノートのタイトルになるようになっていますので、1日あたり1ノートが作成され、日付が変わると新しいノートが作られるようになっています。

chmod 755 ifttt_build.php

実行可能フラグを立てておきます。

最後に、Xcodeのプロジェクトにスクリプトを設定します。
プロジェクトのTARGETを選択し、Build Phases を選択すると、右下に Add Build Phase というボタンがあるのでクリックし、「Add Run Script」を選択します。
そうすると、Run Script という項目が追加されるので、Shell の下の欄に先ほどのPHPスクリプトを呼び出すスクリプトを記入します。
cd /Users/(ユーザー名)/xcode
./ifttt_build.php (ProductName)

xcode_run_script.png

(ユーザー名)のところはお手元の環境にあった内容にしてください。というか、パス名全体を適切なものにしてください。
(ProductName)のところはプロダクト名を指定します。省略するとプロジェクトに設定されている名前が使用されますが、デバッグ中など別の名前を指定したいときはここにセットした名前が使われます。

ここまでで、ビルドを実行した日時やプロダクト名がEvernoteのノートにずらずらと追加されていきます。

2014/01/08-09:08:51 TestProduct Debug build
2014/01/08-09:12:20 TestProduct Debug build
2014/01/08-09:40:15 TestProduct Debug build
2014/01/08-09:41:35 TestProduct Debug build
2014/01/08-09:41:59 TestProduct Debug build


ちなみに Log Navigator で閲覧できるログの内容は、$project_dir/Build/Logs の中にある *.xcactivitylog というファイルに保存されています。gzip で圧縮されているということはわかったのですが、それ以上の仕様が分からないので、PHPで無理矢理文字列操作を行なってみましたが、いまひとつという段階になっています。未完成なので公開は控えさせていただきたいと思います。

ちなみに、Xcode メニューの中にある Behavior から、ビルド成功時やビルド失敗時にスクリプトを呼び出す設定を行なうことができます。最初はこちらでやろうと思ったのですが、ビルド対象のプロダクト名を取り出すことができないようなので、プロジェクトの Run Script にしました。プロダクト名が取り出せれば、こちらも便利だと思うのですが。。。
posted by はるこち at 09:51| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2012年05月11日

PEAR の SpreadSheet_Excel_Write で作ったファイルが開けないとき

PEAR の SpreadSheet_Excel_Write で作成した XLS ファイルが Excel2007 で開けないという事態になりました。環境は以下の通りです。

apache 2.3.3
PHP 5.1.6
Spreadsheet_Excel_Writer 0.9.3
OLE 1.0.0RC2

以下のような状況になりました。
WindowsXP 上の Excel2007 では問題なく開ける。
Windows7 上の Excel2007 ではエラーメッセージが表示され、表示されたシートに書式が反映されていない。
ただし、エラーになるのはデータを13件以上出力したシートのみ。12件以下のデータを出力したシートではWindows7 + Excel2007 の環境でもエラーにならない。

最初に表示されるメッセージは「ファイル.xls には読み取れない内容が含まれています。このブックの内容を回復しますか? ブックの発行元が信頼できる場合は、[はい] をクリックしてください。」
errormessage.png

「はい」をクリックして表示されるメッセージは「読み取れなかった内容を修復または削除することにより、ファイルを開くことができました。」「数式とセルの値が回復されましたが、一部のデータが消失した可能性があります。」
errordetail.png

解決方法
PEAR の OLE 1.0.0RC2 をアンインストールし、OLE 1.0.0RC1 をインストールする。

以下は蛇足。

状況から下記の点について疑い、調査しましたが結果的に関係ありませんでした。
・データ出力の量によってエラーになる?→関係なし
・WinXP と Win7 で XLS ファイルをダウンロードしたブラウザの挙動が違う?→関係なし

「spreadsheet_excel_writer corrupted」でググったところ、OLE の RC1 と RC2 で違いが出るような情報が見つかったので試してみたら、それがビンゴでした。
posted by はるこち at 10:21| Comment(1) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2011年09月16日

Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:]

XCode で iPhone/iPad アプリを開発しているときにタイトルのようなエラーメッセージに遭遇しました。

2011-09-16 17:21:54.001 TestApp[7007:207] *** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:5678


次の行には以下のようなエラーメッセージが。

2011-09-16 17:21:54.003 TestApp[7007:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'


なかなか原因がつかめず苦労しましたが、ようやく、わかりました。

1.テーブルセルのXIBファイルをコピーして増やした。
2.画面上のコントロール等を貼り付け直した。
3.親画面の IBOutlet に新しいテーブルセルオブジェクトを連結するのを忘れた。
4.テーブルセルオブジェクトが生成されても参照できないため nil が返された。
5.アサーションエラーや、色々なエラーが発生。

というわけで、XIBファイルの連結状態を直してコンパイルして、解決しました。
posted by はるこち at 17:30| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2009年02月10日

Delphi5プログラムのプロセスが終了しない

Delphi5で作成したプログラムを終了させてもプロセスが残ってしまう現象に遭遇しました。タスクマネージャでプロセスのスレッド数を見ると「1」という表示が残っています。

デバッガでdprファイルの最後の end にブレークポイントを仕掛けてトレースしようとしても、場所を突き止めることができません。

あきらめかけた頃、今日新しくインストールしたソフトを思い出しました。FinePrintという、とても便利なツールなのですが、これをアンインストールしたら正常に終了するようになりました。

何故なのかはわかりませんが、とりあえず解決しました。
posted by はるこち at 18:00| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

WARNING: bad headers - Improper use of control character (char 0D hex):

CentOS5.2のサーバで稼働しているspamassassin 3.2.4で処理したメールに「WARNING: bad headers - Improper use of control character (char 0D hex):」というメッセージが含まれるようになってしまいました。

これはヘッダ情報の中に \r があると表示されるエラーのようなんですが、PHPプログラムで作成しているヘッダには \r は使われていませんでした。

このメッセージの2行目を見ると「Subject: ...Wokcjx1JDFJVSQxJF4kNyQ/?=\r\n =?ISO-2022-JP[...]」となっていて、どうやらMIMEエンコードされて2行に分かれるときに \r\n がつけられてしまうようです。

そこで、いったんヘッダを作成した後、\r\n を \n に置換するコードを付けたところ、うまくいきました。

  $encoded_subject = mb_encode_mimeheader(
mb_convert_encoding($subject, "JIS", "auto"));
$mail_header = "From: $from_address\n"
. "To: $to_address\n"
. "Subject: $encoded_subject\n"
. "MIME-Version: 1.0\n"
. "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"
. "Content-Transfer-Encoding: 7bit\n";
$mail_header = str_replace("\r\n", "\n", $mail_header);
$mail_header_and_content
= $mail_header
. "\n"
. mb_convert_encoding($honbun, "JIS", "auto");
posted by はるこち at 16:24| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2008年05月13日

PHPで出力したCSVが文字化け

PHPで出力したCSVが文字化けするという現象が発生してしまいました。

前提条件として、漢字コードがちょっと複雑なことになっている環境です。

データベース(PostgreSQL) = EUC-JP
ソースコード(php) = UTF-8
出力ファイル(csv) = SJIS

PHPプログラムの先頭で以下のようにヘッダーを出力してCSVをダウンロードできるようにしました。

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=datafile.csv");


ダウンロードしたファイルを開いてみると、文字化けしていました。
20080513-mojibake.png

漢字コードとしてSJISを指定して開き直してみると、ちゃんとSJISで出力されているようですが、先頭に変な文字が入っているようです。
20080513-mojibake2.png
バイナリエディタで開いてみたら、16進で EF BB BF という文字コードが入っていました。
20080513-binary-editor.png

EF BB BF という文字列は、BOM(Byte Order Mark)と呼ばれ、UTF-8のときに付けられることがある文字列ということでした。

とはいえ、コードの中でBOMを出力するようなことはしていないので、アレコレ悩んでしまったのですが、PHPファイルの先頭にBOMが入っていることがあるという情報を見つけたので調べたところ、ビンゴでした。
20080513-binary-bom.png

PHPファイルの先頭にあるBOMがまず出力され、その後にプログラムからの echo が出力されたために、BOM付きのSJISファイルという奇妙なものが出来上がってしまっていたのでした。

PHPのソースファイルをBOMなしで保存し直してアップロードしたところ、BOMがつかなくなり、文字化けも解消されました。
posted by はるこち at 12:02| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2007年10月04日

XML_Unserializer を使う

正式版が出ているらしい。

[root@www bin]# pear install http://pear.php.net/get/XML_Serializer-0.16.0.tgz
downloading XML_Serializer-0.16.0.tgz ...
Starting to download XML_Serializer-0.16.0.tgz (19,621 bytes)
.......done: 19,621 bytes
requires package `XML_Util' >= 1.1.1
requires package `XML_Parser' >= 1.2.1
XML_Serializer: Dependencies failed


依存関係がダメらしいので、必要なパッケージをアップグレードする。

[root@www bin]# pear upgrade XML_Util

Notice: Undefined index: st in RPC.php on line 292
downloading XML_Util-1.1.4.tgz ...
Starting to download XML_Util-1.1.4.tgz (8,576 bytes)
.....done: 8,576 bytes
upgrade ok: XML_Util 1.1.4
[root@www bin]# pear upgrade XML_Parser

Notice: Undefined index: st in RPC.php on line 292
downloading XML_Parser-1.2.8.tgz ...
Starting to download XML_Parser-1.2.8.tgz (13,476 bytes)
.....done: 13,476 bytes
upgrade ok: XML_Parser 1.2.8


インストールできたので、再度インストールする。

[root@www bin]# pear install http://pear.php.net/get/XML_Serializer-0.16.0.tgz
downloading XML_Serializer-0.16.0.tgz ...
Starting to download XML_Serializer-0.16.0.tgz (19,621 bytes)
.......done: 19,621 bytes
install ok: XML_Serializer 0.16.0


できたらしい。

# ls /usr/share/pear/XML
Parser Parser.php RPC RPC.php Serializer.php Unserializer.php Util.php
posted by はるこち at 18:39| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2006年09月08日

PHPのCLIでechoやprintが表示されない?

PHP-4.4.4をインストールして、CLIのプログラムを作りました。
さあ動かしてみよう、というわけで

php ./test.php

... しーん。

おかしいなあ、コードの中には echo で進行具合を表示するように
しているから、何か表示されても良いのに、出てきません。

PostgreSQLのデータベースに書き込むプログラムなので、
データベースのほうを見てみるとデータは増えているので
一応動作してるっぽい。

不思議だなあ、とりあえずループを外して1回だけ実行されるように
してみよう。

php ./test.php
start routine.
data id = 22
:

表示された!何故だ?

もしかしたら出力がバッファされているのかもしれない、と思って
ob_start 関連を調べたところ、ob_end_clean() を行なえば
良さそうなことが分かりました。

ソースの先頭に ob_end_clean() を入れたところ、
echo や print がリアルタイムに表示されるようになりました。
posted by はるこち at 17:44| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

2005年04月07日

春分の日、秋分の日の簡易計算法

 春分の日と秋分の日の計算には精密な観測と計算による予報に基づいた略算式があります。この式は1980年から2099年までの限られた期間にしか使えませんが、実用上は問題ないと思います。
 簡易計算式は以下のようになります。Year には西暦の年を入れます。INT() は、かっこ内の小数部切り捨てを意味します。
 
春分日(3月X日のXが答えとして得られる)
   X=INT(20.8431+0.242194*(Year-1980)-INT((Year-1980)/4))
秋分日(9月X日のXが答えとして得られる)
   X=INT(23.2488+0.242194*(Year-1980)-INT((Year-1980)/4))
 
以上、新こよみ便利帳(恒星社:\2,800)より。

春分の日、秋分の日については、前年の官報で公示されるまで厳密には決まらないことになっていますが、この式でとりあえず問題はないようです。
posted by はるこち at 16:58| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。