[Feature] Add a google language translator in the website.

Description
I wish to add a google language translator.
Screenshots

Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (optional)

Congratulations, @ParnaRoyChowdhury777! 🎉 Thank you for creating your issue. Your contribution is greatly appreciated and we look forward to working with you to resolve the issue. Keep up the great work!We will promptly review your changes and offer feedback. Keep up the excellent work! Kindly remember to check our contributing guidelines

Okay Go ahead :)
Add this in Footer @ParnaRoyChowdhury777

Closing as no update

Closing as no update

I was occupied with many projects. I can send the PR today.

Closing as no update

I was occupied with many projects. I can send the PR today.

Okay, mone kore PR drop kore dishh by EOD. @ParnaRoyChowdhury777

Haa kore dichhi


Update sbt-dependency-tree to 1.9.5

About this PR
📦 Updates org.scala-sbt:sbt-dependency-tree from 1.8.2 to 1.9.5
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scala-sbt", artifactId = "sbt-dependency-tree" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scala-sbt", artifactId = "sbt-dependency-tree" }
}]

labels: sbt-plugin-update, early-semver-minor, semver-spec-minor, version-scheme:early-semver, commit-count:1

Superseded by #59.


Classification Based CPD

Generalization of KNN based CPD algorithm: Classification Based CPD
Implementation of SVM, RF, KNN (scikit), Decision Tree, Logistic Regression classifiers for cpd
KNN classifier quality function optimization
Examples of classification based cpd and KNN based cpd usage

Also don't forget to add info about new algorithms in README.md


How to Connect Multiple ESP32 (MEGH-5123)

Is your feature request related to a problem?
No response
Describe the solution you'd like.
How to Connect Multiple ESP32 with each other, while both are connected to same wifi network, One has Some Binary Sensor, While Other Device is connected to a Light, Based on Sensor Data, Light Should Turn on or Off, also it should work fine if internet is not present.
Describe alternatives you've considered.
No response
Additional context.
No response

ESP RainMaker does not support offline event based triggers. The RainMaker automation framework requires Internet connectivity. However, you can use Matter (either pure matter or RainMaker + Matter) devices to achieve this functionality using the concept of "Matter Bindings" in ESP RainMaker app.


[FLOC-3909] Merge release/flocker-1.9.0 into master

This PR resolves the merge conflicts from the release/flocker-1.9.0 branch.

LGTM. Thanks.


Figure out weighted aggregation

Here is a reprex:
library(sf)
library(dplyr)

x_raw <- read_sf("data-raw/geojson/intersection_example_simple.geojson") |>
  sf::st_transform(27700)
y_raw <- read_sf("data-raw/geojson/intersection_example_complex.geojson") |>
  sf::st_transform(27700)

# perform match
mtx <- rnetmatch::rnet_match(x_raw, y_raw, 50, 15)

# aggregate weighting Yj by shared_len / yj_len
# i think this is the correct approach b/c we determine the amount of
# shared length on x and we want to add attributes from y.
# we weight attr from y based the shared length. The weight should be
# yj_val * (shared_len / yj_len)
mtx |>
  as_tibble() |>
  left_join(
    y_raw |>
      st_drop_geometry() |>
      mutate(, j = row_number()) |>
      select(j, commute_quietest_bicycle_go_dutch)
  ) |>
  arrange(i, j) |>
  mutate(
    x_len = st_length(x_raw)[i],
    y_len = st_length(y_raw)[j]
  ) |>
  mutate(wt = shared_len / y_len) |>
  print() |> # print the intermediate obj
  group_by(i) |>
  summarise(
    weighted_shared = sum(wt * commute_quietest_bicycle_go_dutch, na.rm = TRUE)
  )
#> Joining with `by = join_by(j)`
#> # A tibble: 73 × 7
#> i     j shared_len commute_quietest_bicycle_go_dutch x_len   y_len     wt
#> <int> <int>      <dbl>                             <dbl>   [m]     [m]  [1/m]
#> 1     1     8      78.3                                 90  78.3   78.3  1.00
#> 2     1    10       0                                   97  78.3    7.82 0
#> 3     1    30      36.0                               2004  78.3  551.   0.0652
#> 4     2     1       7.50                                 8  92.3   82.0  0.0914
#> 5     2     2      43.4                                  8  92.3   51.0  0.850
#> 6     2     9      92.3                                 90  92.3   92.3  1.00
#> 7     2    21      35.8                                  0  92.3  133.   0.268
#> 8     2    30      15.2                               2004  92.3  551.   0.0275
#> 9     2    31       0                                 2094  92.3 1237.   0
#> 10     3     1      83.7                                  8 551.    82.0  1.02
#> # ℹ 63 more rows
#> # ℹ Use `print(n = ...)` to see more rows
#> # A tibble: 11 × 2
#> i weighted_shared
#> <int>           [1/m]
#> 1     1           221.
#> 2     2           153.
#> 3     3          2201.
#> 4     4          2095.
#> 5     5          1032.
#> 6     6           686.
#> 7     7           200.
#> 8     8           237.
#> 9     9           138.
#> 10    10            59.1
#> 11    11             0

Well stated and we need to work this one out..

Check on the stplanr::rnet_merge() implementation:
> sum(rnet_merged$commute_fastest_bicycle_go_dutch * sf::st_length(rnet_merged$geometry))
1758359 [m]
> # And for the complex network:
> sum(rnet_yp$commute_fastest_bicycle_go_dutch * sf::st_length(rnet_yp$geometry))
1758359 [m]

That's because we hardcode it to be so... That doesn't answer the immediate question but may be relevant here, if the total distance travelled in fixed it becomes more about how we distribute the values. Although for the test datasets there should be an unambiguous right answer.

Reprex: code just above this bit:
https://github.com/nptscot/rnetmatch/blob/85b123ea3139435556870b91f5c53634024af378/r/demo.qmd#L70

Will take a look later this evening..

I'm not sure what this tells us, but compared to stplanr.
This approximate network match algo is calculating the "shared overlap" between two line segments  with regard to rnet_xp in this case. So we can use the value of shared length to give us the value of y scaled by the length  of overlap. Whereas stplanr is giving us an average of all values
library(sf)
library(dplyr)

rnet_xp <- read_sf("data-raw/geojson/intersection_example_simple.geojson") |>
  sf::st_transform(27700)
rnet_yp <- read_sf("data-raw/geojson/intersection_example_complex.geojson") |>
  sf::st_transform(27700)

dist = 10
angle = 5

# determine aggrgate functions based on var name
cnames <- colnames(st_drop_geometry(rnet_yp))
funs <- ifelse(
   cnames %in% c("Gradient", "Quietness"),
  list(mean), list(sum)
) |> setNames(cnames)

rnet_merged = stplanr::rnet_merge(
  rnet_xp,
  rnet_yp,
  dist = dist,
  funs = funs,
  max_angle_diff = angle,
  segment_length = 10
)  |>
  mutate(i = row_number())

mtx <- rnet_match(rnet_xp, rnet_yp, 10, 5)

library(dplyr)
# aggregate weighting Yj by shared_len / yj_len
# i think this is the correct approach b/c we determine the amount of
# shared length on x and we want to add attributes from y.
# we weight attr from y based the shared length. The weight should be
# yj_val * (shared_len / yj_len)
mtx |>
  as_tibble() |>
  left_join(
    rnet_yp |>
      st_drop_geometry() |>
      mutate(j = row_number()) |>
      select(j, commute_quietest_bicycle_go_dutch)
  ) |>
  arrange(i, j) |>
  mutate(
    x_len = st_length(rnet_xp)[i],
    y_len = st_length(rnet_yp)[j]
  ) |>
  mutate(wt = shared_len / y_len) |>
  group_by(i) |>
  summarise(
    weighted_shared = sum(wt * commute_quietest_bicycle_go_dutch, na.rm = TRUE),
    total = sum(commute_quietest_bicycle_go_dutch),
    mean = mean(commute_quietest_bicycle_go_dutch)
  ) |>
  left_join(
    st_drop_geometry(rnet_merged[c("i", "commute_quietest_bicycle_go_dutch")]),
    by = "i"
  )
 #> # A tibble: 10 × 5
#> i weighted_shared total   mean commute_quietest_bicycle_go_dutch
#> <int>           [1/m] <dbl>  <dbl>                             <dbl>
#> 1     1           90.0    187   93.5                             NA
#> 2     2           90.0     90   90                               23.0
#> 3     3         2004.    2004 2004                             2562.
#> 4     4         2094.    2094 2094                             1900.
#> 5     5          344.     396   56.6                             32.2
#> 6     6           29.8   2028  406.                               1.53
#> 7     7           84.7    386   96.5                             23.5
#> 8     8          129.     184   61.3                              2.92
#> 9     9           55.3    265  132.                             154.
#> 10    10            4.91    13   13                                6.01

For categorical variables we can report proportion per-class in a wide format.
For numeric variables we can provide a weighted sum. Additional options should be handled by the user. Vignette describing how to do so can be provided.

#26 seems to go a long way towards that, and I think gives people flexibility to aggregate as they want.

One question I've got on this, using the example from #27, how is the value of the middle line 4 not 5?
It's surrounded by 2 features with roughly equal length that have values of 2 and 4 so in my head the weighted sum should be ~5.
Reprex:
x <- read_sf("data-raw/geojson/princes_street_minimal_x_1.geojson") |>
  sf::st_transform(27700)
x = x[3, ]
y <- read_sf("data-raw/geojson/princes_street_minimal.geojson") |>
  sf::st_transform(27700)
y = y[2:3, ]
matches <- rnetmatch::rnet_match(x, y, dist_tolerance = 10, angle_tolerance = 5)
y_aggregated <- rnet_aggregate(x, y, matches, value)
y_joined <- cbind(x, y_aggregated)
plot(y["value"], lwd = 5)
plot(y_joined["value"], lwd = 5)
y_y_joined <- dplyr::bind_rows(y["value"], y_joined["value"])
plot(y_y_joined, lwd = 5)

Result:

or y$value:
y_joined$value
[1] 4.010027

More tomorrow!

I think its this part of the code. The shared length is the entirety of x but less than the entirety of y. So we scale the value of y by the proportion of y shared with x. If we multiply the wt by value it becomes a bit clearer.
dplyr::bind_cols(matches, ij) |>
+     dplyr::mutate(
+       wt = shared_len / y_len[j],
+       wt * value
+     )
  i j shared_len value              wt     wt * value
1 1 2   77.58872     3 0.7891202 [1/m] 2.367361 [1/m]
2 1 1   77.58872     2 0.8213332 [1/m] 1.642666 [1/m]

Essentially, we're removing from the value proportional to the amount of line not shared with x

This suggests to me we're calculating the weights wrong. It they should be based on the proportion of the length of y that overlaps with x. I'm fairly confident of that. Reasoning:
Imagine that our model for Princes Street results in the finding that 5 trips per day happen along it, one on the north and one on the south side of the road. The purpose of the join is to find out how those trips can be represented when the network only has a single centreline.

