投稿

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ファイル処理)するようにした方が良さそう。 【関連記事】 Windows11にPHP8.3とComposerをscoop経由でインストール 病院の施設基準を自動更新するには? PHPでExcelを扱うライブラリPhpSpreadsheetをインストール 【PHP】PHPExcelがループ内でメモリを使いすぎる

Windowsがブルースクリーン→メモリ診断→メモリ交換

Windowsがブルースクリーンになることが出てきたので原因を調べているときの覚書。 環境: Windows 11 Pro 23H2, メモリ32GB(8GBx4), WinDbg 2017/08/28, MemTest86 v11.1 1.原因を調査 ブルースクリーンになってイベントビューアーを見てみる。 このコンピューターはバグチェック後、再起動されました。バグチェック: 0x0000001a (0x0000000000041792, 0xfffff0810eb1fba8, 0x0000020000000000, 0x0000000000000000)。ダンプの保存先: C:\Windows\Minidump\111924-10890-01.dmp。レポート ID: d07f49ba-...-98cfaeb341c6。 検索してみると下記記事が参考になった。 参考:  WindowsのMinidump解析でChatGPT使ったら良かった #minidump - Qiita 手順 Microsoft StoreからWinDbgをインストール Geminiに聞く Windows PCが突然停止し、minidumpが生成されました。 このダンプファイルをWinDbgツールにかけたところ、以下の出力が得られました。 障害の原因を調べてください。 WinDbgのメッセージ: 物理メモリに問題があることが分かる。 2.メモリ診断 Windows メモリ診断を実行してみる。 実行中もメモリに問題があると表示され、再起動後のイベントビューアーにもエラーが検出されている。 Windows メモリ診断によりコンピューターのメモリがテストされ、ハードウェア エラーが検出されました。問題を確認して修復するには、コンピューターの製造元に問い合わせてください でもメモリ4枚のうち、どのスロットのメモリに問題があるか分からない。 前に使ったMemTest86を実行してみる。 参考:  メモリ診断ツール「MemTest86」 MemTest86でもどのスロットのエラーなのかは分からないので、テストするメモリだけにしてMemTest86を実行する。 4周テストするのに6時間掛かかるので、エラーが出たら停止する。 3.メモリ交換 Crucialの16GBx2のメモリを購入。 Cr...

iPad Air 13インチ(第6世代M2)を購入

1年4ヵ月前に購入したiPad Pro 12.9(第6世代M2)からiPad Air 13インチ(第6世代M2)へ買い替えたときの覚書。 Apple Storeでの購入金額 12.9インチiPad Pro Wi-Fi + Cellular 128GB - スペースグレイ: 196,800円 13インチiPad Air Wi-Fi + Cellularモデル 128GB - スペースグレイ: 154,800円+AppleCare 16,800円(2年間) 買い替えた理由 iPad Pro 12.9のバッテリーの消費が激しくなり1時間に10%減るようになった。 Apple StoreでOSの書き換えしても直らない。 仕事で利用するのでバッテリーの持ちが悪いのは致命的。 主にニコンの一眼レフで撮影した写真をSnapBridgeで転送して確認するので、画面が大きければiPad Proでなくてもいいという判断。 iPad Pro 12.9(第6世代M2)との比較、使用感 iPad Airの方が86g軽い。 病院で撮影するときにマスクするので指紋認証が便利。 画質は変わらない。 私の使い方の場合、FaceIDより指紋認証の方が圧倒的に便利ということが分かった。 【関連記事】 Nikon Z6IIIの階調モードHLGはiPad Proを外部モニター化すれば正しく表示できるか? iPad Air3 64GB Wi-Fi + Cellularを買った

ローマ数字の置き換え変換ルール

