2025年01月18日19:03 by:コバ

2024年買った中で一番良かったものー

新年あけましておめでとうございます旧年中はねこのしっぽを格別のお引き立てを賜り厚く御礼申し上げます本年も倍旧のご愛顧の程お願い申し上げます。

まあ、もう1月も半ばなんですが。

いやー、コミケ終わっちゃいましたね。
今年は久々に31日にはコミケなしという事で、弊社のコミケ熟練者の方々は懐かしんでおられましたが、私のような若輩はコミケは31日まであるのが当たり前だったので変な気分です。
さらに、私は運悪く(運良く?)最終出社日(ほぼ)直後に病に臥せってしまったので、大晦日やら新年やら初売りみたいな年中行事にもほぼ参加せずに隔離されたままベッドに臥せっていたので……年が変わった感覚も実は全然なかったりします。

そんな私の2024年買ったモノで一番良かったものは……

3Dプリンターです!
FA.bmp
※画像は公式サイトより

個人宅用の小さい3Dプリンターなんですが、色々と細かい物を作れて便利!
3Dモデリングの知識があまりなくても、最近は3DP用のモデル共有サイトがあるので安心です。
まあ、まだまだ我が家の空気(物理)を適切に読み切れておらずこういう事(画像)になることも多いのですが……

20250112_165851332.JPG

最近では会社の電池入れを作って会社にも貢献したりもしました。
まあ、ぶっちゃけこんなのなくても良いんで自己満足なだけなんですけどね。

20250110_100126117.JPG
え・・・?
歪んでる?
反ってる?

き・・・気の所為じゃないですかねえ?
※自室の室温が予想外に低く、樹脂の押出温度が標準の温度では足りなかった事が原因でした。


2025年も始まったばかりですが、ねこのしっぽをよろしくお願いします♪
タグ:3DP | Comment(0)

2024年06月08日00:17 by:コバ

令和6年6月6日

ぐりーてぃんぐきゃぷてーん!
ねこのしっぽのシステム2号です。

皆さんは一昨日、6月6日がなんの日だったかご存知でしょうか。
令和6年6月6日、これだけでもなんていうか偶然のレア感ある日だったんですが、何故か「オーヴァーロード作戦」「Dデイ」「ネプチューン作戦」等々として有名なあのノルマンディー上陸作戦の80周年の日らしいです。
なんで和暦の666と被るんでしょうね!?偶然っておそろしい!!

そんなこんなで各種洋ゲーではDデイイベントが開催されているんですが私がプレイしているWargamingのゲームでもイベントが開催されています……複数同時に……
WoWSのDデイ

WoWSのDデイ

WoTのDデイ

誰がここまでやれと言った!
ってやつです。
ゲームは成人も遊んでるんだぞ!!
両方やるプレイヤーが過労死します。

