kfserving inference service state shows Ready=True when pods are in CrashLoopBackoff state

/kind bug
What steps did you take and what happened:
[A clear and concise description of what the bug is.]
Inference service resource was created as the deployment was created successfully with 1 pod as shown below:
k get pods -A | grep d5ce6b94087b41
xxx-namespace-xxx     d5ce6b94087b41-predictor-default-vcwhr-deployment-xxxx   3/3     Running              0          11h
k get deploy -A | grep d5ce6b94087b41
xxx-namespace-xxx    d5ce6b94087b41-predictor-default-vcwhr-deployment     1/1     1            1           20d
k get isvc -A | grep d5ce6b94087b41
xxx-namespace-xxx          d5ce6b94087b41     http://d5ce6b94087b41-xxx-namespace-xxx-xxx.com       True           100                              d5ce6b94087b41-predictor-default-vcwhr    20d
Due to some scenario, the deployment got restarted. But this time, as there was some problem with the model download storage-initialisation phase, pod got stuck with CrashLoopBackoff state.
Below is the current state of the resources:
k get pods -A | grep d5ce6b94087b41
xxx-namespace-xxx        d5ce6b94087b41-predictor-default-vcwhr-deployment-oooo    0/3    Init:CrashLoopBackOff   356        40m46s
k get deploy -A | grep d5ce6b94087b41
xxx-namespace-xxx          d5ce6b94087b41-predictor-default-vcwhr-deployment     0/1     1            0           20d
k get isvc -A | grep d5ce6b94087b41
xxx-namespace-xxx          d5ce6b94087b41     http://d5ce6b94087b41-xxx-namespace-xxx-xxx.com       True           100                              d5ce6b94087b41-predictor-default-vcwhr    20d
storage-initialiser error:
Traceback (most recent call last):   File "./scripts/initializer-entrypoint", line 14, in <module>     kfserving.Storage.download(src_uri, dest_path)   File "/usr/lib/python3.6/site-packages/kfserving/storage.py", line 62, in download     Storage._download_s3(uri, out_dir)   File "/usr/lib/python3.6/site-packages/kfserving/storage.py", line 101, in _download_s3     The path or model %s does not exist." % (uri)) RuntimeError: Failed to fetch model. The path or model s3://bucket-name/test_data/gender does not exist.
What did you expect to happen:
The inference service should reflect the similar status i.e, it should be Ready=False as there are no pods in Running state to serve the requests.
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
Could reproduce the scenario.
Step1: Create a deployment with a model available in the object store s3. Deployment/Pod/InferenceService are in Running and Ready=True state.
Step2: Delete the model from the object store that is referenced by the deployment.
Step3: Kill the pod and the new pod gets stuck with CrashLoopBackoff state. InferenceService is still in Ready=True state.
No logs were observed in kfserving-controller during the deployment restart and the new pod was trying to come up. Is this an expected behaviour as the Ready=True state is misleading though the deployment/pods are not in Running state?
Environment:

Istio Version: v1.9.7

Knative Version: v0.18.0

KFServing Version: v0.5.1

KFserving-storage-initializer: v0.5.1

Kubernetes version: (use kubectl version):
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:28:09Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.9", GitCommit:"7a576bc3935a6b555e33346fd73ad77c925e9e4a", GitTreeState:"clean", BuildDate:"2021-07-15T20:56:38Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}

I'm still seeing this behavior in the latest KServe version.
Using KServe 0.12.0 and Knative 1.13.1.
Pod enters CrashLoopBackoff and InferenceService does not reflect any of it.
Any news on this bug?


Can not find the module FixedPointImplementation

Hi, I'm very interested in this work and tried to run the code. However, I found that I can not import FixedPointImplementation. So is it an additional module which is not included in this project?

Hi Colson,
Thank you for pointing out the error. This is fixed in the latest commit.
Thanks,
Nimish

Thank you very much !
By the way, I am also doing the research of accelerating the spn by designing the heterogeneous hardware. I have read most of your papers which are good jobs !

Oh, good to hear that! Look forward to your work. If you want to discuss anything from the papers, feel free to reach me at<EMAIL_ADDRESS>


Add A Link To Insomniac Please

Hi!
When @philip-ulrich asked me to add a license (https://github.com/alexal1/Insomniac/issues/159) I immediately did it, because I don't want to stand in the way of people who have their own vision.
Now, can I make s small request in turn? As technically this is Insomniac's fork, could you please write it in the first line of your README? Something like "This is a fork of Insomniac project".

Hi @alexal1. We actually have something in the readme that says this on line 120. The issue #1 will always be there on github history. Also per MIT licensing, your original copyright remains in the LICENSE file. We can look at making it more obvious though.

For the record, we do plan to make a significant derivative and not just fork over the code you have to make a free “duplicate”. I’m on the road right now though and away from the computer most of the day. I’ve reached out to the other project owners to get a consensus on how to handle it.
Thanks for the request and thanks again for the original project. It’s unfortunate that we found the need to fork off.

We actually have something in the readme that says this on line 120.

Ok! Just didn't notice it.

Also per MIT licensing, your original copyright remains in the LICENSE file. We can look at making it more obvious though.

Can I update LICENSE file then both in original project and here? I'd like to add a link then.

I haven’t actually seen that done with MIT before, but if you want to add it in parentheses after your name that should be fine. We can update ours as well

There's one more moment.

There is also Insomniac which is the origin of this project, but they decided to charge a monthly fee for features that used to be free and we wanted to keep this project completely free and open source.

That's not true, because this experiment lasted a week and after negative reaction of the community was rolled back.

Yes. That was true at the time of writing. We are working on updating a lot of things right now... it will be adjusted accordingly. There is a reason this issue is still open. 🙂

Resolved in #26.


Namespace to Gateway - Populate displayName for existing gateways where null

Populate displayName for existing gateways where null.
Use 'Gateway ' (e.g. Gateway dss-loc).

Closing since @ikethecoder will cover this in backend changes as part of resolving #1019


Does this Python agent support multiple variants in the same request?

I'm getting some type errors when using multiple variants in the same request. For example, I have
key_type : variant { platform; seed_phrase; cross_platform; unknown };
purpose : variant { authentication; recovery };

But in the error, it returns the type table, and I only have one type definition that is variant:
type table1 = variant { 1_744_417_459; 3_053_362_247; 3_484_244_626; 3_782_943_626 }

Notice how in the first case, I have two different types of variants (length 4 and length 2 with different values), but in the error, it groups them into a common type of table1, with length 4.
I would have expected two different types for the two different variants, but this is not the case.
Is this user error on my part in defining types incorrectly? Or is there something weird going on with parsing the variant types? Thank you!

Can you provide a simple test that can produce the error here?

This isn't necessarily a simple example, but it is the one I'm working on, so relevant and easy to come by.
canister_did = '''
type verification_code = text;
type maxTimeToLive = opt nat64;
type UserNumber = nat64;
type PublicKey = blob;
type CredentialId = blob;
type DeviceKey = PublicKey;
type UserKey = PublicKey;
type SessionKey = PublicKey;
type FrontendHostname = text;
type Timestamp = nat64;

type HeaderField = record { text; text; };
type request = HttpRequest;
type HttpRequest = record {
  method: text;
  url: text;
  headers: vec HeaderField;
  body: blob;
};

type HttpResponse = record {
  status_code: nat16;
  headers: vec HeaderField;
  body: blob;
  streaming_strategy: opt StreamingStrategy;
};

type StreamingCallbackHttpResponse = record {
  body: blob;
  token: opt Token;
};

type Token = record {};

type StreamingStrategy = variant {
  Callback: record {
    callback: func (Token) -> (StreamingCallbackHttpResponse) query;
    token: Token;
  };
};

type Purpose = variant {
    recovery;
    authentication;
};

type KeyType = variant {
    unknown;
    platform;
    cross_platform;
    seed_phrase;
};

type Challenge = record {
    png_base64: text;
    challenge_key: ChallengeKey;
};

type DeviceData = record {
  pubkey : DeviceKey;
  alias : text;
  credential_id : opt CredentialId;
  purpose: Purpose;
  key_type: KeyType;
};

type RegisterResponse = variant {
  // A new user was successfully registered.
  registered: record { user_number: UserNumber; };
  // No more registrations are possible in this instance of the II service canister.
  canister_full;
  // The challenge was not successful.
  bad_challenge;
};

type AddTentativeDeviceResponse = variant {
  // The device was tentatively added.
  added_tentatively: record { verification_code: text; device_registration_timeout: Timestamp;};
  // Device registration mode is off, either due to timeout or because it was never enabled.
  device_registration_mode_off;
  // There is another device already added tentatively
  another_device_tentatively_added;
};

type VerifyTentativeDeviceResponse = variant {
  // The device was successfully verified.
  verified;
  // Wrong verification code entered. Retry with correct code.
  wrong_code: record { retries_left: nat8};
  // Device registration mode is off, either due to timeout or because it was never enabled.
  device_registration_mode_off;
  // There is no tentative device to be verified.
  no_device_to_verify;
};

type Delegation = record {
  pubkey: PublicKey;
  expiration: Timestamp;
  targets: opt vec principal;
};

type SignedDelegation = record {
  delegation: Delegation;
  signature: blob;
};

type GetDelegationResponse = variant {
  // The signed delegation was successfully retrieved.
  signed_delegation: SignedDelegation;

  // The signature is not ready. Maybe retry by calling `prepare_delegation`
  no_such_delegation
};

type InternetIdentityStats = record {
  users_registered: nat64;
  assigned_user_number_range: record { nat64; nat64; };
};

type InternetIdentityInit = record {
  assigned_user_number_range : record { nat64; nat64; };
};

type ChallengeKey = text;

type ChallengeResult = record {
    key : ChallengeKey;
    chars : text;
};

type DeviceRegistrationInfo = record {
    tentative_device : opt DeviceData;
    expiration: Timestamp;
};

type IdentityAnchorInfo = record {
    devices : vec DeviceData;
    device_registration: opt DeviceRegistrationInfo;
};

service : {
  init_salt: () -> ();
  create_challenge : () -> (Challenge);
  register : (DeviceData, ChallengeResult) -> (RegisterResponse);
  add : (UserNumber, DeviceData) -> ();
  remove : (UserNumber, DeviceKey) -> ();
  lookup : (UserNumber) -> (vec DeviceData) query;
  get_anchor_info : (UserNumber) -> (IdentityAnchorInfo);
  get_principal : (UserNumber, FrontendHostname) -> (principal) query;
  stats : () -> (InternetIdentityStats) query;
  enter_device_registration_mode : (UserNumber) -> (Timestamp);
  exit_device_registration_mode : (UserNumber) -> ();
  add_tentative_device : (UserNumber, DeviceData) -> (AddTentativeDeviceResponse);
  verify_tentative_device : (UserNumber, verification_code) -> (VerifyTentativeDeviceResponse);
  prepare_delegation : (UserNumber, FrontendHostname, SessionKey, maxTimeToLive) -> (UserKey, Timestamp);
  get_delegation: (UserNumber, FrontendHostname, SessionKey, Timestamp) -> (GetDelegationResponse) query;
  http_request: (request) -> (HttpResponse) query;
}
'''

import pandas as pd
import numpy as np
import requests as r
import datetime
import time
import json
import os

from ic.canister import Canister
from ic.client import Client
from ic.agent import Agent
from ic import Principal
from ic.candid import encode, decode, Types
from ic.identity import Identity

i1 = Identity()
client = Client(url = "https://ic0.app")
agent = Agent(i1, client)
canister_id = 'rdmx6-jaaaa-aaaaa-aaadq-cai' #identity canister

my_canister = Canister(agent=agent, canister_id=canister_id, candid=canister_did)

my_canister.add_tentative_device(102634,
    {
      'pubkey':new_pub_key,
      'alias':'example_alias',
      'credential_id':[[]],
      'purpose':{'authentication':None},
      'key_type':{'unknown':None}
  }
)

Technically this request won't work normally (unless your II is in device registration mode), but I'm getting type errors right now, so I don't even get an error about running the code.

There is a bug in building type tables. I think it should be fixed in #61 and I have merged it to delegation branch.

Awesome. Let me try it out.

Yep, that did the trick. Thank you! Building type tables appears to be resolved in #61, and the delegation branch works great. Was able to import a delegated identity (using II info from local storage in the browser) and everything worked


vartable 0.1.0

I am submitting

[X] a new package
[ ] an update for a package

it's a packet used to create variation tables,
because at the moment the only way to do it is by hand

I have read and followed the submission guidelines and, in particular, I

[X] selected a name that isn't the most obvious or canonical name for what the package does
[X] added a typst.toml file with all required keys
[X] added a README.md with documentation for my package
[X] have chosen a license and added a LICENSE file or linked one in my README.md
[X] tested my package locally on my system and it worked
[X] excluded PDFs or README images, if any, but not the LICENSE

Thanks :)

