Add multirole support

Existing authLdap code only supported users having a single role and would cause problems with other plugins (e.g. Members) that exploit WordPress' native support for multiple roles.  This update should allow a user to belong to multiple roles and gracefully add roles based on LDAP group, if configured to do so.  Simple tests using my specific use case have validated this change.

Thank you for this PR!
From a first glance it looks like a great addition! But I'll have to dig through it and I'm sure I'll have the one or other question.

Sorry, it became a bit lengthy.... But I'm through now :wink:

Overall it looks like I was a bit hasty in my request.  There are things that should clearly be changed about my initial set of updates.  But it might be that we'll have to part ways simply based on our difference of opinion pointed out above relative to all WP or all LDAP but not both.
Thank you for your time.


Clarifing the supported scenarios

Hi @ZainRizvi, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (zarizvi). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, or work for Microsoft Open Technologies, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;


Terraform Registry - Provision Instructions are incorrect for this module

Description
Terraform registry page states the need for 52 required variables and not one is listed as required in the inputs table.
Code Snippet to Reproduce
Provision Instructions
Copy and paste into your Terraform configuration, insert the variables, and run terraform init :
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "2.78.0"
  # insert the 52 required variables here <--- Line that needs adjusting
}

Expected behavior

In the provision instructions a list of actual required fields and an update to the inputs table correctly identifying the required fields
Actual behavior

In the provision instructions the list states there are 52 required variables and no inputs are designated as required in the inputs table.
Terminal Output Screenshot(s)

Additional context

This issue belongs to Terraform - https://github.com/hashicorp/terraform/issues/21417


Export unconnected classes

To be able to extend component classes (for example widgets) they have to be also exported as individual classes, in addition to the already default export as redux connected classes.

An example of how this can be useful: I want to reuse the QuerystringWidget, to filter the indexes it receives. I can't do that now because the only export of that module is already connected, but if the class was individually exported, I could write:
export default connect(
    state => ({
          indexes: filterIndexes(state.querystring.indexes),
    }),
    { getQuerystring },
)(QuerystringWidget);

Also, the QuerystringWidget needs to be exported by @plone/volto/components.

We moved from class components and the pull request that provided this change was not accepted as such we can close this ticket, if ever we need something similar another issue and pull request can be opened


analyze netflixRecommendation

analyze the Netflix movie dataset.

make sure to include your visualization of the data.
draw proper deductions from each plot.
draw an appropriate conclusion from the data.
(bonus) develop a machine learning model to recommend movies based on user current watchlist.

I would like to take on this task

sure

Can we use kaggle or is it compulsory to use google colab?


add dilated convolution.

I implemented Dilated CNN in magenta and made it available for generating melody. Dilated CNN is a model used for generation of time series such as Wavenet and shows good performance in translation and sound generation.

I tried to agree to the CLA (Google Individual Contributor License Agreement), but at that time I got an error message "You must be an owner of the contributors group in order to submit this CLA".
What is the contributors group?
And how can I submit this CLA?

It solved.
I signed it!

Sorry.
I signed it!

Hi @YoshikawaMasashi, this looks really interesting! Do you have any example outputs of this model?

Hi!
You can hear the melody generated by this option(primer_melody="[60,60,-1,60,59,60,60,60,-2,60,64,-2,62,-2,60,-2]") in soundcloud.
https://soundcloud.com/ig4osq8tqokz/dilatedcnnmagentademo


build: correct current version for release

Description
Fixes the current version so the release workflow can work

Thanks for the pull request, @Ian2012!  Please note that it may take us up to several weeks or months to complete a review and merge your PR.
Feel free to add as much of the following information to the ticket as you can:

supporting documentation
Open edX discussion forum threads
timeline information ("this must be merged by XX date", and why that is)
partner information ("this is a course on edx.org")
any other information that can help Product understand the context for the PR

All technical communication about the code itself will be done via the GitHub pull request interface. As a reminder, our process documentation is here.
Please let us know once your PR is ready for our review and all tests are green.

@Ian2012 🎉 Your pull request was merged!  Please take a moment  to answer a two question survey so we can improve your experience in the future.


Dynamic width and weight breaking on image

I am curently seeing this issue in Chrome 81.0.4044.138 and Firefox 76.0.1 on both a codepen and a wordpress site.
Applying the maphighlight function to an image is preventing css width updates to that image from media screen size queries. For example, the size of the image normally updates at 1400, 1200, and 800px width, but as soon as I list the image as having the 'map' class, the image size stays what it was when the window initially loaded and disregards the media query changes.
This is not to say that the map highlight isn't changing size - I have a function in place that changes the scale of the map, and that works, but the image is somehow static.
I have been reviewing the code for some time today and can't find the bug. Is someone familiar with the code and might know what is preventing the image from changing its size?

I'm having a similar issue, though not based on media screen size queries, but with images that should automatically resize when the browser resizes. I have a function that automatically recalculates the map coordinates when the images resizes. But the moment I use this function, resizing doesn't work any longer. So either I cannot have automatically resizing images or I cannot use area highlights using maphilight.


Update TextInput to Paper v2.0

The TextInput component now includes a mode prop which controls the appearance according to material design docs. By default, it's flat. If you want the outline mode, add the mode prop to your inputs.

Fixed in https://github.com/callstackincubator/bs-react-native-paper/pull/35


Can twemproxy load balance read requests?

Hello,
I want to use redis with master and slaves. I.e. several shards. Each shard has one master and several slaves.
Is it possible to configure twemproxy to use masters to write and slaves to read? Or all requests will go to the master?
Sincerely

no

Yes, you can do it.
By doing master and slave configurations in different clusters like alpha for write and beta for read.

Thanks for pointing


[RFC] Support passing Precision Plugin instances to the precision flag

🚀 Feature

Motivation

The motivation is to support passing PrecisionPlugin objects to the precision flag.
Current Approach
Right now, to pass the custom objects to the Trainer, users have to pass it to the plugins flag.
trainer = Trainer(strategy="ddp", plugins=[CustomPrecisionPlugin()])

Proposed Solution
Support passing custom PrecisionPlugin objects directly to the precision flag. It would be similar to passing TrainingTypePlugin objects to the strategy flag and would match it.
trainer = Trainer(strategy="ddp", precision=CustomPrecisionPlugin())

Passing the precision plugin objects to the plugins flag  would be deprecated in v1.7 and will be removed in v2.0.
If you agree with this change, react with 🎉, if not then 🙅🏽 with comments.
Additional context

If you enjoy Lightning, check out our other projects! ⚡

Metrics: Machine learning metrics for distributed, scalable PyTorch applications.

Lite: enables pure PyTorch users to scale their existing code on any kind of device while retaining full control over their own loops and optimization logic.

Flash: The fastest way to get a Lightning baseline! A collection of tasks for fast prototyping, baselining, fine-tuning, and solving problems with deep learning.

Bolts: Pretrained SOTA Deep Learning models, callbacks, and more for research and production with PyTorch Lightning and PyTorch.

Lightning Transformers: Flexible interface for high-performance research using SOTA Transformers leveraging Pytorch Lightning, Transformers, and Hydra.

cc @borda @carmocca @justusschock @awaelchli @akihironitta @rohitgr7 @kaushikb11 @tchaton

Hey @kaushikb11, I agree with this proposal,
However it seems there is lot of confusion right now as there is so many overlapping ways around device, strategy, etc...
Doing this right now would add in complexity and confusion.

Hey @kaushikb11 @awaelchli Any updates on this ?

