ブログ内検索

プログラミング教室
オンライン肥料教室を開催しています
検索キーワード:「active」
 

ビール酵母由来の肥料の効果を改めて考えてみたの続き

/** Geminiが自動生成した概要 **/
ビール酵母由来肥料の研究から、水熱処理した酵母細胞壁とFe(Ⅲ)の反応で「RCS(活性炭素種)」の発生が確認されました。RCSは植物の生産性向上に寄与し、同時に安定した二価鉄も生成されます。これにより、ビール酵母肥料に錆びた鉄粉を加えるだけで、生育促進RCSと安定二価鉄の同時供給が可能と示唆されています。今後のさらなる効果検証が期待されます。

 

SOY CMSでOpenStreetMapプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向けに、自由に地図作成に参加できるOpenStreetMapを活用した新プラグインがリリースされました。このプラグインはLeafletライブラリを使用し、あなたのSOY CMSサイトにインタラクティブな地図を表示し、ブログ記事の関連地点をピンでマッピングすることが可能です。当ブログ運営者が、各地を巡って投稿した記事を妻の要望で分かりやすく整理するため開発されました。旅の記録、地域情報、店舗案内など、位置情報とコンテンツを紐付けて魅力的に発信したい方に最適です。サンプルページで機能を確認でき、専用サイトからダウンロード可能です。SOY CMSサイトの表現力を格段に向上させます。

 

SOY CMSでプラグインの状態チェックを最適化して表示速度を改善

/** Geminiが自動生成した概要 **/
SOY CMSの表示速度改善についての記事です。 今回はプラグインの有効・無効の判定処理を最適化しました。従来は全プラグインの状態を都度ファイルシステムから読み込んでいましたが、キャッシュ化して参照するように変更。これにより、ファイルシステムへのアクセス回数を減らし、不要なプラグインのクラスファイル読み込みを削減することで表示速度を向上させています。 同様の速度改善は、設定情報のデータベース参照回数を減らしたSOY Shopでも行われています。

 

ESP8266とRaspberry Piでソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、ESP8266モジュールをクライアント、Raspberry Piをサーバーとしたソケット通信を試みています。 まず、ESP8266側でWiFi接続を行い、サーバー側のIPアドレスとポート番号を指定してソケット通信を行います。 記事では、ESP8266から"send socket from esp8266"というメッセージをサーバーに送信し、サーバー側で受信できていることを確認しています。 これにより、ローカルネットワーク内でESP8266からRaspberry Piにデータを送信できることが確認できました。今後は、温度などのデータを送受信する方法を検討していく予定です。

 

NodeMCUをWiFiのアクセスポイントにしてみる

/** Geminiが自動生成した概要 **/
この記事は、NodeMCU(ESP8266)をWiFiのアクセスポイントにする方法を解説しています。 筆者は、サンプルコードを参考に、NodeMCUにWiFi接続とアクセスポイント設定のコードを記述し実行しました。 その結果、コードに記述した「ESP-AP」という名前のアクセスポイントが作成されたことを確認しました。 しかし、パスワードが設定されていないため、現時点では接続できない状態です。 記事では、引き続きWiFi用語の解説や接続方法について掘り下げていくことを示唆しています。

 

OpenStreetMap + Leafletでカスタムアイコンを使ってみる

/** Geminiが自動生成した概要 **/
OpenStreetMapとLeafletを使って地図上にカスタムアイコンを表示する方法を紹介しています。 シンプルなマーカー設置では、L.icon()でアイコンオブジェクトを作成し、L.marker()のオプションで指定します。 L.geoJSONを使う場合は、GeoJSONデータのpropertiesにiconオブジェクトを追加し、pointToLayerオプションで条件分岐することで、特定のマーカーのみカスタムアイコンに変更できます。 記事では、摂津峡のマーカーにnature.pngというカスタムアイコンを設定する例を示しています。

 

OpenStreetMap + Leafletで設置したマーカーにクリックのイベントを追加した

