Nurturing the boringproxy community

The tool has by itself already multiple interfaces with users,

the CLI
the website
the repositories, with

code
issues

and the amount of community interaction has lately increased constantly, not without the prompt- and friendlyness of @anderspitman.
Some of the issues that have come up were not directly problems with the code, but rather configuration and understanding issues. Often the individual use cases a user provides will escalate in additional technical issues addressing their error condition that can be implemented.
If not overloading issues with intricate detail of custom setups provides desirable sanity, a possibility could be to make use of existing GitHub features and collect non-technical discussions and extended documentation - e.g. of exemplary setups that can inform conversation and documentation - in GitHub Discussions and GitHub Wiki.
Secondly a possibility to communicate the current state of discussions quickly and visually would be to use the Kanban board with GitHub Projects.

I was just coming to suggest that we consider creating more resources / how to's, especially for the self hosting community. For example - I'm still struggling to get YunoHost configured properly, and frankly the approach suggested here to seems easier / more practical. I've made initial arguments for some sort of integration strategy over at the YunoHost forums. https://forum.yunohost.org/t/simplifying-yunohost-installation-with-a-reverse-proxy-and-tunnel-managing-service/14524 As I see it the primary barriers to greater adoption of self-hosting are 1) Needing to open ports in the router, 2) Solving Dynamic DNS issues, 3) DNS configuration is (and will probably always be) a bit of a pain. Since boring proxy solves nearly all of these or at least simplifies things dramatically, it's worth looking at how to ease or automate integration with things yunohost as much as possible.

@almereyda these are good points. I think having using a wiki would be a great option to start with. I've never used the GitHub wikis. Is there anything special I need to do to enable other people to add to it?
@lightnin I have spent some time thinking about this. boringproxy is a great tool for people who know how to run a VPS and are tired of dealing with a lot of the details of managing services manually (this is my situation, which is why I made it for myself to use). The problem is it doesn't really solve much for users who don't have this expertise, ie many people who would like to get started selfhosting. I don't think most people should have to worry about DNS or TLS certs. It should be easy for them to register a domain name and tunnel it to a service running on their laptop (or even phone). My (biased) opinion is that the solution to this is to offer boringproxy as a SaaS product where people just need to know enough to run the client, which could be wrapped in a nice GUI.
The problem is people are cheap and I'm really not sure anyone would pay for such a thing.

@anderspitman I'm coming to similar conclusions -  though one debatable point is 1) Is it better to do it as SaaS (where there is a single service offering it) or is it better to try to set things up so that many different services could host / run it as a kind of default configuration to be loaded onto a VPS?  Alternatively, we could try reaching out to some of the various orgs on your excellent list (ngrok, etc.) to see if they'd be interested in doing some integration / API work to simplify things for self-hosters along the lines of what you have made.
I for one would happily pay $5 a month or so on the basis of not having to deal with all the vagaries of dynamic dns, opening ports, and maintenance of said complex config, also on the promise of a bit more security of not exposing my home IP. I guess the people to ask would be the yunohost folks,  ideally with some sort of documented "How to" aimed at their potential users that demonstrates a viable (and much simpler) setup path than what they currently offer.
Apologies if this is hijacking the thread - happy to move elsewhere if that seems best.

@lightnin I just read through your yunohost thread. I think we're basically on the same page with regards to long-term vision.
I think what is really needed are open protocols for:

Easily buying and managing domains.
Setting up tunnels.

So you could imagine a service that lets users buy a domain, and then with a couple clicks connect that domain to a port or directory (for static files/photos/videos/etc) on their local device. This is what I built boringproxy to experiment with. So far it's going well, but the DNS part especially is still lacking.
I think the key thing though is that it needs to eventually be a protocol anyone can implement, in order to keep everyone's incentives aligned.

I also think there's room for a higher-level abstraction over domains here. It would be great if there was a protocol simply for buying and delegating domains. So you buy a domain from Namecheap, and then when you signed up for boringproxy it asks you who your DNS provider is. You select Namecheap and it takes you through an OAuth flow and the you authorize boringproxy to have control over a specific domain or subdomain. You could even limit access to specific record types or values. The user would never need to know anything about DNS, and boringproxy doesn't need to implement domain reselling and all that garbage.

@anderspitman Yep, that sounds like the way. This is the first viable vision for workable self-hosting for the masses I've seen. I think there may be some things to work out in terms of where the SSL certs live / where the encryption gets decrypted. I'm not sure if I understand all the details here but it would seem, from the privacy point of view, important to keep all the encryption on the level of the user's local server if at all possible.
So one way forward would be to write up the target user flow as a series of steps and what's involved. And then for each "step" we can write up a set of instructions that we'll have to use now (as in, before the various solutions you proposed are implemented). Basically as the issues / implementations work out, things should get simpler and simpler for the end user.
I wonder if it would be easier to try a first pass with some sort of host / partner that already does domain registration / has VPS / and has an API for the DNS changes.

Back to the original topic  - does a "How to" for using boringproxy specifically with Yunohost exist? If not, should I make one and if I do, where should I put it?

boringproxy does have pretty good support for end-to-end encryption. If you set "TLS Termination" to "client", the boringproxy server (and the VPS provider) won't be able to read any of the traffic. The one missing piece is that it's still possible that a bad actor server provider could get their own Let's Encrypt certificate for the domains and man-in-the-middle the connections. But I think it should be possible to catch any providers doing this by building checks into the client to make sure the publicly available cert matches the one it's using. I haven't looked too deeply into that yet.
I like your plan. Such documentation would also provide a clear picture of the current pain points that need to be automated as much as possible moving forward.
It's tricky because I'm primarily building boringproxy for my own use. I'm hopeful and happy if it's useful for other people, but that's not the priority. My focus is on using it to build a sustainable business.
But I'm very open to any documentation that helps make the current functionality more clear.

If you're comfortable submitting a GitHub pull request against the website repo I think that would be ideal, but maybe a wiki would be better. I just don't want to get locked in to GitHub's wiki, but I also don't want to take the time to self-host and moderate a wiki. Maybe once self-hosting is easier haha...
So basically I'm open to whatever tools contributors would prefer, as long as it seems reasonable and simple.

@almereyda @lightnin I figured out how to open up wiki editing to anyone with a GitHub account. I think that would be the easiest way to get started with useful guides and new documentation. We can decide over time what makes sense to be on the wiki vs the boringproxy.io website.
I'm happy to continue discussing other options as well.

Hi @anderspitman @almereyda @lightnin  - this is an interesting thread and I'm watching it carefully. Happy to contribute in any way I can, though generally I'm speaking from a position of relative ignorance. But maybe that's not such a disadvantage given that the product is intended to be easy to use (and, indeed, is easy to use) by such a person. I'm certainly willing to share the problems I encountered along the way. Interestingly with one exception they were not boringproxy problems, but incidental stuff to do with managing A records (I didn't realize I needed a Dynamic DNS client), ensuring the port forwarding is done correctly etc. I still haven't got to the bottom of that one yet. I fear that unless we have some kind of wiki, @anderspitman will be besieged by help requests from people in my position who confuse their own difficulties with boringproxy problems.
Would it be helpful to have specific sections for different use scenarios? For example in my case I'm not using VPS, but self-hosting the server on a Raspberry Pi (and the remote service on another Raspberry Pi which will connect over the cell phone network).

It's tricky because I'm primarily building boringproxy for my own use. I'm hopeful and happy if it's useful for other people, but that's not the priority. My focus is on using it to build a sustainable business first, and then to help enable others to self-host second.

That makes sense! I'm all for you (and everyone really) making things sustainable. As a first step, would you consider making a patreon / some means for folks like me to donate a bit? It'll be a long road from a few bucks a month to sustainable, but I'm ready to start if you are. :)
@zygodon Maybe a good way to begin would be to make a FAQ, where you can share some of the questions you had - such as about how DNS works - along with your answers. Different use cases shouldn't hurt as long as we can converge on the main ones, and highlight them for new users.

As a first step, would you consider making a patreon / some means for folks like me to donate a bit? It'll be a long road from a few bucks a month to sustainable, but I'm ready to start if you are. :)

It's kind of you to offer. That has been the plan, but I figure it will still be a while before there are many wanting to donate. Plus I'm concerned about the incentives it creates. If people are paying money every month for software, they expect that software to change over time (plus programmers love changing things anyway). I'm more a fan of software that reaches a level of completion and then mostly stops changing other than bug fixes. So I think offering a service keeps interests better aligned, because then people are paying for bandwidth/storage/etc, not just the software itself.
But yes, I will eventually add donation options for those who prefer to self host.

One small issue though - are you sure you want to keep it on MIT License? Something with GPL might give you at least a bit more protection from one of the big fish eating all your code without credit.

It's an important question. I've followed the various licensing dramas fairly closely. I definitely think there's some chicken-egg here. GPL offers more protection, but will your project ever get much adoption if it isn't MIT? Do you even want adoption? Now is probably a good time for me to revisit licensing, since boringproxy is picking up a bit more attention.
Ultimately though, I think boringproxy is simple enough that it could be implemented from scratch in a short period of time by a small team, so I'm not sure it's worth worrying about it too much. The protocols are going to be simple and open in any case, so this may be unavoidable. I think the market for self-hosting can grow a lot before competition creates too many issues in this area.

About the use of issues as support requests, I think that a matrix channel or Github Discussions could be used.

@luke2m I've shifted somewhat with the current direction of boringproxy. I'm focused on using it in my own projects to build a sustainable source of income. I'm happy if other people find the code useful, and eventually I still want to make it the best solution for self-hosters to tunnel, but I think that will be down the road. For now I think it's best to keep things on GitHub since it's mostly only usable by developers who can debug their own problems.

I was just coming to suggest that we consider creating more resources / how to's, especially for the self hosting community. For example - I'm still struggling to get YunoHost configured properly, and frankly the approach suggested here to seems easier / more practical. I've made initial arguments for some sort of integration strategy over at the YunoHost forums. https://forum.yunohost.org/t/simplifying-yunohost-installation-with-a-reverse-proxy-and-tunnel-managing-service/14524 As I see it the primary barriers to greater adoption of self-hosting are 1) Needing to open ports in the router, 2) Solving Dynamic DNS issues, 3) DNS configuration is (and will probably always be) a bit of a pain. Since boring proxy solves nearly all of these or at least simplifies things dramatically, it's worth looking at how to ease or automate integration with things yunohost as much as possible. First step would be a setup guide tailored to users of yunohost.

