ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「SELECT」
 

塩基性暗赤色土を探しに京都の大江山へ

/** Geminiが自動生成した概要 **/
塩基性暗赤色土は、蛇紋岩や塩基性火成岩を母材とする弱酸性~アルカリ性の土壌です。赤褐色~暗赤褐色を呈し、粘土含量が高く、肥沃度は低い傾向にあります。ニッケルやクロムなどの重金属を多く含み、特定の植物しか生育できない特殊な土壌環境を形成します。 日本では、北海道、関東、中部地方などの蛇紋岩分布地域に局地的に分布しています。塩基性暗赤色土は、その特異な化学的性質から、植生や農業に影響を与え、特有の生態系を育んでいます。

 

SOY CMSとSOY Shopで多言語サイトの構築を見直しました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopの多言語サイト構築方法を大幅に改修しました。 従来はテンプレート数増加による管理コスト増大が課題でしたが、今回は以下の改善を行いました。 * 日本語ページと英語ページで同じテンプレートを使用可能に * 画像ファイル名に言語キーを付与することで自動切り替え * 記事とラベルを他言語のものと紐付け可能に これらの改善により、管理画面の簡素化、多言語サイト構築の効率化を実現しました。 新パッケージはサイトからダウンロード可能です。

 

MCreator 2022.2を使ってみた

/** Geminiが自動生成した概要 **/
Minecraft: Pi Edition: Rebornにアイテムを追加するため、MCreator2022.2を使用し、ブドウを追加する方法を解説した記事です。 まず、MCreatorをダウンロードしてインストールします。次に、新規Modを作成し、アイテムの画像を作成します。画像作成は、MCreator内のペイントツールを使用します。完成した画像は任意の場所に保存します。 この記事では、CPUがARM64のマシンにはMCreatorをダウンロードできないことも補足されています。

 

Raspberry PiにMCPI++を入れてみた

/** Geminiが自動生成した概要 **/
この記事は、Raspberry PiにMinecraft: Pi Edition: Reborn (マイクラリボーン) の拡張版をインストールする方法と、その拡張機能について解説しています。拡張版では、ブロックやアーマーの種類が増えるなどのアップデートがあります。インストールは、スクリプトを実行するだけで完了します。拡張版はマイクラリボーンの新バージョンに合わせて更新されるようです。

 

SOY CMSのカスタムフィールドアドバンスドの見直しで表示速度の改善

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドとサムネイルプラグインの表示速度改善に関する記事の要約です。 記事では、多数の記事を表示する際に発生する表示速度の低下について、その原因と解決策が解説されています。 主な原因は、記事ごとにカスタムフィールドの値を取得する際に、データベースへのアクセスが繰り返されるためでした。 解決策として、記事に紐づくカスタムフィールドの値を全記事分一度に取得し、必要な値のみに絞り込むことで、データベースアクセスを削減しました。 この改善により、特に記事数が50件や100件といった大量に表示する場合に、表示速度の向上が期待できます。

 

改めてSPIについてを知る1

/** Geminiが自動生成した概要 **/
SPIは、マスター機器が複数のスレーブ機器と通信する規格です。マスターはSCLK, MISO, MOSI, SSの4つの信号線でスレーブと接続します。SSはスレーブ選択線で、マスターはHIGH/LOWを切り替えることで、どのスレーブと通信するかを選びます。複数のスレーブを接続する場合、マスター側にスレーブ数分のSS(GPIOピン)が必要です。SSは通信開始と終了の合図にもなります。

 

AD変換器から出力されたデジタル値を読み込む

/** Geminiが自動生成した概要 **/
この記事では、AD変換器を使ってアナログ値をデジタル値として読み取る方法を解説しています。AD変換器からのデータ送信には、複数のピンを使ったSPI通信という方式が使われています。SPI通信では、マスター(Raspberry Pi)とスレーブ(AD変換器)間でデータのやり取りが行われます。重要な点は、AD変換器からのデジタルデータは1本のピンではなく、SCLK、MISO、MOSI、SSの4本のピンを使ってやり取りされることです。

 

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をプラグイン詳細画面に貼り付けて更新することでカスタマイズ完了。

 

トマト栽培で老化苗を定植したら微量要素の課題が付き纏う

/** Geminiが自動生成した概要 **/
トマト栽培では、秀品率向上のため土壌環境の徹底管理が必要だが、トマトとサツマイモで生産性悪化が見られた。トマトは樹勢が暴れ、サツマイモは根の肥大が不十分だった。トマト栽培では、老化苗の定植が一般的だが、これが後期の栽培難易度を高めている可能性がある。老化苗は根の先端が少ないため、窒素は吸収しやすい一方、カリウム、マグネシウム、微量要素の吸収は困難になる。結果として、花落ちの原因とされる亜鉛欠乏への施肥での対応は難しく、葉面散布が有効な手段となる。高額な環境制御に頼りすぎないためにも、微量要素の葉面散布剤の活用が重要となる。

 

