Refactoring of the main classes

Description
What is this PR

[x] Bug fix
[x] Addition of a new feature
[x] Other

Why is this PR needed?
Refactor the main analysis code.
What does this PR do?
Legend:
❌: removes
💭: changes
➕: adds

❌ Removes a lot of modules that were useful in the exploration stages;
❌ Removes contrast enhancement (see: #11 ) from the pipeline and related methods;
❌ Removes "adjust increment" (1) boolean as I think I should not give the user this flexibility, increments should be always corrected to achieve a full 360 rotation, as this improves the overall derotation;
💭 Renames a few methods;
💭 Replaces np.nonzero with np.where (just personal preference, they seem equivalent for my use-case);
💭 Changes handling of number of rotations. Now it is estimated from the rotation signal;
➕ Adds automated creation of folders for saving purposes;
➕ Adds a few comments to separate the methods in groups (signal processing, derotation, saving);
💭 Improve usage of pandas syntax
➕ Overwrites the method check_rotation_number_after_interpolation in the IncrementalPipeline class

I can provide some datasets to test the pipeline locally.
Explanations
(1) : with "increments" I refer to the angle resolution of the motor, i.e. the smallest increment in angles that motor is able to report. 0.2 deg in our case.
How has this PR been tested?
Tested locally with tests that were made before.
Is this a breaking change?
No
Does this PR require an update to the documentation?
Not for now.
Checklist:

[x] The code has been tested locally
[ ] Tests have been added to cover all new functionality
[ ] The documentation has been updated to reflect any changes
[x] The code has been formatted with pre-commit

(derotation-ev) C:\Users\Joe\work\git-repos\derotation>python examples/derotate.py
2024-07-25 14:42:50 PM INFO     2024-07-25 14:42:50 PM - INFO - MainProcess fancylog.py:326 - Starting logging                                                                                fancylog.py:326
                       INFO     2024-07-25 14:42:50 PM - INFO - MainProcess fancylog.py:327 - Not logging multiple processes                                                                                fancylog.py:327
                       INFO     2024-07-25 14:42:50 PM - INFO - MainProcess full_rotation_pipeline.py:122 - Loading data...                                                                               full_rotation_pipeline.py:122
(derotation-ev) C:\Users\Joe\work\git-repos\derotation>python examples/derotate.py
2024-07-25 14:42:58 PM INFO     2024-07-25 14:42:58 PM - INFO - MainProcess fancylog.py:326 - Starting logging                                                                                fancylog.py:326
                       INFO     2024-07-25 14:42:58 PM - INFO - MainProcess fancylog.py:327 - Not logging multiple processes                                                                                fancylog.py:327
                       INFO     2024-07-25 14:42:58 PM - INFO - MainProcess full_rotation_pipeline.py:122 - Loading data...                                                                               full_rotation_pipeline.py:122
2024-07-25 14:42:59 PM WARNING  2024-07-25 14:42:59 PM - WARNING - MainProcess tifffile.py:4539 - <tifffile.TiffFile 'rotation_00001.tif'> <asarray> failed to reshape (8258, 256, 256) to (8500, 256, 256), raised    tifffile.py:4539
                                ValueError('cannot reshape array of size 541196288 into shape (8500,256,256)')
Traceback (most recent call last):
  File "C:\Users\Joe\work\git-repos\derotation\examples\derotate.py", line 3, in <module>
    derotate = FullPipeline("full_rotation")
  File "C:\Users\Joe\work\git-repos\derotation\derotation\analysis\full_rotation_pipeline.py", line 46, in __init__
    self.load_data()
  File "C:\Users\Joe\work\git-repos\derotation\derotation\analysis\full_rotation_pipeline.py", line 144, in load_data
    ) = get_analog_signals(
  File "C:\Users\Joe\work\git-repos\derotation\derotation\load_data\custom_data_loaders.py", line 72, in get_analog_signals
    data = convert_to_volts(data)
  File "C:\Users\Joe\work\git-repos\derotation\derotation\load_data\custom_data_loaders.py", line 49, in convert_to_volts
    data = -10 + 20 * (data + 2**15) / 2**16
OverflowError: Python integer 32768 out of bounds for int16

Thank you Joe, it seems that this issue might be related to a newer version of numpy. I just upgraded it and found the same exception.

Otherwise was working okay on numpy 1.23.1, will try on 2.0 after the fix. I had a couple of warnings I will dump here in case they are relevant:
2024-07-25 16:18:18 PM INFO     2024-07-25 16:18:18 PM - INFO - MainProcess fancylog.py:326 - Starting logging                                                                                fancylog.py:326
                       INFO     2024-07-25 16:18:18 PM - INFO - MainProcess fancylog.py:327 - Not logging multiple processes                                                                                fancylog.py:327
                       INFO     2024-07-25 16:18:18 PM - INFO - MainProcess full_rotation_pipeline.py:121 - Loading data...                                                                               full_rotation_pipeline.py:121
                       WARNING  2024-07-25 16:18:18 PM - WARNING - MainProcess tifffile.py:4539 - <tifffile.TiffFile 'rotation_00001.tif'> <asarray> failed to reshape (8258, 256, 256) to (8500, 256, 256), raised    tifffile.py:4539
                                ValueError('cannot reshape array of size 541196288 into shape (8500,256,256)')
2024-07-25 16:18:20 PM INFO     2024-07-25 16:18:20 PM - INFO - MainProcess full_rotation_pipeline.py:170 - Dataset rotation_00001 loaded                                                                 full_rotation_pipeline.py:170
                       INFO     2024-07-25 16:18:20 PM - INFO - MainProcess full_rotation_pipeline.py:171 - Filename: derotated_image_stack                                                               full_rotation_pipeline.py:171
                       INFO     2024-07-25 16:18:20 PM - INFO - MainProcess full_rotation_pipeline.py:249 - Finding rotation ticks peaks...                                                               full_rotation_pipeline.py:249
2024-07-25 16:18:22 PM INFO     2024-07-25 16:18:22 PM - INFO - MainProcess full_rotation_pipeline.py:324 - Cleaning start and end rotation signal...                                                     full_rotation_pipeline.py:324
                       INFO     2024-07-25 16:18:22 PM - INFO - MainProcess full_rotation_pipeline.py:349 - Creating signed rotation array...                                                             full_rotation_pipeline.py:349
                       INFO     2024-07-25 16:18:22 PM - INFO - MainProcess full_rotation_pipeline.py:371 - Dropping ticks outside of the rotation period...                                              full_rotation_pipeline.py:371
2024-07-25 16:18:25 PM INFO     2024-07-25 16:18:25 PM - INFO - MainProcess full_rotation_pipeline.py:407 - Ticks dropped: 8.                                                                             full_rotation_pipeline.py:407
                                Ticks remaining: 137958
                       INFO     2024-07-25 16:18:25 PM - INFO - MainProcess full_rotation_pipeline.py:436 - Number of rotations is as expected                                                            full_rotation_pipeline.py:436
                       WARNING  2024-07-25 16:18:25 PM - WARNING - MainProcess full_rotation_pipeline.py:457 - Number of ticks is not as expected: 137958.                                                full_rotation_pipeline.py:457
                                Expected ticks: 144000.0
                                Delta: -6042.0
                       INFO     2024-07-25 16:18:25 PM - INFO - MainProcess full_rotation_pipeline.py:509 - New increment example: 0.209                                                                  full_rotation_pipeline.py:509
                       INFO     2024-07-25 16:18:25 PM - INFO - MainProcess full_rotation_pipeline.py:522 - Interpolating angles...                                                                       full_rotation_pipeline.py:522
2024-07-25 16:18:27 PM INFO     2024-07-25 16:18:27 PM - INFO - MainProcess full_rotation_pipeline.py:562 - Cleaning interpolated angles...                                                               full_rotation_pipeline.py:562
2024-07-25 16:18:29 PM INFO     2024-07-25 16:18:29 PM - INFO - MainProcess full_rotation_pipeline.py:616 - Calculating angles by line and frame...                                                       full_rotation_pipeline.py:616
                       INFO     2024-07-25 16:18:29 PM - INFO - MainProcess full_rotation_pipeline.py:688 - Plotting rotation ticks and rotation on signal...                                             full_rotation_pipeline.py:688
2024-07-25 16:18:34 PM INFO     2024-07-25 16:18:34 PM - INFO - MainProcess full_rotation_pipeline.py:732 - Plotting rotation angles...                                                                   full_rotation_pipeline.py:732
2024-07-25 16:18:35 PM INFO     2024-07-25 16:18:35 PM - INFO - MainProcess full_rotation_pipeline.py:236 - ✨ Analog signals processed ✨                                                                full_rotation_pipeline.py:236
                       INFO     2024-07-25 16:18:35 PM - INFO - MainProcess full_rotation_pipeline.py:822 - Starting derotation by line...                                                                full_rotation_pipeline.py:822
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2114195/2114195 [10:20<00:00, 3408.86it/s]
2024-07-25 16:28:55 PM INFO     2024-07-25 16:28:55 PM - INFO - MainProcess full_rotation_pipeline.py:832 - ✨ Image stack rotated ✨                                                                     full_rotation_pipeline.py:832
2024-07-25 16:28:57 PM INFO     2024-07-25 16:28:57 PM - INFO - MainProcess full_rotation_pipeline.py:941 - Masked image saved in                                                                         full_rotation_pipeline.py:941
                                C:/Users/Joe/work/git-repos/derotation/joe-example-data/output/data_folder/


EC2 instance name in the console should be same as Nodepool name in v0.32.2

Description
What problem are you trying to solve?
Currently EC2 instance name  is showing as Private DNS of the instance instead it should be nodepool name. Earlier version 0.30.0 instances had name the provisioner name as ec2 instance name. we need similar node pool name in ec2 instance name
How important is this feature to you?
it is very important to search the instances with cluster names.
Please find the attached images which shows the difference in Ec2 instance naming.

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

You should still be able to search for instances by NodePool, it's just not the Name tag anymore. Karpenter still adds the karpenter.sh/nodepool tag to each instance which you should be able to filter by (full list of default tags). Does this not work for your use case?

@jmdeal I know we can search with the tags but it is good to have Name format as earlier version.

Are there any particular reasons why its important for the Name tag in particular to be the NodePool (vs the karpenter.sh/nodepool tag)? This change was a part of v1beta1 since the name of the node is typically a more sensible default for the Name tag on the instance than the NodePool. You can still overwrite the Name tag via the EC2NodeClass if you really want to change it, but the tag values must be static.

No. we need Name tag as karpenter.sh/nodepool/ only
but in 0.32.2 version Name is coming as private dns

Yes, one of the v1beta1 changes introduced in v0.32.x was the new default for Name, the name of the node on the cluster, which in this case is its private DNS. I'm wondering what it is you can't do now that you used to be able to before. The nodepool is still tagged on the instance so I'm wondering why it is important for it to be Name rather than karpenter.sh/nodepool.

Adding the detail in the beta migration docs that covers this change.

You can pass in this way.
apiVersion: karpenter.k8s.aws/v1beta1 kind: EC2NodeClass metadata:   name: karpenter-poc spec:   amiFamily: AL2 # Amazon Linux 2   role: "KarpenterNodeRole-xyz" # replace with your cluster name   subnetSelectorTerms:     - tags:         karpenter.sh/discovery: "xyz" # replace with your cluster name   securityGroupSelectorTerms:     - tags:         karpenter.sh/discovery: "xyz" # replace with your cluster name   tags:     managed-by: karpenter     Name: xyz

Pass this way:-
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
metadata:
name: karpenter-poc
spec:
amiFamily: AL2 # Amazon Linux 2
role: "KarpenterNodeRole-beta-staging" # replace with your cluster name
subnetSelectorTerms:
- tags:
karpenter.sh/discovery: "beta-staging" # replace with your cluster name
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: "beta-staging" # replace with your cluster name
tags:
managed-by: karpenter
Name: karpenter-poc


[docs]: Add CA bundle information

Fixes #103 (not mergeable until https://github.com/coreos/fcct/pull/102 gets merged)

#102 merged.  Please rebase, and change your commit message to be consistent with the style of other commits in the repo.

Done!

https://github.com/coreos/fcct/pull/102 has merged.

Followup in #105.


SONOFF SwitchMan Scene Controller  R5

@bwp91 ,
I've not purchased one yet, but would like to know what the potential of supporting the SONOFF SwitchMan Scene Controller  R5 in the plugin to use as a HomeKit Scene button. To me it looks much more aesthetic than any other Scene button out there, but it is evidently not functioning thru ZigBee or WiFi, but possibly something like Bluetooth and needing another device with an "eWeLink Remote Gateway".

Please, let me know your thoughts about support. Thanks.

Does this not work through wifi as well as some local communication?

It’s very hard to tell whether it can be implemented without someone having the device to share

It says it uses the "eWeLink-Remote gateway". That probably mean it connects to a gateway like ZigBee, z-wave and Thread devices do. Doubt it uses wifi itself to connect. The M5 switch is pictured as a device that provides the gateway for the R5.
I guess time will tell.

Looks like this device is wifi too.
The plugin is alerted when a button is pressed: useful for adding extra automations in homekit.
However the plugin cannot simulate and “send” a command as if a button were pressed.
Hope this makes sense!

Hi,
Closing this just as been a little overwhelmed with issues recently.
If this is still an issue or a feature you would like implemented then please do re-open this ticket!
Thanks for your understanding!


added terms and conditions

@param-code
I have added Terms and Conditions page successfully, could you please consider it as level2 if you like it
Kindly check it out
https://github.com/user-attachments/assets/6965ac1a-c848-477e-b7ef-afad739333e4

Good Work.


Re-type argument in local-to-global transformations

The local-to-global eval_trafo! functions currently operate on the Vector type.
However, in trying to extend VoronoiFVM.edgevelocities to accomodate velocity fields provided by ExtendableFEM.jl, we need to make use of coordinate transformations on vectors previously declared as StaticArrays which are not a subtype of Vector.
It makes sense to adjust the type of x then and I suppose AbstractArray is a safe bet. All tests run through for me on this.

Completely reasonable IMHO, thanks! @chmerdon , we should merge and make a new patch version.


Is Version 0.5 gem out of sync with github?

My Ruby runtime and IDE say there is no method =find_events_by_extended_properties_in_range=
On inspection I see:

 gem which google_calendar
/Volumes/Storage/martincleaver/.chefdk/gem/ruby/2.1.0/gems/google_calendar-0.5/lib/google_calendar.rb

Is the gem source out of sync?
Thanks,
Martin.

The answer, according to https://rubygems.org/gems/google_calendar is that the gem has not been updated since Nov 2014.

Looks like https://github.com/rdp/specific_install is a workaround.

Wow, how time flies, he sheepishly said.  It has been a while and there have been quite a few additions.  I'll push a new version shortly.

The date on the last push was wrong... it was actually released last May.  I went ahead a published a new version anyway.

Thanks Steve!


How to get callback from cancel and Reload?

How can I get call back from cancel and Reload on clicking?

As far as I know this isn't possible with the beforeunload event.
It might be possible to detect this with some custom logic that listens to both beforeunload and unload events.


Fixes 13 and 14

Tests working, only need to make python binding work

Codecov Report
Attention: Patch coverage is 18.86792% with 43 lines in your changes are missing coverage. Please review.

Project coverage is 51.11%. Comparing base (a238c72) to head (92a4598).

Files
Patch %
Lines

src/name2data.rs
11.62%
38 Missing :warning:

src/record2chunk.rs
50.00%
5 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##              dev      #15      +/-   ##
==========================================
- Coverage   53.63%   51.11%   -2.52%
==========================================
  Files           7        7
  Lines         591      626      +35
==========================================
+ Hits          317      320       +3
- Misses        274      306      +32

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


splat arguments for permit_actions and forbid_actions matchers

I found myself doing the following often
it { should permit_actions(:update, :show) }
I always forget that permit_actions can only accept an array and vice versa for forbid_actions.
My commit also keeps people in mind who like to pass array instead of mere arguments.

Thanks for the PR. Merged and released as part of v1.7.0.


Mysterious Null Record

Hi,
For some reason, querying the $stack context variable of a TRAVERSE triggers a PyOrientNullRecordException, even as running the same command inside OrientDB studio returns lists of strings.
I can reproduce this by changing line 1060 of tests/test_ogm.py (develop branch) to:
traversals_query = g.query(traversal).what(QV.stack()).filter(QV.depth() > 0)
Which maps to:
SELECT $stack FROM (TRAVERSE in('on_top_of') FROM #17:1) WHERE $depth > 0

Hi @TropicalPenguin ,
i will check the internals of the driver as soon as possible.
Are you using Binary or CSV serialization?
Can you send me some data/schema on wich i can run the query and reproduce the issue?
Thank you in advance.

This is with CSV serialization.
Can trigger it pretty directly by adding:
import pdb; pdb.set_trace()
g.client.command('SELECT $stack FROM (TRAVERSE in(\'on_top_of\') FROM {}) WHERE $depth > 0'.format(traversals[0]._id))

towards the end of OGMTestTraversals.testTraversals()


Clients get out of sync from centralised datastore

Current Behavior
If you have two separate Dashboard clients open and connected to a centralised Node-RED instance with Dashboard 2.0, the server has a single source of truth.
If one client updates that data, e.g. through a toggle switch, the centralised store of data is updated. However, other clients are not aware of this change until they  refresh, which is not the desired behaviour. Any clients connected should update if a client has been the driver of change (i.e. user clicks a toggle).
This already works for all instance where a node is injected with a new value.
Expected Behavior
All clients should reflect the server-side datastore at all times, unless using multi-user authentication/Dashboards architecture
Steps To Reproduce

Add a toggle switch
Open two browsers connecting to the Dashboard
Toggle the switch on one of the clients
Note that the other client doesn't automically update

Environment

Dashboard version: 1.4.0

Have you provided an initial effort estimate for this issue?
I have provided an initial effort estimate

This will require a little re-think of our underlying architecture, as this should just be working out of the box, but the events flow doesn't allow for it currently.

Forum Discussion: https://discourse.nodered.org/t/how-to-retain-the-state-of-a-button-on-and-off-between-page-updates-and-different-browsers/86404/8?u=joepavitt

Also https://discourse.nodered.org/t/dashboard-2-changes-in-one-viewer-not-reflected-in-another/85949/5

Sorry @uschmelmer - no updates on this currently

So we use widget-change as an event to register a "change: of state. This event is found in:

Button Group
Dropdown
Number Input
Radio Group
Slider
Switch
Text Input

I can make them all synchronise, but some of them feel odd to syncronise, particularly 7, and maybe even 2?

@colinl would really value your opinion here too?

I think they should all synchronise.
Text input is conceptually the same as number input, it just happens that one is entering text rather than a number.
Similarly a dropdown is just a text or number input with a limited set of values.
Watch out for the switch node when in 'show state of input' mode.  It would be easy to break that I imagine.

Would it be possible to add an option to ui-node's settings to enable and
disable sync. With sync enabled by default?
Colin Law @.***> schrieb am Di., 12. Nov. 2024, 18:04:

I think they should all synchronise.
Text input is conceptually the same as number input, it just happens that
one is entering text rather than a number.
Similarly a dropdown is just a text or number input with a limited set of
values.
Watch out for the switch node when in 'show state of input' mode. It would
be easy to break that I imagine.
—
Reply to this email directly, view it on GitHub
https://github.com/FlowFuse/node-red-dashboard/issues/679#issuecomment-2471099892,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD24XQN4573YMYFEWNREOX32AIYI3AVCNFSM6AAAAABQZLMU56VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZRGA4TSOBZGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Can you describe the use case for not wanting sync?

At least for text input it could be usefull to disable sync for example if
you want to gather log input simultaniously  from different terminal
stations.
Colin Law @.***> schrieb am Di., 12. Nov. 2024, 18:57:

Can you describe the use case for not wanting sync?
—
Reply to this email directly, view it on GitHub
https://github.com/FlowFuse/node-red-dashboard/issues/679#issuecomment-2471212626,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD24XQNWRNCP5VHGANOWX332AI6QPAVCNFSM6AAAAABQZLMU56VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZRGIYTENRSGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

Can you describe the use case for not wanting sync?

In all of your internal Dashboards at FF, I would say we'd favour no syncing, but in the HMI use case on a Factory Floor, I can see the sync being favourable.
I built a first iteration today, ans it works very well, and utilises the existing "Client Data" tab, where you can check on/off syncing already, to decide whether to sync to different sessions or not.


Move to XFDF

The current library we are using js-fdf seems like it is deprecated (last commit to any code was over 2 years ago). Might want to look into moving to xfdf as it seems better supported.

This was fixed in PR #30


Output test results in CI

Now that printing is reduced, print all test errors. Asserts should show value comparisons without print statements

Why no checks running for this PR?


navigate history (back / forward)

What is your Test Scenario?
emulate the user pushing back forward in the history
What are you suggesting?
like navigateTo() navigateBack() and navigateForaward()
What alternatives have you considered?
manual testing

@arlac77
Hello,
At present, the history (back / forward) navigation is fully supported by using ClientFuntion:
import { ClientFunction } from 'testcafe';

const getLocation = ClientFunction(() => window.location.href);

 fixture `fixture`
    .page `http://google.com`;

 test('test history navigation', async t => {
    await t
        .expect(getLocation()).contains('google')
        .navigateTo('http://js.devexpress.com/')
        .expect(getLocation()).contains('/js.devexpress');

    const goBack = ClientFunction(() => window.history.back());
    await goBack();

    await t.expect(getLocation()).contains('google');
});


Disable import fix for method of 'export =' value

Fixes #20191

@weswigham @mhegazy Please re-review


Token stealing

Why would you need to send the token to your own closed source backend server to "check" it?
Simply do a request to https://discord.com/api/users/@me with Authorization: Bot {token}
On 200, it's a valid bot token
On 401 -> do a request to https://discord.com/api/users/@me with Authorization: {token}
On 200, it's a valid user token
On 401, it's an invalid token.
The code published here is almost certainly stealing any tokens that are being submitted. Just write your own small script to do the things like above to verify a token. No "queue" or "api limits", and no getting ur token stolen

If you want code with such requests, use the previous versions of my checker. Why am I using a server? Firstly, these are the proxies that I buy for processing. Secondly, the server is used to connect other services via api. Let's process logs from a token logger via api or make a website or a telegram bot to check tokens. If you really want to accuse someone of stealing tokens, there are other closed source token checker services at the top of the github. Well, let me remind you: if you are afraid that this is a token thief, just do not use it.
PS: Your requests for validating tokens are not accurate. You need to make 1 more request to the discord service to verify the token.
https://discord.com/api/v9/users/@me/billing/payment-sources
tokenPayments.status === 200 - status = "valid"
else status="unverified"


Profile Shortcut fails to open with .cmd file

Environment
Windows build number: [run `[Environment]::OSVersion` for powershell, or `ver` for cmd]
Windows Terminal version (if applicable): 0.7.3291.0

Any other software?
.cmd file

Steps to reproduce

Create file named test.cmd
Add some command to the file
Create a terminal profile with the startingDirectory variable pointed to the folder of the cmd file, and the commandLine variable equal to the name of the file (test.cmd)
Attempt to open the profile in terminal

Expected behavior
Expected behavior is to open the cmd file and execute the commands within the file.
Actual behavior
Actual behavior is the terminal flashes like it quickly opened and closed the file.  2 weeks ago it would open the file and keep it open while executing the exact same commands. (the script I am using stays open until it is manually closed).

Sorry -- this is now by design. Terminal will no longer execute files from the startingDirectory directly. You can either set commandline: "%COMSPEC% /c test.cmd" or specify a full path to test.cmd.


How to use Streams in Node.js

We ask that you please be patient as our team works through approving and publishing all articles/tutorials in a timely manner. Allow 1-3 days for a topic to be reviewed and/or approved - allow 3-7 days for an articles to be reviewed and/or published.
Be sure to visit our Resources Page for tools, resources, and example articles to go over.
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
NOTE: We tend to stray away or tend not to publish reviews/comparisons of commercial product offerings.
We're looking for the first 2-3 paragraphs of the article that appropriately summarize what your article will be about.
Proposed title of article
How to use Streams in Node.js
Introduction paragraph (2-3 paragraphs):
Streams are objects that allow one to read data from a source or write to a destination in a continuous manner. Node.js has four types of streams; readable, writable, duplex, and transform. Each stream has an eventEmitter instance that emits different events at several intervals.
These events are used to track and monitor the stream. Some of the most commonly used events are data, end, error, and finish. This article aims to take you through reading an writing a file using streams in Node.js.
Key takeaways:
The reader will;

Know what streams are.
Know various usages of streams in Node.js.
Understand all operations that can be done with streams in Node.js.
Understand the importance of using streams.

References:
N/A
Templates to use as guides

How To Guide Template
Software Review Template
Tutorial Template

Seems like a helpful answer - not sure if it would overlap with article here or if your article could build upon it - if it discusss similar subjects.
otherwise - approved. @kayere

Hello @hectorkambow - I have checked the article that you have highlighted. It does not overlap with the one I have suggested. The both talk about different concepts.


Live

test PR

Docs Build status updates of commit 383d176:
:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Test PR


Add --preset-vars-file to build-script for easier preset vars handling

It's not always convenient to pass preset substitution arguments on an interactive command-line. Sometimes one might also need to generate these vars automatically, outside of a build-script invocation and also store those vars in a file for later reuse.
This change adds a new optional --preset-vars-file customization point to build-script, which allows users to pass a a file with newline separated key-value pars for preset variables substitution in addition to passing those in a direct build-script invocation.

@swift-ci smoke test

@swift-ci build toolchain

@swift-ci smoke test macos

macOS toolchain failure is unrelated

@swift-ci build toolchain macos

@swift-ci build toolchain macos


deploy new universalresolver

Can this be deployed to sepolia too, now that the other contracts are on there?


[#1707] Fix indent of DataWriter and adding test case

This fixes #1707 and indent DataWriter well on end tags

Closing per test-case was not good one.
Formatting is right


try using ephemeral linux runner for nix test

@ChristianoBraga this fixes the failing test on ubuntu (see https://github.com/runtimeverification/evm-semantics/actions/runs/4176194430/jobs/7232158809)

Reopen if needed.


Problem with Reddit(string accessToken) when the accesstoken was retrieved with grant_type as 'password'

So while I was thrashing around trying to implement OAuth2 in my app, I actually manually went out to reddit and retrieved an accesstoken, but with grant_type as password.  Then I created my app's Reddit object with the constructor Reddit(string accessToken).  This works at first, but after an hour (when the token expires), the Reddit object can no longer be used.
So basically I think this constructor is assuming that token is of grant_type type authorization_code.  I haven't tested this, but this is what I assume.
However, this might be misleading functionality to users.  When would a user want to use this version of the constructor, as opposed to just having RedditSharp retrieving the token?
I'm actually interested in contributing to the project, and so any guidance to fixing this would be appreciated.  Is there a Slack channel?

Hmm, what are you using the grant_token for? Are you using it for a reddit bot or reddit app?

As far as I know all token requests to Reddit OAuth need to specify the grant_type.  This is a bot, but of course I also have registered a Reddit app with the bot's account with a client secret and redirect URL.
I mean I guess this constructor could be used if the user wanted to refresh the token themselves.

Oh I should mentioned that I got my own bot working fine by using BotWebAgent(string username, string password, string clientID, string clientSecret, string redirectURI).  Which behind the scenes uses a grant_type of 'password', and then refreshes the token before the existing one expires.  Works fine for me.

Oh, well, if someone wanted to create an auto-refereshing webAgent the RefreshTokenWebAgent works fine iirc

Well, having not looked at the code for that class yet but just looking at the name, I think that would be for refresh_tokens, which are different than script type apps which use a grant_type of 'password'. Script apps aren't given a refresh token.  You are just getting a token which expires in an hour, and you can just follow the same procedure the get a new token when the old one is expiring.
I think the problem is that the constructor is just kind of misleading, considering most bots are probably script type apps, which are using a grant_type of 'password'.  So we could modify the existing constructor to accommodate 'password' access_tokens, or we could just try to make it more apparent to the user that this constructor doesn't support those types of tokens.

Hmm, you could add that to the documentation, that's always a good thing

Documentation as in change the comments above the constructor so the user can get a more clear message?
I noticed that the example project under TestRedditSharp is very outdated, and is using stuff that doesn't even exist in the project anymore.  Maybe I could start contributing by just showing some very simple examples?

Yhea, stuff like that should definitely help a lot.

Look for the BotWebAgent. It keeps a token fresh for you

Yeah I figured that out finally, and it's working perfectly for me.  But this issue isn't so much about that.  I will close it though, because now I know what I should do to contribute.  Thanks guys.


NetBeans 12.0 Profiler crashes with EXCEPTION_ACCESS_VIOLATION when trying to profile Methods

I am doing Java development on Windows 8.1, using NetBeans 12.0 and AdoptOpenJDK <IP_ADDRESS>-hotspot. I'm trying to run the NetBeans Profiler. If I select to profile Methods, Java crashes. This is what comes out on the console. I will also attach the log that got dumped:
Profiler Agent: Waiting for connection on port 5140, timeout 10 seconds (Protocol version: 18)
Profiler Agent: Established connection with the tool
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.netbeans.lib.profiler.server.ClassLoaderManager to method java.lang.ClassLoader.findLoadedClass(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.netbeans.lib.profiler.server.ClassLoaderManager
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Profiler Agent: Local accelerated session
Starting main
In TestClass Constructor
In RunTestClass
Type something:
48484848484848484848

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff893055fab, pid=11300, tid=18484

JRE version: OpenJDK Runtime Environment AdoptOpenJDK (11.0.9+11) (build 11.0.9+11)
Java VM: OpenJDK 64-Bit Server VM AdoptOpenJDK (11.0.9+11, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
Problematic frame:
V  [jvm.dll+0x5a5fab]

No core dump will be written. Minidumps are not enabled by default on client versions of Windows

An error report file with more information is saved as:
D:\mysoftware\NB12.0_TestProjects\TestProfilerNoFX\hs_err_pid11300.log

If you would like to submit a bug report, please visit:
https://github.com/AdoptOpenJDK/openjdk-support/issues

Profiler Agent: Initializing...
Profiler Agent: Options: >C:\Program Files\NetBeans-12.0\netbeans\profiler\lib,5140,10<
Profiler Agent: Initialized successfully
Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
D:\mysoftware\NB12.0_TestProjects\TestProfilerNoFX\nbproject\build-impl.xml:1460: The following error occurred while executing this line:
D:\mysoftware\NB12.0_TestProjects\TestProfilerNoFX\nbproject\build-impl.xml:1330: The following error occurred while executing this line:
D:\mysoftware\NB12.0_TestProjects\TestProfilerNoFX\nbproject\build-impl.xml:936: Java returned: 1
BUILD FAILED (total time: 2 seconds)
It doesn't matter how simple the NetBeans project code is. It always crashes.
TO REPRODUCE:
Install AdoptOpenJDK <IP_ADDRESS>-hotspot on Windows
Install NetBeans 12.0 LTS, it is available from Apache
Start NetBeans
Import the NetBeans Project ProfileCrashNoFX.zip I will attach to this issue.
Verify that there is a  JDK 11 Platform created in the Platform manager with a path to where you have AdoptOpenJDK <IP_ADDRESS>-hotspot installed, and that this platform is selected under the Project Properties/Libraries settings, and for the Source setting.
If you do not have JAVA_HOME set to the path of AdoptOpenJDK <IP_ADDRESS>-hotspot, you can edit the netbeans.conf file, which is in Program Files<where you have Netbeans 12.0>\netbeans\etc and enter this for netbeans_jdkhome
netbeans_jdkhome="C:\Program Files\AdoptOpenJDK\jdk-<IP_ADDRESS>-hotspot"
Build the project.
Right click on the Project name under the Projects tab and select Profile from the pop-up menu
A Profile tab should open in the Edit area of the screen
Click the down arrow next to the word Profile that is next to a green right arrow
Select Methods
Click the Green arrow to start the profiler
The profiler should run the application. The application displays a few strings on the Console and asks for a line of input. Should be able to type in the input and press enter and have the input displayed back. Instead the JVM crashes.
Java version:
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9+11, mixed mode)
What is your operating system and platform?
Windows 8.1 Professional on ASUS laptop with Intel i7-4720HQ CPU @ 2.60 GHz

How did you install Java?
Used OpenJDK11U-jdk_x64_windows_hotspot_11.0.9_11.msi
Did it work before?
This was the first time I tried it
Did you test with other Java versions?
Yes. Tried Java 9.0.4 both for compiling and running the project, and for running NetBeans and the profiler. Got the same result.
Tried AdoptOpenJDK <IP_ADDRESS>-hotspot for both compiling and running the project, and for running NetBeans and the profiler. Same result.
hs_err_pid11300.log
TestProfilerNoFX.zip

Sorry about the large font that got pasted in. It didn't look like that until after I submitted.

The crash happened in profilerinterface.dll. It's therefore not a Java issue. Please see https://issues.apache.org/jira/browse/NETBEANS-1428.

Thank you. Your message ended up in my spam folder and I didn't find it until today.
Lisa
Sent with ProtonMail Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday, November 19, 2020 2:21 AM, Andreas Ahlenstorf<EMAIL_ADDRESS>wrote:

The crash happened in profilerinterface.dll. It's therefore not a Java issue. Please see https://issues.apache.org/jira/browse/NETBEANS-1428.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Add support for glitching gifs

It would be cool if you could input a gif and glitch it.

Working on it! This will add support for GIFs in the script, but not the class. The library should be left modular.
There will be examples in test_script.py as to how one can use the library to glitch GIFs into GIFs though

@EnderShadow Just added in v0.0.8! Now you can glitch GIFs using glitch_gif + you can also pass in Image objects instead of path now!
Check it out and let me know if you encounter any bugs!


currently no relationships between CHEBI:70800 and CHEBI:70783

Hi ChEBI Team,
As an user, I would like having a direct relation between this 2 compounds (is conjugate acid of/is conjugate base of )
CHEBI:70800 CDP-4-dehydro-3,6-dideoxy-α-D-glucose
CHEBI:70783 CDP-4-dehydro-3,6-dideoxy-α-D-glucose(2−)
the fact that CHEBI:70800 has currently only the relationship
CDP-4-dehydro-3,6-dideoxy-α-D-glucose (CHEBI:70800) is a CDP-4-dehydro-3,6-dideoxy-D-glucose ([CHEBI:17817)
makes me wondering if
CHEBI:58283 CDP-4-dehydro-3,6-dideoxy-D-glucose(2-) (no reaction associated to this compound)
AND
CHEBI:70783 CDP-4-dehydro-3,6-dideoxy-α-D-glucose(2−) (https://www.rhea-db.org/rhea/19653)
should be merged?
Many thanks in advance for your help.
Anne

Hi Anne,
The conjugate acid/base relationship has been added for CHEBI:70800 and CHEBI:70783.
CHEBI:58283 and CHEBI:70783 cannot be merged since they are different structures. One of the entries has an α-D-glucose moiety in the structure and the other has a D-glucose moiety.


'Generating Deployment Script' step consistently failing during Zip Push Deploy - applicationinsights node module exception

Cross posting from 'Generating Deployment Script' step consistently failing during Zip Push Deploy - applicationinsights node module exception
Repro steps.
Our project consistently builds on our local dev machine, and even when we attempt to deploy a zip file that was previously deployed successfully (and currently running in the deployed build), this error still reproduces.
We usually use Zip Push Deploy via the Kudu API, but have also attempted using the Kudu UI and encountered the same issue.
The issue still reproduces after starting the web app.
The log/error given by the failure.
After the deployment step 'Generating Deployment Script' we get the following error:
2022-07-19T21:39:58.0694341Z : Using the following command to generate deployment script: 'azure site deploymentscript -y --no-dot-deployment -r "D:\local\Temp\zipdeploy\extracted" -o "D:\home\site\deployments\tools" --basic --sitePath "D:\local\Temp\zipdeploy\extracted"'.
2022-07-19T21:40:01.6167091Z : D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\FileSystemHelper.js:43
2022-07-19T21:40:01.6167091Z : exports.statAsync = util_1.promisify(fs.stat);
2022-07-19T21:40:01.6319568Z : ^
2022-07-19T21:40:01.6475574Z :
2022-07-19T21:40:01.6475574Z : TypeError: util_1.promisify is not a function
2022-07-19T21:40:01.6631792Z : at Object. (D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\FileSystemHelper.js:43:28)
2022-07-19T21:40:01.6631792Z : at Module._compile (module.js:570:32)
2022-07-19T21:40:01.678833Z : at Object.Module._extensions..js (module.js:579:10)
2022-07-19T21:40:01.678833Z : at Module.load (module.js:487:32)
2022-07-19T21:40:01.6944674Z : at tryModuleLoad (module.js:446:12)
2022-07-19T21:40:01.6944674Z : at Function.Module._load (module.js:438:3)
2022-07-19T21:40:01.7100815Z : at Module.require (module.js:497:17)
2022-07-19T21:40:01.7100815Z : at require (internal/module.js:20:19)
2022-07-19T21:40:01.7256807Z : at Object. (D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\InternalAzureLogger.js:48:24)
2022-07-19T21:40:01.7256807Z : at Module._compile (module.js:570:32)
2022-07-19T21:40:01.7569624Z : D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\FileSystemHelper.js:43\r\nexports.statAsync = util_1.promisify(fs.stat);\r\n ^\r\n\r\nTypeError: util_1.promisify is not a function\r\n at Object. (D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\FileSystemHelper.js:43:28)\r\n at Module._compile (module.js:570:32)\r\n at Object.Module._extensions..js (module.js:579:10)\r\n at Module.load (module.js:487:32)\r\n at tryModuleLoad (module.js:446:12)\r\n at Function.Module._load (module.js:438:3)\r\n at Module.require (module.js:497:17)\r\n at require (internal/module.js:20:19)\r\n at Object. (D:\PROGRA2<redacted>\nodejs\node_modules\applicationinsights\out\Library\InternalAzureLogger.js:48:24)\r\n at Module._compile (module.js:570:32)\r\nD:\Program Files (x86)\SiteExtensions\Kudu\97.40427.5713\bin\Scripts\starter.cmd "D:\Program Files (x86)\SiteExtensions\Kudu\97.40427.5713\bin\node_modules.bin\kuduscript.cmd" -y --no-dot-deployment -r "D:\local\Temp\zipdeploy\extracted" -o "D:\home\site\deployments\tools" --basic --sitePath "D:\local\Temp\zipdeploy\extracted"
Mention any other details that might be useful.
Kudu Version: 97.40427.5713

NathanBlaise-MSFT filed the original issue. This is blocking a lot of customers who deploy via ZipDeploy to a site that has this Node Application Insights agent installed.

I'm encountering this same error within an ASP.NET 8.0 Blazor Web Assembly app that I'm using a GitHub Action to build and deploy. Is there any update on when this will be resolved?


Figure in Physical Layer of Disk Blocks needs to be corrcted with right number of blocks for Block Alloc Map

Done


Add +x permission

Immediately after running git clone, it was necessary to run the following command because execution permissions were not assigned to the .bash file.
sudo chmod -R +x ./docker/*.bash

This pull request grants only +x permissions to the .bash file.

Thank you!!


Update sort person user guide

Codecov Report

Merging #273 (7c1daae) into master (1170d24) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #273   +/-   ##
=========================================
  Coverage     64.04%   64.04%
  Complexity      622      622
=========================================
  Files           102      102
  Lines          2417     2417
  Branches        326      326
=========================================
  Hits           1548     1548
  Misses          691      691
  Partials        178      178

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


add 8 segment to display emulator

just a quick change to enable 8 segment virtual display

hmmm, I don't think I made those changes.. .I'll see if I can figure out
how to do that.
On Mon, Nov 8, 2021 at 3:47 PM jabdoa2 @.***> wrote:

@.**** requested changes on this pull request.
Can you revert the other config_spec changes?
In mpf/config_spec.yaml
https://github.com/missionpinball/mpf/pull/1617#discussion_r745178639:

@@ -479,7 +479,6 @@ drop_targets:
enable_keep_up_events: event_handler|event_handler:ms|None
disable_keep_up_events: event_handler|event_handler:ms|None
ball_search_order: single|int|100

max_reset_attempts: single|int|None

Not sure if you wanted to remove this.
In mpf/config_spec.yaml
https://github.com/missionpinball/mpf/pull/1617#discussion_r745178710:

@@ -488,7 +487,6 @@ drop_target_banks:
valid_in: machine, mode
type: device
drop_targets: list|machine(drop_targets)|

max_reset_attempts: single|int|None

Same here.
In mpf/config_spec.yaml
https://github.com/missionpinball/mpf/pull/1617#discussion_r745178783:

@@ -1019,7 +1017,6 @@ multiball_locks:
priority: single|int|1
reset_all_counts_events: event_handler|event_handler:ms|None
reset_count_for_current_player_events: event_handler|event_handler:ms|None

empty_lock_devices_on_ball_end: single|bool|false

And here.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/missionpinball/mpf/pull/1617#pullrequestreview-800714162,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGH7XMBKSLWEQO7TSX3C6FTULBORXANCNFSM5HRXO53A
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

I checked the box for allow edits from maintainers, but I do not know how to edit or revert the changes not wanted.  Sorry, very new to github and not a developer.

I checked the box for allow edits from maintainers, but I do not know how to edit or revert the changes not wanted. Sorry, very new to github and not a developer.

Dont worry. Will have a look later


Issues with HTTPS POST call

Good morning Vinnie,
First - thank you for providing beast. I hate networking(probably because I treat so much of it as a black box), and I love how(mostly) easy your library makes it. I tried my best to look through a similar issue before posting, but it didn't seem to resolve my problem (and I get easily lost reading through networking stuff).
I'm using BOOST_BEAST_VERSION 292 managed by VCPKG in a Windows C++ app that I'm working on called SysLat. I've combined a couple of the examples you've provided and seemingly set up a pretty solid HTTP request in not a lot of time(for me anyways...).
But I am having an issue when attempting to perform a POST call to an API on my website (https://syslat.com/api/benchmarkData/benchmarkData). I can perform this call to localhost with no issues, the call works directly to the real host when using CURL, but when I run the following I get an error message from the resolver that states "resolve: No such host is known.
inline int upload_data(CSysLatData* dataToSend, char const* host = "https://syslat.com", char const* port = "443", char const* target = "/api/benchmarkData/benchmarkData") {
    int version = 11;
    net::io_context ioc;
    std::make_shared<session>(ioc)->run(dataToSend, host, port, target, version);
    ioc.run();
    return EXIT_SUCCESS;
}

If I change the host to "syslat.com", the resolver no longer errors out, but I get a "308 permanent  redirect" and the upload fails:
Date: Fri, 04 Dec 2020 02:48:51 GMT
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://syslat.com/api/benchmarkData/benchmarkData
Refresh: 0;url=https://syslat.com/api/benchmarkData/benchmarkData
server: Vercel
x-vercel-id: cle1::fdbf2-1607050131951-4ba5ae36d506

48
Redirecting to https://syslat.com/api/benchmarkData/benchmarkData (308)

0

Here's my sample CURL call where "https://syslat.com" seems to work without issue.
Working sample CURL call:

Are you familiar with this issue?
Do you think it could be the service hosting my site? (Vercel)
Any help is greatly appreciated.

OK, this is pretty simple to solve.
Firstly it should be said that CURL is a much higher level library than Beast (although I do appreciate that it doesn't feel that way sometimes).
The first problem you have solved yourself: Beast doesn't use URLs - it uses ENDPOINTS. An HTTP URL contains more information than just the endpoint:
e.g.: http://company.com/abc.txt&x=y#marker
This URL has a number of components:
SCHEME: http
HOST: company.com
QUERY: /abc.txt&x=y#marker
The query can be further interpreted:
path/document: /abc.txt
parameter x: y
fragment: "marker"
The QUERY is decoded at the http server and has application-specific meaning.
The SCHEME and HOST are used on the client to resolve the hostname and set up the TCP and SSL connection.
This is why when you remove the scheme information from the URL, you do actually get a connection.
Next:
Once you connect, the web server is sending you a response of type 301 REDIRECT.
This is something that CURL is configured by default to detect. CURL's response to this is to follow the redirect using the information sent back in the response headers.
As mentioned, Beast provides low level HTTP functions. You will have to detect the redirect directive yourself and re-request using the data provided in the initial response.

Ah, got it. Thank you @madmongo1.
Can you point me to any of the examples that show how to handle a redirect like this?
I'm still a bit confused though, because the redirect message I'm receiving from the server states that the (correct?) Location var is "https://syslat.com/api/benchmarkData/benchmarkData", which is essentially what I'm inputting.
I guess I'm confused at which var of the response I would be using to change and re-issue which argument of the call?

The SCHEME (with respect to HTTP) simply indicates what the default port should be.
http = 80
https = 443
I see you're looking to upload data - presumably you need to set the method of the request to post ?

Can you point me to any of the examples that show how to handle a redirect like this?

To use Beast you are expected to already understand: Asio, HTTP

@madmongo1, I believe I've set the method correctly to POST with no issues, and I've also set the port to 443 in the first function I posted. The upload to localhost works correctly, and it appears my CURL from above is not receiving any redirect messages(though I may need to turn on verbose output to see that? IDK).
Here's my "run" method that pairs along with the other method above:
void session::run(CSysLatData* dataToSend, char const* host, char const* port, char const* target, int version)
{
    // Set up an HTTP POST request message
    req_.version(version);
    req_.method(http::verb::post);
    req_.target(target);
    req_.set(http::field::host, host);
    req_.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
    req_.set(beast::http::field::content_type, "application/json");

    Json::FastWriter fastWriter;
    std::string output = fastWriter.write(dataToSend->jsonSLD);
    req_.body() = output;

    std::ostringstream debugOut;
    debugOut << req_ << std::endl;
    OutputDebugStringA(debugOut.str().c_str());
    req_.prepare_payload();

    // Look up the domain name
    resolver_.async_resolve(
        host,
        port,
        beast::bind_front_handler(
            &session::on_resolve,
            shared_from_this()));
}

@vinniefalco, that's not really fair, is it? I've been as polite as I can possibly be. From my (albeit novice) eyes, it appears your library has different behavior than one of the most commonly used client tools in the industry. Isn't the ease of use at least worth a short discussion?
But my question still stands - if I implement a redirect, what do I feed it? Because the location it gives me (with https:// in front of the name) is the same location that the resolver is failing to match a host for.

@vinniefalco, that's not really fair, is it?

It is totally fair. What I'm saying, is that the answers to your questions are found in the HTTP RFC (i.e. how to handle redirects). There's nothing wrong with asking here, but note that Beast is not Curl nor will it ever be. It is just a low-level HTTP protocol implementation. Handling redirects, authentication, compression, and other things is the responsibility of the caller.

That allowed me to find and integrate this async SSL example into my existing code.
Then I was able to plug this sample in and replace it with my provider's cert, and everything seems to be in much better order now. I'm actually kind of dumbfounded by how quickly it came together. I am now getting a "shutdown: stream truncated" message, but I believe that may be because I've changed my data format.
HTTP/1.1 200 OK
Content-Type: application/json
Connection: keep-alive
x-nextjs-page: /api/benchmarkData/benchmarkData
date: Fri, 04 Dec 2020 21:07:13 GMT
content-length: 2
x-vercel-cache: MISS
server: Vercel
x-vercel-id: cle1::sfo1::cxcqs-1607116031684-83c0b2bba165
strict-transport-security: max-age=63072000
cache-control: s-maxage=0

{}
shutdown: stream truncated

Anyways, thanks for the help.


Update web-sites-python-configure.md

Broken link for the Python Developer Center. I think I have it correct, but please let me know if that's not right. I'm assuming the proper full URL is https://docs.microsoft.com/en-us/python/azure/?view=azure-python.

@jboeshart : Thanks for your contribution! The author, @huguesv, has been notified to review your proposed change.

@jboeshart Can you please change the author metadata at the top of the source file to me (cephalin)? That way I can sign off on this. Thanks!

#sign-off

@cephalin: I'm sorry - only the author of this article, @huguesv, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@jboeshart : Thanks for your contribution! The author, @cephalin, has been notified to review your proposed change.

Changed the metadata per your request @cephalin.


BSO Clue Caskets

With the addition of “=open x clue” to BSO it has accidentally removed the chance of getting multiple caskets Worth of loot when you open one, it’s now always one clue = one casket reward

duplicate of #525


The Living can see the fingers of the dead

Description
When ghosts point, the living can see it.
Screenshots

Additional context

this bug is gonna haunt us for the rest of time

this is like the fourth time oh my god

There's one person who has been abusing the hell out of it lately. Can we put a rate limiter on it too (in case it is a hard fix)? As I usually play medical roles it's ridiculous. Thankfully one of those rounds was an antag round so I could just throw them in a locker instead of cloning.

Has anyone had success reproducing this locally?

Yes:

start local debug server
start 2 local debug clients
punch one client to crit

punch that same client to dead

Seems pretty straightforward to induce the state in question.

Ok, so it's dead players still being able to point, before turning into ghosts. OP said it was ghosts pointing, which is not the problem.

My mistake!

My mistake!

So if I understand correctly this has nothing to do with ghosts and is just about incapacitated players. In that case this is a duplicate of #2774 so closing this.
and as for @xRiriq's comment:

Can we put a rate limiter on it too (in case it is a hard fix)

pointing already has a 0.5s delay limiting the rate, which is fine IMO. Or was this being bypassed somehow?


All reddit user links are broken since the update 4 days ago

Problem: Clicking on the username 'hanniabu' links to https://dailydoots.com/reddit.com/u/hanniabu
Expected result: It should link to https://reddit.com/u/hanniabu
In the update on the 4th of August two slashes '//' got removed from all links in the the README.md and the doots.json: https://github.com/etheralpha/dailydoots-com/commit/9e654ffb60cd7e597ce274fb94a75f84707f9c24 and https://github.com/etheralpha/dailydoots-com/commit/47902f04a1d8c0d240ba131ce0cc6b9525c12478, which I guess is the origin of the link issue.
I have no idea how you generate the files, so I will not try to fix it myself.

Thanks, just fixed!


Update NPM

Can you update the NPM package to the latest release? Currently looks like it's stuck at 3.0.2 https://www.npmjs.com/package/smart-underline
Cheers!
/cc @adamschwartz

Done. Thanks for lmk

Looks good. Thanks!


[TypeScript] Should reactHelpers functions be Type Guard or not?

I have written typings to reactHelpers (#9565) but these functions (isMuiComponent and isMuiElement) are used for type checking.
So I think it is better to declare these functions as type guard.
By implementation,
export function isMuiElement(element: any, muiNames: Array<string>)
    : element is ReactElement<P> & { type: { muiName: string } };
export function isMuiComponent<P>(element: any, muiNames: Array<string>): element is { muiName: string };

is considerable declaration (of course it looks not simple, so not good).
Is there any good type declaration for MUI element/component? or already exist? or the above functions should not be type guard (keep current, simply return boolean)?

Seems like a good idea to me, would you like to open a PR?
To be completely accurate I think maybe we want to use more specific custom types, i.e.
type MuiProps = StandardProps<{}>

type MuiComponent = React.ComponentType<MuiProps> & { muiName: string };

interface MuiElement {
  type: MuiComponent;
  props: MuiProps;
  key: string | number | null;
}

export function isMuiElement(element: any, muiNames: Array<string>): element is MuiElement;
export function isMuiComponent(element: any, muiNames: Array<string>): element is MuiComponent;

About muiName... I notice looking through the code that some components set this, e.g. Select, and others don't, e.g. Button. So it looks like maybe it should be { muiName? string }? Or is this inconsistency a bug? Also, what's the relationship (if any) between muiName and the name option passed to withStyles? /cc @oliviertassinari

what's the relationship (if any) between muiName and the name option passed to withStyles?

@pelotom Non, they solve independent problems

Or is this inconsistency a bug?

muiName is only defined for rendering based logic. If we don't need it, we don't provide it.
This is consistent but not symmetric.

Ok, so then it should be { muiName?: string }. I've corrected the types I gave above.

Oh! But obviously if you found it to have a certain name, then it definitely has that name. So it should not be optional. Re-corrected 😄

In light of that, we might want to call these custom types NamedMuiComponent / NamedMuiElement just to be clear that these functions only apply to named components/elements.

Thank you for opinions!
@pelotom
I am not familier with React on TypeScript, so I want to know about differences between the above and type NamedMuiComponent<P = {}> = React.ComponentType<P> & { muiName: string };
/* I think annotations/descriptions for generic parameters in .d.ts files are not developer friendly... */

@SSW-SCIENTIFIC the main difference is the lack of a P type parameter. There's no point in giving a type parameter to NamedMuiComponent since it is only used by these functions, and they can't provide any more specific types for <P>. I take back the use of never, it should be {}.

@pelotom
Thank you for description!
In my use case, type parameter P is useful.
For example,
if (isMuiElement(element, ['ListItem'])) {
    element.props.onClick && element.props.onClick();
    // this is invalid because the type of element.props is StandardProps<{}, never, never>
    // and it does not have onClick property
}

IMHO, this code should work.
I know that isMuiElement checks only validity as ReactElement and muiName property by its implementation, no checks for props, however, React's isValidElement is same situation and @types/react#L265 shows isValidElement has type parameter P to specify the type of props:
function isValidElement<P>(object: {} | null | undefined): object is ReactElement<P>;

So I now propose the declaration below:
type NamedMuiComponent<P> = React.ComponentType<P> & { muiName: string };
type NamedMuiElement<P> = React.ReactElement<P> & {
    type: { muiName: string };
}

export function isMuiElement<P>(element: any, muiNames: string[]): element is NamedMuiElement<P>;
export function isMuiComponent<P>(element: any, muiNames: string[]): element is NamedMuiComponent<P>;

or NamedMuiElement can be
interface NamedMuiElement<P> extends React.ReactElement<P> {
    type: (string | React.ComponentClass<P> | React.SFC<P>) & { muiName: string };
}

or
interface NamedMuiElement<P> {
    type: NamedMuiComponent<P>;
    props: P;
    key: React.Key | null;
}

All of above three declaration make the code below valid:
if (isMuiElement<ListItemProps>(element, ['ListItem'])) {
    element.props.onClick && element.props.onClick();
}

I do not know which is the best...
And are there any considerable trouble on these declarations?

In my use case, type parameter P is useful.

Yes, it's useful, but it's not safe 🙂 . I know React's isValidElement has this type, but it's wrong IMO. Consider, you want this code to work:
if (isMuiElement<ListItemProps>(element, ['ListItem'])) {
    element.props.onClick && element.props.onClick();
}

but if this worked, you could just as easily do
if (isMuiElement<{ bogus(): void }>(element, ['ListItem'])) {
    element.props.bogus();
}

So with this typing all you're really doing is an unsafe cast, and you might as well be explicit about that:
if (isMuiElement(element, ['ListItem'])) {
    const onClick = element.props as ListItemProps
    if (onClick) onClick();
}

It's not that much extra code, and it alerts the reader of your code that a downcast is happening, rather than hiding that fact.

@pelotom
Ok I understood, and open PR without type parameter soon.


Eric Smith Enhancements

Here is an updated version of Flow Launcher that adds some new capabilities.  The first enhancement is that a flow launched in a modal will now refresh the current tab on exit when it is launched from a screen flow running in a console app.  The second enhancement adds a new input attribute that allows the user to specify multiple input attributes in a JSON format.  To keep backwards compatibility with your original version, if the new attribute is not populated, the original single variable name and value attributes will still be used.  To support passing back output attributes, I have added the option to provide a String value and/or an Integer value back to the calling flow if the launched flow populates an output attribute with the name OUTPUT_String and/or OUTPUT_Integer.  There is also a second version of the Flow Launcher labeled Flow Launcher_SObject that also adds an output attribute for a record variable (OUTPUT_Record) and/or a record collection variable (OUTPUT_Collection).  I provided this as a second Flow Launcher component because, when used, it requires the user to provide the API name of the output SObject before they can configure the Flow Launcher in their screen flow.

I think I successfully signed the cla


Adapted fix to work identical to format

Summary
The fix for E203 now produces the same result as ruff format in cases where a slice ends on a colon and the closing square bracket is on the following line.
Refers to https://github.com/astral-sh/ruff/issues/10973
Test Plan
The minimal reproduction case in the ticket was added as test case producing no error. Additional cases with multiple spaces or a tab before the colon where added to make sure that the rule still finds these.

Are these ecosystem checks showing new false negatives?

I think this looks like an improvement. The ecosystem checks are improvements, even if it's not a perfect match for the formatter (we don't check if values are complex).


Add Cloudmoon

This is my final revision for adding Cloudmoon as list of icons

Edited now using Photopea
This is the best that i can do here 😓

"I prefer my icon unique bruh", but seriously, first of all, why is it a PNG? Secondly, the outline thickness doesn't match with the guidelines. Use a VECTOR GRAPHICS program, something like Adobe Illustrator or Figma, or Inkscape… Heck, use Scratch's BUILT IN vector editor! Here's the corrected for you icon by the way.

This is the best that i can do here 😓

Even if you add the application activity to the appfilter.xml so that the icon works, it's hard for me to imagine how much the icon will differ from the rest. It strongly doesn't correspond to the Lawnicons guidelines.

Here's the corrected for you icon by the way.

This option doesn't match the Lawnicons guidelines either.

Even if you add the application activity to the appfilter.xml so that the icon works, it's hard for me to imagine how much the icon will differ from the rest. It strongly doesn't correspond to the Lawnicons guidelines.

:( i'm maybe not the best but i can see that this icon may not add soon enough
sorry in advance. If someone can correct my mistake here and add another PRs with the real cloudmoon icon, i will be happy ;)

Here's the corrected for you icon by the way.
It doesn't even pass the Lawnicons guidelines though ;(


SSL ValidateCertificates Still Attempts to Validate When Set to False

Hello all,
We've been doing some work with the Splunk SDK, and we've found that the new parameter that is supposed to disable SSL certificate validation seems to have no effect.  The result is that on testing machines we get the following error:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

We have found a workaround, however, I wanted to flag this for your team as you might want to fix it.

Hi @cgivre Sorry for the delay in response.
As per the analysis we found that the sequence in which the code statements are executed is resulting in exception. Ref
The required sequence is to  call setValidateCertificates before setSslSecurityProtocol method i.e:-
HttpService.setValidateCertificates(validateCertificates);
HttpService.setSslSecurityProtocol(SSLSecurityProtocol.TLSv1_2);

Request you to update the code as per the above sequence and let us know if you still face the issue.
Also thanks for bringing this to our notice we will work on updating this information in the docs to avoid such issues in future.

@cgivre @ashah-splunk changing the call sequence as suggested above is only a workaround to this bug if an SSL protocol that is different to the one set previously is provided in the call to HttpService.setSslSecurityProtocol. In this case the creation of a new SSLSocketFactory be triggered, and the validateCertificates option be applied.

@jnturton yes changing the sequence is a workaround. We have already made the necessary changes in the SDK on the similar lines that you described (Ref PR). The changes will be available in the next Release, till that we request you to apply the workaround. Will update you once we have a new release published.

@cgivre , @jnturton the necessary changes have been merged in the latest release of the Splunk Java SDK request you to test with the latest version and let us know if you are still facing the issue. sorry for the delay in the update.


NPM install failing

$ npm -v
6.14.4
$ node -v
v12.16.3
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../lib/node_modules/mbview/cli.js
npm ERR! dest /usr/local/bin/mbview
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../lib/node_modules/mbview/cli.js' -> '/usr/local/bin/mbview'
npm ERR! File exists: /usr/local/bin/mbview
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.
npm ERR! A complete log of this run can be found in:
$ mbview
-bash: mbview: command not found

@nonoumasy there might be a conflict if you have an earlier installation of mbview from before we switched to the @mapbox namespace. Can you try uninstalling the existing package with npm uninstall -g mbview and reinstalling with npm install -g @mapbox/mbview?


Clarify requirements to use this

Hello! This project looks great, and may be exactly what I'm looking for.
I have a CerboGX-based system with Victron Phoenix charger and Lynx BMS and wish to have the Cerbo display the charging tile correctly, as if the Phoenix were a Multiplus.
Can you clarify what equipment is necessary in order to use this clever driver?
Thanks

You need a battery and grid meter to use this, else you have to modify the code.
https://github.com/mr-manuel/venus-os_dbus-multiplus-emulator/blob/8c6d1d2c2d32e288e0684ed14a59cb176bc151df/dbus-multiplus-emulator/dbus-multiplus-emulator.py#L37-L43
If you don't have one of them you can use this:
venus-os_dbus-mqtt-grid
venus-os_dbus-mqtt-battery

Perfect, thanks very much. Any reason to think this wouldn’t work with gui2?

It it works with GUIv1 it should also work woth GUIv2


fix for #1940: check if there is no parent element

The script throws exceptions, when there is no parent element (e.g. when clicking directly inside the body tag). This little fix makes sure that the method to find a parent a-tag return null when there is no parent element.
Error reporting example:
Uncaught TypeError: Cannot read properties of null (reading 'tagName')
    at script.js:1:2071
    at ...

Nice, I've made the same change today in #1981 :smile:


Cannot import cloudflare_access_rule

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the provider and it is still present.

Terraform and Cloudflare provider version
Terraform v1.4.2
on darwin_arm64

provider registry.terraform.io/cloudflare/cloudflare v4.1.0
provider registry.terraform.io/hashicorp/azurerm v3.47.0

Affected resource(s)
cloudflare_access_rule
Terraform configuration files
resource "cloudflare_access_rule" "terraform_managed_resource_REDACTED" {
  mode    = "whitelist"
  zone_id = "e8e26b1003a14699ddbba6837211b5ca"
  configuration {
    target = "ip"
    value  = "81.x.x.x"
  }
}

Link to debug output
https://gist.github.com/vanmash/a255e857833691bfeebadab185e9ec03
Panic output
No response
Expected output
successful import
Actual output
Error: The provider returned a resource missing an identifier during ImportResourceState. This is generally a bug in the resource implementation for import. Resource import code should not call d.SetId("") or create an empty ResourceData. If the resource is missing, instead return an error. Please report this to the provider developers.
Steps to reproduce

terraform init
cf-terraforming generate
cf-terraforming import
terraform import

Additional factoids
configuration created with cf-terraforming
References
No response

without debug logs, i suspect your zone_id is empty as we don't call d.SetId("") in the create so you'll need to address that to use this correctly.
if you can provide a reproduction test case without variables and a full debug log, i'm happy to dig deeper.

Hey Jacob,
I think the zone_id was OK, the rest got imported with the same variable.
To be sure I referenced it directly. Also the debug output is provided this time.
Perhaps you could check that? Thank you

here is the issue, the rule doesn't exist
2023/03/29 07:04:12
GET /client/v4/zones/e8e26b1003a14699ddbba6837211b5ca/firewall/access_rules/rules/de98e41252e3131f9e5691f943cbab44 HTTP/1.1
Host: api.cloudflare.com
User-Agent: terraform/1.4.2 terraform-plugin-sdk/2.10.1 terraform-provider-cloudflare/4.2.0
Authorization: Bearer [redacted]
Content-Type: application/json
Accept-Encoding: gzip

2023/03/29 07:04:13
HTTP/2.0 404 Not Found
Cf-Cache-Status: DYNAMIC
Cf-Ray: 7af5921cec4c34b8-WAW
Content-Type: application/json; charset=UTF-8
Date: Wed, 29 Mar 2023 05:04:13 GMT
Server: cloudflare
Set-Cookie: __cflb=0H28vgHxwvgAQtjUGU56Rb8iNWZVUvXhtxwReGLArAZ; SameSite=Lax; path=/; expires=Wed, 29-Mar-23 07:34:14 GMT; HttpOnly
Set-Cookie: __cfruid=3604b57e0b764d121623a63a0ffc8296f6b6322c-1680066253; path=/; domain=.api.cloudflare.com; HttpOnly; Secure; SameSite=None
Vary: Accept-Encoding
X-Envoy-Upstream-Service-Time: 1

{
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 10001,
      "message": "firewallaccessrules.api.not_found"
    }
  ],
  "messages": []
}

if you're certain the rule exists, your API token may not allow permission to it.

I had a similar error and found a solution:
I used cf-terraforming to generate the terraform resources for cloudflare_access_rule. And the output was similar to the output in this issue.
But when I changed the resources to use account_id=123 rather than zone_id=123. Then run the import command
terraform import cloudflare_access_rule.default account/<account_id>/<rule_id>
it worked fine. So I wonder if this is a bug, and cf-terraforming should generate cloudflare_access_rule with account_id, not zone_id.

I had a similar error and found a solution: I used cf-terraforming to generate the terraform resources for cloudflare_access_rule. And the output was similar to the output in this issue. But when I changed the resources to use account_id=123 rather than zone_id=123. Then run the import command terraform import cloudflare_access_rule.default account/<account_id>/<rule_id> it worked fine. So I wonder if this is a bug, and cf-terraforming should generate cloudflare_access_rule with account_id, not zone_id.

This solved my issue. In my case, I also had to replace zone_id=... with account_id=... in the generated cloudflare_access_rule resource.

I had the same issue, but ONLY with the first cloudflare_access_rule in the console/code. I had to import the first rule with terraform import cloudflare_access_rule.default account/<account_id>/<rule_id> Rules 2-13 imported just fine with the commands generated by cf-terraforming
I changed all cloudflare_access_rule resources to use account_id instead of zone_id
resource "cloudflare_access_rule" "ip_access_rule_1" {
  mode    = "whitelist"
  notes   = "Corp IP"
  account_id = var.account_id
  configuration {
    target = "ip"
    value  = "<IP_ADDRESS>"
  }
}


Remove (or change sorting) for useless suggestions for standard keywords

Hi! 👋
I suggest removing or changing the sorting for standard keywords like while, function, import, etc
Example: I enter whi for snippet while () {}, editor offers me first while and only then snippet. This is terribly annoying and slows down development sometimes

This is terribly annoying and slows down development sometimes

Damn you're right! 100% agree with you and there are many ways to solve that
Ways to fix it
1. Remove needed keyword suggestions completely
"tsEssentialPlugins.replaceSuggestions": [
    {
        "suggestion": "new",
        "filter": {
            "kind": "keyword"
        },
        "delete": true
    },
    {
        "suggestion": "do",
        "filter": {
            "kind": "keyword"
        },
        "delete": true
    },
]

and so on...
2. Change keywords to use snippet text
For example:
"tsEssentialPlugins.replaceSuggestions": [
    {
        "suggestion": "import",
        "patch": {
            "insertText": "import $2 from '$1'"
        }
    },
]

You actually stick to this one if you don't use Vue or Svelte (as this plugin is not supported in these languages for now).
3. Make keywords actually show below snippets
This is finally what you've been requesting Xd.
Let's dig into import snippet case. As I can see from your screenshot, you're using builtin snippet from JavaScript extension. There is hardcoded logic in vscode that snippets from extension have z- prefix in sortText. However, even if the snippet is defined on the workspace level (will have a- prefix) they will still be displayed below the keywords suggestions (as TS suggestions have numbers in sortText).
You can either just set "editor.snippetSuggestions": "top" setting to make any snippet show on top.
Or of course, you can just lower sortText of TS keywords suggestions like so:
"tsEssentialPlugins.replaceSuggestions": [
    {
        "suggestion": "import",
        "patch": {
            "sortText": "zz"
        }
    },
]

But it also doesn't seem to be ideal:

In case import and function I personally use snippets from Better Snippets. Since I have to write imports really often, I'm using this typing snippet for that. But you can use custom snippet as well with "sortText": "!".

What about first two cases I understand that it may not be clear from the current docs, but have no idea how to improve it.

Cool! Thank you!


Adding ipv6 support

@mistercrunch
Fix for the ipv6 issue #656. More elegant but less robust than validating ips.
cc: @zstan

@zstan is it still something that you are interested in, or should I close this?

Closing this for lack of interest. If this PR gets revived, note that it would change the REMOTE_ADDR to being empty See here for details

yes it`s all ok for me, thanks !


eval log body for index

Codecov Report

Merging #359 into experimental will decrease coverage by 0.57%.
The diff coverage is 12.5%.

@@               Coverage Diff                @@
##           experimental     #359      +/-   ##
================================================
- Coverage         81.38%   80.81%   -0.58%
================================================
  Files                23       23
  Lines              1053     1058       +5
================================================
- Hits                857      855       -2
- Misses              196      203       +7

Impacted Files
Coverage Δ

vent/core/rmq-es-connector/rmq_es_connector.py
78.18% <12.5%> (-11.82%)
:arrow_down:

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 c28bb04...884ab4c. Read the comment docs.


Excerpting to  works incorrectly when  is nested

If  is nested, e.g., in Bion 1962 where 1 paragraph contains a whole list spanning multiple pages, the abstract extraction to the first page does not work correctly.   This document is marked up as ONE PARAGRAPH! (sub paras are a list.)
Thus the entire document is returned as the summary.

I put a workaround in for this, but it's far from perfect, and is slow.  Need to look at this seriously when redevelopment starts.

Verified working.


HUD tweaks: added SmallerLifeMeter and SmallerActionPrompts

Added an option to shrink the life meter HUD that can be toggled ingame:

My goal was to approximate the scale of the GameCube HUD, before the widescreen ports made the HUD seem so big.

I also added an option to shrink the action button prompts slightly to match:

Credit to albert's smaller HUD mod for helping me track down all the important textures.
I put these in a HUDTweaks.cpp, and came up with a slightly different fix for bSideAlignHUD that doesn't overwrite the life meter's x coordinate every frame. Can still be toggled ingame.

That is incredible! Only nitpick I had was that the smaller HUD was positioned further away from the edges of the screen, making it look a bit offset. Pushed a commit to fix that.
Noticed an issue with the PRL though:

It fixes itself if I toggle SmallLifeMeter, though. Not sure why.

Oh, that's because I moved the hook from Cockpit::roomInit to Lifemeter::roomInit at some point and forgot to re-test the PRL. Moved it to the end of BulletInfo::roomInit and that fixes it.
I prefer the lifemeter slightly offset at this resolution since it's so far away from the center of the screen. By shrinking it, you actually move it over to the right. I'll add a config option so the player can easily reposition it how they like.

Moved it to the end of BulletInfo::roomInit and that fixes it.

Ah, nice.

I prefer the life meter slightly offset at this resolution since it's so far away from the center of the screen. I'll add a config option so the player can easily reposition it how they like.

Oh, didn't realize it was intentional. I'd appreciate the config option ^^

Should we set re4t::cfg->HasUnsavedChanges to false after writing to the ini?

Huh, I thought we were already doing that? Might have missed it in the .ini reader PR though...

re4t_cfg::WriteSettings func does have a re4t::cfg->HasUnsavedChanges = false; line at the end of it, but seems we return just before it gets ran:
https://github.com/nipkownix/re4_tweaks/blob/2ff10dd01a5ee460d979826f0b8cb6f68db078a6/dllmain/Settings.cpp#L916-L922
The block that holds that return will always be ran, but think that was meant to only be when the trainerOnly param was true, so saving trainer settings only would early return and not change the re4t::cfg->HasUnsavedChanges flag.
Easiest fix is probably just moving that re4t::cfg->HasUnsavedChanges = false; line into the !trainerOnly section.
Actually noticed that a few days ago trying out a static analyser against it, found a few other minor mistakes with it too, will probably make a PR for them soon.


Support RN 0.25

react and react-native need to be imported separately

Thanks -- published as 0.3.0.


pfe-dropdown is light on actionable events and feedback for devs using it

We have an issue on docs where two pfe-dropdowns are close to one another, and to be consistent with select element functionality, we want only one to be open at a time.
There is no event that gets fired when the element opens or closes, there is no attribute on the element that lets us know it's state, we have to figure something out the hard way.
My recommendation is to implement an event, an attribute or class change I could see arguments for not doing it since it costs a DOM write and an event is probably enough?
This is on PFE1.x, but looking through 2.x I don't think it's any better.
There may be other opportunities for better events/attributes/etc on this component, so if you're working on maybe check what events are available on a select element, or think through what we might want to expose.
Impacted component(s)

pfe-dropdown

what about the expanded attribute?
const dropdown = document.querySelector('pfe-dropdown');

const mo = new MutationObserver(records =>
  records.forEach(({ target }) =>
    console.log(`${target.expanded ? '' : 'not '} expanded`, target)));

mo.observe(dropdown, { attributes: true, attributeFilter: ['expanded'] });


[MB-14339 & MB-14336] PPM processor can approve/reject/edit fields in pro-gear weight tickets

MB-14339 and MB-14336 for this change
Summary
Some of the code in ReviewDocuments.jsx may need some refinement and pairing with @scottmries due to similar work that was done for expense tickets
Setup to Run Your Code

💻 You will need to use three separate terminals to test this locally.
Terminal 1
Start the Storybook locally.
make storybook

Terminal 2
Start the UI locally.
make client_run

Terminal 3
Start the Go server locally.
make server_run

Additional steps

Go to http://officelocal:3000/
Click Local sign-in & log in as an existing user called<EMAIL_ADDRESS>(PPM office)'
At the top click "PPM Closeout" (under 'Moves' header).
Select 'PPMFinalCloseout, Readyfor' (PPMRFC). Should be the 2nd row.
Click 'Review Documents'.
Click 'Continue' button to go to the pro-gear ticket review (the 1st doc is weight ticket).
You will be able to change and select the belongs to & pro-gear weight radio buttons, edit the weight value, and approve/reject the ticket.
If you do not enter a weight value, you will see an error.
If you reject and do not write a reason then click 'continue', you'll see an error.
After editing the fields, click 'continue' then click 'back', you'll see the data persists and the changes are saved.

To test for errors without an approval/rejection for a pro-gear ticket:

Go back to the moves queue and click "PPM Closeout" (under 'Moves' header).
Select 'DateZIPAdvanceDone, ActualPPM' (AB6PPM)
Click 'Review Documents'.
Click 'continue' button 2 times, until you are on the 3rd doc set, which is the pro-gear.
You'll see that accept/reject has not been selected yet. Leave this blank, do not select.
Click 'Continue'.
You should see an error stating 'Reviewing this pro-gear is required'.

Verification Steps for Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

Frontend

[ ] User facing changes have been reviewed by design.
[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] There are no new console errors in the browser devtools
[ ] There are no new console errors in the test output
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.

Backend

[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Database
Any new migrations/schema changes:

[ ] Follows our guidelines for Zero-Downtime Deploys
[ ] Have been communicated to #g-database
[ ] Secure migrations have been tested following the instructions in our docs

Screenshots

Messages

:book:
:link: MB-14339, MB-14336

  Generated by :no_entry_sign: dangerJS against 836d48dfbc84e175e6cd54fef7ef8fe940f29c44

Hi @bellex3! I don't see the Review Documents button on the PPM shipment card for either of the scenarios. I attached a screenshot of what I saw on this morning's deploy:

Hi @rileyorr, please take a look at the 1st move, CLOSE2 instead. I checked and the review documents button is on there as well as the pro-gear documents.


[ZEPPELIN-3476] change description "auto-restart interpreter on cron execution"

What is this PR for?
Description "auto-restart interpreter on cron execution"  is does not quite fit in the sense.
What type of PR is it?
Documentation
What is the Jira issue?
ZEPPELIN-3476
Screenshot

LGTM

@felixcheung, agree with you. Replaced the close on stop.

LGTM

will merge this if there are no more discussions

@felixcheung, I did it.


Ensure title and seo_title are not whitespace

- Add form clean methods and validation on title and seo_title
- Fixes #413

Doh! Sorry about that forgot to add two files to the commit

Thanks!

No problem happy to help!


Is it only for ios?

Hi prashen,
There is a getting started from React Native that will show you how to get started in iOS and Android.
Getting Started
The same link can be found in the README.md


Swap v1beta1 for v1 crds in preparation for OCP 4.9 release

Description
Implementation of dual-stream v1beta1 removal approach
Adds v1 CRDs, replacing v1beta1 CRDs.
Once merged, mig-controller will no longer be runnable on OCP version 4.5-.
Related mig-controller PR: https://github.com/konveyor/mig-controller/pull/1163
Check each of the following when appropriate to help reviewers verify work is complete.
Modifying an existing version

[x] I modified CRDS in the OLM CSV and ansible role

@djwhatle Is migration controller being updated as well I don't know if I saw that one

@shawn-hurley yep, PR is here: https://github.com/konveyor/mig-controller/pull/1163
I'm still in the process of figuring out any changes needed on that side. Currently testing OLM install-ability. Getting RequiremetnsNotMet, but may be transient. OLM not providing great error messages.

PR is now in shape that allows successful install on OCP 4.9.

@rayfordj I am wondering if the nature of my changes will make CI fail consistently. Any idea?

@jmontleon for now, I'm leaving in these things to allow molecule tests to pass.

non-olm manifests
mig_rbac.yml
velero_support.yml
mig-operator installed mig* CRDs

Let's discuss on Monday how we want to proceed (e.g., do we want to adapt molecule to use OLM based deploy).

@djwhatle As we discussed earlier, velero_supporting includes both CRDs and RBAC. Since molecule loads the CRDs from the olm config, we probably need to modify this to remove the duplicate CRD list.

@sseago I spoke with @jmontleon today, in the interest of time and getting a build of this in QE hands early (Wednesday), we would like to merge this and Jason plans to go back and remove all of the cruft / re-arrange molecule tests after.

@djwhatle That works for me. Since the CRDs that get duplicated are the same, they won't cause any harm for the moment.


Update README.md

@nickturner922 That looks very impressive. Would it be possible for you to open-source Joanna so that others can learn from and build upon her capabilities? Open sourcing could help advance the state of conversational AI while benefiting more users.


Converting InceptionV3 to TfLite missing IdentityN

System information
Google Colab

TensorFlow installed from (source or binary):
Installed from https://storage.googleapis.com/download.tensorflow.org/data/tensorflow_hub-0.4.0.dev0-py2.py3-none-any.whl
TensorFlow version (or github SHA if from source):

Provide the text output from tflite_convert
Some of the operators in the model are not supported by the standard TensorFlow Lite runtime. If those are native TensorFlow operators, you might be able to use the extended runtime by passing --enable_select_tf_ops, or by setting target_ops=TFLITE_BUILTINS,SELECT_TF_OPS when calling tf.lite.TFLiteConverter(). Otherwise, if you have a custom implementation for them you can disable this error with --allow_custom_ops, or by setting allow_custom_ops=True when calling tf.lite.TFLiteConverter(). Here is a list of builtin operators you are using: AVERAGE_POOL_2D, CONCATENATION, CONV_2D, FULLY_CONNECTED, MAX_POOL_2D, MEAN, RESHAPE, SOFTMAX. Here is a list of operators for which you will need custom implementations: IdentityN.
Also, please include a link to a GraphDef or the model if possible.
Google Colab Notebook: https://colab.research.google.com/drive/1idF4ZZysBnfcGwfoj0DovQb8C4NVA42w
I updated the Google Colab Tutorial and updated it to use InceptionV3(based on the link included in the notebook and modified the file size to be [299,299].

@ngelotte : I tried executing your colab link, but it throws error at "Export your model" stage, would you please check and resolve it, so that i can debug the issue. Otherwise you can share the frozen pb file directly if you have. Thanks!

@ANSHUMAN87 : Sorry I modified that same notebook to try and figure out how to freeze the graph. I copied over the network and took out what I had added - you can view it here. https://colab.research.google.com/drive/17e9E56uQpkdaD7Lz-csAOS2PL8Tzoz_1
However, It now gets a different error and I don't know what has changed. The new error is:
Invalid argument: Input 1 of node keras_layer_1/StatefulPartitionedCall was passed float from Variable_1:0 incompatible with expected resource.

@ngelotte : Now i am able to run the notebook, for the error you faced("Invalid argument: Input 1 of node keras_layer_1/StatefulPartitionedCall was passed float from Variable_1:0 incompatible with expected resource."), is because of custom objects from Hub_Layer.
As tf.lite.TFLiteConverter.from_saved_model() does not support custom objects, i would suggest rather you save model in h5 file and use tf.lite.TFLiteConverter.from_keras_model_file("sample.h5", custom_objects={'KerasLayer':hub.KerasLayer}).
As for your original issue: below i have provided snapshot for working code.
converter = tf.lite.TFLiteConverter.from_keras_model_file("sample.h5", custom_objects={'KerasLayer':hub.KerasLayer})
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS]
tflite_model = converter.convert()
NOTE: In COLAB Notebook some error is reported while saving to h5 file, so you can run offline. Or you can download the saved_model files and convert offline.

@ngelotte Is this issue resolved by following @ANSHUMAN87 suggestion? Thanks!

I was not able to try it as I did not have a good local environment to run it in. As the goal of this conversion was to be able to use it on a EdgeTPU device I am able to follow the steps here https://github.com/tensorflow/tensorflow/issues/27880 to do the conversion. This area is still in active development it seems but I think it is the better route. Thanks for the help.

@jvishnuvardhan : I think this issue can be closed now. Thanks!

Automatically closing this out since I understand it to be resolved, but please let me know if I'm mistaken.Thanks!

The original reported issue should be resolved by commit aca24307eba.
Could you try it again with the next TF nightly build? Thanks!


Accented character result in empty file

Hi, i have an issue with the bot.
I changed the default from .mobi to .epub due to new amazon changes withiut issue.
If the ebook have an accented character (like "Verità.epub") the mail sent result with a "no name" file attached and obv kindle not receiving it

Have you solved it? I'm also having problems sending files without names

Sorry for the late answer, i figured out
in line 28 of src/gmail.py
change
part = MIMEBase("application", "octet-stream")
to
part = MIMEBase("application", "octet-stream", Name=file)

Fixed


Fix Inspector message for the case when the simulator is not launched at all

How is this broken right now? What is the message currently, and what would be the expected message?


Generate actions inside existing test classes

This is caused, because JUnit4 returns it is valid framework. Maybe custom actions can be implemented instead and group it under the same action. https://plugins.jetbrains.com/docs/intellij/plugin-actions.html
package org.jetbrains.kotlin.idea.actions.generate.KotlinGenerateTestSupportActionBase

Fixed with 0.3.0


drawer.setAnimationMode not working on sdk 10

[ERROR] TypeError: drawer.setAnimationMode is not a function. (In 'drawer.setAnimationMode(NappDrawerModule.ANIMATION_SLIDE_SCALE)', 'drawer.setAnimationMode' is undefined)

Not really a solution but it gets it working without errors.
I removed all the animations that we were setting after creation. Also updated to version 2.1.1 and it got us back pretty close to what we had before SDK 10.