Filter
Exclude
Time range
-
Near
🚀 開発環境が更新されました。以下のPRがマージされました。#オプチャグラフ #502: [STG] perf: ルーム統計グラフのローソク足表示で不要なデータ取得をなくす(DBアクセス削減・取得データ軽量化) --- ルーム個別ページのグラフを「ローソク足」で表示するとき、描画に使わない日次メンバー数を毎回取得し、さらにレスポンスに同じ日付配列が二重に乗っていた。これを整理し、ローソク足は OHLC のデータだけを取得・返すようにした。 ## これまでの問題 - ローソク足でも日次メンバー数(member)を取得していた。ローソク足では描画に使わないのに、表示のたび統計DBへアクセスしていた。 - レスポンスに日次の日付 `date` と OHLC 用の日付 `ohlcDate` が両方乗り、中身が同じで二重だった(指摘いただいた点)。 ## 対処 - ローソク足は OHLC 専用の日付軸 `ohlcDate` だけで描くようにし、`date` / `member` を取得も返却もしない。 - API(`app/Services/Chart/OpenChatChartApiService.php`): ローソク足や OHLC だけの取得要求では統計テーブルを引かず、`ohlcDate` `memberOhlc`(順位ONなら `positionOhlc`)だけ返す。 - フロント(`frontend/oc-app/src/graph/util/fetchRenderer.ts`): ローソク足は member 層を取得しない(順位ONでも `positionOhlc` だけ取得)。折れ線へ切り替えたとき初めて member を遅延取得する。 - 期間タブ(週/月/全期間)の本数判定も OHLC 本数で行うよう揃えた。 - `frontend/oc-app/README.md`(表示状態ごとのAPIとデータ型)も更新。 差分は純減(9ファイル・ 160/-205)で、ローソク足まわりのコードがシンプルになった。 ## 確認 - PHPStan / 該当 PHPUnit(OpenChatChartApiServiceTest 10件)/ tsc 通過。 - 折れ線・ローソク足 × ランキング・急上昇・なし × 期間タブの全ビュー、およびモード切替・順位ON/OFF・期間切替の操作をヘッドレスで確認(JSエラーなし・順位オーバーレイ整合・折れ線への切替で member が遅延取得され正しく描画)。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: `user-B550M-Pro4:~/repos/Open-Chat-Graph`
34
🚀 開発環境が更新されました。以下のPRがマージされました。#オプチャグラフ #496: [STG] perf: ルーム統計グラフの初回表示を軽量化し、アクセス集中時のDB競合を低減(タブ判定の事前計算+表示期間だけ取得) --- ## 何が変わるか ルーム個別ページ(/oc/{id})のグラフ初回表示で、サーバが叩くDBを大きく減らす。特に Googlebot 等のクロール集中時に出ていた `database is locked` 系のDB競合を緩和する。 ## これまでの問題 グラフ初回表示で2つの重い読み取りが毎回走っていた。 1. タブ/ボタン出し分け判定(可用性メタ)のために、表示のたびに4つのDB(統計・ローソク足・順位の各SQLiteと毎時データのMariaDB)へCOUNT。 2. 系列データを、表示は週/月/全をクライアントで切り出すだけなのに、初回に全期間ぶん取得。 アクセス集中時、statistics 等のSQLite読みが競合し `database is locked`(本番エラー: [TH] Googlebot, span=hour・meta=1 の初回ロードで `getDailyMemberStatsDateAsc` が locked)の一因になっていた。 ## 対処 1. 可用性メタを cron で事前計算し MySQL の `oc_page_cache.chart_meta` に持たせ、/oc 表示の既存1クエリで読みHTMLに埋め込む。初回の meta=1 リクエストを撃たない。 2. 系列は表示中の期間タブの窓だけ取得し、拡大時は足りない古い側の差分だけ取得(窓は最新日終端固定なので連続1範囲)。一度取得した範囲は再取得しない。 3. 系列を層(member / position / memberOhlc / positionOhlc)に分け、`?series=` で必要な層×不足範囲だけ取得(全期間で人数表示中に順位ONしても人数は再取得しない)。 4. 事前計算の毎時順位は実行ごとに1回の一括GROUP BY(バックフィルでも MySQL gone away を起こさない)。 5. 取得が一過性の5xx(リトライ後も不可)・403等で最終失敗したら、壊れた表示でなく再読み込みを促すエラー表示。5xx は fetcher が1回だけ自動リトライ。 ## アーキテクチャ(データの流れ) フロント → API: - 初回: /oc ページHTMLに埋め込んだ可用性メタ `#chart-meta` を `fetchRenderer.ts`(readEmbeddedChartMeta) が読む。埋め込みがあれば初回 meta=1 を撃たない(`App.tsx` init → `fetchChartData`)。 - 系列取得: `fetchRenderer.ts` が層別に `GET /oc/{id}/chart?series=<member,position,…>&sort&scope&category&mode&from&to` を叩く。各層を date→値でキャッシュし、必要層の足りない古い範囲だけ・同範囲の層はまとめて1リクエスト。`fetcher.ts` が URLキャッシュ+5xx 1回リトライ。操作時は `chartState.ts`(handleChangeLimit / handleChangeRankingRising / handleChangeChartMode / handleChangeCategory) → fetchChart。 API 処理: - ルート `oc/{open_chat_id}/chart` → `OpenChatChartApiController::chart` → `OpenChatChartApiService::buildChartResponse`。 - `series` 指定で層だけ返す/`from`・`to` で範囲化/`meta=1` でメタ同梱(埋め込み無し室のフォールバック)/`span=hour` は最新24時間。 - 系列の組み立て: 人数=`StatisticsChartArrayService::buildStatisticsChartArray`、順位=`RankingPositionChartArrayService::getRankingPositionChartArray`、ローソク足=`buildCandlestickSeries`、最新24時間=`buildHourSeries`。 リポジトリ: - 人数: `SqliteStatisticsPageRepository::getDailyMemberStatsDateAsc`(statistics SQLite・`date BETWEEN`)/日付範囲 `getMemberDateRange`。 - 順位: `SqliteRankingPositionPageRepository::getDailyPosition`(ranking_position SQLite)。 - ローソク足: `SqliteStatisticsOhlcRepository` / `SqliteRankingPositionOhlcRepository`(`getOhlcDateAsc`)。 - 最新24時間・メタのhour集計: `RankingPositionHourRepository`(MariaDB。1室 `getHourPositionCounts` / 一括 `getHourPositionCountsAll`)。 - メタの読み(primary): `OpenChatPageRepository::getOpenChatByIdWithTag` が `oc_page_cache` を LEFT JOIN(narrative と chart_meta を1クエリ)。`OpenChatPageController` が `#chart-meta` へ埋め込む。 cron でのキャッシュ更新(条件は下表): - `oc_page_cache.chart_meta` は `OcPageCacheGenerator::generateForIds`(per-room) が `ChartMeta\ChartMetaBuilder::build` で生成し `OcPageCacheRepository::upsertMany` で保存。毎時順位は `UpdateOcPageCacheService::handle` がチャンクループの外で一括 `getHourPositionCountsAll` を1回だけ取得して渡す(per-room MariaDB を撃たず gone away 回避)。 - 起動は `SyncOpenChat::hourlyTask`(毎時) / `dailyTask`(日次) / genetop(全件)。 フォールバック(埋め込みが無い室): - `#chart-meta` が null → フロントは meta=1 を撃つ → `OpenChatChartApiService` が `ChartMetaBuilder::build`(hourEntry 無し=ライブ・per-room で hour 取得)でメタを作る。primary(cron) と同一コードなので結果は一致する。 - メタ計算は `app/Services/Statistics/ChartMeta/ChartMetaBuilder.php` の1箇所のみ。`StatisticsChartArrayService` は「メンバー系列生成専用」。 ## oc_page_cache の生成タイミング(マッピング) chart_meta は分析文(narrative)と同じ `oc_page_cache` 行に同梱され、同じ再生成経路で作られる。件数は ja(本番同等ローカル)実測。 | タイミング | 起動 | 対象の室(条件) | 件数(ja実測) | |---|---|---|---| | 毎時 | `SyncOpenChat::hourlyTask`(毎時30分) | 直近1時間で人数が変わった室 + 新規ランク入り | 約 4,320 | | 日次 | `dailyTask`(23:30) | `getForDaily` = 変動(過去8日) + 新規(レコード8件未満) + 週次更新(最終記録が1週間以上前)。ランキング外の室も週次更新で拾い、最長でも約1週間で全室が一巡 | 約 108,274 | | genetop(全件) | 管理画面 | `getOpenChatIdAll` = 全室。毎時順位は一括化済みで全件でも gone away しない(ただし時間はかかる) | 約 242,386 | | バックフィル / write-through | 管理画面 / idCsv 指定 | 指定した室のみ | 指定数 | ## 未生成室(chart_meta が無い室)の挙動 - 新規室、または初回バックフィル前の室は chart_meta が無い → ページ埋め込みが null → フロントは meta=1 でライブ計算(ChartMetaBuilder)にフォールバックする。 - このときの系列は全期間取得になり、窓・差分の最適化は効かない。ただし表示は壊れない(従来どおり=無劣化)。 ## フォールバックを外せない理由 - 新規室が常時発生し、次の再生成まで chart_meta を持たないため、ライブ計算経路は恒久的に必要。 - ただしリファクタで「二重実装」は解消済み。フォールバックは同じ `ChartMetaBuilder` のライブ実行であって、余計なコードではない。 ## 主な変更箇所 - 事前計算: `Statistics/ChartMeta/ChartMetaBuilder`・`Statistics/ChartMeta/ChartAvailabilityCalculator`(しきい値の単一定義)・`OcPageCacheGenerator`(毎時順位は一括 `getHourPositionCountsAll`)・`UpdateOcPageCacheService`。 - 同梱: `OpenChatPageController` / `Views/oc_content.php` / `OpenChatPageRepository`(chart_meta をJOINで読む)。 - API: `OpenChatChartApiController` / `OpenChatChartApiService`(from/to 範囲+`series` 層)と各系列リポジトリ(`date BETWEEN`)。 - フロント: `frontend/oc-app`(層別の最小差分取得、取得失敗時のエラー表示、5xx 1回リトライ)。 - genetop: 全室の `oc_page_cache` 再生成を追加。 - CLAUDE.md: 毎時/日次にキャッシュ生成を足したら genetop で全件再生成できるようにするルールを明記。 ## デプロイ・運用 - `oc_page_cache` に `chart_meta` 列を追加(デプロイ時 `sync_mysql_schema` が自動反映、手動DDL不要)。CI/mock も `setup/init-database.sh` が schema から構築するので列は在る(NULL時はフォールバックで /oc は200)。`deploy.yml` 変更不要。 - 反映後に genetop を1回実行すると全室の chart_meta が揃い、全室が窓・差分の最適化経路に乗る。実行しなくても毎時/日次で順次埋まり(最長約1週間)、未生成室はそれまでフォールバックで無劣化。 ## 確認 - 埋め込みメタ == meta=1 ライブ計算 が実データ複数室で一致(同一 ChartMetaBuilder)。 - `series` 未指定の全レスポンス行列が改修前とバイト一致(後方互換)。`series` 各層は該当層のみ返し、範囲も有効。順位ON時は `series=position` 1本のみで人数を再取得しないことをNetworkで実証。 - 窓→拡大が差分のみ・再取得なし・繋ぎ目で連続描画、ローソク足のタブ維持、新規室のフォールバック、最新24時間をヘッドレスで確認。 - PHPStan / PHPUnit(新規テスト含む)green。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: `user-B550M-Pro4:~/repos/Open-Chat-Graph` ## 追記: レスポンスのさらなる軽量化(2コミット) 層別取得のデータ形をさらに削った。 - ローソク足の日付を1本に集約: OHLCの各要素が持っていた `date` をやめ、OHLC専用の日付軸 `ohlcDate` を1本だけ返す。`memberOhlc`/`positionOhlc` はこの軸とindex整合の「値だけ」の配列にした(人数と順位の両方を表示すると日付配列が3本になっていたのを1本に。`positionOhlc` の `null` はその日が圏外)。 - 順位の時刻配列を急上昇のみに: 時刻ラベル `time` は終日時刻を持つ急上昇でだけ返し、ランキング・人数のみ・最新24時間・ローソク足では配列ごと返さない(フロントは「無ければ時刻表示なし」として扱う)。 - `frontend/oc-app/README.md` を追加し、表示状態ごとに送るAPIと返るデータ型を明記。 検証: PHPStan / 該当 PHPUnit(OpenChatChartApiServiceTest 10件)/ tsc 通過。折れ線・ローソク足 × ランキング・急上昇・なし × 期間タブの全ビューをヘッドレスで描画確認(JSエラーなし・順位オーバーレイ整合・tooltipが人数OHLCと順位OHLCの両方を表示)。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: `user-B550M-Pro4:~/repos/Open-Chat-Graph`
1
190
🚀 サイトが更新されました。以下のPRがマージされました。#オプチャグラフ #500: [PROD] fix: おすすめの細かいテーマが大きなタグに吸収される問題を修正(韓国ドラマ・ボードゲーム・国家試験など) --- stg 検証済みのため本番へ反映します(#499 と同内容)。 ## 何が起きていたか 「韓国ドラマ」「ボードゲーム」「国家試験」など細かく分けたテーマのハブが、より大きなくくりのタグ(韓国・ゲーム・試験 等)に部屋を先取りされ、専用ハブがほとんど(一部は完全に)部屋を集められていませんでした。 ## 対処 おすすめのタグ付けは「最初にマッチしたタグ」を採用します。細分タグが汎用タグより後ろで評価され吸われていたため、細分タグを先に評価される側へ昇格しました。 ## 効果(本番同等データで全件再計算・本物のマッチング処理と一致を検証) - フォートナイトブレインロット 615→**640**(ゲーム以外カテゴリの取りこぼし回収) - 韓国美容 / 韓国映画 **0→各6**(集計ゼロから復活) - ボードゲーム 30→**146**、国家試験 23→122、韓国ドラマ 5→44 ほか - タイ: ซีรีส์จีน 26→**168**、ซีรีส์วาย 2→28、สอนวาดรูป 12→68 誤爆ゼロ(総タグ付け室数は不変=純粋な再割当)。`phpunit`(recommend 49テスト)合格。反映はデプロイ後の自動再構築時。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: \`user-B550M-Pro4:~/repos/oc-graph-3\`
82
🚀 開発環境が更新されました。以下のPRがマージされました。#オプチャグラフ #499: [STG] fix: おすすめの細かいテーマが大きなタグに吸収される問題を修正(韓国ドラマ・ボードゲーム・国家試験など) --- ## 何が起きていたか 「韓国ドラマ」「ボードゲーム」「国家試験」など**細かく分けたテーマのハブ**が、より大きなくくりのタグ(韓国・ゲーム・試験 等)に部屋を先取りされ、専用ハブがほとんど(一部は完全に)部屋を集められていませんでした。利用者が特定テーマで探しても、その専用ページに部屋が並ばない状態です。 ## 原因 おすすめのタグ付けは「最初にマッチしたタグ」を採用します。サブカテゴリ別のタグはカテゴリを跨いで**定義順**でまとめて評価されるため、先に並ぶ汎用タグ(例: 美容・試験・ゲーム)が、後ろに並ぶ細分タグ(例: 韓国美容・国家試験・ボードゲーム)を名前マッチで吸い取っていました。 ## 対処 細分タグを、汎用タグより先に評価される側(nameStrong)へ昇格しました。同じカテゴリ内での競合(タイの「絵の描き方」←「お絵描き」)は並び順を入れ替え。 ## 効果(本番同等データで全件再計算し、本物のマッチング処理と一致を検証) | タグ | 部屋数(前→後) | |---|---| | フォートナイトブレインロット | 615→**640**(ゲーム以外カテゴリの取りこぼしを回収) | | 韓国美容 / 韓国映画 | **0→各6**(集計ゼロから復活) | | ボードゲーム | 30→**146** | | 国家試験 / 司法試験 | 23→122 / 6→22 | | 韓国ドラマ | 5→44 | | 海外ドラマ / ホラー映画 / レトロゲーム | 9→28 / 3→18 / 6→20 | | 美容整形 / 勉強時間 | 22→49 / 8→21 | | タイ ซีรีส์จีน / ซีรีส์วาย / สอนวาดรูป | 26→**168** / 2→28 / 12→68 | **誤爆ゼロ**: 総タグ付け室数は不変(純粋な再割当)、減ったのは意図した汎用タグのみ。`phpunit`(recommend 49テスト)合格。変更は `data/ja.json` / `data/th.json` のみ。反映はデプロイ後の自動再構築時。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: \`user-B550M-Pro4:~/repos/oc-graph-3\`
117
🚀 サイトが更新されました。以下のPRがマージされました。#オプチャグラフ #495: [PROD] perf: おすすめ毎時生成が完了せず止まる問題を解消(取得処理を一括化し大幅高速化) --- stg を本番へ昇格。おすすめ毎時生成の N 1(本番 ja 約650タグ × 重い結合クエリ)を、タグ50件束ねたウィンドウ関数の一括取得(650本→14本)に置き換え、毎時1時間で終わらず次回 cron に kill され続けて一度も完走しなかった問題を解消する。生成中の DB 圧迫が消えることで /oc ページの「MySQL server has gone away」連鎖も止む見込み。 周辺の死にコード(未使用の tag1/tag2 列+その派生表 JOIN、言語別に残った旧・関連タグ集計 sortAndUniqueTags、未使用メソッド getPreviewList)も併せて整理(挙動不変)。現在の「テーマを探す」は共起ベースの relatedTags で全言語共通のため影響なし。 全661タグで serialize バイト一致・recommend系 phpunit 66テスト パス・主要ページ HTTP 200 を確認済み。詳細は #494。 --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: \`user-B550M-Pro4:~/repos/oc-graph-3\`
55
🚀 開発環境が更新されました。以下のPRがマージされました。#オプチャグラフ #480: [STG] perf: コメント一覧の取得を高速化(いいね集計を表示分だけに限定し約15%短縮) --- ## 問題 オープンチャットのコメント一覧を開くたびに走る「コメント取得処理」が、コメントへのいいね集計を毎回 `like` テーブル全体から求める作りになっていた。MariaDB の最適化(split optimization)で全件走査自体は回避されていたものの、集計用の派生テーブルを毎回組み立てるコストが残っていた。 ## 対処 そのページに表示するコメントだけにいいね集計を限定する方式に変えた。コメント画像の取得が既に使っている「表示分だけまとめて取得(IN集計)」と同じパターン。 - まずコメント取得処理(`CommentListRepository::findComments()`)でページぶんのコメントを確定(comment log のみ、index駆動で軽い) - その `comment_id` ぶんだけ `like` を集計してマージ(`fetchLikeCounts()`) リポジトリのインターフェースもコントローラも変えていない。 ## 効果 ローカル実測(現実的なフルページ・OLDとSPLITを交互に2000サンプル×3回計測)でコメント取得処理が約15%短縮(中央値 1.12ms → 0.94ms、差0.18ms > 標準偏差0.12ms で再現)。 DB の最適化任せでなく明示的に表示分へスコープするため、`like` が大きい本番ほど効果は同等以上を見込む(本番未計測のため数値はローカル基準)。 ## 検証 - 旧クエリ(全件集計)と結果が完全一致(複数部屋・ページ・voted 含めミスマッチ0) - phpunit OK(`CommentListRepositoryTest`。古い DTO コンストラクタ呼び出しも現行4引数に修正) - PHPStan OK(変更3ファイル No errors) --- 🤖 Generated with Claude Code (claude-opus-4-8[1m]) Posted from: `user-B550M-Pro4:~/repos/Open-Chat-Graph`
66
Another WPFolks idea shipped 🚀 Darshan Chauhan posted "Content Decay Detector" as an idea on the WPFolks Ideas board. A few weeks later, Gauri Kaushik built it. Shipped with: decay scoring algorithm, WP Cron batched scanning, REST API with nonce auth, WP_List_Table reports, dashboard widget, weekly digest, Gutenberg sidebar, PHPUnit tests, zero PHPCS violations. This is the loop: an idea posted → another folk builds it → everyone benefits. Idea: wpfolks.org/ideas/content-de… Shipped: github.com/GauriDevWork/cont… Massive respect to both folks. Not on WPFolks yet? Join us at wpfolks.org #WordPress #BuildInPublic
1
8
181
🚀 開発環境が更新されました。以下のPRがマージされました。#オプチャグラフ #420: [STG] fix: 台湾・タイ版ルームページの成長ランキング順位が日本版データと混ざる問題を修正 --- ## 問題の概要 ルーム個別ページの紹介文セクションに表示する「成長ランキング順位」(1時間 / 24時間 / 1週間)のデータ参照先が日本語版専用のデータベースに固定されており、台湾版・タイ版のページで日本語版の順位データを誤って参照していました。 ### 具体的な問題 - 順位の取得処理(`OcNarrativeRepository::getGrowthRankingPositions()`)が、外部公開SQL API用のSQLiteデータベース(日本語専用・固定パス)を読んでいた - ルームIDは言語ごとに独立した連番のため、台湾・タイ版では「たまたま同じ番号の日本のルーム」の順位が返り、誤った評価ラベル(「全体1位」等)が付く可能性があった - このSQLiteデータベースは本来、外部公開SQL APIとデータバックアップ専用の想定 ## 対処内容 1. 順位データの参照先を各言語のMySQLデータベース(`statistics_ranking_hour` / `hour24` / `week`、毎時洗い替えで id がそのまま順位)に変更し、言語ごとに正しい順位を参照するようにした 2. あわせて、使われなくなっていた「削除済みオープンチャット一覧API」(管理画面・外部APIの `ban` エンドポイント一式、約490行)を撤去 - リポジトリ本体・テスト・コントローラー2箇所・ルート定義・そのルート専用だったBasic認証処理を削除 ## 動作確認 - phpunit: ナラティブ関連テスト40件すべてパス - 実データ検証: 成長ランキング1〜3位のルームで新しい参照先から取得した順位が期待値と一致、ランキング圏外のIDは全期間 null(従来と同一挙動) - 全編集ファイル `php -l` 構文チェック通過
342
💬 Before lunch at #IntPHPcon: 📱 Messaging domains beyond WhatsApp with Jason Viljoen 🪵 Client-side logging with Marcus Bointon ⚡ Faster PHPUnit suites with Sebastian Bergmann Product architecture, observability & testing performance across the rooms. #PHP #Testing #WebDev
1
69
🚀 Conference Day 3 at #IntPHPcon Berlin! Today is all about: 🤖 AI engineering ⚡ PHP performance 🛠 PHPUnit ✨ Clean Code 📊 Observability 🚀 HTTP/3 📅 June 11 | 09:00 - 17:30 | Berlin 🎟 Tickets are still available! 🔗 phpconference.com/berlin-en/… #PHP #AI #WebDev
32
Replying to @jabaruben @Manz
Le he pasado este prompt: "Escribe una función PHP que implemente un repositorio Laravel para usuarios siguiendo Clean Architecture y añade pruebas PHPUnit." Y me da unos 18 t/s pero se mete en bucle hacia el final y no termina nunca...he usado el qwen3.5 0.8B Q4KM
2
18
Boojaah ... we were busy again yesterday. Here's what shipped: QUIQQER Branch Organizer 2.2.0 ✅ Require at least PHP 8.5 QUIQQER Bricks 2.27.0 ✅ Configurable frontend HTML ids for bricks added ✅ Unique brick ids to rendered HTML wrappers added QUIQQER Customer 2.5.2 ✅ Consistently use address UUID for quiqqer.erp.customer.contact.person property ✅ Fix open items detail grid refresh after booking incoming payments ✅ Open items snapshot sync after linked payments QUIQQER Mobile Detection 2.0.1 ✅ Phpstan and new phpunit configurations in .gitlab-ci.yml added ✅ Better error handling and enforce type safety ✅ Package.xml: wrap XML values in CDATA to prevent parsing errors

