Failed to forward request: client requires absolute-form URIs

When attempting to execute the log example within the package on Windows, the error mentioned above is encountered.
I've attempted importing the certificate into the Trust Root Certificates, yet the issue persists. The proxy is returning a 502 Bad Gateway error.
Could I be overlooking something?
I tried making the requests from chrome browser with proxy set to the hudsucker server:port

Few questions:
What version of Windows are you using?
What version of Chrome are you using?
Are you running the log example on the main branch? If so, could you also try the latest tagged version (https://github.com/omjadas/hudsucker/tree/v0.21.0)?

@omjadas thanks so much for the quick response.
I'm running the log example from the stable v0.21.0 (from crate)
Windows: 11
Chrome: Version 122.0.6261.112 (Official Build) (64-bit)
Config.toml
[package]
name = "huduse"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
hudsucker = { version = "0.21.0", features = ["default"] }
rcgen = "0.12.1"
reqwest = "0.11.10"
rustls-pemfile = "2.0.0"
tokio = { version = "1.24.2", features = ["full"] }
tracing = { version = "0.1.40", features = ["log"] }
tracing-subscriber = "0.3.8"

main.rs
use hudsucker::{
    async_trait::async_trait,
    certificate_authority::RcgenAuthority,
    hyper::{Body, Request, Response},
    *,
};
use rustls_pemfile as pemfile;
use std::net::SocketAddr;
use tracing::*;

async fn shutdown_signal() {
    tokio::signal::ctrl_c()
        .await
        .expect("Failed to install CTRL+C signal handler");
}

#[derive(Clone)]
struct LogHandler;

#[async_trait]
impl HttpHandler for LogHandler {
    async fn handle_request(
        &mut self,
        _ctx: &HttpContext,
        req: Request<Body>,
    ) -> RequestOrResponse {
        println!(" {:?}", req);
        req.into()
    }

    async fn handle_response(&mut self, _ctx: &HttpContext, res: Response<Body>) -> Response<Body> {
        println!("RES::: {:?}", res);
        res
    }
}

#[tokio::main]
async fn main() {

    tracing_subscriber::fmt::init();

    let mut private_key_bytes: &[u8] = include_bytes!("ca/rpai.key");
    let mut ca_cert_bytes: &[u8] = include_bytes!("ca/rpai.pem");
    let private_key = rustls::PrivateKey(
        pemfile::pkcs8_private_keys(&mut private_key_bytes)
            .next()
            .unwrap()
            .expect("Failed to parse private key")
            .secret_pkcs8_der()
            .to_vec(),
    );
    let ca_cert = rustls::Certificate(
        pemfile::certs(&mut ca_cert_bytes)
            .next()
            .unwrap()
            .expect("Failed to parse CA certificate")
            .to_vec(),
    );

    let ca = RcgenAuthority::new(private_key, ca_cert, 1_000)
        .expect("Failed to create Certificate Authority");
    let proxy = Proxy::builder()
        .with_addr(SocketAddr::from(([127, 0, 0, 1], 6070)))
        .with_rustls_client()
        .with_ca(ca)
        .with_http_handler(LogHandler)
        .build();

    if let Err(e) = proxy.start(shutdown_signal()).await {
        error!("{}", e);
    }
}

What site are you navigating to in Chrome that causes the error?

I tried different websites. Few of them are:

https://www.wikipedia.org/
https://crates.io/

Also, I tried proxy url itself

I'm using this Proxy Extension on chrome browser

I am having trouble reproducing the issue. Using the Cargo.toml and main.rs files you provided with the same Chrome extension on Windows, everything seems to be working for me. Could you let me know what version of Rust you are using to build your project? Would you also be able to try the same thing with Firefox? And just to confirm, you are using those exact same Cargo.toml and main.rs files yourself?

Rust Version : rustup 1.26.0 (5af9b9484 2023-04-05)
Yes, using the same files. It worked in Firefox. Not sure, what's with Chrome. Let me try again. Thanks for the help.
Aside:
I was trying to intercept a particular URL and write the response to file and post the same response to some other API. Can we do this ?

Would you be able to share a list of all the other Chrome extensions you have installed? Also, have you enabled/disabled any Chrome flags?
In regards to your query, that should definitely be possible.

In regards to your query, that should definitely be possible.
Great! I will try to do it.

Would you be able to share a list of all the other Chrome extensions you have installed? Also, have you enabled/disabled any Chrome flags?

I tried to open the chrome browser wit Proxy server argument, may be this is the issue.
"C:\Program Files\Google\Chrome\Application\chrome.exe" --profile-directory="Profile1" --proxy-server="<IP_ADDRESS>:6070"

Thanks for the help

Just to confirm, are you saying that it worked when using the --proxy-server argument?

With --proxy-server  argument, the traffic is not intercepted, I might be doing something wrong. If I use extension with latest Rust version, proxy chrome extension and with latest stable hudsucker crate, it's working.

When you specify --proxy-server, do you also have the extension enabled? If so, they may be conflicting with each other.
When I use the --proxy-server argument myself, I can see traffic coming through.

Yes, that's the root cause. I tried to use only Proxy chrome extension. It worked. Thanks for the help


Fix UpdateLinkedValue which returns an error when has graph sheet

PR Details

If you create a graph sheet by the following procedure,
UpdateLinkedValue fails and no other sheets are recalculated.
(sorry for the Japanese page)
https://www.officepro.jp/excelgraph/init/index2.html#section1

Description
Create a custom error ChartSheetError and
In UpdateLinkedValue, if ChartSheetError is returned from workSheetReader, it will not return.
Related Issue
Motivation and Context
How Has This Been Tested
Types of changes

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

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@xuri Thank you comments. I fixed it!

LGTM, thank you @yuki2006.


[Bug] Problem with -api-bind-addr & -api-host

Hi,
it seems to be that there is a Problem with the parameters -api-bind-addr & -api-host.

[root@xxxxxxxx108 vhosts.d]# sudo -u mailhog /opt/mailhog/bin/mailhog-amd64 -api-bind-addr <IP_ADDRESS>:3001 -api-host http://<IP_ADDRESS>:3001/ -hostname xxxxxxxx108.domain.local
2017/09/12 12:25:46 Using in-memory storage
2017/09/12 12:25:46 [SMTP] Binding to address: <IP_ADDRESS>:1025
[HTTP] Binding to address: <IP_ADDRESS>:3001
[HTTP] Binding to address: <IP_ADDRESS>:8025 <------ huh?
Creating API v1 with WebPath:
2017/09/12 12:25:46 Serving under http://<IP_ADDRESS>:8025/ <------ huh?
Creating API v2 with WebPath:

[root@xxxxxxxx108 vhosts.d]# sudo -u mailhog /opt/mailhog/bin/mailhog-amd64 -api-bind-addr :3001
2017/09/12 12:23:24 Using in-memory storage
[HTTP] Binding to address: <IP_ADDRESS>:8025 <------ same here
[HTTP] Binding to address: :3001
2017/09/12 12:23:24 [SMTP] Binding to address: <IP_ADDRESS>:1025
Creating API v1 with WebPath:
2017/09/12 12:23:24 Serving under http://<IP_ADDRESS>:8025/
Creating API v2 with WebPath:

netstat says:

tcp        0      0 <IP_ADDRESS>:3001          <IP_ADDRESS>:*               LISTEN      31109/mailhog-amd64
tcp6       0      0 :::8025                 :::*                    LISTEN      31109/mailhog-amd64
tcp6       0      0 :::1025                 :::*                    LISTEN      31109/mailhog-amd64

Best Regards
Matthias

I've found the Problem... Didn't noticed that there is also a '-ui-bind-addr'...
Never mind... :)


watch option not in read.me file

Could you add in the read.me file that the watch option exists ?

Added. Thank you for reporting!


in name of custom workbenches, update from "insurance claim" to "parasol insurance"

actual images in quay can stay the same, but display name could be better. also screenshots will need to follow.

Fixed in #175


chore: update dependencies

This updates pretty much all of the dependencies to the latest versions. Some packages are not upgraded:

cucumber looks like the work might be more involved
latest husky requires a more recent Git version than Ubuntu Trusty used on Travis CI currently

Additional changes were made to accomodate for the ESLint and isbinaryfile upgrades. test/e2e/tag.feature was changed to reduce some flakiness in the E2E test.

This PR is pretty outdated with the based branch, also many changes from it has already landed. Please open new smaller PRs if you think something has been missed.


DSEGOG-100 tooltip warning message over search button if record count > limit

Description
This adds a warning message in the form of a tooltip over both the Search button and the filter dialogue Apply button if we detect the new search will return more records than the limit set in the settings file.
This is done through:

creating a new recordLimitWarning setting in operationsgateway-settings.json to define the maximum number of records before this warning is displayed (set to -1 for unlimited)
using an incomingRecordCount query to get the count of records in the new search before actually fetching those records
if the count is greater than the limit set, a tooltip is displayed over the Search or Apply button (whichever is handling the search at that moment)
the search is then only "confirmed" and initiated when the user clicks the button for a second time

There's had to be a significant rework to get this all to occur. I've not yet found a way to transfer the incoming record count into the actual record count itself, meaning two requests for the count occur for each declared search. This isn't ideal.
I've also exposed a problem where there are two methods of searching (through the search components and the filter dialogue) but each only takes into account its own localised parameter changes. What this means is, if I change the shot number range in search, then add a filter and hit Apply, only the new filter parameters have been applied to the search while the shot number range is present in the shot number search component. So we'll need to find a solution to this down the line.
I would have liked to have found a way to not display the tooltip if it had already been displayed for a particular set of search parameters but was unable to find a reliable way of doing this.
Currently, the recordLimitWarning setting is mandatory and given a positive integer for an actual limit setting and -1 to denote unlimited but I can change this to make the setting optional instead.
I attempted some e2e tests for the tooltips displaying and the count request being made but I think the two count requests occurring has got in the way of this and I couldn't get very far with it. Fortunately, unit tests cover tooltip tests quite nicely.
So overall, this could use some improvement.
Testing instructions
Tests should hopefully pass, it's just whether or not we want this specific implementation.

[ ] Review code
[ ] Check Actions build
[ ] Review changes to test coverage
[ ] {more steps here}

Agile board tracking
Closes DSEGOG-100

