オンライン肥料教室を開催しています
検索キーワード:「リクエスト」
 

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

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

 

NodeMCUでHTTP GETリクエストを試してみた

/** Geminiが自動生成した概要 **/
NodeMCUを使ってHTTP GETリクエストを試行した記録です。 記事では、MicroPythonのソケット通信を使って"http://www.example.com/"にGETリクエストを送信し、"200 OK"レスポンスとHTMLを取得できました。 しかし、"https://saitodev.co/"のようにHTTPSのURLでは失敗しました。これは、HTTPS通信に対応するためにコードを修正する必要があるためです。 記事では、将来WiFi経由でデータ送信を行う際にHTTPS通信が必要になると述べています。

 

NodeMCUをWebサーバにしてみた

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

 

SOY CMSでSameSite cookiesの対応を追加しました

/** Geminiが自動生成した概要 **/
Webマーケターとして、SOY CMSのブログ記事を要約します。 --- SOY CMSは、Webブラウザセキュリティ強化の一環としてSameSite cookiesに対応しました。これは「Webブラウザセキュリティ」を参考に、ブラウザ機能によるCSRF攻撃回避の強化を知ったことがきっかけです。 PHP7.3以降の機能を利用し、SOY CMSやSOY Shopの管理画面、カート、マイページ自動ログイン機能にSameSite cookie設定を導入。特にSOY Shopサイトでは、HTTPSアクセス時にHttpOnly、Secureをtrue、SameSiteをLaxに設定することで、セキュリティを向上させました。 この対応により、cookie関連のデータベーススキーマ見直しと、マイページ未ログイン時の処理最適化による表示速度高速化も実現。対応済みのパッケージは公式サイトからダウンロード可能です。

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

SOY Shop版HTMLキャッシュプラグインを追加しました

/** Geminiが自動生成した概要 **/
SOY Shop 2にHTMLキャッシュプラグインが追加され、高速化が可能になった。カートウィジェットの問題は非同期通信で解決し、カート内商品数と合計金額をJSONで取得できる。ヤマトリップショップではこの機能とLazyLoadプラグイン、jpegoptimにより、ページ表示速度が3.3秒から1秒以下になり、PageSpeed InsightsのスコアもPCで90を超えた。スマホは90に届かなかったが、Gueztliによる画像最適化で改善が見込まれる。SOY Shop 2正式版は近日公開予定。

 

Google AdsのMCCアカウントでキーワードプランナーを無料で使えるようにするまで

/** Geminiが自動生成した概要 **/
Google Ads APIを利用するにはMCCアカウントが必要で、キーワードプランナーを無料で使う方法を解説。MCCアカウント作成後、キーワードプランナーは有効な広告アカウントがないため使えない。そこで、エキスパートモードで「キャンペーンなしでアカウントを作成」し、生成されたお客様IDをメモ。MCCアカウントに戻り、サブアカウント設定で「既存のアカウントをリンク」し、お客様IDを入力してリクエストを送信、承認する。これでMCCアカウントでキーワードプランナーが無料で使えるようになる。

 

【SEO対策】CSSの読み込み方の変更で高速化

/** Geminiが自動生成した概要 **/
CSSの読み込み方を変えることでSEO対策とページ表示速度の高速化を実現する方法を紹介。従来headタグ内に記述していた外部CSSをbody閉じタグ後へ移動することでレンダリングブロックを回避し、表示速度を向上させる。さらに、HTTP/2環境下ではファイル数削減が有効となるため、CSSをHTML内に直接記述する方法も提示。ただし、保守性向上のためにCMSのモジュール機能を活用し、HTML末尾にCSSを挿入する手法を推奨。この際、モジュールファイルの読み込みによる速度低下を防ぐため、最終HTMLのキャッシュ機構を併用することが重要となる。

 

【SEO対策】最終産物のHTMLのキャッシュで高速化

/** Geminiが自動生成した概要 **/
SQLiteを採用するSOY CMSでサイト表示を高速化するため、最終生成HTMLのキャッシュ化機能を導入した。データベースやファイル読み込みを省略することでPageSpeed Insightsのスコアが大幅に向上。この機能はHTMLキャッシュプラグインをインストール後、index.php内のexecute_site()をexecute_site_static_cache()に変更することで有効になる。ただし、カート内容の表示など動的なコンテンツはキャッシュ化できないため、リッチなサイト構成との両立は難しい。高速化とSEO対策には見栄えよりも内容重視の割り切りが必要となる。SOY Shopでも同様のキャッシュプラグインが開発されている。

 

【SEO対策】データベースチューニング

