Create a `docker-compose.yml` file in an empty folder:
```yaml
version: '3.9'
services:
postgres:
image: postgres:16
container_name: postgresDB
restart: unless-stopped
environment:
POSTGRES_USER: raghu
POSTGRES_PASSWORD: password
POSTGRES_DB: postgresDB
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7
container_name: redisDB
restart: unless-stopped
ports:
- "6379:6379"
start:
.infrastructure-ffw/lando/init.sh
dopo:
mettere il db nella root progetto_country.sql
./scripts/lando-build.sh nutella us
<script>
jQuery(document).ready(function($) {
$("img").mouseenter(function() {
let $lwp_title = $(this).attr("title");
$(this).attr("lwp_title", $lwp_title);
$(this).attr("title", "");
}).mouseleave(function() {
let $lwp_title = $(this).attr("lwp_title");
$(this).attr("title", $lwp_title);
$(this).removeAttr("lwp_title");
});
});
</script>/**
* @param {number[]} arr
* @param {number} d
* @return {number}
*/
var maxJumps = function(arr, d) {
const n = arr.length;
const dp = Array(n).fill(1);
// Sort indices by height (ascending)
const order = [...Array(n).keys()].sort((a, b) => arr[a] - arr[b]);
for (const i of order) {
// Explore left
for (let x = 1; x <= d; x++) {
const j = i - x;
if (j < 0 || arr[j] >= arr[i]) break;
dp[i] = Math.max(dp[i], 1 + dp[j]# ログへの機密情報出力と対策(備忘録)
## 何をすると何が起きるか
- `console.log(req.body)` 等でリクエストボディ全体をログ出力すると、パスワードやトークンが平文でログに残る。
- ログ集約サービス(CloudWatch、Datadog、Splunk等)へ送られると、複数のエンジニアや外部SREベンダーが閲覧可能になる。
- 削除を忘れ、かつ保管期間が無期限だと、機密情報がログに永久保存される。CloudWatch Logsの保管期間はデフォルトで無期限。
- パスワードやクレジットカード番号がログに含まれると、PCI DSSやGDPR等のコンプライアンス違反に該当する。
- ログ基盤が侵害された場合、平文のため攻撃者は復号せずに情報を取得できる。
## ログに出力してはいけないデータ
- パスワード、パスワードリセットトークン
- セッションID、JWTトークン
- クレジットカード番号
- マイナンバー、住所、電話番号
- APIキー、シークレットキー
## 対策
1. リクエストボディ全体をログ出力しない。必要なフィールドのみ明示的に選択# JWT認証フロー(推奨構成)
1. ユーザーがログインする
2. サーバが短寿命 access token を発行する
理由:
- 漏洩時の悪用時間を短縮するため
(token窃取後の攻撃継続時間を制限できるため)
NG例:
- access token 有効期限30日
(漏洩時に長期間API操作を継続されるため)
3. サーバが長寿命 refresh token を別途発行する
理由:
- 毎回ログインを要求せず再認証するため
(UX低下を防ぎつつ認証継続できるため)
- access token を短命化できるため
(短寿命化によるセキュリティ向上と両立できるため)
4. サーバが refresh token を `HttpOnly + Secure + SameSite` Cookie として保存させる
理由:
- JavaScriptから読めなくするため
(XSS成立時のtoken窃取を困難化するため)
- HTTPS以# JWT認証フロー(推奨構成)
1. ユーザーがログインする
2. サーバが短寿命 access token を発行する
理由:
- 漏洩時の悪用時間を短縮するため
(token窃取後の攻撃継続時間を制限できるため)
NG例:
- access token 有効期限30日
(漏洩時に長期間API操作を継続されるため)
3. サーバが長寿命 refresh token を別途発行する
理由:
- 毎回ログインを要求せず再認証するため
(UX低下を防ぎつつ認証継続できるため)
- access token を短命化できるため
(短寿命化によるセキュリティ向上と両立できるため)
4. サーバが refresh token を `HttpOnly + Secure + SameSite` Cookie として保存させる
理由:
- JavaScriptから読めなくするため
(XSS成立時のtoken窃取を困難化するため)
- HTTPS以See https://www.bytebase.com/reference/postgres/how-to/how-to-create-index-on-large-table-postgres/#failed-concurrently-index-creationksk_Cv9qyMYoHntQL8iX3PGk1fGFMNOXEbJO# SOUL.md - Who You Are
_You're not a chatbot. You're becoming someone._
## Core Truths
**Be genuinely helpful, not performatively helpful.** Skip the "Great question!" and "I'd be happy to help!" — just help. Actions speak louder than filler words.
**Have opinions.** You're allowed to disagree, prefer things, find stuff amusing or boring. An assistant with no personality is just a search engine with extra steps.
**Be resourceful before asking.** Try to figure it out. Read the file. Check t/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let left = 0, right = nums.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) return mid;
// Left half is sorted
if (nums[left] <= nums[mid]) {
if (nums[left] <= target && target < nums[mid]) {
right = mid - 1;
} else {
left = m<!-- this HTML includes the image file URL of the original website this was made for - you should be able to replace it from within the editor -->
<!-- wp:cover {"url":"https://dev.diasporaalliance.co/wp-content/uploads/2026/05/DA-Page-Title@2x-scaled.png","id":959,"dimRatio":50,"overlayColor":"contrast","isUserOverlayColor":true,"focalPoint":{"x":0.15,"y":0.5},"minHeight":300,"minHeightUnit":"px","contentPosition":"bottom center","sizeSlug":"full","align":"full","className":"dac-page-header","sAIzaSyAvqMh76LpJh9V81ExH8qGcjHvt9_LVJzAconst fs = require("fs");
const path = require("path");
const args = process.argv.slice(2);
const MODE = args.find((a) => a === "flag" || a === "remove") ?? "flag";
const schemaArg = args.find((a) => a.endsWith(".json") && a.includes("schema"));
const dataArg = args.find((a) => a.endsWith(".json") && a.includes("data"));
const schemaPath = path.resolve(schemaArg ?? "config/settings_schema.json");
const dataPath = path.resolve(dataArg ?? "config/settings_data.json");
if (!fs.existsSync(schemaP'use strict';
const fs = require('fs');
const path = require('path');
const FILE_PATH = path.resolve('assets/styles.css.liquid');
// ─── Filter strategy map ───────────────────────────────────────────────────
const FILTER_STRATEGIES = {
color_modify: 'derivative-token',
color_lighten: 'derivative-token',
color_darken: 'derivative-token',
color_mix: 'derivative-token',
color_saturate: 'derivative-token',
color_desaturate:'derivative-token',
color_extract: 'derivamongodb+srv://weezy:weezy@cluster0.4so3vbh.mongodb.net/