/** Geminiが自動生成した概要 **/
OpenStreetMapとLeafletを用いて地図上にマーカーを設置し、クリックイベントを追加する方法について解説しています。 まず、Leafletで地図上にマーカーを設置する基本的なコードを示し、クリックイベントを追加するために`L.geoJSON`を使用する方法を説明しています。`L.geoJSON`の第二引数に`onEachFeature`オプションを渡すことで、マーカーごとにクリックイベントを設定できます。 記事では、クリックイベント発生時に任意のURLへ遷移する例を挙げており、PCとスマホそれぞれでクリックとタップイベントに対応するコードを記述しています。

 

OpenStreetMap + Leafletを試してみた

/** Geminiが自動生成した概要 **/
この記事では、Google Maps JavaScript APIの代わりにOpenStreetMapとLeafletを使って地図を表示する方法を紹介しています。OpenStreetMapは無料で利用でき、Leafletは簡単に地図を表示できるJavaScriptライブラリです。 記事では、大阪府高槻市の摂津峡を例に、緯度経度を指定して地図を表示し、マーカーを設置する手順をコード付きで解説しています。結果として、少ないコードで簡単に地図上にマーカーを表示することができました。

 

PHPのオブジェクトの継承の負荷を見る

/** Geminiが自動生成した概要 **/
PHPでクラス継承時のメモリ使用量を検証した。継承の有無にかかわらず、インスタンス作成によるメモリ増加量は同じだった。VLDを用いて継承時のメソッドを確認すると、子クラスは親クラスのメソッドを保持し、オーバーライドも可能であることが分かった。つまり、インスタンス生成時はオブジェクトとプロパティ値のみを保持し、メソッドはクラス定義に基づいて解決される。継承はメソッドの探索順序に影響するが、インスタンスのメモリ使用量には直接影響しない。

 

PHPのzvalと変数の作成を見る

/** Geminiが自動生成した概要 **/
PHPの変数はzval構造体とzend_value共用体で表現される。zvalは型情報を持ち、zend_valueは実際の値を保持する。整数、文字列、配列など、型の違いはzend_valueの異なるメンバを使用することで実現される。変数名とzvalの関連付けはシンボルテーブルを介して行われる。`$a = 1`のような代入では、zvalが初期化され、zend_valueの`lval`に1がセットされ、シンボルテーブルに"a"というキーでzvalへのポインタが登録される。これにより、変数名から対応する値にアクセスできるようになる。

 

PHPでforeach文の抜け方を見る

/** Geminiが自動生成した概要 **/
PHPのforeach文でループ中にreturnで抜ける場合、メモリリークの懸念がある。VLDでforeachのオペコードを見ると、ループ終了時にFE_FREEで変数を解放している。しかし、ループ中のreturnでもFE_FREEが実行されるか検証した結果、return前にFE_FREEが挿入されていた。つまり、foreach中にreturnしてもメモリリークは発生せず、PHPが適切にメモリ管理を行っていることが確認できた。

 

PHPのVLDで無名関数を見る

/** Geminiが自動生成した概要 **/
PHPのVLDを使って無名関数のオペコードを確認した。無名関数は変数`$isEven`に格納され、if文で実行される。VLD出力では、通常の関数と異なり、function nameが`{closure}`と表示された。これはクロージャを示す。無名関数は関数自体を変数に格納し、後で実行できる。

 

PHPのVLDで関数を見る

/** Geminiが自動生成した概要 **/
PHP関数`isEven`のVLDによるオペコード解析結果を検証。`isEven(2)`呼び出しを含むコードでは、メイン部分と`isEven`関数のオペコードが別々に生成され、関数の定義位置に関わらず、実行時のオペコードでは呼び出し部分が先に現れる。定義位置による実行速度への影響は検証予定だが、計測方法未定のため保留。

 

PHPのVLDでforとforeachを比較する

