adding nicer help when missing arguments

Signed-off-by: Jason Shepherd<EMAIL_ADDRESS>

@jasinner can you add some text explaining what you did and why?  For example, is this just going to show the usage stuff w/o the full options list?  And why did you change the exit code from non-zero to zero? Giving people some rationale behind your PR will help move it along.
I agree that the current stuff is lacking and I'm not sure why the more verbose stuff was removed.
For example:
$ docker build
docker: "build" requires 1 argument. See '/root/docker/bundles/1.5.0-dev/binary/docker build --help'.

isn't nearly as useful as what we used to show, which was the full --help output.

@duglin This change prints a short usage output, with the format of the command, when incorrect arguments are passed to a command. Like you said, currently at the moment the usage output is not very friendly as it only shows the number of argument required. This change not only shows that output, but the format of the command passed into the flags.subCmd method.
If users want the full, verbose output of the the flag.Usage command they can call --help.
I agree that the exit code on shortUsage should be 1. I will change it on Monday if required.

@jasinner yes please :)

Hi guys, I added some more commits. Please review.
When running 'docker run' without arguments output should be like this:
[jshepher@jshepher docker]$ bundles/1.5.0-dev/binary/docker-1.5.0-dev run
docker: "run" requires a minimum of 1 argument. See 'bundles/1.5.0-dev/binary/docker-1.5.0-dev run --help'.

Usage: docker run IMAGE [COMMAND] [ARG...]

Run a command in a new container

When done, please merge your commits down to one.

@jasinner ping

@duglin The file utils/flags.go was removed from upstream master, so it was removed from my commit.
I did as you suggested, and called ShortUsage from the Usage method.
I think I managed to squash my commits down to 1 now too.

@jasinner I think you lost your "signed-off by" stuff during your squashing.  Try doing:
git -s --amend --no-edit

and then pushing again to see if that fixes it.
Other than that I think it looks good

@duglin added signed-off by

thanks!
LGTM
/cc @tiborvass @LK4D4

As is here is the output from docker save:
docker: "save" requires a minimum of 1 argument. See 'docker save --help'.

Usage: docker save IMAGE [IMAGE...]

Save an image(s) to a tar archive (streamed to STDOUT by default)

And the output of docker save --help is litterally that same message minus the first line.
Can we get rid of the See 'docker save --help'. part, since it's the same exact output anyway?

Passing --help to save is not the same output, it shows all the arguments.
[jshepher@jshepher docker]$ bundles/1.5.0-dev/binary/docker-1.5.0-dev save
docker: "save" requires a minimum of 1 argument. See 'bundles/1.5.0-dev/binary/docker-1.5.0-dev save --help'.

Usage: docker save IMAGE [IMAGE...]

Save an image(s) to a tar archive (streamed to STDOUT by default)

with --help
[jshepher@jshepher docker]$ bundles/1.5.0-dev/binary/docker-1.5.0-dev save --help

Usage: docker save IMAGE [IMAGE...]

Save an image(s) to a tar archive (streamed to STDOUT by default)

  --help=false       Print usage
  -o, --output=      Write to an file, instead of STDOUT

@cpuguy83 not actually sure what you meant by "move this up underneath the options declaration", but I moved the options 'if' check up under the options declaration. Also, I removed the redundant 'else'.

Needs a gofmt.

@jasinner can you update the code by using gofmt per @cpuguy83's comment ?

maybe someone should carry as there has been no comment in 7 days

will do if we don't get a response by later tonight

cool thanks :)

Hey guys,
Sorry for the delay. I'll try to run the format, and pull the latest
updates later today, Australia time.
On Friday, 24 April 2015, Jessie Frazelle<EMAIL_ADDRESS>wrote:

cool thanks :)
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/11858#issuecomment-95714467.

What the threat of me actually coding will do!  :-)

Ok, I think I fixed it up now.

sigh looks like there's a test checking the output of docker search --help.

@jasinner I did some digging on this and you need to move the if-statement at https://github.com/docker/docker/pull/11858/files#diff-bcf4431eed51e55b4dca7deafdca48b0R115 into the Usage() func.  This is because you don't know what the various flags are until long after this func has exited, but you will know by the time the usage func is called.

@jasinner will you have time to fix this one up?

Not until the week of 11th of May.
On Thursday, 30 April 2015, Doug Davis<EMAIL_ADDRESS>wrote:

@jasinner https://github.com/jasinner will you have time to fix this
one up?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/11858#issuecomment-97464698.

Would you like me to carry it for you or wait?

Sorry for the delay in responding. I'd like to give it a go the week I'm
back. I'll get to you again after I return.
Jason
On Friday, 1 May 2015, Doug Davis<EMAIL_ADDRESS>wrote:

Would you like me to carry it for you or wait?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/11858#issuecomment-98029523.

@jasinner okie dokie - thanks for letting us know

any update :)

@jfrazelle @duglin Hi guys, I moved the flag count check into the Usage funtion now, and the integration test seems to pass for me.
Please check it, Thanks.

What if we move the call to os.Exit(0) back into the methods that call ReportError?

@jasinner can you run your code thru gofmt?  janky isn't happy about the current formatting.
As for moving the os.Exit() calls - I think that's the right solution.

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "niceHelp" git@github.com:jasinner/docker.git somewhere
$ cd somewhere
$ git rebase -i HEAD~2
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

This will update the existing PR, so DO NOT open a new one.

Hi @duglin and @GordonTheTurtle I run gofmt, and attempted to fix up the signature. I hope I got everything correct, but let me know if there is anything outstanding. Jason

@jasinner you'll need to squash your commits down to one. That should make Gordon happy, assuming that one commit is signed.

ping @duglin I see this PR was updated, PTAL

@jasinner it looks good.  Sorry for not mentioning this earlier, but I think we need a few testcases added. In particular, I think ones that:

test that the short usage is shown on a missing param (just short, not full help)
test that we get the correct exit code in both short and normal help output

@duglin do  you maybe want to help with the test cases so we can get this into 1.7 or @jasinner do you think you will be able to make these changes

@jfrazelle I'll work on the testcases either tonight or tomorrow.  if @jasinner doesn't respond by, say, Sunday maybe we can grab both sets of changes.

Or do you need it sooner?

thanks SGTM
On Fri, May 22, 2015 at 5:01 PM, Doug Davis<EMAIL_ADDRESS>wrote:

@jfrazelle https://github.com/jfrazelle I'll work on the testcases
either tonight or tomorrow. if @jasinner https://github.com/jasinner
doesn't respond by, say, Sunday maybe we can grab both sets of changes.
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/11858#issuecomment-104804218.

@jasinner I just did PR #13428 to continue this PR - mainly to add new testcases.  I did however find some oddities in the way some things were done for some commands, so I fixed those too.  Now we should be consistent.  Hope you're ok with this.  We're coming up on the deadline for v1.7 and we wanted to make sure this made it in.

This has been merged on master as part of #13428. Closing! :smile:

@vieux @jfrazelle according to https://github.com/docker/docker/pull/11858#issuecomment-104803726 you wanted this in the 1.7 release?

ill cherry pick it

@duglin thanks for finishing this off. Happy to see it get merged.
On Sunday, 24 May 2015, Doug Davis<EMAIL_ADDRESS>wrote:

@jasinner https://github.com/jasinner I just did PR #13428
https://github.com/docker/docker/pull/13428 to continue this PR -
mainly to add new testcases. I did however find some oddities in the way
some things were done for some commands, so I fixed those too. Now we
should be consistent. Hope you're ok with this. We're coming up on the
deadline for v1.7 and we wanted to make sure this made it in.
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/11858#issuecomment-104918198.


How to pass raw string "<svg width="800" height="450" xmlns..." to component

Hello,
I have a string returned from server API  as is :
<svg width="800" height="450" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" viewBox="0 0 800 450">
<rect width="800" height="450" x="0" y="0" id="0" fill="rgb(255,255,255)" fill-opacity="0"></rect>
<path d="M80 380.5L720 380.5" fill="none" stroke="#eeeeee"></path>
....

How to pass it to this component ?
Thank you

Hi, thanks for your question. You could try to use v-html:


Provide diff and patch API endpoints

The diff and patch endpoints on the main routes are not accessible by token
therefore we provide new API based endpoints for these
Fix #10923
Signed-off-by: Andrew Thornton<EMAIL_ADDRESS>

Looks good just need to check if it colide with gh api

make lgtm work


Disable hammer on specific div

Hi eveyone! I'm using the Carousel demo which is exactly what I was looking for. However inside each slide I have texts blocks with vertical scroll. I would like to disable the possibility to swipe up/down when the user try to use the scroll. Here is my code : https://gist.github.com/Silvering/f455abfc663f68c25403
Any idea? Thanks a lot!

@Silvering questions on usage belong on StackOverflow or in the Hammer Slack channel, thanks.


Schema/Model design

Come out with a schema/entity document, identify the different entities from project definition. In case of doubts, discuss with team members.-Use tools that can export schema design to png or pdf, check out this one or alternatives you most comfortable with hackolade

Regarding the structure of the public contract, this document can help extract properties related to a typical project, consider section IV and V for project fields.

The more entities designed the better, schema design should cover at least 70% of project entities

Hello @tanerochris it appears hackolade isn't a free tool. It only offers a 14 day trial. What happens when we need to do modifications say after 15 days to the model?

hey @mernxl , That really shouldn't bother you, just start with the design. Hackolade is a great tool

@dherve19  is it possible to export to a portable format that can be imported into different platforms?

HI i can export it here is the desire format but still need to dit it. Here is the link to chechk before i export and convert it to the code https://drive.google.com/open?id=1CNUkdqceWJTpv3i0EF1-UgcIs6ze8p6D

@tanerochris  yea its possible to export.

@dherve19 clone app, checkout from project-setup-branch to a new branch Schema-design, add the schema in the docs folder and create a PR

Hello @dherve19  can you integrate the changes requested by @mernxl  so we can continue.
voxnostra documentation.pdf


make clean target fails if there is nothing to clean

