SelectExtension vs. updating lists

About this issue
I'm using FastAdapter to manage a list of books. This list is automatically updated from the DB through LiveData everytime something changes in the source dataset (added item, removed item, updated field such as last read date).
Diff'ing is done by FastAdapter's default DiffCallbackImpl class :
Single.fromCallable(() -> FastAdapterDiffUtil.INSTANCE.calculateDiff(itemAdapter, contentItems))
		.subscribeOn(Schedulers.computation())
		.observeOn(AndroidSchedulers.mainThread())
		.subscribe(diffResult -> {
			FastAdapterDiffUtil.INSTANCE.set(itemAdapter, diffResult);
		}

I'm also using SelectExtension to allow users to select books.
What I'm observing is the following :

Selection works fine when the list isn't updated.
As soon as the dataset is updated (e.g. when a new book arrives, a book is removed or a book is updated), selectExtension.getSelectedItems() and selectExtension.getSelections() always return an empty list even though the items have been selected visually, which bugs my selection system.

I've been trying to circumvent this problem for the past few months with no success, creating uncontrolled crashes on some devices instead. This post is my attempt to document and fix the core issue.
NB : That issue stays the same whether the source is a PagedList updated through PagedModelAdapter.submitList or a traditional list updated with FastAdapterDiffUtil.set
Analysis
selectExtension.getSelections() calls adapterSizes.valueAt(index).getAdapterItem to get the list of selected items.
adapterSizes is the "main list" of the adapter, which is updated as every new dataset is set / submitted to the adapter. When the bug occurs, the isSelected property of these items is never set to true, even though selection has happened visually.
So what happens when we select an item ? The select action happens on SelectExtension.handleSelection, where item selection is toggled.
However, the toggled item is provided by EvenHookUtil.OnLongClickListener, which uses FastAdapter.getHolderAdapterItemTag : the item which is toggled is actually a reference stored as a tag inside each ViewHolder.
At this point, my theory is that this reference is lost when the list is updated, leaving a reference to a stale object inside the viewholder, and brand new, unselected objects in the adapter's main list.
This is confirmed by the way updates are handled by SelectExtension : updating is done through DiffUtil.dispatchUpdatesTo (Android class) and ripples to SelectExtension.notifyAdapterItemRangeInserted, which does... nothing ! (empty implementation)
Suggested fixes (to discuss)
I understand item references are stored as viewholder tags because :
1- we need to keep track of the selection status, which is not part of the information received from the data source
2- the selected state is a visual indicator that can "handily" be stored at the viewholder level
However, this only works when these references are updated along the main list.
SOLUTION A
Abandon the viewholder tag storage and manage selected / deselected states in a dedicated Map<long, bool> where the key is the item identifier (as in IIdentifyable.identifier) and the bool is the selected state.
SOLUTION B
Implement SelectExtension.notifyAdapterItemRangexxx so these handlers update tags stored inside the viewholders with the new references they receive.
The macro-algorithm may be
1- Memorize the selected states (e.g. to a Map<long, bool>)
2- Store the new item references to the "main" list
3- On these new items, restore the selected state on matching IDs
Thanks for reading through all of this 😄   Any opinion about these suggestions, or a 3rd solution I didn't see ?
Cheers~

Details

[x] Used library version > 5.3.1
[x] Used support library version > Not sure what you mean
[x] Used gradle build tools version > com.android.tools.build:gradle:4.1.1
[x] Used tooling / Android Studio version > 4.1.1
[x] Other used libraries, potential conflicting libraries > None that I know of

Checklist

[x] Searched for similar issues
[x] Checked out the sample application
[x] Read the README
[x] Checked out the CHANGELOG
[x] Checked out the MIGRATION GUIDE

Thanks for the very detailed report. I can't give a very elaborate answer right now, but would come back to it hopefully over the weekend.
Regarding Solution A.
That's actually basically what we had in prior releases, but it proofed to be very problematic as it breaks the "single source of truth" and keeping this in sync proofed to be very critical and risky, as such this approach was abadone in favor to a much more simple and streamlined definition.
Solution B
this may be working but I believe it similarly could result in problems and invalid states.

Would it be possible to have this occur in a automated test case which makes it easier to implement a proper fix for it?
Based on the very quick run through I believe the best approach will be to take a look at this bugs root, because it is very important that the Item has the proper selection state -> because when you scroll things have to be properly reselected with invalidation of the view.
so A nor B would fix that

Thanks a lot for the input. I'm glad we can work together on that one !

Would it be possible to have this occur in a automated test case which makes it easier to implement a proper fix for it?

Alright, I don't promise anything but I'll have a go at it !

It wasn't that hard - see https://github.com/mikepenz/FastAdapter/pull/956

Solved by using selectExtension.setSelectWithItemUpdate(true)


There is a plan and instructions for automated API Testing

I stumbled upon a few tools that look like they provide automated testing for OpenAPI projects. I think it might be worth looking into as an extra drop in test if it is easy enough to implement.
AC:

[ ] Determine which tool fits best for this project
[ ] ~Determine the time/effort requirements for implementing the tests~
[ ] Implement an example test flow with the selected tool
[ ] Document the process for adding new tests using the tool in the instructions for adding new routes

Once we've completed this spike, we can file issues to go back and add test coverage to already existing untested routes.

Currently looking into Schemathesis
API testing tool that generates test cases from the OpenAPI specification for each endpoint to ensure that the server's behavior is compliant with the spec.
Tests each endpoint for conformance to OpenAPI spec definitions for:

server errors
response status codes
response content type
response headers
response schema

It seems to be a fairly decent stress-test of the spec definitions.

@john-odonnell I took a look at Schemathesis and it looks like it will definitely fit what we need. Out of curiosity did you also look at Dredd? It looks like it provides similar functionality with the ability to hook into tests to add additional logic.

@telday I was drawn to Dredd initially, but decided against it as it's support for OpenAPI 3.0 is currently classified as experimental.


Add suport for property decorators like @required @email

Add suport for property decorators like @required @email

We may add this in the future after the fluent API stabilizes.

Hello @david-driscoll ,
I was very happy when you added newInstance decorator https://github.com/aurelia/dependency-injection/pull/111/.
Maybe you can help @jdanyow with this

I'm not a huge aurelia user (I do like the di container!)
looking at the docs... it would look something like...
class Model {
	@required
	firstName: string;

	@required(customizer => customizer.withMessageKey('myMessage'))
	lastName: string;

	@email
	@required(customizer => customizer
		.when((model: Model) => model.sendEmail)
		.withMessage('Email is required when shipment notifications have been requested.')
	)
	email: string;

	sendEmail: boolean;
}

I would be interested in helping out the team wants it. :)

I tried to implement this and got :
import {Rule, Rules, ValidationRules, FluentRuleCustomizer} from "aurelia-validation";

export type Customizer = (c: FluentRuleCustomizer) => FluentRuleCustomizer;

export function addRules(target: any, propertyKey: string, rules: Rule[]) {
    var existingRules = Rules.get(target) || [];
    Rules.set(target, existingRules.concat(rules));
}

export function required(customizer: Customizer) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).required();
        let rules = typeof customizer === "function" ? customizer(ensureInterface).rules : ensureInterface.rules;
        addRules(target, propertyKey, rules);
    };
}

export function matches(regex: RegExp, customizer: Customizer) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).matches(regex);
        let rules = typeof customizer === "function" ? customizer(ensureInterface).rules : ensureInterface.rules;
        addRules(target, propertyKey, rules);
    };
}

export function length(spec: { minimum: number, maximum: number }) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey);
        if (spec.minimum)
            ensureInterface.minLength(spec.minimum);
        if (spec.maximum)
            ensureInterface.maxLength(spec.maximum);
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

export function numericality() {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).satisfies(value => Number.isFinite(value));
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

export function format(regex: RegExp, customizer: Customizer) {
    return matches(regex, customizer);
}

export function email() {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).email();
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

export function equality(value) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).equals(value);
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

export function url() {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).format(/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/);
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

export function inclusion(list: any[]) {
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        var ensureInterface = ValidationRules.ensure(propertyKey).satisfies(value => list.indexOf(value) > -1);
        addRules(target, propertyKey, ensureInterface.rules);
    }
}

@jdanyow good to have in class ```Rulesmethod ''addRules(target: any, rules: Rule<any, any>[])'' or ifset(target: any, rules: Rule<any, any>[])not rewrite propertyrules`` but add new rules to it.

@Ma3yTa nice work on the PR, the lib isn't quite ready for something like this just yet. We need to get some of the outstanding items squared away, especially #301 before the decorator syntax moves ahead.
One idea that @EisenbergEffect had, which I thought was really interesting, was to look into reusing the fluent API by adding a decorator factory method. I haven't tried it, not sure if it's even possible but if you have the bandwidth it would be awesome if you could investigate. What do you think?
class Foo {
  @ValidationRules.ensureProperty().required().email().decorate()
  email = '';

  @ValidationRules.ensureProperty().required().minLength(3).decorate()
  firstName = '';
}

@jdanyow I like @EisenbergEffect idea. I think it easy to implement. If I have time I will send PR with sample how it can be done.


fix: pass buffer to isText()

isText with only the filename returns null for .sol files. The actual file content should be passed along with the file name to fix this.

Simple example:
`

