編集:2024.04.06
cygwin 3.5 PHP-8.3.4
$ uname -ro
cygwinの環境が独自仕様の変数とか配置とかで
標準のLinuxと違うみたいで
標準のphpのソースだとそのまま通らないみたい。
cygwin環境は
パッチを当てないとPHPのビルドはできません。
以前XP用にXP未サポートのPHP5.6をビルドしたことがあったので、なんとなくconfigureの仕組みは知っていたので、書き換えてみた。
php.cygportのパッチ作り直し
fedoraの分はすぐ手に入ったのでそのまま差し替えて流用。
残りは、不要なものは無視して、必要そうなものだけ ちゃちゃちゃと書き換えて完了。
コンパイル通らない。
なんでphp.cygport全部ひとまとめにしているのだろう。
基本パッケージcli,sapi毎(cgi,apache),extを最低でもわけるべき。
extなんかbuild後に自動でphplizeすればいいことでしょ。デバッグできないような余計なパッケージして手間かけさせて迷惑。
全部まとめるならオプション渡して必要なものに変更できるようにしないと。
自分の用途で動けばいいだけなのでパッケージとかは考えない。
cygport prepでパッチまで当てて、
残りは、./confugiureで使用する環境に合わせる
./configure --prefix=/usr/local/php/8 $OPTIONS_CONF
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
make
原因が分かったので解決。
あら、作業開始後に cygwinのバージョンが変わってる
$ uname -ro
完成!!
動作確認完了
やったね!🥂
システムのPHPと置き換え
OK 🍕
デフォルトのphp消してもいいかも?
🍳 phpのインストールパスをシステムに登録して完成。
nano ~/.bashrc
今回はさすがに無理かと思いました🤣🤮
少し手間かかりましたが いけましたね。💯
$ php -r "echo 'PHP'.phpversion().'-'.PHP_OS;"
cygwin で PHP8 完🎉🍭
» 続きを読む
編集:2023.10.26
Android11
アプリから外部MicorSDカード領域に保存した画像がMediaStoreに登録できません!
getContentResolver().insert
EXTERNAL_CONTENT_URI
なぜ emulated/0 にパスを勝手に変更しているの?
内部のユーザー領域なら正常に実行できる。
外部MicorSDカード領域のパスの場合上記のエラーになる。
フラグは、2種類しかないし INTERNAL_CONTENT_URI は、違うし。
ほかにフラグが増えたとか?
EXTERNAL_CONTENT_URI: The content:// style URI for the "primary" external storage volume.
ほかのアプリ(ファイラーだと)で名称変更でするとMediaStoreに上がってくるので APIレベル指定の違いかな?
古いアンドロイドならOKなのかな?
なにか互換性の設定がいるとか?
よくわからないので別の古い端末で動作確認してみよう。
追記
解決しました
Androidサイトのヘルプにも記述がないから苦労した。
ネットにも情報ないし、みんな迷走してSDCardへの保存が使えないと思い込んでいる模様。
SDカードは、ボリューム名を入れます。ボリューム名は、getExternalVolumeNames関数から取得できます.
getExternalVolumeNames関数の結果
external_primary : 本体に保存する場合
4桁数値-4桁数値 : SDカードに保存する場合
LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString([定義済み定数|ボリューム名]));
// 'external_primary' or '4桁数値-4桁数値' : Android11
// 'external' : 古いAndroid
LJNewURI := TAndroidHelper.ContentResolver.insert(LContentUri, LJContentValues);
if (TJBuild_VERSION.JavaClass.SDK_INT >= 29) then // (Android10 API 29)
// MediaStore.VOLUME_EXTERNAL_PRIMARY : Constant Value: "external_primary"
LVolume := 'external_primary'
else
LVolume := 'external';
// LVolume := 'xxxx-xxxx'; // SDカードの場合は数値を書いて有効にする
LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString(LVolume));
//LContentUri := TJMyAndroidUtils.JavaClass.getContentUriFromFilename(
// TAndroidHelper.Context, StringToJString(LContentFilename));
ShowDebugMessage('ContentResolver:Uri:' + #10 + JStringToString(LContentUri.toString()));
» 続きを読む
編集:2023.08.16
Borland時代のDelphiで作ったアプリはWindows10で表示の不具合などいろいろ問題を起こすので
Delphi11へサクッと移行したほうがいいです。
普通にコード書いてるだけなら無修正でコンパイル通って移行できると思います。
プロジェクトオプションの PEのバージョンを 既定値の6.0から 5.0 にするとXPでも動作します。
PE 6.0 vista以降
PE 5.0 XPなど
JCL 2.8 [master] | JCL 2.1 | |
Delphi6 | OK | OK |
Delphi2005 | Error ❌ (Delphi内部バグ) |
- jvcl3_39 jcl2_1 |
Delphi 11 | OK |
Windows ME,XP, VISTAなんて使わないでしょ。
古いDelphiはプロジェクトアップグレードして
古いDelphiと すっきり お別れしよう!!
Delphi 無料エディション1年だからと敬遠しているあなた。
生成したexeもリポジトリにいれておけば問題なし。
新規プロジェクトは断然 Visual Studio をお勧めします!!
それいけ ドット ネット
» 続きを読む
編集:2022.09.27
ほえ?
php\8\8.1\php -r "echo mb_convert_kana('カな', 'kh');"
カナ
php\8\8.2>php -r "echo mb_convert_kana('カな', 'kh');"
Fatal error: Uncaught ValueError: mb_convert_kana():
Argument #2 ($mode) must not combine 'h' and 'k' flags in Command line code:
k 「全角カタカナ」を「半角カタカナ」に変換します。
h 「全角ひらがな」を「半角カタカナ」に変換します。
競合する要素が全くない
カナを知らない人がメンテナンスしたようで kとKフラグを混同しているようだ。
» 続きを読む
編集:2022.09.26
GoogleはKotlin という言語や低レベルはrustにシフトしているらしく、GoogleのGo言語は、オワコンらしいのですね。
rustもオワコン説もありますが
開発元がmozillaというのがマイナスイメージ、ダメ実装ポイ雰囲気なので長年無視していましたが、最近大手が基幹システムに採用しているということで再注目を浴びているようなので、地位が確立し当面消滅はしないだろうということで触ってみることにしました。
初見
とにかく、rustの他人のコードは読みにくい。
はぁ? っていう感じですね。変な記号だらけで 頭をグルグル ブドウ糖消費しまくって 考えないと理解不能です。
考案した人パズルが好きなのかな?意地悪い性格じゃないかな?
人が読みやすい、わかりやすい構造考えようよ
mod 普通この分野のmodは 割り算のあまり だろう、 moduleを略すなよといいたい。
fnもそう 普通に functionやfuncでいいのに。
度が過ぎる省略は逆に生産性を低下させる。
変な略しているのに、他はたらたら長文、設計思想がめちゃくちゃ。
変なとこで略すと無意識に頭で変換で脳細胞がいくつかが痛むし養分減るからからほんと勘弁だよ
phpみたいに零細企業のアプリ ハカイダーみたいなのがOSSコード破壊するのがいるので、RUSTだとレベルが一定以上必要になるので
読みにくい考える仕様にすることで結果としてバグが減ることに貢献するとは思う。
ただ度が過ぎるとみんないなくなる。
他人のコード読みにくい = メンテナンス難
気になるところは、go言語と同じく外部ライブラリだよりで、バンドルではないのでライブラリのセキュリティや将来性(アップデート)、安全性に疑問が残ります。
言語の例外を実装しないのが最近の流行り?
webで情報収集して概要はつかんだので
公式のdocを読みます
変数関係はすぐに理解できました。
その他が問題ですね。へんてこりんな記号だらけで、何がしたいのやら。
.is_ok()
.unwrap
Result値がOk列挙子なら、unwrapはOkの中身を返します。ResultがErr列挙子なら、 unwrapはpanic!マクロを呼んでくれます。
は?
そんなもの用意するなら最初から例外実装しなさいよ。
エラーで実行止めるわけないだろ。設計したやつばかか?
アプリ終了か終了おすまでエンドレスだろ普通。
rustのコードみたらunwrapだらけ
delphiだと通常 try exceptで例外起きそうな場合は全部例外封殺するので
個人的には、なくてもいいかもと思ったりもしますが
完全にないとなると気持ち悪いですね。想定外のところをスルーされると怖いですね。
というか戻り値にエラー処理強要するなら例外を実装しろといいたい。
.unwrapとか 苦し紛れに後から実装したのでしょうか?
説明書を見ながら標準ライブラリを何か普通に使おうとしたら
error[E0658]: use of unstable library feature
は? いやいや 仕様 糞すぎるでしょ
コアをフォークして自分色に染めようかと一瞬おもったくらいですよ
それはいいとして
実行ファイルがデカイ!
printしただけで 5MB。
うーん。ですね。
スタンドアロンならいいですが、webだとレスポンスに影響するので読み込みサイズは小さいに越したことはないです。
stripコマンドで少し小さくできるそうです
もやもやしますが SSDの時代なのでこれも気にしないことにします。
ということで、コンパイラをインストールして、サンプルのこんちにはを試して終了となりました。
サンプルだけなら、インストールしなくても 公式サイトのデモページで実行できます。
今のところバッファオーバーランを起こすようなアプリないですし、そういうのは、すべてC#とかdelphiとかスクリプト言語でかけば発生しませんしね。
低レベル操作やREST APIを
クロスコンパイルしたい場合は、便利かもですが、
rustの使い所が現在ないです。
WEBで使いたい場合は、
https://docs.rs/cgi/latest/cgi/
https://docs.rs/cookie/latest/cookie/
https://docs.rs/formdata/latest/formdata/
webフレームワーク を使いたい場合は
axum
actix-web
国際化は
https://docs.rs/rust-i18n/latest/rust_i18n/
や
https://docs.rs/gettext/latest/gettext/
リソース組み込む場合は、
https://docs.rs/resource/latest/resource/
このあたりを使えばサクッとかけるのではないでしょうか。
練習に小さいプロジェクトを移行するのもいいと思いますが
慣れた言語でサクッと短時間で書いたほうがストレスがなくていいですね
» 続きを読む