ブログ内検索

プログラミング教室
最近興味があることや肥料教室についてのメルマガを配信しています
検索キーワード:「CLI」
 

自家製バイオ炭に含まれている可能性があるタールについての続き

/** Geminiが自動生成した概要 **/
自家製バイオ炭に残留し得るタール(多環芳香族炭化水素:PAHs)の毒性について解説しています。PAHsは植物の細胞膜を容易に透過し、根に浸透。牧草アルファルファの実験では、PAHsが活性酸素産生を増大させ、光合成阻害や代謝調整の乱れを引き起こし、根においても壊死に繋がる可能性が示唆されています。記事は、タールを含まないバイオ炭の利用を推奨。もしタールが残存する場合は、発根促進を意識し、粘土鉱物や植物性堆肥と併用して物理性・保水性を高める使い方を提言しています。

 

自家製バイオ炭に含まれている可能性があるタールについて

/** Geminiが自動生成した概要 **/
オンライン肥料教室でクリの木栽培の保水性向上策としてバイオ炭施肥が挙がる中、自家製バイオ炭に含まれるタール毒性への懸念から、その実態を解説。バイオ炭は生物由来成分を無酸素燃焼させた炭で、リグニン等のベンゼン環が集まり形成されます。タールとは、バイオ炭形成初期の、ベンゼン環が複数集まった化合物群「多環芳香族炭化水素(PAHs)」の総称です。市販品はPAHsが管理されていますが、自家製では意識されにくいため、その毒性を理解することの重要性を指摘。次回記事で毒性の詳細が語られます。

 

クリップボード作りの会を開きました

自宅で開いているプログラミング教室の保護者向けの時間でクリップボード作りの会を開きました。 Python3でクリップボード作りを行い、クリップボード(コピー & ペースト)がどのようにして動いているのかを体験して頂きました。 Python3ではありませんが、シェルスクリプトで作ったクリップボードについてはクリップボードを自作する - プログラミング教材開発に記載があります。 自宅で開いている教室についてはエディタの会を開きましたをご覧ください。

 

SOY Shopで郵送(クリックポスト)モジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop向けに、日本郵便の格安配送サービス「クリックポスト」を活用した配送モジュールがリリースされました。クリックポストは全国一律185円で、自宅でラベル作成・決済、追跡、ポスト投函が可能な手軽なサービスです。 この新モジュール導入により、SOY Shopでは以下の機能が利用できます。 * カートでの配送方法に「郵送」を追加 * 商品個数に応じた個口設定 * 合計金額に応じた送料無料設定 * 管理画面から郵送注文を抽出し、クリックポスト依頼用のCSV出力 フリマや個人取引に最適なこのモジュールは、指定サイトからダウンロード可能です。

 

Githubの会を開きました

/** Geminiが自動生成した概要 **/
自宅のプログラミング教室にて、保護者向けに「Githubの会」を開催しました。このイベントでは、Python3のTkinterで作成したGUIアプリを題材に、Githubを用いた効率的なバージョン管理と共同開発の基礎を実践的に体験していただきました。プログラミング学習を進める上で欠かせないGithubの仕組みを理解し、自身の開発プロジェクトで活用するための第一歩となる貴重な機会となりました。

 

Gemini CLIの会を開きました

/** Geminiが自動生成した概要 **/
2026年2月15日、自宅のプログラミング教室にて、保護者を対象とした「LinuxでGemini CLIの会」が開催されました。本イベントでは、Linux環境でGoogle Geminiの機能をコマンドラインから利用するGemini CLIの基本的なインストール方法から実践的な使い方までを、ハンズオン形式で学習。参加者は、ターミナル操作に不慣れな方でもGemini CLIの活用法を習得できる、貴重な体験を得ました。詳細なインストール手順などは、別記事で解説しています。

 

自宅で親子で学ぶプログラミング教室のオープンしました

/** Geminiが自動生成した概要 **/
2025年の振り返りとして、念願だった自宅での「親子で学ぶプログラミング教室」オープンが報告されました。妻が主体となり、補助金申請から生徒募集までを担当し、初年度の目標生徒数を達成。 本教室はmicro:bitを主要教材とし、小学生はMakeCode、希望する保護者はMicroPythonで学びます。特徴は、前半が小学生向け、後半が保護者向けの時間に分けられている点。保護者向けでは、当初予想に反して音響機器のIoT化やGPS機器の自作といった電子工作が人気でした。貸出PCにはRaspberry Pi 5やChromebookを用意。 今後は、LEGOでのラジコンカー製作やIoT機器の仕組み学習を通じ、小さな街の再現を目指す計画です。

 

リナロールの酸化

/** Geminiが自動生成した概要 **/
キンモクセイの香りの主成分リナロールの酸化過程に焦点を当てた記事。リナロールが酸化し生成される「リナロールオキシド」は、酸化と分子内環化を経て形成され、フラン型(五角形の酸素環)とピラン型(六角形の酸素環)の異性体混合物として存在すると解説しています。フラン型は過去記事で触れられ、ピラン型については過去記事やWikipediaの情報を引用し、1個の酸素原子を含む6員環のエーテル化合物であることが明らかにされます。本記事では、リナロールオキシドの複雑な環化構造の多様性を探求しています。

 

メイラード反応の中間段階まで

/** Geminiが自動生成した概要 **/
本記事は、メイラード反応の複雑な中間段階を深掘りします。導入では、コーヒーの香気成分であるジメチルピラジンが、植物病原菌に対し抗菌作用を示す可能性に言及。メイラード反応の初期段階であるアマドリ化合物(フルクトースリシンなど)から、脱水・分解を経てジカルボニル化合物(3-デオキシグルコソン:3-DG)が生成される過程を解説します。さらに、この3-DGがメチルグリオキサールやフラネオールへと変化する中間段階までを詳述。フルクトースがアマドリ化合物を経由せず3-DGになる経路も紹介し、メイラード反応の奥深さを紐解きます。

 

ゼオライトのCEC

/** Geminiが自動生成した概要 **/
ゼオライトはSi/Al比が低いほどCECが高まりますが、Alからの脱アルミ化によりCECが高いゼオライトほど風化耐性が低いとされます。本記事では、この仮説に基づき、産業利用される硬質ゼオライトのモルデナイトと軟質ゼオライトのクリノプチロライトのCECを比較検証しました。文献調査の結果、モルデナイトのCECが117〜169、クリノプチロライトが118〜175と、軟質ゼオライトの方が全体的に高いという当初の予想に反し、両者に大きな差は見られませんでした。むしろ、ゼオライトの種類よりも採掘場所によるCECの変動が大きいことが示唆されました。

 

ゼオライトの風化

/** Geminiが自動生成した概要 **/
「ゼオライトの風化」に関するブログ記事は、硬質モルデナイトと軟質クリノプチロライトに触れた前回の記事から、ゼオライトの風化耐性に着目しています。記事によると、ゼオライトの風化は主に「脱アルミ化」によって進行します。古い論文を引用し、アルミニウムが溶脱することでゼオライトのケイ素骨格が分断されるメカニズムを解説。さらに、分断された骨格からケイ酸が溶脱して構造が小さくなり、最終的には溶脱したアルミニウムとケイ酸が安定な粘土鉱物へと変質していく過程が説明されています。

 

軟質ゼオライトのクリノプチロライト

/** Geminiが自動生成した概要 **/
本記事は、天然ゼオライトの理解を深めるべく、軟質ゼオライト「クリノプチロライト」に焦点を当てています。ゼオライトには硬質のモルデナイトと軟質のクリノプチロライトが存在することが分かり、クリノプチロライトの化学組成とSi/Al比(3.5〜5)を紹介。硬質モルデナイトのSi/Al比(4.5〜5.5)と比較し、Si/Al比が低い、すなわちアルミニウム含有量が高いほどゼオライトが軟質になるのではないかという仮説を提示し、そのメカニズムや風化との関連について考察を深めています。また、クリノプチロライトの骨格コードは「HEU」であると述べています。

 

ゼオライトの骨格コードとSi/Al比