Thanks :)

What about the review I left?

Sorry, but there have been so many different opened and closed PR for this package that I must have missed it, and I can't find it back by looking at the previous PR, can you please give me a direct link?

It's in this PR

Okay, GitHub must be broken then, because I can't see it at all, and the link you gave just sends me to the "files" tab, without any comment anywhere. I'm confused.

Ah I think I figured it out, it says pending which I thought meant it hadn't been answered but there's another button I needed to press. Let's blame bad UX :p

Ah I think I figured it out, it says pending which I thought meant it hadn't been answered but there's another button I needed to press. Let's blame bad UX :p

You can use "Add single comment" instead of "Start a review" to avoid this


fix geteip fails when using proxy

Using curl to access https sites when on proxy returns an error:
$ geteip
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

For more info see this stackoverflow qestion.
Changing from https://icanhazip.com to http://icanhazip.com resolves it for me.

The stackoverflow answer says to modify the proxy address, not the URL curl-ed. What's the verbose output of curling the https URL?

My mistake. Turns out that instead of https_proxy=http://whatever I exported http_proxy=https://whatever.


Thread network is abnormal because the MTD sends packets constantly

Describe the bug A clear and concise description of what the bug is.
Hi All,
When I was testing the OTBR connection with multiple MTD, I found that sometimes some MTD would continuously and quickly send packets in the same format as the heartbeat packets, which seemed very abnormal.
I think this affects the normal communication between OTBR and other devices. Can you see from the captured packets why these packets are constantly sent? If I want to change the code logic to stop MTD from sending heartbeat packets rapidly, what should I do?
My thread Master Key is 57506dcaab3455a04454d35d2beecf94.

To Reproduce Information to reproduce the behavior, including:

Git commit id
otbr:cf3a67383e9e25ca89208234d8efd8bee6b92f25

IEEE 802.15.4 hardware platform
NRF52833

Build steps

Network topology

Expected behavior A clear and concise description of what you expected to happen.
Console/log output If applicable, add console/log output to help explain your problem.
Additional context Add any other context about the problem here.
dc01-ERR.zip

@taoyinzhou these are 802.15.4 Data Request frame or aka "data poll" frames.
A sleepy child will periodically send data poll to its parent to check whether the parent has any queued message for it. The parent in the ack indicates whether it has any pending frame for the child.
The poll period can be set by the application layer (please see otLinkSetPollPeriod).  You can also get/set it through CLI pollperiod command.
I would suggest first checking what is the poll period being used on your devices.

@abtink
Thank you for you quickly response.
I think you're right. My PollPeriod is 100ms，so there are 10 of these packets per second.
However, I have a question about your mentioned "A sleepy child will periodically send data poll to its parent to check whether the parent has any queued message for it". Does it mean that  when there are Internet packets sent to SED, OTBR will save those packets and not send them to SED until SED comes to inquire?
If this is the case, how to increase the cache of the OTBR if hundreds of sub devices are to be connected in a single OTBR? I am using the RCP architecture.

I think you're right. My PollPeriod is 100ms，so there are 10 of these packets per second.
However, I have a question about your mentioned "A sleepy child will periodically send data poll to its parent to check whether the parent has any queued message for it". Does it mean that when there are Internet packets sent to SED, OTBR will save those packets and not send them to SED until SED comes to inquire?

Thread 1.1 requires the SED to poll its parent by sending an IEEE 802.15.4 Data Request message to receive messages. SED's Parent to buffer messages destined for the SED.

If this is the case, how to increase the cache of the OTBR if hundreds of sub devices are to be connected in a single OTBR? I am using the RCP architecture.

See the following config that specifies the number of message buffers: https://github.com/openthread/openthread/blob/16c207825ff9a004ebdbd64e90af45267d078810/src/core/config/openthread-core-default-config.h#L150

Closing stale issue.


Conref'd note element loses styling in OT 1.8.5

A conref to a note loses the styling of the label. All content, including the label is in place but the label does not get styled as bold.

Can't reproduce with DITA-OT 1.8.5 and this set of files. I'm assuming this is about the pdf2 transtype.
@juliovaz: Can you tell whether I'm missing something? Otherwise there must be something else at play here.

I think that it was a combination of a source and an override problem. You
can close this.
On May 26, 2015 12:55 PM, "Eero Helenius"<EMAIL_ADDRESS>wrote:

Can't reproduce with DITA-OT 1.8.5 and this set of files
https://github.com/eerohele/dita-ot-issues/tree/master/fixtures/1842.
I'm assuming this is about the pdf2 transtype.
@juliovaz https://github.com/juliovaz: Can you tell whether I'm missing
something? Otherwise there must be something else at play here.
—
Reply to this email directly or view it on GitHub
https://github.com/dita-ot/dita-ot/issues/1842#issuecomment-105601219.


Request for 20 Binary

Similar request to https://github.com/enricosada/dotnet-mergenupkg/issues/3
See https://github.com/matthid/dotnet-proj-info/commit/b612c40d3ee9e84c5d9b08228d495449e9159cef

@matthid you use that for? just curious.
The library works better for tools, and maybe i need to move the the project tree navigation here from FSAC for next version.

I thought about integrating it into paket. Finally I decided against it. For historical reasons we already have a project file parser/evaluator in paket so I used that instead.


Replace github.com/codegangsta/cli by github.com/urfave/cli

The repository got moved.
Closes #96
Signed-off-by: Mrunal Patel<EMAIL_ADDRESS>

LGTM


Current timeslot indicator does not update if page is left open

The time indicator updating code manually changes the position of the indicator, but doesn't re-render the component or change the now prop which is set by default at page load time. This leads to the issue below if the page is left open:

My suggestion would be to remove the repositioning code entirely, relying on React to do that instead, put now as state instead of as a prop, and simply calling setState() in the timeout.

the time indicator logic doesn't use props.now and isn't supposed to, nor is it supposed to change it. I'm not sure why you say it doesn't update...

@jquense the time indicator (the green bar in my screenshot) updates correctly. This bug is about the "current timeslot" indication not updating accordingly (you can see 2pm is bolded in my screenshot since it has the rbc-now class). I would expect 3pm to become bolded once the time rolls over, unless I'm misunderstanding the purpose of that indication.

ah ok, no, that doesn't update. I'm not too concerned about that as you can provide the value of now yourself, Potentially we could auto update it if it's not passed in, but it's not high on the priority list, if you want to take a stab at it.

fixed by #707


Fixes #330: Create miscellaneous metrics notebook

Closes #330

@gzt5142 I updated the mae function to calculate n internally. However, I wanted to update the method from .mean() to np.mean() as this matches up with the array API standard, which numpy is moving towards (from my SciPy23 notes). Or would best practice be to wait to update to that once its fully integrated?


All Functions not working when hosted on a server

What you did:
Hi, i am hosting this on a CentOS server, this allows me and a friend to use it. I can access it but i am unable to save any changes on the console.
What happened:

When i try to save the changes to the path, i see it tries to save too localhost.
-> PUT http://localhost:4000/route where it should be saving to our server which in this case is something else.
Problem description:
I can access it, but looks like configurations are pointing to local host instead of the host where it is deployed on.

Suggested solution:
Could you please commit an update that has a fix for this ? thanks so much!

Hi. I know it's too late to respond. I'm just writing here for those who have faced the same issue.
You should change the following environment variables in docker-compose.yml.
  - REACT_APP_MOCKIT_SERVER_URL=http://localhost:3000
  - REACT_APP_MOCKIT_API_URL=http://localhost:4000

Hi there, I can confirm that this issue is still present if deployed via cloned docker-compose on host A and accessed from host B.
The page gets loaded but if you try to edit exiting or add new route the dialog in modal window does not close and stays permanent and nothing happens afterwards. Only thing one can do is close the modal.

Hi. I know it's too late to respond. I'm just writing here for those who have faced the same issue.
You should change the following environment variables in docker-compose.yml:
REACT_APP_MOCKIT_SERVER_URL=http://localhost:3000
REACT_APP_MOCKIT_API_URL=http://localhost:4000