I started on preparing a Debian package in the proper way.
My first build has issues, the first one to report is that the clean target fails when there is nothing to clean.
I think you want to add "-f" to the rm command on line 7 of the Release/makefile.
make[2]: Entering directory '/<<PKGBUILDDIR>>/Release'
rm  ./src/xpath/xpath.o ./src/xmath/xmath.o ./src/timeit/timeit.o ./src/test/test.o ./src/strextra/strextra.o ./src/slist/slist.o ./src/siri/admin/account.o ./src/siri/admin/client.o ./src/siri/admin/request.o ./src/siri/parser/listener.o ./src/siri/parser/queries.o ./src/siri/net/bserver.o ./src/siri/net/clserver.o ./src/siri/net/pkg.o ./src/siri/net/promise.o ./src/siri/net/promises.o ./src/siri/net/protocol.o ./src/siri/net/socket.o ./src/siri/help/help.o ./src/siri/grammar/grammar.o ./src/siri/file/handler.o ./src/siri/file/pointer.o ./src/siri/db/access.o ./src/siri/db/aggregate.o ./src/siri/db/auth.o ./src/siri/db/buffer.o ./src/siri/db/db.o ./src/siri/db/ffile.o ./src/siri/db/fifo.o ./src/siri/db/forward.o ./src/siri/db/group.o ./src/siri/db/groups.o ./src/siri/db/initsync.o ./src/siri/db/insert.o ./src/siri/db/lookup.o ./src/siri/db/median.o ./src/siri/db/misc.o ./src/siri/db/nodes.o ./src/siri/db/pcache.o ./src/siri/db/points.o ./src/siri/db/pool.o ./src/siri/db/pools.o ./src/siri/db/presuf.o ./src/siri/db/props.o ./src/siri/db/query.o ./src/siri/db/re.o ./src/siri/db/reindex.o ./src/siri/db/replicate.o ./src/siri/db/series.o ./src/siri/db/server.o ./src/siri/db/servers.o ./src/siri/db/shard.o ./src/siri/db/shards.o ./src/siri/db/time.o ./src/siri/db/user.o ./src/siri/db/users.o ./src/siri/db/variance.o ./src/siri/db/walker.o ./src/siri/cfg/cfg.o ./src/siri/args/args.o ./src/siri/async.o ./src/siri/backup.o ./src/siri/err.o ./src/siri/heartbeat.o ./src/siri/optimize.o ./src/siri/siri.o ./src/siri/version.o ./src/qpack/qpack.o ./src/procinfo/procinfo.o ./src/owcrypt/owcrypt.o ./src/motd/motd.o ./src/logger/logger.o ./src/lock/lock.o ./src/llist/llist.o ./src/iso8601/iso8601.o ./src/imap/imap.o ./src/expr/expr.o  ./src/ctree/ctree.o  ./src/cfgparser/cfgparser.o  ./src/cexpr/cexpr.o  ./src/argparse/argparse.o  ./main.o ./src/xpath/xpath.d ./src/xmath/xmath.d ./src/timeit/timeit.d ./src/test/test.d ./src/strextra/strextra.d ./src/slist/slist.d ./src/siri/admin/account.d ./src/siri/admin/client.d ./src/siri/admin/request.d ./src/siri/parser/listener.d ./src/siri/parser/queries.d ./src/siri/net/bserver.d ./src/siri/net/clserver.d ./src/siri/net/pkg.d ./src/siri/net/promise.d ./src/siri/net/promises.d ./src/siri/net/protocol.d ./src/siri/net/socket.d ./src/siri/help/help.d ./src/siri/grammar/grammar.d ./src/siri/file/handler.d ./src/siri/file/pointer.d ./src/siri/db/access.d ./src/siri/db/aggregate.d ./src/siri/db/auth.d ./src/siri/db/buffer.d ./src/siri/db/db.d ./src/siri/db/ffile.d ./src/siri/db/fifo.d ./src/siri/db/forward.d ./src/siri/db/group.d ./src/siri/db/groups.d ./src/siri/db/initsync.d ./src/siri/db/insert.d ./src/siri/db/lookup.d ./src/siri/db/median.d ./src/siri/db/misc.d ./src/siri/db/nodes.d ./src/siri/db/pcache.d ./src/siri/db/points.d ./src/siri/db/pool.d ./src/siri/db/pools.d ./src/siri/db/presuf.d ./src/siri/db/props.d ./src/siri/db/query.d ./src/siri/db/re.d ./src/siri/db/reindex.d ./src/siri/db/replicate.d ./src/siri/db/series.d ./src/siri/db/server.d ./src/siri/db/servers.d ./src/siri/db/shard.d ./src/siri/db/shards.d ./src/siri/db/time.d ./src/siri/db/user.d ./src/siri/db/users.d ./src/siri/db/variance.d ./src/siri/db/walker.d ./src/siri/cfg/cfg.d ./src/siri/args/args.d ./src/siri/async.d ./src/siri/backup.d ./src/siri/err.d ./src/siri/heartbeat.d ./src/siri/optimize.d ./src/siri/siri.d ./src/siri/version.d ./src/qpack/qpack.d ./src/procinfo/procinfo.d ./src/owcrypt/owcrypt.d ./src/motd/motd.d ./src/logger/logger.d ./src/lock/lock.d ./src/llist/llist.d ./src/iso8601/iso8601.d ./src/imap/imap.d ./src/expr/expr.d  ./src/ctree/ctree.d  ./src/cfgparser/cfgparser.d  ./src/cexpr/cexpr.d  ./src/argparse/argparse.d  ./main.d siridb-server
rm: cannot remove './src/xpath/xpath.o': No such file or directory
rm: cannot remove './src/xmath/xmath.o': No such file or directory
rm: cannot remove './src/timeit/timeit.o': No such file or directory
rm: cannot remove './src/test/test.o': No such file or directory
rm: cannot remove './src/strextra/strextra.o': No such file or directory
rm: cannot remove './src/slist/slist.o': No such file or directory
rm: cannot remove './src/siri/admin/account.o': No such file or directory
rm: cannot remove './src/siri/admin/client.o': No such file or directory
rm: cannot remove './src/siri/admin/request.o': No such file or directory
rm: cannot remove './src/siri/parser/listener.o': No such file or directory
rm: cannot remove './src/siri/parser/queries.o': No such file or directory
rm: cannot remove './src/siri/net/bserver.o': No such file or directory
rm: cannot remove './src/siri/net/clserver.o': No such file or directory
rm: cannot remove './src/siri/net/pkg.o': No such file or directory
rm: cannot remove './src/siri/net/promise.o': No such file or directory
rm: cannot remove './src/siri/net/promises.o': No such file or directory
rm: cannot remove './src/siri/net/protocol.o': No such file or directory
rm: cannot remove './src/siri/net/socket.o': No such file or directory
rm: cannot remove './src/siri/help/help.o': No such file or directory
rm: cannot remove './src/siri/grammar/grammar.o': No such file or directory
rm: cannot remove './src/siri/file/handler.o': No such file or directory
rm: cannot remove './src/siri/file/pointer.o': No such file or directory
rm: cannot remove './src/siri/db/access.o': No such file or directory
rm: cannot remove './src/siri/db/aggregate.o': No such file or directory
rm: cannot remove './src/siri/db/auth.o': No such file or directory
rm: cannot remove './src/siri/db/buffer.o': No such file or directory
rm: cannot remove './src/siri/db/db.o': No such file or directory
rm: cannot remove './src/siri/db/ffile.o': No such file or directory
rm: cannot remove './src/siri/db/fifo.o': No such file or directory
rm: cannot remove './src/siri/db/forward.o': No such file or directory
rm: cannot remove './src/siri/db/group.o': No such file or directory
rm: cannot remove './src/siri/db/groups.o': No such file or directory
rm: cannot remove './src/siri/db/initsync.o': No such file or directory
rm: cannot remove './src/siri/db/insert.o': No such file or directory
rm: cannot remove './src/siri/db/lookup.o': No such file or directory
rm: cannot remove './src/siri/db/median.o': No such file or directory
rm: cannot remove './src/siri/db/misc.o': No such file or directory
rm: cannot remove './src/siri/db/nodes.o': No such file or directory
rm: cannot remove './src/siri/db/pcache.o': No such file or directory
rm: cannot remove './src/siri/db/points.o': No such file or directory
rm: cannot remove './src/siri/db/pool.o': No such file or directory
rm: cannot remove './src/siri/db/pools.o': No such file or directory
rm: cannot remove './src/siri/db/presuf.o': No such file or directory
rm: cannot remove './src/siri/db/props.o': No such file or directory
rm: cannot remove './src/siri/db/query.o': No such file or directory
rm: cannot remove './src/siri/db/re.o': No such file or directory
rm: cannot remove './src/siri/db/reindex.o': No such file or directory
rm: cannot remove './src/siri/db/replicate.o': No such file or directory
rm: cannot remove './src/siri/db/series.o': No such file or directory
rm: cannot remove './src/siri/db/server.o': No such file or directory
rm: cannot remove './src/siri/db/servers.o': No such file or directory
rm: cannot remove './src/siri/db/shard.o': No such file or directory
rm: cannot remove './src/siri/db/shards.o': No such file or directory
rm: cannot remove './src/siri/db/time.o': No such file or directory
rm: cannot remove './src/siri/db/user.o': No such file or directory
rm: cannot remove './src/siri/db/users.o': No such file or directory
rm: cannot remove './src/siri/db/variance.o': No such file or directory
rm: cannot remove './src/siri/db/walker.o': No such file or directory
rm: cannot remove './src/siri/cfg/cfg.o': No such file or directory
rm: cannot remove './src/siri/args/args.o': No such file or directory
rm: cannot remove './src/siri/async.o': No such file or directory
rm: cannot remove './src/siri/backup.o': No such file or directory
rm: cannot remove './src/siri/err.o': No such file or directory
rm: cannot remove './src/siri/heartbeat.o': No such file or directory
rm: cannot remove './src/siri/optimize.o': No such file or directory
rm: cannot remove './src/siri/siri.o': No such file or directory
rm: cannot remove './src/siri/version.o': No such file or directory
rm: cannot remove './src/qpack/qpack.o': No such file or directory
rm: cannot remove './src/procinfo/procinfo.o': No such file or directory
rm: cannot remove './src/owcrypt/owcrypt.o': No such file or directory
rm: cannot remove './src/motd/motd.o': No such file or directory
rm: cannot remove './src/logger/logger.o': No such file or directory
rm: cannot remove './src/lock/lock.o': No such file or directory
rm: cannot remove './src/llist/llist.o': No such file or directory
rm: cannot remove './src/iso8601/iso8601.o': No such file or directory
rm: cannot remove './src/imap/imap.o': No such file or directory
rm: cannot remove './src/expr/expr.o': No such file or directory
rm: cannot remove './src/ctree/ctree.o': No such file or directory
rm: cannot remove './src/cfgparser/cfgparser.o': No such file or directory
rm: cannot remove './src/cexpr/cexpr.o': No such file or directory
rm: cannot remove './src/argparse/argparse.o': No such file or directory
rm: cannot remove './main.o': No such file or directory
rm: cannot remove './src/xpath/xpath.d': No such file or directory
rm: cannot remove './src/xmath/xmath.d': No such file or directory
rm: cannot remove './src/timeit/timeit.d': No such file or directory
rm: cannot remove './src/test/test.d': No such file or directory
rm: cannot remove './src/strextra/strextra.d': No such file or directory
rm: cannot remove './src/slist/slist.d': No such file or directory
rm: cannot remove './src/siri/admin/account.d': No such file or directory
rm: cannot remove './src/siri/admin/client.d': No such file or directory
rm: cannot remove './src/siri/admin/request.d': No such file or directory
rm: cannot remove './src/siri/parser/listener.d': No such file or directory
rm: cannot remove './src/siri/parser/queries.d': No such file or directory
rm: cannot remove './src/siri/net/bserver.d': No such file or directory
rm: cannot remove './src/siri/net/clserver.d': No such file or directory
rm: cannot remove './src/siri/net/pkg.d': No such file or directory
rm: cannot remove './src/siri/net/promise.d': No such file or directory
rm: cannot remove './src/siri/net/promises.d': No such file or directory
rm: cannot remove './src/siri/net/protocol.d': No such file or directory
rm: cannot remove './src/siri/net/socket.d': No such file or directory
rm: cannot remove './src/siri/help/help.d': No such file or directory
rm: cannot remove './src/siri/grammar/grammar.d': No such file or directory
rm: cannot remove './src/siri/file/handler.d': No such file or directory
rm: cannot remove './src/siri/file/pointer.d': No such file or directory
rm: cannot remove './src/siri/db/access.d': No such file or directory
rm: cannot remove './src/siri/db/aggregate.d': No such file or directory
rm: cannot remove './src/siri/db/auth.d': No such file or directory
rm: cannot remove './src/siri/db/buffer.d': No such file or directory
rm: cannot remove './src/siri/db/db.d': No such file or directory
rm: cannot remove './src/siri/db/ffile.d': No such file or directory
rm: cannot remove './src/siri/db/fifo.d': No such file or directory
rm: cannot remove './src/siri/db/forward.d': No such file or directory
rm: cannot remove './src/siri/db/group.d': No such file or directory
rm: cannot remove './src/siri/db/groups.d': No such file or directory
rm: cannot remove './src/siri/db/initsync.d': No such file or directory
rm: cannot remove './src/siri/db/insert.d': No such file or directory
rm: cannot remove './src/siri/db/lookup.d': No such file or directory
rm: cannot remove './src/siri/db/median.d': No such file or directory
rm: cannot remove './src/siri/db/misc.d': No such file or directory
rm: cannot remove './src/siri/db/nodes.d': No such file or directory
rm: cannot remove './src/siri/db/pcache.d': No such file or directory
rm: cannot remove './src/siri/db/points.d': No such file or directory
rm: cannot remove './src/siri/db/pool.d': No such file or directory
rm: cannot remove './src/siri/db/pools.d': No such file or directory
rm: cannot remove './src/siri/db/presuf.d': No such file or directory
rm: cannot remove './src/siri/db/props.d': No such file or directory
rm: cannot remove './src/siri/db/query.d': No such file or directory
rm: cannot remove './src/siri/db/re.d': No such file or directory
rm: cannot remove './src/siri/db/reindex.d': No such file or directory
rm: cannot remove './src/siri/db/replicate.d': No such file or directory
rm: cannot remove './src/siri/db/series.d': No such file or directory
rm: cannot remove './src/siri/db/server.d': No such file or directory
rm: cannot remove './src/siri/db/servers.d': No such file or directory
rm: cannot remove './src/siri/db/shard.d': No such file or directory
rm: cannot remove './src/siri/db/shards.d': No such file or directory
rm: cannot remove './src/siri/db/time.d': No such file or directory
rm: cannot remove './src/siri/db/user.d': No such file or directory
rm: cannot remove './src/siri/db/users.d': No such file or directory
rm: cannot remove './src/siri/db/variance.d': No such file or directory
rm: cannot remove './src/siri/db/walker.d': No such file or directory
rm: cannot remove './src/siri/cfg/cfg.d': No such file or directory
rm: cannot remove './src/siri/args/args.d': No such file or directory
rm: cannot remove './src/siri/async.d': No such file or directory
rm: cannot remove './src/siri/backup.d': No such file or directory
rm: cannot remove './src/siri/err.d': No such file or directory
rm: cannot remove './src/siri/heartbeat.d': No such file or directory
rm: cannot remove './src/siri/optimize.d': No such file or directory
rm: cannot remove './src/siri/siri.d': No such file or directory
rm: cannot remove './src/siri/version.d': No such file or directory
rm: cannot remove './src/qpack/qpack.d': No such file or directory
rm: cannot remove './src/procinfo/procinfo.d': No such file or directory
rm: cannot remove './src/owcrypt/owcrypt.d': No such file or directory
rm: cannot remove './src/motd/motd.d': No such file or directory
rm: cannot remove './src/logger/logger.d': No such file or directory
rm: cannot remove './src/lock/lock.d': No such file or directory
rm: cannot remove './src/llist/llist.d': No such file or directory
rm: cannot remove './src/iso8601/iso8601.d': No such file or directory
rm: cannot remove './src/imap/imap.d': No such file or directory
rm: cannot remove './src/expr/expr.d': No such file or directory
rm: cannot remove './src/ctree/ctree.d': No such file or directory
rm: cannot remove './src/cfgparser/cfgparser.d': No such file or directory
rm: cannot remove './src/cexpr/cexpr.d': No such file or directory
rm: cannot remove './src/argparse/argparse.d': No such file or directory
rm: cannot remove './main.d': No such file or directory
rm: cannot remove 'siridb-server': No such file or directory
makefile:76: recipe for target 'clean' failed
make[2]: [clean] Error 1 (ignored)