/** Geminiが自動生成した概要 **/
ゼオライトは天然と人工があり、人工ゼオライトは高機能化が開発の主要因です。その機能は、ケイ素(Si)骨格にアルミニウム(Al)が入り込むことで負に荷電し、陽イオン交換能を持つことに起因します。この陽イオン交換能は肥料の保肥力(CEC)として土壌改良に貢献します。ゼオライトの機能は、骨格の形(骨格コードで分類)やSi/Al比によって異なり、例えばモルデナイトはMOR型に分類され、理想的なSi/Al比は5、実際は4.5〜5.5の範囲です。

 

限りなき旅路

/** Geminiが自動生成した概要 **/
10年間毎日投稿を続けた筆者が、節目を振り返ります。この10年で最も印象深かったのは「緑色片岩」との出会いです。全国各地を巡り、土の始まりである母岩の理解を深める中で、それが農業生産性、特に稲作の品質と密接に関わることを発見しました。また、緑色の岩石には興味深い地域の伝承や日本の歴史との繋がりがあることも知りました。得られた知見を協力者の田で実践し、米の品質・収量を地域トップクラスに向上させ、講演の機会も得ました。今後は知見を共有し、学びの「限りなき旅路」を続けると結んでいます。

 

ロボットによる有機農業の自動化を目指すトクイテンさんの自社圃場を訪問

/** Geminiが自動生成した概要 **/
トクイテンさんの自社農場を訪問し、ロボットによる有機農業の自動化に向けた取り組みを見学しました。特に、トマト栽培の簡易化を目指すロボット開発に感銘を受けました。様々な創意工夫が凝らされており、得られた知見が他の作物にも応用できる可能性を感じました。今後、何らかの形でトクイテンさんの取り組みに関わっていきたいと考えています。

 

脂質の酸化再び

/** Geminiが自動生成した概要 **/
活性酸素の一種であるヒドロキシラジカルは、脂質の不飽和脂肪酸と反応し、脂質ラジカルを生成します。 脂質ラジカルは酸素と反応して脂質ペルオキシルラジカルとなり、さらに他の不飽和脂肪酸と反応して脂質ペルオキシドとなります。 一度始まった脂質の酸化は連鎖的に進行し、脂質ペルオキシドは新たな活性酸素の発生に関与する可能性も示唆されています。

 

コトブキ園さんから恵壽卵を頂きました2024

/** Geminiが自動生成した概要 **/
神奈川県の養鶏場「コトブキ園」から「恵壽卵」を贈呈された。本記事は、以前贈呈された「恵壽卵」に関する記事を参照する。 「恵壽卵」は、こだわりの飼料で育てられた鶏から産出され、味と栄養価に優れている。動画では、贈呈された卵の開封と調理の様子が紹介されている。 関連情報として、「有機質肥料と飼料の類似性」や「コトブキ園から贈呈された『長壽焼ぷりん』」の記事が挙げられている。

 

末延農園さんのReaper Death麺を食べてみた

/** Geminiが自動生成した概要 **/
末延農園さんの「Reaper Death麺(激辛)」は、想像を絶する辛さでした。普段から辛い物に強い私でも、涙と汗が止まらないほどの激辛です。 袋には「内蔵が弱い人や明日大事な予定がある人は食べてはいけない」と注意書きがありますが、まさにその通り。ドライアイが一時的に解消されるほどの辛さは、もはや罰ゲームレベルです。 この辛さの秘密は、世界一辛い唐辛子「キャロライナ・リーパー」。末延農園さんでは、国産キャロライナ・リーパーの栽培から加工・販売までを一貫して行っています。 「Reaper Death麺」はAmazonで購入可能です。辛い物好きの方は、ぜひ挑戦してみてください!

 

Minecraft: Pi Edition: RebornのSDKを使ってゴールデンシャベルを追加してみた

/** Geminiが自動生成した概要 **/
この記事は、Minecraft: Pi Edition: Reborn (MCPI++) のSDKを使って、ゲームに「ゴールデンシャベル」を追加する方法を解説しています。 まず、MCreatorを使って16x16ピクセルのゴールデンシャベルのアイコン画像を作成し、既存のitems.pngに挿入します。次に、C++で書かれたgoldenshovel.cppを作成し、アイテムの追加、アイコンの設定、ゲーム内での表示名などを定義します。最後に、CMakeを使ってコードをコンパイルし、生成されたライブラリファイルをmodsディレクトリに配置することで、ゴールデンシャベルがゲームに追加されます。 記事では、コードの各部分がどのような役割を持っているか、また画像ファイルやCMakeLists.txtの設定方法などが詳しく解説されています。

 

Minecraft: Pi Edition: RebornのSDKを使ってみる2

/** Geminiが自動生成した概要 **/
この記事では、Minecraft: Pi Edition: Reborn (MCPI++) のSDKにあるライブラリを呼び出す方法を解説しています。 CMakeを使ってプロジェクトを作成し、SDKのヘッダーファイルをインクルードします。サンプルコードでは、libreborn.hをインクルードし、空の関数を定義しています。 CMakeLists.txtでは、SDKへのパスを設定し、ビルドターゲットとして共有ライブラリを作成しています。 ビルド後、生成されたライブラリをmodsディレクトリに移動し、MCPI++を起動して動作を確認します。

 

Minecraft: Pi Edition: RebornのSDKを使ってみる

/** Geminiが自動生成した概要 **/
Minecraft: Pi Edition: Reborn (MCPI) の拡張SDKを使い、ターミナルに"Helloworld"を出力する手順を紹介しています。 まずMCPI++ 2.4.3-3をインストールし、C++コンパイラなどの開発環境を整えます。 次に、"Helloworld"を出力するコードを記述した"hello.cpp"を作成し、共有ライブラリとしてコンパイル、MCPIのmodsディレクトリに配置します。 MCPIを実行すると、起動時に"Helloworld"が出力されます。これは、共有ライブラリ内の特定の関数がエントリポイントとして機能するためです。 記事では最後に、ゲーム画面に影響を与えるコードの作成に意欲を示しています。

 

アンモナイトから貝が巻くということを学ぶ

/** Geminiが自動生成した概要 **/
古代生物であるアンモナイトの巻き貝は、チョッカクガイに見られる円錐形の殻の進化から説明できます。 チョッカクガイの円錐形において、右側が大きく伸長し、左側が抑制的に成長すると、アンモナイトのような螺旋状の構造になります。 アンモナイトの規則的な渦巻きは、長い進化の過程を経て獲得されたものです。 NHK for Schoolの動画では、様々な形状のアンモナイトの化石を通じて、その進化の過程を垣間見ることができます。 貝に興味を持った方は、ぜひ動画をご覧ください。

 

ChromebookでMinecraft: Pi Edition: Rebornを動かしてみた

/** Geminiが自動生成した概要 **/
LXC (Linux Containers) は、単一のLinuxカーネル上で複数の分離されたLinuxシステム (コンテナ) を実行するためのOSレベルの仮想化手法です。各コンテナは独立したシステムリソース (CPU、メモリ、ネットワークなど) を持ち、ホストOSや他のコンテナから隔離されます。 LXCは、chrootのような従来の分離機構よりも軽量で効率的でありながら、仮想マシンよりもオーバーヘッドが少なくなっています。これにより、開発、テスト、運用環境において、アプリケーションの移植性、セキュリティ、リソース効率を向上させることができます。LXCは、DockerやLXDなどのコンテナ技術の基礎となっています。

 

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でスキンを変更してみた

/** Geminiが自動生成した概要 **/
この記事は、Minecraft: Pi Edition: Rebornでスキンを変更する方法を解説しています。 まず、好みのスキンをダウンロードします。次に、標準のスキンのPNGファイル(char.png)をバックアップし、ダウンロードしたスキンで置き換えます。この際、ファイルパスに注意が必要です。 スキンを変更後、デザイン崩れが発生する場合は、Pythonスクリプト(minecraft_skin_fixer.py)を使用して修正します。スクリプト内のファイルパスを自身の環境に合わせて変更する必要があります。 修正後、Minecraft: Pi Edition: Rebornを再起動すると、スキンが変更されているはずです。

 