公表されている医療情報をPostgreSQLに取り込んで活用しようとしているときの覚書。 具体的には施設基準のデータベースを作ろうとしている。 困ったのが 全角ローマ字数字の「Ⅰ」(U+2160) が 全角英字「I」(U+FF29) となっていたりするのでデータベースに保存する前に統一処理したい。 (見た目では分からない) 変換方針 全角ローマ字数字に統一する。 全角英字→全角ローマ字数字の変換用連想配列を作る(Ⅰ~Ⅳ)。 「DX」など数字ではなく名称部分に使われていることがあるので気を付ける。 PHPでループしてstr_replaceで置き換える。 ちなみに政府のシステムでは置き換え規則があるらしい。 参考:  内閣府共通意見等登録システム - 内閣府 こちらは半角英字に統一している。 DXの場合、D10と区別できなくなくなるので数字は数字として変換した方がいいと思う。 【関連記事】 データベースの命名規則 病院の施設基準を自動更新するには?

Microsoft 365の非営利団体向けの申請→却下

NPO法人のメールシステムとしてMicrosoft 365を検討しているときの覚書。 Microsoft 365には非営利団体向けのプランが存在する。 特徴 10ユーザーまで無料。 Officeアプリ(Word, Excel, PowerPoint, Outlookなど)が使える。 Teamsが使える。 懸念事項 審査がある。 クレジットカードの登録が必要。 ITに詳しくないと使いこなせない。 申請手順は解説してくれているサイトがあるのでこちらを参考に。 参考:  【NPO法人の皆様へ】 使わないともったいない!Microsoft 365 非営利団体向けプラン -申請準備編-|石垣比呂志@ティーケーネットサービス&新潟県ITコーディネータ協会 流れ 11/1(金) Microsoftの非営利団体向けの公式サイトから登録 11/2(土) 「寄付とグラントの対象ではありません」とメール 却下されてしまった。 利用資格は公式サイトで確認。 参考:  非営利団体向けの寄贈 & 割引の利用資格 | マイクロソフトの非営利団体向けプログラム 【関連記事】 非営利団体向けGoogle広告が無料で配信可能な「Google Ad Grants」

感染症及び寄生虫症1

診療情報管理士の勉強をしているときの覚書。 感染と感染症 感染とは?・・・微生物がヒトの体内に侵入、定着し増殖可能な状態となったこと。 感染症とは?・・・部分的または全身的に病的状態(発病)を呈したこと。 感染症成立の5段階:存在、侵入、定着、増殖、臓器障害 不顕性感染(ふけんせいかんせん)・・・感染しても臨床症状が現れない状態。 無症状感染と言う場合もある 参考:  不顕性感染 - Wikipedia 原核生物・・・核や他の膜結合細胞小器官を持たない単細胞生物である。 参考:  原核生物 - Wikipedia 真核生物・・・細胞の中に核膜に包まれた核を持つ生物である。 すべての動物、植物、菌類、そして多くの単細胞生物は真核生物である。 参考:  真核生物 - Wikipedia ウイルス・・・極微小な感染性の構造体で、タンパク質の殻とその内部に入っている核酸からなる。 増殖に必要なエネルギーを作り出す仕組みを持たないため、動植物の細胞に感染し、細胞内のリボソームなどを利用して増殖する。 生物かどうかについて議論がある。 参考:  ウイルス - Wikipedia 球菌・・・形状が球形を示す原核生物。 参考:  球菌 - Wikipedia 桿菌(かんきん)・・・形状が細長い棒状の原核生物。 多い球菌と比べて、桿菌は形状も大きさもバリエーションに富んでいる。 参考:  桿菌 - Wikipedia 生の細菌は光学顕微鏡でも見えにくいので色素で染めて観察する。 グラム染色法・・・染色によって紫色に染まるものをグラム陽性、紫色に染まらず 赤く見える ものをグラム陰性という。 この染色性の違いは細胞壁の構造の違いによる。 グラム陰性菌は、一般的な傾向としては相対的に病原性が高い。 参考:  グラム染色 - Wikipedia 寄生虫・・・真核生物。 単細胞を原虫(顕微鏡でしか見えない)。 多細胞をぜん虫(肉眼で見える)。 参考:  寄生虫 - Wikipedia 感染症の診断方法 病歴(いつどこでどのように)から病原微生物を推理する。 局所症状による部位診断する。 呼吸器感染症/神経系感染症/腸管感染症 細菌感染は白血球が増える ウイルス感染はリンパ球が増える。 感染症の診断は体液や組織から病...