Not sure if you're aware or not, but Cloudron.io is a more mature version for self-hosting apps which are actively maintained. Many use it at home behind a NAT as well as in VPS from. Good forum community as well.

Thanks @vRobM. Cloudron.io is super cool. I've been tempted to run it myself. The main issue is that it isn't open source. Not a problem for everyone, but I see less of a point of self-hosting if you're using closed software that you have no control over. I wish https://sandstorm.io/ were more successful.

The message was more for @lightnin but I am happy to address your concerns as well.
The OSS aspect is not an issue as it was open, but had to close for various reasons. That does not mean it is controlled by a corporation. In fact not much has changed at all. Many members of the community have commit rights and it's just like any other project hosted on Gitlab.
All the apps that are made available are OSS and it's well maintained by the team and up to date with frequent updates. Unlike sandstorm and others, where things are sorely out of date.
So short of making assumptions on principle, it's a wonderful, self sustaining project that has saved self-hosters thousands of hours via it's clever automation and hands off approach to running domains, email, game servers and more.
I just suggested boringproxy be added as an App so the public facing UI can be hosted on Cloudron. If you'd like to take a look at packaging it, you'll learn more about the innovations behind the scenes.
https://forum.cloudron.io/topic/6240/boringproxy/

The OSS aspect is not an issue as it was open, but had to close for various reasons.

What reasons? I'd be interested in reading about what happened.

That does not mean it is controlled by a corporation. In fact not much has changed at all. Many members of the community have commit rights and it's just like any other project hosted on Gitlab.

The problem is that this can change at any moment. Without a true open source codebase, ultimately the code owners are in control.

All the apps that are made available are OSS and it's well maintained by the team and up to date with frequent updates. Unlike sandstorm and others, where things are sorely out of date.

I agree this is great. Maybe sandstorm wasn't sustainable. If the choice is between something like this being closed or not existing, I'm still glad it exists. But I personally avoid trying myself to commercial software if at all possible.

What reasons? I'd be interested in reading about what happened.

It's detailed on their forum. Use the search terms "cloudron open source"

Apparently you have to sign up for an account in order to search? No thanks.

Apparently you have to sign up for an account in order to search? No thanks.

Apparently you have to sign up for an account in order to search? No thanks.

What's the issue with that?
It's a self-hosted OSS NodeBB forum and you know the issue with spammers and abusers. We deal with them daily.
How else will you participate in the conversation?
Happy New Year

Apparently you have to sign up for an account in order to search? No thanks.

What's the issue with that?
It's a self-hosted OSS NodeBB forum and you know the issue with spammers and abusers. We deal with them daily.
How else will you participate in the conversation?
Happy New Year

I don't currently want to participate in the conversation. I just want to read about their reasons for no longer being open source. If you can't even see those reasons without joining a closed community, that doesn't seem like a great sign to me.
I'm not sure how spammers come into this, unless you're referring to someone abusing their servers by performing many searches. But you could handle that with rate limiting.
Happy New Year!

I don't currently want to participate in the conversation. I just want to read about their reasons for no longer being open source. If you can't even see those reasons without joining a closed community, that doesn't seem like a great sign to me.
I'm not sure how spammers come into this, unless you're referring to someone abusing their servers by performing many searches. But you could handle that with rate limiting.
Happy New Year!

I don't currently want to participate in the conversation. I just want to read about their reasons for no longer being open source.

I googled it and there were no links on the first page of results to that forum post. I then tried to search on the forum itself and it was locked. Thanks for the link.


added 42Amman

hi , please add our school 42Amman. we are part of the 42 Network. thanks a lot

our website 42amman.com

@fhassoun I am sorry, I have to close the request without merging, because you made a mistake in a request and requested to merge too many files, most of them do not relate to the organization which you would like to add to this repository. Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for your understanding!


The type initializer for 'Tweetinvi.Auth' threw an exception.

I am trying to use Tweetinvi in my application and getting below error in production. Locally it works just fine. Any idea?
The type initializer for 'Tweetinvi.Auth' threw an exception.

Hello,
Could you specify which version of Tweetinvi you are using and what type of project.
Thanks,
Linvi

Hello,
I am using 3.0.0 version bin a .net core web app.
Regards,
Kshitij
On Thu, Apr 5, 2018, 5:43 PM linvi<EMAIL_ADDRESS>wrote:

Hello,
Could you specify which version of Tweetinvi you are using and what type
of project.
Thanks,
Linvi
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-379086005,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5Qv394Aa6sGUneB8LzxyOyc_CHlSI1ks5tlo_vgaJpZM4TC3Ic
.

Bin* =in sorry for typo. My pixel auto-correct :)
On Thu, Apr 5, 2018, 5:59 PM Kshitij Sharma<EMAIL_ADDRESS>wrote:

Hello,
I am using 3.0.0 version bin a .net core web app.
Regards,
Kshitij
On Thu, Apr 5, 2018, 5:43 PM linvi<EMAIL_ADDRESS>wrote:

Hello,
Could you specify which version of Tweetinvi you are using and what type
of project.
Thanks,
Linvi
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-379086005,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5Qv394Aa6sGUneB8LzxyOyc_CHlSI1ks5tlo_vgaJpZM4TC3Ic
.

Have you got any solutions for this, Im looking at the same error in a normal .net 4.6.1 project.

