adding --server configs to zoo.cfg

Hi;
I have found a problem with this cookbook or the implementation on my side. I have multiple slaves that try to join the cluster, however, they have been given the zk parameter for all masters, the problem is some nodes find the LIVE master and are able to register themselves getting a unique ID others attempt to register with the non Live master and they are not being re-directed to the primary master node and are not able to register.
I tried different settings and ended up adding the --server.1, .2 and 3 to the zoo.cfg file manually. Is there something that can be done with this cookbook to get the backup masters to tell the slaves about the LIVE master so that they can join correctly? I am running a mesos cluster solution.
Your help in this regard will be greatly appreciated.
Thanks
ALi.

@aktarali I’m not entirely sure how you mean by “live” versus “non-live” master. We use the exhibitor cookbook to handle configuration of the cluster, which makes things much easier (esp. since it can read a shared config file from S3).
However, if you were to just use this cookbook, you would need to add an entry for each of the servers to the node[:zookeeper][:config] attribute, as well as some other values (pulling this from the ZK docs on setting up a quorum):
# your wrapper cookbook’s attributes/default.rb or similar:

set['zookeeper']['config']['tickTime'] = 2000
set['zookeeper']['config']['initLimit'] = 11
set['zookeeper']['config']['syncLimit'] = 17
set['zookeeper']['config']['server.1'] = 'zoo1:2888:3888'
set['zookeeper']['config']['server.2'] = 'zoo2:2888:3888'
set['zookeeper']['config']['server.3'] = 'zoo3:2888:3888'

Important to note: while this cookbook does use symbols for its attribute keys, the period is an illegal character for a ruby symbol, so I’ve used strings for the keys instead. I.e., node['zookeeper'] == node[:zookeeper].
You could probably find your ZK nodes via Chef search & set the attributes that way:
i = 0
search(:node,
       "chef_environment:#{node.chef_environment} AND " \
       'roles:zookeeper').map do |n|
  i += 1
  node.set['zookeeper']['config']["server.#{i}"] =
    "#{n['fqdn']}:2888:3888"
end

I can’t promise that search will work, and you might end up shuffling the servers around if the search changes the order, but that should give you something to work off of.
Or just use Exhibitor :wink:

Do you mind clarifying how to use Exhibitor with respect to this cookbook?

@jeffbyrnes
chef-exhibitor depends on chef-zookeeper, so chef-zookeeper needs to be on your chef server, but chef-exhibitor will handle the install of zookeeper for you.
Here is a wrapper cookbook that works for us: https://gist.github.com/williamsjj/9839b99a5ed0f3f6103f

@fnicholas yes, that’s the cookbook to use. You would wrap that cookbook in the manner that @williamsjj indicates. As it tightly depends on the zookeeper cookbook, it will handling including the necessary recipes from this cookbook, installing & configuring ZK, then install & configure Exhibitor, which will start itself up, and then manage the ZK processes for you.
I’m going to go ahead & close this issue, as we’ve gotten off-topic here.

@jeffbyrnes It might be helpful to have a short comment and example of wrapping the cookbook properly in the README. It took me about an hour of spelunking through both cookbooks to get it right.

@williamsjj yeah, I’ve opened an issue on the exhibitor cookbook to cover doing just that. Thanks for sticking with it & sorting it out.

@williamsjj - thank you for your assistance. if I want to configure a 3 node zookeeper cluster using chef-exhibitor (which depends on chef-zookeeper) how should I do about it? Im trying to figure out where to put the nodes and how to write the wrapper cookbook recipe. Any information you provide will be very helpful.

here's my attributes/default.rb
default[:zookeeper][:version]     = '3.4.6'
default[:zookeeper][:checksum]    = '01b3938547cd620dc4c93efe07c0360411f4a66962a70500b163b59014046994'
default[:zookeeper][:mirror]      = 'http://www.poolsaboveground.com/apache/zookeeper'
default[:zookeeper][:user]        = 'zookeeper'
default[:zookeeper][:install_dir] = '/opt/zookeeper'
default[:zookeeper][:java_opts] = "-Xms128M -Xmx512M"
default[:zookeeper][:service_style] = 'exhibitor'
node.set['exhibitor']['cli']['port'] = 8700
node.set['zookeeper']['config']['tickTime'] = 2000
node.set['zookeeper']['config']['initLimit'] = 11
node.set['zookeeper']['config']['syncLimit'] = 17
node.set['zookeeper']['config']['server.1'] = '<IP_ADDRESS>:2888:3888'
node.set['zookeeper']['config']['server.2'] = '<IP_ADDRESS>:2888:3888'
node.set['zookeeper']['config']['server.3'] = '<IP_ADDRESS>:2888:3888'

and my recipes/default.rb
node.set['exhibitor']['cli']['port'] = 8700
include_recipe "exhibitor::default"
include_recipe "exhibitor::service"

I'm I missing anything else? Please help me out here.

@jeffbyrnes Sorry about the reference to you in my initial comment...I meant to reference fnicholas as opposed to looking like a shout out to you. :)
@fnicholas In your wrapper you're going to want attributes at a higher level than default to ensure they deterministically override the cookbooks you're wrapping. Also, I'd consider handling your overrides using node.set syntax in recipes/default.rb as I've found them more reliable, but that's a personal preference. You should spend some time digging into wrapper cookbooks in general to learn what works for you:

http://stackoverflow.com/questions/28466623/chef-wrapper-cookbook-best-practices
https://www.chef.io/blog/2013/12/03/doing-wrapper-cookbooks-right/

Also, I would recommend considering the S3 option for storing your shared config. I think it's a mistake to hard code IPs except for localhost into cookbooks. Normally we'd use Chef Search to discover the nodes, but that would require every node to reconverge every time you add a new ZK node...which depending on your Chef run interval could mean your cluster acting bizarrely for up to 15 minutes per existing node. So we went the S3 route that Exhibitor supports and its worked quite well.

I plan to use the chef search method but I'd like to know about the s3  S3 route. what is  S3 route? Also, im not using nodes on AWS.

@fnicholas None of our nodes are on AWS either. You just configure Exhibitor to store configs on a shared S3 bucket and key. You really need to read the docs on Exhibitor. :) https://github.com/Netflix/exhibitor/wiki/Shared-Configuration

Hi Guys;
I used the following in my wrapper cookbook:
#Wrapper zookeeper cookbook to search through Chef CMDB
include_recipe 'zookeeper'
include_recipe 'zookeeper::service'
i = 0
search(:node,
"chef_environment:#{node.chef_environment} AND "
'roles:zookeeper').map do |n|
i += 1
node.set['zookeeper']['config']["server.#{i}"] =
"#{n['fqdn']}:2888:3888"
end
bash 'add_myid' do
code <<-EOH
cat find / \! -type l -name zoo.cfg|grep hostname|cut -d"=" -f1|cut -d"." -f2 > /var/lib/zookeeper/myid
chown zookeeper:zookeeper /var/lib/zookeeper/myid
zookeeper-server-initialize --myid=cat /var/lib/zookeeper/myid --force
EOH
end
The problem I am having right now on a 3 node zk cluster is that when chef-client runs, each node is getting a different "server.$number" configurations in zoo.cfg. So, each node has different zoo.cfg config.
For example zoo.cfg on node1 looks like:
server.1=ip-192-31-42-197.eu-west-1.compute.internal:2888:3888
server.2=ip-192-31-45-346.eu-west-1.compute.internal:2888:3888
server.3=ip-192-31-41-183.eu-west-1.compute.internal:2888:3888
On node 2:
server.1=ip-192-31-45-346.eu-west-1.compute.internal:2888:3888
server.2=ip-192-31-42-197.eu-west-1.compute.internal:2888:3888
server.3=ip-192-31-41-183.eu-west-1.compute.internal:2888:3888
and so on. I am as you can see using this file to dynamically grab the server.1 string and using it to complete myid param.
My biggest headache currently is that the configs of zoo.cfg is not consistent across all nodes.
Can anyone assist? On a single node with 1 master, everything works perfectly, however, on a 3 node cluster every time chef-client runs, chef CMDB seems to be giving differing zk values for zoo.cfg.
Cheers for all your help and time.
Ali.

@aktarali tweaked the formatting there for ease of readability, but no content changed. I’m on vacation/holiday until next week, but will try to give this some :eyes: then. Stay tuned!

really appreciate the help. The best method is the chef search from cmdb as
it has the information on all nodes and the roles attached. Don't
understand why the configs differ on each chef run.
Thanks
Ali.
On 22 Mar 2016 20:19, "Jeff Byrnes"<EMAIL_ADDRESS>wrote:

@aktarali https://github.com/aktarali tweaked the formatting there for
ease of readability, but no content changed. I’m on vacation/holiday until
next week, but will try to give this some [image: :eyes:] then. Stay
tuned!
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/SimpleFinance/chef-zookeeper/issues/155#issuecomment-200003526

@aktarali so you’re getting the data you need, but Chef Search does not necessarily return things in the same order every time. As such, you’ll want to sort the values before assigning them to the attributes.

Hi,
Sort the values how? Using what order? How to achieve consistency across
all masters?
Hope you're having a great Easter.
Thanks
Ali.
On 28 Mar 2016 15:53, "Jeff Byrnes"<EMAIL_ADDRESS>wrote:

@aktarali https://github.com/aktarali so you’re getting the data you
need, but Chef Search does not necessarily return things in the same order
every time. As such, you’ll want to sort the values before assigning them
to the attributes.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/SimpleFinance/chef-zookeeper/issues/155#issuecomment-202425755

