Project structure and dependencies

I had just started to implement my own ASCOM Alpaca client when I found your efforts on Github/NuGet. Thanks for starting this initiative. I want to comment on a few things I noticed during my initial review:

ASCOM.Alpaca.Components depends on Newtonsoft.Json (but it also depends on ASCOM.Tools, which in turn depends on System.Text.Json). So you end up having both Newtonsoft.Json and System.Text.Json.

ASCOM.Tools comes with a native library (SOFA) which is problematic for true cross-platform use (Mobile, WASM, etc.). Why is SOFA needed for a device interface/client? From my point of view, all such calculations should be either in a separate library or be provided by the consuming library/app.
At least ASCOM.Common.Components is no-dependency library that can be used as a basis for custom implementation. However, I think you should keep native binaries out, otherwise it defies the purpose of your implementation as a universally applicable ASCOM Alpaca base.

Also the use of RestSharp seems like a strange trade-off. Yes, RestSharp is easy to use, but actually (at least for .NET5+) HttpClient requires just a few extra lines of code for the same result (but obviously without the dependency). My point is that some people may choose RestSharp, but some dont and those (like me) would like to avoid any extra dependency. This is especially true for mobile/WASM scenarios where any extra library weights in by increasing the footprint of the final app.

I also noticed that the package structure is different from the source tree structure. For example, Nuget "ASCOM.Common.Components" does not have a corresponding folder. Same is true for several other packages. That's not a problem per se, but makes it much more difficult to "dive in".

Just some (subjective) thoughts ...

Hi Thilo,
Thanks very much for your thoughtful feedback. This is a good time because we still consider the library to be in beta status and so could be subject to significant change.
NewtonSoft and RestSharp I agree that we shouldn't have dependencies on these. They came in because the code was ported from a .NET 3.5 ASCOM Platform component that can't use System.Text.Json and because RestSharp is just very easy to use. I'll see what we need to do to remove these dependencies.
SOFA SOFA is there as a convenience for less experienced users and it also powers the easy to use Transform component. Transform in particular has proved popular with Platform developers because of its straightforward interface. It is currently implemented for Windows, Linux, Arm and MacOS so already has a broad coverage of desktop environments. I agree that it isn't available for mobile environments such as IOS and Android but this may come at a later date if there is sufficient demand.
It is probably the case that we should add OS checks to clarify which OS's the library supports.
Package Structure What would you suggest? Rename the ASCOM.Common folder to ASCOM.Components?
A Few days ago we created a closed Groups.IO discussion group to provide a forum to discuss library features. Would you be interested in an invitation? If so We'll need to exchange your email address in some fashion.
Best wishes, Peter

Hi Thilo,
I've had a further look at the Alpaca client code and System.Text.Json is already the primary deserialiser. However, I had to retain NewtonSoft in order to deserialise the 2D and 3D arrays that are returned by ICamera.ImageArray and ICamera.ImageArrayVariant.
I continue to be shocked that System.Text.Json can not handle arrays other than 1D: Supported collection types in System.Text.Json.
Do you know any way around this?
Thanks, Peter

I would generally suggest a strictly layered approach (which should be reflected in the package naming schema).
L1: Interfaces (ICamera, ITeleskop, etc.) = ASCOM.Common.Components
L2: Low-level client (L1 + HttpClient + Timing/Exceptions, etc.)
L3: High-level client (L2 + high-level functionality, such as coordinate transforms, etc.)
With L1 you only get the API contract (interfaces, enums, ...). So that you can implement your own client/device. With L2 you get access to all device functionality including communication and error handling. L3 only adds convinience features (for common scenarios) which may require additional (external) libraries. Not sure how much L3 is really needed here though.
Same for server-side. L2 only provides 1:1 device abstraction in ASCOM interfaces plus the communication. L3 could provide stub implementations for typical devices, e.g. a TelescopeBase for everyone trying to implement ITeleskope for their own devices, etc.
I know that I'm personally very picky when it comes to external dependencies (especially if it involves native(!) binaries). That said, I think a library like yours, which positions itself as a foundational layer for .NET-based ASCOM/Alpaca clients and devices should be equally consious about its dependencies or avoid them altogether. The .NET ecosystem is always evolving. The choices you make for your depedencies should still be valid in a few years (see Newtonsoft.Json).
Its no different with SOFA. SOFA is a quasi-standard, yes, but still many people use AA+ or alternatives. Also, SOFA takes a very opinionated approach (with cryptic function names). I guess the main point is that ASCOM/Alpaca is for device communication, SOFA is for "math". You should be able to pick one without the other.
My suggested naming would be something like
ASCOM.Common (or ASCOM.Abstraction or ASCOM.Interfaces)
ASCOM.Alpaca.Client (depends on ASCOM.Common only)
ASCOM.Alpaca.Device (depends on ASCOM.Common only)
ASCOM.Utility
No separate ASCOM.Exception.Library, add to ASCOM.Common.
Put high-level helpers, such as Transform, into new ASCOM.Utility (or keep ASCOM.Tools as name, and move content around). If there is high-level functionality for client/device, consider ASCOM.Alpaca.Client/Device.Extensions (or something like that).
ASCOM.Tools contains configuration and logging support which nowadays is superseded by DI components for most people anyway (think host builder pattern with IServiceProvider/ILogger/IOptions). Use standard interfaces as much as possible. This also gives a flexibility to choose a suitable components from NuGet (Serilog, etc.).
Just my two cents ... ;)
Groups.IO: At this point I'm speaking from the perspective of a hobby project. And ASCOM Alpaca is just starting to become of serious interest to my implementation. However, if you feel that my limited feedback on a separate discussion channel would be helpful, let me know. I could post my email address (and then delete/edit the post shortly afterwards).

JSON itself does not support multi-dimensional arrays!! It only supports arrays of arrays (what is called jagged arrays in C#) and these are supported in System.Text.Json. If you want to store 2D arrays, you have to convert to jagged arrays at some point anyway.
Option 1: Jagged arrays are supported with System.Text.Json. Use jagged arrays and convert from/to 2D (by using BlockCopy or Span.CopyTo).
However, it would be more efficient to use memory pooling instead of direct allocation for image buffers. Therefore, Option 2 would be to use 1D arrays internally for everything (incl. serialization), but expose them as 2D arrays (for example as Span2D). Real 2D arrays are contiguous in memory in .NET (typically with row-major order), so in memory there is essentially no difference (you could even do unsafe tricks to treat one as the other).
What element type for the image buffer would you like? Int/Double or RGBx structs?

Hi Thilo,
Thanks for your insight about JSON using jagged arrays. I've just resolved my final issue of how to copy data efficiently from the deserialised jagged array to the required 2D or 3D regular array. Buffer.BlockCopy is blazing fast and I've wrapped that inside a Parallel.For loop to handle the outer dimension.
The nett result is that deserialisation is now about 4 times faster than NewtonSoft, despite having the additional data copy step from jagged to regular array.  I'm pleased to say that the NewtonSoft dependency is now gone!
I'm now going to have a look at removing RestSharp too.
Best wishes, Peter

Awesome! Good to know that I didnt make trouble for nothing ;)
Looking forward to testing the new beta soon.

Hi Thilo,
RestSharp is now gone too so there are no longer any third party components in the library. I posted beta 4 last night.
Best wishes, Peter

Hi Peter,
that's really great news! I just created a fork to experiment with your repo/project.
I already removed the ASCOM.Tools dependency in the other libraries by using ILogger from Microsoft.Extensions.Logging(.Abstractions).  ASCOM.Tools is now only there as an "extension" package containing Sofa, Transform* types, etc.
Next, I would like to make it more DI-friendly (especially PlatformUtilities), so that e.g. ILogger can be injected/provided by the consuming app/lib, instead of being hardcoded.
Note: I found that ASCOM.Alpaca contains an invalid package reference to 'ASCOM.Exceptions'.
I will be away for a conference over the next week. Will "experiment" a little more then and let you know what I find ...
Best, Thilo

Thanks Thilo, I hope you enjoy the conference. I couldn't see the invalid package here, presumably because there was a copy in my local NuGet cache. Anyway, it's fixed now in beta 8, together with some small issues in the Alpaca client code.
I need an email address in order to invite you to the library test group, please can you PM me if you would still like to participate.
Best wishes, Peter

Hi Peter,
I tried to make a minimal-changes version of the latest beta that still removes the dependency in ASCOM.Alpaca and ASCOM.Com from ASCOM.Tools. For that, I introduced a new ITraceLogger (in ASCOM.Common.Interfaces) resembling the public interface of TraceLogger in Tools.
Since PlatformUtilities had a hard-coded TraceLogger dependency, I created a new public static field 'TraceLogger' that can be set to any ITraceLogger instance and is used to propagate all internal log messages from PlatformUtilities. The field defaults to a newly created NullLogger (which does not do anything). To restore the previous behaviour, one would use a one-liner of custom initialization: PlatformUtilities.TraceLogger = new TraceLogger();.
With these changes I can now use Alpaca (or Com) client without Tools dependency. As mentioned before, I don't like the Sofa library in my project nor do I plan to use any of the built-in logging functionality in ASCOM.Tools.
I think that with these simple changes you can still use everything as before, but it is now possible to skip ASCOM.Tools altogether, making it completely optional. Also, it is easy to use a custom I(Trace)Logger instead of TraceLogger (from Tools). This gives us flexibility of pointing the logger somewhere else, e.g. to EventLog, network service, etc. Also, redirecting to MS ILogger, Serilog, etc. requires only a trivial adapter class.
Usually, I would probably refactor more and rely on MS ILogger as a standard interface. But I though to keep as close as possible to the current state of the project.
I hope you can follow my intention here. Let me know what you think.
#24 is the related PR with the changes for discussion.
Regards
Thilo

Hi Peter,
I tried to make a minimal-changes version of the latest beta that still removes the dependency in ASCOM.Alpaca and ASCOM.Com from ASCOM.Tools. For that, I introduced a new ITraceLogger (in ASCOM.Common.Interfaces) resembling the public interface of TraceLogger in Tools.
Since PlatformUtilities had a hard-coded TraceLogger dependency, I created a new public static field 'TraceLogger' that can be set to any ITraceLogger instance and is used to propagate all internal log messages from PlatformUtilities. The field defaults to a newly created NullLogger (which does not do anything). To restore the previous behaviour, one would use a one-liner of custom initialization: PlatformUtilities.TraceLogger = new TraceLogger();.
With these changes I can now use Alpaca (or Com) client without Tools dependency. As mentioned before, I don't like the Sofa library in my project nor do I plan to use any of the built-in logging functionality in ASCOM.Tools.
I think that with these simple changes you can still use everything as before, but it is now possible to skip ASCOM.Tools altogether, making it completely optional. Also, it is easy to use a custom I(Trace)Logger instead of TraceLogger (from Tools). This gives us flexibility of pointing the logger somewhere else, e.g. to EventLog, network service, etc. Also, redirecting to MS ILogger, Serilog, etc. requires only a trivial adapter class.
öUsually, I would probably refactor some more and rely on MS ILogger as a standard interface.
I hope you can follow my intention here. Let me know what you think.
#24 is a PR with the changes for discussion.
Regards
Thilo