I don't fully get the motivation here. the precision plugin also takes into account the amp backend and the amp level. Does that mean the Trainer is now validating against this?
Trainer(precision=32, amp_level="O2", amp_backend="native", plugins=[MyCustomPrecision(precision=16, amp_backend="foo", amp_level="bar")

what's the issue with passing precision plugin as an argument to plugins vs precision?

I agree with @ananthsub that we should not allow that. IMO precision=16 is only short for plugins=NativeMixedPrecisionPlugin(precision=16)
If we mix those it gets more confusing to the user.

At the moment, I don't see why there is a need for this.

Let's close this then. Feel free to continue discussing here if you have further arguments either way


Option "authnContext" does not respect SAML2 protocol schema compliancy

self.options.authnContext is not compliant with SAML protocol schema (https://docs.oasis-open.org/security/saml/v2.0/saml-schema-protocol-2.0.xsd). where

AuthnContextClassRef is unbounded. Allow for simple string or array specification for multiple envelopes.

Closing as duplicate of #181


fix: package main path typo

ping @bodymovin

thanks!

Please publish npm patch version

Could ship it?

Please publish it, thanks

@bodymovin Hi
Your source version has been updated, but NPM has not released a version.
https://www.npmjs.com/package/lottie-api

Please publish this :shipit:

published version 1.0.3


Edge/IE11 Multiple Accordions - last chosen accordion won't close if I select a new one - ClickAwayListener not triggered

[X] The issue is present in the latest release 4.11.3.
[X] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
I have multiple sibling components that are basically glorified Accordion's. They are controlled one by one through an [expanded, setExpanded] useState hook inside each component.
I click the summary of one of them, and it opens.
I click on the summary of another one and I wish that this click causes the closing of the Accordion that I opened before. In order to do this, I have wrapped each AccordionDetails with a ClickAwayListener that invokes setExpanded(false) for the expanded accordion.
In Chrome and Firefox everything works fine.
In IE11 and in Edge it does not: I have verified in IE11 that the ClickAwayListener of the expanded AccordionDetails is triggered by a click anywhere in the page, except in the AccordionSummary of other accordions. I suppose the same happens in Edge.
I am using IE11 version 1909 (build SO 18363.1379) copyright 2019 Microsoft Corporation.
I am using  Edge: Spartan (44.18362.449.0)
Expected Behavior 🤔
A click in the AccordionSummary of any Accordion should be received by the ClickAwayListener's of any other expanded Accordion.
Steps to Reproduce 🕹
I have prepared a minimal example in this codesandbox: https://codesandbox.io/s/cocky-galileo-gqxz9
The codesandbox contains labels that explains clearly what to do in order to see the issue.
Unfortunately codesandbox does not load into IE11 and this particular sample errors in Edge, so I guess it will be necessary to copy/paste my code inside a page context that can be loaded by IE11/Edge.
Context 🔦
The basic need is to have accordions that close each other without need to use a global state to manage them all. The GenericFlowsFilter2 is a fairly independent and modular component and I need it to remain as such.
If you can see another modular/composable solution to my multiple-accordions-only-one-open-at-a-time case, I'll be very interested.
At this moment, using IE11 or Edge you can see several accordions that remain open, and all you have to do is to click anywhere in the page to close them all: so there is a workaround.
However, Edge is a basic thing for us to support and, for some bizarre twist of fate, IE11 is still kinda important for us; so I hope a solution is possible.
I have asked about this issue on SO: https://stackoverflow.com/questions/66550043/material-ui-ie11-multiple-accordions-last-chosen-accordion-wont-close-if-i-se  - The SO question mentions only IE11.
Your Environment 🌎

`npx @material-ui/envinfo`
  System:
    OS: Windows 10 10.0.18363
  Binaries:
    Node: 14.15.4 - C:\Program Files\nodejs\node.EXE
    Yarn: Not Found
    npm: 6.14.10 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 88.0.4324.104
    Edge: Spartan (44.18362.449.0)
  npmPackages:
    @emotion/styled:  10.0.27
    @hot-loader/react-dom:  16.14.0
    @material-ui/core: ^4.11.3 => 4.11.3
    @material-ui/icons: ^4.11.2 => 4.11.2
    @material-ui/lab: ^4.0.0-alpha.56 => 4.0.0-alpha.57
    @material-ui/pickers: ^3.2.10 => 3.2.10
    @material-ui/styles:  4.11.3
    @material-ui/system:  4.11.3
    @material-ui/types:  5.1.0
    @material-ui/utils:  4.11.2
    @types/react:  17.0.0
    react: ^16.13.1 => 16.14.0

I am using IE11 version 1909 (build SO 18363.1379) copyright 2019 Microsoft Corporation.

Closing per https://next.material-ui.com/getting-started/supported-platforms/#ie-11

@oliviertassinari - what about Edge? Don't you support it? I can remove every reference to IE11.

@Muzietto We support Edge since 85 or newer.

@oliviertassinari - OK, here how things are:

my issue is not about one of the new components mentioned in your list. I respect your list and I have already fixed several IE11 Grid issues without bothering you guys
I am 100% independent about polyfills.
the link to the legacy bundle is broken, otherwise I would have tried it long ago
it's legitimate to say that next release will drop support. I will stay with what I have.
the logic of your phrase "Overall, the library doesn't prioritize the support of IE 11 if it harms the most common use cases. For instance, we will close new issues opened about IE 11" does not stand on its feet: you should first check whether support of a new issue harms other use cases and only then close issues.

Here you have a fairly original issue, thoroughly researched and documented, which you could reproduce in minutes with a plain copy/paste of the provided code.
I think it is too little effort to slam it closed like you did. You should assign it, the person reproduces in 5m using the code in my codesandbox, evaluates the effort and reports back. Then you can judge.

@Muzietto To provide context on the policy. The simple fact of reading and disuccsing an issue is consuming resources, resources we prioritize differently.

🤦🏻🤦🏻


Create track map not compatible with the latest Update of Fabric Kotlin Language

Describe the Bug
After updating Fabric Kotlin, my server doesn't want to boot up the fabric track map; it just boots loops and crashes.
So that you know, I have Create version 0.5.1h.
Reproduction Steps

update the mod to the latest version
load the mod into the server
press start on the console
it crashes 1 minute into server boot.
...

Expected Result
the server should boot up, before the update it boots
Screenshots and Videos
No response
Crash Report or Log
https://pastebin.com/eYiETSYu
Operating System
Pterodactyl
CTM Version
1.4
Create Version
0.5.1e
Minecraft Version
1.20.1
Mod Loader
Fabric
Modloader Version
0.16.5
Instance Type
Server hosted on vps/dedicated server
Other Mods
No response
Additional Context
No response

i think this is an upstream bug in Ktor: https://youtrack.jetbrains.com/issue/KTOR-7054

The ktor version in the file gradle.properties needs to be changed from 2.3.0 to 2.3.12.
Sadly I am not allowed to make a feature-branch and create a pull request.

https://modrinth.com/mod/fabric-language-kotlin/version/1.12.1+kotlin.2.0.20 works as it has an older version of coroutines (v1.8.1). The issue is with coroutines 1.9.0, as stated in the linked issue above.


Loader

the loader is bugged and then a blue line shows up in the side its a square

not sure how to explain it good sorry

Duplicate of #96.


Intel C++ Compiler 17 CMake patch

Refer to https://github.com/lexicalunit/nanodbc/issues/235

Thanks


docker logs --sinceminutes

would you be interested in a PR that implements docker logs --sinceminutes (that just calculates a timestamps X minutes ago)? I would find that more handy than the 2016-12-15T14:00 format.

SGTM, but for UX, I think  the CLI should be consistent with proposed docker container prune --filter until=<ago> https://github.com/docker/docker/pull/29226
The CLI design for 29226 is not fixed yet and under discussion

See discussion in https://github.com/docker/docker/pull/29226#discussion_r91424455 about having
 --until="5s ago" or  --since="5m ago"
/cc @AkihiroSuda @mlaventure @vdemeester

Have you tried if this works? I think it does;
docker logs --since 10m --timestamps <container>

Also, there's
docker logs --tail 100 <container>

to show the last 100 entries

tail works fine, but is line based vs. time based
docker logs --since 10m --timestamps
"docker logs" requires exactly 1 argument(s). (at least with 1.12.1)

tail works, too. docker logs --since "100m" works. Maybe just document that within the --help


Changing the rank of an approved kata

Just wondering and absolutely not criticising who approved this specific case (Abbe-senpai, I think), but I wonder if one can get the chance to object about a kata ranking once it is greenlit, as some user suggested here on a kata of my own.
Unfortunately I can no longer see past votes and proposed rank once approved, but I have to admit that 7 kyu may seem a bit too low; it is true that the base problem itself could be rather trivial if you figure out the right trick, but that same trick is not so trivial in itself. Plus MMMAAANNN and I worked to make it even a bit more tricky with edge test cases, so I would personally rank it at least as a 5 kyu kata.
One of the "problems" with ranking is also that nowadays it is done mostly by the same group of power users (plus some amateur like me, ok) sweeping through each beta and completing them in a row, not by your average coding Joe out there, so it is rather physiological that the ranks tend to shift on a lower scale, at least compared to earlier times.
Dynamically ranking a kata as users complete it and then rank it again would imho the best solution, so that we also can get to re-rank earlier katas and to stay more in touch with the user base (for example, I saw some frustration in the aforementioned kata, as some users thought that a 7 kyu level kata should be more within their arm's reach).
Power/veteran users could then just weight more than an ordinary user, just to balance the scale a bit better.
Ideas or thoughts about it?

Yeah this is a problem that has been concerning me for a bit now. The scale has definitely shifted from its original intentions. I've approved kata on occasion that I thought deserved to be ranked as more difficult than the public consensus, even if both power and non-power users averaged to the same thing.
The hardest ones to rank are the puzzles that are more about finding the solution and not about the code needed to implement the solution. Math ones tend to be very tricky as well because for those who know math incredibly well (like many of our power users) - these tasks are trivial.
For now I have upgraded it to a 6 kyu. I'm open to making it a 5 kyu if you can find some additional support for doing so. I would personally like to see that discussion turn into a thought process for how we can better come up with heuristics on grading difficulty. I think the ones listed in the rank voting section on CW are not thorough enough and at this point out-of-date.

Hi Jake and thanks for the quick reply,
for the moment at hand, given that notifications on a kata are not always working properly or that this github area already hosted interesting discussion, I would stay here and relink this discussion on the kata itself; this all and, of course, the hope that the discussion will evolve towards a more general direction, not just focusing on the current kata.
Concerning the difficulty of this one... Well, as I mentioned in the kata itself, the basic task comes from the last 2 digit problem on Euler (the rest of the problem, parsing a given file, is a 2 lines trivial matter on Python or most other languages). Now, at least in my book, Euler is not where one picks the easiest coding problems that can be found around.
Regrettably Euler seems to be partially down ATM, but IIRC that problem was at least 15% difficulty, i.e. not something most of the users could do in the blink of an eye.
What's more, as mentioned above, putting on some edge test (like comparing powers with base 1) complicated things a bit more.
Finally, the currrent stats are that of about 2100 submission, less than 100 were successful; and a success rate lower than 5% is something that tells a lot (assuming, of course, that the kata is properly explained, has working tests and so on, but I think this was the case as I also had the support of other users, including native speakers, to quickly fix any problem in that regard).
As far as the idea of better heuristics goes, maybe a mix of having users with at least X honour be able to re-assess a rank and looking at the successfully completed/total submissions ratio may help a bit more, possibly also warning admin of dubious situations (like, say, a 8 kyu kata with less than 10% of successful submissions).

[Separeted - partially related thoughts on one's perception of difficulty]
I was wondering how often you still go and grind problems on CW, as I assume one's perception can also be biased by that regard: if you get the habit of solving problem, it is somehow physiological to shift your perception of a given challenge as if it was easier than it actually was; you start to get used to it, your mind has some short-cut to problem-solving that a less frequent solver misses and you tend to be impressed by truly hard problems, thus seeing the others easier by comparison.
And the reverse may be also true, so, in a few word, CW shifting toward lower ranking and harder problems may be as well a good sign, like a sign of maturity and loyalty building on the brand.
It could be a double-edged sword (the risk of becoming too elitist is on that road too), but that also brings into consideration what are your vision and your hopes on CW: a totally mass-marketed product and a small niche product usually don't sell that well if put on the same shelf.
But that does not mean it can't be done, with the due precaution.

Regarding optimal way to modernize kata ranking - I posted an idea here:
https://codewars.ideas.aha.io/ideas/CW-I-14

For me, it is generally more comfortable to answer the question "Is this kata easier than that one?" rather than "Is this kata 6 kyu or 5 kyu?".
…
After that, it will be possible to sort katas by their difficulty by calculating the relative difficulty using pairwise comparison of katas.

@MMMAAANNN well, that's going to be interesting. Let's say you have three things, A, B and C. In a direct comparison, Bob likes A more than B, B more than C, and C more than A. If the score c : Thing -> Rating of the relation between things should be a partial order, one would have to score all three things the same. It still enables you to conglomerate those things into a single thing and then create a topological order on the resulting graph. The depth of a node gives you the appropriate (relative) difficulty in this case.
However, it's rather likely that the graph of katas and difficulty gradings of a user will have many circles. In the worst case, (s)he will rate a rather difficult kata easier than one of the easy ones, and all the ratings are useless.

Another benefit of this method is that kata's difficulty assessment can be ongoing, not just during the beta process.

Isn't the given honor based on the difficulty? That would lead to some interesting honor changes.

All in all, rating the "difficulty" of something is rather hard. Also, the kata's difficulty might fluctuate between languages (something that should be avoided). Last but not least, the personal assessment of a kata will most-likely change over time, as one gets better.
That's why I like the kyu checklist. Maybe that should get reworked.

The kyu checklist needs now certainly to be reworked, but while the "circular" voting surely makes sense, imho that is almost completely lost once you have not a single user, but a user base numbering in the hundreds to rank them.
What would concern me more, would be the irrational side of human mind, like the weight of an anchoring bias that could stain the purity of any given poll of answers. Not to mention that the question itself should be as bias-proof as possible (for example, whether you are "was X easier than Y" or "was X harder than Y", you get different numbers), which is far from trivial.
This is all I personally am more in favour of collecting data mostly from user-behaviours, not from users' answers: given a basic standard of undestandability and working tests, if a kata has a certain ratio of success/attempts, then you can more effectively infer its perceived difficulty.
Because, you know, working on perceived difficulty is what should matter here, not trying to reap some kind of abstract perfect ideal of difficulty: if a user succeed in solving a problem 95% of the users couldn't, he has to be rewarded; conversely, a user unable to solve a problem which is ranked as very easy (while very few managed to solve it), only gets frustrated.
In this perspective, I would not bother changing the honour score: you still keep it if your solution does not work anymore, so I see little point in running after an ever-changing landscape of katas.
Now, that would open a way, WAY bigger point on what honour could possibly mean (I am close to the top, yet I feel quite far from being among the most gifted or skilled on CW, for example) and how one could improve CW gamification aspects in order to move users toward better behaviours (like, say, focusing on solving problems in a given area, courteously ranking or voting other coders and so on). But I would leave it for another day.

I would rather discuss my idea at the ideas page, as it may be offtopic here and may be not noticed by other people wishing to discuss this.
For multiple comparions, there are some methods to sort results, for example Schulze method.

For your example with asssessments A > B, B > C, C > A, the three katas will be assessed as having equal difficulty, AFAIK. And I do not see why it is bad.

Well, my "algorithm" deduced the same. It's not bad per-se, but if you get a big circular graph, everything will have the same difficulty.
@GiacomoSorbi: I thought that the graph/decision mentioned by MMMAAANNN was on a per-user base, not per-community base. A complete community base would be rather big and lead to a lot of circular votes.
That being said, if the rank of a kata would really change over time, one could start every kata at 1 kyu and simply increase its rank the more people it solved. Only 1% has solved the kata? 1kyu. More than 90% have solved the kata? 8kyu.

Your suggestion for ranking kata considers the user-who-completed-it/total-users ratio, I seem to understand, which would not make much sense: a success/attempts ratio is more significative, particularly considering that before getting a rank each kata gets at least something like 20 successful submissions.
And that would also be what I would do to avoid circular votes (or to avoid to ask for it altogether).

Success/attempts ratio can be a sign of a bug which persisted for a long time. It is not a specific measure of kata difficulty, in my opinion.
I do not understand why you guys are so concerned about "circular votes". Shulze method allows to handle them adequately.

Once a kata has been greenlit, I aspect very little bugs to come up; giving greater powers to power users may also make fixing them even quickier.
I am not concerned with circular votes: I am more concerned on biased votes, as humans tend to be biased. A lot.

Once a kata has been greenlit, I aspect very little bugs to come up; […]

There's at least one kata that has been broken since I started Codewars. Greater power would be definitely helpful in such cases, but to be honest it's not really clear what you can do at the moment with 3k+ or 5k+ honour.
Additionally, as long as translations don't have some kind of review/beta, they can always introduce bugs that weren't in there.

a success/attempts ratio is more significative

Do you mean "attempts" as "times the solution has been submitted", or "amount of users who tried this kata"? The latter seems fine, but the first can lead to abuse: write a script that submits a wrong solution like every 15 to 30 seconds.

I do not understand why you guys are so concerned about "circular votes". Shulze method allows to handle them adequately.

Sorry, somehow missed your link. Schulze seems fine, since it needs only a strict weak ordering. However, given it's O(n^3) runtime, the kata ranking process would need to be an asynchronous process.

Good point for broken translations.
Actually I intended the total amount of submissions: I don't expect many users to cheat and you can easily filter off the 1% which does brazillions of attempt on each kata.
[I have written about the 500-lock rule (which I am starting to hate, I have to admit) on the specific topic.]

Actually I intended the total amount of submissions: I don't expect many users to cheat and you can easily filter off the 1% which does brazillions of attempt on each kata.

What about the katas that don't have public test cases? Sure, they should get improved instead, but sometimes that's not possible, for example if it's a puzzle:

I think of a number, and I'm being fair:
it's the number of hairs you find on a mare,
it's the number of stars you see all around.
It's actually quite big, can you find it out?

The poem above would lead to many submissions by every single user who doesn't know the answer.

With this automated submissions/completions criterion that you suggest, how will you differentiate difficulty from poorly written description or other bugs and glitches? Also, one can write a kata that intentionally requires to do a lot of submit attempts because of many hidden tricks not mentioned in the description.

Interesting points and I hope that is clear that my PoV is more about choosing a lesser evil than some optimal solutions.
A puzzle which is doable should still have a difficulty somehow proportional to the number of attempts; I have encountered a couple of katas which were much more along the lines of "guess what the author may be possibly be thinking", but I guess they will stay in beta forever or so.
As far as the poor description goes, we could simply flag (other than not approve) a badly explained kata; once it is out of beta, you start counting attempts.
I must admit I fail to figure out a good yet relatively simple kata which also asks to do tons of trial and error submissions despite a properly spelled problem: any specific kata that you had in mind?

A puzzle which is doable should still have a difficulty somehow proportional to the number of attempts; I have encountered a couple of katas which were much more along the lines of "guess what the author may be possibly be thinking", but I guess they will stay in beta forever or so.

Err… do you remember the "Broken greetings" kata? It's the second one you'll encounter if you sign up on Codewars:

Correct this code, so that the greet function returns the expected value.
function Person(name){
  this.name = name;
}

Person.prototype.greet = function(otherName){
  return "Hi " + otherName + ", my name is " + name;
}

While it's somewhat clear what you have to do, it's not clear what "the expected value is". If I was a new member, I would simply submit, read the error message, and carry on. If I then accidentally introduce a typo (tihs instead of this), I've submitted the solutions three times. The statistics back this up:

What?
How much?

Warriors Trained
199115

Total Skips
313

Total Code Submissions
537227

Total Times Completed
158557

Only about 30 percent of all submissions actually solved that kata, and only about 70% of the users who tried it. Note that the number of completions is less than the number of warriors, so some gave up.
However, lets take another 8kyu kata:

What?
How much?

Warriors Trained
6040

Total Skips
186

Total Code Submissions
8104

Total Times Completed
5426

Almost 66% of all  solutions solved the kata, and even 90% of all users who tried it solved it. And it's really trivial one. But if you solely compare the numbers (30% vs 66%; 70% vs 90%) the first one would need a (much) higher kyu rating; although adding this. at the right place is also trivial.

I must admit I fail to figure out a good yet relatively simple kata which also asks to do tons of trial and error submissions despite a properly spelled problem: any specific kata that you had in mind?

While this isn't a good example, since it's also a rather hard kata, there are some katas which depend on random numbers. Only 1% of all submissions solved Binary Genetic Algorithms, but (probably) 20% of all warriors who tried it solved it.

Remark: While it's interesting to discuss how to rank katas into the eight difficulties, one should also ask why we have exactly eight ranks. Why not 4? Why not 1, and have the user decide whether he thinks he can manage to solve the kata (see Project Euler). But that's a fundamental design decision and shouldn't be changed at this point. It's something to keep in mind for version 4 or higher.

I think that kata Printing Array elements with Comma delimiters with arrays of arrays is harder than 8 kyu.

I think that kata https://www.codewars.com/kata/rock-paper-scissors/csharp with arrays of arrays is harder than 8 kyu too.

@SlyBeetle really?? :)

@yankouskia I think that they are harder than other 8 kyu kata. It is my opinion.

@Voileexperiments so no problem for the moment, because of an unfuxed bug... But is there any "official" point of view or advice? Or should I just change whenever I feel it's not correct? What if I just go nuts, and change everything to 8 kyu? :smile:

That wouldn't work for any katas that aren't as old as those because the ranking votes are actually kept, and you can't rank a kata below the average voted rank.

I just re-ranked https://www.codewars.com/kata/5268acac0d3f019add000203 to 5 kyu (from 4). Will probably change some more old katas to be a bit more realistic.

I dunno, but I'd say it's more of a 6kyu.
Well, that's why we need some kind of discussions (or voting) before re-ranking these...

My first guess was the same, so be it: now it's 6 kyu :smile:

next up: https://www.codewars.com/kata/ip-validation (4 kyu) --> 6 kyu?

Yup, looks like a low 6.
It also needs a complete rewrite and random tests added.

changed to 6 kyu -- we continue from here later

@Voileexperiments
https://www.codewars.com/kata/rgb-to-hex-conversion 5 kyu -> 7 kyu?
https://www.codewars.com/kata/extract-the-domain-name-from-a-url-1 5 kyu -> 7 kyu?
https://www.codewars.com/kata/strip-url-params 4 kyu -> 6 kyu
https://www.codewars.com/kata/reversed-words 6 kyu -> 7 kyu
https://www.codewars.com/kata/range-extraction 4 kyu -> 6 kyu
https://www.codewars.com/kata/roman-numerals-helper 4 kyu -> 6 (5?) kyu
https://www.codewars.com/kata/roman-numerals-encoder 4 kyu -> 6 (5?) kyu
https://www.codewars.com/kata/ninja-vs-samurai-attack-plus-block 5 kyu -> 6 kyu
...but almost everything here could be downgraded at least 1 kyu:
https://www.codewars.com/users/jhoffner/authored (sorry @jhoffner :smile:)

the process is stuck with "Please wait while publishing"

Because the response that was returned was not a success, but rather something along "access denied".

Because the response that was returned was not a success, but rather something along "access denied".

Sure, but it would be nice to get an error message instead. Or even better, the option to change it should be completely removed.
On the other hand, is there any issue for reviewing katas that should b re-ranked? I sometimes drop by to update my list above, but I see no changes...

Decent chance there's an error message in console?
This was turned on for a bit, but then turned off because it choked the servers recalculating points for everyone.


tcpdump

Command-line packet analyzer.
https://www.tcpdump.org

Serial Number Arithmetic

[ ] https://en.wikipedia.org/wiki/Serial_number_arithmetic

Lean Six Sigma is a method that relies on a collaborative team effort to improve performance by systematically removing waste[1] and reducing variation. It combines lean manufacturing/lean enterprise and Six Sigma to eliminate the eight kinds of waste (muda): Defects, Over-Production, Waiting, Non-Utilized Talent, Transportation, Inventory, Motion, and Extra-Processing.
Lean Six Sigma is used to reduce process defects and waste, and to provide a framework for overall organizational culture change.[2] Through the introduction of Lean Six Sigma, employers hope to change the mindset of employees and managers to one that focuses on growth and continuous improvement through process optimization.[citation needed] This change in culture and the mindset of an organization can potentially maximize efficiency and increase profitability.
Six Sigma asserts that:
Continuous efforts to achieve stable and predictable process results (e.g., by reducing process variation) are of vital importance to business success.
Manufacturing and business processes have characteristics that can be defined, measured, analyzed, improved, and controlled.
Achieving sustained quality improvement requires commitment from the entire organization, particularly from top-level management.
Features that set Six Sigma apart from previous quality-improvement initiatives include:
Focus on achieving measurable and quantifiable financial returns
Emphasis on management leadership and support
Commitment to making decisions on the basis of verifiable data and statistical methods rather than assumptions and guesswork.
In fact, lean management and Six Sigma share similar methodologies and tools, including the fact that both were influenced by Japanese business culture. However, lean management primarily focuses on eliminating waste through tools that target organizational efficiencies while integrating a performance improvement system, while Six Sigma focuses on eliminating defects and reducing variation. Both systems are driven by data, though Six Sigma is much more dependent on accurate data.
Resource:

[ ] https://en.wikipedia.org/wiki/Six_Sigma
[ ] https://www.cio.com/article/3237692/six-sigma-quality-management-methodology.html
[ ] https://www.edx.org/course/six-sigma-define-and-measure
[ ] https://www.dummies.com/careers/project-management/six-sigma/how-to-launch-a-six-sigma-project
[ ] https://www.carnegiefoundation.org/blog/quality-improvement-approaches-six-sigma
[ ] https://www.youtube.com/watch?v=4z4ei_ouzdk

Lean For Software Development
Lean development can be summarized by seven principles:

Eliminate waste
Amplify learning
Decide as late as possible
Deliver as fast as possible
Empower the team
Build integrity in
Optimize the whole

Eliminate waste
Lean philosophy regards everything not adding value to the customer as waste. Such waste may include:

Partially done work
Extra features
Relearning
Task switching
Waiting
Handoffs
Defects
Management activities

In order to eliminate waste, one should be able to recognize it. A value stream mapping technique is used to identify waste. The second step is to point out sources of waste and to eliminate them. Waste-removal should take place iteratively until even seemingly essential processes and procedures are liquidated.
Amplify learning
Software development is a continuous learning process based on iterations when writing code. Software design is a problem-solving process involving the developers writing the code and what they have learned. Software value is measured in fitness for use and not in conformance to requirements.
Instead of adding more documentation or detailed planning, different ideas could be tried by writing code and building. The process of user requirements gathering could be simplified by presenting screens to the end-users and getting their input. The accumulation of defects should be prevented by running tests as soon as the code is written.
The learning process is sped up by usage of short iteration cycles – each one coupled with refactoring and integration testing. Increasing feedback via short feedback sessions with customers helps when determining the current phase of development and adjusting efforts for future improvements. During those short sessions, both customer representatives and the development team learn more about the domain problem and figure out possible solutions for further development. Thus the customers better understand their needs, based on the existing result of development efforts, and the developers learn how to better satisfy those needs. Another idea in the communication and learning process with a customer is set-based development – this concentrates on communicating the constraints of the future solution and not the possible solutions, thus promoting the birth of the solution via dialogue with the customer.
Decide as late as possible
As software development is always associated with some uncertainty, better results should be achieved with a set-based or options-based approach, delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions. The more complex a system is, the more capacity for change should be built into it, thus enabling the delay of important and crucial commitments. The iterative approach promotes this principle – the ability to adapt to changes and correct mistakes, which might be very costly if discovered after the release of the system.
With set-based development: If a new brake system is needed for a car, for example, three teams may design solutions to the same problem. Each team learns about the problem space and designs a potential solution. As a solution is deemed unreasonable, it is cut. At the end of a period, the surviving designs are compared and one is chosen, perhaps with some modifications based on learning from the others - a great example of deferring commitment until the last possible moment. Software decisions could also benefit from this practice to minimize the risk brought on by big up-front design. Additionally, there would then be multiple implementations that work correctly, yet are different (implementation-wise, internally). These could be used to implement fault-tolerant systems which check all inputs and outputs for correctness, across the multiple implementations, simultaneously.
An agile software development approach can move the building of options earlier for customers, thus delaying certain crucial decisions until customers have realized their needs better. This also allows later adaptation to changes and the prevention of costly earlier technology-bounded decisions. This does not mean that no planning should be involved – on the contrary, planning activities should be concentrated on the different options and adapting to the current situation, as well as clarifying confusing situations by establishing patterns for rapid action. Evaluating different options is effective as soon as it is realized that they are not free, but provide the needed flexibility for late decision making.
Deliver as fast as possible
In the era of rapid technology evolution, it is not the biggest that survives, but the fastest. The sooner the end product is delivered without major defects, the sooner feedback can be received, and incorporated into the next iteration. The shorter the iterations, the better the learning and communication within the team. With speed, decisions can be delayed. Speed assures the fulfilling of the customer's present needs and not what they required yesterday. This gives them the opportunity to delay making up their minds about what they really require until they gain better knowledge. Customers value rapid delivery of a quality product.
The just-in-time production ideology could be applied to software development, recognizing its specific requirements and environment. This is achieved by presenting the needed result and letting the team organize itself and divide the tasks for accomplishing the needed result for a specific iteration. At the beginning, the customer provides the needed input. This could be simply presented in small cards or stories – the developers estimate the time needed for the implementation of each card. Thus the work organization changes into self-pulling system – each morning during a stand-up meeting, each member of the team reviews what has been done yesterday, what is to be done today and tomorrow, and prompts for any inputs needed from colleagues or the customer. This requires transparency of the process, which is also beneficial for team communication.
The myth underlying with this principle is haste makes waste. However, lean implementation has provided that it is a good practice to deliver fast in order to see and analyze the output at the earliest.
Empower the team
There has been a traditional belief in most businesses about the decision-making in the organization – the managers tell the workers how to do their own job. In a work-out technique, the roles are turned – the managers are taught how to listen to the developers, so they can explain better what actions might be taken, as well as provide suggestions for improvements. The lean approach follows the agile principle[6] "build projects around motivated individuals [...] and trust them to get the job done",[7] encouraging progress, catching errors, and removing impediments, but not micro-managing.
Another mistaken belief has been the consideration of people as resources. People might be resources from the point of view of a statistical data sheet, but in software development, as well as any organizational business, people do need something more than just the list of tasks and the assurance that they will not be disturbed during the completion of the tasks. People need motivation and a higher purpose to work for – purpose within the reachable reality, with the assurance that the team might choose its own commitments. The developers should be given access to the customer; the team leader should provide support and help in difficult situations, as well as ensure that skepticism does not ruin the team’s spirit. Respecting people and acknowledging their work is one way to empower the team.
Build integrity in
The customer needs to have an overall experience of the system. This is the so-called perceived integrity: how it is being advertised, delivered, deployed, accessed, how intuitive its use is, its price and how well it solves problems.
Conceptual integrity means that the system’s separate components work well together as a whole with balance between flexibility, maintainability, efficiency, and responsiveness. This could be achieved by understanding the problem domain and solving it at the same time, not sequentially. The needed information is received in small batch pieces – not in one vast chunk - preferably by face-to-face communication and not any written documentation. The information flow should be constant in both directions – from customer to developers and back, thus avoiding the large stressful amount of information after long development in isolation.
One of the healthy ways towards integral architecture is refactoring. As more features are added to the original code base, the harder it becomes to add further improvements. Refactoring is about keeping simplicity, clarity, minimum number of features in the code. Repetitions in the code are signs of bad code designs and should be avoided. The complete and automated building process should be accompanied by a complete and automated suite of developer and customer tests, having the same versioning, synchronization and semantics as the current state of the system. At the end the integrity should be verified with thorough testing, thus ensuring the System does what the customer expects it to. Automated tests are also considered part of the production process, and therefore if they do not add value they should be considered waste. Automated testing should not be a goal, but rather a means to an end, specifically the reduction of defects.
Optimize the Whole
Modern software systems are not simply the sum of their parts, but also the product of their interactions. Defects in software tend to accumulate during the development process – by decomposing the big tasks into smaller tasks, and by standardizing different stages of development, the root causes of defects should be found and eliminated. The larger the system, the more organizations that are involved in its development and the more parts are developed by different teams, the greater the importance of having well defined relationships between different vendors, in order to produce a system with smoothly interacting components. During a longer period of development, a stronger subcontractor network is far more beneficial than short-term profit optimizing, which does not enable win-win relationships.

https://en.wikipedia.org/wiki/Lean_software_development

Personal Software Process (PSP)  and Team Software Process (TSP)
Personal Software Process (PSP)
The Personal Software Process (PSP) is a structured software development process that is designed to help software engineers better understand and improve their performance by bringing discipline to the way they develop software and tracking their predicted and actual development of the code. It clearly shows developers how to manage the quality of their products, how to make a sound plan, and how to make commitments. It also offers them the data to justify their plans. They can evaluate their work and suggest improvement direction by analyzing and reviewing development time, defects, and size data. The PSP was created by Watts Humphrey to apply the underlying principles of the Software Engineering Institute's (SEI) Capability Maturity Model (CMM) to the software development practices of a single developer. It claims to give software engineers the process skills necessary to work on a team software process (TSP) team.
The PSP aims to provide software engineers with disciplined methods for improving personal software development processes.
The PSP helps software engineers to:

Improve their estimating and planning skills.
Make commitments they can keep.
Manage the quality of their projects.
Reduce the number of defects in their work.

One of the core aspects of the PSP is using historical data to analyze and improve process performance. PSP data collection is supported by four main elements:

Scripts
Measures
Standards
Forms

The PSP scripts provide expert-level guidance to following the process steps and they provide a framework for applying the PSP measures. The PSP has four core measures:

Size – the size measure for a product part, such as lines of code (LOC).
Effort – the time required to complete a task, usually recorded in minutes.
Quality – the number of defects in the product.

The PSP is a personal process that can be adapted to suit the needs of the individual developer. It is not specific to any programming or design methodology; therefore it can be used with different methodologies, including Agile software development.
Software engineering methods can be considered to vary from predictive through adaptive. The PSP is a predictive methodology, and Agile is considered adaptive, but despite their differences, the TSP/PSP and Agile share several concepts and approaches – particularly in regard to team organization. They both enable the team to:

Define their goals and standards.
Estimate and schedule the work.
Determine realistic and attainable schedules.
Make plans and process improvements.

Both Agile and the TSP/PSP share the idea of team members taking responsibility for their own work and working together to agree on a realistic plan, creating an environment of trust and accountability. However, the TSP/PSP differs from Agile in its emphasis on documenting the process and its use of data for predicting and defining project schedules.
High-quality software is the goal of the PSP, and quality is measured in terms of defects. For the PSP, a quality process should produce low-defect software that meets the user needs.
The PSP phase structure enables PSP developers to catch defects early. By catching defects early, the PSP can reduce the amount of time spent in later phases, such as Test.
The PSP theory is that it is more economical and effective to remove defects as close as possible to where and when they were injected, so software engineers are encouraged to conduct personal reviews for each phase of development. Therefore, the PSP phase structure includes two review phases:

Design Review
Code Review

To do an effective review, you need to follow a structured review process. The PSP recommends using checklists to help developers to consistently follow an orderly procedure.
The PSP follows the premise that when people make mistakes, their errors are usually predictable, so PSP developers can personalize their checklists to target their own common errors. Software engineers are also expected to complete process improvement proposals, to identify areas of weakness in their current performance that they should target for improvement. Historical project data, which exposes where time is spent and defects introduced, help developers to identify areas to improve.
PSP developers are also expected to conduct personal reviews before their work undergoes a peer or team review.
Team Software Process (TSP)
In combination with the personal software process (PSP), the team software process (TSP) provides a defined operational process framework that is designed to help teams of managers and engineers organize projects and produce software for products that range in size from small projects of several thousand lines of code (KLOC) to very large projects greater than half a million lines of code. The TSP is intended to improve the levels of quality and productivity of a team's software development project, in order to help them better meet the cost and schedule commitments of developing a software system.
Resource

[ ] https://en.wikipedia.org/wiki/Personal_software_process
[ ] https://en.wikipedia.org/wiki/Team_software_process


grafana_template.json out of date?

I followed setup instructions here.
Logs are showing up in dashboard, but infos in tiles like Wallet balances are all empty:

Looking grafana_template.json file for balances there is this:
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "description": "Indicates if you have enough funds on your wallet. Hermes can not relay without spending gas. Thus, it is important to set alarms which monitor the gas.",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisLabel": "",
            "axisPlacement": "auto",
            "fillOpacity": 80,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineWidth": 1,
            "scaleDistribution": {
              "type": "linear"
            }
          },
          "decimals": 0,
          "mappings": [],
          "min": -1,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "short"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byType",
              "options": "time"
            },
            "properties": [
              {
                "id": "custom.axisPlacement",
                "value": "hidden"
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 7,
        "w": 8,
        "x": 0,
        "y": 17
      },
      "id": 1,
      "options": {
        "barRadius": 0,
        "barWidth": 0.97,
        "groupWidth": 0.7,
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom"
        },
        "orientation": "horizontal",
        "showValue": "auto",
        "stacking": "none",
        "tooltip": {
          "mode": "single",
          "sort": "none"
        },
        "xTickLabelRotation": 0,
        "xTickLabelSpacing": 100
      },
      "pluginVersion": "9.0.6",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "wallet_balance{job=\"hermes\"}",
          "hide": false,
          "instant": true,
          "legendFormat": "{{chain}}: {{account}} ({{instance}})",
          "range": false,
          "refId": "A"
        }
      ],
      "title": "Wallet balances",
      "transformations": [],
      "transparent": true,
      "type": "barchart"
    },

