[{"data":1,"prerenderedAt":329},["ShallowReactive",2],{"$ft6jtkd6xhw3c":3,"$f1u3wrwshgmjml":263},{"featured":4,"latest":129,"categories":227},[5,14,27,37,48,56,66,76,86,96,106,114,122],{"slug":6,"title":7,"date":8,"excerpt":9,"image":10,"categories":11},"custom-database-tables","Custom DataBase Tables","2015-11-24T02:29:34","You can create the new own table freely in the your WordPress database via this plugin. Then, you can make the management of table or (as view or entry or edit) data in a simple user interface.\\nAlso,","\u002Fassets\u002Fuploads\u002F2016\u002F02\u002Fcdbt-overview.png",[12],{"slug":13,"name":7},"cdbt",{"slug":15,"title":16,"date":17,"excerpt":18,"image":19,"categories":20},"10_php_tips_for_developers","PHP開発者が心得ておくべき10の鉄則","2016-01-11T18:38:09","PHPだけに限った話ではないが、プログラミングを行うに当たって、心得て、準備しておくと失敗が劇的に減る事柄をまとめてある良い記事を見つけたので、私なりの解釈で意訳しつつ、経験則を踏まえてあらためてまとめてみた。 オリジナ…","\u002Fassets\u002Fuploads\u002F2016\u002F01\u002Feyecatch-php-10-tips.jpg",[21,24],{"slug":22,"name":23},"column","コラム",{"slug":25,"name":26},"development","開発関連",{"slug":28,"title":29,"date":30,"excerpt":31,"image":32,"categories":33},"jquery-timeline-v1","2種類の横型タイムラインを簡単に作成できる「jQuery.Timeline」をリリース","2017-05-29T14:55:46","現在開発しているサービスで利用するべく、横型タイムラインを生成できるjQueryプラグインを自作したので、そこだけ単独でリリースしてみた。 ソースコード等はGitHubの方にリリースしてあるので、興味のある方は、そち…","\u002Fassets\u002Fuploads\u002F2017\u002F05\u002Fjquery_timeline_image.png",[34],{"slug":35,"name":36},"jqtl","jQuery.Timeline",{"slug":38,"title":39,"date":40,"excerpt":41,"image":42,"categories":43},"optimize-browser-cache-of-static-resources","更新されたJS、CSS、画像のみブラウザキャッシュを破棄して読み込ませる","2018-01-31T15:47:47","WEBサービスの保守や開発をやっていると、JavaScriptやスタイルシート、画像などの静的リソースを更新した際、しばしば「確認したけど、更新されてないよ」とか云われて、「ブラウザのキャッシュを消してからもう一度見て…",null,[44,47],{"slug":45,"name":46},"codes","コード集",{"slug":25,"name":26},{"slug":49,"title":50,"date":51,"excerpt":52,"image":53,"categories":54},"jquery-timeline","jQuery.Timeline version2 – full documentation","2019-03-04T20:40:48","Plugin Overview The jQuery.Timeline plugin provides you two types of the horizontal timeline. You can create a…","\u002Fassets\u002Fuploads\u002F2019\u002F03\u002Fjquery.timeline_v2.jpg",[55],{"slug":35,"name":36},{"slug":57,"title":58,"date":59,"excerpt":60,"image":61,"categories":62},"released-the-sloth","Released the Sloth of mobile-first CSS micro framework!","2019-04-16T18:04:25","I released the “Sloth” that is mobile-first CSS micro framework. I have long used frontend framewo…","\u002Fassets\u002Fuploads\u002F2019\u002F04\u002Fsloth_doc_head.png",[63],{"slug":64,"name":65},"sloth","Sloth",{"slug":67,"title":68,"date":69,"excerpt":70,"image":71,"categories":72},"challenge-to-conceal-the-wordpress-site","WordPressサイトを徹底的に秘匿化する","2020-02-02T23:59:58","私は自分の個人サイトをはじめ、仕事でもWordPressサイトを運用している。WordPressは気軽にサイトを立ち上げられてカスタマイズも簡単な、素晴らしいオープンソースなのだが、世界中で使われまくっているその知名度…","\u002Fassets\u002Fuploads\u002F2020\u002F02\u002Fshutterstock_1878005929.jpg",[73],{"slug":74,"name":75},"wordpress","WordPress関連",{"slug":77,"title":78,"date":79,"excerpt":80,"image":81,"categories":82},"what-is-forkor","Made a shortened URL app called Forkor","2020-07-07T22:27:01","What’s Forkor? Forkor is a service that provides a shortened URL feature that allows you to redirect any…","\u002Fassets\u002Fuploads\u002F2020\u002F07\u002Fforkor.png",[83],{"slug":84,"name":85},"forkor","Forkor",{"slug":87,"title":88,"date":89,"excerpt":90,"image":91,"categories":92},"manual-about-svg-japan","インタラクティブな日本地図を生成するJSプラグイン「SVG Japan」","2020-11-16T21:19:58","各都道府県をそれぞれ選択・クリック可能なインタラクティブな日本地図を生成するネイティブJavaScript建てのプラグイン「SVG Japan」を作ったので、その紹介と使い方をまとめておく。ちなみにソースコードはgit…","\u002Fassets\u002Fuploads\u002F2020\u002F11\u002Fsvg-japan.png",[93],{"slug":94,"name":95},"svg-japan","SVG Japan",{"slug":97,"title":98,"date":99,"excerpt":100,"image":101,"categories":102},"wp-ignitor-plugin-to-conceal-wordpress-site","WordPressサイトを秘匿化するプラグイン「WP Ignitor」","2021-01-19T15:28:21","以前「WordPressサイトを徹底的に秘匿化する」という記事で、WordPress建てのサイトを秘匿化する方法を取り上げたのだが、あれをサイト構築時に毎度実施するとなるととても労力が必要であった。そこで、もっとお手軽…","\u002Fassets\u002Fuploads\u002F2021\u002F01\u002Fbanner-1554x500-1.png",[103],{"slug":104,"name":105},"wp-ignitor","WPイグナイタ",{"slug":107,"title":108,"date":109,"excerpt":110,"image":111,"categories":112},"tastewp","無料でWordPressサイトを複数作成できるWEBサービス「TasteWP」","2021-03-25T20:21:59","私が日本語翻訳に協力しているWEBサービス「TasteWP」について紹介しようと思う。 https:\u002F\u002Ftastewp.com このサービス、サインアップすることなく無料で自分用のWordPressサイトを作れるとい…","\u002Fassets\u002Fuploads\u002F2021\u002F03\u002FTasteWP_screenshot.png",[113],{"slug":74,"name":75},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":120},"monster-hunter-rise-skill-simulator","モンハンライズのスキルシミュレータを作ってみた！","2021-06-28T20:24:52","コラムで連載していたNintendo Switch版『モンスターハンターライズ』のスキルシミュレータ開発がやっと一段落して一通り完了した。いやぁ、記事書きながら同時並行で開発すると思っていた以上に時間がかかるもんだなぁ…","\u002Fassets\u002Fuploads\u002F2021\u002F06\u002Fmhrss_v100.png",[121],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":127},"comparison-of-javascript-date-libraries","JavaScriptの日時ライブラリを比較してみた","2021-07-28T22:39:19","ネイティブJavaScriptで日時を取り扱う場合、ビルトインされているDateオブジェクトを使うことになるのだが、このDateオブジェクトは取り扱いにクセが多く、直感的に日時を操作できない点でも有名である。そこで、専…",[128],{"slug":25,"name":26},[130,141,153,165,175,184,192,195,198,206,213,220],{"slug":131,"title":132,"date":133,"excerpt":134,"image":135,"categories":136},"pulllog_launched","ガチャ履歴を記録・分析できるWebサービス「PullLog」","2025-08-22T13:05:30","このたび、新しい個人開発サービスとして 「PullLog（プルログ）」 をリリースした。 URLはこちら https:\u002F\u002Fpulllog.net PullLogとは？ PullLogは、ソーシャルゲームのガチャ履歴を記録…","\u002Fassets\u002Fuploads\u002F2025\u002F08\u002Fpulllog_stats_jp.png",[137,140],{"slug":138,"name":139},"industries","プロダクト",{"slug":25,"name":26},{"slug":142,"title":143,"date":144,"excerpt":145,"image":146,"categories":147},"mockapi-php-openapi-schema-generation","モックAPIのレスポンスから OpenAPI 3.0 スキーマを自動生成するPHPツール","2025-04-17T09:31:52","私自身がそうなのですが、OpenAPI仕様書を毎回手作業で書いていて「面倒だな」と思ったことはありませんか？ そんな（私と）あなたにぴったりのツールがあります。 レスポンスの例さえ用意すれば、OpenAPI 3.0 スキ…","\u002Fassets\u002Fuploads\u002F2025\u002F04\u002Fswaggerui-preview.png",[148,151,152],{"slug":149,"name":150},"mockapi-php","MockAPI-PHP",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":154,"title":155,"date":156,"excerpt":157,"image":158,"categories":159},"ambient_playlist_customize","Ambientでメメントモリのラメントプレイヤーを作る","2023-11-30T17:32:39","「Ambient」の最新バージョン 1.2.0で実装した「疑似フェーダー」機能を使って、ソーシャルゲーム「メメントモリ」のYouTube公式チャンネルで公開されているMVを集約したラメント専用プレイヤーを作ってみた。 ラ…","\u002Fassets\u002Fuploads\u002F2023\u002F11\u002Fambient_mememori_1.png",[160,163,164],{"slug":161,"name":162},"ambient","Ambient",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":166,"title":167,"date":168,"excerpt":169,"image":170,"categories":171},"released_ambient_demo_version","Ambientメディアプレイヤーのクラウド版デモを公開","2023-11-22T13:47:36","つい先日「Ambient」の最新バージョン 1.1.0をリリースして、それに合わせてクラウド版デモサイトも公開してみた。 なお、クラウド版デモでローカルのホストコンピュータのメディアを再生するには、そのメディアファイルも…","\u002Fassets\u002Fuploads\u002F2023\u002F10\u002FAmbientMediaPlayer-typologo.png",[172,173,174],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":176,"title":177,"date":178,"excerpt":179,"image":170,"categories":180},"ambient-media-player","YouTubeと自分のPC内メディアを同時に再生できるメディアプレイヤーを作ってみた","2023-10-20T00:00:25","私はよくPCで何か作業をするときには音楽を垂れ流していることが多い。 そういう時にかける曲は、手持ちのアルバムCD等からPCに取り込んだ音源だったり、さらにはYouTubeの動画だったりとメディアや再生環境がバラバラだ。…",[181,182,183],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":185,"title":186,"date":187,"excerpt":188,"image":189,"categories":190},"what-is-the-sunorhc","Sunorhc is a date-time library for JavaScript","2021-08-25T22:55:55","Sunorhc is a lightweight library for handling dates and times for JavaScript. The library wraps a native JavaS…","\u002Fassets\u002Fuploads\u002F2021\u002F08\u002Fshutterstock_1091212919_resized.jpg",[191],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":193},[194],{"slug":25,"name":26},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":196},[197],{"slug":25,"name":26},{"slug":199,"title":200,"date":201,"excerpt":202,"image":203,"categories":204},"mhrise-skill-simulator-creation-chapter-12","モンスターハンターライズのスキルシミュレータを作ってみる！ 第12回","2021-06-21T13:11:46","今回は「マイセット登録」と護石データの「エクスポート／インポート」機能の追加をしていく。折り良く（悪く？）「FF7リメイク・インターグレード」や「FORTNITEシーズン7」が出たこともあって、そっちをプレイしてたらこ…","\u002Fassets\u002Fuploads\u002F2021\u002F04\u002Fb6ca09e9a7f6faf27641f62dabe64c6ff97b4f326aa478379e3c112aa28eb9ab.jpg",[205],{"slug":22,"name":23},{"slug":207,"title":208,"date":209,"excerpt":210,"image":203,"categories":211},"mhrise-skill-simulator-creation-chapter-11","モンスターハンターライズのスキルシミュレータを作ってみる！ 第11回","2021-06-07T14:52:31","さて、今回はユーザー個別データの管理部分を開発していく予定だが、まずその前にやっておくことがある。 新スキル「風雷合一」に対応する Ver.3.0の大型無料アップデートで追加された新スキルに「風雷合一」というのがある…",[212],{"slug":22,"name":23},{"slug":214,"title":215,"date":216,"excerpt":217,"image":203,"categories":218},"mhrise-skill-simulator-creation-chapter-10","モンスターハンターライズのスキルシミュレータを作ってみる！ 第10回","2021-06-02T00:29:10","今回は、護石管理画面の作成だ。この護石管理では、ユーザーごとに護石の登録を行う機能と、登録した護石を削除する機能を持つ仕様になる。この画面から登録した護石データはデータベースに格納するので、フロントエンド側からのリクエス…",[219],{"slug":22,"name":23},{"slug":221,"title":222,"date":223,"excerpt":224,"image":203,"categories":225},"mhrise-skill-simulator-creation-chapter-9","モンスターハンターライズのスキルシミュレータを作ってみる！ 第9回","2021-05-22T23:56:27","さて、今回はVuexによるデータ・キャッシュの実装だ。一度データベースから読み込んだデータをフロントエンド側で再利用可能なストアに格納することで、データベースへの接続回数を減らしてシステム負荷を下げるとともに、UX的な…",[226],{"slug":22,"name":23},[228,230,232,236,238,239,240,241,242,244,247,248,250,252,254,258,261],{"slug":161,"name":162,"count":229},3,{"slug":13,"name":7,"count":231},7,{"slug":233,"name":234,"count":235},"csnp","Custom Sticky Notes",2,{"slug":84,"name":85,"count":237},1,{"slug":35,"name":36,"count":229},{"slug":149,"name":150,"count":237},{"slug":64,"name":65,"count":237},{"slug":94,"name":95,"count":237},{"slug":74,"name":75,"count":243},37,{"slug":245,"name":246,"count":237},"wpqt","WP Qiita",{"slug":104,"name":105,"count":237},{"slug":22,"name":23,"count":249},29,{"slug":45,"name":46,"count":251},16,{"slug":138,"name":139,"count":253},5,{"slug":255,"name":256,"count":257},"lifelog","ライフログ",64,{"slug":259,"name":260,"count":235},"uncategorized","未分類",{"slug":25,"name":26,"count":262},45,{"type":264,"post":265},"post",{"slug":266,"title":267,"date":268,"excerpt":269,"image":42,"categories":270,"modified":273,"html":274,"tags":275,"related":287,"prev":314,"next":322},"switch-the-read-or-unread-posts-of-wordpress","WordPressの記事の既読・未読を判定する","2014-07-23T20:11:59","WordPressの単一投稿ページや固定ページでは、\u003CBODY>タグのクラスに投稿IDが出力されます。 単一投稿ページでは、class=”single single-post postid-13 single…",[271,272],{"slug":74,"name":75},{"slug":45,"name":46},"2021-02-03T20:44:22","\u003Cp>WordPressの単一投稿ページや固定ページでは、\u003Ccode>&lt;BODY&gt;\u003C\u002Fcode>タグのクラスに投稿IDが出力されます。\u003Cbr \u002F>\n単一投稿ページでは、\u003Ccode>class=\"single single-post postid-13 single-format-standard～\"\u003C\u002Fcode>、固定ページでは、\u003Ccode>class=\"page page-id-68 page-template-default～\"\u003C\u002Fcode>という形式で自動でクラス指定されるわけです\u003Csup id=\"fnref-24-1\">\u003Ca href=\"#fn-24-1\" rel=\"footnote\">1\u003C\u002Fa>\u003C\u002Fsup>。\u003C\u002Fp>\n\u003Cp>そして、アーカイブページのように複数の投稿をリスト化して表示するページの一つのリスト（テーマにより差はあるが、大抵は\u003Ccode>&lt;ARTICLE&gt;\u003C\u002Fcode>タグ）毎に、投稿IDがID属性とクラスに含まれています。\u003Cbr \u002F>\n例えば、\u003Ccode>&lt;article id=\"post-40\" class=\"post-40 status-publish format-standard hentry\"&gt;\u003C\u002Fcode> という形式です。これはアーカイブページをはじめ、単一投稿ページや固定ページのメインコンテンツの記事部分も同様です。\u003C\u002Fp>\n\u003Cp>基本的にこのデフォルトのタグ構造・クラス形式を継承するWordPressテーマであれば、単一投稿ページや固定ページが表示された時にその投稿IDをCookie等に保存することで、記事の既読判定を行うことが出来るようになります。\u003Cbr \u002F>\nつまり、単一の投稿を表示した時点でその投稿IDをCookieの既読リストに保存して、アーカイブページや記事一覧系のコンテンツを表示するところでCookieから既読リストを読み出して照らし合わせることで、記事毎に未読・既読の表示を出し分けられるわけです。\u003C\u002Fp>\n\u003Cp>では実践してみます。実際には出力されたHTMLを解析してのDOM処理となるため、WordPressテーマ等のPHPは全く触らずにJavaScriptオンリーで実現可能です。\u003C\u002Fp>\n\u003Cp>まず、現在表示されているページの投稿IDを取得する関数を準備します。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function getPostID() {\n    \u002F\u002F BODYタグのclass属性から投稿IDを取得する\n    var post_id = null;\n    var classList = $('body').attr('class').split(\u002Fs+\u002F);\n    for (i=0; i&lt;classList.length; i++) {\n        if (classList[i].indexOf('postid-') != -1) {\n            var post_id = Number(classList[i].replace('postid-', ''));\n            break;\n        } else if (classList[i].indexOf('page-id-') != -1) {\n            var post_id = Number(classList[i].replace('page-id-', ''));\n            break;\n        }\n    }\n    return post_id;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>次に、Cookieのセッタとゲッタを定義します。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function setCookie(ck_name, ck_value, expiredays) {\n    \u002F\u002F SetCookie\n    var path = '\u002F';\n    var extime = new Date().getTime();\n    var cltime = new Date(extime + (60*60*24*1000*expiredays));\n    var exdate = cltime.toUTCString();\n    var pre_data = getCookie(ck_name);\n    var tmp_data = pre_data.split(',');\n    tmp_data.push(ck_value);\n    var fix_data = tmp_data.filter(function (x, i, self) { return self.indexOf(x) === i; });\n    var s = '';\n    s += ck_name + '=' + escape(fix_data.join(','));\n    s += '; path=' + path;\n    s += expiredays ? '; expires=' + exdate + '; ' : '; ';\n    document.cookie = s;\n}\nfunction getCookie(ck_name) {\n    \u002F\u002F GetCookie\n    var st = '', ed = '', res = '';\n    if (document.cookie.length &gt; 0) {\n    st = document.cookie.indexOf(ck_name + '=');\n    if (st != -1) {\n        st = st + ck_name.length + 1;\n        ed = document.cookie.indexOf(';', st);\n        if (ed == -1) \n            ed = document.cookie.length;\n            res = unescape(document.cookie.substring(st, ed));\n        }\n    }\n    return res;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>以上が共通処理です。本項以下の処理を実行するために必要になります。\u003Cbr \u002F>\nそして、単一投稿ページや固定ページなどの既読を判定させたい記事ページに下記のスクリプトを追加します。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function checkAlreadyRead() {\n    \u002F\u002F 自ページのARTICLEタグの投稿IDを取得してCookieの既読済みリストと照らし合わせる\n    var match_already_read = false;\n    $('article').each(function() {\n        var pid = null;\n        var classList = $(this).attr('class').split(\u002Fs+\u002F);\n        for (i=0; i&lt;classList.length; i++) {\n            if (classList[i].indexOf('post-') != -1) {\n                var pid = Number(classList[i].replace('post-', ''));\n                break;\n            }\n        }\n        if (pid != '') {\n            var data = getCookie('already_read').split(',');\n            var post_ids = data.filter(function(x, i, self) { return self.indexOf(x) === i; });\n            post_ids.forEach(function() {\n                if (Number(arguments[0]) == pid) {\n                    match_already_read = true;\n                }\n            });\n            \u002F\u002F 既読済みARTICLEのclassにreadクラスを追加する\n            var add_class = match_already_read ? 'read' : '';\n            $(this).addClass(add_class);\n        }\n    });\n    return match_already_read;\n}\nvar is_already_read = checkAlreadyRead();\n$(window).scroll(function() {\n    \u002F\u002F ヘッダーナビゲーションの高さ（例では60px）より下にスクロールしたら既読とする\n    if (!is_already_read) {\n        if ($(this).scrollTop() &gt; 60) {\n            setCookie('already_read', getPostID(), 365);\n            is_already_read = true;\n        }\n    }\n});\nsetTimeout(function() {\n    \u002F\u002F このページへの滞在時間が2秒以上になったら既読とする\n    if (!is_already_read) {\n        setCookie('already_read', getPostID(), 365);\n        is_already_read = true;\n    }\n}, 2000);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>上記サンプルでは、そのページにて特定位置より下にスクロールするか、ページでの滞在時間が一定時間を超えた時のいずれかの条件で、既読フラグをONにし、Cookieに既読済みリスト「already_read」としてそのページの投稿IDを保存期間を365日（1年間）でセットしています\u003Csup id=\"fnref-24-2\">\u003Ca href=\"#fn-24-2\" rel=\"footnote\">2\u003C\u002Fa>\u003C\u002Fsup>。\u003C\u002Fp>\n\u003Cp>上記サンプルでは変数\u003Ccode>is_already_read\u003C\u002Fcode>を既読判定フラグとして定義してスイッチングしているだけで、特にこのフラグを使っての後続処理は行っていません。\u003Cbr \u002F>\n例えば、既読判定フラグがTRUEになったら特定の処理をする関数を準備しておけば、下記のように呼び出すことができます。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F 呼び出し元\n    if (!is_already_read) {\n        setCookie('already_read', getPostID(), 365);\n        is_already_read = true;\n        setAlreadyReadIcon();\n    }\n\nfunction setAlreadyReadIcon(){\n    \u002F\u002F 既読クラス「read」を持つ要素の子要素に既読アイコンを追加する\n    $(document).find('.read').each(function() {\n        if (!$(this).children().is('.already-read-icon')) {\n            $(this).append('&lt;div class=\"already-read-icon\"&gt;&lt;i class=\"fa fa-eye\"&gt;&lt;\u002Fi&gt;&lt;\u002Fdiv&gt;');\n        }\n    });\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>上記はあくまで一例ですが、本サイトのTOPページなどでは、既読の記事だったら記事ブロックの左下に既読アイコン（目のアイコン）を表示している処理を行っています。\u003C\u002Fp>\n\u003Cp>※ 本項のスクリプトを動かすにはjQueryが必要です。\u003Cbr \u002F>\n※ 既読リストはCookieに保存してあるため、ブラウザにてCookieを削除すると既読履歴がクリアされてしまいますのでご注意を。\u003C\u002Fp>\n\u003Cdiv class=\"footnotes\">\n\u003Chr \u002F>\n\u003Col>\n\u003Cli id=\"fn-24-1\">\nアーカイブページなどの\u003Ccode>&lt;BODY&gt;\u003C\u002Fcode>タグクラスには\u003Ccode>class=\"archive post-type-archive logged-in～\"\u003C\u002Fcode>のように投稿IDは含まれません。&#160;\u003Ca href=\"#fnref-24-1\" rev=\"footnote\">&#8617;\u003C\u002Fa>\n\u003C\u002Fli>\n\u003Cli id=\"fn-24-2\">\n既読済みリストが更新されるたびに、保存期間はその時点から1年間に更新されます。&#160;\u003Ca href=\"#fnref-24-2\" rev=\"footnote\">&#8617;\u003C\u002Fa>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fdiv>\n",[276,279,282,285],{"slug":277,"name":278},"cookie","Cookie",{"slug":280,"name":281},"javascript","JavaScript",{"slug":283,"name":284},"jquery","jQuery",{"slug":74,"name":286},"WordPress",[288,295,299,307],{"slug":289,"title":290,"date":291,"excerpt":292,"image":71,"categories":293},"part4-conceal-of-registration-or-authentication-on-wordpress","第４章 WordPressの登録・認証系の秘匿化","2020-03-26T02:06:28","前章までの施策によって、フロントエンド側に出力されるコンテンツ系ページからWordPressっぽさを排除できた。だが、ログイン画面などの認証系周りは未施策なため、この章ではその辺の秘匿化を行なっていく。 まず、現状の…",[294],{"slug":74,"name":75},{"slug":38,"title":39,"date":40,"excerpt":41,"image":42,"categories":296},[297,298],{"slug":45,"name":46},{"slug":25,"name":26},{"slug":300,"title":301,"date":302,"excerpt":303,"image":304,"categories":305},"what-to-do-if-search-results-displaying-nothing-when-using-iframe-in-google-adsense","Google Adsenseで検索結果のiframeが表示されない時の対処法","2016-03-09T18:26:27","Google Adsenseの検索ユニットには検索結果の表示方法が3つあり、iframe を使用して自分のウェブサイトに表示する方法を選択して実装した時に検索結果が表示されないという症状に陥いる場合がある。その時の解決方…","\u002Fassets\u002Fuploads\u002F2016\u002F03\u002Fgoogle-adsense-logo.png",[306],{"slug":45,"name":46},{"slug":308,"title":309,"date":310,"excerpt":311,"image":42,"categories":312},"add-badge-in-favicon-as-number-of-new-unread-articles","未読の新着記事の数をバッジとしてfaviconに付ける","2014-08-06T13:59:16","タブブラウザが全盛の昨今では、タブに表示されるWEBサイトのアイコン（favicon）に新着数などの数字を動的に表示しているサービスが多い。例えば、facebookやBacklog、Gmailなど、結構色んなWEBサイト…",[313],{"slug":74,"name":75},{"slug":315,"title":316,"date":317,"excerpt":318,"image":319,"categories":320},"roast-lunch","平城苑で焼肉ランチ","2014-07-14T14:26:35","今日は結婚記念日だったので、妻と二人で自宅近くの焼肉店「平城苑」でお祝いランチをして来た。 元々は西日暮里の「エイジングビーフ」で熟成肉を食べようと思っていたのだが、調べてみたら毎月第2月曜日は定休日で断念せざるを得ず……","\u002Fassets\u002Fuploads\u002F2014\u002F07\u002Fyakiniku_20140714_1.jpg",[321],{"slug":255,"name":256},{"slug":323,"title":324,"date":325,"excerpt":326,"image":42,"categories":327},"compare-php-and-ruby-and-javascript","RubyとPHPとJavaScriptの狭間で","2014-08-04T16:02:58","ここ1ヶ月ほど、会社の仕事でRubyを使った開発業務をしている。同時に、プライベートでは、WordPressのテーマ開発やプラグイン開発を進めてもいるため、RubyとPHPとJavaScriptのコーディングを同時並行で…",[328],{"slug":22,"name":23},1793391398709]