websocket

websocket
I'm working on below sample code, how to use websockets on Google App Engine Flexible Environment with java.
as it mentions in the doc, in order to use websockets on App Engine, we need to connect directly to application instance using the instance's public external IP. This IP can be obtained from the metadata server.
but looks like I'm getting below 403 error when I'm trying to access metadata server
java.io.IOException: Server returned HTTP response code: 403 for URL: http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip

Sorry, It's working now, forgot to add Metadata-Flavor header in the request
still, it's worth having spring-websocket sample code, who want to use jGAE with spring websocket
Sample Code
Firewall rule
gcloud compute firewall-rules create default-allow-websockets \
  --allow tcp:65080 \
  --target-tags websocket \
  --description "Allow websocket traffic on port 65080"

app.yaml
runtime: java
env: flex

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: optional # always never optional # Require HTTPS

manual_scaling:
  instances: 1

network:
  forwarded_ports:
  - 65080
  instance_tag: websocket

  private static final int DEFAULT_PORT = 65080;
  private static final String NETWORK_INTERFACE_METADATA_URL = "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/" + "external-ip";

  private String getHostname() throws IOException {
	  String hostname = "localhost";
//      if (SystemProperty.environment.value().equals(SystemProperty.Environment.Value.Production)) {
        URL url = new URL(NETWORK_INTERFACE_METADATA_URL);
        HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection();
        httpUrlConnection.setRequestProperty("Metadata-Flavor", "Google");
//        httpUrlConnection.setRequestProperty("X-Google-Metadata-Request", "true");
        InputStream in = httpUrlConnection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String result, line = reader.readLine();
        result = line;
        while ((line = reader.readLine()) != null) {
          result += line;
        }
        hostname = result;
//      }
    return hostname;
  }

  /**
   * @return a Websocket URL of this server.
   * @throws IOException when failed to get the external IP address from the metadata server.
   */
  public String getWebSocketURL() throws IOException {
    return "ws://" + getHostname() + ":" + this.getPort() + "/";
  }

Ref

Open Issue:
https://stackoverflow.com/questions/25708617/spring-4-websocket-configure-port
Github Repo:
https://github.com/kevendra/springmvc-websocket-sample

Notice: this issue has been closed because it has been inactive for 890 days. You may reopen this issue if it has been closed in error.


Ameerul / WEBREL-3256 Seeing a track JS error : Datadog Browser SDK:

Added datadog env variables back to the prod and staging yml files

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

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 85.401%

Totals

Change from base Build<PHONE_NUMBER>0:
0.0%

Covered Lines:
6432

Relevant Lines:
6999

💛  - Coveralls


Create CI Pipeline for testing

At first we could start with travis-ci.

Can be closed with #12. I think this is enough for a first start.


use core api service

Issue Link:

@vedhavyas @charleenfei closing this as I don't have an idea about your design.
Please make sure to document or make code comments about your expected designs, since you never know when other team members would have to take over for you when you are not here.
cc @mikiquantum

@vimukthi-git yes, we will document the file structure next time in the spec. Apologies for the confusion :)


recommendation status add expiration time

recommendation status add expiration time

talked with @pmsl offline, LastTransitionTime in condition can be used to calcuate expiration time. API change is not needed, closing this PR.


Using /color crashes the app

When I run
/load mama
/create ma mama
/color ma 1 0 0

It crashes
Invalid get index 'type' (on base: 'Nil').
res://CommandInterface.gd:181 - at function: parseCommand
// etc ...

Aparently result is null.

This happens for commands (like /color) that are executed from the code editor, where the arguments are all strings. When executed from OSC (e.g. from SC), they typically come in with the correct type (e.g. float), so the call succeeds. This is related (due) to this issue, since these coreCommands are called using Callable.callv().
Unfortunately, the workaround for now (I guess) is to have functions such as colorActor() not use static typing for their (e.g. float) arguments, but leave arguments untyped. Then, in the function, use var r := red as float (or similar) to convert the untyped argument (which  may be strings, integers) to the desired "compatible" type (float, in this case).
I'll make a fix/workaround for this.

Fixed in main and develop.


Add Twitter Link to "Leading Blog" and "Start Writing" Sections

Is your feature request related to a problem? Please describe.
Yes, the absence of a Twitter link and symbol in the "Leading Blog" and "Start Writing" sections presents a problem for user engagement. Without these links, users may find it more challenging to connect with us on social media platforms. This can lead to missed opportunities for sharing content and engaging with our audience, ultimately limiting the reach and visibility of our blog and writing initiatives. By adding these links, we can facilitate easier access to our Twitter account, encouraging more interaction and promoting our content effectively.
Describe the solution you'd like
Add a Twitter icon and link to the "Connect with us" section, alongside the existing Facebook and Instagram icons. This will enhance user engagement by providing direct access to our Twitter profile. Ensure the icon is visually consistent and responsive across all devices.

Name : Moumita Halder
Participant Role : GSSOC, Hacktoberfest 2024
I would like to work on this issue. Please assign it to me @ANSHIKA-26

I would like to work on this issue. Please assign it to me @ANSHIKA-26

@paricharm fix this issue in ALL pages

@ANSHIKA-26 Yea.... sure will fix it as soon as possible

fixed already


Can't find LocaleSettings.setPluralResolver

Describe the bug
I have an exception
Resolver for <lang = bg> not specified! Please configure it via LocaleSettings.setPluralResolver. A fallback is used now.
and documentations says
// add this before you call the pluralization strings. Otherwise an exception will be thrown.
// you don't need to specify both
LocaleSettings.setPluralResolver(
  locale: AppLocale.en,
  cardinalResolver: (n, {zero, one, two, few, many, other}) {
    if (n == 0)
      return zero ?? other!;
    if (n == 1)
      return one ?? other!;
    return other!;
  },
  ordinalResolver: (n, {zero, one, two, few, many, other}) {
    if (n % 10 == 1 && n % 100 != 11)
      return one ?? other!;
    if (n % 10 == 2 && n % 100 != 12)
      return two ?? other!;
    if (n % 10 == 3 && n % 100 != 13)
      return few ?? other!;
    return other!;
  },
);

but I can't find the class LocaleSettings to fix this issue.
Additional context
Flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.13.6, on macOS 13.6 22G120 darwin-arm64, locale en-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Community Edition (version 2022.2.2)
[✓] VS Code (version 1.82.2)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!

Slang version slang: ^3.24.0

How do you access the translations? If LocaleSettings is not used, do you use dependency injection for your translations?

With Riverpod, the code is like this
@Riverpod(keepAlive: true)
class LocaleState extends _$LocaleState {
  @override
  LocaleViewModel build() {
    final locale = SharedPrefs().locale;

    return LocaleViewModel(
      locale: locale,
      translations: AppLocaleUtils.parse(locale.toString()).build(),
      skyscannerLangCode: _getSkyscannerLangCode(locale),
      bookingLangCode: _getBookingLangCode(locale),
    );
  }

Alright.
In the build method of the AppLocale, you can specifiy a cardinalResolver.
There you should specify how plurals should be handled.
You could of course use a generic one, that works for most locales:
https://github.com/slang-i18n/slang/blob/main/slang/lib/api/plural_resolver_map.dart#L6


Fix race condition in concurrent user creation and create streams atomically

https://chat.zulip.org/#narrow/stream/343-kandra-errors/topic/JsonableError.3A.20Unable.20to.20render.20message/near/1081947

@mateuszmandera @abhijeetbodas2001 should we pick this up now that #16721 is merged?


Title Bar on Media Window

When the pc is started from Hibernate the JW Library Media Window shows a Title Bar at the top. It only does this if JwMediaWin has "fixed" the Media Window. The only way I have found to restore it back to full screen is to close down JW Library and restart it.

When the pc is started from Hibernate the JW Library Media Window shows a Title Bar at the top. It only does this if JwMediaWin has "fixed" the Media Window. The only way I have found to restore it back to full screen is to close down JW Library and restart it. ...

@Jeremy909 What version of JwlMediaWin are you using?
Sent with GitHawk

<IP_ADDRESS>

Have a feeling this might be a Windows 10 issue.
The way JwlMediaWin works is by transforming the media window from UWP full-screen to a normal window, then resizing it to the resolution of the display to hide the borders and title bar.
When the PC is put to sleep/hibernate, there seems to be a bug where window position/size is sometimes lost. See here: https://answers.microsoft.com/en-us/windows/forum/all/how-do-i-stop-windows-10-from-resizing-and/271709c8-b594-47db-9c6d-1f1bfb02aea0

@Jeremy909 Is this issue ongoing?

@AntonyCorbett I stopped using Hibernate and Sleep a a while ago because of it. Have not tried it since


[BUG] Logger Conflicting w/ Discord.py Logger

Describe the bug
When running both dpy and interactions.py a number of events will cause interactions.py to have an exception handling exceptions. Sometimes this can prevent the interactions gateway from reconnecting during a connection loss: Traceback
I believe this occurs because both both dpy and interactions.py both use the same logger names (eg both dpy and interactions use a logger called "gateway"), AND the custom CustomFormatter/handler being set by interactions in base.get_logger().
As per Python documentation for the logging library:

Configuring logging by adding handlers, formatters and filters is the responsibility of the application developer, not the library developer. If you are maintaining a library, ensure that you don’t add handlers to any of your loggers other than a NullHandler instance.

Reproducing steps
This can easily be reproduced using the example from the Interactions FAQs (gist) by joining a voice channel after starting the bot. Traceback in the gist comment
What's normally expected
In the above example I still expect interactions.py to log a fatal log record but I don't expect to have an exception occur during logging.
What actually happened
Traceback in the gist) comment
Versions

[ ] I am using discord.py versions 1.7 and below with my code.