this env vars setting is already set this way and it is not working, any hint?

I know this post is 2 years old but I came across this exact same issue.
The advice from @dante0747 does in fact work - just replace "localhost" on these lines with your IP address if you're hosting on a lab or remote service. In my case the ip address of my docker server worked just fine (so if you access mockit on http://<IP_ADDRESS>:5000 then set these lines to:
REACT_APP_MOCKIT_SERVER_URL=http://<IP_ADDRESS>:3000
REACT_APP_MOCKIT_API_URL=http://<IP_ADDRESS>:4000


train.py TypeError

TypeError: Expected int32, got list containing Tensors of type '_Message' instead.
It traced back to the line:
line 168, in build_model     _, (c, h) = lstm_cell(inputs=tf.concat(1, [x[:,t,:], context]), state=[c, h])

@AlexanderYogurt did you resolve this? I have run into the same issue. And cannot figure out a solution.

You should change that line to:
(c, h) = lstm_cell(inputs=tf.concat([x[:,t,:], context], 1), state=[c, h])
or
(c, h) = lstm_cell(inputs=tf.concat(axis=1, [x[:,t,:], context]), state=[c, h])


fix(pages): update count logic in source week details when overriding meeting part

:tada: This PR is included in version 2.28.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


✨ Support for GitHub's internal integration

See discussion at https://github.com/ossf/scorecard-action/issues/1107
Set

SCORECARD_INTERNAL_GITHUB_INTEGRATION=1
SCORECARD_INTERNAL_GITHUB_SARIF_TOOL_NAME=<tool-name>
SCORECARD_INTERNAL_GITHUB_CHECKS=check1,check2,<others>

The GitHub team will be able to create a workflow:
- uses: ossf/scorecard-action@<ref>
  env:
     SCORECARD_INTERNAL_GITHUB_INTEGRATION: 1
     SCORECARD_INTERNAL_GITHUB_SARIF_TOOL_NAME: <the-name>
     SCORECARD_INTERNAL_GITHUB_CHECKS: check1,check2,check3

Note that this is a "hidden feature" and that's why we don't expose it via a proper Action input.
Add internal flags to support GitHub's internal scans

This is merged. I'll work on creating a branch in scorecard-action to test these changes. I'll circle comment in the tracking issue on scorecard-action repo.


rutracker - new property for using https

Motivation for changes:
Sometimes rutracker.org available only throw https
Detailed changes:

Add new property use_ssl(boolean)
Small code changes

Addressed issues:

None

Config usage if relevant (new plugin or updated schema):
    rutracker_auth:
      username: 'username_here'
      password: 'password_here'
      use_ssl: yes

Log and/or tests output (preferably both):

None

Why make it optional? Why not always use https?

Why make it optional? Why not always use https?
I check now - rutracker always redirect to https.
Changes are made

Changes are made


[BUG] Link to 'PPL Documentation' leads to wrong page but not 404.

Describe the bug
Wrong link destination.
To Reproduce
Steps to reproduce the behavior:

Go to the Query Workbench
Select 'PPL' as the query language.
Click 'PPL Documentation'
Arrive at https://opensearch.org/docs/latest/

Expected behavior
Clicking 'PPL Documentation' should lead to https://opensearch.org/docs/latest/observability/ppl/index/
OpenSearch Version
1.2.0
Dashboards Version
1.2.0
opensearch-project/OpenSearch-Dashboards#592

thanks for reporting this, the fix is merged to main and will be available in next release


Authorization infrastructure does not handle "per action permissions" use case well

In WebApi 2 we used an AuthorizationFlterAttribute to implement the following permissions based concept:

Each controller action has a permission code associated.
Roles are associated with a set of permissions. This set can change over time.
A user has one or more roles.
Authorization is determined by checking if any of the user's roles is associated with the action's permission code.

This was easy to use by the developer. He/she only had to decorate an action with the corresponding attribute.
It seems the new policy based approach in ASP.NET 5 makes it hard to implement his concept, because there is no way for the Handle method of the AuthorizationHandler to include the permission code in its arguments. The only way I could solve this problem was to create one new policy for each unique permission code. Since there is a large number of actions, I now have to create an equally large number of policies. It would not be a huge change to the infrastructure to be able to attach extra information to the attribute and pass it through to the handler in the AuthorizationContext, or even pass the attribute through itself. For example, the handler code could then look like this:
protected override void Handle(AuthorizationContext context, PermissionRequirement requirement) {
	var userRoles = context.User.FindAll(System.Security.Claims.ClaimTypes.Role);
	var permissionsAttribute = context.Attribute as PermissionAttribute;
	if (permissionsAttribute == null)
		return;
	if (myPermissionsChecker.RolesHavePermission(userRoles, permissionsAttribute.Permission)) {
		context.Succeed(requirement);
	}
}

This would only require a single policy, and the developer would not be burdened with having to create a new policy everytime a new controller action is added.

This might help (in RC2): https://github.com/aspnet/Security/issues/630

From where is the resource picked up? I don't see a change to the AuthorizeAttribute to include  a Resource property.

You would pass it explicitly. It's the imperative approach. You're right that it's harder to from declaratively.

I see. I would prefer the declarative option though.

When you're using MVC, the resource by default is the filter's authorization context. You can use that to get information about the action being executed and that's how you can discover the attribute:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        services.AddAuthorization(options =>
        {
            options.AddPolicy("Permissions", builder =>
            {
                builder.Requirements.Add(new PermissionsRequirement());
            });
        });

        services.AddSingleton<IAuthorizationHandler, PermissionsHandler>();
        services.AddSingleton<IPermissionService, PermissionService>();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(LogLevel.Debug);

        app.UseIISPlatformHandler();

        app.Use((context, next) =>
        {
            // This would be cookie or bearer auth, I'm just hacking to show how it works
            context.User = new ClaimsPrincipal(new ClaimsIdentity("Something"));

            return next();
        });

        app.UseMvc();
    }

    // Entry point for the application.
    public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}

public class PermissionService : IPermissionService
{
    public bool RolesHavePermission(IEnumerable<Claim> userRoles, string permissions)
    {
        // Implement something real
        return string.Equals(permissions, "Teacher");
    }
}

public class PermissionsRequirement : IAuthorizationRequirement
{
}

public class PermissionsHandler : AuthorizationHandler<PermissionsRequirement, Microsoft.AspNet.Mvc.Filters.AuthorizationContext>
{
    private readonly IPermissionService _permissionService;
    public PermissionsHandler(IPermissionService permissionService)
    {
        _permissionService = permissionService;
    }

    protected override void Handle(Microsoft.AspNet.Authorization.AuthorizationContext context, PermissionsRequirement requirement, Microsoft.AspNet.Mvc.Filters.AuthorizationContext resource)
    {
        var userRoles = context.User.FindAll(ClaimTypes.Role);
        var permissionsAttribute = resource.ActionDescriptor.FilterDescriptors.Select(f => f.Filter).OfType<PermissionsAttribute>().SingleOrDefault();

        if (permissionsAttribute == null)
        {
            return;
        }

        if (_permissionService.RolesHavePermission(userRoles, permissionsAttribute.Permission))
        {
            context.Succeed(requirement);
        }
    }
}

public interface IPermissionService
{
    bool RolesHavePermission(IEnumerable<Claim> userRoles, string permissions);
}

[Authorize("Permissions")]
public class SomethingController
{
    [Permissions("Student")]
    [HttpGet("/")]
    public string Get()
    {
        return "Hello World";
    }
}

// Marking this attribute with IFilterMetadata makes it accessible on MVC primitives
public sealed class PermissionsAttribute : Attribute, IFilterMetadata
{
    public string Permission { get; }

    public PermissionsAttribute(string permission)
    {
        Permission = permission;
    }
}

Tiny improvement to get rid of the auth policy altogether:
public class PermissionsAuthorizationFilter : AuthorizeFilter
{
    public PermissionsAuthorizationFilter() : base(GetPolicy())
    {
    }

    private static AuthorizationPolicy GetPolicy()
    {
        var policy = new AuthorizationPolicyBuilder()
                .AddRequirements(Requires.Permissions)
                .Build();

        return policy;
    }

    public override Task OnAuthorizationAsync(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
    {
        // Only check if there's a permissions attribute on the action
        if (context.ActionDescriptor.FilterDescriptors.Any(fd => fd.Filter is PermissionsAttribute))
        {
            return base.OnAuthorizationAsync(context);
        }

        return Task.FromResult(0);
    }
}

And Startup.Configure can be changed to:
services.AddMvc(options =>
{
    options.Filters.Add(new PermissionsAuthorizationFilter());
});

services.AddSingleton<IAuthorizationHandler, PermissionsHandler>();
services.AddSingleton<IPermissionService, PermissionService>();

To be fair, creating a policy per permission is just as much work as adding a parameter onto each attribute.

To be fair, creating a policy per permission is just as much work as adding a parameter onto each attribute.

Possibly, it depends on what data needs to be round tripped to the Handler. You can't really pass any data besides the policy name itself. If permissions was a flags enum for example you couldn't do the same thing.

That's not true at all. Requirements can have parameters. That's how you pass them down. So you'd have a general permissions parameter which takes data in the constructor, and then that is passed as the requirement parameter into Handle.

You'd have to enumerate all permissions up front and add a policy for each with the same name:
Startup.ConfigureServices
services.AddAuthorization(options =>
{
    foreach (var permission in GetPermissions())
    {
        options.AddPolicy(permission, builder =>
        {
            builder.AddRequirements(new PermissionRequirement(permission));
        });
    }
});

public class PermissionsRequirement : IAuthorizationRequirement
{
    public string Permissions { get; private set; }

    public PermissionsRequirement(string permissions)
    {
        Permissions = permissions;
    }
}

public class PermissionsHandler : AuthorizationHandler<PermissionsRequirement>
{
    private readonly IPermissionService _permissionService;
    public PermissionsHandler(IPermissionService permissionService)
    {
        _permissionService = permissionService;
    }