Ah no. Not yet :(.
The issue is it work fine locally but on server it throws this auth error..
Kshitij
On Wed, Apr 18, 2018 at 9:26 AM Bertelsen<EMAIL_ADDRESS>wrote:

Have you got any solutions for this, Im looking at the same error in a
normal .net 4.6.1 project.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-382385507,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5Qvxmi-4kgBmnJix7ED9X1zOXkUhttks5tpz77gaJpZM4TC3Ic
.

Hmm thats weird, for me what solved it was to install the correct version of System.Net.Http  (4.3.2 in my case.) in the project.

Hmm I think I tired it. I'll check the version and confirm.
Thanks for the pointer.
Kshitij
On Wed, Apr 18, 2018, 9:52 AM Bertelsen<EMAIL_ADDRESS>wrote:

Hmm thats weird, for me what solved it was to install the correct version
of System.Net.Http (4.3.2 in my case.) in the project.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-382393718,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5QvzK6JFyZj9-GIyNKNmTjjHNX_QPOks5tp0UJgaJpZM4TC3Ic
.

Hello guys,
Could you please let me know how you fixed it? Did you need to manually add System.Net.Http via nuget?
Thanks,
Linvi

Hi,
The above solution to use specific version of System.Net.Http doesn't work for me. I am still stuck. It works in local dev environment but doesn't work when I publish my code on my AWS server.
Thanks,
Kshitij

Could you please share more information as to which AWS service you are trying to use.
I will try to verify and ensure AWS compatibility in the coming months.
Did you check the logs and found out that it was the same issue that was appearing?
Can you provide the logs?
Can you share the code, or at least a project that I can use to reproduce the problem.
Thanks,
Linvi

Hi @linvi ,
I am using AWS Virtual server to host my .net core based application (www.kshitijsharma.net). The log says exactly what I mentioned in the error earlier. I'll try to fetch log.  Also will try to setup a sample project with the code am using.
Thanks,
Kshitij

Could you please specify the type of virtual server that you are using?

I also still have this issue. I am using AWS servers to host my web
application
Thanks,
Kshitij
On Tue, Feb 5, 2019 at 3:12 AM linvi<EMAIL_ADDRESS>wrote:

Could you please specify the type of virtual server that you are using?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-460547996,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5QvwNOALmIEdwRwXUyVs5tKQ0OVa01ks5vKTzVgaJpZM4TC3Ic
.

@kshitijsharmanet I need to know what type of Virtual Server you are using and which version of .NET Core your project targets.
Without those 2 information I won't be able to help you further.

It's a windows based Virtual server and I am targeting .NET Core 1.1
On Tue, Feb 5, 2019 at 12:00 PM linvi<EMAIL_ADDRESS>wrote:

@kshitijsharmanet https://github.com/kshitijsharmanet I need to know
what type of Virtual Server you are using and which version of .NET Core
your project targets.
Without those 2 information I won't be able to help you further.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682#issuecomment-460717227,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj5Qvx8n-pJnKl72B2pKSSnm3Kcsxzf0ks5vKbibgaJpZM4TC3Ic
.

I deleted System.Net.Http package from nuget manager and it worked.

Sorry for that too long reply. I don't know if you managed to solve your problem, did you check the clock on the server?
Tweetinvi uses the local clock of the machine to encode the request as per Twitter specification. If the clock is not properly configured, requests will not be properly created.

Can you please elaborate on what you mean? Server is a virtual machine
hosted on AWS. It has India time zone set.
Thanks,
Kshitij
On Sun, Jul 14, 2019 at 7:37 PM linvi<EMAIL_ADDRESS>wrote:

Sorry for that too long reply. I don't know if you managed to solve your
problem, did you check the clock on the server?
Tweetinvi uses the local clock of the machine to encode the request as per
Twitter specification. If the clock is not properly configured, requests
will not be properly created.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682?email_source=notifications&email_token=AI7FBP3PXZGYSLIJS6QNO6DP7O2EVA5CNFSM4EYLOIOKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ4PS2Y#issuecomment-511244651,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AI7FBPZCZFUS4P35HDNQ4W3P7O2EVANCNFSM4EYLOIOA
.

TimeZone and Time are actually required to be at a correct timezone.
If not Twitter will reject the request.
Tweetinvi default behaviour for retrieving the time is to use the host machine time. Hence if the time on the machine is not correct Twitter will reject the requests.

So what is your suggestion? Should I set timezone to Eastern since I am in
Eastern Time Zone? The server is hosted in East Asia AWS data center.
On Sun, Jul 21, 2019 at 6:43 PM linvi<EMAIL_ADDRESS>wrote:

TimeZone and Time are actually required to be at a correct timezone.
If not Twitter will reject the request.
Tweetinvi default behaviour for retrieving the time is to use the host
machine time. Hence if the time on the machine is not correct Twitter will
reject the requests.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/682?email_source=notifications&email_token=AI7FBPZ5QKYR3B2JVCYTYQDQATRA5A5CNFSM4EYLOIOKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2ONERQ#issuecomment-513593926,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AI7FBP6UWQ2ABK4C2IUTKFLQATRA5ANCNFSM4EYLOIOA
.

I am not sure I would have to try tweetinvi with aws eastern region.


[folly]: fix lib dependency

Describe the pull request

What does your PR fix?
Fixes #...
folly's some targets dependency is not right.

Which triplets are supported/not supported? Have you updated the CI baseline?
<all / linux, windows, ...>, <Yes/No>

Does your PR follow the maintainer guide?
Your answer

If you have added/updated a port: Have you run ./vcpkg x-add-version --all and committed the result?
<Yes / I am still working on this PR>

If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/

Big thanks to dg0yt, I will have a look.

Ping @jiayuehua for response, could you please resolve the conflicts? And if this PR is ready for review, please ping us.

@LilyWangLL ok , I will resolve conflicts first.
not ready for review yet, some dependency lib installed by vcpkg couldn't be found through find_package, I will fire some issue soon.

Pinging @jiayuehua for response. Is work still being done for this PR?

yes， just a little busy recently. I will have a look soon.

@LilyWangLL finally , ready for review.


Integer array support in class_parser

Thx, I'll have a look at the changes as soon as time permits.

Merged the changes manually. Also corrected many style changes that were not necessary.


Support for jetty http client

Hello All,
I am trying to add some example code in "net.powermatcher.examples" in my test file where http client request are made. below method is called from PVPanelAgent.java activate method.
private void testHttpGet() {
    CloseableHttpResponse response = null;
    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    String uri = "http://localhost:7070/example";

    HttpGet get = new HttpGet(uri);
    try {
        response = httpClient.execute(get);
        int status = response.getStatusLine().getStatusCode();
        System.out.println("Got the Resonse status: " + status);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Also updated net.powermatcher.examples.bnd.bnd file with jar files entry
-buildpath: \
	${pm-buildpath},\
	net.powermatcher.core;version=latest,\
	org.apache.felix.http.servlet-api,\
	org.apache.httpcomponents.httpclient,\
	org.apache.httpcomponents.httpcore,\
	com.google.gson,\
	org.apache.commons.io
Bundle-Version: 2.0.1.${tstamp}
Private-Package:  net.powermatcher.examples*
Service-Component:  *

After this source is comping and when I run I see below error:

could not resolve the bundles: [net.powermatcher.examples-<IP_ADDRESS>605091244Unresolved constraint in bundle net.powermatcher.examples [8]: Unable to resolve 8.0: missing requirement [8.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.http)(version>=4.3.0)(!(version>=5.0.0)))
]
Failed to start bundle net.powermatcher.examples-<IP_ADDRESS>605091244, exception Unresolved constraint in bundle net.powermatcher.examples [8]: Unable to resolve 8.0: missing requirement [8.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.http)(version>=4.3.0)(!(version>=5.0.0)))

Not sure how to fix this.
What is the right process to add new libraries in powermatcher source?
Thanks for the support.

Hi athukuria,
Thanks for getting in touch with us! For me it is not entirely clear what you are trying to achieve. You want to make a HTTP call from within your agent code? In that case it would make sense to use a library.
There are two ways to do that:

Add an OSGi bundle as dependency: Just add the jar to your local repository (you can drag and drop a jar file in Eclipse)
Include the JAR in your bundle: If the JAR you want to use is not a OSGi bundle, the easiest solution is to include it in your bundle.

To include a JAR in your bundle:

Create a lib directory in your Eclipse Project and add the jar to it
Tell BND to include the library in your bundle by adding this line to bnd.bnd:

Include-Resource: lib/yourlibrary.jar

Add the jar with version=file to your buildpath in bnd.bnd:

-buildpath: \
    ${pm-buildpath},\
    lib/yourlibrary.jar;version=file

Hope this helps!

@wilcowijbrandi thanks for the reply, I have solved the above problem with adding http Servlets and changing versions.
Now I am trying to add a sqlite-jdbc-3.7.2.jar library in net.powermatcher.remote.websockets\lib
here is my bnd.bnd file:
-buildpath:
${pm-buildpath},
net.powermatcher.core;version=latest,
com.google.gson,
org.apache.felix.http.servlet-api;version=latest,
org.apache.felix.http.jetty;version=latest,
lib/sqlite-jdbc-3.7.2.jar;version=file
-includeresource:
{OSGI-INF/permissions.perm=permissions.perm},
lib/sqlite-jdbc-3.7.2.jar,
../cnf/gradle/LICENSE.txt
-sub: *.bnd
Even after this I see below exception:
java.lang.ClassNotFoundException: org.sqlite.JDBC not found by net.powermatcher.remote.websockets.client [11]
java.lang.ClassNotFoundException: org.sqlite.JDBC not found by net.powermatcher.remote.websockets.client [11]
Do I need to add different library !? This library works in normal Java application.
Tha ks for the support.

I have taken sqlite-jdbc-<IP_ADDRESS>.jar which is a osgi bundle. added in cnf/ext/repositories.bnd file as
-pluginpath: ${workspace}/cnf/gradle/bnd/sqlite-jdbc-<IP_ADDRESS>.jar still no effect.


Allowing the user to select a portion of a library video that is over the maximum length

I'm currently looking to restrict the selected video length to 15 seconds, but without simply truncating the video beyond the first 15 seconds. Is there a configuration that will allow the user to choose a video from their library, and use the trimmer to select exactly which 15 seconds of the video they would like to use? I have tried the following configuration settings:
config.video.libraryTimeLimit = .infinity
config.video.trimmerMaxDuration = 15.0
But when selecting a video from the library that is longer than 15 seconds, the library just provides the user with the first 15 seconds of the video at which point they are provided with the trimmer interface to trim that segment even further. However, if the user wants to select a 15 second segment from, say, the middle or the end of a long video, that does not appear to be possible.
The current functionality seems counterintuitive to me and indeed is not how the video trimmer in popular applications like Instagram works.

YPImagePicker use https://github.com/HHK1/PryntTrimmerView
You can contribute in PryntTrimmerView so the YPImagePicker will get this functional too. 🙂


Module pattern documentation

We need some documentation on encouraged conventions for publishing new modules to Helpful UI or to be used with Helpful UI.  This includes things like always allowing an "enabled" option for users who want omit particular modules from being bulk-loaded.

No longer a necessary requirement for this project, would be better suited for the HelpfulUI-Elements.


{Synapse}az synapse spark pool create: Check if spark pool exists before creating.

Related command

Description

Fix a bug. https://dev.azure.com/msdata/A365/_workitems/edit/2297711/
Now if the spark pool is existing, cmdlet will update the existing spark pool. That's not what user want.
So add a check logic before create.
Testing Guide

History Notes

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

Synapse


Add molecule tests, Jenkinsfile

Add Python requirements files
Add ansible-lint configuration file
Use cache_dir from ccache_config_options
Add molecule tests
Set and verify group for created files/dirs
Add Jenkinsfile
Build pushes and pull requests on main branch
Version 0.0.2

@nre-ableton I'm interested in reviewing this PR, thanks!


Reviewer comment on biomass variables

From a reviewer:
Biomass terms are used to label perhaps a majority of the records, but the labels used are highly ambiguous and need clarification.  A significant fraction of the data records are labelled as “Biomass_ag” – what was measured?. just woody stems? also understory?. grasses/mosses?.   “Biomass_total” – this is used for many records, but I doubt all components of aboveground and belowground biomass were actually assessed (particularly belowground, to max. soil depth).  Again, while some additional info on this is given for a subset of the records in the supplementary METHODOLOGY table, I think instead the term in the MEASUREMENTS table used to describe the datum needs to be specific.

Response:
The database characterizes the most important methodological variables influencing biomass:

minimum DBH- the min.dbh covariate is used to record the minimum dbh censused for biomass estimates. It is a required covariate for all biomass variables (and many others). When all plants that reach breast height are censused, min.dbh =0. The database does not record have a formal structure for distinguishing whether herbaceous plants/ grasses/ mosses were included in biomass estimates, although this is often included in the methodology table or measurement notes. However, in most forest ecosystems, these are a very minor biomass component.
biomass allometry - the allometric equation used for biomass estimates is important and influential. This is recorded through the allometry_1 and (if applicable) allometry_2 fields in MEASUREMENTS.
Root biomass estimates are influenced by allometries (coarse roots), the minimum tree size included in the estimate (coarse roots), sampling depth, and the range of root diameters included in the measurements. All of these are required covariates.


docs: fix typo recipies -> recipes

Q
A

Bug fix?
✖

New feature?
✖

Breaking change?
✔

Deprecations?
✖

Documentation?
✔

Tests added?
✖

Types added?
✖

Related issues

Changes label in sidebar from "Recipies" to "Recipes" and updates associated routes. May be loosely treated as breaking change as it changes a URL in the docs.

Deployed to the production site 🙏


feat: add Series|Expr.rolling_sum method

What type of PR is this? (check all applicable)

[ ] 💾 Refactor
[x] ✨ Feature
[ ] 🐛 Bug Fix
[ ] 🔧 Optimization
[ ] 📝 Documentation
[ ] ✅ Test
[ ] 🐳 Other

Related issues

Related issue #1254
Closes #1367

Checklist

[x] Code follows style guide (ruff)
[x] Tests added
[x] Documented the changes

If you have comments or can explain your changes, please do so below
So I wanted to start with sum, assuming it would have been simpler for arrow to implement in a way which is not naive.
Running some benchmarks, performances of this with 1M rows is in the same ballpark of pandas, while the naive way in #1290 is orders of magnitude slower. I would consider this the way to go forward.

Love the creativity here
I tried running this hypothesis test
from hypothesis import given
import hypothesis.strategies as st
import pyarrow as pa
import pandas as pd

@given(
    center = st.booleans(),
    values = st.lists(st.floats(-10, 10), min_size=3, max_size=10),
)
@pytest.mark.filterwarnings('ignore:.*:narwhals.exceptions.NarwhalsUnstableWarning')
def test_rolling_sum_hypothesis(center: bool, values: list[float]) -> None:
    s = pd.Series(values)
    n_missing = random.randint(0, len(s)-1)
    window_size = random.randint(1, len(s))
    min_periods = random.randint(0, window_size)
    mask = random.sample(range(len(s)), n_missing)
    s[mask] = None
    df = pd.DataFrame({'a': s})
    expected = s.rolling(window=window_size, center=center, min_periods=min_periods).sum().to_frame('a')
    result = nw.from_native(pa.Table.from_pandas(df)).select(nw.col('a').rolling_sum(window_size, center=center, min_periods=min_periods))
    expected_dict = nw.from_native(expected, eager_only=True).to_dict(as_series=False)
    assert_equal_data(result, expected_dict)

and it's picking up some small inconsistencies:
In [19]: s
Out[19]:
0    0.0
1    NaN
2    0.0
dtype: float64

In [20]: s.rolling(min_periods=0, center=False, window=2).sum()
Out[20]:
0    0.0
1    0.0
2    0.0
dtype: float64

In [21]: nw.from_native(pa.chunked_array([s]), series_only=True).rolling_sum(min_periods=0, center=False, window_size=2).to_native()
Out[21]:
<pyarrow.lib.ChunkedArray object at 0x7f7cd5793ee0>
[
  [
    null,
    null,
    null
  ]
]

In [22]: nw.from_native(pl.from_pandas(s), series_only=True).rolling_sum(min_periods=0, center=False, window_size=2).to_native()
Out[22]:
shape: (3,)
Series: '' [f64]
[
        0.0
        0.0
        0.0
]

Love the creativity here
I tried running this hypothesis test
from hypothesis import given
import hypothesis.strategies as st
import pyarrow as pa
import pandas as pd

@given(
    center = st.booleans(),
    values = st.lists(st.floats(-10, 10), min_size=3, max_size=10),
)
@pytest.mark.filterwarnings('ignore:.*:narwhals.exceptions.NarwhalsUnstableWarning')
def test_rolling_sum_hypothesis(center: bool, values: list[float]) -> None:
    s = pd.Series(values)
    n_missing = random.randint(0, len(s)-1)
    window_size = random.randint(1, len(s))
    min_periods = random.randint(0, window_size)
    mask = random.sample(range(len(s)), n_missing)
    s[mask] = None
    df = pd.DataFrame({'a': s})
    expected = s.rolling(window=window_size, center=center, min_periods=min_periods).sum().to_frame('a')
    result = nw.from_native(pa.Table.from_pandas(df)).select(nw.col('a').rolling_sum(window_size, center=center, min_periods=min_periods))
    expected_dict = nw.from_native(expected, eager_only=True).to_dict(as_series=False)
    assert_equal_data(result, expected_dict)

and it's picking up some small inconsistencies:
In [19]: s
Out[19]:
0    0.0
1    NaN
2    0.0
dtype: float64

In [20]: s.rolling(min_periods=0, center=False, window=2).sum()
Out[20]:
0    0.0
1    0.0
2    0.0
dtype: float64

In [21]: nw.from_native(pa.chunked_array([s]), series_only=True).rolling_sum(min_periods=0, center=False, window_size=2).to_native()
Out[21]:
<pyarrow.lib.ChunkedArray object at 0x7f7cd5793ee0>
[
  [
    null,
    null,
    null
  ]
]

In [22]: nw.from_native(pl.from_pandas(s), series_only=True).rolling_sum(min_periods=0, center=False, window_size=2).to_native()
Out[22]:
shape: (3,)
Series: '' [f64]
[
        0.0
        0.0
        0.0
]

Well ok min_periods = min_periods or window_size evaluates to 2, because of 0 or 2. Let me adjust

I would tend towards restricting the API to:

window_size strictly positive
min_periods either None or strictly positive

and raise in other cases.

thanks - shall we also include the hypothesis test?


Update Diagrams for ATO

As the SA&A process needs update the Logical Diagram to reflect all the resources under consideration.

Done.


gopass fsck tries to delete a directory containing symlinks

Summary
A directory containing symlinks to other secrets is considered empty.
Steps To Reproduce
Create a tree within the password store like:
├── amazon.com
│   ├── user1.gpg
└── amazon.in
    ├── user1.gpg -> ../amazon.com/user1.gpg

Run gopass fsck
Output seen is:
[] Folder /Users/logn/.password-store/websites/shop/amazon.in is empty. Removing

fsck failed on root store: storage backend found errors: remove /Users/logn/.password-store/websites/shop/amazon.in: directory not empty: remove /Users/logn/.password-store/websites/shop/amazon.in: directory not empty

Expected behavior
fsck does not complain.
Environment

OS: Mac OS X
OS version: Darwin
gopass Version: gopass 1.8.5 (dd169b82e713c09f31fa6919342543163b5894f3 2019-04-21 21:00:41) go1.12.4 darwin amd64
Installation method: brew

Additional context

Add correspondence to revert marking the issue as stale.


Immediate crash on Macbook pro 10.14.6

My mac immediately freezes when I start Monitor Control 1.7.0, forcing me to reboot.
It was working fine before I updated to Mojave.
Sorry but I am not sure what is going on or how to find out...

What Monitor, GPU and cable are you using?

NVIDIA GeForce GT 750M:
Chipset Model:	NVIDIA GeForce GT 750M
Type:	GPU
Bus:	PCIe
PCIe Lane Width:	x8
VRAM (Total):	2 GB
Vendor:	NVIDIA (0x10de)
Device ID:	0x0fe9
Revision ID:	0x00a2
ROM Revision:	3776
Automatic Graphics Switching:	Supported
gMux Version:	4.0.8 [3.2.8]
Metal:	Supported, feature set macOS GPUFamily1 v4
Displays:
DELL U2412M:
Resolution:	1920 x 1200 (WUXGA - Widescreen Ultra eXtended Graphics Array)
UI Looks like:	1920 x 1200
Framebuffer Depth:	24-Bit Color (ARGB8888)
Display Serial Number:	Y1H5T29I1H1L
Main Display:	Yes
Mirror:	Off
Online:	Yes
Rotation:	Supported
Automatically Adjust Brightness:	No
Connection Type:	DisplayPort

Thanks for the detailed info!
Can you confirm that it did work on 1.6.0 or other versions?

I believe that MonitorControl 1.6.0 on the same system also crashed.
but it worked back in July, before I upgraded to Mojave.

Might be related to your Nvidia card then. My guess would be that the minReplyDelay is too high but I could be wrong, we'll need to look into this.
Your system freezes completely right? Like no mouse cursor movement either?

Yes, complete freeze, including the mouse, and I see nothing in the logs.

My guess is that the issue explained in this forum post is what’s happening:

The biggest issue is NVidia seems to interpret minReplyDelay differently; where a value of 30 * kMillisecondScale is appropriate for ATI/AMD and doesn't require running the same request several times, 30 is a more appropriate value for NVidia, and 0 still returns a garbage response. If true, this means that DDC Panel never actually KPed an NVidia machine, the kernel was simply waiting 1000 * 1000 times longer for the DDC/CI reply.
Timing is very important for I2C buses as I've been reading, so a "good" value here is critical. If the reply is taken too early, the data will be garbage and fail to checksum, too long and it may mimic a Kernel Panic. Running several successful requests in series is the only real test. Feel free to try different values and report back.
I've also started polishing the app, removing unnecessary entries, and following code guidelines.

So we’d have to play around with a shorter delay and give you a test build to see if that fixes it.
You could also test this yourself using kfix/ddcctl.

Hello, 'ddcctl' does not crash, and detect the monitor, but the brightness does not change. Is there something you would like me to try?
mac:ddcctl-master$ ./ddcctl -d 1 -b 1
D: NSScreen #724053908 (1920x1200 0°) 94.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: Y1H5T29I1H1L
I: got edid.name: DELL U2412M
D: action: b: 1
D: setting VCP control #16 => 1
mac:ddcctl-master$ ./ddcctl -d 1 -b 100
D: NSScreen #724053908 (1920x1200 0°) 94.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: Y1H5T29I1H1L
I: got edid.name: DELL U2412M
D: action: b: 100
D: setting VCP control #16 => 100

Yes, please test changing volume too as brightness is less prone to causing issues than volume. :)