[x] I am using 2.0 or higher, or a modified fork.

[ ] I am using dis-snek with my code.
[ ] I am not using any of the listed above and am using the library code alone.

In an attempt to put in a interim fix I have found I can disable the interactions.py logger with:
import logging.config

logging.config.dictConfig({
        'version': 1,
        'disable_existing_loggers': True,
    })

after interactions.Client()._ready()s
However it's temporary until interactions.py calls base.get_logger() again.

I will be labelling this as a wontfix because of the following reasons:

Getting more than one library to work with ours is expensive due to numerous websocket connections with the Gateway.
Making libraries run on the same event loop presents issues with event calling strategy -- information between libraries can be ran twice, and there's no way to reliably ensure protection against race conditions.
discord.py is currently labelled as an archived project. We'll be treating discord.py as deprecated from hereon forward due to the upcoming message intent eliminating the ability to use discord.ext.commands, the most used user-facing part of the API wrapper.
In 4.1.0 and forward, we'll be offering developers the Extension object which can be used akin to cogs.

Starting effectively on April 2022, we will be removing any and all documentation pertaining to running libraries on an event loop, or handling callable coroutines with this library.


Add button to open chosen rips save directory.

Change the "Select Save Directory..." button to two buttons: "Choose Directory..." "Open"
Sometimes when a rip fails or is interrupted, you can't easily open the rips directory. This is annoying when you've queued up a lot of rips and the last one fails, but you still want to see all of the successful ones.

What about if we make the label look like a hyperlink so users would know it's clickable and then open the directory that way?  If this is acceptable I've already written up the code to do it.

@rephormat Sounds fair. Also avoids having to rename labels and mess with the layou. I'm definitely willing to give that a try. I look forward to your pull request!


Move argocd feature to user space (gitops-bridge)

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

What is the outcome that you are trying to reach?
Remove the ability to install argocd helm chart using the this module
Clear guidance on how to use argocd with EKS with some common patterns, including hub-spoke with IRSA authentication to spoke clusters, installing addons using gitops, and bootstrapping app of apps/appsets
Describe the solution you would like
Point users to new patterns for argocd, so far we have two in eks blueprints, and many more are available from the community project gitops-bridge

https://aws-ia.github.io/terraform-aws-eks-blueprints/patterns/gitops-getting-started-argocd/
https://aws-ia.github.io/terraform-aws-eks-blueprints/patterns/gitops-multi-cluster-hub-spoke-argocd/
These patterns show users how to install argocd in addition using argocd to deploy the addons

Describe alternatives you have considered
N/A
Additional context
A similar approach is being develop to support fluxcd

Related https://github.com/aws-ia/terraform-aws-eks-blueprints/issues/1829


Relax FormValidationDirective selector

https://github.com/third774/ng-bootstrap-form-validation/blob/4bdc96eb04abb5a388b39eed32ef92fb57da74e3/projects/ng-bootstrap-form-validation/src/lib/Directives/form-validation.directive.ts#L17
@third774 Is there any particular reason, that you know of, that we should restrict this selector to form elements? In checking the FormGroupDirective, the selector there is simply [formGroup].
https://angular.io/api/forms/FormGroupDirective
@Directive({
    selector: '[formGroup]',
    providers: [formDirectiveProvider],
    host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' },
    exportAs: 'ngForm'
})
class FormGroupDirective extends ControlContainer implements Form, OnChanges { }

Is there any particular reason, that you know of, that we should restrict this selector to form elements?
Nope. I'm fine with aligning our selector with the core Angular selector.

Addressed in https://github.com/third774/ng-bootstrap-form-validation/pull/51


chokes on some files produced by Adobe Audition