Thx! Added -f to the makefile.


Investigate changing Document#getAsText to use NSFItemConvertValueToText

The current implementation uses NSFItemConvertToText, which looks to convert only the first one. The docs indicate that NSFItemConvertValueToText is useful when there are multiple items by the same name, though the mechanics of that function imply that it'd be up to the caller to iterate over all such items.
It may be worth adding a secondary method to this to describe how to handle concatenating the values from multiple items. The use of a character for concatenating list-type items would be a reasonable default, but realistically what you'd want with e.g. a rich-text item is either no character or a different one, like a newline.

Alternatively, it may make sense to add a binding to this to the Item class, since that will let the user iterate over items and convert them.


Organization view filter

What this PR does / why we need it:
This PR implements organization view filtering, that is filtering between internal and external organization object.
NONE

/retest


bug: extra start/end document markers confuse dyff

Hey! Sweet project.
Consider the following:
$ cat foo.yaml
---
---
a: foo

$ cat foo.json
{
  "a": "foo"
}

Running dyff against these doesn't show what I expect as the proper output. To me the objects are the same, even though the yaml has an extra ---.
adam@~$ dyff between foo.json foo.yaml
      _        __  __
    _| |_   _ / _|/ _|  between /Users/adam/foo.json
  / _' | | | | |_| |_       and /Users/adam/foo.yaml
 | (_| | |_| |  _|  _|
  \__,_|\__, |_| |_|   returned one difference
        |___/

(root level)
- one map entry removed:
  a: foo

I don't know enough about yaml to tell if the extra --- should be treated as multiple objects.

As far as I know, the triple dash --- is the document separator in YAML. The Go YAML library only reads the first document of a file. That's why I created a TODO in the load file routine to bring up the issue to the user in case there are multiple documents in the file. At some point, I have to migrate the TODOs out of the code into GitHub issues.
Anyway, thank you for the issue and I will definitely fix this by returning an error message to the user that multiple documents in one YAML are not supported. Because the alternative would be to expect that the file to compare against would also need to have multiple documents.

The Go YAML library only reads the first document of a file.

That's unfortunate. I assume the kubectl command doesn't use that yaml parser then. It supports multiple documents.

Just a quick update on this one: I was wrong with stating the Go YAML library does not support multi-document YAMLs. Only the function I was using from the library did not support that. The PR #5 should address multi-document YAMLs.


Is there default pagination in pippo?

Im fetching data from db and since data can be very large, sending paginated response would be much better but I'm unable to find any documentation on pagination.
Is pagination supported in pippo? or should it be custom implemented?

Pippo doesn't come with support for pagination. You should add the pagination info (pageNo and itemsPerPage, or other strategy) in request.


scheduler: fix reservation nominator residual bug

Ⅰ. Describe what this PR does

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[ ] I have written necessary docs and comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in make test

/lgtm

/approve


Updating the vendor folder

The vendor folder isn't updated since 8 months. Update the dependencies and also update the gvt documentation.

I think it's better that the vendor packages are pulled in while building the binaries, rather than committing them to that directory, unless there's a good reason to do so.


Fix Inherited permissions from stopping settings creation

The settings base implements the interface IContentSecurable which requires a ACL to be returned.
If the ACL is inherited (which happens if the startpage is set to inherit from the root node) it's not possible to create a setting.

Merge to main.


show-names - Support in first comment

Screenshot
before:

after:

Is it missing only from the first comment?

This is already working for me on issues, https://github.com/refined-github/refined-github/issues/8022, and this PR. Is this tied to being in the beta or something else?

@kovsu please always include the reference to the issue and at least one test URL
@busches it's #7856

Is it missing only from the first comment?

yeah

Events lack it too: https://github.com/eslint/eslint/issues/18391#event-1518943450

But it's fine, we don't have to add it to every single username.


[bug]: LAN address shows https://embassy.local/ in About

Prerequisites

[X] I have searched for existing issues that already report this problem, without success.

EmbassyOS Version
0.3.0
Device
Laptop/Desktop
Device OS
Windows
Device OS Version
Windows 10
Browser
Firefox
Browser Version
95.0
Current Behavior
The LAN address in the About page is not updated and remains https://embassy.local/.

Expected Behavior
Show updated LAN address https://embassy-[XYZ].local/
Steps to Reproduce
Embassy -> About -> LAN Address
Anything else?
No response

Does this behavior persist across hard refreshes in the UI? (Ctrl + Shift + R)

Does this behavior persist across hard refreshes in the UI? (Ctrl + Shift + R)

Yes, and also after a restart of the embassy.


Add ability to prepend query comments

Addresses #1982, first attempt.

This feature now just seems to allow to add any string to front of query which sounds pretty dangerous. Also it should be tested with all type of queries and throw an error if database doesn't support it.
I'm not sure how this should be supported... if this feature is named as .comment() then it should force comment marks there etc.
If this is just meant to allow to prepend anything to query, then naming should be changed too, but having that kind of feature for adding any strings to query would be more useful in a way that it would allow to add it to multiple places also in the middle of queries (that will be a lot harder to implement and would need some discussion about the design even if that is wanted to be included to knex).

I don't think the ability to prepend just any old thing to the query would be needed. If I updated it to force comment marks, would that be more acceptable?

Which databases supports comments?
I think it should be fine... if someone calls .comment() for database that doesn't support it, method should throw an error. There should be then also options object given as second parameter .comment('foo', { ignoreOnNonSupportedDatabases: true }) for suppressing that error.

I'm fairly certain all databases support comments - I believe it's part of the SQL standard. I could be wrong.

I have two requests if you don't mind.

Validation of input to .comment as string only. Is there any use-case aside from strings?

Would prefer if API is simply .comment('string') rather than having to specify .comment('/* string */'), its more clean. Or is there a reason behind this?

@rfink Any chance you could finish it?

Okay, this slipped my mind and I just found this in my backlog emails (sorry about the delay). I've added the automatic /* */ around the comment, added a check to ensure the comment is a string, added multiple comments for testing, and added the integration tests. The Travis tests seem largely to have passed, with the exception of the Oracle tests, which look to be failing due to a repository issue. Let me know if you need anything added!

I just realized that this could have been probably done with query.wrap('/* comment */', ''); :)

