Virtualised menu items

Elm-select will render all the items you give it and if it's thousands then things can lag. There is nothing unusual about this, its more so that the DOM can get slow with huge amounts of elements.
For the most part, folks wont really run in to this issue, especially when they are careful about the amount of items they are loading, but none the less I think it's worth thinking about performance and how elm-select might provide options for consumers when they do indeed want to render huge amounts of items.
Solutions

Consumers to be careful about the amount of data they are loading in to elm-select. Elm-select takes no responsibility or ownership. (lowest effort)
Provide a list virtualisation solution internally. This would mean elm-select handles the virtualisation entirely. (high effort).
Provide an example for consumers to handle virtualisation with some elm-select help (high effort).

Resources

VIDEO: react-virtualized
SOURCE: react-virtualized

Hi,
Have you tried to implement it yet? I realised we need this feature in our app (have pretty long lists at some pages). So now I'm trying to understand how to fix it and virtual scroll came to my mind.
If you are busy with more important tasks now, maybe you would give some advice how to add it to existing select code?(like fork it)

Hi there!

Have you tried to implement it yet?

I haven't yet as it was a problem that I didn't encounter and was waiting for the right time, now might be that time! :)

I realised we need this feature in our app (have pretty long lists at some pages). So now I'm trying to understand how to fix it and virtual scroll came to my mind.

Virtual lists definitely are a handy thing to have if you can't avoid incremental rendering of list items. Just to better understand your requirements and perhaps offer an alternative solution before going down the virtual scroll rabbit hole.
Do you have an indication of how long the lists are generally?
Would your UI be able to handle asynchronous list items?
For example, elm-select is really optimized to find list items via search rather than scroll especially when the lists are long.
Is it possible for your UI load menu items asynchronously on search? Elm-select has search triggers and an async mode to visually show that items are being loaded. If that is feasible I can provide an example of how you could hook that up if you need it.

If you are busy with more important tasks now, maybe you would give some advice how to add it to existing select code?(like fork it)

If you feel you 100% need a virtual list I am more than happy to start a decent investigation and work with you to get a good solution.
What do you think?

Thanks for your reply !(github didn't notify me for some reason)
So answering your questions:

Do you have an indication of how long the lists are generally?
Yes, it depends on a date range, if user loads data for 1 day - it might be 10-50 items, but if we load data for a week - it might be up to 800. which is influence performance and UX. (I'm not even talking about trying to upload month of data:D)

Would your UI be able to handle asynchronous list items?
If I understood you right, you mean loading new items from server while user scroll/search, correct? It is possible, definitely, but for now I'm not sure I can convince backend guys to implement this feature, because they have another job to do.
That is why I was thinking about front-end solution to this problem (of course, it won't be as good as with backend, but we need to start somewhere). And the most obvious enhancment I've thought of was virtual lists, just because DOM nodes takes a lot of memory
What do you think about it?

but if we load data for a week - it might be up to 800. which is influence performance and UX.

Got it! Yea 800 items would mean a slow DOM for sure.

If I understood you right, you mean loading new items from server while user scroll/search

Not while scroll, but when search. It would mean the same/similar backend work though so either way if your team doesn't have capacity to build it then you are equally stuck.

And the most obvious enhancement I've thought of was virtual lists, just because DOM nodes takes a lot of memory

Yea, there is a lot going on and making it feel snappy definitely needs virtual scroll when your rendering that many nodes, if you can't lazy load them via an API.
I started this work a few days ago in a virtual-scroll branch. I'm just building the windowing algorithm now so I'll let you know how it goes. I'm confident we will get a good solution :)
You will hear back from me by end of the week.

Howdy there @hiddenroadss !
I have it working!

The code is an absolute mess but I'm confident the approach works.
I'm going to clean it up and perhaps do some performance testing but looking very promising!
Hang in there!

Wow, that's fantastic! I'm looking forward to checking your code after a clean up. I'm curious how to implement such thing using elm
btw, how do you test performance of elm app? using e2e tests? (saw some in your test folder)
or do you use manual tests also?)

Wow, that's fantastic! I'm looking forward to checking your code after a clean up. I'm curious how to implement such thing using elm

My implementation is by no means generic, it's really tailored to elm-select which can be a bit of a beast to work with.

btw, how do you test performance of elm app? using e2e tests? (saw some in your test folder)
or do you use manual tests also?)

The e2e tests are mostly there to ensure nothing regresses and all the complex cases are covered.
I use dev tools a lot for performance testing and see how the browser is coping with the scripting and the rendering.
For virtual scroll the painting and rendering will look pretty good even with huge lists, but the scripting might take a hit. It's a tradeoff!
There are still performance gains on the table, but can iterate on it over time. For ultimate performance if it's required we can always use elm-select's jsOptimize flag. Means we can perform some heavy lifting outside of Elm's update cycle but its a "Only if absolutely necessary" kind of thing. Better to keep it all Elm.
I've found some gnarly bugs as a result of virtual scroll so going to get through them then check back in with you.

Ready for release.
Feel free to have a look at the PR. It's a bit  of a beast but the magic is happening in viewVirtual in Select.elm.
Get get a good sense of what is happening you can compare it to the normal view function.
Happy to explain any code that you want more info on also!

released in 11.0.0
Let me know how you go!

Great news, I will finish my current task, will try it out,  and will share the progress with you)

@Confidenceman02 , hello)

And only the Single variant is supported, not Multi or any of the others. For now!

All our heavy selects are multi-selects.

@Confidenceman02 , hello)

And only the Single variant is supported, not Multi or any of the others. For now!

All our heavy selects are multi-selects.

Hi there!
Ah I see!
I think Multi should just work so I will test it out this weekend and let you know how I go.

@Confidenceman02 , hello again)
It is not related to this issue (but I don't know where I can ask you something like this), I'm curious about your experience in handling big forms with elm and elm-select. I've seen example where you use record for each select (like {items, selectState, selectedItems}) and it fixes problem with messy Model, but on the other hand updating nested records is pretty hard in elm, so it add some boilerplate. It is ok to have 1 level of nesting, but if you want something like
type alias Model = {
addState : {inpSelect: {items, selectState, selectedItems}}
editState: {...inputs}
}

then it is already 2 levels of nesting and updating it seems really hard .
Long story short, what are your thoughts on this matter?

Howdy!
I think this is a better question for the Elm slack channel, or Elm discourse forum or the Elm discord server.
This is more of a Elm pattern question than elm-select question.
But, if you create a working example of exactly what you mean, i'll happily help you out.

Just did some testing and yep looks like Multi just works.
I'm going to add tests for it then will do a release.

released in 11.1.0

let me know how you go!

I've changed our selects, it was really easy. Now I'm waiting till we deploy it in prod and check if everything is fine (I don't have such huge mock data in dev env).
So I will come back with updates a bit later

I've just scrolled through 12k items select and it was smooth and lag-free experience :)

I've just scrolled through 12k items select and it was smooth and lag-free experience :)

WOW!
I only tested witth 2K. That is epic!
You happy for this issue to be closed?

Yes, thank you for your help!


Support for basic authentication to proxy servers

Fixes: https://github.com/getsentry/raven-java/issues/308
Adds the properties:
raven.http.proxy.user
raven.http.proxy.password

Thanks for this!


Can't click on right top corner dynamic menu

When page is scrolled to the top and you select any message, for some reason, another object overlays menu and you can't click on that - you need to scroll a bit lower (lower than Google logo) to be able to click.
This could be handled with CSS.

Reproduced in chrome browser. Fixed with:
.Dq { z-index: 1000; }


Cleanup milestone and possible roadmap update

Now that 2.1 is released, can milestone 2.1 be closed?
Also, could the team release an update on main focus for 2.2 and possibly 3.0 for this repo?  I really like the work that was put into this previous doc.
Thx

I closed the 2.1 corefxlab milestone.  Thanks for bringing this up.
The roadmap you linked continues to be valid - while Span, Memory, and Pipelines shipped internally in 2.0 and as public APIs in 2.1 (span design and prototyping actually began just days after .NET Core 1.0 shipped), the rest of https://github.com/dotnet/corefxlab/blob/master/docs/img/areas.png is still coming.
I'll update the roadmap doc to make it clearer that we're still progressing on this path and that we're investing in utf8 string, buffer management, and serialization next.

Sounds good.  Thx.  If possible, it would also be nice to see details on the Microservices thinking.  But this might be something @glennc is working on and might be detailed in one of the ASP repos.

Yes, the dotnet/corefxlab repo is largely for long lead prototypes that we anticipate could be promoted to dotnet/corefx features in a future release.  Things like Bedrock would be documented in the aspnet repos.
/cc @davidfowl


KeyError: u'classLabel' setting class_labels

Hi,
I follow tensorflow for poets sample. I want to create core ml with 2 outputs, classLabel and classLabelProbs. First step is to add in param my class label
import tfcoreml as tf_converter
tf_converter.convert(tf_model_path = 'tf_files/optimized_graph.pb',
mlmodel_path = 'tf_files/my_model.mlmodel',
output_feature_names = ['final_result:0'],
input_name_shape_dict = {'input:0':[1,224,224,3]},
image_input_names = ['input:0'],
red_bias = -1,
green_bias = -1,
blue_bias = -1,
image_scale = 2.0/255.0,
class_labels  = 'tf_files/retrained_labels.txt')
But add got this issue:
420/420: Converting op name: final_result ( type:  Softmax )
Traceback (most recent call last):
File "tfcoremlconverter.py", line 12, in
class_labels  = 'tf_files/retrained_labels.txt')
File "/host/Desktop/workspace/tf-coreml/tfcoreml/_tf_coreml_converter.py", line 478, in convert
predicted_probabilities_output=predicted_probabilities_output)
File "/host/Desktop/workspace/tf-coreml/tfcoreml/_tf_coreml_converter.py", line 354, in _convert_pb_to_mlmodel
optimize_nn_spec(builder=builder)
File "/host/Desktop/workspace/tf-coreml/tfcoreml/optimizations/_optimize_nn_spec.py", line 47, in optimize_nn_spec
_optimize_disconnected_components(builder)
File "/host/Desktop/workspace/tf-coreml/tfcoreml/optimizations/_optimize_nn_spec.py", line 37, in _optimize_disconnected_components
_optimize._remove_disconnected_components(builder)
File "/host/Desktop/workspace/tf-coreml/tfcoreml/optimizations/_optimize.py", line 355, in _remove_disconnected_components
start_ids.append(blob_src[out.name])
KeyError: u'classLabel'

for classifier model, the classLabel output do not belonging to graph. That's why the node is not founded