    protected override void Handle(Microsoft.AspNet.Authorization.AuthorizationContext context, PermissionsRequirement requirement)
    {
        var userRoles = context.User.FindAll(ClaimTypes.Role);

        if (_permissionService.RolesHavePermission(userRoles, requirement.Permissions))
        {
            context.Succeed(requirement);
        }
    }
}

That matches our pattern but does feel a bit cumbersome having to turn your permissions into a concrete class in order to round trip state. If you were trying to represent ACLs for example would you model it that way?

ACLs are a strange think, and don't map to web permissions easily. Instead you'd probably see a claim like "DocumentPermissions" with a CRUD value which spans the library, and then you'd use resource based auth to further drill in, just like a file ACL acts on a file, not a path.

Just like you enumerated all the permissions up front and put an attribute for each. It's much the same amount of work!

What if we turned this:
https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authorization/AuthorizationOptions.cs#L9 into a Policy provider (like Cors has) and the default implementation would be based on the policy map, but in this case it could be implemented by making permissions based on whatever data source you were using.
public interface IAuthorizationPolicyProvider
{
  Policy GetPolicy(string name);
}

Well now we're changing an entire feature between RC and RTM and you already know it's way too late for that.

It's not, It's adding an interface and come to think about it, it should have probably been implemented this way from the beginning.

If you wanted to drag the permissions from a database then add an empty requirement, and inject the repository into the Handler class. Then just apply that single policy everywhere, and act according on route data (ugh, fragile)

It's not just adding an interface. It's changing how we designed it. Which you signed off on :p We have a policy provider. It's the authorization service.

If you wanted to drag the permissions from a database then add an empty requirement, and inject the repository into the Handler class. Then just apply that single policy everywhere, and act according on route data (ugh, fragile)

Super hacky.

It's not just adding an interface. It's changing how we designed it. Which you signed off on :p We have a policy provider. It's the authorization service.

It really isn't. It's literally replacing calls to AuthenticationOptions.GetPolicy by a call to an interface, but that's an implementation detail.

It's not just adding an interface. It's changing how we designed it. Which you signed off on :p We have a policy provider. It's the authorization service.

It's not, the IAuthorizationService does a LOT more than look up policies.

Talk to @HaoK about it when he's back. But we've been told no more redesigns, we should not be changing this at such a late stage.

Sounds great :smile:
For completeness, with this new interface, the above request would look like this:
public interface IAuthorizationPolicyProvider
{
    Task<AuthorizationPolicy> GetPolicy(string policyName);
}

public class PermissionsPolicyProvider : IAuthorizationPolicyProvider
{
    public Task<AuthorizationPolicy> GetPolicy(string policyName)
    {
        var policy = new AuthorizationPolicyBuilder()
                    .AddRequirements(new PermissionsRequirement(policyName))
                    .Build();

        return Task.FromResult(policy);
    }
}

public class PermissionsRequirement : IAuthorizationRequirement
{
    public string Permissions { get; private set; }

    public PermissionsRequirement(string permissions)
    {
        Permissions = permissions;
    }
}

public class PermissionsHandler : AuthorizationHandler<PermissionsRequirement>
{
    private readonly IPermissionService _permissionService;
    public PermissionsHandler(IPermissionService permissionService)
    {
        _permissionService = permissionService;
    }

    protected override void Handle(Microsoft.AspNet.Authorization.AuthorizationContext context, PermissionsRequirement requirement)
    {
        var userRoles = context.User.FindAll(ClaimTypes.Role);

        if (_permissionService.RolesHavePermission(userRoles, requirement.Permissions))
        {
            context.Succeed(requirement);
        }
    }
}

Startup.ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddSingleton<IAuthorizationPolicyProvider, PermissionsPolicyProvider>();
    services.AddSingleton<IAuthorizationHandler, PermissionsHandler>();
}

Controller
public class SomethingController
{
    [Authorize("Student")]
    [HttpGet("/")]
    public string Get()
    {
        return "Hello World";
    }
}

@kwaclaw Bottom line is that with the new authz system, there's always a bit of indirection with policies. If you need to round trip information from the callsite (the action method in this case), there's 2 options, using a policy or a resource. In the case of an MVC action, the resource will always be the an MVC specific AuthzContext, so the only thing you can do is map policy names to your permissions concept.

Thanks for all the discussions.
Considering that authorization is often applied to specific actions, I would have expected that I can use any action-specific information that my use case requires in the processing of the authorization.
Well, since I am using MVC I still have the old AuthorizationFilterAttribute.

@kwaclaw You can. All @blowdart is saying that based on your requirements (or what we understood from them), you don't need anything specific other than the permissions decorated on the action. That's morally equivalent to a policy name. Do you do something more complex? (Even then, you can grab the Mvc AuthzContext to get more specific information about the action method).

Yes, I can, but I have to create one policy per permission code. In the past, I just had to attach the attribute.
Now I have to add another step that should not be necessary.
And yes, I can use reflection to auto-create those policies on startup - but that means I am hacking the design.

@davidfowl @blowdart RE the IPolicyProvider, that's been on my todo list for a long time but without an actual scenario to drive it, it kept getting pushed...  This was one tracking issue for it: https://github.com/aspnet/Security/issues/266
I agree that's we should have something that is only responsible for the policy mapping.  Is this something we want to try and do this week for Ask mode?

00ceeb026262bc848404d056416709dc306a57df


Recommended version

Install the recommended versions in the walkthrough
cc @hflynn

Changes look good, I've made only a few minor remarks.

@simleo @mtbc: edit done

Is this good to merge now?

@simleo @mtbc can one of you give this the final sign-off please?

I haven't really been into the infrastructure / deployment stuff so relisted.

@mtbc: not much change from last time, only version update.

@hflynn looks good to merge from my side


The fixing way for running issue: 'npm start' this repo

I got to know how to fix the 'Invalid 'reference' directive syntax' issue after you cloned the repo, did 'npm install', and did 'npm start'.
The solution is to update the package.json, update the typescript version:
package.json:
"devDependencies": {
"typescript": "^4.6.3"
}
So, update the typescript version to the latest one (the current latest version is 4.6.3).

TypeScript 4.6 is incompatible with older versions of Angular such as the one used in this repository. See https://gist.github.com/LayZeeDK/c822cc812f75bb07b7c55d07ba2719b3.

Also, only use this starter repo for Angular v4 or v5. Library projects have been built in to Angular CLI since version 6 if I recall correctly.

Also, only use this starter repo for Angular v4 or v5. Library projects have been built in to Angular CLI since version 6 if I recall correctly.

But when you do "npm start" in this repo, it doesn't work for some reason. How to fix it? If you can't change the version of TypeScript in package.json

Use:

Node.js 6.17.1
npm 3.10.10

Then:
npm install --save-dev<EMAIL_ADDRESS>npm install --save-dev<EMAIL_ADDRESS>npm install --save-dev<EMAIL_ADDRESS>
Finally:
npm start

Outcome:
Your browser opens http://localhost:3000 and renders:
<demo-app ng-version="4.1.3">
  <my-lib _nghost-c0="">

Hello Angular Library

  </my-lib>

Meaning is: 42

</demo-app>


Uncaught (in promise) DOMException: Requested device not found

Select which package(s) are affected
@livekit/components-react
Describe the bug
I'am excepting to have no errors in console.
Reproduction

open https://meet.livekit.io/ with chrome incognito tab having only microphone device
Try to join meeting
Open up console and check the errors

Logs
error while setting up prejoin DOMException: Requested device not found
Uncaught (in promise) DOMException: Requested device not found

System Info
System:
    OS: Linux 5.15 Ubuntu 20.04.6 LTS (Focal Fossa)
    CPU: (6) x64 Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz
    Memory: 8.36 GB / 15.56 GB
    Container: Yes
    Shell: 5.0.17 - /bin/bash
  Binaries:
    Node: 18.17.0 - ~/.nvm/versions/node/v18.17.0/bin/node
    Yarn: 3.6.3 - ~/.yarn/bin/yarn
    npm: 9.6.7 - ~/.nvm/versions/node/v18.17.0/bin/npm
    Watchman: 4.9.0 - /usr/bin/watchman
  Browsers:
    Chrome: 115.0.5790.170
  npmPackages:
    livekit-client: ^1.15.8 => 1.15.8

Severity
annoyance
Additional Information
No response

Hi @AurimasG12, could you attach the full stacktrace?

Hi @AurimasG12, could you attach the full stacktrace?

error while setting up prejoin DOMException: Requested device not found just this error in prejoin

the error in the console should show you a stacktrace of where exactly (which function calls) the error originates from. That's what we'd need

the error in the console should show you a stacktrace of where exactly (which function calls) the error originates from. That's what we'd need

[name].tsx:65 error while setting up prejoin DOMException: Requested device not found
   <PreJoinNoSSR
              onError={(err) => console.log('error while setting up prejoin', err)}
              defaults={{
                username: '',
                videoEnabled: true,
                audioEnabled: true,
              }}
              onSubmit={handlePreJoinSubmit}
            ></PreJoinNoSSR>

ah, ok, then why not just change that console log line?
It sounds like your main issue is the fact, that there's an error being logged to the console?
This error is only being logged in the meet repo itself and not within the components repo


Is there a way to fix the top-right to bottom-left movement when changing parameters of rectangular chladni

Not possible, this is the way chladni works.


Validation issue with validate_responses=True and connexion.problem(...)

When using connexion.problem(...) to return an error response AND at the same time enabling validate_responses in the API, I get an exception.
With the example in attachment, when going to
http://<IP_ADDRESS>:5009/api/dogs
I get an exception TypeError: <Response 109 bytes [403 FORBIDDEN]> is not JSON serializable.
If I set validate_response=False, it works as expected.
If I remove the responses/403 from the test.yaml, it works (ie no exception) but I would expect it to fail as the response is not valid.
debug_connexion.zip

Could you please post here what you are trying to return in this endpoint? What object is not serializable? Please post the code snippets here and provide more information about which version of connexion you are using, which platform are you running it, which Python version, etc. As much information you provide will be better.

Sorry for the terse description. Here some more info.
If you run the app.py in the zip file and head to http://<IP_ADDRESS>:5009/api/dogs you will see the stacktrace.
The controller called for this endpoint is the following
def get_dogs():
    return connexion.problem(status=403,
                             type="ItemNotFound",
                             title="Dogs not found !",
                             detail="No dogs at all !")

and the relevant swagger description is
paths:
  /dogs:
    get:
      operationId: "app.get_dogs"
      summary: "Get dogs"
      responses:
        200:
          description: "Dogs found"
          schema:
            $ref: '#/definitions/Dog'
        403:
          description: "Item not found"
          schema:
            $ref: '#/definitions/Error'