sorry for huge delay on reviewing

Hey, no worries. Sorry for the delay on my part. I'm happy to make these changes - I admit I'm not terribly familiar with the integration tests for running the queries. Can you make a recommendation on that?
Also for checking for /* and */ inside the string, are you okay with just a simple indexOf() ?

indexOf is fine. For example here https://github.com/tgriesser/knex/blob/master/test/tape/crossdb-compatibility.js and here https://github.com/tgriesser/knex/blob/master/test/integration/builder/selects.js#L1093  are some integration tests.

Awesome - I've added these things, and I believe I have the integration tests running against the db properly, based on the links you sent. Thank you for your advice, and I'll be happy to add anything additional.

Actually, it's not happy with ? in the comments. I'm checking into my options there.

I'm not sure what would be the best option. One option would be to automatically escape them in case if there is unescaped ? in the comment string or just validate that there is no unescaped question marks there.

@rfink Would you consider finishing this?

@rfink Anything we can help with from our side?

I could try to take this PR if rfink can't

@gndelia Much appreciated!

@gndelia Are you still up to finish it?

Sorry, I had some difficulties and I forgot about this. Let anyone to start it, if it keeps untaken once I'm free I will write here. 😞

I was able to work around this by subclassing QueryBuilder with
  toSQL() {
    const ret = super.toSQL();
    ret.sql = `/* my comment */`.concat(ret.sql);
    return ret;
  }

This pr can be closed https://github.com/knex/knex/pull/5289

Closed, implemented in https://github.com/knex/knex/pull/5289


Swagger support for @JsonView

Hi,
In my project, I heavily use jsonview to return different response for each endpoint for same resource.
For example - I have an resource called Student. In first end point I may return only 5 attributes and in second endpoint I may return additional 2 attributes.
When I try swagger, it generates the doc for whole object, not for the view.
I tried to google and not getting enough details whether swagger supports jsonview. Can you please let me know how to get it resolved?

Hi, atm JsonView is not supported in swagger; such support is however considered for future release as it is a quite requested features, as in #479 and #2079 (any PR in this area is welcome).
Closing as duplicate of #479 and #2079


Trailing slash on AWS_ENDPOINT raises S3 Error

Environment
Delta-rs version: 0.18.0
Binding: Python
Environment:

Cloud provider: Local/On-Prem lakeFS with Minio
OS: Ubuntu 24.04 LTS
Other: Python 3.10

Bug
What happened:
I added a trailing slash to the AWS_ENDPOINT entry of the storage_options dictionary that gets passed to deltalake.write_deltalake. This raised the following error and prevented any data from being written to the object store.
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Cell In[14], line 1
----> 1 deltalake.write_deltalake(table_or_uri=f"s3a://{repo_name}/main/userdata/",
      2                           data = subset,
      3                           mode='overwrite',
      4                           storage_options=storage_options)

File /opt/conda/lib/python3.10/site-packages/deltalake/writer.py:258, in write_deltalake(table_or_uri, data, schema, partition_by, mode, file_options, max_partitions, max_open_files, max_rows_per_file, min_rows_per_group, max_rows_per_group, name, description, configuration, schema_mode, storage_options, partition_filters, predicate, large_dtypes, engine, writer_properties, custom_metadata)
    171 def write_deltalake(
    172     table_or_uri: Union[str, Path, DeltaTable],
    173     data: Union[
   (...)
    201     custom_metadata: Optional[Dict[str, str]] = None,
    202 ) -> None:
    203     """Write to a Delta Lake table
    204
    205     If the table does not already exist, it will be created.
   (...)
    256         custom_metadata: Custom metadata to add to the commitInfo.
    257     """
--> 258     table, table_uri = try_get_table_and_table_uri(table_or_uri, storage_options)
    259     if table is not None:
    260         storage_options = table._storage_options or {}

File /opt/conda/lib/python3.10/site-packages/deltalake/writer.py:673, in try_get_table_and_table_uri(table_or_uri, storage_options)
    670     raise ValueError("table_or_uri must be a str, Path or DeltaTable")
    672 if isinstance(table_or_uri, (str, Path)):
--> 673     table = try_get_deltatable(table_or_uri, storage_options)
    674     table_uri = str(table_or_uri)
    675 else:

File /opt/conda/lib/python3.10/site-packages/deltalake/writer.py:686, in try_get_deltatable(table_uri, storage_options)
    682 def try_get_deltatable(
    683     table_uri: Union[str, Path], storage_options: Optional[Dict[str, str]]
    684 ) -> Optional[DeltaTable]:
    685     try:
--> 686         return DeltaTable(table_uri, storage_options=storage_options)
    687     except TableNotFoundError:
    688         return None

File /opt/conda/lib/python3.10/site-packages/deltalake/table.py:297, in DeltaTable.__init__(self, table_uri, version, storage_options, without_files, log_buffer_size)
    277 """
    278 Create the Delta Table from a path with an optional version.
    279 Multiple StorageBackends are currently supported: AWS S3, Azure Data Lake Storage Gen2, Google Cloud Storage (GCS) and local URI.
   (...)
    294
    295 """
    296 self._storage_options = storage_options
--> 297 self._table = RawDeltaTable(
    298     str(table_uri),
    299     version=version,
    300     storage_options=storage_options,
    301     without_files=without_files,
    302     log_buffer_size=log_buffer_size,
    303 )

OSError: Generic S3 error: Header: Content-Length Header missing from response

What you expected to happen:
deltalake.write_deltalake successfully writes to the object store without error regardless of whether or not there is a trailing slash on the AWS endpoint storage option.

How to reproduce it:
On a machine with docker and docker-compose installed, run the following commands:
git clone https://github.com/treeverse/lakeFS-samples
cd lakeFS-samples
docker compose --profile local-lakefs up

Then open a web browser, and navigate to http://localhost:8888.
In JupyterLab open delta-lake-python.ipynb, and in the first code cell of the Jupyter notebook, replace lakefsEndPoint = 'http://lakefs:8000' with lakefsEndPoint = 'http://lakefs:8000/'.
If you then attempt to run all of the cells, the notebook should fail on the second cell under "Write the test data to the main branch as a Delta table".
Removing the trailing slash and re-running the entire notebook should succeed.

I'm able to reproduce this issue as per the steps provided above. Will dig deeper and raise a PR with the fix in the next few days.

PR to close this issue: https://github.com/delta-io/delta-rs/pull/2770


ImportError: No module named lxmert.lxmert.src.tasks

Hi @hila-chefer , when I tried to run the lxmert script, I encounter import problems! Thanks!

Hi @CaffreyR, thanks for your interest!
I can’t reproduce the issue, it seems that the folder does exist did you clone the entire project to your local server?
It could also be an issue with your PATH environment variable though I see your call should have handled it.

@CaffreyR closing due to inactivity, please reopen if necessary


Read "unavailable" as the first thing ahead of a date instead of the last.

Screen readers have to go through every unavailable date before landing on an available date.
User has to listen to the full date for the word "dimmed" before moving to the next. Tedious to find available date.
Not clear when an interaction will be possible or if it's possible.
(JAWS) Whether dates are tagged as "unavailable" or have no description changes depending on what other interactions have taken place

Work in progress ...
@zakkain I have an english version of this in progress. The label now reads "unavailable Tuesday, October 2, 2018".  Voice over adds "dimmed" at the end.

Comments?

PR here https://github.com/cds-snc/ircc-rescheduler/pull/451

👍


PIN code greater than 6 characters?

This was a problem I had with the old Bluedroid code that I never figured out, and I'm having the same issue with NimBLE.
return 123456;
...
NimBLEDevice::setSecurityPasskey(123456);

Below code bonds if pin is 123456, but does not bond if it's 1234567. (testing with Android phone, if that matters)
#include <NimBLEDevice.h>

BLEServer *pServer = NULL;
BLECharacteristic * pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;
uint8_t txValue = 0;

#define SERVICE_UUID           "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
      BLEDevice::startAdvertising();//adding this line allows for multiple simultaneous BLE connections
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
  /***************** New - Security handled here ********************
  ****** Note: these are the same return values as defaults ********/
    uint32_t onPassKeyRequest(){
      Serial.println("Server PassKeyRequest");
      return 123456;
    }

    void onPassKeyNotify(uint32_t passkey) {
      Serial.println("Passkey Notify");
    }

    bool onConfirmPIN(uint32_t pass_key){
      Serial.print("The passkey YES/NO number: ");Serial.println(pass_key);
      return true;
    }

    void onAuthenticationComplete(ble_gap_conn_desc* desc) {
     if(desc->sec_state.encrypted){
        if(!desc->sec_state.encrypted) {
            Serial.println("Encrypt connection failed - disconnecting");
            /** Find the client with the connection handle provided in desc */
            NimBLEDevice::getClientByID(desc->conn_handle)->disconnect();
            vTaskDelay(5000);//bruteforce protection, 5s
            return;
          }
       }
    }
  /*******************************************************************/
};

class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string rxValue = pCharacteristic->getValue();

      if (rxValue.length() > 0) {
        Serial.print("Received Value: ");
        for (int i = 0; i < rxValue.length(); i++)
          Serial.print(rxValue[i]);

        if(rxValue.find("F") != -1)
          Serial.println("do stuff");
        }
    }
};

void setup() {
  Serial.begin(115200);

  // Create the BLE Device
  NimBLEDevice::init("NimBLE");
  NimBLEDevice::setPower(ESP_PWR_LVL_P9);

  NimBLEDevice::setSecurityAuth(true, true, true);
  NimBLEDevice::setSecurityPasskey(123456);
  NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY);

  // Create the BLE Server
  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  // Create the BLE Service
  BLEService *pService = pServer->createService(SERVICE_UUID);

  // Create a BLE Characteristic
  pTxCharacteristic = pService->createCharacteristic(
                                        CHARACTERISTIC_UUID_TX,
                                    /******* Enum Type NIMBLE_PROPERTY now *******
                                        BLECharacteristic::PROPERTY_NOTIFY
                                        );
                                    **********************************************/
                                        NIMBLE_PROPERTY::NOTIFY
                                       );

  BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(
                                            CHARACTERISTIC_UUID_RX,
                                    /******* Enum Type NIMBLE_PROPERTY now *******
                                            BLECharacteristic::PROPERTY_WRITE
                                            );
                                    *********************************************/
                                            NIMBLE_PROPERTY::WRITE
                                            );

  pRxCharacteristic->setCallbacks(new MyCallbacks());

  // Start the service
  pService->start();

  // Start advertising
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}

void loop() {

    // disconnecting
    if (!deviceConnected && oldDeviceConnected) {
        delay(500); // give the bluetooth stack the chance to get things ready
        pServer->startAdvertising(); // restart advertising
        Serial.println("start advertising");
        oldDeviceConnected = deviceConnected;
    }
    // connecting
    if (deviceConnected && !oldDeviceConnected) {
        // do stuff here on connecting
        oldDeviceConnected = deviceConnected;
    }
}