SOY Shopの管理画面からの注文の商品検索の高速化に挑戦

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の注文機能で、商品点数増加に伴う検索速度低下を改善するプラグインが開発された。商品名・コードのAND/OR検索切り替えに加え、検索対象から子商品を除外する設定を追加。特に子商品除外は、複雑なSQLクエリを簡略化することで劇的な効果を発揮し、10秒かかっていた検索が1秒以内に完了するようになった。商品グループ機能を活用し、商品数が1000件を超える店舗で効果を発揮。電話注文時の業務効率化に貢献する。ダウンロードはsaitodev.co/soycms/soyshop/から。

 

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

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

 

チリメンガシの木を見に行く

/** Geminiが自動生成した概要 **/
京都御苑でチリメンガシを観察。透けるような樹形で、名の由来である縮れた葉が特徴的だった。根元にはウバメガシに似たドングリが落ちていた。チリメンガシはウバメガシの園芸品種で、ウバメガシは海辺に自生し、過酷な環境に強いことから街路樹としてよく植えられている。その為、人目に触れる機会が多く、園芸品種も生まれたと考えられる。

 

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の仕組みを利用しており、より深く理解するには関連の記事を参照ください。

 

植物が有害な紫外線から身を守る為のフラボノイド

/** Geminiが自動生成した概要 **/
植物は有害な紫外線から身を守るため、フラボノイドという物質を活用する。千葉大学の研究によると、シロイヌナズナは紫外線量の多い地域で、サイギノールというフラボノイドを生合成する。サイギノールは、ケンフェロール(淡黄色のフラボノイド)に3つの糖とシナピン酸が結合した構造で、紫外線を遮断するフィルターのような役割を果たす。他の植物にも同様の紫外線対策機能が存在する可能性が高い。

 

農薬を使う必要がない野菜こそが健康に繋がるはず

/** Geminiが自動生成した概要 **/
農薬不要な野菜は、食害昆虫や病原菌への耐性向上のため香り化合物(二糖配糖体)を蓄積し、食味や香りを向上させる。青葉アルコール等の香気成分は健康にも良く、慢性疲労症候群の疲労に伴う機能低下を改善する効果も報告されている。野菜を咀嚼すると香り化合物が鼻腔に届き香りを認識するが、香り化合物は損傷を受けた際に揮発するため、咀嚼によって効率的に摂取できる。つまり、香り化合物を多く含む野菜は、虫や病気に強く農薬防除を必要としない。食害を受けにくく病気にもなりにくい野菜を育てるには、香り化合物の合成を高める草生栽培が有効である可能性がある。ウィルス流行等の脅威に対し、野菜の質向上、特に香り化合物に着目した品質向上が重要となる。

 

農薬を使う必要がない野菜こそが美味しいはず

/** Geminiが自動生成した概要 **/
美味しい野菜は虫に食われにくい、という論理を香気成分から解説した記事です。植物は害虫や病原菌から身を守るため、青葉アルコールなどの香気成分を生成します。この香気成分は野菜の味や香りを良くする重要な要素です。つまり、食味の優れた野菜は、害虫に強い傾向があると言えます。「虫に食われる野菜は安全でおいしい」という通説は誤りで、香気成分を持つ野菜こそ高品質で美味しい可能性が高いのです。ただし、農薬使用の是非については別の記事で議論されています。

 

SheetJSを試してみた

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

 

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

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

 

パンから得られる知見を堆肥製造に活かせるか?

/** Geminiが自動生成した概要 **/
パンのクラスト形成におけるメイラード反応の知見から、堆肥製造への応用が考察されている。パンのクラストの色はメイラード反応とキャラメル反応によるもので、乳糖や乳タンパク質の添加でメイラード反応の温度帯が低下する。堆肥においても、剪定枝などを積み上げることで内部温度が上昇し、メイラード反応が促進される可能性がある。しかし、堆肥内部の温度は糖とアミノ酸のメイラード反応に必要な温度には達しないため、酵素的褐変により生成されたフェノール性化合物同士を、糖やアミノ酸が架橋する形でメイラード反応が進行していると推測される。この反応は堆肥製造における発酵熱の有効活用を示唆する。また、ブルーチーズのペニシリウムによる病害抑制効果に着目し、農薬削減の可能性についても言及されている。

 

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の表示や言語設定など細かい指示に従い作成し直した。最終的に承認を得るまで、動画の翻訳やスコープ設定の不備など、多くの修正を余儀なくされた。

 

冬野菜の生産性の向上は地温から

/** Geminiが自動生成した概要 **/
土壌からの強力な温室効果ガス、一酸化二窒素(N₂O)の排出は、地球温暖化に大きく寄与している。N₂Oは窒素肥料の施用によって増加し、特に硝化作用と脱窒作用が主要な発生源となる。硝化作用は好気的環境でアンモニアが硝酸に酸化される過程、脱窒作用は嫌気的環境で硝酸が窒素ガスやN₂Oに還元される過程である。土壌の水分状態、酸素濃度、有機物含量、温度などがこれらの反応速度に影響を与えるため、N₂O排出量は変動する。過剰な窒素肥料施用はN₂O排出を増加させるため、土壌診断に基づいた適切な施肥管理が重要となる。また、硝化抑制剤や緑肥の活用など、N₂O排出削減のための技術開発も進められている。

 