with the model being
definitions:
  Dog:
    type: "object"
    properties:
      name:
        type: string
  Error:
    type: "object"
    properties:
      status:
        type: integer
        description: HTTP status code
        example: 404
      type:
        type: string
        description: Type of error
        example: ItemNotFound
      title:
        type: string
        description: Humand friendly title of the error
        example: Item not found
      detail:
        type: string
        description: Detailed description of the error with contextual information
        example: The project with id '45fa5946-83e2-4531-90c8-926e15d6e748' was not found.

But everything is included in the small test files in the zip file in attachment of the OP.
My pip freeze under a python 3.5 env under windows 7
argh==0.26.2
attrs==16.0.0
click==6.6
connexion==1.0.109
Flask==0.11.1
Flask-Cors==2.1.2
genson==0.2.0
geojson==1.3.3
itsdangerous==0.24
Jinja2==2.8
jsonschema==2.5.1
MarkupSafe==0.23
numpy==1.11.1
oauthlib==1.1.2
pandas==0.18.1
pathtools==0.1.2
pyaml==15.8.2
pyswagger==0.8.22
python-dateutil==2.5.3
pytz==2016.6.1
PyYAML==3.11
requests==2.10.0
requests-oauthlib==0.6.2
six==1.10.0
strict-rfc3339==0.7
swagger-parser==0.1.9
swagger-spec-validator==2.0.2
validate-email==1.3
Werkzeug==0.11.10

Do you need more info ?

I get the same issue. The problem is connexion is doing a json.dumps of the Flask response object instead of the Flask response.data
self.validate_response(data, status_code, headers)

File "/work/env3/lib/python3.5/site-packages/connexion/decorators/response.py", line 60, in validate_response
data = json.dumps(data)
File "/work/env3/lib/python3.5/site-packages/flask/json.py", line 126, in dumps
rv = _json.dumps(obj, **kwargs)
File "/usr/local/Cellar/python3/3.5.2_1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/init.py", line 237, in dumps
**kw).encode(obj)
File "/usr/local/Cellar/python3/3.5.2_1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 198, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/Cellar/python3/3.5.2_1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 256, in iterencode
return _iterencode(o, 0)
File "/work/env3/lib/python3.5/site-packages/connexion/decorators/produces.py", line 46, in default
return json.JSONEncoder.default(self, o)
File "/work/env3/lib/python3.5/site-packages/flask/json.py", line 83, in default
return _json.JSONEncoder.default(self, o)
File "/usr/local/Cellar/python3/3.5.2_1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/encoder.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <Response 12 bytes [200 OK]> is not JSON serializable
I have a fix for this

Is this issue still happening?

This is still a problem in 1.1.5.
Looks like when validate_schema is called inside ResponseValidator.validate_response data - problem object is actually a string not a dict

The function connexion.problem return a ResponseObject which is an internal object representation for responses inside Connexion. The problem should be fixed by changing the connexion.problem function to return values as a normal handler would do.

Bumping this.
This is still happening.
Having response validation activated and returning a ConnexionResponse (which is created by connexion.problem.problem() results in an output body validation error because the validation here https://github.com/zalando/connexion/blob/34c7cb160fec372d386a0daa139df2a568b01ac8/connexion/decorators/response.py#L49 attempts to parse the ConnexionResponse as JSON.
This should be tagged as "bug" and not as "question" ;-)

The problem should be fixed by changing the connexion.problem function to return values as a normal handler would do. Another option is to change your code to not use connexion.problem and return a tuple (dict(...), 403, {'application/problem+json'},).

@rafaelcaricio As a note (probably another bug) it seems to be impossible to set the Content-type of the response to application/problem+json. Connexion is overwriting this value with application/json which is set, as far as I can see, from the produces section of the spec file.


Real image instead of nearest neighbor interpolation

Hi,
In your code you used nearest neighbor interpolated image of small image instead of true real image in training. What is the reason for doing that?
Thanks

Sorry that was a mistake.


Fix the Markdown Syntax Error

Fix the Markdown Syntax which initially would make the code cause confusion.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

cc @RandellDawson @raisedadead I do not have write access to the repository anymore. Please merge it or let me know whom to assign in case of PR I review?

Hi @amandeepmittal please reachout to us over a DM https://gitter.im/raisedadead

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


Extra option for Data Stage connector to allow lineage-enabled job filtering

New confutation setting parameter "checkIncludeForLineage" that will take into account "include_for_lineage" property for "dsjob" asset from IGC.
checkIncludeForLineage -> "false" - Will not read the IGC property and send out lineage information that is present (default)
checkIncludeForLineage -> "true" - Will read the IGC property and if set to "false" will skip the complete job not sending out anything.

@cmgrote  Initial version pushed
From design perspective, I follow the very similar pattern with limitToProjects. This means if this new setting is enabled we will not load/cache jobs that are not "lineage-enabled" and also the checks on last modified will be done within the same limited set. I was driven by the use-case we have but can you also validate if this makes sense in broader context?
The new setting is called "limitToLineageEnabledJobs" but we can change the name if there is better candidate :)


Change created virt-v2v conversion output to -o kubeVirt 2

Continuation of: https://github.com/kubev2v/forklift/pull/778

LGTM, is this part of https://github.com/kubev2v/forklift/pull/778 ?

yeah I just rebased it and I'll add some additional commits in followup MRs

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 22.44898% with 38 lines in your changes missing coverage. Please review.

Please upload report for BASE (main@650d73d). Learn more about missing BASE report.

Files with missing lines
Patch %
Lines

pkg/controller/plan/kubevirt.go
0.00%
17 Missing :warning:

pkg/controller/plan/migration.go
0.00%
6 Missing :warning:

pkg/controller/plan/util/kubevirtvmparser.go
62.50%
4 Missing and 2 partials :warning:

virt-v2v/pkg/utils/command.go
0.00%
6 Missing :warning:

virt-v2v/cmd/entrypoint.go
33.33%
1 Missing and 1 partial :warning:

virt-v2v/pkg/utils/xml-reader.go
0.00%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1020   +/-   ##
=======================================
  Coverage        ?   16.28%
=======================================
  Files           ?      112
  Lines           ?    19772
  Branches        ?        0
=======================================
  Hits            ?     3220
  Misses          ?    16268
  Partials        ?      284

Flag
Coverage Δ

unittests
16.28% <22.44%> (?)

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

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


Remove redundant parameter from virt-api tests

What this PR does / why we need it:
Should solve issues like https://travis-ci.org/qinqon/kubevirt/builds/469413568#L2568
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

so for my own understanding, the tests run in parallel if we provide a channel object, but run in series otherwise?

@davidvossel  If I understood it correct from ginkgo documentation yes.

mh, I think the tests still run in series. The done channel only makes a single test async with a timeout:
https://onsi.github.io/ginkgo/#asynchronous-tests
https://onsi.github.io/ginkgo/#parallel-specs

So the test at virt-api has being running always sequencially ?

So the test at virt-api has being running always sequencially ?

Looks so, but anyway Done parameter is redundant here and it can be a bug in ginkgo, because I think it the only test that has this parameter and also the only one test that sometime fails.


It does not show 1 page when totalItemsCount is smaller than itemsCountPerPage.

For instance,
<Pagination
prevPageText='Prev'
nextPageText='Next'
activePage={props.activePage}
itemsCountPerPage={10}
totalItemsCount={5}
pageRangeDisplayed={props.rangeDisplayed}
onChange={(value) => props.onPage(value)}
/>
In this case, the component has been rendered like the screenshot.

I think the component should display 1 page number.
Thanks,
Hiroki.

fixed in 3.0.0 version


feat: Added Docker and Docker Compose support

Added Dockerfile
Added docker-compose.yml
Added .dockerignore
Updated documentation to inform reader of how to get started using Docker and/or docker compose

@ivanskodje Thank you for your PR and taking the time to implement the Docker support.
I'm really not a huge fan of Docker and it's overkill for this project. Especially, for a static blog. The project generate HTML files and it shouldn't have any compatibility issue.
The project doesn't have a server/backend logic.

No problem. I understand that you may not be a fan of Docker and feel it may be overkill for this particular project, especially since this boilerplate is a static blog generating HTML files without any server/backend logic, as you say.
However, considering that this project serves as a boilerplate for a blog, rather than a blog itself, it might be beneficial to include Docker support. Having Docker support doesn't mean you're obligated to use it if you prefer to host it as a static blog. It simply provides an additional option for those who may find it useful. :smile_cat:
I'll do my best to share other improvements as I make them as well - it will of course be up to you whether or not you want to include it.
You have done a great job with this project, thank you :star:

@ivanskodje Extremely happy you made a PR and always looking for feedback and how we can improve the project. Today, there is a lot of hosting providers supporting Next.js: Vercel, Netlify, Amplify, Cloudflare, etc... It makes less mandatory to support Docker. Before, you are limited to Vercel but today, you have a tons of alternative. I feel using Docker is not anymore the mainstream way.
I also feel your docker implementation doesn't follow Next.js team best practices like using standalone output. So, you can a smaller Docker image.

@ivanskodje If you have any other suggestion, extremely happy to hear it. If you don't want to lose your time, you can open an issue first before implementing and opening a PR.


HLIL does not display any snprintf() arguments in ARM 32 bit

Version and Platform (required):

Binary Ninja Version: 3.5.4409-dev (latest)
OS: Ubuntu Linux
OS Version: 22.04
CPU Architecture: x64

Bug Description:
at 0xca8c in hlil view it just has "snprintf()" with no arguments shown
Steps To Reproduce:
open attached binary, change view to HLIL, go to address 0xca8c
Expected Behavior:
expect to see correct arguments in snprintf, like:  snprintf(buf, sz, format_str, arg1, arg2)
server_snprintf.zip

This is a bug in the libc type library. The library name listed in the binary needs to match one of the alternate_names in the type library. This binary however is linked against 'libc.so.0` and we don't have that one listed.
>>> bv.platform.type_libraries[0]
<typelib ‘libc_armv7.so.6’:armv7>
>>> bv.platform.type_libraries[0].alternate_names
[‘libc.so’, ‘libc.so.6’]
>>> bv.libraries
['libdl.so.0', 'libpthread.so.0', 'libcrypto.so.1.0.0', 'libc.so.0']

After introducing the fallback libc types, the snprintf's type is correctly introduced into the binary view. However, this callsite(at 0xca8c) still doesn't have parameters.

Seems like it's a problem during mapped_mlil_ssa -> mlil

That's the same issue as https://github.com/Vector35/binaryninja-api/issues/4696

We have added fallback type libraries in 4.1, but the removal of the armv7 libraries that will allow those fallback to be automatically applied for armv7/thumb2 is coming on the 4.2 release or dev shortly after 4.1 ships.