@Peter-Simpson: I can't find a PM option on your profile. Please use<EMAIL_ADDRESS>for the library testing group.

Closing as completed (in 1.0.0-beta10).


AD Connect, can "CSExport" and "CSAnalyzer" still be used?

Creating an issue
We prefer that you create documentation feedback issues using the Feedback link on the published article - the feedback control on the doc page creates an issue that contains all the article details so you can focus on the feedback part.

Not available on this page

You can also create a feedback issue here in the repo. If you do this, please make sure your issue lists:

[ ] The relevant Azure service or technology.
[X] A link to the published documentation article that you have feedback about.
[ ] Clear, specific feedback that the author can act on.

Tech support and product feedback
If you would like to contact Microsoft about other things, such as product feedback or tech support, please review these guidelines:

Not a support questions

Question
Article: https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sync-staging-server#appendix-csanalyzer
I can not find the tool CSExport after the Installtion of AD Connect [<IP_ADDRESS>] (checked in "C:\Program Files\Microsoft Azure Active Directory Connect"). Can it be that the folder "C:\Program Files\Microsoft Azure AD Sync\Bin" does not exist until you have finished the Setup process?. (The capter "Verify" and possible "Appendix CSAnalyzer" has to be updated).
Relation
https://github.com/MicrosoftDocs/azure-docs/issues/88920

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

ID: be523268-53e3-43f1-21ce-c1e7d5210a9c
Version Independent ID: 04b16d87-3a21-aee0-2233-b65f087bd952
Content: Azure AD Connect sync: Operational tasks and considerations - Microsoft Entra
Content Source: articles/active-directory/hybrid/how-to-connect-sync-staging-server.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@weyCC81
Thanks for your feedback! We will investigate and update as appropriate.

@weyCC81
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly

@billmath
Can you please check and add your comments on this doc update request as applicable.

Thank for submitting this. I have created a work item for it and will reviewing this in the coming weeks. I am not sure what the timeline will be, so I am going to close this for now. But once I have an update I will drop it in here and let you know.
Thank you!
Bill
#please-close


Command Line Interface - Make separator string for atoms within printed answer set configurable

Adds a new command line parameter (sep <separator>) in order to influence the way answer sets are printed to stdout.
Example:
$ java -jar Alpha-bundled.jar -str "a. b(c). d(e, f)." -sep ",\n"

formats the answer set as:
{ a,
b(c),
d(e, f) }

I think this is a useful addition, but it is not fully clear to me why only the atom separator is configurable?
And I am also not sure if more configurability here is over-engineering. What do you think? Can you explain the rationale behind having exactly the proposed functionality?
One might also argue that there are better programs to format strings (e.g. sed/grep), what is the argument for having that functionality directly in the solver?
(NB: the tests are failing because of checkstyle complaining.)

One might also argue that there are better programs to format strings (e.g. sed/grep), what is the argument for having that functionality directly in the solver?

sed and grep are both great, however, my motivation for this was that I simply needed every atom on a new line (in order to grep for something), and hit a dead end trying to achieve that with sed. The reason for that is that replacing the string ),  with ),\n doesn't work when you have atoms with function terms in the answer set, such as p(q, f(x, y), z), p(r, (f(u, v), z), ..., so I think having this in the solver is a nice convenience feature with the potential to make working with the solver a lot more comfortable.
This might be even more useful to people working on Windows, where string manipulation in the shell is more awkward.

(NB: the tests are failing because of checkstyle complaining.)

Checkstyle warnings are fixed now - sorry for that, it was a bit of a rush job...

I think this is a useful addition, but it is not fully clear to me why only the atom separator is configurable?
And I am also not sure if more configurability here is over-engineering. What do you think? Can you explain the rationale behind having exactly the proposed functionality?

Actually, initially, I wanted to do something like a full format string, allowing things like
java -jar Alpha-bundled.jar -i someFile.asp -fmt "Instance of %(predicate) of arity %(arity): (%(terms))\n"

i.e. basically doing something "printf-like" with named parameters internally. However, I think spending that much time on something relatively minor didn't seem justified. Also, I think this would be relatively complicated for users, so I decided against such a solution.

I also think that some caution is warranted here. The CLI should be slim, and this option seems a little too low-level (see also the Unix philosophy). What is the motivation for the proposed change?
If it is to allow easier processing of results, then it might be worth considering an even simpler line/table-based format (nice to grep), or even JSON (with shell tools like jq for scripting).

@lorenzleutgeb what do you mean by "an even simpler line/table-based format"?
Writing JSON seems a bit too much for the moment, though given the right interfaces in the solver, it would be nice to have.

@lorenzleutgeb what do you mean by "an even simpler line/table-based format"?
Writing JSON seems a bit too much for the moment, though given the right interfaces in the solver, it would be nice to have.

I didn't have any particular format in mind. If one wants to grep through answer sets, maybe just split atoms by \n, terms by \t and answer sets by an additional empty line. Suppose that this would be enabled as --print-table or similar.
a
b       c
b       e
d       e       f

a
b       e
b       c
d       c       f

One might do:

java -jar alpha.jar ... | grep d | cut -f2
java -jar alpha.jar ... | grep --context=10 c

This obviously deviates a lot from the common notation with {/} and p(x,y) (parentheses and comma).
However, adopting a common structured notation like JSON could be a quick win. There are many parsers and tools available for "post processing" the output and integrating Alpha with other systems.
Note that these two approaches are by no means mutually exclusive.

I also think that some caution is warranted here. The CLI should be slim, and this option seems too low-level
Yes, definitely. After discussing this with @AntoniusW, we came to the conclusion that, ideally we'd be able to choose an AnswerSetFormatter via commandline-argument and the supply it with it's formatter-specific options, thereby gaining flexibility and transparency.
However, trying to quickly implement that on top of the current - already a bit overloaded - CLI would make matters even worse in my opinion. I created a new issue (#264) summarizing the problem and as the place to do a proper overhaul of the CLI.

However, adopting a common structured notation like JSON could be a quick win. There are many parsers and tools available for "post processing" the output and integrating Alpha with other systems.
Once again, I totally agree, but I think this is dependent on issue #264. I created #265 specifically to start a discussion on which output formatting capabilities we want to have going forward.
While things like printf-style formatting and JSON definitely make sense, I'd also like to point out that, when using Alpha as a component of a larger application, the java API would be the way to go - communicating with the solver through stdout and stdin is probably mostly relevant when running benchmarks or quickly testing something.

This PR seems to be rushed, as @madmike200590 admitted, and getting it in will lead to further breaking changes down the road when more complex output configuration is required.
I cannot disagree ;-) but would still like to get this PR merged as-is, simply because it's a small thing, and doing something "proper" here would be significantly more work - which I'm definitely in favor of investing, but I'd rather not block this PR because of it.

@AntoniusW unless there are still unaddressed issues, could you please merge this PR?


Sowing Discord Commerce Dialogue Option

During the mission Sowing Discord for Ryujin I was able to select a [Commerce] dialogue option in the mission briefing when I do NOT have that skill unlocked

Details
It was specifically when discussing Arthur with Imogene during the initial mission briefing
Game Version
<IP_ADDRESS>
Language
English (EN)
New Game
No
Reproduction Steps

Start Sowing Discord
Ask to go over their backgrounds verbally rather than just rely upon the dossiers
When discussing Arthur, this option will be available even without the skill unlocked

Confirmed broken.
Edits text for INFO 1e4d79 as well as assigning Commerce Perk to that INFO
Issue 747.zip
Confirmed working.


Questions about parameters

Hello, author. Thanks for your work.
I have some questions about the parameters. The input size is 41x41 when you generate training set. After training, you get a model based on the size 41x41. Can this model work well when you reconstruct an image whose size is quite different, like 2000x2000? I trained a model using your code. Everything is same except for the down sampling method(I did not use imreszie).  I found when the size of the image is small, like 100x100, I got better PSNR and SSIM than bicubic interpolation. If the size of the image increases, bicubic interpolation will be bettter than VDSR. Do you think it is because of the input size? The other question is that, in the file VDSR_net_deploy.prototxt, the last two input_dim are set to 256, I don't understand where this value come from.
I'm looking forward to your reply. Thanks.

Hi, I didn't test verg large image like 2000x2000. You can try my trained model to check the performance of large image. There maybe something wrong in your training.
The last two input_dim should be changed to fit your input image. 256 is just a example.

Thanks. I didn't use function modcrop to process the image. I add modcrop now, then VDSR is better than bicubic interpolation for large image.


Switch to new plotly/dash visualizer

Removed old matplotlib based visualizer.
Refactored code to use new plotly/dash visualizer.
Several visualizer improvements/updates.
Add readme instructions for using visualizer.

Play/pause button is not working consistently for me, sometimes I have to wait several seconds before the frames start progress and then it takes several seconds in between each frame.
Visualizations are quite laggy.
3D lidar vis is by far the slowest, way too slow, not sure if there's a way to speed this up?
Vis code needs to be speeded up in general.
Is it possible to suppress these types of print statements from the terminal:
<IP_ADDRESS> - - [08/Nov/2021 16:21:51] "POST /_dash-update-component HTTP/1.1" 200 -
Run times that I measured:
lidar_bev: 0.1214756965637207
radar_bev: 0.14721369743347168
cam_persp: 0.2222435474395752
3d_lidar: 1.3201653957366943
I like the 3d lidar color visualization now, don't change too much other than speeding it up.


Issue with wrapping

Hello again,
As I spent some time debugging an issue and finally found the reason, I thought I can let you know with my potential solution for it.
Wrapping is not working when values are negative.
How to replicate:
x = Fxp(0, signed=True, n_word = 4, n_frac = 0)
x.equal(-30) ==> -14 which is not possible as we can only represent the range [-8,7]
This happens because the value I gave should wrap twice but the functions don't account for this. The positive case is correct.
To solve this I changed the wrap function inside utils.py
def wrap(x, val_min, val_max, signed, n_word):
    if not ((x <= val_max) & (x >= val_min)):
        if signed:
            x_wrapped = x_wrapped = twos_complement_repr(x, n_word)
            while x_wrapped < val_min:
                x_wrapped = twos_complement_repr(x_wrapped, n_word)
        else:
            x_wrapped = x % (1 << n_word)
    else:
        x_wrapped = x
    return x_wrapped

However, I am not sure if I broke something else.