It did not crash, but this monitor has no speakers, as far as I know.
mac:ddcctl-master$ ./ddcctl -d 1 -v 10
D: NSScreen #724053908 (1920x1200 0°) 94.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: Y1H5T29I1H1L
I: got edid.name: DELL U2412M
D: action: v: 10
D: setting VCP control #98 => 10

Hmm might be difficult to debug.. could you try a few of the previous versions and let me know if any of them work? Make sure to test 1.4.0

I had this issue on a 650M and same Dell U2412M monitor on 2.0.0 I can confirm 1.4.0 works.

I'm going to close this one as we will continue tracking this issue in #193


Extend Header Test to .wbproj

fix: #591

[x] Update test.
[x] update .wbproj
[x] Make sure .wbproj update from before R2018 are valid.
[x] Extend test_project_structure to detect useless wbproj files.
[x] removed useless wbproj file

I also improved the tests to detect wbproj files not associated to any wbt file (we had several of them).

:+1:


Cannot load resource with ArcGislink.js

I am trying to load an ArcGis layer onto a google-map-v3.
It is a fairly standard ArcGis resource published by UNEP at http://ec2-54-204-216-109.compute-1.amazonaws.com:6080/arcgis/rest/services/wdpa/wdpa/MapServer/0?f=pjson
arcgislink.js is expecting the resource to contain a json.SpatialReference, but it only has a json.extents.SpatialReferemce.
Also, arcgislink.js is expecting json.layers[] and json.tables[], but neither of these appear in the resource.
I can't see any activity on this project for some years. Is it still a viable utility?
Are there alternatives I should consider or is is just not intended to handle this type of resource?

I had the wrong resource - adding /0 to the end of the URL is already inside a layer.
So using instead: http://ec2-54-204-216-109.compute-1.amazonaws.com:6080/arcgis/rest/services/wdpa/wdpa/MapServer?f=pjson
Works much better.


Fix single arg wildcard probe listings

We regressed on single arg wildcard probe listings. eg.
# bpftrace -l '*sleep*'

We should support this b/c the docs have said we support this.
Even bpftrace --help shows the above example.
This fixes #1773.
Checklist

[ ] Language changes are updated in docs/reference_guide.md
[x] User-visible and non-trivial changes updated in CHANGELOG.md
[x] The new behaviour is covered by tests

cc @viktormalik


Can't Shoot Arrows

Nexus Bug Report:Link
User Reported: Awkakelen
Recreatable: Not yet Tested. Just transferred the report.

Unable to recreate, closing.


Fixed state issues with user type/state

We were not making use of selector pattern for member/host/logged in
user statuses. We were setting local state with this.setState() which is
only ok when dealing with component state that doesn't need to persist
past a page refresh.

@rperez2021 & @MarchosiasM I wanted you guys to checkout what I did with state here. essetnially while hacking out the chat feature I found that we were abusing setState a little.
Let me know what you guys think or if there are any issues with the PR. thanks!
I would also encourage everyone to check these out...
redux & setState()
hackernoon: selector pattern


Implementing Hub Class