SOY CMSで記事一覧選択表示ブロックプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSの記事一覧表示を自由にカスタマイズできる「記事一覧選択表示ブロックプラグイン」の紹介です。 通常の記事一覧ブロックはカテゴリーや検索結果に基づいて表示されますが、このプラグインでは記事ごとにチェックボックスで表示/非表示を選択可能。 記事編集画面にチェックボックスが追加され、チェックを入れた記事のみがブロックに表示されます。 これにより、ラベルに関係なく任意の記事をピックアップした一覧を作成できます。ブロックの設定方法の詳細はプラグイン詳細画面に記載。プラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能です。

 

虫にかじられやすい株とそうでない株の違いは何だ?

/** Geminiが自動生成した概要 **/
虫に食害されやすいアブラナ科植物とそうでないものの違いは、食害時に生成される防御物質イソチオシアネートの合成能力の差にある可能性が高い。イソチオシアネート合成には、材料のグルコシノレートと酵素ミロシナーゼが必要だが、グルコシノレートは硫黄があれば普遍的に合成されるため、ミロシナーゼの活性が鍵となる。試験管内での実験では、カリウムイオンとビタミンCがミロシナーゼ活性を高めることが示されている。 カリウムが不足すると植物の養分吸収能力が低下するため、イソチオシアネート合成にも影響する可能性がある。つまり、食害を受けにくい株はカリウムが十分に供給されていると考えられる。米ぬか施肥によるカリウム補給と土壌改良は、植物の防御機構強化に繋がる有効な手段かもしれない。

 

ダゾメットによる土壌消毒はチョウ目の幼虫に有効であるか?

/** Geminiが自動生成した概要 **/
アブラナ科植物は、害虫から身を守るため、グルコシノレートとミロシナーゼという物質を別々の細胞に蓄えています。植物体が損傷すると、これらが反応して毒性のあるイソチオシアネートが生成されます。チョウ目の幼虫は、このイソチオシアネートを無毒化するのではなく、生成自体を阻害することで食害を可能にしています。つまり、幼虫の消化液中の酵素がグルコシノレートに作用し、ミロシナーゼとの反応を阻断するのです。ただし、チョウ目の幼虫が他の解毒経路を持っている可能性は否定できません。また、ホウレンソウは根が傷つけられると、昆虫の変態を阻害するファイトエクジステロイドという物質を生成することがわかっています。

 

抗ガン剤としてのサナギタケのコルジセピン

/** Geminiが自動生成した概要 **/
サナギタケ由来の物質コルジセピンは、抗腫瘍効果を持つ。コルジセピンはアデノシンと構造が酷似しており、ガン細胞のDNA複製時にアデノシンの代わりに取り込まれる。しかし、コルジセピンはアデノシンとは異なり3'位にヒドロキシ基を持たないため、DNAの二重螺旋構造が不安定化し、ガン細胞の増殖が抑制される。興味深いことに、コルジセピンは正常細胞や有益な微生物には影響を与えない選択的増殖抑制作用を示す。これは、昆虫に寄生するサナギタケが、宿主の防御反応に対抗するために産生した物質であるコルジセピンが、昆虫の細胞増殖のみを阻害するよう進化したためと考えられる。実際に、昆虫に感染したサナギタケの子実体の方が、人工培養されたものよりもコルジセピンを高濃度で含む。

 

サナギタケの人工培養について知りたい

/** Geminiが自動生成した概要 **/
ヨトウガ対策としてサナギタケの活用を検討する筆者は、サナギタケの培養方法を調べた。専門書によると、培養法は昆虫生体培養、個体培地栽培、液体培地発酵の三種類。中でも個体培地栽培では、穀物などを培地として子実体を収穫し、液体培地発酵では、化学薬品を用いて菌糸体を収穫する。重要なのは、サナギタケの菌糸が生きた昆虫を必要とせず、穀物や糖質があれば増殖できること。落ち葉に胞子がいるという既存情報と合わせ、畑に落ち葉とデンプン質などを供給すれば、サナギタケの菌糸が増殖する可能性があると考え、次は培養条件の把握に進む。

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる3

/** Geminiが自動生成した概要 **/
BiquadFilterNodeは、2次セクションを持つデジタルフィルターで、オーディオ信号の変更に使用されます。`type`プロパティでフィルターの種類を指定し、`frequency`でカットオフ周波数または中心周波数を設定します。`Q`プロパティはフィルターの帯域幅を制御します。`gain`は特定のフィルタータイプでのみ使用されます。主なフィルタータイプは、ローパス、ハイパス、バンドパス、バンドストップ、ローシェルフ、ハイシェルフ、ノッチ、オールパスです。ローパスは指定周波数以下の周波数を通過させ、ハイパスは指定周波数以上の周波数を通過させます。バンドパスは特定の周波数帯域を通過させ、バンドストップはその帯域を減衰させます。シェルフフィルターは特定の周波数以上または以下のゲインを調整し、ノッチフィルターは特定の周波数を除去します。オールパスフィルターはすべての周波数を通過させますが、位相を変化させます。

 

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

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

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる2

/** Geminiが自動生成した概要 **/
Web Audio APIを用いてマイク入力の音声の周波数を可視化するJavaScriptコード例を紹介している。AnalyzerNodeでFFTを行い、得られた周波数データをcanvasにグラフとして描画する。コードでは、マイクへのアクセス、AudioContextとAnalyserNodeの作成、周波数データの取得と描画処理を解説。実行すると音声入力に応じてリアルタイムに周波数グラフが変化するが、ハウリングが発生しやすい点についても言及している。

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる1