Hi @societyofrobots, the BLE specification states that the passkey must be between 000000 and 999999. Therefore you cannot use more (or less) than 6 digits.


Added hybrid line numbers

Added the option rulerhybrid to enable relative line numbers. The default value is false.
closes: #1639
This is my first PR that modifies code. I would recommend taking closer look at the code to make sure I didn't use any bad programming practices. I did test these changes, with rulerhybrid set to false, set to true, as well as unset, which all worked to be expected.

Thanks for the contribution! A couple comments: I think it would be more clear to call the option relativeruler, and I don't think this PR should modify go.mod and go.sum so you should reset those changes.
It would also be great if you could add this option to the docs in runtime/help/options.md.

Thanks for the advice! I made all the changes you suggested.

Thanks for the implementation.


ViewController's viewWillAppear function will not be invoke when click tab

When I click the tab, viewController's viewWillAppear function will not be invoke? any suggestions?

Hi, @yaoliangjun .
Since it is generating the ViewController with the initial loading, func viewWillAppear() is supposed not to be called.
Set delegate and call it with func swipeMenuView(_ swipeMenuView: SwipeMenuView, willChangeIndexFrom fromIndex: Int, to toIndex: Int)

thanks!

@yysskk Can you please share the code ?
Thanks


plugin: add zoxide

Description
zoxide is a smarter cd command for the terminal.
Motivation and Context
zoxide is fast, configurable, and feature-rich. In addition to bash/zsh/other shells, it supports a variety of programs like ranger, vim, etc.
How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[x] If my change requires a change to the documentation, I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] If I have added a new file, I also added it to clean_files.txt and formatted it using lint_clean_files.sh.
[ ] I have added tests to cover my changes, and all the new and existing tests pass.

Thank you!


UI rendering problem on cloned repo

Hi,
I have cloned caravel and set it up following instructions in CONTRIBUTING.md. Steps followed-
    # setup a virtual env and activate it
    virtualenv env
    source env/bin/activate

    # install for development
    python setup.py develop

    # Create an admin user
    fabmanager create-admin --app caravel

    # Initialize the database
    caravel db upgrade

    # Create default roles and permissions
    caravel init

    # Load some data to play with
    caravel load_examples

    # start a dev web server
    caravel runserver -d

The home page post login however doesn't render. Attached screenshot. My environment is OS X 10.9.5.
Any idea?
Regards,
Ramashish

You also need to follow the steps in the next part, Setting up the node / npm javascript environment. It will generate the static assets you need.


Is this project still under active development or support?

This project seems interesting. Is it still being worked on? Better yet, what are the plans?

Been 2 years since this was opened so I would say, no. However it's a shame, this can be a good alternative to having virtualbox installed on my machine
This also sounds amazing:

Manage lifecycle of virtual machines (inspired by bhyvectl on FreeBSD)
Build and package virtual machines
Native, OS X GUI (inspired by virt-manager on Linux)

Any way we can start supporting this again? I don't mind contributing some of my time, even if my C is very rusty


Removing hungarian notation (iginikolaev/minify/issue-1)

helping for #hacktoberfest
@iginikolaev /minify issues: #1 #2

Thanks, great work! :+1:


Feature request: Tagging and Interface Usability

Thank you for your great work on this project. I'd like to suggest three feature additions:

In-Interface Image Tagging: Allow adding tags directly in txt2img/img2img interfaces for better organization.
Cross-Platform Tag Sharing: Allow tag sharing between the standalone program and extension for SD-WebUI.
Middle Mouse Click for Tab Closure: Enable closing tabs with a middle mouse click for improved navigation.

Are these additions possible?  Thanks for considering my request

I'm sorry for taking so long to see this. I've been very busy.

In-Interface Image Tagging: Allow adding tags directly in txt2img/img2img interfaces for better organization.

This feature looks very useful.

Cross-Platform Tag Sharing: Allow tag sharing between the standalone program and extension for SD-WebUI.

This feature has been supported for a long time.

Middle Mouse Click for Tab Closure: Enable closing tabs with a middle mouse click for improved navigation.

This feature can be considered for addition, but it's not very necessary.


⚠ Bofrost.be has degraded performance

In b302bc2, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1112 ms

Resolved: Bofrost.be performance has improved in 58b0c16.


Avoid having to define Quarkus version in addition to extension

It's error prone to have to define both the version of the josdk I'm using as well as the Quarkus version for the Quarkus plugin. I'm not sure if it's possible but it would sure be great if the quarkus-maven-plugin version was somehow defined by the operator-framework-quarkus-extension.

I'm pretty sure it's not feasible since maven dependencies cannot impact the set of plugins your build is configured with. Note that you have the same issue with Spring Boot and the Spring Boot starter.

I'm pretty sure it's not feasible since maven dependencies cannot impact the set of plugins your build is configured with. Note that you have the same issue with Spring Boot and the Spring Boot starter.


install and update scripts are broken

Need to add ability for parrot-hub to start and stop parrot-hub.service in the install script
Need to delete the symbolic link in the update script before attempting to create the new link

Fixed


Supplied excludes for lintspaces.newlines in .fluidlintallrc.json overwrite some default excludes

Describe the bug
For this project, a number of Markdown files are managed via Netlify CMS which means we can't enforce lintspaces.newlines or markdownlint checks on them. To address this, I added a block to .fluidlintallrc.json file as shown below:
    "lintspaces": {
        "newlines": {
            "excludes": [
                "./src/activities/*.md",
                "./src/events/*.md",
                "./src/lesson-plans/*.md",
                "./src/organizations/*.md",
                "./src/products/*.md",
                "./src/projects/*.md",
                "./src/resources/*.md",
                "./CHANGELOG.md"
            ]
        }
    },