/** Geminiが自動生成した概要 **/
SOY Shopのデータベースパフォーマンス改善にはインデックスの見直しが効果的です。 商品点数やアクセス数の増加に伴い、データベースへの負荷が増大し表示速度が低下することがあります。 特に商品検索や絞り込み機能は複雑なクエリを実行するため、適切なインデックスが設定されていないとパフォーマンスに大きな影響を与えます。 インデックスはデータベース内の特定の列に付与されることで、データ検索の高速化を実現します。 SOY Shopでは、商品コードや商品名、公開状態など、頻繁に検索される項目にインデックスを設定することが推奨されています。 しかし、不要なインデックスは更新処理のオーバーヘッドとなるため、適切なインデックスを選択することが重要です。 記事では、phpMyAdminを用いたインデックスの確認方法、SOY Shop管理画面からのインデックス設定方法、そしてインデックス設定の注意点が解説されています。 インデックスを適切に設定することで、データベースの負荷を軽減し、表示速度の向上、ひいてはユーザーエクスペリエンスの向上に繋がるとしています。

 

【SEO対策】実行環境のバージョンを上げて高速化

/** Geminiが自動生成した概要 **/
PageSpeed Insightsでスコア100を目指すため、サーバー側の処理速度向上に取り組んだ。SEO対策として、PHP製CMSを使う場合、PHPバージョンを最新に保つことが重要。PHP7系はOPCacheにより高速化されており、バージョンアップだけでスコア向上も期待できる。VPSサーバでのバージョンアップ方法は過去記事を参照。PHP8ではJitコンパイラ導入で更なる高速化が見込まれる。かつてGo言語への移植も検討したが、PHPでスコア100達成できたため中止した。

 

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

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

 

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

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

 

【SEO対策】HTTP/2

/** Geminiが自動生成した概要 **/
HTTP/2は、HTTP/1.1以前のバージョンに比べて、複数のファイルを並列でダウンロードできるため、ウェブサイトの表示速度を大幅に向上させます。これにより、リクエスト回数とインターネット全体の回線使用量が削減されます。しかし、一度に送受信されるデータ量が増えるため、画像サイズの最適化が重要になります。ApacheサーバーでHTTP/2を有効にする方法は、別記事で紹介されています。より詳細な情報は、オライリーの"Real World HTTP"で学ぶことができます。現在、LiteSpeedのようなサーバーでは、さらに高速なHTTP/3(QUIC)が利用可能ですが、当サイトはApacheのHTTP/3対応を待っています。

 

【SEO対策】データの転送量の削減の為の圧縮

/** Geminiが自動生成した概要 **/
個人事業主がSEO対策として行ったデータ転送量削減策を紹介。コンテンツの充実を最優先としつつ、今回はデータ圧縮に着目。GoogleのPageSpeed Insightsを参考に、Brotliアルゴリズムを用いてデータ転送量の削減を試みた。Brotliは対応サーバーが限られるため、Deflateやgzipも選択肢として提示。HTMLや画像のデータ量削減は今後の課題とし、データ転送に関する更なる改善策を予告している。

 

SOY CMSの開発元を辞めた後も開発を続ける心境をまとめてみた

/** Geminiが自動生成した概要 **/
筆者はかつてSOY CMSの開発元で働いていたが、開発元が農業事業に転換する際に退職し、以来個人でSOY CMS/Shopの開発を続けている。開発継続の理由は、SOY Shopを利用するユーザーのビジネスを支える責任感と、カスタマイズ依頼による収入で生活が成り立っているため。一方で、開発元の権利所有により公式の場での活動が制限され、SOY CMSの衰退を危惧している。生活のため、新規ユーザー獲得よりも既存ユーザーの売上向上に注力し、新機能紹介プラグインなどを開発。自身のサイト運営を通してSOY CMSの魅力を伝えることで、間接的な普及も目指している。開発元にはGitHubでの公開とユーザー主体の運営への移行を希望し、ユーザーからの寄付や支援に感謝しつつ、非公式ながらも開発を継続する意思を表明している。

 

SOY CMSのラベル一覧でアコーディオンの機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのラベル一覧画面が見やすくなりました!ラベル数が増えると管理画面が煩雑になる課題に対し、ユーザーからの改修提案を元にアコーディオン機能が実装されました。分類ごとにラベルを折り畳めるようになり、UIが大幅に改善。 HTMLモジュールで共通部分を管理する等の対策も紹介しつつ、ユーザー参加型の開発を推進していることが伺えます。GitHubでのプルリクエストや問い合わせフォームからの連絡を歓迎しており、最新版はsaitodev.co/soycms/からダウンロード可能です。

 

自作アプリを介してのGoogle検索でService Unavailableになった

/** Geminiが自動生成した概要 **/
自作PHPアプリでGoogle検索結果を集計する際、cURLで検索を実行したところ「503 Service Unavailable」エラーが発生した。Googleはスクリプトからの自動検索を制限しており、エラーメッセージは異常トラフィックの検出を示していた。解決策として、`curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);`をcURLに追加し、ブラウザのユーザーエージェントを送信するように変更した。これによりエラーが解消し、検索結果の集計が可能になった。単に適当なユーザーエージェントを設定するだけでは解決せず、実際に使用しているブラウザの情報を送ることが重要だった。

 

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など)が出力されます。

 

