Short answer:this is issue with the libigl Python bindings
Quick fix:roll back libigl to an older version, try earlier releases one by one until the function appears
The more proper but time consuming approach is review the libigl changelog and related issues/PRs to see if the function was removed or renamed in the bindings,and then pin the required version in your project
SAFr Auth is a cutting-edge, SIM-based authentication solution offered by Times Mobile in partnership with Sekura.id. It enables OTP-less, real-time user verification leveraging the cryptographic capabilities present within mobile SIM cards—eliminating the need for passwords, SMS codes, or other multi-factor interventions.
Stopping goroutines from outside is not possible in golang. But yes, there are ways to do that in golang. I refer you to this post, which covers all those ways with explanations. How to kill running goroutines from outside?
That is the convex button, Above examaples might help but you can use this package to make the life easier, Also you can get convex paiting method from package and customize to your needs.
You need to drop the comma from the name object after output. It should look something like this:
name = new { name = "Outputs"}
{
"item_a": {
"name": "Item A",
"description": "..."
},
"item_b": {
"name": "Item B",
"description": "..."
}
}
Your json format should be like this. it will be wrk for you.
public override string ToString() => $"{_name}, {_number}, {_date}, {_salary}";
This appears to be a bug which has been resolved in their code base. See this commit, according to the tags the earliest release that fixes this issue is 10.3.0.0-68. Sadly after Pentaho 10.2.0.0-222 (October 2024) there haven't been any developer/community edition releases anymore. So until Hitachi bothers to create a new developer release we're stuck with this bug.
Regarding the only on these timesteps - this depends on the dynamics in the model - but at least you can write an s-function that hits these samples. The last item of the examples table for level-2 m- sfunctions might be a good start.
https://nl.mathworks.com/help/releases/R2025a/simulink/sfg/s-function-examples.html#bq9pj0l
For me I tried use shape property from Bar
interface PaddedBarProps extends RectangleProps {
x?: number;
y?: number;
width?: number;
height?: number;
fill?: string;
payload?: unknown[];
index?: number;
}
const PaddedBar = ({
x = 0,
y = 0,
width = 0,
height = 0,
fill,
payload,
index,
}: PaddedBarProps): React.ReactElement => {
const gap = 2; // px
const isLast = index === (payload?.length ?? 0) - 1;
return (
<rect
x={x}
y={y + (isLast ? 0 : gap)}
width={width}
height={height - (isLast ? 0 : gap)}
fill={fill}
/>
);
};
//usage
<Bar
dataKey='recycledLog'
name={LABELS.RECYCLE}
fill={COLORS.RECYCLE}
stackId={"weight"}
shape={<PaddedBar />}
/>
<Bar
dataKey='nonRecycledLog'
radius={[2, 2, 0, 0]}
stackId={"weight"}
name={LABELS.NON_RECYCLE}
fill={COLORS.NON_RECYCLE}
/>
Result:
Source: https://github.com/recharts/recharts/issues/2244#issuecomment-2288572842
Have you looked into Project Dependencies Mass Update Tool?
This is a tool that comes as part of the UiPath Studio package.
Here you can select several projects for updating, pick and chose the dependencies to update, and even publish the projects afterwards.
https://docs.uipath.com/studio/standalone/latest/user-guide/project-dependencies-mass-update
Regards
Soren
The <!DOCTYPE html> is not part of the DOM.
Please use
<!DOCTYPE html>
<html lang="en" data-theme="corporate">
...
</html>
I also faced the same problem today. My friend works on my startup with the latest version of AndroidStudio and i installed that IDE a month ago
So i just simply found the libs.versions.toml file and updated this line:
[versions]
agp = "8.9.1"
previous was 8.11.1
In React 19 (at least) ES modules are provided. Now you can simply do:
import React from "https://esm.sh/react"
import ReactDOM from "https://esm.sh/react-dom/client"
I recently did something related and explained my solution on this blog post.
Yes, in golang, you can't stop or kill goroutines directly. The Go team does this intentionally to prevent inconsistent memory states. However, there are ways to kill it from the outside. How to kill running goroutines from outside? Here are all the ways mentioned.
I ran into the same problem and the following solution worked for me. I recreated the minikube cluster with the Docker engine by running:
minikube start --driver=docker
Whether CORBA is dead or alive is a foolish debate... There's a tool that fits a certain range of tasks. Two years ago, I needed a feature for distributed objects that could send events to subscribers at high speed. I chose CORBA and C++, and over time, I’ve more or less learned the spec. No matter how complex the specification was, I released the first version in three months. I achieved fault tolerance, automatic reconnections in case of link failure. I ran a test for 10 seconds, pushing 200 KB data blocks to subscribers via localhost through the server—average speed was 2 milliseconds. So, if your task doesn’t require high speed or various technologies like AMI, AMH, then you simply don’t need this tool.
i am also getting same error but nothing is missing
can anyone help??
Accessing Drupal’s admin panel is straightforward, but it depends slightly on your Drupal version. Here’s the quick guide:
1. Log in to your Drupal site
In your browser, go to your site’s login page:
https://yoursite.com/user/login
Enter your username and password (you’ll need administrator permissions).
2. Navigate to the admin dashboard
Once logged in, you’ll see the administration toolbar (usually at the top of the page).
In Drupal 7, click "Dashboard" or "Administer".
In Drupal 8, 9, or 10, click "Manage" to open the admin menu.
3. Use the direct admin URL
You can also go directly to:
https://yoursite.com/admin
This takes you straight to the main administration page.
If you need more further details you can visit Drupal agency
Tital:blast message| Ratsms
Deliver your message to thousands instantly using the blast message service from Bulk-SMS.Services. Whether it’s a promotional offer, service update, or emergency alert, our bulk SMS platform helps you broadcast messages with speed and precision. Simply upload your contact list, craft your message, and launch the blast campaign in seconds. Our high-delivery-rate infrastructure ensures your messages reach inboxes reliably. Ideal for real estate, events, education, and e-commerce, our message blast tools are easy to use and highly effective. Engage your audience, increase response rates, and simplify mass communication with our advanced bulk message blasting features.
Url:https://bulk-sms.services/
Tags:Bulk sms,Bulk message
you are getting this error because your Node.js and npm are very old, and they can’t talk to the new npm website.To fix it, go to nodejs.org and download the latest version of Node.js. This will also give you a new npm that works with today’s servers. After you update Node.js and npm, run npm install again, and your packages should install without errors.
Another option is need to check correct dll version with current PHP version, TS (Thread Safe) or Non TS version.
"The IV must be the same for a particular encryption/decryption."
This means that when you're encrypting data, you need to use the same Initialization Vector (IV) for both encryption and decryption. If you generate a new IV for decryption, it won't work.
To fix the issue, you can store the IV with the encrypted data and reuse it during decryption.
This should work, but regardless of that. SDK and arming is not reliable. What you should do is either create TCP server or HTTP server yourself and use HTTP Listening mode. This way you are not risking of having fail to arm, or arm stuck mode.
It appears to be a known, open bug, right now: https://github.com/lit/lit/issues/3025
@Mnyikka's answer didn't work for me, but inspired me to write this:
function ExtractFromDiv(html, id) {
do {
let i = html.indexOf("<div");
if (i < 0) { return '' };
html = html.substring(i);
i = html.indexOf(">");
let tag = html.substring(0, i + 1);
html = html.substring(i + 1);
i = tag.indexOf('id="');
if (i < 0) {
i = tag.indexOf("id='");
if (i < 0) { continue };
tag = tag.substring(i + 4);
i = tag.indexOf("'");
if (i < 0) { continue };
tag = tag.substring(0, i);
if (tag !== id) { continue };
break;
} else {
tag = tag.substring(i + 4);
i = tag.indexOf('"');
if (i < 0) { continue };
tag = tag.substring(0, i);
if (tag !== id) { continue };
break;
}
} while (html.length > 0);
if (html.length === 0) { return '' };
let content = html;
let n = 0;
do {
let x = content.indexOf('<div');
let y = content.indexOf('</div');
if (x < 0 || x > y) {
content = content.substring(y);
y = content.indexOf(">");
content = content.substring(y + 1);
if (n === 0) {
break;
} else {
n--;
}
} else {
content = content.substring(x);
x = content.indexOf(">");
content = content.substring(x + 1);
n++;
}
} while ( content.length > 0 );
html = html.substring(0, html.length - content.length);
n = html.lastIndexOf("</div");
if (n !== -1 ) {
html = html.substring(0, n);
}
return html;
}
I run across similar problem before.
Here all() takes care of the filter, but custom filter does not.
So another solution to your problem could be applying self instead of super().
return super().get_queryset().order_by("start_time")
#change above to below:
return self.get_queryset().order_by("start_time")
ssl pinning may be an issue on new ios versions. any sensitive data is not able to be read by charles.
Add this
img.cat {
width: 200px;
position: relative;
z-index: 1;
pointer-events: none; /* allows clicks to pass through */
}
None of these answers worked for me on MacOS 10.14 Mojave.
Someone answered to clear ~/.bash_history.
I instead edited ~/.bash_history to remove the lines I didn't want anymore, saved the file, and restarted the terminal.
This worked.
Intuitive, direct, simple, and fast.
Short answer: you can’t tap other participants’ audio from the Teams client. Microsoft only supports two paths:
Notes:
If you need a WebSocket fan-out for live transcript chunks to your UI, our ChatterBox meeting bot API shows a practical pattern for streaming to clients. Disclosure: I work on ChatterBox (https://chatter-box.io/).
The answer seems to be:
open App Store
find Xcode developer tools
re-install
Then it appears in the sidebar. macos did not want to reboot; it is already in the sidebar
A mystery remains: where is the path for this code?
I have amended my original post with the solution.
In summary, the T and Y generic types needed to be defined as where T : new() where Y : class
Did you find a solution to this?? I am currently experiencing something similar.
To debug mobile browser webgl contexts, console add-ons such as Eruda will not show gpu errors:
<script src="https://cdn.jsdelivr.net/npm/eruda"></script>
<script>eruda.init();</script>
To see them, navigate to chrome://gpu. A log will be the last information on the page. In my case, the log was as big as it could be, starting at 1/5th of the page.
Found out that my textures needed to be a power of 2. Power of 2 textures fixed the black rendering problem.
Nice — let’s make a playable browser boxing game right now. Below is a single self-contained index.html you can save and open in any modern browser. It’s lightweight, uses <canvas>, supports:
Single-player vs AI
Movement (left/right), dodge, jab, heavy punch, block
Health & stamina bars, round timer
Simple AI with aggression and defense
Smooth animations (frame-based), collision/hit detection
Pause, restart, and basic sound using WebAudio (no external files)
Save all of this as index.html and open it in your browser.
index.html<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Mini Boxing — Single HTML Game</title>
<style>
:root{
--bg:#111;
--panel:#0f1720;
--accent:#f97316;
--bar-bg:#334155;
--friendly:#10b981;
--danger:#ef4444;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
}
html,body{height:100%;margin:0;background:linear-gradient(180deg,var(--bg),#000);color:#eee;display:flex;align-items:center;justify-content:center}
.wrap{width:960px;max-width:96vw;background:linear-gradient(180deg,#08101a,#0c1319);border-radius:12px;padding:18px;box-shadow:0 10px 30px rgba(0,0,0,0.6)}
header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
h1{font-size:18px;margin:0}
.controls{font-size:13px;opacity:0.9}
canvas{display:block;background:#081018;border-radius:8px; width: 100%; height: 480px; image-rendering: auto;}
.hud{display:flex;gap:12px;margin-top:8px;align-items:center;justify-content:space-between}
.panel{background:var(--panel);padding:10px;border-radius:8px;flex:1}
.bars{display:flex;flex-direction:column;gap:8px}
.bar{height:14px;background:var(--bar-bg);border-radius:7px;overflow:hidden;position:relative}
.bar > i{position:absolute;left:0;top:0;bottom:0;width:100%;transform-origin:left;transition:width 0.12s linear}
.health-i{background:linear-gradient(90deg,var(--friendly),#60a5fa)}
.enemy-i{background:linear-gradient(90deg,#f43f5e,#f97316)}
.stamina-i{background:linear-gradient(90deg,#c7f9dc,#60a5fa)}
.meta{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-top:8px}
.meta .big{font-weight:700}
.footer{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
button{background:var(--accent);border:none;padding:8px 12px;border-radius:8px;color:#081018;font-weight:700;cursor:pointer}
button.secondary{background:#334155;color:#cbd5e1}
small{opacity:0.8}
</style>
</head>
<body>
<div class="wrap">
<header>
<h1>Mini Boxing — vs AI</h1>
<div class="controls">
Controls — Move: A / D, Jab: J, Heavy: K, Dodge: L, Block: Space, Pause: P
</div>
</header>
<canvas id="game" width="920" height="480"></canvas>
<div class="hud">
<div class="panel" style="flex:0.62">
<div style="display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-size:13px">Player</div>
<div class="bars" style="width:320px">
<div class="bar"><i id="player-health" class="health-i" style="width:100%"></i></div>
<div class="bar"><i id="player-stam" class="stamina-i" style="width:100%"></i></div>
</div>
</div>
<div style="text-align:right">
<div style="font-size:13px">Opponent</div>
<div class="bars" style="width:200px">
<div class="bar"><i id="enemy-health" class="enemy-i" style="width:100%"></i></div>
<div class="bar"><i id="enemy-stam" class="stamina-i" style="width:100%"></i></div>
</div>
</div>
</div>
<div class="meta">
<div><small>Round:</small> <span id="round" class="big">1</span></div>
<div><small>Time left:</small> <span id="timer" class="big">60</span>s</div>
<div><small>State:</small> <span id="state">FIGHT</span></div>
</div>
</div>
<div style="flex:0.38;display:flex;flex-direction:column;gap:8px">
<div class="panel" style="text-align:center">
<div style="font-size:14px;font-weight:700">Score</div>
<div style="display:flex;gap:12px;justify-content:center;margin-top:8px">
<div><small>Player</small><div id="score-player" style="font-size:18px">0</div></div>
<div><small>AI</small><div id="score-ai" style="font-size:18px">0</div></div>
</div>
</div>
<div style="display:flex;gap:8px">
<button id="btn-restart" class="secondary">Restart</button>
<button id="btn-toggle" >Pause</button>
</div>
</div>
</div>
<div class="footer"><small>Made with <canvas> — lightweight demo</small></div>
</div>
<script>
/* -------------------------
Simple 2D Boxing Game
-------------------------
Controls:
- A / D : move left / right
- J : jab (quick light punch)
- K : heavy punch (slower, more damage)
- L : dodge (fast short evade)
- Space: block (reduce incoming damage)
- P : pause
*/
const canvas = document.getElementById('game');
const ctx = canvas.getContext('2d');
const W = canvas.width, H = canvas.height;
let paused = false;
/* Utility */
function clamp(v,a,b){return Math.max(a,Math.min(b,v))}
function now(){ return performance.now(); }
/* Player & Enemy basic config */
const physics = {
friction: 0.85,
gravity: 0, // no vertical gravity (boxing on flat)
arenaPadding: 120
};
class Fighter {
constructor(opts){
this.name = opts.name;
this.x = opts.x;
this.y = H - 140;
this.w = 50; this.h = 120;
this.vx = 0;
this.facing = opts.facing; // 1 = right, -1 = left
this.color = opts.color;
this.maxHealth = 100;
this.health = this.maxHealth;
this.maxStam = 100;
this.stamina = this.maxStam;
this.state = 'idle'; // idle, move, jab, heavy, block, dodge, stunned
this.stateTimer = 0;
this.comboCooldown = 0;
this.lastHit = 0;
this.score = 0;
this.canMove = true;
}
reset(x,facing){
this.x = x; this.facing = facing; this.vx = 0;
this.health = this.maxHealth; this.stamina = this.maxStam;
this.state='idle'; this.stateTimer=0; this.lastHit=0;
}
getHitbox(){
// simplified rectangular hitbox
return {x: this.x - this.w/2, y:this.y - this.h, w:this.w, h:this.h};
}
getPunchBox(){
// jab: small reach; heavy: larger reach and height
if(this.state === 'jab'){
return {x: this.x + this.facing*30, y:this.y - 80, w:40, h:30};
} else if(this.state === 'heavy'){
return {x: this.x + this.facing*45, y:this.y - 90, w:60, h:40};
}
return null;
}
damage(amount){
this.health = clamp(this.health - amount, 0, this.maxHealth);
}
changeState(st, t=300){
this.state = st; this.stateTimer = t;
if(st==='jab') { this.stamina = clamp(this.stamina - 8, 0, this.maxStam); }
if(st==='heavy'){ this.stamina = clamp(this.stamina - 20, 0, this.maxStam); }
if(st==='dodge'){ this.stamina = clamp(this.stamina - 12, 0, this.maxStam); }
if(st==='block'){ /* drains slowly elsewhere */ }
}
update(dt){
// timers
if(this.stateTimer>0) this.stateTimer = Math.max(0, this.stateTimer - dt);
if(this.stateTimer === 0 && ['jab','heavy','dodge','stunned'].includes(this.state)){
// revert to idle automatically
this.state = 'idle';
}
// stamina regen when idle or moving
if(!['jab','heavy','dodge'].includes(this.state)){
this.stamina = clamp(this.stamina + dt*0.02, 0, this.maxStam);
}
// velocity
this.x += this.vx * dt * 0.06;
this.vx *= physics.friction;
// clamp arena
const leftBound = physics.arenaPadding;
const rightBound = W - physics.arenaPadding;
this.x = clamp(this.x, leftBound, rightBound);
}
draw(ctx){
// shadow
ctx.fillStyle = "rgba(0,0,0,0.25)";
const hb = this.getHitbox();
ctx.fillRect(hb.x+6, hb.y+this.h+4, hb.w-12, 8);
// body
ctx.fillStyle = this.color;
ctx.fillRect(hb.x, hb.y, hb.w, hb.h);
// head
ctx.fillStyle = '#222';
ctx.fillRect(hb.x + hb.w*0.15, hb.y - 28, hb.w*0.7, 28);
// arms when attacking
const pb = this.getPunchBox();
if(pb){
ctx.fillStyle = '#ffdbb5';
ctx.fillRect(pb.x - pb.w/2, pb.y, pb.w, pb.h);
}
// simple face
ctx.fillStyle = '#111';
ctx.fillRect(hb.x + hb.w*0.35, hb.y - 22, 6, 6);
ctx.fillRect(hb.x + hb.w*0.55, hb.y - 22, 6, 6);
}
}
/* Game state */
const player = new Fighter({name:'You', x: W*0.3, facing: 1, color:'#2563eb'});
const enemy = new Fighter({name:'AI', x: W*0.7, facing: -1, color:'#ef4444'});
let round = 1;
let roundTime = 60; // seconds per round
let timeLeft = roundTime;
let roundActive = true;
let lastFrame = now();
/* Input handling */
const keys = {};
window.addEventListener('keydown', e => {
if(e.key === 'p' || e.key === 'P'){ togglePause(); }
keys[e.key.toLowerCase()] = true;
// block with space
if(e.code === 'Space') keys[' '] = true;
});
window.addEventListener('keyup', e => { keys[e.key.toLowerCase()] = false; if(e.code==='Space') keys[' '] = false; });
/* Buttons */
document.getElementById('btn-restart').onclick = () => { restartMatch(); };
document.getElementById('btn-toggle').onclick = () => { togglePause(); };
function togglePause(){
paused = !paused;
document.getElementById('btn-toggle').textContent = paused ? 'Resume' : 'Pause';
}
/* Simple WebAudio beep for hits */
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
function playBeep(freq=440, dur=0.06, gain=0.25){
try{
const o = audioCtx.createOscillator();
const g = audioCtx.createGain();
o.type = 'sine';
o.frequency.value = freq;
g.gain.value = gain;
o.connect(g); g.connect(audioCtx.destination);
o.start();
o.stop(audioCtx.currentTime + dur);
}catch(e){}
}
/* Hit detection */
function rectsOverlap(a,b){
return !(a.x + a.w < b.x || b.x + b.w < a.x || a.y + a.h < b.y || b.y + b.h < a.y);
}
function tryResolvePunch(attacker, defender){
const pb = attacker.getPunchBox();
if(!pb) return false;
const dhb = defender.getHitbox();
const punchRect = {x: pb.x - pb.w/2, y: pb.y, w: pb.w, h: pb.h};
const hit = rectsOverlap(punchRect, dhb);
if(!hit) return false;
// if defender blocking and facing attacker -> reduce damage
let damage = (attacker.state === 'jab') ? 6 : 18;
let stun = (attacker.state === 'jab') ? 150 : 420;
if(defender.state === 'block'){
damage *= 0.3;
stun *= 0.5;
// slight stamina drain for blocker
defender.stamina = clamp(defender.stamina - 6, 0, defender.maxStam);
} else if(defender.state === 'dodge'){
// dodge chance avoids
const dodgeSuccess = Math.random() < 0.75;
if(dodgeSuccess){
playBeep(900,0.03,0.08);
return false;
}
}
defender.damage(damage);
defender.state = 'stunned';
defender.stateTimer = stun;
playBeep(300 + Math.random()*600, 0.08, 0.25);
attacker.lastHit = now();
return true;
}
/* AI (very simple) */
const ai = {
thinkTimer: 0,
decide(dt){
this.thinkTimer -= dt;
if(this.thinkTimer > 0) return;
this.thinkTimer = 400 + Math.random()*600;
// simple behavior based on relative position and stamina
const dist = Math.abs(enemy.x - player.x);
const facing = (enemy.x < player.x) ? 1 : -1;
enemy.facing = facing;
// if low stamina - block or retreat
if(enemy.stamina < 20){
if(Math.random() < 0.6) { enemy.changeState('block', 600); enemy.vx = -facing * 0.2; return; }
enemy.changeState('dodge', 200);
enemy.vx = -facing * 1.2;
return;
}
if(dist > 160){
// close gap
enemy.vx = 0.9 * facing;
enemy.changeState('idle',0);
} else {
// attack or block
const r = Math.random();
if(r < 0.45){
enemy.changeState('jab', 180);
enemy.vx = 0;
} else if(r < 0.65 && enemy.stamina>30){
enemy.changeState('heavy', 420);
enemy.vx = 0;
} else if(r < 0.82){
enemy.changeState('block', 300);
} else {
enemy.changeState('dodge', 240);
enemy.vx = -facing * 1.4;
}
}
}
};
/* Game loop & logic */
function update(dt){
if(paused) return;
// round timer
timeLeft -= dt/1000;
if(timeLeft <= 0){
// round ends, decide winner by health
endRound();
return;
}
// Player controls
if(player.state !== 'stunned'){
// move left/right
if(keys['a']){ player.vx = -2.2; player.facing = -1; }
if(keys['d']){ player.vx = 2.2; player.facing = 1; }
if(!keys['a'] && !keys['d']){ /* no input */ }
// block
if(keys[' '] && player.stamina > 5){
player.changeState('block');
} else {
if(player.state === 'block' && player.stateTimer === 0) player.state = 'idle';
}
// jab
if(keys['j'] && player.stamina > 7 && player.state !== 'jab' && player.state !== 'heavy'){
player.changeState('jab', 180);
player.vx = 0;
}
// heavy
if(keys['k'] && player.stamina > 18 && player.state !== 'heavy'){
player.changeState('heavy', 420);
player.vx = 0;
}
// dodge
if(keys['l'] && player.stamina > 10){
player.changeState('dodge', 240);
player.vx = 6 * (player.facing * -1); // quick shift away
}
}
// slight stamina drain when blocking
if(player.state === 'block'){ player.stamina = clamp(player.stamina - dt*0.015, 0, player.maxStam); }
if(enemy.state === 'block'){ enemy.stamina = clamp(enemy.stamina - dt*0.015, 0, enemy.maxStam); }
// AI decision
ai.decide(dt);
// Update fighters
player.update(dt); enemy.update(dt);
// resolve punches: check attacker state transitions -> if just in attack state, attempt hit
if(player.state === 'jab' && player.stateTimer > 0 && now() - player.lastHit > 150){
if(tryResolvePunch(player, enemy)){ player.lastHit = now(); }
}
if(player.state === 'heavy' && player.stateTimer > 0 && now() - player.lastHit > 300){
if(tryResolvePunch(player, enemy)){ player.lastHit = now(); }
}
if(enemy.state === 'jab' && enemy.stateTimer > 0 && now() - enemy.lastHit > 150){
if(tryResolvePunch(enemy, player)){ enemy.lastHit = now(); }
}
if(enemy.state === 'heavy' && enemy.stateTimer > 0 && now() - enemy.lastHit > 300){
if(tryResolvePunch(enemy, player)){ enemy.lastHit = now(); }
}
// check KO
if(player.health <= 0 || enemy.health <= 0){
endRound();
return;
}
}
function endRound(){
paused = true;
roundActive = false;
document.getElementById('state').textContent = 'ROUND END';
if(player.health > enemy.health){
player.score += 1;
document.getElementById('score-player').textContent = player.score;
showMessage('You win the round!');
} else if(enemy.health > player.health){
enemy.score += 1;
document.getElementById('score-ai').textContent = enemy.score;
showMessage('AI wins the round!');
} else {
showMessage('Draw!');
}
setTimeout(()=> {
// next round setup or match end
if(round >= 3 || player.score === 2 || enemy.score === 2){
showMessage('Match over! Restart to play again.');
document.getElementById('state').textContent = 'MATCH OVER';
} else {
round += 1;
nextRound();
}
}, 1200);
}
function nextRound(){
roundActive = true;
timeLeft = roundTime;
player.reset(W*0.28, 1);
enemy.reset(W*0.72, -1);
paused = false;
document.getElementById('round').textContent = round;
document.getElementById('state').textContent = 'FIGHT';
}
/* Restart full match */
function restartMatch(){
player.score = 0; enemy.score = 0;
document.getElementById('score-player').textContent = '0';
document.getElementById('score-ai').textContent = '0';
round = 1;
document.getElementById('round').textContent = '1';
player.reset(W*0.3, 1); enemy.reset(W*0.7, -1);
timeLeft = roundTime; roundActive = true; paused = false;
document.getElementById('state').textContent = 'FIGHT';
}
/* Visual helpers */
function drawArena(){
// ring floor
ctx.fillStyle = '#07121a';
ctx.fillRect(0, H-80, W, 80);
// crowd-ish gradients
const g = ctx.createLinearGradient(0,0,0,H-80);
g.addColorStop(0, '#061018');
g.addColorStop(1, '#051216');
ctx.fillStyle = g;
ctx.fillRect(0,0,W,H-80);
// center line
ctx.fillStyle = 'rgba(255,255,255,0.02)';
ctx.fillRect(physics.arenaPadding-6, H-120, 4, 120);
ctx.fillRect(W-physics.arenaPadding+2, H-120, 4, 120);
}
/* Message helper */
let overlayMsg = '';
let overlayT = 0;
function showMessage(txt){
overlayMsg = txt; overlayT = 1800;
}
/* Render loop */
function render(dt){
// clear
ctx.clearRect(0,0,W,H);
drawArena();
// fighters
player.draw(ctx);
enemy.draw(ctx);
// HUD on canvas: draw center timer big
ctx.save();
ctx.font = "700 42px Inter, Arial";
ctx.fillStyle = "rgba(255,255,255,0.06)";
ctx.textAlign = "center";
ctx.fillText(Math.ceil(timeLeft), W/2, 60);
ctx.restore();
// overlay message
if(overlayT > 0){
overlayT = Math.max(0, overlayT - dt);
ctx.save();
ctx.globalAlpha = overlayT/1800;
ctx.fillStyle = "#fff";
ctx.font = "700 28px Inter, Arial";
ctx.textAlign = "center";
ctx.fillText(overlayMsg, W/2, H/2 - 30);
ctx.restore();
}
}
/* DOM HUD update loop */
function updateHUD(){
document.getElementById('player-health').style.width = (player.health/player.maxHealth*100)+'%';
document.getElementById('player-stam').style.width = (player.stamina/player.maxStam*100)+'%';
document.getElementById('enemy-health').style.width = (enemy.health/enemy.maxHealth*100)+'%';
document.getElementById('enemy-stam').style.width = (enemy.stamina/enemy.maxStam*100)+'%';
document.getElementById('timer').textContent = Math.max(0, Math.ceil(timeLeft));
// state label
document.getElementById('state').textContent = (paused ? 'PAUSED' : (roundActive ? 'FIGHT' : 'ROUND END'));
}
/* Main loop */
function loop(){
const t = now();
const dt = t - lastFrame;
lastFrame = t;
if(!paused) update(dt);
render(dt);
updateHUD();
requestAnimationFrame(loop);
}
/* Start */
restartMatch();
loop();
</script>
</body>
</html>
Create a file called index.html.
Paste the whole code above into it and save.
Open it in Chrome, Firefox, or Edge. (If sounds don’t play, click the page to allow audio or interact once — browsers block autoplay.)
Add 2-player local mode (split keyboard).
Add animated sprites (PNG sheets) and better hit frames.
Better AI (state machines, predicted blocks/dodges).
More moves: uppercuts, combos, clinch.
Sound effects and crowd noise (requires adding small audio files).
Mobile-friendly touch controls / on-screen buttons.
Save match history, round replays, or tournament mode.
Want me to add any of those — or tune difficulty, controls, or visuals? Which feature next: 2-player, better AI, or sprites + animations?
i tried this in an inherited tableau text table having all dimensions and never got this to work as Tableau was incredibly consistent at populating ABC with the conditional formatting, no matter how i tried. Will not give up have a few tricks up my sleeve.
Why is internet caching so dumb ? Why can't the request go through to the server and check the file timestamp and compare with the cache ? This is always a huge probelm with index.html, and all these work around adding ?query string to .js and other resources just to force reloads, it's really quite sad and pthetic that no one addresses this properly, all this advice on how to get around a very basic problem that most caching is extremely stupid ! Just do a quick timestamp check, but the cache control needs to do this, which we have no way to control :( Who writes the chaching code ?
The solution is to install the libclang-rt-22-dev package, which was somehow not installed even though it was recommended by the libclang-common-22-dev package. It provides the /usr/lib/llvm-22/lib/clang/22/lib/linux/libclang_rt.asan-x86_64.a file, which can be seen with apt-file show libclang-rt-22-dev.
While not the “public” InstantSearch.js API, you can set initialResults, then it won't trigger initial search.
search._initialResults = {
indexName: {}
};
search.start();
I have a video skal iasand igr foto (1280x720). I want to make igr foto as a background of video skal ias using ffmpeg
confusing and still needs clarification
In principle, if SVG files are not shared between users, meaning each user can only access their own uploaded files, I do not immediately see how a malicious SVG could cause harm.
If possible, it may be best to avoid uploading SVG files at all, can all operations be performed client side instead? If the SVG files is not uploaded, I see no reason to take any measures.
However, if uploading is required / desired, and we share the same understanding of doing it right, I still recommend taking steps to minimize the possibility of an SVG causing harm. I have listed a set of recommended security measures in this answer.
I found the problem, the problem was in my build.gradle.kts where both libs.engage.tv and libs.engage.core where in the dependancy block, I then just commented out the
implementation(libs.engage.tv)
which worked!
remove coalesce(:employees,1)='1' and just put s.employee in :employees. Do not pass a null list, you should havea empty list in that case
asciiQAtk_^w8{wE?nn} u}Y[Gx8/t:5gn7Gy8WG{tQOG=Vgx_>[ o{@U`ouc|l[fUA?d+uj|:FA2)>J:Y-usus.Hk#<p~iA:K?~|S7WOo?tri?%u{K@'AsCH)`T;[ 1JG\v=gJF~4/`ssi-pHE:%GZfHoomowJ@+p"b. S
My virtual environment was on version 3.11 (I didn't reinstall it after I've upgraded my python), that's why it didn't work properly.
If you really must load a different stylesheet:
<link rel="stylesheet" media="(prefers-color-scheme: light)" href="light.css">
<link rel="stylesheet" media="(prefers-color-scheme: dark)" href="dark.css">
HSQLDB recently got an access control setting:
https://www.hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_jrt_access_control
Many thanks to Fred Toussi
Do you really need it to be a struct? This is painfully easy with a class; if you need a struct, you can always just have your class emit a typed struct in your subclass. Don't be afraid to harness the much greater power of a class and emit a struct if you need the lighter weight for moving the data around.
Food for thought.
My team may have gotten close to it. We found some interesting results on this conjecture on why this might be a hard one to crack. Would love feedback on our work if anyone is interested in reviewing the work for us. https://github.com/ErdosDragonSlayer/codieos-triadic-resonance
import zipfile
# Paths
image_file = "/mnt/data/shop_layout_marked.jpg"
zip_path = "/mnt/data/shop_layout_marked.zip"
# Create ZIP
with zipfile.ZipFile(zip_path, 'w') as zipf:
zipf.write(image_file, arcname="shop_layout_marked.jpg")
zip_path
Neither approach worked for me because the sign-in buttons were still inactive. What worked was going to my profile icon on the left bar, clicking on my GitHub username, and selecting Manage Trusted Extensions. In the list, I chose GitHub Copilot Chat and pressed OK. This immediately logged me in and allowed me to use the extension’s chat window.
Edge command-line argument trailing ":" always truncates.
I can type it in ok, but from a shortcut it truncates the switch trailing ":"
You'll need to create a page template to display the Books. Eg. archive-books.php
Read the WordPress Theme Developer documentation. The basics and, specifically, the section on templates and template hierarchy:
https://developer.wordpress.org/themes/basics/
https://developer.wordpress.org/themes/basics/template-hierarchy/
Here's an attempt to do it in SwiftUI based on @Fattie's answer.
This answer uses the native ScrollView with onScrollGeometryChange and scrollTo(y:) API's.
The movement is jittery unfortunately. I'm not sure if the jitteriness is from a weakness in my code and it could be done in a more optimized way, or if it's a weakness in SwiftUI as opposed to UiKit that we should report to Apple, and that the Apple Calendar app was made in UiKit instead of SwiftUI.
Also I simplified the code in the question to just the minimal code to focus on the anchoring part.
Open for suggestions and improvements.
import SwiftUI
struct ScrollData: Equatable {
let height: CGFloat
let offset: CGFloat
let inset: CGFloat
}
final class HourItem: Identifiable {
let id: UUID
let hour: Int
init(hour: Int) {
self.id = UUID()
self.hour = hour
}
}
struct TestView: View {
let minHourHeight: CGFloat = 50
let maxHourHeight: CGFloat = 400
@State private var isZooming: Bool = false
@State private var previousZoomAmount: CGFloat = 0.0
@State private var currentZoomAmount: CGFloat = 0.0
@State private var position: ScrollPosition = ScrollPosition()
@State private var scrollData = ScrollData(height: .zero, offset: .zero, inset: .zero)
@State private var anchor: CGFloat = 0
@State private var height: CGFloat = 0
private var zoomAmount: CGFloat {
1 + currentZoomAmount + previousZoomAmount
}
private var hourHeight: CGFloat {
100 * zoomAmount
}
private let currentTime: Date = Date.now
private let hourItems = (0..<25).map {
HourItem(hour: $0)
}
var body: some View {
ScrollView {
VStack(spacing: 0) {
ForEach(hourItems) { hourItem in
HourMarkView(
hour: hourItem.hour,
height: hourHeight,
currentTime: currentTime
)
}
}
.simultaneousGesture(magnification)
}
.scrollPosition($position)
.onScrollGeometryChange(for: ScrollData.self) { geometry in
ScrollData(
height: geometry.contentSize.height,
offset: geometry.contentOffset.y,
inset: geometry.contentInsets.top,
)
} action: { oldValue, newValue in
if oldValue != newValue {
scrollData = newValue
}
}
}
private var magnification: some Gesture {
MagnifyGesture(minimumScaleDelta: 0)
.onChanged(handleZoomChange)
.onEnded(handleZoomEnd)
}
private func handleZoomChange(_ value: MagnifyGesture.Value) {
if !isZooming {
anchor = value.startAnchor.y
height = scrollData.height
isZooming = true
}
let gestureScreenOffset = value.startLocation.y - (scrollData.offset+scrollData.inset)
let newZoomAmount = value.magnification - 1
currentZoomAmount = clampedZoomAmount(newZoomAmount)
position.scrollTo(y: (anchor*scrollData.height) - gestureScreenOffset)
}
private func handleZoomEnd(_: MagnifyGesture.Value) {
isZooming = false
previousZoomAmount += currentZoomAmount
currentZoomAmount = 0
}
private func clampedZoomAmount(_ newZoomAmount: CGFloat) -> CGFloat {
if hourHeight > maxHourHeight && newZoomAmount > currentZoomAmount {
return currentZoomAmount - 0.000001
} else if hourHeight < minHourHeight && newZoomAmount < currentZoomAmount {
return currentZoomAmount + 0.000001
}
return newZoomAmount
}
}
struct HourMarkView: View {
var hour: Int
var height: CGFloat
var currentTime: Date
var body: some View {
HStack(spacing: 10) {
Text(formatTime(hour))
.font(.caption)
.fontWeight(.medium)
.frame(width: 40, alignment: .trailing)
Rectangle()
.fill(Color.gray)
.frame(height: 1)
}
.frame(height: height)
.background(Color.white)
}
private func formatTime(_ hour: Int) -> String {
return String(format: "%02d:00", hour)
}
}
I know the question is for Visual Studio Code, but in the fully featured Visual Studio, the same problem is apparent. Here is my "solution".
I did this, and although not perfect, it helps!!
Tools/Options/ search for "sticky", check "Group the current scopes within a scrollable region of the editor window", Maximum sticky lines to 3, and choose "Prefer outer scopes".
Visual Studio will then present you with the namespace, class, and function that the top line of the editor area is in. See the image attached here.
I didn’t end up getting this to work reliably via a Chrome extension content script — YouTube seems to check isTrusted on clicks, which makes synthetic extension clicks unreliable.
Instead, I switched to a Tampermonkey userscript, which can run directly in the page context and works fine for automatically skipping ads.
Here’s the script I’m using now:
// ==UserScript==
// @name AutoSkipYT
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Skips YouTube ads automatically
// @author jagwired
// @match *://*.youtube.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const CHECK_INTERVAL = 500; // ms between checks
function skipAd() {
const skipButtons = [
'.ytp-ad-skip-button-modern',
'.ytp-skip-ad-button',
'button[aria-label^="Skip ad"]'
];
for (const selector of skipButtons) {
const button = document.querySelector(selector);
if (button && button.offsetParent !== null) {
button.click();
return;
}
}
// Seek through unskippable ads
const video = document.querySelector('video');
if (video && document.querySelector('.ad-showing, .ad-interrupting')) {
video.currentTime = video.duration - 0.1;
}
}
setInterval(skipAd, CHECK_INTERVAL);
document.addEventListener('yt-navigate-finish', skipAd);
})();
Notes:
This script clicks the skip button when it appears.
If the ad is unskippable, it jumps the video to the end of the ad.
Because it runs in page context, it works without hitting YouTube’s synthetic click checks.
If you still want a Chrome extension version, you’d likely need to inject the script into the page so that clicks are isTrusted. But if you just want it to work, this userscript gets the job done.
To update a part of your page without a full reload, you must use JavaScript. It is not possible to do this with only Flask and HTML, because browser behavior for a form submission is to request an entirely new page.
The solution is to use JavaScript to send a request to your server in the background.
This is not truly "current", but it is close:
The only way I know to do this is to query mysql.
The user table has a last_login_on field.
$ mysql -u debian-sys-maint -p
mysql\> use redmine;
mysql\> select id,login,firstname,lastname,last_login_on from users order by last_login_on desc;
Did you (@user1496984) run where python?
I think the use case matter before choosing the workflow. I will provide a summarized view inspired from the comments.
Use case = Data # (where # can be analyst, scientist (exhaustively add machine learning engineer, and so on)
brew. Create .env using conda at global level with conda mini-forge base python installation (which shows up w/ where cmd)Use case = Web Dev
uvHope this helps! :)
I am still searching how uv benefits over conda
Even I got the issue, Even if you use firebase sdk, it won't be enough because basically we will check the user status in the splash screen itself and firebase will take some time to respond, I even used authStateChanges() but I can't get it, so what I did is I used a sharePref storing isLogin values, now it works fine.
Hello how are you is the game good thank you
<canvas id="gameCanvas" width="800" height="600"></canvas>
<div id="radioPanel">
<button id="prev">⏮</button>
<button id="playPause">⏯</button>
<button id="next">⏭</button>
<span id="trackName">–</span>
</div>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// Volante virtual
let steeringAngle = 0;
canvas.addEventListener('mousemove', e => {
const dx = e.clientX - canvas.width / 2;
steeringAngle = dx / (canvas.width / 2); // normaliza entre -1 e 1
});
// Música
const tracks = ['mus1.mp3', 'mus2.mp3', 'mus3.mp3'];
let current = 0;
const audio = new Audio(tracks[current]);
document.getElementById('playPause').onclick = () => {
audio.paused ? audio.play() : audio.pause();
};
document.getElementById('prev').onclick = () => { if (current > 0) current--; audio.src = tracks[current]; audio.play(); };
document.getElementById('next').onclick = () => { if (current < tracks.length - 1) current++; audio.src = tracks[current]; audio.play(); };
document.getElementById('trackName').innerText = tracks[current];
// Loop principal de desenho
function loop() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Desenhar estrada segmentada com deslocamento constante
// Desenhar o carro no centro e rotacionado conforme steeringAngle
requestAnimationFrame(loop);
}
loop();
</script>
If you render your SVG to a raster-based format like PNG on the server side, rather than exposing the SVG code directly to the client, you can effectively protect the original SVG source. Combine this with caching of the rendered image to avoid performance pitfalls.
For instructions on rendering a PNG file from an SVG, see: How can I render SVG with common PHP extensions?
You can probably use CASE in your query.
SELECT
CASE
WHEN FIELD3 LIKE '44%' THEN 'YES'
ELSE 'NO'
END AS Check_status
FROM table
GROUP BY Check_status;
Building on @pkamb answer — to shrink the accessory view into the toolbar space, you can read the placement via:
@Environment(\.tabViewBottomAccessoryPlacement) var tabViewPlacement
This returns an enum with two cases: .expanded and .inline. You can provide different views for each case, for example:
.tabViewBottomAccessory {
switch tabViewPlacement {
case .expanded:
HStack {
Spacer().frame(width: 20)
Image(systemName: "command.square")
Text(".tabViewBottomAccessory")
Spacer()
Image(systemName: "play.fill")
Image(systemName: "forward.fill")
Spacer().frame(width: 20)
}
case .inline:
Text(".tabViewBottomAccessory")
Image(systemName: "play.fill")
Image(systemName: "forward.fill")
Spacer().frame(width: 20)
}
}
This way, you can simply omit or adjust icons in .inline mode.
I started metro server on the web and then checked the errors in console. There was a version mismatch .i ran npx expo-doctor and after that npx expo install --check . It solved the problem
if you are here in 2025, you can get this information directly from the *http.Request r.URL.Query().Get("id")
if you want to run specific modules seeder
php artisan db:seed --class="Modules\Administration\Database\Seeders\ShiftsSeeder"
You can (usually), but there is (usually) no use of it. It is also discouraged for embedded systems, especially bare-metal.
Abhijith S
Abhishek B
Abhishek Vinodh
Adarsh Pradeep P
Adhi Sakthan S
Akash Anand G
Akash R
Alaka R
Ameer Shanavas
Anamika A
Ananya V
Anjana B
Aravind P
Arjun D
Aswin Raj
Avanthika Krishna D
Ayisha Fathima SS
Basim Muhammed
Devadath S
Devika M
Gagna Priyadarshini
Ijas Nisam
Janisha Nidhi
Jiya Elsa Shajan
Jobin John
Manasi M
Manikandan N
Midhun Chandran M
Midhun Krishna G
Muhammed Aslam N
Muhammed Faizal S
Muhammed Haroon H
Muhammed Shafi N
Nikhila Anil
Nikesh Chakaravarthy
Pranav P
Pratheeksha L
Sabith S
Sai Krishna G
Salu P
Sandana Sandeep
Sanjay Saji
Saran Krishna B
Yadav Suresh
Adithyan U
Alaka R (moved from 37)
Nikhila Anil (moved from 35)
Gagna Priyadarshini (moved from 44)
Devika M (moved from 38)
i am also facing same problem.
The solution to this problem is described here and amounts at installing many optional packages.
vs_BuildTools install ; \
--includeRecommended --includeOptional ; \
--add Microsoft.VisualStudio.Workload.VCTools ; \
--add Microsoft.VisualStudio.Component.VC.ATLMFC ; \
--add Microsoft.VisualStudio.Workload.VisualStudioExtensionBuildTools ; \
--quiet --norestart --nocache --wait
To sort with varying strings:
2
3a
3b
4
10
Use below query:
ORDER BY CAST(mini_number AS UNSIGNED), mini_number
References:
https://www.sitepoint.com/community/t/mysql-how-to-sort-numbers-with-some-data-also-containing-a-letter/340999
https://www.sitepoint.com/community/t/how-to-sort-text-with-numbers-with-sql/346088/4
please make sure you export the region in the environment variable
export AWS_DEFAULT_REGION="us-east-1"
and then trigger the pipeline.
i added a space before the username and it worked for me👍🏻
I solved this problem by installing Beckhoff TwinCAT Embedded Browser and restarting the computer.
I got tired and simply switched to SSH keys (docs). I am not sure what the real issue was, but nothing seemed to help me. After trying what I thought was every solution, I kept getting the same error. Leaving this here if anyone else gets stuck.
1- that's not how it works: if you read data, you're waiting for the result, and that's the point of ptefetching: you don't wait for it now, and with a bit of luck you don't wait at all
2- if the JVM is doing a decent job, there are few enough extra memory access that the cache isn't full: think of a heap for example, that has more or less predictable reads for the code, but not for the memory subsystem
SELECT COUNT(DISTINCT t.driver_id) AS drivers
FROM trips t
JOIN drivers d
ON t.driver_id = d.driver_id
JOIN vehicles v
ON t.vehicle_id = v.vehicle_id
WHERE d.driver_status = 'active'
AND v.vehicle_status = 'active';
You could remove the current user credentials with the command:
git credential reject <url>
even in pypy3 I get the same answer
i can't tell why, but those former answers did not work out for me. Thus, those who searched for it can also use this one ig:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
In my case the issues was caused by apparmor.
In order to fix it, as root user, I ran aa-complain openvpn (openvpn was already defined under /etc/apparmor.d/)
May be you missing Application.ProcessMessages call?
any updates on this?
The docs (https://node-postgres.com/apis/client) state:
"... example to create a client with specific connection information:
import { Client } from 'pg' ..."
But this leads to:
import { Client } from "pg";
^^^^^^
SyntaxError: Named export 'Client' not found. The requested module 'pg' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:
import pkg from 'pg';
const { Client } = pkg;
at ModuleJob._instantiate (node:internal/modules/esm/module_job:220:21)
at async ModuleJob.run (node:internal/modules/esm/module_job:321:5)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5)
Node.js v22.17.1
GitHub Actions only shows tags in the workflow run dialog if the workflow file exists in the commit that tag points to. Your new tags likely point to commits that either don't contain the workflow file or have an older version of it.
When the Maven Release Plugin creates tags through GitHub Actions, it might be tagging commits before the workflow was added or updated. Check if the workflow file exists in the tagged commits by navigating to the specific tag and looking for the .github/workflows directory.
Regarding your first question:
As I read from this source: I am trying to create cookie while login with a user in Blazor web server app but I am bit lost setting a cookie over Blazor Interactive Server ist not possible, since it uses SignalR. Cookies cannot be set over already started responses (what SignalR is).
You can load the login page in server mode. The problem is posting the form. If you try doing it like this:
<EditForm Model="Input" method="post" OnValidSubmit="LoginUser">
The LoginUser method is called directly on the server via SignalR.
Try something like this:
<EditForm Model="Input" method="post" action="/Account/Login" formname="login">
[SupplyParameterFromForm(FormName = "login")]
private InputModel Input { get; set; } = new();
As far as I tested, this will make sure the EditForm is posted to the server while every other component can still be interactive. I am not sure how this affects the LoginUser method to be called or not. But this could be a start for you.
Second question:
What do you mean by that? You cannnot alter the AuthenticationStateProviders to "enable" cookie setting over SignalR. This is simply not possible. The AuthenticationStateProviders revalidates your login cridentials every 30 minutes (default).
Third question:
I would suggest to you to use the static login page. Why do you need interactive mode anyway on the login page? If you want some sort of animation, you could do that with javascript instead.
if you have postgres installed locally try to uninstall it it worked for me in my fullstack next.js project because the the port localhost:5432 is already being used by the postgres in your local machine
replace() returns a new object (so assign it or use inplace=True), your types must match (0 vs '0'), and your mapping with duplicate 'polarity' keys overwrote itself.
Use this:
sentiment_text['polarity'] = sentiment_text['polarity'].replace({0: 'negative', 4: 'positive'})
I ended up using https://github.com/victornpb/eleventy-plugin-page-assets to copy the images. It gives new names to each image and rewrites the img src attribute accordingly, but I can live with that. I suppose it also wouldn't be a good solution if I had multiple input files link to the same image, because the image would be copied to each output folder, but luckily that's not a problem in my specific case.
Sorry if this is not allowed but I have I believe something that may be similar.
I already have a script working well and doing various things but I just want to add 1 more attachment from the same drive to the email.
Everything can remain the same I am just wanting to add one additional pdf.
I have tried the above and various other suggestions but I am doing something wrong.
Below is my current script.
const SHEETID = '1rx1lCYKdhi8dhivoYpUO6EIHb2TWTpiMVduK7M-L2A4';
const DOCID = '1sRZqPCkuATT9tQDZlJDp-DicP6saBpZoAXVvKWXT_XM';
const FOLDERID = '1wsyrUM29A1LIiKCjsJE7olKb0ycG2_M5';
function PitchFees2026() {
const sheet = SpreadsheetApp.openById(SHEETID).getSheetByName('2026 Fees');
const temp = DriveApp.getFileById(DOCID);
const folder = DriveApp.getFolderById(FOLDERID);
const data = sheet.getDataRange().getValues();
const rows = data.slice(1);
rows.forEach((row,index)=>{
const file = temp.makeCopy(folder);
const doc = DocumentApp.openById(file.getId());
const body = doc.getBody();
data[0].forEach((heading,i)=>{
const header1 = heading.toUpperCase();
body.replaceText('{NAME}',row[1]);
body.replaceText('{PITCH}',row[0]);
body.replaceText('{AMOUNT}',row[3]);
body.replaceText('{FIRST}',row[4]);
body.replaceText('{SECOND}',row[5]);
body.replaceText('{REF}',row[10]);
body.replaceText('{BNAME}',row[7]);
body.replaceText('{CODE}',row[8]);
body.replaceText('{NUMBER}',row[9]);
body.replaceText('{TERMS}',row[6]);
})
doc.setName(row[10]);
const blob = doc.getAs(MimeType.PDF);
doc.saveAndClose();
const pdf = folder.createFile(blob).setName(row[10]+'.pdf');
const email = row[2];
const subject = row[10];
const messageBody = "This message (including any attachments) is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. \n \nIf you received this in error, please delete the material from your computer and contact the sender. \n\nPlease consider the environment before printing this e-mail.";
MailApp.sendEmail({
to:email,
subject:subject,
body:messageBody,
attachments: [blob.getAs(MimeType.PDF)]
});
Logger.log(row);
file.setTrashed(true);
})
}
What I am wanting to attach is
var file = DriveApp.getFileById("1vGvLVP2RV1krxnj8Mt6hMiFHVBoIdbFG");
attachments.push(file.getAs(MimeType.PDF));
So I was trying to change to bottom of my main script to...
var attachments = []
var file = DriveApp.getFileById("1vGvLVP2RV1krxnj8Mt6hMiFHVBoIdbFG");
attachments.push(file.getAs(MimeType.PDF));
MailApp.sendEmail({
to:email,
subject:subject,
body:messageBody,
attachments: [blob.getAs(MimeType.PDF)]
});
Logger.log(row);
file.setTrashed(true);
})
}
Please may some assist me. I have been on this for days so probably not seeing something obvious now. Thank you so much in advance. :-)
As there is not available answer for this. I wanna do my contribution.
I exactly had the same error & ran into same issue spent hours trying to debug. So please try below approach.
Try using list of list. I had a JSON payload, I append all the JSON into a list.. then again I put this list of JSON into a list.
Sample code:
list_of_list_data = [list(item.values()) for item in list_data]
Please let me know if it works.
Thanks for your discovery and terrific job!
I have tried so hard in the past 48h to modify your script so that I could programmatically also add some text/body in the note (together with the attachment). I also struggled immensely to have the note created in a desired subfolder.
Whenever I tried to "add" a body to the newly created note, Notes.app was basically overwriting the entire note, including the attachment.
At some point I discovered the version Ethan Schoonover authored as a "Folder Action" (see https://youtu.be/KrVcf2nN0b8, and his GitHub repo https://github.com/altercation/apple-notes-inbox). It works almost with no adaptation as a Print Plugin workflow!
This is finally the version I made, with a very minor addition (i.e. the user is prompted to specify a different Note title). I share it here with you and the Internet, hoping it might be a useful starting point for posterity.
-- This script is designed to be used in Automator to create a new note in the Notes app
-- It takes a PDF file as input, prompts the user for a note title, and creates a
-- new note with the PDF attached.
-- The note will be created in a specified folder within the Notes app.
-- The script also includes a timestamp and the original filename in the note body.
-- The script assumes the Notes app is available and the specified folder exists.
-- Note: This script is intended to be run in the context of Automator with a file input (e.g. Print Plugins or as Folder Action).
-- Heavily based on the code from: https://github.com/altercation/apple-notes-inbox
property notePrefix : ""
property notesFolder : "Resources"
on run {fileToProcess, parameters}
try
set theFile to fileToProcess as text
tell application "Finder" to set noteName to name of file theFile
-- Ask the user for a title and tags for the new note
set noteTitleDialog to display dialog "Note title:" default answer noteName
set noteTitle to text returned of noteTitleDialog
set timeStamp to short date string of (current date) as string
set noteBody to "<body><h1>" & notePrefix & noteTitle & "</h1><br><br><p><b>Filename:</b> <i>" & noteName & "</i></p><br><p><b>Automatically Imported on:</b> <i>" & timeStamp & "</i></p><br></body>"
tell application "Notes"
if not (exists folder notesFolder) then
make new folder with properties {name:notesFolder}
end if
set newNote to make note at folder notesFolder with properties {body:noteBody}
make new attachment at end of attachments of newNote with data (file theFile)
(*
Note: the following delete is a workaround because creating the attachment
apparently creates TWO attachements, the first being a sort of "ghost" attachment
of the second, real attachment. The ghost attachment shows up as a large empty
whitespace placeholder the same size as a PDF page in the document and makes the
result look empty
*)
delete first attachment of newNote
show newNote
end tell
-- tell application "Finder" to delete file theFile
on error errText
display dialog "Error: " & errText
end try
return theFile
end run
Note: I was hoping to add programmatically one or more tags to the newly created note (e.g. by asking the user, within a dialog prompt), but I failed. It seems Notes does NOT recognize strings like "#blablabla" as tags, unless they are typed within the Notes.app.
The problem was that there was no data bound to the checkbox. As soon I added a JSON Model I got fixed.
<Column width="11rem">
<m:Label text="Product Id" />
<template>
<m:CheckBox selected="{Selected}"/>
</template>
</Column>
I found the root cause of the issue.
Even though the executable file exists inside the chroot jail and is fully static (confirmed by ldd showing no dynamic dependencies), running it inside the jail failed with:
execl failed: No such file or directory
This error occurs despite the binary being present and statically linked. The reason is that the chroot environment is missing some essential system components or setup that the binary expects at runtime even static binaries sometimes rely on minimal system features or device files.
The problem was resolved when I copied a statically linked BusyBox binary into the jail and ran commands from it. BusyBox, being a fully self-contained executable that includes a shell and common utilities, works smoothly inside minimal environments without extra dependencies.
That is nice, please allow this University comment. Thanks
from pdf2image import convert_from_path
# Convert PDF to images
images = convert_from_path("/mnt/data/Anish_Kundali.pdf")
# Save images
image_paths = []
for i, img in enumerate(images):
path = f"/mnt/data/Anish_Kundali_page_{i+1}.png"
img.save(path, "PNG")
image_paths.append(path)
image_paths
Opa não está indo algo
A fala comigo
Está dando operação completa com erros
Já tirei os APK do Chrome