BBC Micro:bitのプルダウン抵抗1

/** Geminiが自動生成した概要 **/
記事では、マイクロビットを使ってプルダウン抵抗の仕組みを解説しています。 まず、タクトスイッチと10kΩの抵抗を用いてプルダウン回路を構成し、ボタンを押すとマイクロビットのディスプレイのアイコンが変わるプログラムを作成しています。 記事では、プルダウン抵抗の詳細は後述するとして、動作するコードを示しています。 具体的には、マイクロビットのGPIO 0ピンに接続されたタクトスイッチが押されると、ディスプレイのアイコンが悲しい顔から笑顔に変化し、2秒後に再び悲しい顔に戻るというものです。 記事は、この動作例を通じて、プルダウン抵抗の役割について詳しく解説していくことを予告しています。

 

BBC Micro:bit、トランジスタとDCモータ再び

/** Geminiが自動生成した概要 **/
この記事では、BBC Micro:bitとトランジスタを使ってDCモーターを制御する方法を解説しています。前回はモーターを回すことができませんでしたが、電気回路とトランジスタの動作原理を学び、今回は見事成功しました。 成功の鍵は、トランジスタのベース電流を制御するための抵抗値の計算です。目標とするモーター電流を100mAとし、トランジスタの増幅率などを考慮して、ベース抵抗を4.7kΩに設定しました。 その結果、Micro:bitのボタン操作でDCモーターの回転を制御することができるようになりました。今回の実験を通して、トランジスタの動作原理への理解を深めることができました。

 

トランジスタ2スイッチング

/** Geminiが自動生成した概要 **/
この記事では、トランジスタの仕組み、特にスイッチング作用について解説しています。バイポーラトランジスタを構成するN型半導体とP型半導体の働きに触れ、マイクロビットと青色LEDを用いた回路を例に、トランジスタがどのように電流を制御するのかを図解しています。ベース電流の有無によってコレクター-エミッタ間の導通・非導通が切り替わり、これがスイッチのオン/オフ動作に対応することを示しています。記事では、トランジスタの基礎知識を学ぶことで、電子回路への理解を深めることを目指しています。

 

BBC Micro:bitでリレー経由でDCモーターを制御してみる

/** Geminiが自動生成した概要 **/
BBC Micro:bitを使ってリレー経由でDCモーターを制御する方法について書かれた記事の要約です。 記事では、マイクロビットのGPIOピンでは電流が不足するため、トランジスタの代わりにリレーモジュールを使ってDCモーターを制御する方法を紹介しています。 具体的な配線方法やマイクロビットのコード例も掲載されており、実際にDCモーターを回転させる様子を収めた動画も埋め込まれています。 記事は、マイクロビット初心者にもわかりやすく、リレーモジュールを使ったDCモーター制御の方法を学ぶのに役立つ内容となっています。

 

BBC Micro:bitとトランジスタ

/** Geminiが自動生成した概要 **/
BBC Micro:bitのGPIOピンを使ってDCモーターを動かそうとしたが、電圧不足のため動かなかった。そこでトランジスタを使って電圧を上げることを試みた。書籍を参考に青色LEDをトランジスタで点灯させる回路を組んだところ、LEDは点灯したものの、DCモーターは動作しなかった。トランジスタについて更に学習する必要があると考えられる。

 

ChromebookでScratchとBBC Micro:bitを接続してみる

/** Geminiが自動生成した概要 **/
この記事は、ChromebookのScratchでBBC Micro:bitを動かす方法を解説しています。 まず、Google PlayからScratchをインストールし、Scratch用マイクロビットのHEXファイルをダウンロードしてマイクロビットに転送します。 次に、Scratchの拡張機能でmicro:bitを選択し、接続を確立します。 記事では、接続確認のため、マイクロビットのAボタンを押すと音が鳴るプログラムを作成・実行しています。 最後に、小学一年生には漢字が読めないため、ひらがなモードのScratchが必要だと述べています。

 

BBC Micro:bitのUART

/** Geminiが自動生成した概要 **/
BBC Micro:bit (microbit) の UART 通信では、microbit から Raspberry Pi へのデータ送信と、その逆の受信が可能。microbit は `uart.any()` 関数を使用して受信データを待ち受け、Raspberry Pi はシリアルポートを介して通信する。データの送受信を確実に行うには、microbit と Raspberry Pi 間の TX/RX ピンの正しい接続と、双方で一致するボーレートの設定が重要。また、microbit では `uart.init(115200)` を使用してシステムを初期化することも推奨される。これらの手順に従うことで、microbit と Raspberry Pi 間の双方向 UART 通信を実現できる。

 

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

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

 

コンピュータ二台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事は、二台のコンピュータ間でローカルネットワークを通じてソケット通信を行う方法を解説しています。 まず、Raspberry Piをサーバー側にして、そのローカルIPアドレスを調べます。次に、Pythonで記述したサーバープログラムを、調べたIPアドレスを使って修正します。クライアント側にはLinuxマシンを使用し、同様にローカルIPアドレスを調べます。 その後、クライアントプログラムを実行し、サーバープログラムが実行されているRaspberry PiのIPアドレスとポート番号を指定して接続します。 記事では、接続が成功したことを確認後、NodeMCUとRaspberry Piでのソケット通信に進むことを示唆しています。

 

コンピュータ一台でソケット通信を試す

/** Geminiが自動生成した概要 **/
この記事では、マイコンを用いたデータ送信システム構築に向けて、まずは一台のPCでのソケット通信を試行しています。 具体的には、Pythonを用いて、受信側(サーバー)と送信側(クライアント)のプログラムを作成し、同一PC上で動作させています。 サーバー側はポート番号12345で接続を待ち受け、クライアント側からの接続があると、入力されたデータを受信し、"Successed!"というメッセージを返信します。 記事では、それぞれのプログラムのコード例と実行結果を示し、実際にデータの送受信が成功していることを確認しています。 今後は、2台のPC間でのソケット通信に挑戦する予定です。

 

NodeMCUをWebサーバにしてみた

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

 

BBC Micro:bitでpHメーターから得られるアナログ値を読み込んでみた

/** Geminiが自動生成した概要 **/
このブログ記事は、BBC Micro:bitの内蔵AD変換機能を用いてpHメーターのアナログ値を読み取る実験について解説しています。筆者は、専用のAD変換器が届く前に、Micro:bitのP0/P1ピンがアナログ値の読み込みに対応することを発見し、これを活用。pHメーターをMicro:bitに接続し、MakeCodeでアナログ値をディスプレイに表示するプログラムを作成しました。 実験では、水道水で748、重曹水で916のアナログ値を取得。重曹水がアルカリ性であることから、測定値の傾向が妥当であることを確認し、アナログ値の読み取りに成功しました。今後はpHメーター出力値とMicro:bitのAD変換の詳細調査が課題としつつも、pH値に応じた自動制御(例:サーボモータでの溶液調整)への応用可能性に大きな期待を寄せています。

 

水田の落葉の破砕食者を探せ

/** Geminiが自動生成した概要 **/
この記事では、水田における落葉の分解者としてカワニナという巻貝に着目しています。カワニナは落葉や付着藻類を食べるため、かつてのように水田にヤシャブシの葉を施肥すれば、カワニナが増え、その結果ホタルも増える可能性がある、と推測しています。 また、過去の記事への参照を交えながら、落葉が藻類の増殖を抑制することや、中干しをしない稲作の効果、ヤシャブシの葉の肥料効果についても触れています。

 

Raspberry PiのPWMでサーボモータを動かしてみる

/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiのPWM機能を使ってサーボモーターを制御する方法を解説しています。 サーボモーターは、パルス幅によって回転角度を制御することができます。この記事では、GeekServo 9G Servo-Grayというサーボモーターを使用し、GPIO 12に接続して制御しています。 コードでは、RPi.GPIOライブラリを使ってPWM信号を生成し、ChangeDutyCycle()関数でデューティ比を変更することで、サーボモーターの回転角度を制御しています。 具体的には、デューティ比2.5%で-45度、7.25%で90度、12%で225度回転するように設定されています。

 