/** Geminiが自動生成した概要 **/
OPcacheは、PHPスクリプトをコンパイルしたオペコードを共有メモリにキャッシュすることで、PHPのパフォーマンスを向上させる強力なツールです。スクリプトがリクエストされるたびにコンパイルする必要がなくなり、ファイルシステムへのアクセスが削減されます。OPcacheは、PHP 5.5.0以降でデフォルトで有効になっています。 `opcache.enable`ディレクティブで有効化し、`opcache.revalidate_freq` でキャッシュの有効期限を設定します。`opcache_reset()`関数でキャッシュを手動でクリアすることも可能です。OPcacheは、Webサーバーのパフォーマンスを大幅に向上させるため、PHPアプリケーションには必須のツールです。

 

PHPのVLDでfor文を見る2

/** Geminiが自動生成した概要 **/
PHPのfor文で、条件式に`count($arr)`を直接記述するパフォーマンスへの影響を検証。VLDでオペコードを確認すると、ループごとに`count`が実行されていることが判明。しかし、`$cnt = count($arr)`として変数に代入してからループ条件に用いるコードと実行時間を比較した結果、有意な差は見られなかった。ループごとに`count`が実行されるのは非効率と考えられるが、`count`関数自体の実行コストは低い、またはPHPの最適化によって`count`の実行回数が減っている可能性がある。

 

PHPのVLDでfor文を見る

/** Geminiが自動生成した概要 **/
PHPの`for`ループでインクリメント演算子`$i++`と`++$i`の速度差を検証。`++$i`の方が高速で、1億回のループで処理時間が約3/5に短縮された。VLDでオペコードを比較すると、`$i++`では`POST_INC`と`FREE`の2つのオペコードが使われるのに対し、`++$i`では`PRE_INC`のみ。`$i++`は値を一時的に保存するためメモリ確保と解放が必要になり、`++$i`は直接インクリメントするためオーバーヘッドが少ない。結果として`++$i`の方が高速になる。`for`ループでは`++$i`の使用が推奨される。

 

VLDでPHPのオペコードを確認する

/** Geminiが自動生成した概要 **/
PHPの深層理解のため、オペコードを確認する方法を解説。VLD(Vulcan Logic Dumper)を用いて、PHPコードを中間コードに変換する様子を観察できる。Ubuntu 20.04、PHP 7.4.6環境で、vldをgit clone、phpize、configure、make、installし、php.iniにvld.soを追加。`php -d vld.active=1 -d vld.execute=0 /path/to/dir/a.php`で"Hello World"のオペコードを確認できる。これによりPHP内部の仕組みを理解する第一歩となる。

 

【SEO対策】キャッシュの利用でデータ転送量を削減

/** Geminiが自動生成した概要 **/
SEO対策として、データ転送量削減のためブラウザキャッシュを活用する方法を解説。HTML以外のファイルは一度取得すれば再取得不要なため、ApacheのExpiresモジュールでブラウザにキャッシュさせる。Ubuntu環境でApache2.4を前提に、a2enmod expiresコマンドでモジュールを有効化し、.htaccessにファイルタイプごとにキャッシュ期間を設定する記述を追加すれば完了。HTMLは即時、CSS/JavaScriptは10日間、画像は15日間キャッシュされるようになる。

 

SOY CMSでドメインが異なる複数のサイトを運営する

/** Geminiが自動生成した概要 **/
SOY CMSで異なるドメインの複数サイト(example.kyoto, other.example.kyoto)をさくらVPS上の単一サーバーで運用する手順を記述。Let's Encryptでワイルドカード証明書(*.example.kyoto)を取得し、既存証明書を削除後、お名前.comのDNS設定でTXTレコードを追加。SOY CMSでサイト毎にURLを設定し、Apacheのドキュメントルートにindex.phpと.htaccessを設置、ドメインに応じてサイトを切り替えるよう設定。ワイルドカード証明書の更新は、お名前.comでは自動化できないため手動、またはさくらのクラウドDNSへの移管が必要。

 

Ubuntu19.10でSelenium + php-webdriverが動作しなかった時の対処

/** Geminiが自動生成した概要 **/
Ubuntu 19.10でSelenium + php-webdriverを用いたUIテスト自動化環境構築中に、「拡張機能の読み込みエラー」と「Chrome failed to start: exited abnormally」が発生。chromedriverのパスが意図せず`/usr/local/bin`に存在していたのが原因。`/usr/bin`に移動後、テストは正常に開始された。

 