Mello @MaenMallah
Yes, you're right. When I tested it I didn't cover range with several wraps around limits. Thank you for the time you invest in this!
Your solution seems to work well, but it has problems with performance. All of this show me that the original implementation also have this kind of problem (beside it is not working as it should) and use twos complement could be a bad idea.
I have been thinking about an alternative and reach to this:
def wrap(x, signed, n_word):
    m = (1 << n_word)
    if signed:
        x = np.array(x).astype(int) & (m - 1)
        x = np.where(x < (1 << (n_word-1)), x, x | (-m))
    else:
        x = np.array(x).astype(int) & (m - 1)
    return x

I tested it and work well!
About performance (wrap0 is original function, wrap2 is your solution):
In [ ]: v = np.arange(-32,32)

In [ ]: w = np.arange(-8192,8192)

In [ ]: %timeit wrap(v, True, 3)
3.4 µs ± 21.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [ ]: %timeit np.vectorize(wrap0)(v, -4, 3, True, 3)
65.7 µs ± 490 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [ ]: %timeit np.vectorize(wrap2)(v, -4, 3, True, 3)
88 µs ± 417 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [ ]: %timeit wrap(w, True, 3)
37.1 µs ± 395 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [ ]: %timeit np.vectorize(wrap0)(w, -4, 3, True, 3)
10.8 ms ± 90.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [ ]: %timeit np.vectorize(wrap2)(w, -4, 3, True, 3)
1.81 s ± 5.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

So, now we have an even better wrap function :)  Thanks again!

As you could be noted, the arguments val_min and val_max are not necessary. If you use this new wrap function an extra change in objects.py is necessary:
# val = utils.wrap(new_val, val_min, val_max, self.signed, self.n_word)
val = utils.wrap(new_val, self.signed, self.n_word)

It would be great if you can test it and confirm is working well.
I plan to update the repo if all is working well.

Hello @francof2a , I have tested the new implementation on the git and the use-case I had works fine now. All seems to be working well. Thanks for your quick replies and fixes.


Support GET for fetching queries when GraphiQL is turned off (FastAPI)

The official documentation lists best practices for serving over HTTP here.
In particular, it mentions support of GET requests to fetch queries.
Strawberry does not currently support this (at least not in the FastAPI integration, unsure about others), and will simply return 404 when GraphiQL is turned off.
I think it should! For the FastAPI integration, we probably need something along the lines of how POST requests are handled, cf. https://github.com/strawberry-graphql/strawberry/blob/b021481d253f5e6cc56f4bd09c548f97acd9fd84/strawberry/fastapi/router.py#L111-L123

Just FYI I have started looking at adding this for FastAPI and the other integrations 👍

(Related to #834)

Hey just to update, apologies I got busy with work / personal stuff
I have done most of the leg work already, and got query params working on all integrations at the time of my last comment - it's just been sitting on a branch on my fork 😬
Just needs a bit of polish which I am gonna try get done this weekend.
I need to check test coverage, ensure consistent request logic, and maybe add documentation on supported requests to the respective integrations.


Multi-GPU Training Support?

Hi, I am interested in your work and thanks for your code.
I wonder whether the code support the multi-gpu training?
Best Regards,
Jun

Hi, the code has no multi-gpu support.
I have only a single-gpu machine to work on, so it makes no sense to support such a feature in my code :).

Hi, the code has no multi-gpu support.
I have only a single-gpu machine to work on, so it makes no sense to support such a feature in my code :).

I found that there are many multi-gpu setting both in the source codes and configuratoin file, so I posted this issue.
Thanks again for your early reply and help.


Automated cherry pick of #1635: fix: possible reduce timeout for quota list

Cherry pick of #1635 on release/2.10.0.
#1635: fix: possible reduce timeout for quota list

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.10.0@71d58f8). Click here to learn what that means.
The diff coverage is 0%.

@@               Coverage Diff                @@
##             release/2.10.0   #1636   +/-   ##
================================================
  Coverage                  ?    7.7%
================================================
  Files                     ?     409
  Lines                     ?   62386
  Branches                  ?       0
================================================
  Hits                      ?    4804
  Misses                    ?   57172
  Partials                  ?     410

Flag
Coverage Δ

#aFlag
7.7% <0%> (?)

Impacted Files
Coverage Δ

pkg/cloudcommon/db/tenantcache.go
1.31% <0%> (ø)

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 71d58f8...15b6b4d. Read the comment docs.

/lgtm
/approve


Rule discovery mechanism like service discovery for discovering scrape targets

Proposal
Nice to have a dynamic Rule Discovery mechanism from sources other than local config files.
Justification
Think about why we supported

Service Discovery
Notifier Discovery

I don't think this is something that belongs in Prometheus, local files already provide a mechanism which you can build on top of.

I think this is the the right answer:
exporter:
the exporter url: http://x.x.x.x:3000/metrics

global:
    scrape_interval: 30s
    scrape_timeout: 10s
    evaluation_interval: 30s
alerting:
    alertmanagers:
    - static_configs:
      - targets:
        - x.x.x.x:9093
      scheme: http
      timeout: 10s
rule_files:
  - rules.yml

scrape_configs:
  - job_name: 'agent-inquiry'
    kubernetes_sd_configs:
    - role: pod
      api_server: http://x.x.x.x:6443
      tls_config:
        insecure_skip_verify: true
    relabel_configs:
    - source_labels: [__meta_kubernetes_namespace]
      regex: inquiry
      action: keep
    - source_labels: [__metrics_path__]
      action: replace
      replacement: /metrics
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__,__meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: (.*);(.*)
      replacement: ${1}:3300
      target_label: __address__
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: [__meta_kubernetes_namespace]
      action: replace
      target_label: kubernetes_namespace
    - source_labels: [__meta_kubernetes_pod_name]
      action: replace
      target_label: kubernetes_pod_name

Rule Discovery is nice idea，read api not safe and kill command is not pretty...


RFC: "nativeuuid" type for databases with native uuid support

This is to allow the use of the native uuid for mariadb 10.7+ users. For other database it's simply an alias to the existing uuid type. Sqlite is explicitly not supported because it doesnt have a native type.
Related Issue: https://github.com/cakephp/phinx/issues/2256
Note: To test this you need an to add 'nativeuuid' to Cake\Database\TypeFactory $_types.
Once this is accepted I can also do the change in CakePHP.

@nicosp Phinx is now being separated standalone.
To also port this into CakePHP (Migrations), this would also need a 2nd PR to
https://github.com/cakephp/migrations

@nicosp Phinx is now being separated standalone. To also port this into CakePHP (Migrations), this would also need a 2nd PR to https://github.com/cakephp/migrations

Ok, which branch should I target there?

current one, so 4.x one is fine.


Use default exports by default