Raspberry Piと赤色LEDでホタルのような点滅を試す

/** Geminiが自動生成した概要 **/
記事では、Raspberry PiとLEDを用いて、PWM(パルス幅変調)による疑似アナログ信号の生成と、その効果について解説しています。PWMは、デジタル信号のパルス幅を調整することで、見かけ上アナログ信号のような出力を行う技術です。記事では、パルス幅を徐々に変化させることで、LEDの明るさが滑らかに変化する様子を「ホタルの光」に例えています。 具体的には、Pythonコードを用いてPWMのデューティ比を周期的に変化させることで、LEDの明るさを制御し、ホタルの点滅のような効果を実現しています。

 

Raspberry Piと赤色LEDでパルス幅変調を試す

/** Geminiが自動生成した概要 **/
この記事は、生物系出身でRaspberry Piに挑戦している筆者が、パルス幅変調(PWM)を学ぶ過程を記述しています。 まず、LEDの点灯と消灯を繰り返すLチカを通して、HIGH(電気が流れる状態)とLOW(電気が流れない状態)について学びます。次に、PWMの概念、周期、パルス幅、デューティ比について解説し、PWMを用いたLEDの明るさ制御に挑戦します。 具体的なコード例を示しながら、デューティ比を徐々に上げることでLEDが明るくなる様子を観察し、PWMによる制御を体感します。最後に、HIGHはデューティ比100%の状態であり、デューティ比が低くても実際には高速で点滅しているため暗く見えることを補足しています。

 

一昔前の秋の花といえば?

/** Geminiが自動生成した概要 **/
かつて川辺に自生していたフジバカマは、護岸工事や外来種のセイタカアワダチソウの繁殖により絶滅の危機に瀕しています。フジバカマは秋の七草の一つで、万葉集にも歌われるなど、古くから日本人に親しまれてきました。現在、保護活動が行われていますが、フジバカマが自生できる環境を取り戻すことが重要です。NHK for Schoolの動画では、大阪府枚方市の事例を通して、フジバカマの現状と保護の取り組みを紹介しています。

 

PHP8でMacabを使い、任意の文字列の読み方を取得する

/** Geminiが自動生成した概要 **/
PHP8でMeCabを使い、文字列の読み方を取得する方法について記述されています。PHP拡張のphp-mecabがPHP8では動作しないため、exec関数でMeCabコマンドを実行し、出力結果を解析することで読み方を取得しています。「初心者用シューズ」を例に、カタカナで「ショシンシャヨウシューズ」、ひらがなで「しょしんしゃようしゅーず」と出力するコードが紹介されています。Ubuntu 20.04、PHP 8.0.10環境で動作確認済みです。PHP8で動作するMeCabライブラリがあればより良いと述べています。

 

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/)を参照してください。

 

Micro:bitで二種類のサーボモータの動作を比較してみる

/** Geminiが自動生成した概要 **/
この記事では、Micro:bitを用いて二種類のサーボモーター(360°回転と270°回転)の動作比較を行っています。どちらもGeekservo 9gサーボですが、360°サーボは角度指定で回転速度が変化し、90°を基準にそれより大きい値で反時計回り、小さい値で時計回りに回転します。一方、270°サーボは指定角度で正確に停止します。同じコードでもサーボの仕様によって動作が異なることを実証し、LEGO Ninjagoのコールのミニフィグを使って動作の様子を動画で紹介しています。

 

Micro:bitでサーボモータの止め方を試す

/** Geminiが自動生成した概要 **/
Micro:bitでサーボモーターを制御し、停止させる方法を検証した。ブレットボードと拡張ボードを用い、LEGO人形を乗せて回転を確認。以前の記事でサーボモーターの基準値を90度としたため、Aボタン押下で150度まで回転後、1秒で停止するコードを作成・実行した。結果は1秒後にモーターは停止したが、150度以上に回転していた。サーボモーターへの入力値と実際の回転角度の対応はまだ不明瞭。

 

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶ

/** Geminiが自動生成した概要 **/
Micro:bitとサーボモーターを用いて環境制御学習の第一歩を踏み出した著者は、サーボモーターの動作原理を学ぶため、LEGOブロックとミニフィグを使った回転実験を行った。MakeCodeで作成したコードでMicro:bitからサーボモーターに角度指令を送ると、90度を基準に、大きい値では反時計回り、小さい値では時計回りに回転する。しかし、指定角度で停止せず、一回転し続けるという問題に直面。これは、指令値が目標角度ではなく、一定時間内の回転角度を表すためであった。 著者は、サーボモーターの停止方法について疑問を抱いている。

 

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

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

 

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

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

 

OpenStreetMap + Leafletで二つのマーカーを設置する

/** Geminiが自動生成した概要 **/
OpenStreetMapとLeafletを用いて地図上に複数のマーカーを設置する方法について解説されています。以前の記事ではマーカー一つずつにクリックイベントを設定していましたが、今回は複数のマーカーをまとめて表示する方法を説明しています。 具体的には、位置情報オブジェクトを配列で定義し、L.geoJSON関数の第一引数に渡すことで実現しています。配列内の各オブジェクトは、マーカーの名称、リンク先のURL、緯度経度情報を持ちます。 以前のコードではオブジェクトが一つしか扱えず、複数マーカー設置には非効率でした。今回の変更により、配列に要素を追加するだけで簡単にマーカーを増やせるようになりました。記事では摂津峡と山水館の二つのマーカーを設置する例を示し、山水館へのリンクも掲載しています。

 

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

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

 

様々な依頼からこれからの働き方を見た

/** Geminiが自動生成した概要 **/
新型コロナの影響で事業への影響を覚悟していた筆者は、逆に変化を見越した企業からのWeb開発依頼が殺到した。 非接触型の予約注文システムや、代理販売・寄付サイトなど、コロナ禍のニーズに応える開発が多かった。 また、SEO対策情報の需要も高まった。 特に印象的だったのは、テレワーク向け研修システムの開発だ。 音声チャットとWebアプリを組み合わせたボードゲーム形式で、セールスの模擬体験を行うもので、オフライン研修以上の価値を感じたという。 コロナ禍でWeb技術の活用が模索された一年であり、この流れは今後も加速し、Web技術を活用できない企業は淘汰されるだろうと予測している。

 

php-webdriverでcontent-visibility:auto;を利用しているページのリンクをクリックする

/** Geminiが自動生成した概要 **/
php-webdriverで`content-visibility:auto;`を使用したサイトのリンクをクリックする際、遅延読み込みにより要素が見つからない問題が発生する。`getLocationOnScreenOnceScrolledIntoView()`だけでは不十分で、一度スクロール後にページトップに戻り、再度徐々にスクロールすることで要素を確実に表示させクリックを成功させる方法を紹介。これはページ表示速度の高速化と遅延読み込みによる影響への対策。また、SeleniumによるアクセスをGoogle Analyticsから除外する方法についても言及し、誤った計測を防ぐための設定についても触れている。さらに、関連するelement click interceptedエラーへの対処法の記事へのリンクも提供。

 

シイタケの旨味成分のグアニル酸

/** Geminiが自動生成した概要 **/
シイタケの旨味成分であるグアニル酸は、グアノシン一リン酸 (GMP) で、核酸の一種。GMPはリン酸化されるとDNA構成要素のGTPとなり、生体にとって重要。さらにGTPはグアニル酸シクラーゼにより環状グアノシン一リン酸 (cGMP) に変換される。cGMPは血管拡張作用などに関与し、人体にとって重要な役割を果たす。シイタケ摂取とcGMP生成の関連は不明だが、cGMPの重要性を理解しておくことは有益。グアニル酸は旨味成分であるだけでなく、生体機能の重要な要素にも関わっている。

 

持ち帰ったドングリから昆虫の幼虫が出てきたよ