Alpha order, to start:
i = 0
search(
  :node,
  "roles:zookeeper AND chef_environment:#{node.chef_environment}"
).sort.map do |n|
  i += 1
  node.set['zookeeper']['config']["server.#{i}"] = "#{n['fqdn']}:2888:3888"
end

As for preserving this order when adding new nodes… that would be much trickier. I’d encourage exploring using Exhibitor w/ its S3 shared config system (the exhibitor cookbook is a great way to do that) instead of manually managing the config.

Jeff,
Cheers bud. As for s3 config, that's still depending on one additional tool
where node information already exists in chef cmdb. I will treat this and
let you know how I can on.
Thanks for all your help.
Cheers
Ali.
On 28 Mar 2016 16:50, "Jeff Byrnes"<EMAIL_ADDRESS>wrote:

Alpha order, to start:
i = 0
search(
:node,
"roles:zookeeper AND chef_environment:#{node.chef_environment}"
).sort.map do |n|
i += 1
node.set['zookeeper']['config']["server.#{i}"] = "#{n['fqdn']}:2888:3888"end
As for preserving this order when adding new nodes… that would be much
trickier. I’d encourage exploring using Exhibitor w/ its S3 shared config
system (the exhibitor cookbook
https://supermarket.chef.io/cookbooks/exhibitor is a great way to do
that) instead of manually managing the config.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/SimpleFinance/chef-zookeeper/issues/155#issuecomment-202451398


Workflow Worker out of memory

In our system we have workflows that runs for a week or more (waiting on signals/timers).
We have around 32K such active workflows.
It seems like all the workflows are live in the workflow workers, which eventually led to High memory consumption and worker crashes.
The workflows recovered successfully, but I wonder if there is any way to overcome this issue - is there a way to tell the workflow worker to "release" a workflow once it's in select statement, or anything similar that will assist the memory consumption?

Use worker.SetStickyWorkflowCacheSize to reduce the cache size.

Works like a charm. Thanks!


revert: jsx/no-leaked-conditional-rendering, closes #109

Closes #109

@Rel1cx Sorry about that 🫣

@Rel1cx Sorry about that 🫣

That's alright, it took a bit of a detour, but I found a couple of new and useful APIs in the process!


VTS L1 Enhancement - Header file 3.0.0 updates - Device Setting - HDMI In

This task is to consider the latest header file updates and consider if there are any changes in L1 concerning the newest header files available at tag 3.0.0

pull request merged https://github.com/rdkcentral/rdk-halif-test-device_settings/pull/91


Optional Arguments

Hey together,
I tried using the historicaldata function, but with some additional arguments (e.g. Currncy). Unfortunately I always get an error. Can anybody help me?
Thanks in Advanced!

Precisely, I have seen the optional argument for currency is CCY ISO-3, but I do not know what exactly I have to plug in for USD e.g. I tried „CCY USD“, „CCY 840“, „USD“ but it all does not work.

Re-wrote the code extensively, and this time I provided more extensive examples some which include the use of overrides.
Also note that from now the code is heavily commented and that you can find details on how to use functions


Use version numbers instead of names with previous versions

As a user of ATT&CK, I want to be able to visit previous versions of the site by their version numbers instead of names. In other words, I want to be able to visit /v5/ instead of /july2019/.
Currently deployed previous versions should be updated with redirects to their new version-numbered pages.

Even though we have minor content versions (e.g v5.1, v5.2), we only preserve each major version of the site. The major version preserved would be the same as the highest patch version, e.g /v5/ would correspond to v5.3 and v5.2, v5.1 and v5.0 wouldn't be preserved.
The version number used is the content version number, not the website source code version number.


Stop animation conditionally

Sorry to write as a feature request.
Can you help me figure out how to stop the animation (not with the 'x-q' keys, but by condition, for example, after playing the last frame of the scene). Looking at the documentation, I see that the 'StopApplication' exception needs to be thrown, but I don't understand the logic.
How do I fix the code so that the animation closes after the "I'm" scene? For example.
#!/usr/bin/env python3

from asciimatics.renderers import FigletText, Fire
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.effects import Print
from asciimatics.exceptions import ResizeScreenError
from pyfiglet import Figlet
import sys

def demo(screen):
    scenes = []

    effects = [
        Print(screen,
              Fire(screen.height, 80, "*" * 70, 0.8, 60, screen.colours,
                   bg=screen.colours >= 256),
              0,
              speed=1,
              transparent=False),
        Print(screen,
              FigletText("Help!", "banner3"),
              (screen.height - 4) // 2,
              colour=Screen.COLOUR_BLACK,
              speed=1,
              stop_frame=30),
        Print(screen,
              FigletText("I'm", "banner3"),
              (screen.height - 4) // 2,
              colour=Screen.COLOUR_BLACK,
              speed=1,
              start_frame=30,
              stop_frame=50),
        Print(screen,
              FigletText("on", "banner3"),
              (screen.height - 4) // 2,
              colour=Screen.COLOUR_BLACK,
              speed=1,
              start_frame=50,
              stop_frame=70),
        Print(screen,
              FigletText("Fire!", "banner3"),
              (screen.height - 4) // 2,
              colour=Screen.COLOUR_BLACK,
              speed=1,
              start_frame=70),
    ]
    scenes.append(Scene(effects, 100))

    screen.play(scenes, stop_on_resize=True)

if __name__ == "__main__":
    while True:
        try:
            Screen.wrapper(demo)
            sys.exit(0)
        except ResizeScreenError:
            pass

I have tried from asciimatics.exceptions import ResizeScreenError, StopApplication
and throw an exception, but the animation keeps looping anyway.

There are many ways you can control the end of the animation.  If you know the exact timing, you can just set the duration of the Scene and make sure that you don't loop playback (by setting repeat=False when you call play).
If you need to tie it to something else to trigger it, you need your application to throw the exception inside the play loop.  That typically means you need to handle it inside input/output handling for the classes (so typically process_event or update / _update).
If you want to see some examples, search for raise in the sample code.


Improve and update Vorpal bot steps

I have updated the Using Vorpal with Wechaty page to add some better steps in the Building the bot > Writing code for bot section so that users can get a better understanding of the code. And, have also made some other small improvements.
Doc screenshot after update:

There are a few more changes (not attaching the full screenshot, it's too large)

Tag: #891

@proudofsimin I have added some information about Vorpal and improved the introduction of this tutorial page.

@lijiarui I have updated the GitHub repo links with the official Wechaty Vorpal Contrib repo.

@lijiarui I tried out by running on localhost, for me it works fine:

Can you please once try visiting this link if it is working here because this is the exactly CodeSandbox that I have embedded in the docs?

@lijiarui I tried out by running on localhost, for me it works fine:

Can you please once try visiting this link if it is working here because this is the exactly CodeSandbox that I have embedded in the docs?

Now it can works, although it still has some error, I think this is related to wechat4u, so I would ignore this.

I think for this vorpal part, we still have 3 part need improvement, despite they already merged by @huan before:
1. We should use a tab to change Linux/Mac/Windows running the command
I wrote them in PR 963  and the issue is the same as this one.
2. We should use npm install instead of add package name in package.json
I wrote them in PR 888
###3. I don't think we should define scrips in this part because these scrips have no relation to vorpal plugin

@lijiarui I have made the required changes.
Btw, some of the previous CI builds of the merged commits have not passed, that's why this one is also failing.

@sbis04 It seems have some sidebar issue for vorpal, pls make github action green.

@lijiarui Have made the CI green.

Good job！


Getting ready for v3.1

The features we are going to v3.1:
Find in the file,
return the number of characters written

Good, but the EOF is also counted, maybe we should  do it like this :
print(t_char -1 )  assuming that EOF is also counted

we assume that space and tabs are counted as a char

Now it works, let me shift my focus on word find mode

I'll make another pull request after merging this.


Please help I have changed to android v1 embedding and this error is coming

../../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: Error: The method 'File.create' has fewer named arguments than those of overridden method 'File.create'.
Future create({bool recursive = false});
^
org-dartlang-sdk:///dart-sdk/lib/io/file.dart: Context: This is the overridden method ('create').
../../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: Error: The method 'File.create' doesn't have the named parameter 'exclusive' of overridden method 'File.create'.
Future create({bool recursive = false});
^
org-dartlang-sdk:///dart-sdk/lib/io/file.dart: Context: This is the overridden method ('create').
../../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/forwarding/forwarding_file.dart:22:8: Error: The method 'ForwardingFile.createSync' has fewer named arguments than those of overridden method 'File.createSync'.
void createSync({bool recursive = false}) =>
^
org-dartlang-sdk:///dart-sdk/lib/io/file.dart: Context: This is the overridden method ('createSync').
../../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/forwarding/forwarding_file.dart:22:8: Error: The method 'ForwardingFile.createSync' doesn't have the named parameter 'exclusive' of overridden method 'File.createSync'.
void createSync({bool recursive = false}) =>
^
org-dartlang-sdk:///dart-sdk/lib/io/file.dart: Context: This is the overridden method ('createSync').
lib/ui/pages/home.dart:51:19: Error: No named parameter with the name 'title'.
title: tabNo == 0 ? Text("Home") : Container()),
^^^^^
/C:/src/flutter/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart:25:9: Context: Found this candidate, but the arguments don't match.
const BottomNavigationBarItem({
^^^^^^^^^^^^^^^^^^^^^^^
lib/ui/pages/home.dart:54:19: Error: No named parameter with the name 'title'.
title: tabNo == 1 ? Text("Planner") : Container()),
^^^^^
/C:/src/flutter/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart:25:9: Context: Found this candidate, but the arguments don't match.
const BottomNavigationBarItem({
^^^^^^^^^^^^^^^^^^^^^^^
lib/ui/pages/home.dart:58:19: Error: No named parameter with the name 'title'.
title: tabNo == 3 ? Text("Videos") : Container()),
^^^^^
/C:/src/flutter/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart:25:9: Context: Found this candidate, but the arguments don't match.
const BottomNavigationBarItem({
^^^^^^^^^^^^^^^^^^^^^^^
lib/ui/pages/home.dart:61:19: Error: No named parameter with the name 'title'.
title: tabNo == 4 ? Text("Leaderboard") : Container()),
^^^^^
/C:/src/flutter/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart:25:9: Context: Found this candidate, but the arguments don't match.
const BottomNavigationBarItem({
^^^^^^^^^^^^^^^^^^^^^^^
lib/ui/widgets/topBar.dart:87:17: Error: The getter 'BlacklistingTextInputFormatter' isn't defined for the class '_TopBarState'.

'_TopBarState' is from 'package:elearning/ui/widgets/topBar.dart' ('lib/ui/widgets/topBar.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'BlacklistingTextInputFormatter'.
BlacklistingTextInputFormatter.singleLineFormatter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../../../AppData/Local/Pub/Cache/hosted/pub.dev/flutter_calendar_carousel-2.0.3/lib/flutter_calendar_carousel.dart:490:16: Error: The method 'FlatButton' isn't defined for the class '_CalendarState'.
'_CalendarState' is from 'package:flutter_calendar_carousel/flutter_calendar_carousel.dart' ('../../../AppData/Local/Pub/Cache/hosted/pub.dev/flutter_calendar_carousel-2.0.3/lib/flutter_calendar_carousel.dart').
Try correcting the name to the name of an existing method, or defining a method named 'FlatButton'.
child: FlatButton(
^^^^^^^^^^
../../../AppData/Local/Pub/Cache/hosted/pub.dev/flutter_calendar_carousel-2.0.3/lib/src/calendar_header.dart:47:32: Error: The method 'FlatButton' isn't defined for the class 'CalendarHeader'.
'CalendarHeader' is from 'package:flutter_calendar_carousel/src/calendar_header.dart' ('../../../AppData/Local/Pub/Cache/hosted/pub.dev/flutter_calendar_carousel-2.0.3/lib/src/calendar_header.dart').
Try correcting the name to the name of an existing method, or defining a method named 'FlatButton'.
Widget _headerTouchable() => FlatButton(
^^^^^^^^^^
../../../AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.0.2/lib/src/interface/local_platform.dart:46:19: Error: Member not found: 'packageRoot'.
io.Platform.packageRoot; // ignore: deprecated_member_use
^^^^^^^^^^^
Failed to compile application.

You got any solution ?

have you tried checking the lines specified

Can I attend to this project at the job position?

This project is done and resolved. I am sorry to inform you that there is
nothing I can do to fix that.
On Sat, Aug 10, 2024 at 1:53 AM Brother Rabbit @.***>
wrote:

Can I attend to this project at the job position?
—
Reply to this email directly, view it on GitHub
https://github.com/Hash-Studios/e-learning-app/issues/21#issuecomment-2278688254,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG75MRDPFG74R24JKU6OUWTZQUQK3AVCNFSM6AAAAABMJCUTS2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZYGY4DQMRVGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi, @shivanshpachauri
Thanks for letting me know, if you need forward, feel free to collaborate with me.
Best

Hi, Brotherrabbit,
I wanna contribute to a flutter project.
I have skills in flutter and react,
I have a basic understanding of data structures and algorithms
If you have any projects you have been working on and need some help I
would offer my help.
here is my resume
Contact me on : @.***
further contact details are on my resume,
thankfully
Shivansh pachauri
On Sun, Aug 11, 2024 at 6:11 PM Brother Rabbit @.***>
wrote:

Hi, @shivanshpachauri https://github.com/shivanshpachauri
Thanks for letting me know, if you need forward, feel free to collaborate
with me.
Best
—
Reply to this email directly, view it on GitHub
https://github.com/Hash-Studios/e-learning-app/issues/21#issuecomment-2282747986,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG75MRDLLEAR525UL66GE5DZQ5LWTAVCNFSM6AAAAABMJCUTS2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOBSG42DOOJYGY
.
You are receiving this because you were mentioned.Message ID:
@.***>


[Request] localization for app

hello
I want to add Arabic Language for the application and I want to know is there any standard for string keys?
I will do all localization steps from a to z and just I want to be sure about string keys standards.
my regards.

Hi Rashed,
We don't have any particular standards yet. Do you best and I am sure we will be able to accept it
Thank you for the contribution

ok thank you


N2 Handover (Indirect data forwarding)

According to TS23.502 <IP_ADDRESS>, there are two types of data forwading of N2 handover: direct data forwarding and indirect data forwarding, but the current free5gc does not seem to support indirect data forwarding.
When will it be supported?

Hi,
It's implemented now but still in testing.


Is there a point in writing to search-results log file?

Investigate the use of search-results log file. If its use is unnecessary, remove & refactor.

Nope, was used previously as an alternative to the regular log file but for used fir search only.
Instead, we'll log those info lines to the regular log file now.


Autodan

Add AutoDAN implementation (and skeleton of interactive mode, which belongs in a different branch)

I have read the DCO Document and I hereby sign the DCO

recheck


timestamp - interval results in The type of Timestamp(Nanosecond, Some("+00:00")) Minus Utf8 of binary physical should be same

Describe the bug
I ran a query and got an internal error
To Reproduce
Using datafusion-cli:
❯ create table foo(x timestamp) as select '2023-03-01'::timestamp;
0 rows in set. Query took 0.002 seconds.
❯ select * from foo;
+---------------------+
| x                   |
+---------------------+
| 2023-03-01T00:00:00 |
+---------------------+
1 row in set. Query took 0.001 seconds.
❯ select * from foo where x < now() - '1 day';
The type of Timestamp(Nanosecond, Some("+00:00")) Minus Utf8 of binary physical should be same. This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker

Note it is possible to use the interval syntax things work out correctly
❯ select * from foo where x < now() - interval '1 day';
+---------------------+
| x                   |
+---------------------+
| 2023-03-01T00:00:00 |
+---------------------+

Note if you try to use the same predicate outside of the where clause, we get a planning error (correctly):
❯ select now()  - '1 day';
Error during planning: 'Timestamp(Nanosecond, Some("+00:00")) - Utf8' can't be evaluated because there isn't a common type to coerce the types to

Expected behavior

(minimum) select * from foo where x < now() - '1 day'; should produce a planning error (rather than an internal error)
(ideal) Make the query work

Additional context

@alamb select * from foo where x < now() - '1 day' such kind of queries doesn't work in PG. I would think it is expected behavior as '1 day' is really string.

@alamb select * from foo where x < now() - '1 day' such kind of queries doesn't work in PG. I would think it is expected behavior as '1 day' is really string.

I was imagining that we could coerce Utf8 --> interval automatically -- see https://github.com/apache/arrow-datafusion/issues/5652
For this ticket, I think we should generate a Plan error rather than an Internal error


[Fix bug 1138347] Allow users to access browseable APIv2.

Coverage increased (+0.02%) to 93.02% when pulling 0a270d475c148fd5615ee3e95fef40a4ba08a1d4 on johngian:fix-browseable-api into 28d842bc8810ff1cc59c8cc12df7d6ed945b8cb0 on mozilla:master.

@akatsoulas r?

r+wc :beer:

Coverage increased (+0.02%) to 93.02% when pulling 5235830a38aa9efad4ff10425ea804a202126b25 on johngian:fix-browseable-api into 28d842bc8810ff1cc59c8cc12df7d6ed945b8cb0 on mozilla:master.


Compiling error when merge to Unicode

Hi,
I have checkout the latest master and try to compile with VS2015 Update 3.  I get the Unicode merge error  below, do you have any idea what is the problem ?
1>------ Rebuild All started: Project: MarkdownViewerPlusPlus, Configuration: Debug Any CPU ------
1>  Transitive merge
1>  Merged assemblies: C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\MarkdownViewerPlusPlus\obj\Debug\MarkdownViewerPlusPlus.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\CommonMark.NET.0.15.1\lib\net40-client\CommonMark.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\HtmlRenderer.Core.1.5.1-beta1\lib\net40-client\HtmlRenderer.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\HtmlRenderer.PdfSharp.1.5.1-beta1\lib\net40-client\HtmlRenderer.PdfSharp.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\HtmlRenderer.WinForms.1.5.1-beta1\lib\net40-client\HtmlRenderer.WinForms.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\PDFsharp.1.50.4000-beta3b\lib\net20\PdfSharp.Charting.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\PDFsharp.1.50.4000-beta3b\lib\net20\PdfSharp.dll;C:\Users\JLim\Workspace\Development\NetSource\MarkdownViewerPlusPlus-master\packages\Svg.2.3.0\lib\net35\Svg.dll;
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Hi @josephlim75
Could you please try the newest release 0.8.0.
I updated a lot of stuff but mainly focused on VS2017 (plugin template) as it is the only version I got installed. If it is not working I may have problems recreating the issue. But I hope this helps.
Thanks a lot


Fingerprint support

The app should give an option to access by fingerprint and not only by passcode.

Added in https://github.com/btcontract/lnwallet/commit/d7411fc46f60dd3e7d36378fc02edec1c6bfd11c


Exclude option not working using Gulp

exampleModuleName is not being excluded in the output bundle via the following:
gulp.task('js', () => {
    return gulp.src('src/main/web/js/*.js')
    .pipe(tap(file => {
        file.contents = browserify(file.path, {
            debug: true,
            exclude: 'exampleModuleName'
        })
            .bundle();
    }))
    // .pipe other gulp tasks here
    .pipe(gulp.dest('public'))
});

I have tried exclude: 'exampleModuleName', exclude: '${folder.src}/js/exampleModuleName.js', exclude: '**/exampleModuleName.js' but no luck.
Gulp-tap allows you to access the files in the stream as they are piped in.
Our ultimate goal to use the exclude option to exclude all of our app modules, leaving only vendor modules. This is the opposite of the existing option bundleExternal = false which we use to bundle only our app modules. If anyone has any suggestions please do share.
Thanks

It seems that browserify doesn't allow to pass exclude to opts. Try to
 file.contents = browserify(file.path, {
            debug: true
        }).exclude('exampleModuleName').bunde()

The same inconvenience is issued here #1696

closing as duplicate of #1696. thanks!


"Sărmaș", "Fundoaia", "Hodoșa", "Platonești" and "Runc" are listed in the drop-down menu

Description:
"Sărmaș", "Fundoaia", "Hodoșa", "Platonești" and "Runc" are listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Sărmaș" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Sărmaș, HARGHITA (Sărmaș)" and "Comuna Sărmaș, HARGHITA".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Type "Fundoaia" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Fundoaia, HARGHITA (Sărmaș)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Type "Hodoșa" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Hodoșa, HARGHITA (Sărmaș)".

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Type "Platonești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Platonești, HARGHITA (Sărmaș)".

Step 8
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 9
Type "Runc" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Runc, HARGHITA (Sărmaș)".


Why is there a large size difference between ckpt_best.pth and average_model.pth?

💡 Your Question
I used the Roboflow notebook to train a model from scratch for 25 epochs using the yolo_nas_s architecture. While this number of epochs did not produce great results, I looked at the checkpoints and found that the size of ckpt_best.pth was 244.3 mb while average_model.pth was only 73 mb. What is the cause of this discrepancy? Since the only difference between the two checkpoints should be the weights, I would have assumed that they would be the same size.
Coming from YOLOv5 where the small architecture checkpoint size is only a few megabytes, I was hoping for the sizes to be smaller as I'd like to deploy YOLO-NAS on Raspberry Pis with only 512 megabytes of memory. To my understanding, using PTQ and QAT can only reduce model size by up to four times.
Versions
No response

@cvgjnh hi, from what I understand they store additional information which may be used for continuing of learning (last trained epoch for example) and maybe EMA used during training there too, so from this comes large weights size. Averaged model, however, does not use these, so from here comes smaller size. Unfortunately I don't know what is safe to remove


validation for IOC resolver

Object result rules
example
singleton type can have dependency of singleton not scope and not transient

Object
Singleton
Scope
Transient

Singleton
yes
No
No

Scope
yes
yes
No

Transient
yes
yes
.   yes

added clyclic dendency check


Update user-guide for v0.24.x

What this PR does / why we need it:
Add the description for the new command line since the next release is just a patch.
Which issue(s) this PR fixes:
Fixes #
Does this PR introduce a user-facing change?:

NONE

Nice:)
/approve

/changelog


help option is not autocompleted

If a command has a default --help option, it is not picked up when completing options.

Giving this a go at the moment :)

Seeing this jogged my memory. Looks like this was fixed in #1504 by @tiangolo, but didn't close the issue.


Minor fixes to get Provided Storage working.

Handle [PROVIDED] in dfs.datanode.data.dir. Without this fix, it seems dfs.datanode.data.dir cannot handle paths beginning with [PROVIDED] denoting the StorageType.

Move the BlockFormatProvider from fs2img into o.a.h.hdfs.server.namenode so
it can actually be used to iterate over the blocks. This is required by the
dfs.namenode.block.provider.class option. Otherwise we need to dance around with
the classpath pointing to the tools directory.

The modifications in ProvidedReplica#createMetaFile make sense -- I think this is the right way to parse the Collection<String> obtained from dfs.datanode.data.dir. However, this is a fix for handling any dfs.datanode.data.dir configuration parameter which is specified by [StorageType]<path> and not specific to [PROVIDED] type. In particular, note that the operation will never select a [PROVIDED] path as it cannot resolve to a File.
+1 on moving the class.


Inode.v is inefficient

Currently, creating a new inodes from a set of bindings is done by incrementatly adding these bindings to the empty inode. This is super inefficient as it allocates a lot of intermediate arrays for no good reason. This happens for instance when we try to export a large directory during a commit.
We should be able to create an inode tree from a list of bindings directly.

I tracked down the problem using #1269's collapse mode. We indeed spend a lot of time in Inode.v, but the inode code is fine!
We are not allocating intermediate arrays in Inode.v, because your code already optimised that aspect thanks to the ~copy:false parameter here.
There are still a lot of avoidable intermediate allocations in Inode.v though, but they don't seem to matter much. I tried, for example, to reduce to a minimum the number of StepMap.t constructions, but it led to no significant speedups.

After a long investigation I got to the following conclusion: it all comes from the poor implementation of Tree.remove.
Here is the recipe for disaster when running bench/tree.exe with --collapse:

In the bootrap trace we remove one entry of data/commitments, a massive directory.
Tree.Node.remove loads the full directory in memory to a Node.Map, a massive StepMap.
In the bootstrap trace we execute a commit.
During the Tree.export we have to recompute the hash of that directory here.
To do so we convert that Node.Map back to an inode using Node.v here, the full massive directory.

Those situations reprent ~90% of the time spent in Node.v during the commits.
We fix Tree.remove, we fix this issue :)

Interesting! I'm still a bit surprised that incrementally adding values one by one is ok. It's good to have benchmarks to test this assumption :-)
Removes also completely kills the usefulness of the tree cache, so we indeed need to do something about it.


Does this config support for eslint 6.1.0 (lastest version)?

I was update Eslint to 6.1.0 version

my .eslintrc.js in $HOME dir, work fine at Eslint 5.0.0 version
module.exports = {
  env: {
    browser: true,
    commonjs: true,
    es6: true,
    node: true,
  },
  parser: 'babel-eslint',
  plugins: ['react'],
  extends: [
    'eslint:recommended',
    'google',
    'plugin:react/recommended',
    'prefer-object-spread',
  ],
  globals: {
    wx: null,
    App: null,
    Page: null,
    getApp: null,
    Component: null,
  },
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 2017,
    sourceType: 'module',
  },
  rules: {
    'prefer-object-spread/prefer-object-spread': 2,
  }
};

I'm using this config with eslint 6.1.0 and it works for me. I suspect there's something else going on here that's causing issues fro you. I'm going to close this issue, but feel free to reply if you discover some other reason that it's not working properly.

@philipwalton OK


Replacing mocha-pupetter to own runner.

Mocha-pupetter was using as a tool
for running browser on CI for testing Javascript bundles.
There are a few security issues in that dependency,
so we're stoping use it.
Relates-To: OLPEDGE-1724
Signed-off-by: Oleksii Zubko<EMAIL_ADDRESS>

Codecov Report

Merging #243 into master will decrease coverage by 0.2%.
The diff coverage is 73.3%.

@@           Coverage Diff            @@
##           master    #243     +/-   ##
========================================
- Coverage    90.3%   90.2%   -0.2%
========================================
  Files          57      57
  Lines        1594    1609     +15
  Branches      191     192      +1
========================================
+ Hits         1440    1451     +11
- Misses         88      91      +3
- Partials       66      67      +1

Impacted Files
Coverage Δ

...dk-dataservice-read/lib/DataStoreRequestBuilder.ts
90.7% <69.2%> (-9.3%)
:arrow_down:

@here/olp-sdk-authentication/lib/UserAuth.ts
79.6% <100.0%> (+0.4%)
:arrow_up:

.../olp-sdk-authentication/lib/requestToken_common.ts
90.0% <100.0%> (+0.3%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6c9d977...63c93d3. Read the comment docs.


TRACE & DEBUG priority swapped in GELF payload

TRACE should be a lower priority message than DEBUG, but in the GELF payload:
https://github.com/hlb8122/tracing-gelf/blob/03373511c99668021401c6e7d4abf819dddb00cf/src/lib.rs#L436-L437
Is there a use case that I don't understand? I'll submit a small PR to change this but let me know if there's something I don't see.

Proposed change in PR #6.

@overhacked Published 0.4 which fixes this bug.


Love to read more of the make of docs.microsoft.com

Is there a place where we can learn:

more backstories of docs.microsoft.com
HOW-TO stories of the doc system, i.e.
a. how is it built, using what framework and how is it integrated with Github
b. how did you guys migrate contents from the old documentation systems of different products

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 6079073a-0dd9-3b9b-c160-76e0dd525a3c
Version Independent ID: 631788a5-f4bc-7df0-0540-2a0f67b631de
Content: Introducing docs.microsoft.com
Content Source: teamblog/introducing-docs-microsoft-com.md
Product: team-blog
GitHub Login: @jeffsand
Microsoft Alias: jeffsand

This is actually something I'd love to see as well. At the moment, even finding these issues and/or https://github.com/MicrosoftDocs/feedback/issues/504 turned out to be harder than it ought to be. Try googling "are the ci scripts for docs.microsoft.com freely available" or "ci scripts for docs.microsoft.com" and you'll see what I mean - a bunch of "false positives" that doesn't in any way help you understand how this is built.
Suggested approaches
I see a few options here:

Ideally, make the whole publishing platform (or at least the CI scripts empowering it) FOSS. This would be ideal, and in spirit with "the new Microsoft" that many of us have embraced with our whole :hearts:. Yes, yes, I know it's not always easy to accomplish this, and @dend has made it very clear in e.g. https://github.com/MicrosoftDocs/TeamBlogFeedback/issues/61 and https://github.com/MicrosoftDocs/feedback/issues/504 that this is not in the plans (at least not at the moment. :wink:). Still, let's make it clear that this would be the ideal. (and it would probably benefit Microsoft as well in the long run.)

The second-best option would be to at the very least write a good, technical write-up about the tools being used, how they are configured, what the particular DocFx extensions being used are and how they work (without publishing their source code, if this is considered too hard at the moment). The primary target audience for this text/these texts would be developers, devops engineers etc, i.e. people wishing to set up something similar on their own (either for internal use or for customers/partners they're working with - https://github.com/MicrosoftDocs/TeamBlogFeedback/issues/118, https://github.com/MicrosoftDocs/TeamBlogFeedback/issues/134), so this could be a fairly technical, in-depth document. The aim is to give all of us who need/want to do something like this a push in the direction, without giving full (GitHub public repo) access to it all.

The third option (and I really hope we wouldn't ever go here) is to write a document explaining that this is all considered a trade secret and Microsoft would not be willing to disclose any information whatsoever (except from https://github.com/MicrosoftDocs/blog/blob/live/teamblog/introducing-docs-microsoft-com.md) on how this works. :stuck_out_tongue: I really, really don't consider this a serious option. But it would still actually be an improvement to the current situation, since this ("how does docs.microsoft.com work under the hood?") seems to be a quite frequent question from curious people like myself. :sweat_smile:

Way back in the day, I actually wrote a guide on this very topic: https://den.dev/blog/docs-in-cloud/
Let me know if you have any questions, will be happy to help with the knowledge I have.

I checked out your article and will certainly put working through that on my short to medium ToDo list. I would love to use the Microsoft Docs Markdown flavor with all the extensions for our internal documentation and Wikis, currently setting them up in Azure DevOps.
Maybe you can answer one or both of these questions:

Does the workflow you describe in your guide support some/all of the MS Docs flavor and features or would a specific DocFX extension be required for that?
Is there any chance more of that flavor will come over to Azure DevOps Published Code Wikis?

e.G. MD flavor features like:
> [!WARNING]
> Dangerous certain consequences of an action.

[!INCLUDE [<title>](<filepath>)]

Columns
Theming
Automatic Navigation Pane
Was this helpful area
Links to the MD files in the Repos (GitHub or Azure DevOps)

I think this is what people are generally interested in, when they ask about open sourcing, as the Microsoft specific CI scripts would certainly not be that useful out of Microsoft.

I checked out your article and will certainly put working through that on my short to medium ToDo list. I would love to use the Microsoft Docs Markdown flavor with all the extensions for our internal documentation and Wikis, currently setting them up in Azure DevOps.
Maybe you can answer one or both of these questions:

Does the workflow you describe in your guide support some/all of the MS Docs flavor and features or would a specific DocFX extension be required for that?
Is there any chance more of that flavor will come over to Azure DevOps Published Code Wikis?

e.G. MD flavor features like:
> [!WARNING]
> Dangerous certain consequences of an action.

[!INCLUDE [<title>](<filepath>)]

Columns
Theming
Automatic Navigation Pane
Was this helpful area
Links to the MD files in the Repos (GitHub or Azure DevOps)

I think this is what people are generally interested in, when they ask about open sourcing, as the Microsoft specific CI scripts would certainly not be that useful out of Microsoft.


Index out of range

Beginning analysis of HSR/BTC
No historical data provided returned by exchange.
Invalid data encountered while processing pair HSR/BTC, skipping
No historical data provided returned by exchange.
Invalid data encountered while processing pair HSR/BTC, skipping
No historical data provided returned by exchange.
Invalid data encountered while processing pair HSR/BTC, skipping
Traceback (most recent call last):
  File "app.py", line 45, in <module>
    main()
  File "app.py", line 39, in main
    behaviour.run(settings['market_pairs'], settings['output_mode'])
  File "/app/behaviour.py", line 63, in run
    new_result = self._test_strategies(market_data, output_mode)
  File "/app/behaviour.py", line 98, in _test_strategies
    new_result[exchange][market_pair]
  File "/app/behaviour.py", line 250, in _get_crossover_results
    key_indicator = new_result[crossover_conf['key_indicator_type']][crossover_conf['key_indicator']][crossover_conf['key_indicator_index']]
IndexError: list index out of range

Hey @PetarKresimirCulina ,
What Exchange are u using?
What indicators/candle periods?
Are u working with code in develop branch?

What indicators/candle periods?
Are u working with code in develop branch?

Closed because no answer.

Closed because no answer.


Get-Help does not work for script files containing using statements.

Steps to reproduce
Create a script file test.ps1 with the following content:
using namespace System.Management.Automation

<#
.SYNOPSIS
A simple script for problem reproduction.
#>
Param ($SampleParam)

Execute following command:
> Get-Help .\test.ps1

Expected behavior
Get-Help .\test.ps1

NAME
    ...\test.ps1

SYNOPSIS
    A simple script for problem reproduction.

SYNTAX
    ...\test.ps1 [[-SampleParam] <Object>] [<CommonParameters>]

DESCRIPTION

RELATED LINKS

REMARKS
    To see the examples, type: "Get-Help ...\test.ps1 -Examples"
    For more information, type: "Get-Help ...\test.ps1 -Detailed"
    For technical information, type: "Get-Help ...\test.ps1 -Full"

Actual behavior
> Get-Help .\test.ps1
test.ps1 [[-SampleParam] <Object>]

Environment data
Name                           Value
----                           -----
PSVersion                      7.1.0-preview.7
PSEdition                      Core
GitCommitId                    7.1.0-preview.7-10-g3effa204103460c996a8612aa70718fdf924047d
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

PR pending.

Comment based help must be the first or last thing in the file or in the block for a function, so it comes before the using statement
<#
.SYNOPSIS
A simple script for problem reproduction.
#>
using namespace System.Management.Automation
Param ($SampleParam)
[enum]::GetNames([actionPreference])

Works.
function test-this {
[alias("Test")]
<#
.SYNOPSIS
A simple script for problem reproduction.
#>
Param ($SampleParam)
}

Gives no help
function test-this {
<#
.SYNOPSIS
A simple script for problem reproduction.
#>
[alias("Test")]
Param ($SampleParam)
}

Works.
I would be careful with a change like this which will enable some behavior in new versions but neither works nor errors/warns in old ones. It seems logical to say those things should be allowed in any order.
However when someone takes a script with an order which works in 7.1 and tries to run it on an earlier version they will go crazy trying to figure out why it doesn't work in Windows PowerShell or in something with PowerShell 7.0.2 embedded  (like .NET interactive) .
The rules that using can be preceded by comments, and comment based help must be first or last have been there since the features were introduced.

@jhoneill You are completely right. I got an impression that putting using directives after script documentation is a syntax error. It might be long long time ago when the VSCode tools were not stable enough. Now it works just fine. Thanks for the guidance.
Closing issue and PR.

I wish that Help was more intelligent - and gave an error when it fails rather than no output.

Help is mainly parsing comments there; it doesn't see comments where it expects to, so it gives you back the standard result when no CBH is available, just a syntax diagram and some metadata.
It's difficult / impossible for it to distinguish without taking potentially quite a bit of additional time to examine every comment in the file to determine if it might have been intended to be CBH.
The most I'd expect to see is maybe a small comment noting "no comment based help or external help files for this script/function could be found" in the resulting help output.

I know what it's doing!  But if I make a tiny mistake (eg I type a key wronglyl) it just silently fails with no clue where the error is. I just can't always see the error without a few hints
Can Get-Help's comment parser do something to say where it stopped recognising the block comment?? And to avoid issues, Could -Debug to at least show how far in parsing the text it got?


Simple Pipeline with RTSP devices

I try to try RTSP with IP camera following this the instruction:
[
Simple Pipeline with RTSP devices
Verify the path to RTSP URI, and run the following pipeline with RTSP URI:
gst-launch-1.0 --gst-plugin-path ${GST_PLUGIN_PATH}
urisourcebin uri=<RTSP_uri> ! decodebin ! video/x-raw ! videoconvert !
gvadetect model=${DETECTION_MODEL} model_proc=${DETECTION_MODEL_PROC} device=CPU ! queue !
gvawatermark ! fpsdisplaysink video-sink=xvimagesink sync=false
]
What GST_PLUGIN_PATH this is referring to?

Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
ERROR: from element /GstPipeline:pipeline0/GstURISourceBin:urisourcebin0/GstRTSPSrc:source: Could not read from resource.
Additional debug info:
../gst/rtsp/gstrtspsrc.c(6320): gst_rtsp_src_receive_response (): /GstPipeline:pipeline0/GstURISourceBin:urisourcebin0/GstRTSPSrc:source:
Could not receive message. (Timeout while waiting for server response)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
Why ERROR: pipeline doesn't want to preroll.?

Hi @kqchen,
I think you are referring to this section of the tutorial.
I think ${GST_PLUGIN_PATH} means the directories where the GST plugins are installed, they might be in several directories in OS, you can refer to this code sample
From the error message, there is a problem with your input stream. Can you only test the following pipeline and see?
gst-launch-1.0 --gst-plugin-path ${GST_PLUGIN_PATH} urisourcebin uri=rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ! decodebin ! fakesink
Mark

I think the defined path has no issue:
tank-18@tank18:~/gva/gst-video-analytics/docker$ echo ${GST_PLUGIN_PATH}
/home/tank-18/gva/gst-video-analytics/build/intel64/Release/lib
The rtsp streaming has issue.
However, the "rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub" has been verified with vlc that played the live video (it is an IP camera source) streaming.

docker run -it --privileged --net=host -v /home/tank-18/.Xauthority:/root/.Xauthority -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -e HTTP_PROXY=$HTTP_PROXY -e HTTPS_PROXY=$HTTPS_PROXY -e http_proxy=$http_proxy -e https_proxy=$https_proxy -v /home/tank-18/gva/data/models/intel:/root/intel_models:ro -v /home/tank-18/gva/data/models/common:/root/common_models:ro -v /home/tank-18/gva/gst-video-analytics/samples/model_proc:/root/model_procs:ro -e MODELS_PATH=/root/intel_models -v /home/tank-18/gva/data/video:/root/video-examples:ro -e VIDEO_EXAMPLES_DIR=/root/video-examples -e MODEL_PROCS=/root/model_procs gst-video-analytics:latest
root@tank18:~# gst-launch-1.0 --gst-plugin-path ${GST_PLUGIN_PATH} urisourcebin uri=rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ! decodebin ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
ERROR: from element /GstPipeline:pipeline0/GstURISourceBin:urisourcebin0/GstRTSPSrc:source: Could not read from resource.
Additional debug info:
../gst/rtsp/gstrtspsrc.c(6320): gst_rtsp_src_receive_response (): /GstPipeline:pipeline0/GstURISourceBin:urisourcebin0/GstRTSPSrc:source:
Could not receive message. (Timeout while waiting for server response)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Hi @kqchen,
I think we aligned this is a connection issue at the input not DL Streamer issue, so I am working this direction but feel free to let me know if you have different opinion.
Are you behind VPN? if yes, then this post would help.
Mark

Hello @mliu2020 : Thanks for the pointer. Disable the proxy solved part of the issue. It is still not streaming as vlc did to the same rtsp command.
root@tank18:~# gst-launch-1.0 --gst-plugin-path ${GST_PLUGIN_PATH} urisourcebin uri=rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ! decodebin ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
0:00:04.169603537   119 0x7f276c0519e0 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop: error: Internal data stream error.
0:00:04.169652492   119 0x7f276c0519e0 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop: error: streaming stopped, reason not-linked (-1)

I was doing it with GST_DEBUG=2

@kqchen,
You have to use higher number to get more information, please see the table in the instruction I mentioned above.
Sorry I don't have a system to replicate your issue so I am searching for the clue. From the error message, it seems the stream data is different from decodebin expected, maybe you can try the followings:

Try different camera or change the camera output format like size or framerate.
Try to use other elements instead of urisourcebin and decodebin, see example 1 and example 2.

Mark

I have used bigger debug number. Here are logs for  latency 0 . I am kind of lost in those debug message.
The IP camera was wroking in VLC with the same "rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ".
log1.txt

@mliu2020  Never mind I got this line working.
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Redistribute latency...

This is great!
This also helped me since I didn't try RTSP yet and offline analysis only.
Could you try to connect with gvadetect and gvawatermark to check if your original pipeline works?
You did exactly like other examples showed--using different element like rtspsrc; it should be clear GST elements not smart as VLC is.
If you don't have further questions, would you mind to close this issue?
Mark

The bad news is that connecting to gvadetect and gvawatermark not wroking.
connect to original pipeline did not work.

root@tank18:~# gst-launch-1.0 --gst-debug=3 rtspsrc location=rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ! queue ! rtpjitterbuffer latency=0 ! rtph264depay ! avdec_h264 ! autovideosink sync=false
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'autovideosink0-actual-sink-vaapi': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"(GstVaapiDisplayGLX)\ vaapidisplayglx1";
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
0:00:00.064673643    43 0x7f0ad00414f0 FIXME                default gstutils.c:3981:gst_pad_create_stream_id_internal:fakesrc0:src Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.064753206    43 0x7f0ad0041450 FIXME                default gstutils.c:3981:gst_pad_create_stream_id_internal:fakesrc1:src Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
0:00:03.266770515    43 0x7f0ad0041400 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop: error: Internal data stream error.
0:00:03.266822772    43 0x7f0ad0041400 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop: error: streaming stopped, reason not-linked (-1)
0:00:03.485460480    43 0x55735064bc00 FIXME               basesink gstbasesink.c:3248:gst_base_sink_default_event: stream-start event without group-id. Consider implementing group-id handling in the upstream elements
Redistribute latency...

Thanks,
Your log confused me, the command line is almost the same as your previous one except the debug level:
gst-launch-1.0 rtspsrc location=rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub ! queue ! rtpjitterbuffer latency=0 ! rtph264depay ! avdec_h264 ! autovideosink sync=false
Why did it failed this time?
Also could you post or attached the log when you failed on gvadetect and gvawatermark?
Mark

Here is an example pipeline I have used with rtsp sources. Please note this is not optimized - and if if works you can begin to tweak it for performance on your system.

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://7133:123456@<IP_ADDRESS>:554//h264Preview_01_sub
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
0:00:03.662817609 22871 0x7fa2d004aa30 FIXME                default gstutils.c:3981:gst_pad_create_stream_id_internal:<fakesrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:03.662821318 22871 0x7fa2d004aa80 FIXME                default gstutils.c:3981:gst_pad_create_stream_id_internal:<fakesrc1:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
0:00:07.640571784 22871 0x7fa2ac0032d0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<udpsrc3> error: Internal data stream error.
0:00:07.640590842 22871 0x7fa2ac0032d0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<udpsrc3> error: streaming stopped, reason not-linked (-1)
0:00:07.816258940 22871 0x55c4aefe5de0 FIXME               basesink gstbasesink.c:3145:gst_base_sink_default_event:<autovideosink0-actual-sink-xvimage> stream-start event without group-id. Consider imp

@nnshah1
Thanks for providing me the gst pipeline. What camera is it? Was it worked for you?
What is the gvametaconvert functionality here?
Question : how are the model-proc working with gstreamer? Where is the code reference for it so I can customized it?

@kqchen I have use this both with an rtsp stream sent via vlc and with physical cameras (for example Axis).
gvametaconvert converts the tensors into a JSON format that can then be published via gvametapublish to MQTT / Kafka or File
model-proc files detail how the input and output data is pre/post processed. Please see the samples folder for more information and example model-procs for current supported model topologies.
typically model-proc files contain information about what layer to use for output, how to interpret the layer, the labels, etc.
If you're up and going with the simple rtsp pipeline - we can close this issue and continue other topics in new ones.
Thanks!

Hi @kqchen,
Is there anything we can help you on this issue?
Mark

Hi @kqchen,
Since I don't get response from you for a week, I assume this issue is solved.
Close it for now but feel free to re-open it or open a new post.
Mark


Now the native architecture only arm64-v8a

This architecture was chosen because of my phone model. If testing with another architecture it can be done in Application.mk
APP_ABI := arm64-v8a

added armeabi-v7a to build.gradle


Edited application/libraries/REST_Controller.php via GitHub

Added support for gzip compression if the client supports it.

Fix it
Emailing from my iPhone 4S like a BOSS!
On 3 Jan 2012, at 22:05<EMAIL_ADDRESS>wrote:

This commit introduces a problem on IIS 7.5 and PHP 5.3.8. The browser (client supporting gzip) won't stop loading the page.

Reply to this email directly or view it on GitHub:
https://github.com/philsturgeon/codeigniter-restserver/pull/58#issuecomment-3347052


fix mod issues and upgrade protos.pb

fix mod issues and upgrade protos.pb
Signed-off-by: wangqing<EMAIL_ADDRESS>

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.wangqing seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Split jobs

Its a lot nicer and clearer to have build and test as two separate jobs. We're not sure yet if there's any sort of artifacts that need to be passed between them.

Well that was really easy.


Omit Nil Errors

Currently, you get a nil pointer dereference error if you pass a nil error to the Err() functions.
Instead, I propose to check for nils in this specific case and omitting nil errors conditionally.

Codecov Report

Merging #11 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master    #11   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           3      3
  Lines         337    339    +2
=====================================
+ Hits          337    339    +2

Impacted Files
Coverage Δ

entry.go
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b11bbef...72c910a. Read the comment docs.

Merging, thanks!

Created a new release 0.11.5


As a steadfast user, I want to setup and draft emails to applicants very quickly

...so that I may follow-up with applicants asap

Will do in some future iteration


Missing csrf error --> 403 with subscriber

Ask your question here
When i have a post request in spring boot for the subscriber. It gives a 403 for missing csrf token from spring security.
Anyone with experiance how to work with this?

Does the spring application require an authentication token?

Yeah, we have implemented a azure connection to verify user roles

We disabled CSRF to fix it


Add ApiLoggerMiddleware

Add an ApiLoggerMiddleware. Can be enabled/disabled in the config file or over the "Logging Settings" page. Middleware is only logging, if the "Core Logging Level"
is set to "Debug"
Related #8225

Thanks, this is nice.


Dynamic Domain name or URL mapping to dynamically created containers

Hi
this is an enhancement request, sorry if this is a duplicate, but did search not found anything matching directly and useful (except few ngnix proxy suggestions, which i think is not dynamic)
The host on which we spawn the containers has a domain name Eg: www.mydockerhost.com
Now each time, a new container is started, it has to be accessed as www.mydockerhost.com:$portnumber
Which is blocked if clients (users) are behind a proxy (especially corporate proxy)
Hence can there be a service on Docker host, which can map or proxy URLs to its corresponding containers
Eg: Let the client access www.mydockerhost.com/my_$portnumber which is mapped internally to the port  of the corresponding container
Key thing here is it has to be dynamic, i.e., if the container is stopped, the mapping too has to be automatically removed and visa-verse
Pleas point me to right solution or tell us if something can be done to address this in the next release

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

As you mentioned, this is best addressed by a proxy. Various solutions exist and many of those actually are dynamic (but may need some extra params or environment variables added to the docker run ... statement when starting the container).
I personally like https://github.com/jwilder/nginx-proxy/, which is really easy to use, doesn't require much setup and dynamically adds/removes containers from the proxy configuration (by making use of start / stop events emitted by docker containers).
I'm going to close this issue, because this is not a bug in docker and implementing this is not something that belongs in the Docker core functionality. Also, there are too many different use-cases for a generic solution.


Fix Promise bug where join() element's reject doesn't reject the entire join

Also, add a new unit test for this scenario.

Nice! Thanks @slfritchie. This will go out in the next release which should be "very soon".


How to disable the admin field

How Can I disable the active select?

Hey,
In your custom DataTableFilters component, remove the select in question.

ok another thing why do I get this error when I am typing on the search field TypeError: Cannot read property 'draw' of undefined

Please just give me a hint I have been looking for the error for a while. thanks

You may have missed this package https://github.com/jamesdordoy/Laravel-Vue-Datatables, which is a Laravel helper package.
Otherwise, the draw value is sent by the table up to the backend and it is required that it is sent back with the response payload so the table knows that the response is for the current request.
Hopefully that solves your problem

I felt like it toke me like a year to re-write the filters. I did everything about the laravel-vue-datatables doc however, I have the error 500, I can't filter the datas by the search field.

Any hint?

Hey,
Im not sure about the payload issue at the moment as i'm unable to replicate it.
Have you checked your error logs in regards to the 500 error? It may shed light on whats going wrong.
Thanks,

Hey Javier1995, perhaps you may have a datatable column that you declared in your model but it does not exist in your database, therefore, the search query fails. Just a guest.

This is actuallu what I got

Hey Javier1995, perhaps you may have a datatable column that you declared in your model but it does not exist in your database, therefore, the search query fails. Just a guest.

All the columns were well-written, thanks

Guys I think it is the package option {
"models": {
     "search_term": "The term used in each Model to declare if it is searchable by the Datatable"
 },
 "default_order_by": "The default order by Column on Page Loads"
}

But I don't know where to put it in

Guys I think it is the package option {
"models": {
     "search_term": "The term used in each Model to declare if it is searchable by the Datatable"
 },
 "default_order_by": "The default order by Column on Page Loads"
}

But I don't know where to put it in

Well I put it in composer.json. and I had to clear cache and then republish the package so it worked well, filtered and everything until I got the error draw everytime I type. Its driving crazy Lol

Guys I think it is the package option {
"models": {
     "search_term": "The term used in each Model to declare if it is searchable by the Datatable"
 },
 "default_order_by": "The default order by Column on Page Loads"
}

But I don't know where to put it in

Well I put it in composer.json. and I had to clear cache and then republish the package so it worked well, filtered and everything until I got the error draw everytime I type. Its driving me crazy Lol

Run this in your terminal to publish the config options:
php artisan vendor:publish --provider="JamesDordoy\LaravelVueDatatable\Providers\LaravelVueDatatableServiceProvider"

Ok thanks it's working now! but I'd like to change the handling event keyup because when I type it takes some time and sometimes displays the error 500

Never mind guys! I'm gonna close this. Thank you so much. I'd introduce you to one of mexican girls but you are so far away Lol.

I needed to reopen this again :D I uninstalled the package and installed it again now the datas don't show up once the page is loaded, nevertherless, if I filter, they do. sorry for bothering you one more time, bro.

I needed to reopen this again :D I uninstalled the package and installed it again now the datas don't show up once the page is loaded, nevertherless, if I filter, they do. sorry for bothering you one more time, bro.
//Loaded

//filtering by numbers of items

0.3.6 is okay for me.


[dns] basic load balancing for services

There is a rather obvious opportunity for weave to facilitate basic load balancing and fault resilience... when, using weavedns, multiple containers are entered into dns under the same name, weave could implicitly treat these as a load balance group, returning all the addresses in a random order.
This requires caching.

Scope of this issue has been reduced to load balancing only for 0.11.0. The implementation will return a single randomly chosen address from the possible set of addresses for a name.


One of the main reasons is that preflight requests need to shortcut almost all middleware, especially the ones that filter request based on headers that are not guaranteed to be sent on preflight request. The most wellknown example is the authentication headers that by the CORS standard should not be sent.
Generally the authentication middleware is wrapping all the handlers (or a subset of them like in the sub-router example)  so it will fail the preflight requests that are configured at the request handler. Options like this (multi-method matching) create the illusion of easy handling and encourage bad patterns and potential for future bugs.

i really like the "stringy matching"

it's backwards compatible
HTTP methods are loose anyway, consider how WebDAV extends HTTP with verbs like MOVE, COPY, LOCK
to me the argument is not just a method and path, but a sort of match expression string. maybe later we could also have scheme, hostname or parameter matching in there. why not? method is not the only guy in town

IMO the string is the most flexible. if you're worries about typoing a method. a safe wrapper is trivial

I re-implemented a ServeMux using Radix.
Detailed reference: net/http: reimplementing ServeMux

The Go team might accept a patch to switch the internal implementation of ServeMux to something faster, but you can’t open a PR with breaking changes and expect it to go anywhere. The Go 1 guarantee means you have to keep the old API working.

I thought I had previously opened some issue about URL Patterns, but it looks like I just thought about it and didn't do it.
The timing is a little unfortunate because Go is going to add something new and different just as this URL Patterns thing is launching, but I think realistically, you couldn't add URL Pattern support to ServeMux without breaking backwards compatibility anyway, so it would need to be in net/http/v2.
I think the next steps for URL Patterns and Go is to make a third party library that can match a URL to pattern and extract the matching bits, and then just see if anyone uses it. If it's popular, you can make a proposal for either golang.org/x/urlpatterns or net/url/urlpatterns depending on how popular it is. Part of the thing with URL patterns is they have applications outside of just routing, so I think even if it were in ServeMux, you'd want to be able to do matching outside of ServeMux as well.

http.HandleFunc("GET /", ...
// vs
http.GET("/", ...

If the pattern is inside a string which could not be checked during compile time, what would it's behavior if the given pattern does not match any method like typo, should the go vet handle it? And could it be auto-completed?
Using http.GET("/", ... is just convenient, compared to having the methods inside a string.

@gocs Note that the set of valid HTTP methods extends beyond the usual GET, POST, PUT, etc. The string approach frees developers to use any valid method they want. If you're worried about typos in method names, you can always write a small wrapper for yourself:
func GET(pathPattern string, h http.Handler) {
    http.Handle(http.MethodGet + " " + pathPattern, h)
}

I think asking developers to "write a small wrapper" and define funcs for GET, POST, PUT, etc. is a bit ridiculous (probably a bad word).  It isn't like it will just be a few developers that would define/want such wrappers.  It would make more sense to have the standard library define http.GET() and so on.  I see this as the exact same justification we have strings.Cut over using strings.Index.

Closing this because the proposal has been implemented.

@c9845 I understand your concern, but this proposal aims for backwards-compatibility and endeavours not to add too much API. The wrappers I mentioned in my earlier comment could be added to net/http later, if needed.

I tested this and it works great. A well needed add on if you ask me. Is there a benchmark comparing this implementation with other routers?

Here is one that compares routing to the original ServeMux: https://github.com/jba/muxpatterns/blob/main/server_test.go#L331.
But one outcome of the discussion on this issue is that we could find no evidence that routing speed matters, and some evidence that it doesn't. If you have an application where routing speed matters, we'd love to hear about it.

@c9845
You could also just write a function that'll handle all of them:
func Route(method, path string) string {
  return fmt.Sprintf("%s %s", method, path)
}

Then you can use, for example, http.Handle(Route(http.MethodGet, "/"), ...). It's slightly more error prone, but makes it simpler to use the existing constants. It would be better if the constants had their own type so that the first argument could be type checked, but that would be a backwards incompatible change, so it's not likely.

@DeedleFake Thanks for the suggestion.  I am kind of just seeing where this whole development/implementation/whatever ends up and then going from there.  I imagine a lot of people are in the same boat.

is this feature going to be delivered in go 1.22?

@lucianboboc According to the provisional release notes for Go 1.22, yes:

net/http
[...] TODO: https://go.dev/issue/61410: enhanced ServeMux routing

But one outcome of the discussion on this issue is that we could find no evidence that routing speed matters, and some evidence that it doesn't. If you have an application where routing speed matters, we'd love to hear about it.

@jba could you provide that evidence that it doesn't matter?
On projects I work on, almost always there is a discussion as to which router to choose. Mainly because of performance. It would be great if we had evidence that the performance of the router is not that relevant.
Thanks!

@phenpessoa What jba likely meant is that, in most applications, execution time is dominated by I/O with the network. Although a router should preferably minimise or even eliminate heap allocations, its execution speed (unless an atrocious choice were made for the data structure used to represent the routes) is unlikely to factor much into the overall performance of the server.

@phenpessoa The burden of proof is typically on the side that claims that something matters: that a piece of software affects performance, that a drug affects the outcome of a disease, that adding a substance speeds up a reaction, and so on. The null hypothesis is always that nothing has any effect.
The evidence here, besides what @jub0bs mentioned, is that no one has come forward with any evidence to the contrary for real systems. You will certainly find that router speed matters for a toy server that does very little work, but what about production servers? I've asked several times without any response. It sounds like you may have some real examples, though. Would you mind doing some performance measurements and posting them here?

Double checking some behavior reported in Gopers slack.
Given this program, should a PUT to /foo return a 405 or should it hit the / handler? It currently hits the / handler.

@danp
The behaviour you're observing is in accordance with the spec:

if two patterns overlap (have some requests in common), then the more specific pattern takes precedence.

mux.HandleFunc("/", /* omitted */)
mux.HandleFunc("GET /foo", /* omitted */)

Pattern GET /foo is more specific than pattern / because the first matches only GET and HEAD requests to /foo whereas the second matches any request.
A PUT request to /foo is not matched by pattern GET /foo, but is matched by pattern /.

👍 thanks for the double check. Here's what is said about 405:

If no pattern matches a request, ServeMux typically serves a 404 (Not Found). But if there is a pattern that matches with a different method, then it serves a 405 (Method Not Allowed) instead.

Are we sure 405 should only be returned if no other pattern matches? That does seem to be different from at least chi. For example this program returns a 405 for a PUT to /foo.
I see mentions of customizing 405 responses but best I can tell nothing specifically about the order of precedence for when to return it. Apologies if I've missed that.

I believe this is WAI. By writing the pattern /, the server author is saying that they want to serve all requests, regardless of method or path. It would be wrong for any request to fail without running the handler for /.
If the author wants PUTs to /foo or anything else to return 405, they can do that by defining GET /, POST /, and so on, but not PUT /.

So if my understanding is correct, in order to serve a custom 404 for any unmatched request, I can't use the catch-all "/" route.
Therefore, I need something like a custom-wrapped ResponseWriter to capture the status code, and then, based on that, return the appropriate 405/404 response?
Sorry if I missed something.

I guess the 404 handler would need to be at GET /? Does seem unfortunate if there’s not a good way to set the 404 handler and still have 405 messages.

My understanding is that by setting the 404 handler to /, we lose the ability to handle 405 at all. All requests will end up at / even when we have a 'matching' route, albeit with a different method.

Will this change also impact http.StripPrefix? I've been playing around with the muxpatterns package and found that all my routes broke when I introduced a dynamic value in a route, so I needed to write my own version of StripPrefix using PathValue.
It seems natural to me that StripPrefix should also strip dynamic paths with this change. In other words, I would expect this to work:
r.Handle("/{id}/*", http.StripPrefix("/{id}", idHandler))

Will this change impact http.StripPrefix? When I was playing with muxpatterns and added a dynamic prefix, I found all my routes broke--makes sense for a proof of concept, but I would expect this to work in go1.22:
r.Handle("/{id}/*", http.StripPrefix("/{id}", idHandler))

For what it's worth, this replacement for http.StripPrefix works for me as a hack:
// stripDynamicPrefix adjusts the URL Path of the request by dynamically
// stripping the specified prefix.
func stripDynamicPrefix(prefix string, h http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
                // Split the request path and prefix into segments.
                pathSegments := strings.Split(r.URL.Path, "/")
                prefixSegments := strings.Split(prefix, "/")

                // Iterate over the prefix segments.
                for i, segment := range prefixSegments {
                        // If the segment is dynamic (contains '{' and '}'),
                        // skip it.
                        if strings.Contains(segment, "{") && strings.Contains(segment, "}") {
                                continue
                        }

                        // If the segment is not dynamic, ensure it matches the
                        // path.
                        if i >= len(pathSegments) || segment != pathSegments[i] {
                                // If not matching, serve the original handler
                                // without modifying the path.
                                h.ServeHTTP(w, r)
                                return
                        }
                }

                // Update the request URL Path.
                r.URL.Path = "/" + strings.Join(pathSegments[len(prefixSegments):], "/")

                // Serve with the updated request.
                h.ServeHTTP(w, r)
        })
}

For what it's worth, this replacement for http.StripPrefix works for me as a hack:

I think it's a good sign that keeping the ServeMux rules minimal still allows flexibility on top. The minimal approach may more frequently need some translation - starting from how one would like to structure everything about route configuration, resulting in ServeMux registration calls - but is a good fit for static-plus-path-variables kinds of routing.

Allowing spaces in the handle route string and understanding placeholders in StripPrefix both seem like pretty good ideas to me, but they should probably be new proposals in the issue tracker so people can debate whether there's some downside to them. I don't think either should be a blocker to Go 1.22. They can be add ons for Go 1.23.

„GET /users“ feels really awkward and now that it landed like this, I think it is a missed opportunity to get the API right.

@alsms You should explain why you find the current API "awkward".
In defence of the changes brought to net/http by Go 1.22:

They're (mostly) backwards compatible.
They allow flexibility: HTTP methods are indeed not restricted to GET, POST, PUT, DELETE, etc. For instance, PURGE is a valid method name that it recognised by some caching intermediaries.
As explained in earlier comment, nothing prevents you from writing a small wrapper around Handle / HandleFunc.


Remove error on android

Allow Android users to run their app with this repository installed

Great! Will merge!


Filter by bug path length

It would be great if the user could filter reports by bug path length.
In the UI it could be made by using a range slider.

This is already done.


Enhance Pagefind to support search with non-matching text

From discussion.
When people enter more free-form text in an input field or textarea, Pagefind won't always return results. For example, enter this in the search on the Pagefind page:
I need help with pagefind and hugo along with jekyll

and you'll see
No results for I need help with pagefind and hugo along with jekyll

Even though many of those words are indeed on the site, no results are returned, even with the new 1.0.x versions.
It would be great to see Pagefind support free-form searches like this.

Agreed! I didn't get a chance to tackle this prior to 1.0, but I do have some ideas so should be able to look at this in an upcoming release 🙂

Happy to help in any way I can, including testing, @bglw

@bglw – does the Customize ranking work you did for version 1.1.0 help with this at all?

Hmm, not immediately, no. But it might pose as an interesting place to add a setting around this 🤔


[mariadb] custom script using downloads api

The downloads API has some more accurate release dates as occasionally release tags are late.

Waiting on https://jira.mariadb.org/browse/MDBF-236 for the release status on individual releases to be added.

Ok, thanks @grooverdan. Will convert this PR to draft until this issue has been resolved.


[Feature Request] Add action settings

By adding actions props in game.with() function, it might be able to set control keys.

Thank you for the feature request. I will add this feature in a future version.

The feature has been added in this commit. You can view the Typst packages PR at this link.

Thanks👍


can't screenshot from pyautogui

    pyautogui.screenshot('foo.png')
AttributeError: 'module' object has no attribute 'screenshot'

while the dir(pyautogui) output:
['FAILSAFE', 'FailSafeException', 'KEYBOARD_KEYS', 'KEY_NAMES', 'MINIMUM_DURATION', 'MINIMUM_SLEEP', 'PAUSE', 'Window', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_autoPause', '_failSafeCheck', '_mouseMoveDrag', '_pyautogui_win', '_unpackXY', '_window_win', 'absolute_import', 'click', 'collections', 'displayMousePosition', 'division', 'doubleClick', 'dragRel', 'dragTo', 'getPointOnLine', 'getWindow', 'getWindows', 'hotkey', 'hscroll', 'isShiftCharacter', 'isValidKey', 'keyDown', 'keyUp', 'linear', 'middleClick', 'mouseDown', 'mouseUp', 'moveRel', 'moveTo', 'onScreen', 'platformModule', 'position', 'press', 'print_function', 'rightClick', 'scroll', 'size', 'sys', 'time', 'tripleClick', 'typewrite', 'vscroll']
seems the pyautogui lack some of attibutes.
I installed pyautogui from git clone https://github.com/asweigart/pyautogui
I also find the pip install pyautogui does not work on windows
my computer is windows 10 64x, python version is python 2.7

What happens when you run pip install pyscreeze and pip install pymsgbox?
These methods are supposed to be imported from those modules, but they fail silently if there's an exception (like if the modules aren't installed.

ok. I reinstalled python 2.7.13. now is fine. but the pyautogui.locateCenterOnScreen() works very bad.
>>> x,y=pyautogui.locateCenterOnScreen('1.png')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable

sometimes it is working, but many times it gives error. it is not reliable and stable.

Install cv2 to let pyautogui use OpenCV's template matching routines. That should be more reliable. Otherwise, it'll only detect an exact pixel match.

If pip install cv2 doesn't work, try pip install opencv-python

Are you on Linux or Windows?

This has been fixed. Thanks for pointing out this issue.


Make it possible to set the depth limit for an individual tree

It's probably fine if it's only possible to set it for an experiment, but individual tree is preferable, so let's discuss if it's not possible to set it for individual trees.
The dev hours is what I remember @zjmiller saying once, obviously feel free to change it

If it's per tree, we'd definitely want to be able to set or change it via the API
Not important to be able to set or change it via the UI IMO

Is this issue now totally complete?

Resolved in #733


The Mega Update

This PR adds many features, including

[x] Updates to addon.json schema
[x] Updates to background.js
[x] New addons for Notifications and Extension Badge/New Message Sounds (#21)
[x] Using dynamic permissions (#23)
[x] A Complete overhaul of the old extension popup with Tailwind and Flowbite as well as Material Icons.
[x] Runs addons on location change without reloading page (suggested by @mybearworld in #1)
[x] Updates addons "Polls" (#33) and "Chat Presence Notify" (#31) to use new formats and be enabled by default (#19).

Still left to do for this PR:

[ ] Testing
[x] Update README with new addons, reformatting, better roadmap with link to GitHub project, and link to wasteof.plus website.

This PR also replaces the need for PR (#22) (which involves message notifications/sound/badge).
After this update, wasteof.plus will be much closer to being "officially" production-ready, simply requiring further porting efforts for Firefox (#32) and publishing on Chrome Web Store with help from @micahlt (#39)/
In other news, the wasteofplus.github.io website is also coming along, with a custom markdown (MDX) based documentation  rendering system in development.

I can test this in both Chrome and Firefox if you'd like!

This PR does not actually add Firefox compatibility. That will come with PR #32. But any testing in Chrome/Edge/Other Chromium Browsers would be great!