環境に優しい土壌消毒のダゾメット

/** Geminiが自動生成した概要 **/
土壌消毒剤ダゾメットは、土壌中で分解されメチルイソチオシアネート(MITC)を生成することで殺菌・殺虫作用を発揮する。MITCは生物の必須酵素の合成阻害や機能停止を引き起こす。ダゾメットはクロルピクリンに比べ使用頻度が高い。MITCはアブラナ科植物が害虫防御に生成するイソチオシアネート(ITC)の一種であり、ジャスモン酸施用で合成が促進される。ITCの殺虫作用に着目すると、緑肥カラシナを鋤き込むことでダゾメット同様の効果が期待できる可能性がある。これは、カラシナの葉に含まれる揮発性のITCが土壌に充満するためである。土壌還元消毒は、米ぬかなどを土壌に混ぜ込み、シートで覆うことで嫌気状態を作り、有害微生物を抑制する方法である。この方法は、土壌の物理性改善にも効果があり、環境負荷も低い。

 

土壌消毒について見直す時期ではないだろうか?

/** Geminiが自動生成した概要 **/
土壌消毒を見直すべき時期が来ている。深く耕すと病原菌が浮上する懸念があるが、土壌消毒剤は深部に届かない可能性がある。糖蜜やエタノールを用いた土壌還元消毒は深部の病原菌を減少させる効果がある。これは米ぬかによる土壌還元消毒と同じ原理で、嫌気環境下で有機物が分解される際に土壌の酸化還元電位が変化し、過酸化水素や二価鉄が生成され、ヒドロキシラジカルによる強力な滅菌作用が生じるためと考えられる。土壌改良材、米ぬか/糖蜜、酸素供給材を組み合わせ、マルチで覆うことで、病原菌の生育環境を改善できる可能性がある。連作を避け、ソルガムなどの緑肥を栽培すれば更に効果的。米ぬかは菌根菌増殖や食害軽減にも繋がる。

 

耕土の深い層に潜伏した病原菌

/** Geminiが自動生成した概要 **/
土壌の深層に潜む病原菌、特に青枯病菌や軟腐病菌は、嫌気性のため酸素が少ない環境で生存できる。深く耕すとこれらの菌が表層に上がるが、それが活発化につながるかは不明。土壌消毒剤は深層の青枯病菌には効果がないという報告もあり、深層の病原菌が感染に影響するなら、薬剤消毒は無意味となる可能性も示唆されている。

 

ポリフェノールとは何か?フラボノイド類

/** Geminiが自動生成した概要 **/
このブログ記事は、健康的な野菜の品質と光合成が密接に関わることを前置きに、ポリフェノールについて深掘りします。 ポリフェノールは「分子内に2個以上のフェノール性水酸基を持つ天然有機化合物の総称」と定義され、フラボノイド類などが代表的です。特に一般的なフラボノイドには、ダイズのイソフラボンやイチゴのアントシアニンが挙げられ、これらは根粒菌の活性化や光合成障害の緩和に貢献します。 記事は、これらのポリフェノールが光合成由来の糖を元に合成されることを示し、最終的に健康的な野菜の品質は、改めて光合成の質が鍵であることを強調しています。

 

さくらのVPSにUbuntu18.04を入れてSOY CMSを動かした時のメモ

/** Geminiが自動生成した概要 **/
SOY CMSでMySQL 8系に接続できない場合、認証方式の違いが原因です。MySQL 8系は`caching_sha2_password`がデフォルトですが、SOY CMSは`mysql_native_password`で接続します。解決策は、MySQLの設定ファイル`mysqld.cnf`の`[mysqld]`セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動します。新規インストール時はインストール時に`mysql_native_password`を指定できます。既存ユーザの場合は、MySQLにログインし`ALTER USER 'ユーザ名'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';`を実行し、`FLUSH PRIVILEGES;`で変更を適用します。

 