I'm using serverless with ASP.NET Core SignalR, and I'm wondering, how would I use my own hub implementation?
var serviceManager = new ServiceManagerBuilder()
                .WithOptions(option =>
                {
                    option.ConnectionString = signalRConnectionString;
                    option.ServiceTransportType = ServiceTransportType.Persistent;
                })
                .Build();

IServiceHubContext simpleChatHubContext = await
serviceManager.CreateHubContextAsync("simplechat");

The Hub returned from ServiceManager builds is implmentated as an internal class of ServiceHubContext.
How would I implement and use my own Hub logic, similar to below, instead?
public class ChatHub : Hub
{
        public void BroadcastMessage(string name, string message)
        {
            Clients.All.SendAsync("broadcastMessage", name, message);
        }
}

It's worth noting, the documentation states business logic should be in your hub classes, which leads me to believe it may be possible.

Hi @kwasak , the document for Management SDK can be found here.
You can send messages like this:
simpleChatHubContext.Clients.All.SendAsync("broadcastMessage", name, message);

Quick start can be found here.
Samples can be found here.

Thank you @realwanpengli


Moving from m2r and numpydoc to recommonmark.

Completes #14

Pull Request Test Coverage Report for Build 62

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.21%

Totals

Change from base Build 61:
0.0%

Covered Lines:
965

Relevant Lines:
1058

💛  - Coveralls


New addons issues

When i add a new addon the price, icon and description aren't saved

Checking on this.

That is a bug. Will be fixed in next version.


Move example sketch to appropriately named folder

The Arduino IDE requires the sketch folder name to match the filename of the primary sketch file. This change causes the example sketch to be accessible via the Arduino IDE's File > Examples > LIBRARYNAME menu after the library is installed.

Hello @ per1234, this project is not finished yet and it is still in the development stage and I have to go back to finish it and publish an initial release. Thanks for your suggestions, I will take them into account when the development continues.


chore: fix cargo clippy warnings

Changes

Fix warnings generated by cargo clippy.

Checklist

[ ] An issue to be fixed by this PR is listed above.
[ ] New tests are added to ensure new features are working. Please refer to this page to see how to add a test.
[ ] ./frb_internal precommit --mode slow (or fast) is run (it internal runs code generator, does auto formatting, etc).
[ ] If this PR adds/changes features, documentations (in the ./website folder) are updated.
[x] CI is passing. Please refer to this page to see how to solve a failed CI.

Remark for PR creator

./frb_internal --help shows utilities for development.
If fzyzcjy does not reply for a few days, maybe he just did not see it, so please ping him.

Great job!
Btw, you can bump the versions here to let the newest clippy check the code in CI https://github.com/fzyzcjy/flutter_rust_bridge/blob/e38d1b207f4e1117d4c336e8286cc3c8fddb6c13/.github/workflows/ci.yaml#L12-L14

Great job!
Btw, you can bump the versions here to let the newest clippy check the code in CI
https://github.com/fzyzcjy/flutter_rust_bridge/blob/e38d1b207f4e1117d4c336e8286cc3c8fddb6c13/.github/workflows/ci.yaml#L12-L14

Done :)

@fzyzcjy After updating Rust version, some lints clippy provides contradict with `./frb_internal generate-internal".

For the non existent os thing: Maybe we can change https://github.com/fzyzcjy/flutter_rust_bridge/blob/e38d1b207f4e1117d4c336e8286cc3c8fddb6c13/tools/frb_internal/lib/src/frb_example_pure_dart_generator/misc_generator.dart#L28 which drives generate-internal

@fzyzcjy What about this one?
-            format!("send data to sink msg={msg}");
+            info!("send data to sink msg={msg}");

clippy complains about format!() with return value unused, while generate-internal complains about info!()

If you mean https://github.com/fzyzcjy/flutter_rust_bridge/blob/e38d1b207f4e1117d4c336e8286cc3c8fddb6c13/frb_example/pure_dart/rust/src/api/stream_misc.rs#L26 and neighbors - sure! That looks like a typo and we should use info.
Change things in https://github.com/fzyzcjy/flutter_rust_bridge/tree/e38d1b207f4e1117d4c336e8286cc3c8fddb6c13/frb_example/pure_dart manually, and generate-internal will generate things in frb_example/pure_dart_pde


Feature eks credentials

This PR updates the existing container credential fetcher to support retrieving credentials from EKS

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

Comparison is base (b0c6a76) 93.46% compared to head (9cf1925) 93.46%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #3044   +/-   ##
========================================
  Coverage    93.46%   93.46%
========================================
  Files           66       66
  Lines        14007    14027   +20
========================================
+ Hits         13091    13111   +20
  Misses         916      916

Files
Coverage Δ

botocore/credentials.py
98.45% <100.00%> (+0.01%)
:arrow_up:

botocore/utils.py
79.54% <100.00%> (+0.11%)
:arrow_up:

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


define clikit as a direct dependency

this is not a fix for https://github.com/sdispater/poetry/issues/1497 but it's the right thing to do, and will avoid similar problems in the future. in general, the rule of thumb is that if you are directly importing something, then it needs to be specified as a direct dependency, and not rely on transitivity to be there (because it also might introduce silent breaking changes, see #1497)

Thanks!
This has already been fixed on master, so I am closing this.

awesome 💪


Deploy statically instead of dynamically

This can help alleviate some small pains:

Deployment of the hyprland-website can happen in GitHub Pages's deployment system instead of on some other server (allowing release cycles to happen closer to the website's development, as well as lowering the bar for testing on forks)

This also adds the benefit of being able to browse previous artifacts

Additional post-processing steps (e.g. lightningcss) can be added during compile-time instead of being served in run-time with express

One static site generator I'm particularly fond of is lume, written with the Deno runtime but allows for more advanced generation features in a simple package without overloading new contributors with the need to learn new frameworks or configuration systems (unlike what was suggested in #17).
If you're open to this idea, I'm fully ok with making a PR to refactor the site to use Lume or some other static site generator alternatives such as the more heavier but robust gatsby. Just leave a comment or react appropriately:+1:.

christ, why.

That is precisely why I hate webdev. Can't have a single open source website without hordes of people coming to rewrite everything in something else which adds zero value to it.
And people still ask me why the wiki's backend is closed source.

All good! Sorry for the extra clutter in that message - all I really meant was moving it to Github Pages instead of you having to manually deploy it per commit (with the necessity of some preprocessing tool for EJS -> raw assets), but I'm sure you have your reasons :+1:

I was against using ejs anyways, all my personal websites are written in pure html + css + js.
It really does not matter, it's a small landing page, it's splitting hairs at that point.
And no, we won't move to gh pages.


🌐 Add Portuguese translation for docs/pt/docs/tutorial/request-form-models.md

fresh feature, fresh translation 😸

@cassiobotaro, @marcelomarkus, are you available to review and approve the changes to make the pull request ready for merge?

Thanks for your contribution! @ceb10n :medal_sports:
And thanks to everyone else for the reviews :mag:


Error creating Populator Pod

Describe the bug
Deployment of Cephlet has issue to create populator Pod
To Reproduce

Deploy cephlet

Create volume with following manifest.

apiVersion: storage.api.onmetal.de/v1alpha1
kind: Volume
metadata:
  name: test-volume-2
  namespace: tsi
spec:
  volumePoolRef:
    name: ceph
  volumeClassRef:
    name: fast
  image: ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8
  resources:
    storage: 15Gi

Error Observer
2023-02-21T10:22:13Z	ERROR	Reconciler error	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "122693de-b181-40f5-867d-8a141913ea33", "error": "could not create populator pod: Pod \"populate-17961ef1-9f2a-45b8-b49b-5e5791bc541d\" is invalid: spec.containers[0].image: Required value"}
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:329
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:274
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:235
2023-02-21T10:22:54Z	INFO	Reconciling PVC	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "ab320c25-cac6-4e12-a9b8-309de2b2f9f3"}
2023-02-21T10:22:54Z	INFO	Found datasource ref for PVC	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "ab320c25-cac6-4e12-a9b8-309de2b2f9f3", "DataSourceRef": "&TypedObjectReference{APIGroup:*storage.api.onmetal.de/v1alpha1,Kind:Volume,Name:sample-volume-2,Namespace:nil,}"}
2023-02-21T10:22:54Z	INFO	Found volume as datasource ref for PVC	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "ab320c25-cac6-4e12-a9b8-309de2b2f9f3", "Volume": {"namespace": "rook-ceph", "name": "sample-volume-2"}}
2023-02-21T10:22:54Z	INFO	Found StorageClass for PVC	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "ab320c25-cac6-4e12-a9b8-309de2b2f9f3", "StorageClass": {"name": "volume-rook-ceph--ceph"}}
2023-02-21T10:22:54Z	ERROR	Reconciler error	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "ab320c25-cac6-4e12-a9b8-309de2b2f9f3", "error": "could not create populator pod: Pod \"populate-17961ef1-9f2a-45b8-b49b-5e5791bc541d\" is invalid: spec.containers[0].image: Required value"}
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:329
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:274
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:235
2023-02-21T10:24:16Z	INFO	Reconciling PVC	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "943e4fb3-c071-49b0-9b15-c633a05cd5f9"}

Additional context

Image is not getting set for populator pod. Populator pod fails and volume gets stuck in pending state

@pradumnapandit what is your cephlet's command line configuration for --populator-image?

Image passed as ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8

@pradumnapandit does it fail with the above error or another error?

@adracus getting error as populator pod failed:
2023-02-21T09:30:30Z	ERROR	Reconciler error	{"controller": "persistentvolumeclaim", "controllerGroup": "", "controllerKind": "PersistentVolumeClaim", "PersistentVolumeClaim": {"name":"ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8","namespace":"rook-ceph"}, "namespace": "rook-ceph", "name": "ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8", "reconcileID": "cfc3c9c6-ac6d-44e9-b0a3-cc506cbfcf63", "error": "populator pod populator-system/populate-86e960aa-a97d-4ce3-ab54-750a2bc1d33e failed"}

@aditya-dixit99 what is the output of the populator pod? What image are you trying to populate? Is that image well-formed (i.e. has a rootfs layer)?

@adracus Image we tried to populate: ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8
Populator pod came for few seconds, and we were able to capture the logs for the same as:
2023-02-21T09:30:29Z	INFO	Starting image population
2023-02-21T09:30:36Z	INFO	Successfully populated device	{“Device”: “/dev/block”}```

Seems it has invalid rootfs in image configuration,

@adracus , can we get sample image? We got the above image from Hardik.

