ブログ内検索

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

ギ酸は還元剤?

/** Geminiが自動生成した概要 **/
本ブログ記事は、ギ酸の化学的特性、特に還元作用とキレート作用に焦点を当てて解説しています。ギ酸は構造が最小のカルボン酸であり、その中にアルデヒド基(ホルミル基)を含むため、還元性を持つことが特徴です。 一方で、キレート剤として働くには複数の配位子が必要ですが、ギ酸はカルボキシ基が一つしかないため、キレート作用はありません。また、ギ酸はカルボン酸の中で最も強い酸の一つであり、溶液のpHを下げる効果があります。これらの特性から、ギ酸が液肥の材料として広く利用されている背景を説明しています。

 

含硫香気物質のアリインが香るまで

/** Geminiが自動生成した概要 **/
ニンニク特有の香りの秘密を解き明かす本記事では、無臭の「アリイン」がいかにして香りを放つか、その化学反応を解説します。ニンニクが傷つくと、アリナーゼ酵素の働きでアリインは「アリルスルフェン酸」に変化。さらにこのアリルスルフェン酸が2分子結合することで、私たちがお馴染みの香り成分「アリシン」が生成されます。アリシンこそがニンニクの香りの正体であり、本記事ではこの魅惑的な香りのメカニズムをわかりやすく紐解いています。

 

含硫香気物質のアリインの合成

/** Geminiが自動生成した概要 **/
ニンニク特有の香りの源となる含硫香気物質「アリイン」の合成プロセスを解説します。アリイン自体は香りを持たず、ニンニクが損傷した際に別の物質に変化することで香りが発現します。本記事では、千葉大学の研究を参考に、この重要なアリインがどのように合成されるのかを深掘り。グルタチオンを出発物質として、アリル化、アミノ酸脱離を経てS-アリルシステインとなり、最終的に硫黄がスルホキシド化されることでアリインが合成される化学経路を詳細に紐解きます。

 

含硫香気物質について

/** Geminiが自動生成した概要 **/
ブログ記事は、酵素によって生成されるフレーバーの一つである「含硫香気物質」に焦点を当て、特にニンニクに含まれるこの物質について解説しています。ニンニク特有の香りの元となる主要な含硫香気物質として「ジアリルジスルフィド(二硫化アリル)」を紹介。その化学構造(ジスルフィド結合とアリル基)に触れた上で、興味深い生成メカニズムを解説しています。ニンニクの細胞内では「アリイン」として貯蔵されており、細胞が損傷する(例:切る、潰す)ことで初めてジアリルジスルフィドに変化し、あの独特の香りが生まれる過程が説明されています。

 

SOY CMS/Shopでエックスサーバでの突然のエラーに対応しました

/** Geminiが自動生成した概要 **/
SOY CMS/Shopユーザーがエックスサーバーで突然遭遇した管理画面のエラーについて、その原因と対応策を解説した記事の要約です。 SOY CMSの管理画面で発生したセッション関連のエラーは、SSH調査の結果、ルート直下の全PHPファイルに「._」プレフィックスが付いたコピーが生成され、SOY CMSがこれを誤って読み込んだことが原因と判明しました。筆者は、この誤読を防ぐための改修を施し、対応版をダウンロード可能なURLにて公開しています。ただし、今回の改修が完全な対策であるかは不明であり、再発の可能性も示唆されています。

 

鶏糞がメタン発酵に向いていないとされた理由は何か?の続き

/** Geminiが自動生成した概要 **/
鶏糞のメタン発酵が難しいのはC/N比の低さが理由とされていますが、その詳細を解説します。鶏糞に多く含まれる尿酸が窒素を豊富に含み、これがC/N比を低下させます。尿酸は微生物の働きで尿素に分解され、さらに尿素が分解されると水酸化物イオンが生成され、pHが上昇します。この高いpH環境がメタン生成菌の活動を阻害するため、鶏糞を用いたメタン発酵は困難となるのです。

 

鶏糞がメタン発酵に向いていないとされた理由は何か?

/** Geminiが自動生成した概要 **/
鶏糞のメメタン発酵は、かつて困難とされてきましたが、その背景には鶏の生理的な特徴がありました。牛糞と異なり、鶏の小便は尿酸(固体)として糞中に多く含まれます。この尿酸は有機態窒素であり、糞中のC/N比を低下させるだけでなく、分解過程で大量のアンモニアを発生させます。生成されたアンモニアは、メタン発酵に関わる微生物の活動を強く阻害するため、鶏糞から効率良くメタンを生成するには、このアンモニアの発生をいかに抑制・除去するかが重要な課題となっています。

 

SOY CMSの記事で作成日と更新日が異なる時に更新日を出力できる仕組みを設けました