Will try to update it to be based on dividing by the length of y not x..

Looking at the Rust code :confused:
Is this the bit where the shared overlap is calculated?
https://github.com/nptscot/rnetmatch/blob/fae43671b8e7445e7d156e1832c8205fcb71103f/rust/src/overlap.rs#L116-L118
If I think it should be the other way around, so we calculate the proportion of each y that overlaps with each x, ~100% for both ys in the example above which should lead to something like
x_value = (y_1_shared_length * y_1_value + y_2_shared_length * y_2_value) / length_x

Given that x in this case is 71.7 m that would be something like
(71.7 * 3 + 71.7 * 2)/71.7
#> [1] 5

Created on 2024-02-04 with reprex v2.1.0
So I think we actually need to be calculating as the proportion of x in y not vice versa, for this motivating use case of re-assigning known flows.

What you're describing would be weighting by shared_length / length_x which is what I had initially done and i think we both agree is wrong. Why weight a value in y based on the length of x? It doesn't make sense.
I believe the code here is correct
In your example, the length of x is 77.58 the length of the 2 y values are 94.4 and 98.3 respectively. They are longer than the x that they are matched to. By weighting proportional to the overlap (77.5/994) and (77.58/98.3) we get 0.82 and 0.789. To get a rough estimate of the values in y scaled by the overlap of x we multiply the value by the proportion of overlap. We'll only ever get less or exactly the same value of y because the proportion cannot be greater than 1. Multiplying 0.82 * 2 and 0.789 * 3 gives us 1.64 and 2.36.
Changing which line we calculate the overlap from in the Rust code will only change the length of the segment depending on the different in slope. If there is no difference in slope then values will be identical.
library(sf)
#> Warning: package 'sf' was built under R version 4.3.1
#> Linking to GEOS 3.11.0, GDAL 3.5.3, PROJ 9.1.0; sf_use_s2() is TRUE
library(rnetmatch)
x <- read_sf("data-raw/geojson/princes_street_minimal_x_1.geojson") |>
  sf::st_transform(27700)
x = x[3, ]
y <- read_sf("data-raw/geojson/princes_street_minimal.geojson") |>
  sf::st_transform(27700)

(x_len <- st_length(x))
#> 77.58872 [m]

matches <- rnet_match(x, y, 10, 5)

(y_len <- st_length(y[2:3,]))
#> Units: [m]
#> [1] 94.46680 98.32306

wts <- as.double((x_len / y_len))
wts
#> [1] 0.8213332 0.7891202

# pull values
y_vals <- y$value[2:3]

# multiply to get shared length weighted
(y_weighted <- y_vals * wts)
#> [1] 1.642666 2.367361

# then we sum
sum(y_weighted)
#> [1] 4.010027

I think it's the % of x covered by y that we're interested in. The main thing: we need to capture the fact that 5 trips per day happen on that corridor for our transport planning and currently that doesn't seem to be happening, although maybe the numbers will work out on a wider network. Another great example we can use is the Forth Bridge Road where we have 2 parallel sets of linestrings that should be merged into 1 that represents the potential levels of cycle traffic:

Source: https://www.npt.scot/#14.16/55.98601/-3.38688
Maybe that would be a good example? The Edinburgh one is imperfect because the central lines don't add up. Would be interested to see what happens if the length of x is even smaller... More tests needed.

You can get this by weighting shared_len / x_len. And I think they are two distinct and separate problems.
First, here is how you might repro what you're describing. This gives us
library(sf)
library(rnetmatch)
x <- read_sf("data-raw/geojson/princes_street_minimal_x_1.geojson") |>
  sf::st_transform(27700)
y <- read_sf("data-raw/geojson/princes_street_minimal.geojson") |>
  sf::st_transform(27700)

x_len <- st_length(x)
y_len = sf::st_length(y)
matches <- rnet_match(x, y, 10, 5)

# subset vars by j to get ij pairs
ij <- y$value[matches$j]

dplyr::bind_cols(matches, value = ij) |>
  dplyr::mutate(
    # create weight by amount of x covered by y
    wt = as.numeric(shared_len / x_len[i]),
    weighted = value * wt
  ) |>
  dplyr::group_by(i) |>
  # sum the totals
  dplyr::summarise(value = sum(weighted))
#>  # A tibble: 3 × 2
#>      i value
#>   <int> <dbl>
#> 1     1  3.90
#> 2     2  1.74
#> 3     3  5

I do think this is a bit of a risky attribution though. For example we can run into a situation where we're attributing a value from y to x where y is a kilometer longer than x. So thats 1000 meters of "value" as it were, that is being attributed to x for segment that is not shared with x. Here's an example where I try to illustrate the risk of this. If we use the weight of shared_len / x_len we'll be giving each of these the entire value of y to x. The below visualizes all of the matches where y is 300+ meters longer than x.
Because of this, I think the most accurate thing to do is to scale by the length of y y_val * (shared_len / length_y)
library(sf)
library(dplyr)
library(rnetmatch)

open_roads = sf::read_sf("https://github.com/nptscot/networkmerge/releases/download/v0.1/os_3km.geojson") |>
  st_make_valid()

case_study_area = open_roads |>
  sf::st_union() |>
  sf::st_convex_hull() |>
  sf::st_transform("EPSG:4326")

osm_roads = osmextract::oe_get_network(
  "Edinburgh",
  mode = "driving",
  boundary = case_study_area,
  boundary_type = "clip"
)
x <- open_roads |>
  dplyr::transmute(n = seq(nrow(open_roads))) |>
  sf::st_transform("EPSG:27700") |>
  sf::st_cast("LINESTRING")

y <-  osm_roads |>
  sf::st_cast("LINESTRING") |>
  sf::st_zm() |>
  sf::st_transform("EPSG:27700")
#> Warning in st_cast.sf(osm_roads, "LINESTRING"): repeating attributes for all
#> sub-geometries for which they may not be constant

matches <- rnet_match(x, y, 5, 5)

x_len <- st_length(x)
y_len <- st_length(y)

yj_longer_than_xi <- matches |>
  as_tibble() |>
  mutate(
    xi_len = x_len[i],
    yj_len = y_len[j],
    wt = as.numeric(shared_len / xi_len)
  ) |>
  filter(wt == 1, as.numeric(yj_len) > shared_len) |>
  mutate(
    meters_longer = yj_len - xi_len
  ) |>
  arrange(-meters_longer) |>
  filter(as.numeric(meters_longer) > 200)

# we'll be attributing values from line segments that are sometimes a whole
# kilometer longer than its matched element.
head(yj_longer_than_xi)
#> # A tibble: 6 × 7
#>       i     j shared_len xi_len yj_len    wt meters_longer
#>   <int> <int>      <dbl>    [m]    [m] <dbl>           [m]
#> 1  3476   574       55.3   55.3  1060.     1         1005.
#> 2  1184  3416       46.2   46.2  1040.     1          994.
#> 3   602  3416       80.7   80.7  1040.     1          959.
#> 4   598  3416       90.8   90.8  1040.     1          949.
#> 5   574  3416       96.0   96.0  1040.     1          944.
#> 6  3659   574      175.   175.   1060.     1          885.

xx <- st_geometry(x)[unique(yj_longer_than_xi$i)]
yy <- st_geometry(y)[unique(yj_longer_than_xi$j)]

xy <- bind_rows(
  st_sf(set = "A", alpha = 0.75, geometry = xx),
  st_sf(set = "B", alpha = 0.5, geometry = yy),
)

ggplot(xy, aes(color = set)) +
  geom_sf(lwd = 1.5, alpha = xy$alpha) +
  theme_void() +
  scale_color_brewer(type = "qual", palette = 2) +
  labs(title = "Matches where B is 300+ meters longer than A")

Created on 2024-02-04 with reprex v2.0.2

Reproducible example that shows how currently the values associated with x depend on the target geometry.
Both x and x_segmented represent the same bit of road but the values associated with them are very different:
# setup input dataset:
x = sf::read_sf("data-raw/geojson/princes_street_minimal_x_1.geojson") |>
  sf::st_transform(27700)
y = sf::read_sf("data-raw/geojson/princes_street_minimal.geojson") |>
  sf::st_transform(27700)

x = x[3, ]
y = y[2:3, ]
matches <- rnetmatch::rnet_match(x, y, dist_tolerance = 10, angle_tolerance = 5)
y_aggregated <- rnet_aggregate(x, y, matches, value)
y_joined <- cbind(x, y_aggregated)
y_joined

Simple feature collection with 1 feature and 3 fields
Geometry type: LINESTRING
Dimension:     XY
Bounding box:  xmin: 325720.5 ymin: 673966.8 xmax: 325794.8 ymax: 673989.3
Projected CRS: OSGB36 / British National Grid
  id i    value                       geometry