/** Geminiが自動生成した概要 **/
この記事は、JavaScriptで音の周波数を可視化する方法を学ぶための導入部分です。音のデジタル化に不可欠なフーリエ変換の概念を、三角関数のグラフを用いて分かりやすく解説しています。sin波、cos波、そしてそれらの合成波のグラフを示し、複雑な波形も三角関数の組み合わせで表現できることを説明。式の係数を配列データとして取り出すことで、音をデジタルデータとして扱えるようになることを示しています。最後に、高速フーリエ変換(FFT)に触れ、次回JavaScriptでの実装を示唆しています。記事には、HTML5 Canvasを使ったsin波を描画するコード例も掲載されています。

 

JavaScriptのWeb Audio APIで録音してみる

/** Geminiが自動生成した概要 **/
Web Audio APIを用いて録音機能を実装した。navigator.getUserMediaでマイクアクセス権を取得し、MediaRecorderで録音、10秒後に停止しsample.wavとしてダウンロードさせる。 現状は問答無用で録音開始・停止する仕様だが、将来的には取得した音の周波数を解析し、音に合わせた処理を実現したい。

 

Go言語とSQLite3でデータを取得する

/** Geminiが自動生成した概要 **/
Go言語とSQLite3を用いて、`sample.db`内の`orders`テーブルから3件のデータを取得するプログラムです。`db.Query`でSQLクエリを実行し、`rows.Next()`で各行を処理、`rows.Scan()`でid、user_id、priceの各列の値を変数に格納します。最後に`fmt.Print`と`fmt.Println`を用いて取得したデータを表示します。出力はid、user_id、priceがそれぞれ一行ずつ表示され、各レコードごとに空行で区切られます。

 

SQLiteで集計をしてみる

/** Geminiが自動生成した概要 **/
SOY ShopのSQLiteデータベースから、姓が「齋藤」の顧客の注文回数を集計する方法を説明しています。`soyshop_order`テーブルと`soyshop_user`テーブルを`user_id`と`id`で結合し、`WHERE`句で名前を絞り込み、`GROUP BY`句でユーザーごとに集計します。注文金額の合計は`SUM(price)`、注文回数は`COUNT(o.id)`で算出できます。結果として、各「齋藤」さんの注文回数と名前が表示されます。

 

SQLiteのALTER文で新たなフィールドを追加してみる

/** Geminiが自動生成した概要 **/
SQLiteのALTER文を使って既存のusersテーブルにcategoryフィールドを追加し、外部キー制約でcategoryテーブルと紐づけました。usersテーブルにはid、name、fname、genderに加え、categoryテーブルのidを示すcategoryフィールドが追加されました。その後、UPDATE文で各ユーザーにcategoryを割り当て、SELECT文とWHERE句で特定のcategoryを持つユーザーを抽出しました。さらに、INNER JOINを用いてusersテーブルとcategoryテーブルを結合し、category名で検索する方法も示しました。最終的に'tanpopo'に属するユーザーの情報が抽出されました。

 

SQLiteでWHER句を使ってみる

/** Geminiが自動生成した概要 **/
SQLiteのWHERE句の使い方を解説した記事の要約です。 SELECT文で特定のデータを取得する方法を説明し、WHERE句で条件を指定する方法を示しています。 名前の取得、名前と苗字の両方の取得、特定の名前のデータ取得などを例に挙げ、WHERE句の基本的な使い方を解説しています。 さらに、LIKE演算子とワイルドカード%を使った部分一致検索、AND演算子による複数条件の指定、!=演算子による条件の否定、NOT LIKE演算子による否定一致検索などを紹介しています。 具体的なSQL文と実行結果を示しながら、それぞれの演算子の使い方を分かりやすく説明しています。

 

SQLiteでデータを入れて取り出してみる

/** Geminiが自動生成した概要 **/
Windows 10 で SQLite を使い、データを操作する方法を解説しています。SQLite をダウンロード、インストールし、環境変数を設定後、コマンドプロンプトでデータベースファイル(sample.db)を作成します。SQL文を用いて、テーブル作成、データ挿入、削除、並び替え、表示など基本操作を例示しています。`CREATE TABLE` でテーブルを作り、`INSERT INTO` でデータ挿入、`SELECT * FROM` で全データ表示、`DELETE FROM` でデータ削除、`ORDER BY` で並び替え、`LIMIT` で表示件数制限を行います。DB Browser for SQLite での確認方法にも触れています。

 

SOY Shopの注文編集で配達時間帯の編集をセレクトボックス形式に変更しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文編集画面で、配送時間帯の入力をテキストエリアからセレクトボックスに変更しました。 従来、ヤマト運輸B2等外部システムとの連携時に、時間帯の書式誤りによる不具合が発生する可能性がありました。今回の変更で、管理画面上で正しいフォーマットを選択式で指定できるようになり、操作ミスを防止、作業効率改善を実現します。 最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