I'm mostly using ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test7 right now. I'm also inspecting the image you referenced. However, looking at the logs @aditya-dixit99 provided it seems the population is successful - is the state of the pod succeeded / do you have any any other watchdogs in your cluster that might clean up the pod prematurely?

Just checked the image ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8 and at least the metadata / layers look right.

@adracus docker pull ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8 is showing below error that's why we are not able to inspect the same.
root@master:~/cephlet# docker pull ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8
ign-test8: Pulling from hardikdr/onmetal-image/gardenlinux
1ae2163ce3ce: Pulling fs layer
3fc8162696d1: Pulling fs layer
629ef186a225: Pulling fs layer
invalid rootfs in image configuration

The populator pod vanishes before we could see the state but populator pod failed we got in cephlet logs.
Additionally, we don't have watchdog in cluster that can clean up the pod prematurely.

You can't docker pull an onmetal-image - those are two different formats. You need to use http://github.com/onmetal/onmetal-image for pulling & inspecting these images.
Regarding populator pod failed: This 'error' is produced if the population is not yet succeeded but still ongoing - is the volume in correct state after a while?

The volume state is in still  pending state.
root@master:/home/tux# kubectl get volume -A
NAMESPACE   NAME              VOLUMEPOOLREF   IMAGE                                                  VOLUMECLASS   STATE     PHASE     AGE
rook-ceph   sample-volume-2   ceph            ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8   fast          Pending   Unbound   91m

Can you please describe the Volume which is in the pending state?

Output of kubectl describe volume
root@master:/home/tux# kubectl describe volume sample-volume-2 -n rook-ceph
Name:         sample-volume-2
Namespace:    rook-ceph
Labels:       <none>
Annotations:  <none>
API Version:  storage.api.onmetal.de/v1alpha1
Kind:         Volume
Metadata:
  Creation Timestamp:  2023-02-21T10:21:37Z
  Managed Fields:
    API Version:  storage.api.onmetal.de/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:kubectl.kubernetes.io/last-applied-configuration:
      f:spec:
        f:image:
        f:resources:
          .:
          f:storage:
        f:volumeClassRef:
        f:volumePoolRef:
      f:status:
        f:phase:
        f:state:
    Manager:         kubectl-client-side-apply
    Operation:       Update
    Time:            2023-02-21T10:21:37Z
  Resource Version:  93
  UID:               cffca656-932e-4318-bc5b-084349c6bd55
Spec:
  Image:  ghcr.io/hardikdr/onmetal-image/gardenlinux:ign-test8
  Resources:
    Storage:  15Gi
  Volume Class Ref:
    Name:  fast
  Volume Pool Ref:
    Name:  ceph
Status:
  Phase:  Unbound
  State:  Pending
Events:   <none>

Okay. That looks fine so far.
Can you also check the corresponding PVCs & PVs from the Volume itself and from the Snapshot?

You might also find some insights by checking the csi-rbdplugin & csi-rbdplugin-provisioner logs.

PVC is not getting created.
root@master:/home/tux# kubectl get pvc -A
NAMESPACE        NAME                                                   STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS             AGE
onmetal-system   etcd-data-dir-onmetal-etcd-0                           Bound     pvc-cf59c4fe-82c7-4ccd-ab31-3a2dad8ea13d   1Gi        RWO            local-path               5h26m
rook-ceph        ghcr.io-hardikdr-onmetal-image-gardenlinux-ign-test8   Pending                                                                        volume-rook-ceph--ceph   108m

Additionally we checked logs for snapshot-controller pod as
I0221 12:12:42.078454       1 reflector.go:243] Listing and watching *v1beta1.VolumeSnapshot from github.com/kubernetes-csi/external-snapshotter/client/v3/informers/externalversions/factory.go:117
E0221 12:12:42.079788       1 reflector.go:127] github.com/kubernetes-csi/external-snapshotter/client/v3/informers/externalversions/factory.go:117: Failed to watch *v1beta1.VolumeSnapshot: failed to list *v1beta1.VolumeSnapshot: the server could not find the requested resource (get volumesnapshots.snapshot.storage.k8s.io)
I0221 12:12:42.903894       1 reflector.go:369] github.com/kubernetes-csi/external-snapshotter/client/v3/informers/externalversions/factory.go:117: forcing resync
I0221 12:13:06.956191       1 reflector.go:243] Listing and watching *v1beta1.VolumeSnapshotClass from github.com/kubernetes-csi/external-snapshotter/client/v3/informers/externalversions/factory.go:117
E0221 12:13:06.957974       1 reflector.go:127] github.com/kubernetes-csi/external-snapshotter/client/v3/informers/externalversions/factory.go:117: Failed to watch *v1beta1.VolumeSnapshotClass: failed to list *v1beta1.VolumeSnapshotClass: the server could not find the requested resource (get volumesnapshotclasses.snapshot.storage.k8s.io)

Okay, we checked in csi-rbdplugin and csi-rbdplugin-provisioner but didn't found anything specific.

At the moment the cephlet only creates a PVC and the actual storage provisioning is done by the ceph-csi.  So if the PVC is pending so the Volume is in pending.

Ah, just spotted this in your attached logs:
Failed to watch *v1beta1.VolumeSnapshotClass: failed to list *v1beta1.VolumeSnapshotClass: the server could not find the requested resource (get volumesnapshotclasses.snapshot.storage.k8s.io)

The reason for the problem is that volumesnapshotclasses.snapshot.storage.k8s.io are not present.

volumesnapshotclasses.snapshot.storage.k8s.io is present.
Following is way to see it right?
root@master:/home/tux# kubectl get volumesnapshotclasses -A
NAME                     DRIVER                       DELETIONPOLICY   AGE
volume-rook-ceph--ceph   rook-ceph.rbd.csi.ceph.com   Delete           5h9m

Can you please list the known api-resources? You need to have volumesnapshotclasses.snapshot.storage.k8s.io/v1

@lukasfrank here is the output:
root@master:/home/tux# kubectl api-resources  | grep "snapshot.storage.k8s.io"
volumesnapshotclasses             vsclass,vsclasses   snapshot.storage.k8s.io/v1             false        VolumeSnapshotClass
volumesnapshotcontents                                snapshot.storage.k8s.io/v1beta1        false        VolumeSnapshotContent
volumesnapshots                   vs                  snapshot.storage.k8s.io/v1             true         VolumeSnapshot

Okay, as you can see there is a version mismatch:
CSI: VolumeSnapshotClass  v1beta1
Installed:  VolumeSnapshotClass v1
Make sure volumesnapshotclasses, volumesnapshotcontents and volumesnapshots are in the cluster present and have api version v1. Furthermore the  CSI and the snapshotter must match/reference this version.
I will close the issue for now, since it's not cephlet related. Feel free to reopen if you can verify that we have an issue in the cephlet itself.


8-bit RF64 wave file reported as signed instead of unsigned

Attached file generated with Audacity 2.1.3, using an RF64 header, and "Unsigned 8-bit PCM" export setting.
Following the PCMWAVEFORMAT, I believe samples of eight or less bits should be treated as unsigned integers, even in RF64 files. MediaInfo correctly reports 8-bit PCMWAVEFORMAT files as unsigned.
Issue found using MediaInfo 0.7.99.

Signed - default value
https://github.com/MediaArea/MediaInfoLib/blob/51cce7e6ac0bc76a3385c23a404ea66ce2a469b8/Source/MediaInfo/Multiple/File_Riff_Elements.cpp#L1558
Calc Sign:
https://github.com/MediaArea/MediaInfoLib/blob/51cce7e6ac0bc76a3385c23a404ea66ce2a469b8/Source/MediaInfo/Audio/File_Pcm.cpp#L106
Codec = L"00001000-0000-0100-8000-00AA00389B71"

General
Complete name                            : C:\1\rf64-pcm-44khz-8bit-mono-minimal.wav
Format                                   : Wave
Format profile                           : RF64
File size                                : 105 Bytes
Overall bit rate mode                    : Constant
Audio
Format                                   : PCM
Format settings                          : Little / Signed
Format settings, Endianness              : Little
Format settings, Sign                    : Signed
Codec ID                                 : 00001000-0000-0100-8000-00AA00389B71
Bit rate mode                            : Constant
Bit rate                                 : 352.8 kb/s
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 44.1 kHz
Bit depth                                : 8 bits

Checking FFmpeg code, they consider ==8 as unsigned else signed:
    { AV_CODEC_ID_PCM_U8,          0x0001 },
    { AV_CODEC_ID_PCM_S16LE,       0x0001 },
    { AV_CODEC_ID_PCM_S24LE,       0x0001 },
    { AV_CODEC_ID_PCM_S32LE,       0x0001 },
    { AV_CODEC_ID_PCM_S64LE,       0x0001 },

So OK to change to same behavior.

The logic already exists here:
https://github.com/MediaArea/MediaInfoLib/blob/51cce7e6ac0bc76a3385c23a404ea66ce2a469b8/Source/MediaInfo/Audio/File_Pcm.cpp#L123-L130
But the code might not be taking into account that the subformat GUID reported as "00001000-0000-0100-8000-00AA00389B71" is equivalent to the format codec 0x0001. Although the representation of the GUID also looks a little off to me... for PCM, I'd expect it to be: "00000001-0000-0010-8000-00AA00389B71".
All short format codec identifiers (such as 0x0001) have subformat GUID equivalents when specified in WAVEFORMATEXTENSIBLE files, as mentioned here. (RF64 being an extension of WAVEFORMATEXTENSIBLE.)

The logic already exists here:

Will do same for RIFF directly, then I'll see (later) how to merge code because it should not be in 2 different places.

for PCM, I'd expect it to be:

good to know.
But i don't see the relationship with my code.

I think it would be useful to have the GUIDs represented in a manner that allows them to be readily compared to other sources when searching for information on specific codecs. At the moment searching for MediaInfo's GUID almost exclusively returns MediaInfo reports, while searching for Microsoft's returns a variety of other sources, of which there is sadly little overlap.
Microsoft's GUIDs are also intended for use as unique identifiers, and 00001000-0000-0100-8000-00AA00389B71 ≠ 00000001-0000-0010-8000-00AA00389B71, so there's that.

I guess there is also a bug in the the way we convert GUID to character strings, to be studied, definitely!

I don't have a lot of files for testing, but I think I handle all cases now.
Please test the latest snapshot https://mediaarea.net/download/snapshots/binary/mediainfo-gui/20171031/
I focused on:

No endianess for 8-bit content (irrelevant)
endianess and sign of PCM in Matroska
unsigned for 8-bit content
not hiding "A_MS/ACM" in audio CodecID for Matroska.
GUID in the right order