Above there is this entry: "expr": "wallet_balance{job=\"hermes\"}",
But in log I have this:

2023-09-07T12:53:02.187618Z TRACE ThreadId(43) spawn:chain{chain=elgafar-1}:wallet{chain=elgafar-1}: wallet balance amount=39942099367 denom=ustars account=stars1zyvut4uve45fx2hc3gnya7thtyawdnwyzj9ygm
2023-09-07T12:53:03.201586Z TRACE ThreadId(46) spawn:chain{chain=uni-6}:wallet{chain=uni-6}: wallet balance amount=2381263031 denom=ujunox account=juno1zyvut4uve45fx2hc3gnya7thtyawdnwyqu3zyk
2023-09-07T12:53:05.398422Z TRACE ThreadId(50) spawn:chain{chain=pisco-1}:wallet{chain=pisco-1}: wallet balance amount=87353232 denom=uluna account=terra1zyvut4uve45fx2hc3gnya7thtyawdnwys2gep2
2023-09-07T12:53:05.842014Z TRACE ThreadId(51) event_source.websocket{chain=elgafar-1}: received an RPC event: tm.event = 'NewBlock' chain=elgafar-1
2023-09-07T12:53:06.260129Z TRACE ThreadId(52) event_source.websocket{chain=pisco-1}: received an RPC event: tm.event = 'NewBlock' chain=pisco-1
2023-09-07T12:53:06.343358Z TRACE ThreadId(51) event_source.websocket{chain=elgafar-1}: assembled batch chain=elgafar-1 len=1

