PHP8.XでもPHPExcelが使いたい

本当は後継のPHPSpreadsheetを使う

PHPExcelは、もはや説明が不要なほどよく知られたライブラリです。
phpExcelの読み書きをするなら、まず選択肢に入ってきます。
でも、PHPSpreadsheetという後継のライブラリが登場し、PHPExcelは非推奨となりました。
確かに、PHPExcelと比べてバグも減り使いやすくはなったのですが、互換性はありません。
PHPExcelで動いていたプログラムは、それなりに修正が必要となります。

ただ、php7.4までなら非推奨ながらも動作はしているようでしたが、php8.X以降では完全に使えなくなってしまいました。

PHPExcelをphp8.Xでも動作するように修正したほうが良さそうな場合・・・(非推奨)

のっぴきならない事情で、「PHPSpreadsheetは導入せずにPHPExcelをphp8.X以降でも使いたい!」そんな方のための記事です。そして忘備録。

修正点

ほとんど、いくつかのファイルで以下のように修正するだけです。{}ではなくを使う。

$test{$i} // php8.X以降では Fatal Errorとなる。
$test[$i] // こっちに修正

修正ファイル

  • PHPExcel/Worksheet/AutoFilter.php

  • PHPExcel/Shared/String.php

  • PHPExcel/ReferenceHelper.php

  • PHPExcel/IOFactory.php

  • PHPExcel/Cell.php

  • PHPExcel/Cell/DefaultValueBinder.php

  • PHPExcel/Calculation.php

  • PHPExcel/Calculation/Functions.php

データをDBから取得してExcel出力したり、Excelからインポートする機能ぐらいしか使用していなかったので、自分の環境ではこれで動作するようになりましたが、使用方法によってはもう少し修正が必要となるかも?

その他修正点

Apacheを2.4.58にしてOpenSSLを3.0.13に更新した

この記事は、Apache2.4.58をRavenリポジトリからダウンロードして、OpenSSLはビルドインストールを行ったことの記録です。

免責

以下の実行は自己責任でお願いいたします。不利益が生じたとしても、責任は負いかねますφ(..)

前提

Apache 2.4.58のインストール

Ravenリポジトリのインストール

# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-2.el8.noarch.rpm

httpdのバックアップ

// 任意の場所に丸ごとバックアップ
# cp /etc/httpd /xxx/xxxx//etc/httpd_bk

RavenリポジトリからApache最新版(本記事作成時の最新2.4.58)のインストール

// 最新のhttpdがあるか確認
# dnf --disablerepo=AppStream --enablerepo=raven list available httpd

// httpdを停止
# systemctl stop httpd

// インストール(要注意:allowerasingで上書き可能にしている)
# dnf --disablerepo=AppStream --enablerepo=raven upgrade httpd --allowerasing

// バージョン確認
# httpd -V
->Server version: Apache/2.4.58 (Red Hat Enterprise Linux)

# systemctl start httpd

OpenSSL 3.0.13のインストール

※もともとのOpenSSL 3.0.7は残しています

ソースのダウンロード

// ダウンロードするディレクトリに移動
# cd /usr/local/src

// wgetでダウンロードする
# wget https://www.openssl.org/source/openssl-3.0.13.tar.gz

// ファイルを展開
# tar -zxf openssl-3.0.13.tar.gz 

config

// 展開してできたディレクトリに移動
# cd openssl-3.0.13

// config実行(enable-md2がないと後々sudoやdnf等などが起動できなくなる)
# ./config --prefix=/usr/local/openssl-3.0.13 --openssldir=/usr/local/ssl enable-md2

// もし上記コマンド実行時にperl関連のパッケージでエラーが出るなら以下を実行後してから再度config
# yum install perl perl-FindBin perl-open perl-YAML perl-File-HomeDir perl-Unicode-LineBreak

// 念のためMD2が有効か確認(enable-md2がないと後々sudoやdnf等などが・・・)
# ./configdata.pm --dump

// パスを通しておく
# ./Configure '-Wl,-rpath,$(LIBRPATH)'
# make

// もしもnetinet/sctp.h: No such file or directoryとなったら以下を実行してから再度make
# dnf install lksctp-tools lksctp-tools-devel

# make install

バージョン確認

# openssl version
->OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)

そのApache、OpenSSL 3.0.13使ってますか?

ApacheもOpenSSLも更新して、バージョン確認もして安心したのも束の間、毎日実施しているSiteScanから「君のところのApache、OpenSSL 3.0.7使ってるよね?大丈夫?」と言われてしまいました。

OpenSSL更新したはずだけどな〜と思い、念の為確認(さっきやってる)。

# openssl version
->OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)

最新じゃん!外から確認してみるか・・・