isText("Lens.sol")
null
isText("Lens.sol", fs.readFileSync('Lens.sol'))
true
`

Thanks for submitting this. I'll merge it tonight.


Global flow

My application has several flows that can be shown from anywhere in the application. And after passing it (or when closing it), the user must return to where he was.
How to implement this?

@nikitadol If these flows are contained each within its own BeamLocation, then, conceptually, popBeamLocation() should do the job. Let me know if this doesn't work as expected.

It seems to work, but there are questions:

What to do if the user immediately opens a page with /global_flow
How to return the flow result to where it started?

Code
import 'package:beamer/beamer.dart';
import 'package:flutter/material.dart';

void main() {
  Beamer.setPathUrlStrategy();
  runApp(_Root());
}

class _Root extends StatefulWidget {
  const _Root({Key? key}) : super(key: key);

  @override
  _RootState createState() => _RootState();
}

class _RootState extends State<_Root> {
  final routerDelegate = BeamerDelegate(
    locationBuilder: BeamerLocationBuilder(
      beamLocations: [
        SimpleBeamLocation(
          state: BeamState(),
          routes: {
            '/': (context, state) => _Screen(
                  title: 'Home',
                  onNext: (context) => Beamer.of(context).beamTo(
                    GlobalFlow(BeamState.fromUriString(GlobalFlow.basePath)),
                  ),
                ),
          },
        ),
        GlobalFlow(),
      ],
    ),
  );

  @override
  Widget build(BuildContext context) => MaterialApp.router(
        routeInformationParser: BeamerParser(),
        routerDelegate: routerDelegate,
      );
}

class GlobalFlow extends BeamLocation {
  GlobalFlow([BeamState? state]) : super(state);

  static const basePath = '/global_flow';

  @override
  List<BeamPage> buildPages(BuildContext context, BeamState state) => [
        BeamPage(
          fullScreenDialog: true,
          child: _Screen(
            title: 'Global flow',
            onNext: (context) => Beamer.of(context).popBeamLocation(),
          ),
        ),
      ];

  @override
  List<Pattern> get pathBlueprints => [
        basePath,
      ];
}

class _Screen extends StatelessWidget {
  const _Screen({
    Key? key,
    required this.title,
    required this.onNext,
  }) : super(key: key);

  final String title;
  final void Function(BuildContext) onNext;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: Center(
        child: TextButton(
          child: Text('Next'),
          onPressed: () => onNext(context),
        ),
      ),
    );
  }
}

@nikitadol

What to do if the user immediately opens a page with /global_flow

You could use a BeamGuard to check if user can be there and redirect it if needed.

How to return the flow result to where it started?

I was thinking of adding an optional data to beamBack() and popBeamLocation(), but haven't implemented it yet. Hm, it seems I didn't create an issue for it. There it is now: https://github.com/slovnicki/beamer/issues/347
As I'm now working on re-engineering and improving states for custom BeamLocations, this will surely land there as well. It's a very straightforward feature to implement. The bigger problem is that popBeamLocation is currently wrong (as I now notice while looking) with what it's doing to beam state history (it should pop all states that are from it, but it just appends a new one).
I would encourage you to implement this optional BeamState.data for going back, but I'm rewriting the entire concept of BeamState and will push it within few days so we'll see then how things look.

@nikitadol I made a major rewrite and published v1.0.0-pre.5.0 (see breaking changes) so we can continue now. I think with these new improvements you can create more efficient custom BeamLocations with custom states that might make your flows even more natural.


Updating to latest C# project

@jasonsandlin,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Leader change during re-balance may cause partition not being consumed

Simplified it into the following scenario:
3 brokers. 1 topic with 4 partitions. 2 consumer instances to consume that topic. The start index of broker, partition and consumer is 0.
When c0 (consumer instance 0) calls utils.go#dividePartitionsBetweenConsumers(), the leaders are like:

p0 has no leader(doing election)
p1 on b1
p2 on b2
p3 on b0

After sort(by leader then by partition id), partitions is like
[
    {p0 -1 xxxx}  // {partition leader address}
    {p3 b0 xxxx}
    {p1 b1 xxxx}
    {p2 b2 xxxx}
]

So c0 gets its myPartitions (to claim) like p0, p3.
Then p0 finds its leader as b2. The leaders are like:

p0 on b2
p1 on b1
p2 on b2
p3 on b0

And another consumer instance c1 calls utils.go#dividePartitionsBetweenConsumers().
After sort(by leader then by partition id), partitions is like
[
    {p3 b0 xxxx}
    {p1 b1 xxxx}
    {p0 b2 xxxx}
    {p2 b2 xxxx}
]

c1 gets its myPartitions (to claim) like p0, p2.
We have the condition that c0 tries to claim p0 and p3 while c1 tries to claim p0 and p2.
Both c0 and c1 fight for p0 and c0 wins (as it tries to claim it firstly)
But no one tries to claim p1.
In utils.go, we sorts the partitionLeader by leader firstly.
func (pls partitionLeaders) Less(i, j int) bool {
	return pls[i].leader < pls[j].leader || (pls[i].leader == pls[j].leader && pls[i].id < pls[j].id)
}

When leader changes between 2 calls of dividePartitionsBetweenConsumers(), the result after sort is changed. I believe the root cause it here.

I am not sure if Less() could be changed to drop the comparison of leader and compare partition.id only.
The sort on leader will have the following benefit, according to https://kafka.apache.org/documentation/#impl_consumerrebalance

we try to assign partitions to consumers in such a way that reduces the number of broker nodes each consumer has to connect to.
The drop of leader comparison will break that.

As a second thought, shall we trigger a re-balance when there is a leader change? Could be a solution for this issue?


Suggested changes to debrid source tags

The current tags applied to sources when using a debrid service are something like "[RD+]" and "[RD Download]", depending on the debrid service provider.  (I'll be using "RD" in this post for consistency.)   The r/StremioAddons subreddit gets a number of posts per week about what these mean, which would suggest that these tags could be changed to be more clear to users.
In the former case, the plus symbol isn't necessary, and is only a potential source of confusion.  Due to the existence of services like Disney+ and Syncler+, the plus symbol would reasonably cause new users to assume that RD+ is some premium service beyond the normal debrid subscription, rather than that these links are simply cached on the debrid service and ready to stream.  (Most users would likely assume that all sources listed for a video are ready to stream, so if that's the intended significance of the plus symbol, it's a bit redundant and unclear.)
For uncached sources, the "[RD Download]" tag is too long to fit in the available space on most (if not all) versions of Stremio, so that a line break is forced, and not necessarily at the space.  On the Linux version of Stremio, the line break is forced at the first space, resulting On Android TV, the line break is forced between the 'w' and the 'n'.  Also, "[RD Download]" isn't very clear to new users as to what those links do, since nothing is downloaded to the user's device when those links are clicked.
I propose that the tag for cached debrid source links be simplified to "[RD]" (and the equivalent for other debrid services), and the tag for uncached debrid source links be changed to "[Send to RD]" (and the equivalent for other debrid services).  Removing the plus symbol would, in my opinion, remove a potential source of confusion for new users.  And changing the tag for uncached links to "[Send to RD]" has several benefits.  First, it's more clear as to what clicking the link will do.  Second, it is slightly fewer characters in length with a second space to double the number of reasonable breakpoints, and on Android TV the breakpoint would be forced after the first space rather than in the middle of a word (due to the apparent allowed number of characters).

Hi, tbh this is the first time that anybody raised this. Initially when creating the addon (more than 3 year ago probably) I struggled to choose the correct tag for adding uncached links to debrid and RD download seemed most descriptive and fit finely in apps (Android tv version was not yet released). Your suggestion doesn't seemed like it would improve it a lot, since people who ask these questions usually don't know how debrid services work in general, so imo the same amount of questions will still be there.
Also changing it would mean that old users would also need to adapt to the change, which now they're used to. As well as there are lots of tutorials and answered questions using these tags, which would become obsolete and would just raise more questions/issues.

Completely agree with this. This should be simply [RD] and [Send to RD] (or [Add to RD]).


Not an Issue: How to create Font Resources?

I am creating AFP file with specific fonts. However it require font resources; could you please guide me how to create own font resources?  please check attched file for reference.
FontResource.zip

This is a raster font which can immediately be used by PTOCA text - use the CreatePage snippet from the samples directory to get started. In the code block that defines the font mapping you would want to map your font resource:
	MCF mcf = new AfpBuilder()											// Map coded font
			.withMember(new AfpBuilder()
					.withMember(new AfpBuilder()
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQN_TYPE, FullyQualifiedNameFQNType.CONST_CODE_PAGE_NAME_REFERENCE_VALUE)
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQN_FORMAT, FullyQualifiedNameFQNFormat.CONST_CHARACTERSTRING_VALUE)
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQ_NAME, "T1000395")  // codepage
							.create(FullyQualifiedName.class))			// Codepage reference
					.withMember(new AfpBuilder()
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQN_TYPE, FullyQualifiedNameFQNType.CONST_FONT_CHARACTER_SET_NAME_REFERENCE_VALUE)
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQN_FORMAT, FullyQualifiedNameFQNFormat.CONST_CHARACTERSTRING_VALUE)
							.with(AfplibPackage.FULLY_QUALIFIED_NAME__FQ_NAME, "C0EX00A0")  // Font
							.create(FullyQualifiedName.class))			// Font reference
					.withMember(new AfpBuilder()
							.with(AfplibPackage.RESOURCE_LOCAL_IDENTIFIER__RES_TYPE, ResourceLocalIdentifierResType.CONST_CODED_FONT_VALUE)
							.with(AfplibPackage.EXTENDED_RESOURCE_LOCAL_IDENTIFIER__RES_LID, 1) // identifier
							.create(ResourceLocalIdentifier.class))
					.create(MCFRG.class))
			.create(MCF.class);

If you place your FontResource file as C0EX00A0 in your resource lib the resulting AFP created by CreatePage.java will use that font to display "Hello World". However I believe this font is being created by HP Extreme and is using a custom (generated) code page. You would need that code page as well and replace the code page mapped above (T1000395) with that.
Now I said place the font (and the code page) in the resource lib. Another way is to include those two files inline with the AFP file in the resource group. This would look like this:
BRG
  BRS (RSName = C0EX00A0)
     (structured fields from your fontresource file)
  ERS
  BRS (RSName = <name of your code page)
     (structured fields from your code page file)
  ERS
ERG
BDT
   ....
EDT

Hope that gives you a starting point.

Thank you for your answer.
What I actually wanted to know is how to create FontResource file like C0EX00A0? Is it predefined or any way to create our own FontResources(raster font )?

@FondAndy , sorry - reading with brain turned on sometimes helps ... You did say you want to create such a resource.
Well this is a bigger task then and it depends on which type of font you want to create - you sent a raster font as an example but just for completeness there are two other types: Outline Fonts (Type1) and TrueType. Creating a raster font or an outline font involve similar steps as they are considered to be FOCA fonts. There are some structured fields needed to describe the font and also map GCGID names to the glyphs (or characters) in the font. Then you would also need an appropriate code page that maps your code points in the TRNs to the GCGID names. Lastly for a raster font you would have to render each character (or glyph) into a 240dpi, 300dpi, ... black and white bitmap. This could be done with a library like freetype. For an outline font (type1) I guess you would need to have a type1 (.pfm) font as source - then you could just package the binary data into FNGs. However you'd still need to figure out the data positions of the glyphs in the font and to which actual character they belong (using the glyphname) and map that to a GCGID. - Wow lot of work. I believe there are font converters out there you could buy ... Now this is all possible using afplib and e.g. freetype but again some effort.
So the good part is that if you can use TrueType fonts (this depends on your output device) then this is much easier. You would only need to package the .ttf file into OCDs (see the PDF example in the snippets how to package binary data - here PDF - into OCDs) and put those into an object container (again see the sample on how to package PDF). With the difference that you won't need an environment group (BOG) and the object classification would look like this:

Just note that ttf font mapping in PTOCA is done using MDR instead of MCF. Also note that by default the code page is UTF-16 so you won't need a codepage.
I know this is all very high level but maybe this gives you a starting point for deciding which route you want to pursue.


HW decoder locks up at the end of some images

Usually happens on the last few blocks.  Almost certainly a flushing issue in the bit/byte stream readers.

Fixed a couple of things here.  Both bytestream flushing and output ram flipping.
So far, seems to work.


DisableProxyForIMDSRequest

Description
If customer enabled proxy for client telemetry, then they will get following exceptions:
io.netty.handler.proxy.HttpProxyHandler$HttpProxyConnectException: http, none, {host}/<IP_ADDRESS>:3128 => /<IP_ADDRESS>:80, status: 403 Forbidden
at io.netty.handler.proxy.HttpProxyHandler.handleResponse(HttpProxyHandler.java:200) ~[netty-all-4.1.67.Final.jar:4.1.67.Final]
at io.netty.handler.proxy.ProxyHandler.channelRead(ProxyHandler.java:258) [netty-all-4.1.67.Final.jar:4.1.67.Final]
Root Cause
SDK is calling IMDS(https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=windows) to get some meta related to the VM, and IMDS does not support proxy.
Fixes

Use a different http client for instance metadata related requests
another fix: wire up the username and password for clientTelemetry httpClient

All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.
[x] Manual local test with fiddler
Before:

After:

Test with Proxy Authentication enabled:(for gateway requests and client telemetry requests)

System.setProperty(
            "COSMOS.CLIENT_TELEMETRY_PROXY_OPTIONS_CONFIG",
            String.format("{\"type\":\"HTTP\", \"host\": \"%s\", \"port\": %d, \"username\":\"%s\", \"password\":\"%s\"}",    "<IP_ADDRESS>", 8888, "proxyUser", "proxyPassword"));

API change check
API changes are not detected in this pull request.

/azp run java - cosmos - tests

/azp run java - cosmos - tests


There's no such a thing as match expression

From the C# spec on GitHub:

The switch statement selects for execution a statement list having an associated switch label that corresponds to the value of the switch expression.

A switch_statement consists of the keyword switch, followed by a parenthesized expression (called the switch expression)

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@eyalsk Thanks for submitting this. We appreciate the attention to detail and spotting where we have discrepancies.
We're in a transitional state now, where the language is ahead of the published spec, and we're trying to keep the docs up to date with the existing compiler rather than the spec.
match-expression is new in C# 7.0, to support pattern matching. The draft spec is here on the csharplang repo.
We will get the two in sync in time. It's a bit of a long journey, as we are also working hard to update the official standard document as well.
In the meantime, I am going to close this, as the docs are accurate with the direction we are going.
/cc @gafter @jaredpar
We do appreciate the involvement, and if you find any other discrepancies between the language spec and our docs, let us know, or submit a new PR.

@BillWagner Okay, thank you! ;)


Invalid events in API Inspector

Description
I recently updated from 1.7 to 1.9 and after capturing a frame I saw that some events in the API Inspector window were marked as "Indirect sub-commands", which made reading details (like function parameters) impossible. The issue seems to be caused by vkCmdDrawIndirectCount and is visible in subsequent command buffers. I checked 1.8 and it's also affected.
Steps to reproduce
I've sent a simple application that reproduces the issue in an email.

Capture any frame from the application
Select vkCmdDraw(3, 1) from Colour Pass # 2
API Inspector shows EID:22, Event:"Indirect sub-command"

Environment

RenderDoc version: 1.8+
Operating System: Windows 10
Graphics API: Vulkan

I think it may have been broken on 1.7 just in a different way. A command buffer with an indirect count draw was re-ordering later commands in itself but not later comands in other command buffers. In older versions I was reserving all the data needed for indirect-count draws and then removing the excess, and in 1.8 I changed it to not reserve space since for very large maxCounts that's wasteful. In your case the draw was drawing exactly maxcount so in 1.7 nothing was re-ordering.
That commit should avoid the re-order entirely and fix the problem.


refreshHostData not working when visual is packaged

Hello Team,
We want to refresh the visual data from within the visual and tried using this.host.refresHostData()
The method call works as expected in developer mode but does not work when visual is packaged.
Is there any requirement to make it work in the packaged visual file?
We could not find any documentation around this feature either. Please help

This is a privilege Custom Visuals API, please contact Power BI Custom Visuals Support<EMAIL_ADDRESS>to ask access to it.


Feature request: sync all function that syncs the list of groups and the messages of each group for a given libxmtp client/inboxID

Is your feature request related to a problem?
Inbox app devs report difficulties syncing all groups for a given client without experiencing unexpected or intermittent failures or performance issue. Doing this on the libxmtp side could lead to performance and reliability gains.
Describe the solution to the problem
No response
Describe the uses cases for the feature
No response
Additional details
No response

I think #981 and #992 fix this?


Add index.md as landing page for helm site

found an example of someone else adding an md file for their gh-pages landing page ...

Project branch: https://github.com/flant/loghouse/tree/gh-pages
Landing page that is their helm chart url: https://flant.github.io/loghouse/

Adding this file will give us a "how to use" and a "link to our main docs" page.


Switch boxer to versioned url

Thank you for the contribution. It was merged directly as befaa51b95496bd2fa987d99827890d943258d66 to keep commit history cleaner. Your contribution is still credited to you.


Separate embedder and encoder in flambe.nn.embedder

The current implementation where the encoder is part of the embedder prevents "one embedder, two encoder" implementations. As the embedder is oftentimes the largest single matrix in an NLP model, this can lead to an unnecessary increase in memory usage.

I don't know if this use case legitimizes changing the interface.. You could just create a new Embedder-style object for you use case. Could you provide an example or two so we can better understand the motivation?

NLP models that do sequence comparison (the NLI groups comes to mind) are oftentimes implemented with a different encoder object for each compared part. In these cases, the standard flambe implementation will instantiate not only two encoders, but also two embedders - which, again, can result in a waste of GPU memory as embedding matrices can be huge.

Ok this use case makes sense, but I don't understand the change you are requesting. Embedding and encoder are already separated. Embedder links both of them, so you could very easily create a different embedder with two encoders?


Dreambooth error when trying to train on sd-v1-5-inpaining.ckpt

sd-v1-5-inpaining.ckpt has a slightly different architecture and is based on sd 1.2.

Thanks! Will it be compatible in the future?

that's up to the devs of dreambooth or runwayml


[excel] (Range) Add section about handling Ranges with dynamic array content

This PR adds a section talking about the spilling/dynamic array APIs.

Docs Build status updates of commit 25b59fe:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 8a1008b:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:warning:Warning
View
Details

docs/excel/excel-add-ins-ranges-advanced.md

Line 328, Column 77: [Warning-link-out-of-scope] File 'includes/using-excel-preview-apis.md' referenced by link '../includes/using-excel-preview-apis.md' will not be built because it is not included in build scope.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 7b8f98c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 27867b2:
:clock10: Pending: waiting for processors (6 builds ahead of you)
:warning: Docs Build is busy, currently there are 6 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Thanks @alison-mk! Would you mind giving this another look over to make sure the spill concept is being clearly articulated?

Docs Build status updates of commit 27867b2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 8b79374:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:warning:Warning
View
Details

docs/excel/excel-add-ins-ranges-advanced.md

Line 330, Column 463: [Warning-file-not-found] Invalid file link: 'excel-add-ins-advanced-concepts.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit e4b98a5:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:warning:Warning
View
Details

docs/excel/excel-add-ins-ranges-advanced.md

Line 330, Column 463: [Warning-file-not-found] Invalid file link: 'excel-add-ins-advanced-concepts.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 1efac8c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/excel-add-ins-ranges-advanced.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Default validity window is too short for LocalNet in 6.1

After releasing 6.1, some of the underlying methods now use AlgorandClient, which has a default validity window for transactions of 10. This is different to the old behaviour of using the suggested params, which sets it to 1000 rounds.
This causes dead transaction errors when issuing more than 10 transactions against LocalNet running in dev mode.
Reported by @pbennett on Discord.

Present in 6.1.1-beta.1 and will be released as 6.1.1 later today.


feature/backup-single-container-command

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Handle Functionality of Timer with WebSocket

several implementations on different pages, as an example closed https://github.com/sopra-fs24-group-12/PeekSeek-client/commit/323ed2afd41d79dd380822b326a583faf0409216


Multiple concurrent async tasks on actors

While the documentation around it is quite sparse, the current implementation notes that long-running asynchronous tasks "block" the actor's message handler, and that delays or similar should be translated to timers and message events.
For use as a sort of in-app microservice architecture, this makes it difficult to run long-running tasks as an actor, as something like sending them a graceful stop request could have the message handler trigger a cancellation token stored in the actor's state, but the message pump is not being polled as long as the actor's state is claimed.
Suggested solution
If actor state were held under async lock guards, messages could be queued immediately any time the state is not currently locked, allowing for actors to "yield" back to the loop any time they are not currently processing work.
For any task which must be performed in a serial manner, holding the guard  across the await allows the message pump to be disabled until the runtime can achieve a new lock, allowing actors to opt in to non-concurrency.
This may even be simpler to implement than the above- in that the message handler could always be called by the runtime, with the expectation that any message handler that uses "state" will simply await a lock on the state guard. This means that messages will be processed as concurrently as possible, but has the performance drawback in that it could result in many message futures being queued and awaiting a lock on that actor's state.
Potential alternatives

futures-esque combinators atop timers to allow network-serializable poll-able events

Wrap any future in a "wake-me and come back to this point"
yield(myState)-like construct required in order to allow concurrency by temporarily returning state control to the runtime
Simplifies "correct" usage of the current API, but doesn't follow Rust conventions on asynchrony

Externally accessible state stored in shared references to hold cancellation tokens

Bypasses the messaging pump, weakening the communication model

Actor-level first-class support for graceful cancellation tokens

Partially solves the microservice case
Doesn't provide for inter-microservice communication over the message system, thus weakening the communication model

Additional context
The root of the issue is that concurrency is limited by mutable access to Actor::State. Bevy's scheduling approach of reader / writer isolation may also be of interest here, in that queries which read a resource may be concurrent, while queries which write to that resource must be run in isolation from each other.

So is the main reason the factories don't work for you is cancellation?

So a few things to note that might address what you've outlined here.

We have a cancellation token, of sorts, which is to kill() the actor. That will interrupt work at the next async await point, cancelling the downstream tasks. This however isn't a super clean pattern, if you have some custom initialization logic that you might need to clean up for example.
Similar to @jsgf 's point, this is sounding like a use-case for a factory of sorts. The factory itself isn't ever blocked on async work as it's just a glorified job scheduler, and the workers can be blocked for short or long periods. If the nature of your work is long, asynchronous tasks and many of them concurrently, it's a perfectly valid use-case to have 1k's, 10k's, or 100k's of workers to the factory. The only concern with a high worker count is if the message rate is also very high, the factory may start being unable to keep up with scheduling incoming messages and build a backlog.
A "mutex" actor which issues multiple read locks to shared state is also a valid use-case, and is something that's commonly built. However that's a building block of a higher nature than the runtime itself. Doing anything with shared state in an actor makes ownership quite difficult to reason over and Rust gives us a simple ownership model with mutable borrows guaranteeing that no one else has a reference, so we're free to mutate how we see fit.

If you just want a long-running task actor, which still has a higher interactive control on it, you have basically 3 options.

Factories, as stated above, but are overkill for just a single task
The supervisor model, where the supervisor doesn't execute any operation directly, but can manage the child "worker" (so a factory of concurrency level = 1) and can directly reply to coordination messages (stop/start/restart/etc). It can interrupt the child via the kill() primitive, and capture the death via supervision callback, then do whatever it wants to restart/exit/etc.
Just spawn a long-running task and keep the join handle in the actor's state, freeing the message pump. This requires more manual management for things like panics and whatnot, but for simple use-cases is probably the fastest and safe enough route. The actor can respond to messages and simple abort the task when it wants.

closing as answered, feel free to re-open if you have additional concerns


Initialize start and end time as undefined in Stats

What kind of change does this PR introduce?
refactor

Did you add tests for your changes?
n/a

If relevant, link to documentation update:

Summary
As part of https://github.com/webpack/webpack/pull/6862 this change adds initializers to Stats class

Does this PR introduce a breaking change?

Other information

Thanks


Add the service to the deployment

The service is not deployed - it should be...

Moved to kube-clamav


Readme examples for sending a message

Update the function in the readme to match the current API then include some examples of usage.

Thanks a lot!


refactor(chess.com): update generate script

The script seems to work, but i'll defer to @coldenate, incase they have anything to add, after all they originally wrote it.

Yep. All the code is still basically @coldenate's, I simply updated the catppuccin library to v2 (gets rid of the old en-GB spellings) and restructured the folder a bit. Let me know if anything needs changing, though as @isabelroses said it works just the same :)

Hey! Overall, it looks great, but when I cloned it to test it, the images seemed corrupted. Does it work on your machine?


A way for using custom build arguments

Hi all,
is there a way to pass command line parameters to ionic serve or ionic build?
In my case I have the following setup:

In package.json I have this script
"build": ionic build

and i want to pass in parameters that I can use in my configs, like custom rollup config.
Example for planned usage from command line:
npm run build --stage=prod
Any help would be greatly appreciated!

We have not concept of custom parameters within the CLI.  @danbucholtz I believe this is something that is more about how configs are used within app-scripts.

@cmaart,
Let me give this some thought and I'll get back to you in the coming days. This is lower priority for us so it may be a bit. You could certainly use Node environment variables in the interim.
Thanks,
Dan

@danbucholtz: Okay. What I currently do is, in the npm script i run a initializeBuildEnvironment.js that takes some parameters, I store them as a json file and read the parameters from the json again later in the build process.
My Use-Case if this is interesting for you why I even do need it: We build for multiple stages. The build on the build agent should be able to pass in settings (like the stage) as a parameter to the npm script. In the custom webpack config I need the stage to replace endpoints according to the stage specified.

More than likely, we aren't going to have time to get to this in the next few months. With that in mind, I'm going to close this issue.
Thanks,
Dan

I used "yargs" for some like that

Or try to re the custom argv with.
process.env.npm_config_argv
Or
process.env.argv
On Sat, 11 Feb 2017 at 05:13, Dan Bucholtz<EMAIL_ADDRESS>wrote:

Closed #124 https://github.com/driftyco/ionic-app-scripts/issues/124.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/driftyco/ionic-app-scripts/issues/124#event-958231700,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQv-WoP7KAdG2hbdB73LN4m1aTadjf_Lks5rbTV3gaJpZM4KR7lS
.

@alan-agius4: Thx! That's pretty much what I ended up doing. I just set env variables according to my stage that i'm building for


Don't warn of repeated data with one worker

If there is only one worker there is no risk of duplicated data.

LGTM


Cache PageSnapshot with original HTML from the frame's page

Closes https://github.com/hotwired/turbo/issues/745
Before this change, when a promoted frame finished its navigation, a visit was started and the visit would add a new PageSnapshot to the cache. The problem is that this snapshot was looking at a page that was already modified by the frame navigation, so the snapshot cache would be incorrect.
With this proposed change, we are taking a PageSnapshot as soon as the frame navigation starts, so we guarantee that the page hasn't been modified yet. Then, I'm passing this snapshot forward to the Visit and using it as the correct cache instead of calculating a new one.

@dhh would you mind taking a look?


Added XInput Functionality

I will preface this by saying I don't know if this is the correct implementation. I am sure you will be able to read what I have written and correct it.
What I can say though is I have made a library that is able to report the analog input from a controller for the purposes of training the model.
and...
This library is also capable of creating a virtual controller and sending analog values to the GTA client (or any other xbox controller accepting game). Make sure you disconnect your controller so it takes the player 1 slot.
There is just one installation to be done for a Virtual USB driver. Run "PYXInput\ScpVBus-x64\install.bat" in an administation cmd prompt (Double click doesn't have permissions and R-Click run as admin doesn't work)

This sounds brilliant @bayangan1991. It looks like a more complete solution than the one I am using, especilly if it works with gta v. I will be sure to give it a try.

Thanks @flandan. Don't take it from here though. I have made it an installable package at https://github.com/bayangan1991/PYXInput

Hey @Sentdex, probably best not to merge this, I have made some changes which I think make this a lot easier to use. You can also install it via PIP as well.
See: https://github.com/bayangan1991/PYXInput

Woops, didn't mean to close completely!

Even better. I'll give this a go sometime today.

Awesome. Let me know how you go!

I am having some trouble with installing this, I have posted an issue on the repository.
Cheers

Closing this because its old code, See https://github.com/bayangan1991/PYXInput for a working copy


Can't use MercuryTrade with Lunaris running

While Lunaris and MercuryTrade are both running, whenever I press something that does a chat command on the MercuryTrade overlay (which is basically everything), it doesn't  work. It looks like the chat box opens and then immediately closes again, without typing anything.

@zymox Thanks for letting us know, the latest release does indeed not work with MercuryTrade. However, the master branch does work with Mercury! So this will be fixed in the next release coming either tomorrow or thursday.


[Feature request] Add loading indicator while image is being loaded

Describe the Feature
Add a loading indicator or spinner widget while the image is being loaded.
Suggested Solution
Maybe a loadingIndicator property can be added that accepts a Widget. This way, while the image is loading, a custom spinner widget of our choice is displayed. I think it would be awesome to have this option added.
Other Information

n/a

+1 for this feature request!
Adding a loading indicator or spinner widget while the image is being loaded would greatly improve the user experience. I think it would be awesome to have a loadingIndicator property that accepts a Widget. This way, developers can easily customize the spinner widget according to their design preferences.
Please consider implementing this feature as it would be a valuable addition to the package and benefit the Flutter community.
Thank you!

Thank you, that sounds like a great addition. I'll try to find time for this soon.

@RemonYounan @amazing-sun You can find an initial implementation here: https://github.com/thesmythgroup/easy_image_viewer/issues/34 Let me know what you think of this approach. Thanks!

@RemonYounan @amazing-sun Did you have a chance to try out https://github.com/thesmythgroup/easy_image_viewer/commit/6b9cc824b2a5e86ee41b9787640324d071ce1259?

Hello @jfahrenkrug, I've had a busy few days, but I'll definitely take a look at it when I have some free time over the weekend 🤠

Hey @jfahrenkrug, I just checked it and using an image provider instead of a widget as an argument is a good idea. But I noticed that the loading widget doesn't appear right away.

@amazing-sun Thank you very much for checking. Are you able to upload a video or gif of what you are seeing and adding some details of what your code looks like exactly? Thanks!


How to use EasyRepro for Dynamics 365 V 9.0 On Premise - UCI?

Question
How to use EasyRepro for Dynamics 365 V 9.0 On Premise - UCI? I encounter issues when I'm using the EasyRepro package for Dynamics 365 online, in which I can't login automatically since my Dynamics 365 on premise setup is using windows authentication.
However, when I use the release for on premise (https://github.com/microsoft/EasyRepro/tree/releases/OnPremise), although I'm able to auto login properly, the XrmBrowser object seems unable to recognize the UCI Interface.
Any guidance on how to use the EasyRepro for my setup? Thanks.

So you are saying you automatically login? Would it work if you just skip the Login method and directly open CE by URL?


Anchors navigation broken in firefox 38.0.5+

Hi,
If I disable Turbolinks the expected behavior below is exhibited.  I can only reproduce this in Firefox (it does not present itself in Chrome).
Steps to reproduce:

Start on some page, i.e. /main
Click to link with an anchor in it, i.e. /glossary#somenamedanchor.  This works and navigates to the correct anchor.
Click the back button.  The browser history now reflects /glossary (without the hashbang anchor) and navigates to the top of the same page.
Click the back button again.  The browser history reflects 1) and is at the original starting position.

Expected behavior:

When clicking back on 3), the the browser should navigate to 1).

Implementing data-no-turbolink on the link in 2) fixes this problem.  Also completely disabling turbolinks fixes this problem.
I am using turbolinks 2.5.3 and rails 4.2.0.
Dan

Sorry for the late reply. This should be fixed in Turbolinks 3 (master). Could you try it?

Sorry for the delay will test and report back soon.

I believe this issue to be resolved.  Thank you for your help.  Closing this issue.


Fix #3505

Fixed #3505 .

Coverage remained the same at 100.0% when pulling 44399b11c9b85193e4a55f73a2624525c72499aa on torn4dom4n:fix-3505 into 91ce80302d1942ad28a153f7cf57c3d6b8abb9b4 on jshint:master.

Thanks!


Preload Tabs

Setting preloadTabs="true" is no longer causing a crash in b11 which is good, but while I'm seeing some performance improvement, I'm surprised to see that images are only getting loaded when the tab is manually selected, which seems not to be a true preload.
Is this how it is supposed to work?

Hello! This is expected behavior, as even thought the component is compiled, the page itself that is being shown in the tab is not fully "initialized" until navigated too. With the upcoming ahead of time compile all this will be fixed and their will be no reason to use preloadTabs="true" anymore as all templates will be compiled ahead of time in the build process. Thanks for using Ionic!

That's a shame. When i was developing with Ionic 1, I tried switching through the tabs on a timeout while hiding it with the splash screen but the time taken was unreliable and ended up causing more problems than it solved, so I abandoned it.
Even putting aside seeing the images load, I'm also seeing some weird layout issues when the the tab is first switched to. Is there any way that I can force these tab pages to be fully initialized on app launch to avoid this?

Hey! This is all going to be fixed with the ahead of time compile coming in beta.12. This will mean that all components will be compiled and ready to go as soon as the app is loaded. Thanks!

Exciting. Thanks Justin.


"argparse append action" like feature for non-fixed number of dependees

One type of operation I want to capture is data analysis and visualization. However I found that it is hard for guild to capture this kind of operations.
The number of runs that need to be analyzed are often not fixed, and it would be tedious to update the resources and requires in guild.yml every time. To solve this, guild can provide an "argparse append action" like feature to link non-fixed number of operation dependencies to a subfolder.
Here is an example,
Example syntax
Define guild.yml as follow. Notice that elements in requires have a key mode to enable append mode.
# guild.yml

- model: my_model
  operations:
      test:
          main: test
      plot:
          main: plot
          requires:
              - name: test_output
                mode: append
  resources:
      test_output:
          sources:
              - operation: test
                select:
                    - score.txt

Then, one can run following command with as many as test_output as they need.
guild run my_model:plot test_output=hash1 test_output=hash2

Inside guild home, you can see the resources have been grouped under test_output with their hash values as subfolders.
.
├── hash1
│   └── score.txt
├── hash2
│   └── score.txt
└── plot_run_hash
    └── test_output
        ├── hash1
        │   └── score.txt -> ../../../hash1/score.txt
        └── hash2
            └── score.txt -> ../../../hash2/score.txt

Interesting idea!
The current implementation of dependencies assumes that each required resource provides one or more files that are linked (or, for 0.8, the option to copy) into the current run directory. There is currently no concept of doing this repeatedly over a number of resources.
That said, there is a general requirement to process more than one upstream (required) run for data analysis - as you're pointing out here. There are other users doing this, but not using Guild resources.
Your approach has the advantage of moving the upstream-run-select process to Guild, rather than being performed in some custom code (e.g. using ipy as many are doing). In your example, the user specifies the upstream runs, but this might also be implemented automatically by Guild using a select-query specification (e.g. include 'train' runs with loss below some value).
I am inclined to name this feature "Multi-run operation resources". The idea in concept is simple enough: your operation requires one or more upstream runs, not just one. This would be supported by an enhanced run-select spec and the ability for users to specify a list of run IDs, as you've shown in your example.
This would be a decent sized dev effort for 0.8 - but I think the case is so common that we could bump this in priority.


missing libprotobuf.so.9 library

libprotobuf.so.9 missing. This is required when compiling aubo_driver

You need to install libprotobuf library and make sure it is located in the directory of /usr/lib.

I've the same problem when I try to build the aubo_driver for ROS melodic on Ubuntu 18.04.
On Ubuntu 18.04 the package libprotobuf installs the lib version libprotobuf.so.10.
Is there a way to build it for melodic or do you have any plan to support it?

From this article,libprotobuf9 is corresponding to protobuffer 2.6.1 in ubuntu 16.x.

I solved the problem using the following method:
$ sudo apt-get update

$ sudo apt-get install gdebi

$ wget http://archive.ubuntu.com/ubuntu/pool/main/p/protobuf/libprotobuf9v5_2.6.1-1.3_amd64.deb

$ sudo gdebi ./libprotobuf9v5_2.6.1-1.3_amd64.deb

https://stackoverflow.com/questions/52423431/how-to-downgrade-libprotobuf-so


OCMock 3.8.1 does not compile on Xcode 12.3

Just updated OCMock via cocoapods to version 3.8.1 and it's failing to compile on Xcode 12.3
We get this error when building on device:
'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/XCTest' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/XCTest' for architecture arm64
We get this error when building for simulator:
dyld: Library not loaded: @rpath/XCTest.framework/XCTest   Referenced from: /Users/myname/Library/Developer/CoreSimulator/Devices/7758B60D-C4B1-4263-8D26-968816222740/data/Containers/Bundle/Application/3FAD3E38-964C-435C-9B2F-671E6D98BA58/AppName.app/AppName Reason: image not found

My understanding is that Apple does not provide bitcode for XCTest, so the target that is consuming OCMock must disable bitcode.

My understanding is that Apple does not provide bitcode for XCTest, so the target that is consuming OCMock must disable bitcode.

What Madison wrote is correct.

Starting with version 3.8 OCMock links against XCTest to provide additional functionality.
Apple does not distribute XCTest with bitcode.

The two points above imply that OCMock cannot ship with bitcode either. That should not really be a problem, though, because the main purpose of including bitcode in a piece of software is for the review in the AppStore, and you're not going to ship OCMock with an app, right...?
The solution is to set ENABLE_BITCODE = NO somehwere in the settings for your tests.

To help others landing here: I did this by adding the below to the bottom of my Podfile
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            # Disable bitcode for OCMock. See: https://github.com/erikdoe/ocmock/issues/475
            if target.name == 'OCMock'
                config.build_settings['ENABLE_BITCODE'] = 'NO'
            end
        end
    end
end

To help others landing here: I did this by adding the below to the bottom of my Podfile
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            # Disable bitcode for OCMock. See: https://github.com/erikdoe/ocmock/issues/475
            if target.name == 'OCMock'
                config.build_settings['ENABLE_BITCODE'] = 'NO'
            end
        end
    end
end

Thanks @intiocean! In my case, the target names were "OCMock-iOS" and "OCMock-macOS" so I had to tweak the workaround.

  # Disable bitcode for OCMock. See: https://github.com/erikdoe/ocmock/issues/475
  puts "Running OCMock bitcode workaround. https://github.com/erikdoe/ocmock/issues/475"
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if target.name.start_with?('OCMock')
        config.build_settings['ENABLE_BITCODE'] = 'NO'
      end
    end
  end

@erikdoe Is it possible to specify this in the podspec? I'm wondering if pod_target_xcconfig would work (docs). Maybe something like:
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }

@robmaceachern To be honest, I don't know. I've never used CocoaPods myself. Is there a way to test this without releasing an updated pod?

@erikdoe If the change was on a branch I think we could point a Podfile to it to verify the fix. The Podfile in the test project would be in this form: pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'dev'


PORD-300 adjusted redirection to history page

✅ Add Linear ID (e.g., PROD-123) to PR title to automatically link issue

Description
Added redirections for revealing from Campaign page
Not sure if I understood correctly The goal of the task was to add redirect to /history page by clicking on any of deck
states in Campaign details page
What are the steps to test that this code is working?
Screen shots or recordings for UI changes

https://github.com/user-attachments/assets/6da3dd24-49b4-4b5d-a374-3a00c9412a8f
@Yihwan Please confirm the logic.

Yes, this is the expected behavior.


annotation view: option to skip annotated samples in either direction

Implemented as default behaviour in PR #32


Amicable Numbers

Submission Title
Amicable Numbers
Submission Type
Data Structure
Submission Description
Two numbers are amicable if the first is equal to the sum of divisors of the second, and if the second number is equal to the sum of divisors of the first.
Submission Directory
Data_Structures => Maps_Hash_Dict => Filename.extension
Contributors

[x]  C++ -
[x]  C -
[x]  Python -
[x] Java -
[ ] JavaScript -
[ ] TypeScript -
[ ] Golang -
[ ] Ruby -
[ ] php -
[ ] Swift -
[ ] C# -

Please assign this to me for python

Can I also write code using C++ or Java?

can I do this in C and C++?

Hi @Mr-Destructive :wave:  go ahead with C and C++.
Hi @Deepak2417 :wave:  go ahead with java.

I am working on JavaScript assign to me.

doing this in Typescript ^^

Hi, I'd like to submit a C# version. Thank you.

I can get JavaScript

I am working on Golang assign to me please

I am working on TypeScript assign to me.

I would like to implement it using Ruby

Hey I would like to do this in PHP, can you please assign me to it.
Thank you.

thanks everyone :v:


UTM M1 crash - Windows 10

Last April I downloaded the Windows 10 Arm VHDX file (it seems not available anymore, only Windows 11 Arm VHDX). I tried running it with Parallels and it worked fine.
Now I need to create a Win10 virtual machine using UTM. I converted the VHDX file to a qcow2 file using the following qemu command:
qemu-img convert -p -O qcow2 Windows10_InsiderPreview_Client_ARM64_en-us_21354.VHDX Windows10.qcow2
Then I created a VM using UTM with the following settings:

but during the boot process I get this error INACCESSIBLE_BOOT_DEVICE:

Then, I tried to convert the VHDX file to a qcow2 file from a Windows machine using StarWind V2V Converter (the qcow2 converted file was different that the one created with qemu). I create a VM in UTM using the same configuration, but I got the same error during the boot process.
I read what is written here https://github.com/utmapp/UTM/issues/2646, but I have already set the hardisk as a NVMe.
What configuration am I doing wrong? I report that I tried the same process using the Windows 11 VHDX file and the qcow2 generated using StarWind V2V Converter, and the Windows 11 machine is running correctly in UTM in my MAC M1.

Please provide the following:
**Configuration**
* UTM Version:
* OS Version:
* Intel or Apple Silicon?

UTM 3.0.4 (46)
macOS Monterey 12.2.1
Apple Silicon

Did you use the wizard? If so you should use the VHDX directly and not a converted qcow2 since it will convert it for you.

I tried now using the wizard and selecting directly the VHDX, but I got the same error

Oh I just realized you said “ Windows10_InsiderPreview_Client_ARM64_en-us_21354.VHDX Windows10.qcow2” that’s too old and doesn’t support M1 at all. You need 21390 or higher. I recommend using https://mac.getutm.app/gallery/windows-10


Conflict with IQRCodes and U-SRV plugins when logged out.

I am having a problem using Sleeky and trying to generate QR codes using the IQRCodes plugin when logged out as a public user would be.
My current configuration is:
YOURLS v 1.7.9
YOURLS-IQRCodes v 2.1.2
YOURLS-U-SRV v 2.1.0
Sleeky v 2.4.1
PHP v 7.2.3
MySQL v 10.3.23
(For those unfamiliar with this plugin: IQRCodes uses the U-SRV plugin to serve the QR code image when .qr is added to the short link, through a helper file called srv.php located in the pages folder.)
When I'm logged in, everything works fine, the QR code displays centered on it's own page on a black background.
However, when logged out the image does not render, no CSS loads and it looks likes this...

When I check the error logs I am getting,
PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/USERNAME/public_html/user/plugins/sleeky-backend/plugin.php:145) in /home/USERNAME/public_html/user/pages/srv.php on line 40
followed by the same for lines 156, 157 and 158 of the srv.php file.
In the Sleeky backend plugin file, if I block, (line 145)
// Hide admin links for non-authenticated users
if (yourls_is_valid_user() != 1) {
	echo <<<HEAD
		<style>ul#admin_menu li:not(.frontend_link) {display: none}</style>
HEAD;

from loading, the QR code displays as expected.
However, this is not a fix as I need these lines to load to hide the admin links from my public users.
In srv.php line 40 sets a cookie to help with javascript calls, and lines 156 to 158 set the content types which is why the QR code won't load without them.
header('Content-type: ' . $ctype);
header('Expires: 0');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;

I have tried merging the above code with the Sleeky code but couldn't get it to work.
I also tried adding a php.ini file to public_html containing buffer_output = on and then adding,
<IfModule mod_suphp.c>
suPHP_ConfigPath /home/USERNAME/public_html
</IfModule>

to htaccess to make it apply to sub directories, but this didn't work either.
I'm only a novice when it comes to PHP so have no idea what to try next.
Thanks in advance for any help.

Update: I think I've fixed the conflict by removing
if (yourls_is_valid_user() != 1) {
	echo <<<HEAD
		<style>ul#admin_menu li:not(.frontend_link) {display: none}</style>
HEAD;
}

from the bottom of /sleeky-backend/plugin.php.
And adding
	<?php
if (yourls_is_valid_user() != 1) {
	echo <<<HEAD
		<style>ul#admin_menu li:not(.frontend_link) {display: none}</style>
HEAD;
}
?>

to just above the closing head tag in /includes/functions-html.php.
This fixes the 'headers already sent' conflict.
IQRCodes is now loading content types.
QR code images are rendering for logged out users, and admin links are hidden from them.
This is working, but I'm not sure if it's the best way to fix it.
If there's a better way please let me know, but for now I'll close this as fixed.


Long description problem

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Checked the Quick Start documentation page and confirmed configuration is correct: https://marksie1988.github.io/atomic-calendar-revive/quickstart.html
Checked the FAQs on documentation page for common solutions: https://marksie1988.github.io/atomic-calendar-revive/faq.html
Checked that your issue isn't already filed: https://github.com/marksie1988/atomic-calendar-revive/issues?q=is%3Aissue

Describe the bug
A long description of an event let "explode" the view :D
Screenshots

Card Configuration
type: 'custom:atomic-calendar-revive'
name: Entsorgungskalender
enableModeChange: true
defaultMode: Calendar
entities:
  - entity: calendar.entsorgungskalender
    icon: 'mdi:delete-empty'
    color: green
calShowDescription: true
showLastCalendarWeek: true
disableCalEventLink: true
disableCalLocationLink: true
showWeekDay: true
firstDayOfWeek: 1
maxDaysToShow: 30
showDate: false
showDeclined: false
hideFinishedEvents: false
showRelativeTime: false
showLocation: true
sortByStartTime: false
showFullDayProgress: true
showEventIcon: true
disableEventLink: true

Versions

HomeAssistant Version: 0.116.0
Plugin Version: 2.5.1

Thanks for this, I will take a look and get a fix in place.


fix: several typos in the docs

Hello
I fixed some typos in the docs,
Hope it helps.
Br,
Tudor.

Hello @enitrat check now


clink1.com: does not bypass countdown and link from yesterday

Domain
clink1.com
Link
https://www.clink1.com/hz9I
Version
0.2039
What browsers are you seeing the problem on?
Firefox
What OS are you seeing the problem on?
Windows
Anything else?
blocked here,

manual click is needed,
but until two days ago it was bypassed immediately without even waiting for the 10-second countdown

We do not currently bypass this site based on this list, please read https://github.com/FastForwardTeam/FastForward/issues/656 for more details.
Once we have finished with the project, you are free to reopen the issue.

currently not, bur early yes.
why not now?


WIP Glob

[ ] I've read the CONTRIBUTING guidelines

This pr is dependent on a new io milestone release. I manually build io for travis builds, but not appveyor builds. Once we publish the io milestone, I'll remove
https://github.com/sbt/sbt/pull/4495/commits/ee5289a6f6e6f68a8a87129e96571bd6a6582a86 and change the io version string in
https://github.com/sbt/sbt/pull/4495/commits/ec10ba44deae30b8a9c1af33f75f9a82de900b61

The validator has checked the following projects, tested using dbuild, projects built on top of each other.

Project
Reference
Commit

sbt
pull/4495/head
sbt/sbt@144f216b7d049158507a6083c83fa135e12b6f12

zinc
develop
sbt/zinc@9bef954753a1ae033722d5bc9e89b945a9f2da3e

io
pull/216/head
sbt/io@cc239c599c879dad4eb36564ea3560fcff9d5ce5

librarymanagement
develop
sbt/librarymanagement@91071253d98e66331a7821278444ebf41544da20

util
develop
sbt/util@2e0d2d920a9f11c1910f0a5d48a2ff6f2c57c44d

:white_check_mark: The result is: SUCCESS
(restart)


Massive damage rolls messages no longer wrapping correctly

PF2e v4.7.1
I know this will pretty much have none or barely any priority.
But when I roll a massive critical damage roll I get this:

This didn't happen in 4.6.8
This is obviously from a macro... FoB and Double Slice to be precise

The styling for that was last changed on Jan 10. :\

Might need some Dorako loving?

Thanks @stwlam


Check out "Keplr Wallet"

https://play.google.com/store/apps/details?id=com.chainapsis.keplr

I can't link my keplr wallet to chrome


missing character @ before required

Description
To indicate that the parameters is mandatory you should annotate them with @required
AnimationController({
    double? value,
    this.duration,
    this.reverseDuration,
    this.debugLabel,
    this.lowerBound = 0.0,
    this.upperBound = 1.0,
    this.animationBehavior = AnimationBehavior.normal,
    required TickerProvider vsync,  // <-- PROBLEM: required without @
})

Related Issues
Use AnimationController(vsync: XXX) // The named parameter 'vsync' isn't defined

@googlebot I signed it!

Hi @eduardoflorence,
See the following issue:
https://github.com/flutter/flutter/issues/67366
This is related to null safety changes. Restarting your IDE or analyzer should fix the problem.

Right, this is due to the transition to NNBD. I'll close the PR.


builder: Enable building images on arm64

Add cross-compilation packages to builder when build target is
arm64. This allows Cilium image build to succeed. Without this
builer/cilium/download-hubble.sh failed due to missing
'x86_64-linux-gnu-strip'.
Also install 'binutils-x86-64-linux-gnu' whenever installing
'binutils-aarch64-linux-gnu' to fix gops build on arm64.
Signed-off-by: Jarno Rajahalme<EMAIL_ADDRESS>Cilium images can now be built also on arm64.

Note: This PR supersedes #17948 in order to follow through with https://docs.cilium.io/en/latest/contributing/development/images/#update-cilium-builder-and-cilium-runtime-images.
Fixes: #17056

@joestringer Keeping this as draft until I get through all the hoop in  https://docs.cilium.io/en/latest/contributing/development/images/#update-cilium-builder-and-cilium-runtime-images

@joestringer runtime image build is waiting for review, status shows as:
Waiting for review: release-base-images needs approval to start deploying changes.

I did not see this step being documented, unless this is covered by:

Ping one of the members of team/build to approve the build that was created by GitHub Actions here. Note that at this step cilium-builder build failure is expected since we have yet to update the runtime digest.

Maybe review == approval here?

Opened packer-ci-build PR to update to the new builder image: https://github.com/cilium/packer-ci-build/pull/299

/test

Travis CI build on amd64 failed due to docker pull rate limit.

net-next failed with #17604

4.19 fail also looks unrelated to this PR.

Added a new commit to bump default vagrant box versions to those built from https://github.com/cilium/packer-ci-build/pull/299.
The default box versions seemed to be somewhat out ot date?

Added a new commit to bump default vagrant box versions to those built from cilium/packer-ci-build#299.
The default box versions seemed to be somewhat out ot date?

The box versions specified in commit ffcb37a refer to the box versions of the PR runs, not the master runs. We need to trigger the vagrant boxes to be built from master and then update to these versions.

Added a new commit to bump default vagrant box versions to those built from cilium/packer-ci-build#299.
The default box versions seemed to be somewhat out ot date?

The box versions specified in commit ffcb37a refer to the box versions of the PR runs, not the master runs. We need to trigger the vagrant boxes to be built from master and then update to these versions.

Updated to the new packer-ci-build master builds.

/test

This PR picked up a merge conflict and now needs a rebase.

/test

/mlh new-flake Cilium-PR-K8s-1.23-kernel-net-next

The GKE CI job failed with known flake https://github.com/cilium/cilium/issues/17307; k8s-1.23-kernel-net-next with known flake https://github.com/cilium/cilium/issues/18447. Reviews are in. Merging.


Trouble building Godot 3.6 pre-releases from xz tarball on aarch64/arm64

Tested versions

Reproducible in build snapshots from 3.6-beta3 onwards using tar.xz source archive(s).
Not reproducible in 3.6-beta2 or 3.6-beta1.

System information
Flathub's Buildbot servers (work with Flatpak manifest done on Linux Mint 21.3)
Issue description
I currently help to maintain org.godotengine.Godot3 and org.godotengine.Godot3Sharp on Flathub. I have a PR opened for the former Flatpak's beta branch, which is currently stuck at 3.6-beta2. Since 3.6-beta3, every time I try to build the test build, the x86_64 build succeeds, while the aarch64/arm64 build fails, and it always fails at building Embree 3, even though the most recent 3.x version of Embree gained aarch64 support. At the time, I tried building the Embree module separately, since it's apparently supposed to work on aarch64/arm64, but that failed on aarch64/arm64 too, and at least one of the other modules also relied on Embree. Eventually I reset everything and hoped this issue would be resolved by subsequent development build releases, but it hasn't yet, and I regret not filing this issue earlier, but I wasn't sure if here was the right place to file this issue, and I'm not exactly sure if this problem exists on other aarch64/arm64 systems, since I don't have another aarch64/arm64 system to test the building of Godot 3 from source on.
A workaround could be to just download the binary file(s) from GitHub/TuxFamily and use those, since somehow there's a prebuilt aarch64/arm64 binary and I don't know how it was built successfully (yet), but that's not ideal for a project that can be built from source, and, in the case of org.godotengine.Godot3Sharp, it would be impossible to do so without ditching aarch64/arm64 support, since there's currently no prebuild aarch64/arm64 binary for the Mono build of Godot 3 yet. This isn't an ideal situation for me to be in as a maintainer of both of those Flatpaks, especially since earlier versions of Godot 3, and also Godot 4 (both normal and C#/.NET versions) build just fine on both of Flathub's supported architectures.
If there is anything I'm missing with building Godot 3.6 for aarch64/arm64, please let me know, since it is indeed possible but I haven't achieved it yet. If the build can somehow be done, I'd like to amend the Flatpak manifest in my PR so that the build can be successfully done on both architectures. I look forward to your help and advice.
Here's the last test build that failed: https://buildbot.flathub.org/#/builders/6/builds/132297
Steps to reproduce

Go to https://github.com/flathub/org.godotengine.Godot3/pull/5
Type "bot, build"
Wait for the build to fail (the Flathub bot will denote in a comment that the build has failed)

Minimal reproduction project (MRP)
N/A (this issue is to do with building Godot 3 itself)

Looks like something to do with Neon.
Might need @akien-mga to take a look, he's our resident build guru.

I just realised that the beta branch for the Godot 3 Flatpak (the normal one) is stuck at 3.5.3 RC 1. I'll try and build 3.6 Beta 1 from source to see if the problem actually starts from there. I'll report back here when I've determined something.

Yeah I would expect 3.6-beta1 to fail too then. Most 3.6 changes were made prior to beta 1, and that includes updating embree from 3.13.1 to 3.13.5: https://github.com/godotengine/godot/pull/69144
That update did cause issues building for Linux arm64 which were fixed by https://github.com/godotengine/godot/pull/70108. The linked issue report sounds like the exact same problem you're having here.
I did backport this fix to 3.x with dede8d384f6.
The 3.x branch's arch handling logic is pretty brittle, to be able to compile properly you need to use the arch=arm64 argument, which I expect will fix it. Inferring it from CC isn't done properly.
Note that Godot uses its own arch names which may differ from the ones in macros provided by the flatpak toolchain. For Fedora packaging, here's the conversion function I use: https://src.fedoraproject.org/rpms/godot/blob/rawhide/f/godot.spec#_203

Indeed building Godot 3.6 Beta 1 fails with aarch64/arm64 for the same reason subsequent pre-release builds fail on aarch64/arm64. I added the arch=arm64 to https://github.com/flathub/org.godotengine.Godot3/pull/5 just now. The build should succeed now. I hope it does :pray:

The test build succeeds now! @lawnjelly  @akien-mga (sorry for the ping) thank you so much for your help and guidance on this issue that I've been stuck on for so long! I really appreciate it. I can safely merge https://github.com/flathub/org.godotengine.Godot3/pull/ now, and I'll remember to make sure the arch=arm64 argument is also used for the stable Godot 3 and Godot 3 C#/.NET/Mono Flatpaks when 3.6 inevitably gets an official release :+1:


[FlinkRunner] Ingestion job tries to connect to every store available in core

Expected Behavior
Should only connect to the relevant stores specified in the FeatureSpec.
Current Behavior
Will pull and attempt to connect to all the stores once the job is sent to the remote Flink cluster. If there are stores it cannot connect to, the entire job will fail.
Steps to reproduce

Register a storage that cannot be reached (e.g. <IP_ADDRESS>:6379)
Run a job (not using that store) on a remote flink cluster

Possible Solution
Since we only pull specs at the graph building stage now, ingestion shouldn't have to retrieve and cache all available stores, only the stores it needs.

You said that this is unrelated to ingestion... but ingestion calls on startup:
specService.getAllStorageSpecs();

Even though it might not need them all. We could change this so that it only requests the serving and warehouse stores listed in the relevant feature specs if you like.

Question though.. what is trying to connect to the stores? I didn't think that ingestion does if no features are using it. So is core doing that?

I thought you said that this is unrelated to ingestion in a previous discussion... but ingestion calls on startup:
specService.getAllStorageSpecs();

Even though it might not need them all. We could change this so that it only requests the serving and warehouse stores listed in the relevant feature specs if you like. Is that the plan for this issue?

Yes, I think that is ideal. Also no: it is ingestion that fails if there is a store present in the registry that it cannot connect to. Are you able to replicate the error?


dotfiles: miscellaneous improvements

msfjarvis@ryzenbox ~/git-repos/lazy-bash (master) $ get_latest_release MSF-Jarvis/oneplus3
ShockableSatsuma
msfjarvis@ryzenbox ~/git-repos/lazy-bash (master) $ get_latest_release_assets MSF-Jarvis/oneplus3
jq: error (at <stdin>:4): Cannot iterate over null (null)

Doesn't work for me


add map tests

Codecov Report

Merging #43 (d347836) into develop (165a7aa) will increase coverage by 3.98%.
The diff coverage is 100.00%.

:exclamation: Current head d347836 differs from pull request most recent head 86b94bb. Consider uploading reports for the commit 86b94bb to get more accurate results

@@             Coverage Diff             @@
##           develop      #43      +/-   ##
===========================================
+ Coverage    65.13%   69.12%   +3.98%
===========================================
  Files           14       14
  Lines          763      813      +50
===========================================
+ Hits           497      562      +65
+ Misses         266      251      -15

Impacted Files
Coverage Δ

src/collections/map.rs
91.57% <100.00%> (+13.72%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 165a7aa...86b94bb. Read the comment docs.


Add comment for existed code

Code comment should follow JS Doc style.

Close the issue as we need to specify the requirements in details.


[Feature]: Improve the latency of analysis when there are some errors in cluster

Checklist

[X] I've searched for similar issues and couldn't find anything matching
[X] I've discussed this feature request in the K8sGPT Slack and got positive feedback

Is this feature request related to a problem?
None
Problem Description
Recently I encountered some latency issues like the one below which caused a long wait for the response if there were some errors (around 30+ errors)in the cluster:
k8sgpt analyze -o json --kubecontext   1.10s user 0.10s system 3% cpu 30.487 total
jq .  0.04s user 0.01s system 0% cpu 30.495 total

Solution Description
I hope the latency will be limited to seconds under good network connectivity.
Benefits
It will improve the user experience, and make the analysis process more efficient.
Potential Drawbacks
No response
Additional Information
No response

Hi @jxs1211
I can reproduce the issue. The problem seems to come from the Service analyzer.
(matthisholleville) ➜  k8sgpt git:(main) ✗ time ./bin/k8sgpt analyze
2024/08/26 13:32:47 Analyzer Ingress took 57.249625ms
2024/08/26 13:32:47 Analyzer PersistentVolumeClaim took 57.525541ms
2024/08/26 13:32:47 Analyzer CronJob took 64.764125ms
2024/08/26 13:32:47 Analyzer Node took 162.466084ms
2024/08/26 13:32:47 Analyzer Deployment took 168.8345ms
2024/08/26 13:32:47 Analyzer ReplicaSet took 281.76075ms
2024/08/26 13:32:47 Analyzer StatefulSet took 501.487167ms
2024/08/26 13:32:48 Analyzer Pod took 1.263196583s
2024/08/26 13:33:23 Analyzer Service took 36.287712708s

I'm looking into optimizing it and adding a flag to display stats for each analyzer.

In my case, the Service analyzer needs to analyze 182 items. By adding more logs, I can see that each item takes approximately 1 second to be analyzed. Concurrency is managed at the analyzer level, but we might want to consider applying it within each analyzer as well. What do you think, @AlexsJones ?
Also, do you think it would be useful to have more detailed statistics, such as the number of items analyzed and the P90 of the execution time per item?

In my case, the Service analyzer needs to analyze 182 items. By adding more logs, I can see that each item takes approximately 1 second to be analyzed. Concurrency is managed at the analyzer level, but we might want to consider applying it within each analyzer as well. What do you think, @AlexsJones ?
Also, do you think it would be useful to have more detailed statistics, such as the number of items analyzed and the P90 of the execution time per item?

I think we should have the ability to either be selective on logging or turn it off.
If we split out analysers it will absolutely hammer the K8s API in/out of cluster

In this PR I've proposed a new option for displaying stats only.
It seems to me that it might be interesting to have information such as the number of items analyzed, for example.

Hi @jxs1211
I can reproduce the issue. The problem seems to come from the Service analyzer.
(matthisholleville) ➜  k8sgpt git:(main) ✗ time ./bin/k8sgpt analyze
2024/08/26 13:32:47 Analyzer Ingress took 57.249625ms
2024/08/26 13:32:47 Analyzer PersistentVolumeClaim took 57.525541ms
2024/08/26 13:32:47 Analyzer CronJob took 64.764125ms
2024/08/26 13:32:47 Analyzer Node took 162.466084ms
2024/08/26 13:32:47 Analyzer Deployment took 168.8345ms
2024/08/26 13:32:47 Analyzer ReplicaSet took 281.76075ms
2024/08/26 13:32:47 Analyzer StatefulSet took 501.487167ms
2024/08/26 13:32:48 Analyzer Pod took 1.263196583s
2024/08/26 13:33:23 Analyzer Service took 36.287712708s

I'm looking into optimizing it and adding a flag to display stats for each analyzer.

Good catch, so do we have any chance to add concurrency in each analyzer for handling many items situation

The analyzers themselves are concurrent, but our previous conversation was about making the routines within the analysers also task in parallel. The challenge here is going to be the API rate limit and back pressure

The analyzers themselves are concurrent, but our previous conversation was about making the routines within the analysers also task in parallel. The challenge here is going to be the API rate limit and back pressure

Gotcha, so do we need more discussion on that?


Corruption of SemanticDB files

It occurs around 1% of the time against our Scala codebase and is rather flaky. Rerunning it seems to fix it, so it's not 100% reproducible either.
SemanticDB version: 4.4.30
Scala versions: 2.11, 2.12, 2.13
Found while running lsif-semanticdb:
Generating LSIF... [######## ] 89% 39,861 files processedcom.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.
processedcom.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).

Thanks for reporting! Could this be an issue with LSIF for Scala? I have never seen this happen in any of the workspaces I worked with.
Maybe it's an issue when we're trying to read the file before it's finished writing?
@olafurpg any idea what might be going on?

@wchau thank you for reporting! Can you upload the payload that’s failing to parse? This is the first time somebody reports this issue and SemanticDB sees quite heavy usage.

@olafurpg I'll see if I can reproduce it in an OSS environment so that I can share the payload.

Would you be OK with privately sharing the payload with me? I’m happy to troubleshoot this issue with you in the sourcegraph slack (I can join the channel on Monday). It might be tricky to reproduce in an OSS environment if the issue is rooted in your bespoke setup.

Is this still an issue?


Audio stops from other apps when opening odysee

i.e. if you are playing something outside of Odysee and then open odysee, the other things stops (even before you play a video)

I think this is a dupe of https://github.com/lbryio/odysee-ios/issues/77 no?

From my perspective they look the same


Bundle thresholds and parameters

Iteration thresholds are a matter of trade-off between speed and accuracy. Currently a lot of them are hard-coded, giving the end-user not a lot of flexibility. This can be solved by moving them to the 'sizing_setup' class.

[x] Renaming 'sizing_setup' to 'calculation_setup' class
[x] Add backwards compatibility for this + test
[x] Use_precalculated_data to sizing_setup
[x] Couple the use_precalculated_data from the gfunction class in the borefield class
[x] Add max_nb_of_iterations, atol en rtol for sizing (in calculation_setup class and sizing methods)
[x] Add kwargs to sizing methods instead of listing all options also available in the calculation_setup
[x] Move H_init to CalculationSetup class
[x] Adapt test_methods to handle these different criteria
[x] Update documentation on how to customize your behaviour

Documentation implemented in issue45-restructure-package-pipe


Vector does not yield performance results that capacity usually would

Godot 3.1 b60939be88d192b63798aec6e9b031d570048b8b
Windows 10 64 bits
Today I got stuck in an optimization problem: I am generating a lot of 2D geometry to be drawn often with canvas_item_add_triangle_array. This forces to use Vectors, which I decided re-use each time the geometry gets generated. But it keeps lagging at 6 ms just doing that since I started using it (without even including the call to draw)...
Then, I realized something for good about Vector:
The two following codes take the same amount of time to complete.
	for(int i = 0; i < 10000; ++i) {
		Vector<uint8_t> test; // Never re-use it
		test.resize(5000);
		test.resize(2);
	}

	Vector<uint8_t> test; // Re-use it
	for(int i = 0; i < 10000; ++i) {
		// I expected this to be free past the first iteration... it isn't.
		test.resize(5000);
		test.resize(2);
	}

So it appears there is no way to re-use a Vector and hope it will be cost-free over repeated uses, which prevents from making my code faster. Is that really it? Is it a bug?
To describe more my problem, I tried rewriting my code in a way it never clears vectors, and instead resizes only once to the correct size before calling canvas_item_add_triangle_array... and I gained 200% speed, yet it still has to resize at the end (I am lucky enough to draw geometry that often roughly has the same amounts of vertices).
So Vector does copy on write, it's easy to pass around I guess, and it resizes by power of two. But how should we deal with this case? Are we stuck allocating memory each time and half-reimplementing capacity on top of it if we want more speed? I mean, it does sound like it has capacity somehow, but it doesn't yields the results I thought.
Note: this would also concern Line2D since it uses the same method too.

A Vector is under the hood an array of T. What we currently clear() we just call resize(0) on the underlaying CowData (previously we did the same btw).
Some suggestions:
a) Add an int parameter defaulting to 0 to clear() which gives the desired capacity after the clear. Then only destroy all elements rather than resizing.
b) Add a new method which does the above.
c) Add a new member to vector that gives it a minimum capacity (perhaps on creation?) which then does the case of (a)
Thoughts anyone? @reduz perhaps?

Another option could be for Vector to know whether or not it is filled with POD types. We can do a template specialization for that case then and upon clear()/resize() etc just drop the elements on the floor since we won't have to call any dtors anyway.
We can probably achieve this with C++03 but it'd be much prettier with 11 :)

Another option is actually to just use __is_pod, this is a compiler intrinsic supported by clang, msvc, and gcc. Then have a specialization for that and don't do anything with capacity at all. This would still mean a resize operation but it would be much, much faster. It may really be all that's necessary.

@hpvb here are the times I get from the same benchmark:
Debug, without your PR:

Re-using the vector: 515ms
Not re-using the vector: 539ms

Debug, with your PR:

Re-using the vector: 39ms
Not re-using the vector: 65ms

Release-tools, without your PR:

Re-using the vector: 225ms
Not re-using the vector: 336ms

Release-tools, with your PR:

Re-using the vector: 39ms
Not re-using the vector: 63ms

Note: there seem to be a bit of random at stake, because some rare times the durations I recorded were up to 5 times less or more, so I wrote down the most occurring times.

Another insight I got today by switching my Minecrafty mesher from Vector to std::vector:

On the left, Godot release build using Vector to build up mesh data before creating the Mesh.
On the right, Godot release build, using std::vector instead.
As you can see, just changing the container at least DOUBLED how fast the mesher can turn voxels into mesh data.

The pull request that would originally close this wasn't merged, but since https://github.com/godotengine/godot/pull/38386 was, I'll close this.

I need to profile it again some day

Does this mean that the visual server can take LocalVectors now as parameters? I can see LocalVector::operator Vector<T>() const, but it appears to just create a new Vector<T> and then resize it, which would still be allocating the whole thing. Am I understanding this correctly?