CSSで文字の回り込みを制御

デザインに合わせて、文字の回り込み(インデント)を階段状にしたいと調査しているときの覚書。 pタグの前にfloat属性のタグを置いて、clip-pathとshape-outsideで回り込みさせる。 clip-pathは形状の確認用。 参考サイト 【CSS小技】三角形や台形、変形BOXの内側の形に沿わせてテキストを入れる(コピペOK) - Mill's Note 【CSS】CSSで画像をクリッピング!clip-pathの使い方を解説! : ビジネスとIT活用に役立つ情報(株式会社アーティス) clip-pathとshape-outsideはモダンブラウザで対応済み。 "clip-path" | Can I use... Support tables for HTML5, CSS3, etc "shape-outside" | Can I use... Support tables for HTML5, CSS3, etc もう三角形を作るのにborderを使う必要ないかも。

wwwサブドメインのためだけにCertbotでSSLのワイルドカード証明書を取得するか?

Let's Encryptのワイルドカード証明書を取得しようとしたときの覚書。 環境: CentOS Stream 9, certbot 2.4.0 最近は無料で比較的簡単に実現可能。 参考 Welcome to the Certbot documentation! — Certbot 2.11.0 documentation Let’s Encryptの導入 (SAN証明書, ワイルドカード証明書) – Int Design LLC. 無料SSL「Let’s Encrypt」でワイルドカードを設定し、ValueDomainで自動更新する | 株式会社オルタ メリットとデメリット Let's Encryptのワイルドカード証明書を取得するにはDNSを使った認証方法にする必要がある。 参考:  チャレンジの種類 - Let's Encrypt - フリーな SSL/TLS 証明書 ワイルドカード証明書のメリット サブドメインでいちいち証明書を取得する必要がなくなる。 「www」サブドメインのありなしとか考えなくていい。 ワイルドカード証明書のデメリット 定期的にDNSのTXTレコードを書き換えないと証明書が失効する。 DNSをAPI経由で書き換えるバッチを定期実行するため、システムが複雑化する。 「www」を追加するだけならHTTP経由の認証方法で十分だと思う。 certbotの自動更新に対応しているDNSプロバイダは公式サイトからリンクされている。 参考:  DNS providers who easily integrate with Let's Encrypt DNS validation - Issuance Tech - Let's Encrypt Community Support certbotが標準で対応しているDNSプロバイダを利用するなら、ワイルドカード証明書を使うのはありだと思う。 【関連記事】 certbotでSSL化してあるサイトを別サーバーに移行(2024年6月) Let's Encryptで無料SSLをCentOS7に設定(certbot)

有料職業紹介事業の免許更新