@lahayeg Thank you for reporting this issue! We've identified the cause of this error. This is a bug in the converter where replacing ":" with "__" fails to include labelProbabilityLayerName. We're working on an update.

See PR#86

Is there any updates on this thread?


worker is cached using worker-loader

Bug report

my loader config is:
       rules: [         {           test: /\.worker\.js$/,           use: [             {               loader: 'worker-loader'             }           ]         }       ]
and i don't know why worker file is always cached unless i rename the worker file or add some random number after the import, as "import A from './a.worker?123'"
Other relevant information:
webpack version:  4.28.4
Node.js version: 8.11.3
Operating System: macOS 10.12
Additional tools: vue-cli3

@webpack-bot move to webpack-contrib/worker-loader


Updating Github actions and files to use main branch. (#1023)

(Cherry picked from commit dc291c2345cdb9885d7b99dff835df08bc3b15fd)
opensearch-security pull request intake form
Please provide as much details as possible to get feedback/acceptance on your PR quickly

Category: (Enhancement, New feature, Bug fix, Test fix, Refactoring, Maintenance, Documentation)

Github Issue # or road-map entry, if available:

Description of changes:

Why these changes are required?

What is the old behavior before changes and new behavior after changes? (Please add any example/logs/screen-shot if available)

Testing done: (Please provide details of testing done: Unit testing, integration testing and manual testing)

TO-DOs, if any: (Please describe pending items and provide Github issues# for each of them)

Is it backport from main branch? (If yes, please add backport PR # and commits #)

By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #1375 (c4a3d4b) into opendistro-1.8 (abf382b) will increase coverage by 0.01%.
The diff coverage is n/a.

@@                 Coverage Diff                  @@
##             opendistro-1.8    #1375      +/-   ##
====================================================
+ Coverage             63.58%   63.60%   +0.01%
- Complexity             3079     3080       +1
====================================================
  Files                   236      236
  Lines                 16742    16742
  Branches               3015     3015
====================================================
+ Hits                  10645    10648       +3
+ Misses                 4546     4543       -3
  Partials               1551     1551

Impacted Files
Coverage Δ

...transport/OpenDistroSecuritySSLNettyTransport.java
69.14% <0.00%> (-4.26%)
:arrow_down:

...earch/security/ssl/util/SSLConnectionTestUtil.java
93.18% <0.00%> (-2.28%)
:arrow_down:

...earch/security/auditlog/impl/AbstractAuditLog.java
75.00% <0.00%> (+1.07%)
:arrow_up:

...transport/OpenDistroSecuritySSLRequestHandler.java
59.52% <0.00%> (+5.95%)
:arrow_up:

Continue to review full report at Codecov.

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


Support of RGB and Depth Camera Sensor for URP  ?

Hello i really like this package and the sensors it provides i was looking for something like this a long time.
Since URP will become the default render pipeline, will you find time to support in the future? ( even HDRP )
I think they only sensors that needs updating is the RGB and Depth Camera sensor to support all the pipelines, i am not very good with shaders otherwise i would help.
Thank you

@Autumn60 i can also confirm that with this change in the RGBCameraSensor.cs it works ( 1 instead of 0 in the RenderTexture line 27).
The VLP-16 lidar also works.
The Depth camera and pointcloud do not work since the Color2Depth shader is not updated.
Furthermore the depth image is compressed using jpeg format and i can decompress it like a normal image ( bgr8 encoding ) but the more correct way of doing that would be for the depth image to use 32FC1 format. Maybe this format is more difficult to compress/decompress though, and an option to publish the uncompressed depth image directly with the 32FC1 format should be added.
Using the 32FC1 format together with a camera info message ( generated by the robotics hub CameraInfoGenerator ), can be used to reconstruct the point cloud on the ros side ( with color or not ) as another option and for use cases where the depth image is only required ros expects this format

@Autumn60 @panagelak
Thank you for your discussion. I also trying to use this repository under URP environment.
As your discussion, I also make it work. To make it work, I needed to set up not only source codes but several settings.
Therefore, I am thinking should we create new repository such as "UnitySensorsURP".
I would like to ask your opinion.

I agree with @RyodoTanaka 's suggestion.  Separating repositories seems like a good idea.
However, it seems difficult to share updates about other sensors.
If Unity Technologies makes URP the standard, it might be a good idea to leave the current branches as an archive and change the UnitySensors project to support URP.

@Autumn60 @RyodoTanaka  it might be easier to make the scripts compile different based on selected RP using #ifdef like robotics hub does for ROS1 and ROS2? this way no need to update or track separate branches is needed? In my case i don't think i needed to make changes to the editor except to enable the urp asset?


AES generation unable to create file

Trying to run the example provided, the method generateAES() is not saving the correspondent WB-AES string to the designated file defined in Options.file. Used OS is Windows 10.

Please provide steps to reproduce.
Did you run tests with grunt?

No, did not use grunt.
Installed JCrypto and Uglify-JS 2.7.4.using npm. Created a JS file with a similar content to the example:
var jcrypto = require('jcrypto');

var key = '0123456789abcdef0123456789abcdef';

var options = {
    encoding: 'hex',
    wrapper: 'UMD',
    mangle: {
        names: true,
        properties: true
   },
   file: __dirname + '\\aes.js'
};

console.log('Options file: ' + options.file);

// btw you can call it without options argument, default options described below
var res = jcrypto.generateAes(key, options);

console.log('AES generated');
console.log(res);

//options.file = '../hmac.js';
//jcrypto.generateHmac(key, options);

The code is generated and displayed in  console.log(res);. However, no file is created.

Fixed via https://github.com/tsu-iscd/jcrypto/pull/7

@JoaoPere:  Please verify.


[quesetion] Does KBFS depend on the GUI?

It seems that for the Keybase file system to actually work the alpha GUI needs to be running, is this correct?  If so are there any plans to make it work from just the command line, for example headless box/box without running graphics server, via something like keybase filesystem mount or something that can be ran as a system daemon?

We do have some headless support.  Are you on Linux or OS X?

Well I have a mix of OS X, Linux, FreeBSD, and PacBSD.  The OS X box I can just run the GUI client for, but the others some of them run X11 and others are just headless servers.

Okay, so on the non-OSX machines you can run_keybase and then keybase login and keybase unlock to get KBFS working at /keybase.

(I don't know whether KBFS works on *BSD, would be curious to find out.)

Keybase version 0.8.25 works under *BSD for sure (but lacks KBFS support)
when I get some free time and other things working I plan on trying to
build the newer version for PacBSD and see if KBFS works.  If it is just
using FUSE to mount the filesystem then it should.  I'll need to see
exactly which FUSE driver keybase is using to know for sure.
On Thu, Jun 30, 2016 at 9:42 AM Chris Ball<EMAIL_ADDRESS>wrote:

(I don't know whether KBFS works on *BSD, would be curious to find out.)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/keybase/client/issues/3252#issuecomment-229661704,
or mute the thread
https://github.com/notifications/unsubscribe/AAI2evYBk_PS9tYKeyYPqWkyP0pdV_Dvks5qQ8fggaJpZM4JAlaU
.

Yeah, I'm wondering specifically about KBFS.  It does use FUSE.


Recursion Algorithm

I am Manas GSSOC 2021 participant want to contribute Recursion algorithm for Factorial in Java programming language.
Assign this task to me :)

Hey, I am a GSSOC'21 participant. I would like to contribute the code of this problem statement in PYTHON language. Please assign this issue to me.

Hi, I am a GSSoc;21 participant and I would like to work on this issue in C++ language. Please assign this issue to me

Hello,
I would like to contribute to this issue as a GSSoC 2021 participant
I would be explaining Recursion Algorithm with the help of Divide and Conquer method using Merge Sort as an example
kindly assign me this issue
@anubhavitis @dheerajkotwani @tarun26091999 @todi-2000 @geekquad @plazzy99 @rudrakshi99

I am Manas GSSOC 2021 participant want to contribute Recursion algorithm for Factorial in Java programming language.
Assign this task to me :)

Go ahead and do it in Java

Hey, I am a GSSOC'21 participant. I would like to contribute the code of this problem statement in PYTHON language. Please assign this issue to me.

Go ahead and do it in Python

Hi, I am a GSSoc;21 participant and I would like to work on this issue in C++ language. Please assign this issue to me

Go ahead and do it in C++

hi, I am a Gssoc'21 participant I want to work on the "Fibonacci series using recursion " in python.
could you please assign me and also guide me through my first contribution.

Hi ,
I am GSSOC'21 participant.
Please assign me this. I will do this in C with proper comments and test cases.
@shreyanspoddar

Hi I am gssoc participant I would like to solve this issue using Java
Could you please assign it to me?
Thanks!

Hey..I'm a GSSOC'21 Participant and would like to work on this issue...I would like to explain and code it in C++.

Hello! I am a GSSoC'21 Participant. I would like to work on this issue. Would be highly obliged if you could assign it to me. I will be using Java. Thanks!

Hey , I'm a GSSOC'21 participant . I would like to work on this issue please assign me .

@Manya1609 you have to raise a PR.

Thankyou for assigning @tarun26091999
I have already raised a PR !!

@Manya1609 you have to raise a PR.

Sir I have already raised a PR too with the name  "Manya1609 add factorials 1"
![Screenshot (804)_LI](https://user-images.githubusercontent.com/72715296/119297812-55b63000-bc79-11eb-95ea-5555e25c2d5d.jpg

Thankyou for assigning @tarun26091999
I have already raised a PR !!

link it here

Plz do check this 👍
https://github.com/Algo-Phantoms/Algo-Tree/pull/1982


fix: fix app_id empty in staging

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

3 of 3 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.003%) to 75.003%

Totals

Change from base Build<PHONE_NUMBER>:
0.003%

Covered Lines:
4636

Relevant Lines:
5591

💛  - Coveralls


Remove Expression#to_insert_sql

This is part of a larger refactoring which will be coming in many steps.
This piece is a prerequisite for basically everything else.
to_insert_sql has been a general wart in our implementation that was a
side effect of how we used to structure things. Ultimately the only way
that it's really used is to replace null bind params with DEFAULT on
inserts.
This cleans up our code a good bit, and starts to allow us to separate
Expression and QueryFragment into more decoupled entities, which
will be important going forward.

Review? @mfpiccolo @mcasper


Add call to apt-get upgrade

It looks like this might be missing a call to apt-get upgrade?

Thanks :+1:


🐛 fixed asyncio streaming bugs

This PR fixes two problems with current library.
Not closing responses
Currently the aiohttp.ClientResponse objects are never closed, which might be problem for long-running sessions, with streaming. Since users might not consume the whole stream, the request object is never released and the hope is that the session close will release it. However it's possible to supply a long-running session which is not closed when the request ends. I thus added a code which will release/close the responses.
Relates issues: https://github.com/openai/openai-python/issues/570
Problematic session managements
The aiohttp.session management is done using @asynccontextmanager (see https://github.com/openai/openai-python/blob/main/openai/api_requestor.py#L771-L778) . This is problematic because it creates an async generator. Let's see why.  Given the following code:
import asyncio
import os
from langchain.chat_models import ChatOpenAI
import openai
async def run():
    response = await openai.ChatCompletion.acreate(
        model='gpt-3.5-turbo',
        messages=[
            {'role': 'user', 'content': 'Count to 100, with a comma between each number and no newlines. E.g., 1, 2, 3, ...'}
        ],
        temperature=0,
        stream=True  # again, we set stream=True
    )

    async for x in response:
        break

asyncio.run(run(), debug=True)

We will a receive an error:
RuntimeError: aclose(): asynchronous generator is already running.
This happens when we have a async generator which is being iterated over using async for (More precisely when we are awaiting generator.__anext__) and at the same time we are trying to close the generator (More precisely when we try to await at the same time generator.__anext__).
But where it happens ?
First at the code will create a completion which will create the aiohttp_session (session generator) and at the same time will create another generator at https://github.com/openai/openai-python/blob/main/openai/api_requestor.py#L386-L399 (response generator), which will be then returned by the completion. We then iterate one time over the response generator and then stop, without closing the generator. The event loop then ends. When we have an event-loop and the event-loop ends, all the async-generators which didn't end are finalized/closed in loop.shutdown_asyncgens(). This means that both of the above generators will be finialized at the same time!!! The response generator then call anext on session generator (throught ctx.__aexit__) and at the same time the session generator is being finalized which results in the error.
I thus rewrote the aiohttp_session, to be the real context manager, which will not have this problem.
Related issue: https://github.com/openai/openai-python/issues/503
Let me know what you think ;)
PS: It was incredibly painful to debug it hhhhhh

@logankilpatrick

Taking a look - thanks @hynky1999  for debugging and putting in the effort here. Everything looks fine at first glance, but I'll need to run this through some load testing to be sure.

@hynky1999 Much needed! @jhallard we too see session management cause a lot of issues for long running langchain chains in production.

is bug need mg

hi, will the fix be merged ?

We are also running into this issue here. Merge would be much appreciated :)

@hynky1999 wanted to check in here. This is on our radar and appears to pass through our internal testing. We'll attempt to get this merged (or make a formal request for changes) by the end of this week. Thanks again.

Awesome, let me know if you need any help from my side :)

@jhallard Looking forward to it, appreciate it!!

Very useful fix btw. Any status update on when this will be merged ?

@jhallard any news ?

@hynky1999 apologies for the delay here, I've read through the code and done my own testing and everything seems fine. If prod breaks I'll hold you personally accountable ;) Thanks again for digging deep here, this one looked tricky to debug. I'll go ahead and include this in the next release.