1
6
66
Vitest 4.1 ships a built-in `agent` reporter that automatically suppresses passing test output and reduces coverage noise when running inside an AI coding agent like @ClaudeAI Code or Copilot. One line of config, fewer wasted tokens: ```ts test: { reporter: ['agent'], } ``` Similar to what `laravel/pao` does for PHPUnit. But baked right into Vitest.
1
2
326
Symplify PHPStan rules 14.11.0 just dropped 🎉 2 lines in your phpstan.neon, two new safety nets: * ctor: true # use constructors, not setter soup * mocks: true # spot fragile PHPUnit mocks Bonus: smarter return types for Symfony, Laravel & path functions - now built in. PHP 8.4 ✅ Check the full release with examples ⬇️ github.com/symplify/phpstan-…
1
7
27
1,469
先月から2名の学生アルバイトが加わり、今は開発環境を構築中です。xdebug を使った PHP のリモートデバッグや PhpUnit の自動テストの実行、ブラウザの開発者ツールなど確認していきます。
18
Oh yes the @spatie_be team is prolific at creating useful packages
1
13
Part 2: The construction of the Black Matrix Cube There's a reason why Baphomet sits on the block (black box) & has humans chained to it (blockchain) The Blackcube Matrix ascensionglossary.com/index.… Smartphones are IoT-cloud-based environments & BLACKFIRE is embeddable into smart devices. The perfect mechanism to siphon off human energy (bio/physio/EEG signals) Remember their goal is structured for the Human Embedded System. They use Blackfire to Embedd Software into People. BLACKFIRE FOR DEVICE EMBEDDING “BLACKFIRE is available as a runtime library for software applications, & for device embedding; we currently support Windows, Linux, macOS, iOS, & Android operating systems on a variety of host architectures, including x86-64, ARM, RISC-V, & NVIDIA GPUs.” Blackfire website blackfire.io/ Blackfire documentation docs.blackfire.io/index Blackfire -github github.com/blackfireio Blackfire player documentation docs.blackfire.io/builds-coo… Blackfire player-github Blackfire Player is a powerful performance testing application. It provides a nice DSL to crawl HTTP services, assert responses, & extract data from HTML/XML/JSON responses. github.com/blackfireio/playe… The Blackfire PHP SDK-github github.com/blackfireio/php-s… PHP SDK documentation github.com/blackfireio/php-s… The Blackfire PHP SDK provides a simple & powerful integration w/ PHPUnit. docs.blackfire.io/php/integr… Blackfire Python SDK is a Python library that manages the Blackfire Python Profiler & handles communication w/ Blackfire servers. The Blackfire Python SDK-github github.com/blackfireio/pytho… Blackfire Python SDK docs docs.blackfire.io/python/int… Blackfire Install Guide docs.blackfire.io/up-and-run… Blackfire Django integration lets u instrument individual HTTP requests docs.blackfire.io/python/int… Blackfire Flask integration lets u instrument individual HTTP requests docs.blackfire.io/python/int… Blackfire Continuous Profiler for GO Blackfire Continuous Profiler continuously collects & uploads profiling data to the Blackfire servers. Once the profiler is enabled, it collects the relevant profiling info in configurable intervals & uploads this info periodically to the Blackfire Agent github.com/blackfireio/go-co… Homebrew repository for the Blackfire Agent & the PHP extension github.com/blackfireio/homeb… OPEN THE PORTAL USING BLACKFIRE This is where the connect to you through the cloud your tethered to. OPEN-BLACKFIRE Vendor-agnostic Quantum Computing framework for Common Lisp github.com/thephoeron/open-b… Blackfire Docker- github github.com/blackfireio/docke… This repository is the home of the blackfire/blackfire Docker image published on Dockerhub. This image embeds the Blackfire agent & CLI tools, enabling Blackfire in your Docker projects. hub.docker.com/r/blackfire/b… Blackfire intergration w/ Docker github.com/blackfireio/docke… Blackfire tutorial on performance management- PHP Code Performance Explained docs.blackfire.io/php/traini… Blackfire Node.js Continuous Profiling support github.com/blackfireio/node-… Blackfire Plugin Lando github.com/blackfireio/lando… Lando dev lando.dev/ THE CONSTRUCTION OF A CUBE Generalized Lattice data-types for Common Lisp github.com/thephoeron/hyperl… Hyperlattices: User’s Guide thephoeron.github.io/hyperla… Hyperlattices is how they connect Rituals to Technology for a Technomancy execution. The use a combination of sigils & 3d spatial temporal data.
1
6
21
583
I had forgotten @fig_php, @PHPUnit, @Xdebug, Flysystem, and PHP league in the ecosystem
1
1
191
Definitely! At QUIQQER, we now use the following default configuration: - phpstan 2.* - phpcs 4.* - phpcbf 4.* - phpunit - PSR standards unit tests are no longer a big time problem with AI either. I'm really happy with this setup.
105