For many components, we are currently using named exports instead of default exports (e.g. import { MyButton } from './MyButton; rather than import MyButton from './MyButton';.) I feel like we should be using default exports for components, with named exports only if it needs to export additional symbols.
This is a somewhat stylistic question; thoughts? Anyone feel strongly otherwise?

I'd err more in the opposite direction. I feel that the more consistent we can be, the easier it is for new people getting started. Having both import MyButton from './MyButton'; and import { Button1, Button2 } from './Buttons'; seems like two behaviors to keep track of instead of one.

What are the pros to using default exports?

Mainly terseness, I suppose. I'm not clear why import { Button1, Button2 } from './Buttons'; is the pattern we'd use; I'm inclined to tend towards one component (or at least one exported component) per file, so I would probably tend to use
import Button1 from './Button1'; // or 'Buttons/Button1', if we want to group them together
import Button2 from './Button2';

So is this more of a conversation about one abstracted component per file?

I think that plays into it, certainly, but there are components (I believe) that only have one component in a file and still use named exports.

Maybe we'll do some real-time talking about this and put those conclusions in here.


[DrawablePainter] Migrate drawablepainter module gradle file to Kotlin DSL

Following up https://github.com/google/accompanist/issues/1578 and relating to https://github.com/google/accompanist/pull/1579
Migrating the drawablepainter module to Kotlin DSL.
I have split up the PR into two commits. The first one prepares the file to be migrated by using steps described in these docs. The second one is where I actually convert the file to .kts file and updates the rest of the file to be compatible with Kotlin DSL.
I'm a bit unsure about the lint lambda textOutout. Maybe that should be in the build file or test result folder or something. I will update it to what we decide in https://github.com/google/accompanist/pull/1579#discussion_r1167980394.

Will wait on #1579. I moved some of the gradle plugin to toml, so will rebase this when that is merged so that I can use that :)
Will apply the same comments as was mentioned in #1579


Changing nicknames

This is an incredible project, I'm learning so much from playing around with this project.
I have a question about changing nicknames after connecting. I'm working on a feature to be able to change the nickname, but I'm not having much luck with it. Ive tried to use setNicknames() from NicknameActions. If I change a nickname with setNicknames() and call getState().nicknames right after, it seems to have changed the nickname, but the nickname on the screen doesn't change.
Any advice about how I should change nicknames?
Thanks!

Hey @carstenjacobsen - glad to hear you like Peer Calls! This functionality used to exist but I removed it during a refactoring. I cannot remember if I was just trying to keep things simpler or if something else had changed what would prevent reliably updating the nicknames.
I think this comment is where this functionality got removed. Hopefully you can use it to see what needs to dispatch a nickname changed event: https://github.com/peer-calls/peer-calls/commit/e3709f3720717bad27cd42b2c9e76d6ac5ec46c4
You can start from the Input.tsx component. Let me know if you have any questions!


Reworked the GUI from Card Panels to a Table

Converted the Person Card Panel view to a Table. As opposed to the PersonListPanel, TableView handles any updates/edits to any entries in our dataset. That's why there is no implementation of that functionality.
Do chip in for the stylization of the table as I am not very proficient at it.
Things that we still have to do:

[ ] Delete PersonListPanel and PersonCard classes
[ ] Implement the display of Tags onto the Table
[ ] Uncomment the code which allows us to display fields such as House, Gender etc. (Only when Resident Class is done)
[ ] Update all mentions of Person class to Resident class
[ ] Implement a potential Index column

Codecov Report

Merging #65 (07bc40d) into ui-rework (587df69) will decrease coverage by 1.00%.
The diff coverage is 0.00%.

@@               Coverage Diff               @@
##             ui-rework      #65      +/-   ##
===============================================
- Coverage        67.34%   66.34%   -1.01%
  Complexity         404      404
===============================================
  Files               76       77       +1
  Lines             1326     1346      +20
  Branches           153      153
===============================================
  Hits               893      893
- Misses             399      419      +20
  Partials            34       34

Impacted Files
Coverage Δ

src/main/java/seedu/rc4hdb/ui/MainWindow.java
0.00% <0.00%> (ø)

src/main/java/seedu/rc4hdb/ui/PersonTableView.java
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


🚀 Feature: Easier customization support in authentication backend library to forwarding custom (authentication) cookies from authentication provider

🔖 Feature description
Use an authenticator and a list of cookies to forward to forward back authentication cookies from the authentication server.
🎤 Context
When I authenticate with my authorization server I get back an access token and an authentication cookie in Set-Cookie header. When I get protected resource, I provide both access token and the cookie.
While backstage backend authentication customizations are very nice, the authenticator does not return cookies and cookie manager does not allow setting custom cookies.
I create AuthProviderRouteHandlers with my own copy of createOAuthRouteHandlers() function that sets cookies in there.
✌ Possible Implementation
OAuthCookieManager accepts a list of cookies to forward as optional parameter. The Authenticator#authenticate() returns all the cookies set with Set-Cookie and the cookie manager puts the ones that are to forward, if any on the response.
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

Maybe! Ping @Rugvip (who's on vacation; expect a few weeks before we get to this) on the design question. Feel free to make a PR in the mean time and we can continue the design details there.
Does your provider return an actual refresh token separately too, with offline scope or so?
Are you accessing resources statically with this (like images or whatnot), that aren't requested using explicit fetch calls?

Hi @freben , @Rugvip

Does your provider return an actual refresh token separately too, with offline scope or so?

Yes

Are you accessing resources statically with this (like images or whatnot), that aren't requested using explicit fetch calls?

No, access token + cookie protect the API, so explicit calls.

Alright. Slightly surprising that it requires both.

Both, you mean both refresh token and the cookie? From what I understand, if attacker steals the access token, they can't use it alone. I must provide both the access token and a matching cookie. It's basically an additional security measure.
For the offline flow, I must also provide the refresh token together with the same matching cookie to get new access token.
Basically the cookie is a long lasting piece of authentication.

Ok, for now, I think, the most reasonable way to allow customization of the response would be to pass response (express.Response) to authenticator.authenticate(). This would allow me add necessary cookies on the response.

I created a PR: add response to authenticator parameters: https://github.com/backstage/backstage/pull/25587
please take a look.

The limited use of cookies is an architectural decision that we've taken to simplify integration with external services and split deployments. If we were to use cookies for API authentication we'd be dealing with either proxying a lot more requests, dealing with domain restrictions, or messy 3rd party cookies.
If you do want to implement this yourself as a deeper customization, you can decorate the handlers returned by createOAuthRouteHandlers within createOAuthProviderFactory, where you have access to the request and response objects.
Gonna close this as it's not something we want to add at this point

Oh, and you do also have input.req.res, which allows you to access the response object.


Emphasize risk of backtrace_level in production

It's very easy to misread backtrace_level as somewhat akin to a log level
configuration and end up using it in production without understanding how
much of a performance issue it will cause.
I'm proposing this documentation change as a first step but I really think some
sort of warning should be printing to the logs if this setting isn't set to a very
high log level value like :fatal/4 in the production environment.
We had this mistakenly set to :info in production and the allocations and memory
growth/leak were astounding.

Totally agreed, backtraces are to be avoided. The hard part with documentation is these warnings need to be in so many places. Thank you for the pull request


Selected Row/col can be over maximum

Disallow selected row/col to be indexed further than max

this is actually intentional so you can have a "feature only" view of your setup... adding the constraint is possible, but also bug prone. does it need the constraint?

Looked into this - it is actually providing a valid image of null pixels because it's location is off the loaded image


cmd+click / go to definition is not working for all symbols in a forge project.

Code navigation with cmd+click/ go to definition is not working in some instances.
Example project: https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/token/Token.sol/#L17
What works:
Clicking on ReentrancyGuard

and others in the extends lists
What doesn't work:
Clicking on IManager here

Clicking on IManager.FounderParams here. This is a struct inside an interface.
Cause
I'm not sure what is causing this. Both ReentrancyGuard and IManager are relative imports on the top of the file. IManager is interface as opposed to ReentrancyGuard being a contract. But IToken is also an interface, and that one is working.

Hi thanks for this.. now the extends list should be working.. Need to fix the other issues.


Which Boto3 version for which Moto version ?

Recently, AWS changed their response for ecs.list_container_instances(cluster="my_cluster") and broke our code.
Basically what happened is that now, ARNs are of format arn:aws:ecs:region:aws_account_id:container-instance/CLUSTER/container_instance_ID when they used to be arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID (and of course, we used something like .split("/")[1] to "extract" the container_instance_ID, except now it returned the CLUSTER and not the container_instance_ID.
Now, aws documentation doesn't mention this change, it just... happened. It may have been involuntary, but I doubt that.
All that got us thinking : in order to avoid such involuntary behavior in the future, is there a specific AWS version Moto targets and if yes, which one is it ? Is there something somewhere that tracks what moto version mocks a specific AWS versions perhaps ?

Hi @Ellynas, great question! It's not the first time that a boto3-change just.. happened, without any communication, and broke moto.
We don't track version-compatibility at all, I'm afraid. It would be very useful, but I don't think we'd have to time to keep up with all releases.
As a rule, the latest versions should always play nice.
Do you know which boto3/botocore version introduced this ARN change?

From what I could gather it wasn't a change in boto3/botocore, but in AWS itself. That issue was first noticed in our alpha, then in our beta the next day, then in production a few days later. They all had fixed and different boto3 version that weren't updated after the first discovery of the bug, meaning that it was most certainly gradual change on AWS side that had nothing to do with boto3 version.

Ah, right. That is curious. I've never seen any docs/release notes that would allow us track such changes unfortunately

Very recently (as in, minutes ago) was send by a colleague this site : https://awsapichanges.info/
I don't know what it's worth, but that's the closest thing I've seen to actual release notes.

The ECS ARN change has also been discussed here: https://github.com/spulec/moto/issues/3497
Moto does have a solution now to represent both short and long format ARN's, as shown in that issue.
Changes like this are not versioned though, so there is no way for Moto to target a specific AWS version. The only versioning that we can see, and that we can act on, is the boto3/botocore releases. Changes to those library tend to be non-breaking changes though, they only add new features.
(Any updates to boto3 are shown on the site that you mentioned: https://awsapichanges.info/)
As there is not much else for us to do here, I'm going to close this ticket. Let us know if you have any other questions!


[BEAM-5788] Fix DataflowRunner in Python3 - response encoding

DataflowRunner needs to specify response encoding when running in Python 3. This is required when using google-apitools.
+R: @aaltay  @tvalentyn

Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

It will help us expedite review of your Pull Request if you tag someone (e.g. @username) to look at it.
 Can we regenerate it? We need to pass the correct encoding type to response_encoding in superclass of StorageV1. A wrapper may not be able to do that.

Regenerate those files should be the right way to do. We should update both storage_v1 and dataflow_v1b3 client and messages.

Update storage v1: https://github.com/apache/beam/pull/7017

Update Dataflow v1b3 protocol buffers in https://github.com/apache/beam/pull/7026. Will rebase this PR after it's merged.

Do you still need this PR?

Rebased this branch after google cloud api was updated.

Run Python Dataflow ValidatesRunner

@aaltay @tvalentyn
This PR is ready for review.

PTAL @aaltay @tvalentyn


Too large DRAM .bss size occupation issue (CON-943)

Describe the bug
After updating CHIP sdk from commit id 181b0cb14ff007ec912f2ba6627e05dfb066c008(tag v<IP_ADDRESS>) to 8e3d98c03904c14baeac495113eb58721797e838, It is unable to flash application because of DRAM overflow issue.
/home/yogyui/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/12.2.0/../../../../xtensa-esp32-elf/bin/ld: matter-test-app.elf section `.dram0.bss' will not fit in region `dram0_0_seg'
/home/yogyui/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/12.2.0/../../../../xtensa-esp32-elf/bin/ld: DRAM segment data does not fit.
/home/yogyui/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/12.2.0/../../../../xtensa-esp32-elf/bin/ld: DRAM segment data does not fit.
/home/yogyui/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/12.2.0/../../../../xtensa-esp32-elf/bin/ld: region `dram0_0_seg' overflowed by 3088 bytes
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

I performed size analysis (using idf.py size-files)and found some interesting features like below.
(1) CHIP commit 181b0cb14ff007ec912f2ba6627e05dfb066c008 (previous version)
Object File                                 DRAM.bss
Server.cpp.obj                           19540
color-control-server.cpp.obj    1632
libCHIPDataModel.Interac        10752
level-control.cpp.obj                 640
attribute-storage.cpp.obj         6
on-off-server.cpp.obj               468
...
(2) CHIP commit 8e3d98c03904c14baeac495113eb58721797e838 (current version)
Object File                                 DRAM.bss
Server.cpp.obj                           19276
color-control-server.cpp.obj    13188
libCHIPDataModel.Interac        10752
level-control.cpp.obj                 5252
attribute-storage.cpp.obj         4614
on-off-server.cpp.obj               2716
...
I found that usage of static DRAM by CHIP related objects is enormously increased.
ex) on-off-server object .bss usage increased by about 5.8 times
I did not dig CHIP source code yet...
Is there any way to decrease .bss usage of CHIP code just modifying sdkconfig or whatelse? (or should I wait for next commit?)
Environment

ESP-Matter Commit Id: 30e5b4b91c9134abd056d05559660b252160802e
ESP-IDF Commit Id: 6b1f40b9bfb91ec82fab4a60e5bfb4ca0c9b062f
SoC (eg: ESP32 or ESP32-C3): ESP32
Device Logs (Please attach the log file):
Host Machine OS: Ubuntu 22.04.3 LTS
Commissioner app and versions if present:
Commissioner's logs if present:

Any additional details
...

I have this issue too. Both: IDF v5.1.1 + ESP-Matter (30e5b4b91c9134abd056d05559660b252160802e) and docker image espressif/esp-matter:latest_idf_v5.1.1 (844f6bc7eea90a97f25923eeb44bc9e640ebe9733ce458a580b2fe96f7e85d87)

@YOGYUI @elektro-NIK Can you please share the application that you are trying, and its sdkconfig. I tried the examples/light from the SDK and below was for DRAM increase.
Older -> esp-matter: 5cd35a5 (connectedhomeip: 181b0cb14f)
Latest -> esp-matter: 397b967 (connectedhomeip : 8e3d98c039)
// esp32c3
libCHIP -> 128 bytes
libesp_matter -> 1132 bytes

// esp32
libCHIP -> 128 bytes
libesp_matter -> 592 bytes

I tried to reproduce it on the clean environment, and it's visible on the bridge with multiple endpoints:

examples/zigbee_bridge
changed CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT to 32
esp32

Older (https://github.com/espressif/esp-matter/commit/72b0f263)
Newer (https://github.com/espressif/esp-matter/commit/30e5b4b91c9134abd056d05559660b252160802e)

libCHIP.a
22863
22998

libesp_matter.a
29035
30823

DRAM used
97.8%
99.4%

Not so big numbers, like @YOGYUI, but my main project has up to 120 dynamic endpoints and it produces much bigger delta.

@elektro-NIK DRAM size would indeed depends on CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT, please check implementation of color-control-cluster and level-control-cluster in connectedhomeip repo and the struct size is > 20 bytes, so every dynamic cluster will add up to the DRAM increase.
@YOGYUI do you seeing the same problem?

@shubhamdp
Sorry for the late response.
Please understand that I'am not possible to open my source code because of the company's policy.
Snippet of my sdkconfig is like below. (I'm developing bridge board for many other non-matter devices)
CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=128

I just wonder why .bss usage was significantly increased just after updaing sdk(CHIP) with same source code...

@YOGYUI This 5X change that you mentioned in you original comment is not due to the change of submodule, but due to the change in value of config CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT.
With 16, below are the items in .bss for on-off-server.ccp.obj, probably the same increase for other object files.
 .bss._ZL14gEventControls                0x80
 .bss._ZN11OnOffServer8instanceE          0x8
 .bss._ZL11firstEffect                    0x4
 .bss._ZL18sOnOffSceneHandler           0x150

For 128,
 .bss._ZL14gEventControls               0x400
 .bss._ZN11OnOffServer8instanceE          0x8
 .bss._ZL11firstEffect                    0x4
 .bss._ZL18sOnOffSceneHandler           0x690

At this point I would suggest you use the somewhat lower value for the dynamic endpoint count. Or there's the Minimizing RAM Usage guide, check if you can reduce some dram/iram by setting some configurations from here.

@shubhamdp
After modifying CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT as 100, problem had solved.
I'll close this issue.
But, I still wonder the reason why .bss usage had increased.
I used "same source code and same sdkconfig" and only difference was CHIP commit.

But, still thanks anyway~

@YOGYUI newer code will add new things and there will be minor increases in the .bss or .text. If you see, DRAM was overflowed by 3088 bytes, that what would be added by connectedhomeip upgrade.
I agree that this needs to be tackled and will certainly try to optimize the static as well as dynamic memory usage.


Instrument view_component gem

We're considering switching to this library for performance reasons. It
is well maintained and has built-in instrumentation support using
ActiveSupport, so this was easy.
Tested locally in our main app.

Would you like to add some specs?

I was wondering about the event name with the ! for a second but it's correct.

Ha, that caught me, too. No idea whether there is some convention behind it (e.g. third-party stuff vs. Rails core?).

Would you like to add some specs?

What scenario would you like to see tested? There wasn't a dummy Rails app in the tests here yet, so I decided against it. 😕 I did examine the output very carefully, locally.

@jgraichen Please let me know what you'd like to see tested.

Something similar to spec/mnemosyne/probes/active_job/perform_spec.rb or spec/mnemosyne/probes/active_record/query_spec.rb, a minimal rendering of a component to trigger the event.
Actually, if you say that isn't worth the effort, I am fine with not testing it here.


Global vs local operator

My understanding is that global and local scoped operators can co exists and the global operator won't try to handle any camel-k resource that is created in a namespace where a Lease resource (created by the local operator) exists.
This should be ok for most of the case but assuming a local operator is installed but not started, then the Lease is not created and the global operator may start taking ownership of namespace local resources.
To avoid such problem, would it be possible to also support namespace labels ? (something similar to what knative does)

/cc @astefanutti @nicolaferraro

Is the Lease resource created in the namespace where the local operator is running? In case, it would not work for operators that manage camel-k resources in a separate namespace.


[hash] is not stable

I've run into an issue with the usage of [hash]. It's not stable, i.e. it does not produce consistent results. Multiple builds -> different hashes. This breaks long term caching.
I'm also running into a problem where client and server compilation passes are running in different processes and produce different hashes for the exact same code.
The results in the SSR pass emitting incorrect asset paths that then break client hydration (React).
I'm going to suggest a fix for this.

A very simple way to fix this is just to make sure that the files are fed into the processing in a stable sort order. Like this:
[SvgSprite.js:91]
        const iconsSorted = Object.keys(icons)
        iconsSorted.sort()
        for (let i = 0; i < iconsSorted.length; i++) {
            let iconPath = iconsSorted[i]
            ...

@leidegre good find! I was having the same problem but didn't know what could be causing it. I will create an MR for this.

@leidegre can you let me know if #35 fix the issue for you?

@bensampaio as soon as I have a moment to test this, I will. But it should work.


tests: Proto -> JSON conversion for roxctl export (except nodes)

Description

The PR is part of a PR split stack.
See #11772 description for more information
PR stack:

#11772

#11900

#11901

#11902

#11903

#11904

#11905

User-facing documentation
(must be 2 items and both must be checked)

[x] CHANGELOG update is not needed
[x] Documentation is not needed

Testing

[x] inspected CI results

Automated testing
(must be at least 1 item and all items must be checked)

[x] added unit tests
[x] modified existing tests

How I validated my change

Manual run of go test -v in each directory where a test was either created or modified

/test ocp-4-12-nongroovy-e2e-tests

/test gke-scanner-v4-tests

/retest


Julia withPackages fails with packages outside of registry

Describe the bug
When calling julia.withPackages with packages outside of augmentedRegistry, the derivation fails to build. Even though the package is fetched from GitHub.
Steps To Reproduce
Steps to reproduce the behavior:

Create default.nix

{ pkgs ? import <nixpkgs> { } }:

(pkgs.julia.withPackages.override {
  packageOverrides = {
    "CellFishing" = pkgs.fetchFromGitHub {
      owner = "bicycle1885";
      repo = "CellFishing.jl";
      rev = "fd9e437631ec9c6f924c69f9cee15ee58d284206";
      sha256 = "sha256-NniPwrQwp0QqFjWtMhbF0SkLc9n4HKEntcgpINqV5RU=";
    };
  };
}) [ "CellFishing" ]

Build the derivation

nix-build -I nixpkgs=flake:github:NixOS/nixpkgs/nixos-unstable default.nix

Notice failure

Expected behavior
The derivation should build successfully. Since we have all the information we need. Because Julia supports adding packages with Pkg.add(url="https://github.com/bicycle1885/CellFishing.jl.git"), it is expected that this would work too.
Additional context
Error logs
Resolving Julia packages with the following inputs
Julia: /nix/store/948q7s8iyrdccpqvi6z785njabcjd204-julia-1.9.4
Registry: /nix/store/gxv9wz6knd4a651ydnn98bilk76anl1d-source
     Copying registry from `/nix/store/gxv9wz6knd4a651ydnn98bilk76anl1d-source`
      Copied registry `General` to `~/.julia/registries/General`
Resolving packages: CellFishing
Package overrides:
Dict("CellFishing" => "/nix/store/20biy8rmni7n8lppxs13nd2dqq7x32qq-CellFishing-repoified")
ERROR: The following package names could not be resolved:
 * CellFishing (not found in project, manifest or registry)
Stacktrace:
 [1] pkgerror(msg::String)
   @ Pkg.Types /nix/store/948q7s8iyrdccpqvi6z785njabcjd204-julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Types.jl:69
 [2] ensure_resolved(ctx::Context, manifest::Pkg.Types.Manifest, pkgs::Vector{PackageSpec}; registry::Bool)
   @ Pkg.Types /nix/store/948q7s8iyrdccpqvi6z785njabcjd204-julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Types.jl:1003
 [3] top-level scope
   @ none:39

After looking through the source code, the issue seems to be when calling ensureResolved. The reason for failure is that the UUID for the package is missing. For other dependencies, which exist in the registry, UUIDs are set correctly by the project_deps_resolve function.
Could be solved by adding the necessary information from the packageOverride derivation to the registry if it doesn't exist in the General registry? What do you think?
Notify maintainers
@thomasjm - worked on getting Julia environments to work in Nix

Add a :+1: reaction to issues you find important.

Could be solved by adding the necessary information from the packageOverride derivation to the registry if it doesn't exist in the General registry?

Hmm, that is likely what we'll have to do, because otherwise Julia would have to make network calls to get the dependency information for CellFishing.jl. This might add some additional IFD to the process.
This definitely makes sense as an enhancement issue. It'll take me a little while to get to it, but if you want it soon I can help point you towards implementing it.

I am more than happy to implement it, but it would be nice to know how it should be implemented so that there isn't any unnecessary work done.

I thought about this a little more and I'm currently thinking it may not be necessary to augment the registry.
I think the thing to do is to trace through the Pkg.jl source (at the version tags corresponding to the Julia release(s) of interest!) and see what it does when you try to add a git repo package.
It may be that we need to detect when a certain package is not available in the registry, and use that alternate Pkg.jl code path. You can see that we had to duplicate some Pkg.jl code here, I'm thinking this is where we'll need to add some additional logic.
I haven't had time to get into this yet, but if you want to dig in I'd be happy to assist.

To add on, I think it would be quite helpful if you could use a relative path too. To extend the original example, it would be great if the following would work:
{ pkgs ? import <nixpkgs> { } }:

(pkgs.julia.withPackages.override {
  packageOverrides = {
    "CellFishing" = ./CellFishing;
  };
}) [ "CellFishing" ]

A relative path would be treated the same by Nix (if you use --impure as needed), so that shouldn't require any extra work.


Texture2D1 in UWP

I am creating template UWP project to windows. I an porting default C++ template to C# to create xbox (and other) C# UWP projects. Some issues left. So I create Texture2DDescription1 and next is Texture2D1. There is only one constructor with native pointer. Question is how to create Texture2D1.
C++ code
CD3D11_TEXTURE2D_DESC1 depthStencilDesc(DXGI_FORMAT_D24_UNORM_S8_UINT, lround(m_d3dRenderTargetSize.Width), lround(m_d3dRenderTargetSize.Height), 1, 1, D3D11_BIND_DEPTH_STENCIL);
ComPtr<ID3D11Texture2D1> depthStencil;
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D1(&depthStencilDesc, nullptr, &depthStencil));

C# code
Texture2DDescription1 depthStencilDesc = new Texture2DDescription1();
depthStencilDesc.Format = Format.D24_UNorm_S8_UInt;
depthStencilDesc.Width = (int)_d3dRenderTargetSize.Width;
depthStencilDesc.Height = (int)_d3dRenderTargetSize.Height;
depthStencilDesc.ArraySize = 0;
depthStencilDesc.MipLevels = 1;
depthStencilDesc.BindFlags = BindFlags.DepthStencil;
//THIS DOES NOT WORK
SharpDX.Direct3D11.Texture2D1 depthStencil = new Texture2D1(_d3dDevice.NativePointer);
How to create Texture2D1 with Texture2DDescription1 ?

You should use the constructor public Texture2D1(Device3 device, Texture2DDescription1 description)

Here's my depth stencil code ..
            depthStencilTexture = new Texture2D(Dx11Graphics.Device3d, new Texture2DDescription()             {                 Format = Format.D16_UNorm,                 ArraySize = 1,                 MipLevels = 1,                 Width = width,                 Height = height,                 SampleDescription = new SampleDescription(1, 0),                 Usage = ResourceUsage.Default,                 BindFlags = BindFlags.DepthStencil,                 CpuAccessFlags = CpuAccessFlags.None,                 OptionFlags = ResourceOptionFlags.None             });             {                 depthStencilView = new DepthStencilView(Dx11Graphics.Device3d, depthStencilTexture);             }
.. xoofx just answered. But I would add that I almost never use NativePointers for day to day SharpDX code. Always go for the 'managed style' option, SharpDX is 100% (or near to) written for typical C# code style.

Thanks
I must try this. Hope that do what I want.
depthStencilView = new DepthStencilView(Dx11Graphics.Device3d, depthStencilTexture);
This does not exist in latest UWP
public Texture2D1(Device3 device, Texture2DDescription1 description)
It exist in Texture2D but not in  Texture2D1. That is why I ask :) Only one constructor and only one parameter.

Latest UWP nuget paket v3.1.1. Picture of error in VS2015.
https://onedrive.live.com/?cid=FD8073F3502D075D&id=FD8073F3502D075D!154810&parId=FD8073F3502D075D!154811&o=OneUp

ah yes, it was maybe added after. You can grab dll directly from [latest rtifacts

I have other same kind of problems. Look pictures. SharpDX.Direct2D1.Factory3 and SharpDX.DirectWrite.Factory3 has only one constuctor with nativepointer.
One of the nuget was old, when I update that it resolve first problem :), but not those.
https://onedrive.live.com/?cid=FD8073F3502D075D&id=FD8073F3502D075D!155008&parId=FD8073F3502D075D!155006&o=OneUp
https://onedrive.live.com/?cid=FD8073F3502D075D&id=FD8073F3502D075D!155007&parId=FD8073F3502D075D!155006&o=OneUp

I take latest artifacts, still those two has only one constructor with nativepointer parameter.


Linux Support

Do you have any plans to add Linux support for this plugin?

I'm not actively working on this project due to the COVID situation (I can't use the SDI/DeckLink hardware in the office as it's closed). Please don't expect any addition for a while (1 - 2 years? I have no idea about it.)

I'm closing this issue now. Please feel free to reopen it for further problems.


Update jupyter openmp offload readme

Existing Sample Changes
Description
Restructured to match part of new template. Updated branding. Fixed some formatting issues. Added information on connecting to DevCloud and running these notebooks.
Fixes Issue#
External Dependencies
N/A
Type of change
Please delete options that are not relevant. Add a 'X' to the one that is applicable.

[X] Documentation

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[x] DevCloud

@ishaghosh27 please review.
@jimmytwei added for notices.


[BUG] Error when creating option name with uppercase letters unclear

Describe the bug
When you create a chat_input command with uppercase letters, it only raises a 50035. It should tell the user that they used uppercase letters.
Reproducing steps
These are the steps I took in order to produce this bug, which should be able to be reproduced for everyone else as well.

Import the module in Python.
Create a client variable for the library.
Create a chat-input command with an option that has a title with uppercase letters

What's normally expected
When I create a slash command with an option , It should tell the user that they used uppercase letters.
What actually happened
Instead, I received a 50035
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/interactions/api/http.py", line 282, in request
    raise HTTPException(data["code"], message=data["message"])
interactions.api.error.HTTPException: Invalid Form Body Error code: 50035

Versions

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

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

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

making a pr as we ||dont|| speak

Closing in favor of #518 .


Lab 10 feedback

@francojc

a. Inferential data analysis tests data only once because it is based on testing research questions so the majority of the time is focused on having assumptions or research hypotheses.
b. IDA involves 4 steps: identify response and explanatory variables, inspect variables, interrogate statistical procedure, and interpret data.
c. Null hypothesis claims that there is nothing happens.
d. p-value is a metric for determining whether the results are statistically significant or not.
e. confidence interval is a range where true values probably fall into.
f. bootstrap distribution resampling the data with replacement.
I think is deciding the model, even though in class, we talked about choosing the model variable types, and the number of variables, I am still not sure which type of model should I try first.
During the transform data process, I found the translation document in ENNTT is too big even though I added cache: true. In addition, I forgot to add data/original/* in .gitignore the first time it made me hard to push to GitHub (https://stackoverflow.com/questions/51764180/file-too-large-added-to-git-ignore-but-still-trying-to-add) even though I tried to download git lf (https://stackoverflow.com/questions/48734119/git-lfs-is-not-a-git-command-unclear). For the model choice, I based it on the same model used in the textbook (https://qtalr.github.io/qtalrkit/articles/recipe-10.html). Because the translation file is too big to read_html, so I could not visualize the data. Although there is a function we could use, it still does not work because it takes too much time to run, so my Rstudio just terminates automatically.
I am curious about this ENNTT, we face imbalanced data. In Lab 09, it suggests step_downsample(). However, it seems step_downsample() will remove rows of data which may influence accuracy. So I searched for information about when should use step_downsample() (https://medium.com/@rithpansanga/choosing-the-right-size-a-look-at-the-differences-between-upsampling-and-downsampling-methods-daae83915c19). It seems for large dataset, downsampling is preferred. The link I provided talks about downsampling and upsampling's pros and cons and the when to use them.

Very detailed response. Thank you!
On #2: Consider the tables in Chapter 10 to help you decide on which statistic to calculate for the statistical design of your hypothesis. Once you know that, the rest of the workflow is very similar for (almost) all the other tests.
On #3: Yes, the ENNTT is very large. It will take a lot of computer processing resources. And yes, if you accidentally (try to) push the data to  GitHub you will get an error --GitHub is not made to store large files. There is a way around it, but in this case it is just best to add the data/datasets to the .gitignore file.
On #4: Down sampling is not without it's potential issues, but the down sampling reduces the dataset size while attempting to maintain a similar variation pattern as the full dataset.


How to turn off caching before upload (copying temporary file before sending to drive?)

Hi. When I try to upload a file, first it gets copied to ~/.gdfuse/default/cache then the upload starts. Is there any way to skip it and start uploading immediately? Thanks.
My question comes from here: http://forums.debian.net/viewtopic.php?f=10&t=129095&p=620132#p620132 , my last post describes everything.

Unfortunately it's not possible, because you need a whole file to begin uploading to Google Drive (via the API). You cannot upload just some bytes of the file, so you have to wait for the file to be completely copied to the local cache. You can check if other tools (e.g. https://github.com/odeke-em/drive), that don't use a FUSE backend, suit better your needs.

Thanks. Will it work on debian 8?

I think so, if you can install the Go runtime, it should work.


iOS wifi scan work around

Hello,
I understand that for iOS we cant have wifi scan function from API. then is it possible that frpm plugin we have start scan to open system wifi scan screen and return back the selected name to our application?
Meaning could plugin provide some way for wifi scan?
Regards,
Shraddha

Good question, I have same question too, if Apple rejects app is there any way to Scan Wifis and getting list of them?


Use adminlevel name instead of admincode for groupby COUNTRY=mozambique

…population analysis
This PR closes #631.

How to test

Run an exposed population analysis for mozambique (date: 2022-01-25)
Click on Table view

@JorgeMartinezG thanks for looking into this! A few things to think about imho:
I think we could keep the group by as is, but fetch the admin boundary names some other way. Ideally it would work similarly to the raster analysis table that shows coma-separated admin levels. And that gets translated when we change the language.
Finally, it should also work for flood exposure analysis

@ericboucher I agree with you. However, I believe this PR fixes an urgent issue. Maybe creating an issue and addressing it separately would be another option. cc @wadhwamatic

Ok, then can you make the change for flood exposure analysis as well and open an issue for the rest? Thanks :)

@ericboucher I agree with you. However, I believe this PR fixes an urgent issue. Maybe creating an issue and addressing it separately would be another option. cc @wadhwamatic

A timely fix is important, but let's make sure we're covering flood and storm exposure. I'm also not sure how we can use the title for the admin column header. I.e., the header should say 'District' or 'Admin name' instead of 'adm2_name'.
Agreed with @ericboucher - please create an issue to capture a more complete fix that is inline with how the run analysis table result works.

closing in favor of #665


Custom attributes/properties to be passed for Slack Oauth

Description
I am adding the embed html "Add to Slack" in my admin panel which has some context like "tenant" etc to which the slack app has to be linked.
Is there a way this attribute can be passed to the ouath process and be passed to the storeInstallation method on success?
What type of issue is this? (place an x in one of the [ ])

[ ] bug
[ ] enhancement (feature request)
[x] question
[ ] documentation related
[ ] example code related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.

Good morning @udaya-reddy 👋🏻
My understanding is that you'd like to pass some data to the user's installation to add context. For example, passing the Tenant ID to the app installation.
One approach is to use metadata under the "Customizing OAuth Defaults" to pass information such as the tenant ID through the state during OAuth. You can then use the afterInstallation callback option to read the state's metadata and update your database.

I see the metadata in here..
Q. This is hardcoded once for the entire app. what I was looking for is based on the page where "Add to Slack" button is displayed and user logged in ( UserTenantId ) dynamically pass this to the installation callback after successfull installation.
2. Also we use Orgwide install and therefore stateVerification is set to false.
installerOptions: {
      authVersion: 'v1', // default  is 'v2', 'v1' is used for classic slack apps
      metadata: 'some session data',
      installPath: '/slack/installApp',
      redirectUriPath: '/slack/redirect',
      userScopes: ['chat:write'],
      callbackOptions: {
        success: (installation, installOptions, req, res) => {
          // Do custom success logic here
          res.send('successful!');
        },
        failure: (error, installOptions , req, res) => {
          // Do custom failure logic here
          res.send('failure');
        }
      },

@udaya-reddy For your use case, please consider using browser cookies instead. This means that your app can set cookies when a user visits /slack/install endpoint and the app can use the cookie data when the OAuth callback. You can use beforeRedirection callback for it: https://slack.dev/node-slack-sdk/reference/oauth#installpathoptions

Is there a sample code for this? unable to check where to have the cookie writing code and how this cookie values will be read and passed to installation storeInstallation callback...
The documentation only says as below....
Tried to check the code in @slack/bolk or @slack/ouath ... nothing writter about beforeRedirection
beforeRedirection
(request: IncomingMessage, response: ServerResopnse, options: InstallURLOptions) => Promise
When this method returns false, the InstallProvider skips state OAuth parameter generation, setting the state in HTTP cookies, generating an install URL and redirecting to the slack.com authorization URL. Common use cases for returning false include when the visiting user is not eligible to proceed with the Slack application installation flow. When returning false, this method is responsible for calling response#end() to build a complete HTTP response for the end-user.

@udaya-reddy Here is a sample code ... but unfortunately it does not work at this moment. I found a bug on the underlying oauth package side.
const { App, FileInstallationStore, LogLevel } = require("@slack/bolt");

const app = new App({
  logLevel: LogLevel.DEBUG,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  clientId: process.env.SLACK_CLIENT_ID,
  clientSecret: process.env.SLACK_CLIENT_SECRET,
  stateSecret: 'my-state-secret',
  scopes: ['commands', 'chat:write'],
  installationStore: new FileInstallationStore({}),
  installerOptions: {
    installPathOptions: {
      beforeRedirection: async (req, res, options) => {
        const tenantId = '1111';
        res.setHeader('Set-Cookie', [`tenantId=${tenantId}; Secure; HttpOnly; Path=/; Max-Age=600`]);
        return true; // continuing
      },
    },
    callbackOptions: {
      afterInstallation: async (installation, options, req, res) => {
        // Attach an additional value to the installation object
        // After this function execution, InstallationStore#storeInstallation() will be performed with the modified installation
        installation.tenantId = extractCookieValue(req, 'tenantId');
        console.log(installation);
        return true; // continuing
      }
    },
  }
});

function extractCookieValue(req, name) {
  const allCookies = req.headers.cookie;
  if (allCookies) {
    const found = allCookies.split(';').find((c) => c.trim().startsWith(`${name}=`));
    if (found) {
      return found.split('=')[1].trim();
    }
  }
  return undefined;
}

(async () => {
  await app.start(process.env.PORT || 3000);
  console.log("⚡ Bolt app is running!");
})();

I just sent a pull request that resolves the oauth package bug: https://github.com/slackapi/node-slack-sdk/pull/1485
The hotfix version will be released early next week. Once<EMAIL_ADDRESS>is released, my above example will work for you.

@seratch Could give an update when the issue is resolved?

The above issue with @slack/oauth is resolved in the new version - 2.5.2: https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack%2Foauth%402.5.2
Let me close this issue now but please feel free to write in if any!

Thank you. I am trying to use the "Add to Slack" embed button from a admin page where /slack/install url is not called but the slack link is used where it calls the slack.com/oauth/authorize url directly..
in such a case a cookie is not being picked up
Here also I am setting the cooking in the browser javascript code of the page. not the slack/install url though.
I also tried to add &metadata= to the http link but when it navigates to slack.com this is being lost...
Is there a way to pass this tenantId from browser to the oauth flow?

Hey, @seratch I'm following your code example but the updated installation w/ the cookie data is not printing to my console (btw I'm using Heroku).
I have set logLevel: LogLevel.DEBUG

Oh, I just realized it was logging to the remote Heroku console, not my local Nodemon console. Is there a way to set this?

@seratch Any tips on how to implement a similar flow using the slack_bolt library for python3?
afterInstallation does not appear to be exposed via the OAuthSettings
https://slack.dev/bolt-python/concepts#authenticating-oauth


Logs explorer - timestamp

Hello
I'm collecting logs in signoz k8s. Everything works, logs are collected, parsed, etc without issues. I have a question - is it possible to change how SigNoz displays the timestamp on each log entry in the logs explorer view?
Currently I have something like this:
(from Logs Explorer > Default view):

or text (not sure if the image uploaded):
log:
timestamp: 2023-11-20T14:38:18+01:00
Is there a way to delete the "+01:00" from the logs explorer view? (I assume it's the timezone)
Thanks

@sati-max Yeah, should be possible by using Logs Pipeline. You can use processors on top of logs to change data formats.
https://signoz.io/docs/logs-pipelines/introduction/
You would need to use a recent version of SigNoz for this

@pranay01  thank you. Will look into it.


Integration test failure: Recursive Watcher (parcel) basics

This test flaked 6 times in the past month.

Error: Unexpected file event: unexpected-event-from-stat
    at file:///Users/runner/work/1/s/out-build/vs/platform/files/test/node/recursiveWatcher.integrationTest.js:83:40
    at Emitter.fire (file:///Users/runner/work/1/s/out-build/vs/base/common/event.js:435:38)
    at TestParcelWatcherService.emitEvents (file:///Users/runner/work/1/s/out-build/vs/platform/files/node/watcher/parcel/parcelWatcherService.js:277:35)
    at TestParcelWatcherService.onParcelEvents (file:///Users/runner/work/1/s/out-build/vs/platform/files/node/watcher/parcel/parcelWatcherService.js:251:18)
    at parcelWatcher.subscribe.backend (file:///Users/runner/work/1/s/out-build/vs/platform/files/node/watcher/parcel/parcelWatcherService.js:229:22)

Example failing build: https://monacotools.visualstudio.com/Monaco/_build/results?buildId=142406&view=results
I notice we also have it already wrapped in flakySuite a month ago but they remain flaky:
https://github.com/microsoft/vscode/blob/3a81c25c7abd5b1ebf76fb10e8b3b7a27aef9000/src/vs/platform/files/test/node/recursiveWatcher.integrationTest.ts#L18
I looked through the 6 failing builds and noticed this fails on macOS so you might be able to remove flakySuite for other platforms and action only for macOS.

Disabled these asserts on macOS, the main interest is actually to ensure we get no event from Windows when statting because there exists ReadDirectoryChangesW flags that would fire even on read access.


Events imported from Meetup have bad future dates

@sethetter The importer scheduled a few (10 or so) events with ending dates in the year 4000.
I'm not sure if it's a consistent issue or not, but it's work a check

@kentonh have you corrected the dates? If so, can you point me to which ones (at least one) that had a crazy future date like that?

Looking at lib/tasks/pull_events_from_meetup.rb in the get_ends_at method, I can't see how the dates would come out wrong unless something incorrect was sent from meetup.
Their API states that the time and duration fields are in milliseconds, and the ruby Time module works in seconds. We're dividing by 1000 like we should be.
Anyways, maybe there will be more of a clue if I can see which events had the issue. Let me know!


tsserver.js CPU/Memory Spike

🔎 Search Terms
tsserver.js electron-nodejs memory cpu
🕗 Version & Regression Information
This performance issue began some time ago. Bisecting isn't an option due to automated swagger -> Zod processing.
I am looking for smoking guns (file-wise) so the investigation can be accelerated (please see attached verbose tsserver logs)
⏯ Playground Link
No response
💻 Code
Performance related; not code
🙁 Actual behavior
Performance related; not code
🙂 Expected behavior
Performance related; not code
Additional information about the issue
Attached is a verbose tsserver trace log.
Note that the behaviour is triggered when TS intellisense is triggered - i.e. a type lookup is made / auto import attempted etc.
I see huge spike in memory and cpu. It returns after about 45 seconds
tsserver.log.zip

Bisecting isn't an option due to automated swagger -> Zod processing.

Not even using every-ts?

We make heavy use of Zod and autogenerate these types from upstream Swagger definitions. I strongly suspect this slowdown is related to, ultimately, simply having just too many types. Here's an example of issues we've been having at the same time as this general TS slowdown
So, long story short, I'd really like some insight into the attached tsserver logs or some tips on how to interpret it ourselves. A tip or two on mitigating the slowdowns would be super useful too!

For best performance, it's always best to turn off semantic highlight. IMO the gain in colorization is not worth the perf hit in large contexts. That said, something weird happened here:
Info 1160 [21:56:02.703] request:
    {
      "seq": 10,
      "type": "request",
      "command": "encodedSemanticClassifications-full",
      "arguments": {
        "file": "/Users/penric000/dev/autotrack-fe/apps/web/app/[locale]/a/[slug]/page.tsx",
        "start": 5884,
        "length": 6698,
        "format": "2020"
      }
    }
Perf 1161 [21:56:04.858] 10::encodedSemanticClassifications-full: elapsed time (in milliseconds) 2154.9555

There's apparently some type in that span which is very, very expensive to compute. That approximate range shows up a few times in the log.
It's possibly also referenced right here:
Info 1167 [21:56:04.861] request:
    {
      "seq": 13,
      "type": "request",
      "command": "documentHighlights",
      "arguments": {
        "file": "/Users/penric000/dev/autotrack-fe/apps/web/app/[locale]/a/[slug]/page.tsx",
        "line": 288,
        "offset": 67,
        "filesToSearch": [
          "/Users/penric000/dev/autotrack-fe/apps/web/app/[locale]/a/[slug]/page.tsx"
        ]
      }
    }
Perf 1168 [21:56:09.939] 13::documentHighlights: elapsed time (in milliseconds) 5078.6349


Issue with nuget restore (Unable to load the service index for source ...Reunion.nuget.internal/nuget/v3/index.json)

I am receiving these errors when I try to build anything, and  I don't know how to fix it.
23:11:04 C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-unpackaged  main ≡  ?1
6ms  dotnet build
  Determining projects to restore...
C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-unpackaged\winforms_unpackaged_app.csproj : error NU
1301: Unable to load the service index for source https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Pro
ject.Reunion.nuget.internal/nuget/v3/index.json. [C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-un
packaged\winforms_unpackaged_app.sln]
  Failed to restore C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-unpackaged\winforms_unpackaged_a
  pp.csproj (in 8.27 sec).

Build FAILED.

C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-unpackaged\winforms_unpackaged_app.csproj : error NU
1301: Unable to load the service index for source https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Pro
ject.Reunion.nuget.internal/nuget/v3/index.json. [C:\dev\!tmp\WindowsAppSDK-Samples\Samples\Windowing\cs\cs-winforms-un
packaged\winforms_unpackaged_app.sln]
    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:08.63

Looks like someone left a reference to the internal Microsoft Nuget packages (not the public packages). As soon as I opened one of the solutions, it popped a credential dialog to log in to Project.Reunion.nuget.internal

Are these packages available from another source? How would I go about changing it?

Is there a workaround?  Is there a known-good commit?  This is a terrible first experience with the Windows App SDK.

I find getting started with development for win very confusing. are these the samples that are up to date? or am i looking at something that's been deprecated? and there are a million different entry points, win32, forms, wpf, uwp, app sdk, winui, maui, blazor, webview2 / react native for windows, windows-rs, oh and by the way here's CommunityToolkit and over here's 2000 different Microsoft.Extensions packages... oh ... ok? what's best practice and what's legacy?

The project can be easily run by removing this line in "WindowsAppSDK-Samples/Samples/nuget.config".
--<add key="ProjectReunion internal" value="https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json" />

The project can be easily run by removing this line in "WindowsAppSDK-Samples/Samples/nuget.config".
--<add key="ProjectReunion internal" value="https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json" />

Ok, so I removed the line, tried to build and received this:

Pressing YES took me a to a download page for Windows App SDK, which I downloaded and ran (which flashed a window open that I couldn't see wtf it said) so I ran it using pwsh:
04:15:33 ~\Downloads
7ms  & '.\windowsappruntimeinstall-x64 (1).exe'
INFO: Provisioning of WindowsAppSDK packages will be skipped as it requires elevation.
Installing license: MSIX_MAINPACKAGE_LICENSE
Install License result : 0x0
Installing license: MSIX_SINGLETONPACKAGE_LICENSE
Install License result : 0x0
All install operations successful.

Ahhok, Provisioning  of WindowsAppSDK packages will be skipped as it requires elevation. is that required? Should I rerun in an elevated shell?
I have no goddamn clue what it means, but I rerun it in an elevated shell...
Right, let's build that sample, everything's good to go, right? Ofc, same error 🥲 I mean sure, the dialog mentions v1.5, but don't link me to v1.6 then? So off I go and download 1.5.6 (1.5.240802000) and install... same error.
Aha, maybe install .NET6? Same error... Aha... maybe change target framework to .NET 8?

Ok, after googling, nuke  <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers> and replace with  <RuntimeIdentifiers>win-x64</RuntimeIdentifiers>.
Receive same Windows App SDK Runtime error... proceed to download and install every goddamn runtime I can find from v1.4 -> v1.6. Same error.
Notice an option to Upgrade, mkay

Ok thanks for upgrading to a version that's not supported?

I mean I understand that it's a skill issue but come one... does it have to be like this?

@marpe You just needed to uncomment the line above see https://github.com/microsoft/WindowsAppSDK-Samples/commit/b73d7ba99123dee0353d96276063c2b588baa236
https://github.com/microsoft/WindowsAppSDK-Samples/blob/9ffb70963ad091d496f9d9e6cc4fc537b360e4a9/Samples/nuget.config#L12-L16


fix: Fixed camera orientation issue in IOS

I implemented something similar in v2 of the vision camera, does this work fine for you? @tomerh2001

I implemented something similar in v2 of the vision camera, does this work fine for you? @tomerh2001

I checked the V2 branch, the code there still defaults to .up - without using the frame's orientation, what are you talking about?
If you're asking if my changes worked for me, then yeah

I patched locally, I gonna test your changes here :)

on android we have this https://github.com/mrousavy/react-native-vision-camera/pull/2807


Adding Firebase dependency explicitly

apply plugin: 'com.google.gms.google-services' selects the wrong version of firebase-core dependency.  In our app for example, play-services-auth is version 9.2.1 but the plugin uses 9.0.0 as a dependency.  This leads to clashes within dex.

thanks for the PR @eranbes
I have update the android readme to support google play services 9.2.1. you should not need to include an explicit dependencies to firebase


common input size expects 4 values

Description
from pycoral.adapters import common
size = common.input_size(interpreter)
implementation expects 4 values for the shape, while MLP can can have shape with just, for example, 1 x height x width of the picture.
This is the implementation that throws the error then: _, height, width, _ = input_details(interpreter, 'shape')
ValueError: not enough values to unpack (expected 4, got 3)
Why is that the case?
I use the latest version:

pycoral.version
'2.0.0'

Click to expand!
Issue Type
No response
Operating System
Windows 10, Debian (RPi 4)
Coral Device
USB Accelerator
Other Devices
No response
Programming Language
Python
Relevant Log Output
No response

Seems input_details(interpreter, 'shape') is returning only 3 values and your code expecting 4 values.
Please try _, height, width = input_details(interpreter, 'shape')


support multiple dockerfiles like dockerfile.original, dockerfile.debug

One thought is to make a new parent workflow that places a new workflow for each dockerfile

This is done and working!


method getData fails with version 2.03

I recently downloaded and changed my project references from version 1.5.3 to 2.03 and all of a sudden getData returns an empty array. After debugging I found line below in getData results in undefined and there appears to be no .length property to data[0] despite 9 items in the array. I reverted back to the previous version and it work fine again.
`
var x = $.fn.jexcel.defaults[id].data[0].length
// and my setup
$('#sheet1').jexcel({
data: jdata,
columns: [ { type: 'text'}, { type: 'number'},{ type: 'number' }, { type: 'number'},{ type: 'number'}, { type: 'number'},{ type: 'number'},{ type: 'number'},{ type: 'number'} ],
colWidths: [300, 120,120,120,120,120,120,120,120],
colHeaders: [
'AResource Types',
'BCarry Over',
'CCurrent Approved FY '+fy+' Funds (Not For FY'+(fy+1)+' Ramp Up)',
'DNew (Delta) FY '+fy+' Funds Request',
'ESpend Plan FY '+fy+' ',
'FNew Funds to be requested for FY '+ (fy+1),
'GSpend Plan FY '+(fy+1),
'HNew Funds to be requested for FY '+(fy+2),
'INew Funds to be requested for FY '+(fy+2)
]
});
`

So I updated the line 'var x = $.fn.jexcel.defaults[id].data[0].length' in getData() to
var x = $.fn.jexcel.defaults[id].columns.length and it seemed to work well as it appears that was the goal of the assignment.

Yes, I am going to follow your suggestion and deploy that later. This is supposed to get the some result, since the data[0] should has the some length of columns.


the serverless java demo keep running for few hour and we could not see through what happened  .it stop at step-build-and-push phase

the log was blew and the container was stopped at step-build-and-push  phase and the function is keeping building.
so what happened when its build the image after execute "RUN configure.sh" command that case the stop ?
And how can i debug or figure it

[2/2] STEP 1/4: FROM openfunction/open-liberty:kernel-java8-openj9-ubi
Resolving "openfunction/open-liberty" using unqualified-search registries (/tmp/registries.conf)
Trying to pull docker.io/openfunction/open-liberty:kernel-java8-openj9-ubi...
Getting image source signatures
Copying blob sha256:c4d668e229cd131e0a8e4f8218dca628d9cf9697572875e355fe4b247b6aa9f0
Copying blob sha256:8844ac3b835946bcdf4a585c0bf351eb06e81c04255f4c68ee17046c5ea80e77
Copying blob sha256:ab5c4f4bffe613c5579728db39365f91234dea15994e3bf862f121b51833b1f1
Copying blob sha256:5fb7bfe3044f0f8aa9c024dcb9d748f1ddec1435c73edc2ec6d905218a9a60fc
Copying blob sha256:371fe28dd9070a5bfca13a480d05625fc6ee27af4e39d6a2f2f696725b73a597
Copying blob sha256:ec1681b6a383e4ecedbeddd5abc596f3de835aed6db39a735f62395c8edbff30
Copying blob sha256:ab5c4f4bffe613c5579728db39365f91234dea15994e3bf862f121b51833b1f1
Copying blob sha256:c4d668e229cd131e0a8e4f8218dca628d9cf9697572875e355fe4b247b6aa9f0
Copying blob sha256:371fe28dd9070a5bfca13a480d05625fc6ee27af4e39d6a2f2f696725b73a597
Copying blob sha256:5fb7bfe3044f0f8aa9c024dcb9d748f1ddec1435c73edc2ec6d905218a9a60fc
Copying blob sha256:8844ac3b835946bcdf4a585c0bf351eb06e81c04255f4c68ee17046c5ea80e77
Copying blob sha256:ec1681b6a383e4ecedbeddd5abc596f3de835aed6db39a735f62395c8edbff30
Copying blob sha256:f44d037b7eb6aae85e05ff1e8bec85c2f3210e56cf464b54f7de010851c9381e
Copying blob sha256:f87b15f2bf732f786baaa3d7cb148929bbe3621fe422e5f9d3b2222bdde62906
Copying blob sha256:64dfa940764054495ac6182cbb00474de9ccaae675a70df7d0c2f7432b5ad7fe
Copying blob sha256:f44d037b7eb6aae85e05ff1e8bec85c2f3210e56cf464b54f7de010851c9381e
Copying blob sha256:f87b15f2bf732f786baaa3d7cb148929bbe3621fe422e5f9d3b2222bdde62906
Copying blob sha256:d8b93da6f83096caec833f990f70fcae9de58a164c773224d7abb69817b309fc
Copying blob sha256:5d5b852ec707cbdf56a714116131b9088b5cd5c9c52f40e69ac9b9b29e68d95b
Copying blob sha256:7205b542686cb2a8596c6cd714cdb1213c3dfee2fcd92ca755b922f10bdeb83e
Copying blob sha256:64dfa940764054495ac6182cbb00474de9ccaae675a70df7d0c2f7432b5ad7fe
Copying blob sha256:d8b93da6f83096caec833f990f70fcae9de58a164c773224d7abb69817b309fc
Copying blob sha256:d16ad2a56062d99e043fe0d2603762102f32b8f7a2edc2758e893ad7560b9cea
Copying blob sha256:7205b542686cb2a8596c6cd714cdb1213c3dfee2fcd92ca755b922f10bdeb83e
Copying blob sha256:5d5b852ec707cbdf56a714116131b9088b5cd5c9c52f40e69ac9b9b29e68d95b
Copying blob sha256:d16ad2a56062d99e043fe0d2603762102f32b8f7a2edc2758e893ad7560b9cea
Copying config sha256:d6ef646493e14b41bad91f427d261addbf22934d3d9414ae4dee4db98db3f9be
Writing manifest to image destination
Storing signatures
[2/2] STEP 2/4: COPY --chown=1001:0 src/main/liberty/config /config/
[2/2] STEP 3/4: COPY --chown=1001:0 --from=builder /app/target/*.war /config/apps/
[2/2] STEP 4/4: RUN configure.sh

Could you provide the function yaml @weiqiang-w ?

Could you provide the function yaml @weiqiang-w ?

the same as the demo
apiVersion: core.openfunction.io/v1beta1
kind: Function
metadata:
name: sample-java-app
spec:
version: "v1.0.0"
image: "openfunctiondev/sample-java-app:v1"
imageCredentials:
name: push-secret
#port: 8080 # default to 8080
build:
builder: openfunction/buildah:v1.23.1
srcRepo:
url: "https://github.com/OpenFunction/samples.git"
sourceSubPath: "apps/buildah/java"
revision: "main"
shipwright:
strategy:
name: buildah
kind: ClusterBuildStrategy
serving:
runtime: knative
template:
containers:
- name: function
imagePullPolicy: IfNotPresent

You should do this.

https://github.com/OpenFunction/samples/tree/main/apps/buildah/java#deployment
You should do this.

sure i did. i did these as the READ.md says.  of course  i change the private registry to docker hub.
you did not get the point .the point is
it stops at step 4 : RUN configure.sh
[2/2] STEP 2/4: COPY --chown=1001:0 src/main/liberty/config /config/
[2/2] STEP 3/4: COPY --chown=1001:0 --from=builder /app/target/*.war /config/apps/
[2/2] STEP 4/4: RUN configure.sh
what does configure.sh do that cause the process stop until time-out?

https://github.com/OpenFunction/samples/tree/main/apps/buildah/java#deployment
You should do this.

another question is "Should i install serverless first?"