However, when running the lint script, I noticed that I was getting lintspaces.newlines errors for a number of image files which should be excluded by the default excludes for this check (#6). Running the lint script with --showMergedConfig revealed that the merging of excludes appears to be overwriting some default excludes with those supplied by the .fluidlintallrc.json file:
  "lintspaces": {
    "newlines": {
      "excludes": [
        "./src/activities/*.md",
        "./src/events/*.md",
        "./src/lesson-plans/*.md",
        "./src/organizations/*.md",
        "./src/products/*.md",
        "./src/projects/*.md",
        "./src/resources/*.md",
        "./CHANGELOG.md",
        "*.webm",
        "*.webp"
      ],
      "enabled": true,
      "includes": [
        "./src/**/*",
        "./tests/**/*",
        "./*"
      ],
      "options": {
        "newline": true
      }
    },

It appears that the first eight lines from the default excludes array in lint-all.js are being replaced with my configuration, leaving only .webm and .webp: https://github.com/the-t-in-rtf/fluid-lint-all/blob/3cb114599f583843921299d18e37e6f4eceb950a/src/js/lint-all.js#L159-L167
To reproduce
Steps to reproduce the behavior:

Create a .fluidlintallrc.json file with these contents.
Run npx fluid-lint-all --showMergedConfig (or npm run lint -- --showMergedConfig if an npm lint script is present in the test project).
Look for the merged configuration for lintspaces.newlines.
See that many image types have been replaced with the supplied configuration.

Expected behavior
The default excludes should be present in the merged configuration.
Screenshots
Not applicable.
Technical details
Desktop

OS: macOS 11.1

Additional context or notes
Not applicable.

This is a byproduct of using fluid's array merging.  Our two options are either to migrate to using maps, or to explicitly avoid merging these by adding a merge policy.  I'm leaning towards the latter, but will chat with @amb26 for a bit.

In rereading I see that you want to add your excludes to the existing ones.  We need to discuss how someone could "opt out" of a default exclude in that scenario.

@the-t-in-rtf Yes, I think the issue here is that the default excludes for lintspaces.newlines is not something most people, if anyone will want to opt out of— it should always be additive for that check specifically (because the default excludes prevent the check from trying to validate files which don't have newlines). But I take your point that there's a larger question of how to handle situations where people want an array of default excludes to be replaced instead of merged.
Maybe something like an options key for a check like this:
"stylelint": {
  "excludeStrategy": "merge" /* Alternatively: replace */
  "excludes": [],
}

The default behaviour would be merge, but using replace would replace the default excludes with user-supplied ones.

I came up with a new strategy to allow both adding and removing ("negating") individual entries.  See #33 for details.


Enable parallel by default on the Gradle build

This enables the --parallel flag by default on our own build. This is not the long term solution, but we want to exercise more the builds now that we have a finer grained locking mechanism around dependency resolution. This will help us discover (and fix) thread-safety issues.

I started a proof stage 5 build on CI.

Seems like our integration tests fail because theHttpServerFixture is not multi-process safe. Multiple test workers connect to the same server, leading to failed assertions.

After talking about this with Adam, this was probably a flaky test that has been fixed since, not related to us activating --parallel.  Maybe the agent can't access maven central fast enough?

@oehme You mean like here: https://github.com/gradle/gradle-private/issues/881
Shouldn't the repository be already pre populated by the last builds?

@wolfs Yeah exactly, just much more reproducibly

Closing as outdated


IntelliSense/Code Preview not working correctly in 2019.3.6558

Environment data

VS Code version: 1.33.1
Extension version (available under the Extensions sidebar): XXX
OS and version: Windows 10 1803
Python version : 3.7.2
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): None
Relevant/affected Python packages and their versions: every package

Expected behaviour
When importing a class and creating an instance/object of this class we got a small preview how to use this object. (This is from Python extension for Visual Studio Code Version 2019.3.6352)

Actual behaviour
With Python extension for Visual Studio Code Version 2019.3.6558 (most recent build) it does nothing.

Steps to reproduce:

Type following code and look if youget the preview:

import threading

threading.Thread()

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
None

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help; turn on source maps to make any tracebacks be useful by running Enable source map support for extension debugging)
None

Looking at the screenshot you haven't clicked the Reload Required button.
Please reload VS Code and test once again.

@DonJayamanne I can confirm this. This happens to me lately (I'm using 2019.3.6558). Interestingly, it only happens to classes, not functions.

@DonJayamanne Yes you are right, but thats not the issue. I just upgraded back to 2019.3.6558 for the screenshot but had the "bug" before.
@phizaz Thanks for your confirmation. Strangely I have the behaviour now with 2019.3.6352 too. Maybe it is something else causing this issue. Do you use platformIO too? Thats the only thing i changed recently.

@JulianS-Uni  No, I don't use platformIO. I also tried to disable many other extensions but to no avail.

Please inform if you are using Language server or jedi as intellisense. (i.e check the value of python.jediEnabled in settings.json)

@karrtikr  I use the Language Server.

Without checking i am pretty sure i am using languageserver aswell. It tells me that it is building vor downloading languageserver in the statusbar from time zto time.

Issue moved to Microsoft/python-language-server #983 via ZenHub


Remove length from state when it equals default

Description
Delete the length from the url hash when it's default.
Motivation and Context
We previously just didn't set the default value, but this would result in a non-default value being preserved in the hash after you set to the default value.
Have you tested this? If so, how?
Ran this locally and in production.

Awesome! :)


Higher order scheme

@PierreMartinon @gergaud hi, we may have a use case that requires higher order implicit schemes (Gauss...) It is connected to this discussion.
@rand-asswad @DJEMAwalid do not hesitate to add further comments on the application, e.g. a plot of the periodic control.

We did some work on this with Joseph (see the old issue https://github.com/control-toolbox/CTDirect.jl/issues/11 and the branch https://github.com/control-toolbox/CTDirect.jl/tree/old-runge-kutta).
We felt it may be better to move to a more abstract interface with the discretization first, since it does involve quite a bit of modifications.

Ok, we'll try this again with Joseph. Hopefully the code is better structured now and should make it easier.

Dear @PierreMartinon, @jbcaillau, and @joseph-gergaud,
Thank you for considering this issue and directing me to your previous work on RK schemes. I have tinkered around with the old-runge-kutta branch but did not succeed in running it due to divergence with dependencies over the past year. I also could not allocate sufficient time to resolve this issue myself, given that I had to move on to other research topics in order to respect my planned PhD timeline, as you can imagine.
I ended up implementing the same scheme (implicit trapezoidal rule, aka Crank-Nicholson) following your algorithmic guide using JuMP with Ipopt backend. I further implemented a general RK scheme in a similar manner, so I provide here my results.
1. Implicit trapezoidal rule (2 stages, order 2)
The control trajectory for the $d(t)$ variable obtained with CTDirect exhibited a chattering effect that I could not resolve by changing the number of time steps (up to 10000, which took a lot of time). While the implementation with JuMP and Ipopt did not exhibit the same phenomenon and resolved the problem for a similar number of steps (I use 5000).
Standalone scripts and plots for both implementations:

CTDirect implementation + CTdirect control plot
JuMP implementation of same scheme + control plot with JuMP

I bring this issue to your attention because the difference is significant, as you can see in the attached plots.
2. Higher order scheme: Gauss-Legendre method (2 stages, order 4)
I implemented a general RK scheme following your algorithmic guide and the previous RK branch.
As expected, there is an improvement to the previous implementation, which becomes more apparent in the plots of the singular arcs (expressions derived from differentiating the switch functions, the expressions depend on the state and costate trajectories as well as the other control).
Here's my standalone script for the JuMP implementation of RK scheme and the control plot with the Gauss-Legendre method of order 4.
Takeaway

I could not identify a problem in my implementation based on CTDirect that explains the chattering effect. I believe this would be interesting to you.
A higher order scheme is needed for my application (system of algal-bacterial consortium in a bioreactor), especially for plotting the singular arcs. As you know, the magnitude of the local error for an order 4 method is 1e-12 for 5000 steps and $[t_0,t_f]=[0,20]$, in order to obtain the same magnitude with the trapezoidal rule one needs over 100,000 steps, which takes a lot of time and memory since there would be significantly more variables and constraints for the NL solver.

Finally, I would be happy to help with a general RK scheme implementation when I have more time at hand. For the time being, I will stop at my current code based on your previous work.
Thank you again for all your help!

hey @rand-asswad sounds super nice! 👍🏽currently at the JuliaCon, but will have a look at it asap. cheers from eindhoven to @PierreMartinon

@jbcaillau enjoy JuliaCon and Eindhoven!

@jbcaillau enjoy JuliaCon and Eindhoven!

https://control-toolbox.org/docs/optimalcontrol/stable/juliacon2024.html

I updated the code gists and ran a fresh round of testing with the @timev macro.
Now this is far from being a benchmark, but here's a brief time and memory comparison.

CTDirect
JuMP (trapezoidal)
JuMP (gauss 2-stages)

Total Time
1375 seconds
131 seconds
77 seconds

Total Memory
259.8 GiB
2.952 GiB
3.314 GiB

IPOPT time
299 seconds
130 seconds
73 seconds

IPOPT iterations
711
514
126

Full logs:

CTDirect log
Method = (:direct, :adnlp, :ipopt)
Total number of variables............................:    40008
                     variables with only lower bounds:    25005
                variables with lower and upper bounds:    10002
                     variables with only upper bounds:        0
Total number of equality constraints.................:    30006
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

Number of Iterations....: 711

                                   (scaled)                 (unscaled)
Objective...............:  -5.4521746997497136e+00   -5.4521746997497136e+00
Dual infeasibility......:   1.2669287810692106e-07    1.2669287810692106e-07
Constraint violation....:   1.2167857832423579e-09    1.2167857832423579e-09
Variable bound violation:   1.4432578243628313e-08    1.4432578243628313e-08
Complementarity.........:   5.6888535490015873e-13    5.6888535490015873e-13
Overall NLP error.......:   1.2669287810692106e-07    1.2669287810692106e-07

Number of objective function evaluations             = 1019
Number of objective gradient evaluations             = 712
Number of equality constraint evaluations            = 1019
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 712
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 711
Total seconds in IPOPT                               = 298.661

EXIT: Solved To Acceptable Level.
1374.678779 seconds (4.28 G allocations: 259.828 GiB, 1.53% gc time, 1.57% compilation time: <1% of which was recompilation)
elapsed time (ns):<PHONE_NUMBER>648
gc time (ns):<PHONE_NUMBER>1
bytes allocated:<PHONE_NUMBER>00
pool allocs:<PHONE_NUMBER>
non-pool GC allocs: 87363
malloc() calls:     139546
realloc() calls:    28
free() calls:       125536
minor collections:  519
full collections:   6

JuMP trapezoidal scheme log
Solving...
Total number of variables............................:    40008
                     variables with only lower bounds:    30006
                variables with lower and upper bounds:    10002
                     variables with only upper bounds:        0
Total number of equality constraints.................:    30006
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

Number of Iterations....: 514

                                   (scaled)                 (unscaled)
Objective...............:  -5.4521787774223300e+00    5.4521787774223300e+00
Dual infeasibility......:   2.7070093382139750e-07    2.7070093382139750e-07
Constraint violation....:   7.9440598543811802e-10    7.9440598543811802e-10
Variable bound violation:   1.0419357376889593e-08    1.0419357376889593e-08
Complementarity.........:   6.0331033410813804e-12    6.0331033410813804e-12
Overall NLP error.......:   2.7070093382139750e-07    2.7070093382139750e-07

Number of objective function evaluations             = 604
Number of objective gradient evaluations             = 515
Number of equality constraint evaluations            = 604
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 515
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 514
Total seconds in IPOPT                               = 129.685

EXIT: Solved To Acceptable Level.
The model was not solved correctly.
Objective value = 5.45217877742233

131.290054 seconds (47.88 M allocations: 2.952 GiB, 0.70% gc time, 0.48% compilation time)
elapsed time (ns):<PHONE_NUMBER>81
gc time (ns):       914295499
bytes allocated:<PHONE_NUMBER>
pool allocs:        47845225
non-pool GC allocs: 805
malloc() calls:     30129
realloc() calls:    5
free() calls:       30090
minor collections:  4
full collections:   1

JuMP Gauss 2-stages scheme log
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit https://github.com/coin-or/Ipopt
******************************************************************************

Total number of variables............................:   100000
                     variables with only lower bounds:    30000
                variables with lower and upper bounds:    10000
                     variables with only upper bounds:        0
Total number of equality constraints.................:    90000
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

Number of Iterations....: 126

                                   (scaled)                 (unscaled)
Objective...............:  -5.4508521518739395e+00    5.4508521518739395e+00
Dual infeasibility......:   3.3405884072253212e-14    3.3405884072253212e-14
Constraint violation....:   8.5174922670461228e-16    8.5174922670461228e-16
Variable bound violation:   1.4433177764061611e-08    1.4433177764061611e-08
Complementarity.........:   5.0000009659606610e-13    5.0000009659606610e-13
Overall NLP error.......:   5.0000009659606610e-13    5.0000009659606610e-13

Number of objective function evaluations             = 158
Number of objective gradient evaluations             = 127
Number of equality constraint evaluations            = 158
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 127
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 126
Total seconds in IPOPT                               = 72.508

EXIT: Optimal Solution Found.

77.051224 seconds (53.68 M allocations: 3.314 GiB, 2.67% gc time, 3.71% compilation time)
elapsed time (ns):<PHONE_NUMBER>3
gc time (ns):<PHONE_NUMBER>
bytes allocated:<PHONE_NUMBER>
pool allocs:        53631677
non-pool GC allocs: 43354
malloc() calls:     135
realloc() calls:    14
free() calls:       76
minor collections:  6
full collections:   5

ping @PierreMartinon

Hi, a quick question: did you run the optimization twice to remove the compilation time ? (you can set for instance 2 iterations max).
One suprise is the 100x larger memory usage. Can you limit the iterations to 50 for instance and see if the memory difference is the same ? Maybe we are doing some unnecessary allocations in CTDirect. I should redo a pass on that, there is a nice option when launching julia, that will output .mem files with memory allocations corresponding to each line of code.
Regarding the control oscillations, they can indeed happen especially on singular arcs, and increasing the number of time steps typically does not help. Based on my experience, changing the discretization formula (when possible...) may help, as reducing the number of time steps or setting a smaller tolerance for the NLP solver. In your case it would be interesting to find why Jump seems unaffected (unless it's a random thing).

hi @PierreMartinon @rand-asswad thanks for the feedback. yes, mem allocation difference sounds huge and needs to be understood.

for benchmarking, the standard is to use @btime from BenchmarkTools.jl
make sure that you use OptimalControl.jl v0.9 (rewritten build of the constraints)
since we use sparsity analysis thanks to our colleagues of ADNLModels.jl, there should not be such a difference in mem
yes, it is important to see how these mem alloc scale when changing the grid_size

All in all, thanks @rand-asswad for the input on this!

First of all, I'm having trouble with v0.9 even with the basic example from the tutorial.
using OptimalControl

@def ocp begin
    t ∈ [ 0, 1 ], time
    x ∈ R², state
    u ∈ R, control
    x(0) == [ -1, 0 ]
    x(1) == [ 0, 0 ]
    ẋ(t) == [ x₂(t), u(t) ]
    ∫( 0.5u(t)^2 ) → min
end

sol = solve(ocp)

I get the following error:
ERROR: LoadError: MethodError: no method matching init(::CTBase.OptimalControlModel{Autonomous, Fixed}, ::Symbol, ::Symbol; display::Bool, init::Tuple{})

I tried it multiple times on a fresh Julia install and the problem persisted with v0.9.
I therefore used v0.7.8, and the tests on CTDirect I have provided are in the following environment:
(@v1.10) pkg> st
Status `~/.local/share/julia/environments/v1.10/Project.toml`
  [6e4b80f9] BenchmarkTools v1.5.0
  [b6b21f68] Ipopt v1.6.3
  [4076af6c] JuMP v1.22.2
  [b964fa9f] LaTeXStrings v1.3.1
⌃ [5f98b655] OptimalControl v0.7.8
  [91a5bcdd] Plots v1.40.5
Info Packages marked with ⌃ have new versions available and may be upgradable.

Since the memory issue is addressed in v0.9, the issue I brought might be obsolete. However, I couldn't figure out the issue in the new version (granted, I haven't checked the source code), I thought I'd wait out for the newer release.

This problem aside, a quick round of testing following your recommendations gave similar results (this time I only compared for the same discretization scheme).
I ran the code entirely once to compile, relaxed the tol attribute for IPOPT, then:

Single run for 500 time steps
Benchmark for 50 time steps

CTDirect
raw JuMP

Time (500 steps)
18.37 seconds
4.04 seconds

Memory (500 steps)
7.194 GiB
116.5 MiB

Benchmark Samples (50 steps)
8 samples
28 samples

Benchmark Time (50 steps)
719 ms
183 ms

Benchmark Memory (50 steps)
304.46 MiB
8.58 MiB

I'll rerun these tests when I solve the issue with v0.9.
I wish I could be more of help, thank you both!

@PierreMartinon regarding the oscillations in the singular arcs, I tried reducing the number of time-steps as well as the tolerance. Unfortunately, I couldn't succeed in removing them with CTDirect.jl. I was also surprised to see that the result of the JuMP code didn't have these oscillations with the same numerical scheme. Nevertheless, we are going with the Gauss-Legendre scheme of order 4 in our article because it yields considerably better results as you said.

@rand-asswad sorry for the late reply (been busy at JuliaCon 🥲). We have split things using extensions, you know need to write the following:
using OptimalControl
using NLPModelsIpopt # so as to use Ipopt
using Plots # so as to plot

@def ocp begin
    t ∈ [ 0, 1 ], time
    x ∈ R², state
    u ∈ R, control
    x(0) == [ -1, 0 ]
    x(1) == [ 0, 0 ]
    ẋ(t) == [ x₂(t), u(t) ]
    ∫( 0.5u(t)^2 ) → min
end

sol = solve(ocp)

In between, there has been an update of ADNLPModels.jl (and sparsity detection in there): can you please re-run your previous tests with the latest version of OptimalControl.jl, now available from the general registry?

hi @rand-asswad, did you give it a try?

@rand-asswad sorry for the late reply (been busy at JuliaCon 🥲). We have split things using extensions, you know need to write the following [...]

Hi @rand-asswad , @jbcaillau , @ocots , @joseph-gergaud
Some good news :-)
We've been working on the memory allocations problem. We're not finished yet but it has improved already. Also, I may have found something about the oscillations: with a tolerance of 1e-4 instead of the default 1e-8, we get solution much closer to the Jump ones:
Trapeze with 1000 steps (~4GB allocations)

Midpoint with 1000 steps (~4GB allocations)

Tests with Gauss Legendre s=2 are still ongoing.
Not sure what tolerance Jump uses, doc says 'solver default' so we'd need to dig a bit.
For trapeze with 1000 steps, oscillations appear with tol=1e-5 and worsen for smaller tolerances.
For midpoint with 1000 steps, 1e-5 is still fine, some noise appears at 1e-6, and 1e-7 gives strong oscillations.
We may consider relaxing the default tolerance in CTDirect, maybe depending on the discretization used.

Hi @rand-asswad , @jbcaillau , @ocots , @joseph-gergaud, more progress !
We now have an implementation of the Gauss-Legendre 2 formula (with a slightly different control parametrization) that seems to work with the default tolerance:
julia> sol=direct_solve(prob.ocp, disc_method=:gauss_legendre_2, grid_size=1000)
This is Ipopt version 3.14.16, running with linear solver MUMPS 5.7.3.

Number of nonzeros in equality constraint Jacobian...:   138000
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:    81000

Total number of variables............................:    20008
                     variables with only lower bounds:     6006
                variables with lower and upper bounds:     2002
                     variables with only upper bounds:        0
Total number of equality constraints.................:    18006
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -1.0000000e-01 8.53e-01 7.94e-01   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
...
 106 -5.4521617e+00 4.01e-12 2.60e-13 -11.0 6.82e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 106

                                   (scaled)                 (unscaled)
Objective...............:  -5.4521616919702192e+00   -5.4521616919702192e+00
Dual infeasibility......:   2.5966123368985709e-13    2.5966123368985709e-13
Constraint violation....:   4.0063889705788114e-12    4.0063889705788114e-12
Variable bound violation:   1.2709913788100380e-08    1.2709913788100380e-08
Complementarity.........:   1.0023494919630842e-11    1.0023494919630842e-11
Overall NLP error.......:   1.0023494919630842e-11    1.0023494919630842e-11

Number of objective function evaluations             = 123
Number of objective gradient evaluations             = 107
Number of equality constraint evaluations            = 123
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 107
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 106
Total seconds in IPOPT                               = 31.058

EXIT: Optimal Solution Found.
OptimalControlSolution

julia> plot(sol)

Here are the controls for 250, 500 and 1000 steps:

We expect a release before Christmas :D

@rand-asswad comments welcome! at some point (post x-mas 🙂?) would be nice to set up a visio with @PierreMartinon et al


Fixed Depth Threshold Parameter D0

Hi UniDrive authors,
Thank you for your wonderful paper. I found Equations (1-2) particularly insightful, as they effectively transform image pixels into virtual camera coordinates. Based on my understanding, the equations use a fixed depth threshold D0 parameter (in meters) to decide whether the pixel belongs to the ground (horizontal) plane or frontal planes.

As the full implementation code of UniDrive is not publicly available and I also could not find the value of D0 in the paper, I was hoping you could share the value of D0 that you employed in your experiments. Thanks once again for your time and attention.

Hi!
Sorry for the confusion and thanks for your question! We set D0 in line 139 in project/mmdet3d/datasets/pipelines/loading.py. We are refining our code and will release instruction docs soon!

Thank you @ywyeli  for your quick answer. The link https://github.com/ywyeli/UniDrive/blob/6313e5c98ce13c224b0cde0dbe52a0d97e4e657d/project/mmdet3d/datasets/pipelines/loading.py#L139
provides the D0 = 50m.


#Add Impact Gallery Section

I would like to enhance the website by adding an Impact Gallery Section. This feature will visually showcase the positive effects of donations, allowing visitors to see the real-world impact of their contributions on wildlife conservation efforts.
A dedicated space to highlight the achievements made possible by donor contributions can be added. An Impact Gallery will not only inform visitors but also inspire them to support cause by illustrating the tangible benefits of their donations.

Hi @anuragverma108 , I would love to contribute to this issue for Hacktoberfest! Could you please assign it to me?

Hey @anuragverma108 , can you also please add the gssoc-ext label too


[Do Not Merge]Test CI build

Testing CI for some documentation build related failures

Thanks for looking into this @VibhuJawa. I gave you write permission if you want to merge once CI is passing.
I think that the most recent version of black fixes things for linting, if you update the pre-commit config.

Closing in favor of https://github.com/dask/dask-ml/pull/929 .


feat: responsive ui

Added responsive header UI
Before:

After:

Hi @vividwood - thanks for submitting this PR and apologies for the delay. I'll merge this request and send payment to the address you provided. Thank you!


Password protected rooms

yes! how to add password for room?

This is just a placeholder for the feature to be added. I don't have any plans to work on this soon. The client needs some refactoring first before I'm adding any more features.


Fix UDS datagram metrics reporting

Fix the success condition for sendto
Instead of shutting down on anything but timeouts we now just keep on trying to write to the socket.

:memo: Reviewer Checklist
Review this pull request by ensuring the following items:

[ ] All user-facing changes have changelog entries
[ ] User-facing changes are reflected on vast.io

How did you test that this fixes the issue?

[sc-37951]


Cask request: [xmrouter] Upgrade to 0.9.12

Cask details
Please fill out as much as possible. Before you do, note we cannot support Mac App Store-only apps.
Name: xmrouter
Homepage: http://www.miwifi.com/
Download URL: http://bigota.miwifi.com/xiaoqiang/client/XMRouter-0.9.12.dmg
Description:
Current download link, http://bigota.miwifi.com/xiaoqiang/client/xqmac_client.dmg, will download 0.9.7, and I just received the update notification for 0.9.12, which is another link with version number in it.

The version available for download at http://www.miwifi.com/miwifi_download.html is 0.9.4, is there a changelog or appcast that shows 0.9.12?

The web page has been 0.9.4 for a while. The link in the current cask file, http://bigota.miwifi.com/xiaoqiang/client/xqmac_client.dmg, is actually point to 0.9.7 right now.
I received the upgrade notification from the XMRouter app itself:

I didn't find the appcast, however, after looked into the app, I did find how the app do the update checking.
It sends a HTTP GET request to link:
http://api.miwifi.com/rs/grayupgrade/mac?s=<MD5_SIG>&time=1498316687315&locale=zh_CN&channel=release&filterID=327809&version=0.9.7

I'm not sure whether s is a sensitive information or not, so I masked it with `<MD5_SIG>, as it's a MD5 value.
And the server responses with a JSON data which contains whether it should be updated, the new version, the changelog, and the download link:
{
    "code": "0",
    "data": {
        "changelogUrl": "",
        "description": "1. 增加了登录后自动切换为当前连接的小米路由器功能\n2. 增加了新路由器对应的图标配置",
        "hash": "DEFAULT",
        "link": "http://bigota.miwifi.com/xiaoqiang/client/XMRouter-0.9.12.dmg",
        "needUpgrade": true,
        "size": 1,
        "toVersion": "0.9.12",
        "upgradeId": "7377",
        "weight": "1"
    }
}

There is another information might be useful, that to check the patch version number, just download the .dmg file, extract the .app file, and check the CFBundleVersion value:
$ grep BundleVersion -A1 Contents/Info.plist
	<key>CFBundleVersion</key>
	<string>12</string>

The value seems to be the patch version number, in this case, it's x.x.12.

Ping @vitorgalvao (again) As this has three possible versions, should this be left as is or downgraded to 0.9.4 to match the website release?

We can try changing it to a versioned cask with the …12 version. And perhaps try to get the appcast to work for us.
I’m always warier of apps whose website I cannot read.

https://github.com/caskroom/homebrew-cask/pull/35857

And perhaps try to get the appcast to work for us.

http://api.miwifi.com/rs/grayupgrade/mac seems to need a login.

All the arguments are required, I think.
Here are 2 links I got from JMeter, it seems working just within a certain time period:
http://api.miwifi.com/rs/grayupgrade/mac?s=b804f76765af063e92d2730f0eb039aa&time=1498389576388&locale=zh_CN&channel=release&filterID=327809&version=0.9.7

http://api.miwifi.com/rs/grayupgrade/mac?s=b8bc738ff6c7695daac578433b38a7a9&time=1498389388387&locale=zh_CN&channel=release&filterID=327809&version=0.9.7

There are 6 arguments:

s: a MD5 signature for the request;
time: a timestamp;
locale: locale, e.g. zh_CN;
channel: release channel, e.g., release;
filterID: unknown;
version: current installed version;

s seems to be some kind of signature or checksum of the request, any argument I changed will cause the 401 Unauthorized result:
$ curl -i http://api.miwifi.com/rs/grayupgrade/mac\?s\=b804f76765af063e92d2730f0eb039aa\&time\=1498389576388\&locale\=zh_CN\&channel\=release\&filterID\=327809\&version\=0.9.7
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Date: Sun, 25 Jun 2017 10:56:47 GMT
Server: Tengine
Content-Length: 344
Connection: keep-alive

{"code":"0","data":{"needUpgrade":true,"size":1,"changelogUrl":"","link":"http://bigota.miwifi.com/xiaoqiang/client/XMRouter-0.9.12.dmg","description":"1. 增加了登录后自动切换为当前连接的小米路由器功能\n2. 增加了新路由器对应的图标配置","weight":"1","upgradeId":"7377","hash":"DEFAULT","toVersion":"0.9.12"}}

$ curl -i http://api.miwifi.com/rs/grayupgrade/mac\?s\=b804f76765af063e92d2730f0eb039aa\&time\=1498389576388\&locale\=zh_CN\&channel\=release\&filterID\=327809\&version\=0.9.4
HTTP/1.1 401 Unauthorized
Date: Sun, 25 Jun 2017 10:57:16 GMT
Server: Tengine
WWW-Authenticate: Basic realm="default"
Content-Length: 0
Connection: keep-alive

Thank you for the additional information @twang2218.

After some analysis, and try and error, here is what I found.
The signature s is a calculated by following pseudo code:
s = md5(base64(request);

And request is a query string, which contains all the required arguments: channel, filterID, locale, time and version.
filterID seems to be the userID of xiaomi account, and it looks like that it can be any number.
I wrote a node.js snippet to demo the procedure.
const fetch = require('node-fetch');
const crypto = require('crypto');

function base64(data) {
    return Buffer.from(data).toString('base64');
}

function md5(data) {
    return crypto.createHash('md5').update(data).digest("hex");
}

const version = '0.9.7';
const salt = '8007236f-a2d6-4847-ac83-c49395ad6d65';
const time = `${Date.now()}`;
const request = `channel=release&filterID=1234567&locale=zh_CN&time=${time}&version=${version}`;
const sig = md5(base64(`${request}&${salt}`));

fetch(`http://api.miwifi.com/rs/grayupgrade/mac?s=${sig}&time=${time}&${request}`)
    .then(res => res.json())
    .then(json => console.log(json))
    .catch(console.error);

After install the node-fetch module, npm install node-fetch, just run it by node xxx.js, such as:
$ node api.js
{ code: '0',
  data:
   { needUpgrade: true,
     size: 1,
     changelogUrl: '',
     link: 'http://bigota.miwifi.com/xiaoqiang/client/XMRouter-0.9.12.dmg',
     description: '1. 增加了登录后自动切换为当前连接的小米路由器功能\n2. 增加了新路由器对应的图标配置',
     weight: '1',
     upgradeId: '7377',
     hash: 'DEFAULT',
     toVersion: '0.9.12' } }


Removed unnecessary * from readme.md

@muan
can you please review this PR?
Thanks

@muan
can you please review this PR?
Thanks

Thanks @koddsson

Thanks @koddsson


Subset fields after filtering, rather than prior (performance improvement)

Fix for #733

it'd be really nice to get some level of metrics on this comparing it to the previous implementation.  Is that something we can do quick and hold off merging this or should we merge this in and defer measuring the performance implication?


upgrade chart versions

change  to version change jenkins-x/dex to version 2.13.11
change jenkins-x/jenkins-x-platform to version 2.0.872
change jenkins-x/jx-build-templates to version 0.0.822
change jenkins-x/prow to version 0.0.960
change jenkins-x/sso-operator to version 1.2.27

/approve


Managed Identity Service Connection with EF Core

Hello All,
I have an Azure SQL database which has an Azure Web App as admin (taking advantage of the Azure ADD Managed Service Instance [msi]). In my dotnet core app, that would like to connect to my database using Entity Framework. I could not find any documentation on it. Is it supported?
Thanks,
Golois

@divega to follow up.

@mgolois Unfortunately we don't have an end to end example of how to do this.
Using the feature normally requires obtaining the access token form an AuthenticationContext, and then setting it on the AccessToken property on the SqlConnection object before you open the connection.
Will your application target .NET Core? EF Core connects to SQL Server using the SqlClient ADO.NET provider. Support for authentication using an access token was introduced to SqlClient in the .NET Core 2.2 version, which is still in preview. The issue that was addressed is https://github.com/dotnet/corefx/issues/13660, this blog post details how to obtain .NET Core 2.2 preview 3, and this is the preview of SqlClient is on NuGet.
I would like to at least point you to an authoritative example of how to do this, at least when working with the ADO.NET layer, but I couldn't find it, so I am going to follow up with the SqlClient team.
In most common usage of EF Core, we create the SqlConnection object under the hood, so you don't get a chance to set the AccsessToken property before we open the connection. However if you override the OnConfiguring method on your derived DbContext, you should be able to call UseSqlServer() with a new instance of SqlConnection.  At a later point, for example before executing the first query or SaveChanges, you should be able to set the AccessToken property.
We are using https://github.com/aspnet/EntityFrameworkCore/issues/13261 to track a possible improvement to make this more seamless.

Thank you @divega ! yes my app targets .netcore, so we'll just wait for the release of .net core 2.2. Meanwhile, I'm just going to use keyvault and MSI to secure the connection string. Thanks!

@divega is there an update on the sample? I cannot get this to work.


No nightly builds since 4.1.5.Final release

It appears there have been no new builds (i.e. 4.1.6.Final-SNAPSHOT) since the 4.1.5.Final release.

@normanmaurer - ptal
Build server lists a build for 4.1 at 30 Aug 16 12:13 [1] (not sure on timezone)
4.1.5 was released 29-Aug-2016 18:06 [2] (not sure on timezone ... assumed UTC)
last snapshot for 4.1 was Mon Aug 29 12:08:42 UTC 2016 [3]
[1] https://repo1.maven.org/maven2/io/netty/netty-all/
[2] https://garage.netty.io/teamcity/viewType.html?buildTypeId=netty_nightly&tab=buildTypeHistoryList&branch_netty=all_branches
[3] https://oss.sonatype.org/content/repositories/snapshots/io/netty/netty-all/

Hey, any news on this? 4.1.5-SNAPSHOT has disappeared altogether from https://oss.sonatype.org/content/repositories/snapshots/io/netty/netty-all/

will check

@rkapsi fixed...


Using CRuby snapshot archives instead of building from git

https://www.ruby-lang.org/en/downloads/ has:

https://cache.ruby-lang.org/pub/ruby/snapshot/snapshot-ruby_3_1.tar.gz
https://cache.ruby-lang.org/pub/ruby/snapshot/snapshot-ruby_3_2.tar.gz
https://cache.ruby-lang.org/pub/ruby/snapshot/snapshot-master.tar.gz
etc

These have the advantages that autoconf, bison, etc have already run.
So they don't need extra packages and they can use the same logic as building releases.
BTW currently https://github.com/rbenv/ruby-build/wiki#suggested-build-environment is missing autoconf for Fedora & RHEL.
So it would also simplify that page if we don't have to include dependencies only relevant for building from git.

These have the advantages that autoconf, bison, etc have already run.
So they don't need extra packages and they can use the same logic as building releases.

I'm up for this if @hsbt agrees!
Would builds on top of these snapshots still require make update-gems, make extract-gems? https://github.com/rbenv/ruby-build/blob/270ecd0bcbe9b40e3aa9199d842552db455cadb3/bin/ruby-build#L708-L713

No it would not :)

stable(3.2) and old stable(3.1) are okay to replace snapshot packages. But master(3.3.0-dev) is sometimes old with daily package. Because I used it at many times while daytime.

I see, that's unfortunate. Maybe the master snapshot could be automatically updated after every commit and then it would be reasonably fast?
master is kind of special, in fact I think we should add a  ruby-dev definition for that instead/in addition to 3.3.0-dev.

But master(3.3.0-dev) is sometimes old with daily package.

If the snapshots are behind the actual git commits to any of the development branches, then switching ruby-build definitions to snapshots would be a downgrade, in my opinion.

So it would also simplify that page if we don't have to include dependencies only relevant for building from git.

@eregon The aim for the wiki page was to provide a suggested build environment for stable releases of Ruby only. As for development releases, we assume that a person willing to build a *-dev version would also put in the research necessary to gather the necessary prerequisites, such as autoconf.

If I am reading this correctly, then the master snapshot is several days behind the master branch in git:
$ tar xzf snapshot-master.tar.gz -O -- \*/revision.h | grep REVISION
#define RUBY_REVISION "bbfd735b88"
#define RUBY_FULL_REVISION "bbfd735b887de71de48c7f862e6e3842bcc03241"

$ git -C ~/.rbenv/cache/https_github.com_ruby_ruby.git describe --all bbfd735b887de71de48c7f862e6e3842bcc03241 --match master
heads/master-876-gbbfd735b88

Right, unless snapshots are pretty close to latest commit I agree it's not a viable option, so let's close this at least until that's the case.

@eregon The aim for the wiki page was to provide a suggested build environment for stable releases of Ruby only. As for development releases, we assume that a person willing to build a *-dev version would also put in the research necessary to gather the necessary prerequisites, such as autoconf.

The nice thing about jruby-dev and truffleruby-dev is they have the exact same deps as release builds.
So the different dependencies for -dev seems to only affect CRuby.
Also since some of https://github.com/rbenv/ruby-build/wiki#suggested-build-environment contain autoconf I think originally they contained deps for CRuby dev too.
@mislav How about adding autoconf for Fedora and RHEL in the wiki? I'll do that.
Plus that would remove the need for the dnf install perl-FindBin perl-File-Compare section as that's dependencies of autoconf.

How about adding autoconf for Fedora and RHEL in the wiki? I'll do that.

I'm not opposed; thanks for doing that!


"Enter account ID" button

Fixes #2331.

Shows "Enter Account ID" instead of "Sign In" when account id is not set in settings
Removes the alert in iOS about account id not set shown before opening settings when "Sign In" was clicked without account id set

Closing in favor of #2804


Added linting into CI pipeline

Codecov Report

Merging #8 (ca4eaf9) into main (a7c7bcb) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main        #8   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines          106       106
=========================================
  Hits           106       106

Flag
Coverage Δ

unittests
100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 a7c7bcb...ca4eaf9. Read the comment docs.

Codecov Report

Merging #8 (ca4eaf9) into main (a7c7bcb) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main        #8   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines          106       106
=========================================
  Hits           106       106

Flag
Coverage Δ

unittests
100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 a7c7bcb...ca4eaf9. Read the comment docs.