add facility for email aliases

This adds a new option aliases and corresponding configuration for notmuch and
alot which make use of this. An email alias can be thought of as an alternative
email address which shares the same mailbox, which is distinct from managing two
separate accounts.

I addressed your reviews :)

Thanks! Rebased to master in a6f0fa90f73eab34744bd1dadbc73490e86be057 👍


Verify top/bottom shooter motor speeds

The top/bottom motor ids were swapped. I fixed them. We need to verify the shooting actually works. If not, we should flip the target motor speeds between high and low.

They were swapped. Fixed by IB


Migrating to TypeScript

Do you have any plan to migrate this repo to typescript or create a separate branch for typescript?

+1 from me :)
Would be the first serious typescript sample !

I'll try to work on it later this week or next at most :).
@gdi2290 wanna help with it :)?

Code will be very similar though. I'm using Types and Decorators here :).

@mgonto if I can start off with https://github.com/angular-class/angular2-webpack-starter then yeah I totally can ;-)

Mhhm, never tried webpack, but when looking into the webpack config file... what's that ?
Angular seems to embrace SystemJs, so maybe something based on https://github.com/frankwallis/plugin-typescript ?

I'm too confused between SystemJS/JSPM and Webpack. JSPM looks future proof where as Webpack looks more mature and production ready at the moment.

@mgonto...Any progres on this??

hi
+1

+1

Migration done :). Check master!


Do you have any suggestion on implementing this in caffe

Have you implemented this model on caffe?

I too am interested in using an implementation of this in Caffe. Are either of you working on one or aware of any useful/related resources?

You can write this as a python layer in caffe using numpy. Check out Caffe's python layer support. Numpy and TF are almost interchangeable in terms of the functions used in the operator. Sadly, the backward pass must also be implemented but it is fairly easy. You just have to do the operations in reverse. I am starting to write it, will post a link if I finish it.

I found a pytourch implementation here: https://github.com/pytorch/examples/tree/master/super_resolution
As well as pytourch -> caffe conversion here: https://zhanghang1989.github.io/Torch2CaffeConverter/
You may just be able to convert it, although I have not yet tried it out myself. I'll let you know if make progress as well--thanks for the help!

@timothybrooks  This is my attempt at porting. I have tested the layer in a standalone fashion and have attached a script as well so that you can also test with various inputs.  If you are interested do check and let me know if there are any mistakes.

Thanks! I will definitely try it out.

is it based on ESPCN?


How are people generating the JSON schema?

Question

Curious what people are using to generate the JSON schema, as I'm not sure what I'm doing is the best way.
I've been using

YAML to JSON from https://jsonformatter.org/yaml-to-json, with the values.yaml
and
JSON Schema from https://www.jsonschema.net/app/schemas/0, with the output above to generate the schema

Do other people have better tooling for this?

I don't think this is better, but I've been using this (deprecated) helm plugin -- https://github.com/karuppiah7890/helm-schema-gen

Funny that you should mention it. Like. @priyawadhwa mentioned, I have gone down a similar path to what you have mentioned as well @k4leung4 . I will note that in the past, I have used some tools, such as Readme Generator For Helm, to assist in generating.
However, you bring up a good point which I'll being up on the Helm side


Stop patch upgrades

Patch upgrades create too much noise

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 88.3%. Comparing base (92b2e3e) to head (de0de84).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@          Coverage Diff          @@
##            main     #20   +/-   ##
=====================================
  Coverage   88.3%   88.3%
=====================================
  Files          5       5
  Lines        378     378
=====================================
  Hits         334     334
  Misses        44      44

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


Add mousetrap bindings for bold, italics, and links in TextEditor

#2722
This adds mousetrap bindings for bold, italics, and links in the TextEditor component. The use of refs required converting TextEditorFormatButton from a functional component.
Additionally, this can't really be handled in the keyboard_shortcuts.js file as we need to bind to an element rendered by the component rather than the default document.
I'm not 100% certain this is the cleanest approach, but it seems to click-test well. Open to any suggestions to make it more idiomatic.

I tested preventDefualt( ) on 78.0.2 (64-bit) and that should do the trick. I think that's acceptable in this case given that it is only bound to the textarea.
Not sure if we need to support IE, but it (of course) uses a slightly different approach I've left out for now.

Looking great. Thanks again!


Nested Routing and ClearHistory: Error when route between nested routes

I have two routes which have child routes:

Route A

Nested Route A1
Nested Route A2

Route B

Nested Route B1
Nested Route B2

If I navigate from 'Nested Route A2' to 'Nested Route B1' with clearHistory=true, then I can not navigate anymore between  'Nested Route B1' and  'Nested Route B2'.
This repo reproduces the issue. Steps to reproduce it:

Navigate to 'Angular routing' -> 'Nested routers'
Click on 'SECOND' button,
Click in the big button 'This is second. Load first',
Now, you are in the 'Angular Routing 2' component, but you can't navigate between the nested routes.

Please see this animation:

The repo is using:

"nativescript-angular": "next",
"tns-core-modules": "next",

The problem occurs in both platforms (iOS an Android).
P.D. I know that there are several issues regarding clearHistory but I think this case is not reported. Sorry if I am wrong.

Also have this issue with the latest.

Hi @sean-perkins,
Do you mean something like the following?
this._zone.run(() => this._routerext.navigate(['/home/view-1'], {clearHistory: true}));

It doesn't work in my case :(
@vakrilov, @tsonevn have you been able to reproduce this issue? Is it related with the new route-reuse strategy?

Hi @codeback - I managed to reproduce the issue with your project.
What's interesting is that there are no exceptions thrown and navigation to another page still works. Navigation onside the nested router is not working.
@sean-perkins - Can you please share more detail on you solution using the zone. It might lead to some insights on the problem and eventually help solve it :)

In our scenario, the problem only presented itself after upgrading the Angular and NS Angular dependencies to the latest. We were on ~3.1.3 (NS Angular) beforehand. We have a lazy-loaded module that navigates the user to another lazy-loaded module, inside an event listener on a WebView.
With no changes (only dependency upgrades and updating to NativeScriptCommonModule), the app would redirect to the lazy-loaded module and no change detection or life cycle events would occur. But, after swiping out a side drawer and tapping an action, the page would then load all the life cycle hooks.
If we logged out of our application (which sends us back to the original lazy-loaded module) and log back in, change detection occurs, but then all navigation events are broken. Active router links are set, but the page-router-outlet doesn't actually update the component rendered.
To solve this, we wrapped our initial navigate inside a zone.run, which fixed the problem globally. We haven't dug into it any further, as there are no logs and that makes it unproductive to debug.

Almost the same scenario, except running inside zone does not work for me. Had to remove clearHistory temporarily until this gets resolved.