/** Geminiが自動生成した概要 **/
持ち帰ったドングリからゾウムシの幼虫が出てきた。NHK for Schoolの動画によると、ゾウムシはドングリが小さく柔らかい時期に産卵する。では、殻斗はドングリを昆虫から守る役割を果たしているのだろうか?シイやブナの殻斗はドングリ全体を包み込む形状だが、多くのドングリでは殻斗は帽子状になっている。これはブナ科の進化の過程で、殻斗に包まれる形を辞めたことを示唆し、昆虫との関係性など、進化のドラマが隠されていると考えられる。

 

PHPのガベージコレクションを学ぶにXdebugを入れる

/** Geminiが自動生成した概要 **/
XdebugはPHPのデバッグとプロファイリングツールです。`xdebug_debug_zval()`関数は、変数の内部表現であるzvalの情報を表示します。出力には、参照カウント(refcount)、参照かどうか(is_ref)、そして変数の型と値が含まれます。zvalの情報は、PHPのガベージコレクションの仕組みや変数の挙動を理解する上で重要です。Xdebugのドキュメントでは、`xdebug_debug_zval()`以外にも様々なデバッグ関数が紹介されています。これらを利用することで、PHPコードの実行状況を詳細に把握し、問題の特定やパフォーマンスの改善に役立てることができます。

 

PHPのOPCacheで生成されるキャッシュを見る

/** Geminiが自動生成した概要 **/
PHPのオペコードを確認するにはVLD拡張モジュールを使用します。VLDはPHPスクリプトをコンパイルし、生成されたオペコードを人間が読める形式で出力します。出力には、各オペコードの行番号、オペコードの種類、オペランド、結果などが含まれます。これにより、PHPスクリプトの実行方法を詳細に理解し、パフォーマンスのボトルネックを特定するのに役立ちます。VLDのインストールはPECLを利用し、php.iniで`vld.active=1`などを設定することで有効化できます。関数`vld_dump()`で特定の関数のオペコードを出力することも可能です。

 

【SEO対策】PHPのOPCacheの更新チェックの頻度を下げる

/** Geminiが自動生成した概要 **/
PHPのOPCacheは、バイトコードをキャッシュしてパフォーマンスを向上させる機能。設定項目`opcache.revalidate_freq`はスクリプトの更新チェック頻度を制御する。デフォルトは2秒だが、CMSサイト等でPHPスクリプトの更新が少ない場合は、この値を大きくすることで更新チェックのオーバーヘッドを減らせる。設定変更は`php.ini`で`opcache.validate_timestamps`を有効化し、`opcache.revalidate_freq`を例えば86400(1日)に変更、サーバー再起動で行う。今回の検証ではパフォーマンスの顕著な差は見られなかった。

 

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内部の仕組みを理解する第一歩となる。

 

SOY CMSとSOY Shopの管理画面でメモウィジェットを設置しました

/** Geminiが自動生成した概要 **/
SOY CMS/Shopの管理画面左下にメモウィジェットが追加されました。これは、VPSサーバ運用時にphp.iniの変更(例: memory_limit)を忘れがちで、バージョンアップ後に問題が再発するのを防ぐためです。例えば、大量の商品注文で配列オーバーフローエラーが発生した場合、memory_limitを128Mから1024Mに変更するなどの対応が必要ですが、この設定を忘れやすいという問題がありました. このウィジェットにより、設定変更などをメモとして残せるようになりました。アップデート版はsaitodev.coからダウンロード可能です。

 

php-webdriverでelement click interceptedのエラーに対して

/** Geminiが自動生成した概要 **/
SeleniumとJenkins、php-webdriver、ヘッドレスChromiumでテスト自動化中に、メモウィジェットが原因でelement click interceptedエラーが発生。ヘッドレスモードで画面サイズが不足し、対象ボタンが隠れていたのが原因。ウィンドウサイズを`1024x2048`に設定することで一時的に解決したが、ページサイズに依存するこの方法は最適ではない。スクロールによる解決策も検討されたが、最終的にはCSSを修正し、メモウィジェットが他のボタンと重ならないように調整することで根本解決した。

 

SheetJSを試してみた

/** Geminiが自動生成した概要 **/
SheetJSは、ブラウザ上でHTMLテーブルから簡単にExcelファイルを生成できるJavaScriptライブラリです。デモを改修し、テーブル要素を指定して`XLSX.utils.table_to_book`でブックオブジェクトを生成、`XLSX.writeFile`でExcelファイル(xlsx)として出力する簡単なコードで実装できます。 表示されたHTMLテーブルのダウンロードボタンをクリックするだけで、テーブル構造を保持したExcelファイルがダウンロードされます。著者は従来PHPのPhpSpreadSheetを使用していましたが、SheetJSも選択肢に加えるとのことです。

 

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経由で行っています。

 

フルクトースとは?

/** Geminiが自動生成した概要 **/
フルクトースは、グルコースの2位の炭素が異性化酵素等の作用で酸素と二重結合になった五員環構造の単糖である。スクロースはグルコースとフルクトースがグリコシド結合した二糖類だ。フルクトースはケトン基を持つが還元性が高く、グルコースよりメイラード反応を起こしやすい。前記事で触れた黒糖やショ糖(スクロース)の構成要素であるフルクトースは、グルコースの異性体で果糖とも呼ばれる。五員環構造を持つため、グルコースと化学的性質が異なり、メイラード反応を起こしやすい。これは、フルクトースの還元性がグルコースよりも高いためである。このため、フルクトースを含む糖蜜はメイラード反応により褐色を呈する。

 

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

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

 

SOY CMSでDropboxバックアッププラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向けDropboxバックアッププラグイン(β版)を開発しました。CLI版不要で、Dropbox APIを利用しサーバからDropboxへ直接バックアップファイルを転送します。PHPのZipArchive、またはコマンドラインzip、サイトディレクトリへの圧縮権限、サーバの空き容量が必要です。詳細はサイト(saitodev.co/soycms/)で確認し、手動バックアップの上、利用ください。

 

SOY CMSでMySQL8系に接続できない時の対処

/** Geminiが自動生成した概要 **/
MySQL8系にアップグレード後、SOY CMSが「データベースの接続に失敗しました」エラーで起動しない場合の対処法。原因はMySQL8.0の認証方式変更にPHPのPDOが対応していないため。Ubuntu環境で、MySQLの設定ファイル(/etc/mysql/mysql.conf.d/mysqld.cnf)の[mysqld]セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動することで解決する。これはPDOの対応までの応急処置。

 

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

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

 

PHPで形態素解析エンジンのMaCabを使用する為の手順のメモ

/** Geminiが自動生成した概要 **/
Ubuntu 19.10環境でPHPからMeCab形態素解析エンジンを使用する手順をまとめたメモです。MeCab、辞書(mecab-ipadic-utf8, mecab-ipadic-neologd)、php-mecabをインストールし、PHPからMeCabを呼び出すテストコードを実行しています。 php-mecabインストールでは、phpize、configure、make、installを行い、mecab.iniを作成、ApacheとCLIで有効化しました。テストコードは"今日は晴天なり"を解析し、結果を配列で出力しています。ブラウザと端末の両方から実行し、期待通りの解析結果が得られました。

 

さくらの追加ストレージ(NFS)内のファイルをDropboxで同期したい

/** Geminiが自動生成した概要 **/
さくらインターネットのVPSに追加ストレージ(NFS)を導入し、サイトのバックアップファイルを格納。Dropboxと同期するために、NFS上のバックアップファイル(/var/www/html/site/storage/backup/site.zip)へのシンボリックリンクをDropboxディレクトリ(/home/*****/Dropbox/backup/)に作成した。 DropboxのWebサイトで確認したところ、シンボリックリンク経由でファイルが同期されていた。ただし、リンク先のファイル更新をDropboxに認識させるには、シンボリックリンクのタイムスタンプを`touch -h /home/*****/Dropbox/backup/site.zip`で更新する必要がある。 ※ この方法はDropbox側で廃止されたため、現在はDropbox-Uploaderを利用して直接ファイル転送を行う方式に変更されている。

 

植物にとってビタミンB6とは?の続き