wget -S -O - http://xxx.xxx.xxx.xx 2>&1 | grep Server
->Server: Apache/2.4.58 (Red Hat Enterprise Linux) OpenSSL/3.0.7

更新前のOpenSSL/3.0.7使ってるじゃん・・・

弱々エンジニアな自分は、ApacheとOpenSSLを更新するだけで満足してしまってました。更新後のOpenSSLを使うようにしないとだめですね。

最新のOpenSSLをApacheに使ってもらおう

調べたところ、以下の方法があることがわかりました。

  • Apacheをソースからビルドし直してApacheを再インストール

  • Apacheをソースからビルドして、mod_sslだけを入れ替える

今回は、mod_sslだけを入れ替えることに。

mod_sslが欲しいので、Apacheをソースからビルドする

# yum install apr-devel apr-util-devel pcre-devel
# cd /usr/local/src
# tar -zxf httpd-2.4.58.tar.gz
# cd httpd-2.4.58/

// ここでOpenSSL 3.0.13を指定する
# ./configure --enable-ssl  --with-ssl=/usr/local/src/openssl-3.0.13

// mod_sslだけが欲しいので、make installはしない
# make

mod_sslを入れ替える

// とにもかくにもまずはバックアップ
# cp /etc/httpd/modules/mod_ssl.so /etc/httpd/modules/mod_ssl_20240220bk.so
# cp /usr/local/src/httpd-2.4.58/modules/ssl/.libs/mod_ssl.so /etc/httpd/modules/

// OpenSSL 3.0.13を使用しているか確認
# strings /usr/lib64/httpd/modules/mod_ssl.so | grep OpenSSL

// 共有ライブラリを認識させる
# echo '/usr/local/lib64' | tee -a /etc/ld.so.conf 
# ldconfig

// 確認
# wget -S -O - http://xxx.xxx.xxx.xxx 2>&1 | grep Server
->Server: Apache/2.4.58 (Red Hat Enterprise Linux) OpenSSL/3.0.13

これにて一段落!
SiteScan君「ApacheもOpenSSLも最新だね!ところでさ、君のOpenSSH古くね?」

OpenSSH更新編に続く・・・

これまでの住処:マンション購入をきっかけに振り返る

2023年11月にローン決済が実行され、無事にマンションを購入するに至った。

夫婦共働きじゃなかったらあり得なかった。

中古だが、

  • 築10年
  • 最寄り駅から徒歩数十秒
  • 近くのショッピングモールまで徒歩数十秒
  • 3路線使用可
  • 千葉のターミナルである船橋駅が徒歩圏内

と、価格と防音以外は今のところ良さげだと思っている。

自室にはWICがありこれまで住んできた家より快適。

ということで、過去の家を振り返る。

 

幼少期〜小5

記憶がある中で一番最初の家。

この頃は愛知県の瑞穂区にいた。マンションの3Fに住んでいた。

人生の黒歴史は間違いなくこのとき。色々な意味で家が荒れる。

 

小5〜中3

両親の離婚をきっかけに引っ越し。

木造アパートで、上からも横からも音の嵐。

名古屋市内の別の区へ。

祖父母、叔父叔母によりもろもろ立て直す。

この頃の友達とは今でも定期的に会う。

 

高1〜修士1年

営団地の応募に当たり、引っ越し。広く、新しくなる。

 

修士2年〜大学院卒業まで

大学近くのレオパレス35,000円/月。

ひどい家だったことだけは憶えている。

隣の騒音が丸聞こえで、夜中まで及ぶことも。管理会社を経由して何回か苦情を出す。

ほぼ寝るためだけの家だった。

 

就職〜就職後半年

23区内の社員寮。壁の薄さはレオパレスとさほど変わらず。

部屋だけは広かった。

 

転職後

会社近くのマンション。71,000円/月。

角部屋、オートロック、鉄筋コン。

仲介業者はともかく、管理会社はいい人ばかりだった。

 

同棲後〜マンション購入まで

千葉の3階建ての小さいマンション。110,000円/月。

小さいためか、天井から響く音もなく、防音は一番よかった。

スーパーまで遠かったのが欠点だった。

 

 

 

WF-1000XM4故障と交換の記録

2022年の9月にWF-1000XM4をAmazon経由で購入した。

ノイキャンや音質含め、満足だったが2023年11月あたりから以下の症状が出始める。

  • 右耳だけ充電が100%にならない
  • 右耳だけ電池の消耗が激しい(満充電から1時間持たない)

 

調べたところ、他のユーザさんからも異口同音に同様の事象が報告されているらしかった。さらに、SONYに申し出て無償交換されているケースがほとんどだったので、自分もやってみた。

 

向かったのはソニーステーション秋葉原。土曜日もやっていて助かった。