1  3 1 4.010027 LINESTRING (325720.5 673966...

x_segmented = stplanr::line_segment(x, segment_length = 10)
matches <- rnetmatch::rnet_match(x_segmented, y, dist_tolerance = 10, angle_tolerance = 5)
y_joined_segmented <- rnet_aggregate(x_segmented, y, matches, value)
y_joined_segmented

# A tibble: 8 × 2
      i value
  <int> <dbl>
1     1 0.501
2     2 0.501
3     3 0.501
4     4 0.501
5     5 0.501
6     6 0.501
7     7 0.501
8     8 0.501

sum(y_joined_segmented$value)

[1] 4.010027

funs = list(value = sum)
# With stplanr:
rnet_merged = stplanr::rnet_merge(x, y, dist = 10, funs = funs, max_angle_diff = 5, sum_flows = FALSE)

Warning: st_centroid assumes attributes are constant over geometries

Joining with `by = join_by(id)`

rnet_merged_segmented = stplanr::rnet_merge(x_segmented, y, dist = 10, funs = funs, max_angle_diff = 5, sum_flows = FALSE)

Warning: st_centroid assumes attributes are constant over geometries

Joining with `by = join_by(id)`

rnet_merged$value

[1] 5

rnet_merged_segmented$value

[1] 5 5 5 5 5 5 5 5

That's from #29, don't need to merge it..

A key distinction is whether the attributes are intensive or extensive: https://r-spatial.org/book/05-Attributes.html#sec-extensiveintensive
For extensive attributes we would divide the values by the area or the length of the road, e.g. number of estimated cycle line markings that can be assumed to increase with distance.
In this case we're talking about flow along the linestring, so if it's 5 at the start for the first 1 meter it will be 5 at the end. Currently, however, the implementation treats it as an extensive attribute, so if you have a 5 m length of road with a value of 5 split into 5 5 m sections it will re-set the value to 1 for each sub-linestring.
Could we have an argument like intensive = TRUE to differentiate between intensive and extensive variables?
I don't know of any extensive linestring attributes that you'd want to calculate by dividing by the distance but imagine they exist and that they would be useful for some use cases.

From your code above @JosiahParry, this does what we want by the looks:
dplyr::bind_cols(matches, value = ij) |>
  dplyr::mutate(
    # create weight by amount of x covered by y
    wt = as.numeric(shared_len / x_len[i]),
    weighted = value * wt
  ) |>
  dplyr::group_by(i) |>
  # sum the totals
  dplyr::summarise(value = sum(weighted))
#>  # A tibble: 3 × 2
#>      i value
#>   <int> <dbl>
#> 1     1  3.90
#> 2     2  1.74
#> 3     3  5

@Robinlovelace, in your case, does it make more sense to ignore weighting entirely?

@Robinlovelace, in your case, does it make more sense to ignore weighting entirely?

Not sure, need to do more tests... In my court. More repexes from me below soon...

When features of x are longer than y I think we need weighting to distribute the values. See example below.

Source (feel free to edit): https://excalidraw.com/#room=74e6f251c4cc4756aaec,t7_CtachJHbo-L7rCIS3xQ


World Create Error

I am having a issue when I try and create a new world with the latest dev build of bukkit.
I use multiverse with the 'mv create example_world normal' command.
But it will craft the server and prevent it from loading without first remove the newly created world.
Is this a plugin issue or a bukkit issue i'm not sure but I have attached the error.
http://i42.tinypic.com/2hquy6p.jpg

You're using:
A. An Old Version of Craftbukkit
B. A version of CraftBukkit that is not a recommended build.
Update your CraftBukkit Build.
For the future, when using Dev builds of CB please ensure that they're up to date before posting issues.
Thanks.


Actually fix Lint CI

Pull Request Description
My suspicions were correct... it seems like the failures mainly (if not only) happen on a clean repository without build artifacts.
I've fixed it so it will work anyway - it's not pretty but I think it's all required
Important Notes
None
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[x] The documentation has been updated, if necessary.
[x] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[x] All code follows the
Scala,
Java,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
All code has been tested:

[x] Unit tests have been written where possible.
[x] If GUI codebase was changed, the GUI was tested when built using ./run ide build.

@wdanilo you pointed out it was verbose before... well, it's so much more verbose now DX
the alternative solution would be to remove all this specialcasing, and then just check for the existence of e.g. build.json and run a build if it's not there. thoughts?
https://github.com/enso-org/enso/blob/71ccc1d2fc276eac1b7892ec24704caa27516d86/app/ide-desktop/lib/types/modules.d.ts#L17-L45

@wdanilo you pointed out it was verbose before... well, it's so much more verbose now DX
the alternative solution would be to remove all this specialcasing, and then just check for the existence of e.g. build.json and run a build if it's not there. thoughts?
https://github.com/enso-org/enso/blob/71ccc1d2fc276eac1b7892ec24704caa27516d86/app/ide-desktop/lib/types/modules.d.ts#L17-L45

Oh yes, let's do it as you propose please! Let's check for it, build it if it's not there and it'd be much better than this verbosity. Btw, why running build is needed like that? Our build script should build all dependencies automatically, so there should not be a situation when it's not there, right?

@wdanilo i think it's because lint doesnt depend on build. i'm not very familiar with the build CLI so maybe it'd be better for @mwu-tow to do it?

superseded by #6602


Wlan Portal Template throws error when no logo is provided

When I don't provide a logo to my wlan_portal_template I receive an error
│ Error: Invalid "logo" value for "mist_site_wlan_portal_template" resource
│
│   with mist_site_wlan_portal_template.wlan_one,
│   on main.tf line 22, in resource "mist_site_wlan_portal_template" "wlan_one":
│   22: resource "mist_site_wlan_portal_template" "wlan_one" {
│
│ Unable to open the file "": open : no such file or directory

Example
resource "mist_site_wlan_portal_template" "wlan_one" {
  site_id = "redacted"
  wlan_id = mist_site_wlan.wlan_one.id
  portal_template = {
    sms_message_format    = "Code {{code}} expires in {{duration}} minutes."
    sms_validity_duration = "10"
    page_title            = "Welcome To My Demo Portal"
    locales = {
      "fr-FR" = {
        page_title = "Bienvenue sur mon portail de démo"
      }
    }
    # logo = "../pulumi_logo.png" Throws error
  }
}

Hi @zbuchheit , it should be fixed with v0.1.35

confirming it was fixed. thanks!


Enable backpressure and multiple streams

Since this changes the api it should be a major version bump.

LGTM, but see my comments, esp. about the 'error' event on the stream.

It seems like there's two sources of errors:

Errors that originate from the media element (video or audio DOM node)
Errors that originate from the MediaSourceStream

After thinking about this and discussing with @mafintosh, this seems to me like the best way to handle things:
When an error originates from the media element:

Call stream.destroy(err) so that unpipe will be called on readables and 'error' will be emitted on the stream.
(All media element errors are fatal.)

When an error originates from the stream:

Call stream.destroy(err) for the same reason as above
Call elem.endOfStream('error-type') so the media element will be in the correct state.

This lets the user either listen to errors on the media element (which allows interop with video player code that listens for those events) or the stream (which allows correct cleanup behavior with other stream modules)
This can be implemented like this:

Listen for errors on the media element and call self.destroy(err).
When errors originate from the stream, call elem.endOfStream('error-type') (which will lead to self.destroy(err) being called)
Anytime elem.endOfStream('error-type') is called manually, also call stream.emit('warning', detailedErr) so the user can get detailed debug errors if they're interested.

@jhiesey, @mafintosh: Thoughts?

Should be fixed up!

I made a small bike shedding comment. Otherwise this looks super solid! Good job @jhiesey

Made a few changes, including the createWriteStream one. @jhiesey - take a look at the commit log and make sure it looks good to you. :)
Published as 2.0.0.


Edited site.css not loading

Which project template is the issue about?
Asp.Net Core MVC 6 Boilerplate
...
Which version of the project template is the issue about?
current - unsure - added to VS today
...
Which version of Visual Studio or the dotnet SDK were you using?
Visual Studio 2017
...
As a novice I wanted to edit this template, I have added EntityFramework and identity etc.  Whilst styling I have come across an issue which I'm stuck on.  After changing the body section of site.css to have a background-image, the page loaded with it just fine, but after editing the Home/index view however, the image didn't show and the app loaded a version of the css file where there are no changes.  I have tried other browsers, clearing the caches and cookies etc, closing the browser, restarting Visual Studio, and can't for the life of me get the changed version of the css file to load.
I have also noticed there is an error in the site.js showing in Chromes console which may or may not be related:

Uncaught ReferenceError: exports is not defined

Which is some sort of calculator function.
Hope this is enough for you to go on...
I used IIS,
No cloud provider,
No TypeScript etc,
.net core

Weirdly enough, it seems to be working again.  The actual changes had been removed, so most like user error.

Nope the issue persists.  To reproduce the results:-
change site.css,
Debug app via IIS,
restart debug.
And notice the the changed css is no longer loaded, and if you close and reopen the stylesheet in VS your changes will be lost.

gulp is used to create the site.css file each time you update any .scss file. Sometimes gulp is a bit flaky and does not work correctly or stops working if your scss is invalid. Glad it sorted itself out.


[stable/janusgraph] Error deploying janusgraph on Kubernetes

Getting the following error trying to deploy janusgraph on kubernetes
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "apps/v1beta2"

Here is the values used
# Default values for JanusGraph chart.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

image:
  repository: docker.io/janusgraph/janusgraph
  tag: 0.5.2
  pullPolicy: IfNotPresent

## The default configuration provided here uses attached storage for db and indexing
## For a distributed deployment, increase the number of replicas and choose
## a distributed backend for storage and indexing below (i.e. hbase and elasticsearch)
replicaCount: 2

## set any pod specific resource requests here
resources: {}

extraEnvs: {}

service:
  type: ClusterIP  # Change to LoadBalancer if you plan to access JanusGraph outside k8s cluster
  port: 8182
  serviceAnnotations:
    # the following line is ignored unless unless using a LoadBalancer with GCP
    # cloud.google.com/load-balancer-type: "Internal"

## This chart can deploy the Elasticsearch as a dependency.
## Use this section to provide elasticsearch chart specific values
elasticsearch:
  deploy: false  # change to true if you want to deploy Elasticsearch as a requirement along with this chart
  rbac:
    create: true  # required for kubernetes >1.7

properties:
  ## use this section to add or adjust JanusGraph properties as needed
  ## all uncommented values in this section will be placed in the janusgraph.properties file

  ## see http://docs.janusgraph.org/0.2.0/storage-backends.html, choose the desired storage backend
  ## (i.e. berkeleyje, cassandra, cassandrathrift, cql, embeddedcassandra, hbase, inmemory )
  ## for Cloud Bigtable choose hbase
  storage.backend: cql
  storage.hostname: [
    **********,
    **********,
    **********
  ]
  storage.port: 9042

  storage.cql.keyspace: *********

  ## Google Cloud Bigtable specific configuration
  ## To use Cloud Bigtable, uncomment the following three lines and replace values
  # storage.hbase.ext.google.bigtable.instance.id: <your-cbt-instance> # replace with your Cloud Bigtable Instance ID
  # storage.hbase.ext.google.bigtable.project.id: <your-cbt-project> # replace with your Cloud Bigtable Project ID
  # storage.hbase.ext.hbase.client.connection.impl: com.google.cloud.bigtable.hbase1_x.BigtableConnection # required for using Cloud Bigtable

  ## Indexing/Search backend configuration (see http://docs.janusgraph.org/latest/index-backends.html)
  index.search.backend: elasticsearch
  index.search.hostname: ************
  ## choose the index backend you want to use: elasticsearch, es, solr or lucene (default "lucene")
  ## if you plan to use elasticsearch, change to "index.search.backend=elasticsearch"

  ## Elasticsearch configuration (see http://docs.janusgraph.org/latest/elasticsearch.html)
  ## This property is only relevant if you are using Elasticsearch as your index backend.
  # index.search.hostname: <your-es-hostname>
  ## Only set this if you plan to use an elasticsearch deployment created outside of this chart,
  ## If you plan to deploy Elasticsearch as a requirement with this helm chart,
  ## then leave this commented out or empty, it will be filled in automatically

  ## other common properties
  # cache.db-cache: true
  # cache.db-cache-clean-wait: 20
  # cache.db-cache-time: 180000
  # cache.db-cache-size: 0.5

## when using local storage and indexing, choose whether to persist day
persistence:
  enabled: false  # set to false if you are testing and do not want to persist data
  path: /db
  accessMode: ReadWriteOnce
  size: 4Gi  # adjust size as needed depending on the size of local storage and indexing required
  existingClaim:  # to reattach to previously used storage, provide an existing claim (or use --set)

## To make adjustments to janusgraph.properties and gremlin-server.yaml, provide a
## custom ConfigMap in your k8s cluster (using the helm created ConfigMap as a base).
configMapOverrideName: ""

For kubernetes versions later than 1.15 the api has changed from "apps/v1beta2" to simply "apps/v1", you will need to change the helm charts themselves accordingly.

I created a pull request. I do not expect it to get merged, but it will serve as a reference to anyone running into the same issue.


Way to choose output buffer

Hey,
Looks cool, but I think you could add an option to direct the output to a custom writer.
This way it would be possible to write to a connection buffer for example.
Could do something like this:

func Fprint(output io.Writer, col ansiColor, s ...any) {
	fmt.Fprintf(output, "\033[0;%dm", col.value)
	if col.bold {
		fmt.Fprintf(output, "\033[1m")
	}
	fmt.Fprint(output, s...)
	applySettings()
}

I plan to use it for a small telnet experiment.
Thanks for the code :1st_place_medal:

Thanks. I'll take a look at doing that.

Sorry for the delay, Fprint, Fprintln and Fprintf are now implemented, along with some other goodies in v1.5.0

done


Create Accordion React component

#292 needs to be finished before starting this.
Specification

[x] Adhere to pattern: https://www.w3.org/WAI/ARIA/apg/patterns/accordion/
[x] Header should be a button element (no rich text)
[x] Controlled / uncontrolled state
[x] Support forwardRef
[x] Support Compound components (Item, Header, Content)
[x] Document Typescript props using JSDoc
[x] Use new semantic tokens from @digdir/design-system-tokens
[x] Define component level css variables with unique prefix

Suggestion: Use the details tags for markup

Expand me!
I'm expanded

<details>
<summary>Expand me!</summary>
I'm expanded
</details>


feat(pixels): add my new pixel

Checklist

[ ] I ran npm test locally and it passed without errors.

[ ] I only edited the _data/pixels.json file.

[ ] I entered the username in the pixels.json that I'm also using to create this pull request.
[ ] I acknowledge that all my contributions will be made under the project's license.

The "npm test" failed on both the original clone (before changes) and after my commit.


Terraform plan/apply with AWS shows error

Hello guys,
Not sure if it's a terraform bug or if it's related to the provider but when I do a terraform plan, I get this:

Same behaviour when I run terraform apply and nothing is created.
Thanks,
Steven

Same behaviour when I run terraform apply

Hi @SLemonier,
With release v0.3.6, we have per connection type hypervisor and per connection type hypervisor resource pool. And with release v0.5.0, we removed daas from resource names.
If you have resources created from before these releases, you can either update the state file to reflect the correct resource names or clean the state file and import these resources and run apply again. Please ensure all resource names in the tf files are also updated.
Thanks,
Aneesh

Hello @aneeshk-citrix
I deleted the resources, state files and so on, now I don't see the error anymore.
Thanks,
Steven


Reduce memory usage of idle websockets with bufferless reads

A common technique used to reduce memory usage of idle websockets is to issue a read with 0 bytes then issue the actual read with a buffer when data is ready. We should do this and measure the memory and throughput differences.
We may also need to make adjustments to the websocket middleware so that we can accept the websocket and configure the minimum buffer size (internally buffered by the websocket).

Example here https://github.com/davidfowl/PlatformLevelTechempower/blob/944597f9ad196d3a333b837fb8c62a7304d5f9d2/ServerWithKestrel2.1/ChatConnection.cs#L15-L45

Blocked on https://github.com/dotnet/corefx/issues/28138
There's already a PR, we just want the corefx fix to be able to apply it to the send buffer too.

We may have to punt this to RC and make the fix to corefx so receives aren't super inefficient.

We should be unblocked now, @BrennanConroy before you commit this change I'd like to get a bare bones test of some number of concurrent connections and the memory it takes up so we can measure before and after.


[sig-network] Ingress API should support creating Ingress API operations [Conformance]

What steps did you take and what happened:
[A clear and concise description of what the bug is.]
Hi, when I run the test on our k8s v1.19.8 cluster via
sonobuoy run  --e2e-focus="Ingress API should support creating Ingress API operations" --kube-conformance-image-version v1.19.8
I get the following error:
`[sig-network] Ingress API
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/network/framework.go:23
should support creating Ingress API operations [Conformance] [It]
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/framework/framework.go:597
Aug  5 07:39:59.312: Unexpected error:
<*errors.StatusError | 0xc0039e08c0>: {
ErrStatus: {
TypeMeta: {Kind: "", APIVersion: ""},
ListMeta: {
SelfLink: "",
ResourceVersion: "",
Continue: "",
RemainingItemCount: nil,
},
Status: "Failure",
Message: "ingresses.networking.k8s.io "e2e-example-ing" is forbidden: service "test-backend" not found",
Reason: "Forbidden",
Details: {
Name: "e2e-example-ing",
Group: "networking.k8s.io",
Kind: "ingresses",
UID: "",
Causes: nil,
RetryAfterSeconds: 0,
},
Code: 403,
},
}
ingresses.networking.k8s.io "e2e-example-ing" is forbidden: service "test-backend" not found
occurred
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/network/ingress.go:1060
{"msg":"FAILED [sig-network] Ingress API should support creating Ingress API operations [Conformance]","total":1,"completed":0,"skipped":4770,"failed":1,"failures":["[sig-network] Ingress API should support creating Ingress API operations [Conformance]"]}`
What did you expect to happen:
I expect that service "test-backend" is being created by the sono in upfront.
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
Looks like our cluster has enhanced verification whether the service exists before ingress creation, i.e let's create an simple ingress without service created in upfront:

k apply -f ingress.yaml
Error from server (Forbidden): error when creating "ingress.yaml": ingresses.networking.k8s.io "minimal-ingress" is forbidden: service "test321" not found
cat ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:

http:
paths:

path: /testpath
pathType: Prefix
backend:
service:
name: test321
port:
number: 80

Environment:

Sonobuoy version:
test above has been done with 0.52.0_linux_amd64, but the same result with 0.53
Kubernetes version: (use kubectl version):
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.5", GitCommit:"6b1d87acf3c8253c123756b9e61dac642678305f", GitTreeState:"clean", BuildDate:"2021-03-18T01:10:43Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.8-r0-CCE21.1.1.B003-19.38.1", GitCommit:"82b12f993535a93a949435ecd4093988f15e4eb2", GitTreeState:"clean", BuildDate:"2021-02-28T07:21:58Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"}
Kubernetes installer & version:
Cloud provider or hardware configuration:
CCE from Open Telekom Cloud
OS (e.g. from /etc/os-release):
NAME="EulerOS"
VERSION="2.0 (SP5)"
ID="euleros"
ID_LIKE="rhel fedora centos"
VERSION_ID="2.0"
PRETTY_NAME="EulerOS 2.0 (SP5)"
ANSI_COLOR="0;31"
Sonobuoy tarball (which contains * below)
202108050739_sonobuoy_8a2aed03-254c-4338-bc99-7d4492498a90.tar.gz

Thank you for any ideas!

I expect that service "test-backend" is being created by the sono in upfront.

Sonobuoy doesn't do anything at that level; the individual k8s tests are responsible for setting up/tearing down the resources they need. Sonobuoy is just responsible for making the test pod/namespace to start things off. From there the upstream code handles the rest.
You can see the LOC responsible for the error here https://github.com/kubernetes/kubernetes/blob/v1.19.8/test/e2e/network/ingress.go?#L1060

I expect that service "test-backend" is being created by the sono in upfront.

Sonobuoy doesn't do anything at that level; the individual k8s tests are responsible for setting up/tearing down the resources they need. Sonobuoy is just responsible for making the test pod/namespace to start things off. From there the upstream code handles the rest.
You can see the LOC responsible for the error here https://github.com/kubernetes/kubernetes/blob/v1.19.8/test/e2e/network/ingress.go?#L1060

Understand. Thank you.


git-branchstack: change buildInputs to propagatedBuildInputs

This makes it no longer crash with ModuleNotFoundError: No module named 'gitrevise'.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Can I include this fixup at https://github.com/NixOS/nixpkgs/pull/348315?

Closing as merged with https://github.com/NixOS/nixpkgs/pull/348315


Simplify data structure

Remove implicit casting

Going to do a perf comparison in a second - stay tuned

Sigh, all of my performance comparison posts got added to here by accident: https://github.com/akkadotnet/akka.net/pull/4301#issuecomment-595891857
Performance in this PR is looking good.


Change the ui of extend buttons

Currently the extend button ui is like below.

I find this ui unpleasing. Plus, I found that most people did not notice that the buttons were meant for extending the pixel canvas. Thus, I came up with a new ui.

I came up with a new ui that has only lines. I am planning to implement this feature. If you have any feedback on the ui, please feel free to comment!

Closing this comment since the related PR was merged


Detect intraday strategies and remove gross_lev

Detect intraday strategies using the new utils.detect_intraday function, and resample the positions for intraday algorithms using the new utils.estimate_intraday function. This is applied automatically in tear sheets, but the user can override the detection. If users want to run a single plotting function with intraday-corrected returns, they can call utils.estimate_intraday, then pass the corrected positions to the plotting function.
Additionally, remove gross_lev as an argument. When needed, gross leverage will be calculated with timeseries.gross_lev, which is passed positions, instead.

@twiecki Can you review? Thanks.


different embed schemas for the same model (possible pull request)

I have the following schema:
defmodule AH.SearchReq do
  use AH.Web, :model

  schema "search_reqs" do
    field :product_id, :string
    field :request, :map
    field :result, :map
  end
end

I want to use different embed schema's based on the value of product_id and embed them in the request and result :map fields.  At first, I thought the after_load callback would work because I could do a cond on the product_id and return a different model.  But I get this error:
** (exit) an exception was raised:
    ** (ArgumentError) expected `after_load` callbacks to return a AH.SearchReq, got: %AH.SearchReq.CRCT{__meta__: #Ecto.Schema.Metadata<:built>, ...}
        (ecto) lib/ecto/model/callbacks.ex:319: Ecto.Model.Callbacks.__apply__/3
        (ecto) lib/ecto/adapters/sql.ex:503: anonymous fn/3 in Ecto.Adapters.SQL.process_row/3
        (elixir) lib/enum.ex:1102: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
        ...

If there is not a good way to do this, any interest in a pull-request to make after_load not require the same model to be returned?  There does not appear to be any code after the Schema.__load__/6 that depends on the same model being and while I understand the other callbacks require a changeset to be returned, is there really a reason to ensure after_load keeps the same model?
  def __load__(model, prefix, source, context, data, loader) do
    source = source || model.__schema__(:source)
    struct = model.__struct__()
    fields = model.__schema__(:types)

    loaded = do_load(struct, fields, data, loader)
    loaded = Map.put(loaded, :__meta__,
                     %Metadata{state: :loaded, source: {prefix, source}, context: context})
    Ecto.Model.Callbacks.__apply__(model, :after_load, loaded)
  end

You are describing a solution. Can you please describe which problem you are trying to solve? Why do you need different data that looks exactly the same in Elixir? At first, allowing models to become a different struct after load does not sound like a good idea and can potentially be quite confusing.

@josevalim agreed, would be cool if I could just override Schema.__load__/6 somehow.
use case:
request and result are :map, in the db they are postgresql jsonb columns.  I want to take advantage of Ecto's type casting, changeset features on the data in the :map fields, because each product_id is going to have the same request/result schema.  In my rails app I use STI and have a getter on each class for the request/response attributes.  Something like:
class SearchReq < ActiveRecord::Base
end

class SearchReq::CRCT < SearchReq
  class Request
    # some attribs
  end
  def request
    @request ||= Request.new(super)
  end
end

class SearchReq::CRST < SearchReq
  class Request
    # some other attribs
  end
  def request
    @request ||= Request.new(super)
  end
end

Ecto embeds is very cool, but in it's current form it's very limited to only modeling the same data in each field, where I see a huge benefit is being able to put varying types of data in the same table.  A good example of this is a items table in an ecommerce system.  Each item may have a price, inventory count, shipping weight, etc.  But a clothing item will need attributes such as color, sizes, etc while a computer item will have CPU, RAM, HDD, etc.  So it would be real neat to do something like:
defmodule Order do
  use Ecto.Model
  schema "orders" do
    embeds_many :items, Item.Clothing, Item.Computer
  end
end

defmodule Item.Clothing do
  use Ecto.model

  embedded_schema do
    field :color
  end
end

defmodule Item.Computer do
  use Ecto.model

  embedded_schema do
    field :cpu
  end
end

Back to me SearchReq model, one idea I'm throwing around is have a SearchReq.to_product_searchreq fn that will return SearchReq.CRCT, SearchReq.CRST etc.  Maybe even store it in a virtual field.
Thanks,
Troy

Ok, that makes a bit more sense. However I am thinking that, if you want to store anything in the field, then you don't want an embed but keep it as a map (or array of maps) and manage your own structs. The reason here is that Ecto does not store model information in embed so we wouldn't know which model to serialize it back too. Luckily, if you drop Ecto in favor of a map, you can easily make it whatever you want. You can even use a custom type that does all the encoding/decoding for you.


Problem with GoogleBot

We had a problem with Google webmaster tools (Fetch as Google)
So we ended up with this: "curl -I http://www.wikiooz.ir"
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Status: 400 Bad Request
Cache-Control: no-cache
X-XSS-Protection: 1; mode=block
X-Request-Id: e0eb9a68-acd6-43ea-9dff-49e4b6e82e2e
X-Runtime: 0.002393
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Date: Tue, 10 Nov 2015 10:00:40 GMT
Set-Cookie: request_method=HEAD; path=/
X-Powered-By: Phusion Passenger 5.0.10
Server: nginx/1.8.0 + Phusion Passenger 5.0.10
We disabled the before_filter action and everythings went well!

What was the error displayed on your application?


Flawed getUniqAttr Parsing May Corrupt HTML Output

https://github.com/JiLiZART/BBob/blob/3575982b280cc45c9cedaf7a059491a324c1b514/packages/bbob-plugin-helper/src/helpers.js#L77-L88
Without understanding the details, the description may benefit from some enhanced description (see below). Given my assumptions and tests are correct, I will refer to a possibly even dangerous flaw in getUniqAttr handling, which can be summarized as: You can fake unique attributes within BBCode.
Suggestion for Description Enhancement
/**
 * Given a record of string to some value, this method will
 * retrieve the last entry in the record and return its key
 * when it is equal to its value.
 *
 * Such entries typically represent so-called _unique attributes_
 * after parsing, so that `[url=someUrl]` gets parsed to an
 * attributes object like: `{ someUrl: "someUrl" }`.
 *
 * @example
 * getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar'
 * @example
 * getUniqAttr({ 'bar': bar', 'foo': true }) => null
 * @param attrs - record of strings to attribute values
 * @returns {string|null} `null`, if no unique attribute could be determined
 */

The Flaw

BBCode
Actual HTML
Expected HTML (Suggestion)

[url fakeUnique=fakeUnique]T[/url]
T
T

[url=https://example.org/ fakeUnique=fakeUnique]T[/url]
T
T

[url=https://example.org/ hidden]T[/url]
T
T

[url=https://example.org/ hidden]T[/url]
T
T

[table=onclick][tr][td]T[/td][/tr][/table]

T

undecided

[table onclick=onclick][tr][td]T[/td][/tr][/table]

T

undecided

Stumbled across this while trying to add a sanitizer that forbids on* attributes to be created during processing.
Thus, the attribute found as being "unique" may not always have been "unique" within the original BBCode.
Perhaps one possible option would be using a Symbol() as key for the unique attribute. But I did not dive into parsing, if this is even feasible.

Main goal of getUniqAttr is to handle situations where attribute name is a tag name for bbcodes without any attributes but with attribute value like [url=example.com]T[/url] any other variations of usage are falsy.
Maybe it's a bad decidion for handle this as { 'example.com': example.com } maybe better will be handling this as { url: 'example.com' }, but it breaking change.
Missunderstandings will be fixed when I done TypeScript support

Maybe it's a bad decidion for handle this as { 'example.com': example.com } maybe better will be handling this as { url: 'example.com' }, but it breaking change.

Yes, it will be a breaking change (and we will for sure stumble across this when the behavior changes; hopefully by some integration tests that will trigger us on update).
Introducing Symbols (which may be the best option here regarding non-conflicting behavior), an alternative representation may be some characters, that will never make it to an attribute name (at least when parsing BBCode). A space character may be the best option here, or a closing bracket:

 unique
uni]que

To smoothen updates, all API clients should be advised to only access unique attributes via dedicated API instead of applying their own guesses on the behavior. Possibly even a challenge for us, as we try to prevent any on* handlers to sneak into the attributes.

This issue becomes more severe, when you want to have tags, that only handle "unique attributes" differently, but keep all others as is. Thus, if you want to stick to the default mapping, for all not explicitly mapped tags/elements.
Example input without extra mapping configured:
[unknown=unique fakeUnique=fakeUnique]T[/unknown]

will become:
<unknown unique="unique" fakeUnique="fakeUnique">T</unknown>

which, in case of providing an alternative mapping for [url] where you "keep all other but unique attributes" will trigger the following mapping:
[url=https://example.org/ fakeUnique=fakeUnique]T[/url]

to
T

Follow-Up Options:
The following follow-up options may influence a possible solution to this issue.
Option 1) As soon as this issue is fixed, I would suggest adapting attrsToString to even ignore unique attributes, which are left after processing:
https://github.com/JiLiZART/BBob/blob/3575982b280cc45c9cedaf7a059491a324c1b514/packages/bbob-plugin-helper/src/helpers.js#L64
Thus, the [unknown] example above, should rather be mapped to:
<unknown fakeUnique="fakeUnique">T</unknown>

Doing so now, without fixing this issue, may cause other subsequent bugs and breaking behavior.
Option 2) Or perhaps a very different approach, where you may leave attrsToString untouched: Choose a unique attribute representation that uses as "namespace" prefix. Example: bbob:unique. Without explicit mapping, the [unknown] example would then render to:
<unknown fakeUnique="fakeUnique" bbob:unique="unique">T</unknown>

Option 3) Or, not to use namespaces, but data-attributes instead, which then again represents a valid HTML attribute:
<unknown fakeUnique="fakeUnique" data-bbob-unique="unique">T</unknown>

(accessible in JavaScript via el.dataset.bbobUnique).


[contracts] Handle failures of external calldata execution

Should handle the failure cases of calldata instead of forcing that complexity onto the implementer

done in #1194


Documentation improvements

This is a small PR that improves the README.md and docs/introduction.md files

I've renamed this method to format on the main branch.


Auto-scaling of 52Poké Wiki deployment

52Poké Wiki has labile CPU usage requests, the Kubernetes deployment of 52Poké Wiki should support auto-scaling to optimize performance and reduce cost.
Upstream support from Linode Kubernetes Engine might be needed.

HPA is setup and working.
Also consider this: https://github.com/meezaan/linode-k8s-autoscaler

https://github.com/kubernetes/autoscaler/pull/3790

https://github.com/kubernetes/autoscaler/pull/3790

Fixed with 0cf3f7919143b26dfc839668396993d1f20a11e7 and c038af4f90f52d9c25892314e34584df0d39aa6f.


Allow SSH only from a specific IP or range of IPs.

Is your feature request related to a problem? Please describe.
Currently for both Azure and AWSs the default security rules allow for unlimited SSH connections to the cluster VMs.
Describe the solution you'd like
For security an easy mechanism should be introduced which allows the definition of a specific IP or range of IPs allowed to SSH into the clusters VMs without the need to change every infrastructure/virtual-machine security rule definition.
Additional context
This ip or range might be defined in the epiphany-cluster document under the cloud definition:
Azure:
kind: epiphany-cluster
...
specification:
  cloud:
    allowed_ssh_range: range
...

If defined this will be automaticly applied to all default SSH security rules, if left empty the default SSH rules will be applied.

Not gonna add this for this Epiphany anymore.


Added duplication and widget sharing

What are we adding in this PR
This PR introduces widget sharing between templates.
Whenever we change templates, we store a snapshot of it in local storage. We then retrieve the stored version to re-populate the new template with widgets from the previous one.
We can also share widgets across browser tabs by duplicating a template and selecting a new theme.

Resolved :)


.skip tests not skipped?

This test from iron-doc-viewer was not getting skipped, so I commented it out. I've also noticed that .only does not work.
    iron-doc-viewer/test/iron-doc-viewer.html

    describe('edge cases', function() {
      it.skip('throws when a bound and JSON descriptor are provided', function() {

+1

Noticed that .only doesn't work still. This would be a huge help!


Added torque calculator

Fixes Issue🛠
Closes #743
Description👨💻
I have added torque calculator and files related to it where one can select a way to calculate the torque(torque can be generated in different ways depending on the units and parameters)
So one can choose appropriate situation and set[u and can change units as he/she wish
Type of change📄

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

How this has been tested✅
I checked all the units and methods of calculating torque with different values and checked with actual answers and they are matching
Checklist✅

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added demonstration in the form of GIF/video file
[x] I am an Open Source Contributor

Screenshots/GIF📷
https://github.com/Rakesh9100/CalcDiverse/assets/112798996/85a7de5f-09c5-4bb0-9fc5-0a6555ede875

Add a Readme file for your calculator in your folder!
Keep the first option as Select a method in the dropdown @4

Add a Readme file for your calculator in your folder!
Keep the first option as Select a method in the dropdown @nagamukesh

Please do not create a PR until you have been assigned to an issue @nagamukesh


BackoffLogicManagerTest.RetryAfterOlderThanNowCausesDefaultDelay is failing in 2.4.0-beta1

Moved from https://github.com/Microsoft/ApplicationInsights-Home/issues/108
Reported by @macrogreg

It seems to be fixed by Yulia in commit https://github.com/Microsoft/ApplicationInsights-dotnet/commit/de105c30


Inventory and inventory target abstraction for refreshes with new strategies

Inventory and inventory target abstraction for refreshes with new strategies needed for the inventory refresh.

@miq-bot assign @agrare


fix:Fail to execution of functional TAF on x86_64

-mainly revise on docker run-tests file.
-update the instruction of running the test on local.
Now result in all tests pass on the branch of jakarta.
Signed-off-by: jumpingliu<EMAIL_ADDRESS>

Wrong issue name.


Use vars to get Nginx build in parameter request_body failed

Issue description

curl -i http://<IP_ADDRESS>:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uris": ["/api/*"],
"methods": ["GET", "POST"],
"filter_func": "function(vars)
local body = vars["request_body"]
local a1 = body["a1"]
local a2 = body["a2"]
return a1 == "a1" and a2 == "a2"
end",
"upstream": {
"type": "roundrobin",
"nodes": {
"<IP_ADDRESS>:20608": 1
}
}
}'

curl -i http://<IP_ADDRESS>:9080/api/index -X POST -d '{a1:"a1", a2:"a2"}'

error.log
2020/06/10 15:14:36 [error] 20343#20343: *34670661 lua entry thread aborted: runtime error: [string "router#1"]:3: attempt to index local 'body' (a nil value)
stack traceback:
coroutine 0:
[string "router#1"]: in function 'filter_fun'
/usr/local/apisix//deps/share/lua/5.1/resty/radixtree.lua:531: in function 'match_route_opts'
/usr/local/apisix//deps/share/lua/5.1/resty/radixtree.lua:550: in function '_match_from_routes'
/usr/local/apisix//deps/share/lua/5.1/resty/radixtree.lua:582: in function 'match_route'
/usr/local/apisix//deps/share/lua/5.1/resty/radixtree.lua:614: in function 'dispatch'
/usr/local/apisix/apisix/http/router/radixtree_uri.lua:110: in function 'match'
/usr/local/apisix/apisix/init.lua:285: in function 'http_access_phase'
access_by_lua(nginx.conf:168):2: in main chunk, client: <IP_ADDRESS>, server: , request: "POST /api/index HTTP/1.1", host: "<IP_ADDRESS>:9080"

Environment

apisix version (cmd: apisix version): 1.3
OS: Centos 7

the " in filter_func is already escape, but there shows not

local body = vars[\"request_body\"]
        local a1 = body[\"a1\"]
        local a2 = body[\"a2\"]
        return a1 == \"a1\" and a2 == \"a2\"

that is the wrong way to fetch the request body.
please take a look at this:
https://github.com/openresty/lua-nginx-module#ngxreqget_body_data


Feature/issue 154 routing

This PR replaces our current router with the very established react router these are the same devs that produce the history library which many router solutions leverage. Outlined in #102, #130, and #154 are the issues we were encountering with our existing router. Another major issue is that Redux-router handles history internally which prevented us from dealing with it directly which from what I could tell would be the only way to fix our routing issues.  I decided it would be simpler, quicker, and cleaner to swap out this piece for something I feel will serve us better moving forward.  Please try it out, you should notice:

Back button works as expected on all pages
Android back button works as expected and does not close the app
The system for adding new routes, with or without parameter support, and navigating to them is quick and straight forward to implement, react-router takes care of knowing what to render based on props to the Route component
We have to write far less often redundant routing related code. Any component that requires access to routing now references one interface: RouterProps so we don't have to be constantly writing variations of props like goToTaskDetail and goToMyPlan for component A and then again for component B etc..

@rasmus-storjohann-PG everything here has been addressed.

@rasmus-storjohann-PG We're good to go.


Add Tutorials section to docs

As discussed in #84, I am adding a new tutorial section to the docs and will start the translation from the previous Gridap material.
Notes
Similarly to PartitionedArrays.jl, this first attempt uses the Literate package to convert the jl tutorial into a md page.
Closes #85 and closes #86.

@fverdugo. I finally managed to clean up a bit the t001_poisson.ipynb, adding the new plotting functions. Maybe we could discuss today any possible improvements. However, I would like to kindly request you help to edit and possibly add text to it as this would also be important to us to start understand the software internals.

PR #122 substitutes this one


Mutable mesh accessors: indices_mut and attribute_mut

Hello,
In current bevy render, the only way to set attributes on a mesh is to set all values which involves a lot of cloning. For faster updating of dynamic meshes, I propose in this pull request to add two new accessors to Mesh so that it is possible to edit its values directly.
In this example, the iterator is copied directly to the mesh
let pos = sub.attribute_mut(Mesh::ATTRIBUTE_POSITION).unwrap();
if let VertexAttributeValues::Float3(ref mut pos) = pos {
    pos.clear();
    pos.extend(triangles.vertices.iter().map(|v| [v.pos.x, v.pos.y, 0.0f32]));
}

avoiding a collect() needed by the current approach
sub.set_attribute(Mesh::ATTRIBUTE_POSITION, VertexAttributeValues::Float3(triangles.vertices.iter().map(|v| [v.pos.x, v.pos.y, 0.0f32]).collect()));

Looks good to me. Thanks!


Middleman init issue on Windows

I have installed the latest version of ruby 2.2.3 and the associated dev kit which all installed successfully on a windows 8 pc. Installed middleman which installed successfully. Now on running middleman init I am getting an error:
"c:/Ruby22/bin/middleman:23 in 'load': cannot load such file -- C:/Ruby22/lib/ruby/gems/2.2.0/gems/middleman-core-4.0.0/bin/middleman (LoadError).."
Can anyone help please?
Looking in the quoted directory there is no bin directory underneath middleman-core-4.0.0?

in Unix world I would try running bundle exec middleman init

in Unix world I would try running bundle exec middleman init

in Unix world I would try running bundle exec middleman init MY_PROJECT

...which would probably not work because you usually don't have Gemfile in the directory where you run middleman init (at least I don't). Also, bundle exec works fine on Windows.
Regarding the problem, I had similar issue not long ago on Linux. I think I solved it by reinstalling middleman-cli gem, but I'm not sure about it. Can you give it a try? If it does not work, can you post a result of running gem list | find "middleman"?

What version of middleman are you using?

This is using latest version of middleman. I have just tried uninstalling all middleman gems and reinstalling (gem install middleman). The install succeeds.
I then try and create a new site named 'site:
'middleman init test'
I get the exact same error...
I then tried using command 'bundle exec middleman init test'. Which worked
However if I then try and run middleman within my new directory (test). I get the exact same error mentioned above.
Also tried running bundle exec middleman, got a different error this time:
"could not find gem 'middleman-livereload'...Run bundle install to install missing gems"
So I run 'bundle install'. It works and I can now view the site - so whats going on here? Any idea why I have to follow this process to get it to work?

is middleman-livereload in Gemfile?

This was a brand new site so there was no gemfile to start with, it should create the gemfile on calling init shouldnt it? I can see that the gemfile that has been created in the new site does have middleman-livereload.
What I dont understand is why I have to keep using the 'bundle exec' prefix to use middleman?

Using bundle exec only makes sense after you initialized your site.

@trejster Because Ruby is awful in some ways and the dependency management framework Bundler is not built-in :(

Actually running into a similar issue - Ruby 2.3.0 / Middleman 4.0.0
Fresh install on OSX, rbenv/ruby-build via homebrew.
Vanilla gem install middleman pulls down 4.0.0.
Upon running middleman init I get:
/Users/kaishiro/.rbenv/versions/2.3.0/bin/middleman:23:in `load': cannot load such file -- /Users/kaishiro/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/middleman-core-4.0.0/bin/middleman (LoadError)
	from /Users/kaishiro/.rbenv/versions/2.3.0/bin/middleman:23:in `<main>'

touch a .Gemfile with just one line: gem 'middleman', then bundle install and bundle exec middleman init works fine.  Was assuming it was just me since I'm new to OSX from Linux and am still learning the whole homebrew system.

Have you ever got question 'Do you want use Compass?' after middleman init on command line (windows)? I can't figure out what to do to continue, thanks!

@IvonaBarun You should just be able to type y or n, depending on if you want to use Compass or not.  Are you getting a specific error after responding?

@MatthewWhite thanks for respond. I've tried replaying y and n but nothing
has happened. Here is print-screen attached.
On Tue, Feb 16, 2016 at 10:58 AM, Matthew White<EMAIL_ADDRESS>wrote:

@IvonaBarun https://github.com/IvonaBarun You should just be able to
type y or n, depending on if you want to use Compass or not. Are you
getting a specific error after responding?
—
Reply to this email directly or view it on GitHub
https://github.com/middleman/middleman/issues/1724#issuecomment-184604828
.

I was having problem with running middleman on windows you can use this template:
https://github.com/jawwadzafar/middleman-boilerplate.git

I am able to reproduce this issue. Simply using ruby-2.3.0 via RVM and doing gem install middleman leads to /Users/jrlin/.rvm/gems/ruby-2.3.0/bin/middleman:23:in load': cannot load such file -- /Users/jrlin/.rvm/gems/ruby-2.3.0/gems/middleman-core-4.1.6/bin/middleman (LoadError)`
It appears gem install middleman doesn't install dependencies.
Switching to ruby-2.2.4, gem install middleman installs a bunch more dependencies and middleman init works fine.

whoa, this is a ruby bug?
Does /Users/jrlin/.rvm/gems/ruby-2.3.0/bin/middleman not exist?

@tdreyno probably. The issue had to do with middleman-core and various other dependencies not installing.
It seems that the issue has been resolved on my side. I simply killed my ruby-2.3.0, reinstalled, including gem install middleman and it now correctly pulls in all dependencies, which was not being done at the time of my previous error.
I'm now able to successfully do middleman init test at this time with middleman 4.1.6.
As a note, I had done the same steps above before reporting the issue 4 days ago.

I'm doing some issue-gardening 🌿🌷🌾 and came across this issue.
Sorry that this has lingered for quite a while! I'd suggest closing this issue. If the problem resurfaces a repro or failing test would be a good start in solving this. Ideally also a patch with a fix.

Had the same issue. as per @linjer comment, switching to ruby-2.2.4, gem install middleman fixed the problem. Uninstalled the existing middleman gems first just as a precaution.

Ran into this issue after not using Middleman for a while. Seems the fragmentation between middleman-core, middleman-cli, and middleman creates a host of issues. Running gem install middleman did not help, nor did uninstalling the middleman gem before reinstalling, or reinstalling middleman-core. I had to remove and reinstall middleman-cli, including letting gem remove the middleman executable.


Added Ecto.embedded_dump/2 and fix recursion for deep embeds

This is a continuation to #3270 - it adds the counterpart to Ecto.embedded_load/3 and enables loading / dumping recursively for embeds.
I was able to (ab)use Ecto.Repo.Schema.do_load to dump, but since that one adds back the __struct__ key with the schema and the __meta__ key with the metadata, I removed them after that again, because I don't think dumped data should contain these.
While writing the code for recursive assocs/embeds I stumbled across do_load not calling for assocs, only for embeds.
I think there needs to be a new function that's similar to do_load but will also call for assocs (when they're loaded / when the key is present) and use that for both embedded_dump and embedded_load.
What do you think? Should assocs also be loaded and dumped recursively?
With that, I think the dump function would have great potential when writing APIs with Phoenix:
def index(conn, _) do
  blog_posts =
    Repo.all(BlogPost, preload: [comments: [:author], :author])
    |> Enum.map(&Ecto.embedded_dump(&1, :json))
    |> Jason.encode!()

  send_resp(conn, 200, blog_posts)
end

TODO

[ ] Docs for Ecto.embedded_dump/2
[ ] Maybe recursively dump/load assocs as well

:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:

@narrowtux i have pushed some fix in master, can you please let me know if it still works as you expect? Thanks!

Yeah, for my usage in our app, everything still works. Cheers!


sql questor

hello,
i have done a python file to automatically generate SQL table needed to be used in the datastudio sample that you provided (i am new to notebook usage and more confident with directly writting scripts (yes i am a boomer)
as i am quite new with python, it has been quite hard for me to understand that after the main.py, i had to ingest queries that were in sql directory to use it in the sample...
may be that could help
i agreed with Google participation policies, but can't for now upload anything so i put it there...
and thanks for this very usefull work :)
sql_questor.py.txt

Ahh, I see what you're trying to do. The current codease does not automatically upload the SQL sample queries to BigQuery for analysis. I will look into adding something to our main.py process that will capture what you have requested. Thanks for sharing!


[Flow broker] 'Request body' should not be mandatory - http node

Applied to version 0.4.0.
the field 'Request body' should not be mandatory in http node.
For example,  we can send a Get request without body

Ticket analysis meeting (April, 3rd): Severity: High, but Priority: Low. Fix for 0.5.

Flow execution error when sending a GET request without a body.
<20:09:21 24/06/2020> -- |http -- DEBUG: Executing http node...
<20:09:21 24/06/2020> -- |http -- DEBUG: ... http node was not successfully executed.
<20:09:21 24/06/2020> -- |http -- ERROR: Error while retrieving http payload: TypeError: Cannot read property 'shift' of null
<20:09:21 24/06/2020> -- WARN: [executor] Node (Af7654b68b05558:http) execution failed. Error: httpin.errors.no-body. Aborting flow 4b1cdde4-ad87-49d3-b578-de59f4f73070 branch execution.

Fixed in v0.4.3-rc.1.
Although in the node configuration there is an indication of the mandatory field, the flow is saved without the need to fill in the 'Request body' field. (body: '')

flowbroker_1                  | <14:13:57 13/08/2020> -- |flowMngr -- DEBUG: Parsing new flow...
flowbroker_1                  | <14:13:57 13/08/2020> -- |flowMngr -- DEBUG: New flow: ParsedFlow {
flowbroker_1                  |   heads: [],
flowbroker_1                  |   devices: [],
flowbroker_1                  |   templates: [],
flowbroker_1                  |   nodes: {},
flowbroker_1                  |   red:
flowbroker_1                  |    [ { id: 'f66d93e3.8f42e', type: 'tab', label: 'Flow 1' },
flowbroker_1                  |      { id: '853a54b9.f53208',
flowbroker_1                  |        type: 'device template in',
flowbroker_1                  |        z: 'f66d93e3.8f42e',
flowbroker_1                  |        name: 'ônibus',
flowbroker_1                  |        device_template: { id: 6 },
flowbroker_1                  |        status: 'false',
flowbroker_1                  |        device_template_id: 6,
flowbroker_1                  |        x: 136.5,
flowbroker_1                  |        y: 144,
flowbroker_1                  |        wires: [ [ 'ce40a438.e567c8' ] ] },
flowbroker_1                  |      { id: '784cd62a.09b088',
flowbroker_1                  |        type: 'http',
flowbroker_1                  |        z: 'f66d93e3.8f42e',
flowbroker_1                  |        name: '',
flowbroker_1                  |        method: 'GET',
flowbroker_1                  |        ret: 'txt',
flowbroker_1                  |        body: '',
flowbroker_1                  |        response: 'responseGet',
flowbroker_1                  |        url: 'http://ptsv2.com/t/3fbhu-1543424220/post',
flowbroker_1                  |        x: 918.5,
flowbroker_1                  |        y: 408,
flowbroker_1                  |        wires: [ [] ] },
flowbroker_1                  |      { id: 'ce40a438.e567c8',
flowbroker_1                  |        type: 'switch',
flowbroker_1                  |        z: 'f66d93e3.8f42e',
flowbroker_1                  |        name: 'velocidade >= 50',
flowbroker_1                  |        property: 'payload.velocidade',
flowbroker_1                  |        propertyType: 'msg',
flowbroker_1                  |        rules: [ { t: 'gte', v: '50', vt: 'num' } ],
flowbroker_1                  |        checkall: 'true',
flowbroker_1                  |        outputs: '1',
flowbroker_1                  |        x: 409.5,
flowbroker_1                  |        y: 210,
flowbroker_1                  |        wires: [ [ '5d51ecfa.baa4e4' ] ] },
flowbroker_1                  |      { id: '5d51ecfa.baa4e4',
flowbroker_1                  |        type: 'template',
flowbroker_1                  |        z: 'f66d93e3.8f42e',
flowbroker_1                  |        name: '',
flowbroker_1                  |        field: 'reqBody',
flowbroker_1                  |        fieldType: 'msg',
flowbroker_1                  |        syntax: 'handlebars',
flowbroker_1                  |        template: '{"payload": "velocidade muito alta: {{payload.velocidade}} km/h!"}',
flowbroker_1                  |        output: 'str',
flowbroker_1                  |        x: 651.5,
flowbroker_1                  |        y: 318,
flowbroker_1                  |        wires: [ [ '784cd62a.09b088' ] ] } ] }
flowbroker_1                  | <14:13:57 13/08/2020> -- |flowMngr -- DEBUG: Ignoring 'tab' node.
flowbroker_1                  | <14:13:57 13/08/2020> -- |flowMngr -- DEBUG: ... flow was successfully parsed.

HTTP node execution failed (#1650)

Tested on v0.5.0-alpha4. Http node was not successfully executed. I got the following log:
<19:25:52 25/09/2020> -- |http -- DEBUG: Executing http node...
<19:25:52 25/09/2020> -- |http -- DEBUG: ... http node was not successfully executed.
<19:25:52 25/09/2020> -- |http -- ERROR: An exception was thrown: TypeError: Cannot read property 'headers' of undefined
<19:25:52 25/09/2020> -- WARN: [executor] Node (A6705178ca00ef:http) execution failed. Error: TypeError: Cannot read property 'headers' of undefined
    at DataHandler.handleMessageRequest (/opt/flowbroker/orchestrator/src/nodes/http/index.js:155:25)
    at DataHandler.handleMessage (/opt/flowbroker/orchestrator/src/nodes/http/index.js:123:42)
    at Executor.hop (/opt/flowbroker/orchestrator/src/executor.js:57:48)
    at channel.consume (/opt/flowbroker/orchestrator/src/amqp.js:80:18)
    at Channel.BaseChannel.dispatchMessage (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:478:12)
    at Channel.BaseChannel.handleDelivery (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:487:15)
    at emitOne (events.js:116:13)
    at Channel.emit (events.js:211:7)
    at /opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:273:10
    at Channel.content (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:326:9)
    at Channel.C.acceptMessageFrame (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:241:31)
    at Channel.C.accept (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/channel.js:394:17)
    at Connection.mainAccept [as accept] (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/connection.js:64:33)
    at Socket.go (/opt/flowbroker/orchestrator/node_modules/amqplib/lib/connection.js:478:48)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7). Aborting flow ebdad936-0e33-4a9b-9521-93fdc049bead branch execution.

Tested in v0.7.0-rc.1

flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: Got a message in topic admin.device-data.
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: There are 1 callbacks registered.
flowbroker_1                  | <20:50:29 21/06/2021> -- |messenger -- DEBUG: Received message: { value: <Buffer 7b 22 6d 65 74 61 64 61 74 61 22 3a 7b 22 64 65 76 69 63 65 69 64 22 3a 22 66 61 34 63 62 39 22 2c 22 74 65 6e 61 6e 74 22 3a 22 61 64 6d 69 6e 22 2c ... >,
flowbroker_1                  |   size: 100,
flowbroker_1                  |   key: <Buffer 61 64 6d 69 6e 3a 66 61 34 63 62 39>,
flowbroker_1                  |   topic: 'admin.device-data',
flowbroker_1                  |   offset: 57,
flowbroker_1                  |   partition: 0,
flowbroker_1                  |   timestamp:<PHONE_NUMBER>662 }
flowbroker_1                  | <20:50:29 21/06/2021> -- |messenger -- DEBUG: Emitting new event message for subject device-data@admin
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: { 'a0ae3abe-3ecf-4814-ba52-50767862b8d8': [Function] }
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: Mapping device fa4cb9 ===into===> event_queue1
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: Pre-processing event {"source":"device","message":"{\"metadata\":{\"deviceid\":\"fa4cb9\",\"tenant\":\"admin\",\"timestamp\":1624308629662},\"attrs\":{\"medida\":1.5}}"}
flowbroker_1                  | <20:50:29 21/06/2021> -- |dev cache -- DEBUG: retriving data related to admin:fa4cb9 from cache
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: [ingestor] got new device event: { metadata: { tenant: 'admin', timestamp:<PHONE_NUMBER>662 },
flowbroker_1                  |   event: 'publish',
flowbroker_1                  |   data: { attrs: { medida: 1.5 }, id: 'fa4cb9' } }
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: [executor] will handle node Ae593bc2cb200a:http
flowbroker_1                  | <20:50:29 21/06/2021> -- |http -- DEBUG: Executing http node...
flowbroker_1                  | <20:50:29 21/06/2021> -- |http -- DEBUG: HTTP request about to be sent: Url {
flowbroker_1                  |   protocol: 'http:',
flowbroker_1                  |   slashes: true,
flowbroker_1                  |   auth: null,
flowbroker_1                  |   host: 'ptsv2.com',
flowbroker_1                  |   port: null,
flowbroker_1                  |   hostname: 'ptsv2.com',
flowbroker_1                  |   hash: null,
flowbroker_1                  |   search: null,
flowbroker_1                  |   query: null,
flowbroker_1                  |   pathname: '/t/r4bml-1575294028/post',
flowbroker_1                  |   path: '/t/r4bml-1575294028/post',
flowbroker_1                  |   href: 'http://ptsv2.com/t/r4bml-1575294028/post',
flowbroker_1                  |   method: 'GET',
flowbroker_1                  |   headers: {} }
flowbroker_1                  | <20:50:29 21/06/2021> -- DEBUG: Queued event [object Object]
flowbroker_1                  | <20:50:30 21/06/2021> -- |http -- DEBUG: ... http node was successfully executed.
flowbroker_1                  | <20:50:30 21/06/2021> -- DEBUG: [executor] hop (http) result: [{"payload":{"metadata":{"tenant":"admin","timestamp":1624308629662},"event":"publish","data":{"attrs":{"medida":1.5},"id":"fa4cb9"}},"responseGET":{"statusCode":200,"headers":{"content-type":"text/plain; charset=utf-8","vary":"Accept-Encoding","access-control-allow-origin":"*","x-cloud-trace-context":"21b9525f4a91f84505e058337d8e320d","date":"Mon, 21 Jun 2021 20:50:30 GMT","server":"Google Frontend","content-length":"54","connection":"close"},"responseUrl":"http://ptsv2.com/t/r4bml-1575294028/post","payload":"Thank you for this dump. I hope you have a lovely day!"}}]
flowbroker_1                  | <20:50:30 21/06/2021> -- DEBUG: [executor] will handle node A1b4ddf2b1bdf91:notification
flowbroker_1                  | <20:50:30 21/06/2021> -- |notification -- DEBUG: output is: { msgID: '4ae79b6c-f132-49e5-b34b-ef9685d623cd',
flowbroker_1                  |   timestamp:<PHONE_NUMBER>257,
flowbroker_1                  |   message: 'http GET',
flowbroker_1                  |   metaAttrsFilter:
flowbroker_1                  |    { statusCode: 200,
flowbroker_1                  |      headers:
flowbroker_1                  |       { 'content-type': 'text/plain; charset=utf-8',
flowbroker_1                  |         vary: 'Accept-Encoding',
flowbroker_1                  |         'access-control-allow-origin': '*',
flowbroker_1                  |         'x-cloud-trace-context': '21b9525f4a91f84505e058337d8e320d',
flowbroker_1                  |         date: 'Mon, 21 Jun 2021 20:50:30 GMT',
flowbroker_1                  |         server: 'Google Frontend',
flowbroker_1                  |         'content-length': '54',
flowbroker_1                  |         connection: 'close' },
flowbroker_1                  |      responseUrl: 'http://ptsv2.com/t/r4bml-1575294028/post',
flowbroker_1                  |      payload: 'Thank you for this dump. I hope you have a lovely day!',
flowbroker_1                  |      shouldPersist: true },
flowbroker_1                  |   subject: 'user_notification' }
flowbroker_1                  | <20:50:30 21/06/2021> -- |messenger -- DEBUG: Trying to publish someting. Current producer topics are { 'dojot.device-manager.device':
flowbroker_1                  |    { admin: 'admin.dojot.device-manager.device',
flowbroker_1                  |      teste: 'teste.dojot.device-manager.device',
flowbroker_1                  |      test: 'test.dojot.device-manager.device' },
flowbroker_1                  |   'device-data':
flowbroker_1                  |    { admin: 'admin.device-data',
flowbroker_1                  |      teste: 'teste.device-data',
flowbroker_1                  |      test: 'test.device-data' },
flowbroker_1                  |   'dojot.notifications':
flowbroker_1                  |    { admin: 'admin.dojot.notifications',
flowbroker_1                  |      teste: 'teste.dojot.notifications',
flowbroker_1                  |      test: 'test.dojot.notifications' },
flowbroker_1                  |   'dojot.ftp':
flowbroker_1                  |    { admin: 'admin.dojot.ftp',
flowbroker_1                  |      teste: 'teste.dojot.ftp',
flowbroker_1                  |      test: 'test.dojot.ftp' } }
flowbroker_1                  | <20:50:30 21/06/2021> -- |notification -- DEBUG: ...notification node was successfully executed.
flowbroker_1                  | <20:50:30 21/06/2021> -- DEBUG: [executor] hop (notification) result: []
flowbroker_1                  | <20:50:30 21/06/2021> -- DEBUG: Got a message in topic admin.dojot.notifications.
flowbroker_1                  | <20:50:30 21/06/2021> -- DEBUG: There are 1 callbacks registered.
flowbroker_1                  | <20:50:30 21/06/2021> -- |messenger -- DEBUG: Received message: { value: <Buffer 7b 22 6d 73 67 49 44 22 3a 22 34 61 65 37 39 62 36 63 2d 66 31 33 32 2d 34 39 65 35 2d 62 33 34 62 2d 65 66 39 36 38 35 64 36 32 33 63 64 22 2c 22 74 ... >,
flowbroker_1                  |   size: 589,
flowbroker_1                  |   key: null,
flowbroker_1                  |   topic: 'admin.dojot.notifications',
flowbroker_1                  |   offset: 12,
flowbroker_1                  |   partition: 0,
flowbroker_1                  |   timestamp:<PHONE_NUMBER>258 }
flowbroker_1                  | <20:50:30 21/06/2021> -- |messenger -- DEBUG: Emitting new event message for subject dojot.notifications@admin
flowbroker_1                  | <20:50:30 21/06/2021> -- |messenger -- DEBUG: No one is listening to subject dojot.notifications events.
flowbroker_1                  | <20:50:30 21/06/2021> -- |messenger -- DEBUG: Message produced successfully


Fix git statements order

One has to change into the repo directory first before the submodules can be updated.
Fixes #15

Thanks @igitur  :)


compressToUTF16 doesn't work in Internet Explorer when storing in cookies

I am facing issues when compressing and storing values in cookies. I am using compressToUTF16 which works very well with localStorage however fails with cookies.
Browser: IE11
lz-string version: latest

Seems like IE doesn't allow Unicode (UTF-16 including) in cookies. For details see https://stackoverflow.com/questions/1969232/allowed-characters-in-cookies . I'd recommend to use compressToBase64 if you need to store compressed info in cookies.


Error: No matching artifact found

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (e520767 2024-12-06T00:23:08.381567000Z)
What command(s) is the bug in?
forge verify-contract
Operating System
macOS (Intel)
Describe the bug
forge verify-contract --num-of-optimizations 400 --watch --constructor-args 0x --compiler-version 0.8.20+commit.a1b79de6 0x6df7bf308ABaf673f38Db316ECc97b988CE1Ca78 src/mixins/Create3Factory.sol:Create3Factory [...]

Error: No matching artifact found for Create3Factory

foundryup to an older version like foundryup -v nightly-f3376a6e45ffacd45125e639e5f50bec0c0900be and now it works.
see repo here:
https://github.com/0xCalibur/foundry-issue

Related to #9483


GEOMESA-3375 Kafka admin client consumer props

Ticket: https://geomesa.atlassian.net/browse/GEOMESA-3375
This fix allows for consumer properties set in the geoserver data store to be passed into the kafka admin client.
Use case: SASL connection properties set within geoserver were not making their way to the admin client causing failures communicating to the broker. This was only an issue when not using zookeeper.

Seems fine - I don't know if there would ever be situations where you wouldn't want the consumer props there, but we can address that if it ever comes up :)

Could you update the 2 AdminClient usages in KafkaDataStore to have the same logic? that way it's consistent across the board.


Project is missing license

Please add license designation/type to the project for clarity - assuming this is open source but not specifically stated. Possible template is
https://github.com/bitcoin/bitcoin?tab=MIT-1-ov-file#readme

Thanks for spotting! Added the license.

Thanks :-)


Replace akka dependency in nvim project with something else

There is just no reason to have a dependency to akka in the small Nvim layer. Something else should be used.

This has been accomplished in https://github.com/sschaef/ide-research/commit/db2df855be114001cf310dc2b9d057f348ad6766 and in https://github.com/sschaef/ide-research/commit/1a360f7b02f72cc652d52b84ec42af794cae756a


Celebration for player beating their own high score

As mentioned in #4 the bot should score each player's all-time high-score, and if/when they beat their all-time high score there should (could) be some kind of animation / sound / on-screen celebration.

@all-contributors add @surlydev for ideas

done in vNext


Update dependencies

[ ] https://github.com/carbon-design-system/carbon-platform/pull/299
[ ] https://github.com/carbon-design-system/carbon-platform/pull/300
[ ] https://github.com/carbon-design-system/carbon-platform/pull/301
[ ] https://github.com/carbon-design-system/carbon-platform/pull/302
[ ] https://github.com/carbon-design-system/carbon-platform/pull/303
[ ] https://github.com/carbon-design-system/carbon-platform/pull/333

Added #333 to list.

Done!


Improve guide; add Apache Maven is required

Hello there,
I have just followed the instructions at http://j2objc.org/docs/Adding-the-JreEmulation-project-to-your-Xcode-project.html. But I got this error:
mvn -q generate-resources dependency:sources
make[1]: mvn: No such file or directory

Could you please add to the guide that Apache Maven is required.
Thanks a lot in advance :)

Thanks for the suggestion, I'll update it later today. In the meantime,
here are some useful StackOverflow installation tips:
http://stackoverflow.com/questions/8826881/maven-install-on-mac-os-x
On Fri, Jan 22, 2016 at 5:35 AM Jens Schwarzer<EMAIL_ADDRESS>wrote:

Hello there,
I have just followed the instructions at
http://j2objcorg/docs/Adding-the-JreEmulation-project-to-your-Xcode-projecthtml
But I got this error:
mvn -q generate-resources dependency:sources
make[1]: mvn: No such file or directory
Could you please add to the guide that Apache Maven is required
Thanks a lot in advance :)
—
Reply to this email directly or view it on GitHub
https://github.com/google/j2objc/issues/691.

Fixed: https://github.com/google/j2objc/commit/4a8c368b75e7163f3ea5284ba8c110c68a16a91b (it may take a few minutes for our site to see this change.)

Excellent @tomball ! Thanks! :D


Merge pull request #3 from marleystroth/main

Add my first file

I have created a new branch, created a file, and made a commit!


Usage with js framework?

Hello, how would i use this with a javascript framework such as reactjs or svelte?

Hello, how would i use this with a javascript framework such as reactjs or svelte?

Possible approaches

@delphius and @neroist recently started an interesting discussion about this. We will create examples of how to do this soon.

Examples will be available after the 2.4.0 first release.


Variables are not displayed in debug console

Have a program like

console.log({
  complex: {
      object: true
  }
});

Debug it it
Nothing is displayed in the debug console, and this error is shown

  ERR element.onDidChangeCount is not a function: TypeError: element.onDidChangeCount is not a function
    at ReplSimpleElementsRenderer.renderElement (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js:122:52)
    at AsyncDataTreeRenderer.renderElement (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js:53:27)
    at TreeRenderer.renderElement (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/tree/abstractTree.js:235:27)
    at PipelineRenderer.renderElement (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/listWidget.js:748:26)
    at ListView.insertItemInDOM (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/listView.js:513:26)
    at ListView._splice (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/listView.js:328:26)
    at ListView.splice (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/listView.js:267:29)
    at file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/splice.js:14:45
    at Array.forEach (<anonymous>)
    at CombinedSpliceable.splice (file:///C:/Users/Connor/Documents/Github/vscode/out/vs/base/browser/ui/list/splice.js:14:30)

Great catch, thanks for filling!