/** Geminiが自動生成した概要 **/
SOY CMSで、記事の更新日と作成日が異なる場合に更新日を出力する機能を追加しました。SEO対策として更新日の表示が推奨される一方、作成日も残したいというニーズに応え、`cms:id="is_updated"`タグを実装。作成日と更新日が同じ場合は作成日のみ、異なる場合は両方を表示します。構造化データプラグインとの併用も想定。詳細・ダウンロードは[https://saitodev.co/soycms/](https://saitodev.co/soycms/) にて。

 

自然環境下でアフラトキシンは無毒化されるか?

/** Geminiが自動生成した概要 **/
アフラトキシンは自然環境下で無毒化される可能性があり、Geminiによると酸化反応(過酸化水素による分解)と生物学的分解(特定の細菌や真菌による分解)が考えられる。特に、微生物が産生するラッカーゼやペルオキシダーゼなどの酵素がアフラトキシンを分解する可能性がある。白色腐朽菌と過酸化水素の関係から、味噌や醤油の発酵過程で過酸化水素が発生し、アフラトキシンが無毒化されるのかが疑問点として挙げられている。

 

コウジカビのマイコトキシン

/** Geminiが自動生成した概要 **/
コウジカビ(オリゼー)は、毒素を出すフラバスを家畜化したもの。フラバスはアフラトキシンという有害なカビ毒を作る。オリゼーをどうやって得たのか? 元々フラバスで味噌を作っていたのか、自然界にオリゼーがいたのか? もし発酵過程でアフラトキシンが無毒化されるなら、その反応を知りたい。

 

カビ臭のゲオスミン

/** Geminiが自動生成した概要 **/
フザリウム属の糸状菌を培養すると独特の臭いがあるという話を聞き、カビ臭について調査。ゲオスミンという降雨後の地面の匂いを持つ化合物が見つかった。しかし、フザリウムがゲオスミンを合成するかは不明。フザリウムが合成する臭気は別のものと考えられる。

 

チョコレートの香り再び5

/** Geminiが自動生成した概要 **/
チョコレートの香気成分は、メラノイジン、ケトン類、フラン類、エステル類に加え、テルペン類も含まれる。テルペン類の例として、ファルネソールという大きな構造の化合物がある。揮発性にはメチル基の多さが関与していると考えられる。テルペンはイソプレン単位が複数結合した炭化水素で、植物の精油成分によく見られる。イソプレンは特定の構造を持つ炭化水素である。今回の調査では詳細は不明だが、チョコレートの香りにテルペン類が関与していることを覚えておこう。

 

腐植酸の形成をもっと細かく理解したい3

/** Geminiが自動生成した概要 **/
窒素を含む化合物は、非共有電子対を持つため求核剤となる。アミノ酸の中で特にヒスチジンは、イミダゾリル基に二つの窒素を持つ。イミダゾール環の1位と3位の窒素共に非共有電子対を持つが、3位の窒素の非共有電子対が環の外側を向いているため、求核付加反応への関与がより重要となる。

 

キノンはケトンの特徴を持つと捉えると見えるものが増えるはず

/** Geminiが自動生成した概要 **/
キノンを理解するために「キノンはケトン」と捉えるアプローチが紹介されている。ケトンはカルボニル基(-C=O)を持つ化合物で、ホルムアルデヒドやアセトンが代表例。キノンの構造式を見ると、カルボニル基が二つ重なって見えるため、ケトンと類似していると言える。この視点により、キノンへの理解が深まり、腐植の理解にも繋がる。今後はカルボニル基の理解を深めることが重要となる。

 

落葉とアブシジン酸

/** Geminiが自動生成した概要 **/
この記事では、落葉に関連して葉の脱色とアブシジン酸の関係について考察しています。葉緑素は分解されマグネシウムが回収されますが、カロテノイドの行方が疑問として提示されています。 そこで、植物ホルモンであるアブシジン酸が登場します。アブシジン酸は休眠や成長抑制に関与し、葉の脱色にも関係しています。そして、アブシジン酸はカロテノイドの一種であるビオラキサンチンを前駆体として合成されます。 記事は、脱色中の葉でビオラキサンチンからアブシジン酸が合成される可能性を示唆し、更なる考察へと続きます。

 

橙色に色付いた木に緑色が結構残っている

/** Geminiが自動生成した概要 **/
トマト栽培において、「木をいじめる」技術は、植物ホルモンのアブシジン酸(ABA)の働きを利用し、意図的にストレスを与えることで収量や品質を向上させる方法です。具体的には、水やり制限や根切りなどが挙げられます。 水やりを制限すると、トマトは乾燥ストレスを感じ、ABAを分泌します。ABAは気孔を閉じさせて水分の蒸散を防ぐとともに、果実への糖分の転流を促進し、甘くて風味の濃いトマトになります。 根切りも同様の効果をもたらします。根を切ることで、トマトは危機感を覚え、ABAを分泌することで子孫を残そうとします。結果として、果実の肥大や糖度上昇などが期待できます。

 

胆汁酸と炎症性腸疾患

/** Geminiが自動生成した概要 **/
広島大学大学院統合生命科学研究科の加藤範久教授らの研究グループは、緑茶に含まれるポリフェノールの一種であるカテキンが、大腸がんの危険因子である二次胆汁酸(リトコール酸など)を減少させることを発見しました。腸内細菌によって産生される二次胆汁酸は、大腸がんのリスクを高めるとされています。本研究では、カテキンが腸内細菌叢の構成を変化させ、二次胆汁酸の産生を抑制することを明らかにしました。この発見は、カテキン摂取による大腸がん予防の可能性を示唆するものです。

 

窒素肥料の複雑さの続き

/** Geminiが自動生成した概要 **/
窒素肥料として有効な有機態窒素の一種である核酸は、発根促進効果も期待できる。イノシン酸を出発点に、イノシン、ヒポキサンチン、キサンチン、尿酸と分解が進み、最終的にアンモニア態窒素肥料である尿素に至る。この過程を通じて、発根を促しつつ、遅効性の窒素供給源としても機能する。土壌微生物の働きにより分解が進むため、肥効は緩やかで持続的である。

 

Selenium + php-webdriverでWebDriverCurlExceptionのエラーにハマった時の対処

/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverのバージョンアップ後にWebDriverCurlExceptionが発生した問題の解決策についての記事です。 ログイン・ログアウトを繰り返すテストコードで、三回目のログイン時にエラーが発生。調査の結果、セッションの破棄と再生成が必要であることが判明。php-webdriverのquitメソッドを用いてdriverを明示的にquitすることで解決しました。 記事では、エラー発生時の環境、テストコード、エラーメッセージ、解決策を詳細に記述しています。

 

サプリメントとしてのβ-アラニン

/** Geminiが自動生成した概要 **/
β-アラニンは、ヒスチジンと結びついてカルノシンを生成し、運動中の疲労を軽減する効果があります。特に、トレーニング不足の人は、体内の緩衝能が低いため、β-アラニン摂取による効果が期待できます。一方、慢性的な疲労感は脳が関与しているため、β-アラニン摂取の効果は限定的かもしれません。今回の報告書は、栄養に関する有益な情報源となるため、他の成分についても確認する価値があります。

 

動脈硬化の話題で見かけるLDLとは何だ?

/** Geminiが自動生成した概要 **/
LDLコレステロールは、肝臓で作られ末梢組織にコレステロールを運ぶ役割を持つため、過剰になると動脈硬化のリスクを高めます。しかし、LDLコレステロール自体が動脈硬化を引き起こすわけではありません。血管壁に蓄積したコレステロールが活性酸素によって酸化し、過酸化脂質に変化することで動脈硬化を引き起こします。そのため、抗酸化作用を持つカロテノイド、ポリフェノールなどを摂取することが重要です。お茶に含まれるカテキンも抗酸化作用があり、風邪予防だけでなく動脈硬化予防にも効果が期待できます。

 

巷でよく見聞きするプリン体とは何か?

/** Geminiが自動生成した概要 **/
巷で話題のプリン体とは、プリン骨格を持つ核酸塩基のことです。プリンは、ビールでよく耳にする痛風と関係が深く、体内で分解されると尿酸となります。 プリン体はグリシンから合成され、グルタミン、アスパラギン酸、ギ酸も材料となります。つまり、グリシン摂取=プリン体増加、というわけではありません。 プリン体は健康面で何かと話題に上がるため、もう少し詳しく見ていく必要がありそうです。

 

SOY CMSでAVIF変換プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS用のAVIF変換プラグインがリリースされました。このプラグインは、PHPのimageavif関数を利用し、ページ内のJPG/PNG画像をAVIF形式に変換、HTMLを書き換えます。AVIFは次世代の画像フォーマットで、高画質・低容量を実現します。プラグインはimageavif関数が使用可能なPHPバージョンで動作します。ダウンロードは公式サイトからどうぞ。なお、SOY Shopでは類似機能が「画像フォーマット変換プラグイン」に搭載済みです。

 

ゴボウには社会問題を解決する可能性を秘めていると信じている

/** Geminiが自動生成した概要 **/
ゴボウは連作障害を起こしやすいですが、その原因の一つに青枯病があります。青枯病は土壌細菌であるラルストニア・ソラナセアルムによって引き起こされ、ゴボウだけでなく、トマトやナスなどのナス科植物にも被害をもたらします。 この細菌への対策として、トウモロコシの分泌する抗菌物質DIMBOAが有効です。DIMBOAは青枯病菌の増殖を抑え、ゴボウへの感染を防ぐ効果があります。 しかし、DIMBOAは土壌中の微生物によって分解されやすく、効果が持続しない点が課題です。そのため、ゴボウの連作障害を克服するには、DIMBOAの効果的な利用方法や、他の対策との組み合わせが重要となります。

 

人が吸収しやすいリンとしてのリン酸塩

/** Geminiが自動生成した概要 **/
人間はフィチン酸以外のリンを摂取しています。食品添加物として使われるリン酸塩は、メタリン酸ナトリウムとリン酸二水素ナトリウムがあります。特にリン酸二水素ナトリウムは吸収しやすい形状で、多くの加工食品に含まれるpH調整剤に使われているため、リンの過剰摂取につながる可能性があります。リンの過剰摂取はカルシウム不足を引き起こす可能性があるため注意が必要です。

 

有機態リン酸ことフィチン酸の測定方法はあるのか?

/** Geminiが自動生成した概要 **/
土壌中の有機態リン酸であるフィチン酸は、過剰に蓄積すると植物の生育を阻害する可能性がある。しかし、既存の土壌分析では測定されていない。フィチン酸の測定は、食品分析の分野では吸光光度法やイオンクロマトグラフィーを用いて行われている。土壌中のフィチン酸測定には、アルミナ鉱物との結合を切る必要はあるものの、技術的には不可能ではない。にもかかわらず、土壌分析の項目に含まれていないのは、認識不足や需要の低さが原因と考えられる。

 

ラッカセイはAl型リン酸を利用できるか?

/** Geminiが自動生成した概要 **/
この記事では、土壌中で植物が利用しにくいリン酸アルミニウムを、ラッカセイがどのように利用しているのかについて解説しています。 ラッカセイは根からシュウ酸を分泌し、リン酸アルミニウムを溶解します。溶解したアルミニウムは、根の表面にある特定の部位と結合し、剥がれ落ちることで無毒化されます。 さらに、剥がれ落ちたアルミニウムと結合した細胞は土壌有機物となり、土壌環境の改善にも貢献する可能性が示唆されています。

 

炎光光度法でマグネシウムを測定しないのは何故か?

/** Geminiが自動生成した概要 **/
炎光光度法でマグネシウムを測定しない理由は、マグネシウムが発する光が人の目で見えない紫外線であるためです。マグネシウムの炎色反応の波長は285.2nmと、可視光線の範囲外です。一方、炎光光度法で測定されるカリウムは766.5nmと、可視光線の赤色の範囲に収まります。 マグネシウムは燃焼すると強い白色光を発しますが、これは燃焼力が強いためであり、炎色反応とは異なる現象です。マグネシウムは光合成において重要な葉緑素の中心に位置していますが、その発熱力との関連は明らかではありません。

 

エストロゲンとセロトニンの合成について

/** Geminiが自動生成した概要 **/
この記事は、エストロゲンとセロトニンの関係について解説しています。セロトニンは精神安定作用を持つ神経伝達物質で、その低下はうつ病と関連し、女性に多いとされています。エストロゲンはセロトニンの合成を促進する効果があり、更年期でエストロゲンが減少するとセロトニンも低下し、更年期障害の一因となると考えられています。著者は、大豆イソフラボンが脳内のエストロゲン受容体に作用し、セロトニン合成を促進する可能性を示唆しています。

 

SOY Inquiry2.3以降のバージョンにバージョンアップする際の注意点

/** Geminiが自動生成した概要 **/
SOY Inquiry 2.3以降にバージョンアップする際、カスタマイズしたフォームテンプレート(`form.php`と`confirm.php`)の修正が必要です。 具体的には、両ファイルの先頭に`$dummyFormObj = new SOYInquiry_Form();`を追加し、`$column->getColumn();`を`$column->getColumn($dummyFormObj);`に置換します。 これはPHPの厳格化に対応するための変更です。

 

Parsley.jsでバリデーションが効かずに画面が遷移してしまう件について

/** Geminiが自動生成した概要 **/
Parsley.jsを利用したサイトで、ラジオボタンにチェックを入れた際にバリデーションエラーが発生し、画面遷移してしまう問題が発生。 原因は、ラジオボタンのHTMLに data-parsley-mincheck 属性が使用されていたこと。この属性はチェックボックス用であり、ラジオボタンに用いるとエラーが発生する。 属性を削除したところ、意図した動作になった。

 

生分解性プラスチックのポリ乳酸とは何か?

/** Geminiが自動生成した概要 **/
## 記事「光合成の質を高める為に川からの恩恵を活用したい」の要約 この記事は、農業における水源として川の水がもたらす恩恵について解説しています。川の水には、植物の光合成に不可欠な二酸化炭素の吸収を助けるカルシウムイオンが含まれており、さらに土壌にカルシウムを供給することで、根の成長促進、病害抵抗性の向上、品質向上などの効果も期待できます。一方で、川の水には有機物が含まれており、過剰な有機物は水質悪化や病気の原因となるため、適切な管理が必要です。水質検査や専門家の意見を参考に、川の水の特性を理解し、適切に活用することが重要です。

 

AppImage形式のMinecraft: Pi Edition: Rebornでスキンを変更してみた

/** Geminiが自動生成した概要 **/
この記事は、AppImage形式になったMinecraft: Pi Edition: Rebornでスキンを変更する方法を解説しています。 まず、AppImageファイルを実行する準備として、`chmod`コマンドで実行権限を与え、`fuse`パッケージをインストールします。 スキンの変更は、`~/.minecraft-pi/overrides/images/mob/`ディレクトリに`char.png`という名前でスキンファイルを配置します。 ただし、このままだとスキンが崩れてしまうため、`minecraft_skin_fixer.py`というスクリプトを使って修正します。 最後に、AppImageファイルを`/usr/local/bin`に移動して`mcpi`というコマンド名で実行できるように設定しています。

 

Minecraft: Pi Edition: Rebornでmcpiライブラリを試す

/** Geminiが自動生成した概要 **/
記事では、プログラミング教育に最適な環境として、ARMアーキテクチャ、Debian系OS、Pythonの組み合わせを提唱しています。低価格なRaspberry Piを例に挙げ、その手軽さ、豊富なライブラリ、活発なコミュニティが教育現場にもたらすメリットを解説しています。従来の教育用PCよりも安価で汎用性が高く、電子工作などにも応用できる点が魅力的だと結論付けています。

 

ESP8266のUART

/** Geminiが自動生成した概要 **/
ESP8266のREPLは、シリアル接続を通じてMicroPythonと対話するためのコマンドラインインターフェースです。UART0がデフォルトで使用され、ボーレートは115200bpsです。REPLでは、コードの実行、変数の確認、関数の呼び出しなどが行えます。Ctrl-Aでプロンプトの先頭、Ctrl-Eで末尾に移動できます。Ctrl-Bで一文字戻り、Ctrl-Fで一文字進めます。Ctrl-DでREPLを終了し、プログラムの実行を再開します。REPLはMicroPythonの開発やデバッグに役立つ強力なツールです。

 

SOY CMSでWebP形式の画像ファイルのアップロードに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSがWebP画像形式のアップロードに対応しました。WebPはGoogleが開発した次世代画像フォーマットで、JPEGやPNGと比べてファイルサイズが小さく、画質を落とさずにWebサイトの表示速度を向上できます。現在では世界中の95%のブラウザでサポートされており、SOY CMSでもこのフォーマットに対応することで、より高速なWebサイト構築が可能になりました。最新版は公式サイトからダウンロードできます。

 

NodeMCUをWebサーバにしてみた

/** Geminiが自動生成した概要 **/
NodeMCU(ESP8266)をWebサーバにする実験。MicroPythonのサンプルコードを参考に、GPIOピンの状態をWebページに表示する仕組みを作成。NmapでNodeMCUのIPアドレスを特定しブラウザからアクセスした結果、GPIOピンの状態がリアルタイムに確認できた。HTTP通信の基礎を学ぶ良い機会となり、今後は外部からのリクエストに応じて処理を行う仕組みも試したい。

 

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

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

 

SOY ShopのSign In With Googleプラグインでボタンをカスタマイズする

/** Geminiが自動生成した概要 **/
SOY ShopのSign In With Googleプラグインのボタンカスタマイズ方法について解説。Googleが提供するジェネレータを使用し、クライアントID、Data Context、ID token nonce、Callback functionを設定。Nextボタンをクリック後、Enable Sign in with Google buttonをチェックし、ボタンデザインを設定後、Get codeボタンを押下。生成されたHTMLをプラグイン詳細画面に貼り付けて更新することでカスタマイズ完了。

 

SOY ShopのGoogle Sign-In for WebsitesプラグインをSign In With Googleに変更しました

/** Geminiが自動生成した概要 **/
SOY ShopのGoogleログインプラグインが、Google Sign-In for WebsitesからSign In With Googleにアップデートされました。変更に伴い、HTMLタグやスクリプトを修正する必要があります。 以前は`googleUser.getBasicProfile()`でユーザー情報が取得できていましたが、現在はJWTが返却されるため、Base64デコードが必要です。`parseJwt`関数でJWTをデコードし、`json.email`でメールアドレスを取得します。 詳細はプラグイン詳細画面とサイト(saitodev.co/soycms/soyshop/)を参照してください。

 

Google Maps APIのジオコーディングのコードをOpenStreetMapのNominatimで書き換えてみた

/** Geminiが自動生成した概要 **/
Google Maps APIのジオコーディングをOpenStreetMapのNominatimに書き換えた。エンドポイントとJSONレスポンスの差異に対応するだけで比較的容易に移行できた。NominatimはAPIキー不要で回数制限もない。しかし、Google Maps APIと比べて検索速度が遅く、曖昧な地名検索の精度や郵便番号検索の網羅性で劣る。Google Maps APIは検索速度と精度の面で優れているが、費用と回数制限が課題となる。Nominatimは無料だが、パフォーマンスに課題があるため、用途に応じて使い分ける必要がある。

 

トマト栽培で木をいじめるという技術を整理する

/** Geminiが自動生成した概要 **/
トマトの老化苗定植は微量要素欠乏のリスクを高める。老化苗は根の活性が低く、土壌からの微量要素吸収が不十分になりやすい。特に亜鉛欠乏は深刻で、葉の黄化や生育不良を引き起こす。さらに、亜鉛は植物ホルモンのオーキシン生成に関与し、不足すると花や果実の形成にも悪影響が出る。結果として、収量低下や品質劣化につながるため、老化苗定植時には微量要素、特に亜鉛の適切な補充が必須となる。葉面散布は即効性が高く効果的である。

 

ChromebookでPythonのmatplotlibを試してみた

/** Geminiが自動生成した概要 **/
ChromebookでPythonの数学ライブラリNumPyと可視化ライブラリmatplotlibの動作検証を行いました。ASUS Chromebook Detachable CM3で、Linux環境を利用し、`sudo apt install`コマンドで必要なパッケージをインストールしました。TkinterのGUI表示、及び以前作成したmatplotlibを使ったコードの実行に成功。Windows10のWSL2環境ではGUI表示ができなかった一方で、Chromebookでは問題なく動作しました。今後はデータサイエンス向けプラットフォームAnacondaのChromebookでの動作検証も検討しています。

 

ARM版ChromebookにDropboxをインストールする

/** Geminiが自動生成した概要 **/
ARM版ChromebookでLinuxアプリのDropboxを使うには、.debパッケージが使えないためDbxfsを利用する。pip3でDbxfsをインストール後、Dropboxフォルダを作成し、dbxfsコマンドを実行。表示されるURLにアクセスし、Dropboxにログインして認証コードを取得、端末に入力する。パスフレーズを設定すれば、Linuxファイル配下でDropboxのファイルが操作可能になる。Android版DropboxはChromebookのFilesのLinux共有に対応していないため、この方法が必要。

 

SOY ShopのB2CSVプラグインの送り状種類の項目で送料で分ける方法

/** Geminiが自動生成した概要 **/
SOY ShopのB2CSVプラグインで、送料ごとに送り状種類を自動で変更する隠し機能が追加されました。送料800円なら発払い(0)、200円ならネコポス(7)のように設定可能です。`/soyshop/webapp/src/module/plugins/b2_order_csv/form/B2ExportFormPage.html`を`_B2ExportFormPage.html`にリネームし、`<input type="hidden" name="Pattern[金額]" value="送り状種類">`をHTMLに追加することでカスタマイズできます。金額と送り状種類の対応を複数指定可能です。最新版のSOY Shopへのアップデート推奨。

 

Chromebookはプログラミングの教育の端末として向いているか?を調査する

/** Geminiが自動生成した概要 **/
ChromebookのLinuxアプリで日本語入力ができない問題を解決する方法を解説した記事の要約です。 ChromebookのLinux環境では標準で日本語入力ができません。この記事では、fcitx-mozcをインストールすることで日本語入力できるようにする方法を、スクリーンショット付きで丁寧に説明しています。 まず、Linuxターミナルを開き、必要なパッケージをインストールします。次に、設定ファイルを作成・編集し、fcitxを起動するように設定します。最後に、Chromebookを再起動し、入力メソッドの設定で日本語(Mozc)を選択すれば、日本語入力が可能になります。記事では、詳細なコマンドや設定内容、トラブルシューティングについても触れています。

 

SOY CMSとSOY ShopにAceコードエディタを設置しました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY ShopにJavaScript製のコードエディタ「Ace」が導入されました。導入箇所は両CMSのテンプレート、HTMLモジュール、PHPモジュールの編集画面です。以前の色付きエディタはブラウザの進化への対応と動作の不安定さを理由に廃止されましたが、block:idタグの視認性向上のため、Aceが採用されました。現在はHTML/PHPモードのみですが、今後便利な機能の有効化を検討中です。最新版はsaitodev.co/soycms/からダウンロード可能です。

 

php-webdriverでAceのコードエディタに文字を入力する

/** Geminiが自動生成した概要 **/
`executeScript`は、ChromeDriverでJavaScriptを実行するメソッドです。第一引数に実行するスクリプト、第二引数にオプションの引数配列を取ります。このメソッドは、ブラウザコンテキストでJavaScriptを実行し、その結果を返します。Aceエディタへの入力は、エディタオブジェクトの`setValue`メソッドをJavaScript経由で呼び出すことで実現できます。上記例では、`$script`に`setValue`呼び出しを定義し、`$html`をエディタに設定しています。`executeScript`の第二引数配列は、`$script`内の`arguments`オブジェクトにマッピングされます。これにより、PHPからJavaScript関数をパラメータ付きで実行できます。

 

クロスサイトリクエストフォージェリを回避する方法を探る

/** Geminiが自動生成した概要 **/
記事では、SOY2HTMLでセキュアなフォームを作成する方法を解説しています。具体的には、CSRF対策としてトークンを埋め込んだフォームを生成するHTMLFormクラスの使い方を紹介しています。 buildHiddenToken()でトークンを生成し、isValidToken()で検証することで、悪意のある外部サイトからのリクエストを無効化できます。また、トークンの有効期限を設定することでセキュリティを強化できます。記事では、具体的なコード例を交えながら、これらの機能の使い方を分かりやすく説明しています。 さらに、HTMLFormクラス以外の方法として、独自にトークンを生成・検証する方法についても触れています。

 

SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみる

/** Geminiが自動生成した概要 **/
この記事では、PHPにおけるSQLインジェクション対策としてプリペアードステートメントの有効性を検証しています。まず、脆弱なコード例を示し、攻撃者がSQL文を操作して意図しないデータを取得できることを実演。次に、プリペアードステートメントを用いた修正版を紹介し、SQL文と入力データを分離することで攻撃を防ぐ仕組みを解説しています。具体的には、プレースホルダを用いてSQL文を準備し、executeメソッドでパラメータをバインドすることで、入力データがSQL文として解釈されることを防いでいます。結果、同じ攻撃を試みてもデータが取得できず、プリペアードステートメントの有効性が確認されました。関連記事として、SOY2DAOでのプリペアードステートメントの利用方法も紹介されています。

 

クロスサイトスクリプティングを回避する方法を探る

/** Geminiが自動生成した概要 **/
SOY2では、XSS対策としてhtmlspecialcharsを簡便に利用できるHTMLLabelを提供している。記事では、HTMLLabelの基本的な使い方と、soy:idを用いた動的な値の表示方法を解説。HTMLLabelはHTMLタグを自動的にエスケープし、安全に値を表示。例として、ブログ記事のタイトルを表示するコードを紹介し、HTMLLabelを用いることで、タイトルに含まれるHTMLタグがエスケープされ、XSS脆弱性を防ぐ様子を示している。また、HTMLLabelの子要素としてHTMLタグを記述することで、特定のタグを許可することも可能。記事は、HTMLLabelがSOY2でのXSS対策に効果的であることを示唆。

 

mRNAワクチンの技術の凄さに感動した

/** Geminiが自動生成した概要 **/
ブログ記事は、mRNAワクチンの画期的な技術を解説しています。従来のワクチンが病原体を弱毒化するのに膨大な時間を要したのに対し、mRNAワクチンはウィルスの「重篤化情報」を切り取り、「感染する情報」のみを投与することで、細胞に抗体産生を促します。 この迅速な開発を可能にした鍵は、壊れやすいRNAを細胞内へ安全に運搬する「脂質ナノ粒子(LNP)」技術の急速な進展にあります。LNP技術の発展は、将来のパンデミック発生時におけるワクチン開発の劇的な加速に加え、RNAiなど他の核酸医薬の応用も広げると筆者は感動を伝えています。また、ワクチン効果を最大限に引き出すには、適切な食生活による免疫力向上も不可欠だと提言しています。

 

SOY CMSの管理画面のHTMLファイルの探し方

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面UIをカスタマイズするには、該当HTMLファイルを見つける必要があります。例としてページテンプレート編集画面(URL例: `http://example.com/cms/soycms/index.php/Page/Detail/3`)を挙げます。 HTMLファイルは`cms/soycms/webapp/pages`ディレクトリ以下に配置されています。URLの`Page/Detail`部分がディレクトリとファイル名に対応します。まず`pages`ディレクトリ内の`Page`ディレクトリを探します。次に`Detail`ディレクトリを探しますが、存在しない場合は`DetailPage.html`が目的のファイルです。通常、`DetailPage.class.php`というPHPファイルも対で存在します。これらはSOY2HTMLの仕組みを利用しており、より深く理解するには関連の記事を参照ください。

 

PHPの関数の登録

/** Geminiが自動生成した概要 **/
PHPの関数登録について`get_defined_functions`関数を用いて調査。ユーザー定義関数は'user'配列に、ビルトイン関数は'internal'配列に格納される。関数の定義箇所に関わらず、実行前に`get_defined_functions`を実行すると、定義済みの全関数が取得できる。これはPHPがマルチパス方式を採用し、実行前にファイル全体を読み込んで関数登録を完了させているためと考えられる。

 

SOY InquiryでRCE(Remote Code Execution)の脆弱性に対応しました

/** Geminiが自動生成した概要 **/
SOY Inquiry 2.0.0.3以前のバージョンにリモートコード実行(RCE)の脆弱性が見つかりました。これは非常に危険な脆弱性であり、全ての旧バージョンが影響を受けます。早急に最新版へアップデートしてください。対応版は下記URLからダウンロード可能です。 https://saitodev.co/soycms/soyinquiry/

 

【SEO対策】content-visibility:auto;でコンテンツの遅延読み込み

/** Geminiが自動生成した概要 **/
Chrome 85からCSSの`content-visibility: auto;`が導入され、画面外コンテンツの遅延読み込みが可能に。表示速度向上とSEO対策が目的です。筆者は自身のサイトで、`.content-lazy-always`で常時遅延、`.content-lazy`でPCとスマホで表示/遅延を切り替える形で実装。記事一覧の下部や詳細ページのフッターなどに適用しました。しかし、元々読み込みが速かったため、具体的な速度改善効果は確認できなかったとのことです。

 

郵便番号を入力したら半径3km内のすべての町名を取得する

/** Geminiが自動生成した概要 **/
Google Geocoding APIを用いて、指定住所(安岡寺)から半径3km以内の町名を取得する方法を検証した。APIで中心座標を取得後、緯度経度を0.01(約1km)ずつずらした地点の逆ジオコーディングを繰り返し、町名を収集した。しかし、1kmグリッドでは範囲内の全町名を網羅できず、グリッドを細かくするとAPI使用回数が増加する問題点が残った。より効率的な方法の検討が必要。

 

カロテノイドの先にあるもの

/** Geminiが自動生成した概要 **/
この記事では、カロテノイドが植物ホルモンの前駆体となり、植物の成長や健康に重要な役割を果たすことを解説しています。特に、ゼアキサンチンからアブシジン酸、β-カロテンからストリゴラクトンという植物ホルモンが生成される過程が紹介されています。ストリゴラクトンは主根伸長促進、形成層発達制御、菌根菌との共生シグナルといった機能を持ち、台風の被害軽減や秀品率向上に有効です。菌根菌との共生は微量要素の吸収効率を高めるため、亜鉛の吸収促進にも期待できます。そして、カロテノイドを増やすためには光合成を高めることが重要だと結論付けています。

 

株式会社フィールド&マウンテン様のヤマトリップショップの制作を行いました

/** Geminiが自動生成した概要 **/
株式会社フィールド&マウンテン様の山小屋グッズECサイト「ヤマトリップショップ」(https://yamatrip.com/shop/)を制作しました。既存顧客基盤を持つ「やまどうぐレンタル屋」の緑白カラーを基調としたスマホ向けデザインを採用し、リリース後すぐに注文が続々と入っています。 特徴的な機能として、商品詳細ページに100円~5000円を選択できる投げ銭ボタンを実装。商品と投げ銭の同時購入も可能です。また、複数の商品を同時にカートに追加する隠し機能も搭載しています。 ボトル、手ぬぐい、Tシャツなど魅力的な商品が揃っており、やまどうぐレンタル屋が築き上げてきた顧客との信頼関係が、ECサイトの初期の成功に繋がっていると感じています。

 

SOY2HTMLで軽微なカスタマイズを加える為の機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS/ShopのSOY2HTMLに、軽微なカスタマイズを容易にする隠し機能が追加されました。クラスファイルと同名のHTMLファイル名の頭にアンダースコア「_」を付けると、そのHTMLファイルが優先的に読み込まれます。これにより、プラグインのバージョンアップ時の上書きを回避できます。例えば、配送モジュールの文言変更など、PHP知識を必要とせず容易にカスタマイズできます。標準配送モジュールなら `delivery_normal/cart/_DeliveryNormalCartPage.html` を配置し、元のHTMLの内容をコピー・編集することで実現できます。SOY Shop 2系以降で利用可能、1系は `soy2_build.php` の修正が必要です。新パッケージはsaitodev.coからダウンロードできます。

 

gRPC for PHPのインストール

/** Geminiが自動生成した概要 **/
この記事はUbuntu 19.10環境でGoogle Ads APIを使用するためのgRPC for PHPのインストール手順を解説しています。PEAR/PECL、Composerをインストール後、`pecl install grpc`、`pecl install protobuf`コマンドでgRPCとprotobufをインストールします。その後、`/etc/php/7.4/cli/php.ini`と`/etc/php/7.4/fpm/php.ini`両方に`extension=grpc.so`と`extension=protobuf.so`を追加し、`phpinfo()`や`php -m`でインストールを確認します。記事ではComposerのインストール手順も解説していますが、gRPCのインストール自体はComposerを使わずPECL経由で行っています。

 

【SEO対策】Gueztliで画像のファイルサイズの削減

/** Geminiが自動生成した概要 **/
この記事では、ウェブサイトのSEO対策として画像ファイルサイズの削減に焦点を当てています。GoogleのJPEGエンコーダGuetzliを導入することで、画像品質を維持しながらファイルサイズを大幅に削減できることを実例で示しています。具体的には、115.8kbの画像がGuetzliによって9.4kbまで圧縮され、80%以上の削減に成功しています。また、PageSpeed InsightsによるWebP等の次世代フォーマットの推奨についても触れつつ、Safari非対応やPageSpeed Module導入によるパフォーマンス低下を理由に現状では採用を見送っていることを説明しています。

 

SOY InquiryでParsley.jsを利用する

/** Geminiが自動生成した概要 **/
SOY InquiryにParsley.jsを組み込むと、見栄えの良い入力内容チェックが利用できます。フォームテンプレートにParsley.jsのスクリプトを挿入し、SOY Inquiryのフォーム設定画面で各項目にdata-parsely-triggerとrequired属性を設定します。さらに、data-parsely-required-message属性を追加すると、エラーメッセージをカスタマイズできます。これにより、各項目に合わせたエラーメッセージが表示され、ユーザーフレンドリーなフォームが作成できます。

 

お茶で風邪予防の仕組みを見る

/** Geminiが自動生成した概要 **/
このブログ記事は、お茶(特に緑茶)に含まれるカテキンが風邪予防に有効なメカニズムを解説しています。ウイルスは自己増殖できず、宿主細胞の表面にある糖鎖と自身のスパイクタンパクが結合することで感染します。緑茶カテキンは、ウイルスのスパイクタンパクを封鎖し、宿主細胞への認識・吸着を阻害することで感染を予防するとされています。 カテキンは体内滞在時間が短いため、効果を期待するには日常的な緑茶摂取が重要です。記事では、ウイルスの基本的な性質や感染プロセス、投薬の難しさ、さらにはmRNAワクチンの仕組みについても触れ、多角的に解説しています。

 

SOY ShopのマイページのフォームでParsley.jsを使用する際に注意すること

/** Geminiが自動生成した概要 **/
SOY2HTMLでセキュアなフォームを設置するには、csrf_tokenを利用する。HTMLFormクラスでformタグを出力すると自動的にトークンが埋め込まれる。トークンはセッションに保存され、送信時に検証されるため、クロスサイトリクエストフォージェリを防げる。 独自にformタグを作成する場合は、soy:id="csrf"でトークンを埋め込む必要がある。また、JavaScriptで非同期通信を行う場合も、トークンをヘッダーやパラメータに含める必要がある。トークンの有効期限は短いため、フォームの送信に時間がかかる場合は注意が必要。これらの対策により、安全なフォームを実現できる。

 

SOY Shopで商品毎パーツモジュール選択読み込みプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページで商品ごとに異なる定型文を表示するプラグインが開発されました。 通常、プラグインで定型文を設定するところを、このプラグインはパーツモジュール内で他のパーツモジュールを呼び出すことで実現しています。商品情報に設定したモジュールIDに対応するパーツモジュールを`shop:module="common.fixed_form_module"`で呼び出すと、商品に応じた定型文が表示されます。HTMLだけでなくPHPのモジュールも使用可能なので、動的な表示にも対応できます。このプラグインを含むパッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

pickadate.jsでHTML5のrequired属性を使いたい

/** Geminiが自動生成した概要 **/
pickadate.jsでHTML5のrequired属性を使うには、`editable: true`オプションを設定する必要がある。ただし、これによりページ読み込み時にrequiredチェックが実行され、未入力エラーが表示される問題が発生する。これを回避するには、フォームにIDを付与し、クリックイベントでpickadateを初期化するよう変更する。さらに、カレンダー表示のために`pickr.pickadate('open')`も追加する必要がある。これにより、フォームクリック時に初めて初期化とバリデーションが行われるようになり、初期エラー表示の問題が解決する。

 

ホルモース反応

/** Geminiが自動生成した概要 **/
ホルモース反応は、生命誕生の鍵を握るとされる、ホルムアルデヒドから糖を生成する反応です。ホルムアルデヒド水溶液に水酸化カルシウム(消石灰)を加えると、グリセルアルデヒドやジヒドロキシアセトンといった炭素数3の糖が生成されます。これらの糖や中間生成物はアルドール反応により縮合し、炭素数5や6の糖へと変化します。ホルムアルデヒドは生物の代謝で自然発生し、水酸化カルシウムは土壌に普遍的に存在するため、ホルモース反応は生命の起源において重要な役割を果たしたと考えられています。ジヒドロキシアセトンはメイラード反応にも関与し、土壌における反応との関連が示唆されます。

 

SOY CMSとSOY ShopでPHP7.4系に対応してみました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY ShopがPHP7.4に対応しました。PHP7.4は7.3より高速ですが、マジックメソッド__callの振る舞いの変更が影響し、SOY CMSのsoy:id記法の一部でエラーが発生していました。具体的には、addForm()等のメソッドが__callで抽象化されていたため、PHP7.4ではHTTP 503エラーが発生していました。この問題を解消するため、addForm()等を直接呼び出せるよう修正し、抽象的なコードを減らすことで高速化にも貢献しました。PHP7.4対応版はサイトからダウンロード可能です。今回の修正はPHP5系でも動作します。プラグインの動作確認はまだ完了していないため、エラーが発生した場合は問い合わせフォームから報告をお願いします。

 

Ubuntu19.10でSnapのBracketsのライブプレビューが動作しなかった時の対処

/** Geminiが自動生成した概要 **/
Ubuntu 19.10でSnap版Bracketsのライブプレビューが「ファイルへのアクセスが拒否されました」エラーで動作しない問題の対処法。Brackets 1.14 (snap経由)、Chromium 79.0.3945.79 (snap)環境で、GitHubのIssueを参考に解決。解決策は、Bracketsのメニュー「File」→「Enable Experimental Live Preview」を有効にすること。これにより、設定済みのブラウザ(ChromiumやFirefox)でライブプレビューが正常に動作するようになった。

 

Google Analytics APIの承認で苦戦したので、承認されるまでの流れをまとめてみた

/** Geminiが自動生成した概要 **/
Google Analytics APIの承認取得に苦労した著者が、その過程を詳述。OAuth同意画面の設定から始まり、Googleからの度重なるメールでの指摘に対応していく。 ホームページ、プライバシーポリシーの設置、アプリ操作動画の提出を求められ、動画はクライアントIDの表示や言語設定など細かい指示に従い作成し直した。最終的に承認を得るまで、動画の翻訳やスコープ設定の不備など、多くの修正を余儀なくされた。

 

曽爾三山を含む室生火山群の柱状節理

/** Geminiが自動生成した概要 **/
曽爾高原の土壌を理解するため、地形に着目する。曽爾高原は室生火山群に属し、倶留尊山や屏風岩といった柱状節理が見られる。屏風岩は流紋岩質溶結凝灰岩で、倶留尊山も同様の組成と推測される。つまり、ススキが生える土壌は流紋岩質岩石の影響を受けている可能性が高い。さらに、曽爾村の地質は花崗岩や片麻岩を基盤に、室生火山群の溶岩・火山灰が堆積し、浸食によって深い谷が形成された。しかし、曽爾高原の独特な地形の成因は未解明である。

 

野菜の美味しさとは何だろう?ポリフェノールと食物繊維

/** Geminiが自動生成した概要 **/
この記事では、野菜のおいしさについて、筆者の師匠が育てたゴボウを例に考察しています。師のゴボウは太く、味だけでなく香りも素晴らしかったとのこと。ゴボウの旨味成分としてグルタミン酸が挙げられますが、それ以外にクロロゲン酸とイヌリンの存在が重要だと指摘します。クロロゲン酸はポリフェノールの一種で、少量であれば甘味や酸味を感じさせ、味覚を修飾する効果があります。イヌリンは水溶性食物繊維で、加水分解されるとオリゴ糖になり、ゴボウの甘味を増します。また、整腸作用も持つとされています。長期冷蔵によってイヌリンが糖化し甘味が増したゴボウに、クロロゲン酸の味覚修飾効果とグルタミン酸の旨味が加わり、独特の風味とコクが生まれると結論づけています。さらに、優れた栽培者のゴボウは香りも優れていることを指摘し、おいしさの多様性を示唆しています。

 

バニリルアミンの生合成

/** Geminiが自動生成した概要 **/
トウガラシの辛味成分カプサイシンは、バニリル基と脂肪酸が結合した構造を持つ。バニリル基は、シキミ酸経路でフェニルアラニンからカフェ酸を経てバニリンが合成され、さらにバニリンにアミノ基転移酵素の働きでアミノ基が付加されてバニリルアミンとなる。一方、脂肪酸は炭素数10の不飽和脂肪酸が合成される。最終的にバニリルアミンと脂肪酸が結合し、カプサイシンが生成される。

 

ネナシカズラの寄生の仕方

/** Geminiが自動生成した概要 **/
ネナシカズラは、種子の寿命が長く、動物の胃の中でも生存できることから、日本全国に広く分布しています。 寄生するためには宿主植物に巻きつき、寄生根で宿主体内に侵入します。その寄生根は宿主植物の維管束と繋がり、寄生を開始します。 ただ、すべての植物に寄生できるわけではなく、宿主植物の種類によっては寄生率が低くなります。また、幼植物は寄生率が低いため、生き残る確率も低くなります。 そのため、ネナシカズラがイネ科の植物に寄生できる可能性は低く、雑草の多い畑や、通路に雑草対策が施されている畑では被害は限定的である可能性があります。

 

SOY InquiryでjQuery UIのDatepickerを利用してみる

/** Geminiが自動生成した概要 **/
SOY Inquiryで日付入力にカレンダー形式を追加するには、jQuery UIのDatepickerを利用します。まず、フォーム設置ページのテンプレートにjQueryとjQuery UI、日本語化ファイルのCDNを読み込むscriptタグを追加します。次に、SOY Inquiryで日付のカラムを作成し、属性に`id="datepicker"`を設定します。これにより、フォームにフォーカスを当てるとカレンダーが表示され、日付を選択できるようになります。Datepickerは日付選択の制限等、高度な設定も可能です。詳細はjQuery UIの公式ドキュメントを参照ください。

 

SOY Inquiryの自動送信メールの多言語化

/** Geminiが自動生成した概要 **/
SOY Inquiryで多言語サイトを構築する際、問い合わせ番号や日時が日本語で送信される問題を解決する方法です。mail.user.phpをカスタマイズし、メール本文中の「問い合わせ番号」「問い合わせ日時」を各言語に置換します。コード例では、explodeで本文を分割し、strposで該当箇所を特定、str_replaceで置換後、implodeで再構築しています。この方法で各言語用のフォームを用意すれば、多言語対応の問い合わせメールを実現できます。

 

体内で乳糖が分解された先

/** Geminiが自動生成した概要 **/
糖タンパク質は、タンパク質に糖鎖が結合した複合分子である。糖鎖の結合位置や種類によって多様な構造を持ち、細胞膜、細胞外マトリックス、血液など様々な場所に存在する。細胞間の情報伝達、免疫反応、細胞接着、タンパク質の安定化など、多くの重要な生物学的機能を担う。糖鎖の構造変化は、がんや炎症性疾患などの病態と関連することが知られている。 糖鎖の多様性と機能の複雑さから、糖タンパク質の研究は生命科学の重要な分野となっている。

 

SOY CMSで管理画面のログイン時のパスワードを忘れた場合の再設定

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面パスワードを忘れた場合、パスワードリマインダが有効でなければ使えません。有効化は必須です。パッケージを最新版に更新すると手順が簡略化されます。 パスワード無しでログインするには、AdministratorLogic.class.phpのlogin関数とcheckUserIdAndPassword関数に"return true;"を追加します。管理画面へのアクセス制限としてBasic認証を設定しておくのが安全です。 ログイン後、管理者情報ページを開くにはDetailPage.class.phpに初期管理者ID取得のコードを追加します。パスワード変更時はChangePasswordAction.class.phpでエラーチェックとパスワードチェックを無効化し、管理者IDを強制的に初期管理者に設定します。変更後はファイルを元に戻し、ログイン確認後、パスワードリマインダを有効化してください。

 

SOY Inqiuryでお問い合わせ内容をコンパクトにする

/** Geminiが自動生成した概要 **/
SOY Inquiryで長い項目名によってメール表示が崩れる問題を解決する方法です。フォームテンプレートディレクトリ(例:default)にmail.admin.phpを作成し、PHPでメール内容を整形します。 提供されたコードは、メール本文の各行を処理し、コロン以降の空白文字を削除して出力します。これにより、項目名と入力値の間のスペースが詰まり、コンパクトな表示になります。管理者宛メールのみ変更され、公開側の表示は変わりません。

 

SOY Shopで誰が操作したか?を把握したい

/** Geminiが自動生成した概要 **/
SOY Shopはネットショップだけでなく実店舗の販売管理にも利用されるようになり、複数店舗で「誰が注文を受け付けたのか」を把握するニーズが高まった。従来、各店舗のアカウントで管理すれば変更履歴に対応者IDが残るが、カート注文では意図したIDが記録されない問題があった。そこで、カート注文にはシステム側で特定の値を挿入する機能と、対応者IDで検索できるプラグインを追加。これにより、ネット注文と実店舗注文のどちらでも、対応者による注文の絞り込みが可能になった。このアップデートは地味ながらも、業務効率化に繋がる重要な改善である。

 

IoTによる施設栽培の自動制御の今後は?

/** Geminiが自動生成した概要 **/
ヤンマーは、ICTを活用した自動運転トラクターを発売しました。GPSと慣性航法システムにより、高精度な位置情報と姿勢制御を実現し、直進や旋回などの自動運転を可能にしています。これにより、オペレーターの負担を軽減し、作業効率の向上と燃料消費の削減に貢献します。また、タブレット端末で走行ルートの作成や作業状況の確認ができ、農作業の省力化・省人化を推進します。さらに、有人監視下での遠隔操作にも対応しており、将来的には完全無人化を目指しています。この自動運転トラクターは、スマート農業の実現に向けた重要な一歩となります。

 

SOY CMS ASP版運営プラグイン

/** Geminiが自動生成した概要 **/
SOY CMSのASP版を提供するためのプラグインが開発されました。このプラグイン「SOY CMS ASP版運営プラグイン」は、SOY CMSのマルチサイト機能を活用し、利用登録フォームからアカウントと紐付いたサイトを自動作成します。ASP運営者はサーバーにSOY CMSとプラグインをインストールし、利用登録フォームを設置するサイトを作成。フォーム設置後、公開側からの登録でアカウントとサイトが作成されます。これにより、簡単にSOY CMSのASPサービスを提供可能になります。パッケージはsaitodev.co/soycms/からダウンロードできます。

 

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日間の検索クエリデータを取得・表示します。

 

Go言語でJSON

/** Geminiが自動生成した概要 **/
Go言語でJSONを扱う方法について解説されています。 `sample.json`ファイルにID、名前、読み仮名などのデータを保存し、`main.go`でそのデータを読み込んで利用する方法が示されています。 `ioutil.ReadFile`でJSONファイルを読み込み、`json.Unmarshal`でGoの構造体`Sample`に変換します。`Sample`構造体はJSONデータのキーに対応するフィールドを持ちます。変換後、`sample.Name`のようにアクセスすることで、JSONデータの値を取得できます。

 

妻がプログラミングをはじめてGo言語とQtでアプリを公開するまで

/** Geminiが自動生成した概要 **/
妻にプログラミングを教えた動機は、事務職希望の女性こそプログラミングスキルを身につけるべきだという考えに基づいている。事務作業はルーティン化しやすい反面、変化への対応が求められる。プログラミングは論理的思考力や問題解決能力を養い、変化への対応力を高める。これらは事務職で役立つだけでなく、キャリアの幅を広げる可能性も秘めている。妻は最初の実験台であり、私自身にとっても新たな言語を教える貴重な経験となった。将来的には、プログラミング教育の普及を通じて、女性がより活躍できる社会を目指したいと考えている。

 

Go言語でGoogle Analyticsのデータをチャットワークに送ってみる

/** Geminiが自動生成した概要 **/
Go言語でGoogle AnalyticsのページビューをChatworkに送信するコードを紹介しています。 Google Analytics APIを用いて前日のページビューと日付を取得し、Chatwork APIで指定のルームに投稿します。 コードでは、認証情報、GAのプロファイルID、ChatworkのルームIDとAPIトークンが必要です。 `Data.Ga.Get`メソッドで前日のページビューを取得し、`Dimensions("ga:date")`で日付も取得します。 取得したデータはChatwork APIのPOSTリクエストで送信されます。 実行にはGoogle API Consoleで取得した認証情報が必要です。 具体的な手順やコードの全体はGitHubリポジトリを参照ください。

 

SOY CMSのブログで年毎に月別アーカイブのリンクを出力するブログブロックを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログで、長年の運用による月別アーカイブの増加でデザインが崩れる問題を解決するブログブロックが追加されました。従来の縦に長いアーカイブ表示を、年毎に折りたたみ可能な形式で出力します。 新しいブロック`b_block:id="archive_every_year"`は、`cms:id="year"`で年を、`cms:id="archive"`で各月のアーカイブリンクを生成し、年毎に異なるIDを割り当てます。これにより、jQuery等で年毎の折りたたみ表示を実装可能になります。表示例では2018年、2017年、2016年と年ごとに月別アーカイブをまとめて表示しています。新機能はパッケージに含まれ、サイト(https://saitodev.co/soycms/)からダウンロードできます。ただし、古いバージョンからのアップデートでは、ブログページ毎のブロック使用設定でarchive_every_yearを有効にする必要があります。

 

Go言語でQtのQComboBoxを使ってみる

/** Geminiが自動生成した概要 **/
Go言語でQtのQComboBoxの使い方を示すコード例です。QBoxLayoutでレイアウトを定義し、AddItemsで選択肢を追加します。ConnectCurrentIndexChanged2で選択変更時の処理を実装し、QMessageBoxで選択された項目を表示します。

 

サイトで業者を選ぶのに、何を参考にする?

/** Geminiが自動生成した概要 **/
不用品回収業者を探す際、検索上位の「最安値」を謳う業者に惹かれたが、高額な見積りに遭遇。その後、「くらしのマーケット」で人柄が伝わるコメントや高評価の口コミのある業者を選び、満足のいく結果を得た。 この経験から、価格競争の激しいサービス業のサイト構築においては、価格ではなく人柄をアピールすることの重要性を学んだ。ブログで個性を出し、顧客とのエピソードを交え信頼感を醸成する。最安値を謳うより、他社との差別化を明確にする。そして、顧客との良好な関係構築に基づく口コミ獲得とアフターフォローが、成功の鍵となる。

 

Go言語でQtのQLabelを使ってみる

/** Geminiが自動生成した概要 **/
Go言語でQtのQLabelを使い、「時間」と表示する例を紹介しています。QLabelは文字列を表示するウィジェットで、NewQLabel2関数で作成します。引数には表示テキスト、親ウィジェット、フラグを指定します。作成したQLabelはQBoxLayoutに追加しますが、AddWidgetメソッドを使用し、配置オプションを指定する必要があります。 サンプルコードでは、ウィンドウ、ウィジェット、ボックスレイアウトを作成し、QLabelをボックスレイアウトに追加して表示しています。 QLabelを使うことで、シンプルに文字列をGUIに表示できます。

 

Go言語でQtのQGroupBoxを使ってみる

/** Geminiが自動生成した概要 **/
Go言語でQtのQGroupBoxを使って、フォームレイアウトとグリッドレイアウトをグループ化する方法を示す。QGroupBoxは、ウィジェットをグループ化し、タイトル付きのフレームで囲む。サンプルコードでは、QFormLayoutとQGridLayoutをそれぞれQGroupBoxで囲み、それらを新たなQGridLayoutに配置することで、整理されたUIを構築している。 `widgets.NewQGroupBox2("title",nil)`でタイトル付きのグループボックスを作成し、`SetLayout`メソッドでレイアウトをセットする。このようにQGroupBoxを使うことで、複雑なレイアウトも構造化しやすくなる。

 

Go言語でQtでQGridLayoutを使ってみる

/** Geminiが自動生成した概要 **/
Go言語でQtのQGridLayoutを使い、5つのボタンを配置する例です。QGridLayoutはセルの概念に基づき、ウィジェットを配置します。AddWidget関数は、ウィジェットと配置するセルの行と列を指定します。AddWidget3関数は、さらに列と行の跨ぎ数を指定できます。"three"ボタンはAddWidget3関数を用い、第四引数に2を指定することで、2列分のセルを占有しています。各ボタンはグリッドレイアウトに従って配置され、"three"ボタンは横方向に2つのセルを結合した形で表示されます。

 

Go言語でQtのQFormLayoutを使ってみる

/** Geminiが自動生成した概要 **/
Go言語でQtのQFormLayoutを使用してラベルと入力フォームのレイアウトを作成する方法を解説。`widgets.NewQFormLayout`でレイアウトを作成し、`AddRow`メソッドでQLabel(ラベル)とQLineEdit(入力フォーム)をセットで追加できる。`AddRow3`ではラベルの文字列を直接指定可能。また、`AddWidget`でQPushButtonのような他のウィジェットも追加できる。`SetLayout`でウィジェットにレイアウトを適用し、`SetCentralWidget`でウィンドウに表示する。コード例では、名前、読書、メールアドレスの入力フォームとボタンを配置する方法を示している。

 

Qtのレイアウトについて

/** Geminiが自動生成した概要 **/
Qtのレイアウトは、QBoxLayout、QGridLayout、QFormLayoutの3種類が主要です。QBoxLayoutは、水平配置のQHBoxLayoutと垂直配置のQVBoxLayoutを含みます。QHBoxLayoutはウィジェットを横に、QVBoxLayoutは縦に並べます。QGridLayoutはグリッド状にウィジェットを配置し、QFormLayoutはラベルと入力フィールドのような2列配置に特化しています。それぞれ異なる配置ニーズに対応し、柔軟なUIデザインを可能にします。

 

Go言語でQtを扱ってみる on Ubuntu

/** Geminiが自動生成した概要 **/
Ubuntu 18.04にGo言語とQtをインストールし、GoでQtアプリケーションを開発する手順を記録した記事です。Go 1.11、Qt 5.11.1をインストールし、QtのサンプルWebブラウザの実行を確認後、GoのQtバインディングパッケージ`github.com/therecipe/qt`をインストールしました。`qtsetup`コマンドでパッケージの準備中に問題が発生しましたが、`generate`終了時点で中断し、サンプルプログラムを実行したところ、正常に動作することを確認しました。

 

Go言語とSQLiteでトランザクション

/** Geminiが自動生成した概要 **/
Go言語とSQLiteでトランザクションを実装する方法を示すコード例です。user_id=1の金額から1000円減算し、user_id=2に1000円加算する処理を、db.Begin()でトランザクション開始、tx.Commit()で終了させています。途中のエラー発生時は、それ以前の変更もデータベースに反映されません。各処理はtxオブジェクトを使ってSQLを実行し、エラーチェックを行っています。これにより、一連の操作が原子的に実行され、データの整合性が保たれます。

 

jQuery.uploadプラグインをjQuery3系でも動作するように修正してみた

/** Geminiが自動生成した概要 **/
jQuery.uploadプラグイン (v1.0.9) をjQuery 3.3.1で使用した際、「a.indexOf is not a function」エラーが発生。原因は`iframe.load()`の廃止。jQuery3以降では`.load()`メソッドがオブジェクトに対して使用できなくなっていた。解決策として、`iframe.on('load', function(){})`と書き換え、`load`イベントを`on`メソッドで登録することで動作するようになった。この修正は後にプルリクエストとして採用され、本家コードに反映済み。

 

Sigilで電子書籍を作成してみる①

/** Geminiが自動生成した概要 **/
Sigilは多プラットフォーム対応のEPUB電子書籍エディタ。公式サイトからOS対応版をダウンロード・インストール後、デスクトップにショートカットを作成する。Sigil起動後、初期画面に直接文字入力で文章作成が可能。新規記事追加は「ファイル」→「空のHTMLファイルを追加」から行う。保存は「ファイル」→「名前をつけて保存」を選択し、拡張子を.epubのまま保存する。再度開く際はSigilを起動し、「ファイル」→「開く」からepubファイルを選択する。

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる3

/** Geminiが自動生成した概要 **/
Go言語でkintoneとチャットワークを連携し、タスク自動登録アプリを作成する過程の3回目。今回はkintoneから取得したデータをチャットワークにタスク登録する処理を実装。kintoneアプリのラベルフィールド値をタスク名として登録するため、`RegisterTaskOnChatWork`関数を追加。この関数でチャットワークAPIを呼び出し、指定のルームにタスクを登録する。コード実行前にkintoneアプリにテストデータを追加し、実行後チャットワークでタスクが登録されていることを確認。データの絞り込みについては省略。

 

Go言語 + Selenium + Agoutiで自動でGoogle検索

/** Geminiが自動生成した概要 **/
`agouti`はGo言語用のAcceptance Testingフレームワークで、ブラウザの自動操作を可能にします。`ChromeDriver()`でChromeドライバーを起動し、`NewPage()`で新しいページを開きます。`Navigate()`で指定URLへ遷移し、`FindByID()`や`FindByButton()`で要素を取得。`Fill()`でフォーム入力、`Submit()`でボタン押下など、ブラウザ操作をコードで表現できます。`godoc`にはAPIの詳細が記載されており、`Selection`インタフェースが要素操作の中核を担い、様々な操作メソッドを提供しています。エラー処理も組み込まれており、`err != nil`で各操作の成否を確認できます。

 

SOY Inquiryでお問い合わせがあった場合にチャットワークに通知したい

/** Geminiが自動生成した概要 **/
SOY Inquiryでお問い合わせがあった際にChatworkに通知する方法を紹介します。まず、フォーム設置ディレクトリ(例:default)にmail.admin.phpを作成します。このファイルに、Chatwork APIトークン、ルームID、お問い合わせ内容をPOSTするcURLコードを記述します。 APIトークンとルームIDは別途取得が必要です。コード内の`$mailBody[0]`にはお問い合わせ本文が入っています。 設置完了後、テスト送信すると、指定のChatworkルームに「【saitodev.co】お問合わせがありました。」に続いてお問い合わせ内容が通知されます。

 

Go言語でhtmlからの文字の部分的取得

/** Geminiが自動生成した概要 **/
Go言語でWebページから本文を抽出するプログラムの説明です。`https://saitodev.co/article/%E3%83%A4%E3%83%96%E3%82%AC%E3%83%A9%E3%82%B7%E3%81%AE%E5%9F%B7%E5%BF%B5` から、`<div class="post-content">` と `<!-- .post-content -->` で囲まれた本文を抽出します。 `bufio.NewReader` でHTMLを一行ずつ読み込み、`strings.Index` で "post-content" を検索。開始タグを見つけたら `readMode` フラグをtrueにして本文を `content` 変数に蓄積、終了タグを見つけたらループを抜けます。抽出した本文は `test.html` ファイルに保存されます。

 

比叡山山頂から大文字山を見る

/** Geminiが自動生成した概要 **/
ブラタモリ京都・東山編で比叡山と大文字山の成り立ちを知り、比叡山山頂のガーデンミュージアム比叡の展望台から大文字山を眺めた。両山は9000万年前のマグマ活動で形成された花崗岩とホルンフェルスから成る。大文字山を望むことで花崗岩の巨大さを体感し、山の風化による変化を想像しやすくなった。比叡山山頂からの景色は、地質学的スケールの大きさを感じさせる貴重な体験となった。

 

Go言語でHTTPのPOST

/** Geminiが自動生成した概要 **/
Go言語でChatWork APIを用いてマイチャットにメッセージをPOSTする手順を紹介。 `http.NewRequest`でPOSTリクエストを作成し、ChatWork APIトークンをヘッダーに設定、`http.DefaultClient.Do`でリクエストを送信する。記事では"GOからのテスト投稿"というメッセージを送り、レスポンスコード200を確認することで成功を確認している。 また、ChatWork APIのルームID、トークンの取得方法については別記事を参照している。

 

SOY2HTMLでリンクを出力する - HTMLLink編

/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLLinkクラスは、PHPでリンクを生成するためのクラスです。`text`属性でリンクテキストを、`link`属性でhref値を設定します。`SOY2PageController::createLink()`を使うと、管理画面のURLを簡単に生成できます。HTMLには`<a soy:id="detail_link"></a>`と記述します。HTMLActionLinkクラスはHTMLLinkを継承し、URLにトークンを付与することでセキュリティを強化します。`soy2_check_token`と併用し、URL直打ちを防止します。

 

SOY2HTMLで繰り返し表示 - HTMLList編

/** Geminiが自動生成した概要 **/
SOY CMSのブロック内で繰り返し表示される記事に、一定の間隔で任意の文字列を表示するには、下記の手順に従います。 1. HTMLListクラスを継承したPHPクラスを作成し、populateItemメソッドで表示したい内容をHTMLタグで記述します。 2. HTMLファイルで、populateItemメソッドで作成したHTMLタグをsoy:idを使用して囲みます。 3. 表示する間隔をsoy:id="loop"に指定します。 4. 表示する文字列をsoy:id="index"に指定します。 これで、指定した間隔で任意の文字列が繰り返し表示されます。

 

SOY2HTMLでセレクトボックスを設置する - HTMLSelect編

/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLSelectクラスは、HTMLのセレクトボックスを生成する。`$this->addSelect()`で利用し、オプションは第二引数の配列で指定する。 `options`キーに配列を渡すとoptionタグが生成され、連想配列でない場合はvalue属性が設定されない。`indexOrder`をtrueにすると、数値インデックスがvalue属性となる。`selected`キーで選択状態を指定、複数選択には配列で渡す。多重配列でoptgroupも作成可能。`each`キーで各optionタグに属性を追加できる。

 

SOY2HTMLでラジオボタンやチェックボックスを設置する - HTMLCheckBox編

/** Geminiが自動生成した概要 **/
SOY2HTMLでラジオボタンとチェックボックスを設置する方法を解説。HTMLCheckBoxクラスを用い、PHP側で`addCheckBox`メソッドを使い、HTML側で`<input type="(radio|checkbox)" soy:id="id名">`を記述する。`addCheckBox`の第二引数配列には、name, value, selected(チェック状態), label(ラベルテキスト)を指定する。ラジオボタンはnameを共通にすることでグループ化される。チェックボックスは単独で動作する。HTMLCheckBoxクラスはHTMLInputを継承し、labelタグを自動生成する機能を持つ。`isBoolean`をtrueに設定すると、値が未送信の場合に備えてhiddenで値0を送信する。

 

SOY2HTMLでテキストエリアを設置する - HTMLTextArea編

/** Geminiが自動生成した概要 **/
HTMLTextAreaクラスは、テキストエリア要素を生成します。name属性とテキストの内容を指定し、その内容をinnerTextとしてレンダリングします。getTextメソッドはテキストの内容を取得し、オブジェクトを取得するオブジェクトメソッドはHTMLエスケープされたテキストを改行で囲んで返します。

 

SOY2HTMLでテキストフォームを設置する - HTMLInput編

/** Geminiが自動生成した概要 **/
SOY2HTMLを使用してテキストフォームを作成する方法を説明します。`HTMLInput`クラスを利用して、フォームにテキストフォームを追加できます。`addInput()`メソッドを使用して、フォーム要素のnameとvalue属性を設定します。これにより、PHPの記述混入を回避しつつ、デザインを崩さずにHTMLファイルを直接表示できます。テキストフォームの実際のコードは、`HTMLFormElement`クラスを継承した`HTMLInput`クラスで定義されています。

 

SOY Shopの各種プラグインの設定を保存する方法

/** Geminiが自動生成した概要 **/
SOY Shopのプラグイン設定を保存するには、SOYShop_DataSetsクラスのputメソッドを使用します。キーバリューストアのようにデータを保存でき、配列もシリアライズして文字列として保存できます。データの取得はgetメソッドで行い、指定したキーに対応する値を取り出します。第二引数で値がなかった場合の代替値を指定することも可能です。

 

SOY2HTMLでセキュアなフォームを設置する - HTMLForm編

/** Geminiが自動生成した概要 **/
HTMLFormクラスは、HTMLのフォーム要素を生成するためのコンポーネントです。formタグを生成し、メソッド(デフォルトはPOST)やアクション、ターゲットなどの属性を設定できます。POSTメソッドの場合、CSRF対策としてsoy2_tokenという隠しフィールドを自動的に追加します。アクションが指定されていない場合は、現在のリクエストURIがアクションとして設定されます。また、JavaScriptのonSubmitイベントを設定することも可能です。disabled属性の設定も可能です。

 

プラグイン毎に詳細画面を持たせる拡張ポイントsoyshop.config.php

/** Geminiが自動生成した概要 **/
SOY Shopプラグインの拡張ポイントsoyshop.config.phpは、プラグイン毎に詳細設定画面を作成するための機能です。プラグインディレクトリにsoyshop.config.phpを設置し、インターフェース`SOYShopConfigPageBase`を実装することで、`http://ドメイン/CMSインストールディレクトリ/soyshop/index.php/Config/Detail?plugin=プラグインID` でアクセス可能な設定ページが生成されます。 主要なメソッドは`getConfigPage()`(設定画面のHTMLを出力)、`getConfigPageTitle()`(設定画面のタイトル)、`redirect()`(リダイレクト)です。`getConfigPage()`では、SOY2HTMLを用いてHTMLを生成するのが一般的です。PAY.JPクレジットカード支払いモジュールでは、`PayJpConfigPage`クラスとテンプレートファイルを使用して設定画面を構築しています。`redirect()`メソッドは、設定更新後などにURLパラメータを追加してリダイレクトする際に使用します。

 

SOY2HTMLで処理とデザインを切り分ける

/** Geminiが自動生成した概要 **/
SOY2HTMLFactoryは、SOY CMSでPHPによる処理とHTMLによるデザインを完全に分離するための仕組みです。拡張ポイント(例: `soyshop.admin.top.php`)の`getContent`メソッド内で使用され、`SOY2::import`で読み込んだPHPクラスを`SOY2HTMLFactory::createInstance`でインスタンス化します。このPHPクラスがビジネスロジックを担当し、同名のHTMLファイルをテンプレートとして利用。`soy:id`を通じて両者を連携させ、動的なコンテンツを生成・表示します。これにより、プログラマとデザイナの役割分担を明確にし、開発効率向上に貢献します。

 

管理画面の注文検索の拡張ポイントsoyshop.order.search.php

/** Geminiが自動生成した概要 **/
管理画面の注文検索フォームを拡張するsoyshop.order.search.php拡張ポイントの説明。searchItemsメソッドでフォームに検索項目を追加し、setParameterメソッドで対応するSQLサブクエリを指定する。 searchItemsはラベルとフォーム要素を配列で返し、フォームのname属性は"search[customs][モジュールID][ユニークなパラメータ]"形式。setParameterは"id IN (SELECT ...)"形式のサブクエリを返す。伝票番号記録プラグインのコードを読むと理解が深まる。

 

配送の拡張ポイントsoyshop.delivery.php

/** Geminiが自動生成した概要 **/
SOY Shopの配送拡張ポイント`soyshop.delivery.php`について解説。インターフェースは`onSelect`、`getName`、`getDescription`、`getPrice`など、支払い拡張ポイントと類似のメソッドを持つ。`onSelect`~`getPrice`はカートでの配送方法選択時の動作を定義し、`edit`と`update`はマイページの注文詳細編集で使用される。`edit`は編集フォームを出力するメソッドで、`update`はフォーム送信時の更新処理を行う。標準の配送モジュール(delivery_normal)のコードを読むことで、具体的な実装方法を理解できる。

 

SOY Shopプラグインの拡張ポイントについて

/** Geminiが自動生成した概要 **/
SOY Shopプラグインの解説として、銀行振込モジュールを例に拡張ポイントが説明されている。プラグインはfeaturesディレクトリにmodule.iniで情報を定義し、pluginsディレクトリに機能を実装する。soyshop.config.php(設定画面)、soyshop.info.php(詳細ページへのリンク追加)、soyshop.order.mail.php(メールへの文章挿入)、soyshop.payment.php(支払い機能)といった拡張ポイントがあり、これらは/soyshop/webapp/src/logic/plugin/extensions/以下にインターフェース定義がある。

 

Google Apps ScriptのHTML Serviceでファイルアップロードを行う

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)のHTML Serviceでファイルアップロード機能を実装する方法を紹介。サンプルコードでは、HTMLフォームでファイルを選択・送信し、GAS側でGoogleドライブに保存、生成されたURLをHTMLに返す非同期処理を行っている。`google.script.run.withSuccessHandler()`でGAS側の関数を実行し、成功時の処理をHTML側で記述。フォーム送信イベント`onsubmit`でこの処理を呼び出し、アップロード後のURL表示を実現。この仕組みにOCR処理を組み合わせることで、画像アップロードと文字列抽出を同一画面で行うWebアプリ開発が可能になる。

 

Google Apps ScriptでJPEGの画像からOCRで画像内の文字列を取得してみた

/** Geminiが自動生成した概要 **/
Google Apps ScriptでJPEG画像からOCRで文字列を取得する方法を検証。GoogleドキュメントでのOCRをGASで自動化する方法を紹介している。 Drive APIを有効化し、画像URLを指定して`Drive.Files.insert`メソッドでGoogleドライブに挿入、`ocr:true`オプションでOCRを実行。 生成されたGoogleドキュメントには画像とOCR結果のテキストが含まれる。日付や画像中の文字認識は難しいが、本文は高精度で取得できた。以前試したGoogleドキュメント直接OCRより精度は高い。

 

酸素供給剤を試した方から

/** Geminiが自動生成した概要 **/
京都農販のTwitterで、酸素供給剤(過酸化石灰)を使った九条ネギのハウス栽培で成長に大きな差が出たことが報告された。酸素供給剤は水と反応し、消石灰と過酸化水素を発生させる。植物は過酸化水素からカタラーゼ反応で酸素を取り込み、同時に発生した消石灰は土壌pHを上昇させ、一部の微生物を殺菌する。これにより生育環境が改善され、肥料の吸収効率も高まる。酸素供給剤は土壌中で徐々に効果を発揮するため、大雨など病気になりやすい時期の予防にもなる。ただし、石灰であるため土壌中の石灰量に注意が必要で、過剰施用はカルシウム過剰による欠乏を引き起こす可能性があるため、pH調整には炭酸苦土などを代替利用すると良い。

 

太古の生物は酸素によって現れた銅を活用した

/** Geminiが自動生成した概要 **/
ボルドー液は、硫酸銅と消石灰を混ぜて作る殺菌剤で、19世紀末にフランスのボルドー地方でブドウのべと病対策として開発されました。銅イオン(Cu²⁺)は殺菌効果を持ちますが、植物にも有害です。そこで、消石灰を加えて水酸化銅(II)を生成し、銅イオンの溶出速度を調整することで、植物への毒性を抑えつつ殺菌効果を発揮します。ボルドー液は、現在でも有機農法で広く利用されている、歴史ある銅製剤です。銅の結合力の強さは諸刃の剣であり、生物にとって必須であると同時に過剰になると有害となるため、その微妙なバランスが重要です。

 

社会人・学生向けプログラミング教室でGoogleスプレットシートの拡張の勉強会を行いました

/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、Googleスプレッドシートの拡張機能を活用した業務アプリ作成の勉強会を実施。備品管理表を作成し、GAS(JavaScript)で毎週金曜日に備品不足をチェック、関係者へ調達指示メールを自動送信する仕組みを構築した。Googleスプレッドシートの複数人管理機能とGASによるGmail連携で、備品調査とメール送信を自動化。GoogleドライブとGASで業務効率化を図り、クリエイティブな作業時間を増やすという狙い。

 

Ubuntuでsendmailをインストールする

/** Geminiが自動生成した概要 **/
UbuntuサーバーにSendmailをインストールする際、SSL設定で処理が停止する問題が発生。解決策として、手動でSSL証明書関連ファイルを作成し、所有権とパーミッションを設定後、`dpkg --configure -a`コマンドでインストールを完了させた。その後、SOY CMS/Shopのテスト送信機能を用いて、Sendmail経由のメール送受信が正常に行えることを確認した。最後に、停止中のジョブをkillするかサーバー再起動の必要性について言及している。

 

SOY Inquiryで複数のアップロードフォームを設置した時、確認メールで複数分の画像を確認したい

/** Geminiが自動生成した概要 **/
SOY Inquiryで複数のアップロードフォームの画像を確認メールに表示するには、管理者向けメール拡張PHPを修正する。画像パスを格納する変数を配列`$pathes`に変更し、ループ処理で各画像パスを`$pathes`に追加。確認メール出力部分もループ処理に変更し、`$pathes`内の各パスをSOYCMSのURLと結合して表示する。これにより、複数のアップロード画像の確認用リンクがメールに記載されるようになる。

 

社会人・学生向けプログラミング教室でGoogleフォームの拡張の勉強会を行いました

/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、GoogleフォームをGASでカスタマイズする勉強会を実施しました。前回に続き、今回はGoogleフォームで作成したお問い合わせフォームに、複数人への通知機能を追加しました。具体的には、Googleスプレッドシートの名簿に記載されたメールアドレス宛にも、お問い合わせ通知メールが送信されるようGASで機能拡張を行いました。次回は、お問い合わせ内容に基づきメール文面を動的に生成する方法を学ぶ予定です。

 

SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにした

/** Geminiが自動生成した概要 **/
SOY CMSの標準ページでブログページのサイドバー(b_block)を使えるようにするモジュールを追加しました。標準では検索結果ページなどでb_blockが使えず、不便でした。このモジュールは `<!-- cms:module="common.blogparts" cms:blog="ブログID" -->` で囲むだけで、指定ブログのb_blockが使用可能になります。ブログIDはブログ詳細画面のURL末尾から取得します。カテゴリ一覧、月別アーカイブ、最近の記事/コメント/トラックバック一覧などに対応。Gravatar連携は別プラグイン推奨。パッケージはsaitodev.co/soycms/からダウンロード可能です。

 

SOY Shopでカテゴリ用のカスタムサーチフィールドを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopはカテゴリ向けカスタムサーチフィールドを追加。既存のカスタムサーチフィールドに統合し、カテゴリ詳細検索を強化しました。これにより、親子関係を超え、特定の条件を満たす複数カテゴリに紐付く商品を検索可能に。より詳細な商品検索フォームの設置を実現します。新機能は公式サイトで提供中です。

 

ApacheサーバでBrotliを使用してみた

/** Geminiが自動生成した概要 **/
常時SSL化はSEO上効果がある。GoogleはHTTPSをランキングシグナルとして使用しており、サイトのセキュリティ向上はユーザー体験の向上に繋がるため、間接的にSEO効果が見込める。ただし、HTTPS化自体が劇的なランキング上昇をもたらすわけではない。相対的にHTTPサイトより優位になる程度の影響と考えられる。また、サイト表示速度の向上も期待できるが、適切な設定が必要。常時SSL化は必須事項となりつつあり、SEO対策としてだけでなく、セキュリティ向上とユーザーへの信頼感醸成という観点からも重要である。

 

カスタムサーチフィールドでラジオボタン等の検索項目の多言語化対応を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのカスタムサーチフィールドに、ラジオボタンなどの検索項目の多言語対応が追加されました。管理画面で各言語ごとに項目を設定することで、公開側では検索フォームの項目が自動的に多言語化され、検索も多言語の値に対応します。これにより、多言語サイトにおける高度な検索フォームの設置が容易になります。

 

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

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

 

SOY Shopでフォーマットなしの商品価格を表示する

/** Geminiが自動生成した概要 **/
SOY Shopで商品価格の数字をカンマ無しで表示したいという要望に応えるため、カンマなし商品価格表示プラグインを作成した。標準機能のcms:id出力ではPHPのnumber_format関数により価格にカンマが入ってしまうため、プラグインでnumber_format関数をかまさないcms:idを追加する。プラグイン有効化後、テンプレートを修正することでカンマなし価格が表示される。プラグイン導入により、不要なユーザーに余計な処理負荷をかけることなく要望に対応できる。対応版パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能。

 

Ubuntu版BracketsのBeautifyの設定

/** Geminiが自動生成した概要 **/
BracketsエディタのプラグインBeautifyでPHPファイル保存時の自動改行を停止しようと試みたが、設定変更は断念。PHPの終了タグ`?>`の後の改行が不要だったのが理由。しかし、最近のPHPコード規約では、PHPのみのファイルでは終了タグ自体が不要と知り、全ファイルから`?>`を削除することに。結果として、Bracketsの自動改行挿入設定は変更せずそのままとした。

 

D3.jsの4.X系で折れ線グラフを作成してみた

/** Geminiが自動生成した概要 **/
D3.jsを3系から4系にバージョンアップして折れ線グラフを作成した際の変更点についての記事です。4系ではscale関連の記述方法が変わり、`d3.scale.linear()`が`d3.scaleLinear()`に、`d3.scale.ordinal().rangePoints()`が`d3.scalePoint()`に変更されました。特に`scalePoint()`を見つけるのに苦労したようです。また、`d3.axis.svg.axis()`が`d3.axisBottom()`のようにシンプルになりました。これらの変更点に苦労しつつも、無事にグラフ作成できたことが記述されています。

 

人はネットワーク内から新しい信用のあり方を発見した

/** Geminiが自動生成した概要 **/
ビットコインの信用は、ブロックチェーンという技術に基づいています。取引記録をブロックにまとめ、暗号技術を用いて安全性を確保し、世界中のコンピュータに分散保存することで改ざんを防ぎます。マイナーと呼ばれる人々がトランザクションを検証しブロックチェーンに追加することで、ビットコインが生成されます。この検証作業には高度な計算が必要で、成功したマイナーは報酬としてビットコインを受け取ります。この報酬システムと分散管理によって、ビットコインの信用と不正防止が実現されています。

 

SOY CMSとSOY Shopで会員制ブログを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSはショップ系サイト開発に注力しているため、ブログ機能は弱いというイメージがあるが、ショップ特有のセキュリティ強化により、安全な会員制ブログ構築が可能になっている。方法は、SOY CMSとSOY Shopをそれぞれ顧客管理用とブログ投稿用に設置し、ブログ投稿サイトにSOY Shop連携プラグインとSOY Shopログインチェックプラグインを導入する。ログインチェックプラグインで顧客管理サイトを指定し、ブログ記事のテンプレートを編集。`cms:id="is_login"`でログイン時表示部分を、`cms:id="no_login"`で非ログイン時表示部分を囲むことで、閲覧制限を実現する。非ログイン時にはログインページへのリンクが表示され、ログイン後は制限されていたコンテンツが閲覧可能になる。この仕組みにSOY Mailを連携させれば、顧客情報に基づいたメルマガ配信も可能。HTMLのみで構築できるため、デザインの自由度やSEO対策も容易で、有料ブログや有料メルマガへの拡張も容易である。

 

SOY Shopのプラグインやモジュールの複製方法

/** Geminiが自動生成した概要 **/
SOY Shopのプラグイン複製は、対象ディレクトリ(例:payment_furikomi)を丸ごと複製し、名前を(例:payment_furikomi2)に変更する。ファイル名、クラス名、モジュールID(payment_furikomi→payment_furikomi2、PaymentFurikomi→PaymentFurikomi2など)を全て変更する。module.iniのモジュールIDも修正。拡張ポイントファイル(soyshop.***.php)やUtilクラスなども同様に置換。HTMLファイルは修正不要。PHPの知識があれば複製後、自由に修正可能。

 

SOY Shopの注文検索と顧客検索の結果をSOY Mailで利用する機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文・顧客検索機能が強化され、SOY Mailとの連携が向上しました。注文検索では顧客情報、商品、金額等の絞り込みが可能になり、顧客検索では購入合計と購入回数が追加されました。また、顧客属性の一括設定とCSV出力も実装。これらの機能拡張により、SOY Shopの注文状況に基づいたメール配信が容易になり、SOY Mailの下書き自動保存機能と合わせてメールマーケティングの効果的な運用を支援します。最新パッケージはGitHubからダウンロード可能です。

 

SOY CMSで新着情報をトップページに表示してみる

/** Geminiが自動生成した概要 **/
SOY CMSのブログでプレビュー用のページを作成する方法は、記事公開前に特定ユーザーだけに内容を確認させるためのものです。まず、ブログページとは別にプレビュー用の隠しページを作成し、ブログ記事と紐づけます。プレビューページのテンプレートには、ブログ記事の内容を表示するための記述を追加します。次に、ブログ記事編集画面にプレビューページへのリンクを追加します。このリンクは、特定の条件下でのみ表示されるように設定します。具体的には、記事の公開状態が非公開で、ログインしているユーザーがプレビュー権限を持っている場合にのみ表示させます。これにより、指定したユーザーだけがプレビューページにアクセスし、記事の内容を確認できるようになります。この方法を利用することで、公開前の記事を安全に確認し、修正を行うことができます。

 

SOY Mailで誕生日で絞り込みを追加しました

/** Geminiが自動生成した概要 **/
SOY Shop連携機能を持つSOY Mailに誕生日検索機能が追加されました。顧客の誕生月を指定してメルマガ配信が可能になり、誕生月キャンペーンなどの告知に活用できます。月のフォームに数字を入力することで、指定の月に誕生日を迎える顧客のみにメールを送信できます。この機能はSOY Shop連携時にのみ利用可能です。ダウンロードはGitHubのsoycmsリポジトリ(packageディレクトリ)から行えます。

 

SOY Shopでカートに一括で商品を入れてみる

/** Geminiが自動生成した概要 **/
SOY Shopでカートに複数商品を一括登録する方法。商品詳細ページのテンプレートに `<input type="hidden" name="item[]" value="商品ID">` を複数記述することで実現できる。`<form cms:id="item_cart_default_form">` で囲まれたフォーム内に、hiddenで指定した商品IDのinput要素を配置する。カートに入れるボタンを押すと、これらのhiddenの値が商品IDとしてカートに追加される。

 

接続元IPアドレスを知られたくない時にすること

/** Geminiが自動生成した概要 **/
SOY CMSで総当たり攻撃への対策として、ログイン試行回数制限とアカウントロック機能を実装する方法が解説されている。記事では、PHPでログイン処理をカスタマイズし、データベースにログイン試行回数を記録、一定回数を超えるとアカウントをロックする仕組みを構築している。具体的なコード例も示され、ログイン試行回数の記録方法、ロック時間の管理、管理画面からのロック解除方法などが説明されている。これにより、総当たり攻撃による不正ログインを防ぎ、サイトのセキュリティを高めることができる。さらに、ログイン画面にCAPTCHAを導入することで、ボットによる自動攻撃への対策も強化できる。

 

インターネット内に流れているパケットを傍受してみる

/** Geminiが自動生成した概要 **/
WordPressなどのCMSは総当り攻撃の標的になりやすく、特にログインページがhttpの場合、IDとパスワードが傍受されやすい。Wiresharkのようなツールを使えば、ネットワーク上のパケットを解析し、http通信のログイン情報を簡単に盗み見ることが可能。httpsは通信を暗号化するため、傍受されても内容は解読できない。カフェなどのフリーWi-Fiでhttpのログインページを使うのは危険。https化はセキュリティ対策だけでなく、HTTP/2.0による高速化にも繋がるため重要。また、メールもhttpと同様に暗号化されていないと傍受される可能性があるため注意が必要。

 

WordPressのウィジェットを作ってみた2

/** Geminiが自動生成した概要 **/
WordPressウィジェット作成の続きで、設定画面を追加する方法を解説。前回作成したウィジェットにフォームを追加し、入力値を`$instance`に格納、`update`メソッドで保存、`widget`メソッドで表示する処理を実装。フォームの追加は`form`メソッド内でHTMLを記述、`update`メソッドでは入力値のサニタイズを行い、`widget`メソッドで`$instance`から値を取得し表示。管理画面と公開側で動作確認を行い、意図通り表示されることを確認し、簡易的なウィジェット作成が完了した。

 

WordPressのウィジェットを作ってみた1

/** Geminiが自動生成した概要 **/
WordPressプラグインのPHP記述を簡略化するため、ウィジェットを作成する方法を紹介。ウィジェットとは、プラグイン的な機能をサイドバーなどに挿入できる機能。HogeWorldウィジェットを作成し、hoge_world_widget.phpにWP_Widgetクラスを継承したコードを記述。プラグインを有効化し、ウィジェットをサイドバーに挿入することで"hoge world!!"と表示されることを確認。設定画面の追加については次回へ続く。

 

SOY CMS/Shopのブロックで最後とそれ以外のデータで表示を変えたい

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのブロックで、リストの最初と最後で表示を変える方法を紹介。`soy:id="at_last"`と`soy:id="not_last"`を使えば、最後の要素だけ、または最後以外の要素だけに特定のHTMLを出力できる。例えば、記事一覧で最後の記事の下にだけ太線を表示するといったことが可能。 さらに、`soy:id="at_first"`と`soy:id="not_first"`と組み合わせることで、より複雑な表示制御が可能になる。例えば、カテゴリ一覧で最初の要素にのみカテゴリタイトルと`<ol>`タグを出力し、最後の要素にのみ`</ol>`タグを出力することで、無駄なHTMLを出力せずに済む。

 

SOY CMS/Shopのブロックで最初とそれ以外のデータで表示を変えたい

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのブロックで、記事一覧表示の際に最初の要素とそれ以降で表示を変える方法を紹介しています。HTMLListクラスの`soy:id="at_first"`と`soy:id="not_first"`を用いることで、最初の記事ではサムネイルを200px、2つ目以降の記事では150pxで表示する例を挙げています。具体的なコードも示されており、画像のサイズ変更にはサーバサイドの画像圧縮機能を活用しています。さらに、`cms:id="content" cms:length="250"`で記事本文を250文字に要約して表示する方法にも触れています。

 

WordPressのプラグインを作ってみた2

/** Geminiが自動生成した概要 **/
WordPressプラグイン開発の続き。プラグイン用の管理画面を作成し、設定値を反映させる方法を紹介。add_action('admin_menu')で管理画面へのメニュー登録、add_menu_page()でメニュー表示設定、hoge_world_option_page()で管理画面のHTMLを記述。get_option()で設定値取得、update_option()で設定値保存。フォームからの入力値を保存し、更新メッセージを表示する処理を追加。最後に、保存した設定値(名前)をプラグインの出力に反映させ、公開側で表示を確認した。

 

CMSに不正にログインした後、何をする?

/** Geminiが自動生成した概要 **/
SOY CMSに不正ログイン後、ファイルマネージャからのPHPアップロードは不可だが、フロントコントローラ(index.php)に悪意あるPHPコードを埋め込み可能。これにより、サイト閲覧時に勝手にメール送信などの踏み台攻撃が可能になる。対策はindex.phpの書き込み権限を外すこと。SOY ShopのテンプレートやPHPモジュールも悪用されうる。

 

SOY CMSに総当り攻撃を仕掛けてみる。その4

/** Geminiが自動生成した概要 **/
Go言語で書かれたSOY CMSへの総当り攻撃スクリプトを改良し、CSVファイルからIDとパスワードを読み込むように変更した。これにより、コードの可読性が向上し、辞書を使い回せるようになった。 実行結果から、指定のIDとパスワードでログイン成功を確認。今後の課題として、メモリ効率の改善、対象サイトURLの指定、ログイン成功時の判定処理などが挙げられている。

 

SOY CMSのブログで記事表示順番号(通し番号)を出力させたい

/** Geminiが自動生成した概要 **/
SOY CMSのブログで記事の表示順番号(通し番号)を出力する方法を紹介します。記事一覧を出力するブログテンプレートで、`<div>この記事は何記事目?→<strong><!-- soy:id="index" --></strong>1<strong><!-- /soy:id="index" --></strong>記事目</div>`のように`soy:id="index"`を記述することで、記事の表示順番号が出力されます。これはSOY2HTMLのHTMLListクラスの機能を利用しています。HTMLListには最初/最後の記事用のタグや、特定の条件に一致する記事用のタグなども用意されています。

 

SOY CMSに総当り攻撃を仕掛けてみる。その3

/** Geminiが自動生成した概要 **/
Go言語で書かれたコードを用いて、SOY CMSへの総当たり攻撃を試行。パスワード候補の配列を定義し、ループ処理でログインを試みる。一致するパスワードが見つかった場合、処理を中断し「ログイン成功」とID、パスワードを表示する。今回は"********"でログイン成功。このコードはパスワード候補を増やすことで、複雑なパスワードでも突破可能。しかし、SOY CMS側では複数回ログイン失敗するとエラーが表示される対策が取られていることが確認された。

 

SOY CMSに総当り攻撃を仕掛けてみる。その2

/** Geminiが自動生成した概要 **/
Go言語でSOY CMSへの総当り攻撃コードを改良した。前回はトークンチェックで攻撃が無効化されたため、今回はトークン取得とセッションキー保持の処理を追加した。具体的には、ログインページからトークン値を抽出し、自作のCookieJarを用いてセッションキーを保持することで、正規のログインと同様にトークンを送信できるようにした。この改良により、辞書攻撃が可能になった。 最後に、管理画面URLの特定の容易性と攻撃のしやすさを指摘し、URLを複雑にする、IDを辞書攻撃されにくいものにするなどの対策の必要性を訴えている。

 

SOY CMSに総当り攻撃を仕掛けてみる。その1

/** Geminiが自動生成した概要 **/
SOY CMSへの総当たり攻撃を試行する記事。Go言語でログインを試みるコードを作成し、IDとパスワードを固定で送信、ログイン失敗を確認。本来は辞書データを用いて繰り返し実行する計画だったが、SOY CMSのログインフォームにトークンのチェックがない事を発見。GitHubで管理しているコードにトークンチェックを追加し、攻撃を阻止した。

 

予約フォーム開発でSOY Shopのマイページを活用する

/** Geminiが自動生成した概要 **/
SOY Appで予約フォームに会員機能を追加する際、SOY Shopのマイページ機能を活用することで開発工数を削減できる。ログイン画面への遷移は、URLパラメータ`r`にリダイレクト先を指定することでログイン後に元の予約フォームへ戻れる。本記事では、会員登録後も同様に`r`パラメータでリダイレクト先を指定することで、登録完了後に予約フォームへ戻れるよう改良したパッケージをGitHubで公開している。この仕組を活用すれば、会員限定ページへのアクセス制御なども容易に実装できる。

 

SOY CMSの記事投稿画面で絵文字を使いたい

/** Geminiが自動生成した概要 **/
SOY CMSの記事投稿画面にYouTube動画の挿入ボタンを追加する方法を紹介します。TinyMCEのプラグインを自作することで実現できます。まず、プラグイン用のJavaScriptファイルを作成し、動画URLの入力フィールドと挿入ボタンを配置します。次に、ボタンクリック時の処理を記述し、入力されたURLから埋め込みコードを生成、エディタに挿入します。この際、正規表現を用いてURLの形式を検証し、不正なURLは受け付けないよう実装することで安全性を高めます。作成したJavaScriptファイルをTinyMCEの設定ファイルに読み込み、ツールバーに自作プラグインのボタンを追加することで、記事投稿画面から手軽にYouTube動画を埋め込めるようになります。

 

SOY Shopで高度な検索フォームを設置してみよう

/** Geminiが自動生成した概要 **/
SOY Shop用のプラグイン「カスタムサーチフィールド」の紹介。このプラグインは、高度な検索フォームをサイトに簡単に設置できる。カスタムフィールドのように項目を追加し、生成されたタグを貼り付けるだけでフォームが表示される。商品カタログサイトでの活用が想定され、複数選択可能なチェックボックスフィールドをタグのように使う事例もある。カスタムフィールドからのデータ移行も可能。プラグインはsaitodev.co/soycms/soyshop/ からダウンロードできる。

 

Go言語で認証鍵を使ってSSHの接続を行う

/** Geminiが自動生成した概要 **/
Go言語でSSHの秘密鍵認証によるリモートサーバ接続を実装する方法が紹介されています。 `ioutil.ReadFile` で秘密鍵ファイル(id_rsa.pem)を読み込み、`ssh.ParsePrivateKey` でパース、`ssh.PublicKeys` で公開鍵を設定することでパスワード認証から秘密鍵認証に変更できます。`id_rsa.pem` ファイルは `openssl` コマンドで `id_rsa` から変換する必要があります。 サンプルコードでは、接続後、リモートサーバに空ファイルを作成する処理を実行しています。

 

中学生にプログラミングを教えてみて。その4

/** Geminiが自動生成した概要 **/
中学生にプログラミングを教える中で、コンピュータが0と1で動く仕組みを理解させるため、C言語で書いたコードをアセンブリ言語、さらにバイナリの実行ファイルに変換する過程を見せた。苦Cとコンピュータサイエンスの教科書を参考に、gccコマンドでアセンブルとコンパイルを行い、出力されたhoge.sとa.out(バイナリ)を提示。バイナリエディタで16進表示されたa.outから2進数での動作を想像させ、理解を促した。後々「コンピュータシステムの理論と実装」が理解を深める上で役立つと気づいた。

 

SOY Inquiryでお問い合わせフォームの確認画面で指定の箇所までジャンプしたい

/** Geminiが自動生成した概要 **/
SOY Inquiryで確認画面をフォームの先頭に表示する方法です。まず、form.phpの`<form>`タグに`action="#confirm"`を追加します。次に、confirm.phpの入力内容確認箇所の直前に`<div id="confirm"></div>`を挿入します。これで、確認画面表示時にフォームの先頭にジャンプします。完了画面にも適用する場合は、complete.phpでも同様の操作を行います。ただし、この方法ではURLに#confirmが残ります。URLを綺麗にしたい場合は、PHPでaction属性を動的に指定する必要があります。

 

SOY Inquiryでアップロードフォームを設置した時、確認メールで画像を確認したい

/** Geminiが自動生成した概要 **/
SOY Inquiryでアップロードフォームを複数設置した場合、確認メールで全ての画像URLを確認する方法を紹介します。標準では管理画面でしか確認できませんが、メールテンプレートをカスタマイズすることで実現可能です。 `/インストールディレクトリ/app/webapp/inquiry/src/template/default/mail.admin.php` に記述を追加します。`$comments` から各コメントのコンテンツを取得し、正規表現で `<img src="">` タグ内のURLを抽出します。抽出したURLにサイトURLを付加して、確認メールの末尾に「添付ファイル」として表示します。複数画像に対応するため、ループ処理で全てのコメントをチェックし、画像URLを追記していきます。これにより、確認メールで全てのアップロード画像を直接確認できるようになります。

 

SOY Shopで商品詳細ページの下に同じカテゴリの商品一覧を表示する

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページ下部に、同カテゴリ商品一覧を表示する方法を解説。 パーツモジュールを追加し、IDを「parts.item_list」、モジュール名を「商品一覧モジュール」とする。 モジュール内では、商品詳細ページの場合のみ、表示商品のカテゴリIDを取得し、DAOで同カテゴリの公開商品を取得、`SOYShop_ItemListComponent`を用いて商品一覧ブロックを生成する。 商品詳細テンプレートに`shop:module="parts.item_list"`を記述し、内部に`block:id="item_list_by_detail"`と商品表示用のcms:idを記述することで、一覧表示を実現する。 カート追加機能も確認済。 パーツモジュールを活用すれば、簡単なプラグイン機能を開発可能。

 

golangでテストを書いてみたのでメモ

/** Geminiが自動生成した概要 **/
Go言語のテスト方法についての記事です。`sample.go`に`MakeRandomString`(ランダム文字列生成)と`Convert`(MD5ハッシュ化)関数を定義し、`sample_test.go`にテストコードを書きます。`Test`+関数名でテスト関数を定義し、`t *testing.T`を引数に取ります。`Convert`関数のテストでは、空文字やハッシュ化前文字列と等しい場合に`t.Error("failed")`でエラーとします。`go test`コマンドでテストを実行し、`PASS`なら成功、`FAIL`なら失敗となります。`MakeRandomString`関数のテストでは、2回生成した文字列が同じであればエラーとしています。

 

Golangのsessionの取り扱いの際の型で苦戦した

/** Geminiが自動生成した概要 **/
Go言語でgorilla/sessionsを使ってセッションを扱う際、セッションから取得した値の型がinterface{}となり、string型の構造体フィールドに代入できない問題が発生した。ログ出力ではstring型に見えたが、構造体への代入時に型エラーが発生。stringへの型アサーションを試みても解決せず、最終的に構造体のフィールド型をinterface{}に変更することで回避した。セッション値取得時の動的な型定義と構造体の静的な型チェックの不一致が原因と考えられる。より良い解決策を模索中。

 

SOY InquiryのレスポンシブとHTML5対応

/** Geminiが自動生成した概要 **/
SOY Inquiryを使ってレスポンシブデザインのお問い合わせフォームを作成する方法を紹介しています。レスポンシブデザインとは、PCとスマートフォンでそれぞれ見やすい表示になるよう自動調整されるWebデザイン手法です。設定は、フォーム設定で「responsive」を選び、スタイルシートを読み込むをチェックするだけ。HTML5のrequired属性にも対応し、必須項目の未入力時に警告を表示できます。設定はカラム設定で「required属性を利用する」をチェックするだけ。pattern属性も利用可能で、入力パターンの指定ができます。フォームの属性にpattern="正規表現"を追加するだけで設定できます。ただし、住所検索機能とは競合するため注意が必要です。ダウンロードやフォーラムへのリンクも記載されています。以前の記事「スマホ対応のお問い合わせフォームを作ってみた」の内容を元に、更に機能が追加されています。

 

検索フォームと検索結果ページを作ってみた3

/** Geminiが自動生成した概要 **/
SOY CMSで検索機能を実装する方法を解説。`/site(サイトID)/script/soycms_search.php`に検索スクリプトを記述。SQLで記事タイトル、本文、追記フィールドを検索し、公開期間内の記事を抽出。結果はEntryオブジェクトに変換後、配列`$soycms_search_result`に格納。テンプレートには`<form method="get" action="/search">`で検索フォームを設置し、クエリパラメータ`q`で検索文字列を受け取るようにする。`$dao->getObject($row)`で検索結果をEntryオブジェクトに変換することで、テンプレートに記述した`<!-- block:id="result" -->`で表示可能になる。

 

スマホ対応のお問い合わせフォームを作ってみた

/** Geminiが自動生成した概要 **/
SOY Inquiryでスマホ対応のレスポンシブなお問い合わせフォームを作成する方法を紹介。標準のフォームはスマホで表示が崩れるため、新しいテンプレートを作成し、HTMLを`<dl>`タグに変更することで解決。`/cmsインストールディレクトリ/app/webapp/inquiry/src/template/`以下にresponsiveディレクトリを作成し、サンプルファイルをコピー。form.phpのテーブル表示を`<dl>`に変更。設定画面でデザインをresponsiveに変更することで、PC・スマホ両対応のフォームが完成。確認画面(confirm.php)と完了画面(complete.php)も同様に`<dl>`タグを用いて修正することで、一貫したデザインを実現。

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

Powered by SOY CMS   ↑トップへ