https://www.sony.jp/spot-map/spot-detail.html?id=000000006

窓口は5つほどだった記憶。

全く並んでおらず、すぐに案内された。上記症状を伝えて、一旦預かりとなった。

もしも修理が有償となった場合は、事前に連絡をくれるとのことだった。

 

2〜3日後、修理工場から、

「原因を調査したいから、無償で交換させていただきます。」

との連絡が来る。

連絡から翌々日で交換品が届いた。(イヤーピースも含めて新品になっていた)

ソニーステーションへ預けてから交換品が届くまで1週間以内と、とても迅速だった。

 

ソニーステーションの窓口では自分以外にも、同様の症状を訴えている人がいたので、やはり何らかの問題を孕む製品なのか・・・?

購入から1年で交換となったのは残念だが、無償で交換してもらえたのでまあOKか。

 

もし有償だったらAnkerのノイキャン買おうかな〜と思っていたけど、無駄な出費をせずに済んでめでたし。

 

プライバシーポリシー

プライバシーポリシー

三者に個人を特定できる情報を提供することはありません。

個人情報の管理には細心の注意を払い、以下に掲げたとおりに扱います。

 

サポート時

メールにてお問い合わせを受けた際のメールアドレスについては、本アプリのサポートのためのご連絡以外に使用することは絶対にありません。

 

免責事項

利用上の不具合・不都合に対して可能な限りサポートを行っておりますが、利用者が本アプリを利用して生じた損害に関して、開発元は責任を負わないものとします。

アプリについてのお問い合わせはこちら

こちらは個人で開発しているアプリのお問い合わせ窓口です。

アプリについてのお問い合わせはこちらから。(⭐は@へ置き換えてくださいね)

お問い合わせ先:geek.otter.develop⭐gmail.com

データサイエンスエキスパート不合格体験記

はじめに

この記事はデータサイエンスエキスパート試験の不合格体験記です。試験の問題については言及できないのですが、何かの参考になれば・・・

 

データサイエンスエキスパート試験とは?

https://www.toukei-kentei.jp/exam/grade13/

一般社団法人 統計質保証推進協会が運営している統計検定の試験の一部です。

データサイエンス基礎、データサイエンス発展は既に開始されていますが、データサイエンスエキスパート試験も今年の5月からCBTにて受験を開始しました。

この試験の趣旨は以下の通りです(HPより引用)。

社会が大量のデータを生み出し、価値を創出する「データ時代」となり、データサイエンスの重要性が広く認識されるようになりました。この分野の専門的な人材に対する社会からの需要も大きくなっています。「データサイエンス発展」を踏まえて、「データサイエンスエキスパート」では大学専門レベルでの高度な内容について、CBT方式で評価・認証します。試験内容は、上記の数理・データサイエンス教育強化拠点コンソーシアムの応用基礎レベルのモデルカリキュラムを含むものとなります。これによりデータサイエンスに関する専門的なスキルを客観的に評価します。

 

背景

  • 統計検定2級、準1級に合格済み。
  • 基本情報、応用情報合格済み。
  • 仕事はweb系システム開発が主だが、データ分析を行うこともある。
  • php,js,VBA,SAS,SQLをメインに使用している。
  • python,Rは稀に使う程度。読むことには抵抗が無い。
  • 機械学習は聞いたことがあるだけで、統計検定の勉強で出会ったことのないアルゴリズムは全く知らない。

統計検定準1級に合格する程度の力はあるけれど、機械学習をほとんど知らない(実務で触ることも全くない)状態ですね。

 

なんで受けたの?

統計検定1級の勉強を進めていましたが、データサイエンスエキスパートなる試験が受けられるようになったことを知り、昨今のデータサイエンスとは何たるかを知る機会になるかと思い、受験を決意しました。

基礎や発展を飛ばしていきなりエキスパートを受験したのは、出題範囲が統計検定準1級の内容も含まれていて、「準1級合格してるんだから受けるならエキスパートだろ!」というただそれだけの理由です。

あと、サンプル問題を解いたところ8割ほど合っていて、「これもしかしていける?」と勘違いしてしまったこともありますね・・・

 

結果と感想

42点で不合格でした。(ほとんどわかりませんでした!!!!!)

一部、何を問われているかも理解できなかった問題があり、手も足も出ないとはまさにこのことでした。

数理統計で稼ぐつもりでいましたが・・・(お察し)

そもそも、統計検定があるのにデータサイエンス試験が出来た意味を考えれば、色々な意味で納得です。

 

一番気になるであろう問題の内容については触れられないので、本当にただの体験記になってしまいましたが、つい先月に受験可能になったばかりでネット上にもほとんど情報がないので、この記事が何かの参考になれば幸いです。