I've looked at the examples that aren't showing arguments and haven't been able to determine why. The normal likely culprits are stack analysis failing causing #3927  but there could be other other issues.


add log for breaker error

I feel that you should add log when some occur in function func (b *Breaker) doWork(state uint32, work func() error) error, it convenient for us to find error

I'm not quite sure what your use case is. If an error occurs in the work function, it will be returned from Run(), or discarded from Go(), just like how running a function (or launching one with go) works without this library.
This library is intended to be a very low-level, foundational set of tools and so intentionally does not log anywhere, just as Go itself does not add any logs. If you want to add logging to the method you pass into the breaker, you are welcome to do that.

I see, I need add log in my function


Disabled BUY button

Tested on https://kodadot.xyz/stmn/gallery/19-2

dude, i just found this one too, rn

dude, i just found this one too, rn

gotta go fast

issue caused by 'auto' width on tooltip
  <o-tooltip
    v-if="active"
    :append-to-body="appendToBody"
    :multiline="multiline"
    class="neo-tooltip"
    :style="{
      '--font-size': fontSize,
      '--multiline-width': multilineWidth,
      width: fullWidth ? '100%' : 'auto',
    }"

    ```

from PR:

* https://github.com/kodadot/nft-gallery/pull/6271

@Jarsen136  you must have put it there for a reason, whatever issue you were solving, can it be solved in another way?

gotta go fast

https://youtu.be/rJOsjP33nF4?t=92

from PR:

fix: Create drop down overflowing #6271

@Jarsen136 you must have put it there for a reason, whatever issue you were solving, can it be solved in another way?

Sorry for missing this comment. I have fixed the style issue on #6412


Feature request: Disabling keyutils (and only using secret-service) on Linux

I'm trying to put my dependency tree on a diet and discovered that keyring seems to always pull in support for keyutils on Linux, even though I only ever use DBUS secret service (since I'm writing an interactive desktop program).
I don't see a way in your Cargo.toml to disable this. Would it be possible to make it a feature (enabled by default for backward compatibility of course)? Then those who don't need it can pull in keyring with no-default-features and just the feature linux-secret-service

My understanding is that keyutils is part of the kernel on Linux and so there are no additional dependencies included by the keyutils credential store. (Perhaps @landhb knows better?)
Are you asking for a way of compiling this crate so that the keyutils credential store is not even included in the build?

My understanding is that keyutils is part of the kernel on Linux and so there are no additional dependencies included by the keyutils credential store.

keyring depends on the linux-keyutils crate on Linux to interact with the kernel functionality. That in turn depends an old version of bitflags (the only crate in my dependency tree pulling in bitflags 1.x, causing duplication of that dependency). Which in turn pulls in more things. And so on.

keyring depends on the linux-keyutils crate on Linux to interact with the kernel functionality.

Oh, right, duh!  That will teach me not to look at my own Cargo.toml file before answering 🤦.
This is a good suggestion, and easy.  How about if I add a linux-no-keyutils (optional) feature to disable it, similar to linux-no-secret-service.  That way you can leave the default features in place when you load the crate.

Actually this issue makes me realize that the way the features have been defined are all wrong.  Even the platform dependencies should be controlled by features not by platform, in case users want to be using (for example) an internet-based store and don't want to pay the cost of the platform dependencies.
If no platform keystores are available, the mock keystore should be used as the default.

Release v2.2.0 fixes this issue.  You can now do default-features = false, features = [linux-secret-service] and the right thing will happen.


Indy: Add baremetal K8S support to the shared environment-setup.yaml playbook

The current BAF supports just AWS EKS, we should add the ability to connect to any K8S cluster by providing the kubeconfig as an input parameter, because now it's being always obtained via AWS Authenticator.

Closed by #58


Windows 11 compatibility

Unfortunately the App is not working on Windows 11.

@anilsson97  Thanks for submitting the issue. If you don't mind, can you give us a few more details about the issue? Did the app launch correctly? Or did the app have trouble getting the number of participants?


Dismantle CGI module

fixes #1511

move escape, unescape to URI
move parse, build_form (as build) to newly created HTTP::Params

/cc @asterite @jhass

What about HTTP::Params? I would never think to search for HTTP::Form.

I like this! :+1:
About the name, Form could work, at least it's mentioned here and it's known from "posting form data". I think they are also query params... I'm not sure what's the "official" name for this, though.

On second thought I like HTTP::Params but I wouldn't mind HTTP::Form either, so LGTM :+1:

Hmm, I kinda like HTTP::Params too. Will change it to it

Updated according to suggestions

Thank you!

With waj we liked forn because it's closer to the original name and it's shorter, but maybe params is more known and familiar, so it's ok :)

We don't like making aliases?

We don't: Aliases means more things to learn and more confusion when jumping between codebases, or even when the same thing under different names is used in the same codebase.


feat: types types types

:tada: This PR is included in version 3.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[SP-5248] Backport of PDI-18227 - Nulls do not initialize variables when passed (8.3 Suite)

Mix of two approaches:
https://github.com/pentaho/pentaho-kettle/pull/6930
https://github.com/pentaho/pentaho-kettle/pull/6998
@smmribeiro

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -B -f 'pom.xml' -pl 'engine' -P '!assemblies' -Dsurefire.runOrder=alphabetical -Daudit -amd clean install

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'engine' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  engine/src/main/java/org/pentaho/di/job/entries/trans/JobEntryTrans.java
  engine/src/test/java/org/pentaho/di/job/entries/trans/JobEntryTransTest.java

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes (click to expand)
org.pentaho.di.job.entries.evalfilesmetrics.JobEntryEvalFilesMetrics

Branch Change: -0.4% :small_red_triangle_down:
Complexity Change: -0.5% :small_red_triangle_down:
Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.job.entries.evaluatetablecontent.JobEntryEvalTableContent

Branch Change: -1.1% :small_red_triangle_down:
Complexity Change: -1.1% :small_red_triangle_down:
Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.job.entries.getpop.MailConnectionMeta

Branch Change: -1% :small_red_triangle_down:
Complexity Change: -1.5% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.job.entries.sql.JobEntrySQL

Instruction Change: -3.4% :small_red_triangle_down:
Line Change: -3.8% :small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change: -1.8% :small_red_triangle_down:
Complexity Change: -1.1% :small_red_triangle_down:
Instruction Change: -0.4% :small_red_triangle_down:
Line Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.ldapoutput.LDAPOutputMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -4.4% :small_red_triangle_down:
Complexity Change: -5.1% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:
Line Change: -0.9% :small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Complexity Change: -1.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Branch Change: -2.6% :small_red_triangle_down:
Complexity Change: -1.5% :small_red_triangle_down:
Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.singlethreader.SingleThreaderMeta

Instruction Change: -0.1% :small_red_triangle_down:


Update deps.sh lsb_relase to avoid ID_LIKE field

Fixes #552

Wondering if distributions exist where there is a space between the key name and the = ? Doesn't happen as far as I'm aware but I'm wondering if this change could break binwalk in such cases or if the file is guaranteed to have this formatting.
Additionally, is it not a good occasion to try to get a more accurate matching by enforcing start of line (^) and = at the end of the match for all looked-up keys (VERSION_ID, DISTRIB_ID, and DISTRIB_RELEASE) ?

Thanks for the suggestion @Ayowel - I added a second commit to make the matching logic consistent for all 4 keys and also to ignore any irrelevant whitespace.

@edi33416 Yeah, you're right, that would be better - but I'm not sure that's really related to #552. Maybe it's worth opening another PR with that change?
I was trying to keep this PR super simple in the hopes of getting it merged, though that strategy doesn't seem to be working :(


[Bug] BdApi.Webpack.Filters.byStrings yields incorrect filter

Describe the Bug
byStrings uses rest parameters and the internal does also but is being passed an array
To Reproduce
         /**
         * Generates a function that filters by strings.
         * @param {...String} strings A list of strings
         * @returns {function} A filter that checks for a set of strings
         */
         byStrings(...strings) {return Filters.byStrings(strings);},

Expected Behavior
         /**
         * Generates a function that filters by strings.
         * @param {...String} strings A list of strings
         * @returns {function} A filter that checks for a set of strings
         */
         byStrings(...strings) {return Filters.byStrings(...strings);},

Screenshots

Discord Version

Additional Context

This is fixed in the latest release!


DH-3-15

15个翻译

please solve the conflict, thanks

close via https://github.com/PaddlePaddle/FluidDoc/pull/422


Use fixed openvpn and alpine versions.

Ensures installed version on openvpn without relying on repositories (https://security.archlinux.org/ASA-201706-27).
Unfortunately I had problems in verifying gpg signature, so I used my previously created SHA-256 validation. With help I could try to rewrite to gpg, because it's published officially, and SHA I calculated myself.
Fixing alpine version is not required, but I did it out of habit.

Why do we need to fix the Alpine version?

@serathius what was the GPG issue you ran into?
If it helps, here's a couple of excerpts from one of my Dockerfiles showing how I do a GPG check for OpenSSL.
#Set GPG keys used to sign downloads
ENV GPG_OPENSSL=8657ABB260F056B1E5190839D9C4D26D0E604491

export GNUPGHOME="$(mktemp -d)" && \
    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_OPENSSL" && \
    gpg --batch --verify openssl.tar.gz.asc openssl.tar.gz

Please provide more info on the gpg issues as this seems to unnecessarily complicate the image build process.

@jvmauricio Reverted change of alpine version. (just my preference)
@MatthewVance Thanks for help. I pushed the changes but gpg: Can't check signature: No public key.
I think I understand whats the problem, but I don't know how to fix it.

I assume the gpg issue you're referring to is the issue reported by Travis-CI which is the result of manually building OpenVPN.  What is the motivation for manually building OpenVPN?
This pull requests makes maintaining OpenVPN drastically harder compared to pulling the latest OpenVPN package from Alpine Linux's repo. I now need to update a hash (or use a signature) and update the version variable in the Dockerfile.
Previously the latest version would always be pulled on an updated Docker build as opposed to the proposed manual step.  Furthermore, the Alpine Linux maintainers are pretty good about releasing quick updates to minor OpenVPN versions and the packaging systems has signature verification built in.

Sounds like this can safely be closed?


x/build/internal/releasetargets: evaluate for each upcoming major Go release

At the start of each code freeze, we should evaluate the choice of releaselets (builders that are used for constructing a release artifact) used to make the upcoming major Go release, and confirm they are the most appropriate choice out of what is available.
The start of a code freeze is a safe time to introduce a builder change, as it will be tested during pre-release versions, starting with beta 1 and onwards.
Making this a release blocker for Go 1.16 (and not okay after beta 1—it needs to be done before). Once completed, this issue should be moved to the next major release milestone.
Edit: Starting with Go 1.21, releaselets are only used for running tests. Release artifact construction happens by reproducibly cross-compiling a distpack distribution on a fixed builder.
CC @golang/release, @ianlancetaylor.

/cc @cagedmantis

The @golang/release team has considered the current builders, and we are proposing the following builder changes for the Go 1.16 release:
go1.16*.linux-amd64.tar.gz

Builder Name
Host Type

Current
linux-amd64-jessie
host-linux-jessie

New
linux-amd64
host-linux-stretch

(Or rather a new builder, identical to the linux-arm one, just named linux-amd64-stretch instead.)
Rationale: Debian 8 "Jessie" Long Term Support (LTS) has ended on June 30, 2020 (see https://wiki.debian.org/LTS). We want to start using the next stable release, Debian 9 "Stretch", which has LTS support until June 2022.
Note that this has caused #31293 in April 2019 when this change was made unintentionally as part of a minor release, and it was reverted. We hope that it should be okay to try again for Go 1.16 a year later, since this is being done intentionally this time, and for a major release. CC @ianlancetaylor, @jayconrod, @bradfitz.
go1.16*.linux-armv6l.tar.gz

Builder Name
Host Type

Current
linux-arm
host-linux-arm-scaleway

New
linux-arm-aws
host-linux-arm-aws

Rationale: The replacement builder has proven to be more reliable, and it is easier for us to maintain.
go1.16*.linux-arm64.tar.gz

Builder Name
Host Type

Current
linux-arm64-packet
host-linux-arm64-packet

New
linux-arm64-aws
host-linux-arm64-aws

Rationale: The replacement builder has proven to be more reliable, and it is easier for us to maintain.

Feedback is welcome: we are happy to alter the plan based on information we haven't already considered. These builder changes are planned for Go 1.16 Beta 1, and we will re-evaluate this as needed based on any new findings and feedback.

CL 276034 has implemented the aforementioned plan for Go 1.16.
We'll need to revisit this issue next time during the Go 1.17 development cycle. (If we discover problems with the Go 1.16 plan, we'll come back here, or file new issues.) Moving to the next milestone for now.

While working on issue #39326, it has become clear to me that the C compile we have installed on our windows gomotes (at least the ones I have used) is pretty ancient -- GCC 5.   It would be great if we could update the version to something a bit more recent (V10 maybe).  Also worth noting that many folks are now using clang instead of gcc on windows -- it would be great if our gomotes had clang available as well.

@thanm Can you please file a separate issue to track that work, and CC @golang/release? It may need more discussion/investigation. Thanks.

Filed https://github.com/golang/go/issues/43195. Thanks.

The @golang/release team has considered the current builders, and we are proposing the following builder change for the Go 1.17 release:
go1.17.*.freebsd-amd64.tar.gz

Builder Name
Host Type

Current
freebsd-amd64-11_2
host-freebsd-11_2

New
freebsd-amd64-11_4
host-freebsd-11_4

Rationale: Using the latest "patch" release of the oldest supported "major" release of FreeBSD.
https://github.com/golang/go/issues/45727#issuecomment-825803454
go1.17.*.freebsd-386.tar.gz

Builder Name
Host Type

Current
freebsd-386-11_2
host-freebsd-11_2

New
freebsd-386-11_4
host-freebsd-11_4

Rationale: Using the latest "patch" release of the oldest supported "major" release of FreeBSD.
https://github.com/golang/go/issues/45727#issuecomment-825803454

There haven't been noteworthy builder changes in the last 2 weeks since https://github.com/golang/go/issues/40561#issuecomment-830424055. I've looked over our current selection of releaselets for 1.17 once again, and I think it's good to proceed with.
I did spot one opportunity we can consider: to start using darwin-amd64-11_0 (Big Sur) builder for 1.17, in line with our general approach of using latest macOS builders for macOS releases. (And we have the opportunity of testing it during Beta 1).
Let's make a decision on this one entry. Otherwise, I think it's okay to look again for the 1.18 cycle.

We agreed to try darwin-amd64-11_0 for 1.17 onwards, filed #46161 for that, and moving this to 1.18 milestone.

The @golang/release team has considered the current builders, and we are proposing the following builder change for the Go 1.18 release:

Port
Current Builder
Current Host Type
Proposed Builder
Proposed Host Type

freebsd-386
freebsd-386-11_4
host-freebsd-11_4
freebsd-386-12_2
host-freebsd-12_2

freebsd-amd64
freebsd-amd64-11_4
host-freebsd-11_4
freebsd-amd64-12_2
host-freebsd-12_2

windows-386
windows-386-2008
host-windows-amd64-2008
windows-386-2012
host-windows-amd64-2012

windows-amd64
windows-amd64-2008
host-windows-amd64-2008
windows-amd64-2012
host-windows-amd64-2012

Rationale: Using the latest "patch" release of the oldest supported "major" release of FreeBSD. Using the latest supported version of Windows server.

The @golang/release team has revised the proposed releaselets to be used for the Go 1.18 release:

Port
Current Builder
Current Host Type
Proposed Builder
Proposed Host Type

freebsd-386
freebsd-386-11_4
host-freebsd-11_4
freebsd-386-12_2
host-freebsd-12_2

freebsd-amd64
freebsd-amd64-11_4
host-freebsd-11_4
freebsd-amd64-12_2
host-freebsd-12_2

Rationale: Using the latest "patch" release of the oldest supported "major" release of FreeBSD.  The Windows change was removed because of the discussions in #47845 and release team meetings.

By now we have darwin builders with macOS 12 both on amd64 and arm64 architectures (#49149), though that work is still evolving. We will consider whether to use them or still use macOS 11 for building 1.18 before Beta 1. The current trajectory is to use macOS 12 builder at least for arm64, but that may change. (Feedback on this is welcome.)

We've discussed macOS today and agreed to use macOS 12 releaselets both for amd64 and arm64 architectures starting with Go 1.18 Beta 1. Send CL 369958.

All looks ready for Go 1.18 Beta 1, so moving this recurring issue to the next milestone.

I've updated 1.18 to use FreeBSD 12.3, which has the fix for the memory corruption bug discussed in #49209.

linux-arm-aws is currently on Buster. We do not have immediate plans to deploy a replacement on GCE nor do we plan to update the current image.

Linux: bullseye is still the latest version. linux-arm-aws is still behind and we're still okay with it.
macOS: 13 is still the latest version, so we're good on AMD64 and still behind on ARM64. I think we're still okay with it.
Windows: we've dropped support for Windows 8 -- we need to target windows-386/amd64-2016. Windows 11 is still the most recent major version on ARM64, though it's an old patch level by now.
FreeBSD: should perhaps be updated to 13.2 but it's a second-class port and not our problem.

Done for this cycle.

Done for the Go 1.23 cycle.

CL 612555 regenerated the list for Go 1.24. It's the same list as for Go 1.23 but without windows/arm (32-bit), and that's noted at https://go.dev/doc/go1.24#windows.
I checked again now that we're post-freeze, before RC 1, and there haven't been further changes (CC @mknyszek). Unless some new issue is uncovered during pre-release testing, this is done for Go 1.24 cycle; moving to next.


remove Unnecessary some()

fixed #6035

Hi @Ikuyadeu, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

@Ikuyadeu There are merge conflicts, can you please rebase with master?

@jrieken Thanks, I did.

thanks


Add support for using ssh config file for connections

While using wave terminal, you have to set up the details of each connection in the interface. If you've already defined the connections in your ~/.ssh/config file, they have to be reentered.
Would be a great feature to have it already fill out the connections(could be opt in too) with what is in the ssh config file.

I will be adding more features to this in the future, but the basic functionality is present in v0.7.0


Microsoft CDN Classic documentation appears dated

The caching documentation for Microsoft Classic CDN appears dated. Old portal screenshots are used (which is not bad by itself) but options in de screenshots are missing! I can only see the option query string caching behaviour.

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

ID: df84f438-657d-3e22-fcac-5527acc5a5df
Version Independent ID: f35823f2-d61f-2bc6-ae54-6630b5ce51ad
Content: Control Azure CDN caching behavior with query strings - standard tier
Content Source: articles/cdn/cdn-query-string.md
Service: azure-cdn
GitHub Login: @duongau
Microsoft Alias: duau

@ericvenneker , thank you for your feedback. We have assigned this to the content owner/author for review.
@duongau , for your review.

Hello @ericvenneker, thank you for your feedback. I have updated the screenshots to reflect what we have in the Azure portal. The caching expiration settings are now configured in the Rules engine for the endpoint. Please let me know if you have any further question. #please-close


Let modeladmin customize field display if needed

This lets each modeladmin customize the display value for specific fields if needed.
The primary motivation for this is so the display can be customized without breaking sorting since using a method on the model admin disables the sorting link.

    def get_display_for_field(self, obj, value, field, empty_value_display):
        if field.name == "due_date":
            return naturaltime(value)
        return super().get_display_for_field(obj, value, field, empty_value_display)

it also makes it easier to customize certain values, eg
    def get_display_for_field(self, obj, value, field, empty_value_display):
        if isinstance(value, Image):
            return get_image_thumbnail(value)
        return super().get_display_for_field(obj, value, field, empty_value_display)

NOTE: The recommended way to retain sorting for custom methods in list_display is to add an admin_order_field attribute to the method. For example:
from django.utils.html import format_html
from wagtail.contrib.modeladmin.options import ModelAdmin

class PersonModelAdmin(ModelAdmin):
    model = Person
    list_display = ['coloured_first_name', 'last_name']

    def colored_first_name(self, obj):
        return format_html(
            '{}',
            obj.color_code,
            obj.first_name,
        )
    colored_first_name.admin_order_field = 'first_name'

The recommended way to retain sorting for custom methods in list_display is to add an admin_order_field attribute to the method.

Oh nice, didn't know that... thanks for sharing! Is there a decorator to tag the modeladmin methods instead of having to repeat the name, eg @admin_field(short_description="...") or something?
This still has some other use cases (I also use it to auto-generate links to the modeladmin for related fields) but I ended up just copying the modeladmin template tags and overriding the template in my project so it's no big deal if it doesn't get merged.

You're welcome @frmdstryr! This is something that was copied over from the Django's version of modeladmin, do you can do the same thing there too.

Is there a decorator to tag the modeladmin methods instead of having to repeat the name, eg @admin_field(short_description="...") or something?

There isn't, but I can see how that would be useful. I don't suppose you'd be interested in writing one? (I'd be happy to review).

This still has some other use cases (I also use it to auto-generate links to the modeladmin for related fields)

This should be easy enough to achieve with a regular ModelAdmin method like that in the above example. You just need to use format_html to create the return value, or wrap your html string with mark_safe to prevent escaping.


Create a branch for 0.64 samples

The automatic upgrade pipeline worked, but we should add this to a branch and do some quick manual validation in preparation for updating everything.

Update worked, yay. Let's have these prepped so we can push them when 0.64 goes live.

Plan I heard was to just update samples after 0.64 release since we anticipate it to be low-effort.

Plan I heard was to just update samples after 0.64 release since we anticipate it to be low-effort.


更新前端，发布 3.1.0

Coverage remained the same at 93.339% when pulling 9ef9b6a78a69ce32f0b89838b1e04f072ab37181 on develop into d2bf685ddd6d8bf06a69722a2871a69c213d5059 on master.


Why the result is different from local run of the repo and the web demo version?

I tested my images first on the web demo, but when I test using the repo locally on my machine I get different results. Is there a difference in the parameters or you are using another weight. I need to know the difference to apply it to my local version.
Website demo result that recognizes line by line[what I need]

Local repo result that recognizes word by word

Did you used refiner_model ?

I've used it but it still didn't recognize the whole line it leaves some words at the start and at the end!!

@ClovaAIAdmin  @YoungminBaek  @cong235 If you can help, please!

please confirm your setting --refine=True. I try to test with your image. It still can detect by line. Or another way, you can use rule base for detect box in 1 line.

Would you illistrate more the another option please. And try  the original image and tell me the thresholds values you are using @cong235

it still working good, but this is pretrain so the result will not good like product version in the website. And in the paper, author said about some language their method work too bad.

@cong235  this is was my main problem, the difference between the web demo version and the local repo version. Do you have an idea about changing some paramters to get something similar to the product version?

You can collect data and training with your data.
Follow this git.
https://github.com/backtime92/CRAFT-Reimplementation

I don't have a labeled dataset and it's hard to  find in Arabic

you should find it. google, facebook group..etc.

If you mean the data should look like an image with labeled boxes for lines, So I don't thnk something like exsits.

Tell me what was you thinkning about collecting it form google or facebook? @cong235

You can crawl data from google, then find 1 model detection and regconition for your lang. Export it to format can edit later. Then use your eyes to fix wrong data.

Tell me what was you thinkning about collecting it form google or facebook? @cong235

you can generate synthetic data like SynthText (mentioned in CRAFT paper) to train the model in your language, not only the real data from google or FB (of course, it is very good if you can collect then label the real data).


Support for multiple LLM services in Co-op Translator

Describe the feature you'd like
We plan to support additional large language model (LLM) and translation services beyond Azure OpenAI, allowing users the flexibility to select and integrate the LLM provider of their choice.
Additionally, we are considering implementing a markdown-only translation feature for users who may lack an Azure Computer Vision key or prefer to focus exclusively on markdown translation. This new functionality would let users translate markdown content while retaining original images in place, providing a streamlined translation experience. The -md command will be updated to enable this selective translation mode.
(Currently the -md command updates the markdown link to link to translated images.)
While image translation may rely on specific services like Azure Computer Vision, we aim to make markdown translation more adaptable and accessible to users, regardless of their backend service preference.
Problem this feature solves
Alternatives considered
No response
Additional context
This feature would significantly enhance the versatility of Co-op Translator, making it more attractive to developers and organizations beyond those using Microsoft Azure. An example of implementation could include a "TranslationService" interface that supports multiple backends, enabling the user to specify their desired provider via a configuration parameter.
Are you willing to submit a pull request to implement this feature?

[x] I am willing to submit a pull request

Code of Conduct

[x] I agree to follow this project's Code of Conduct

Hi @1044197988, Thank you for interest!
I plan to implement this feature by December 20th. Initially, I will integrate OpenAI models and then ensure that the implementation is flexible enough to support additional LLMs.
Since this project is part of Azure Open-Source Software (OSS), I plan to consult with the Microsoft team involved in the project before adding models other than OpenAI models.

Hi @1044197988, I've just finished designing the system to allow flexible addition of LLMs, and I've modified it to work with just the OpenAI environment variables for now. Adding new LLMs is now much easier. If multilingual support is needed, I'm open to adding other language models as well. If you have any specific models in mind, feel free to suggest them!

Thank you very much, this feature was completed very promptly. Currently, OpenAI is very suitable and there are no other requirements at the moment. Thank you again and I am looking forward to future work.


[3.x] Make Mesh::generate_triangle_mesh() handle PRIMITIVE_TRIANGLE_STRIP and PRIMITIVE_TRIANGLE_FAN

3.x version of #61558.
Here it also handles PRIMITIVE_TRIANGLE_FAN (removed in master).

Whoops, I meant to just comment, not approve yet

Thanks!


PNG post processing not configured correctly

Prerequisites

[x] I have written a descriptive issue title
[x] I have verified that I am running the latest version of ImageProcessor
[x] I have verified if the problem exist in both DEBUG and RELEASE mode
[x] I have searched open and closed issues to ensure it has not already been reported

Description
With the release of ImageProcessor.Web.PostProcessor v1.2.x, you fixed an issue where pngout was reporting as a false positive on some antivirus programs, by replacing it with TruePNG.
However, it looks like this is not fully working as intended, due to some small configuration issues:

The embedded resource for pngquant.exe has a resource key of optipng.exe, which means when extracted in the RegisterExecutables method it uses that name, instead of pngquant.exe (code here). Since the png.cmd file that gets run to optimise PNG files refers to pngquant, it will currently fail that command as it cannot find the executable (since pngquant.exe has been saved as optipng.exe).
Suggested fix: rename the resource key in the PostProcessorBootstrapper class to pngquant.exe so extracted exe matches.
The png.cmd batch file contains two commands: one for pngquant and one for TruePNG. Presumably both are intended to be run after each other to optimise the PNG file in the best possible way? However, the batch file commands both take the same input and output parameter paths (see here). Which means that pngquant would take the source file and save the processed result in the destination path, but then TruePNG would also take the source file and save it in the destination path. So it would effectively bypass any work done by pngquant.
Suggested fix: change the input parameter for TruePNG to %2 so it will take the output of pngquant and use that to run the TruePNG optimiser. Would need a /force parameter as well to overwrite the output file.

Steps to Reproduce
I first noticed it when using ImageProcessor.Web.PostProcessor on an Umbraco website and seeing that the loading of large PNG files would take longer than similar sized JPEG files. That led me to investigate and step through the code and noticing the issues raised above.
System Configuration
Local development machine (Surface Pro 4, Windows 10).

ImageProcessor version: v2.5.4
ImageProcessor.Web version (if applicable): v4.8.4
Other ImageProcessor packages and versions: ImageProcessor.Web.PostProcessor 1.2.2
Environment (Operating system, version and so on): Windows 10, VS2017
.NET Framework version: v4.6.2
Additional information: -

Thanks for this, definitely an oversight on my part.

Suggested fix: change the input parameter for TruePNG to %2 so it will take the output of pngquant and use that to run the TruePNG optimiser. Would need a /force parameter as well to overwrite the output file.

That looks like the correct plan, do we need force though? We only want to overwrite if TruePng can reduce the file.

Yes, you're right. I misread what the force parameter does. I though we needed it because the input and output path are the same, but it looks like force always generates the file, even if it's bigger.

Fixed it, will push a release today. Thanks for your help. 👍


Create ReadMe.md

Please make sure the code is following contribution guidelines in CONTRIBUTING.md

[ ] : This PR has a corresponding issue open in the Repository.
[ ] : Approach is signed off on the issue.

There are now two .md files in that location.
Why not put this in - https://github.com/sandeepchadda/azure-devops-cli-extension/blob/master/examples/Scaffolding/scaffolding.md
We can possibly have scaffolding.md file renamed to Readme.md
@geverghe

Thank you @sandeepchadda for the PR. As discussed above PR - https://github.com/Azure/azure-devops-cli-extension/pull/636 takes care of this.
Closing this PR.


Handle applications name starting with identically

Handle case when 2 applications have the same beginning for their name (#358)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: FrogDevelopper:x: Le Gall, BenoitLe Gall, Benoit seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

@FrogDevelopper thank you very much for your contribution!
Please note that the master branch is for the upcoming 4.x release, which will only be released with Micronaut 4. However, we can regard #358 as a bug, and hence it can be included in the next patch release of this module.
Can you please re-target this PR against the 3.3.x branch?

I think it will be better that I re-create branch from 3.3.x


Internal Server Error when  processing resource

We have pyLODE master branch running as a service at http://cor.esipfed.org/pylode
The following resource triggers an Internal Server Error
http://cor.esipfed.org/pylode?url=http://cor.esipfed.org/ont/api/v0/ont%3Firi=http://purl.dataone.org/provone/2015/01/15/ontology%23
This does not generate any log so I am struggling to debug what the issue actually is.
I know the service is stable and as other resources render correctly for example http://cor.esipfed.org/pylode?url=http://cor.esipfed.org/ont/api/v0/ont%3Firi=http://sweetontology.net/stateSpaceScale

Have another look at your identifier after the 'iri='. I don't think it's valid.

We've been having a long chat on the slack channel where Lewis brought this up. The identifier of the ontology (not just the namespace) ends in # (which I think is goofy but I won't out-argue the W3C). So when we escape the # in COR I believe the purl resolver is not reconstituting it into a #.  I'm not making the argument that the purl resolver is wrong; I'm just not sure what the right answer is. As I say, we're discussing it. :-)

But maybe once we figure out what pylode gets from the purl server, you can handle it with something that mentions the purl server error, to take the heat off of pylode. :-)

@nicholascar The cause of the issue is a missing URL-encoding for a proper request in this line:
https://github.com/RDFLib/pyLODE/blob/c9581dbc1df0caa0d8f823872dafd2e47e476435/pylode/common.py#L103
In our local pyLODE copy I just added a line with the specific # -> %23 replacement:

and this solves our most immediate problem.    A more proper solution would  involve a general url-encoding of the query string.

I'll submit a PR shortly @carueda thank you.