In my case, remove clearHistory produces other undesirable side effects. And running inside zone does not work either. :(
In my app the problem is that the ending route is a nested route. In other words, clearHistory=true doesn't work if the destination route is a nested route.
My very ugly  workaround is to put another route in the middle: From Route A,  navigate to Route C with clearHistory=true and then, from Route C, navigate to the destination nested Route with clearHistory=true.
Hope it helps while the issue gets resolved.

Not sure if this helps to isolate the exact issue, but I've narrowed the cause of this problem to when the NSRouteReuseStrategy clears out its state cache - specifically when the cached items are destroyed.
If the destroyComponentRef call within DetachedStateCache.clear is skipped, then child routing continues to work.

Removing the destroyComponentRef call works for us as well. That seems like something that would create a memory leak though right?

+1
Really important to address this.

After further investigation, the problem is related to the specific order of how the components are created and disposed - specifically the RouterOutlet.
When navigating and clearing history, the old page is destroyed after the new page is created. This means the new RouterOutlet calls onChildOutletCreated after the old RouterOutlet calls onChildOutletDestroyed. If these outlets have the same name, then the call to onChildOutletCreated reuses the existing OutletContext, before finally the call to onChildOutletDestroyed clears the outlet property of the same OutletContext, leaving the new RouterOutlet in a non-working state.
I haven't confirmed this yet, but I imagine that this occurs in a different order when using straight RouterOutlets (that is, not a top-level PageRouterOutlet)

+1

Does anyone have a work around for this? It's causing me some headaches.

We are some big router-related improvements for the 6.0.0 release. We will try resolve this as well, if possible.

@Randomgnome I worked around this by creating an intermediary view, that has no nested views, that redirects to the desired view. But to fully work, the redirect from the intermediary view had to be in a timeout.
In short, save somewhere the routing info for the view you want to redirect to, then redirect to the intermediary view, then use the saved data to redirect from the intermediary view to where you actually wanted in a timeout (200ms, for example).

@Randomgnome I initially attempted to work around this by overriding methods of the router classes to change how child router outlets were disposed (essentially, updating onChildOutletDestroyed to only clear the outlet property of its OutletContext if it matches the expected outlet). Although this worked after the initial navigation, after the second, routing stopped as before.
In the end, we worked around this by updating one page so that it no longer used nested routes to display content. Definitely not ideal, but we encountered some performance issues with routing that ultimately meant this may have actually been a better fit for what we were looking to achieve.
Looking forward to having this resolved - hopefully 6.0.0 can resolve some of these other issues too.

Any news on this?

Hi all,
Can you reproduce this issue with the latest tns-core-modules4.1.0 and nativescript-angular 6.0.0?

@tsonevn I have reproduced this with the most current version of tns-core-modules and nativescript-angular and the above repo.

Any news on this? Still have this bug with latest versions.

Umm Okay, it's still Open

still open

Can confirm this is still a problem with nativescript-angular 7.1 and tns-core-modules 5.1.

My application's navigation wasn't working as well. I spent 5 hours to just discover this bug. This should be fixed.

Still an issue (Angular 7.2.6 & NativeScript 5.2.1).

Honestly, never could thought about this. It's the situation where google can't help. Only found info about this issue after discovering it by myself

Still having this problem too 😔
any news about a fix?

I don't have this problem on Nativescript 6.1 anymore.

I have it on latest 3.2.2

I have the same bug on 6.3.0 ... I spent half a day just for identify it's a bug and when it happens ... now to see that it's a 2 year old bug is really annoying. Any news on it?

I'm also having this issue.

We are also facing it. Quick fix would be appreciated. Thanks.

I'm also having this issue.

I'm also having this issue.

I am also having this problem when i use  clearHistory


Rspec 3.4 displays the initial cause of exceptions

RSpec 3.4 will now display the initial cause of exceptions raised which means BrowserError needs to be capable of handling more than two parameters passed in since it's the initial cause for MouseClickFailed errors.  This also updates version restrictions on the mime-types gem when testing with ruby 1.9 versions

Should Fix Issue #702


Downloading a single season does not work (UKTV)

Describe the bug
I just want to download a single season of a series, but freevine does not honor the selection
To Reproduce
freevine.py get --season 4 https://uktvplay.co.uk/shows/the-architecture-the-railways-built/watch-online  -sv res=720
Freevine lists that there are 4 seasons found, but it starts downloading with episode 4 of season 1 instead of episode 1 of season 4
F:\freevine>freevine.py get --season 4 https://uktvplay.co.uk/shows/the-architecture-the-railways-built/watch-online  -sv res=720

❯_freevine v1.1.7

18:07:49.784 INFO : UKTV Play
18:07:50.295 INFO : The Architecture the Railways Built: 4 Season(s), 40 Episode(s)

18:07:51.542 INFO : The Architecture the Railways Built S01E04
...
...
18:07:51.904 INFO : Sub 24e282b6-7c57-4349-80bb-63fa03e43469 | en | 1 Segment | ~43m52s
18:07:51.904 WARN : Writing meta json
18:07:51.905 INFO : Save Name: The.Architecture.the.Railways.Built.S01E04.720p.UKTV.WEB-DL.AAC2.0.H.264

Expected behavior
Specified season is downloaded
Additional context
Downloading individual episodes of the season work as expected

Need to correct myself! Even downloading an individual episode currently doesn't work anymore :-(
.\freevine.py get --episode https://uktvplay.co.uk/shows/the-architecture-the-railways-built/series-4/episode-1/6320633720112  -sv res=720

❯_freevine v1.1.7

18:15:05.075 INFO : UKTV Play
Traceback (most recent call last):
  File "F:\freevine\freevine.py", line 15, in <module>
    cli()
  File "F:\freevine\.venv\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "F:\freevine\.venv\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "F:\freevine\.venv\lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "F:\freevine\.venv\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "F:\freevine\.venv\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "F:\freevine\utils\commands.py", line 90, in get
    Service(config, **kwargs)
  File "F:\freevine\services\uktvplay\uktvplay.py", line 51, in __init__
    self.get_options()
  File "F:\freevine\services\uktvplay\uktvplay.py", line 199, in get_options
    downloads, title = get_downloads(self)
  File "F:\freevine\utils\options.py", line 160, in get_downloads
    downloads, title = stream.get_episode_from_url(stream.episode)
  File "F:\freevine\services\uktvplay\uktvplay.py", line 172, in get_episode_from_url
    house_number = re.search(r'house_number="(.+?)"', html).group(1)
AttributeError: 'NoneType' object has no attribute 'group'

Using "get -t" correctly lists all 40 episodes though

Confirmed! Now works as expected!


Rename iroha lib and bin

Egor Ivkov, [11.06.21 11:32]
Ok, so I guess the points on which we agreed:

Call iroha library - iroha_core
Call iroha binary - iroha

Planning to do 3 steps

Rename library iroha -> iroha_core
Rename binary iroha_cli -> iroha
Make it consistent with README.md

Now renaming library iroha to iroha_core.
I have 5 "iroha"s ambiguous to me.
How should we handle these?

Now renaming library iroha to iroha_core. I have 5 "iroha"s ambiguous to me. How should we handle these?

The line about Metrics can be deleted as I remember it is outdated, we don't provide these metrics now.
In conf.py I think it can be left as it is
I don't have file iroha.conf locally, maybe @i1i1 you know what it is? I think this line can be deleted form gitignore
docker/ lines can also be removed from gitignore I think, we build right now inside of the container.


Localized file check-in by OneLocBuild Task: Build definition ID 13985: Build ID 30477609

closing based on conversation with @riedgar-ms


JavaScript

JavaScript
User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I view the study guide
THEN I can see the four topics I learned listed along with a suggestion on what I should study first

Hello I would like to help you out. Are you looking to structure these notes into a list?


Whether lr_scheduler for Lomo is implemented now?

Hi authors,
Whether lr = trainer.lr_scheduler.step(global_step) for Lomo in the Trainer is implemented?
If so, how to enable it?
Thanks!

Sure, just pass the lr_sheduler  to trainer will enable it. Example:
https://github.com/OpenLMLab/collie/blob/c9cc0055a52b96d156450b5734a0a1d0dbde4562/examples/finetune_chatglm2_for_summary.py#L83

I mean lr_scheduler for Lomo, not AdamW. lr_scheduler for Lomo requires the lr_scheduler.step function to accept a global_step parameter.

Sry, and I get you now. This is a bug and we are planning to fix it to align with the api call with PyTorch's lr_scheduler.
Currently, maybe you can pass this lr_scheduler to trainer when training with Lomo.
https://github.com/OpenLMLab/LOMO/blob/24cde8e91feac437809bf7790f4727623dce6a76/src/utils.py#L207

Hi, lr_scheduler for LOMO is implemented and mergd into branch:dev now.
FYI:https://github.com/OpenLMLab/collie/pull/97/commits/3b699248cad8e3a666eb44a9be8e88fe1b45c821


cwhisper files larger in size post conversion if they haven't been updated recently

Maybe related to #309, however I was surprised to find that the convert process for some metrics increased the size of the wsp file by almost double in some cases.
When looking closer at it, the files that increased in size were infact metric files that had not been written to for nearly 3 months.
It is surprising that this would be the case, that the apparent act of rolling up data during conversion would cause such a steep increase compared to metrics that are updated regularly, particularly as those are the files that will have less datapoints to store now.
Perhaps there's a problem in the convert program, but there would otherwise appear to be a want for some compaction tool as well.

31010.tar.gz
@bom-d-van - here's one of the extreme edge cases.  A metric with only two datapoints in the past from around Nov 2018.
compressed:                true
aggregation_method:        average
max_retention:             94608000
x_files_factor:            0.000000
comp_version:              1
points_per_block:          7200
avg_compressed_point_size: 2.000000
crc32:                     68B1243F
archives:                  5
archives.0.retention:      30s:3d
archives.1.retention:      5m:30d
archives.2.retention:      1h:90d
archives.3.retention:      4h:1y
archives.4.retention:      1d:3y

Original size (31010.wsp): 268k
Size after running convert (31010.cwsp): 1116k
As a test, I created a new metric by sending the metrics to go-carbon
$ nc <IP_ADDRESS> 2003
31010 5<PHONE_NUMBER>
31010 5<PHONE_NUMBER>

This resultant file (31010.cwsp.new) is 172k.  This is closer to what I expected to see after running convert.

Aha, 2 data points is probably the cause. I think I might have missed to cover cases like that. Our production payload is much denser so never have to deal this type of issue.
Thanks for your help and feedback! I should be able to fix it fairly soon. :)

@bom-d-van - If you want another test where we've had a constant-running metric since 2016, can send that too, which is around 2.5x bigger than the original uncompressed whisper file.
It'll take a little while to produce the file from scratch by resending every data point, just to see if that too is bigger/smaller.

@iain-buclaw-sociomantic it would be great if you could make it. I could make the fix at the same time. :D

@iain-buclaw-sociomantic
Shared my fix here, not merged yet. If you can send more cases for me to examine, I could try to fix them at the same time.
https://github.com/go-graphite/go-whisper/pull/8/files
This should affects only cmd/convert.go and buckytools rebalancing, not extension.
With the new fix, the cwhisper file size for your case is 35.8% smaller.
du -sh /Users/xhu/Downloads/31010/31010.wsp.cwsp /Users/xhu/Downloads/31010/31010.wsp
172K	/Users/xhu/Downloads/31010/31010.wsp.cwsp
268K	/Users/xhu/Downloads/31010/31010.wsp