The search e2e tests need the recordLimitWarning to be set to -1 (hence the stubbed settings response) and an additional wait for an extra count request being made (I'm not sure if this is the incomingRecordCount query or a bug). But for some reason, the filtering e2e tests need none of this to pass, despite using the same functionality. This needs to be investigated

@sam-glendenning could perhaps using initialData and the query cache work for getting the count (see https://react-query-v3.tanstack.com/guides/initial-query-data#initial-data-from-cache)? If this doesn't work, then if we know that incomingRecordCount will already be calculated before any use of recordCount, perhaps we remove the recordCount query, and instead just populate recordCount from the query cache

Also, good spot on the search vs filters issue. I don't think it's unreasonable behaviour to enforce that users need to click Search/Apply in order for their changes to be reflected so I'm not sure whether it is a "bug" as such that needs fixing.

@sam-glendenning could perhaps using initialData and the query cache work for getting the count (see https://react-query-v3.tanstack.com/guides/initial-query-data#initial-data-from-cache)? If this doesn't work, then if we know that incomingRecordCount will already be calculated before any use of recordCount, perhaps we remove the recordCount query, and instead just populate recordCount from the query cache

Ah good, this was the sort of thing I was looking for. I'll have a go at this

Sorry, I'd forgotten I'd committed to doing something more here. I'll mark it as draft until I need further review

@louise-davies I've implemented your solution to reuse the cached data from useIncomingRecordCount in useRecordCount and it works well, nice fix!
I'd recommend giving this another review but this time in the context of how it runs in the browser. The most glaring problem at the moment is that the tooltip warning displays on searches we've already done (this can also mean that the user can perfrm a large search, get the results, then hit search over and over without changing any search parameters and the tooltip will display over and over).
Is there any way we can tell if a cached result is being used and therefore not show the tooltip if this happens? I am aware of an isPreviousData boolean returned from useQuery but I don't think this quite lines up with what I'm after because that only seems to compare the last query we ran, not all of them (and even then I couldn't seem to get it working quite right)

@sam-glendenning I believe I have a solution to this using queryClient.getQueriesData to check if the records query has data for the given filters/search params combo the user is attempting to search. See gif below to see if you're happy with the new behaviour:

That looks like what I'm after! Would you be able to commit that? I can write the tests, fix merge conflicts etc.

@sam-glendenning committed :)

@louise-davies I've got this ready for another review. The main functionality I was trying to test was:

initiate a search from date X and check it displays tooltip first
initiate a search from date Y and check it displays tooltip first
initiate a search from date X and check no tooltip displays, instead launching the search straight away (since the user has already seen the tooltip for this search)

Attempts to test this functionality in RTL failed (I was trying to setQueryData on a test query client but it didn't seem to pick up on any existing query data during the test). However, I did manage to test this in an e2e test so I would say this is adequate. If you want to unit test this, you can check what I committed in https://github.com/ral-facilities/operationsgateway/pull/149/commits/4d3fc61e3e67ee6dab5f1e5bbefb579fc33541bf which I have since reverted since it's no longer relevant.


Unix socket support

Hello,
As it not very straight-forward from the demo code and having played around quite a bit, would it be possible for you to include a Unix socket demo?

Yes, can we have a working demo to play with Unix socket ? Thanks.

I added a set of instructions for using the Unix domain socket in the constructor.


Further modularization && Possibilities to customize

Sipa in its current state is shaped for our more or less special purposes. Other people should be able to:

Use different mechanisms like another method to authenticate users for logging in or a different traffic accounting system
turn certain features on/off – Not everyone can make use of a traffic display or the busstops, or even the whole usersuite and loginsystem.

Although I am not completely sure how this will look like, a lot more things should be moved to the config.py – the simplest example would be something like the title of the page.
The reason for this proposal is that modifications other people have to make in order to just use sipa should not change the code and therefore should happen in an area not tracked by git.
Things like a login provider could be abstracted into interface-like classes (for the lack of a better word) which should then be inherited by a class providing the functionality required for our infrastructure.
This can be made customizable easily by exporting the actually used class to a variable which can be changed in the config.py, i.e. telling sipa which class to actually use.
Rough example:
class UserProvider(object):
    """Some description what this does"""
    def validate_login(self, username, password):
        raise NotImplementedError(
            "Class {} should have implemented validate_login()!".format(
                self.__class__.__name__))

class UserProviderWu(UserProvider):
    # perhaps some properties / constants, if not already in `config.py`
    def validate_login(self, username, password):
        # function handling login
        pass

# `config.py`:
Provider = UserProvider
# `config.local.py`:
Provider = UserProviderWu

I hope I made my point clear, although the example might make no sense at all considering what it would actually do.
Tell me if I misunderstood some concepts as I never actively programmed in an object-oriented fashion.

On the other hand, perhaps an object-oriented approach is not the right way at all, since most methods would be static… so what we are actually looking for is some sort of function-grouping thing which makes it easy to exchange/override them. But classes are the easiest thing to “pack into a variable” I can imagine…
Needs some discussion for sure.

For methods themselves, one could consider the following:

Importing functions only from the packages (e.g. sipa.utils).
splitting the packages' modules into individual parts regarding each section, e.g. database_utils_hss.py / database_utils.py
importing the functions in __init__.py from database_utils.py

This makes it quite easy to switch between the modules, as on only has to change database_utils.py to database_utils_hss.py
…Just an idea I thought was worth remembering, so I added it as a comment.

Update: see branch model. Part of utils has been moved to /model. Then, some modularization was required to remove the danger of cycling imports. This lead to a major improvement in the project structure.


wg-bento Status Update 2020-05-26

What was accomplished

IntersectionObserver polyfill goes live this week. But it can't be yet relied on 100% until inabox launch happens.
amp-selector and amp-fit-text are in.
fixed long-standing layout bugs for text content and unupgraded elements.
layout=responsive support in Bento
amp-social-share: working on a better boundary between the component and AMP.
Work started on the context propagation design
Aspect-ratio CSS: functional in the Chrome Dev. Looking for cross-browser solutions.

Lessons learned

At least in case of amp-fit-text, there are significant improvements to the Web Component with the new model both in terms of functionality and UX. So there are many improvement opportunities over the current state.

What's next

amp-carousel
Additional code-style improvements are on the way, such as unquoted props support.
Storybook addon for AMP is being released as a separate package.

@dvoytenko I would like to use the Bento AMP capabilities in a proof of concept, but for me it is not clear which components can now be used out of “valid AMP” context (for example nested in other web components, and outside of Preact as shown in the sample code), and if I need a “special” version of the components. Where could I find this information? Is Bento AMP already in a production ready state?

I would like to use the Bento AMP capabilities in a proof of concept, but for me it is not clear which components can now be used out of “valid AMP” context...

I don't believe we have a list of the components currently being ported to Bento. https://github.com/ampproject/amphtml/pulls?q=is%3Apr+bento+is%3Aclosed is the best approximation for the moment.
We're currently focusing on the "amp mode" for these new Bento components. Meaning, they only work properly in valid AMP pages. The second step, after we get more components ported, will be to enable them to work on non-valid AMP pages.

and if I need a “special” version of the components.

Currently all Bento components are special versions. They require you to opt into an AMP experiment, and use a different major version than the regular amp element. https://github.com/ampproject/amphtml/pull/28337/files

Is Bento AMP already in a production ready state?

Not currently. We're working hard to get more components ported over, and we'll be releasing them as stable amp-element versions soon.


NA strings count as empty column names when determining empty columns

My bad :)  I'll update the test sheets after the long weekend to make sure we correctly drop columns as well if you want to hold off merging until then.

It's not a long weekend here :(

Would you mind merging/rebasing too please?

Sure :)

Perfect - thanks! I'm going to submit to CRAN v. shortly


not compatible with new Controller 7

The new (fully working) Unifi Controller 7 installation get the following error messages in the IoBroker-log:
host.XXX | 2022-03-06 15:37:12.548 | info | instance system.adapter.unifi.0 started with pid 1704455
-- | -- | -- | --
host.XXX| 2022-03-06 15:36:42.494 | info | Restart adapter system.adapter.unifi.0 because enabled
host.XXX| 2022-03-06 15:36:42.494 | error | instance system.adapter.unifi.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
host.XXX| 2022-03-06 15:36:42.494 | error | Caught by controller[0]: at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
host.XXX| 2022-03-06 15:36:42.493 | error | Caught by controller[0]: Error: connect EHOSTUNREACH <IP_ADDRESS>:8443
host.XXX| 2022-03-06 15:36:42.493 | error | Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
unifi.0 | 2022-03-06 15:36:41.833 | warn | Terminated (UNCAUGHT_EXCEPTION): Without reason
unifi.0 | 2022-03-06 15:36:41.306 | error | Exception-Code: EHOSTUNREACH: connect EHOSTUNREACH <IP_ADDRESS>:8443
unifi.0 | 2022-03-06 15:36:41.306 | error | Error: connect EHOSTUNREACH <IP_ADDRESS>:8443 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
unifi.0 | 2022-03-06 15:36:41.306 | error | unhandled promise rejection: connect EHOSTUNREACH <IP_ADDRESS>:8443
unifi.0 | 2022-03-06 15:36:41.305 | error | Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().

Versions:

Adapter version: 0.5.10
JS-Controller version: 3.3.21
Node version: 12.22.8
Operating system: Ubuntu

Now it suddenly works. Don't know what i did wrong.


Check existance of indexOf on data

This should do the trick.  However I had trouble testing it, because I couldn't figure out a way to make phantom child process emit to stdout.  If you want me to keep trying to figure out how to test it, I'm happy to keep grinding on it.

simplify & lgtm.


HHH-12662 - JPQL queries fail when using the Java attribute type which has an associated @Converter (only the DB column type works)

https://hibernate.atlassian.net/browse/HHH-12662

@sebersole I changed the PR so that now we don't auto-register anything but we allow the user o supply the type. The change is minimal and the user can supply the type explicitly like this:
SessionFactory sessionFactory = entityManager.getEntityManagerFactory().unwrap( SessionFactory.class );
MetamodelImplementor metamodelImplementor = (MetamodelImplementor) sessionFactory.getMetamodel();
Type captionType = metamodelImplementor.entityPersister( Photo.class.getName() ).getPropertyType( "caption" );

Photo photo = (Photo) entityManager.createQuery(
	"select p " +
	"from Photo p " +
	"where upper(caption) = upper(:caption) ", Photo.class )
.unwrap( Query.class )
.setParameter( "caption", new Caption("Nicolae Grigorescu"), captionType)
.getSingleResult();

What you describe is basically exactly what 6.0 does - it defines "types"
in terms of "any part of the domain model" whether that be a class
(Caption), an attribute (Photo#caption), etc.
It's where the cast( :param as p.caption) comes from too
On Fri, Jun 8, 2018 at 9:38 AM Vlad Mihalcea<EMAIL_ADDRESS>wrote:

@sebersole https://github.com/sebersole I changed the PR so that now we
don't auto-register anything but we allow the user o supply the type. The
change is minimal and the user can supply the type explicitly like this:
SessionFactory sessionFactory = entityManager.getEntityManagerFactory().unwrap( SessionFactory.class );
MetamodelImplementor metamodelImplementor = (MetamodelImplementor) sessionFactory.getMetamodel();
Type captionType = metamodelImplementor.entityPersister( Photo.class.getName() ).getPropertyType( "caption" );
Photo photo = (Photo) entityManager.createQuery(
"select p " +
"from Photo p " +
"where upper(caption) = upper(:caption) ", Photo.class )
.unwrap( Query.class )
.setParameter( "caption", new Caption("Nicolae Grigorescu"), captionType)
.getSingleResult();
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/hibernate/hibernate-orm/pull/2336#issuecomment-395781362,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOUE2wwmvkBZ_iIRLuV9_d7kacJ-C9zks5t6oxwgaJpZM4UgY4R
.

Then it will be a good transition to 6.0. I think the current way of resolving the right converter Type is a little bit verbose and doing it with just one cast in 6.0 is much better.


Util.ts - PageLocation prototypes

We currently used @ts-ignore to ignore typescript issue with the prototypes of PageLocation along with their respective read/write functions.
To Do:

[ ] Stop mutating the prototype of PageLocation

[x] utils.ts
[ ] reader.ts (Pending #44)

Closed by #50


State of the project

We are closing out the work for the targeted JPype 0.8 release.   Still a lot of lose ends in terms of bugs, coverage, and hardening, but I believe we are at the point where a feature freeze is warranted.
There are some questions for the release:

What should this be called?  One user wants us to adopt this as an actual major number making this 1.0.
How do we get enough users to test this to make a solid and stable release point?
What is not here that is required for a release?
Does the dbapi2 interface go in this release or wait for more testing and user input?

This project is actually approaching a production level code so making it a major release with 1.0 makes sense.  I have some reservations as we still have some regrettable public interfaces that have yet to be removed.  I would like the 1.0 to be a clean point where everything in the API has been reviewed and deemed necessary (or broken and thus removed).   We are not yet at that point as there are many external symbols that are legacy which may change from nuisance (ignorable) to in the way (must remove) once I work on the reverse bridge.
Unless something is flat out broken we often don't get reports of problems with a release until months after.  But this is supposed to be a good point to last us for at least a year while I work under the hood to provide some new capabilities.  We need people to help out to make really kick the tires on this one so that we don't end up with 4 months of fixing issue and patch releases as I am gutting the places needed for the reverse bridge.   Github doesn't have a spam the users of a project (likely a good thing), but it does leave us in this type of situation.  If we do have a poor quality release and I have already started the next development cycle, then the whole repo is going to end up forked with a release branch and devel branch.   We tried that with 0.7 but I could only hold it for  months before I had to start pushing thing from devel back to release so that I wasn't constantly needing to task switch (damn didn't I fix this already, wait this assumption is different, no not this one again!)
I have laid out the road map of missing features that we are going for likely requiring 2 major versions of upgrades.

Deprecate and remove the remaining dangerous or confusing interfaces.  Move all remaining external behaviors to the necessary factory classes (JClass and JArray) and the rest will be customizers for Java classes.  Push those that are utility like to operators like @ and [] so that we look more Java like.
Implement Python extensions of Java classes.
Implement a reverse bridge allowing Java to call Python.
Implement a slave JVM mode allowing a second JVM to be controlled using rmi or similar.
Deal with the memory issues that these features will cause.

It is still a pretty long road but the end is visible on the horizon and I have a good idea how to finish all of these tasks.  It is simply a matter of coding time.
If anyone has a strong opinion on these topics please weigh in.  Otherwise we autopilot to the next point.

I'm not as involved as I was a couple of years ago. So this is just my two cents.
From both a user and a maintainer perspective I don't like long lived feature branches or some other sort of complex branching models.
I like to have fast adoption of features and bug fixes in the master branch and very frequent releases. This goes well together with the semantic versioning approach.
The downside of this is that you either have to keep your api backwards compatible for a longer time or you release major versions frequently and annoy some users as they have to migrate more often.
But I also think that you circumvent some of the challenges you outlined. you'll get more frequent feedback from the user base and it is easier to trace back where an issue has been introduced.
If this project would be driven by me I would release a 1.0.0 as soon as possible. Then I would try to keep backwards compatibility as long as it's no real pain. Always depreciating things so the user base can prepare for upcoming changes easily.
Every new feature should ideally become a new minor version. Every bug fix a new patch level.
BTW: Back in the days I introduced bumpversion (now superseded by the bump2version package) in JPype. There should still be a .bumpversion file in the project... This makes releasing a snap.

Thanks very much for adding in bumpversion and for giving your input.   After you left unfortunately bumpversion broke, and I just recently resurrected it as we were having many version issues such as unable to track files or missing steps in the release process which having a release procedure including bumpversion helped soleve.   All is up and running now so we should be good to go starting with next release.  (fingers crossed)
As for the releases cycle I am fine with frequent releases, but all the remaining tasks are each require   about 3 months of internal rework apiece.  They are also interdependent in nasty ways.   If I already have reverse bridge then implementing a Python class in Java is easy as I can pass Python types to Java directly and just need an annotation processor to build the stub interface for JClass to read and build the customized class (as opposed to the current unscalable solution of stuffing the JPype module with all the customizers we come up with.).   If it is missing the reverse bridge then I will end up with a very different implementation and likely two apis or have to tear apart the old to make a new.  This is sort of why I have 135k lines added and 95k lines removed on 50k line project as building something from scratch can be less work than slowly reorging.   Also this type of tying means there is not intermediate state of the code.  The major features are likely to break interfaces, as large features require changing implementations which although we don't explicitly change the API (all tested calls are the same), we often have implementation details that change (was returning a list, now returning a tuple, we documented that it would return a sequence).

@marscher and @originell Do you have any input on the release?

I echo the call for frequent major releases.
In iiasa/ixmp#279 and the linked issues, we found that:

Things in our code that worked in with JPype1 v0.7.1 broke in v0.7.2.
Different things broke in v0.7.3, but remained the same for v0.7.4.
Some things fixed themselves, while others broke in v0.7.5.

Suppose instead the sequence was:

0.7.1
1.0.0 (instead of 0.7.2)
2.0.0 (instead of 0.7.3)
2.1.0 (instead of 0.7.4)
3.0.0 (instead of 0.7.5)

This would have had the effect of signaling to us (the "semantic" in semantic versioning) that we should be alert for possible API breakage from 1.0 to 2.0, but not from 2.0 to 2.1. Instead, we had to decipher this in a more indirect and thus time-consuming way.
I do understand and sympathize with the feeling that the jump from "0.x" to "1.0" is somehow significant, but—as a maintainer of several packages—I've found that when I discard that notion and apply the semver rules literally, things get much simpler and easier.
P.S. I recognize that the notion of what is "compatible" vs. "incompatible" in terms of API changes is fuzzy; changes that might break one project (like ours) might not affect another. So it could help to write in the docs a clear list of what kind of changes will trigger major increments, and what other kinds might be rolled out with only a minor increment.
P.P.S. In case it's not clear, major feature additions can happen in a minor release, as long as there are no changes to existing API. For instance, 1.0 could be followed by 1.1 with the planned DBAPI, and 1.2 and so on; 2.0 would only be necessary if something already in 1.0 is changed.

Well starting with the next version we actually have test coverage that is sufficient for detecting API breakage so we could go to semantic versioning.  Up to this point I have just been guessing what has changed and nothing on the public API was supposed to have been removed at all for the entire 0.7 series.  (We will just call it a miss on that front)  It was also unfortunate that 0.7.4 had a source distribution that did not match the actual release.  0.7.4 and 0.7.5 are supposed to be identical.
So I will tally you as a vote for next version being 1.0.0 even through it still contains a number of deprecated methods on the exposed API.

@marscher The wheels of bureaucracy finally decided that they would like to review JPype and get credit for producing free software.  Unfortunately that means I have to put the next release through my review process to get a release number which will take 2 weeks plus the time to get all the notice statements and copyrights in order and be prepared to verify that no code was included which was not permitted by licensing (ie someone copying code that was proprietary).   I have already cleared the profanity checks and export control the last time, but that has expired so I will need to resubmit.  It would be most helpful if I have the release code in a final state for the review.   Have you decided if this should be the 0.8 or the 1.0 release?

I am still waiting on the document review forms.  Hopefully this week.

If I wanted to take the putative 1.0.0 (or 0.8.0..) out for a test, how should I do that? I don't see an obviously named branch. Is it master I should use?

The review branch is intended as the proposed release.  The internal review of the code was completed this week and the release should proceed once I have made all the required changes.

I'm probably missing something obvious...but I don't see a branch called "review" or similar?

You will need to use the checkout from PR
https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally
And take PR https://github.com/jpype-project/jpype/pull/776
Example:
$ git clone git@github.com:jpype-project/jpype.git jpype
Cloning into 'jpype'...
remote: Enumerating objects: 12887, done.
remote: Total 12887 (delta 0), reused 0 (delta 0), pack-reused 12887
Receiving objects: 100% (12887/12887), 3.60 MiB | 4.45 MiB/s, done.
Resolving deltas: 100% (9508/9508), done.
Checking out files: 100% (420/420), done.

$ cd jpype

$ git fetch origin pull/776/head:review
remote: Enumerating objects: 316, done.
remote: Counting objects: 100% (316/316), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 409 (delta 307), reused 314 (delta 307), pack-reused 93
Receiving objects: 100% (409/409), 86.64 KiB | 3.77 MiB/s, done.
Resolving deltas: 100% (330/330), completed with 252 local objects.
From github.com:jpype-project/jpype
 * [new ref]         refs/pull/776/head -> review

$ git checkout review
Checking out files: 100% (326/326), done.
Switched to branch 'review'


CUDA error when training on TuSimple

Hello,
I am trying to train the model on the TuSimple dataset with the ResNet34 backbone. I keep encountering an unknown CUDA error. I am not sure what the issue is as the program is recognizing that CUDA is available and I cannot seem to find a solution to my problem. I've tried it on the other backbones and have encountered the same issue. I am using Pytorch 1.6.0 and CUDA 10.2.
ResNet34

Here is the issue with ResNet18

I'd really appreciate the help!

Have you tried to isolate the issue by running it inside a docker container? I provided a simple one here that you could try.


Styling via variables for Tailwind

[] Replace icons SVG icons so you can style them easily.
Style elements, texts and background colors, via primary, secondary etc.

Closed because its not recommended: https://tailwindcss.com/docs/customizing-colors#naming-your-colors


Create a redux API

Hi, I have been studying Redux for a couple of days and I was telling myself this is exactly what we would need to reduce the complexity in the application. Little did I know mapbox blogged about it a year ago
Benefits from such an approach

a unique source of truth
a clear seperation between actions, reducers and selectors making the code base a whole lot easier to maintain on the long run
more than easy unit tests
no need to pass handler over to the children components, no more maze!

This could be created as a third party library, one could integrate on top of mapboxgl or openlayers. So it could be totally agnostic of mapping library and even react in a larger sense.
In orther words, we would only be maintaing the state of the map style.
To sync the map state this what mapbox  uses.
small app using mapbox redux integratrion
Now they don't deliver the styling part of mapbox studio.
What do you think @orangemug @oterral ?
Redux

Hey @loicgasser this has been raised before, in issue #272. Have a read and let us know your thoughts.

Closing this issue as duplicate

:+1:


Add internal OpenGL loader

Instead of an external dependency, I figured I'd write my own OpenGL loader.
I wrote it a few weeks ago and it's not beautiful, but it has worked fine for me, although it doesn't have Linux or Mac support (..nor does this crate, right..? 😄 )

Thank you for your PR! Glad to have this. In general, the fewer external dependencies, the better it is for this project I feel.
It looks good to me, pinging @Jakobzs for a review as they've worked on most of OpenGL3 related stuff and may have some suggestions!
To answer your doubt, yeah, we're only supporting Windows as a use case. It's a bit unfortunate but this is very hard to make cross platform -- and it's already skirting on shaky assumptions of behavior which is officially unsupported. 😅

Thank you for your PR! Glad to have this. In general, the fewer external dependencies, the better it is for this project I feel.

Good to hear, I'm really enjoying working on these things as I feel like they are at a good level of difficulty & complexity for me to develop.

It looks good to me, pinging @Jakobzs for a review as they've worked on most of OpenGL3 related stuff and may have some suggestions!

Superb!

To answer your doubt, yeah, we're only supporting Windows as a use case. It's a bit unfortunate but this is very hard to make cross platform -- and it's already skirting on shaky assumptions of behavior which is officially unsupported. 😅

Thought so. I'm not a big fan of other OSs but Linux isn't out of the question for me in the future as a user..

It's a first for me, too -- it's my first project gathering any attention to it at all, and requiring some maintenance!

Well deserved too! It's been an essential crate for me so far & I'm learning a lot from it.

I heard Windows emulation support on Linux is pretty good nowadays -- strides were made in cross platform support with Proton considering that the Steam Deck runs Linux itself, so that might not be a huge problem for that use case at least. For Linux-native games, that won't cut it though.

Oh yeah, forgot about the whole Steam Deck thingy. Haven't had a chance to lay my hands on one yet but seems really cool.
I really like the idea of Linux but I'm not quite ready to give it a shot yet. I feel slightly disgusted whenever I try a Mac.. although Linux would very likely be an easier transition.

@Godnoken

Thought so. I'm not a big fan of other OSs but Linux isn't out of the question for me in the future as a user..

To be fair, I tried hudhook running on Linux and it works quite well! it can also run in your favorite handheld, which, coincidentally, runs on linux :P

To be fair, I tried hudhook running on Linux (under wine) and it works quite well! it can also run in your favorite handheld, which, coincidentally, runs on linux :P
Image related to Hudhook running on Linux

That's awesome! I'll have to get my hands on one of those when money allows 😄
I wonder if my app would work there.. probably too hard to use on a handheld though.

Thanks for the addition here Godnoken, and as per TODO, yes it is definitely warranted 😄. The gl_loader repository is still at Rust 2018 and the last commit was 4 years ago so... yeah.
One thing that perhaps could be considered is to follow more the style of Glad and have it as a two-step process:

Opening OpenGL, storing the libGL (module) and grabbing wglGetProcAddress
Getting OpenGL functions

Overall I believe this may still be possible to have as one function, but use an initializer like OnceCell, perhaps just for storing the module and nothing else, as to not call LoadLibraryW each time. Of course also, this implementation here as discussed above is Windows only... but so is the rest of hudhook (for now) 😛
I have made a few comments in the code as well, just for curiosity mostly.

Overall I believe this may still be possible to have as one function, but use an initializer like OnceCell, perhaps just for storing the module and nothing else, as to not call LoadLibraryW each time. Of course also, this implementation here as discussed above is Windows only... but so is the rest of hudhook (for now) 😛

I fixed the repeated loading of Opengl32.dll as suggested with OnceCell.
Not sure exactly what you meant with wglGetProcAddress as I believe it is necessary to try that first & then go over to GetProcAddress. I can't remember why though... Possibly had something to do with 32-bit vs 64-bit?

I have made a few comments in the code as well, just for curiosity mostly.

Where? 😄

Cheers for the input!

Looks like I forgot to submit the comments...
I'll admit I'm not too knowledgeable on this haha. But it does look like it stores the address pointer to wglGetProcAddress here, although I assume the import you're doing is practically the same thing.
I will just quickly remake some of the comments I had, but have removed those about the "Glad" approach as I think it's very solid now. I just have one comment about the casting though, will remake it.

I'll admit I'm not too knowledgeable on this haha. But it does look like it stores the address pointer to wglGetProcAddress here, although I assume the import you're doing is practically the same thing.

Oh, interesting. I'll do some quick research and see if it is necessary for an optimized version. Thank you!

I'll admit I'm not too knowledgeable on this haha. But it does look like it stores the address pointer to wglGetProcAddress here, although I assume the import you're doing is practically the same thing.

Oh, interesting. I'll do some quick research and see if it is necessary for an optimized version. Thank you!

Honestly we're down to micro-optimizations now though. In its current state, it LGTM 👍

Any reason for LoadLibraryW over LoadLibraryA btw? I am not sure if some systems are forced to run with LoadLibraryW or so, but opengl32.dll is ANSI compliant per se, so yea.

Any reason for LoadLibraryW over LoadLibraryA btw? I am not sure if some systems are forced to run with LoadLibraryW or so, but opengl32.dll is ANSI compliant per se, so yea.

Nope, I had not fully understood the difference back then so that's why. I'll swap it now.

Honestly we're down to micro-optimizations now though. In its current state, it LGTM 👍

Yeah.. don't think there's any optimization to do there after looking at it.
By the way - wglGetProcAddress is supposed to work fine on Windows PCs on its own (haven't tried now) and GetProcAddress should work universally - but doesn't on my end. Hence why it was written that way. I guess we're halfway to Mac & Linux support on this one 😄

Any reason for LoadLibraryW over LoadLibraryA btw? I am not sure if some systems are forced to run with LoadLibraryW or so, but opengl32.dll is ANSI compliant per se, so yea.

I think we should always prefer LoadLibraryW over the ANSI compliant if we're not using relative paths. As soon as an user has a non english character, it would crash.

Honestly we're down to micro-optimizations now though. In its current state, it LGTM 👍

Yeah.. don't think there's any optimization to do there after looking at it.
By the way - wglGetProcAddress is supposed to work fine on Windows PCs on its own (haven't tried now) and GetProcAddress should work universally - but doesn't on my end. Hence why it was written that way. I guess we're halfway to Mac & Linux support on this one 😄

Yeah I think you’re right about that.

I think we should always prefer LoadLibraryW over the ANSI compliant if we're not using relative paths. As soon as an user has a non english character, it would crash.

Wouldn't be an issue here though, would it? As "opengl32.dll" is hardcoded - I assume the DLL isn't named anything else in other areas.

Honestly we're down to micro-optimizations now though. In its current state, it LGTM 👍

Yeah.. don't think there's any optimization to do there after looking at it.
By the way - wglGetProcAddress is supposed to work fine on Windows PCs on its own (haven't tried now) and GetProcAddress should work universally - but doesn't on my end. Hence why it was written that way. I guess we're halfway to Mac & Linux support on this one 😄

Definitely looks like it’s possible to move it towards Linux and Mac in the future yep 😄

I think we should always prefer LoadLibraryW over the ANSI compliant if we're not using relative paths. As soon as an user has a non english character, it would crash.

Wouldn't be an issue here though, would it? As "opengl32.dll" is hardcoded - I assume the DLL isn't named anything else in other areas.

Fairly sure about this too. I don’t believe it will ever refer to a relative path.

To be fair, I tried hudhook running on Linux (under wine) and it works quite well! it can also run in your favorite handheld, which, coincidentally, runs on linux :P
Image related to Hudhook running on Linux

I love it!

Now, natively is another issue, but I don't see value in that since at that point you're better integrating imgui-rs itself, considering most projects on linux are open source.
The one thing I couldn't manage to do is to compile it inside the Linux box (using the target x86_64-pc-windows-gnu). From a very brief exploration it seemed to be related to OnceCell, but I didn't dig up too much, too many layers of abstractions.
Anyway, sorry for the offtopic, just thought it would be worth posting.

No problem! OnceCell is still experimental in Nightly so it's unsurprising that it's a bit wobbly. If we ever find the need to make cross compilation work, we can consider using the once_cell crate which iirc the std implementation is based off of, but still works under stable.


Modify the Legend

I think there could be a little more explanation in the legend. Like "A commit in the local repository but not the remote repository".
Should "A commit tracked locally and remotely" be "A commit in the local repository and the remote repository" to keep phrasing consistent?
Also, is saying "a commit not tracked locally" the same as saying that it's not represented in the working directory? Can we make that more explicit?
What exactly is a "normal" branch head?

Phrasing could be more consistent.
A 'commit not tracked locally' is not represented in the working directory, however, this is also true of every commit except HEAD. These remote commits are in fact stored in .git/objects/** even though they are part of remote branches, so saying they're not represented in the local repository isn't quite right either, it's really that nothing in .git/heads has a way of getting to them from by following parent pointers. Ideas on more specific language for this?
And "normal" is just bad, maybe a 'locally tracked branch head'?


Infinite loop in VerifyConnectionError

We use h2spec in our automated tests for ASP.NET Core's Kestrel HTTP/2 server. The client occasionally gets stuck in an infinite loop in VerifyConnectionError. The timeout setting does not work in this scenario, we have to apply our own that kills the client process after 30 seconds.
Here's a log that shows the client and server behavior. The test behaves as expected and the server closes the connection. The client then gets an error and loops endlessly.
2019-02-09T02:34:39.8786527Z   [xUnit.net 00:00:42.57]     RunIndividualTestCase(testCase: http2/4.3/3, HTTPS:False, Sends a HEADERS frame to another stream while sending the header blocks) [FAIL]
2019-02-09T02:35:14.2263772Z   Failed   RunIndividualTestCase(testCase: http2/4.3/3, HTTPS:False, Sends a HEADERS frame to another stream while sending the header blocks)
2019-02-09T02:35:14.2265139Z   Error Message:
2019-02-09T02:35:14.2266481Z    System.TimeoutException : h2spec didn't exit within 30 seconds.
2019-02-09T02:35:14.2266877Z   Stack Trace:
2019-02-09T02:35:14.2267479Z      at Interop.FunctionalTests.H2SpecCommands.RunTest(String testId, Int32 port, Boolean https, ILogger logger) in /_/src/Servers/Kestrel/test/Interop.FunctionalTests/H2SpecCommands.cs:line 225
2019-02-09T02:35:14.2268245Z      at Interop.FunctionalTests.H2SpecTests.RunIndividualTestCase(H2SpecTestCase testCase) in /_/src/Servers/Kestrel/test/Interop.FunctionalTests/H2SpecTests.cs:line 52
2019-02-09T02:35:14.2268915Z   --- End of stack trace from previous location where exception was thrown ---
2019-02-09T02:35:14.7012619Z   Standard Output Messages:
2019-02-09T02:35:14.9978804Z    | [0.001s] TestLifetime Information: Starting test RunIndividualTestCase-http2/4.3/3, HTTPS:False, Sends a HEADERS frame to another stream while sending the header blocks at 2019-02-09T02:34:09
2019-02-09T02:35:15.0018691Z    | [0.002s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting starting
2019-02-09T02:35:15.0034466Z    | [0.003s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting started
2019-02-09T02:35:15.0065632Z    | [0.003s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Loaded hosting startup assembly Interop.FunctionalTests
2019-02-09T02:35:15.0078218Z    | [0.058s] Interop.FunctionalTests.H2SpecTests Debug: Hypertext Transfer Protocol Version 2 (HTTP/2)
2019-02-09T02:35:15.0086390Z    | [0.060s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLKE6S61NCL3" started.
2019-02-09T02:35:15.0094188Z    | [0.062s] Interop.FunctionalTests.H2SpecTests Debug:   4. HTTP Frames
2019-02-09T02:35:15.0101296Z    | [0.062s] Interop.FunctionalTests.H2SpecTests Debug:     4.3. Header Compression and Decompression
2019-02-09T02:35:15.0109784Z    | [0.062s] Interop.FunctionalTests.H2SpecTests Debug:            [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
2019-02-09T02:35:15.0117699Z    | [0.062s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" sending SETTINGS frame for stream ID 0 with length 18 and flags NONE
2019-02-09T02:35:15.0125687Z    | [0.062s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" sending WINDOW_UPDATE frame for stream ID 0 with length 4 and flags 0x0
2019-02-09T02:35:15.0138673Z    | [0.062s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" received SETTINGS frame for stream ID 0 with length 6 and flags NONE
2019-02-09T02:35:15.0153366Z    | [0.062s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] SETTINGS Frame (length:18, flags:0x00, stream_id:0)
2019-02-09T02:35:15.0164659Z    | [0.063s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" sending SETTINGS frame for stream ID 0 with length 0 and flags ACK
2019-02-09T02:35:15.0174787Z    | [0.063s] Interop.FunctionalTests.H2SpecTests Debug:            [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0)
2019-02-09T02:35:15.0185840Z    | [0.063s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" received SETTINGS frame for stream ID 0 with length 0 and flags ACK
2019-02-09T02:35:15.0194456Z    | [0.063s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:0)
2019-02-09T02:35:15.0212247Z    | [0.063s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0)
2019-02-09T02:35:15.0221798Z    | [0.063s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" received HEADERS frame for stream ID 1 with length 16 and flags NONE
2019-02-09T02:35:15.0227797Z    | [0.063s] Interop.FunctionalTests.H2SpecTests Debug:            [send] HEADERS Frame (length:16, flags:0x00, stream_id:1)
2019-02-09T02:35:15.0231510Z    | [0.063s] Interop.FunctionalTests.H2SpecTests Debug:            [send] HEADERS Frame (length:4, flags:0x05, stream_id:3)
2019-02-09T02:35:15.0238248Z    | [0.063s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" received HEADERS frame for stream ID 3 with length 4 and flags END_STREAM, END_HEADERS
2019-02-09T02:35:15.0244902Z    | [0.064s] Microsoft.AspNetCore.Server.Kestrel Information: Connection id "0HLKE6S61NCL3": HTTP/2 connection error.
2019-02-09T02:35:15.0252832Z    | Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.Http2ConnectionErrorException: HTTP/2 connection error (PROTOCOL_ERROR): The client sent a HEADERS frame to stream ID 3 before signaling of the header block for stream ID 1.
2019-02-09T02:35:15.0256896Z    |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.Http2Connection.ProcessHeadersFrameAsync[TContext](IHttpApplication`1 application, ReadOnlySequence`1 payload) in /_/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs:line 487
2019-02-09T02:35:15.0261630Z    |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.Http2Connection.ProcessFrameAsync[TContext](IHttpApplication`1 application, ReadOnlySequence`1 payload) in /_/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs:line 410
2019-02-09T02:35:15.0263193Z    |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.Http2Connection.ProcessRequestsAsync[TContext](IHttpApplication`1 application) in /_/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Connection.cs:line 306
2019-02-09T02:35:15.0274497Z    | [0.064s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLKE6S61NCL3" is closed. The last processed stream ID was 1.
2019-02-09T02:35:15.0319184Z    | [0.064s] Microsoft.AspNetCore.Server.Kestrel Trace: Connection id "0HLKE6S61NCL3" sending GOAWAY frame for stream ID 0 with length 8 and flags 0x0
2019-02-09T02:35:15.0338233Z    | [0.064s] Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets Debug: Connection id "0HLKE6S61NCL3" sending FIN because: "The Socket transport's send loop completed gracefully."
2019-02-09T02:35:15.0344876Z    | [0.065s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLKE6S61NCL3" stopped.
2019-02-09T02:35:15.0348639Z    | [0.102s] Interop.FunctionalTests.H2SpecTests Debug:            [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1)
2019-02-09T02:35:15.0355131Z    | [0.103s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:35:15.0362897Z    | [0.103s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:35:15.0379015Z    | [0.103s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:35:15.0392690Z    | [0.103s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:35:15.0398480Z    | [0.103s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
... repeated a few thousand times
2019-02-09T02:36:24.3117269Z    | [29.999s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:36:24.3118781Z    | [30.000s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:36:24.3119660Z    | [30.000s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:36:24.3120918Z    | [30.000s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:36:24.3122019Z    | [30.000s] Interop.FunctionalTests.H2SpecTests Debug:            [recv] Error: read tcp <IP_ADDRESS>:63806-><IP_ADDRESS>:63805: wsarecv: An established connection was aborted by the software in your host machine.
2019-02-09T02:36:24.3123038Z    | [30.013s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting shutdown
2019-02-09T02:36:24.3124463Z    | [30.048s] TestLifetime Information: Finished test RunIndividualTestCase-http2/4.3/3, HTTPS:False, Sends a HEADERS frame to another stream while sending the header blocks in 30.0465251s

This maps to WSAECONNABORTED 10053 (0x2745) An established connection was aborted by the software in your host machine.
It looks like WaitEvent is only prepared to handle EOF and ECONNRESET. It should probobly assume all read errors are fatal here, no?

Thank you for the report!
It seems that this is a bug. I'm trying to fix the code, but it's hard to test due to I don't have a Windows environment. I have built a binary that contains fixes here. Can you try this?
h2spec_windows_amd64.zip

Thanks for the quick turnaround. Unfortunately it only repros in our automation environment where it's difficult to test private builds. I can test it locally to at least make sure it doesn't break normal usage.

This is working in local testing, thanks.

Thank you for the testing. I'm going to release a new version with fixes.

Fixes are released in v2.2.1. Please tell me if you still have a problem.
https://github.com/summerwind/h2spec/releases/tag/v2.2.1

It seems to be working, thanks.


Set as Windows Terminal background

Any recommendations regarding how to make that a Windows Terminal background? 😅
I have attempted to do it manually – just to experiment with its appearance – by adjusting the Terminal background opacity to 0, and it looks awesome IMO:

PS
Plz don't judge me

Looks good! Sadly I have no useful suggestions for closer integration.


[5.3] Fix gatherMiddleware() only unique

For example:
I have a route group with middleware 'auth' and controller with middleware 'auth'.
Maybe framework/src/Illuminate/Routing/Route.php gatherMiddleware() must return only unique values ?
class MainController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth');
    }
}

Route::group(['middleware' => ['auth']], function () {

    Route::get('/first', 'MainController@index');
}

Route::get('/second', 'MainController@index');

php artisan route:list
before:
| Domain | Method   | URI    | Name  | Action                                      | Middleware |

|        | GET|HEAD | first  |       | App\Http\Controllers\MainController@index   | web,auth,auth
|        | GET|HEAD | second |       | App\Http\Controllers\MainController@index   | web,auth

after fix:
| Domain | Method   | URI    | Name  | Action                                      | Middleware |

|        | GET|HEAD | first  |       | App\Http\Controllers\MainController@index   | web,auth
|        | GET|HEAD | second |       | App\Http\Controllers\MainController@index   | web,auth

Would it be more preferable if artisan route:list displayed middleware from route and controller separately?
For example:
| Domain | Method   | URI    | Name  | Action                                      | Middleware |

|        | GET|HEAD | first  |       | App\Http\Controllers\MainController@index   | [r]web,auth [c]auth
|        | GET|HEAD | second |       | App\Http\Controllers\MainController@index   | [r]web [c]auth

fixed branch to 5.3 from https://github.com/laravel/framework/pull/16173


Add C API for Promise

Now we've got ES6 Promise support from within .js, I think it's a good time to add the C API as well :)

cc @jiangzidong @jprestwo @grgustaf

sure, like jerry_create_promise and jerry_value_is_promise, right?

Yeah and API to reject / fullfill, for example:
https://github.com/01org/zephyr.js/blob/master/src/zjs_promise.h
@jprestwo @grgustaf what else?

@martijnthe,
create, fulfill, and reject are all we use/need in ZJS. is_promise could be useful as well.

@jprestwo, can you help me understand why you have the zjs_post_promise_func post argument in zjs_make_promise? Is this needed here too you think? Can't you use the native handle/pointer API for this?

@martijnthe, no that is not needed. I have a pending PR for ZJS that uses JerryScript promises and I took out that parameter:
https://github.com/01org/zephyr.js/pull/1058
Of course this PR is irrelevant once JerryScript has C API's.

On second thought, I don't think the promise api in https://github.com/01org/zephyr.js/pull/1058 is suitable for jerry C api. Because it saves the resolve/reject handler inside the native pointer of promise object, however, the ideal create_promise should return a promise object which has empty native pointer, so that users can set it depends on their own scenario.
I suggest the the signature should be
jerry_value_t jerry_create_promise (jerry_value_t *resolve_p, jerry_value_t *reject_p)

the resolve_p and reject_p are function object, and are OUT arguments, so that users get the handler, and should maintain them (including free them). When they want to resolve a promise, they just jerry_call_function(*resolve_p, ......). And we don't need the explicit api like fullfill/resolve/reject.
What do you think? @martijnthe @jprestwo

@jiangzidong I'm not sure if I like that signature.
It is closest to how the JS Promise constructor works, but in reality I think it will be very cumbersome to use:

Many async C APIs take a void *cb_data as parameter. With your proposal, you have to allocate a helper containing the 2 resolve and reject jerry values and pass a pointer to the helper as cb_data.
You would have to use jerry_call_function with resolve and reject? I believe resolve and reject functions only take 0 or 1 argument and this isn't used by the resolve/reject function itself, so I think it makes sense to have a helper function for this, instead of having to deal with jerry_call_function directly.

See below for usage example.
// imaginary async OS API to get battery info
typedef struct {
    // ...
} batt_info_t;

typedef void (*batt_callback_t)(const batt_info_t *info, void *cb_data);

void os_get_battery_async(batt_callback_t cb, void *cb_data);

// option 1: -------------------------------------------------------------------

typedef struct {
    jerry_value_t resolve;
    jerry_value_t reject;
} promise_helper_t;

static void my_get_batt_info_cb (const batt_info_t *info, void *cb_data)
{
        promise_helper_t *helper = cb_data;

        // do stuff with *info and assign result + should_call_resolve:
        jerry_value_t result = ...;
        bool should_call_resolve = ...;

        jerry_value_t resolve_reject_result;
        resolve_reject_result = jerry_call_function(
                should_call_resolve ? helper->resolve : helper->reject,
                jerry_create_undefined() /* this */,
                &result, 1
        );
        // what to do with resolve_reject_result here? I think the Promise
        // implementation should be catching Errors, so do nothing?

        jerry_value_release(resolve_reject_result);
        jerry_value_release(helper->resolve);
        jerry_value_release(helper->reject);
        free(helper);
}

// 'getBattery' external function
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery
static jerry_value_t get_battery_impl (const jerry_value_t function_obj,
                                       const jerry_value_t this_val,
                                       const jerry_value_t args_p[],
                                       const jerry_length_t args_count)
{
        promise_helper_t *helper = malloc(sizeof(*helper));
        assert(helper);
        jerry_value_t promise = jerry_create_promise(&helper->resolve,
                                                     &helper->reject);
        os_get_battery_async(my_get_batt_info_cb, helper);
        return promise;
}

// option 2: -------------------------------------------------------------------

static void my_get_batt_info_cb (const batt_info_t *info, void *cb_data)
{
        jerry_value_t promise = (jerry_value_t)(uintptr_t) cb_data;

        // do stuff with *info and assign result + should_call_resolve:
        jerry_value_t result = ...;
        bool should_call_resolve = ...;

        jerry_call_resolve_reject(promise, result, should_call_resolve);
        jerry_value_release(promise);
}

// 'getBattery' external function
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery
static jerry_value_t get_battery_impl (const jerry_value_t function_obj,
                                       const jerry_value_t this_val,
                                       const jerry_value_t args_p[],
                                       const jerry_length_t args_count)
{
        jerry_value_t promise = jerry_create_promise();
        os_get_battery_async(my_get_batt_info_cb,
                             (void *)(uintptr_t)jerry_value_acquire(promise));
        return promise;
}

Yes, I know what you mean, I can put these 2 function in the internal prop of the promise object (like the LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, but not just in the native pointer).

Yeah, that makes sense to me. Need to take care of breaking the "retain cycle" there: both resolve and reject function objects retain the promise object (through LIT_INTERNAL_MAGIC_STRING_PROMISE). Creating internal properties on the promise object that point to the functions would create a cycle, which would need to be broken at some point. Not sure if there's a good point in the life cycle to do this though...
Idea 3: stick with @jiangzidong 's proposal + add a utility to jerryx with helper functions to make it easier to use the low level API? Something like:
// jerry-core -----
jerry_value_t jerry_create_promise (jerry_value_t *resolve_p, jerry_value_t *reject_p);

// jerryx -----
typedef struct {
  jerry_value_t resolve;
  jerry_value_t reject;
} jerryx_promise_resolvers_t;

jerry_value_t jerryx_create_promise_and_resolvers (jerryx_promise_resolvers_t **resolvers_out);

typedef enum {
  JERRYX_RESOLVE,
  JERRYX_REJECT,
} jerryx_promise_resolver_type;

void jerryx_call_and_free_resolver (jerryx_promise_resolvers_t *resolvers, jerry_value_t value, jerryx_promise_resolver_type type);

Need to take care of breaking the "retain cycle" there: both resolve and reject function objects retain the promise object (through LIT_INTERNAL_MAGIC_STRING_PROMISE)

It should not be a problem. Though the promise object and the handler are marked by each other during gc, but that doesn't affect their ref count. As long as the promise object's ref == 0 and it cannot be visited by other visited object, both the promise and the handler will be GCed. It's like var a = {}; var b = {}; a.data = b ; b.data = a

OK, if there's no problem there w.r.t. memory mgmt, I think it would be nice if the jerryscript.h API is easy to use directly. Something like this?
// returns promise object
jerry_value_t jerry_create_promise(void);

typedef enum {
  JERRY_PROMISE_RESOLVE, // spec talks about "fulfill" but I think "resolve" is more commonly used.
  JERRY_PROMISE_REJECT,
} jerry_promise_resolution_t; // not sure what to call this...

// Fulfils or rejects a promise
void jerry_resolve_promise(jerry_value_t promise, jerry_value_t value,
                           jerry_promise_resolution_t resolution);

// returns true if promise
bool jerry_value_is_promise(jerry_value_t value);

// returns resolve function object
jerry_value_t jerry_get_promise_resolve(jerry_value_t promise_obj);

// returns reject function object
jerry_value_t jerry_get_promise_reject(jerry_value_t promise_obj);

see #1796
Why do we need the api like jerry_value_t jerry_get_promise_resolve(jerry_value_t promise_obj); ?

Why do we need the api like jerry_value_t jerry_get_promise_resolve(jerry_value_t promise_obj); ?

I don't have a good concrete example at hand, but I feel that because the JS Promise API semantics hand the user 2 function objects (new Promise(function(resolve, reject) { ... })), there should be a way to get those functions in the native API as well.
Imaginary meta-examples: when the native binding wants to hand the resolve/reject function back to JS land, or to hand it to a piece of library code that takes a function object.

#1796 merged.


autoComplete keyboard events interfere with original input keyboard events

[x] Describe the bug

Let's say I add an event listener to the original input field where I want the user to be able to trigger certain actions by pressing enter from within the field. The field is not part of a form with a submit button. When I add autoComplete to the input field and the user uses the keyboard to select an option with the enter key, my original event is called first with whatever value was in the input before autoComplete's event takes place.
Is there something that could be added to the event so that I can add some logic to differentiate between an autocomplete event and my events.

[x] To Reproduce
https://codepen.io/eballeste/pen/qBdVmYW

Type the letter a.
Use the keyboard to navigate down to the 'car' option.
Press enter on the keyboard to select.
Notice how in console, my original event tied to the input gets called first with the value 'a' that I typed in, followed by the value captured in the onSelection method of autoComplete.

[ ] Expected behavior
Not sure what the expected behavior is but I would like to find a way to determine in my original event if it is triggered by autoComplete or my original event.

for now, I'm doing a sloppy setTimeout of 50ms from within my original event which seems to do the trick but I feel like this might backfire on me somehow.

Hello @eballeste,
The issue has been resolved in v8.0 and above please try it and let me know your feedback.
Have a nice day, cheers! :)


Create group charter assignment

[ ] Do some research and find a good template or example for a 1 page team charter (engineering focused preferably). Things I'd like to see: specifying main roles, people's teamwork styles, meeting times, meeting ground rules, etc. Show you recommendation to Jason before committing to it.
[ ] Create the Canvas assignment by Wednesday evening with a Friday (20th) 5pm due date.
[ ] This should include choosing company (team) names too. See https://github.com/moorepants/eme185/issues/17

Here is an example: https://www.teamhelper.com/sample/TC_GuideSample.pdf

I found a couple more examples:

https://www.lce.com/Team-Charters-What-are-they-and-whats-their-purpose-1219.html
http://www.npd-solutions.com/charterex.html

Here is a template from Oregon State's senior design course that seems to have the right sections:

http://classes.engr.oregonstate.edu/mime/fall2011/ie497/Forms/team_charter.pdf

I'm thinking we can specify the sections their charters should contain as a sort of template and then link to an example or two to give them some idea of how they're written. Something like:

A team charter is a document that specifies your team's purpose and the organizational principles you will use to fulfill that purpose. With your group members, select a company name, then write a 1-page charter stating: your company's purpose, its members and their roles, meeting times, and the decision-making process you will use to resolve conflicts and make progress.

I like the simplicity of the Ice one but the Oregon State one is really good and thorough. I like page 2 of the OSU one. It is a form to fill out. I'd be fine if we give them a version of that. The only part I don't like is the project manager role. I don't want to force them to choose a leader (at all) or right now. It think it is better for that to evolve. I'd rather just have them layout preliminary roles that each person would like to play. It'd be nice if the OSU one is free from copyright so we could modify and republish publicly. If it isnt' then we can use modify and use internally to the class.
Maybe we can provide the reading parts on Canvas in the assignment or files and then have a front and back piece of paper for them to answer the questions. We will keep a hard copy of the charter.
Do you have time to put this together before class today? If so, maybe we should just do this in class.

http://oregonstate.edu/about/copyright is 404 and the course site doesn't have anything either :/
No copyright/licensing notice essentially means "all rights reserved" correct? If not, I have a bit of time so I can adapt the first two pages of the OSU doc in time.

Let's adapt it for our use and we will only share through Canvas. In the meantime, maybe send an email to the author and see if they care if you reuse and share.
How are we going to have the students fill it out? On paper? In class? Or pass out at end for homework?

I think having them turn in a PDF makes sense so they can all refer back to it whenever. In that case, I guess they'd re-create the template and fill it in. A bit of wasted effort and they'd need to find a time to meet before Friday.
With a hard copy, they'd have to complete it during studio right? Unless we allow them to submit a scan on Canvas. I'm guessing it might take a half hour or so which would cut into the needs and specs activity quite a bit.
I think I'm leaning toward a Canvas assignment where they generate their own charter with a template to follow.

I think I'm leaning toward a Canvas assignment where they generate their own charter with a template to follow.

Sounds good.


Streams closed before watcher is enabled

Since read / write watchers are enabled after the current tick of the event loop there is a possibility that a stream resource is closed by another watcher within the same tick. This causes trouble with many loop backends (ev, event, uv) because they fail at creating new event watchers when the stream resource has been closed.
This is an edge case but i think that the specification should be updated to define expected behavior in this case. It would be sufficient to have loop implementations check for valid resources as new stream watchers are enabled for the first time and call the watcher callback once if a closed / invalid resource is detected.

Hmm, good point.
That scenario never occurred to me, but creating an event watcher on an invalid resource obviously doesn't work.
There's also the scenario where a resource gets closed after the watcher had been registered.
So, we can generalize this to: what should happen if a closed socket lands in the loop.
We need a general behavior what should happen in that case - I'm slightly in favor of just throwing an exception whenever that happens. — The main issue is there that we'd need to check each resource before each call to stream_select() or the loop extensions native function.
So … uh, don't know - it's not like there would be any callback for userland upon resource invalidation or such…

Resources can be closed after watchers have been created, however it does not fail with an error / exception in any loop backend i tested so far (ev, event and uv). All of these will recognize a closed resource and invoke the registered callback in the same way as they would on EOF. Therefore checking for a valid resource is only needed when creating the stream watcher / event for the first time.
Checking for valid resources is not required when enabling a watcher based on stream_select() because it will be reported as readable / writable next time the function is called. This automatically leads to the watcher callback being called anyways if you do not check for a valid resource every time a stream watcher triggers. Checking for valid resources during creation of new (ev, event, uv)-based watcher is important because it can break the backend (uv likes to segfault in this case).
I think the most efficient and consistent way to deal with the situation is to call the watcher callback because it will happen anyways if the stream is closed immediately after the watcher was enabled. You can have a look into this behavior in the loop implementations of koolkode/async. This solution worked out very well for me so far...

Well, just to be sure - we are talking about manual fclose() calls or similar while there's a write/read watcher installed?
It just is reported as writable/readable if the resource has been closed by the remote endpoint, but not when we close it ourselves with fclose() - in this case the loop is just running indefinitely. E.g. stream_select() will just ignore these resources.

I did some testing and yes you are right about the stream_select() / local close problem. The resource existed in the read / write array because it was the only resource being watched and stream_select() failed due to no valid read / write arrays being passed. That basically leaves me with to options: check all resources before calling stream_select() or diff read / write array after stream_select() and check for valid resources...
I will check the other loop backends tomorrow, it will not be easy to deal with this in a consistent and performant way...

I've just checked libuv - it behaves the same way.
Either we declare it undefined behavior, or we'll end up with a significant performance hit.
Implementations shall be free to warn the dev if they notice this happening (e.g. in a debug mode), but it doesn't sound very appropriate to force implementations to impose this performance penalty on the user.

I checked libev, it triggers a warning next time the loop is run.

Warning: EvLoop::run(): Libev error(9): Bad file descriptor

Seemingly not possible to avoid this without adding lots of very slow resource checks. I agree with this being undefined behavior. Maybe the docs should state that locally closing a watched resource will cause problems.

Which forms of notification should be allowed?

@kelunik Does not need to be specified as notifying itself isn't required. It may be a custom callback, it may be an Error thrown… whatever.

@bwoebi If it's something that throws, then it should be defined where it should be thrown IMO. Otherwise it's not required to be specified.


When Selecting multiple line or polygon features, the nodes are selected with equal weight as the way

Description
With RapiD-generated roads features it is common to need to selected multiple lines to join ("C") or modify attributes. When one line feature is selected and one shift-clicks the other feature it is quite common to select simply a node from the second feature and not the linear feature itself.  This means the user has to deselect the node, then try to click somewhere on the second line in between nodes.  When a line is selected, could the first shift-click select the line feature, and then a second click select the node?
The same goes for selecting multiple nodes along a line.  If the first feature selected is a node, the next feature selected (shift-click) should default to a node.  For example, digitizing a power line, then going back and selecting the nodes to change them to power towers.  If a user is selecting ways, they probably wish to continue selecting ways.
Version
2.0.1
What browser are you seeing the problem on? What version are you running?
Firefox v112.0
The OS you're using
win
Steps to reproduce

Go to area with existing line features
select one
Shift-click another line feature
Observe the high-probability of selecting a node within that line feature, not the line feature itself.

The browser URL at the time you encountered the bug
https://mapwith.ai/rapid#background=Maxar-Premium&datasets=fbRoads&disable_features=paths,indoor,landuse,boundaries&map=18.52/9.81872/13.47712
The auto-detected useragent string for your browser (leave blank if you're manually filling this form out)
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0

This has become increasingly painful in V2, its a big frustrating that mostly of the problems reported by several users in Beta and launch V2.0.1 are still very well and alive in V2.0.2


Escape text in custom module

When having the following line in a custom module:
        "exec": "echo 'test1 & test2'",

running waybar results in:
(waybar:3775754): Gtk-WARNING **: 01:21:03.702: Failed to set text 'test1 & test2 ' from markup due to error parsing markup: Error on line 1: Entity did not end with a semicolon; most likely you used an ampersand character without intending to start an entity — escape ampersand as &

The fix doesn't look right. It disables the ability to pass markup even escape is set to false.

@lilydjwg Upon further look text_ seems to be escaped with escape_text() in other parts of the code in custom.cpp. The case I reported seems to be mitigated by escaping & as & as the warning suggests but I had another case where that didn't work that I cannot remember. Feel free to revert if it's causing issues and I will revisit it.

Do you still need to escape & as & if you add "escape": true (this config is false by default)?

With "escape": true, I don't, you are right.

I don't know if this helps but this worked for me in SwayNC

I can confirm that this breaks pango markup on a custom module of mine. I think this should be reverted, especially if "escape": true solves the original problem.


about training problem

Hello @ckkelvinchan , I want to retraining this model, I have a problem for about the config file UDM10 folder structure. I don't know that how to construct  this folder. is it put every folder blurx4 file to merge a folder like this is correct?

I was also trying to reproduce the training on the REDS dataset. How many epochs has the model been pretrained (I interpreted 300k iterations with bs 16 as around 20k epochs)? Is it normal that during the pretraining the cleaned images (after the cleaning module) have lot of blur and artifacts? Are results starting to get better only during the fine-tuning or am I missing something?
Help would really be appreciated


Search a 2D Matrix

https://leetcode.com/problems/search-a-2d-matrix/
please assign this to me in C++

@Shreyas12345678 Assigned in C++

Please Assign this problem to me .Because I solved this Already and i have good knowledge over this topic
please assign this to me

Bro i raised an issue please assign this to me
On Fri, 1 Oct, 2021, 21:46 Piyush Sharma, @.***> wrote:

@Rohit5152 https://github.com/Rohit5152 Sorry brother, you can either
solve this problem in some other language or create an issue for another
problem present on LeetCode. The problem is assigned to @Shreyas12345678
https://github.com/Shreyas12345678 for now
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/piyushsharma220699/Hacktoberfest-2021/issues/52#issuecomment-932367813,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQ7S3BGTBUEH72WXEX2RBMDUEXNHJANCNFSM5FE3P6CA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Please assign this to me in Java

@MitadruDatta Assigned in Java :)

@Rohit5152 bro I can't assign this to you in C++ and Java, others are already working on it.


Add add edgedevice <name> command

Signed-off-by: arielireni<EMAIL_ADDRESS>

Closing this PR in order to split the implementation of the edgedevice command into a few small PRs


Keeping track of states

https://github.com/kayburns/tom-qa-dataset

I might be able to work on this, depending on how long it may take.
Throughout the {tom or tom_easy}/world_large_nex_1000_{noise: 0 or 10}/{task type}_{question type}_{split}_test.txt splits, there are 52 files that I can create 52 tasks from (I would concatenate the val and test files into one which will give 13 files in each split if we also include the train file). Will this be okay to do? Each of these tasks would test a different part of the model's ability to rationalize, though 52 tasks seems a lot. Please let me know what you think.

I can take this on. How many tasks should there be? I was thinking 4 based off of the directories, but there are different task types and question types in the directories. Please let me know what you think!
Pinging @swarooprm on this to get his thoughts too.


iOS Alembic Error

Using version 20180205, I am trying to use the Unity Alembic Importer to ship for iOS. However, I receive the error:
"Plugin 'abci.dll' is used from several locations:
Assets/UTJ/Alembic/Plugins/x86/abci.dll would be copied to /abci.dll
Assets/UTJ/Alembic/Plugins/x86_64/abci.dll would be copied to /abci.dll
Please fix plugin settings and try again."
Since the iPhone/iPad is 64-bit, I tried to remove the x86 .dll folder or exclude it via Plugin settings; however, xCode then gives me the error:
"DllNotFoundException: Unable to load DLL 'abci': The specified module could not be found.
at UTJ.Alembic.aiContext.aiContextCreate (Int32 uid) [0x00000] in :0
at UTJ.Alembic.AlembicStream.AbcLoad () [0x00000] in :0
at UTJ.Alembic.AlembicStreamPlayer.LoadStream () [0x00000] in :0"
Do you have any ideas on how to get past this? Thanks!!

as document states, this plugin supports only Windows, Mac and Linux. other platforms are not planned for now. (see also https://github.com/unity3d-jp/AlembicImporter/issues/28)


Create Discussion section to better involve everyone to make LEAD work as a collective Platform

Although it might be good to have a Discussion forum for the GitHub #ASKnet action in general, we might just start with this specific project. I also never used it really before, as this is a new feature → we should invite everyone

I've seen it makes sense to use the Team discussion section?

technically this is ready though most of the communication currently through Telegram:
https://github.com/ASKnetCommunity/ASKnet.Community/discussions/categories/lead

this can be closed for now, activation is a different task


Allow vk-table-column to parse dot notation

I recently had a need to display a vk-table whose underlying data is a nested object, like the following:
results: [{
  id: 1,
  username: "danderozier",
  address: {
    geo: {
      lat: "29",
      lng: "-95"
    },
    street: "123 Elm Street",
    city: "Houston",
    state: "TX"
  }
}]

I expected to be able to do the following in my Vue template, but it didn't work because the value provided to cell is passed into row literally.
<vk-table :data="results">
      <vk-table-column header="ID" cell="id" />
      <vk-table-column header="Username" cell="username" />
      <vk-table-column header="Latitude" cell="address.geo.lat" />
      <vk-table-column header="Longitude" cell="address.geo.lng" />
    </vk-table>

The attached pull request adds the ability to parse dot notation in the cell value by splitting it on . and fetching the nested value from the row.
Being able to easily handle nested objects is an important feature, especially if the data is being fetched from a JSON api. I hope this helps others as well!

Hi @danderozier and thank you for your contribution.
I liked the idea, though the implementation required more work. I have gone ahead and commited the feature based on your code.
For more complicated paths, involving arrays for example, consider using a custom cell render function and get from lodash.

@miljan-aleksic Thanks for accepting my idea, and for the feedback–cheers!


Resetting bitlocker passwords after use

Am I reading this correctly - if you use your recovery key MS recommends that you should reset it? https://docs.microsoft.com/en-us/windows/security/information-protection/bitlocker/bitlocker-recovery-guide-plan#resetting-recovery-passwords  If this is correct why?

@Oldfield007
The issues section of this repository is intended for problems relating to documentation content only.
Please open a support ticket via the link below so that that your question gets answered quickly.
Windows 10 Support
Thank you.

Thank you and noted. I will follow up with the other link.  The only reason I choose the doc section was because there was no reasin given to why you need to re-do a password after using the number sequence.
Thank you
Regards
Greg
0421057542
On Tuesday, 15 October 2019, 08:31:04 am AEDT, Onur<EMAIL_ADDRESS>wrote:

@Oldfield007
The issues section of this repository is intended for problems relating to documentation content only.
Please open a support ticket via the link below so that that your question gets answered quickly.
Windows 10 Support
Thank you.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


check html and css

check HTML and CSS files for errors, extra spaces,...

check repeated ID on SVGs


Update graphing branch to match main

There's been a lot of changes to main that aren't reflected in the graphing branch, so I'm pulling main into graphing so I can put the graphs in the right place in the newer code.

I will edit this using vs code and commit the merge

I will edit this using vscode and commit the merge


console.start() not returning URL

As I said in the title, console.start() isn’t returning the console URL.

teleconsole has been shutdown, so it's not kora's fault.
@korakot maybe we can switch to tmate?
@PHANTASM999  for a temporarily workaround, you can use this: https://gist.github.com/radames/b513277703a8bb2104a80c81e0677aa2

Alright thanks


Rethink Mirror

This idea is prompted by the fact that we forgot to add the Mirror.apply(Classpath) overload in consistency with the recently introduced Database.load(Classpath).
Back then, when Mirror was unrelated to Database, it seemed reasonable to have two different APIs to create these entities. But now that we have Database <: Mirror, maybe we should just retire Mirror.apply?

Do we have plans to add database-unrelated fields to Mirror? I personally would find Mirror.classapath/sourcepath/compilerOptions useful (see https://github.com/scalameta/scalameta/issues/944). I don't know how that would work for combined mirrors from different contexts.

See https://github.com/scalameta/scalameta/issues/964

See https://github.com/scalameta/scalameta/issues/944

What is the actionable item in this ticket? I'm OK with removing Mirror.apply and keeping things otherwise unchanged. I'd like to note however that the Mirror interface does not serve a real purpose since all it does it provide Mirror.database: Database.

The actionable item is to figure out the desired API for Mirror. I hope to get to this on Sunday.

scala.meta.Mirror disappeared in #1055. In scalafix, I have introduced a new class called scalafix.SemanticCtx which replaces my previous usage of Mirror. I am personally very happy with SemanticCtx since it allows me to add custom stuff that might otherwise not make it into scala.meta.Mirror. I propose we close this issue with "Mirror is gone, roll your own application-specific wrappers around scala.meta.Database".

The mirror is gone. The rethinking process is complete.


Terminate the proces with the ctrl + c signal

Why
The process does not terminate with ctrl + c. Likely, this is because an interval of 3600 was specified, and it was waiting during that time.
What
By using tokio::select!:, we changed it so that it waits for signals from tick and ctrl_c at the same time, and proceeds from the one that is completed first.
Check
Ensure that receive and stop function without any issues
2024-03-19T21:15:15.658440+09:00 [INFO] - nodex_agent::handlers::receiver - stop receiver - src/handlers/receiver.rs:46
2024-03-19T21:15:50.778199+09:00 [INFO] - nodex_agent::controllers::public::nodex_receive - Receive message. message_id = "4cc6b394-751b-4e0c-b8c5-79d61adfafb0" - src/controllers/public/nodex_receive.rs:110
2024-03-19T21:15:50.873167+09:00 [INFO] - nodex_agent::controllers::public::nodex_receive - Verify success. message_id = 4cc6b394-751b-4e0c-b8c5-79d61adfafb0, from = did:nodex:test:EiD8Qwf0dDwGuwgBgBFsNb8AnFhQ64Sw1yCAEbBf2s8PRg - src/controllers/public/nodex_receive.rs:113
2024-03-19T21:15:51.966162+09:00 [ERROR] - nodex_agent::controllers::public::nodex_receive - Error: Is a directory (os error 21) - src/controllers/public/nodex_receive.rs:269
2024-03-19T21:15:55.766959+09:00 [INFO] - nodex_agent::controllers::public::nodex_receive - Receive message. message_id = "4cc6b394-751b-4e0c-b8c5-79d61adfafb0" - src/controllers/public/nodex_receive.rs:110
2024-03-19T21:15:55.855133+09:00 [INFO] - nodex_agent::controllers::public::nodex_receive - Verify success. message_id = 4cc6b394-751b-4e0c-b8c5-79d61adfafb0, from = did:nodex:test:EiD8Qwf0dDwGuwgBgBFsNb8AnFhQ64Sw1yCAEbBf2s8PRg - src/controllers/public/nodex_receive.rs:113
2024-03-19T21:15:56.648521+09:00 [ERROR] - nodex_agent::controllers::public::nodex_receive - Error: Is a directory (os error 21) - src/controllers/public/nodex_receive.rs:269
^C2024-03-19T12:15:57.784718+00:00 [INFO] - actix_server::server - SIGINT received; starting forced shutdown - /Users/dai/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.3.0/src/server.rs:319
2024-03-19T12:15:57.785050+00:00 [INFO] - actix_server::accept - accept thread stopped - /Users/dai/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.3.0/src/accept.rs:143
2024-03-19T12:15:57.785183+00:00 [INFO] - nodex_agent::controllers::public::nodex_receive - Polling task is stopped - src/controllers/public/nodex_receive.rs:118
2024-03-19T12:15:57.785257+00:00 [INFO] - actix_server::worker - shutting down idle worker - /Users/dai/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.3.0/src/worker.rs:595
2024-03-19T21:15:57.785664+09:00 [INFO] - actix_server::server - SIGINT received; starting forced shutdown - /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.1.1/src/server.rs:319
2024-03-19T21:15:57.785854+09:00 [INFO] - actix_server::accept - Accept thread stopped - /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.1.1/src/accept.rs:143
2024-03-19T21:15:57.786037+09:00 [INFO] - actix_server::worker - Shutting down idle worker - /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.1.1/src/worker.rs:593
2024-03-19T12:15:58.087939+00:00 [INFO] - nodex_agent::handlers::sender - stop sender - src/handlers/sender.rs:68
2024-03-19T21:15:58.087785+09:00 [INFO] - nodex_agent::handlers::sender - stop sender - src/handlers/sender.rs:68

@daichitominaga
Can you add a test in SIGTERM to check if the application has finished successfully?

@daichitominaga Can you add a test in SIGTERM to check if the application has finished successfully?

Is it okay to test running nodex in a container and sending signals like SIGINT, SIGTERM?

@daichitominaga

Is it okay to test running nodex in a container and sending signals like SIGINT, SIGTERM?

Yes. It may be easier to stop the agent's process in E2E Test and check the logs for a successful Graceful Shutdown.

@rabe1028
I have added tests, so please check them.