SOY CMSを介さずにSOY2DAOを使ってみる1

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOを単体で利用する方法を紹介。SQLiteのインメモリデータベースを例に、テーブル作成、データ挿入、検索のコードを記述。WEBAPP_DIRの定義、SOY2のinclude、RootDir設定、SOY2DAOConfigによるDSN設定を行い、SOY2DAOでSQLを実行。結果として、挿入したデータが期待通りに取得できることを確認。次回はDAO本来の機能を探る。

 

大きなキノコを見て思い出す師の言葉

/** Geminiが自動生成した概要 **/
農業の師の教えに従い木質チップを高く積み上げて施用した結果、資材の分解が促進された。発酵促進の有機資材(窒素源)を加えていないにもかかわらず、直射日光下でも大型キノコが大量に発生したことに筆者は驚く。この現象を通し、筆者は「高C/N比の木質資材を分解する際、慣行的に行われる窒素分の補給は本当に必要なのか?」という疑問を呈している。

 

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

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

 

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を送信する。

 

管理画面の注文検索の拡張ポイント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)のコードを読むことで、具体的な実装方法を理解できる。

 

支払いの拡張ポイントsoyshop.payment.php

/** Geminiが自動生成した概要 **/
SOY Shopの支払い拡張ポイント(soyshop.payment.php)は、`onSelect`、`getName`、`getDescription`、`getPrice`、`getMethod`、`hasOptionPage`、`getOptionPage`、`onPostOptionPage`などのメソッドを提供し、支払い方法のカスタマイズを可能にする。各メソッドは支払い方法名や説明、価格、追加ページの有無などを制御する。例として、クレジットカード決済では`hasOptionPage`でtrueを返し、`getOptionPage`で入力フォームを提供する。`getMethod`はカート内容に応じて支払い方法の表示を制御するが、最後のプラグインで全てのモジュールを制御する点に注意が必要。

 

SOY CMSでサイト用ディレクトリのディレクトリ名を変更したい場合

/** Geminiが自動生成した概要 **/
SOY CMSでサイトディレクトリ(例:site)の名前を変更(例:hoge)するには、まずディレクトリ名を変更後、データベースのSiteテーブルを編集します。site_id、url、pathを新しいディレクトリ名に合わせて変更します。MySQL版ではdata_source_nameは変更不要ですが、SQLite版ではpathと同様にdata_source_nameも変更が必要です。これにより、システムが新しいディレクトリ位置を認識し、サイトが表示されます。記載内容は未検証のため、ご注意ください。

 

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アプリ開発が可能になる。

 

SOY Shopの管理画面の注文一覧ページで表示速度周りを改修しています

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面、特に注文一覧ページの表示速度改善に取り組んでいます。月商数千万円規模のショップで顕著になる速度低下の原因となっていた、顧客名表示等の処理をDAO経由からSQL直書きに変更。顧客情報全体を取得する代わりに必要な名前だけをデータベースから取得することで、処理を効率化しました。他にも例外処理の見直しやテストコードによるエラー修正を行い、体感できる速度改善を実現。今後も処理速度の改善を継続し、最新版はサイトからダウンロード可能です。

 

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

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

 

炭酸冷泉で調理した肉まん

/** Geminiが自動生成した概要 **/
サイダー水で肉を柔らかくする調理法に着目し、天然サイダーである飛騨小坂の炭酸冷泉を使った肉まんを紹介している。炭酸冷泉は二酸化炭素を含み、肉を柔らかくする効果が期待できる。また、マグネシウムやカルシウム等のミネラルも豊富。実際に飛騨小坂で炭酸冷泉調理の肉まんを食したところ、ふわふわの食感と良い味で、炭酸冷泉の苦味は感じられなかった。温泉は入浴だけでなく、地域資源として調理にも活用され、様々な可能性を秘めている。

 

UbuntuサーバでNode.jsのアプリの再起動に苦戦した時のメモ

/** Geminiが自動生成した概要 **/
UbuntuサーバーでNode.jsアプリを再起動する際、cronで@reboot時に実行するとデータベースファイルのパスがずれる問題が発生した。相対パス指定では実行ディレクトリが変わるため、`./_module/db.js` や `./db/sqlite.db` のような記述は`index.js`からの相対パスではなく、実行時のカレントディレクトリからの相対パスとして解釈されていた。これを解決するために、`__dirname` を使用して `index.js` のあるディレクトリを確実に取得し、`__dirname + '/_module/db.js'`、`__dirname + '/db/sqlite.db'` のように絶対パスを指定することで、どのディレクトリから実行してもデータベースに接続できるように修正した。

 

長野の栄村小滝集落の米づくり前編

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落の米作りに関する記事の前編。高品質の米が収穫できる理由を探るため、土壌や地質を調査。土壌は黒ボク土で、地質は玄武岩質の苦鉄質火山岩類。東日本大震災の地震で山に大きな亀裂が入り、周辺には玄武岩と思われる黒い石が散在。湧水が出ている場所の川底は赤く、鉄分が多いと推測される。この湧水が水田に流れ込んでいる。後編では、これらの要素が米作りにどう影響しているのかが解説される。

 

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接続で利用可能になる。

 