I'm neither familiar with Grafana nor Prometheus, but this it scrape data from log file?

Ok, guess it gets data from http://localhost:3001/metrics:

HELP wallet_balance The balance of each wallet Hermes uses per chain. Please note that when converting the balance to f64 a loss in precision might be introduced in the displayed value
TYPE wallet_balance gauge
wallet_balance{account="juno1zyvut4uve45fx2hc3gnya7thtyawdnwyqu3zyk",chain="uni-6",denom="ujunox",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""}<PHONE_NUMBER>
wallet_balance{account="stars1zyvut4uve45fx2hc3gnya7thtyawdnwyzj9ygm",chain="elgafar-1",denom="ustars",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""}<PHONE_NUMBER>7
wallet_balance{account="terra1zyvut4uve45fx2hc3gnya7thtyawdnwys2gep2",chain="pisco-1",denom="uluna",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 87353232

Still wondering why data is not shown. Also for testing I'm running Hermes locally, so I changed in prometheus.yml from host.docker.internal:3001 to localhost:3001.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "hermes"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["host.docker.internal:3001"]

Ok, host.docker.internal:3001 is correct, I tried changing it to host.docker.internal:3001/metrics and then I get an error when adding Prometheus data source (lookup Prometheus: no such host).

Looking into http://localhost:3001/metrics, there is:
# HELP messages_submitted_total Number of messages submitted to a specific chain
# TYPE messages_submitted_total counter
messages_submitted_total{chain="elgafar-1",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
# HELP otel_scope_info Instrumentation Scope metadata
# TYPE otel_scope_info gauge
otel_scope_info{otel_scope_name="hermes",otel_scope_version=""} 1
# HELP queries_cache_hits_total Number of cache hits for queries submitted by Hermes
# TYPE queries_cache_hits_total counter
queries_cache_hits_total{chain="elgafar-1",query_type="query_channel",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_cache_hits_total{chain="elgafar-1",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_cache_hits_total{chain="elgafar-1",query_type="query_connection",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_cache_hits_total{chain="elgafar-1",query_type="query_latest_height",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_cache_hits_total{chain="pisco-1",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 7
queries_cache_hits_total{chain="uni-6",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 28
# HELP queries_total Number of queries submitted by Hermes
# TYPE queries_total counter
queries_total{chain="elgafar-1",query_type="query_application_status",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_block",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_blocks",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_channel",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_channel_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_channels",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_client_connections",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 290
queries_total{chain="elgafar-1",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_clients",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="elgafar-1",query_type="query_commitment_prefix",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_config_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="elgafar-1",query_type="query_connection",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 288
queries_total{chain="elgafar-1",query_type="query_connection_channels",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 254
queries_total{chain="elgafar-1",query_type="query_connections",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_consensus_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_consensus_states",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_latest_height",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="elgafar-1",query_type="query_next_sequence_receive",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_packet_acknowledgements",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_packet_commitments",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_packet_events",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_staking_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 2
queries_total{chain="elgafar-1",query_type="query_txs",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_unreceived_acknowledgements",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_unreceived_packets",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="query_upgraded_consensus_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
queries_total{chain="elgafar-1",query_type="status",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="pisco-1",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 21
queries_total{chain="pisco-1",query_type="query_config_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="pisco-1",query_type="query_connection",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 27
queries_total{chain="pisco-1",query_type="query_latest_height",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="pisco-1",query_type="query_staking_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 2
queries_total{chain="pisco-1",query_type="status",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="uni-6",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 232
queries_total{chain="uni-6",query_type="query_config_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="uni-6",query_type="query_connection",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 228
queries_total{chain="uni-6",query_type="query_latest_height",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
queries_total{chain="uni-6",query_type="query_staking_params",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 2
queries_total{chain="uni-6",query_type="status",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 1
# HELP ws_events_total How many IBC events did Hermes receive via the websocket subscription
# TYPE ws_events_total counter
ws_events_total{chain="elgafar-1",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0
# HELP ws_reconnect_total Number of times Hermes reconnected to the websocket endpoint
# TYPE ws_reconnect_total counter
ws_reconnect_total{chain="elgafar-1",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 0

Are these I can query for? Like this:

queries_cache_hits_total{chain="uni-6",query_type="query_client_state",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 28

So in Dashboard I tried this: queries_cache_hits_total {job="hermes"}
But still I get no data:

If you are not running Prometheus in a Docker container then yes you need to set localhost:3001 as your target. You should also double check that the Prometheus data source in Grafana is configured correctly and points to localhost.

If you are not running Prometheus in a Docker container then yes you need to set localhost:3001 as your target. You should also double check that the Prometheus data source in Grafana is configured correctly and points to localhost.

Everything's inside eycept Hermes running on localhost. I can see the logs scraped by Loki (also in docker). But prometheus doesnt seem to get data even data source tells me it is connected.

Ok then yeah Prometheus should point to host.docker.internal and Grafana should use the Docker container name. Here in my case it's just prometheus:

What does your [telemetry] section in the Hermes config look like? Perhaps you need to set <IP_ADDRESS> for the host, otherwise I am not sure Prometheus can connect to it from the Docker container (though that's never been an issue for me, but I can't think of something else).
[telemetry]
enabled = true
host    = '<IP_ADDRESS>'
port    = 3001

Ok then yeah Prometheus should point to host.docker.internal and Grafana should use the Docker container name. Here in my case it's just prometheus:

What does your `[telemetry]` section in the Hermes config look like? Perhaps you need to set `<IP_ADDRESS>` for the host, otherwise I am not sure Prometheus can connect to it from the Docker container (though that's never been an issue for me, but I can't think of something else).
[telemetry]
enabled = true
host    = '<IP_ADDRESS>'
port    = 3001

Setting host to <IP_ADDRESS> leads to address already in use. But this isn't the problem, <IP_ADDRESS> in config.toml is correct, also host.docker.internal:3001 in prometheus.yml is correct. Otherwise I would have got an error when adding prometheus as datasource (tested it).
Interestingly when I try to to explore: I see only these 5 metrics:

I also updated using latest Grafana 10.0.5 and plugin - Loki 5.0.0 and Prometheus 5.0.0. Same error here.

Took me forever but found the problem: docker maps to port <IP_ADDRESS> by default - not <IP_ADDRESS>. So in Hermes config.toml, it needs to change to this: host = '<IP_ADDRESS>'.
In documentation, Grafana, Lok, Promtail, Prometheus is setup in docker containers - except for Hermes. So host.docker.internal:3001 in prometheus.yml is not working:
...
    static_configs:
      - targets: ["host.docker.internal:3001"]
...

For a real production setup, Hermes should also be setup in a docker container. Configuration example in docker-compose
I was trying to set explicitly <IP_ADDRESS> in docker-compose.yaml, like this:
networks:
  grafana:
    driver: bridge

services:
  hermes-relayer:
    container_name: hermes-relayer
    image: arkprotocol/ics721-relayer-testnet-hermes:v0.0.11
    labels:
      logging: 'promtail'
      logging_jobname: 'containerlogs'
    ports:
      - '3001:3001'
    networks:
      - grafana
...

Then in prometheus.yml it can access hermes container, like this:
...
    static_configs:
      - targets:
          - hermes-relayer:3001
...

Explained here: https://github.com/docker/compose/issues/4799#issuecomment-623504144

So example in Setup Grafana documentation is def not working. It requires Hermes to be in docker as well.

Hi, I set up Hermes as specified in the docs, but monitoring is not working as explained in this issue. Is there a solution for getting the monitoring working without running Hermes in a docker container?

Hi, since Hermes v1.5 there is a _total suffix to the metrics, https://github.com/informalsystems/hermes/blob/master/CHANGELOG.md#v150. Could you try updating the metrics names in the Grafana board and see if they are displayed?

As per the upgrading document:
https://github.com/informalsystems/hermes/blob/master/UPGRADING.md
there's only 5 params modified, so don't think this is the cause of all panels showing "No data"
As stated by taitruong it looks like Prometheus is not accessing data.

I wasn’t able to reproduce the “No data” issue.
I ran the setup in the guide using both Hermes v1.6.0 and v1.7.0:

Running the docker-compose.yaml from the repository without modifications

With templates from the repository without modifications
Hermes running locally with telemetry enabled on port 3001

Closing this, feel free to re-open if needed.


AbstractConfig的shutdownHook应可配置

当前代码
    static {
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            public void run() {
                if (logger.isInfoEnabled()) {
                    logger.info("Run shutdown hook now.");
                }
                ProtocolConfig.destroyAll();
            }
        }, "DubboShutdownHook"));
    }

简直就是无差异攻击, 建议通过环境变量控制,默认为真
    static {
       if (!"false".equals(System.getenv("dubbo.addShutdownHook")))
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            public void run() {
                if (logger.isInfoEnabled()) {
                    logger.info("Run shutdown hook now.");
                }
                ProtocolConfig.destroyAll();
            }
        }, "DubboShutdownHook"));
    }

Why should not the shutdown hook not be added? Have you encountered any issue?

becase it can't disable  or stop at old version.

Please try the latest version 2.6.2-SNAPSHOT on master barnch, it should be fixed.


How customize chart background with gradient color

Combining methods from multiple sources, I arrived at this solution for changing the background of the chart -
//Set background opacity and fill
d3.selectAll('.chart g.c3-event-rects').style('fill-opacity', '1');
d3.selectAll('.chart g.c3-event-rects').style('fill', 'url(#something)');
//Insert gradient
let gradient = d3.select('defs')
.append('linearGradient')
.attr('id', 'gradient')
.attr('x1', '50%').attr('y1', '0%')
.attr('x2', '50%').attr('y2', '100%');
gradient
  .append('stop')
  .attr('offset', '0%')
  .attr('stop-color', '#FFFFFF')
  .attr('stop-opacity', '1');

gradient
  .append('stop')
  .attr('offset', '100%')
  .attr('stop-color', '#B38EE8')
  .attr('stop-opacity', '0');

It would be very nice if this was documented as well. I mean using gradients through inserting with d3 and using css notation as was mentioned in #1098 at least until support for gradients is made available

Hi,
The issue queue is to be used for reporting defects and problems with C3.js, in addition to feature requests and ideas.
It is not a catch-all support forum.
For general support enquiries, please use the Google Group at https://groups.google.com/forum/#!forum/c3js.
All questions involving the interplay between C3.js and any other library (such as AngularJS) should be posted there first!
Thank you!


Need to pass json object from xls or kwd file as input to QAFTestStep

QAF Version
Need to know whether we can pass json object in following way i.e without curly braces at start.

Note: only the latest version is supported
"name": [
{
"first": "sample",
"last": 356,
"startDate": "1530211075000",
"endDate": "1530383875000",
"phoneNumber": "1263899027"
}
]
}

Steps To Reproduce
1.
2.
3.

Expected behavior
Actual behavior
Is the issue reproducible on runner?

[x] QAS
[ ] Maven
[ ] Gradle
[x] Ant
[ ] Eclipse

Test case sample

Please, share the test case (as small as possible) which shows the issue

Will you please post in users group with details what exactly you are trying to do? While posing in users group provide as much as possible details including what you have tried and where you are facing issue.

For further queries or question post in qaf users group or stackoverflow with qaf tag.


Support restricting views based on collection privacy for Wagtail images

Issue Summary
Setting privacy for a collection properly restricts viewing to documents owned by the collection, but not images.
Documents run a before_serve_document hook which runs checks on the collection's restrictions.  Images, on the other hand, simply serve the image unconditionally.
Steps to Reproduce

Create an image
Put the image in a private collection
View the image as an unauthenticated user

Technical details

Python version: Python 3.4.5
Django version: 1.11.5
Wagtail version: 1.12.2
Browser version: Mozilla Firefox 55.0.2

Hi @Taywee - thanks for the report! There was some earlier discussion of this at #3245, but I don't think there's currently an open issue about this...
As you mention, the way we currently serve images doesn't allow for adding a permission check, and it's unlikely that we'd be able to switch to a dynamic endpoint for image serving in a way that plays well with how people are currently working with images in Wagtail (including hosting them on remote storage services and CDNs). One possibility would be to have a dynamic view just for protected images, and leave public images as they are, but that introduces a lot of new moving parts.
From a user-experience perspective there are also some unanswered questions about how protected images should behave - they don't correspond neatly to how documents work, since you're usually viewing them within a page. For example, if a protected image ends up being used on a public page, you can't really prompt a user to 'log in to view this image' in the same way that you can prompt them before downloading a document.

Wagtail allows to specify a CustomImage and a CustomRendition. The rendition has a url property:
def get_private_storage(*args, **kwargs):
    return FileSystemStorage(location=settings.PRIVATE_ROOT)

class CustomRendition(AbstractRendition):
    file = models.ImageField(
        upload_to=get_rendition_upload_to,
        storage=get_private_storage,
        width_field="width",
        height_field="height",
        max_length=255,
    )

    @property
    def url(self):
        value = super(CustomRendition, self).url.replace("/images/", "")
        return f"/images/{self.pk}/{value}"

This allows you to point the image URL to a view that does the access control and serve. The serve, preferably by off loading the request to the webserver (x-sendfile or similar).

For future ref, some discussion about this in #10964.


Fix BF Exact Change Tests

Added a test case for when the smallest denomination of change available is larger than the total change required.
Closes #1409

Thank you for this, but you need to add a large value as well, e.g. ONE HUNDRED, to make sure that the code written says Insufficient Funds even if there is enough money, just not enough change.

The test case I included should only return .5 of change and the available dollar in the drawer is valued at 1.00 so I think this should correctly test the case where the value of the total change is high enough but the denomination is too high and should return Insufficient Funds. I'm happy to change the case though if you think that's not correct.

 My code worked, but I didn't think it was supposed to.. Let me do some more testing.

Didn't expect my old code to work, I guess I just wrote better code than I though back when I solved this. Thank you :)


test

Instructions:

The PR has to be tagged with at least one of the following labels (*):

feature
bugfix
performance
ui
backward-incompat
release-notes (**)

Remove these instructions before publishing the PR.

(*) Other labels to consider:

testing
dependencies
docker
kubernetes
observability
security
code-style
extension-point
refactor
cleanup

(**) Use release-notes label for scenarios like:

New configuration options
Deprecation of configurations
Signature changes to public methods/interfaces
New plugins added or old plugins removed

You'll need approve to run test. Can you update the PR with the purpose?

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (45f1869) 61.43% compared to head (6e60936) 46.45%.
Report is 136 commits behind head on master.

Additional details and impacted files
@@              Coverage Diff              @@
##             master   #12173       +/-   ##
=============================================
- Coverage     61.43%   46.45%   -14.99%
+ Complexity     1135      945      -190
=============================================
  Files          2385     1809      -576
  Lines        129150    95156    -33994
  Branches      19994    15352     -4642
=============================================
- Hits          79347    44204    -35143
- Misses        44049    47807     +3758
+ Partials       5754     3145     -2609

Flag
Coverage Δ

custom-integration1
?

integration
?

integration1
?

integration2
?

java-11
?

java-21
46.45% <ø> (-14.87%)
:arrow_down:

skip-bytebuffers-false
46.41% <ø> (-14.99%)
:arrow_down:

skip-bytebuffers-true
46.42% <ø> (-14.88%)
:arrow_down:

temurin
46.45% <ø> (-14.99%)
:arrow_down:

unittests
46.45% <ø> (-14.98%)
:arrow_down:

unittests1
46.45% <ø> (-0.22%)
:arrow_down:

unittests2
?

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


use of batchnorm

i noticed that none batch norm is used in Decoder, is it intentional?

Hi @zoucheng1991, thanks for your interest in SparseInst.
Exactly, we don't use normalization in the encoder and decoder, with all batch normalization frozen in the backbone. Adding group normalization or batch normalization in both encoder and decoder will bring some improvement. For simplicity and speed, we don't adopt any normalization in the encoder or the decoder.

请问一下跑自己的数据集有评价指标的程序吗

Hi @yidimopozhibai，对于自己的数据集，你可能需要自己去实现相应的一个评价程序，不过我比较推荐您将自己的数据集转成COCO数据集的格式，这样便能直接使用COCO数据集的评测，也就是项目默认的一个评测方式。这样从数据读取到模型评测，都可以很方便。

We believe we have answered your question, and as such I'm closing this issue, but let us know if you have further questions. Thanks for your interest in SparseInst 😊 . If you find it useful in your work or research, could you give us a star 🌟 or help us recommend SparseInst to your friends.


DSD-613: Exporting missing components and variables

Fixes JIRA ticket DSD-613
This PR does the following:

Exports components and variables that were missed the first time around.

How has this been tested?
Bug caught in prod (specifically the ColorVariants for the Breadcrumbs component).
Checklist:

[ ] I have updated the Storybook documentation accordingly.
[ ] All new and existing tests passed.

Front End Review:

[ ] View the example in Storybook

Tugboat has finished building the preview for this pull request!
Link:

https://pr768-7mujhryiizt9mkzhhn0ow5bu3yvtzwrp.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/619573b2e3686523f3406ef0

Tugboat has finished building the preview for this pull request!
Link:

https://pr768-7mujhryiizt9mkzhhn0ow5bu3yvtzwrp.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/619573b2e3686523f3406ef0

Tugboat has finished building the preview for this pull request!
Link:

https://pr768-7mujhryiizt9mkzhhn0ow5bu3yvtzwrp.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/619573b2e3686523f3406ef0

Tugboat has finished building the preview for this pull request!
Link:

https://pr768-7mujhryiizt9mkzhhn0ow5bu3yvtzwrp.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/619573b2e3686523f3406ef0


Re-opening GPU Trained MB Config looks incomplete

For GPU trained MB Config - it should auto-check GPU on re-load. Right now it looks like all training info is lost on re-open.

In progress. Related to #2123

I validated this in the bug bash


moving cosmos to eth command from client

I just pulled your branch & it looks like we have a couple of compiler errors to resolve.
$ cargo check --all && cargo test --all
    Finished dev [unoptimized + debuginfo] target(s) in 0.23s
   Compiling gravity_utils v0.1.0 (/home/levi/PeggyJV/gravity-bridge/orchestrator/gravity_utils)
   Compiling ethereum_gravity v0.1.0 (/home/levi/PeggyJV/gravity-bridge/orchestrator/ethereum_gravity)
   Compiling cosmos_gravity v0.1.0 (/home/levi/PeggyJV/gravity-bridge/orchestrator/cosmos_gravity)
   Compiling relayer v0.4.1 (/home/levi/PeggyJV/gravity-bridge/orchestrator/relayer)
   Compiling client v0.4.1 (/home/levi/PeggyJV/gravity-bridge/orchestrator/client)
   Compiling orchestrator v0.4.1 (/home/levi/PeggyJV/gravity-bridge/orchestrator/orchestrator)
   Compiling register_delegate_keys v0.4.1 (/home/levi/PeggyJV/gravity-bridge/orchestrator/register_delegate_keys)
   Compiling gorc v0.1.0 (/home/levi/PeggyJV/gravity-bridge/orchestrator/gorc)
   Compiling test_runner v0.1.0 (/home/levi/PeggyJV/gravity-bridge/orchestrator/test_runner)
error[E0432]: unresolved import `cosmos_gravity::send::send_request_batch`
 --> gorc/src/commands/cosmos_to_eth.rs:5:28
  |
5 | use cosmos_gravity::send::{send_request_batch, send_to_eth};
  |                            ^^^^^^^^^^^^^^^^^^
  |                            |
  |                            no `send_request_batch` in `send`
  |                            help: a similar name exists in the module: `send_request_batch_tx`

error[E0432]: unresolved import `cosmos_gravity::send::send_request_batch`
 --> gorc/src/commands/cosmos_to_eth.rs:5:28
  |
5 | use cosmos_gravity::send::{send_request_batch, send_to_eth};
  |                            ^^^^^^^^^^^^^^^^^^
  |                            |
  |                            no `send_request_batch` in `send`
  |                            help: a similar name exists in the module: `send_request_batch_tx`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `gorc`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: build failed

Looks like the merge duplicated a use statement & is breaking the Rust build.
  --> gorc/src/commands.rs:14:1
   |
7  | mod print_config;
   | ----------------- previous definition of the module `print_config` here
...
14 | mod print_config;
   | ^^^^^^^^^^^^^^^^^ `print_config` redefined here
   |
   = note: `print_config` must be defined only once in the type namespace of this module


OpenAI compatible embedding API is not complete

Feature request
https://platform.openai.com/docs/api-reference/embeddings/create
As mentioned in document, array of integers or array of arrays of integers could also be the input.
Motivation
Integrity
Your contribution
I'm willing to contribute, but not sure how to be compatible with current design.

@npuichigo see #112 for a draft to add full-type compatibility with openai api within the current design.
Appreciate your feedback!

@OlivierDehaene this issue should be closed since #214 has been merged.


Handle routes besides /api, /content and /admin

Am I missing something or is there just no way at the moment to handle routes other than /admin, /content and /api? All other routes are returning a 404 error and when I try to run ponzu with another "service" like ponzu run admin,api,app , it returns an error.
It seems that it's hardcoded on line 182 in main.go that there should only be these two "services".
My use case is that I want to render my SPA server side on any url other than /api, /admin or /content. The reason is SEO.

You can add any handlers you want just by registering them to the default serve mux anywhere in your content files or better yet by creating and enabling an addon.
the quickest way would just be to add a handler like this:
// in content/yourtype.go
// add to the init() func:

http.HandleFunc("/app", seoHandler)

when you re build and run (without changing the api,admin services) you should see that handler working.
I'd love to see your solution if you plan to make it open (or partially open) source. You could make this more extensible by creating an addon.. see examples here: https://github.com/ponzu-cms/addons - you can create an addon that could be enabled/disabled and have some UI within the CMS (like FB Scheduler, or something that is just a vendored package like Reference).
Let me know if you have questions or need any additional direction.

You can see all of the routes pre-registered within the following files:
system/admin/server.go
system/api/server.go
(I'm on mobile at the moment so I apologize if those aren't precise)
The main point is even the '/' route has been left open so you could do whatever you'd like with it.

I see. Thanks :)
I'll try the addon approach.

Sounds good. Please let me know how it goes -- there isn't any documentation for addons, so you're kind of exploring new territory. I am happy to help.
Report back how it goes if you don't mind. I need some feedback on addons before I do all the docs.

Hi @martinsotirov -
Were you able to achieve your desired outcome using Ponzu? I am interested in making a "frontend" addon of sorts and thought you might have thoughts if you ended up going forward with an addon of your own.
Thanks!

Hey @nilslice , I couldn't really achieve exactly what I wanted – render Vue.js server side with Go alone, because the Vue.js server side renderer seems to have some hard Node.js dependencies.
In the end I managed to have all requests to URLs other than /assets, /ponzu and /api return a server side rendered Vue app by using os/exec and node to execute a bundled version of my app.
The ponzu part worked really good once I figured that the addons don't get autoloaded unless you include them in some other part of the app. I had to add _ "my/addon" to the imports of one of my content types to force ponzu to show my addon in the backend.
I didn't go further with this experiment because of other work but I might pick it up later.
Anyway, what kind of a frontend addon are you looking to build?
Around the same time I started playing with ponzu, I was also experimenting with a bolt inspired Go app with the echo framework where I wanted to register content types, routing and templates all at runtime with JSON config files. The idea was that you'd compile only once and then work on your frontend in a more dynamic way (I'm coming from PHP and Ruby so compiling is really weird to me for web development).

My 2 cents is there are better tools for routing paths to different applications. traefix for instances makes this easy. If you want React Universal, thats great, you can stand it up with express, and route any path not /api or /admin to your express app.
Part of what makes this project interesting in my opinion is the open source headless CMS  aspect. The REST Service CMS trend is gaining alot of traction. Focusing on the best CMS possible would be nice.
@martinsotirov for the JSON models this is the way that systems like contentful or other hosted CMS solutions configure their models, and the JSONs stored within their database. I agree its super convenient for developers and for migrating content across servers. The content and the models transfer with a database sync.

@krismeister is right, as a REST-like service, Ponzu should just be accessed as a HTTP interface to your data which you interact with from different clients (web app, iOS app, smart TV, another service, CLI, etc).
Sometimes though you just have a little project or a small business client that anything beyond a single server is overkill. That's what I would be designing the "frontend" addon to address. Essentially it would consist of Assets (for uploading static content, like css/js/img/etc) and Pages which have runtime defined routes, ("Home" -> "/", "About" -> "/about", etc). Each page would get a context, which is mapped to an API endpoint that you would enter: "/api/contents?type=About&count=1". Each page would also get a *template.Template editable in a textarea, but also possibly mapped to a file in a special directory (which would be overwritten if edited in the CMS UI). In addition to the Assets and Pages types, there would likely need to be a Partials type which would consist of just named *template.Template's to use as included templates like header, footer, sidebar etc..
Once you add a page, with its route, context and template, it is rendered as follows:

route is requested
context API call is made, getting data from the DB
template is executed with the data from the context
[]byte from template is written to the response

I suppose there could also be data passed to the template including the req.Form to be able to read and use values in the URL or request
It would be an Addon since, like @krismeister mentions, Ponzu is focused on being a great CMS and server, but not concerned with rendering views. However, I see the benefit of providing this as an option to users and know I would personally benefit from having a quick way to deploy a single system and have it do both server & client for smaller projects.
@martinsotirov - would that be something that you'd consider using? For a JS web app, you would just register a "/" route and all others would match it, rendering the "bootstrap" page that sets up a view and client-side router for your JS to take over.

@nilslice yeah, that does sound like a useful addon. Something like that could cover a large part of my smaller client projects that I know do with WordPress.


Add papers & fix username reference

This PR will:

Add the following papers: Transmatching, BigBench, SetOps, RelReps, and 2 old ones.
Fix the username reference in the metric-based, in order to have the link user-paper:

👷 Deploy Preview for gladia processing.

Name
Link

🔨 Latest commit
6eeb260cbfd7ddacc9f16b4b8eb3f771d3504d95

🔍 Latest deploy log
https://app.netlify.com/sites/gladia/deploys/63dd52e868650e0008175eae


rancher-load-images script attempts to push to wrong repos

Rancher Server Setup

Rancher version: 2.6.5

Describe the bug
The rancher-load-images.sh script that is included in the 2.6.5 release in incorrect because it tries to add rancher/ to the busybox and registry:2 images which are not published on docker hub under the rancher/ owner.
It includes the following logic:
case $i in
*/*)
    image_name="${reg}/${i}"
    ;;
*)
    image_name="${reg}/rancher/${i}"
    ;;
esac

In the images list you have the following line:
busybox

The script then tries to push to rancher/busybox:latest which does not exist in docker hub, so which is the correct image owner? https://hub.docker.com/r/rancher/busybox/tags
Additional context
Clarify the need for rancher/ on all official images because clearly it isn't always the case.

Bump


Replace icons / logos

Done https://github.com/david-szabo97/cpvault.com/commit/19684a2d053340eed170da199a78a7d81817080c


get the editor from the context for cases that its not the focused editor

fix https://github.com/microsoft/vscode/issues/205462

you can select an option from the output menu without giving the editor focus, but the editor is in the context in that case.
also allow more time for retrying for focus to reduce some flakiness.

need to consider that blob retry block more, it doesn't seem safe as is


Tools to visualize the detection result.

Hi, I want to ask which tools can visualize the detection result.
Additionally, if I train the network in server and want to visualize in the windows10, is there any tool recommended?
If anyone has recommended tools, comment in this topic. Thank you very much.

kittiviewer  in  traveller59 /second.pytorch. (html+css+js+flask)     :)

You can use http://www.open3d.org/docs/release/tutorial/Advanced/customized_visualization.html and self implemented your own visualization with pickle file.

@sshaoshuai: Do you still plan to release/integrate your visualization code to this repository?

@MartinHahner88 ，ok，I will prepare a simple visualization codes to PCDet soon.

Hi all, a simple visualization tool and quick demo is available now.