2年前に取得した有料職業紹介事業(人材紹介業)の免許を更新したときの覚書。 環境: 株式会社、一人社長、e-Taxで納税申告(税務署の受付印がない)、9月末決算 1. 更新期限の確認 初期許可の有効期間は3年間。 有効期間が満了する3ヵ月前までに労働局へ申請する必要ある。 有効期限: 2025年1月31日 提出期限: 2024年10月31日 労働局から電話があり、10月中旬までに一度書類を送ってほしいと連絡があった。 9月末決算だと納税証明書が間に合わないので、昨年の決算情報で問題ないらしい。 労働局とのやり取りは全て電話か郵送でやり取りする必要がある。 昔メールで情報漏洩があったかららしい。 セキュリティを徹底しようとかではなく、紙に戻るのが行政らしい。 2. 提出書類の準備 厚生労働省のサイトで最新情報を確認する。 労働者派遣事業・職業紹介事業等・募集情報等提供事業 |厚生労働省 職業紹介事業パンフレット―許可・更新等マニュアル― |厚生労働省 準備した書類 職業紹介事業許可更新申請書(様式第1号-第1面、第2面) 有料職業紹介事業計画書(様式第2号-表面) 決算書一式(純資産の部合計が350万円以上) 納税証明書① 決算書の別表1と決算書の別表4 別表1の次葉も送った(労働局側で必要なものを選別してくれる) e-Taxの受信通知を印刷したものが税務署の受信印代わり 納税証明書②/法人税の所得金額の証明(その2) e-Taxの「納税証明書の交付請求」から申請。 ※ 納税証明書を書面で受け取る(労働局の担当者曰く書面で提出してほしいとのこと) → 申請後30分でメッセージが届く。 → 交付手数料370円+郵送料110円を納付。 → 5日後に届く(水曜に手続き→月曜に郵便受信)。 職業紹介責任者講習会の受講証明書(修了日が5年以内のもの) 業務の運営に関する規程 最新の法令を反映したものである必要があるため、厚生労働省のページから記載例をダウンロードして作り直した。 収入印紙:18,000円 送るときに郵便局で購入。収入印紙はレターパックに入れてOK。 3. 郵送して申請 労働局の担当者に電話して確認したところ、法人税の所得金額の証明(その2)を申請して届く前に書類一式を送ってほしいとのこと。 10/16(水):書類一式+収入印紙をレターパックで送付。 10/17(...

損傷、中毒及びその他の外因の影響3

診療情報管理士の勉強をしているときの覚書。 [T36-T50] 薬物、薬剤及び生物学的製剤による中毒 基本的処置法 未吸収の場合: 吸収阻止(胃洗浄、下剤と吸着剤の投与など) 吸収された場合: 排泄促進(強制利尿、血液透析など)、解毒剤の投与、対症療法、生命維持療法 [T39] 非オピオイド系鎮痛薬、解熱薬及び抗リウマチ薬による中毒 オピオイド系はモルヒネなどの麻薬のこと。 オピオイド系ではない麻薬もあるのでイコールではない。 参考:  オピオイド - Wikipedia 非オピオイド系鎮痛薬は「麻薬でない鎮痛薬」のこと。 代表的なものにNSAIDs(エヌセイド)がある。 参考:  非ステロイド性抗炎症薬 - Wikipedia アスピリンは代表的な解熱鎮痛剤の一つ。 NSAIDsの代名詞というべき医薬品。 有名な市販品は「バファリン」。 小児は副作用のためアスピリンは使われない。 参考:  アセチルサリチル酸 - Wikipedia アセトアミノフェンはアスピリンの代わりに小児の解熱・鎮痛剤として使用される。 NSAIDsではない。 小児用バファリンはアセトアミノフェン。 参考:  アセトアミノフェン - Wikipedia [T42] 抗てんかん薬、鎮静・睡眠薬、及び抗パーキンソン病薬による中毒 バルビツレート(バルビツール酸)・・・1950年代半ばまで、鎮静剤や睡眠薬として実質的に唯一の薬であった。 耐性と依存性があるため、現在では推奨されていない。 致死量が催眠量の6倍のため危険。 参考:  バルビツール酸系 - Wikipedia ベンゾジアゼピン・・・現在よく使われている睡眠薬。 アルコールと同時摂取で中毒の危険性あり。 参考:  ベンゾジアゼピン - Wikipedia [T43] 向精神薬による中毒、他に分類されないもの 三環系及び四環系抗うつ薬・・・けいれん、昏睡などの中枢神経作用や心臓への作用がある。 抗うつ薬の有効性が議論されている。 参考:  抗うつ薬 - Wikipedia フェノチアジン系抗精神病薬及び神経抑制薬・・・統合失調症に使われる薬。 精神安定作用、錐体外路症状(よだれ、手の震えなどの障害)。 参考:  抗精神病薬 - Wikipedia [T51-T6...