Go言語でHTTPのPOST

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

 

Go言語でHTTPのGET

/** Geminiが自動生成した概要 **/
Go言語でHTTP GETリクエストを実行する方法を解説しています。`net/http`パッケージの`Get`関数で指定URLにアクセスし、レスポンスを取得します。`ioutil.ReadAll`でレスポンスボディを読み込み、`string`型に変換してHTML内容を表示します。エラー処理も実装し、最後に`response.Body.Close()`でクローズします。記事では、各段階の出力を示しながら、最終的にHTMLを取得するコードを完成させています。

 

SOY ShopでTrackingmore連携を試作中

/** Geminiが自動生成した概要 **/
SOY Shopと荷物の追跡サービスTrackingmoreを連携するプラグインが作成されました。このプラグインにより、代行倉庫サービスを利用して出荷された商品の発送状況をリアルタイムで確認できるようになります。ただし、現時点では連続でAPIを叩く制限があるため、トラッキング件数の制限や実行間隔の調整が必要です。今後、Webhookを使用した配送状況確認機能が追加される予定です。この機能により、サーバのリソース占有が軽減されることが期待されています。利用に際しては、課題点に留意してください。

 

Apache2.4.27の標準設定ではHTTP/2が使用できなくなったのでその対応

/** Geminiが自動生成した概要 **/
Apache 2.4.27にアップグレード後、prefork設定ではHTTP/2が使えなくなったため、workerに変更した事例。preforkではHTTP/2が無効化される仕様変更が原因。Ubuntu 16.04環境で、PHPをFastCGI(php7.0-fpm)にし、`a2dismod`と`a2enmod`コマンドでMPMをworkerに切り替えた。`apachectl -V`で確認後、ブラウザでHTTP/2が有効化されたことを確認。ただし、画像はキャッシュの影響でHTTP/1.1だったが、キャッシュクリアで解決した。

 

Googleの圧縮アルゴリズムBrotliを試してみた

/** Geminiが自動生成した概要 **/
Brotli圧縮を試した結果、gzipよりも高い圧縮率を実現できることが分かり、サーバーでの利用を検討。Ubuntu 18.04ではaptでbrotliをインストール可能。画像ファイルの圧縮テストでは、オリジナル870.3kBに対し、Brotliは856.8kB、gzipは861.0kBと、Brotliが僅かに優れていた。圧縮コマンドは`brotli 元ファイル -o 圧縮ファイル`、解凍は`brotli -d 圧縮ファイル -o 元ファイル`。次の記事では、ApacheサーバーでBrotliを利用する方法を解説する。

 

開発元を退職した私がSOY CMSを開発し続けている訳

/** Geminiが自動生成した概要 **/
筆者はSOY CMSの開発元を退職後も、個人で開発を継続している。理由は、開発元代表の行動(SNSでの女装写真連投)と農業事業への注力により、開発が停滞し、経験豊富な開発メンバーが離脱したため。退職後、ユーザーの声を直接聞き、SOY CMSの価値を再認識し、開発継続を決意。公式フォーラムへの修正報告は反映されず、個人でパッケージを配布。開発元の事業不振を憂慮し、リポジトリの公開を提案。利用者がいれば開発を続けると宣言している。

 

Muninで監視用サーバを構築する2

/** Geminiが自動生成した概要 **/
外部サービス監視のため、対象サーバ(192.168.80.80)にmunin-nodeをインストールし、監視サーバ(192.168.100.120)のIPを許可するよう設定ファイルを編集。ファイアウォールで4949ポートを開放する。次に、監視サーバ側でmunin.confに監視対象のホスト名(hoge.com)とIPアドレスを追記。Apacheを再起動後、Munin画面に新しいリンクが表示されれば設定完了。

 

Muninで監視用サーバを構築する1

/** Geminiが自動生成した概要 **/
Webサービスの利用者増加に備え、Ubuntu 16.04サーバにMuninを導入して監視環境を構築した。Apacheのインストールと設定、muninとmunin-nodeのインストール後、アクセス制限を解除し、Basic認証を設定した。最後にファイアウォールでポート80, 443, 4949を開放し、セキュリティを強化した。今回は監視サーバ自体の設定を行い、次回は監視対象サーバの設定を行う。

 

さくらのVPS + Apache2.4のサーバでSSL対応してみた

/** Geminiが自動生成した概要 **/
さくらVPS上のApache2.4でSSL証明書を設定する方法を解説した記事です。opensslを用いて秘密鍵とCSRを作成し、認証局に提出、発行された証明書と中間CA証明書を所定のディレクトリに配置、Apacheの設定ファイルを編集してSSLを有効化します。設定ファイルでは、証明書ファイル、秘密鍵ファイル、中間CA証明書のパスを指定します。最後にApacheを再起動し、httpsでアクセスしてSSL設定を確認します。記事ではLet's Encryptを使った簡便な設定方法への言及もあります。

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

Powered by SOY CMS   ↑トップへ