I've got WAV files written by Adobe Audition. wavemap chokes on one of those files. Traceback:
Dubious tag b'_PMX'
Traceback (most recent call last):
  File "find-glitches.py", line 12, in <module>
    w = wavemap(wavfilename)
  File "C:\Python39\lib\site-packages\xmod.py", line 128, in wrapped
    return f(*args, **kwargs)
  File "C:\Python39\lib\site-packages\wavemap\__init__.py", line 111, in wavemap
    result = ReadMap(
  File "C:\Python39\lib\site-packages\wavemap\read.py", line 39, in __new__
    begin, end, fmt = _metadata(fp, warn, file_size)
  File "C:\Python39\lib\site-packages\wavemap\read.py", line 87, in _metadata
    (tag, b, e), *chunks = _chunks(fp, warn, file_size)
  File "C:\Python39\lib\site-packages\wavemap\read.py", line 150, in _chunks
    tag, chunk_size = read_tag(), read_int()
  File "C:\Python39\lib\site-packages\wavemap\read.py", line 127, in read_tag
    tag = read_one('4s')
  File "C:\Python39\lib\site-packages\wavemap\read.py", line 124, in read_one
    return struct.unpack('<' + format, s)[0]
struct.error: unpack requires a buffer of 4 bytes

I can't provide data to reproduce this right now. The file I noticed this on is half a gigabyte in size and I can't share the contents (yet). I tried the same procedure with a very much smaller file, constructed the same way (I think), but didn't manage to reproduce the issue. The library also remarks on the XMP chunk with the failed reproducer file but does not throw an exception.

Fascinating!  Let me read the code and see if I can come up with something at least to instrument this failure...

Oh, you could also do this:
head -c128 your-file.wav > your-file-tiny.wav

to just extract the first 128 bytes, and send me that!

No, that's probably silly.  This is some chunk at the very end of the file.  I can work this out likely...

All right!  I have a branch with a possible fix here: https://github.com/rec/wavemap/tree/ignore-partial-chunk
Can you patch it in and check to see if this fixes this issue?  Let me know if you need git instructions on how to that.

That does it! merely says Incomplete chunk now but I get the object and everything seems accessible so far

I'll make a release tomorrow AM, thanks for finding it!
On Thu, May 26, 2022, 12:18 AM Christoph Rackwitz @.***>
wrote:

Closed #2 https://github.com/rec/wavemap/issues/2 as completed.
—
Reply to this email directly, view it on GitHub
https://github.com/rec/wavemap/issues/2#event-6681479671, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB53MXYWK3XELM3VPFPMHLVL2RMFANCNFSM5W6K6KGA
.
You are receiving this because you commented.Message ID:
@.***>

yes, it's now saying
Dubious tag b'_PMX'
Incomplete chunk: no tag
1 byte after end-of-frame discarded

Nice!
I made a release, v2.0.1, already on pypi.
If you don't want the warnings, you can pass a custom function to the
warn= parameter,
or pass warn=None to silence them entirely.
On Thu, May 26, 2022 at 4:15 PM Christoph Rackwitz @.***>
wrote:

yes, it's now saying
Dubious tag b'_PMX'
Incomplete chunk: no tag
1 byte after end-of-frame discarded
—
Reply to this email directly, view it on GitHub
https://github.com/rec/wavemap/issues/2#issuecomment-1138625782, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB53MTEQBW7UIABJHAQZQTVL6BQTANCNFSM5W6K6KGA
.
You are receiving this because you commented.Message ID:
@.***>

--
/t
PGP Key: @.***
https://tom.ritchford.com https://tom.ritchford.com
https://tom.swirly.com https://tom.swirly.com


Short inviting summary for each interest domain

We can create a new, intermediary, page for this or use some kind of scroll-up boxes for this (http://student.howest.be/ziggy.maes/1NMCT/web/eindopdrachtweb/). I'd go with the boxes since that's pretty cool and unique. I'd appreciate some feedback on this.

Feedback: @alex

looking good, especially because you have to display 4 areas = 2x2.

If you want, I could fill in some text stuff.

Feel free to do so whenever you see fit. I'm not expecting you to do so though ;).

Thanks for the help! :)


Outgoing ports do not convert field names containing prime (single quote) properly

I have a type alias that for various reasons that may not have been too good looked like this:
type alias EventForServer =
  { application'Common'Events'EventForServer: Bool
  , seqNum: Int
  , data: Json.Encode.Value
  }

When I run tests I get
build/test.js:7364
		return {application'Common'Events'EventForServer: v.application'Common'Events'EventForServer, seqNum: v.seqNum, data: v.data};
		             ^^^^^^^^^^^^^

SyntaxError: Unexpected string

The test.js code looks like this:
var _user$project$Web_Messaging$eventsForServer = _elm_lang$core$Native_Platform.outgoingPort(
	'eventsForServer',
	function (v) {
		return {application'Common'Events'EventForServer: v.application'Common'Events'EventForServer, seqNum: v.seqNum, data: v.data};
});

It looks to me like some escaping is missing here.

Reported here

Closing in favor of the one on the compiler repo


The engine "node" is incompatible with this module

$ yarn add coreui
yarn add v0.24.5
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version ">=5.0.0 <7.0.0".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
$ node --version
v7.10.0

+1

+1

+1


Update for stac 0.9 schema changes

This still does not include some of the optional stac extensions that we want to use (like eo, grid...), but the core of it is now conformant to 0.9.0's schema changes, so I think it's worth pushing anyway.
The tests are expanded a little too, and validate against the updated schemas from the stac repo.

Hey @jeremyh this is looking good!
I wonder if we should be using this tool to create documents https://github.com/sat-utils/sat-stac
Also, we're really hoping to target 1.0-beta with Proj and EO extensions, as this is what the Sentinel-2 data will use. And the USGS are aiming for this too. It's captured in the dev branch here.

Yep, 1.0 is the goal.
I figured this was enough of a working milestone to merge, as it's an improvement over the current head, and matches the current "release" of stac.
(I also usually prefer smaller PRs and not keeping branches separate for too long -- especially when it's a secondary priority like this and frequently being forgotten.)

sat-stac looks ok :+1: . It doesn't contain anything for writing yet that we could use, but might be a place we could contribute back to in the future.


Multiple values for single key in RouteClaimsRequirement

New Feature
Allow claims to have an array value and not just a string value.
Motivation for New Feature
I have an application where I have multiple roles for my users. For endpoints that should only be reached by admins, I can use the following:
"RouteClaimsRequirement": {
	"Role": "Admin"
}

For endpoints that should only be reached by users, I can use the following:
"RouteClaimsRequirement": {
	"Role": "User"
}

For endpoints that should be reached by both users and admins I would like to use the following:
"RouteClaimsRequirement": {
	"Role": ["User", "Admin"]
}

When I tried adding this, all requests to the endpoint respond with a 404.
This should let the request go through if the request has a claim for the role user or admin. This is equivalent to the built-in asp .net core attribute:
[Authorize(Roles = "User, Admin")]
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.authorization.authorizeattribute.roles?view=aspnetcore-2.2

Is this fixed?

I'm interested too. Does another workaround exist?

as workaround override authorisation middleware for claims or policy based with claims in policies as suggested here

I've tried  the override authorisation middleware method , but the claims are strictly converted in a Dictionary<string,string> format before the middleware was called ;
This format break the Route because the value cannot be converted into a string;
"RouteClaimsRequirement": {
	"Role": ["User", "Admin"]
}
This format also don't work because the Role key in dictionary will be ovverride with the second value;
"RouteClaimsRequirement": {
	"Role": "Admin"
        "Role": "User"
}
so.. My personal solution will be
 Workaround example
"RouteClaimsRequirement": {
	"Role": "Admin , User"
}
In the authorisation middleware method  , i will parse the string with a regex pattern to obtain the single role value:

  public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            var configuration = new OcelotPipelineConfiguration
            {
                AuthorisationMiddleware = async (ctx, next) =>
                {
                    if (this.Authorize(ctx))
                    {
                        await next.Invoke();

                    }
                    else {
                        ctx.Errors.Add(new UnauthorisedError($"Fail to authorize"));
                    }

                }
            };
            .
            .
            .
            await app.UseOcelot(configuration);
      }
The logic of Authorize Method

 private bool Authorize(DownstreamContext ctx)
        {
            if (ctx.DownstreamReRoute.AuthenticationOptions.AuthenticationProviderKey == null) return true;
            else {
                //flag for authorization
                bool auth = false;

                //where are stored the claims of the jwt token
                Claim[] claims = ctx.HttpContext.User.Claims.ToArray();

                //where are stored the required claims for the route
                Dictionary required = ctx.DownstreamReRoute.RouteClaimsRequirement;
                .
                .
                ((AUTHORIZATION LOGIC))
                .
                .
                return auth;
           }

remeber to add in the ConfigureService method

 services.AddAuthorization();
services.AddAuthentication()
                    .AddJwtBearer("TestKey", x =>
                    {
                      //  x.RequireHttpsMetadata = false;
                        x.TokenValidationParameters = tokenValidationParameters;
                    });

(I Still working on my Authorization logic that will implement the multiple claims with And/Or logic with regex of strings , but the claims data structure implemented with Dictionary<string , string> is very  ugly and not very flexible)

((AUTHORIZATION LOGIC))  Example

                Regex reor = new Regex(@"[^,\s+$ ][^\,]*[^,\s+$ ]");
                MatchCollection matches;

                Regex reand = new Regex(@"[^&\s+$ ][^\&]*[^&\s+$ ]");
                MatchCollection matchesand;
                foreach (KeyValuePair claim in required)
                {
                    matches = reor.Matches(claim.Value);
                    foreach (Match match in matches)
                    {
                        matchesand = reand.Matches(match.Value);
                        foreach (Match m in matchesand) {
                            foreach (Claim cl in claims) {
                                if (cl.Type == claim.Key)
                                {
                                    if (cl.Value == m.Value)
                                    {
                                        auth = true;
                                        break;
                                    }
                                    else {
                                        auth = false;
                                    }
                                }

                            }

                        }
                        if (auth) break;

                    }
                }

Example of Configuration

"RouteClaimsRequirement": {
	"Role": "User & IT , Admin"
}

Logic result :
IF((User and IT) or Admin)

@arro000 It helped.
May I please know any update on this?

by using @arro000 's trick I changed a few things to make it work for me on .Net Core 3.1 & Ocelot 16.0.1.
My answer on Stackoverflow.
https://stackoverflow.com/questions/60300349/how-to-check-claim-value-in-array-or-any-in-ocelot-gateway/62390542#62390542

tokenValidationParameters

What is tokenValidationParameters?

Is the istance of object with the bearer authentiucation rules, in my case for example:
 var tokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = false,
                ValidateAudience = false,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,

                IssuerSigningKey = signingKey
            };

((AUTHORIZATION LOGIC)) Example
                Regex reor = new Regex(@"[^,\s+$ ][^\,]*[^,\s+$ ]");
                MatchCollection matches;

                Regex reand = new Regex(@"[^&\s+$ ][^\&]*[^&\s+$ ]");
                MatchCollection matchesand;
                int cont=0;
                foreach (KeyValuePair<string,string> claim in required)
                {
                    matches = reor.Matches(claim.Value);
                    foreach (Match match in matches)
                    {
                        matchesand = reand.Matches(match.Value);
		        cont = 0;
                        foreach (Match m in matchesand)
                        {
                            foreach (Claim cl in claims)
                            {
                                if (cl.Type == claim.Key)
                                {
                                    if (cl.Value == m.Value)
                                    {
                                    	  cont++;
                                    }
                                }
                            }
                        }
                        if (cont == matchesand.Count)
                        {
				auth= true;
				break;
			}
                    }
                }

Example of Configuration
"RouteClaimsRequirement": {
"Role": "User & IT , Admin"
}
Logic result :
IF((User and IT) or Admin)

With this change do you still need to add [Authorize(Roles = "User, Admin")] to your controllers?

Also, is there an updated version of this workaround for ocelot v16.0.1

Hi, is there any push new commit for this issue?

Hi, is there any push new commit for this issue?

@arro000 Should used PreAuthorizationMiddleware and AuthorizationMiddleware in OcelotPipelineConfiguration to check RequirementClaims?

I've tried the override authorisation middleware method , but the claims are strictly converted in a Dictionary<string,string> format before the middleware was called ;
This format break the Route because the value cannot be converted into a string;
"RouteClaimsRequirement": {
"Role": ["User", "Admin"]
}
This format also don't work because the Role key in dictionary will be ovverride with the second value;
"RouteClaimsRequirement": {
"Role": "Admin"
"Role": "User"
}
so.. My personal solution will be
Workaround example
"RouteClaimsRequirement": {
"Role": "Admin , User"
}
In the authorisation middleware method , i will parse the string with a regex pattern to obtain the single role value:
  public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            var configuration = new OcelotPipelineConfiguration
            {
                AuthorisationMiddleware = async (ctx, next) =>
                {
                    if (this.Authorize(ctx))
                    {
                        await next.Invoke();

                    }
                    else {
                        ctx.Errors.Add(new UnauthorisedError($"Fail to authorize"));
                    }

                }
            };
            .
            .
            .
            await app.UseOcelot(configuration);
      }

