04 April, 2024
Running Laravel queue workers for smaller projects
Programing Coderfunda
April 04, 2024
No comments
https://christalks.dev/post/running-laravels-queue-worker-using-a-cron-schedule-696b2e2e
Please do leave any comments, criticisms and constructive feedback! submitted by /u/chrispage1
[link] [comments]
03 April, 2024
Get absolute x,y of a child from the relative x,y of the parent
Programing Coderfunda
April 03, 2024
No comments
HTML:
CSS:
body {
padding: 100px;
background: aqua;
}
.container {
position: relative;
padding: 0 !important;
touch-action: none;
-webkit-user-select: none;
user-select: none;
width: 400px;
height: 400px;
border: 2px solid black;
}
.wrapper {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
padding: 0 !important;
overflow: hidden;
background-color: black;
}
.image {
position: relative;
max-width: none !important;
max-height: none !important;
pointer-events: none;
width: 100%;
height: 100%;
transform: translate(var(--translate-x, 0px), var(--translate-y, 0px)) scale(var(--scale, 0));
--scale: 2;
--translate-x: 170px;
--translate-y: -100px;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
background: red;
}
If you prefer, here is the JSFiddle link.
When I click on the parent (.wrapper element) I will get an x,y. Let's suppose I click on the top right corner (in the example it would be close to the dog's eye). The value I should get relative to this element is something close to (x: 300, y: 0).
However, if we consider the real image (which has dimensions 1000x500) we know that this click region (the dog's left eye) corresponds to x:505 and y:205 (approximately).
What I want is precisely that. From the 5 variables:
* X of the click (relative to parent)
* Y of the click (relative to parent);
* CSS attribute --scale;
* CSS attribute --translate-x;
* CSS attribute --translate-y;
Get the absolute x, y of the image (considering its real size).
Comments:
The image can be moved within the container. For this I am using the Zoomist plugin. It was the only plugin I found that did this behavior of being able to zoom and move the image within a container of a pre-fixed size.
If there is another solution (another plugin for example) that would be better for my purpose, it would be welcome. Basically it all comes down to being able to zoom and move an image within a region and when clicking on a region (that is part of the image) I get its real x,y.
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.plugin.core.PluginRegistry
Programing Coderfunda
April 03, 2024
No comments
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.plugin.core.PluginRegistry
This is the error :
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springframework.data.rest.core.support.UnwrappingRepositoryInvokerFactory.(UnwrappingRepositoryInvokerFactory.java:57)
The following method did not exist:
org.springframework.plugin.core.PluginRegistry.of(Ljava/util/List;)Lorg/springframework/plugin/core/PluginRegistry;
The method's class, org.springframework.plugin.core.PluginRegistry, is available from the following locations:
jar:file:/~/.m2/repository/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE.jar!/org/springframework/plugin/core/PluginRegistry.class
It was loaded from the following location:
file:/~/.m2/repository/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.plugin.core.PluginRegistry
This is my pom.xml :
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.3.0.RELEASE
org.sid
SF-postpros
0.0.1-SNAPSHOT
SF-postpros
Demo project for Spring Boot
1.8
Hoxton.SR4
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-logging
com.h2database
h2
runtime
org.springframework.boot
spring-boot-starter-data-jpa
javax.validation
validation-api
2.0.1.Final
com.querydsl
querydsl-apt
com.querydsl
querydsl-jpa
com.querydsl
querydsl-core
org.springframework.plugin
spring-plugin-core
1.2.0.RELEASE
org.springframework.boot
spring-boot-starter-security
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-netflix-zuul
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.security
spring-security-test
test
org.junit.jupiter
junit-jupiter-engine
test
org.junit.platform
junit-platform-launcher
test
com.google.code.gson
gson
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.core
jackson-core
com.fasterxml.jackson.core
jackson-annotations
io.springfox
springfox-swagger-ui
2.9.2
io.springfox
springfox-swagger2
2.9.2
org.apache.commons
commons-lang3
org.springframework.boot
spring-boot-starter-log4j2
org.springframework.boot
spring-boot-starter-aop
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-data-rest
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-batch
commons-io
commons-io
2.6
org.springframework.boot
spring-boot-starter-websocket
org.webjars
sockjs-client
1.0.2
org.webjars
stomp-websocket
2.3.3
org.webjars
bootstrap
4.1.3
org.webjars
jquery
3.3.1-1
redis.clients
jedis
jar
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-mail
nz.net.ultraq.thymeleaf
thymeleaf-layout-dialect
org.projectlombok
lombok
1.18.4
provided
org.xhtmlrenderer
flying-saucer-pdf
9.1.4
org.apache.pdfbox
pdfbox
2.0.11
org.apache.pdfbox
pdfbox-tools
2.0.11
com.github.jai-imageio
jai-imageio-jpeg2000
1.3.0
net.sf.dozer
dozer
5.5.1
com.google.guava
guava
25.1-jre
org.springframework.cloud
spring-cloud-starter-openfeign
org.springframework.boot
spring-boot-starter-logging
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
com.mysema.maven
apt-maven-plugin
1.1.3
process
target/generated-sources
com.querydsl.apt.jpa.JPAAnnotationProcessor
org.apache.maven.plugins
2.19.1
maven-surefire-plugin
**/*.class
org.junit.platform
junit-platform-surefire-provider
1.0.2
this is my SwaggerConfig.java :
package org.sid.SFpostpros.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Collections;
// TODO: Auto-generated Javadoc
/**
* The Class SwaggerConf.
*/
@Configuration
@EnableSwagger2
public class SwaggerConf implements WebMvcConfigurer {
/**
* Api.
*
* @return the docket
*/
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build().apiInfo(this.custInfo());
}
/**
* Cust info.
*
* @return the api info
*/
public ApiInfo custInfo() {
return new ApiInfo("Test", // Title
"Spring Boot Services", // Description
"1.0", // Version
"TOS", // Terms of Service
new Contact("Test", "Test.com", "test@test.com"), // Contact
"Test license", // License
"License", Collections.emptyList());
}
/**
* Adds the resource handlers.
*
* @param registry the registry
*/
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
Can someone help me because i tried so many things and nothing worked.
i am providing src to Image tag by array of object but it is showing blank page rather showing images . have i done anything wrong here?
Programing Coderfunda
April 03, 2024
No comments
import Image from 'next/image'
import "./work.scss"
function Work() {
const workObject = [
{
path: "/work/1.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/2.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/3.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/4.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/6.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/7.webp",
desc:"Maccabi Tzair"
},
{
path: "/work/1.webp",
desc:"Maccabi Tzair"
},
]
return (
{workObject.map((obj) => {
})}
)
}
export default Work
i am providing src to Image tag by array of object but it is showing blank page rather showing images . have i done anything wrong here?please help i am trying it from an hour now
i am using next'js to build a image container it'll show on button clicked
Step-by-step guide to linking gnuplot to Octave within Virtual Studio Code (VSC)
Programing Coderfunda
April 03, 2024
No comments
Now, there are different files with that name (here). In Windows 11 and Octave 8.3.0 keeps two files in here:
I tried opening them with Notepad, and inserting the phrase graphics_toolkit("gnuplot") at the end, but I haven't been able to later save the file in any form due to lack of admin privileges even in my own laptop at home and logging in as admin (going to cmd line and setting up an admin profile just for this with net user administrator /active:yes).
Unfortunately, the extensions for Octave in VSC do not have too many preference options to link to gnuplot.
I am not sure how to set up a new .octaverc file in the working directory. Would it be for each folder? Would it be a text file? Would I find the wd from inside VSC? Would it also have to have the . of hidden file in the name? Would it bear an extension, such as .txt?
So I am lost and wasting a ton of time on an issue that is probably easy to solve with some more detailed steps.
Best Authentication Practice for Next.js (app router) with Laravel API
Programing Coderfunda
April 03, 2024
No comments
[link] [comments]
02 April, 2024
Add extensions to Laravel Herd without Homebrew
Programing Coderfunda
April 02, 2024
No comments
Using Timeframe parameters Pinescript indicator
Programing Coderfunda
April 02, 2024
No comments
I don't know what is the exact function to use and where into to code ?
Here is the code that I use :
//@version=5
indicator("Test Auto Fib Retracement", overlay=true)
devTooltip = "Deviation is a multiplier that affects how much the price should deviate from the previous pivot in order for the bar to become a new pivot."
depthTooltip = "The minimum number of bars that will be taken into account when calculating the indicator."
// pivots threshold
threshold_multiplier = input.float(title="Deviation", defval=3, minval=0, tooltip=devTooltip)
depth = input.int(title="Depth", defval=10, minval=2, tooltip=depthTooltip)
reverse = input(false, "Reverse", display = display.data_window)
var extendLeft = input(false, "Extend Left | Extend Right", inline = "Extend Lines")
var extendRight = input(true, "", inline = "Extend Lines")
var extending = extend.none
if extendLeft and extendRight
extending := extend.both
if extendLeft and not extendRight
extending := extend.left
if not extendLeft and extendRight
extending := extend.right
prices = input(false, "Show Prices", display = display.none)
levels = input(false, "Show Levels", inline = "Levels", display = display.none)
levelsFormat = input.string("Values", "", options = ["Values", "Percent"], inline = "Levels", display = display.none)
labelsPosition = input.string("Left", "Labels Position", options = ["Left", "Right"], display = display.none)
var int backgroundTransparency = input.int(85, "Background Transparency", minval = 0, maxval = 100, display = display.none)
import TradingView/ZigZag/7 as zigzag
update()=>
var settings = zigzag.Settings.new(threshold_multiplier, depth, color(na), false, false, false, false, "Absolute", true)
var zigzag.ZigZag zigZag = zigzag.newInstance(settings)
var zigzag.Pivot lastP = na
var float startPrice = na
var float height = na
settings.devThreshold := ta.atr(10) / close * 100 * threshold_multiplier
if zigZag.update()
lastP := zigZag.lastPivot()
if not na(lastP)
var line lineLast = na
if na(lineLast)
lineLast := line.new(lastP.start, lastP.end, xloc=xloc.bar_time, color=color.gray, width=1, style=line.style_dashed)
else
line.set_first_point(lineLast, lastP.start)
line.set_second_point(lineLast, lastP.end)
startPrice := reverse ? lastP.start.price : lastP.end.price
endPrice = reverse ? lastP.end.price : lastP.start.price
height := (startPrice > endPrice ? -1 : 1) * math.abs(startPrice - endPrice)
[lastP, startPrice, height]
[lastP, startPrice, height] = update()
_draw_line(price, col) =>
var id = line.new(lastP.start.time, lastP.start.price, time, price, xloc=xloc.bar_time, color=col, width=1, extend=extending)
line.set_xy1(id, lastP.start.time, price)
line.set_xy2(id, lastP.end.time, price)
id
_draw_label(price, txt, txtColor) =>
x = labelsPosition == "Left" ? lastP.start.time : not extendRight ? lastP.end.time : time
labelStyle = labelsPosition == "Left" ? label.style_label_right : label.style_label_left
align = labelsPosition == "Left" ? text.align_right : text.align_left
labelsAlignStrLeft = txt + '\n \n'
labelsAlignStrRight = ' ' + txt + '\n \n'
labelsAlignStr = labelsPosition == "Left" ? labelsAlignStrLeft : labelsAlignStrRight
var id = label.new(x=x, y=price, xloc=xloc.bar_time, text=labelsAlignStr, textcolor=txtColor, style=labelStyle, textalign=align, color=#00000000)
label.set_xy(id, x, price)
label.set_text(id, labelsAlignStr)
label.set_textcolor(id, txtColor)
_wrap(txt) =>
"(" + str.tostring(txt, format.mintick) + ")"
_label_txt(level, price) =>
l = levelsFormat == "Values" ? str.tostring(level) : str.tostring(level * 100) + "%"
(levels ? l : "") + (prices ? _wrap(price) : "")
_crossing_level(series float sr, series float r) =>
(r > sr and r < sr[1]) or (r < sr and r > sr[1])
processLevel(bool show, float value, color colorL, line lineIdOther) =>
float m = value
r = startPrice + height * m
crossed = _crossing_level(close, r)
if show and not na(lastP)
lineId = _draw_line(r, colorL)
_draw_label(r, _label_txt(m, r), colorL)
if crossed
alert("Autofib: " + syminfo.ticker + " crossing level " + str.tostring(value))
if not na(lineIdOther)
linefill.new(lineId, lineIdOther, color = color.new(colorL, backgroundTransparency))
lineId
else
lineIdOther
show_0 = input(true, "", inline = "Level0", display = display.data_window)
value_0 = input(0, "", inline = "Level0", display = display.data_window)
color_0 = input(#2862ff, "", inline = "Level0", display = display.data_window)
show_0_236 = input(false, "", inline = "Level0", display = display.data_window)
value_0_236 = input(0.236, "", inline = "Level0", display = display.data_window)
color_0_236 = input(#f44336, "", inline = "Level0", display = display.data_window)
show_0_382 = input(false, "", inline = "Level1", display = display.data_window)
value_0_382 = input(0.382, "", inline = "Level1", display = display.data_window)
color_0_382 = input(#81c784, "", inline = "Level1", display = display.data_window)
show_0_5 = input(true, "", inline = "Level1", display = display.data_window)
value_0_5 = input(0.5, "", inline = "Level1", display = display.data_window)
color_0_5 = input(#2862ff, "", inline = "Level1", display = display.data_window)
show_0_618 = input(true, "", inline = "Level2", display = display.data_window)
value_0_618 = input(0.618, "", inline = "Level2", display = display.data_window)
color_0_618 = input(#9698a1, "", inline = "Level2", display = display.data_window)
show_0_65 = input(false, "", inline = "Level2", display = display.data_window)
value_0_65 = input(0.65, "", inline = "Level2", display = display.data_window)
color_0_65 = input(#009688, "", inline = "Level2", display = display.data_window)
show_0_786 = input(true, "", inline = "Level3", display = display.data_window)
value_0_786 = input(0.786, "", inline = "Level3", display = display.data_window)
color_0_786 = input(#ff9800, "", inline = "Level3", display = display.data_window)
show_1 = input(true, "", inline = "Level3", display = display.data_window)
value_1 = input(1, "", inline = "Level3", display = display.data_window)
color_1 = input(#f23645, "", inline = "Level3", display = display.data_window)
show_1_272 = input(false, "", inline = "Level4", display = display.data_window)
value_1_272 = input(1.272, "", inline = "Level4", display = display.data_window)
color_1_272 = input(#81c784, "", inline = "Level4", display = display.data_window)
show_1_414 = input(false, "", inline = "Level4", display = display.data_window)
value_1_414 = input(1.414, "", inline = "Level4", display = display.data_window)
color_1_414 = input(#f44336, "", inline = "Level4", display = display.data_window)
show_1_618 = input(false, "", inline = "Level5", display = display.data_window)
value_1_618 = input(1.618, "", inline = "Level5", display = display.data_window)
color_1_618 = input(#2962ff, "", inline = "Level5", display = display.data_window)
show_1_65 = input(false, "", inline = "Level5", display = display.data_window)
value_1_65 = input(1.65, "", inline = "Level5", display = display.data_window)
color_1_65 = input(#2962ff, "", inline = "Level5", display = display.data_window)
show_2_618 = input(false, "", inline = "Level6", display = display.data_window)
value_2_618 = input(2.618, "", inline = "Level6", display = display.data_window)
color_2_618 = input(#f44336, "", inline = "Level6", display = display.data_window)
show_2_65 = input(false, "", inline = "Level6", display = display.data_window)
value_2_65 = input(2.65, "", inline = "Level6", display = display.data_window)
color_2_65 = input(#f44336, "", inline = "Level6", display = display.data_window)
show_3_618 = input(false, "", inline = "Level7", display = display.data_window)
value_3_618 = input(3.618, "", inline = "Level7", display = display.data_window)
color_3_618 = input(#9c27b0, "", inline = "Level7", display = display.data_window)
show_3_65 = input(false, "", inline = "Level7", display = display.data_window)
value_3_65 = input(3.65, "", inline = "Level7", display = display.data_window)
color_3_65 = input(#9c27b0, "", inline = "Level7", display = display.data_window)
show_4_236 = input(false, "", inline = "Level8", display = display.data_window)
value_4_236 = input(4.236, "", inline = "Level8", display = display.data_window)
color_4_236 = input(#e91e63, "", inline = "Level8", display = display.data_window)
show_4_618 = input(false, "", inline = "Level8", display = display.data_window)
value_4_618 = input(4.618, "", inline = "Level8", display = display.data_window)
color_4_618 = input(#81c784, "", inline = "Level8", display = display.data_window)
show_neg_0_236 = input(false, "", inline = "Level9", display = display.data_window)
value_neg_0_236 = input(-0.236, "", inline = "Level9", display = display.data_window)
color_neg_0_236 = input(#f44336, "", inline = "Level9", display = display.data_window)
show_neg_0_382 = input(false, "", inline = "Level9", display = display.data_window)
value_neg_0_382 = input(-0.382, "", inline = "Level9", display = display.data_window)
color_neg_0_382 = input(#81c784, "", inline = "Level9", display = display.data_window)
show_neg_0_618 = input(false, "", inline = "Level10", display = display.data_window)
value_neg_0_618 = input(-0.618, "", inline = "Level10", display = display.data_window)
color_neg_0_618 = input(#009688, "", inline = "Level10", display = display.data_window)
show_neg_0_65 = input(false, "", inline = "Level10", display = display.data_window)
value_neg_0_65 = input(-0.65, "", inline = "Level10", display = display.data_window)
color_neg_0_65 = input(#009688, "", inline = "Level10", display = display.data_window)
lineId0 = processLevel(show_neg_0_65, value_neg_0_65, color_neg_0_65, line(na))
lineId1 = processLevel(show_neg_0_618, value_neg_0_618, color_neg_0_618, lineId0)
lineId2 = processLevel(show_neg_0_382, value_neg_0_382, color_neg_0_382, lineId1)
lineId3 = processLevel(show_neg_0_236, value_neg_0_236, color_neg_0_236, lineId2)
lineId4 = processLevel(show_0, value_0, color_0, lineId3)
lineId5 = processLevel(show_0_236, value_0_236, color_0_236, lineId4)
lineId6 = processLevel(show_0_382, value_0_382, color_0_382, lineId5)
lineId7 = processLevel(show_0_5, value_0_5, color_0_5, lineId6)
lineId8 = processLevel(show_0_618, value_0_618, color_0_618, lineId7)
lineId9 = processLevel(show_0_65, value_0_65, color_0_65, lineId8)
lineId10 = processLevel(show_0_786, value_0_786, color_0_786, lineId9)
lineId11 = processLevel(show_1, value_1, color_1, lineId10)
lineId12 = processLevel(show_1_272, value_1_272, color_1_272, lineId11)
lineId13 = processLevel(show_1_414, value_1_414, color_1_414, lineId12)
lineId14 = processLevel(show_1_618, value_1_618, color_1_618, lineId13)
lineId15 = processLevel(show_1_65, value_1_65, color_1_65, lineId14)
lineId16 = processLevel(show_2_618, value_2_618, color_2_618, lineId15)
lineId17 = processLevel(show_2_65, value_2_65, color_2_65, lineId16)
lineId18 = processLevel(show_3_618, value_3_618, color_3_618, lineId17)
lineId19 = processLevel(show_3_65, value_3_65, color_3_65, lineId18)
lineId20 = processLevel(show_4_236, value_4_236, color_4_236, lineId19)
lineId21 = processLevel(show_4_618, value_4_618, color_4_618, lineId20)
I made this code, but I am not understanding how JavaScript is handling the swapping??? (I have seen this before in an article but didnt explain)
Programing Coderfunda
April 02, 2024
No comments
I have never been able to find a clear article explanation of what arrays do behind the scenes when swapping numbers (I think this is a short way of replacing values, if im not wrong).
const swapNumbers = (numbers: number[]) => {
const swap = numbers.map((x: number, index: number) =>
index % 2 !== 0 ? numbers[index - 1] : index === numbers.length - 1 && numbers.length % 2 !== 0 ? numbers[index] : numbers[index + 1]);
console.log(swap);
};
swapNumbers([1, 2, 3, 4]);
swapNumbers([1, 2, 5, 6, 8]);
I want to understand what this is exactly doing (I want to understand the long way)... is this numbers[index + 1] (short way, which is placing the next number in line) the same as this (long way) numbers[index + 1] = numbers[index] or numbers[index + 1] = x?
What is the condition to be able to do this? (is it only in maps and other es6 functions? or can I use this in a regular for loop e.g. numbers[index - 1];?)
After upgrade to V11 from V10, all routes disappeared and no images are shown
Programing Coderfunda
April 02, 2024
No comments
as i wrote in the title, after upgraded to V11, all my routes disappeared and no images are shown.
It seems like the framework cannot get the right path...
I am testing it on wamp, another project didn't have this issue.
I have installed (and use) spatie permission plugin, but even if i disable it, nothing changes.
Anybody had this problem? submitted by /u/djsnake81
[link] [comments]
Different types of Integer division in Python
Programing Coderfunda
April 02, 2024
No comments
int(x / y)
x // y
If so, which is better to use in real application? And why?
P.S. Are there any other methods in Python that achieve similar result but more suitable in different use cases? For example, if y is 2^n, then we can do bitwise shifting - that's all I know.
01 April, 2024
possible to delete a mongodb catch block
Programing Coderfunda
April 01, 2024
No comments
DB.insertOne(something).then( (r) =>
{
done({success:true});
}).catch( (e) =>
{
done({success:false, message:e.code});
});
My question - is it possible to delete the catch block, once the insert command has successfully completed? I want to do this because I do not want the mongodb .catch() block executing when irrelevant and unrelated events crash occur down the line. I am looking for something like this.
DB.insertOne(something).then( (r) =>
{
delete this.catch;//does not work
done({success:true});
}).catch( (e) =>
{
done({success:false, message:e.code});
});
note also that I do need the catch block in general. I need the catch block to execute once - for example if the insert command were to return an error for attempting to insert the same document with the same ._id (for example).
Predicting on new data using locally weighted regression (LOESS/LOWESS)
Programing Coderfunda
April 01, 2024
No comments
There is statsmodels.nonparametric.smoothers_lowess.lowess, but it returns the estimates only for the original data set; so it seems to only do fit and predict together, rather than separately as I expected.
scikit-learn always has a fit method that allows the object to be used later on new data with predict; but it doesn't implement lowess.
Audit services?
Programing Coderfunda
April 01, 2024
No comments
A little April Fools' fun from a shifty Shift
Programing Coderfunda
April 01, 2024
No comments
Creating Your Own PHP Helpers in a Laravel Project
Programing Coderfunda
April 01, 2024
No comments
Laravel provides many excellent helper functions that are convenient for doing things like working with arrays, file paths, strings, and routes, among other things like the beloved dd() function.
You can also define your own set of helper functions for your Laravel applications and PHP packages, by using Composer to import them automatically.
If you are new to Laravel or PHP, let’s walk through how you might go about creating your own helper functions that automatically get loaded by Laravel.
Creating a Helpers file in a Laravel App
The first scenario you might want to include your helper functions is within the context of a Laravel application. Depending on your preference, you can organize the location of your helper file(s) however you want, however, here are a few suggested locations:
*
app/helpers.php
*
app/Http/helpers.php
I prefer to keep mine in app/helpers.php in the root of the application namespace.
Autoloading
To use your PHP helper functions, you need to load them into your program at runtime. In the early days of my career, it wasn’t uncommon to see this kind of code at the top of a file:
require_once ROOT . '/helpers.php';
PHP functions cannot be autoloaded. However, we have a much better solution through Composer than using require or require_once.
If you create a new Laravel project, you will see an autoload and autoload-dev keys in the composer.json file:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
If you want to add a helpers file, composer has a files key (which is an array of file paths) that you can define inside of autoload:
"autoload": {
"files": [
"app/helpers.php"
],
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
Once you add a new path to the files array, you need to dump the autoloader:
composer dump-autoload
Now on every request the helpers.php file will be loaded automatically because Laravel requires Composer’s autoloader in public/index.php:
require __DIR__.'/../vendor/autoload.php';
Defining Functions
Defining functions in your helpers class is the easy part, although, there are a few caveats. All of the Laravel helper files are wrapped in a check to avoid function definition collisions:
if (! function_exists('env')) {
function env($key, $default = null) {
// ...
}
}
This can get tricky, because you can run into situations where you are using a function definition that you did not expect based on which one was defined first.
I prefer to use function_exists checks in my application helpers, but if you are defining helpers within the context of your application, you could forgo the function_exists check.
By skipping the check, you’d see collisions any time your helpers are redefining functions, which could be useful.
In practice, collisions don’t tend to happen as often as you’d think, and you should make sure you’re defining function names that aren’t overly generic. You can also prefix your function names to make them less likely to collide with other dependencies.
Helper Example
I like the Rails path and URL helpers that you get for free when defining a resourceful route. For example, a photos resource route would expose route helpers like new_photo_path, edit_photo_path`, etc.
When I use resource routing in Laravel, I like to add a few helper functions that make defining routes in my templates easier. In my implementation, I like to have a URL helper function that I can pass an Eloquent model and get a resource route back using conventions that I define, such as:
create_route($model);
edit_route($model);
show_route($model);
destroy_route($model);
Here’s how you might define a show_route in your app/helpers.php file (the others would look similar):
if (! function_exists('show_route')) {
function show_route($model, $resource = null)
{
$resource = $resource ?? plural_from_model($model);
return route("{$resource}.show", $model);
}
}
if (! function_exists('plural_from_model')) {
function plural_from_model($model)
{
$plural = Str::plural(class_basename($model));
return Str::kebab($plural);
}
}
The plural_from_model() function is just some reusable code that the helper route functions use to predict the route resource name based on a naming convention that I prefer, which is a kebab-case plural of a model.
For example, here’s an example of the resource name derived from the model:
$model = new App\LineItem;
plural_from_model($model);
// => line-items
plural_from_model(new App\User);
// => users
Using this convention you’d define the resource route like so in routes/web.php:
Route::resource('line-items', 'LineItemsController');
Route::resource('users', 'UsersController');
And then in your blade templates, you could do the following:
{{ $lineItem->name }}
Which would produce something like the following HTML:
Line Item #1
Packages
Your Composer packages can also use a helpers file for any helper functions you want to make available to projects consuming your package.
You will take the same approach in the package’s composer.json file, defining a files key with an array of your helper files.
It’s imperative that you add function_exists() checks around your helper functions so that projects using your code don’t break due to naming collisions.
You should choose proper function names that are unique to your package, and consider using a short prefix if you are afraid your function name is too generic.
Learn More
Check out Composer’s autoloading documentation to learn more about including files, and general information about autoloading classes.
The post Creating Your Own PHP Helpers in a Laravel Project appeared first on Laravel News.
Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.
31 March, 2024
There are two solutions for one board, using different chips. But one of their i2c address is the same. How to resolve conflict in one dts?
Programing Coderfunda
March 31, 2024
No comments
i2cdetect -r -y 10
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- UU -- UU -- UU -- UU --
60: UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
i2cdetect -r -y 9
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- 28 -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- UU 62 UU -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- UU -- UU UU -- --
Hardware can't modify the address. If two dts are used, there will be two firmwares, which is inconvenient.
How to properly integrate against 3rd party services
Programing Coderfunda
March 31, 2024
No comments
Weekly /r/Laravel Help Thread
Programing Coderfunda
March 31, 2024
No comments
* What steps have you taken so far?
* What have you tried from the documentation?
* Did you provide any error messages you are getting?
* Are you able to provide instructions to replicate the issue?
* Did you provide a code example?
* Please don't post a screenshot of your code. Use the code block in the Reddit text editor and ensure it's formatted correctly.
For more immediate support, you can ask in the official Laravel Discord.
Thanks and welcome to the /r/Laravel community! submitted by /u/AutoModerator
[link] [comments]
Positioning agent randomly within GIS space
Programing Coderfunda
March 31, 2024
No comments
Each 'Person' has a parameter 'region' which into which I map the value of the 'region' column in my table to. I then need to find some way to set the position of the agent to a random point inside the assigned region.
I have tried:
GISRegion myRegion = main.map.searchFirstRegion(region);
Point pt = myRegion.randomPointInside();
setXYZ( pt.x, pt.y, pt.z );
in the "On startup" field for my Person Agent but it seems that main.map.searchFirstRegion(region); does not do a good job of getting the correct region, as agents are distributed in places where there is no region (i.e in the sea):
Image
Ideally, I would like to use void setLocation(region) but setLocation takes in a Point or INode variable whereas the 'region' parameter is a string. Is there a way to search the list of regions by name for the matching region and return that region?
Thanks!
Laravel Google Api
Programing Coderfunda
March 31, 2024
No comments
30 March, 2024
python valueerror : too many values to unpack
Programing Coderfunda
March 30, 2024
No comments
def main():
print ( " This program computes the average of two exam scores . ")
score1,score2 = input ("Enter two scores separated by a comma:")
average = (score1 + score2)/2.0
print ("The average of the score is : " , average )
when I summon the main() I got this ValueError :
ValueError: too many values to unpack (expected 2)
what is wrong with this code ?
storing std::reference_wrapper into std::set
Programing Coderfunda
March 30, 2024
No comments
Dijkstra’s Algorithm negative edges
Programing Coderfunda
March 30, 2024
No comments
expo DocumentPicker is not selecting any document
Programing Coderfunda
March 30, 2024
No comments
import React, { useState } from "react";
import { Button, StyleSheet, Text, View } from "react-native";
import * as DocumentPicker from "expo-document-picker";
export default function App() {
const [document, setDocument] = useState(null);
const pickDocument = async () => {
const result = await DocumentPicker.getDocumentAsync({ type: 'application/pdf' });
if (result.type === "success") {
setDocument(result);
}
};
return (
Selected Document: {document ? document.name : "None"}
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center",
padding: 20,
},
paragraph: {
marginTop: 24,
fontSize: 18,
fontWeight: "bold",
textAlign: "center",
},
});
How to get the json object with Typescript?
Programing Coderfunda
March 30, 2024
No comments
And Is there better way to get the job via firebase rest api?
This is my code:
{
"0": {
"category_id": 0,
"created_on": "Mar 29, 2024",
"description": "Dolor justo tempor duo ipsum accusam rebum gubergren erat. Elitr stet dolor vero clita labore gubergren. Kasd sed ipsum elitr clita rebum ut sea diam tempor. Sadipscing nonumy vero labore invidunt dolor sed, eirmod dolore amet aliquyam consetetur lorem, amet elitr clita et sed consetetur dolore accusam.",
"job_id": "TEL5UAVd5b3Q4jLY2aFfWs4QneMO",
"job_nature": "Full-time",
"location": "Gabrovo, Bulgaria",
"qualifications": [
"Rebum vero dolores dolores elitr",
"Elitr stet dolor vero clita labore gubergren",
"Dolor justo tempor duo ipsum accusam"
],
"salary": "$1500-$1900",
"title": "Marketing manager",
"user_id": "qDDuvTWL00N2sNXPhMy2rE0ZB8w2"
}
}
export class JobDetailComponent implements OnInit {
job = {} as Job;
constructor(
private apiService: ApiService,
private activeRoute: ActivatedRoute
) { }
ngOnInit(): void {
this.activeRoute.params.subscribe((data) => {
const id = data['jobId'];
this.apiService.getJob(id).subscribe((job) => {
this.job = job;
console.log(job)
});
});
}
}
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from 'src/environments/environment.development';
import { Category } from './types/category';
import { Job } from './types/job';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: HttpClient) { }
getCategories() {
const { apiUrl } = environment;
return this.http.get(`${apiUrl}/categories.json`);
}
getJobs() {
const { apiUrl } = environment;
return this.http.get(`${apiUrl}/jobs.json`);
}
getJob(id: string) {
const { apiUrl } = environment;
return this.http.get(`${apiUrl}/jobs.json?orderBy="job_id"&equalTo="${id}"`);
}
}
29 March, 2024
Boost Your Laravel Forge Productivity 🚀
Programing Coderfunda
March 29, 2024
No comments
Suppress default message of assert_eq! when custom message provided?
Programing Coderfunda
March 29, 2024
No comments
Here I'm comparing some very long strs. So it is preferable not to clutter up the console but instead take a limited slice of each.
let left = tds.get_bulk_post_str();
let error_msg = format!("Bulk text is not what is expected: get_bulk_post_str() starts\n{}...\n\nExpected text starts\n{}...\n",
&left[0..20], &expected_bulk_text[0..20]);
// assert_eq! not used because assert_eq! apparently does not suppress its default message even when you supply a custom message!
// ... and in this case the default message is far too long.
// assert_eq!(left, expected_bulk_text, "{}", error_msg);
// instead, I think I'm forced to do something like this:
if left != expected_bulk_text {
panic!("{}", error_msg)
}
... is there any way of suppressing the default message?
If not, this seems a strange design choice, unlike any other language I know. Is it deliberate?
PS I'm aware the first 20 chars of each string might be identical. Obviously if I really wanted to go to town on this I'd have to examine both strings to find out the first case of difference, and just print corresponding slices from the middle.
Bidimensional splines, strictly increasing in one argument
Programing Coderfunda
March 29, 2024
No comments
I want to use bidimensional splines but I don't know how to do (how to impose the monotonicity constraint in 2D).
So far, my method is to select several values of Y, and for each values of Y, I compute a monotone splines with respect to X. And then I interpolate to create the whole function q. But I wonder if it was possible to do all this in 1 step?