value.tar.gz
Thanks, I'll give it a test.  I'm currently in the middle of reverting the conversion to compressed whisper, as the total disk usage for the storage node has increased by 100GB.
Attaching the second example as per my promise, contents are:
value.wsp (268K): original whisper metric
value.cwsp (636k): compressed whisper metric after convert
I did have a try at creating a new whisper metric via go-carbon using the same datapoints and values, however, the resultant file was always incomplete, even so the incomplete metric was still 404k.
Again, it is surprising that it should be allowed to grow bigger than the uncompressed whisper format.  I would have expected that the size would have been bounded to whatever is the retention set for the archive.
I have recently also imported our entire whisper cluster into victoria metrics, which goes one further than gorilla by first multiplying floating point values into integers by multiplying by 10^N (N being the number of decimal digits), then using zstd on-top to reduce it further.  Perhaps I'd be comparing apples and oranges, but the compaction was as such that 1.5TB of whisper data became 63GB of victoria data. So I have at least an expected of how much free space I can clear out. ;-)

Thanks, I'll give it a test. I'm currently in the middle of reverting the conversion to compressed whisper, as the total disk usage for the storage node has increased by 100GB.

Sorry to hear that. I think if both the fixes are applied, it should make things smaller.

Attaching the second example as per my promise, contents are:
value.wsp (268K): original whisper metric
value.cwsp (636k): compressed whisper metric after convert

This is a case related to its retention policy configuration, because by default cwhisper files would allocate 7200 data points per block and each archive would have at least two blocks. And the last three archives in your whisper file all has less than 3000 data points. I should be able to fix that by using a smaller block size.

Again, it is surprising that it should be allowed to grow bigger than the uncompressed whisper format. I would have expected that the size would have been bounded to whatever is the retention set for the archive.

Yep, your whisper file format is quite different from our production setup, so the implementation doesn't handle it very well. But most of the issues should be fixable.

but the compaction was as such that 1.5TB of whisper data became 63GB of victoria data

Is most of your whisper files sparse? Don't know how victoria works, but I remember they use the same compression algorithm with some tweaks. Would take a closer look on how they works.

@iain-buclaw-sociomantic
Just in case, there is a progress.db file saved in -home dir that have old and new file sizes. You can use that to figure out how many and what files actually grow bigger.
The meaning of each column:
path, oldSize, newSize, took, started_at

@iain-buclaw-sociomantic I have pushed a few more fixes and tweaks to make cwhisper cope well with your retention policy. Now the results looks a bit better. You need to
$ du -sh /Users/bom_d_van/Downloads/value/value.wsp*
268K	/Users/bom_d_van/Downloads/value/value.wsp
212K	/Users/bom_d_van/Downloads/value/value.wsp.cwsp

$ du -sh /Users/bom_d_van/Downloads/31010/31010.wsp*
268K	/Users/bom_d_van/Downloads/31010/31010.wsp
 60K	/Users/bom_d_van/Downloads/31010/31010.wsp.cwsp

To summarize, in cwhisper, like whisper, it's still a round robin database, the difference is that cwhisper rounds robin on blocks, and each block with a fixed 7200 data points (which is recommended by the facebook paper). In every archive, there is only N+1 blocks (N blocks for containing all the data points specified by retention policy, and one extra as rotation buffer).
In our own production environment, our archives tend to have much more than 7200 data points even in lowest archive. So the one extra blocks isn't much of an overhead.
However, for your retention policy: 30s:3d,5m:30d,1h:90d,4h:1y,1d:3y, even in the highest archives, there are only 8640 data points. Thus 7200 data points as a minimum block size is too much overhead, that's why you are seeing file size overgrown.
Also, I have added a new command cmd/estimate.go so you could also pre-check if there is more retention policy that cwhisper needs to take care of:
$ go run cmd/estimate.go 30s:3d,5m:30d,1h:90d,4h:1y,1d:3y
compressed whisper file sizes using different size per data points and comparing to standard whisper file
standard whisper file size = 266.38KB (272776)
point size, file size, ratio
0.2, 7.53KB (7706), 2.83%
2.0, 57.61KB (58996), 21.63%
7.0, 196.77KB (201496), 73.87%
14.0, 391.60KB (400996), 147.01%

Hope this could help you!

but the compaction was as such that 1.5TB of whisper data became 63GB of victoria data

Victoriametrics is not using round robin database, thus there is no disk pre-allocation. Therefore, if metrics are sparse like your first example that contains only a few data points, this would be a big improvement. However, if the metrics are dense like cpu or memory which always have data generated, the difference might not be that extreme.
What's more Victoriametrics doesn't have downsampling, so I don't know did you also manage to migrate the downsampled data in whisper into victoria?  And in whisper, for your retention policy 30s:3d,5m:30d,1h:90d,4h:1y,1d:3y, downsampled archives takes 61.98% of the space even in standard whisper files, so it's probably not a fair comparison.
Hope this explanation makes sense to you! :)

Is most of your whisper files sparse?

All performance metrics are being constantly recorded - host, services, micro-services.  I think there's only one micro-service that is ran as a cron-job, ergo sparse.
Business metrics take up the most space, and they seem to have a tendency to be short-lived, i.e: collecting data for 3 weeks, then that's it.  However that is not a given, and can could be turned off/on at any time.  Removing 1d:3y archive in these metrics may infact be the best thing to do, but I'll leave as is for now.

What's more Victoriametrics doesn't have downsampling, so I don't know did you also manage to migrate the downsampled data in whisper into victoria?

All you're sending is a value with a timestamp, you are right, there is no downsampling, but the result is that all historical data is itself shown to be downsampled, even though all new data will have max precision (this is fine, as the longer time go on, the less relevant they'll become anyway, and will just get pruned when they overrun the global fixed retention period.  :-)

Hope this could help you!

Thanks!  I'll rebuild and give it another try.  Perhaps extra one feature I can think of is to have a flag which tells the convert program to check file sizes before overwriting the original.  And if the resultant file grew, then skip it.
It isn't really a necessity to have all files compressed, as go-carbon seamlessly handles both formats without complaint.

the result is that all historical data is itself shown to be downsampled when you query it
This require enormous amount of memory during rendering, or either sampling or preprocessing on the storage side. What do you use for render requests to VictoriaMetrics?

@azhiltsov - I'll reclarify, the data imported is the downsampled whisper data, even though all newly written stats will keep the highest precision (never downsampled).  I have no idea what would happen if there's 5 years worth of data at 30 second sampling, and someone decides to query it all at once.  I would hope that every datapoint does not get sent over the wire.

To my knowledge, for VictoriaMetrics it depends on how exactly you are query it. At least while I was implementing backend plugin for it in carbonapi (the one that I maintain), it had some way to control the precision of output data. How it will actually read the values from disk - that's the good question and I think it's better to ask it's authors (they reply quiet fast on both Telegram and github issues in my experience).

Thanks! I'll rebuild and give it another try. Perhaps extra one feature I can think of is to have a flag which tells the convert program to check file sizes before overwriting the original. And if the resultant file grew, then skip it.

@iain-buclaw-sociomantic Thanks for the suggestion, would consider adding a flag for that.
Small tip:
For testing purpose, you could start with randomly grabbing some metrics from your server, copied it somewhere, and run the convert program to see if it's working as expected. So if the result is still bad, then you don't have to do any cleanup or reversion. Random is important so you could have a better samples.
As the efficiency of the gorilla algorithms is built upon the assumption that data points are not random, so the compressed result is good overall but some metric files might end up bigger (like what cmd/estimate.go said).
shuf is my good friend on linux.
find /path/to/whisper/files -type f > files.txt
#psuedocode
shuf -n 1000 files.txt | xargs copy the files to somewhere else

@bom-d-van - the first few random samples seem positive.
# find orig/ -type f -size -267k -exec ls -lh {} \+ | wc -l
183
# find orig/ -type f -size +267k -exec ls -lh {} \+ | wc -l
3
# find convert-old/ -type f -size -267k -exec ls -lh {} \+ | wc -l
447
# find convert-old/ -type f -size +267k -exec ls -lh {} \+ | wc -l
553
# find convert-new/ -type f -size -267k -exec ls -lh {} \+ | wc -l
997
# find convert-new/ -type f -size +267k -exec ls -lh {} \+ | wc -l
3

And just ran on a larger random sample of 1% of a server storage.
# find orig -type f -size -267k | wc -l
5537
# find orig -type f -size +267k | wc -l
3
# find old -type f -size -267k | wc -l
14267
# find old -type f -size +267k | wc -l
18126
# find new -type f -size -267k | wc -l
32395
# find new -type f -size +267k | wc -l
3

Still, so far so good.

That's Lovely! :D
Also you could run go run cmd/verify.go file.wsp file.cwsp to verify the migration result. This is helpful to verify if data being correctly migrated to cwhisper files.

@bom-d-van - Random question, but if the convert program thread-safe?
I've hit a strange behaviour that can't be reproduced in isolation.
267K ./orig/9988.wsp
1.3M ./prod/9988.wsp  # convert -store ./whisper/
156K ./test/9988.wsp  # convert -store ./9988.wsp

I'm not sure how else it would do one thing when converting all metrics and another when it's just a small selection of metrics.

That's strange. It should be thread-safe.
The process goes like this: the original whisper files is flocked, then it created a temporary file for compressed data, and at the end of the conversion the whisper file will be resized and overwritten.
https://github.com/go-graphite/go-whisper/blob/master/cmd/convert.go#L220
Was ./prod/9988.wsp converted to cwhisper before? Because cmd/convert.go won't do anything if the file is already compressed once.

I assume go-carbon is running on the same host while you converting.
Please check that you running latest version of it with flock enabled.

@azhiltsov built from 49aae21f754e0f281eda9a807fc497f15112c179 and flock is turned on.

@iain-buclaw-sociomantic do you mind sharing the three files? I could take a closer look.

@bom-d-van this is one example: missing.tar.gz
And yes, all files are the originals, there's no previously compressed files.
I've just ran it again and it looks fine...

Oh wait! Maybe it's go-carbon that's resizing the file to be bigger. :-o

missing.tar.gz
@bom-d-van - Confirmed, it isn't you, it's go-carbon. Managed to make a copy of the file before the next write to it (converted file at 15:54, go-carbon updated file at 15:57).

Confirmed, it isn't you, it's go-carbon. Managed to make a copy of the file before the next write to it (converted file at 15:54, go-carbon updated file at 15:57).