The logic of Authorize Method
 private bool Authorize(DownstreamContext ctx)
        {
            if (ctx.DownstreamReRoute.AuthenticationOptions.AuthenticationProviderKey == null) return true;
            else {
                //flag for authorization
                bool auth = false;

                //where are stored the claims of the jwt token
                Claim[] claims = ctx.HttpContext.User.Claims.ToArray<Claim>();

                //where are stored the required claims for the route
                Dictionary<string, string> required = ctx.DownstreamReRoute.RouteClaimsRequirement;
                .
                .
                ((AUTHORIZATION LOGIC))
                .
                .
                return auth;
           }

remeber to add in the ConfigureService method
 services.AddAuthorization();
services.AddAuthentication()
                    .AddJwtBearer("TestKey", x =>
                    {
                      //  x.RequireHttpsMetadata = false;
                        x.TokenValidationParameters = tokenValidationParameters;
                    });

(I Still working on my Authorization logic that will implement the multiple claims with And/Or logic with regex of strings , but the claims data structure implemented with Dictionary<string , string> is very ugly and not very flexible)

From where do you get the AuthorisationMiddleware, DownstreamContext and UnauthorisedError.

I made this script for ocelot version 13, I updated my comment making it compatible with the latest version 17
AuthorisationMiddleware replaced by AuthorizationMiddleware
DownstreamContext = replaced by DownstreamRoute route = (DownstreamRoute)ctx.Items["DownstreamRoute"];
you can get route information from HttpContext
UnauthorizedError  from Ocelot.Authorization
but i commented that line because HttpContext dosn't  have Error resposne list like DownstreamContext

No?
Still no update on the topic ? (if we can avoid the workaround, would be better)

Still no update on the topic ?

Hello, I created a PR https://github.com/ThreeMammals/Ocelot/pull/1596
To implement the possibility of using a list of claims, you must implement the IRouteClaimsRequirementComparer interface and register it in the IServiceCollection before AddOcelot

Hello from me.
Is this problem fixed?
I came across this topic https://github.com/ThreeMammals/Ocelot/issues/746 which says that mr. Pallister fixed the problem, but I cannot understand if so what is the proper syntax to register multiple roles.
Can anyone help with this one?

@Stians92
Mr. Stian,
Do you have any solutions to fix this your opened issue over 4 years ago?
Pay attention that the issue reporter can prioritize solutions and resolve any discussions.

From reply on Aug 31, 2022

Hello, I created a PR #1596

@bogd4nov1van
Mr. Ivan,
Your proposed solution of PR #1596 is in draft state.
Could you review my comments and prepare more accurate PR please?

It's not actual for me

Hi,
I was able to make a few changes on this and get this to work for static claims by updating the ClaimsAuthorizer.cs.
The changes are basically updating all the Dictionary<string, string> routeClaimsRequirement to Dictionary<string, string[]> routeClaimsRequirement and then changing the ClaimsAuthorizer.cs to

@asrasya-kosha  Will you open a PR?

@raman-m yes, that is the intention. Thanks.

Hi, is there any update about this feature? It is very interesting in my use case!

Dear Pietro (@pietrocarpinacci-dufercodev),
Asrasya (@asrasya-kosha),
I am eager to see your contributions. Should you submit a PR with robust code and tests, I will give the issue priority. Currently, there are no PRs linked to this longstanding issue. However, it could be expedited with professional contributions from the community.

Hi Raman (@raman-m),
I'm sorry but right now me and my company don't have time to dedicate on this. Maybe in october...
Best Regards,
Pietro

@asrasya-kosha  Asrasya, now it's your turn! 😉

I did start working on this but lost track because of work commitments.I will try and devote some time in next two weeks.

@raman-m  PR #2131 available for review and discussion please. Let me know your comments and thoughts.

@asrasya-kosha Fantastic, thank you! 🤩
The issue and PR have been included in the upcoming milestone, set for release after the current v23.3 Hotfixes.
I will concentrate on the v23.3 Hotfixes now and will return to the PR afterward.


(mj-inline-links)(mj-link) "href" attribute missing in documentation

"href" is pretty important attribute. I'm missing more info about it in documentation.
Should be always relative to path defined in a parrent's (mj-inline-links) attribute base-url?
<mj-inline-links base-url="https://mjml.io">
	<mj-link href="/components">Components</mj-link>
	<mj-link href="/documentation">Documentation</mj-link>
</mj-inline-links>

or there can be full URL also? (Empty base-url must be preserved?)
<mj-inline-links base-url="">
	<mj-link href="https://mjml.i/components">Components</mj-link>
	<mj-link href="https://github.com/mjmlio/">Github</mj-link>
</mj-inline-links>

Thanks in advance for clarification.

Hi @mattez, it's not mentioned because you can use both, cf this example: https://mjml.io/try-it-live/Hyrd3busg
Cheers

hi @ngarnier thank you for response.
When I want to use all links with "full url" like here https://mjml.io/try-it-live/Hy-eJM_se then I don't need base-url attribute. So I deleted it and this triggers an error MJML badly formatted - see this https://mjml.io/try-it-live/BJf6TW_se .
IMHO It's not intuitively expected behavior.

Ha indeed, thanks for reporting! base-url should be set ton an empty url by default (see https://github.com/mjmlio/mjml/blob/master/packages/mjml-navbar/src/InlineLinks.js#L11), please use a dummy base-url in the meantime :-).

And should be mentioned in documentation that href attribute content of mj-link  is URL-encoded (url-safe) when redered. So my variable {{myvariable}} changed to this %7B%7Bmyvariable%7D%7D or [[myvariable]] to %5B%5Bmyvariable%5D%5D.
IMHO It's not intuitively expected behavior also.
Can I somehow turn URL-encoding off?

Can you try with MJML 3.3 beta, it should be fixed ?

Hi @iRyusa my setup is:
$ node -v
v7.5.0
$ mjml --version
3.3.0-beta.8

My MJML code is mj-inline-links empty base-url ():
...
<mj-inline-links base-url="">
	<mj-link href="{{linktest1}}">Test link 1</mj-link>
	<mj-link href="{{linktest2}}">Test link 2</mj-link>
</mj-inline-links>
...

and I run $ mjml input.mjml -o content.html it render
...
Test link 1
...
Test link 2
...

Is it possible to use images within the

@iRyusa so it is separate issue right? It more important then "missing in documentation".
It annoying. Every time I have to replace URLencoded Smarty variables back to original state.
(From this %7B%7Blinktest1%7D%7D to this {{linktest1}}.
Please help ;D

So that's a duplicate of #664 now, I can close this one


WasapiCapture buffer size bug?

Given the WASAPI wave format, the AverageBytesPerSecond is 384000.
So if I specify, say, 500ms for the audioBufferMillisecondsLength parameter in the constructor, I would expect the actual buffer size to be 192000, but in fact it is only 96000.
If I simply double the parameter, I get the right amount of data and the rest of the signal chain works fine, but I'd like to understand if this is a bug or if the parameter is misnamed or if i'm just not understanding what this parameter means.

When playing and capturing audio you usually work with two buffers - one is being accessed by the soundcard while the other one is being processed by your code. So the buffer length gets halved. I regret naming the parameter that way though as it has confused plenty of people.


Cache system skips bootstrap while it should not

The cache system skips bootstrapping sometimes while it should not. This results in missing dependencies in the build phase.
https://dev.azure.com/atomcommunity/atomcommunity/_build/results?buildId=887&view=results
Happens in https://github.com/atom-ide-community/atom/pull/155 or #156

The node_modules of the script runner was not being cached.


[WIP] Use chainer.grad in ACER

It is simpler than backward with backprop_truncated.
Todo

[ ] check training performance on atari

I confirmed this change does not affect training performance.
python3 examples/atari/train_acer_ale.py 16 was run for three random seeds for each game.


Multiverse failed to import world

Hello there, There is an earth map which I let my player base play on for now, I want to create a plain version of that, so I re-downloaded the whole map and uploaded it too the server files. I did /mv import and it started and failed. I checked the server console and here is what it does:
https://pastebin.com/hiEnyrhN
it just suddenly stops.
If you can help in anyway you can, that would be great. Thanks ~LoJoSho

Are you using the most recent builds from https://ci.onarandombox.com/view/Multiverse/?

Thanks for the help, however I figured out what the problem was. I forgot to delete the uid.dat ! Still, I already updated it to the latest verison. Still thanks for the advice! Have a great day

Cool - no worries!


[Feature Request] Add support for temp/test dbs with @neo4j-labs/temp-dbs

Testing with neo4j as we all know leaves much to be desired but it would be nice if we could spawn test dbs so that integration tests that include the database would be possible. For reference, this lib makes it possible already but the design choices made by the devs of the lib make it hard to integrate the lib with neogma without reaching into neogma source and tweaking some things.

Thanks for your contribution! Released at v1.13.0


minor change to readme for tuntap

Change tun1 to tun0 when giving interface an ip address so example commands work correctly

Oops! You are correct


Scrolling to a Certain Point at the beginning

Hi,
I came to know about this library just today. I started playing around with it and I'm very impressed with the number of features offered.
I believe it will become the top alternative for the MPAndroidChart.
I just wanted to know whether you can scroll to a certain point at the beginning. Say I want to scroll to the last point so the user will scroll left instead of right. This makes sense when using date & time for X-Axis.
I've gone through the documentation. But I couldn't find any mention of scrolling to a certain point.

Hello! Cheers for the kind words. This is a feature that we’re working on at the moment. It’ll be added with the next update.

That's great to hear!
Thank you.

Vico 1.5.0 is now rolling out, and it includes the feature in question. The update should be available within half an hour.


Dynamic linking fails with libssl3.so systems

Hi, I created following project - https://github.com/adarcanum/openssl4j-example/tree/master
When running the main method it throws:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/native5689319720219818901/libopenssl4j-Linux-amd64.so: libssl.so.1.1: cannot open shared object file: No such file or directory
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
	at java.base/java.lang.Runtime.load0(Runtime.java:755)
	at java.base/java.lang.System.load(System.java:1953)
	at de.sfuhrm.openssl4j.NativeLoader.load(NativeLoader.java:48)
	at de.sfuhrm.openssl4j.NativeLoader.loadAll(NativeLoader.java:39)
	at de.sfuhrm.openssl4j.OpenSSL4JProvider.<init>(OpenSSL4JProvider.java:34)
	at com.example.MainKt.main(Main.kt:8)
	at com.example.MainKt.main(Main.kt)

Not sure what I might be missing here. Help would be appriciated.
EDIT: just for some context I tried doing some debugging, I can see the temp file created and libopenssl4j-Linux-amd64.so is inside, so I am not sure why it may be failing like this.

Thanks for your issue!
Can you give me more context, i.e. on what operating system + version you are running that?
It looks like the so-file is wanting to load a library (libssl.so.1.1) that is not part of your system. Can you check your libssl versions installed and paste them here please ()?
Mine reads like this:
~# LANG=c ldconfig -v|grep libssl
...
	libssl.so.3 -> libssl.so.3
	libssl.so.1.0.2 -> libssl.so.1.0.2
	libssl.so.1.1 -> libssl.so.1.1
	libssl3.so -> libssl3.so
...
...

which is a Debian 12, but not having the library anymore in any package:

apt-file search libssl.so
android-libboringssl: /usr/lib/x86_64-linux-gnu/android/libssl.so.0
android-libboringssl-dev: /usr/lib/x86_64-linux-gnu/android/libssl.so
libssl-dev: /usr/lib/x86_64-linux-gnu/libssl.so
libssl3: /usr/lib/x86_64-linux-gnu/libssl.so.3

EDIT: just for some context I tried doing some debugging, I can see the temp file created and libopenssl4j-Linux-amd64.so is inside, so I am not sure why it may be failing like this.

Yes, the so-file in the temp filesystem is actually built on another system (Debian 10!). Probably we'll need also different so-files per target OS version.

Hi,
output of LANG=c ldconfig -v|grep libssl
	libssl.so.3 -> libssl.so.3
	libssl3.so -> libssl3.so
	libssl.so.3 -> libssl.so.3

output of apt-file search libssl.so
android-libboringssl: /usr/lib/x86_64-linux-gnu/android/libssl.so.0
android-libboringssl-dev: /usr/lib/x86_64-linux-gnu/android/libssl.so
libssl-dev: /usr/lib/x86_64-linux-gnu/libssl.so
libssl3: /usr/lib/x86_64-linux-gnu/libssl.so.3

Thanks for your feedback! This means that the dynamically linked library to the system does not exist in the needed version and there needs to be a solution for that.
possible approaches:

statically link libssl to have a robustness over multiple systems and less requirements
package multiple versions of openssl4j that has bindings to libssl1.1 and libssl3

I personally favor the static linking.
I'll update the ticket to reflect more the source of the problem.
Stay tuned for news.

In the branch https://github.com/sfuhrm/openssl4j/tree/STATIC_SSL I have already a possibly working solution. I'll keep you informed.

@adarcanum I have finished including the fix in the main branch and releasing it.
libssl is now statically linked to overcome problems with the system not having libssl.
Would be cool if your could check your use-case with the new openssl4j 0.5.0 and give feedback.

Solved to the current knowledge.


Multyplayer buged since beta 20 worked till beta19

since beta 20 all automatic alchemy and everthing that drains esencias from flasks dont work anymore i hope this bug get's fixed soon
i really enjoy playing this mod with my frinds but being stuck on version 19 is a bit of a bummer :/

I am not experiencing this issue on multiplayer with beta 24. Perhaps another mod is causing this?

@Deromer What mods do you have running with TC Beta 24?

@Deromer there was a bug in Beta 20 that the effect of essentia transferring in the air was not rendered properly. Only a graphic bug though and it got fixed in later versions. You'd better see if you can reproduce the bug in the latest version before reporting :)

Any update on this?

i reset my server and its still not working everthing that pulls from flasks does not seem to work

@Azanor is the rendering effect of essentia transferring in the air using minecraft particle class? or linked to that setting?

@Deromer actually which version of Thaumcraft 6 is your server in?

I tried version 20 23 and 24 all have the same issue


Machida doesn't compile on MacOS High Sierra

What version of OSX are you running on?

High Sierra (10.13)

When you say you changed: Fixed by changing the #include <Python/Python.h> in python-wallaroo.c to be <Python2.7/Python.h>, yeah mean line 20 yes?

Yeah the one in the line 20 in the if statement, I made both of them to be 2.7 as the python version I have.

Confirmed. It looks like the Python directories moved around in 10.13.

@nitbix has a fix for this. he tested on high sierra, i tested on el capitan. PR coming soon.

Released.


Issue with lxml during document classification training

I set up the model for training for document classification task. Followed the instructions on README page. However, usually a minute or so into training, I would get an error as below:
我按照README把数据和模型都准备好，用来做文档分类的工作。但运行training的代码，大约30秒到1分钟左右，出现下列错误，跟lxml有关：
Traceback (most recent call last):
  File "run_classification.py", line 858, in <module>
    main()
  File "run_classification.py", line 790, in main
    args, args.task_name, tokenizer, evaluate=False
  File "run_classification.py", line 418, in load_and_cache_examples
    else processor.get_train_examples(args.data_dir)
  File "/databricks/driver/unilm/layoutlm/utils_classification.py", line 104, in get_train_examples
    text, bbox = self.read_hocr_file(data_dir, file)
  File "/databricks/driver/unilm/layoutlm/utils_classification.py", line 125, in read_hocr_file
    for page in doc.xpath("//*[@class='ocr_page']"):
  File "src/lxml/etree.pyx", line 2292, in lxml.etree._ElementTree.xpath
  File "src/lxml/etree.pyx", line 1870, in lxml.etree._ElementTree._assertHasRoot
AssertionError: ElementTree not initialized, missing root

I tried installing the latest version of lxml (4.5), with my original version being 4.3, and it did not resolve the issue. Any pointers on how I might be able to resolve this issue? Thanks!
我尝试把lxml从原来的4.3版本更新的4.5，但还是有相同的问题。不知道这个该怎么解决，谢谢！

Hi @andrewcby ,
It seems that there are some empty files or their formats are unacceptable. I have added exception handling for lxml parsing. Please pull the latest code and check the warning data files.
Thanks.


api/getDocument : fix PDF binary data check (object byteLength)

Could you add a description what this PR is fixing? Looks like it adds support for ArrayBuffer. If yes, could you add a separate if-branch that would use pdfBytes instanceof ArrayBuffer instead?

Yes, this fix adds support for ArrayBuffer. I could add a separate if-branch, but do you prefer it before or after the "object" if-branch ? Thx

you prefer it before or after the "object" if-branch

after is fine

It's ok for me.

Looks good with commit message (and PR title) change to reflect the purpose of the commit

The commit/PR message is modified. I hope it will suit you.

/botio test

Thank you for the patch.

You're welcome ;)


Import of upper-case Sirupsen/logrus on gopkg

go get gopkg.in/gemnasium/logrus-airbrake-legacy-hook.v1 ends with the version, that refers to tag 1.0.0, that uses old import

Thanks for reporting this.
I have released 1.0.1 to fix the issue
(refs 8895bb2576ec92d9a1f44900496659f69a3a7ad1)


Fix default address in AuditorClientBuilder

This fixes #306

Codecov Report

Merging #307 (abb7a54) into main (71a389d) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #307   +/-   ##
=======================================
  Coverage   53.84%   53.84%
=======================================
  Files          41       41
  Lines        3148     3148
=======================================
  Hits         1695     1695
  Misses       1453     1453

Impacted Files
Coverage Δ

auditor/src/client/mod.rs
93.49% <100.00%> (ø)


Unit 3 Training error

How do I correct the error below
!python train.py --algo dqn  --env SpaceInvadersNoFrameskip-v4  -f logs/
python3: can't open file 'train.py': [Errno 2] No such file or directory

If this problem is on colab
try changing from
=>drive.mount('/content/gdrive')
%cd '/content/gdrive/'
to particular path where the train.py is present
=> drive.mount('content/gdrive')
%cd '/content/gdrive/My Drive/models/research/object_detection/'

Even with that I still can't seem to correct it.  Cheers

Hey there 👋 that's weird 🤔 did you follow every step of the colab? Especially the git clone part?

Hi Thomas.  Thank you for the reply.
Yes, I did run the git clone. Let me try again tomorrow.
Cheers,
R
On Tue, Dec 20, 2022 at 1:23 PM Thomas Simonini @.***>
wrote:

Hey there 👋 that's weird 🤔 did you follow every step of the colab?
Especially the git clone part?
—
Reply to this email directly, view it on GitHub
https://github.com/huggingface/deep-rl-class/issues/149#issuecomment-1359209651,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZ4OTQSIFHFYLF2RZIY6BLDWOGJKBANCNFSM6AAAAAATEHSN6E
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi Thomas,
Just to keep you in the loop, I have pushed the model to Huggingface😀😎.
I think the issue was the runtime, when I rerun the cell the error seems to
resolve.  Thank you.
As per the course requirements, I just require a computer, internet access
and Huggingface account.  Will I require a GPU for later units.
Once again thank you. I'm looking to complete more than 90% of the course,
and get the certificate.
Happy holidays,
Raj Moodley
[image: image.png]
On Tue, Dec 20, 2022 at 3:18 PM Rajan Moodley @.***>
wrote:

Hi Thomas.  Thank you for the reply.
Yes, I did run the git clone. Let me try again tomorrow.
Cheers,
R
On Tue, Dec 20, 2022 at 1:23 PM Thomas Simonini @.***>
wrote:

Hey there 👋 that's weird 🤔 did you follow every step of the colab?
Especially the git clone part?
—
Reply to this email directly, view it on GitHub
https://github.com/huggingface/deep-rl-class/issues/149#issuecomment-1359209651,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZ4OTQSIFHFYLF2RZIY6BLDWOGJKBANCNFSM6AAAAAATEHSN6E
.
You are receiving this because you authored the thread.Message ID:
@.***>

Happy to hear that 🥳 don't hesitate to share the model on discord rl-i-made-this
For the current units no. For later it's not mandatory but it can be good for the A2C and PPO since training on colab will be longer.
Happy holidays 🤗 I'm closing the issue


add an episode whitelist that controls which episodes are eligible for download

This will be useful to control cost if using remote whisper.
My client is really eager to request mp3s (I think it's trying to read the episode lengths from the mp3s) which means that unless I'm careful I get tons of downloads. This means that I just leave podly off most of the time.
Sketch implementation:

add the DB described in https://github.com/jdrbc/podly_pure_podcasts/issues/9
The DB has a table called "episode" or some such
whenever we poll upstream, add previously unseen episodes to our episode table with "blocked = true" or some such
when we get an episode request, compare with the table and only let it go through if it's not blocked

https://github.com/jdrbc/podly_pure_podcasts/pull/15 was not actually complete! I like to open [WIP] PRs as I work so I can look at the diff in GitHub. Sorry for any confusion! I'll make some post-hoc edits to that PR description and plan to do the rest of the work in a separate PR, probably this coming weekend.

Hi @frrad, just coming here to say thanks for your hard work on this awesome project and to offer my support for this feature. Like you, I'm finding my podcast client (AntennaPod on Android) is triggering multiple (unexpected) downloads, even when simply adding/refreshing a new podcast feed, burning through OpenAPI credits behind the scenes. I like the idea of a default blocklist, where now episodes are blocked when first discovered via RSS, but can be marked as desired by the user, allowing them to be transcribed and analysed 🙌

All glory to @jdrbc who has done basically all the work so far thanks to my strategically timed vacation :-D Hopefully I will get some time this weekend to do some work 🤞

closed by https://github.com/jdrbc/podly_pure_podcasts/pull/27


Can't override actions.add_new_branch

  {
      "xavierchanth/arbor.nvim",
      cmd = { "Arbor" },
      ---@type arbor.config
      opts = {
          apply_recommended = false,
          worktree = {
              normal = { base = "relative_common", path = "../.." },
              bare = { base = "relative_common", path = "../.." },
          },
          settings = {
              add = {
                  on_existing = Util.worktree.arbor_post_switch,
                  path_style = "smart",
              },
          },
          actions = {
              add = {
                  ["add new branch"] = function(info)
                      require("arbor").actions.add_new_branch(
                          info,
                          { path_style = "smart" }
                      )
                  end,
              },
              pick = {
                  ["remove worktree"] = function()
                      require("arbor").remove()
                  end,
              },
          },
          hooks = {
              post_add = function(info)
                  return Util.worktree.arbor_post_add(info)
              end,
              post_pick = function(info)
                  return Util.worktree.arbor_post_switch(info)
              end,
              pre_remove = function(info)
                  return Util.worktree.arbor_pre_remove(info)
              end,
          },
      },
  }

Here I override the  add new branch  action with { path_style = "smart" } but it still prompts for input.

  {

      "xavierchanth/arbor.nvim",

      cmd = { "Arbor" },

      ---@type arbor.config

      opts = {

          apply_recommended = false,

          worktree = {

              normal = { base = "relative_common", path = "../.." },

              bare = { base = "relative_common", path = "../.." },

          },

          settings = {

              add = {

                  on_existing = Util.worktree.arbor_post_switch,

                  path_style = "smart",

              },

          },

          actions = {

              add = {

                  ["add new branch"] = function(info)

                      require("arbor").actions.add_new_branch(

                          info,

                          { path_style = "smart" }

                      )

                  end,

              },

              pick = {

                  ["remove worktree"] = function()

                      require("arbor").remove()

                  end,

              },

          },

          hooks = {

              post_add = function(info)

                  return Util.worktree.arbor_post_add(info)

              end,

              post_pick = function(info)

                  return Util.worktree.arbor_post_switch(info)

              end,

              pre_remove = function(info)

                  return Util.worktree.arbor_pre_remove(info)

              end,

          },

      },

  }

Here I override the  add new branch  action with { path_style = "smart" } but it still prompts for input.

Ah, so when you use the add picker if it is a remote branch it will use "smart" to create the branch.
But if it is a local branch, it will call the on_existing function which should, by default, trigger a switch since the branch already exists.
What add new branch does, is it forcefully overrides path_style to prompt, so that you can duplicate a local branch. Maybe I can make it so that by default the add picker will ignore the on_existing flow if the function is nil, and set the default to nil? This would remove the need to use "add new branch" in most scenarios.
But, even if the path_style is smart, it would fallback to prompt when smart is not able to resolve a path name automatically.

But if it is a local branch, it will call the on_existing function which should, by default (I think), trigger a switch since the branch already exists.

Are you referring to the default "add" action or the custom "add new branch"? To clarify, the bug I mentioned occurs when I use the custom "add new branch."
The issue came up when I tried creating a folder named haha for a new branch called fix/nvim-error, based on main. It keeps placing the folder inside ./fix/nvim-error instead of creating it where I expected.

Here’s the flow I have in mind:

While in folder A on the main branch, I use :Arbor add.
This prompts the user to provide a name for the new branch and a folder.
If the user selects an existing branch, it still creates a new folder with the prompted name. The folder's location is determined by the settings.

I like the idea of having a single command handle both adding and switching, but there should still be a way to add a branch even if it already exists.

But if it is a local branch, it will call the on_existing function which should, by default (I think), trigger a switch since the branch already exists.

Are you referring to the default "add" action or the custom "add new branch"? To clarify, the bug I mentioned occurs when I use the custom "add new branch."
The issue came up when I tried creating a folder named haha for a new branch called fix/nvim-error, based on main. It keeps placing the folder inside ./fix/nvim-error instead of creating it where I expected.

Here’s the flow I have in mind:

While in folder A on the main branch, I use :Arbor add.

This prompts the user to provide a name for the new branch and a folder.

If the user selects an existing branch, it still creates a new folder with the prompted name. The folder's location is determined by the settings.

I like the idea of having a single command handle both adding and switching, but there should still be a way to add a branch even if it already exists.

Oh, I misunderstood the original report. That is most definitely a bug, most likely a path which should be absolute is relative. I'll see if I can take a look after my work day.

Hey @vunhatchuong, I'm not able to reproduce, would you be able to provide logs from the pre_add and post_add hooks:
pre_add = function(info)
  vim.print("pre")
  vim.print(vim.inspect(info))
end,
post_add = function(info)
    vim.print("post")
  vim.print(vim.inspect(info))
  return Util.worktree.arbor_post_add(info)
end,

Thanks in advance

The original setup only has 1 branch main both locally and upstream.
Steps:

:Arbor add.
Choose action: add new branch.
Choose branch: main.
Type "Path for the worktree" with haha.

log:
post
{
  branch = "main",
  branch_info = {
    display_name = "main",
    head = true,
    refname = "refs/heads/main",
    upstream = "origin/main",
    worktree_path = "/home/ronny/.dotfiles"
  },
  common_dir = "/home/ronny/.dotfiles/.git",
  cwd = "/home/ronny/.dotfiles/nvim",
  new_branch = "haha",
  new_path = "/home/ronny/haha",
  operation_opts = {
    branch_style = "path",
    hooks = {
      pre = <function 1>
    },
    on_existing = false,
    path_style = "prompt",
    show_actions = false,
    show_remote_branches = true
  },
  repo_type = "normal",
  resolved_base = "/home/ronny",
  toplevel = "/home/ronny/.dotfiles"
}

So the expect path was /home/ronny/haha, but the worktree was created under /home/ronny/.dotfiles/nvim/haha?

No, the expected result is path_style = "smart" not path_style = "prompt" thus it shouldn't prompt me to input the path at all.
Although unrelated to this issue, I expect base = "relative_common" to put me at the root of repo and not inside .git folder so I can just use path = "../" and not path = "../.." like above.

I patched the add action so you can specify a custom resolver function.
You can find examples of the builtin ones here: https://github.com/XavierChanth/arbor.nvim/blob/326a7b915ad71763ac4486476ad2bd45254cb57c/lua/arbor/core/add.lua#L91-L121
local function custom_path_resolver(info, local_branches)
---info type spec (dictionary table):
---@class arbor.git.info
---@field operation_opts? arbor.opts
---@field branch string
---@field cwd string
---@field toplevel string
---@field repo_type arbor.git.repo_type
---@field common_dir string
---@field resolved_base? string
---@field branch_info? arbor.git.branch
---@field new_path? string
---@field new_branch? string

---local_branches (list of tables)
---@class arbor.git.branch
---@field head boolean
---@field main_branch boolean?
---@field refname string
---@field upstream string?
---@field worktree_path string?
---@field display_name string
end

Note that some values in info will be null at this point, specifically, new_path and new_branch, since this is used to resolve them.

Although unrelated to this issue, I expect base = "relative_common" to put me at the root of repo and not inside .git folder so I can just use path = "../" and not path = "../.." like above.

In git, for a given repo the only fixed path we have which can be resolved is the git common dir, and this is not always in the same place in every repository structure. Specifically in a default bare repo it is already the "root".
I can also add a relative_workdir which will resolve to the current git working directory, but I haven't as of yet, because people working with nested paths will experience unusual behavior.

How would you expect smart to come up with a new name from nothing ...

Sorry I was too tunneled trying to make my workflow work, but I think found the problem.
https://github.com/XavierChanth/arbor.nvim/blob/326a7b915ad71763ac4486476ad2bd45254cb57c/lua/arbor/actions/add_new_branch.lua#L22
should be opts.path_style = opts.path_style or "prompt" otherwise it will override the user's settings.

Also, in this setting branch_style = "prompt" is overridden correctly but path_style is not, it still prompts for input.
opts = {
    settings = {
        add = {
            path_style = "basename",
            branch_style = "prompt",
        },
    }}

If I put it directly into "add new branch" it does override correctly
actions = {
    add = {
        ["add new branch"] = function(info)
            require("arbor").actions.add_new_branch(info, {
                path_style = "basename",
                branch_style = "prompt",
            })
        end,
    }}

Also, I guess this is personal preference but I expect path_style = "basename" to take the basename of the newly created branch not the name of the branch that it inherits from.
So If I create a new branch named fix/nvim-error from main the basename should be nvim-error and not main.

should be opts.path_style = opts.path_style or "prompt" otherwise it will override the user's settings.

The override was intentional, but I've loosened it to accept your own custom function in the latest release. See this comment:
https://github.com/XavierChanth/arbor.nvim/issues/2#issuecomment-2488596067
Regardless of whether the path_style is smart or basename, still can't create something from nothing. If you have some clever way you want to resolve names, use the function, but I won't be adding that to the core. Even if I come up with something decent and not prone to bugs, it's likely to be opinionated and a source for complaints.

Also, I guess this is personal preference but I expect path_style = "basename" to take the basename of the newly created branch not the name of the branch that it inherits from.
So If I create a new branch named fix/nvim-error from main the basename should be nvim-error and not main.

Nope, that one is a bug... I changed some things around early on in development and that is referencing the wrong path, I'll have a release with a fix.

Actually, no it's not. Same story there as above. What you are looking for is branch_style="path"

Note that path is always resolved before branch, so it is the branch name that is determined based on the path name, not the other way around. Branch has a dependency on path, and this is mainly for the reason that branch name can be unset (branch_style=git will tell git worktree to try to infer a branch name, note the emphasis on try). So it's not feasible to trust path having a dependency on branch.

You can assume with the defaults that when you set path, you are setting both branch and path.

Note that path is always resolved before branch

Oh I see, so I can't do something like this also:
actions = {
    add = {
        ["add new branch"] = function(info)
            require("arbor").actions.add_new_branch(info, {
                path_style = function()
                    return vim.fs.basename(info.new_branch)
                end,
                branch_style = "prompt",
            })
        end}}

Welp... Sorry to bother you for nothing then.

Note that path is always resolved before branch

Oh I see, so I can't do something like this also:

actions = {

    add = {

        ["add new branch"] = function(info)

            require("arbor").actions.add_new_branch(info, {

                path_style = function()

                    return vim.fs.basename(info.new_branch)

                end,

                branch_style = "prompt",

            })

        end}}

Welp... Sorry to bother you for nothing then.

Yeah same problem as path, if you are creating a new branch, I can't guess the name of the branch.
But if there's a particular workflow you have in mind, I would love to hear it. Maybe there is a feature I can add which would make it achievable for you.

In my ideal workflow, the branch name is the priority and the path will inherit from it.

:Arbor add
Type branch name : fix/nvim-error.
Plugin will auto create folder based on basename. So branch fix/nvim-error will create a folder name nvim-error.
If that folder already exists then prompt for user input.

Also I think there should be rollback functionality. Currently, during :Arbor add if you create a new branch but the folder already exists, the branch is still created so now I have to manually fix it or create the worktree myself.

In my ideal workflow, the branch name is the priority and the path will inherit from it.

:Arbor add

Type branch name : fix/nvim-error.

Plugin will auto create folder based on basename. So branch fix/nvim-error will create a folder name nvim-error.

If that folder already exists then prompt for user input.

Also I think there should be rollback functionality. Currently, during :Arbor add if you create a new branch but the folder already exists, the branch is still created so now I have to manually fix it or create the worktree myself.

Ah, makes sense. I'll need some time to think about edge cases, but I should be able to make some time over the weekend to come up with a good solution for you.

@vunhatchuong please check out https://github.com/XavierChanth/arbor.nvim/releases/tag/0.3.0

Thanks! I'm able to make my workflow work with
require("arbor").actions.add_new_branch(info, {
    path_style = function()
        return vim.fs.basename(info.new_branch)
    end,
    branch_style = "prompt",
})

The new path_style="branch" doesn't work for me since it creates the new folder nested, so branch with the name fix/nvim-error will create a new folder with the path./fix/nvim-error instead of ./nvim-error
There's still the problem with rollback tho.

There's still the problem with rollback tho.

I'm not sure what you mean by this.

I was referring to this part of my comment:

Also I think there should be rollback functionality. Currently, during :Arbor add if you create a new branch but the folder already exists, the branch is still created so now I have to manually fix it or create the worktree myself.

I'm hesitant to implement anything that deletes branches. I don't want this plugin responsible deleting your work by mistake.
I considered having an option for remove worktree to also remove branches, but I erred on the side of caution.
If I have a good testing solution then I'll consider it, but the test suite is a big time sink. Since some flows require user interaction, and the test harness needs create and test against   repositories of various formats.

I'm hesitant to implement anything that deletes branches

Maybe you can add a prompt like "Failed: folder already exists, do you want to delete the {info.new_branch}?"

I'm hesitant to implement anything that deletes branches

Maybe you can add a prompt like "Failed: folder already exists, do you want to delete the {info.new_branch}?"

@vunhatchuong I've added a hook called on_add_failed to the add options.
arbor exposes a simple wrapper around plenary which will resolve the git binary that you've configured it with:
local function delete_branch(info, branch)
  local job = require("arbor").git({
    args = {"branch", "-d", branch},
   })
   job:start()
end

I did not test this hook snippet
You can build your own action from here, use the snippet at your own risk.


Setting Height for table crahes

Describe the bug
If i remove height from my table, it doesnt throw a console error, with height set to like "50%" it throws an error on the scrollRef
To Reproduce
Steps to reproduce the behavior:
Create a table with smaller height than the page and rerender
Expected behavior
No Crash
Screenshots

Desktop (please complete the following information):

Additional context
Using latest of the lib

Can you please share what are the exact versions of mantine-datatable and @mantine/* packages?
Are you sure you're using the latest versions?
Nothing like this should happen in the latest version, as you can see in these example pages:

Scrollable vs. auto-height
Complex usage

Ideally I'd like to know what's in the lockfile (i.e. yarn.lock or package-lock.json) rather than your package.json.
I'm asking because Mantine 6.0.18 had a bug that could possibly trigger this kind of error.

When I get home I'm going to upgrade to 0.19 of mantine and get back to you. I had no idea it was mantine being funky, it just kept pointing to the code inside your library. I see mantine is locked at v18 so I will see if 19 fixes it. Thank you for the quick response!

I assume everything worked with the new version of Mantine, so I am going to close this for now.
Please feel free to reopen if necessary.


squid:AssignmentInSubExpressionCheck - Assignments should not be made from within sub-expressions

This pull request is focused on resolving occurrences of Sonar rules
squid:AssignmentInSubExpressionCheck - Assignments should not be made from within sub-expressions.
You can find more information about the issue here:
https://dev.eclipse.org/sonar/rules/show/squid:AssignmentInSubExpressionCheck
Please let me know if you have any questions.
George Kankava

Can one of the admins verify this PR? Comment with 'ok to test' to start the build.

+1


365 group creation management script does not work

When running the script after installing the powershell module azureadpreview
https://docs.microsoft.com/en-us/microsoft-365/solutions/manage-creation-of-groups?view=o365-worldwide
` Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:6 char:22

$settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Prop ...

                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySettingTemplate : The term 'Get-AzureADDirectorySettingTemplate' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:9 char:17

$template = Get-AzureADDirectorySettingTemplate | Where-object {$ ...

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySettingTemplate:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

You cannot call a method on a null-valued expression.
At line:10 char:5

$settingsCopy = $template.CreateDirectorySetting()

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidOperation: (:) [], RuntimeException
FullyQualifiedErrorId : InvokeMethodOnNull

New-AzureADDirectorySetting : The term 'New-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:11 char:5

New-AzureADDirectorySetting -DirectorySetting $settingsCopy

~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (New-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:12 char:26

$settingsObjectID = (Get-AzureADDirectorySetting | Where-object - ...

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:15 char:17

$settingsCopy = Get-AzureADDirectorySetting -Id $settingsObjectID

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Cannot index into a null array.
At line:16 char:1

$settingsCopy["EnableGroupCreation"] = $AllowGroupCreation

  + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
  + FullyQualifiedErrorId : NullArray

Cannot index into a null array.
At line:20 char:3

$settingsCopy["GroupCreationAllowedGroupId"] = (Get-AzureADGroup -S ...

+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

Set-AzureADDirectorySetting : The term 'Set-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:25 char:1

Set-AzureADDirectorySetting -Id $settingsObjectID -DirectorySetting $ ...

  + CategoryInfo          : ObjectNotFound: (Set-AzureADDirectorySetting:String) [], CommandNotFoundException
  + FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:27 char:2

(Get-AzureADDirectorySetting -Id $settingsObjectID).Values

 + CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException

`
when installing the azureadpreview module
` Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:6 char:22

$settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Prop ...

                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySettingTemplate : The term 'Get-AzureADDirectorySettingTemplate' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:9 char:17

$template = Get-AzureADDirectorySettingTemplate | Where-object {$ ...

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySettingTemplate:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

You cannot call a method on a null-valued expression.
At line:10 char:5

$settingsCopy = $template.CreateDirectorySetting()

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidOperation: (:) [], RuntimeException
FullyQualifiedErrorId : InvokeMethodOnNull

New-AzureADDirectorySetting : The term 'New-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:11 char:5

New-AzureADDirectorySetting -DirectorySetting $settingsCopy

~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (New-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:12 char:26

$settingsObjectID = (Get-AzureADDirectorySetting | Where-object - ...

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:15 char:17

$settingsCopy = Get-AzureADDirectorySetting -Id $settingsObjectID

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Cannot index into a null array.
At line:16 char:1

$settingsCopy["EnableGroupCreation"] = $AllowGroupCreation

  + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
  + FullyQualifiedErrorId : NullArray

Cannot index into a null array.
At line:20 char:3

$settingsCopy["GroupCreationAllowedGroupId"] = (Get-AzureADGroup -S ...

+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

Set-AzureADDirectorySetting : The term 'Set-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:25 char:1

Set-AzureADDirectorySetting -Id $settingsObjectID -DirectorySetting $ ...

  + CategoryInfo          : ObjectNotFound: (Set-AzureADDirectorySetting:String) [], CommandNotFoundException
  + FullyQualifiedErrorId : CommandNotFoundException

Get-AzureADDirectorySetting : The term 'Get-AzureADDirectorySetting' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:27 char:2

(Get-AzureADDirectorySetting -Id $settingsObjectID).Values

 + CategoryInfo          : ObjectNotFound: (Get-AzureADDirectorySetting:String) [], CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException

`
I can install it if I pass allow clobber, but the error output is the same as above. I have verified this with two different windows machines and had another user try it as well with the same errors

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

ID: 445c0a2e-1a22-d90f-0c73-0edf34f2b99a
Version Independent ID: d534ac69-134d-0198-fcb9-e19d1ed44d4b
Content: Manage who can create Microsoft 365 Groups
Content Source: microsoft-365/solutions/manage-creation-of-groups.md
Service: o365-administration
GitHub Login: @MikePlumleyMSFT
Microsoft Alias: mikeplum

Similar issue, but same issue after trying to force the preview module to load instead of the non preview module

@FlynnLives Thank you for your feedback. Once the module is installed, Can you try to Connect-AzureAD and then try to execute Get-AzureADDirectorySetting? This could also happen if the connect-azureAd cmdlet did not execute as a part of the script.
Hope this helps!
Thanks
Sri

@msbemba Thank you very much for the contribution and sharing this explanation. @FlynnLives Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


SystVnVPlan Issue #3

This issue is regarding 5.1 and 5.2.
For the output of the test cases I do not know if it is appropriate to just write "pass or fail". I did something similar to that in the first draft of my SystVnVPlan and ended up changing it. This is because we are running tests so it is obvious that we want to see if it is a pass or fail. My interpretation is that the output refers to the thing that you are testing. For instance, I think that the output in test-Rplt would be the plot. I am not too sure, though.
^what is the correct interpretation @smiths

@whitere123 @smiths
Thanks for the great feedback!


Enforcer DaemonSet missing tolerations configuration

The enforcer DaemonSet manifest is missing anyway to configure tolerations other than the really old annotation method if you k8s env is 1.6 or less. That annotation should be removed and a toleartions property should be added since it does exist in the values.yaml.

Fixed as part of PR https://github.com/aquasecurity/aqua-helm/pull/447
Thank you for help


Model - Descriptor::Media (fill matrices with just images/sounds)

@proceps et al. create matrices whose observation data are only images or other media.  Make a new class for this type of data.

[ ] Make descriptor class
[ ] Make observation class
[ ] Update Task - New Descriptor to include this type.

Done with Image matrix.


[WIP] rename 'name' to 'datacenter', use 'host' as namevar

it turns out that 'name' isn't necessarily unique and puppet requires
that a param named 'name' must be the namevar (which must be unique)
This PR isn't complete because it needs tests and possibly documentation. Please do NOT merge.
Fixes #638 and possibly #584

@dhgwilliam Thanks for adding the acceptance tests as well.  I'm having trouble executing them however.  I'll spend a little time trying to get them working again, otherwise I'll take the path of replacing the acceptance test with a mocked out API in the spec tests.
The issue:
bundle exec rake acceptance
/Users/jeff/.rbenv/versions/2.1.9/bin/ruby -I/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-3.6.0/lib:/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-support-3.6.0/lib /Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-3.6.0/exe/rspec spec/acceptance
/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/helpers/serverspec.rb:43: warning: already initialized constant Module::VALID_OPTIONS_KEYS
/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/specinfra-2.68.1/lib/specinfra/configuration.rb:4: warning: previous definition of VALID_OPTIONS_KEYS was here
Hypervisor for centos-70-x64 is vagrant
Beaker::Hypervisor, found some vagrant boxes to create

An error occurred while loading ./spec/acceptance/class_spec.rb.
Failure/Error: require 'beaker-rspec/spec_helper'
RuntimeError:
  Failed to exec 'vagrant destroy --force'. Error was /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
        from /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'

# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:233:in `block (2 levels) in vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:228:in `block in vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:226:in `chdir'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:226:in `vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:178:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor.rb:78:in `create'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:73:in `block in provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:72:in `each_key'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:72:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/beaker_shim.rb:35:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/spec_helper.rb:46:in `block in <top (required)>'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/spec_helper.rb:5:in `<top (required)>'
# ./spec/spec_helper_acceptance.rb:1:in `require'
# ./spec/spec_helper_acceptance.rb:1:in `<top (required)>'
# ./spec/acceptance/class_spec.rb:1:in `require'
# ./spec/acceptance/class_spec.rb:1:in `<top (required)>'
Hypervisor for centos-70-x64 is vagrant
Beaker::Hypervisor, found some vagrant boxes to create

An error occurred while loading ./spec/acceptance/enterprise/dashboard/api_spec.rb.
Failure/Error: require 'beaker-rspec/spec_helper'
RuntimeError:
  Failed to exec 'vagrant destroy --force'. Error was /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
        from /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'

# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:233:in `block (2 levels) in vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:228:in `block in vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:226:in `chdir'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:226:in `vagrant_cmd'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor/vagrant.rb:178:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/hypervisor.rb:78:in `create'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:73:in `block in provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:72:in `each_key'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-3.18.0/lib/beaker/network_manager.rb:72:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/beaker_shim.rb:35:in `provision'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/spec_helper.rb:46:in `block in <top (required)>'
# ./.bundle/gems/ruby/2.1.0/gems/beaker-rspec-6.1.0/lib/beaker-rspec/spec_helper.rb:5:in `<top (required)>'
# ./spec/spec_helper_acceptance.rb:1:in `require'
# ./spec/spec_helper_acceptance.rb:1:in `<top (required)>'
# ./spec/acceptance/enterprise/dashboard/api_spec.rb:1:in `require'
# ./spec/acceptance/enterprise/dashboard/api_spec.rb:1:in `<top (required)>'
No examples found.

Finished in 0.00052 seconds (files took 1.27 seconds to load)
0 examples, 0 failures, 2 errors occurred outside of examples

/Users/jeff/.rbenv/versions/2.1.9/bin/ruby -I/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-3.6.0/lib:/Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-support-3.6.0/lib /Users/jeff/projects/learnpuppet/sensu-puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-3.6.0/exe/rspec spec/acceptance failed

Environment:
gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.5
  - RUBY VERSION: 2.1.9 (2016-03-30 patchlevel 490) [x86_64-darwin16.0]
  - INSTALLATION DIRECTORY: /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /Users/jeff/.rbenv/versions/2.1.9/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/jeff/.rbenv/versions/2.1.9/bin
  - SPEC CACHE DIRECTORY: /Users/jeff/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-16
  - GEM PATHS:
     - /Users/jeff/.rbenv/versions/2.1.9/lib/ruby/gems/2.1.0
     - /Users/jeff/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/jeff/.rbenv/versions/2.1.9/bin
     - /usr/local/Cellar/rbenv/1.1.1/libexec
     - /Users/jeff/.rbenv/shims
     - /Users/jeff/google-cloud-sdk/bin
     - /Users/jeff/.rbenv/shims
     - /Users/jeff/projects/tools/hasicorp/bin
     - /usr/local/heroku/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/go/bin
     - /opt/puppetlabs/bin
     - /Users/jeff/google-cloud-sdk/bin
     - /Users/jeff/.rbenv/shims
     - /Users/jeff/projects/tools/hasicorp/bin
     - /usr/local/heroku/bin
     - /Applications/MySQLWorkbench.app/Contents/MacOS
     - /Applications/MySQLWorkbench.app/Contents/MacOS

@jeffmccune this looks great. We should also have tests in spec/classes/sensu_enterprise_spec.rb
If you can't get the beaker tests working quickly, suggest taking the puppet code from the acceptance test and add it to test/.pp and testing in Vagrant for the outcome you expect. That's what I've been doing until we get the beaker stuff going with Travis.

Released in v2.14.0


⚠ Jenkins Plugins Artifactory has degraded performance

In a376a70, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1203 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 976cd2a after 12 minutes.


Incomplete page on the new documentation

I have found this incomplete page http://getbootstrap.com/docs/4.0/extend/ linked by the fourth element on this list https://getbootstrap.com/docs/4.0/migration/#components .
PS: Another problem is the link "card" in the first paragraph. The page returned is 404 because the true link is https://getbootstrap.com/docs/4.0/components/card/ and not https://getbootstrap.com/docs/4.0/components/cards/

Duplicate of #23369.


Run query builder without CORS config

The problem:
I'm trying to search using query-builder and I always receive the following red message: "Failed to fetch". It also happens to the /ApplicationStatus endpoint. Opening the dev tools of the browser, I can see 2 requests. The first one generates a CORS Error and the second one (OPTIONS request) receives a 400 status code, with no message.
My vespa application is initialized and running, working on pyvespa. I can even do a GET request on browser seach box and it will return all results correctly.
To reproduce:
Run a vespa application with a simple schema and start the QueryBuilder with yarn dev, such as its tutorial. After that, on Chrome or Edge, open its web page and query, using GET or POST method, by URL http://localhost:8080/search/. At least to me, it'll show a error message.
Environment:

OS: Windows 11 64 bits
Node: 18.12.1
Yarn 1.22.19

Vespa version: latest

Thanks for reporting! I can reproduce the issue and is looking into

OK! Yes, the CORS config is really a pain, I we hope to have something to replace this soon. I will take the liberty to rename the title of this ticket to a feature request to eliminate the CORS requirement, and you can track progress here. Thanks!

@kkraune I configured CORS by adding that <html> to my container on services.xml, such as at documentation and that error is still being raised to me.

I just tried the instructions and they clearly don't add any cors header:
curl -v localhost:8080/search/
*   Trying <IP_ADDRESS>:8080...
* Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
> GET /search/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.84.0
> Accept: */*
>

There is no cors header set,
Expected would be to see Access-Control-Allow-Origin: *

Scratch that, it does work:
curl -v -H "Origin: https://foo.example" localhost:8080/search/
*   Trying <IP_ADDRESS>:8080...
* Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
> GET /search/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.84.0
> Accept: */*
> Origin: https://foo.example
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Thu, 09 Mar 2023 19:49:40 GMT
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Origin,Content-Type,Accept,Yahoo-Principal-Auth,Okta-Identity-Token,Okta-Access-Token,Okta-Refresh-Token,Vespa-Csrf-Token
< Access-Control-Allow-Methods: OPTIONS,GET,PUT,DELETE,POST,PATCH
< Access-Control-Allow-Origin: https://foo.example
< Access-Control-Max-Age: 604800
< Content-Type: application/json;charset=utf-8
< Vary: *, Accept-Encoding
< Content-Length: 240

Ignore my message above. It's working. The problem was I didn't set the same container ID to the server tag.  I'm closing this issue now. Thank you guys!