投稿

12月, 2024の投稿を表示しています

CentOS Stream 10を仮想マシンにインストールして初期設定

VMware FusionにCentOS Stream 10の仮想マシンを作成したときの覚書。 CentOS公式ページからCentOS Stream 10のISOファイルをダウンロードしておく。 環境: Mac mini(2018), Ventura 13.5.2, VMware Fusion 13.6.2 CentOS Stream 10 Release Notes - The CentOS Project VMware Fusionで仮想マシン作成 Other Linux 6.x 64-bit Legacy BIOS 仮想マシンの設定 Sharing: OFF CPU: 4 cores Memory: 4096GB Network Adapter: Bridged Networking - Autodetect Hard Disk: 80GB CD/DVD: (ダウンロードしたISOファイル) Sound Card: OFF USB & Bluetooth: OFF Printer: OFF OSインストール時の設定 Language: English(United States) Software Selection: Server Time & Date: Asia/Tokyo Root Password: Allow root SSH login with password 1.初期設定 インストール完了後に再起動してコンソールでログイン。 IPアドレス確認。 # ip a SSHでログインする。 PS:> ssh root@192.168.10.122 アップデート確認 # dnf update ホスト名変更 # hostnamectl set-hostname vm-dev4.webrec.co.jp # hostnamectl status 言語設定確認。 # localectl status System Locale: LANG=en_US.UTF-8     VC Keymap: us    X11 Layout: us     X11 Model: pc105 言語設定一覧。 # locale -a ja_JPがないでインストール。 #...

Cloud Run Functionsでバッチ処理を動かす

PhpSpreadsheetでエクセルファイルを処理するバッチ処理が重いので、Cloud Run Functionsを利用すれば幸せになるかもしれないと調査しているときの覚書。 環境: Windows 11 Pro 23H2, Google Cloud SDK 503.0.0, Google AI Studio(Gemini 1.5 Pro) Cloud Run Functionsとは? Cloud Run Functionsは、Google Cloudが提供するサーバーレスサービスの一つ。 コードをイベントに応じて自動的に実行できる。 難しいサーバー管理は Google がやってくれる。 自動で処理能力が調整されて、使っていない場合は費用が発生しない。 2024年8月に、Google Cloud Functionsの第2世代がCloud Run Functionsに名称変更された。 Cloud Runと統合して機能強化された。 Cloud Run functions の概要  |  Cloud Run functions Documentation  |  Google Cloud Cloud Run functions の実行環境  |  Cloud Run functions Documentation  |  Google Cloud ちなみにGoogle CloudにはBatchという重い処理を定期実行するサービスがある。 参考:  バッチ: バッチ コンピューティングのシンプルさ | Google Cloud Cloud Run Functionsのチュートリアル 下記公式クイックスタートに従ってやってみる。 参考:  Google Cloud コンソールを使用して Cloud Run 関数を作成する  |  Cloud Run functions Documentation リージョンは「aria-northeast1(東京)」にした。 何となく雰囲気は分かった。 PHPのチュートリアル 公式ドキュメントを参考に。 Google Cloud CLI を使用して Cloud Run 関数を作成する  |  Cloud ...

Cloud Native Buildpacksとは?

Google Run FunctionsのチュートリアルをやっているときにBuildpackパックツールというのを知って調査しているときの覚書。 環境: Windows 11 Pro 23H2, pack 0.36.0, Google AI Studio(Gemini 1.5 Pro) Cloud Native Buildpacksとは? Cloud Native Buildpacks (CNBs) は、Dockerfileを記述することなく、ソースコード(package.jsonなど)からコンテナイメージを自動的に生成するためのツール。 Cloud Native Buildpacks · Cloud Native Buildpacks ビルドパックを再利用するため、ビルド時間を短縮できる。 Windowsにインストール scoop経由でインストール。 参考:  Pack · Cloud Native Buildpacks PS:> scoop install pack PS:> pack --version 0.36.0+git-92bc87b.build-6201 ▼ 関連記事 Windows11にDocker Desktopをインストール Windows11をクリーンインストール(2022年12月)