Go言語でSearch Consoleの値を取得してみる

/** Geminiが自動生成した概要 **/
Go言語でGoogle Search Console APIから検索クエリデータを取得する方法を解説しています。必要な手順として、Google Cloud ConsoleでSearch Console APIを有効化し、認証情報を作成、Search Console側でユーザー権限を設定します。Goのコードでは、`golang.org/x/oauth2`、`google.golang.org/api/webmasters/v3`ライブラリを使用し、認証情報`secret.json`を用いてSearch Console APIにクエリを送信、過去7日間の検索クエリデータを取得・表示します。

 

チャットワークとGoogle Apps Scriptで音声入力で投稿してみる

/** Geminiが自動生成した概要 **/
Googleドキュメントの音声入力とGoogle Apps Scriptを連携させ、チャットワークへの投稿を音声で行う方法を紹介。 「チャットワーク(投稿内容)終了」と話しかけると、内容がチャットワークに送信されるスクリプトを作成。1分毎にスクリプトが実行され、ドキュメントの内容をチェック、投稿後ドキュメントはクリアされる。APIトークン、ルームIDの設定が必要。音声入力はドキュメントのツールから利用可能。Androidスマホでは音声入力の設定を事前に確認する必要がある。この方法で、両手が塞がっている状況でもチャットワークに投稿可能。実用時はタスク登録ルールやToの指定が推奨される。

 

php-webdriverでiframe内のリダイレクトに対応する

/** Geminiが自動生成した概要 **/
PHPのWebDriverを使って、SOY CMSのiframe内リダイレクトを含む操作を自動化する際、リダイレクト後に要素が見つからないエラーが発生した。iframe内でリダイレクトが発生する度にsleepを挟むことで解決。Seleniumはiframe内のリダイレクトを即座に認識できないため、sleepで待機時間を設ける必要がある。TinyMCE操作時と同様に、iframe操作ではリダイレクトの有無に関わらずsleepを挟むのが安定動作の鍵となる。

 

php-webdriverでTinyMCEに値を挿入する

/** Geminiが自動生成した概要 **/
php-webdriverを使用して、TinyMCEエディタに値を入力するには、iframeに切り替えてから入力し、その後親フレームに戻す必要があります。値を取得するには、再度iframeに切り替えてからテキストを取得し、親フレームに戻します。具体的には、`driver->switchTo()->frame()`と`driver->switchTo()->defaultContent()`を使用します。

 

プラグイン毎の詳細画面へのリンクの拡張ポイントsoyshop.info.php

/** Geminiが自動生成した概要 **/
soyshop.admin.top.php拡張ポイントは、SOY Shop管理画面の新着情報欄にカスタム項目を追加できます。`getLink()`メソッドでリンクURL、`getTitle()`でタイトル、`getContent()`で本文、`getIcon()`でアイコンURLを返却することで項目が生成されます。`getLink()`では`SOY2PageController::createLink()`を使うことで環境に依存しないURLを作成可能です。例えば、特定の注文一覧ページへのリンクを追加する場合、`getLink()`で`SOY2PageController::createLink("Order.List?search[order_status]=5")`のように指定することで、注文ステータスが「発送済み」の注文一覧ページへのリンクを生成できます。

 

PHPExcelを使ってみた2 ファイルアップロード編

/** Geminiが自動生成した概要 **/
PHPExcelライブラリを用いたExcelファイル読み込み処理にファイルアップロード機能を追加。$_FILESを利用し、アップロードされたExcelファイル(xls/xlsx)を動的に読み込むよう改修。 フォーム経由でファイルを選択・アップロードすると、セル内の値が表示される。主な変更点は、ファイルアップロードをトリガーとする条件分岐の追加、ファイルパスと拡張子の取得方法の変更、HTMLフォームの追加。これにより、任意のExcelファイルの内容を表示できるようになった。

 

PHPExcelを使ってみた