SOY Shopの標準配送モジュールでカレンダー形式でお届け日指定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの標準配送モジュールがアップデートされ、お届け日指定をカレンダー形式で入力できるようになりました。従来のセレクトボックス形式に加え、カレンダー形式を選択可能になり、日付の選択範囲も設定できます。 これは試作段階で、カートでのjQueryライブラリの読み込み状況に関わらず動作するよう改良中です。需要があれば、未対応箇所の開発も進められます。最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

PHPでPythonの機械学習のライブラリを利用してみる

/** Geminiが自動生成した概要 **/
PHPでPythonの機械学習ライブラリを利用する方法を検証。サンプルデータを使用してk近傍法によるアイリスの品種判定を実施。Pythonスクリプトで学習と判定を行い、PHPスクリプトでデータを送受信することで、PHPでPythonの機械学習機能を活用できることを確認した。

 

カスタムサーチフィールドのチェックボックスで商品詳細ページで選択した項目を表示したい

/** Geminiが自動生成した概要 **/
SOY Shopのカスタムサーチフィールドでチェックボックスの値を商品詳細ページに表示、更にリンク化する方法。管理画面でチェックボックス型のカスタムサーチフィールド(例:フィールドID「custom_check」、ラベル「カスタムチェック」)を作成し、各項目を設定。商品詳細テンプレートに`<!-- csf:id="custom_check_番号_visible" -->`と`<!-- csf:id="custom_check_番号" -->`を記述することで、選択された項目のみ表示される。番号は設定した項目の順番(0始まり)。リンク化は`<a href="{url}=<!-- csf:id="custom_check_番号" /-->">`で囲み、{url}をサイトURLに置き換える。

 

紅土と黒ボクを見て思い出す師の言葉

/** Geminiが自動生成した概要 **/
剪定枝の山積みによる腐植蓄積メカニズムが、黒ボク土壌形成過程と類似している点が考察されています。黒ボク土壌は低温環境での有機物分解の遅延により形成されますが、剪定枝山積みでも、酸素が少ない条件下で木質資材が分解され、腐植が生成されます。この際、フェノール性化合物が生成され、腐植の構成要素となる可能性が示唆されています。山積み一年後、腐植の乏しい土壌で黒ボク特有のボクボク音が確認され、無酸素状態での腐植蓄積効果が実証されました。この手法は、粘土質で有機物の少ない土壌で特に有効であり、大陸の赤い土壌改良への応用が期待されます。また、冬季の低温による分解抑制と、山積み内部の発酵熱による分解促進のバランスも重要です。

 

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 Shopの商品詳細ページで登録されている商品をランダムで表示する

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページで登録商品をランダム表示するPHPモジュールを作成する方法です。まず、管理画面でモジュールID「item.random」のPHPモジュールを作成し、指定のコードを記述します。このコードはSOY2DAOを使い、全商品、または指定カテゴリの商品をランダムに取得し、表示件数を制限するSQLを実行します。商品詳細ページテンプレートに`<!-- shop:module="item.random" -->`と`<!-- block:id="random_item_list" -->`を記述することで、ランダムに選ばれた商品が表示されます。カテゴリを指定するには、`$categoryId`変数にカテゴリIDを代入します。

 

揚げたニンジン、焼いたニンジンはなぜこんなにも甘いのだろう?

/** Geminiが自動生成した概要 **/
ニンジンを揚げたり焼いたりすると甘くなるのは、水分が抜けてショ糖の濃度が高まるから、というのは確かに一理あります。しかし、それだけではありません。加熱によってニンジンの細胞壁が壊れ、ショ糖がより溶け出しやすくなります。また、ニンジンに含まれるデンプンの一部が糖に分解されることも甘味を増す要因です。さらに、加熱によりニンジン特有の香りが生成され、この香りが甘味をより強く感じさせる効果があります。つまり、甘味の増加は単純な濃縮だけでなく、加熱による細胞壁の破壊、デンプンの分解、香りの生成など、複数の要因が複雑に絡み合って起こる現象です。

 

農薬を使用している方の野菜も美味しいよ

/** Geminiが自動生成した概要 **/
筆者は、野菜の美味しさは栽培方法ではなく、光合成の効率に依存すると主張する。有機無農薬栽培でも、牛糞堆肥の過剰使用による塩類集積や、植物性有機物に偏った土壌管理は、ミネラル吸収を阻害し、光合成を低下させるため、美味しい野菜は育たない。逆に、農薬を使っていても、適切な土壌管理で光合成を促進すれば、美味しい野菜ができる。つまり、農薬の有無ではなく、栽培者の技術が美味しさを左右する。有機栽培で品質が落ちる例として、果実内発芽、鉄欠乏による病害、硝酸態窒素の還元不足などを挙げ、美味しい野菜作りの要諦は、光合成を最大限に高める土作りにあると結論づけている。

 

私にとっての農業とSOY Shop

/** Geminiが自動生成した概要 **/
新規就農者は、野菜の栽培で手一杯のため、販売に割く時間がない。そのため、野菜の価格決定権が市場に握られ、価格が下がった際に収入が不安定になりやすい。この問題を解決するために、営業不要で販路を確保できるネットショップ活用が有効だ。研修中に開発したECサイト構築システム「SOY Shop」を導入し、自ら販売サイトを構築。ブログやSNSで情報発信し、顧客との直接的な関係を築くことで、安定した経営を実現した。この成功事例は他の新規就農者にも参考になるだろう。

 