I hope that I missed nothing and that I introduced no regression!

Tested fine on my end. Thanks for the speedy improvements :)


Some crashes

Godot version
3.3.2 stable mono
System information
w10 64
Issue description
I have been experiencing several crashes.
I just tried to change the angle of a node after painting on the tilemap.
I could not describe the reason very well but I have some information, if it is useful then perfect and if it does not work, then close the thread.
2021-07-02_17.42.19_8844.log

in this video I reproduce the crash
https://youtu.be/bNxb7KEaYEs
Steps to reproduce
...
Minimal reproduction project
No response

See also https://github.com/godotengine/godot/issues/45559 and https://github.com/godotengine/godot/issues/15506.

Rotating a tile? ... no no, I am rotating the node.
I selected the node "cove" and I am trying to rotate it.

Nor do I hit undo at any time.


Display file size in API

As a pomf API programmer, I need some way to manage the maximum file size for certain host. It would be great if there was a page (/maxsize.php) which would show maximum size in bytes.

https://github.com/nokonoko/Pomf#configuring
The "real" max upload size is left up to the person who configured the webserver to set it, so it would be pretty difficult to create a file that does something like that.
Otherwise, if you want to trust whatever the Gruntfile says, you can have Grunt create a simple file called /max_size that contains the plaintext number of whatever the max upload size is.

It would be nice if it would be converted to bytes for API tools. It is still better than lack of such way to check max file size.

It's hard to introduce any changes to the pomf API now that there are
all the clones around. Many of them don't get updated from almost a
year. Sure, making it so that there's a "convention" for which there is
a page where you can programmatically retrieve the byte size is still
better than having nothing, but it probably won't work for 99% of all
alive pomf clones.
On 05/03/16 23:15, Mikolaj Halber wrote:

As a pomf API programmer, I need some way to manage the maximum file
size for certain host. It would be great if there was a page
(/maxsize.php) which would show maximum size in bytes.
—
Reply to this email directly or view it on GitHub
https://github.com/nokonoko/Pomf/issues/46.

So, for now I'll probably just do it with good old host_list, maybe some day all clone owners will sit on #pomfret channel.

how do e.g. browsers get file size of files before downloading them, then?

@avail The Content-Length header. It's completely optional, and can be omitted if the web server is configured to.

@SEAPUNK why would @lich not just utilize that header, then? Most pomf clones I've seen send the header.

I believe lich wanta to know the max size of files you can upload, rather than the filesize of the files you download.
On 7 March 2016 18:13:56 CET, 0x617661696c<EMAIL_ADDRESS>wrote:

@SEAPUNK why would @lich not just utilize that header, then? Most pomf
clones I've seen send the header.

Reply to this email directly or view it on GitHub:
https://github.com/nokonoko/Pomf/issues/46#issuecomment-193352467

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Oh my bad, I haven't read the post fully (was initially reading whilst on phone)

This will not be implemented in pantsu/pomf as far as I can say as the co-maintainer. It would be idiotic to add more code to do something that is much like robots.txt, growing the size and complexity of the code. No thank you.
The v2 API is much more important for me for the eventual 3.0 branch.

So, for now I'll probably just do it with good old host_list, maybe some day all clone owners will sit on #pomfret channel.

That will not happen until Rizon allows connections from Tor or someone creates a mailing list for Pomf development and discussion. I'm banned on Rizon for operating a Tor exit from my home.


feat: relationship between ConfigMap using volume mounts

Notes for Reviewers
This PR fixes #9821
Signed commits

[x] Yes, I signed my commits.

@MUzairS15 Will you please take a look at this. Thanks.

Are we ready to merge our 10,000th PR?

Are we ready to merge our 10,000th PR?

Yes, we are ready to merge. As discussed with @MUzairS15, I have implemented the suggested changes. However, please note that the MeshMap ScreenShot Service tests are currently failing for all the PRs

Hi @RipulHandoo  ,
Thanks for your PR! I encourage you to share this in the Website Meeting tomorrow at 6:30 PM IST. Share your screen, and walk us through it. It's cool to take and share feedback. Check the Doc here to include this PR.
You're welcome at the meeting
Check to community calendar for more details of meetings at Layers.

Sure @saurabh100ni I'll be there.

@RipulHandoo, will you be incorporating and addressing this feedback?

merge conflict.
no proof of working relationship

@leecalcote, I will address the merge conflicts and provide a video demonstrating the functionality of the relationship

merge conflict.
no proof of working relationship

@leecalcote, I will address the merge conflicts and provide a video demonstrating the functionality of the relationship

Thank you, @RipulHandoo

@RipulHandoo Please add the limitation we discussed.


Hype up Kestrel features in overview

Addresses https://github.com/dotnet/aspnetcore/issues/44725
Feature list generated by ChatGPT, with ~some~ a lot of editing 😄
Preview: https://review.learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-8.0&branch=pr-en-us-28937

Internal previews

📄 File
🔗 Preview link

aspnetcore/fundamentals/servers/kestrel.md
Kestrel web server implementation in ASP.NET Core

Oops, @tdykstra  probably has better suggestions.
@tdykstra  maybe you could review mine and I'll delete them after.

@JamesNK keep in mind the MS style guide mantra, shorter is always better. Short sentences are much easier to MT (machine translate) and are easier for native reads to parse.

Got it. By the way, ChatGPT wrote the first pass. It's a little wordy 😄

Can we be explicit about when a customer might use aspnet core on IIS or http.sys instead? Even if it's "only if you have existing code that requires it"
It might be helpful to have something on the pages about those two configurations.

I'd remove that whole secure by default because https isn't on by default and you can't promise it's hardened against vulnerabilities because bugs always lie beneath. An absolute statement like that is begging for trouble.

Ok. I updated it not to be absolute:

Security hardened: Kestrel is hardened against web server vulnerabilities and supports HTTPS.

Ta, I know it feels underwhelming :)

Can we be explicit about when a customer might use aspnet core on IIS or http.sys instead? Even if it's "only if you have existing code that requires it"
It might be helpful to have something on the pages about those two configurations.

I think comparing Kestrel to IIS and HTTP.sys is definitely helpful. I know some benefits of IIS/HTTP.sys, such as process lifetime management and supporting multiple apps on one port, but not enough to feel confident to write that doc.
Issue to add that content in the future: https://github.com/dotnet/AspNetCore.Docs/issues/28948


SR-IOV tests are failing on packet

CI run
https://github.com/networkservicemesh/integration-k8s-packet/runs/2497956946?check_suite_focus=true
Logs
logs-493.zip

@Bolodya1997 Any idea why yet?

@edwarnicke, @Bolodya1997 It looks like the packet is working https://github.com/networkservicemesh/integration-k8s-packet/pull/49
I guess it is fixed by https://github.com/networkservicemesh/integration-k8s-kind/issues/197
So closing this.


Implemented Offline Search

Pull Request
Implemented local search using @easyops-cn/docusaurus-search-local.
Fixes: #24

Saw more issues trying to run this locally
$ docusaurus start
[INFO] Starting the development server...
Warn: `blogDir` doesn't exist: "/home/asaharan/PycharmProjects/cloudmydc-docs/blog".
[WARNING] Duplicate routes found!
- Attempting to create page at /search, but a page already exists at this route.
This could lead to non-deterministic routing behavior.

Sir There were broken links fail in this code. I think it is because of merge of dev branch.

Add a new GitHub issue to fix these links and raise a separate pr to fix the problem


Add brew install z

Hello @professor and friends. I'm not sure how widespread this practice is, but I've been trying to drive adoption of "z" within pivotal, as I've found that it's greatly improved my happiness and speed in the terminal when needing to manage multiple codebases.
Z is a shell script, installable with homebrew, that allows you to very, very quickly jump to various directories by only typing in a subset of the path.
https://github.com/rupa/z
For example, the usage below explains what it enables.
cd $HOME
mkdir -p workspace/front
mkdir -p workspace/back

cd workspace/front
# ... do some work for a while

cd $HOME/workspace/back
# ... do some work for a while

z front # change to $HOME/workspace/front
# ... continue doing front-end work

z back # change dir to $HOME/workspace/back
# ... continue doing back-end work

In practice it's quite nice and only takes about 1 second to brew install. I'm not sure if this is something that everyone would want to opt into, however, but I thought it wise to open an issue before forking workstation-setup and maintaining my own for all time.

I am also trying to get my teams to use z!
There is some support in bash-it to automatically support z through something like bash-it plugin enable z. They mention there that z is somewhat deprecated in favor of the fasd project. I’ve tried fasd but I find it to do too much and I always end up going back to z for its simplicity.
I purposefully didn’t add z to workstation-setup because of the deprecation message from bash-it and because of it not being that directly discoverable, but knowing that I’m not the only one pushing it helps me to reconsider.

z supporters unite !
I also heard about fasd and found it's ... interface to be ... far too much. Good to know about the bash it plugin, but I find that just installing the shell script and dropping it into .bashrc is more than good enough for me.

Is this needed now that auto jump is in there?
https://github.com/pivotal/workstation-setup/commit/aecba2b21aed85e99547082b592819bb4d1a208c

I’m OK with closing this out and encouraging people to use autojump. Also no one has commented here since 2017 so I think we are OK.

And to all the z lovers out there, it’s not hard to manually add anyway.


Poor error handling for language evaluation failures in bicep recipes

Bug information
Steps to reproduce (required)
I've written a function test for this issue. Search for the issue number in our codebase to find it.
Observed behavior (required)
Error is reported like with JSON-encoding text inside a string, inside a JSON response. This can't be easily parsed or understood by a user.
The output is similar to #6045
Desired behavior (required)
Error is reported in a reasonable format.
Workaround (optional)
Not blocked, this is a bad error message.
AB#8939
AB#8940

Addressed by #6551


Loading data as JSON files gzipped by the server crashes while server rendering

Please provide the environment you discovered this bug in.
"nx": "15.6.3",
"@analogjs/content": "^0.2.0",
"@analogjs/router": "^0.2.0",

On MacOS
Which area/package is the issue in?
Don't know / other
Description
I have a project where the data are loaded as static json files, hosted gzipped on S3.
I noticed that I had a strange behaviour where the state was missing data.
Trying to basically load a file, and console.log its result, I noticed that the file was well loaded by the browser version but was in error server-side.
We need to find a solution for the server to be able to manage this situation, as the browser does it.
Please provide the exception or error you saw
No response
Other information
No response
I would be willing to submit a PR to fix this issue