/** Geminiが自動生成した概要 **/
PHPExcelライブラリを使ってExcelファイルからデータ抽出する方法を紹介。Ubuntu 17.04、PHP 7.1.5環境で、php7.1-xml、php7.1-gd、php7.1-zipをインストール後、PHPExcelをダウンロード。サンプルxlsファイルからデータを読み込むPHPコードを掲載し、セル番号と値を出力する例を示している。コードは拡張子による読み込み方法の切り替え、複数シートへの対応、行とセルのイテレータによる値の取得を実装。出力結果の画像も掲載。

 

メモリーの監視

/** Geminiが自動生成した概要 **/
本ブログ記事は、Webサービス監視ツールMuninのメモリグラフ項目を理解するため、「詳解 システム・パフォーマンス」を参考に作成された学習メモです。freeコマンドの出力も踏まえ、apps(使用メモリ)、page_tables(OSとCPUが使うメモリ単位のアドレスマッピング)、slab_cache(カーネルキャッシュ)といった主要項目を詳細に解説。さらに、CPU高速化のためのキャッシュや一時データ用のバッファの概念、active/inactiveメモリの役割も説明しています。最終的に、現在のサーバーメモリはオーバースペックであると結論付けています。

 

ブラウザのキャッシュの設定

/** Geminiが自動生成した概要 **/
SOY CMSのキャッシュモードを利用することで表示速度を大幅に向上させることができます。キャッシュモードには、「出力キャッシュ」「ブロックキャッシュ」「データキャッシュ」の3種類があります。出力キャッシュはページ全体をキャッシュし、ブロックキャッシュはページの一部のブロックをキャッシュ、データキャッシュはデータベースへのアクセス結果をキャッシュします。それぞれのキャッシュモードは管理画面から簡単に設定でき、サイトのアクセス状況や更新頻度に合わせて最適な設定を選択することで、サーバー負荷を軽減し、表示速度を向上させることができます。特に、頻繁に更新されない静的なページやアクセス数の多いページでは、出力キャッシュが効果的です。キャッシュのクリアも管理画面から簡単に行えます。

 

SOY CMSのブロックで記事のランダム表示

/** Geminiが自動生成した概要 **/
SOY CMSのブロックで記事をランダム表示するスクリプトモジュールブロックのコードが紹介されています。指定したラベルの記事をランダムに並び替え、指定件数分出力します。 `/site(サイトID)/script/soycms_random.php` にPHPコードを記述し、テンプレートで `cms:label` にラベルID、`cms:count` に取得件数を指定することで利用できます。コードはフォーラムにもアップロードされています。記事の取得件数を指定しない場合は、該当ラベルのすべての記事を取得しランダムに表示します。

 

さくらのVPSでSOY CMSを動かした時のメモ

/** Geminiが自動生成した概要 **/
Apacheサーバのバージョン表示はセキュリティリスクとなるため、非表示にすることが推奨されています。本記事では、Apacheの設定ファイル`httpd.conf`または`apache2.conf`を編集することで、バージョン情報を隠す方法を解説しています。具体的には、`ServerTokens`ディレクティブを`Prod`に設定することで、公開されるサーバ情報を最小限に抑えられます。また、`ServerSignature`ディレクティブを`Off`にすることで、エラーページなどからサーバのバージョン情報が削除されます。これらの設定変更後、Apacheを再起動することで変更が反映されます。さらに、セキュリティ対策としてmod_securityなどのセキュリティモジュール導入も推奨しています。

 

SOY Shopでログインしているお客様へポイントの使用期限を表示する

/** Geminiが自動生成した概要 **/
SOY Shopでログイン中のお客様にポイント残高と使用期限を表示するモジュール作成方法を紹介。モジュールID「parts.point_limit」を作成し、提供されたPHPコードを記述することで実現。コードは、ログイン状態、ポイントプラグインの有効性を確認後、ユーザー情報を取得し、ポイント残高と使用期限を表示。期限切れや無期限の場合の表示も追加可能。コードにはコメントが添えられており、カスタマイズのヒントも提供。ポイントはログインユーザーのみに表示され、未ログイン時は何も表示されない。より詳細なカスタマイズや機能要望は問い合わせフォームから。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