/** Geminiが自動生成した概要 **/
植物にとってビタミンB6、特に活性型であるピリドキサールリン酸(PLP)は、紫外線ストレスへの防御に重要な役割を果たす。PLPはシステインとヘムの生合成に関与し、これらは抗酸化酵素(グルタチオンペルオキシダーゼ、アスコルビン酸ペルオキシダーゼ、カタラーゼ)の構成要素となる。これらの酵素は紫外線によって生成される活性酸素の除去に働く。さらにPLP自体も活性酸素と反応する。また、PLPはグルタミン酸からGABAへの変換にも関与する。システインやヘムは他の代謝経路でも重要であるため、ビタミンB6は紫外線耐性以外にも様々な機能を持つと考えられる。

 

SOY Shopの商品一覧ページで変則的な並び順の対応をしてみる

/** Geminiが自動生成した概要 **/
SOY Shopでカテゴリごとに商品一覧の並び替え順を変える方法。カスタムフィールドで「使用人数」や「使用温度」などの項目を作成し、ソートに利用する設定にする。データベースのカラム型を数値に変更。soyshop.item.list拡張ポイントでプラグインを作成し、getSortメソッドでカテゴリごとに異なるソート条件を返す。テントなら使用人数の降順、シュラフなら使用温度の昇順など。標準設定は価格の昇順にする。URLを変えずに同一ページで並び替え順を変えられるため、SEOにも有効。

 

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言語でKVSのRedisを使ってみる

/** Geminiが自動生成した概要 **/
Go言語で複数サーバ間のセッション共有を実現するため、KVSのRedisを導入した。UbuntuにRedisをインストール後、Go言語でRedigoパッケージを用いてRedisに接続。`conn.Do("コマンド", "キー", "バリュー")`でRedisを操作し、SETで値を格納、GETで取得、DELで削除できることを確認した。ただし、削除済みキーを取得するとGo側ではエラーが発生する点に注意が必要。Redisを用いることで複数サーバ間のデータ共有が可能となる。

 

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リポジトリを参照ください。

 

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

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

 

Androidの内蔵GPSのキャッシュを削除したい

/** Geminiが自動生成した概要 **/
Android内蔵GPSのキャッシュ問題で、オフライン使用時に以前の緯度経度が返ってくる現象が発生。Geolocation APIのキャッシュ設定変更では解決せず、GPS StatusアプリでGPSキャッシュのリセットを試みた。一時的に改善するも、オフラインでの再発を確認。オンラインでGPS Statusアプリを使用する必要があると推測。Soil & Geoロガーのオフライン使用は5回程度が限度と考えられる。

 

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

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

 

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

/** Geminiが自動生成した概要 **/
kintoneアプリで設定した日付にチャットワークへタスクを自動登録するアプリ開発の続き。今回はGo言語でkintone REST APIから取得したJSONデータを扱うための構造体を設計し、マッピングを行った。取得データは「レコード番号」「月」「ラベル」「日」等を含み、これをGoの構造体へ変換することでデータ操作を可能にした。具体的には`Field`構造体でフィールドの型と値を、`Record`構造体でレコード群を表現し、`json.NewDecoder`を用いてJSONをデコードした。これにより、ラベル名等の値をプログラムから参照できるようになった。次回は取得値を用いてチャットワークへのタスク登録を行う。

 

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

/** Geminiが自動生成した概要 **/
kintoneとチャットワークを連携し、タスクを自動登録するアプリをGo言語で開発する過程を説明。kintoneにアプリを作成し、Go言語でkintoneのREST APIを使用してデータを取得するコードを紹介。APIキー、ID、パスワードを用いて認証し、JSON形式のデータを取得することに成功。今後の課題として、取得したJSONデータをGo言語で扱うための構造体の作成が挙げられている。

 

Go言語でクライアントのレスポンスを見る

/** Geminiが自動生成した概要 **/
Go言語でHTTPクライアントを作成し、サーバーからのレスポンスを確認する方法を解説しています。`http.Get`でサーバーにリクエストを送信し、`httputil.DumpResponse`でレスポンス内容を人間が読める形式で取得します。サンプルコードでは、`localhost:8889`で動作するサーバーにアクセスし、レスポンスのヘッダーとボディを出力しています。出力例から、ステータスコード(200 OK)、コンテンツ長、コンテンツタイプ、日付、HTML本体などが確認できます。これにより、クライアントがサーバーからどのようなデータを受け取っているかを詳細に把握できます。

 

Go言語でサーバを立ち上げる

/** Geminiが自動生成した概要 **/
Go言語でlocalhost:8889で動作するシンプルなWebサーバを作成する手順と動作確認方法の説明です。 `server.go` はルートパスへのアクセスに対し、リクエスト内容をコンソールに出力し、"hello world"を含むHTMLをレスポンスとして返します。`httputil.DumpRequest`でリクエスト内容をダンプし、`fmt.Println`でコンソールに表示、`io.WriteString`でレスポンスを書き込みます。`http.ListenAndServe`でサーバを起動し、ブラウザでアクセスすると"hello world"が表示されます。同時にコンソールにはリクエストヘッダ情報(例:GETメソッド、Host、User-Agentなど)が出力されます。

 

kintoneで指定の個所だけ印刷範囲にしてみる

/** Geminiが自動生成した概要 **/
kintoneでカレンダーアプリを印刷する際、標準機能ではカレンダー部分のみを選択できない問題を、jQueryプラグイン「printElement」を用いて解決する方法を紹介。kintoneアプリにカレンダー形式の一覧ページを作成し、printElementとjQueryを読み込むよう設定。カスタマイズ用JavaScriptで印刷ボタンを配置し、クリックイベントにprintElementでカレンダー部分(id="view-list-data-gaia")を指定。これにより、ヘッダー/フッターを除くカレンダー部分のみが印刷範囲となる。kintoneのカスタマイズ性の高さとjQueryプラグインの活用例を示している。

 

複合機とGoogleドライブを連携して、出先でFAXの内容を確認する

/** Geminiが自動生成した概要 **/
複合機のFAX受信をGoogleドライブと連携し、ChatWorkで通知する仕組みを紹介。複合機がFAXをPDFでGoogleドライブに共有する機能を活用し、Google Apps ScriptでPDFを特定フォルダに移動、ファイル名と共にChatWorkへ通知する。これにより、外出先でもFAX内容を即時確認でき、紙の無駄や転送の手間を省ける。5分間隔でスクリプトを実行することで、ほぼリアルタイムな通知を実現。設定には、複合機側のGoogleドライブ連携と、スクリプト内のChatWork API設定が必要。

 

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

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

 

Go言語でHTTPのPOST

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

 

Google Apps Scriptからチャットワークに投稿してみる

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)を使ってChatWorkに投稿する方法を紹介。ChatWorkClient for Google Apps Scriptライブラリを利用し、APIトークンとルームIDを指定することで簡単にメッセージを送信できる。GASのトリガー機能と組み合わせれば、Gmail受信やGoogleカレンダーの予定に基づいて自動投稿するなど、業務効率化に役立つアプリを簡単に作成可能。ChatWorkとG Suiteの連携で業務改善を実現できる。

 

php-webdriverでセレクトボックスの値を選択する2

/** Geminiが自動生成した概要 **/
php-webdriverでセレクトボックスの値をvalue属性で選択する方法について。以前は表示名("京都府")で選択する方法を紹介したが、今回はvalue("26")で選択する方法を解説。`WebDriverBy::name()`でセレクトボックス要素を取得後、`WebDriverBy::cssSelector("option[value='26']")`で目的のoption要素を特定し、`click()`で選択する。チェーンメソッドで簡潔に記述できる。

 

地衣類という菌たちの巧みな生き方

/** Geminiが自動生成した概要 **/
地衣類は、光合成を行うシアノバクテリアまたは緑藻と共生している菌類です。地衣類は、菌が光合成生物に必要な栄養を提供し、光合成生物が合成した産物を菌に返します。この共生関係により、地衣類は木の幹などの栄養分に乏しい環境でも生存できます。 地衣類の光合成にはマンガンが必要ですが、地衣類は宿主からマンガンを吸収していると考えられます。これは、死んだ幹に残った微量元素を活用している可能性を示唆しています。つまり、地衣類は木の残りを再利用することで、山の生態系における栄養循環に貢献している可能性があります。

 

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

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

 