SOY2DAOでSQLを実行して、オブジェクトで返す

/** Geminiが自動生成した概要 **/
SOY2DAOで複雑なSQLを実行しつつ、結果をオブジェクトで取得する方法が紹介されています。顧客テーブルとカスタムフィールドテーブルを結合し、特定のカスタムフィールド値を持つ顧客情報を取得する例が示されています。 `SOYShop_UserDAO` の `executeQuery` でSQLを実行し、結果の配列をループ処理で `getObject` メソッドに渡すことで、各レコードが `SOYShop_User` オブジェクトに変換されます。これにより、カスタムフィールドの値で検索しながら、必要な顧客情報のみをオブジェクトとして扱いやすく取得できます。この手法は、以前紹介されたSOY CMSの検索フォーム追加の記事でも活用されています。

 

SOY2DAOでデータベースから値を取り出す

/** Geminiが自動生成した概要 **/
SOY2DAOを用いたデータベースからの値の取得方法を解説。プリペアードステートメントに続き、今回はDAOの機能を活用した取得方法を紹介。SOY Shopの顧客情報を例に、`SOY2DAOFactory::create("user.SOYShop_UserDAO")` でDAOオブジェクトを生成し、`$userDao->get()` でデータを取得する様子をコードで示す。取得したデータはSOYShop_Userオブジェクトの配列となり、`$user->getName()` のようにゲッターメソッドで簡単に値にアクセスできる。SQL直接実行の場合と比べ、オブジェクト指向の恩恵で可読性・安全性が向上する点を強調。最後に、SQL実行結果もオブジェクトで扱いたいケースへの言及で締めくくっている。

 

SOY2DAOでプリペアードステートメントを利用する

/** Geminiが自動生成した概要 **/
SOY2DAOでプリペアードステートメントを使う方法を解説します。SQLインジェクション対策として、SQL内に直接値を埋め込むのではなく、プレースホルダ(:name)を使用します。 例: $sql = "SELECT * FROM soyshop_user WHERE mail_address = :mail AND password = :pass"; $binds = array(":mail" => $m, ":pass" => $p); $results = $dao->executeQuery($sql, $binds); executeQueryの第二引数にプレースホルダと値の連想配列を渡すことで、SOY2DAOが安全にSQLを実行します。これにより、$mや$pにSQL構文が挿入されても、悪意のあるクエリの実行を防ぎます。

 

SOY CMS/Shopのモジュール内でSQLを実行する

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのモジュールでは、PHPで自由にSQLを実行できる。PDOは結果の整形が面倒だが、SOY2DAOクラスを使うと便利。 例えば、`soyshop_user`テーブルから上位5件を取得するSQLを、PDOで実行すると連想配列と数値添字配列の混合配列が返り使いにくい。SOY2DAOの`executeQuery`メソッドを使うと、同じSQLでも整形された連想配列として結果が返るため、foreach文などを書かずに扱える。

 

赤い色素を身につけたジャガイモ

/** Geminiが自動生成した概要 **/
卵の殻の防御は硬さだけではない。鳥の卵は、その色や模様で捕食者から見つかりにくくする工夫を凝らしている。例えば、地面に産卵する鳥の卵は、周囲の環境に溶け込むような地味な色や模様をしていることが多い。これは、カモフラージュ効果によって、捕食者に見つかるリスクを減らすためである。また、崖や木の高い場所に産卵する鳥の卵は、白い色をしていることが多い。これは、親鳥が自分の卵を見つけやすくするためと考えられている。さらに、卵の殻の表面には、クチクラ層と呼ばれる薄い膜があり、細菌の侵入を防ぐ役割を果たしている。このように、卵の殻は、硬さだけでなく、色や模様、クチクラ層など、様々な防御機構を備えている。

 

SOY Shopで非同期で商品をカートに入れたい2

/** Geminiが自動生成した概要 **/
SOY Shopで商品を非同期にカートに追加するJavaScriptのカスタマイズ方法。カートの表示部分にIDを付与し、JavaScriptで非同期通信(XMLHttpRequest)を使ってカート情報を更新する。非同期通信に対応していないブラウザのために同期処理へのフォールバックと、タイムアウト時の処理も追加。さらに、ボタンの連打防止策として実行中フラグを用いて多重リクエストを防いでいる。これらの機能をプラグイン化することも検討中。

 

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

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

 

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

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

 

tmuxでマウススクロールをした時、履歴ではなくスクロールしてほしい

/** Geminiが自動生成した概要 **/
tmuxでマウススクロールをすると、履歴が表示されてしまい、画面がスクロールしない問題に遭遇した。MySQLの実行結果など、画面に収まらない内容を確認する際に不便だったため、マウススクロールで画面をスクロールできるように設定を変更した。`.tmux_conf`ファイルに`set -g mouse on`と`set -g terminal-overrides 'xterm*:smcup@:rmcup@'`を記述し、tmuxを再起動することで、マウススクロールで画面がスクロールするようになった。

 

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

