Have you tried adding @theme in global.css ?
// global.css
@import 'tailwindcss';
@theme {
--color-black: #1a1a1a;
--color-white: #fafaf8;
--color-mint-500: oklch(0.72 0.11 178);
}
You can add custom colors (hex codes, OKLCH, etc.) like this.
I have a use case for webhooks in forms. I'm creating forms from assets, and I need a field to be copied from the referenced asset to the form. It would be ideal for this field to be populated upon creation of the form so that the end user doesn't think that they have to type in in manually.
thanks your method sort help me a lot to implement algorithm bubble sort in data structure linkedlist
Check out the utility program at https://github.com/DanKonigsbach/GetItemDate
It's a small executable that works for both images and videos, and will do the formatting for you.
Better? Faster? Your mileage may vary. But hope it's helpful.
For video, the field you want is Media Created, rather than Date Taken.
I wanted an easy approach that would support both pictures and videos, and didn't find one that I felt worked well for my purposes. So, I made a small utility program that would handle it. You can find it here at https://github.com/DanKonigsbach/GetItemDate
The trick was that rather than look at EXIF data, video metadata or shell folder attributes, I used the Windows shell properties API, which behind the scenes maps the various sources of that date into the field Item Date. Very convenient.
Less convenient for the C# and PowerShell developer is that this is an unmanaged Windows API. There might be a P/Invoke way to get at it, by for my purposes it was easier to just invoke a small utility executable.
Hopefully, either the source code or executable in GitHub will prove useful.
From what I can gather your solution works like this:
1. Get a comment that has a name in it.
2. Check if the comment has something from the blacklist in it
3. If it does discard the comment, if it doesn't surface the comment.
To avoid discarding valid comments with a blacklisted word in it, you would need to change your logic for discarding comments.
One way I can think of to try to fix this is to run a check like this for each comment with a blacklisted word:
If it has a blacklisted word, make a temporary version of the comment with the blacklisted word removed and see if there is any other instances of that name and repeat until either there is a valid name or you can safely discard the comment.
Example:
Checking: "Nancy was helpful during my pregnancy"
Then you would check-> "Nancy was helpful during my" [Good comment]
Checking: "Peanut butter was helpful during my pregnancy"
Then you would check-> "Peanut butter was helpful during my" [Discard this comment]
=DROP(REDUCE("",UNIQUE(K3:K11),LAMBDA(u,v,VSTACK(u,HSTACK("Week: "&v,SUM(BYCOL(UNIQUE(A1:H1,TRUE),LAMBDA(c,N(0<SUM(FILTER(FILTER(A3:H11,K3:K11=v),
A1:H1=c)))))))))),1)
This would be my suggestion if i correctly understand what you want to do.
Great question and great answer! https://stackoverflow.com/users/12109788/jpsmith
I have added more variables in c() and I can't get it to sum the medians etc for each variable. Instead I get a list per hour from the first value. How can I fix this?
library(dplyr)
library(chron)
library(gtsummary)
chrontest <- chestdf %>%
select(tts_sec, ttl_sec, ttprov1_sec, deltatrop_sec, vistelse_sec) %>%
drop_na() %>%
mutate(across(ends_with("_sec"), ~ format(as.POSIXct(.), "%H:%M:%S"))) %>%
mutate(across(ends_with("_sec"), ~ chron::times(.)))
summary_table <- chrontest %>%
tbl_summary(
include = c("tts_sec", "ttl_sec", "ttprov1_sec", "deltatrop_sec", "vistelse_sec"),
label = list(
tts_sec ~ "Tid till S",
ttl_sec ~ "Tid till L",
ttprov1_sec ~ "Tid till provtagn 1",
deltatrop_sec ~ "Tid till provtagn 2",
vistelse_sec ~ "Vistelsetid"
),
type = list(
all_continuous() ~ "continuous2"
),
statistic = list(
all_continuous() ~ c(
"{mean}",
"{median} ({p25}, {p75})",
"{min}, {max}"
)
),
digits = list(
all_continuous() ~ 2
)
)
Using JToken from Newtonsoft.Json library, you can do the following to minify a JSON string:
var jsonString = "{\n \"something\": \"test\",\n \"somethingElse\": 2\n}";
var minifiedJson = JToken.Parse(jsonString).ToString(Formatting.None);
No need to serialize and then de-serialize.
These are the individual corners of the border.
It's used so you can give each corner a different radius.
I'll be the first to admit that it may not work for everyone or in every use case, but it works for what I intended.
Since it's been a while since posting the question, naturally a good bit has changed in my implementation of Sanity, but you shouldn't have any issues adapting, to your own project with minor changes.
I'd like to start by addressing the changes I've made since posting the question. Please keep in mind all changes listed here were created with Next.js 15 and—more specifically—the next/image component in mind. You may need to make modifications if this does not apply to you.
I no longer use the imageUrlFor, compressWidthAndHeight, or prepareImage functions to generate src attribute and other image props. Instead I take advantage of the GROQ query step by pulling in the information I need and creating the src at this level. I created a helper function for querying images with GROQ, since there are many different scenarios that require different functions on the src.
If you're using TypeScript like I do, here's the definitions you'll need:
export type SanityCrop = {
top: number
left: number
bottom: number
right: number
}
export type SanityHotspot = {
x: number
y: number
width: number
height: number
}
export type SanityImage = {
_id: string
alt?: string
aspectRatio?: number
blurDataURL: string
crop?: SanityCrop
height?: number
hotspot?: SanityHotspot
filename?: string
src: string
width?: number
}
All descriptions in the GroqImageSourceOptions type are copied from Sanity – Image transformations – Image URLs. You're welcome to use this in your own projects if you want.
type GroqImageSourceOptions = Partial<{
/** Automatically returns an image in the most optimized format supported by the browser as determined by its Accept header. To achieve the same result in a non-browser context, use the `fm` parameter instead to specify the desired format. */
auto: 'format'
/** Hexadecimal code (RGB, ARGB, RRGGBB, AARRGGBB) */
bg: string
/** `0`-`2000` */
blur: number
/** Use with `fit: 'crop'` to specify how cropping is performed.
*
* `focalpoint` will crop around the focal point specified using the `fp` parameter.
*
* `entropy` attempts to preserve the "most important" part of the image by selecting the crop that preserves the most complex part of the image.
* */
crop:
| 'top'
| 'bottom'
| 'left'
| 'right'
| 'top,left'
| 'top,right'
| 'bottom,left'
| 'bottom,right'
| 'center'
| 'focalpoint'
| 'entropy'
/** Configures the headers so that opening this link causes the browser to download the image rather than showing it. The browser will suggest to use the file name provided here. */
dl: string
/** Specifies device pixel ratio scaling factor. From `1` to `3`. */
dpr: 1 | 2 | 3
/** Affects how the image is handled when you specify target dimensions.
*
* `clip` resizes to fit within the bounds you specified without cropping or distorting the image.
*
* `crop` crops the image to fill the size you specified when you specify both `w` and `h`.
*
* `fill` operates the same as `clip`, but any free area not covered by your image is filled with the color specified in the `bg` parameter.
*
* `fillmax` places the image within the box you specify, never scaling the image up. If there is excess room in the image, it is filled with the color specified in the `bg` parameter.
*
* `max` fits the image within the box you specify, but never scaling the image up.
*
* `min` resizes and crops the image to match the aspect ratio of the requested width and height. Will not exceed the original width and height of the image.
*
* `scale` scales the image to fit the constraining dimensions exactly. The resulting image will fill the dimensions, and will not maintain the aspect ratio of the input image.
*/
fit: 'clip' | 'crop' | 'fill' | 'fillmax' | 'max' | 'min' | 'scale'
/** Flip image horizontally, vertically or both. */
flip: 'h' | 'v' | 'hv'
/** Convert image to jpg, pjpg, png, or webp. */
fm: 'jpg' | 'pjpg' | 'png' | 'webp'
/** Specify a center point to focus on when cropping the image. Values from 0.0 to 1.0 in fractions of the image dimensions. */
fp: {
x: number
y: number
}
/** The frame of an animated image. The only valid value is 1, which is the first frame. */
frame: 1
/** Height of the image in pixels. Scales the image to be that tall. */
h: number
/** Invert the colors of the image. */
invert: boolean
/** Maximum height. Specifies size limits giving the backend some freedom in picking a size according to the source image aspect ratio. This parameter only works when also specifying `fit: 'crop'`. */
maxH: number
/** Maximum width in the context of image cropping. Specifies size limits giving the backend some freedom in picking a size according to the source image aspect ratio. This parameter only works when also specifying `fit: 'crop'`. */
maxW: number
/** Minimum height. Specifies size limits giving the backend some freedom in picking a size according to the source image aspect ratio. This parameter only works when also specifying `fit: 'crop'`. */
minH: number
/** Minimum width. Specifies size limits giving the backend some freedom in picking a size according to the source image aspect ratio. This parameter only works when also specifying `fit: 'crop'`. */
minW: number
/** Rotate the image in 90 degree increments. */
or: 0 | 90 | 180 | 270
/** The number of pixels to pad the image. Applies to both width and height. */
pad: number
/** Quality `0`-`100`. Specify the compression quality (where applicable). Defaults are `75` for JPG and WebP. */
q: number
/** Crop the image according to the provided coordinate values. */
rect: {
left: number
top: number
width: number
height: number
}
/** Currently the asset pipeline only supports `sat: -100`, which renders the image with grayscale colors. Support for more levels of saturation is planned for later. */
sat: -100
/** Sharpen `0`-`100` */
sharp: number
/** Width of the image in pixels. Scales the image to be that wide. */
w: number
}>
function applySourceOptions(src: string, options: GroqImageSourceOptions) {
const convertedOptions = Object.entries(options)
.map(
([key, value]) =>
`${breakCamelCase(key).join('-').toLowerCase()}=${typeof value === 'string' || typeof value === 'boolean' ? value : typeof value === 'number' ? Math.round(value) : Object.values(value).join(',')}`,
)
.join('&')
return src + ` + "?${convertedOptions}"`
}
type GroqImageProps = Partial<{
alt: boolean
/** Returns the aspect ratio of the image */
aspectRatio: boolean
/** Precedes asset->url */
assetPath: string
blurDataURL: boolean
/** Returns the coordinates of the crop */
crop: boolean
/** Returns the height of the image */
height: boolean
/** Returns the hotspot of the image */
hotspot: boolean
filename: boolean
otherProps: string[]
src: GroqImageSourceOptions
/** Returns the width of the image */
width: boolean
}>
/**
* # GROQ Image
*
* **Generates the necessary information for extracting the image asset, with built-in and typed options, making it easier to use GROQ's API as it relates to image fetching.**
*
* - Include `alt` and `blurDataURL` whenever possible.
*
* - It's best to always specify the `src` options as well.
*
* - Include either `srcset` or `sources` for best results.
*
* - `srcset` generates URLs for the `srcset` attribute of an `<img>` element.
*
* - `sources` generates URLs for `<source>` elements, used in the `<picture>` element.
*/
export function groqImage(props?: GroqImageProps) {
const prefix = props?.tabStart ? `\n${' '.repeat(props.tabStart)}` : '\n ',
assetPath = props?.assetPath ? `${props.assetPath}.` : ''
let constructor = `{`
if (props?.otherProps) constructor = constructor + prefix + props.otherProps.join(`,${prefix}`) + `,`
if (props?.alt) constructor = constructor + prefix + `"alt": ${assetPath}asset->altText,`
if (props?.crop) {
let crop = 'crop,'
if (props.assetPath) crop = `"crop": ${assetPath}crop,`
constructor = constructor + prefix + crop
}
if (props?.hotspot) {
let hotspot = 'hotspot,'
if (props.assetPath) hotspot = `"hotspot": ${assetPath}hotspot,`
constructor = constructor + prefix + hotspot
}
if (props?.width) constructor = constructor + prefix + `"width": ${assetPath}asset->metadata.dimensions.width,`
if (props?.height) constructor = constructor + prefix + `"height": ${assetPath}asset->metadata.dimensions.height,`
if (props?.aspectRatio)
constructor = constructor + prefix + `"aspectRatio": ${assetPath}asset->metadata.dimensions.aspectRatio,`
if (props?.blurDataURL) constructor = constructor + prefix + `"blurDataURL": ${assetPath}asset->metadata.lqip,`
if (props?.filename) constructor = constructor + prefix + `"filename": ${assetPath}asset->originalFilename,`
constructor = constructor + prefix + `"src": ${assetPath}asset->url`
if (props?.src && Object.entries(props.src).length >= 1) constructor = applySourceOptions(constructor, props.src)
return constructor
}
Although most props are now prepared with groqImage—like the alt and blurDataURL for next/image—the crop, hotspot, width, and height still aren't utilized. To utilize I created a couple helper functions that are implemented into the main getImagePropsFromSanityForSizing function.
applyCropToImageSource calculates the rect search parameter of the Sanity image URL to apply the crop based on the image's dimensions.
applyHotspotToImageSource uses the x and y values of the hotspot for the fx and fy focal points defined in the search parameters. It also makes sure the crop search parameter is set to focalpoint.
getImagePropsForSizingFromSanity applies both previously mentioned functions to the src and calculates the maximum width and height attributes based on the actual dimensions of the image in Sanity, compared to the developer-defined max dimensions. If no max width and height are provided, the width and height props remain undefined. This is intentional, so that the fill prop can be properly utilized.
export function applyCropToImageSource(src: string, crop?: SanityCrop, width?: number, height?: number) {
if (!crop || !width || !height) return src
const { top, left, bottom, right } = crop
const croppedWidth = width - right * width,
croppedHeight = height - bottom * height
const rect = `&rect=${Math.round(left)},${Math.round(top)},${Math.round(croppedWidth)},${Math.round(croppedHeight)}`
return src + rect
}
export function applyHotspotToImageSource(src: string, hotspotCoords?: Pick<SanityHotspot, 'x' | 'y'>) {
if (!hotspotCoords) return src
const { x, y } = hotspotCoords
const fx = `&fx=${x}`,
fy = `&fy=${y}`
if (src.includes('&crop=') && !src.includes('&crop=focalpoint')) {
src = src.replace(
/&crop=(top|bottom|left|right|top,left|top,right|bottom,left|bottom,right|center|entropy)/,
'&crop=focalpoint',
)
} else {
src = src + `&crop=focalpoint`
}
if (!Number.isNaN(x) && x <= 1 && x >= 0) src = src + fx
if (!Number.isNaN(y) && y <= 1 && y >= 0) src = src + fy
return src
}
/**
* # Get Image Props for Sizing from Sanity
*
* - Returns src, height, and width for `next/image` component
* - Both sanity and max heights and widths must be included to include height and width props
* - The src will have focalpoints and cropping applied to it, according to the provided crop, hotspot, and dimensions.
*/
export function getImagePropsForSizingFromSanity(
src: string,
{
crop,
height,
hotspot,
width,
}: Partial<{
crop: SanityCrop
height: Partial<{ sanity: number; max: number }>
hotspot: SanityHotspot
width: Partial<{ sanity: number; max: number }>
}>,
): Pick<ImageProps, 'src' | 'height' | 'width'> {
return {
src: applyHotspotToImageSource(applyCropToImageSource(src, crop, width?.sanity, height?.sanity), hotspot),
height: height?.max ? Math.min(height.sanity || Infinity, height.max) : undefined,
width: width?.max ? Math.min(width.sanity || Infinity, width.max) : undefined,
}
}
And lastly, it should be noted that the next.config.ts is modified to implement a custom loader to take advantage of Sanity's built image pipeline.
// next.config.ts
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
images: {
formats: ['image/webp'],
loader: 'custom',
loaderFile: './utils/sanity-image-loader.ts',
remotePatterns: [
{
protocol: 'https',
hostname: 'cdn.sanity.io',
pathname: '/images/[project_id]/[dataset]/**',
port: '',
},
],
},
}
export default nextConfig
// sanity-image-loader.ts
// * Image
import { ImageLoaderProps } from 'next/image'
export default function imageLoader({ src, width, quality }: ImageLoaderProps) {
if (src.includes('cdn.sanity.io')) {
const url = new URL(src)
const maxW = Number(url.searchParams.get('max-w'))
url.searchParams.set('w', `${!maxW || width < maxW ? width : maxW}`)
if (quality) url.searchParams.set('q', `${quality}`)
return url.toString()
}
return src
}
Now that we got the boring stuff out of the way, let's talk about how implementation of the hotspot actually works.
The hotspot object is defined like this (in TypeScript):
type SanityHotspot = {
x: number
y: number
width: number
height: number
}
All of these values are numbers 0-1, which means multiplying each value by 100 and adding a % at the end, will generally be how we will implement the values.
x and y are the center of the hotspot. width and height are fractions of the dimensions of the image.
Now there are certainly different ways of using these values to get the results you're looking for (e.g. top, left, and/or translate), but I wanted to use the object-position CSS property, since it doesn't require wrapping the <img> element in a <div> and it works well with object-fit: cover;.
The most important thing to dynamically position the image to keep the hotspot in view is handling resize events. Since I'm using Next.js, I created a React hook to handle this.
I made this hook to return the dimensions of either the specified element, or the window, so it can be used for anything. In our use case, the dimensions of the image is all we care about.
'use client'
import { RefObject, useEffect, useState } from 'react'
export function useResize(el?: RefObject<HTMLElement | null> | HTMLElement) {
const [dimensions, setDimensions] = useState({ width: 0, height: 0 })
const handleResize = () => {
const trackedElement = el ? ('current' in el ? el.current : el) : null
setDimensions({
width: trackedElement ? trackedElement.clientWidth : window.innerWidth,
height: trackedElement ? trackedElement.clientHeight : window.innerWidth,
})
}
useEffect(() => {
if (typeof window !== 'undefined') {
handleResize()
window.addEventListener('resize', handleResize)
}
return () => {
window.removeEventListener('resize', handleResize)
}
}, [])
return dimensions
}
Now that we have our useResize hook, we can use it and apply the object-position to dynamically position the image to keep the hotspot in view. Naturally, we'll want to create a new component, so it can be used easily when we need it.
This image component is built off of the next/image component, since we still want to take advantage of all that that component has to offer.
'use client'
// * Types
import { SanityHotspot } from '@/typings/sanity'
export type ImgProps = ImageProps & { hotspotPositioning?: { aspectRatio?: number; hotspot?: SanityHotspot } }
// * React
import { RefObject, useEffect, useRef, useState } from 'react'
// * Hooks
import { useResize } from '@/hooks/use-resize'
// * Components
import Image, { ImageProps } from 'next/image'
export default function Img({ hotspotPositioning, style, ...props }: ImgProps) {
const imageRef = useRef<HTMLImageElement>(null),
{ objectPosition } = useHotspot({ ...hotspotPositioning, imageRef })
return <Image {...props} ref={imageRef} style={{ ...style, objectPosition }} />
}
Thankfully that part was really simple. I'm sure you noticed we still need to implement this useHotspot hook that returns the objectPosition property. First I just wanted to address the changes we made to the ImageProps from next/image.
We added a single property to make it as easy as possible to use. The hotspotPositioning prop optionally accepts both the aspectRatio and the hotspot. Both of these are easily pulled in using the groqImage function.
{ hotspotPositioning?: {
aspectRatio?: number
hotspot?: SanityHotspot
} }
Pitfall
It is possible that the aspectRatio will not be available if you aren't using the Media plugin for Sanity.
If you do not provide both of these, the hotspot will not be dynamically applied.
Okay—the tough part. How exactly does the useHotspot hook calculate the coordinates of the objectPosition property?
By using a useEffect hook, we are able to update the objectPosition useState each time the width and/or height of the <img> element changes. Before actually running any calculations, we always check whether the hotspot and aspectRatio are provided, so—although if you know you don't need to dynamically position the hotspot, you shouldn't use this component—it shouldn't hurt performance if you don't have either of those.
The containerAspectRatio is the aspect ratio of the part of the image that is actually visible. By comparing this to the aspectRatio, which is the full image, we can know which sides the image is being cropped on by the container.
By default we use the x and y coordinates of the hotspot for the objectPosition, in the case the hotspot isn't being cutoff at all..
Regardless of whether the image is being cropped vertically or horizontally the calculation is basically the same. First, it calculates the aspect ratio of the visible area and it uses the result to determine how far off the overflow is on both sides, in a decimal format (0-1). Next, it calculates how far off—if at all—the hotspot bound overflow. By comparing each respective side's overflow to its hotspot overflowing side counterpart, we are able to determine what direction the objectPosition needs to move.
It's important to note that objectPosition does not move the image the same way using top, left, or translate does. Where positive values move the image down and/or right and negative values move the image up and/or left, objectPosition moves the image within its containing dimensions. This means—assuming we start at 50% 50%—making the value lower moves the image right or down respectively, and making the value higher moves the image left or up respectively. This is an inverse from the other positioning properties, and objectPosition doesn't use negative values (at least not for how we want to use it). This is why the calculations are {x or y} ± ({total overflow amount} - {hotspot overflow amount}).
Lastly, we have the situation where two sides are overflowing. In this case we want to balance how much each side is overflowing to find a middle ground. This is simply 2 * {x or y} - 0.5.
Once calculations are made, we convert the numbers to a percentage with a min max statement to make sure it never gets inset.
function useHotspot({
aspectRatio,
hotspot,
imageRef,
}: {
aspectRatio?: number
hotspot?: SanityHotspot
imageRef?: RefObject<HTMLImageElement | null>
}) {
const [objectPosition, setObjectPosition] = useState('50% 50%'),
{ width, height } = useResize(imageRef)
useEffect(() => {
if (hotspot && aspectRatio) {
const containerAspectRatio = width / height
const { height: hotspotHeight, width: hotspotWidth, x, y } = hotspot
let positionX = x,
positionY = y
if (containerAspectRatio > aspectRatio) {
// Container is wider than the image (proportionally)
// Image will be fully visible horizontally, but cropped vertically
// Calculate visible height ratio (what portion of the image height is visible)
const visibleHeightRatio = aspectRatio / containerAspectRatio
// Calculate the visible vertical bounds (in normalized coordinates 0-1)
const visibleTop = 0.5 - visibleHeightRatio / 2,
visibleBottom = 0.5 + visibleHeightRatio / 2
const hotspotTop = y - hotspotHeight / 2,
hotspotBottom = y + hotspotHeight / 2
// Hotspot extends above the visible area, shift it down
if (hotspotTop < visibleTop) positionY = y - (visibleTop - hotspotTop)
// Hotspot extends below the visible area, shift it up
if (hotspotBottom > visibleBottom) positionY = y + (hotspotBottom - visibleBottom)
// Hotspot extends above and below the visible area, center it vertically
if (hotspotTop < visibleTop && hotspotBottom > visibleBottom) positionY = 2 * y - 0.5
} else {
// Container is taller than the image (proportionally)
// Image will be fully visible vertically, but cropped horizontally
// Calculate visible width ratio (what portion of the image width is visible)
const visibleWidthRatio = containerAspectRatio / aspectRatio
// Calculate the visible horizontal bounds (in normalized coordinates 0-1)
const visibleLeft = 0.5 - visibleWidthRatio / 2,
visibleRight = 0.5 + visibleWidthRatio / 2
const hotspotLeft = x - hotspotWidth / 2,
hotspotRight = x + hotspotWidth / 2
// Hotspot extends to the left of the visible area, shift it right
if (hotspotLeft < visibleLeft) positionX = x - (visibleLeft - hotspotLeft)
// Hotspot extends to the right of the visible area, shift it left
if (hotspotRight > visibleRight) positionX = x + (hotspotRight - visibleRight)
// Hotspot extends beyond the visible area on both sides, center it
if (hotspotLeft < visibleLeft && hotspotRight > visibleRight) positionX = 2 * x - 0.5
}
positionX = Math.max(0, Math.min(1, positionX))
positionY = Math.max(0, Math.min(1, positionY))
setObjectPosition(`${positionX * 100}% ${positionY * 100}%`)
}
}, [aspectRatio, hotspot, width, height])
return { objectPosition }
}
'use client'
// * Types
import { SanityHotspot } from '@/typings/sanity'
export type ImgProps = ImageProps & { hotspotPositioning?: { aspectRatio?: number; hotspot?: SanityHotspot } }
// * React
import { RefObject, useEffect, useRef, useState } from 'react'
// * Hooks
import { useResize } from '@/hooks/use-resize'
// * Components
import Image, { ImageProps } from 'next/image'
function useHotspot({
aspectRatio,
hotspot,
imageRef,
}: {
aspectRatio?: number
hotspot?: SanityHotspot
imageRef?: RefObject<HTMLImageElement | null>
}) {
const [objectPosition, setObjectPosition] = useState('50% 50%'),
{ width, height } = useResize(imageRef)
useEffect(() => {
if (hotspot && aspectRatio) {
const containerAspectRatio = width / height
const { height: hotspotHeight, width: hotspotWidth, x, y } = hotspot
let positionX = x,
positionY = y
if (containerAspectRatio > aspectRatio) {
// Container is wider than the image (proportionally)
// Image will be fully visible horizontally, but cropped vertically
// Calculate visible height ratio (what portion of the image height is visible)
const visibleHeightRatio = aspectRatio / containerAspectRatio
// Calculate the visible vertical bounds (in normalized coordinates 0-1)
const visibleTop = 0.5 - visibleHeightRatio / 2,
visibleBottom = 0.5 + visibleHeightRatio / 2
const hotspotTop = y - hotspotHeight / 2,
hotspotBottom = y + hotspotHeight / 2
// Hotspot extends above the visible area, shift it down
if (hotspotTop < visibleTop) positionY = y - (visibleTop - hotspotTop)
// Hotspot extends below the visible area, shift it up
if (hotspotBottom > visibleBottom) positionY = y + (hotspotBottom - visibleBottom)
// Hotspot extends above and below the visible area, center it vertically
if (hotspotTop < visibleTop && hotspotBottom > visibleBottom) positionY = 2 * y - 0.5
} else {
// Container is taller than the image (proportionally)
// Image will be fully visible vertically, but cropped horizontally
// Calculate visible width ratio (what portion of the image width is visible)
const visibleWidthRatio = containerAspectRatio / aspectRatio
// Calculate the visible horizontal bounds (in normalized coordinates 0-1)
const visibleLeft = 0.5 - visibleWidthRatio / 2,
visibleRight = 0.5 + visibleWidthRatio / 2
const hotspotLeft = x - hotspotWidth / 2,
hotspotRight = x + hotspotWidth / 2
// Hotspot extends to the left of the visible area, shift it right
if (hotspotLeft < visibleLeft) positionX = x - (visibleLeft - hotspotLeft)
// Hotspot extends to the right of the visible area, shift it left
if (hotspotRight > visibleRight) positionX = x + (hotspotRight - visibleRight)
// Hotspot extends beyond the visible area on both sides, center it
if (hotspotLeft < visibleLeft && hotspotRight > visibleRight) positionX = 2 * x - 0.5
}
positionX = Math.max(0, Math.min(1, positionX))
positionY = Math.max(0, Math.min(1, positionY))
setObjectPosition(`${positionX * 100}% ${positionY * 100}%`)
}
}, [aspectRatio, hotspot, width, height])
return { objectPosition }
}
export default function Img({ hotspotPositioning, style, ...props }: ImgProps) {
const imageRef = useRef<HTMLImageElement>(null),
{ objectPosition } = useHotspot({ ...hotspotPositioning, imageRef })
return <Image {...props} ref={imageRef} style={{ ...style, objectPosition }} />
}
I hope this is helpful for people, as I have been trying to find a solid way to implement this for far too long. If this was helpful to you or you have any recommendations to make it better, please let me know!
An addition to activate GPS:
It should also be ensured that the app from the mobile phone has authorization to use GPS.
In my case, the authorization was deactivated and I had to allow it in the GPS settings on my phone for my app.
I faced similar problem with my Azure account 2 years ago. The trick was to use direct IP address of the server instead of the hostname and that i had to allow my network's IP address in Azure's whitelist
You can use the following library: https://github.com/SimpleSimpler/data_fingerprint
This library will tell you exactly where are differences between two dataframes, here is an example:
import polars as pl
from data_fingerprint.src.utils import get_dataframe
from data_fingerprint.src.comparator import get_data_report
from data_fingerprint.src.models import DataReport
# ...
# Generate a data report comparing the two datasets
report: DataReport = get_data_report(df1, df2, "df_1", "df_2")
# print out the differences
print(get_dataframe(report))
You can even try it in streamlit: https://datafingerprinttry.streamlit.app
This problem may be occur due to :
The server name is incorrect or not reachable (DNS/firewall issue)
If this , try pinging or telnetting the server :
telnet your_server_name 1433
what it did work for me, was this: by the way, I asked DeepSeek:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Redirigir URLs que contienen index.php
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
# Reescribir todas las demás solicitudes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
What is the escape character for MS-SQL-Server
The backslash character will escape it, if you specify it as the escape character
WHERE field1 LIKE 'I\'m' ESCAPE '\'
I think doubling the single quotes makes it easier to read, but that isn't what you asked.
please can you help me here I am also developing the application using dwr and spring 6, Java 17 but I'm getting exception engine.js isn't loading.
Getting exception as remote method is undefined my java methods isn't getting called
Was able to work out solution via helpful user in dbt slack channel:
GRANT DATABASE ROLE <name> TO SHARE <share_name> (need to run this only once)- "{% if target.name | lower == 'prod' %} grant select on table <database.schema.table> to database role <name>; {% endif %}"So you grant select privilege on desired table to the database role (which is already granted to the share) instead of granting the privilege directly to the share. I still do not know why the original method does not work though.
It seems the The stacktrace window is collapsed by default.
Click the expand button:
Then the Call stack is one of the tabs. (Assuming execution is broken - if not click Pause or press F8 to break)
While X-Auth-Method is direct, it's vendor-specific. My book: https://www.amazon.com/Navigate-Automation-Seas-Practical-Showcases-ebook/dp/B0DHYGGSDF/
emphasizes self-descriptive APIs. Inspecting the Authorization header's bearer token format (JWT, OAuth2) allows the server to infer the method without a custom header, aligning with REST principles discussed in my book.
https://robbelroot.de/blog/csharp-bluetooth-example-searching-listing-devices/ , follow this link. This will help you
Finally, I got it working.
First, as suggested in the previous answer, I simplified my intent-filter. However, I didn't use the suggested one, since it seems that wildcards are not allowed in android 15 intent-filters. So, I used mimeType, as follows:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/gpx+xml" />
<data android:scheme="content" />
<data android:scheme="file" />
</intent-filter>
Then, the key is, also as suggested in the previous answer, to uninstall and reinstall the app after making changes to the manifest, so that such changes take effect.
I have figured out what was wrong:
Since I am using asdf, I have removed the following lines from my .zshrc file:
export PATH="$PATH":"/Users/myusername/.asdf/installs/flutter/3.22.2-stable/bin"
export PATH="$PATH":"/Users/myusername/.asdf/installs/flutter/3.27.1-stable/bin"
I have uninstalled every version of Dart from asdf.
In my workspace settings I have removed the dart.sdkPath setting entirely.
The problem was that the stand-alone Dart SDK does not include Flutter, where the Flutter SDK does include the Dart SDK, therefore if using Flutter then the Dart SDK should not be referenced or even installed separately.
Kudos to @Pythoner! You saved my day. I was sure I tried everyting with API Keys lol
i think because of the port issue both the things are on running on different port i think in the backend main file you have to set the origin to frontend origin access and make it allow from everywhere and same in the frontend part while making a axios request try to use witheCredentials true so this might work.
I agree, it is annoying.
Like... Excel, import my data. Don't assume you know better than I do how it should be formatted...
I digress...
I did find that you can shift-click the first/last column and apply-all rather than going column by column when picking formatting.
That certainly made it suck 8% less.
Graphing your data using package memory_graph can help your understanding of the Python Data Model:
import memory_graph as mg # see link above for install instructions
a = [10, 20, 30, 40, 50, 60, 70, 80, 90]
b = a
a[0] = a
a.append(a)
mg.show(locals()) # graph the local variables
Just like variable a and b can reference a list value, a list can reference a list value, including itself.
Full disclosure: I am the developer of memory_graph.
Your error is use the /codebase flag. Use this option only if your assembly has a strong name.
I think your code should work fine with a PNG image rather than a JPEG. JPEG's don't support changes in opacity. See the answer here: https://stackoverflow.com/a/16906178/6723646
We have just released an Open Source tool ReARM that connects to an OCI-compatible registry and allows you to store xBOMs for your deliverables over there - https://github.com/relizaio/rearm
Works great, how about if i wanted to list the parent ID rows too with the current output and what if the child node was a parent to another child? For EG:
999, NULL, 'Corp.'
998, 999, 'Div1',
997, 999, 'Div2',
510, 998, 'Child Div1A',
110, 997, 'Child Div2A',
991, 510, 'Child5,
990, 110, 'Child4',
580, 510, 'Child1',
250, 510, 'Child2',
190, 110, 'Child3'
So, for example, if given 999, I would return 998, 997, 510, 110, 990, 991, 580,250,190. But given 997, I would return only 110, 990, 190. If given 110, 990, 190 and if given 190 then just 190
same as ROMAN and Carthusianorum, works in Chrome incognito mode
Please always speak to your database administrator before doing this if you are not already in that role. You could send an email before doing this.
use master;
GO
alter database [TSQL2012] set offline with rollback immediate;
GO
alter database [TSQL2012] set online with rollback immediate;
GO
I open with sudo and work for me.
On terminal, write:
sudo dbeaver
If you work on Linux, will work fine.
from gtts import gTTS
from pydub import AudioSegment
from pydub.playback import play
# Letra para convertir en audio (resumida y adaptada al estilo narrado tipo guía vocal)
lyrics = """
Una le di confianza, me enamoró y en su juego caí.
La segunda vino con lo mismo, me mintió, yo también le mentí.
Por eso es que ya no creo en el amor.
Gracias a todas esas heridas fue que yo aprendí...
Una conmigo jugó, y ahora con to’a yo juego.
En mi corazón no hay amor, no creo en sentimientos.
Soy un cabrón, se las pego a to’as.
Me tiro a esta, me tiro a la otra.
Mala mía, mai, es que me enzorra.
No quiero que más nadie me hable de amor, ya me cansé.
To’ esos trucos ya me los sé, esos dolores los pasé.
Quisiera que te sientas como yo me siento.
Quisiera cambiarle el final a este cuento.
Una conmigo quiso jugar, pues yo jugué con tres.
Una atrevida me quiso enchular, yo enchulé a las tres.
Y ahora no vuelvo a caer, me quedo con las putas y el poder.
Hoy te odio en secreto, si pudiera te devuelvo los besos.
Me arrepiento mil veces de haber confiado en ti.
Los chocolates y las flores, ahora son dolores.
Y después de la lluvia no hay colores.
Una conmigo jugó y ahora con todas yo juego.
En mi corazón no hay amor, tengo el alma en fuego.
Y no me hables de sentimientos, porque eso en mí ya está muerto.
"""
# Convertir texto a voz
tts = gTTS(lyrics, lang='es', slow=False)
audio_path = "/mnt/data/0_Sentimientos_GuiaVoz.mp3"
tts.save(audio_path)
audio_path
Thank you for the interesting information
In case of numeric localization validation is not working , is an decimal seperator for french that is not accept in text box
Replace this:
constructor ({ game, x, y, asset }) {
by:
constructor (game, x, y, asset) {
For android use following to get the thread priority of current thread.
Process.getThreadPriority(0)
As of 4/8/2025, this has been fixed. Install the update to be version 2.2 or greater:
я тоже изменил свой package.json на то что было указано в терминале после это написал в терминале npx expo i --fix и все заработало)
@Reference (or its more current equivalent @DBRef) tells Spring Data to store a reference (like an ObjectId) to another document, not to embed it.
You must save Z documents first:
Z zObj = zRepository.save(new Z(...)); // save first
Grp grp = new Grp();
grp.setX("someValue");
grp.setY(List.of(zObj));
grpRepository.save(grp); // now it will store the DBRef
or
You've to embed Z directly inside grp
Then don’t use @Reference — just declare it as a regular field:
private List<Z> y;
Finally i had to comp up with removing cors from parse server itself. I edited /root/parse-server/node_modules/parse-server/lib/middlewares.js and commented out all the res.header(...) lines that set Access-Control-Allow-*. This disabled Parse's built-in CORS behavior, so Nginx could take over cleanly.
Got the Answer..
Don't understand why the down voting - very unnecessary..
This is the code.
function list-my-gh-pages() {
curl -s "https://api.github.com/users/YOUR_USERNAME/repos?per_page=100" | \
jq -r '.[] | select(.has_pages) | "\(.name): https://\(.owner.login).github.io/\(.name)"'
}
and run it:
list-my-gh-pages
works exactly like I want it to.
If you want to force Fortran free-form highlighting you can change this in the fortran syntax file at /usr/share/vim/vim91/syntax/fortran.vim. Find the corresponding file extension case for your situation and change it to:
let b:fortran_fixed_source = 0
The simplest way is to use HTML. Swing components support basic html.
DefaultModel table_model = (DefaultTableModel) tblMyTable.getModel();
String cell = "<html><font color='red'>This is red</font></html>";
Object[] row = {cell,"Another cell"};
table_model.addRow(row);
Glossaries are indeed the best way to set terminology requirements.
Each project in Crowdin has an automatically created glossary.
You can find the list of glossaries at the organization level under the Glossaries tab. Alternatively, open the project settings, go to the Glossaries tab, find the glossary you need, click the three dots next to it, and select Edit. On the Glossary page, click Add concept, then define a term in all languages where the required terminology should be used.
A concept is an entity that unites all terms referring to the same idea or object. It includes a description to explain what the concept means. A term is how we call that concept in a specific language. One concept can have multiple terms per language — for example, a preferred term, a short form, or even deprecated variants.
To ensure translators follow the terminology recommendations, make sure to enable the Consistent Terminology QA check in the Quality Assurance Settings of your project. This way, you or a linguist would either see a warning indicator for inconsistent terms on the project’s dashboard or, if strict QA checks are enforced, prevent translators from submitting translations that don’t follow the terminology rules.
Graphing your data using package memory_graph can help your understanding of the Python Data Model:
import memory_graph as mg # see link above for install instructions
arr1 = []
arr2 = [1, 2]
arr1.append(arr2)
arr2[0] = 5 # change of value
mg.render(locals(), 'graph1.png') # graph the local variables
A change of a value of mutable type list effects all that share the value, arr1 and arr2.
arr2 = [6] # name rebinding
print(arr1)
mg.render(locals(), 'graph2.png') # graph the local variables
Name rebinding only effects the arr2 variable that is rebound.
I have the exact same problems
Dim somedata = jsonHelper.GetPostorDeleteBasedOnPostAndRealBodyData(payLoadString)
Dim getdeleteorpost = somedata.Item1
Dim usedPayloadString = somedata.Item2
works fine
but
Dim (getdeleteorpost, usedPayloadString) = jsonHelper.GetPostorDeleteBasedOnPostAndRealBodyData(payLoadString)
doesn't work
I tried to look around and find this question.
According to chatGPT. VB.net simply doesn't support this.
So your solution for now is to just use this syntax
Dim somedata = jsonHelper.GetPostorDeleteBasedOnPostAndRealBodyData(payLoadString)
Dim getdeleteorpost = somedata.Item1
Dim usedPayloadString = somedata.Item2
Excerpts from my ChatGPT conversation. I am sure it insists it works for VB 15.3+. But now it changes it's mind.
So noone can do VB.NET tuple deconstruction syntax yet
Correct — VB.NET does not support tuple deconstruction syntax like:
vb.net
CopyEdit
Dim (x, y) = GetTuple()
Even in the latest .NET versions (including .NET 9), VB.NET’s language features have remained mostly frozen, and that syntax has never been added.
You can still use tuples — just not with deconstruction:
vb.net
CopyEdit
Dim result = GetStuff() Dim x = result.Item1 Dim y = result.Item2
Or, for better clarity:
vb.net
CopyEdit
Public Function GetStuff() As (name As String, age As Integer) Return ("Alice", 30) End Function
Then access with:
vb.net
CopyEdit
Dim person = GetStuff() Console.WriteLine(person.name) Console.WriteLine(person.age)
✔️ Named tuple fields work.
❌ Deconstruction doesn’t.
Microsoft has shifted VB.NET into maintenance mode. That means:
No major new language features.
Still supported and maintained.
Works fine with .NET Core/.NET 5/6/7/8/9.
But no new syntax like pattern matching, tuple unpacking, etc.
If you ever switch to C#, you can do tuple deconstruction — but for now, in VB.NET, you’re stuck with Item1, or named fields only. Let me know if you'd like the C# equivalent or tips on making VB.NET cleaner.
in my case i needed to enable legacy providers in the openssl configuration before running php bin/console lexik:jwt:generate-keypair --overwrite.
this link explains how to enable legacy providers :
https://www.php.net/manual/en/function.openssl-pkcs12-read.php#128941
If you're using any plugins which could change that value, you'll want to put the configuration line in after those plugins are loaded. For example, if you have a color scheme plugin, you may want to put vim.api.nvim_set_hl(0, "ColorColumn", { ctermbg='Red', bg='Red' }) in the configuration of the color scheme or in a config file which loads afterwards. I suspect you put the right code in, but it was just getting overwritten later.
I was able to resolve this issue.
The problem was with the encoded_userdata. I initially had the following line in my code:
encoded_userdata = base64.b64encode(day0_config_content.encode()).decode()
Removing that line entirely and just passing the raw JSON string directly worked:
day0_config_content = json.dumps(ftd_config, indent=4)
ftd_vm_create["vm_customization_config"] = {
"datasource_type": "CONFIG_DRIVE_V2",
"files_to_inject_list": [],
"fresh_install": True,
"userdata": day0_config_content,
}
After removing the Base64 encoding, the password started working correctly, and I was able to log in with the AdminPassword provided in the Day 0 config.
Hope this helps someone else facing the same issue.
Qudos!
30 chracters, why?............
This is/was a bug. see https://github.com/quarkusio/quarkus/issues/47098. It has been fixed and released in https://github.com/quarkusio/quarkus/releases/tag/3.21.1
If you can't upgrade, a workaround exists. add the following to the application.properties file:
quarkus.arc.unremovable-types=io.quarkus.smallrye.reactivemessaging.rabbitmq.runtime.RabbitmqClientConfigCustomizer
quarkus.index-dependency.rabbitmq.group-id=io.quarkus
quarkus.index-dependency.rabbitmq.artifact-id=quarkus-messaging-rabbitmq
Thanks to ozangunalp and cescoffier for providing the answer.
No, that part is rendered by the browser and follows browser set fonts.
For the wsimport task, one can use the "disableXmlSecurity" argument.
Another option for a maintained package for this use-case: https://packagist.org/packages/wikimedia/minify
Thanks for this discussion, I am trying to the same for my application but I have to do this for several images sequentially, So I tried the same but in a for loop, for eg:
for i_ in range(2):
fig, ax = plt.subplots()
# ax.add_artist(ab)
for row in range(1,30):
tolerance = 30 # points
ax.plot(np.arange(0,15,0.5),[i*row/i for i in range(1,15*2+1)], 'ro-', picker=tolerance, zorder=0)
fig.canvas.callbacks.connect('pick_event', on_pick)
klicker = clicker(ax, ["event"], markers=["x"], **{"linestyle": "--"})
plt.draw()
plt.savefig('add_picture_matplotlib_figure_{i_}.png',bbox_inches='tight')
plt.show()
But i get the click functionality only for the last image. How can i get it done for all the images?
I know this is an old question, but recently I need to do something like this and didn't find a simple answer googling for it. And bothers me that I need to create solutions if UNPIVOT can be used for it in a simple way. So, I create 2 UNPIVOT group of columns with a value for each. I think is more readable and clean.
SELECT
UNPVT_GROUP2.*
FROM (
SELECT * FROM DB.SCHEMA.TABLE
) TBL UNPIVOT (
GROUP1_VALUE FOR GROUP1_NAME IN (COL_G1_01, COL_G1_02, COL_G1_03)
) UNPVT_GROUP1 UNPIVOT (
GROUP2_VALUE FOR GROUP2_NAME IN (COL_G2_01, COL_G2_02, COL_G2_03)
) UNPVT_GROUP2
WHERE
UNPVT_GROUP2.FILTER_COL = 'FILTERVALUE';
Remembering that you can only read the fields from the last UNPIVOT, in this case UNPVT_GROUP2. If you try to do something like UNPVT_GROUP1.COL1, you'll get an error message like: "The column prefix 'UNPVT_GROUP1' does not match with a table name or alias name used in the query."
I hope this can help someone with the same problem as mine. Cheers!
what is the js in the first comment before the html
Agree with @Nguyen above- I had this error across Mac and PC, simply restarting the kernel in Jupyter fixed it in both cases.
There is a thread for this bug in Apple Developer Forums: https://developer.apple.com/forums/thread/778471
The error states that in the view ShowRecoveryCodes.cshtml, ShowRecoveryCodesModel could not be resolved to a type or found in a namespace called ShowRecoveryCodesModel. Open the ShowRecoveryCodes.cshtml view and check the ShowRecoveryCodesModel reference.
grep -E '[a-zA-Z]*[[:space:]]foo' <thefilename> | grep -v '?'
I do see this post is quite old, but hope some of you might have an answer for this.
How can we realize the same functionality (display a graph, get clicked points and save it ) for several data sets in a loop. I did manage to do it for one graph but , when i use it in a loop, the python program shows the graphs but I am only able to click and get the points for the last iteration. I did try waiting for user input (via Input command) or putting a sleep after "
klicker = clicker(ax, ["event"], markers=["x"])
" but without any success.
Any leads is appreciated.
I had this same issue, and it turns out I needed to enable the Transaction Services API at the RVC level in Simphony EMC. Their documentation is here: https://docs.oracle.com/en/industries/food-beverage/simphony/19.8/simcg/t_sts_gen2_enable_option.htm
In summary:
Select the revenue center, click Setup, and then click RVC Parameters.
In the Parameters window, click Options.
In the Options section, select 74 - Enable Simphony Transaction Services Gen 2.
Click Save.
It took about 10 minutes before my calls started working after making this adjustment.
I discovered that if you turn off visibility of "level-crossing" under "Road Network" and then publish the style, this will remove the "X"s
See:
https://docs.janusgraph.org/index-backend/elasticsearch/#rest-client-basic-http-authentication
https://docs.janusgraph.org/operations/container/#docker-environment-variables
Combine these two documentation sections and create environment variables like:
janusgraph.index.search.elasticsearch.http.auth.type=basic
The system must be allowed to access the Firebase.
Instead of doing list comprehension, you could use also lambda functions along side map:
>>> mylist = [[1,2,3], 7, [4,5,6], [7,8,9], 5]
>>> list(map(lambda item: item if isinstance(item, list) else \[item\], mylist))
[[1, 2, 3], [7], [4, 5, 6], [7, 8, 9], [5]]
Sorry for necroposting.
DataTable destinationDT = sourceDt.DefaultView.ToTable(false, "columnName");
You can synchronize inline and popup completion in setting general inline completion and check the last one synchronize inline and popup completions
have you updated the gradle version as well as the com.android.application version?
if not, this should allow you to do so:
go to android/settings.gradle and change this line to a more recent version:
id("com.android.application") version "8.7.0" apply false
then go to android/gradle/wrapper/gradle-wrapper.properties and change the version of this line:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
the lines I provide are already up to date for the new versions of flutter.
+1
I have the same issue (for a arm64 arch) and did not find a solution.
Happens for different IDEs (vscode, cursor, goland) so I assume the issue is with the go & dlv.
I also tried to install go with Homebrew, go website, and gvm. None solved the issue.
Damn it, after I posted it, I Just realized I'm using : , not =. Problem is solved.
Solved! I was measuring with the wrong fontfamily.
Now more or less it works
so yes the measuring routine is working properly
I think there is the potential to clean up the pervious answers even further, take a look: const sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue); The arrow function simplifies the function declaration syntax plus there is no need to declare initialValue since we want to just get the sum of the elements from the array of numbers.
Unfortunately, you will find that the BigInteger Class was not built for purpose, and its Modulo arithmetic is as rouge as any secret agent. I built a bespoke application and turns out that not any amount of decryption will be correct after the 1st round. If a message is too long only the 1st round of encryption/decryption will yield accurate results. The longer the message unfortunately, the worse the performance. I tried to ask Oracle to rewrite the BigInteger class as it is flawed significantly, but could not reach them. For more information follow this link: https://www.martinlayooinc.com/Home/Product/checkRSA4096
Just speaking out of context. What I am missing? I am missing! self identity! My self? your self? His Self? their selves? There is a lot of selves in the dark with no correct connection! And What I am seeing is counter clock wise and the world is going clockwise and everyone is going 1 over! Meaning who was closest to God has probably lost their whole life! And everyone else is sitting one over and it was top heavy and flipped all the way over and the dark completely has domain in your whole life and Jesus the begotten can't even get anyone to see the truth because of all these set standards and not understanding begotten! and where this started. Why Saten is playing in Jesus family? because they forgot to stand up for Jesus and playing with the host of the developer instead in Jesus as Comic Books. Trashing who Jesus was. In otherwords.. Jesus(The person who gave up their family life as a Child) on the Street to help the ones Broken in too already. Made them his family. Showed them everything. And here comes that turn again and they forgot who showed them how to fix it. So now Jesus is looking at his/her real family as his/her children and something else is in the body of his/her children and now they want to put a label on Jesus as Crazy! and Jesus is really suffering because Jesus is hearing all this communication at once and cant get anyone to listen but can prove everything. so now it is no longer begotten , it is forgotten what they even did this for. .. Facts, Landmarks are moved. The bible in the United States is no longer studied or allowed in schools. Same as Prayer!.. The United States of America is the promised land and built on God! They started going the wrong way ...... from sovereign to goverment .. they went back to what we left from. Key points = federal lot# the dead! prohibition! Internet! = dead =media ... roming spirits waiting for you to give your child a device so it can have free dom in them since nobody remembers what God made America for! internet= sin! Facts! A whole married home! The couple has 2 children. They decide to get a computer for education. Father is gone to work working. Mom is at home bored and decides to check out her friends from school, gets on facebook. Father comes home mother shows father and he decides to do the same thing. Mom starts talking on chat to some old friends and a old boyfriend msgs her and tells her she looks good. Father sees the msg. Now you have hurt feelings, He reacts in the wrong way and starts talking to some ex girlfriends. Children are just abiding what is going on as they slowly learning the internet by watching mom and dad. Mom and dad are argueing. Mom is now feeling unpretty and starts comparing herself to these women. He has completely shut her out because he is getting attention from them and she is throwing her self at him but he doesn't like the argument or that is what he is stating as he walks in the door 2 hours late. She even excuses it because she is lacking her husband and her self esteem has hit bottom. She searches the computer and finds he has been getting on xxx sites. The couple seperates. She is left with the kids by herself. She is fully stressed and he doesn't do his part with the kids. Grandparents babysit and dad sends iphones for the kids for Christmas. Repeated process. like Simon Peter, Peter, repeater, Saten. You will deny me thrice when the crow crox. Communication... 2 ways. Copy that Roger. Houston, I think we have a problem. Did they forget their are 2 spaces before we start a Paragraph? Father, So n, and holy spirit. aka Corona virus. Something else is in God's place. Does anyone understand what I am saying?
Update the VS code settings
{
"cucumberautocomplete.steps": [
"stepDefinitions/**/**/*.ts"
],
"cucumberautocomplete.syncfeatures": "feature/**/*.feature",
"cucumberautocomplete.strictGherkinCompletion": true
}
Tenable's Audit files are are based on existing security baseline guidance (CIS, MS, etc.)
They are posted to and regularly updated here: https://www.tenable.com/audits
Also, Rubocop doesn't swear when set aggregate_failures and run multiple expectations in one test:
context 'with error', :aggregate_failures do
it 'updates the error list' do
expect(Inquiry.count).to eq(7)
expect(Inquiry.first.error).to eq(error)
end
end
For anyone that is searching for this with no luck. Here is the documentation from MS: Share-Types
the issue is just a typo:
proccessData: false,
# should be
processData: false,
Fix that, and your form with text + file upload via AJAX should work perfectly. 😊
I am experiencing this same issue. As a temporary work-around I had to go back to using the deprecated package. What I can't tell is if it's an MLFlow bug or a databricks-langchain bug. It could be MLFlow is expecting the langchain-databricks package for ChatDatabricks. Or the databricks-langchain package has a messed up dependency.
I figured the issue.
Its because of location mismatch. data residing projects are in the US location but computing project datasets are in other location. So the temp table which is trying to create is having issue because of the location mismatch. its resolved when materialization dataset has provided with the same location as data residing dataset.
For the time being I switched to protols from buf_ls. It does offer Document Symbols view which is a step forward.
For LazyVim I enabled it like such:
{
"williamboman/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
vim.list_extend(opts.ensure_installed, {
-- other LSPs
"protols", -- Protobuf support
})
end,
},
and
{
"neovim/nvim-lspconfig",
-- other stuff
config = function()
require("lspconfig").protols.setup({
cmd = { "protols" },
filetypes = { "proto" },
})
end,
}
Indeed - the <wsdl:service name=""> in the end must be added
The FAS PSD API endpoint you're using only allows two filters: commodityCode and marketYear. The other non-dimensional endpoints also won't take a release date/month parameter.
But, given that the USDA Foreign Agricultural Service is constantly reviewing, amending, and republishing the numbers from past releases, it's not a bad idea to get the full market year.
The solution is to create a Personal Access Token (PAT), then configure git-tf to use your regular username and then use the PAT as the password.
For mui v6 I was able to modify dialog paper styling through slotProps.paper.sx:
<Dialog
slotProps={{
paper: {
sx: {
position: 'absolute',
bottom: 0,
left: 0,
marginBottom: 0,
},
},
}}
/>
I am also facing the same issue, and even when I try to install an older version of Swagger, I still face the same problem.
PS C:\Users\LENOVO\OneDrive\Desktop\practical-round> npm i @nestjs/[email protected]
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: @nestjs/[email protected]
npm ERR! node_modules/@nestjs/common
npm ERR! @nestjs/common@"^10.0.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @nestjs/common@"^9.0.0" from @nestjs/[email protected]
npm ERR! node_modules/@nestjs/swagger
npm ERR! @nestjs/swagger@"6.3.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! C:\Users\LENOVO\AppData\Local\npm-cache_logs\2025-04-08T14_34_57_230Z-eresolve-report.txt
npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\LENOVO\AppData\Local\npm-cache_logs\2025-04-08T14_34_57_230Z-debug-0.log
i have your IP address ( 94.61.124.95 ) the lazy Spanish-speaking, uneducated alkie fisherman, PIDOR.
sql problem, see the solution here
I have the same problem trying to extract the trace_id and span_id from a field called contextMap which is of type Map. No matter what I did, it wouldn't get the data from the fields.
So I ended up copying the context of the map to log.cache(a temporary space where you can do some heavy lifting in) where I could then directly access the fields
- merge_maps(log.cache, log.cache["contextMap"], "upsert") where IsMap(log.cache["contextMap"])
- set(log.attributes["span_id"], log.cache["span_id"]) where IsString(log.cache["span_id"])
- set(log.attributes["trace_id"], log.cache["trace_id"]) where IsString(log.cache["trace_id"])
(FYI: the contextMap is already in log.cache since we send our logs as JSON and have otel parse it into log.cache)
interesting error, I tried to solve it, but I only got it through this method
You need to upload your .jar files to an S3 bucket and then reference them in your Glue job.
Until you migrate them into jobs, Glue notebooks run in an interactive development environment where you have a dedicated Spark session running on a single instance. When you use magic, you're working within this interactive session that has direct internet access (as a default) and can dynamically load dependencies. The notebook environment is more flexible because it's not distributed across multiple nodes and maintains its state throughout the session. This allows for real-time library installations and direct loading of .jar files using magic functions.
You still need to put your .jar files into S3 bucket and then reference it once you convert these interactive sessions into jobs. Otherwise you will get the same error. .jar files loaded using magic in interactive session are only available during the current interactive session's lifecycle.
When you create a Glue job using scripts (or from interactive sessions), the code needs to be accessible to multiple workers that might be running in different locations. S3 serves as the central storage location from which all these workers can access the same script.