php-webdriverでconfirmダイアログをクリックする

/** Geminiが自動生成した概要 **/
php-webdriverでconfirmダイアログのボタンをクリックする方法について解説。`$driver->switchTo()->alert()`でダイアログを取得し、`$dialog->accept()`でOKボタン、`$dialog->dismiss()`でキャンセルボタンをクリックできる。例として「退会する」リンククリック時に表示されるconfirmダイアログを操作するコードを紹介。`findElement`でリンク要素を取得し`click`でクリック、その後`switchTo()->alert()`と`accept()`でOKボタンクリックを処理する。

 

php-webdriverでセレクトボックスの値を選択する

/** Geminiが自動生成した概要 **/
php-webdriverでセレクトボックスの値を選択するには、要素を指定してクリックし、キーボード操作で値を入力する。値はoptionタグ内のテキストで指定する。ただし、この方法では動作が不安定な場合があるため、要素を`$element`変数に格納し、クリック→入力→クリックの順で操作することで安定性を向上させる。この方法により、選択直後の画面遷移にも対応できる。

 

さくらVPS上でSeleniumとphp-webdriverを利用する

/** Geminiが自動生成した概要 **/
さくらVPS(Ubuntu 16.04)にSeleniumとphp-webdriverによるUIテスト環境を構築する方法。Selenium実行には仮想デスクトップ(Xvfb)とChromiumが必要で、手順はApache/PHP設定、Java8、Selenium、Xvfb、Chromium、ChromeDriverインストール、そしてSelenium起動スクリプト(load.sh)作成。load.shはXvfbとSeleniumを同時に起動し、ブラウザは仮想デスクトップ上で動作する。動作確認は http://(VPSのIPアドレス):4444 で行う。Jenkinsの設定とload.shの自動起動設定は今後の課題。

 

php-webdriverでtarget="_blank"付きのアンカータグ対策

/** Geminiが自動生成した概要 **/
php-webdriverで`target="_blank"`のリンクをクリックした際、新しいタブにフォーカスを移すには`$driver->switchTo()->window(end($driver->getWindowHandles()));`ではなく、`$wins = $driver->getWindowHandles(); $driver->switchTo()->window(end($wins));`のように書く。 また、テスト終了時に単に`close()`を使うとセッションが残ってしまうため、タブが一つの場合は`quit()`を使う必要がある。これを考慮した`close()`関数を定義することで、複数タブでも単一タブでも適切にブラウザを閉じ、テストを終了できる。

 

php-webdriverで任意のラジオボタンをチェックする

/** Geminiが自動生成した概要 **/
php-webdriverでラジオボタンを選択する方法について解説されています。id属性がある場合は`WebDriverBy::id()`で取得できますが、id属性がない場合は`WebDriverBy::xpath()`を使用します。xpathは複数の属性を指定して要素を取得でき、`//タグ名[@属性名='属性の値' and @属性名='属性値']`のように記述します。SOY CMSではラジオボタンにユニークなIDが自動付与されるため、xpathでの取得が推奨されています。

 

Seleniumとphp-webdriverでUIテストの自動化

/** Geminiが自動生成した概要 **/
Ubuntu 19.10のSnap版Chromiumでは、Seleniumのテスト自動化が実行できない場合があります。これは、Snapのセキュリティ制限により、SeleniumがChromiumを直接操作できないことが原因です。解決策は、ChromiumをSnap版ではなく、aptでインストールしたバージョンを使用することです。まず、`snap remove chromium`でSnap版を削除し、`sudo apt install chromium-browser`でapt版をインストールします。さらに、ChromeドライバーのバージョンとChromiumのバージョンが互換性があることを確認してください。これらの手順により、SeleniumはChromiumを正常に操作できるようになり、テスト自動化が実行可能になります。

 

Node.js製のアプリをforeverで永続化する

/** Geminiが自動生成した概要 **/
Node.jsアプリをサーバ再起動後も自動的に起動し、かつ実行中にエラーで停止しないようにする方法。foreverライブラリを利用し、`npm install -g forever`でインストール。`forever start /path/to/app.js`でアプリを起動・永続化。`@reboot /usr/local/bin/forever start /path/to/app.js`をcronに登録することで、サーバ再起動時に自動的にアプリが起動するようになる。

 

Socket.IOで個別チャットを作りたい後編

/** Geminiが自動生成した概要 **/
Socket.IOで個別チャットを実現するため、namespacesを利用した検証が行われた。サーバー側では"hoge"と"huga"二つのnamespacesを作成し、クライアント側ではランダムにどちらかに接続するよう変更。結果、同じnamespaceに接続したクライアント間でリアルタイムなチャットが可能になった。namespacesによる個別チャットの可能性が示されたが、roomによる実現方法や動的なグループチャット作成機能の課題が残されている。

 

Socket.IOのチャットアプリで誰が入力中なのかを出力したい

/** Geminiが自動生成した概要 **/
Node.jsとSocket.IOで作ったチャットアプリに入力中表示を追加する方法を紹介しています。server.jsでは`start typing`と`stop typing`イベントを定義し、`socket.broadcast.emit()`で自身以外の全ユーザーに通知します。`index.html`では、これらのイベントをリスニングし、入力開始時に`start typing`イベントを発火、入力終了・送信時に`stop typing`イベントを発火します。受信したイベントに応じて、画面に「〇〇が入力中」と表示・非表示を切り替えます。これにより、リアルタイムな入力状況を共有できるチャットアプリが実現できます。

 

Node.jsとSocket.IOでリアルタイムのチャットアプリを作ってみる

/** Geminiが自動生成した概要 **/
Node.jsとSocket.IOを用いたチャットアプリ構築後、Let's Encryptで常時SSL化する方法を解説。自己署名証明書ではブラウザ警告が出るため、無料のLet's Encryptを利用。Certbotによる証明書取得手順、Nginxの設定変更(SSL設定追加、httpトラフィックのhttpsリダイレクト)を説明。 Socket.IOのサーバー側コード修正では、httpsオプションを追加し、取得した証明書と秘密鍵を指定。これにより、チャットアプリがセキュアなhttps接続で利用可能になる。

 

BracketsのBeautifyでXMLファイルの自動整形を行わないようにする

/** Geminiが自動生成した概要 **/
BracketsのBeautifyによるXMLファイルの自動整形を無効化する方法について解説されています。SOY CMS/Shop開発において、build.xmlがBeautifyによって整形され、Antビルドでエラーが発生する問題が発生しました。解決策として、brackets.jsonに`"language":{"xml":{"bb.beautify.onSave":false}}`を追加し、XMLファイルの自動整形を無効化することで、Antビルドが正常に動作するようになりました。

 

サイトを公開した直後にWordPressの管理画面ログインがあるか探られた

/** Geminiが自動生成した概要 **/
SOY CMSに総当り攻撃を仕掛けてみる。その4では、パスワードリスト攻撃への対策を検証しています。辞書攻撃ツールを使い、短いパスワードやありがちなパスワードを設定した場合、数秒で突破される危険性を示しています。対策として、パスワードの最低文字数を10文字以上に設定し、ランダムな文字列を使うことを推奨。ブルートフォース攻撃対策として、ログイン試行回数に制限を設けるプラグイン「Limit Login Attempts Reloaded」を紹介し、複数回のログイン失敗でアカウントをロックする方法や、一時的にIPアドレスをブロックする方法の効果を解説しています。また、WAF(Web Application Firewall)の利用も推奨し、既知の攻撃パターンをブロックすることでサーバー負荷を軽減できることを説明しています。

 

Webサイトの表示の高速化に向けて、Linuxのハンズオンを行いました