Windows11にDocker Desktopをインストール

Google Cloudで使うDockerfileの動作確認をしたくてDocker環境を作っているときの覚書。 環境: Windows 11 Pro 23H2, Docker Desktop 4.36.0 Docker Desktopをインストール scoop経由でインストールするか迷ったけど、まずは公式の案内通りにやる。 Hyper-Vの機能は有効化済み。 参考:  Windows で Hyper-V を有効にする | Microsoft Learn systeminfoコマンドで確認できる。 PS C:> systeminfo Hyper-V の要件:         ハイパーバイザーが検出されました。Hyper-V に必要な機能は表示されません。 公式サイトからインストーラーをダウンロードして実行。 参考:  Windows | Docker Docs デフォルトでWSL2のチェックが入っているのでそのままインストール。 Windowsの再起動が必要。 チュートリアル Docker Desktopに表示されたチュートリアルをやる。 What is container? How do I run a container? Run Docker Hub images Persist your data between containers Access your local folder from a container 【関連記事】 Windows11をクリーンインストール(2022年12月) Docker for Windowsをインストール

PHPのerror_logをsyslogに設定したら文字化け(FreeBSD固有の問題だった)

PHPでバッチ処理を書いているときの覚書。 環境: FreeBSD 14.1-RELEASE-p6, PHP 8.3.6 PHPエラーはシステムログに設定する。 # php --ini # less /usr/local/etc/php.ini error_log = syslog これで「/var/log/messages」に出力されるようになる。 PHPエラー時に確認してみると文字化けしている。 # less /var/log/messages 文字コードの確認。 # less /usr/local/etc/php.ini default_charset = "UTF-8" UTF-8になっている。 システムの言語設定を表示。 # locale LANG=C.UTF-8 LC_CTYPE="C.UTF-8" LC_COLLATE="C.UTF-8" LC_TIME="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_ALL= 各説明は下記サイトを参考に。 参考:  ロケール環境変数について - IBM Documentation これを日本語に設定すればいいのかな? 設定できるlocale一覧を表示。 # locale -a FreeBSDは/etc/login.confを編集する。 参考:  Chapter 25. Localization - i18n/L10n Usage and Setup | FreeBSD Documentation Portal # less /etc/login.conf default:\         ...         :charset=UTF-8:\         :lang=ja_JP.UTF-8: /etc/login.confを編集したときはcapability databaseを更新する必要があるみたい。 # cap_mkdb /etc/login.conf 一旦ログインしなおして確認。 # locale LANG=ja...

FreeBSDにXdebugをインストール

WordPressのwpdbのエラー時に呼び出し履歴(back trace)を表示してほしくて設定したときの覚書。 環境: FreeBSD 14.1-RELEASE-p6, PHP 8.3.6, xdebug 3.3.2 xdebugを検索してインストール。 # pkg search xdebug # pkg install php83-pecl-xdebug 読み込まれているか確認。 # php --ini インストールしただけで呼び出し履歴(back trace)できるようになる。 【関連記事】 WordPressがBlankだったりトップにリダイレクトするのをデバッグ XdebugをInstallしてError時の呼び出し履歴を表示

PHPのmysqlndとmysqliの違い