冒頭の挨拶でピンときた方も居るかもですが……私は海の方がメインのプレイヤーです。
海の方・・・WoWSも一昨日から大忙し、と思うのは素人(ナニ
上陸作戦が6/6に始まるならその日までには制海権は奪っていなければならない(そもそもこの時期連合優位だろとか言ってはいけない)
なら海の作戦はもっと早く始めなきゃいけない・・・
そう、WoWSの方のイベントは5/30から始まっているのです!!

WoWS:オペレーション「ユタ・ビーチ」
開始: 5月30日 03:00 UTC+8 / 現地時間: 5月30日 04:00
終了: 6月13日 03:00 UTC+8 / 現地時間: 6月13日 04:00
WoT:オーヴァーロード作戦
2024年6月6日 06:00(日本時間)〜2024年7月4日 06:00(日本時間)

チクショウ!!何故か海の作戦は短い!!



何故か令和6年6月6日とDデイ80周年が被った今年、皆様もノルマンディーに思いを馳せてみては如何でしょうか……

なお、我が大日本帝国艦艇は枢軸側かつ大西洋戦線なので参加できない……orz


2023年10月21日18:00 by:コバ

CakephpにSSI機能を付けた話

システム2号のコバです。

突然ですがSSIという技術をご存知でしょうか?

SSIとは、Server Side Includeの略で、CGIと同じく動的にコンテンツ(HTML)を生成するための技術だとかHTMLに特別なコメントを記述すると置換してくれるとかまあ色々なところで色々説明されてるが……

要は1つのページを作ろうとした時に別ページを部品として持ってこれるからHP作るのが楽になるやつである。

だがこのSSIという技術、実はもう相当に古く枯れた技術らしい。検索すれば Google「おいおい、SSLだろ?誤字ってたから検索結果にSSL含めといたぜ!!」と言われ、フレームワークには「いや、file_get_contentあるっしょ?」とか言われるのである!!
(私が一時期検索しまくったからか、もしくは「SSIだけで検索」的なアレを指定したからか、今では普通に検索してくれるようになった)

今では色々なPHPフレームワークで、もはやSSIは対応していないらしく、ねこのしっぽのホームページで利用しているCakePHPもバージョンアップしたら使えなくなってしまったのである!!


しかし、ねこのしっぽには部品をSSIで取ってきているコンテンツがけっこういっぱいある。
それら全てを、PHP化することも出来ない(いや、厳密には出来なくは無いけど)

なので今回はフレームワークそのものを改造し、SSI対応したのである!!

本日のブログはその自分向け備忘録である。

こう↑書いておけばちょっとくらい変なことが書いてあっても許してもらえるのだ。
どこかのずんだもんもそう言っていたのだ……


閑話休題


例えばもし↓↓↓こんな感じ↓↓↓に弊社の(架空の)寿司メニューのページを表示させたいとする。
無題.png

この、エクセルで10秒で作ったような表を別ページとして作り、部品として使うという想定

こう↓書いておけば良いのだ。

<div class="tekito header">

    ヘッダー等々

</div>

<div class="sushi menu">

    <!--#include virtual="/neko/sushimenu/nigiri" -->

</div>

<div class="tekito content">

    文面がある

    と思ってください

</div>


<!--#include virtual="/neko/sushimenu/nigiri" -->

↑の部分に↓のサイトで作られた表が部品として配置されて画像のようになるのである。

 https://www.shippo.co.jp/neko/sushimenu/nigiri


これがCakephpでは挿入されない。

そこでerrorログを見ると

5023-15-51 11:45:14 Error: [MissingControllerException] Controller class NekoController could not be found.
Exception Attributes: array (
'class' => 'NekoController',
'plugin' => NULL,
)

リクエストが正確に解釈されていないっぽい。
と、いうことでCakephpでリクエストを処理しているCakeRequestを見てみると


        if (!empty($_SERVER['PATH_INFO'])) {

            return $_SERVER['PATH_INFO'];

        } elseif (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '://') === false) {

            $uri = $_SERVER['REQUEST_URI'];

        } elseif (isset($_SERVER['REQUEST_URI'])) {

            $qPosition = strpos($_SERVER['REQUEST_URI'], '?');

            if ($qPosition !== false && strpos($_SERVER['REQUEST_URI'], '://') > $qPosition) {

                $uri = $_SERVER['REQUEST_URI'];

            } else {

                $uri = substr($_SERVER['REQUEST_URI'], strlen(Configure::read('App.fullBaseUrl')));

            }

        } elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['SCRIPT_NAME'])) {

            $uri = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['PHP_SELF']);

        } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) {

            $uri = $_SERVER['HTTP_X_REWRITE_URL'];

        } elseif ($var = env('argv')) {

            $uri = $var[0];

        }


なるほど、見ていない。
そこで上記をこうする


        //REDIRECT_SCRIPT_NAME.shtmlを含む場合SSIと判断

        if(isset($_SERVER['REDIRECT_SCRIPT_NAME']) && strpos($_SERVER['REDIRECT_SCRIPT_NAME'], '.shtml') !== false){

            $uri = $_SERVER['REDIRECT_URL'];

        } elseif (!empty($_SERVER['PATH_INFO'])) {

            return $_SERVER['PATH_INFO'];

        } elseif (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '://') === false) {

            $uri = $_SERVER['REQUEST_URI'];

        } elseif (isset($_SERVER['REQUEST_URI'])) {

            $qPosition = strpos($_SERVER['REQUEST_URI'], '?');

            if ($qPosition !== false && strpos($_SERVER['REQUEST_URI'], '://') > $qPosition) {

                $uri = $_SERVER['REQUEST_URI'];

            } else {

                $uri = substr($_SERVER['REQUEST_URI'], strlen(Configure::read('App.fullBaseUrl')));

            }

        } elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['SCRIPT_NAME'])) {

            $uri = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['PHP_SELF']);

        } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) {

            $uri = $_SERVER['HTTP_X_REWRITE_URL'];

        } elseif ($var = env('argv')) {

            $uri = $var[0];

        }

これで対象のファイルがSSIを使っているかをフレームワーク側が検知してくれるようになりました。


タグ:PHP cakephp | Comment(0)
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。