Sandbox: bash(72986) deny(1) file-write-data /Users/XXX/ios/Pods/resources-to-copy-XXXShareExtension.txt

## 描述:
报错:
> Sandbox: bash(27727) deny(1) file-write-create /Users/reedwen/Documents/demo/RxDemo/Pods/resources-to-copy-RxDemo.txt
## 解决:
update your Xcode project build option 'ENABLE_USER_SCRIPT_SANDBOXING' to 'No'.

# 参考
- [Sandbox: bash(72986) deny(1) file-write-data /Users/XXX/ios/Pods/resources-to-copy-XXXShareExtension.txt](https://stackoverflow.com/a/76792332)

Helps

# resolve to absolute path
abs_path = Path("./google_maps_urls/property_management_q/Arizona/pm_results/results.json").resolve()
print("Absolute path is:", abs_path)

Pod Install - ArgumentError - invalid byte sequence in UTF-8


# Pod Install - ArgumentError - invalid byte sequence in UTF-8

## 描述:
> `ArgumentError - invalid byte sequence in UTF-8`, 反复检查Podfile发现没有问题
## 分析:
> 分析原因:可能指定了多个源冲突了?

## 解决:显示指定源
添加`source 'https://github.com/CocoaPods/Specs.git'`
```rb
source 'https://github.com/CocoaPods/Specs.git'

target 'RxDemo' do
  pod 'RxSwift', '6.9.0'
  pod 'RxCocoa', '6.9.0'
end
```

## 参考
- [Pod Install - ArgumentError - invalid byte sequence in UTF-8](https://github.com/CocoaPods/CocoaPods/issues/9853)

GET - All Line Items and Store it from a Deal - HubSpot

This snippet is used to retrieve all line items from a Job and store them from a HubSpot Deal.
const data = $.getNodeData('GET Line Items from HubSpot Deal')[0].data;

const lineItems = data.associations?.["line items"]?.results || [];
const lineItemIds = lineItems.map(item => item.id);

return lineItemIds.map(id => ({ id }));

GET GEO Infomation based on the Address

When creating Property/Assets or other modules, GEO coordinates are important, as they are used in the Map section of Jobs or other modules. In most cases, when retrieving address information from HubSpot, the Latitude (LAT) and Longitude (LONG) may not be available. To retrieve these details, the following code snippet can be used. The Snippet use Google API to retrieve LAT and LONG. You may use the same API Key added to the Snippet. Please note that the expressions and values must be updated as per your requirements to get the expected results.
const googleApiKey = "AIzaSyAFxpo4hifPI3ML96cewEmzH3e_ErPClXc";
const googleBaseURL = "https://maps.googleapis.com/maps/api/geocode/json?address=";

const buildingData = $.getNodeData('Retrieve Contact details from HubSpot')[0]['data']['properties'];

const buildingName = buildingData?.city__building_ || "";
const streetAddress = buildingData?.street_address__building_ || "";
const city = buildingData?.city__building_ || "";
const zipCode = buildingData?.postal_code__building_ || "";

const addr

kubectl debug cluster conatiner

kubectl run net-debug -n dev-refresh-services --rm -it --image=alpine/curl:latest -- /bin/sh
curl -v http://eurekahostr:8080/eureka/apps

customHook

import { useEffect, useState } from "react";
import {
  getUsers,
  createUser,
  updateUser,
  deleteUser,
} from "../services/userService";

function UsersWithService() {
  const [users, setUsers] = useState([]);
  const [loading, setLoading] = useState(false);

  async function fetchUsers() {
    setLoading(true);
    try {
      const res = await getUsers();
      setUsers(res.data);
    } catch (err) {
      console.error(err);
    } finally {
      setLoading(false);
    }
  }

  async fun

Mob Names

Syd
Makaveli

b2b Checkout TEST frontend v2

import wixUsers from 'wix-users';
import { currentMember } from 'wix-members-frontend';
import {
  getOrderProfileByContactId,
  createB2BOrderFromProfile,
  smokeOrdersKey
} from 'backend/b2bCheckoutTest.web';

// Fallback nur wenn nicht eingeloggt / Profil leer
const TESTDATA = {
  companyName: 'Musterfirma',
  firstName: 'Max',
  lastName: 'Mustermann',
  email: 'bernhard.holl@gmx.at',
  phone: '+43 664 9920440',
  billingAddress: { addressLine: 'Musterstrasse 9', postalCode: '

b2b Checkout TEST v2

// backend/b2bCheckoutTest.web.js
import { Permissions, webMethod } from 'wix-web-module';
import wixStores from 'wix-stores-backend';
import { contacts } from 'wix-crm-backend';
import wixFetch from 'wix-fetch';
import { getSecret } from 'wix-secrets-backend';

/* ---------------------------------- Helpers ---------------------------------- */

function pseudoUuid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = (Math.random() * 16) | 0; // es

OpenWISP2 [ problems & solutions ]

# Problem

OpenWISP custom commands remained **in-progress** because **Celery workers** were stale/hung (lost broker connection or stuck tasks), so jobs were never processed.

# Solution

Restart Celery services (and Daphne optionally) to restore task processing:

```bash
supervisorctl restart celery celery_network celery_monitoring celery_firmware_upgrader celerybeat
supervisorctl restart daphne:asgi0
```

Report Gympass Subscriptions

[HttpGet("report")]
public async Task<string> GenerateReport()
{
    string report = "DATA;NOME;VALOR;RENOVACAO;FUNCIONARIO\n";

    IList<WellhubSubscription> subscriptions = await _wellhubRepository
        .FilterSubscriptions(x => x.DateCreated > new DateTime(2025, 9, 1) && x.Status == SubscriptionStatus.Active);

    List<Guid> saleIds = subscriptions.Select(x => x.SaleId).ToList();
    IList<Sale> sales = await _saleRepository.FilterSales(x => saleIds.Contains(x.Id));

    forea

backend v4

// backend/b2bCheckout.jsw

import { currentMember } from 'wix-members-backend';
import { contacts }      from 'wix-crm-backend';
import wixData           from 'wix-data';
import wixStores         from 'wix-stores-backend';

// --------------------------- Helper: UUID + Country ---------------------------
function pseudoUuid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = (Math.random() * 16) | 0;
    const v = c === 'x' ? r : (r & 0x3) | 0x8;

2011. Final Value of Variable After Performing Operations

There is a programming language with only four operations and one variable X: ++X and X++ increments the value of the variable X by 1. --X and X-- decrements the value of the variable X by 1. Initially, the value of X is 0. Given an array of strings operations containing a list of operations, return the final value of X after performing all the operations.
/**
 * @param {string[]} operations
 * @return {number}
 */
var finalValueAfterOperations = function(operations) {
    // Step 1: Initialize the variable X to 0
    let X = 0;

    // Step 2: Loop through each operation in the array
    for (let i = 0; i < operations.length; i++) {
        let op = operations[i];

        // Step 3: Check if the operation is an increment
        if (op === "++X" || op === "X++") {
            X += 1; // Increase X by 1
        }
        // Step 4: Check if the o

checkout v3

// /b2b‑checkout.js

import wixUsers from 'wix-users';
import wixLocation from 'wix-location';
import { session } from 'wix-storage-frontend';
import { getMemberCheckoutProfile, createOrderFromProfile } from 'backend/b2bCheckout.jsw';

$w.onReady(function () {
  const logs = [];
  resetFields();
  if ($w('#paymentMethodRadio')) {
    $w('#paymentMethodRadio').value = 'invoice';
  }
  if ($w('#submitOrderButton')) {
    $w('#submitOrderButton').disable();
  }
  waitUntilLoggedIn(l

backend v3

// backend/b2bCheckout.jsw

import { currentMember } from 'wix-members-backend';
import { contacts } from 'wix-crm-backend';
import wixData from 'wix-data';
import wixStores from 'wix-stores-backend';

/* --------------------------- Helper: UUID + Country --------------------------- */
function pseudoUuid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = (Math.random() * 16) | 0;
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toStr