That's bad. Sorry, most likely also an issue in go-whisper library. Will figure out what's going on and get back to you. Thanks for all your feedback! :)

@bom-d-van - To start with, let's update whisper in go-carbon. ;-)

Some extra info, @azhiltsov tested cwhisper on our environment by backfilling a new cluster with buckytools, so we actually don't have to deal these type of problems.
However, the benefit of using cmd/convert.go is much better compressed result because it would pre-calculate a more accurate size. And through rebalancing, the minimum data point size is hard-coded to 2. It is intended to avoid too many cwhisper file extensions if the default data point size is too small for the payload.

@bom-d-van #316 - I'll rebuild go-carbon and give it another try tomorrow.

@iain-buclaw-sociomantic I think I might have identified the issue. The cause is two folds:

you are right, go-carbon needs to be updated to use the new version of go-whisper library
the point size used/generated by cmd/convert.go is too optimistic, not enough to hold all the data points to honor retention policy, so when go-carbon writes to the cwhisper file again, it detects the issue, extends the file, using a wrong of the go-whisper library. cmd/convert.go should do a better job to avoid extension to happen right after the conversion, by using a correct point size, for efficiency.

so I will need to patch go-whisper again to make a more realistic calculation. Will push my patch soon!

@iain-buclaw-sociomantic  Just pushed my changes here, hopefully this is the last problem in your migration test! https://github.com/go-graphite/go-whisper/pull/9/files

@bom-d-van - OK, I'll check this both with and without the 0.618 patch.  Should be simple actually, as you added a write command. :-)

$ ../write-24b937f6 missing-24b937f6.wsp<PHONE_NUMBER>:407
file is extended.
$ ../write-dd1d9845 missing-dd1d9845.wsp<PHONE_NUMBER>:407
file is extended.
$ ../write-ee616e4b missing-ee616e4b.wsp<PHONE_NUMBER>:407
file is extended.
$ du -h *.wsp
420	missing-24b937f6.wsp
28	missing-dd1d9845.wsp
28	missing-ee616e4b.wsp
$ ../dump missing-dd1d9845.wsp > dd1d9845.dump
$ ../dump missing-ee616e4b.wsp > ee616e4b.dump
$ diff -pur dd1d9845.dump ee616e4b.dump
$

I'm not seeing any immediate difference that go-graphite/go-whisper#9 is adding, however this is just a naive test.

There is a buffer in cwhisper archives, and extension is only triggered if there is full data blocks in the archives. So to test, it's better to write many more data points to the file, so that aggregation/downsampling and extension could be triggered.
An example:
for i in {0..7200}; do i=$((1572941377+$i*600)); print $i:3,; done | go run cmd/write.go missing.wsp

For this particular file, I think we're fine without.  I'll proceed with just pushing current go-carbon binaries out and converting this one server again.
I don't see anything wrong with the change however.

Nowhere near halfway done yet, but this is the current result. :+1:

Still got 100GB of uncompress data to go, however to give an update to the above, I'm now seeing disk usage down to 250GB.  That is a good 3x reduction.
So what's left here?  I think just resync the whisper library with both go-carbon and buckytools.

Still got 100GB of uncompress data to go, however to give an update to the above, I'm now seeing disk usage down to 250GB. That is a good 3x reduction.

Nice! :D

So what's left here? I think just resync the whisper library with both go-carbon and buckytools, given that the other whisper PR has been merged.

Yes, I agree.

Not sure what's your plan after this test, but just in case, I would recommend you keeping one replica of your go-carbon instances on standard whisper format, at least for some weeks or even months, until you feel things are stable and it meets your expectation.
Because most likely there is still some unknown bugs or unconsidered scenario, keeping a copy around for sometime. So when bad things happen, you can still recover the data from the other replica.
Storage optimization is hard, unlike pure networking applications, bugs could have persistent effect.

Not sure what's your plan after this test, but just in case, I would recommend you keeping one replica of your go-carbon instances on standard whisper format, at least for some weeks or even months, until you feel things are stable and it meets your expectation.

Seems reasonable, and we do have the capacity in the replica cluster to do that for the moment (unfortunately, the first cluster seems to have something more like a 40/60 distribution of metrics, so one node has been constantly hitting 90% over the last weeks).

Yes, I agree.

Both pulls have been raised.

Both pulls have been raised.

Both have been merged.


Ameba 1.5.0 error when config file is not used

I was getting the message "Ameba: failed to parse JSON response."
Inspecting in the console the error was:

Ameba: failed parsing JSON: SyntaxError: Unexpected token 'E', "Error: Una"... is not valid JSON

Then checking the STDOUT of the command I got the following:

Error: Unable to load config file: Config file does not exist /my/path/to/.ameba.yml

Searching a bit, I see the new Ameba 1.5.0 raises exception when --config argument is used but file (.ameba.yml) does not exist. Apparently this did not happen in previous versions.
Checking how the extension treats the configuration file, I found this condition that I don't quite understand the sense of.
https://github.com/crystal-ameba/vscode-crystal-ameba/blob/3ea5d00567a5e5bf5ee62b5b630a8a6983e7f22e/src/ameba.ts#L35-L38
I think it should be checked if that file exists and not the length of filename.
Possible solution would be:
diff --git a/src/ameba.ts b/src/ameba.ts
index 56b5b43..60474ec 100644
--- a/src/ameba.ts
+++ b/src/ameba.ts
@@ -1,5 +1,6 @@
 import { exec } from 'child_process';
 import * as path from 'path';