/** Geminiが自動生成した概要 **/
中学生にJavaScriptでプログラミングを教えるにあたり、canvasを使ったゲーム作成に興味を持つ生徒が多い一方、基礎習得の必要性を感じた筆者は、canvasの練習を通して、メソッドの活用、オブジェクトの理解、配列の利用という3つの重要項目を特定した。 これらの概念を「おまじない」として片付けず、生徒に楽しく理解してもらう方法を模索し、計算機、名簿、タイピングソフトの作成を通して、実践的にコードに触れさせながら習熟させる方針を立てた。

 

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

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

 

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

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

 

やり型のナズナ探しの前に優性の法則

/** Geminiが自動生成した概要 **/
ナズナの果実の形質比15:1の謎を解くため、集団遺伝学とメンデルの法則を基に解説が始まる。メンデルの法則では、エンドウの種子の形を例に、遺伝子が対になっていること、丸(A)としわ(a)のように表現されること、優性の法則によりAaの組み合わせでは優性である丸が発現することが説明される。今回は優性の法則に焦点を当て、次回以降に具体的な法則とナズナの果実の謎に迫る。

 

Goのgoroutineで平行処理を試してみる

/** Geminiが自動生成した概要 **/
Goのgoroutineを用いた並行処理の練習として、偶数奇数判定プログラムを例に解説。通常は上から順に実行されるコードを、計算(sender)と表示(receiver)に分け、channelで繋ぐことで並行処理を実現。senderは計算結果をchannel(ch,ch2)に送り、receiverはselect文でch,ch2から値を受け取り表示する。例ではgoroutineの利点は活かされていないが、マルチコア風な処理を記述できた。

 

「虫が付いてる野菜は美味しい」は嘘 エンジニア思考で考える新しい農業という記事に対して

/** Geminiが自動生成した概要 **/
筆者は、日本情報化農業研究所で農業事業に従事していたが、CEO古荘氏の言動に不信感を募らせ退職した。古荘氏は、筆者らの農業調査を誇張したプレゼンを行い、西前氏が立ち上げたセレクトファームの成果を自分のもののように語り、資金調達に利用した。筆者らは畑で地道に努力していたにも関わらず、古荘氏は現場に来ず、農業を軽視する態度を取り続けた。その結果、関係者や取引先からの信頼を失墜させ、筆者も西前氏も会社を去ることになった。筆者は農業をエンジニアリングと同一視する古荘氏の考えに反論し、生き物を育てる仕事は知識を駆使したサポートだと主張する。 開発元退職後のSOY CMS開発継続理由は、オープンソース化により生まれたコミュニティへの責任感、ユーザーからの信頼、そしてSOY CMS自体への愛着による。退職後も開発を続け、改良を重ねることで、ユーザーにとってより良いCMSを提供し続けたいと考えている。

 

スマートアグリシンポジウム2015@はくいでWebの販売の話をしました

/** Geminiが自動生成した概要 **/
2015年にJAはくいで開催されたスマートアグリシンポジウムにて、セレクトファームのWeb販売開始1年目の取り組みについて講演が行われました。講演内容は、サイト開設当初に重点的に議論・設計したWebサイトの構成について。 画像は講演の様子と会場の様子を写しています。セレクトファームは、JAはくい管内で展開されているサービスのようです。

 

還元剤としてのシュウ酸?

/** Geminiが自動生成した概要 **/
タデ科植物の根から分泌されるシュウ酸の土壌還元作用について考察している。シュウ酸は酸化鉄(Ⅲ)と反応しシュウ酸鉄(Ⅲ)を生成する。この反応で鉄イオンは還元される。さらに、シュウ酸鉄(Ⅲ)は光分解によりシュウ酸鉄(Ⅱ)となり、鉄イオンはさらに還元される。つまり、シュウ酸は鉄イオンに電子を与え、還元剤として作用すると言える。この還元作用が土壌環境に影響を与えている可能性を示唆し、更なる考察の必要性を述べている。

 

SOY Shopにステップメールを追加してみた

/** Geminiが自動生成した概要 **/
SOY Shopで売れるネットショップ構築を目指す中で、ステップメール機能を追加。ステップメールとは、登録されたメールアドレスに、設定した順番と送信日で複数メールを自動配信する仕組み。高額商品や定期購入など、購入前に段階的な情報提供が必要な場合に有効。ブログ記事やメルマガでは難しい、順序立てた情報提供と継続的な顧客接点を可能にする。オフライン閲覧、サイトへの継続アクセス促進といったメリットも。SOY ShopではSOY Mail連携でステップメール後のメルマガ配信も可能。古典的な手法ながら、アプリ連携で強力な販促ツールとなる。

 

SOY CMSで複数のブログ記事をまとめて検索できる機能を作ってみた

/** Geminiが自動生成した概要 **/
SOY CMSで複数のブログ記事をまとめて検索する機能を作成。従来のスクリプトモジュールブロックでは、記事取得後にブログ判別ができず適切なURLを出力できなかったため、cms:moduleを利用。SQLでラベルIDを指定して2つのブログから記事を取得し、取得結果からラベルIDに応じてURLを生成、出力することで複数ブログ検索を実現。モジュールではSQL実行結果を直接利用できるため、Entryオブジェクトへの変換が不要で、柔軟なURL生成が可能となった。

 

検索フォームと検索結果ページを作ってみた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" -->`で表示可能になる。


Powered by SOY CMS   ↑トップへ