/** Geminiが自動生成した概要 **/
オープンソースのネットショップパッケージは初期費用を抑え、自由にカスタマイズできるメリットがある一方、運用に伴う問題も存在する。軌道に乗り始めると、トラフィック増加への対応、セキュリティ対策、機能追加など、システムの拡張性と保守性が重要になる。これらの課題解決には専門知識が必要となる場合が多く、結果的にコスト増加につながる可能性もある。さらに、コミュニティベースのサポートは情報収集に役立つものの、迅速な問題解決には不向きな場合も。オープンソースは自由度と低コストで始められる魅力があるが、将来的な拡張性と運用コストを考慮した選択が必要となる。

 

SOY CMSのブログで地図アプリを作ろう2

/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能を利用した地図アプリ作成の第2弾では、マーカークリック時のインフォウィンドウ表示を実装しました。前回設定したカスタムフィールド(サムネイル、緯度経度)に加え、ブログ記事のタイトルとリンクをインフォウィンドウに表示するようにテンプレートを修正。具体的には、JavaScriptでインフォウィンドウの内容を生成し、マーカークリックイベントで表示する処理を追加しました。これにより、地図上のマーカーから各店舗の詳細ページへ遷移できるようになりました。将来的にはSOY Shopと連携させ、カテゴリを店舗名として地図上に店舗を表示するショップページの作成も構想されています。

 

SOY CMSのサイトのバックアップをDropboxで行う

/** Geminiが自動生成した概要 **/
SOY CMSサイトのDropboxバックアップ方法を紹介。まずDropboxアカウントを作成し、サーバーに64ビット版CLI版Dropboxをインストール。サーバをDropboxアカウントにリンク後、バックアップスクリプト(dbbackup.sh)を作成し、cronで毎朝3時にサイトディレクトリをzip圧縮してDropboxへ同期させるよう設定。自動起動設定としてcrontabの@rebootを利用。debファイル経由のインストール方法も追記。再起動しない場合はdropbox start -iコマンドを試す。パスワード付きzip化などの関連記事へのリンクも掲載。

 

IP偽装をしてみた

/** Geminiが自動生成した概要 **/
IPアドレス隠蔽のため、StealthyというFirefoxアドオンでプロキシ接続を試した。結果、What Is My IP Address? で確認すると、所在地が隠蔽され「Hide IP」と表示された。仕組みは、プロキシサーバを中継することで、接続先サイトにはプロキシサーバのIPアドレスが表示されるというもの。体感として表示速度が遅くなったため、攻撃目的には不向きと感じた。また、海外のプロキシアクセスを禁止すればサイト攻撃のリスク軽減になる可能性も考えたが、企業のプロキシ利用も多いため、一概に禁止はできないと考察した。

 

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

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

 

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で非同期で商品をカートに入れたい1

/** Geminiが自動生成した概要 **/
SOY Shopで非同期に商品をカートに入れる方法を解説。Ajaxを用いて、カートボタンクリック時にページ遷移なしでカートに追加する。まず、JavaScriptでカート操作URLへの非同期通信を行う関数を定義。次に、カートボタンのHTMLを書き換え、この関数を実行するように変更する。これによりカートへの追加自体は非同期で行われるが、画面上のカート情報は更新されない。次回、この点を改善し、カート追加をユーザーに分かりやすく表示する方法を解説予定。

 

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

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

 

Go言語でサーバのバックアップの仕組みを作ろう。SSH編

/** Geminiが自動生成した概要 **/
Go言語でサーバのバックアップを作成するため、SSH接続を用いたファイルコピーから、Zipファイルのダウンロード方式に変更された。 `golang.org/x/crypto/ssh` パッケージを利用し、SSH接続を確立、リモートでコマンドを実行するテストコードが作成された。このコードは、指定したサーバに接続し、空のファイル`empty.txt`を作成することに成功。今後の開発は、このSSH接続とコマンド実行機能をベースに、Zipファイルのダウンロード処理を実装する方向で進められる。

 

Terminator上でEmacsを起動すればxclipが使えるのか?

/** Geminiが自動生成した概要 **/
Emacsでxclipを使いたいが、tmuxではコピーモードの仕様でうまくいかない。そこで、itermのような端末を探し、terminatorをインストール。分割もでき、Emacsからシステムのクリップボードへコピー、貼り付けが期待通りに動作した。さらに、terminatorの別ウィンドウのEmacs間でもコピー、貼り付けができた。結果、開発環境をTerminator + Zsh + Emacsにすることに決定。

 

Emacsでクリップボードを使ってコピペしたい

/** Geminiが自動生成した概要 **/
Emacsでクリップボードの共有設定をしたが、GUI環境では動作するものの、端末(emacs -nw)では動作しない問題に直面。xclipをインストールし設定を追加することで端末上でもコピペが可能になった。しかし、tmux上でEmacsを起動した場合はxclipが機能せず、更なる設定が必要な状況に陥っている。

 

PHPで楽天市場の商品登録を楽しよう:PHPのインストール編

/** Geminiが自動生成した概要 **/
Windows7にPHP7をインストールする方法を解説。PHP7をダウンロード・展開後、C:\php7に配置。Apacheの設定ファイル(httpd.conf)を編集し、PHPモジュールを読み込む設定や、index.phpをDirectoryIndexに追加。PHPの設定ファイル(php.ini)で必要な拡張モジュールを有効化し、タイムゾーンを東京に設定。Apacheを再起動後、phpinfo()を表示するinfo.phpを作成し、ブラウザで確認することでインストール完了となる。

 

Dockerの他コンテナにあるSOY CMSからMySQLのコンテナにアクセスしてみる

/** Geminiが自動生成した概要 **/
Docker Composeを用いて、PHP7/ApacheとMySQLのコンテナを連携させ、SOY CMSを動作させる方法を解説。MySQLコンテナでは`bind-address`を指定し、PHPコンテナでは`pdo_mysql`拡張をインストールする必要がある。データベース接続設定では、MySQLコンテナの内部IPアドレスとポート(3306)を指定。SOY CMSのデータベース設定ファイル(mysql.php)を適切に編集することで、コンテナ間のデータベースアクセスを実現。記事では、`docker-compose.yml`の設定例や、コンテナ内でのデータベース作成手順、SOY CMSの初期設定画面へのアクセス方法などを示している。また、PHP7環境でのSOY CMS動作に関する修正はGitHubで公開されている。

 

Dockerで作ったMySQLのコンテナにホストからアクセスしてみる

/** Geminiが自動生成した概要 **/
DockerでMySQLのコンテナを作成し、ホストからアクセスする手順を解説しています。まず、文字コード設定済みのDockerfileとcharset.cnfを用意し、`docker build`でイメージを作成。`docker run`でコンテナを起動し、`-p 12345:3306`でポートフォワーディングを設定。ホストからは`mysql -u root -p -h 127.0.0.1 -P 12345`でコンテナ内のMySQLに接続できました。

 

さくらのVPSにPHP7を入れてSOY CMSを動かしてみた

/** Geminiが自動生成した概要 **/
さくらのVPSにPHP7をインストールし、SOY CMSを動かす手順を解説した記事。共有サーバーの表示速度低下を改善するため、VPSに移行。手順は既存記事を参考に、PHPインストール部分を更新。 Apache2.4インストール後、Ondřej Surý氏のPPAを用いてPHP7.0を導入し、関連モジュールをインストール、Apache2の設定を行った。PHP7でSOY CMSを動かすにはファイル修正が必要で、修正済みパッケージはsaitodev.co/soycms/からダウンロード可能。

 

DockerでPHP7の環境を構築してみる

/** Geminiが自動生成した概要 **/
Dockerを使ってPHP7環境を構築する方法を紹介しています。UbuntuへのDockerインストール手順、Dockerfileの作成、コンテナイメージのビルド、コンテナの起動、PHPバージョン確認、ブラウザでのphpinfo表示確認までを解説。Dockerを使うことで、簡単にPHP7環境を構築し、動作確認できることを示しています。ルートディレクトリ操作の課題は残っていますが、Apache設定などを省略できる手軽さがメリットです。

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

Powered by SOY CMS   ↑トップへ