[ ] Yes
[ ] No

Using provideHttpClient(withFetch()) resolves this issue


Remove objectCode #7

Lehigh specific MARC field mapping and handling that is not applicable at Cornell.

Resolves #7

I was unaware that there were strict requirements/conventions for submitting a PR, especially one that only involved deleting a few lines.  It's going to take much longer to make changes to the PR than to actually fix the issue.  Frankly, I don't even know how to pull changes from one PR into a separate PR.   If it's going to take a few days just to commit changes to delete a handful of lines, whatever estimates there were for the issue #5,  can probably tripled.

No worries, @fereira. This cleanup is relatively simple using git's cherry-pick and revert commands. I've gone ahead and cherry-picked the 3 testing related commits from this PR into a new testing-enhancements branch.
I can revert these from this PR if you would like, just let me know.
As for the MARC field mapping, @starsplatter do you still have more work remaining to finalize the specs or are they complete and ready to be implemented?

Okay @fereira.  I've reverted the unrelated testing and MARC field mapping changes. You want to take this for a spin and ensure it's working properly?

I'm not even sure what I'm testing at this point but I see if it's working


Can we get rid of EncodeAnyResponse and DecodeAnyRequest?

It would be nice to get rid of those two abstractions.

I don't know of a better way to map between Jackson-style reflection-based serialization and our codecs. We could move this functionality to individual subprojects that need it, but that would just buy cleaning up core at the cost of duplication.

Done in #499.


Improve documentation around streaming requests and responses

The documentation implies it at https://github.com/rest-client/rest-client#lower-level-access when it says "manually handle the response (e.g. to operate on it as a stream rather than reading it all into memory)", but how do you actually do that? I could not find any docs or examples.
Do you call RestClient::Request.execute raw_response: true? Is it a boolean? Or do I just call response = RestClient::Request.execute and then read response.raw_response? Even those seem to be saving to another file, which I then can copy.
How do I stream the response? If I am downloading 1GB, I really don't want it going into memory, nor do I want it going to another file I have to copy; I just want a stream I can redirect to my target file.

+1, a simple example in the doc would be priceless. Can't grep anything relevant in the code.

found it, just pass a block to the execute method, then it is passed down to Net:HTTP. See
http://ruby-doc.org/stdlib-2.3.0/libdoc/net/http/rdoc/Net/HTTP.html#method-i-get

I too would like to konw how to do this.

@akostadinov thanks; I don't know how I missed your response.
What does it mean to pass a block? Does that actually cause them to stream? Wondering how I would test that....

@deitch,
RestClient::Request.new(opts).execute do |chunk|
  io.write(chunk)
end

@akostadinov , no! That easy?
I will have to try that, thank you.

OK, I tried it, but must be doing something wrong. Simple test: download the Ubuntu server iso (big enough for me to watch it happen without it ending prematurely).
File.open('/tmp/foo.iso', 'w') {|f|
    RestClient::Request.new(method: 'get', url: 'http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso').execute do |chunk|
        f.write(chunk)
    end
}

I can curl the URL http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso directly from the command-line, so I know it is valid. Yet, the file /tmp/foo is created, maintains 0 size for a long time, then the ruby command returns with RestClient::RequestTimeout: Request Timeout
What am I doing wrong?

Modifying slightly:
File.open('/tmp/foo.iso', 'w') {|f|
    RestClient::Request.new(method: :get, url: 'http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso').execute do |chunk|
        puts "Working on response"
        f.write(chunk)
    end
}

The console message "working on response" does not get called until the entire content of the GET is loaded into memory.

@deitch I have not in fact tested it working properly. Good catch. I see same behavior with:
File.open('/tmp/foo.iso', 'w') {|f|
  Net::HTTP.get(URI('http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso')) do |chunk|
    puts "Working on response"
    f.write(chunk)
  end
}

And now reading the docs, it looks like streaming needs to be done like this:
uri = URI('http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri

  http.request request do |response|
    open 'large_file', 'w' do |io|
      response.read_body do |chunk|
        puts "Working on response"
        # io.write chunk
      end
    end
  end
end

That makes me conclude, rest-client cannot actually stream body unless there is some other API I couldn't find. I believe rest-client can always use approach above to get response body and if user supplies a block, to yield it inside response.read_body.
Ideally rest-client will read headers and process them as usual to return properly parsed response but the body should not be put into memory, only whatever user does with it. This is best of both worlds IMO.
But it sounds like non-trivial (although maybe not so hard).
Sounds like a good 2.0 GA feature?

@akostadinov thanks for checking. I saw something interesting in the RestClient docs here http://www.rubydoc.info/github/rest-client/rest-client/RestClient/Request under :block_response where it says:

:block_response call the provided block with the HTTPResponse as parameter

I wonder if that would do it? I could not find a way to test it. It would seem from the comment that, well, we are doing it the right way, but I am not sure.
The code at https://github.com/rest-client/rest-client/blob/30ef4d39cac74ecffc8cd171f69dc1537ea0aef1/lib/restclient/request.rb#L140 seems to take the block as an arg:
      @block_response = args[:block_response]

and it uses it as follows at https://github.com/rest-client/rest-client/blob/30ef4d39cac74ecffc8cd171f69dc1537ea0aef1/lib/restclient/request.rb#L633
        if @block_response
          net_http_do_request(http, req, payload, &@block_response)
        else
          res = net_http_do_request(http, req, payload) { |http_response|
            fetch_body(http_response)
          }
          log_response res
          process_result res, & block
        end

So, it looks like at actually can handle it, but only if you pass the block as :block_response arg, rather than the usual "block after the method call with arguments" style? I couldn't figure out how to test that. Do you have any idea?

@deitch , good detective work. Seems like working this way. But again, did not test in details:
    block = proc { |response|
      response.read_body do |chunk|
        puts "Working on response"
        # io.write chunk
      end
    }
    RestClient::Request.new(method: :get, url: 'http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso', block_response: block).execute

It is also to be checked whether rest-client can return properly parsed headers, cookies, etc. in this way.

@akostadinov wins the prize! :-)
So this actually worked:
File.open('/tmp/foo.iso', 'w') {|f|
    block = proc { |response|
      response.read_body do |chunk|
        puts "Working on response"
        f.write chunk
      end
    }
    RestClient::Request.new(method: :get, url: 'http://mirror.pnl.gov/releases/xenial/ubuntu-16.04-server-amd64.iso', block_response: block).execute
}

In this case, it definitely does the right thing. "working on response" is called many times, the file grows in size over time, and ruby process memory usage is constant (and low).
Thanks, @akostadinov !

I guess I should reopen this with a different topic: document this! :-)

I wanted to reply after I do some investigation. Again HTTP redirect does not work in this way. Header and response type are returned which is nice. But I don't see cookies parsed. Would be nice if at least header could be completely parsed and have http redirect working when requested by user. rest-client needs only read header to decide whether it should call user block or not. Also should read and process header and leave body to the block.
Thank you for investigating this  issue. I just blindly trusted that I had it working for when I need it.

So there is work to be done. But at least we figured out how to get streaming working. Now we just need one of the core committers to make a change to the docs.

@deitch if you have a little time, you could create a documentation PR. You could even use the web UI to edit the readme or another file and then create a PR off it.

OK, I did. I don't have any time, but when you do something, might as well do it right. Can you push to get it merged?

@deitch , awesome, unfortunately I don't have any special powers in this project. I hope @ab picks your PR.

:-)
@ab ?

Thanks again for the detective work and for the PR. Note for myself: I think we could still use more docs around how to handle streaming uploads and downloads, and how :raw_response behaves.

Anybody knows how to perform the redirection in case I receive 3xx status?

Anybody knows how to perform the redirection in case I receive 3xx status?

Anyone have any idea how to mock this behaviour?

@askdesigners , not sure what behavior you want to mock.
FYI anybody trying to handle redirections, I do something like:
          rc_opts = { ... my request opts ... }
          if rc_opts[:max_redirects] > 0 &&
              (Net::HTTPRedirection === response || Net::HTTPFound === response)
            rc_opts[:url] = response['location']
            rc_opts[:max_redirects] = rc_opts[:max_redirects] - 1
            RestClient::Request.new(rc_opts).execute
          else
            # handle actual response
          end

I don't like falling back to the low level Net::HTTP classes but there seems to be no other way.

@akostadinov ya sorry I wasn't very clear.
Basically I have a handler which makes an http call, and passes in a block as a response handler. Since the response is streaming, sometimes a chunk will be a complete json string and other times it's only a partial string (due to the server on the other end), so in the block I need to parse the string, and when it fails add the partial string to a buffer and try to stick it  onto the next chunk and parse that.
This works great, except that it's basically impossible to test. In mocking a response using all the techniques I've seen so far, I get the response all in one blob, rather than in the streaming format that the real server sends.
I ended up just refactoring the code so I can test that piece in isolation without mocking the response.


added keyword spanning-tree under interface cmd

Thanks for the PR @filippohronsky ! It has been merged and a new version of the package with the changes have been released.

Thanks for the PR @filippohronsky ! It has been merged and a new version of the package with the changes have been released.


Cookbook Recorder Demo fails with "No file URL/settings to record to"

To reproduce:
open Recorder, tap record
Output console shows:
"NodeRecorder.swift:record():155:🛑 Error: No file URL/settings to record to (NodeRecorder.swift:record():155)"
Cookbook version is Latest version as of May 20, 2022 using AudioKit 5.4.2.
Sorry I don't know this project that well but it looks like the temp audio file created in createAudioFile() does not get updated to the variable recordedFileURL

There were some recent changes to NodeRecorder. Try using the main branch of AudioKit, and let me know if that works. Thanks.

The record demo works now using the main branch.

The record demo works now using the main branch.

That’s great to hear 🙂! I’ll close this for now, but feel free to re-open if it starts acting up again.


fixed toString(), removed old comments

Coverage remained the same at 98.345% when pulling 7075612fa07dbf60b282a91a317c204ec72afe9f on fix-toString into 7d3e86d80cfdba822038d565a04074e08de587cf on master.


Don't let embedded windows be placed where they don't fit

Fixes #94023.

This seems to make a unit test fail:
./tests/scene/test_window.h:61:
TEST CASE:  [SceneTree][Window]
  Control-mouse-over within Window-black bars should not happen

./tests/scene/test_window.h:79: ERROR: CHECK( c->mouse_over ) is NOT correct!
  values: CHECK( false )

The test was placing the window at (0, 0) too. :D