開発環境を構築するときにphp-mysqlndではなくphp-mysqliをインストールするようになって、「php-mysqlndをインストールしなくていいんだっけ?」と思って調査したときの覚書。 環境: FreeBSD 14.1-RELEASE-p6, PHP 8.3.6 mysqlndとは? PHPとMySQL(MariaDB)サーバーとの通信するためのライブラリ。 MySQL Native Driverが正式名称。 PHP5.3以前はMySQL Client Library(libmysql)が使われていたが、これはMySQL側が開発したものでありライセンスの問題があった。 そのためPHPプロジェクトで書き直されたものがMySQL Native Driver。 PHP5.4からデフォルトで有効。 参考:  PHP: Mysqlndの概要 - Manual 参考:  MySQL :: MySQL native driver for PHP - mysqlnd 参考:  MySQL Native Driver for PHP, mysqlnd mysqlndとphp-mysqliとの違い。 mysqlndはPHPのソースコードに組み込まれたライブラリ。 php-mysqliはPHP拡張モジュール。 MySQLサーバーに接続するプログラムはphp-mysqliが提供しているAPIで記述する。 php-mysqliは MySQL Native Driver(mysqlnd)と MySQL Client Library(libmysql)の どちらのライブラリを使うか選択できる。 MySQL Native Driver(mysqlnd)を使っているか確認。 どのライブラリを使うかはコンパイル時に決める。 参考:  PHP: どのライブラリを選ぶか - Manual PHPのビルドオプションを表示する。 見やすいように改行する。 # php-config --configure-options | sed -e 's/ --/\n--/g' ... --enable-mysqlnd ... mysqliが読み込まれているか確認。 # php --ini .... Loaded Configuration ...

phpのconfigureオプションを確認

phpのビルド(コンパイル)時の設定を確認しようとしたときの覚書。 環境: FreeBSD 14.1-RELEASE-p6, PHP 8.3.6 確認コマンド # php-config --configure-options 改行に置換して見やすくする。 # php-config --configure-options | sed -e 's/ --/\n--/g' --disable-all --program-prefix= --with-config-file-scan-dir=/usr/local/etc/php --with-layout=GNU --with-libxml --with-openssl --with-password-argon2=/usr/local --enable-dtrace --enable-embed --enable-fpm --with-fpm-group=www --with-fpm-user=www --enable-mysqlnd --with-external-pcre=/usr/local --prefix=/usr/local --localstatedir=/var --mandir=/usr/local/share/man --infodir=/usr/local/share/info/ --build=amd64-portbld-freebsd14.0 build_alias=amd64-portbld-freebsd14.0 PKG_CONFIG=pkgconf PKG_CONFIG_LIBDIR=/wrkdirs/usr/ports/lang/php83/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig CFLAGS=-O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing LDFLAGS= -L/usr/lib -lcrypto -lssl -fstack-protector-strong CPP=cpp CXXFLAGS=-...

PhpSpreadsheetが複数ファイルをループするとメモリを使いすぎる

PhpSpreadsheetでxlsxファイルを処理しているときにメモリエラーが出たので調査したときの覚書。 環境: Windows 11 pro, PHP 8.3.13, PhpSpreadsheet 3.5.0 数メガある10個ほどのxlsxファイルをループ処理したら下記エラー。 PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4096 bytes) in D:/../ 次のファイルを読み込むごとにメモリ消費が増えていく。 PhpSpreadsheetはIteratorを使ってメモリ消費を最小限にしているはず。 参考:  Looping the Loop - PhpSpreadsheet Documentation 試したこと php.iniのmemory_limitを1024Mにした。 Loop中にmemory_get_usage()を出力して、どこでメモリ消費するか計測。 xlsxをload前にsetReadDataOnly(true)する。 → 変わらなかった。 Loopの最後で変数をunsetする。 → 変わらなかった。 10,000行の1MBのxlsxファイルをloadするとメモリ126MBを消費した。 memory_limit=1024Mだと8MB(約80,000行)のファイルを処理するのが限界。 フォルダに置いたxlsxファイルをループして処理したかったけど、メモリの使い過ぎで止まってしまうので別の方法を考える。 対策案 一つずつ別スレッドで処理(1つのPHPコマンドで1ファイル処理)。 一旦XLSXをCSVに変換してから処理。 一時的にクラウドのハイスペックマシンで処理。 そもそもPhpSpreadsheetを使わず、Power AutomateでXLSXをCSVに変換してから処理。 CSVファイルをfgetcsvでループ処理する際はファイルサイズに関わらず使用メモリは増えないので、一旦何らかの方法でXLSXをCSVに変換するのが有力候補。 【関連記事】 Windows11にPHP8.3とComposerをscoop経由でインストール 病院の施設基準を自動更新するには? PHPでExcelを扱う...