ngrok-skip-browser-warning: true using ModHeaders extension
I still can't figure it out. Can anyone help me?
i find your method very interesting , however in a case where you don't know anything about your data, meaning you don't know the optimal distance threshold , how would you encounter the problem ( also you can't choose it based on intuition with no profound study , since you can have a lot of clusters/sets of points with big variety of deviations , very dense ones vs very sparse ones ) ? My goal is: given a numerical variable ( 1 dimension only ) , do an agglomerative clustering and get the optimal number of clusters to do a binning just after that and transform it to a categorical one , I'm thinking about using some indicators of information purity in order to measure the impact of each merge, but i haven't figured it out yet.
**11*
Name="flex items-center space-x-4 mb-4">
<Badge className={`${currentLevel.color} font-semibold`}>
{currentLevel.name}
</Badge>
<div className="flex items-center space-x-1">
<Star className="w-4 h-4" />
<span>{profile?.points || 0} Points</span>
</div>
</div>
<div className="space-y-2">
<div className="flex justify-between text-sm">
<span>Progress to {currentLevel.name === "Master" ? "Max Level" : "Next Level"}</span>
<span>{profile?.points || 0} / {nextLevelPoints}</span>
</div>
<Progress value={progressPercent} className="bg-white/20" />
</div>
</div>
</div>
</CardContent>
</Card>
{/* Stats Grid */}
<div className="grid md:grid-cols-4 gap-6">
<Card>
<CardContent className="p-6 text-center">
<Award className="w-8 h-8 text-blue-500 mx-auto mb-2" />
<p className="text-2xl font-bold text-blue-600">{profile?.points || 0}</p>
<p className="text-gray-600 text-sm">Total Points</p>
</CardContent>
</Card>
<Card>
<CardContent className="p-6 text-center">
<Calendar className="w-8 h-8 text-green-500 mx-auto mb-2" />
<p className="text-2xl font-bold text-green-600">{profile?.events_attended || 0}</p>
<p className="text-gray-600 text-sm">Events Attended</p>
</CardContent>
</Card>
<Card>
<CardContent className="p-6 text-center">
<TrendingUp className="w-8 h-8 text-purple-500 mx-auto mb-2" />
<p className="text-2xl font-bold text-purple-600">{profile?.impact_score || 0}</p>
<p className="text-gray-600 text-sm">Impact Score</p>
</CardContent>
</Card>
<Card>
<CardContent className="p-6 text-center">
<Trophy className="w-8 h-8 text-orange-500 mx-auto mb-2" />
<p className="text-2xl font-bold text-orange-600">{profile?.badges?.length || 0}</p>
<p className="text-gray-600 text-sm">Badges Earned</p>
</CardContent>
</Card>
</div>
{/* Badges Section */}
<Card>
<CardHeader>
<CardTitle className="flex items-center space-x-2">
<Star className="w-5 h-5" />
<span>Badges & Achievements</span>
</CardTitle>
<CardDescription>Recognition for your environmental impact</CardDescription>
</CardHeader>
<CardContent>
{profile?.badges && profile.badges.length > 0 ? (
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
{profile.badges.map((badge, index) => (
<div key={index} className="text-center p-4 bg-gradient-to-br from-yellow-50 to-orange-50 rounded-lg border">
<Award className="w-8 h-8 text-yellow-500 mx-auto mb-2" />
<p className="font-semibold text-sm">{badge}</p>
</div>
))}
</div>
) : (
<div className="text-center py-8">
<Target className="w-16 h-16 text-gray-400 mx-auto mb-4" />
<p className="text-gray-600">No badges earned yet</p>
<p className="text-sm text-gray-500">Participate in events to earn your first badge!</p>
</div>
)}
</CardContent>
</Card>
{/* Recent Activities */}
<Card>
<CardHeader>
<CardTitle className="flex items-center space-x-2">
<Calendar className="w-5 h-5" />
<span>Recent Activities</span>
</CardTitle>
<CardDescription>Your latest environmental contributions</CardDescription>
</CardHeader>
<CardContent>
{loading ? (
<div className="text-center py-4">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"></div>
</div>
) : recentActivities.length > 0 ? (
<div className="space-y-4">
{recentActivities.map((activity, index) => (
<div key={index} className="flex items-center justify-between p-4 bg-gray-50 rounded-lg">
<div className="flex items-center space-x-3">
<div className="w-2 h-2 bg-green-500 rounded-full"></div>
<div>
<h4 className="font-semibold">{activity.events?.title}</h4>
<p className="text-sm text-gray-600">
{activity.events?.location} • {new Date(activity.events?.date).toLocaleDateString()}
</p>
</div>
</div>
<Badge className="bg-green-100 text-green-800">
+{activity.points_awarded} pts
</Badge>
</div>
))}
</div>
) : (
<div className="text-center py-8">
<Calendar className="w-16 h-16 text-gray-400 mx-auto mb-4" />
<p className="text-gray-600">No recent activities</p>
<p className="text-sm text-gray-500">Join events to see your activities here!</p>
</div>
)}
</CardContent>
</Card>
</div>
);
};
export default ProfileStats;
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\components\volunteer\SarthiBot.tsx ==========
import { useState, useRef, useEffect } from 'react';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Badge } from '@/components/ui/badge';
import { MessageSquare, Send, Mic, MicOff, Volume2 } from 'lucide-react';
interface Message {
id: string;
text: string;
sender: 'user' | 'bot';
timestamp: Date;
}
const SarthiBot = () => {
const [messages, setMessages] = useState<Message[]>([
{
id: '1',
text: "Hi! I'm SarthiBot, your beach cleanup assistant. Ask me about events, eco-tips, or anything related to ocean conservation!",
sender: 'bot',
timestamp: new Date(),
}
]);
const [inputText, setInputText] = useState('');
const [isListening, setIsListening] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const messagesEndRef = useRef<HTMLDivElement>(null);
const scrollToBottom = () => {
messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
};
useEffect(() => {
scrollToBottom();
}, [messages]);
const sendMessage = async (text: string) => {
if (!text.trim()) return;
const userMessage: Message = {
id: Date.now().toString(),
text: text.trim(),
sender: 'user',
timestamp: new Date(),
};
setMessages(prev => [...prev, userMessage]);
setInputText('');
setIsLoading(true);
// Simulate AI response
setTimeout(() => {
const botResponse: Message = {
id: (Date.now() + 1).toString(),
text: getBotResponse(text),
sender: 'bot',
timestamp: new Date(),
};
setMessages(prev => [...prev, botResponse]);
setIsLoading(false);
}, 1000);
};
const getBotResponse = (userText: string): string => {
const lowerText = userText.toLowerCase();
if (lowerText.includes('event') || lowerText.includes('cleanup')) {
return "Great question! There are several beach cleanup events happening in Mumbai this week. Check the 'Discover' tab to see events near Juhu Beach, Marine Drive, and Versova Beach. Would you like me to help you register for one?";
}
if (lowerText.includes('point') || lowerText.includes('badge')) {
return "You earn points by participating in events! Beach cleanups give 50-100 points, educational modules give 25 points, and referring friends gives 30 points. You can unlock badges like 'Ocean Guardian' and 'Cleanup Champion'!";
}
if (lowerText.includes('plastic') || lowerText.includes('waste')) {
return "Here's an eco-tip: Microplastics are one of the biggest threats to marine life. Always sort waste during cleanups - plastics, glass, and organic matter should be separated. Every piece you collect makes a difference!";
}
if (lowerText.includes('mumbai') || lowerText.includes('beach')) {
return "Mumbai has amazing beaches perfect for cleanup activities! Juhu Beach is great for beginners, Marine Drive for urban cleanup, and Versova Beach has shown incredible transformation through community efforts. Which one interests you most?";
}
return "That's an interesting question! I'm here to help with beach cleanup activities, event information, and eco-tips. You can also ask me about points, badges, or conservation techniques. What would you like to know more about?";
};
const handleVoiceToggle = () => {
setIsListening(!isListening);
// Voice recognition would be implemented here
if (!isListening) {
// Start listening
setTimeout(() => {
setIsListening(false);
sendMessage("I heard you say something about beach cleanup events!");
}, 3000);
}
};
const speakText = (text: string) => {
if ('speechSynthesis' in window) {
const utterance = new SpeechSynthesisUtterance(text);
speechSynthesis.speak(utterance);
}
};
return (
<Card className="h-[600px] flex flex-col">
<CardHeader className="bg-gradient-to-r from-blue-500 to-cyan-500 text-white rounded-t-lg">
<CardTitle className="flex items-center space-x-2">
<MessageSquare className="w-5 h-5" />
<span>SarthiBot - AI Assistant</span>
</CardTitle>
<CardDescription className="text-blue-100">
Your friendly beach cleanup companion
</CardDescription>
</CardHeader>
<CardContent className="flex-1 flex flex-col p-0">
{/* Messages */}
<div className="flex-1 overflow-y-auto p-4 space-y-4">
{messages.map((message) => (
<div
key={message.id}
className={`flex ${message.sender === 'user' ? 'justify-end' : 'justify-start'}`}
>
<div
className={`max-w-[80%] p-3 rounded-lg ${
message.sender === 'user'
? 'bg-blue-500 text-white'
: 'bg-gray-100 text-gray-800'
}`}
>
<p className="text-sm">{message.text}</p>
{message.sender === 'bot' && (
<Button
size="sm"
variant="ghost"
className="mt-2 h-6 px-2 text-xs"
onClick={() => speakText(message.text)}
>
<Volume2 className="w-3 h-3" />
</Button>
)}
</div>
</div>
))}
{isLoading && (
<div className="flex justify-start">
<div className="bg-gray-100 p-3 rounded-lg">
<div className="flex space-x-1">
<div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce"></div>
<div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style={{ animationDelay: '0.1s' }}></div>
<div className="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style={{ animationDelay: '0.2s' }}></div>
</div>
</div>
</div>
)}
<div ref={messagesEndRef} />
</div>
{/* Input */}
<div className="border-t p-4">
<div className="flex space-x-2">
<Input
value={inputText}
onChange={(e) => setInputText(e.target.value)}
placeholder="Ask me anything about beach cleanup..."
onKeyPress={(e) => e.key === 'Enter' && sendMessage(inputText)}
className="flex-1"
/>
<Button
onClick={handleVoiceToggle}
variant={isListening ? "default" : "outline"}
size="sm"
className={isListening ? "bg-red-500 hover:bg-red-600" : ""}
>
{isListening ? <MicOff className="w-4 h-4" /> : <Mic className="w-4 h-4" />}
</Button>
<Button onClick={() => sendMessage(inputText)} size="sm">
<Send className="w-4 h-4" />
</Button>
</div>
{/* Quick Actions */}
<div className="flex flex-wrap gap-2 mt-3">
<Badge
variant="outline"
className="cursor-pointer hover:bg-blue-50"
onClick={() => sendMessage("Show me upcoming events")}
>
Upcoming Events
</Badge>
<Badge
variant="outline"
className="cursor-pointer hover:bg-blue-50"
onClick={() => sendMessage("How do I earn more points?")}
>
Earning Points
</Badge>
<Badge
variant="outline"
className="cursor-pointer hover:bg-blue-50"
onClick={() => sendMessage("Tell me about Mumbai beaches")}
>
Mumbai Beaches
</Badge>
</div>
</div>
</CardContent>
</Card>
);
};
export default SarthiBot;
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\hooks\use-mobile.tsx ==========
import * as React from "react"
const MOBILE_BREAKPOINT = 768
export function useIsMobile() {
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
React.useEffect(() => {
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
const onChange = () => {
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
}
mql.addEventListener("change", onChange)
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
return () => mql.removeEventListener("change", onChange)
}, [])
return !!isMobile
}
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\hooks\use-toast.ts ==========
import * as React from "react"
import type {
ToastActionElement,
ToastProps,
} from "@/components/ui/toast"
const TOAST_LIMIT = 1
const TOAST_REMOVE_DELAY = 1000000
type ToasterToast = ToastProps & {
id: string
title?: React.ReactNode
description?: React.ReactNode
action?: ToastActionElement
}
const actionTypes = {
ADD_TOAST: "ADD_TOAST",
UPDATE_TOAST: "UPDATE_TOAST",
DISMISS_TOAST: "DISMISS_TOAST",
REMOVE_TOAST: "REMOVE_TOAST",
} as const
let count = 0
function genId() {
count = (count + 1) % Number.MAX_SAFE_INTEGER
return count.toString()
}
type ActionType = typeof actionTypes
type Action =
| {
type: ActionType["ADD_TOAST"]
toast: ToasterToast
}
| {
type: ActionType["UPDATE_TOAST"]
toast: Partial<ToasterToast>
}
| {
type: ActionType["DISMISS_TOAST"]
toastId?: ToasterToast["id"]
}
| {
type: ActionType["REMOVE_TOAST"]
toastId?: ToasterToast["id"]
}
interface State {
toasts: ToasterToast[]
}
const toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()
const addToRemoveQueue = (toastId: string) => {
if (toastTimeouts.has(toastId)) {
return
}
const timeout = setTimeout(() => {
toastTimeouts.delete(toastId)
dispatch({
type: "REMOVE_TOAST",
toastId: toastId,
})
}, TOAST_REMOVE_DELAY)
toastTimeouts.set(toastId, timeout)
}
export const reducer = (state: State, action: Action): State => {
switch (action.type) {
case "ADD_TOAST":
return {
...state,
toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
}
case "UPDATE_TOAST":
return {
...state,
toasts: state.toasts.map((t) =>
t.id === action.toast.id ? { ...t, ...action.toast } : t
),
}
case "DISMISS_TOAST": {
const { toastId } = action
// ! Side effects ! - This could be extracted into a dismissToast() action,
// but I'll keep it here for simplicity
if (toastId) {
addToRemoveQueue(toastId)
} else {
state.toasts.forEach((toast) => {
addToRemoveQueue(toast.id)
})
}
return {
...state,
toasts: state.toasts.map((t) =>
t.id === toastId || toastId === undefined
? {
...t,
open: false,
}
: t
),
}
}
case "REMOVE_TOAST":
if (action.toastId === undefined) {
return {
...state,
toasts: [],
}
}
return {
...state,
toasts: state.toasts.filter((t) => t.id !== action.toastId),
}
}
}
const listeners: Array<(state: State) => void> = []
let memoryState: State = { toasts: [] }
function dispatch(action: Action) {
memoryState = reducer(memoryState, action)
listeners.forEach((listener) => {
listener(memoryState)
})
}
type Toast = Omit<ToasterToast, "id">
function toast({ ...props }: Toast) {
const id = genId()
const update = (props: ToasterToast) =>
dispatch({
type: "UPDATE_TOAST",
toast: { ...props, id },
})
const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id })
dispatch({
type: "ADD_TOAST",
toast: {
...props,
id,
open: true,
onOpenChange: (open) => {
if (!open) dismiss()
},
},
})
return {
id: id,
dismiss,
update,
}
}
function useToast() {
const [state, setState] = React.useState<State>(memoryState)
React.useEffect(() => {
listeners.push(setState)
return () => {
const index = listeners.indexOf(setState)
if (index > -1) {
listeners.splice(index, 1)
}
}
}, [state])
return {
...state,
toast,
dismiss: (toastId?: string) => dispatch({ type: "DISMISS_TOAST", toastId }),
}
}
export { useToast, toast }
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\hooks\useAuth.tsx ==========
import { createContext, useContext, useState, useEffect, ReactNode } from 'react';
import { User, Session } from '@supabase/supabase-js';
import { supabase } from '@/integrations/supabase/client';
interface Profile {
id: string;
name: string;
role: 'volunteer' | 'organizer';
points: number;
badges: string[];
events_attended: number;
impact_score: number;
}
interface AuthContextType {
user: User | null;
profile: Profile | null;
session: Session | null;
isAuthenticated: boolean;
isLoading: boolean;
signIn: (email: string, password: string) => Promise<{ error: any }>;
signUp: (email: string, password: string, name: string, role: 'volunteer' | 'organizer') => Promise<{ error: any }>;
signOut: () => Promise<void>;
}
const AuthContext = createContext<AuthContextType | null>(null);
export const useAuth = () => {
const context = useContext(AuthContext);
if (!context) {
throw new Error('useAuth must be used within an AuthProvider');
}
return context;
};
interface AuthProviderProps {
children: ReactNode;
}
export const AuthProvider = ({ children }: AuthProviderProps) => {
const [user, setUser] = useState<User | null>(null);
const [profile, setProfile] = useState<Profile | null>(null);
const [session, setSession] = useState<Session | null>(null);
const [isLoading, setIsLoading] = useState(true);
const fetchProfile = async (userId: string) => {
try {
console.log('Fetching profile for user:', userId);
const { data, error } = await supabase
.from('profiles')
.select('*')
.eq('id', userId)
.single();
if (error) {
console.error('Error fetching profile:', error);
return null;
}
console.log('Profile data fetched:', data);
// Cast the role to the correct type
return {
...data,
role: data.role as 'volunteer' | 'organizer'
} as Profile;
} catch (error) {
console.error('Error fetching profile:', error);
return null;
}
};
useEffect(() => {
console.log('Setting up auth state listener');
// Set up auth state listener
const { data: { subscription } } = supabase.auth.onAuthStateChange(
async (event, session) => {
console.log('Auth state changed:', event, session?.user?.email);
setSession(session);
setUser(session?.user ?? null);
if (session?.user) {
// Fetch user profile data
setTimeout(async () => {
const profileData = await fetchProfile(session.user.id);
console.log('Setting profile data:', profileData);
setProfile(profileData);
setIsLoading(false);
}, 0);
} else {
setProfile(null);
setIsLoading(false);
}
}
);
// Check for existing session
supabase.auth.getSession().then(({ data: { session } }) => {
console.log('Initial session check:', session?.user?.email);
setSession(session);
setUser(session?.user ?? null);
if (session?.user) {
fetchProfile(session.user.id).then((profileData) => {
console.log('Initial profile data:', profileData);
setProfile(profileData);
setIsLoading(false);
});
} else {
setIsLoading(false);
}
});
return () => subscription.unsubscribe();
}, []);
const signIn = async (email: string, password: string) => {
setIsLoading(true);
const { error } = await supabase.auth.signInWithPassword({
email,
password,
});
if (error) {
setIsLoading(false);
}
return { error };
};
const signUp = async (email: string, password: string, name: string, role: 'volunteer' | 'organizer') => {
setIsLoading(true);
const redirectUrl = `${window.location.origin}/`;
const { error } = await supabase.auth.signUp({
email,
password,
options: {
emailRedirectTo: redirectUrl,
data: {
name,
role,
}
}
});
if (error) {
setIsLoading(false);
}
return { error };
};
const signOut = async () => {
console.log('Starting sign out process...');
setIsLoading(true);
try {
const { error } = await supabase.auth.signOut();
if (error) {
console.error('Error during sign out:', error);
throw error;
}
// Clear local state immediately
setUser(null);
setProfile(null);
setSession(null);
console.log('Sign out completed successfully');
} catch (error) {
console.error('Sign out failed:', error);
throw error;
} finally {
setIsLoading(false);
}
};
const value: AuthContextType = {
user,
profile,
session,
isAuthenticated: !!session,
isLoading,
signIn,
signUp,
signOut,
};
console.log('Auth context value:', { isAuthenticated: !!session, profile, isLoading });
return (
<AuthContext.Provider value={value}>
{children}
</AuthContext.Provider>
);
};
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\hooks\useCreateEventForm.ts ==========
import { useState } from 'react';
import { useAuth } from '@/hooks/useAuth';
import { supabase } from '@/integrations/supabase/client';
import { useToast } from '@/hooks/use-toast';
export interface EventFormData {
title: string;
description: string;
location: string;
date: string;
time: string;
maxVolunteers: string;
category: string;
}
export const useCreateEventForm = (onEventCreated: (event: any) => void, onClose: () => void) => {
const { user } = useAuth();
const { toast } = useToast();
const [formData, setFormData] = useState<EventFormData>({
title: '',
description: '',
location: '',
date: '',
time: '',
maxVolunteers: '',
category: 'beach-cleanup'
});
const [loading, setLoading] = useState(false);
const [errors, setErrors] = useState<Record<string, string>>({});
const validateForm = () => {
const newErrors: Record<string, string> = {};
if (!formData.title.trim()) newErrors.title = 'Event title is required';
if (!formData.description.trim()) newErrors.description = 'Description is required';
if (!formData.location.trim()) newErrors.location = 'Location is required';
if (!formData.date) newErrors.date = 'Date is required';
if (!formData.time) newErrors.time = 'Time is required';
if (!formData.maxVolunteers || parseInt(formData.maxVolunteers) < 1) {
newErrors.maxVolunteers = 'Valid number of volunteers is required';
}
setErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
if (!validateForm() || !user) return;
setLoading(true);
try {
console.log('Creating event with data:', formData);
const { data: newEvent, error } = await supabase
.from('events')
.insert({
title: formData.title,
description: formData.description,
location: formData.location,
date: formData.date,
time: formData.time,
max_volunteers: parseInt(formData.maxVolunteers),
organizer_id: user.id,
status: 'Open',
difficulty: 'Easy',
points_reward: 50,
equipment: []
})
.select()
.single();
if (error) {
console.error('Error creating event:', error);
toast({
title: "Error",
description: "Failed to create event. Please try again.",
variant: "destructive",
});
return;
}
console.log('Event created successfully:', newEvent);
toast({
title: "Success!",
description: "Event created successfully!",
});
onEventCreated(newEvent);
// Reset form
setFormData({
title: '',
description: '',
location: '',
date: '',
time: '',
maxVolunteers: '',
category: 'beach-cleanup'
});
setErrors({});
onClose();
} catch (error) {
console.error('Error in handleSubmit:', error);
toast({
title: "Error",
description: "An unexpected error occurred.",
variant: "destructive",
});
} finally {
setLoading(false);
}
};
const handleChange = (field: string, value: string) => {
setFormData(prev => ({ ...prev, [field]: value }));
if (errors[field]) {
setErrors(prev => ({ ...prev, [field]: '' }));
}
};
return {
formData,
errors,
loading,
handleSubmit,
handleChange
};
};
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\integrations\supabase\client.ts ==========
// This file is automatically generated. Do not edit it directly.
import { createClient } from '@supabase/supabase-js';
import type { Database } from './types';
const SUPABASE_URL = "https://mbofnsqwfjmgmjlxjcxw.supabase.co";
const SUPABASE_PUBLISHABLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im1ib2Zuc3F3ZmptZ21qbHhqY3h3Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTA3ODM2ODEsImV4cCI6MjA2NjM1OTY4MX0.DKFASdj-5udhXz8wX_ztIeBtvgrfjsyCzHpHHuro60U";
// Import the supabase client like this:
// import { supabase } from "@/integrations/supabase/client";
export const supabase = createClient<Database>(SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY);
========== C:\Users\satya\Downloads\sarthi-beach-brigade-main\sarthi-beach-brigade-main\src\integrations\supabase\types.ts ==========
export type Json =
| string
| number
| boolean
| null
| { [key: string]: Json | undefined }
| Json[]
export type Database = {
public: {
Tables: {
event_attendance: {
Row: {
attended: boolean | null
event_id: string
id: string
marked_at: string | null
marked_by: string | null
points_awarded: number | null
volunteer_id: string
}
Insert: {
attended?: boolean | null
event_id: string
id?: string
marked_at?: string | null
marked_by?: string | null
points_awarded?: number | null
volunteer_id: string
It's not LiveKitClient (upper case 'K'), it's LivekitClient (lower case 'k')
I guess you accidentally put ':' into your path.
Also make sure that HADOOP_HOME is set correctly, because one will get ClassNotFound exception with the same libs your mentioned, when trying to run hive CLI.
According to documentation HADOOP_HOME is the requirement.
Although it's written that hive 4.0.1 works with Hadoop 3.3.6, I've just checked it with Hadoop 3.4.1 and It works (despite some warns of multiple SLF4J bindings, which should be fixed by devops or devs)
PS: I don't quite get what does 'query data on apache spark with hive' means. Usually, spark utilizes hive metastore to query Hive's tables.
Follow below steps.
Open Visual Studio 2022.
Click Create a new project.
Search for ASP.NET Core Empty.
Select the ASP.NET Core Empty template and click Next.
Choose .NET 8.0 as the target framework.
Click Create.
This template will give you the setup with just the Program.cs and Startup.cs , and no Razor Pages or MVC.
This error occurs because node-abi (which electron-builder uses internally) doesn't recognize Electron version 37.1.0.
Try with a node-abi version released here:
Sadly it is not possible to change the default behaviour of the SnackbarHost. Therefore it will always stretch the full width of the screen.
Thus if you want it to just wrap the content you would have to make a custom snackbar like you mentioned.
@xdurch0 answered this question in a comment. The solution is to set axis=1
. The numbers aren't actually garbage. I was expecting stuff like 0.123 or 0.543, so I thought they were garbage. They actually do sum up to 1.0.
I am taking example of Java as I am comfortable with it. In a single JVM, locks like synchronized or ReentrantLock work well.
But in a clustered environment (e.g. multiple Spring Boot apps behind a load balancer), each node has its own memory, so:
Locking in memory doesn’t prevent another node from performing the same action.
You need a shared coordination mechanism — like Redis, Zookeeper etc...
After trying everything and a good night sleep I got enlightend....
The error was not in the service but in the keycloak settings for the api user. There was 2 things in place that hide the real error.
Same issue I found my ppt is generating according to my requirements but getting repair issues I have tried many way to resolve it but unable to remove it.
Please any one who can help me.. I have Used OpenXML and HtmlAgilityPack
You’ve already sniffed out the right ROUTER–DEALER pattern. But there is a nuance here: the broker must keep track of which client request is handled by which backend, so the response goes back to the right client.
You can try Router-Dealer-Router pattern. This is why this will work:
Frontend: ROUTER socket (bind TCP) — talks to clients.
Broker middle: DEALER socket — talks to all backend handler threads.
Backends: each backend is a ROUTER socket, connected to the broker DEALER over inproc://.
So, the chain is:
CLIENT <---> ROUTER (broker frontend) <---> DEALER (broker backend) <---> ROUTER (per backend)
This lets you:
Use the built-in zmq_proxy() for non-blocking fair queuing.
Keep request identity frames intact.
Have each backend handle its own routing logic for responses.
To avoid using
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Try this plugin it will use device download manager to download file and also show progress notification
You write that it works with scan_csv
. Looking at the documentation scan_csv
seems to be the only option to support glob patterns.
read_csv
: Read a CSV file into a DataFrame.
scan_csv
: Lazily read from a CSV file or multiple files via glob patterns.
I have found a simple workaround in cases where you cannot use subqueries...
SELECT AVG(COALESCE([Ship Cost], 0)) * COUNT(DISTINCT [Tracking #]) ... GROUP BY [ORDER #]
Perhaps not the answer to the OP's situation, but I experienced the same issue recently and after digging around for ages, the problem was that Firefox needed to be granted Local Network permissions in macOS Settings > Privacy & Security. Sigh.
It seems to be an issue of the pytest-html package. An issue has been raised.
This is a very specific problem with some libraries in kotlin-dsl
Replace
implementation ("com.github.gbenroscience:parserng-android:0.1.1")
with
implementation (platform("com.github.gbenroscience:parserng-android:0.1.1"))
& you are good to go.
To compute new features from existing inputs within a neural network, use a Lambda layer. This layer allows you to apply any custom function to an input tensor, creating new, derived features. This lets your model learn from more meaningful, calculated values instead of just raw inputs. I have tried with dummy dataset and able to implement an input layer as a weight to a second input layer. I am attaching gist file for your reference.
Working with a single back-end + database will always be the better solution. Not only does it reduce errors but also creates a better structure in general. This way you only have to code something once and it makes you think about it twice.
<ul style = {{ scrollbarWidth : "none" }} >
</ul>
You could use something like this
In companies, the majority still use rs fec for fixed loss-rate
As a partial answer, but I hope a useful one, details
elements can be 'grouped' by giving them the same name
attribute value. When we do that, only one of the grouped elements is allowed to be open. So opening a new one will close the previously opened one.
I think you should open a dat file in an editor first to understand the structure first then check the delimiter. Make sure you use the appropriate MATLAB functions.
For numeric data make sure you use load. data = load('filename.dat');
This will directly load the data into matrix.
For custom delimiter use textscan fid = fopen('filename.dat', 'r');
data = textscan(fid, '%f %f %f', 'Delimiter', ','); % Adjust format specifiers as needed
fclose(fid);
For matrix data use separate columns col1 = data(:, 1); % First column
col2 = data(:, 2); % Second column
% Continue as needed
For data in the cell array use textscan col1 = data{1}; % First column
col2 = data{2}; % Second column
For tables col1 = tableData.Var1; % Access first variable/column
col2 = tableData.Var2; % Access second variable/column
After all this you can save your data as mat file for easier use. save('filename.mat', 'data');
You can also export as a new writematrix(data, 'newfile.dat');
Capture your request with burp suite and then write a program that dynamically communicates with the server and retrieves the changed parts (for example, access or cookie tokens). Finally, all you need to do is to send the current version of the raw request you created in burp at the beginning, using the programming language you wrote the program in.
change
MudButton @onclick="LoadFlights"
to
MudButton OnClick="LoadFlights"
or to
MudButton OnClick="@(async () => await LoadFlights())"
I faced the same issue, and you can resolve it by making the chat treatment (e.g., OpenAI calls) asynchronous, so the 200 response is returned instantly.
When I search for a company or a person's LinkedIn profile in incognito mode, I can still see their profile image, name, and some basic details. Since this data appears to be publicly accessible, what is the correct or recommended way to programmatically access this public information (e.g., name, profile image) from LinkedIn?
I'm trying to understand whether there's an API or another legal/public method for retrieving this kind of publicly visible data. Any guidance would be appreciated.
You can press ctrl+[ to remove tabulation
When using Visual Studio Code (VSCode) port forwarding, especially in GitHub Codespaces, Remote SSH, Dev Containers, or WSL setups, there are some practical limitations around bandwidth and HTTP request rate, though most of these are not explicitly documented. Below is a summary of what is known and inferred based on Microsoft documentation, community experiences, and technical behavior of the underlying systems:
GitHub Codespaces (uses VSCode port forwarding over a proxy):
There is no officially published request-per-second (RPS) limit, but users have reported soft throttling or dropped requests above ~50–100 RPS.
Port forwarding is tunneled via a secure reverse proxy, which can introduce latency and rate limiting at higher volumes.
Ideal for development, but not for high-frequency testing like load testing or benchmarking.
Remote-SSH / Dev Containers:
Since connections are local or over SSH, you're limited only by:
The network bandwidth.
Latency and throughput of the SSH connection.
Your machine and remote system resources.
These are generally not rate-limited, but SSH multiplexing and port forwarding can create bottlenecks if used intensively (e.g., >1000 RPS sustained).
No fixed bandwidth cap, but practical throughput depends on:
The host machine and remote system (e.g., Codespace tier).
Your network connection if remote.
In GitHub Codespaces, outbound bandwidth may be shared across users and is optimized for development, not for serving traffic.
Rough estimates (from community tests in Codespaces):
Around 10–20 Mbps of sustained throughput is common.
Latency added by the proxy can be 30–100 ms, depending on region.
VSCode port forwarding is not designed for production-like API workloads. If you need to test an application with:
High concurrent request load
Streaming data
Real-time communication (WebSockets under high load)
Consider setting up a local reverse proxy (e.g., NGINX) and using a direct network path (such as a public test server or local VM/container), rather than relying on VSCode’s forwarding.
For normal development (browsing a frontend, sending occasional API requests), VSCode port forwarding is fine.
For load testing or high-performance profiling, use:
A local test environment (e.g., Docker locally).
A cloud VM or server with a public IP.
Deploy your code to a staging environment, bypassing VSCode's port proxy.
<Link href="/">
<Text style={styles.button}>Go back to Home screen!</Text>
</Link>
To avoid using
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Try this plugin it will use device download manager to download file and also show progress notification
Thanks for the help. Adrian's answer is probably the best, most secure way to fix the problem, but I found another solution that avoids explicitly citing a schema (one reason I wanted this is that I wanted code that would install the functions in the current user's schema without explicitly stating who that user is):
CREATE OR REPLACE FUNCTION nest_myfunc(
ts_array TIMESTAMP WITHOUT TIME ZONE[],tz text)
RETURNS float[] AS
$BODY$
SELECT myfunc($1,$2);
$BODY$ LANGUAGE 'sql' IMMUTABLE
SET search_path FROM CURRENT;
This explicitly sets the search_path
to be the same as the one at the time of function creation when running the function.
Use Docker
create a docker container for PostgreSQL and pre-load the data, Bundle Django + PostgreSQL in docker-compose.yam file**.**
ok, i understand the information
This is possible since EF Core 6:
Context.topics.Where(//some logic).OrderBy(e => EF.Functions.Random()).Take(6);
it's in the package
Microsoft.EntityFrameworkCore
Source: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/whatsnew#effunctionsrandom
I use PS v5.1. Few comments:
This option is not necessary if the input CSV file already has a header
-Header IpAddress
The syntax of option "-LeafBase" has changed to "-Leaf"
This option is deprecated or so it seems:
-UseQuotes AsNeeded
I encountered this question about a year ago, and Daniel Lee Alessandrini's answer helped me a lot. I improved his function by casting it as a double for millisecond precision(xxxxxxx.yyy) in my use cases, and it works fine in my environment (PySpark 3.4.1 and Pandas 2.1.3).
However, I haven't tried using nanosecond precision because my environment is still using Iceberg 1.3.1. For reference, see: Iceberg Specification - Primitive Types.
import pandas as pd
from pyspark.sql import functions as F
def convert_to_pandas(Spark_df):
"""
This function will safely convert a spark DataFrame to pandas.
Ref: https://stackoverflow.com/questions/76072664
"""
# Iterate over columns and convert each timestamp column to a string
timestamp_cols = []
for column in Spark_df.schema:
if (column.dataType == T.TimestampType()) | (column.dataType == T.TimestampNTZType()):
# Append column header to list
timestamp_cols.append(column.name)
# Set column to string using date_format function
Spark_df = Spark_df.withColumn(column.name, F.col(column.name).cast("double"))
# Convert to a pandas DataFrame and reset timestamp columns
pandas_df = Spark_df.toPandas()
for column_header in timestamp_cols:
pandas_df[column_header] = pd.to_datetime(pandas_df[column_header],unit = 's')
return pandas_df
It's also important to put an existing e-mail address in the sender field. I had trouble with the noreply addresses I used because they simply did not exist. When I changed to real address in the From: field, everything started to work with gmail recipients, too.
1. Access the Debug Console: First, I went to the Kudu Debug Console. You can access it by appending /DebugConsole to your app service URL. For example: https://<your-app-name>.scm.azurewebsites.net/DebugConsole
2. Navigate to the Site Folder: Once inside the Debug Console, I navigated to the directory: /home/site/wwwroot
3. Clean the Folder: I deleted all existing files and folders inside wwwroot. You can do this either through the file explorer in the console or by running: rm -rf /home/site/wwwroot/*
4. Redeploy the App: After clearing the contents, I triggered the deployment again (using my CI/CD pipeline or deployment method), and this time it worked successfully without any errors.
Note: This issue usually happens due to leftover or corrupted deployment files. Clearing the directory ensures that your deployment starts fresh.
In your function getBodyType
I would add the subType
to the set before calling the db. If you add to the set in the then
clause it will be deferred and processing of the next row may indeed attempt to add the same subType
again. You already know that the subType
is not in the set, so why not add it right away before any other row is processed?
export async function getBodyType(body, conn, map) {
let subType = body.subType || "Other";
if (subType && !map.has(subType)) {
// Insert into the DB as we go, adding it to a set to ensure we don't duplicate
map.add(subType);
db.insertBodyType(subType, conn);
}
return subType;
}
My case had nothing to do with a stored procedure, but the "unexpected end of stream" message instantly disappeared, when I killed an "htop"-Session running through another SSH-connection to a server I used for tunneling my DB connection. So also look out for these kinds of connection issues when you see that error message.
Consider adding a file named: copilot-instructions.md
https://code.visualstudio.com/docs/copilot/copilot-customization
Inside there, you can write down some instructions to suggest that it should use the tool. For example:
Follow these steps for each interaction:
- Use MCP tool named XYZ and call specific methods when it is appropriate. (You can specify it here)
There’s a free WordPress plugin that automatically assigns guest orders to a user account if the same email is used during account creation. If a user account already exists and an order is placed without signing in, the plugin still links the order to the user based on the email address.
Plugin link:
Guest Order Assigner: https://wordpress.org/plugins/guest-order-assigner/
In our case retr0's reply save us, but in detail GET method can have json body, but this body can't be empty, if it is empty, just dont give bady
Updating qpageview to version 1.0.0 solved the problem. Since this is not the first time this issue has occurred when switching from pyqt5 to pyqt6, it can be assumed that it is often resolved by updating the modules.
just turn off toggle session isolation, in website conf
thanks so much @jxstanford , I looked everywhere for that as it said its not installed but there were no buttons or links to do it!
Can you tell me which version of revenue cat and superwall you used in both the projects ?
The store product error is because the purchases_flutter and superwall both contain a class named StoreProduct. You will need to hide one of them
If I understood correctly, you are trying to inject dependencies into objects created in runtime, to achieve that, you need a factory.
https://vcontainer.hadashikick.jp/registering/register-factory
The problem was in client certificate, that was signed by wrong intermediate certificate.
To find a problem I used flag
-Djava.security.debug=certpath,verbose
so in logs I found that authority key identifier of client certificate is not equal to Subject Key Identifier of intermediate certificate
JavaScript or conditional logic can be used to depend on more than one field when selecting a field. Based on the combination of values in the other fields, the options are updated.
Are you using a non-unique ID user store?
Also, could you let us know the version of the IWA Kerberos authenticator you are currently using?
There is a known issue(https://github.com/wso2/product-is/issues/21053) related to non-unique ID user stores when used with the IWA Kerberos authenticator. However, this issue has been resolved in the latest version.
Providing the above information will help us identify the exact cause of the issue.
Could you please follow the steps outlined in the official WSO2 Identity Server documentation for configuring ELK Analytics SSO?
You can refer to the guide available at:
https://is.docs.wso2.com/en/7.0.0/deploy/elk-analytics-sso-guide/
I would simply use:
<meta charset="utf-8">
Which passes the validation.
Here is a similar question to yours: <meta charset="utf-8"> vs <meta http-equiv="Content-Type">
Try this once:
<meta charset="UTF-8">
Impossible. Athena can only READ a bucket from a different AWS account and region, not WRITE.
Sources:
Create a query output location - Amazon Athena
Using the same AWS Region and account that you are using for Athena, follow the steps to create a bucket in Amazon S3 to hold your Athena query results
The results bucket must be in the same region AND the same account as Athena.
Troubleshoot "Invalid S3 location" error when saving query results in Athena
Verify that the S3 location where the query results are saved is in the same Region where you run the queries.
...
The S3 query result location that you specified is in a different Region.
Listed as one of the error causes.
In conclusion: AWS explicitly requires that the output location be in the same region AND the same account.
If the Expo camera does not rotate the recorded images automatically, try checking the camera settings on your phone, Expo camera or update your phone software to the latest version. If that doesn't work, reset your phone or Expo camera settings.
thank you.
I can vouch that this fixed my issue. I was stuck in a week with same error of codesigning. I thought it's because the devices changed to new keys because the device ID were new. The reason for the error because the project is inside a cloud folder. I moved it to a local folder in downloads and it finally fixed the problem. I've been in a loop of flutter clean, flutter pub get, pod install for a week yet the fix was so simple.
Another possible case for this: DB named in uppercase. For some reason I had this issue with MYDB. After renaming it to mydb everything begin to work fine.
Can you try with using IdentityEventClientException
instead of the IdentityEventException Similar to the below example[1]?
if (citizen == null) {
throw new IdentityEventClientException(
"17002", // errorCode
"Bad credentials example"
);
}
Use SSHOperator to run an rm command if your server supports SSH:
delete_task = SSHOperator(
task_id='delete_file',
ssh_conn_id='nseix',
command='rm /remote/path/{{ ti.xcom_pull(key="del_td") }}.i01_1.spn',
dag=dag
)
Use CloudFront behaviors to route paths like /apps/app-one/* and /apps/app-two/* to different origins (separate Amplify apps or S3 + Lambda apps).
Moment.js now recommends using an alternative like Date-fns, who have the function formatDistanceToNow, which can achieve the desired results.
You're calling do_auth() with just the access token (a string), but it expects the full request, with session and other context.
move your login_vk code into the pipeline, or use a pas-decorated view properly
update your pipeline so the login_vk process user data not just login
[Bream Prefs]
TextArea Strategy=1
[User Prefs]
Language File=p*?:lang_en-us.lng
Home URL=reksio:homepage
HomePage History Count=3
HomePage Bookmarks Count=-1
[Splash]
Time=5000
PngFile=p*?:splash.png
[General]
Clock24=TRUE
DirectDownload=TRUE
SavedPages Count=-1
SavedPagesSize Count=-1
Current SavedPagesSize=0
Landscape=1
FullscreenMode=FALSE
MaxResWithHiddenNumbers=200
[Network]
DefaultSimCard=0
ApnOfSim0=0
[MiniServer]
DefaultServerType=Socket
[Channel]
0=0
1=0
2=0
3=0
4=0
5=0
6=0
7=0
8=0
9=0
:=0
;=0
<=0
==0
\>=0
?=0
@=0
A=0
B=0
C=0
D=0
E=0
F=0
G=0
H=0
I=0
J=0
K=0
L=0
M=0
N=0
O=0
P=0
Q=0
R=0
S=0
T=0
U=0
V=0
W=0
X=0
Y=0
Is possible but needs oauth2 access token obtained using service account key and jwt. Normal client id oauth2 access token won't work
you can use ck editor, my company use this text editor
I know its a long shot but did you end up salving this?
i couldnt comment sorry
I came here looking for answers and thought I'd share for the next person. No quotes needed on a 2023 Macbook Pro.
docker compose exec -it user-portal wget --post-data "xxx" http://backend:4000 Connecting to backend:4000 (192.168.64.4:4000) wget: server returned error: HTTP/1.1 401 Unauthorized
Nice starting point! You've built a solid base using OpenCV. For better accuracy, definitely try cv2.fitEllipse()
for shape validation and consider filtering by circularity. Also, adaptive thresholds or watershed segmentation might help separate dividing cells. Keep experimenting—you're on the right track!
If it didn’t go to the smallest value, negatives wouldn’t make sense. Because “1” on the first bit (the X in X000 0000 0000 0000 0000 0000 0000 0000) represents a “-“, when it is 0111 1111 1111 1111 1111 1111 1111 1111 (2147483647) and it ticks over to 1000 0000 0000 0000 0000 0000 0000 (supposedly 2147483648), the computer believes it is negative, but because the other 31 bits are 0s, you may think it is -0. That is not the case. The other 31 bits are put through a NOT gate (turning 0s into 1s and vice versa) and taking away one more, it makes sense 2147483647+1=-2147483648.
This online tool, which utilizes LibreOffice as its backend, provides functionality comparable to Pandoc.
Update to this post. I had the same problem and learned what the issue is.
Short Answer: use ImageIndex only
Long Answer: Setting the ImageKey will set your ImageIndex = -1 which is used by the virtual mode. So do not use ImageKey entirely. I do not know why tho, this seems like an old problem that is never fixed by Microsoft
Let's call your matrix df
f you want to know how many rows there are in your matrix: nrow(df)
If you want to know the index for an specific value: which([logical]) for example which(df$col1 ==2)
If you are using PHP this will help you :
<html><body><center><form method='POST' id='top'>
<input type='text' name='search_word'>
<input type='submit' name='submit' value='search'>
</form>
<?php if(isset($_POST['submit'])){ ?>
<input type='button' value='Clear' onclick="window.location.href=''">
<?php $search_word=$_POST['search_word'];
echo"<script>document.getElementById('top').style.display='none';</script><div id='search_div'>
<iframe src='https://www.google.com/search?igu=1&ei=&q=$search_word' frameborder='0' width='90%' height='90%' allowfullscreen></iframe></div> "; } ?>
</body></html>
How to get developer disk image for OS 18? From xcode also its not automatically downloading for me. Can you help me in how you got DDI?
You can leverage the dictionary assignment feature of parseExpr to dynamically evaluate row-specific formulas. Here's the working approach:
each(def(mutable d) -> parseExpr(d.v, d.erase!(`v)).eval(), t)
Output is :
0 0 -0.9 -1.7 -2.6 -3.5 -4.3
const event = {
title: 'new event',
start: Date.now(),
end: Date.now(),
}
setEvents([...events, event]);
Is seems like replacing my original line of =
Application.Goto Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn), 1
with the below solves the issue.
Application.Goto Reference:=ws1.Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn)
I think we use bottom parameter in ax.set_ylim() which controls the y-axix. set bottom parameter to a small negative value which creates som espace between x_axis and the bottom of hist plot bar.
ax.set_ylim(bottom=-0.01)
The api returns a page token if there are more than 100 rows. you have to use this page token and call the same api again.
It sounds like you want Perlin's Simplex noise.
For anyone viewing this for Svelte 5 (Runes), you can do the same with state runes using $effect:
$effect(() => (c, console.log("yes")))
Alternatively, $inspect(...).with if you do not want this to run in production builds.
$inspect(c).with(() => console.log("yes"));
In Excel, you can load add-ins published in Microsoft Appsource, there is one add-in called "excel to json" can meet your requirement, it can handle simple and complex json files, like nested or multilayer json.
as of 2025, and even back in 2018, this is not correct, the Vendor key should only be populated for CPU client runtimes only, GPU runtimes should be registered under the system class for the gpu driver using the OpenCLDriverName and OpenCLDriverNameWow Reg_SZ paths to them in the DriverStore location.
But because of a missing migration handling in the AMD driver, old drivers that still wrote to the Vendors key path in the registry may still be registered, and the ICD dll may still be on the system, deleting both the Vendor path, and file from the system folder (The Root System32/SySWow64 folder, no deeper) should be all thats required for the system to work properly.
My apologies, I had a moment, my original post works. Coffee time :)
So I just updated my IntelliJ to 2025 version and this tabs for project stopped working. I tried this :
PS: This is for MacOS:
The Core Setting (As mentioned in answers above):
The primary setting that controls how IntelliJ IDEA opens new projects is still located here:
Go to File > Settings (or IntelliJ IDEA > Preferences on macOS).
Navigate to Appearance & Behavior > System Settings.
In the "Project" section, look for the "Open project in" option.
You typically have three choices:
New window: Always opens a new project in a separate window.
Current window: Closes the current project and opens the new one in the same window (this is not what you want for tabs).
Ask: Prompts you each time whether to open in a new window or the current one.
Crucially, none of these options directly say "Open as a new tab in the current window." This is where the confusion often arises.
IntelliJ IDEA's "projects as tabs" functionality is primarily achieved through macOS's native tabbed window support, rather than a direct IntelliJ setting for Windows/Linux.
IntelliJ IDEA Setting: Set "Open project in" to "New window" (or "Ask" and then choose "New window").
macOS System Settings (The Key for Tabs):
Go to System Settings (or System Preferences on older macOS).
Navigate to Desktop & Dock (or Dock & Menu Bar on older macOS).
Scroll down to the "Windows" section.
Find "Prefer tabs when opening documents" and set it to "Always".
In Kiwi TCMS, test cases cannot be deleted directly through the UI for data integrity reasons, but you can modify test cases by editing their details in the test case view. If you need to remove a test case, the recommended approach is to mark it as "obsolete" or "disabled" instead of deleting it, which keeps the history intact. For bulk changes or deletions, database access and admin-level intervention might be required, but this is generally discouraged. This design ensures audit trails and consistent test management. nulls clash
This is cool and very useful thanks for the info
Also the classification of form mimetype determine the operation if its re-direct for parse and render for application/html & text/html respectively. Also teh way to capture submission id differs one is via on_status callback other is sync json response.
simply add key props to the WebView component like this
<WebView
key={ uri} // Change this key to force a new instance
source={{ uri }}
// ... other props
/>
!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Worm Animation</title>
<style>
body {
margin: 0;
background: #eee;
}
svg {
width: 100vw;
height: 100vh;
display: block;
background: #eee;
}
</style>
</head>
<body>
<svg viewBox="0 0 600 600">
<g id="worm">
</g>
</svg>
<script>
const svgNS = "http://www.w3.org/2000/svg";
const worm = document.getElementById("worm");
const N = 40;
const elems = [];
for (let i = 0; i < N; i++) {
const use = document.createElementNS(svgNS, "use");
use.setAttributeNS(null, "href", "#seg");
worm.appendChild(use);
elems.push({ x: 300, y: 300, use });
}
const pointer = { x: 300, y: 300 };
let frm = 0;
function run() {
requestAnimationFrame(run);
let e = elems[0];
frm++;
const ax = (Math.cos(3 * frm) * 100) / 600;
const ay = (Math.sin(4 * frm) * 100) / 600;
e.x += (ax + pointer.x - e.x) / 10;
e.y += (ay + pointer.y - e.y) / 10;
for (let i = 1; i < N; i++) {
let e = elems[i];
let ep = elems[i - 1];
const a = Math.atan2(e.y - ep.y, e.x - ep.x);
e.x += (ep.x - e.x + Math.cos(a) * (100 - i) / 5) / 4;
e.y += (ep.y - e.y + Math.sin(a) * (100 - i) / 5) / 4;
const s = (162 + 4 * (1 - i)) / 50;
e.use.setAttributeNS(null, "transform",
`translate(${(ep.x + e.x) / 2}, ${(ep.y + e.y) / 2}) rotate(${(180 / Math.PI) * a})`);
}
}
run();
</script>
<!-- Hidden SVG shape -->
<svg style="display: none">
<symbol id="seg" viewBox="0 0 100 100">
<path d="M0,0 Q50,80 100,0 Q50,-80 0,0Z" fill="black" />
</symbol>
</svg>
</body>
</html>
HTML.
std::cout << std::launder(&a)->n;✅ YesUses std::launder --correct behavior
a.h();✅ YesAlso uses std::launder(this)
a.g();❌ NoUses this->n -- UB possible
std::cout << a.n;❌ NoDirect access --may read stale value
Make sure your ADK is installed. For Google Cloud shell, you probably needs to install after reopen the terminal.
using cmd to install adk
sudo python3 -m pip install google-adk==1.4.2
i just typed "fish" and started it
It worked
there is no such thing as server side rendering.
sever file ships to client to render, not discluding server side processing.
You should use the callout.net library. Or alternatively just compare your code to that library, there isn't a lot of code but for security completeness I'd suggest using the library.