+import { existsSync } from 'fs';
 import {
     commands,
     Diagnostic,
@@ -32,10 +33,9 @@ export class Ameba {
         }

         const args = [this.config.command, document.fileName, '--format', 'json'];
-        if (this.config.configFileName.length) {
-            const dir = workspace.getWorkspaceFolder(document.uri)!.uri.fsPath;
-            args.push('--config', path.join(dir, this.config.configFileName));
-        }
+        const dir = workspace.getWorkspaceFolder(document.uri)!.uri.fsPath;
+        const configFile = path.join(dir, this.config.configFileName);
+        if (existsSync(configFile)) args.push('--config', configFile);

         const task = new Task(document.uri, token => {
             const proc = exec(args.join(' '), (err, stdout, stderr) => {

Ameba::Config.each_config_path already checks if the config file exists in the current directory as well as in the user's home. Perhaps the better approach is to remove this from the extension and let Ameba handle it itself.

@joseafga yes, this is a compatibility bug between VS code plugin and latest ameba release. We may not be able to remove the check completely and rely on Ameba::Config.each_config_path however, the existsSync check is a valid point.
Would you prefer opening a PR since you did a lot of investigation work already?


GPT produces invalid JSON

The following warning is triggered after an error page with an AI-generated solution is displayed:
Warning: Trying to access array offset on value of type null in Spatie\Ignition\Solutions\OpenAi\OpenAiSolutionResponse->links() (line 33 of /Users/dieterholvoet/Projects/sites-minsky/test-d10/vendor/spatie/ignition/src/Solutions/OpenAi/OpenAiSolutionResponse.php).

Use the following context to find a possible fix for the exception message at the end. Limit your answer to 4 or 5 sentences. Also include a few links to documentation that might help.

Use this format in your answer, make sure links are json:

FIX
insert the possible fix here
ENDFIX
LINKS
{"title": "Title link 1", "url": "URL link 1"}
{"title": "Title link 2", "url": "URL link 2"}
ENDLINKS
---

Here comes the context and the exception message:

Line: 141
File:
/Users/dieterholvoet/Projects/sites-minsky/test-d10/web/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
Snippet including line numbers:
134     // latest revisions.
135     if ($this->latestRevision && $revision_field) {
136       $this->sqlQuery->leftJoin($base_table, 'base_table_2', "[base_table].[$id_field] = [base_table_2].[$id_field] AND [base_table].[$revision_field] < [base_table_2].[$revision_field]");
137       $this->sqlQuery->isNull("base_table_2.$id_field");
138     }
139
140     if (is_null($this->accessCheck)) {
141       throw new QueryException('Entity queries must explicitly set whether the query should be access checked or not. See Drupal\Core\Entity\Query\QueryInterface::accessCheck().');
142     }
143     if ($this->accessCheck) {
144       $this->sqlQuery->addTag($this->entityTypeId . '_access');
145     }
146     $this->sqlQuery->addTag('entity_query');
147     $this->sqlQuery->addTag('entity_query_' . $this->entityTypeId);
148
Exception class:
Drupal\Core\Entity\Query\QueryException
Exception message:
Entity queries must explicitly set whether the query should be access checked or not. See Drupal\Core\Entity\Query\QueryInterface::accessCheck().

Produces this response:
FIX
The exception message is indicating that the entity queries must explicitly set whether the query should be access checked or not. To fix this, you need to set the access check explicitly using the `accessCheck()` method of the `QueryInterface` class. You can set it to `TRUE` or `FALSE` depending on your requirements. Here's an example:

$query = \Drupal::entityQuery('node')
  ->accessCheck(FALSE);

This will create a query object for the `node` entity type and set the access check to `FALSE`. You can replace `FALSE` with `TRUE` if you want to enable access checking.

ENDFIX

LINKS
{"title": "Drupal 8 Entity Query Access Control", "url": "https://www.drupal.org/docs/drupal-apis/entity-api/drupal-8-entity-query-access-control"}
{"title": "Drupal\Core\Entity\Query\QueryInterface::accessCheck", "url": "https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21Query%21QueryInterface.php/function/QueryInterface%3A%3AaccessCheck/8.2.x"}
ENDLINKS

Which is invalid, because JSON can't contain single backspaces.

+1 I have the same issue

On Windows there is an issue with PHP_EOL, to cater for both change:
$textLinks = explode(PHP_EOL, $textLinks);
to
$textLinks = preg_split('/\n|\r\n?/', $textLinks);

@AlexVanderbist any update here? Anything I can do to help? There's already a PR: https://github.com/spatie/ignition/pull/302


feat: new handlers and entities for our subgraph to support more queries

[sc-266]

Closing in favor of #94


CAMEL-19234: Lookup beans by name+type first, and fallback to name-an…

…d-convert, when resolving endpoint URI beans.
Description

Target

[ ] I checked that the commit is targeting the correct branch (note that Camel 3 uses camel-3.x, whereas Camel 4 uses the main branch)

Tracking

[ ] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

[ ] I checked that each commit in the pull request has a meaningful subject line and body.

[ ] I formatted the code using mvn -Pformat,fastinstall install && mvn -Psourcecheck

Marker to get a cross reference: https://github.com/apache/camel-quarkus/issues/4725

Thanks for all the suggestions, however the code is better to be as-is to be similar to the existing coding style, and make sure it keep working as before.


[TC-441] - refactored how token login works to ensure token login is complete be…

…fore attempting to resolve other dependencies that need the authentication cookie
this is related to password reset because password reset utilizes token login

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR-trafficops-test/87/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/127/


Cannot read property 'goToSlide' of undefined

I am using react-native-app-intro-slider and want to move to desired slide with given functionality of goToSlide of app-intro-slider. But when I used it, it shows me error that I this.slider is undefined. Here is my code :
 <AppIntroSlider
                            ref={(ref) => this._slider = ref}
                            slides={this.state.slidees}
                            renderItem={this._renderItem}
/AppIntroSlider>

Error : Cannot read property 'goToSlide' of undefined

@bienur @GabrielePrestifilippo @Jacse @andrejborstnik

Can you show us how you call goToSlide. It seems you use the wrong variable: this.slider, instead of this._slider, which is where your ref is saved.

@andrejborstnik No, I isued this._slider, and it shows me an error. that this._slider is undefined

Can you share a full example

Closing for inactivity


Allow loading BoosterYoutube image non-lazily

Is your feature request related to a problem? Please describe.
By default, the placeholder image for BoosterYoutube is loaded lazily. This can slow down the LCP if it's in the main viewport.

Describe the solution you'd like
You should be able to decide if the BoosterYoutube image is loaded lazily or not.
Describe alternatives you've considered
N/A - looked through the code, couldn't find any workaround.
Additional context
N/A

Hello @amplitudesxd,
I think this can be solved.
Are you working with the critical attribute?
https://basics.github.io/nuxt-booster/guide/usage.html#critical-prop-for-critical-components
If the component recognizes that it is in a critical component, then the poster is delivered as a preload. This can solve the problem.
Call the useCritical()  in the setup of the component where the video is integrated and give it a critical attribute. This is then inherited downwards.

Hey @ThornWalli,
Thanks for that information - I've tried adding the critical prop to the BoosterYoutube element, but the loading=lazy still persists, and lighthouse continues to show that warning.

@amplitudesxd That should work.
components/ComponentA.vue
<template>

    <booster-youtube :url="url" />

</template>

pages/index.vue
<template>

    <ComponentA critical />

</template>

Hi @ThornWalli, thanks for that example - I'm still not quite sure if I'm doing something wrong.
My code is as follows, but it still seems to load lazily:

<template>
        <BoosterYoutube
          url="https://youtube.com/watch?v=JxS5E-kZc2s"
          title="Funny Cats Compilation (Most Popular) Part 1"
          critical
        />
</template>

Hello @amplitudesxd,
you can try the<EMAIL_ADDRESS>version.
I have added a useBoosterCritical to the SpeedkitYoutube and SpeedkitVimeo in the setup for your use case.
Now it is also possible to set a critical attribute on the SpeedkitYoutube and SpeedkitVimeo tag.

@ThornWalli Thank you! That seems to do the trick.
I think it could be useful to add a prop to allow you to customize the NuxtImage values, similar to :options for the YouTube player. Another problem I have is the images not working, as the default nuxt-image provider I have set up is cloudflare. As with most providers, they don't support external URLs - while but IPX does, which if this existed could be configured for the BoosterYoutube images.

@amplitudesxd I see, what exactly are you missing?
Only the modifiers or are you also working with a preset?
https://image.nuxt.com/usage/nuxt-img#modifiers
https://image.nuxt.com/usage/nuxt-img#preset
Consider implementing them as a property.
For example posterSrcModifiers, posterSrcPreset.
In the Next-Branch you can already specify your own Src via posterSrc.

@ThornWalli mainly, I need to be able to set the the provider prop on the NuxtImage component used inside of the BoosterYoutube component, though I feel as it could be useful to allow modifying all of the NuxtImage props.

I've given it some more thought 😉
I will rework the poster on Youtube and Vimeo.
The plan now is that there is only one property to define the poster sources.
    posterSources: {
      type: Array,
      default() {
        return [
          {
            src: null,
            media: 'all',
            sizes: {
              default: '100vw'
            }
          }
        ];
      }
    }

With Preset:
{
    posterSources: {
      type: Array,
      default() {
        return [
          {
            src: null,
            preset: 'name',
            media: 'all',
            sizes: {
              default: '100vw'
            }
          }
        ];
      }
    }
}

With Modifiers
{
    posterSources: {
      type: Array,
      default() {
        return [
          {
            src: null,
            media: 'all',
            modifiers: {
              negate: true
            },
            sizes: {
              default: '100vw'
            }
          }
        ];
      }
    }
}

With custom src
{
    posterSources: {
      type: Array,
      default() {
        return [
          {
            src: '/img/image-text-b.jpg',
            media: 'all',
            sizes: {
              default: '100vw'
            }
          }
        ];
      }
    }
}

@ThornWalli that looks like an improvement - but from my look at the code, you still wouldn't be able to specify the provider property for the image, would you?
The overall idea would be that I can render the BoosterYoutube thumbnails with the IPX provider while using Cloudflare for everything else.
I could try to make a PR if that'd help, but I'm quite unfamiliar with this project.

Hello @amplitudesxd,
I already understood that 🙂
Just wanted to add a little more flexibility.
The sources that are defined are in theory individual NuxtImage representations. More about this: https://github.com/basics/nuxt-booster/blob/main/src/runtime/components/BoosterImage/classes/Source.js
The source in this case is the NuxtImage.
Your use case:
const videoYoutube = {
  title: 'Youtube',
  url: 'https://www.youtube.com/watch?v=cLKvbhfVBUU',
  text: 'Nunc odio nisl dapibus consequat recusandae doloremque nisi natus repudiandae do accusantium corrupti. Harum quisquam, maxime, perspiciatis lobortis earum iure.',
  posterSources: [
    {
      provider: 'ipx'
    }
  ]
};

Another use case where the image is played out on different orientations:
const videoYoutube = {
  title: 'Youtube',
  url: 'https://www.youtube.com/watch?v=cLKvbhfVBUU',
  text: 'Nunc odio nisl dapibus consequat recusandae doloremque nisi natus repudiandae do accusantium corrupti. Harum quisquam, maxime, perspiciatis lobortis earum iure.',
  posterSources: [
    {
      provider: 'ipx',
      media: '(orientation: landscape)'
    },
    {
      provider: 'otherProvider',
      media: '(orientation: portrait)',
      ratio: 1
    }
  ]
};

The next step would be to deploy the changes to next.

Hi @ThornWalli, ah okay -- that makes sense, I wasn't aware you could specify a provider in sources like that 😊
Those changes look good to me and I think they're a great addition to the project!

@amplitudesxd, you can test the change now npm i<EMAIL_ADDRESS>

@ThornWalli seems to be working! Thank you very much :)

Perfect! 🎉 Will be officially included soon 😉


Updated data/channels.csv

id
ElSelloTV Madariaga
nombre
ElSelloTV Madariaga
alt_names
FALSE
owners
Sello Grupo Madariaga
country
AR
subdivision
AR-B
city
General Madariaga
broadcast_area
s/AR-B
languages
ESP
categories
general
is_nsfw
FALSE
launched
01/06/2018
closed
FALSE
replaced_by
FALSE
website
https://elsellotv.com.ar/
logo
https://elsellotv.com.ar/wp-content/uploads/2023/01/LogoTV23.png

The list of changes does not include the channel you describe: https://github.com/iptv-org/database/pull/2054/files


How can I set bitmap/image width as printer's paper width?

Hi, I just mailed you about this issue.
You set PRINTER_WIDTH = 384 (which is fixed). That doesn't care about the actual printer paper width. Instead of that, can't we detect printer paper size from socket data? or you can add a paper size option on choose printer dialog. So, if we set 58mm/80mm/custom width, then it will be used as printer width throughout the app for that selected printer.

not tested yet for 3" printer.
I'll add the method to set it later, thanks

I am closing this,
will added to roadmap for 3 inches printer


Dynamic routes on Azure Static Web Apps have stopped functioning since Nuxt 3.5.0 or later.

Environment
Operating System: Windows_NT
Node Version: v18.16.0
Nuxt Version: 3.4.0
Nitro Version: 2.6.3
Package Manager<EMAIL_ADDRESS>Builder: vite
User Config: devtools
Runtime Modules: -
Build Modules: -
Reproduction
https://github.com/lt-tim/nuxt-reproduction
This repository contains 2 nuxt projects, both are the same with the only difference being the nuxt version (labeled by their version)
Describe the bug
Since Nuxt version 3.5.0 (we've pinpointed this version), dynamic routes have ceased to function correctly on Azure Static Web Apps. When attempting to access a dynamic route, users are being redirected back to its associated index page. For instance:
/index/{id} → /index/
And so on...
Steps to Reproduce:
Before attempting to reproduce this issue, please make sure to install the swa-cli first.
Clone the repository from https://github.com/lt-tim/nuxt-reproduction.
Navigate to the version you wish to test, either Nuxt 3.4.0 or the latest release (3.7.1).
Build the Nuxt app using the command: swa build.
Deploy the built Nuxt app using the following command, replacing [ENV] and [DEPLOYMENT_TOKEN] with your specific environment and deployment token, respectively:
4. Deploy the build nuxt app using swa deploy --env **[ENV]** --deployment-token **[DEPLOYMENT_TOKEN]** --verbose silly
Reproduction Outcome:
Upon testing the links on the site, you will notice that everything functions as expected in Nuxt version 3.4.0. However, dynamic links fail to work as intended in the latest version of Nuxt.
Your attention to this matter would be greatly appreciated in order to resolve this issue.
Additional context
No response
Logs
No response

Any updates on this?

bump

Still unfixed as of Nuxt 3.10. Stuck upgrading my site until this gets resolved :(

@danielroe as you worked with ASW recently, did you hit that issue too?

I had no issues deploying SWA with dynamic routes. I can take a look but wonder if the issue is the cli syntax being used as opposed to the GitHub action.

Is there an update on this issue? I am hitting it too

I'm encountering an issue when deploying via CLI using nuxt build and nuxt generate. When using the index.html fallback, the route.params or route.path appear to be empty, as if the fallback is triggered and the parameters are lost. In my case, I'm utilising a catch-all page-based route.
I've successfully deployed other projects on SWA recently without any problems, particularly when handling IDs in the URL.
I'll investigate further to identify the key difference causing this issue and provide an update, but there seems to be something unusual happening.

Seems like a pretty big issue, I'm hitting it too, can this get attention?

Unfortunately, I just decided not to use the tech stack as it doesn't work and required to much hacking to fix when compared with all the other options available.

Please provide a reproduction if so. I have apps happily running without this uissue

Honestly, it wasn't really worth my time so I moved on.

Please provide a reproduction if so. I have apps happily running without this issue

Is there a place to see example Nuxt projects configured with Azure? Preferably ones also using PNPM to build, maybe the mistake is my configuration.

Here is one: https://github.com/danielroe/page-speed.dev

Sorry I never followed up here. Trying to remember but I think this got fixed (or I realized I was doing something wrong with it). My site has been up since April and working just fine on Nuxt and azure. It's for my company so repo isn't visible but I can confirm it's working.

Great! Is there something we can add to the docs to help in this situation?

Great! Is there something we can add to the docs to help in this situation?

Could be helpful. I was able to get it to work manually configuring the 'azure' preset on nitro and a few other changes but Dynamic routes did not work, quite the rabbit hole.
Would be helpful if the logs generated were very explicit when parsing route paths, etc.
Some of the generated github action paths had '/app' already too which confused me because my project has '/app' too. So a working output was '/app/app/.output' etc.

Dynamic routes fail when files don't physically exist on the filesystem, at least when using Nuxt.
The route.path is redirected to the SPA's index, treating these as requests to the entry asset. This redirection, occurring at the route level, prevents dynamic routing from working without physical files. The issue is reproducible both in Azure Static Web Apps and Docker containers, suggesting it's not Azure-specific.
The rewrite can deliver index.html on a child route e.g. /test/page/1 and yet route.path and window.location.pathname are both / because it's like the URL is being replaced rather than being caught.
I'll put together a minimal reproduction and update.


optimized the loader

I recoded the whole loader to use a better method to find the PID of mc so it is more consistent.
I also made it so that the runtime doesnt force load minimap

For class, function and struct names I tend to stick with PascalCase.
Let me know when you're actually ready for me to merge, the earliest I will actually be able to test out the changes though is tomorrow evening.

It looks good to me so far. There are a few things I would look into though:

It should probably just replace SigScan completely?

Something I was going to look into was being able to find the region in the binary where the code is, so we're not wasting time looking in the data segment


Support for parametrized resource files

Hi, the idea is similar (an extension) to this
Let's say we have a class in Python from which we can create various objects:
class SomeClass:
    def __init__(self, first_argument: int, second_argument: int = None):
        self.first_argument = first_argument
        self.second_argument = second_argument
        self.value = 100*first_argument

    def return_hidden_value(self):
        return self.value + self.second_argument

    def set_first_argument(self, val):
        self.first_argument = val

    def set_second_argument(self, val):
        self.second_argument = val

The idea is to have resource that is just a proxy for this class:
*** Settings ***
Library  Path.SomeClass.SomeClass  ${Val1}  ${Val2}    AS    Inner

*** Keywords ***
Return Hidden Value
    ${Value}  Inner.Return Hidden Value
    # Additional things
    RETURN    ${Value}

Set First Argument
    [Arguments]    ${First argument}
    # Additional things
    Inner.Set First Argument    ${First argument}

Set Second Argument
    [Arguments]    ${Second argument}
    # Additional things
    Inner.Set Second Argument    ${Second argument}

Some Other Keywords

Now I would like to have a test that imports this resource many times with different parameters:
*** Settings ***
Resource    ../Keywords/my_resource.resource    ${10}    ${20}    AS    SimpleCase
Resource    ../Keywords/my_resource.resource    ${99}    ${999}    AS    MoreComplicatedCase
Resource    ../Keywords/my_resource.resource    ${-10}    ${-20}    AS    AnotherCase

*** Test Cases ***
First Test
    ${Value1}    SimpleCase.Return Hidden Value
    ${Value2}    MoreComplicatedCase.Return Hidden Value
    Should Not Be Equal    ${Value1}    ${Value2}

This way, each of the commands available under SimpleCase/MoreComplicatedCase/AnotherCase would run on a different python object, but within the same "space" of available functionality. For the moment, the only workaround I know of would be to create three (or more) identical resource files referring to SomeClass with different parameters and execute it that way:
*** Settings ***
Resource    ../Keywords/simple_case_resource.resource
Resource    ../Keywords/more_complicated_case.resource
Resource    ../Keywords/another_case.resource

*** Test Cases ***
First Test
    ${Value1}    Simple Case Return Hidden Value
    ${Value2}    More Complicated Case Return Hidden Value
    Should Not Be Equal    ${Value1}    ${Value2}

but then I need to have:

different keywords for each resource (that would solve this problem)
create resource file for every case, but there can be many

PS. In fact in my case this python file is a class for handle a physical device by CAN protocol, connection is initiated with many (~20) parameters and for now I need to create different resource file (with new names for all keywords) for every new device that comes (sometimes couple a day) to make it possible to use them in one test (they need to be tested in one test - every has some impact/influence to others). Any ideas for a workaroud?

If I understand this correctly, the idea is that when you have an import like
Resource    ../Keywords/my_resource.resource    ${10}    ${20}    AS    SimpleCase

the arguments are forwarded to this import in in the imported resource file:
Library  Path.SomeClass.SomeClass  ${Val1}  ${Val2}    AS    Inner

That's an interesting idea, but I don't know how it would work in practice. In your example you have just one import in the resource file with exactly the same number of arguments as passed to the resource file, but there could me more imports or that one import could have a different number of arguments.
Being able to somehow initialize resource files would be convenient, but I believe it should be done using a special keyword. For example, if a resource file would contain a keyword like Initialize we could automatically call it with possible arguments given to the Resource setting. This keyword could then do initialization work like set variables or import libraries/resources. I think we already have an issue about this.
I'm fairly certain there are ways to tackle your problem also with the features we have. This issue tracker is for bug reports and enhancement requests, but you can ask help from our friendly community on our Slack or Forum.

Hi @pekkaklarck . Thank you for your answer.
Yes you understand correctly. The different number (order) of arguments could be easily done with  named arguments:
Resource    ../Keywords/my_resource.resource    ${Something}    Val2=${10}    Val1=${20}    AS    SimpleCase
Resource    ../Keywords/my_resource.resource    ${Something Different}    Val1=${10}    Val2=${20}    AS    ComplicatedCase

The main goal is to have many "imports" of the same resource file in a one robot test file.
Of course there are ways to achieve this "also with the features we have", but I'm forced to write some Python code for that (then make a library instead of resource). It is not sufficient in my case where .resource files are written by people with no programming skills (analysts for instance).


Disabling the result section of an alias still calls chatops.post_result which fails

#cat alias_ping.yaml
name: "ping"
action_ref: "ec.host_pingable"
description: "Check if machine is pingable"
formats:
  - "ping {{server}}"
ack:
  enabled: false
result:
  enabled: false

Traceback (most recent call last):
  File "/opt/stackstorm/st2/local/lib/python2.7/site-packages/st2actions/runners/python_action_wrapper.py", line 179, in <module>
    obj.run()
  File "/opt/stackstorm/st2/local/lib/python2.7/site-packages/st2actions/runners/python_action_wrapper.py", line 116, in run
    output = action.run(**self._parameters)
  File "/opt/stackstorm/packs/chatops/actions/format_execution_result.py", line 42, in run
    raise Exception("Output of this template is disabled.")
Exception: Output of this template is disabled.

These expected failures make it difficult to monitor for other actual problems that cause failures.
Thanks

Thanks for the report.
This does indeed sound like a bug which we should fix.
/cc @lakshmi-kannan @emedvedev

Now that I think about it some more - we don't really have many options on the action level.
One option would be to utilize new ability of Python runner actions to return status flag and in this case instead of throwing we would log that output of this template is disabled and we would return something like True, 'Output of this template is disabled.
What do others think? /cc @lakshmi-kannan @emedvedev

Ideally, if the result output is disabled, then post_result shouldn't be called at all, so a clean solution to this problem wouldn't be on the action level. Status flag is fine, and if you submit a PR we can (and should) merge it, since it's better than what we have now, but then instead of "Disabling the result section of an alias still calls chatops.post_result which fails" we'll have "Disabling the result section of an alias still calls chatops.post_result," which is still a legit issue. :)

I agree, the problem with action not being called is that, afaik, is not achievable right now without the following:

One off change in the rules engine
Support for more flexible rule criteria - we would need to make alias some how available in the rule criteria context. I didn't really think much about it so don't even know if that's (easily) possible right now.

It's not possible without significant changes, that's mainly why we implemented it like that in the first place. I'm fine with the intermediate fix, just calling out that this is still somewhat of an issue that would be good to fix at some point.


utils._handle_date creates timezone-less pd.Timestamp objects

Description
Given the current utils._handle_date code
def _handle_date(date, tz=None):
    if not isinstance(date, pd.Timestamp):
        date = pd.to_datetime(date)

    if tz and date.tzinfo is None:
        date = date.tz_localize(tz)
    return date

passing in today from a timezone that's on the other side of the date boundary from US timezones may be problematic.
>>> pd.to_datetime('today')
Timestamp('2022-12-16 00:00:00.000000')
>>> pd.to_datetime('today').tzinfo is None
True
# Checking the equivalent in US/Eastern
>>> pd.to_datetime('2022-12-16 00:00:00.00000+0000').tz_convert('US/Eastern')
Timestamp('2022-12-15 19:00:00-0500', tz='US/Eastern')

Solution
I think the solution involves:

using pd.Timestamp(date, tz=tz)
enforcing tz from callers (which should always be self.default_timezone from ISO classes), or falling back to tz=tzlocal()
writing a boatload of tests

just adding an example of this issue I came across when running on a machine in different timezone
It's currently 2022-12-27 18:48:00 in the Ercot default timezone, but the time on the machine is '2022-12-28 00:47:53'. the following call fails
gridstatus.Ercot().get_fuel_mix("today")

Traceback (most recent call last):
  File "/app/update_iso.py", line 469, in <module>
    raise e
  File "/app/update_iso.py", line 463, in <module>
    update_iso(iso)
  File "/app/update_iso.py", line 399, in update_iso
    UpdateFuelMix(iso).run(db)
  File "/app/update_iso.py", line 67, in run
    items = self.get_items(date=date, *args, **kwargs)
  File "/app/update_iso.py", line 87, in get_items
    df = self.iso.get_fuel_mix(date="today")
  File "/root/.cache/pypoetry/virtualenvs/grid-status-9TtSrW0h-py3.10/lib/python3.10/site-packages/gridstatus/ercot.py", line 163, in get_fuel_mix
    pd.DataFrame(r["data"][today_str])
KeyError: '2022-12-28'