[BUG][STORAGE]Deleted Containers go to immediate delete status even though they are not truly deleted for around 10 minutes

Library name and version
Azure Storage SDK .NET V12
Describe the bug
The container takes around 10 minutes to fully delete yet it's status goes immediately to deleted.  So when you query for deleted Containers and there is a freshly deleted one it will be caught up in this list.  So if you are building a list of Containers to restore there is no way to filter out this newly deleted container and if the user taps it to try to recover it then an exception will occur if the proper amount of time has not gone by.
Expected behavior
The container should not reflect as being deleted until it is really and truly deleted.
Actual behavior
It throws a request failed exception if you try to recover it.  Also, this time window is no where in the SDK documentation that I have found.
Reproduction Steps
Delete a container, do a query for deleted Containers and then from that try to immediately recover it.
Environment
Android, iOS, UWP WPF
.Net standard 2.1
.Net 6
Visual Studio 2022

@norton287  Thanks for reaching out to us and sharing this feedback. We are looking into this issue and we will provide an update.

@norton287 I have a couple of questions on this.

What is the the UsedCapacity (size) of your container ? Do you see the longer time for delete operation on Containers that have very few blobs inside it ?

How are you trying to restore the containers ? Are you using the Container Soft delete feature ?

Did you check the behavior from the Azure portal blade if the same issue resurfaces ? or is this behavior seen only from the .NET SDK ?

Sharing some points here:
The Delete Container operation marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection.
The deletion will take time depending on the size and number of blobs.
As per this documentation, When a container is deleted, a container with the same name cannot be created for at least 30 seconds; the container may not be available for more than 30 seconds if the service is still processing the request.
While the container is being deleted, attempts to create a container of the same name will fail with status code 409 (Conflict), with the service returning additional error information indicating that the container is being deleted. All other operations, including operations on any blobs under the container, will fail with status code 404 (Not Found) while the container is being deleted. Hope this helps.

It is the same from the portal and the SDK,  If the container were put into a different status other than deleted (which is done IMMEDIATELY) I can filter them out from the list of truly deleted containers  But in both the SDK and the Portal it is taking around 10 minutes for the complete deletion process to occur before they can be restored.  It does not depend on the number of blobs within the container, the container can have 4 or 4000 blobs in it, both take the same amount of time.
If the status cannot be changed then there needs to be a way to filter these just deleted containers out from the really and truly deleted containers so a proper list of restorable containers is shown to the user.

@norton287 Thanks for getting back. I am adding the Service team to take a look into this ask.
@xgithubtriage Could you please look into this ask and provide an update on this ?

Have you guys done any tweaking on this?  Because it is down from 10 minutes to about 1 to 2 minutes on restores now.  Just curious.
Also, the exception message verbiage has changed greatly as far as reporting the time delay in restoring the container.

If the status cannot be changed then there needs to be a way to filter these just deleted containers out from the really and truly deleted containers so a proper list of restorable containers is shown to the user.

Hi! We are encountering the same issues. Would love to have an API where you could simply check if a blob container is still being deleted. We are forced to add artificial delays to our code because there is no way to query this info. Same goes for tables btw.
Thanks ~

@Oliver-Piorun Add your voice to the choir as they do not seem in a hurry to fix this issue.


chore(kato timeout): increase from 1 to 15 seconds

Increase the keepalive timeout to make it more resilient to temporary
failures such as network failures and will prevent the nexus child from
being prematurely faulted.

bors try

bors try

Closing because the KATO increase doesn't seem to be having the desired effect.


Fixed the OIDC token refresh

Fixed the OIDC token refresh
This PR fixes the OIDC refresh functionality introduced in #3309.  Rather than use the passport strategy to handle the refresh, it uses the oidc-client refresh API directly.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

@Rugvip this is ready to go right now?


Translation after refresh

Translation is lost after browser refresh and falls back to english.
Noticed with Google Chrome 56.0.2924.87.
Can someone verify this?
I can take look at this when I have time.

Confirmed.  This is an issue.


Iceberg catalog needs to automatically self-register all tables

Enhancement
Based on 3.1, I noticed the following problem:

Suppose I start a new StarRocks instance.
I register an Iceberg rest catalog, with an s3 bucket that has a path called s3://warehouse/db/table1 (inside are written data/metadata folders written by SR)
None of the tables show up.

In fact, when you apply a valid schema for an existing table e.g.
 CREATE TABLE iceberg.crsp.`dsenames` (
 ... schema details
)PROPERTIES ("location" = "s3://warehouse/crsp/dsenames");

what happens is instead of finding the latest metadata and recognizing the data in the path StarRocks writes a new metadata file ignoring the existing data.
I would assume the fix is to just read the latest metadata file in each folder and register the table into the catalog.
Something like below: for each database, for each table, find the latest .json and register the table accordingly. This is the equivalent Spark Procedure but I couldn't get it working. https://iceberg.apache.org/docs/latest/spark-procedures/#register_table

If you want to reuse an existing storage table, you must register it first in your metadata service.
Creating table will create a fresh table, not reuse existing data even if you provide the location.

If you cannot get it work, you may file an issue at spark.

Thanks. Do you have an example?

If you already create s3://warehouse/crsp/dsenames by sr, why there is no table's metadata record in your rest catalog?

@Smith-Cruise Because I had to recreate the REST catalog. This is because I either moved the data to a new machine or just wiped it.

Sorry, the current mechanism of Starrocks is to obtain the latest metadata file path from hms, which does not support obtaining it from iceberg folders.
We did not support that function yet, so the only way you need to register iceberg table by Spark.

Ideally it would be something like ..
CREATE TABLE iceberg.crsp.dsenames
USING metadata('s3://warehouse/crsp/dsenames/metadata/latestmetadata.json')

I understand that's not of interest to you guys for now, so I'll try to figure out Spark or just revert back to native SR. thanks!


Mark explicit

I merged the add filtering branch in so I could check it with filtering. The only thing added was the prop 'hollow'

PR deployed at: https://pr31-app-noblocknoparty.surge.sh

I've removed it when the event has ended as they are no longer relevant

PR deployed at: https://pr31-app-noblocknoparty.surge.sh

PR deployed at: https://pr31-app-noblocknoparty.surge.sh


Bug: Treat missing idempotency key as non-idempotent transaction

Expected Behaviour
By default, treat a transaction that is missing idempotency key as a NO-OP transaction. That means, we will continue to log a warning and will not save at the configured persistence storage layer.
This prevents mistakes when an application is designed to optionally send an unique value (e.g., X-Idempotency-Value) and NULL doesn't get a unique sentinel value (e.g., UUID) in its absence.
Current Behaviour
By default, raise_on_no_idempotency_key is set to False. This means we will log a warning when the idempotency key is missing, since we don't know if that's intentional or not. However we continue treating the transaction like we normally would, hash the None value, and save it in the persistence store.
Tests confirming behaviour
Code snippet
from aws_lambda_powertools.utilities.idempotency import (
    DynamoDBPersistenceLayer, idempotent
)

persistence_layer = DynamoDBPersistenceLayer(table_name="IdempotencyTable")
config = IdempotencyConfig(
    event_key_jmespath="headers.X-Idempotency-Value",  # Browser Might Not Send It
)

@idempotent(persistence_store=persistence_layer)
def handler(event, context):
    return {
        "message": "FIRST REQUEST",
        "statusCode": 200,
    }

Possible Solution
https://github.com/awslabs/aws-lambda-powertools-typescript/issues/1501
Steps to Reproduce
Calling the handler twice without the X-Idempotency-Value HTTP Header will return the first response in both requests.
Powertools for AWS Lambda (Python) version
latest
AWS Lambda function runtime
3.10
Packaging format used
Lambda Layers
Debugging logs
No response

Originally discussed in TypeScript repo: https://github.com/awslabs/aws-lambda-powertools-typescript/issues/1501

Looking at this now.


how to change the http link to my custom link

hi I want to change the http://PI_ip/view/ to something like http://camera2/view/ where can i config that I didn't find the settings

Thanks for reply ! could you please describe that how can we transfer recorded file and messages on other device using this example and also could you please give some idea about Dynamic DNS service.

You can use scp command to transfer files from Raspberry Pi to your computer.
Dynamic DNS is only necessary if you want to access your Raspberry Pi over the internet. I think Duck DNS will work for you.

I want to set audio and video quality proper in  very dim light like night mode.
Streaming voice is clear and audible but recorded voice is not clear can you suggest any changes or command we can do.
Can we set shutter speed of camera and how to save changes made like exposure and white balance?


Limit the column num in WSCG

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We meet the OOM when there are many columns passed from WSCG. This related to #1137. This is trying to avoid this problem before #1137 fixed.

Fixed.


fix(curriculum): Make Instructions Clear in Accessibility Quiz Document

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #48743

I have changed this:

To align the input boxes with each other, set the display property to inline-block for all input and label elements within .info elements.

to this:

To align the input boxes with each other, create a new ruleset that targets all input and label elements within an .info element and set the display property to inline-block.

This makes the sentence clearer.

Can you allow for both solutions to be used by the campers?
Although creating one rule is cleaner, adding both is still a valid answer, and we shouldn't mind campers putting valid answer, if the challenge isn't specific about the it

Hey @Sboonny, I am having a difficulty in understanding this. Exactly what do I need to add to the document?

The hints below needs to account for camper adding values in different rulesets, and stop checking for the existences of one rule set

--hints--
You should use either a .info > label, .info > input or .info label, .info input selector.
const gs = (s) => new __helpers.CSSHelp(document).getStyle(s);
assert.exists(gs('.info > label, .info > input') || gs('.info label, .info input') || gs('.info > input, .info > label') || gs('.info input, .info label'));

You should give the input and label elements a display of inline-block.
const gs = (s) => new __helpers.CSSHelp(document).getStyle(s)?.display;
const display = gs('.info > label, .info > input') ?? gs('.info label, .info input') ?? gs('.info > input, .info > label') ?? gs('.info input, .info label');
assert.equal(display, 'inline-block');

Sorry @Sriparno08, it doesn't make sense to change hint and test at the same time, the step won't be coherent.
I have changed the label to first-timer, because the change can be done by first-timers, and make them more comfortable with the codebase

It's alright, @Sboonny 👍
I haven't made any changes, so it's fine.


Error: 'The normalize vertical-rhythm module only supports px inputs. The typey library is better.'

ERROR in ./src/sass/mvxtheme.scss
Module build failed: ModuleBuildError: Module build failed:
    @error "The normalize vertical-rhythm module only supports px inputs. The typey library is better.";
   ^
      The normalize vertical-rhythm module only supports px inputs. The typey library is better.
      in /mnt/c/Users/garfi/Documents/GitHub/.../node_modules/normalize-scss/sass/normalize/_vertical-rhythm.scss (line 10, column 5)
    at runLoaders (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/webpack/lib/NormalModule.js:194:19)
    at /mnt/c/Users/garfi/Documents/GitHub/.../node_modules/loader-runner/lib/LoaderRunner.js:364:11
    at /mnt/c/Users/garfi/Documents/GitHub/.../node_modules/loader-runner/lib/LoaderRunner.js:230:18
    at context.callback (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at Object.asyncSassJobQueue.push [as callback] (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/sass-loader/lib/loader.js:55:13)
    at Object.<anonymous> (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/async/dist/async.js:2244:31)
    at Object.callback (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/async/dist/async.js:906:16)
    at options.error (/mnt/c/Users/garfi/Documents/GitHub/.../node_modules/node-sass/lib/index.js:294:32)
 @ ./src/index.js 3:0-26

mvxtheme.scss
@import '~normalize-scss/sass/_normalize.scss';
@include normalize();

So are you using an input value in px units?

@garrettw I use default variables... I just use normalize() mixin

Has there been any resolution to this? I'm having the same issue and used the Typey library which didn't work.
The only solution that has worked is just declaring my rem units after @include normalize()

You would only be getting that error if you are setting a value to one of these variables: https://github.com/JohnAlbin/normalize-scss/blob/master/sass/normalize/_variables.scss
Or if another library is also using those same variable names with unexpected values.


Firestore->exists() Segmentation fault

Environment details

OS: Windows 10
PHP version:  7.2.4
Package name and version:   "google/cloud-firestore": "1.6.2",

Steps to reproduce

Run the code bellow

Code example
$exists = $firestore->collection('user')->document('myUserThatDoesntExist')->snapshot()->exists();

Segmantation fault occur right after the exception in SnapshotTrait::getSnapshot() is thrown.
        if (!isset($snapshot['found'])) {
            throw new NotFoundException(sprintf(
                'Document %s does not exist',
                $name
            ));
        }

EDIT:  This seems to occur also when other exceptions are thrown.
The rest of the Firebase API is working fine ( set, update , .... )
Please let me know what kind of debug information would be useful to solve this issue.
Have a good day,
Samuel

Hi @sadortun,
What version of PHP, gRPC, and Protobuf (if installed) are you using?
Get the PHP version:
$ php -v

Get the gRPC and Protobuf versions:
$ pecl list

The first step would be to be sure you're using the most up-to-date version of the extensions, most especially protobuf. pecl upgrade should handle this for you. Give that a shot, and if it doesn't solve the problem let us know.
Your edit mentions segfaults in other exceptions as well. Can you provide an example?

Hi @jdpedrie
sadortun@sadortun1 MINGW64 /e/prog/web/newera/toolbox (master)
$ pecl list
bash: pecl: command not found

sadortun@sadortun1 MINGW64 /e/prog/web/newera/toolbox (master)
$ php -v
PHP 7.2.4 (cli) (built: Mar 28 2018 04:27:01) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

For the other exception i've see it was during
$exists = $firestore->collection('user')->document('myUser/WithASlashInHisName')

Thanks

Hi @sadortun, thanks for the additional information. Can you confirm whether you are using the protobuf extension? From the CLI, you can run php -r "print_r(get_loaded_extensions());", and check if protobuf is contained in the list. From a web server, you can simply run print_r(get_loaded_extensions());. If you do have the protobuf extension loaded, it would be fantastic if you could disable it and test whether the errors disappear.
We're continuing to investigate the issue. I'm sorry for the inconvenience, and really appreciate your patience and assistance.

@sadortun are you still having issues? If so, could you share the requested information so I can proceed with investigating?

@jdpedrie I'll give it a try  with XDebug and reopen If the issue is still present.
Thanks,
Samuel


fix deprecation message.

Referencing the ... extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead

As this bundle supports Twig 1.0+, I expect there should be a version check here. It's not always been possible to refer to extensions by their class names.

In my opinion bumping requirements of June 2014 shouldn't be a problem: https://github.com/asm89/twig-cache-extension/blame/master/composer.json#L16
I would advise following the minimum requirements of the Symfony LTS version, which is 2.8 and has php >=5.3.9 and Twig ~1.27 as a minimum: https://github.com/symfony/symfony/blob/2.8/composer.json#L21

I'd note that the current dependency of the 2.7 branch of Symfony (also a current LTS release) on Twig is at ~1.27, though the last release (2.7.19) was at ~1.26. It's certainly true though to say that Twig compatibility isn't frozen in regard to Symfony, so I wouldn't be against putting it to ~1.26 in a different PR.
From the perspective of this PR, though, it should support any version of Twig that is currently supported.

Great, @DenisMedved we could use Twig_Environment::VERSION for that.

So, i made some changes. But i not sure about line. Is there better solution ?

Or we can change name of extension.
//  Asm89\Twig\CacheExtension\Extension
    public function getName()
    {
        return self::class;
    }

I'd love the FQCN thingy but for that php should be bumped to >=5.4.
And we have version_compare for that?

@rvanlaak , ok thank you. That line has been replaced to version_compare . Looks much better.

I guess for 1.x support we need 5.3. Let's merge this version for now. Thanks all. :)

@asm89 any chance of releasing 1.3.1 to include this fix?

@msvrtan Done!


Multiple crates missing repository field

Hi! As part of our efforts to verify that crates.io releases are reproducible ^1, we have discovered that one or more crates hosted in this repo are missing the repository field ^2 in Cargo.toml.
The repository field helps users and automated tools find the link to the git repository hosting the source code. While not required by crates.io, we believe it should always be set.
We suggest that the repository field be configured for every crate published to crates.io. Thank you very much.

Good advice.  Will continue to track this.


Make it pip installable

Please make it easily installable by calling pip install parc.

A test version is published on test.pypi.org, as it would be hard to update the official non-test pip index if a lot of changes are required.
Please try installing it with the following command and report any issues or suggestions for improvements:
pip install -i https://test.pypi.org/simple/ PARCtorch
If there are no issues I will start releasing on the official pip.

Xinlun, both Zoe and I checked the functionality of this test library. Both were successful!

FYI "parc" is taken as a library on PyPi. Do we want to keep the name PARCtorch? VilParc?

Steve mentioned that we are g2g with the name "PARCtorch"

Released published. For now, anyone can download the .whl file and use command:
pip install PARCtorch-0.3.0-py3-none-any.whl
For additional dependencies for backward through adjoint method, use the following instead of the above:
pip install PARCtorch-0.3.0-py3-none-any.whl[adjoint]


indentation

Coverage remained the same at 92.866% when pulling f6c3fe3758b185c5b484f5ae4e71b05913ca8296 on enumag:patch-2 into b97cad0f4a50131c85d9224e8e36ebbcf1c6b425 on webonyx:master.


refactor: use core provider API from module API

Issue or need
Core module-based API is importing features, but not using provider API. This is not the usual way. And can happen that something is provided in provider API that is then not provided in module-based equivalent.
The pattern is to use the provider API in the module equivalent API. This way we only alter the provider one as source of truth and the module one is kept updated as it's using that one.

Proposed changes
Use provider API in module API for core module. Also removes the need to create a shallow array by fixing the return type.

Quick reminders

🤝 I will follow Code of Conduct
✅ No existing pull request already does almost same changes
👁 Contributing docs are something I've taken a look at
📝 Commit messages convention has been followed
💬 TSDoc comments have been added or updated indicating API visibility if API surface has changed.
🧪 Tests have been added if needed. For instance, if adding new features or fixing a bug. Or removed if removing features.
⚙ API Report has been updated if API surface is altered.

#874  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @davidlj95 and the rest of your teammates on  Graphite


segmentation fault

Hi,
I get a segmentaton fault when running racon on a 2 TB RAM machine.
Unfortunately, there is no more messages showing...
command:
[racon::Polisher::initialize] loaded target sequences 4.484466 s
[racon::Polisher::initialize] loaded sequences 638.382458 s
Segmentation fault

I am using racon: v1.4.4.
Dataset sizes:
reads: 27 GB
assembly: 800 MB
overlaps: 28 GB
Any ideas how to resolve the issue?

Hello,
which format is your overlaps file?
Best regards,
Robert

I think I found the problem, will update racon soon.

Please try out v1.4.5 at https://github.com/lbcb-sci/racon.

thanks, works now


Feature reorganise the translations text definitions spreadsheet, issue #3

I think the Spells sheet is a bit redundant now. The "Spell name"/"Spell description" only made sense in the context of being one of the options of a spell book, but since they are all separate items now, they can just be renamed and moved to the Items sheet instead, as fundamentally they are no different than any other kind of item.
i.e. "Spell name: Heal area" -> "Item name: Scroll of heal area"

I hope that we will implements some spells one day =)


This was because I forgot that I had a separator between the log side and the buffer side which took up two spaces of characters. The lines were shifted by 2 off the screen.


Move meta-module creation into Spack extension

Fix #149

Looks great. Did you run CI tests with these changes and the corresponding spack changes?

Never mind, let's merge this and run the CI tests on the develop repo.


operator trustify-operator (0.1.0-alpha.6)

Automated changes by create-pull-request GitHub action

/pipeline restart operator-hosted-pipeline

/pipeline restart operator-hosted-pipeline

/pipeline restart operator-hosted-pipeline

/pipeline restart operator-release-pipeline


Test: what happens to prior manually installed keyring upon removal?

@ximon18 asked:

What happens or should happen when the package with the signing key dependency is uninstalled, if you already had a package installed from us for which you manually provided the public signing key file? Would the new signing key package remove that too or are they independent of each other?

The case were the previous key was added using apt-key is covered in #3.


Finetuning on different dataset with same classes

❓ Questions and Help
I have trained the model on dataset X with 1 class and want to finetune the model on dataset Y which has the same class. What is the most convenient way to do it as I don't need to do model surgery? I have final_model.pth and just want to finetune on it. I would need to change LR and other paramers, but the model and the classes would stay the same.

How many classes do you have in total?
If only one I think you can do the following:

initialize your model with your weights. To do so use the MODEL.WEIGHT parameter

MODEL:
  ...
  WEIGHT: "/path/to/final_model.pth"
  ...

Change LR and the number of iterations to smaller values than initial training

Some ideas of finetuning configs can be found in quick configs like this one https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/configs/quick_schedules/rpn_R_50_FPN_quick.yaml

[Optionally] freeze some layers see #1001

@Dorozhko-Anton
I have used the same config file where I have modified MODEL weight with an absolute path to the final_model.pth for finetuning. I have also changed output directory in this config file.
The result is the training instantly finishes (without any iterations)
019-08-26 11:01:21,021 maskrcnn_benchmark.utils.miscellaneous WARNING: Dataset [ShipDataset] has no categories attribute, labels.json file won't be created
2019-08-26 11:01:21,023 maskrcnn_benchmark.trainer INFO: Start training
2019-08-26 11:01:21,110 maskrcnn_benchmark.trainer INFO: Total training time: 0:00:00.085638 (0.0000 s / it)
Any guidance? Do I need to modify somehow the final_model.pth before finetuning?
Thanks in advance!

@ds2268 You indeed have to do some model surgery and remove the "optimizer", "learning_rate" and "iterator" and then have to save the new model using torch.save(). Then you need to use this model for fine-tuning with different learning rate and related hyper params.
Please let me know if you have figured out, else I can post the code here.

@ds2268 #652 Solves this.


farisjarrah/cloud-sql-docs: Fixed a path error in an Cloud SQL exampl…

…e and added CFT commands for deployment and deleting Cloud SQL instances. Added an example template for Postgres.
Greetings,
I have been working on a CFT Cloud SQL deployment and saw a few things that could possibly use some fixing, and also a potential quality of life improvement for your users.

There was an error in the README.md that had an incorrect file path. Was: dns_managed_zone, Changed to: cloud_sql
Incorrect file path in the README with regards to linking to the example/cloud_sql.yaml
Quality of life improvement: Added CFT commands for the deployment and deleting of the Cloud SQL instances
Quality of life improvement: Added an example template for Postgres.

If there are any changes you would like to see or any other fixes, please don't hesitate to let me know and I will try my best to get them patched up.
Thanks!
Faris

Thank you for the great contribution. Would you be able to send your changes against to the cft-dm-dev branch? Otherwhise I'm holding this PR back until the end of the week when we plan to merge to master.
Also would you mind to check your examples against the schema and template in that branch?

Sure thing, I can probably get this done by this evening.

I've rebased off of cft-dm-dev and set that as my new upstream branch I still need to double check the schema though.

@googlebot I consent.

Already been merged, but I did double check the schema, thanks!

I did run the schema checks before merge. Thank you for your contribution!


Fix plots not showing on first experiment run

main
I shorted the demos since the experiment run takes over a minute to run on my computer at the moment 😅
https://github.com/iterative/vscode-dvc/assets/43496356/fff27f4b-81ff-4440-8e98-f9088ed753a4
PR
https://github.com/iterative/vscode-dvc/assets/43496356/d6b4e52d-a163-4066-bcf9-05f7476c01ca
Fixes bug mentioned in slack thread

I'll review today.


Add powershell full path for windows

Exception thrown when users did not set powershell in windows environmental variables, this causes the powerscript that paste images to not work at all.
Issue#12

I adopt your modify and add some improvement, like this:
let command = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe";
let powershellExisted = fs.existsSync(command)
if (!powershellExisted) {
    command = "powershell"
}

const powershell = spawn(command, [
    '-noprofile',
    '-noninteractive',
    '-nologo',
    '-sta',
    '-executionpolicy', 'unrestricted',
    '-windowstyle', 'hidden',
    '-file', scriptPath,
    imagePath
]);
powershell.on('error', function (e) {
    if (e.code == "ENOENT") {
        Logger.showErrorMessage(`The powershell command is not in you PATH environment variables.Please add it and retry.`);
    } else {
        Logger.showErrorMessage(e);
    }
});

detail: Paste fail when powershell not in PATH on windows · mushanshitiancai/vscode-paste-image@14a7065
Thank you for you mr very much!

Great, thanks so much :)


pull request for e2e test at 01/31/2017 06:26:13

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Can't use FlagKit in Objective-C project

Hi,
Maybe there's something else going on here, but somehow I can't use FlagKit anymore in my Objective-C project.
Using [[FKFlag alloc] initWithCountryCode:@"FLAGKIT"]
leads to a compiler error claiming that FKFlag does not have any initWithCountryCode initializer.
Is anyone else experiencing the same issue?

Hi!
Do you use Cocoapods or Carthage? Would you mind trying out the master branch before I make a release?

CocoaPods. I see your commits, might indeed be related to Swift 4 compatibility. Will check out the master branch and report back shortly, thanks!

@edwardmp How did this go? :)

The generated FlagKit-Swift.h looks like:
enum FKFlagStyle : NSInteger;

SWIFT_CLASS_NAMED("Flag")
@interface FKFlag : NSObject
/// Country code of the flag
@property (nonatomic, readonly, copy) NSString * _Nonnull countryCode;
/// Original unstyled flag image
@property (nonatomic, readonly, strong) UIImage * _Nonnull originalImage;
/// Returns a flag if the country code is supported, otherwise it returns nil
- (nullable instancetype)initWithCountryCode:(NSString * _Nonnull)countryCode OBJC_DESIGNATED_INITIALIZER;
/// Returns a styled flag according to the provided style
/// \param style Desired flag style
///
- (UIImage * _Nonnull)imageWithStyle:(enum FKFlagStyle)style SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

typedef SWIFT_ENUM_NAMED(NSInteger, FKFlagStyle, "FlagStyle", closed) {
/// Rectangle of 21 x 15 points with no styling.
  FKFlagStyleNone = 0,
/// Rectangle of 21 x 15 points with rounded corners.
  FKFlagStyleRoundedRect = 1,
/// Square of 15 x 15 points with rounded corners.
  FKFlagStyleSquare = 2,
/// Circular flag of 15 x 15 points.
  FKFlagStyleCircle = 3,
};


Persistency, options, username validation, project blocking

The goal is to make it so when people ask how to run their own cloud variable server, we have exactly one place for them to visit.

Added option to enable sqlite-based variable persistency
Merged option to enable username validation  (username-validate-prod uplift)
Merged project blocking mechanism (username-validate-prod uplift)
Added option to allow non-number values
Added a lot more options in general
TODO: graceful database save on eg. ctrl+c
TODO: cleanup
TODO: update README

cant wait to see this... keep up the good work.

Quick update on this: I believe the current cloud-server base to be a technical dead end. Much more radical change is necessary to get this to scale to the level of traffic we have, so things like this are on hold for the forseeable future.

@GarboMuffin Any updates on this? I tried it and it works fine.


[ITensors] Fix non-QN eigen with auto-fermion enabled

@b-kloss I think you were hitting this in ITensorNetworks.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 79.59%. Comparing base (e8197ce) to head (106a410).
 Consider uploading reports for the commit de7be59 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1380   +/-   ##
=======================================
  Coverage   79.59%   79.59%
=======================================
  Files         114      114
  Lines        9032     9032
=======================================
  Hits         7189     7189
  Misses       1843     1843

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


kalabox/kalabox#1240 gui protractor

@pirog
Protractor is now running tests on Travis.
I'm going to wait until I've submitted new tests (and deleted the old bogus tests) to merge this in, since the build will fail on Travis. But wanted to submit the pull request to get things going and get any comments you might have.

@reynoldsalec very exciting to see we are close on this


Configdir used in all config paths

Moving all the file reference as relative to config base folder.
We can always keep multipe config folders and switch from one
config to other by passing different base directory as argument to
program.

@ajamshed @krsna1729 Can you merge changes ? or let me know if anything needs to be done from my side.


Inconsistent ancestry prediction of a sample using peddy on a cohort VCF and individual VCF

Hi, this is not an issue but more of a question - I'm using peddy on a cohort VCF to predict the ancestry of the samples. Note that I created this cohort VCF by merging individual VCFs together, i.e., they were not joint called. Using the cohort VCF, peddy predicted one sample to be "UNKNOWN" with a probability of 49% but when I ran peddy on the individual VCF the same sample was predicted to be EAS with a probability of 98%.
I'm wondering if you had any insights as to why this may be happening? Does peddy take into account other samples in the cohort VCF as well while making the predictions which could be why there is a discrepancy or could it be because of a difference in the number of sites being sampled? Lastly, is it more reliable to use peddy on individual VCFs for ancestry predictions rather than a cohort VCF?
Thank you in advance for your help with this, I really appreciate it!

Hi, you should never use peddy on VCF from merged individual samples as there will never be hom-ref calls. I am surprised there is only 1 sample that changes.
So, it's more reliable to use a cohort VCF, certainly.

That makes sense! Thanks very much for your prompt response, I appreciate it!


Algorithm final round

Guten Abend, können Sie mir bitte den Algorithmus Ihrer letzten Aufgabenlösung über einen Router beschreiben?

We implemented various methods using different approaches and performance metrics, take a closer look at the place_* methods to see the details.
I can briefly describe the goals of each approach:

place_routers_on_skeleton
Computes the skeleton of the available space ("rooms") and places router on it. Precalculates the available routers and used budget.

place_routers_on_skeleton_iterative
Same as place_routers_on_skeleton, but places router iteratively on randomized positions on the skeleton.

place_routers_randomized
Places routers iteratively on uniform sampled positions, updates used cables by computing a mst or via bsf to the closest places cable.

place_routers_randomized_by_score
Same as place_routers_randomized, but chooses a position based on the approximated score of that position.

place_routers_by_convolution
Computes scores of router position by convolving the available space with a constant squared matrix with size radius x radius. As a result of this, routers can 'see' through walls, which does not comply with the problem statement.

Thank you!


Don't log when URLStreamHandler is already installed

For each module this
"URLStreamHandler is already installed" is logged when starting SBT. Unnecessary IMHO.

Thanks for reminding me.  This has been on my list for a while.  Here is the change:  https://github.com/frugalmechanic/fm-sbt-s3-resolver/commit/a1e246359baf8395e9c9f3cd6fbccceaab8b931e
Published as 0.16.0-SNAPSHOT

Thanks, this merits a 0.16.0 release for me ;-)

0.16.0 released!  Should sync to maven central in 10-20mins.


Bogus navigation on a change if the top of the editor is not visible

Steps to reproduce:

go to: https://microsoft.github.io/monaco-editor/
scroll down to the diff editor
minimize your window that you don't see first 5 lines of the diff editor
change content of the last visible line, actually can be any, but for a dramatic effect :)
unexpectedly the top of the diff editor will be revealed

It really hurts in the case with auto resizing: https://github.com/Microsoft/monaco-editor/issues/103.

I know I have code for detecting this browser reveal logic and undoing it when you click in the editor, I guess browsers desperately try to reveal the top-left textarea even when you type.
One workaround would be to select the textarea and make it position:fixed.
 .monaco-editor .inputarea { position: fixed !important; top: 0 !important; left: 0 !important; }

@alexandrudima thx, works for me, hope to remove it with the following releases

I've noticed that even with the workaround, if you have scrollBeyondLastLine: false on your editor, typing at the bottom of the editor while the top is scrolled out of view causes small scrolls up the page:

Here's my sample: https://gist.github.com/sandyarmstrong/e8a04f826787b441558f37c2f2cd16f8

Actually, in the above sample, the scrollBeyondLastLine setting is not responsible at all. But it does take a little bit of work sometimes to trigger the bug. Try adding a few newlines, typing, deleting them, typing again, and you should get the behavior seen in the gif.

@sandyarmstrong The problem is that we use a <textarea> as input. Please try the following CSS:
.monaco-editor .inputarea {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  width: 100px !important;
  height: 100px !important;
}

This will make this textarea visible. The hard part is to keep this textarea within the viewport. I thought that is what position: fixed is supposed to do. I think you can then correlate the jumping around with the textarea getting off-screen. The browser decides to jump because the textarea gets focused and it wants to "help you see what's focused". Perhaps you find a way to position the textarea such that it is always in the viewport for your app?

To explain what I mean:

in this page, in the comment box
click on the comment box
scroll all the way up
type 'a'
notice how the browsers are "helpful" and scroll down to the comment box to help you see what is focused.
basically the same is happening here.

Oh, I see now. I didn't realize the textarea was essentially hidden. Making your changes, the bug goes away because the textarea stays in the viewport when it is bigger. Something must be slightly off in the fixed positioning in Safari, as you suggest. It seems like I can fix by simply giving a 20px top margin to push the 1px X 1px textarea down slightly. Thanks!

Of note, if you need to "hide" the little textarea (you can see its tiny cursor blinking if the margin moves it somewhere visible), you'll want to use opacity:0; instead of tweaking display or visibility.

There is an upcoming change where the <textarea> used for input is now always positioned with the cursor. This might reduce such jumping substantially... Or at leat the browsers will jump to reveal the blinking editor cursor.

I think positioning the <textarea> with the cursor does help considerably / resolve this issue.
0.8.3.

master


Cron Trigger going in to ERROR state

I have a setup where there are couple of jobs and couple triggers. One is Simple trigger and the other is cron trigger. Cron trigger starts at application start up and simple trigger starts at an api call.
The weird thing that is happening is whenever the simple trigger is triggered the cron trigger is going to an Error state and it stops executing. Other than that the cron trigger just runs fine.
We are running quartz in cluster mode and backed by Jobstore TX. we are using postgres as the jdbc store.
I am using Spring boot quartz and also enabled debug logs. There is nothing in the debug log which will point me in the right direction.
Any help is appreciated

You didn't mention Quartz version?  Have you tried the latest?
Also a reproducer will be needed.


Refusing Modules with container images without a sha or a tag.

In the current code, we handle differently build/sign and deploying a pre-built kmod.
This is the current behavior:

If a build/sign section is set in the module, and the image tag isn't specified, then we will return an error.
If there are no build/sign section, and the image tag isn't specified, then we will default to the latest tag.

This change is adjusting the behavior of both workflow to enforce the customer to explicitely set a sha or a tag in his container image.

/cc @yevgeny-shnaidman @TomerNewman
This is a cherry-pick
Fixes https://github.com/rh-ecosystem-edge/kernel-module-management/issues/1153

/lgtm


Inter-issue dependency syntax

Finalize syntax for expressing dependencies between issues and document in form of a template or similar.

@ctcreel documented this in the Readme with a very cool quick link for creating new issues.
### Dependencies
* [ ] #X
* [ ] #Y
* [ ] https://github.com/ORG/REPO/issues/Z


Prevent unsafe use of llvm::StringSwitch.

Disable the copy constructor to prevent StringSwitch from being used with 'auto', which is important because the inferred type is StringSwitch rather than the result type. This is a problem because StringSwitch stores addresses of temporary values rather than copying or moving the value into its own storage.

Holding until CI stabilizes a bit. We can pull this in whenever.

@swift-ci Please test


⚠ Fortnite has degraded performance

In 2e9df50, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1657 ms

Resolved: Fortnite performance has improved in d5e0be6.


Fix sending messages starting with a space

There really is no need to trim apart bringing more situations like this. If I want to put spaces in front of my message (say, for alignment purposes), then I should be able to.
Fixes #319

Not trimming is fine, however I think we should block empty messages (e.g. spaces only).

Not trimming is fine, however I think we should block empty messages (e.g. spaces only).

Agreed, we don't want to send empty messages.

@maxpoulin64, any chance you could address the comments above? (Removing the second review needed label until then)

As someone pointed out in irc, people might want to send empty messages (even if that's silly). Also checked HexChat, they allow it too.
So I'll be fine with this fix.

👍


Add testing and document support for Python 3.7 & pypy3

What's the different between "pypy3.5-6.0" and "pypy3" on Travis?

I tried to do dist: xenial globally for Werkzeug a month ago and it didn't work. Guess something changed.

To get Python 3.7, I switched the dist to xenial. Details on the release here: https://blog.travis-ci.com/2018-11-08-xenial-release
Unlike trusty, xenial requires an explicit version for pypy. See the issue report here: https://travis-ci.community/t/pypy-2-7-on-xenial/889
On trusty, pypy3 is just an alias.

I tried to do dist: xenial globally for Werkzeug a month ago and it didn't work. Guess something changed.

Prior to the release, projects were required to add sudo: required to get xenial to work. But this has been resolved. Details here: https://github.com/travis-ci/travis-ci/issues/9815

Cool! I need to follow Travis announcements more closely. All the other Pallets projects need updating if you feel like making more PRs.


[FEAT] Add a TypeScript example in a live IDE running in the browser

Hosted at CodeSandbox.
closes #302
Live environment of examples
https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/302-ts_live_example_ref/examples/index.html

✔ tested with statically.io


Move public includes to their own directory

After this change, marian-lite can be built with -DVENDORED_LIBS=On.

<3


Document Prisma Client as a shared private dependency

Based on: https://github.com/prisma/prisma/issues/458 https://github.com/prisma/prisma/issues/1787
Problem
It can be useful to share generated database clients across projects, maybe you've got many applications talking to the same database.
Suggested Solution
Document this workflow: https://github.com/prisma/prisma/issues/1787#issuecomment-633881873
Alternative Solution
Test and Document:

git submodules
git subtree
npm private repo

Closing as not planned; we decided that this is not something that belongs into the Prisma docs.

I would disagree, this regularly comes up and some users are doing it - but we don't give users that can't any guidance on how to achieve this.


potentially inconsistent event generation from consumer / producer on app start and after connection to broker is restored

BUG: inconsistency in number of events generated in basic consumer / producer app (see code below)

when app starts, it receives "consumer.connect" event twice and "producer.connect" event once
when connection to broker is broken, app receives 1x "consumer.connect" event once and NO "producer.connect" event

Expected behavior: app received "consumer.connect" event once and "producer.connect" event on initial run and after reconnect to broker
`
async init(connStatusListener) {
this.connStatusListener = connStatusListener;
this.mqDeviceTopicName =...;
this.mqGroupId = ...;

let pwd = fs.readFileSync(registrationRoot + '/' + mSecurity.client.privateKeyPwdFile, 'utf-8');

//https://kafka.js.org/docs/retry-detailed
this.kafka = new Kafka({
    logLevel: logLevel[global.config.get("mq.logLevel")],
    brokers: global.config.get("mq.brokers"),
    ssl: {
        rejectUnauthorized: false,
        ca: [fs.readFileSync(registrationRoot + '/' + mSecurity.ca.certificateFile, 'utf-8')],
        key: fs.readFileSync(registrationRoot + '/' + mSecurity.client.privateKeyFile, 'utf-8'),
        passphrase: pwd.trim(),
        cert: fs.readFileSync(registrationRoot + '/' + mSecurity.client.certificateFile, 'utf-8')
    }
});

//initialize producer
this.producer = this.kafka.producer();
const producerConnectRemoveListener = this.producer.on(this.producer.events.CONNECT, (e) => {
    logger.info(`Producer connect at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('producer', e);
});
const producerDisconnectRemoveListener = this.producer.on(this.producer.events.DISCONNECT, (e) => {
    logger.error(`Producer disconnect at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('producer', e);
});
const runProducer = async () => {
    await this.producer.connect();
}

runProducer().catch(e => {
    logger.debug(`MQService, producer error ${e.message}`);
});

//initialize consumer
this.consumer = this.kafka.consumer({groupId: this.mqGroupId});//, allowAutoTopicCreation: false });
const consumerHeartbeatRemoveListener = this.consumer.on(this.consumer.events.HEARTBEAT, (e) => {
    logger.info(`Consumer heartbeat at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('consumer', e);
});
const consumerConnectRemoveListener = this.consumer.on(this.consumer.events.CONNECT, (e) => {
    logger.info(`Consumer connect at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('consumer', e);
});
const consumerDisconnectRemoveListener = this.consumer.on(this.consumer.events.DISCONNECT, (e) => {
    logger.error(`Consumer disconnect at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('consumer', e);
});
const consumerCrashRemoveListener = this.consumer.on(this.consumer.events.CRASH, (e) => {
    logger.error(`Consumer crash at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('consumer', e);
});
const consumerStopRemoveListener = this.consumer.on(this.consumer.events.STOP, (e) => {
    logger.error(`Consumer stop at ${e.timestamp}`);
    if (this.connStatusListener) this.connStatusListener('consumer', e);
});

const runConsumer = async () => {
    await this.consumer.connect();
    await this.consumer.subscribe({ topic: this.mqDeviceTopicName, fromBeginning: true });
    await this.consumer.run({
        eachMessage: async ({topic, partition, message}) => {
            logger.debug({
                partition,
                offset: message.offset,
                value: message.value ? message.value.toString() : "",
            });
            await remoteCommands.processMqMessage(message.value.toString());
        }
    })
}

runConsumer().catch(e => {
    logger.debug(`MQService, consumer error ${e.message}`);
});

}
`

We've come across the same issue. I believe this is a bug, with the consumer.connect emitted in two places:

Immediately after cluster connection (index.js:92)
On consumer group connection (consumerGroup.js:160)
The second one is probably a mistake, and was intending to emit a (as-yet nonexistent) consumerGroup-namespaced connection event.

Hi, same behavior here.
I'm getting two events on connect, this event is one of the triggers that I use to update the current state of a flow.
I added some logic to ignore the 2nd connect if the event was already called and if the disconnect event was not yet fired.
Does anyone from kafkajs can clarify if this is by design? If yes, could you explain the rational behind this decision? If not, could this be fixed?
Thanks


Get-DscConfiguration fails when xDnsServerADZone is used

Get-TargetResource for xDnsServerADZone has the property name of "CimSession" in the hashtable that is returned.  This property is not definded in the resource schema of the resource causing Get-DscConfiguration to fail.

Confirmed. Issue with <IP_ADDRESS>.


[do not merge] use type: swift instead of type: boto3 for nectar_test in object store

This is trying to be like Galaxy Main's entry here: https://github.com/galaxyproject/usegalaxy-playbook/blob/33fac17ea40efe05a11e68204f1d5f079b5ed775/env/main/group_vars/all/galaxy_config_vars.yml#L181-L203
I have this in my object_store_conf with localhost galaxy and my galaxy won't start, so this is not good to merge.

Traceback (most recent call last):
  File "/Users/cat/dev/galaxy/lib/galaxy/webapps/galaxy/buildapp.py", line 68, in app_pair
    app = galaxy.app.UniverseApplication(global_conf=global_conf, is_webapp=True, **kwargs)
  File "/Users/cat/dev/galaxy/lib/galaxy/app.py", line 698, in __init__
    super().__init__(fsmon=True, **kwargs)
  File "/Users/cat/dev/galaxy/lib/galaxy/app.py", line 550, in __init__
    super().__init__(**kwargs)
  File "/Users/cat/dev/galaxy/lib/galaxy/app.py", line 283, in __init__
    self._configure_object_store(fsmon=True)
  File "/Users/cat/dev/galaxy/lib/galaxy/app.py", line 448, in _configure_object_store
    self.object_store = build_object_store_from_config(self.config, **kwds)
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/__init__.py", line 1651, in build_object_store_from_config
    return objectstore_class(config=config, config_dict=config_dict, **objectstore_constructor_kwds)
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/__init__.py", line 1118, in __init__
    backend = build_object_store_from_config(config, config_dict=backend_def, fsmon=fsmon)
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/__init__.py", line 1651, in build_object_store_from_config
    return objectstore_class(config=config, config_dict=config_dict, **objectstore_constructor_kwds)
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/s3.py", line 190, in __init__
    self._initialize()
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/s3.py", line 210, in _initialize
    self._bucket = self._get_bucket(self.bucket)
  File "/Users/cat/dev/galaxy/lib/galaxy/objectstore/s3.py", line 253, in _get_bucket
    bucket = self.conn.get_bucket(bucket_name)
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/s3/connection.py", line 509, in get_bucket
    return self.head_bucket(bucket_name, headers=headers)
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/s3/connection.py", line 528, in head_bucket
    response = self.make_request('HEAD', bucket_name, headers=headers)
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/s3/connection.py", line 667, in make_request
    return super(S3Connection, self).make_request(
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/connection.py", line 1070, in make_request
    return self._mexe(http_request, sender, override_num_retries,
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/connection.py", line 1030, in _mexe
    raise ex
  File "/Users/cat/dev/galaxy/.venv/lib/python3.10/site-packages/boto/connection.py", line 944, in _mexe
    response = connection.getresponse()
  File "/Users/cat/.pyenv/versions/3.10.5/lib/python3.10/http/client.py", line 1374, in getresponse
    response.begin()
  File "/Users/cat/.pyenv/versions/3.10.5/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/Users/cat/.pyenv/versions/3.10.5/lib/python3.10/http/client.py", line 287, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

With the above commit this shouldn't break galaxy anymore. I'm trying the data fetch job on the localhost galaxy to see if it will work.


Call shutdown() also when other direction is already closed

This avoids vanishing of the SSL session cache. When calling SSL_free() on a non-shutdowned connection, the session is considered bad, and removed from the session cache:

the SSL_SENT_SHUTDOWN flag is set and a currently open session is considered closed and good and will be kept in the session cache for further reuse.

https://www.openssl.org/docs/man1.0.2/ssl/SSL_shutdown.html
You can verify this with https://www.ssllabs.com/ssltest/index.html ... and check for:

Session resumption (caching): Yes

So this is essentially an optimization and feature?

IMHO it's generally better/RFC-conform to shutdown() a socket before closing, so it is closed with TCP FIN+ACK packages. When closing a socket directly it is hard closed with a RST packet which should be used only on errors.
The problem with the SSL session cache is "just" a side effect here - the one which we noticed while testing the SSL connection ;-)
So this can also be classified as a bug.

The server already does proper shutdown for non-SSL so this change breaks that (or at least is incorrect). For SSL I'm pretty sure it also is correct, I know it uses SSL_shutdown. In any case, this is obviously not a critical bug and I rather not fidget with such fundamental things this late in v0.14. Everything from this point on will be about v0.15 or v1.0 where all of this garbage code is rewritten in uSockets.

Okay I see ... for the case that the server closes the connection I agree - then shutdown() is maybe called twice now - I forgot that. But for the case, the client closes the connection, no shutdown() is currently called if I am right.
But you are right it's not a critical bug. I expected a bigger traffic overhead here when session reuse does not work. But it seems the newer "SSL session tickets" have superseded the SSL sessions anyway. This patch currently runs in production for ~20k clients and we don't see a significant difference besides the succeeding SSL-Labs test ;-)

No worries ;-) I just wanted to confirm that it is not a bigger SSL-Traffic problem in live environments - at least much smaller as I initially expected ;-)
Thanks!

v0.14 is a complete garbage heap compared to what I'm working on now. Especially SSL will be a lot better integrated.

Very cool ;-) I'm looking forward to the next version ;-)

And just as I was about to start kicking the tires on v0.14 ... is there a roadmap or something for this library and uSockets?

@abrownsword Tires are of good condition and has been for 2 years. This is a non-critical standards noncompliance, not a 5 GB/sec memory leak.

Yeah, I got that much... but i posted here because I don’t know where is a good place to ask about your roadmap, since you’ve mentioned post-v0.14 efforts on-going.

On Jun 13, 2018, at 2:06 PM, Alex Hultman<EMAIL_ADDRESS>wrote:
@abrownsword Tires are of good condition and has been for 2 years. This is a non-critical standards noncompliance, not a 5 GB/sec memory leak.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

I tested the server with Wireshark and it does send proper FIN-response to a peer shutdown. It's really only an issue for SSL.

What if you just add a SSL_shutdown call for this case?

Ah ok, cool. Hmm, after reading some more docs, I'm still not 100% sure what's the "perfect/proper" way to shutdown a SSL/TLS-connection:

I thought SSL_shutdown() is the SSL counterpart of shutdown() ... but it seems to be more a "high-level" shutdown that does not shutdown the socket ... and it can be called twice to receive the "close-notify" from the other side (but it's okay to call it only once)
So, maybe is this the correct way for this use-case (?): SSL_shutdown() + shutdown(SHUT_RDWR) + close()  ??
I think, it should not be a problem to do the same procedure if the other party already closed the connection ... some calls should just be a NOOP then (I hope).
Of course shutdown() should not be called twice in any case (this is probably wrong in my current pull-request)

But where do you think we can just add a SSL_shutdown() call?

Yes ... it's definitely easier to handle this in the rewritten uSockets implementation. No problem ;-)
One more thing regarding the socket close: It would be helpful to have a callback in closeSocket() in Socket.h - i.e. to collect some metrics about read/written bytes ... or to cleanup some SSL specific things (ECDH curves and such things). The onDisconnection() is too early as it is called in Socket.close() before the OP_CLOSE is sent.
Also it would be nice to count the real unencrypted bytes sent/received over a connection (with HTTP-Upgrade, WebSocket headers etc. on socket level). There is currently no way to collect the exact counters - even at application level, right? By the way for SSL connections the encrypted traffic can be already monitored with BIO_number_read(SSL_get_rbio(sslSocket)); and BIO_number_written(SSL_get_wbio(sslSocket)); ... when having a callback in closeSocket(), this could already be handled at application level. Both metrics (encrypted and unencrypted traffic) makes sense I think.
Does it make sense to open new feature-request-pull-requests for that? Or do you already plan such features? Or did I oversee something and it is already possible? Should I wait until the uSockets rewrite?

Sounds like you want to implement a middle layer plugin in uSockets instead. You can do all of this in the layered design I'm working on. Every SSL byte sent in the server goes through the TCP socket so you can easily tap in to it and count.

Oh great, I didn't notice that the uSockets implementation is already on GitHub in a separate repo ... I'll have a look! Thanks :-)


Pass multidex flag when using --machine mode

@christopherfujino I'm trying to fix https://github.com/Dart-Code/Dart-Code/issues/3837 where the --[no-]multidex option is not passed when running from the IDE (which uses --machine). I think the fix is quite simple (this PR), but I've been failing to get a test around this so looking for pointers :-)
I think the correct place for a test is in test/commands.shard/hermetic/run_test.dart and I want to do something like:
createTestCommandRunner(command).run(<String>['run', '--machine']),

I think I want to verify that the call to FakeDevice.startApp() was passed platformArgs that contain a multidex bool, or that the Runner's startApp() was called with multidexEnabled: true/false, but I've not been able to set this up well enough to check that (RunCommand creates Daemon and calls appDomain startApp() which creates a HotRunner).
I think I probably want to add a HotRunnerFactory to AppDomain (similar to the attach test has) but since all the classes in between are constructed directly by calling their constructors, I think it'll mean changing a bunch of things in between I was hoping for a second opinion!
Pre-launch Checklist

[ ] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ] I read the Tree Hygiene wiki page, which explains my responsibilities.
[ ] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[ ] I signed the CLA.
[ ] I listed at least one issue that this PR fixes in the description above.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making, or this PR is test-exempt.
[ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@christopherfujino any suggestions on the best way to test this?

I think I want to verify that the call to FakeDevice.startApp() was passed platformArgs that contain a multidex bool, or that the Runner's startApp() was called with multidexEnabled: true/false, but I've not been able to set this up well enough to check that (RunCommand creates Daemon and calls appDomain startApp() which creates a HotRunner).
I think I probably want to add a HotRunnerFactory to AppDomain (similar to the attach test has) but since all the classes in between are constructed directly by calling their constructors, I think it'll mean changing a bunch of things in between I was hoping for a second opinion!

Sorry, I don't have a better idea than this. @GaryQian do you have any ideas?

@GaryQian any thoughts on the above? :)

I had to re-create my fork to fix a dependabot bug which closed this, but I'm still interested in this. I believe this change fixes the issue being reported at https://github.com/Dart-Code/Dart-Code/issues/3837, but I don't know of a reliable way to test these parts of the code (specifically, testing the command line flag makes it down into these classes).

@GaryQian can you take a look at this and how Danny can test it?

Hey sorry for being slow on the reply. The question being asked is primarily within the domain of tooling testing, and unfortunately I don't have too much insight on the best way to test it. The fix itself for passing the multidex flag LGTM though.
My testing for the multidex feature was primarily end-to-end integration tests and unit testing particular methods.

Apparently re-creating my fork disconnected this PR from it. I've re-raised this at https://github.com/flutter/flutter/pull/101689.


Feature Request: Periodic boundary conditions included in atomic environment display

Hi,
I was wondering how complex it would be to include PBCs in the calculation and display of atoms within the cutoff radius for an atom. At least from my perspective, it would be super helpful. Ideally the structure would then also be centered around the atom of interest so that the environment is shown as one piece.
Is it somehow clear, what I mean?
Best,
Johannes
P.S.: Special greeting to Guillaume ;)

Hi Johannes!
The easiest way to include PBC in the local environments is to replicate the cell (set supercell to 3x3x3) in the structure viewer settings. You can do this automatically when generating the file by using something like:
import chemiscope

chemiscope.write_input(
    ...,
    settings={"structure": [{"supercell": [3, 3, 3]}]}
)

The different settings are documented here: https://chemiscope.org/docs/tutorial/input-reference.html

Since this is not the first time someone ask how to do this (#133), let's keep this issue open until we have either better documentation on this question or a better way to handle it.

Great, it worked perfectly!

Hello, just wanted to add here that I was experiencing the same issue recently.
Would it make sense if the routine is modified so that the necessary unit cell replications are already made to guarantee a full highlighting of the atomic environment? I can see that it might be a bit complicated given that the user has the freedom to tune the environment radius. But, I thought this was still worth brining up.
Thanks for a great software nonetheless! Quite helpful I must say :)
Best,
Raymond

Defaulting to a 3x3x3 supercell (or whatever is needed for the current cutoff size) when visualizing environments would be a nice way to fix this. I would keep the option to pick the number of supercells when visualizing a single cell the same as now, since that's where it is the most useful.


useImperativeHandle is invalid

Please provide all the information requested. Issues that do not follow this format are likely to stall.
Description
When I navigate back and navigate it again with different key, params.useImperativeHandle is invalid
React Native version:
0.65.1
Steps To Reproduce
the code like this:
const MyInput = forwardRef((props,ref)=>{
  useImperativeHandle(ref,()=>({
    test(){
      console.warn('test');
    }
  }));
  return (
    <TextInput placeholder={props.value} />
  );
});

const MyInsidePage = ({route}) => {
  const inputRef = useRef(null);
  useEffect(() => {
    setTimeOut(()=>inputRef.current.test(),5000);
  }, []);
  return (
    <View>
      <MyInput ref={inputRef} value={route.params.text} />
    </View>
  );
}

const Index = ({navigation}) =>{
  return (
    <View>
      <Text onPress={()=>navigation.navigate({name:'MyInsidePage',params:{text:'page1'},key:'MyInsidePage_1'})}>go to 1</Text>
      <Text onPress={()=>navigation.navigate({name:'MyInsidePage',params:{text:'page2'},key:'MyInsidePage_2'})}>go to 2</Text>
    </View>
  );
}

The steps are:

go page 1.
navigate back
go page 2.(show errors)

The package version:
"@react-navigation/native": "^6.0.2",
"@react-navigation/native-stack": "^6.1.0",
"react-native": "^0.65.1",
Expected Results
no error
Snack, code example, screenshot, or link to a repository:

@BooYeu Can you show the actual code snippet to provide a more clear insight of your implementation?
Also consider using Snack - Expo to properly demonstrate the issue you're facing and help visualize the use case.
Observations
I can see that you're calling the method share that has the following implementation, or something like that.
const share = useCallback(() => {
  shareActionSheet.current.show();
}, [])

Make sure that while using a ref somewhere within your code that points to a component, make sure that this ref has been successfully set to the corresponding value, keeping in mind the mounting of the target component and all that.
Semi-Educated Guess
I believe the behavior you're getting is because you're mounting/unmounting the component via your navigation. Thus within your MyInput component; the following happens:

MyInput component mounted. The ref is asynchronously assigned to the corresponding component.
MyInput component unmounted. The ref refers to null since the component is no longer there. The ref is asynchronously set to null.
MyInput component did not mount yet but was subject to getting up there to your screen. The ref gets called via your share function to execute a method through forwardRefing, but the ref was still pointing to null.
Bam, a crash occurs.

I am not sure but it might be the scenario that occurred.
Conclusion
While dealing with refs use the Operator - Optional Chaining operator which is ?. to properly access objects and avoid crashes and such.
const share = useCallback(() => {
  shareActionSheet.current?.show(); /* < added the optional chaining operator */
  /* rest of your code */
}, [])

try
const share = useCallback(() => {
  shareActionSheet.current?.show();
}, [shareActionSheet])/* < added shareActionSheet */

I found the error is react-native-hold-menu or react-native-reanimated~~I will submit issue in them. thank you all very much !!!!!


import quantity adjustment is not working

[ ] in inventroy adjustment import quantity adjustment not working

[ ] Item Batch column not needed in csv file
[ ] Account type column not provided in csv file
[ ] if we not enter mandatory data's on csv file and importing it showing internal server error

[ ] while importing with valid credentials it showing error with tick mark


Add order by

I would like to know if it is possible to order the news by time, should it be good to get the news up to date.
Could i create an PR for that issue?

@erickbelfy Hey Erick! Yeah, I thought about it once (see #1 :laughing:) and even started to work on it but I just dropped the feature completely. Even though the whole idea of this program is to reflect whatever is on the front page of HN, this feature it's nice to have.
You can definitely start some work on it if you feel like. The only thing I would ask is to trigger this by reading from a flag and not something that the user can do when the program is already running.
Thanks for your interest!

Sure @rafaelrinaldi i was wondering if i could implement a new flag like --order-by=<column>. Should it works?

@erickbelfy Hum, I think --latest should suffice since ordering by anything else doesn't really make sense nor it's useful. How does that sound?

Sounds really good @rafaelrinaldi do you have any preferences about unit tests? Because i didn't see any unit test cases at your code yet.

@erickbelfy I've a local branch with some basic tests that I was planning to add but haven't had the time to publish them yet. Is this an issue?

Not at all, i just would like to know what is your suit test case to follow your standards, but i can do the same.

But we should consider implement this for future implementations, start an documentation about how users can contribute to the project :)

@erickbelfy Yup, it's on the pipeline already! Just haven't had the time to tackle it as I said. I can ping you when there's a somewhat decent version if you want to.

Absolutely, i'd like to keep updated about the project, that's a pleasure to help and learn more about it. ;)

@erickbelfy Glad to hear :smile:


[ResourceExplorer] modeled search filter by latest value is ignored

Description:
Resource explorer offers the ability to browse modeled data, and then apply a client-side filter to the data based on the value of the "Latest Value".

Utilize the dashboard on an account that contains numerical data
Browse modeled data streams, and find data streams that show latest values
Apply a "greater than" filter on "Latest value", with a value less than some of the values present on properties for the selected asset property.

Expected behavior: The table displays all properties with a latest value that obeys the filter
Observed behavior: No properties return, even when there are properties which obey the "Latest value" filter
Below is a screenshot of the filter incorrectly filtering out all data

Below you can see with the filter removed, there is infact data with latest value greater than 30

### Acceptance criteria
- [ ] Add a draft title or issue reference here

"Latest value" filter works for modeled data search with all operators (<, >, =, etc..)

confirmed as fixed


feat #27: support bank module

#27

We use the bank module to test our framework, which can show the following results

Good job! Could you solve the conflict and pass the CI?

I'll fix it

What's the bank model? OpenChaos will only support some of the popular distributed systems as the schedule said. If you have some needs in this area, you are welcome to discuss them with us :-)

The bank transfer model can easily verify the reliability of the distributed database by checking the total account amount, This will be useful for distributed databases(eg: Tidb) Or distributed transaction framework(eg: Seata)

The bank transfer model can easily verify the reliability of the distributed database by checking the total account amount, This will be useful for distributed databases(eg: Tidb) Or distributed transaction framework(eg: Seata)

In addition to providing models, it would be better to adapt Tidb or Seata or other components suitable for the bank model.


Make jqwik-vavr a module of jqwik itself

@Befrish If you are interested we could include jqwik-vavr as an "official" jqwik module.
Two options:

With its own versioning policy, like jqwik-spring or jqwik-testcontainers
Synchronized with jqwik core versioning, like jqwik-time, jqwik-web and jqwik-kotlin

The latter option requires more synchronisation and constant update, of course.

Hi @jlink ,
it is a nice idea. I'm interested in providing this as an "official" jqwik module.
I think it the first option is a little bit better in order get more flexibility with the external dependency to Vavr. You can react faster to support newer versions of Vavr.
What would you suggest in order to migration this projecct to "official" repository?

@Befrish
The simplest first step would not even require an "official" repository. All modules that are currently published under "net.jqwik" have their repo in my user, but that's not really necessary. I could (or maybe should) create a jqwik organisation on Github one of these days, then all repos can move there. If you want, though, the initial repo can be under my user, of course.
To do the migration I suggest taking https://github.com/jlink/jqwik-spring as a template.  So there are a few steps:

Move from Maven to Gradle. That's not strictly necessary but I personally don't want to support diverging approaches for building, deploying and releasing artefacts. I also suggest starting with a new version number, maybe 2.0.0 in order to make the jump obvious.
Change base package to net.jqwik.vavr and move all published API to net.jqwik.vavr.api.
Add org.apiguardian.api.API annotations to the published part of the API.
Add a little bit of documentation for the supported generation DSL VavrAbitraries etc. and compatibility with Vavr and jqwik versions.
First release by me
Find an easy way to allow you to release as well. This probably requires generating release tokens. One could also move the release process to GitHub actions if that will simplify things.

I can help with most steps, but apart from 5 and 6, I don't have to.
I haven't looked deeply into the current code so there may be a few things that should be changed to make the API align with current APIs.
As for the frequency of updates: IMO the minimum should be to keep up compatibility with the latest jqwik release. For instance, I noticed the use of @Unique annotation somewhere, which is no longer supported.

@jlink I have committed some changes. I updated the versions to the latest. This commits should cover most of the points. Regarding annotating API and documentation I'am not finished yet. By change you can have a deeper look in the code and give me some feedback.
Note: I added Gradle files in order to support your wish.  But I want to leave Maven, because the Gradle plugins does not support all of the features I use in Maven. These features are import to ensure the quality. So I will use Maven in future development. The build with Gradle should work without problem, because it does less tasks than Maven.

Looks good at first glance.
I’ll publish a snapshot and create a PR with some minor suggestions.

Added PR https://github.com/Befrish/jqwik-vavr/pull/12

Published successfully to "2.0.0-SNAPSHOT"

Documentation is wrong. Group ID is "net.jqwik" not "net.jqwik.vavr"

I fixed the groupId in the documentation.

If you’re happy with the current state I could do a first release. Documentation can always be improved later.
Two options: you either give me write access to the repo so that I can advance version numbers to 2.0.0 and after publication to 2.0.1-SNAPSHOT, or you create the release version, tag it and tell me when you’re done. I can checkout the tag and publish the release. Both are fine for me.

Maybe you also want to add a sample to https://github.com/jlink/jqwik-samples

I created an organisation for all jqwik-related development: https://github.com/jqwik-team/
@Befrish If you want, you can transfer the repo there and I'll add you as collaborator/maintainer.
Also, I'd like to release 2.0.0 if you give your ok. Mid-term I plan to set-up a release-mechanism that can be triggered by all maintainers - probably via a GH action.

@jlink This is okay. Please give me the permission to create a repository in the organisation. Then I can transfer the repository.

@Befrish I sent out an invitation

@jlink Thank you. I transfered the repository. I think there are some adjustments to do (Maven Repository, Readme-File with Repository in text).

@Befrish Will you do the adjustments or should I?

@jlink I do not have enough time to do this at the moment. So you can do it.

2.0.0 has been released


Hash sql generated by js files, not the files themselves

Current method is inconsistent, as .js files may import external files which are not included in the hash, which could change the SQL statement without changing the hash.
This change would also allow e.g. linters to clean up a migration .js file after the migration has run.

Seems reasonable! I'd accept a PR for this, but it's a breaking change so would be a major version bump.

const contents = await getFileContents(filePath)
const sql = getSqlStringLiteral(filePath, contents, type)
const hash = hashString(fileName + sql)

^ Like this?
I think this would maintain backwards compatibility for anyone only using sql files and not js files.

Correct. There's no way to make this backwards compatible for JS. But
should sove the issue.
On Mon, 12 Nov 2018, 12:18 Thom Wright<EMAIL_ADDRESS>wrote:

const contents = await getFileContents(filePath)const sql = getSqlStringLiteral(filePath, contents, type)const hash = hashString(fileName + sql)
^ Like this?
I think this would maintain backwards compatibility for anyone only using
sql files and not js files.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ThomWright/postgres-migrations/issues/15#issuecomment-437858642,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACnkzHfsAeAOTQ1mb_LbqqOfZgd116IUks5uuWcFgaJpZM4U86g8
.

Cool - Will make one!


CSCanvas Qualification Review & Peer-Grading

CSCanvas Qualification Review
KEY FEATURES
Feel free to demo these features and try them out on your own! If you want working credentials to test out the student features:
EMAIL<EMAIL_ADDRESS>PASSWORD: SecurePassword123$

Sign-Up Page
Log In Page
Stats Checker
Student Submission and Assignment Page
Teacher Review and Assigning Page

HOW IT WORKS
We'll go over it when speaking to the groups in our demonstration, but we'll go over it here as well.

JSON Web Tokens for Sign-Up and Login Pages

Authentication:

Teachers and students have different sets of credentials (e.g., email and password) stored in a database.
When a user attempts to log in by sending a POST request to /api/login/authenticate, the server first checks if the user exists in the database based on the provided email.
If the user exists, the server checks if the provided password matches the stored password hash. This comparison is done securely using the SHA-256 hashing algorithm.
If the provided credentials are correct, the server creates a JSON Web Token (JWT) containing user information (e.g., user role, user ID) and issues it to the client.
The JWT is then securely stored as an HTTP-only cookie named "flashjwt."

Authorization and Secure Routes:

Once a user is authenticated, they can access secure routes within the application.
The /getYourUser endpoint is used to retrieve the user's information. It expects the user to have a valid JWT stored in the "flashjwt" cookie. The JWT contains user role information, allowing the server to distinguish between teachers and students.
Based on the user's role, the server can determine which routes and data are accessible to that user. For example, certain routes and resources might be restricted to teachers, while others are accessible to students.

@PostMapping("/authenticate")
  // public ResponseEntity<Object> authenticate(@RequestBody final Map<String, Object> map, @CookieValue(value = "flashjwt", required = false) String jwt, HttpServletResponse response) throws NoSuchAlgorithmException {

  public ResponseEntity<Object> authenticate(@RequestBody final Map<String, Object> map, HttpServletResponse response) throws NoSuchAlgorithmException {
    var popt = personJpaRepository.findByEmail((String) map.get("email"));

    if (!popt.isPresent()) {
      // error handling
      Map<String, Object> resp = new HashMap<>();
      resp.put("err", "No such user with email provided");
      return new ResponseEntity<>(resp, HttpStatus.BAD_REQUEST);
    }
    var p = popt.get();

    String password = (String) map.get("password");

    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    byte[] encodedHash = digest.digest(
        password.getBytes(StandardCharsets.UTF_8));
    String computedPasswordHash = new String(encodedHash);

    if (computedPasswordHash.equals(p.getPasswordHash())) {
      // redact password
      p.passwordHash = "REDACTED";
    } else {
      Map<String, Object> resp = new HashMap<>();
      resp.put("err", "Incorrect Password");
      return new ResponseEntity<>(resp, HttpStatus.BAD_REQUEST);
    }

    String jws = handler.createJwt(p);
    Cookie cookie = new Cookie("flashjwt", jws);
    cookie.setPath("/");
    cookie.setHttpOnly(true);
    response.addCookie(cookie);

    return new ResponseEntity<>(jws, HttpStatus.OK);
  }

Student & Teacher Pages

Authentication and Authorization:

Authentication and Authorization: The code enforces authentication through the use of JWTs, ensuring that only authorized users (admins) can create assignments and submissions. It checks the user's role to determine if they have permission to perform specific actions, like creating assignments.

Assignment Management: It provides endpoints for creating assignments, searching for assignments by name, and retrieving a list of all assignments. Teachers (admins) can create assignments, providing details such as the assignment name, description, and due date.

Submission Handling: The code also handles the creation of student submissions for assignments. Users provide a link and timestamp for their submissions, associating them with a specific assignment. It ensures that submissions are linked to existing assignments.

Error Handling and Responses: The code includes error handling and provides appropriate error responses in cases of unauthorized access, missing assignments, or empty result sets.

    @PostMapping("/createSubmission")
    public ResponseEntity<Object> createSubmission(@CookieValue("flashjwt") String jwt,
            @RequestBody final Map<String, Object> map) throws IOException {
        Person p = handler.decodeJwt(jwt);

        Assignment assignment = assRepo.findById(Long.parseLong((String) map.get("assignmentID"))).orElse(null);

        if (assignment != null) {
            Submission submission = new Submission();
            submission.setLink((String) map.get("link"));
            submission.setTime((String) map.get("time"));
            submission.setEmail((String) p.getEmail());
            submission.setAssignment(assignment); // Associate submission with the assignment

            subRepo.save(submission);

            Map<String, Object> response = new HashMap<>();
            response.put("err", false);
            return new ResponseEntity<>(response, HttpStatus.CREATED);
        } else {
            Map<String, Object> response = new HashMap<>();
            response.put("err", "Assignment not found");
            return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
        }
    }

Statistics Checker

MultiVarAnalyticsGradeRegression.java:

This file defines a Java component for performing multiple variable regression analysis. It includes methods for normalizing data, calculating regression coefficients, displaying regression charts, and calculating quantiles.
It has a performCrossValidation method for training a regression model on a dataset, making predictions, and calculating the Mean Squared Error (MSE) for testing.
Additionally, the code provides functionality for creating regression charts and data visualization.

@Component
public class MultiVarAnalyticsGradeRegression {

    public void performCrossValidation(int numStudents) {
        double[][] xData = MockDataGenerator.generateXData(numStudents);
        double[][] normalizedXData = normalize(xData);
        double[] yData = MockDataGenerator.generateYData(xData);

        // Split the data into training and testing sets (80-20 split)
        int trainSize = (int) (0.8 * numStudents);
        double[][] trainX = Arrays.copyOfRange(normalizedXData, 0, trainSize);
        double[][] testX = Arrays.copyOfRange(normalizedXData, trainSize, numStudents);
        double[] trainY = Arrays.copyOfRange(yData, 0, trainSize);
        double[] testY = Arrays.copyOfRange(yData, trainSize, numStudents);

        // Train the regression model on the training set
        double[] coefficients = calculateCoefficients(trainX, trainY);

        // Predict the grades for the testing set
        double[] predictedY = new double[testY.length];
        for (int i = 0; i < testX.length; i++) {
            predictedY[i] = coefficients[0];  // bias term
            for (int j = 0; j < testX[i].length; j++) {
                predictedY[i] += coefficients[j + 1] * testX[i][j];
            }
        }

        // Calculate the Mean Squared Error (MSE) for the testing set
        double mse = 0;
        for (int i = 0; i < testY.length; i++) {
            mse += Math.pow(testY[i] - predictedY[i], 2);
        }
        mse /= testY.length;

        System.out.println("Mean Squared Error on Testing Set: " + mse);
    }

MockDataGenerator.java:

This file contains a Java component that generates mock data for use in regression analysis. It includes methods for generating student data with metrics like commits, pull requests, issues, and repositories contributed to.
The generateYData method calculates student grades based on the generated data and specific formulas for each metric.

public static double[] generateYData(double[][] xData) {
        double[] yData = new double[xData.length];

        for (int i = 0; i < xData.length; i++) {
            yData[i] = calculateGrade((int)xData[i][0], (int)xData[i][1], (int)xData[i][2], (int)xData[i][3]);
        }

        return yData;
    }

GradePredictionController.java:

This file is a Spring Boot RESTful controller responsible for handling requests related to grade prediction. It uses the MultiVarAnalyticsGradeRegression service to perform regression analysis and generate grade prediction responses.
It defines an endpoint for predicting grades based on student data and returns a response containing regression coefficients, chart images, and other relevant information.

@RestController
@RequestMapping("/api/grade")

public class GradePredictionController {

    @Autowired
    private MultiVarAnalyticsGradeRegression regressionService;

    @PostMapping("/predict")
    public ResponseEntity<GradePredictionResponse> predictGrade(@RequestBody GradePredictionRequest request) {
        MultiVarAnalyticsGradeRegression.RegressionResult result = regressionService.performRegression(request.getNumStudents());

        // Extract coefficients
        double[] coeffs = result.getCoefficients();

        // Generate charts for each metric and collect image URLs
        String[] metrics = {"Commits", "Pulls", "Issues", "ReposContributedTo"};
        List<String> imageUrls = new ArrayList<>();
        for (String metric : metrics) {
            MultiVarAnalyticsGradeRegression.displayChart(result.getXData()[0], result.getYData(), coeffs, metric); // Assuming XData[0] corresponds to the first metric
            imageUrls.add("/images/" + metric + ".png");
        }

        // Construct the response
        GradePredictionResponse response = new GradePredictionResponse();
        response.setBias(coeffs[0]);
        response.setCommitCoefficient(coeffs[1]);
        response.setPullCoefficient(coeffs[2]);
        response.setIssueCoefficient(coeffs[3]);
        response.setReposContributedToCoefficient(coeffs[4]);
        response.setImageUrls(imageUrls);

        return ResponseEntity.ok(response);
    }

PEER-GRADING

[ ] Frontend
[ ] Backend
[ ] API
[ ] Agile

HOOK:
Points: 3.6-4.0
Reason:

KNOWLEDGE:
Points: 3.6-4.0
Reason:

VALUE:
Points: 0.6-1.0
Reason:

WOW FACTOR:
Reason:

Criteria/Key Features:

[ ] Frontend
[ ]  Backend
[ ]  API
[ ]  Agile

HOOK:
Points: 3.6-4.0
Reason:
KNOWLEDGE:
Points: 3.6-4.0
Reason:
VALUE:
Points: 0.6-1.0
Reason:
WOW FACTOR:
Reason:

Criteria/Key Features:

[ ] Frontend
[ ]  Backend
[ ]  API
[ ]  Agile

HOOK:
Points: 3.6-4.0
Reason:
KNOWLEDGE:
Points: 3.6-4.0
Reason:
VALUE:
Points: 0.6-1.0
Reason:
WOW FACTOR:
Reason:

[x]  Frontend
[x]  Backend
[x]  API
[x]  Agile

HOOK: 3.95
Points: 3.6-4.0
Reason:
KNOWLEDGE: 3.9
Points: 3.6-4.0
Reason:
VALUE: 1.0
Points: 0.6-1.0
Reason:
WOW FACTOR:
Reason:
8.85/9

Criteria/Key Features:

[ ]  Frontend
[ ] Backend
[ ] API
[ ]  Agile

HOOK:
Points: 3.85
Reason: I liked the UI and the way they brought me in as someone who is a student.
KNOWLEDGE:
Points: 4.0
Reason: They went in depth with the backend, talking about the data that they store about the assignments and the security needed to make sure students and teachers don't access each other's stuff.
VALUE:
Points: 1
Reason: It is a very valuable project, useful for students in CS to submit their assignments, I think Mr. Mort would love to use this.
WOW FACTOR:
Reason: I love the project, they basically made Canvas for Computer Science students
8.85/9

Criteria/Key Features:

[x] Frontend
[x] Backend (DB?)
[x] API
[x] Agile

HOOK:
Points: 3.9
Reason: Great hook with an introduction describing your ideas and the value of your project
KNOWLEDGE:
Points: 3.5
Reason: Decent knowledge about key technicals and very amazing blogs documenting progress and issues
VALUE:
Points: 0.9
Reason: Good value with a good purpose and vision for integration in the classroom
WOW FACTOR: N/A
Reason:

[ ] Frontend

[ ] Backend

[ ] API

[ ] Agile
HOOK:
Points: 3.6-4.0
Reason: UI
KNOWLEDGE:
Points: 3.6-4.0
Reason: wide range of tech knowledge
VALUE:
Points: 0.6-1.0
Reason: good cause and goals
WOW FACTOR: N/A

8.9/9

Criteria/Key Features:

[X] Frontend
[ ]  Backend
[ ]  API
[ ]  Database
[X]  Agile

HOOK:
Points: 3.6-4.0
Reason:
Hub for student work.
KNOWLEDGE:
Points: 3.6-4.0
Reason:
Discussed different level of users.  Shared CRUD operations.  Shared blogging page.
VALUE:
Points: 0.6-1.0
Reason:
New canvas/teacher combination site.
WOW FACTOR:
Reason:
Stats to grades.
9.1/10,  all the right stuff is just a bit disconnected.

Criteria/Key Features:

[x] Frontend
[x] Backend
[x] API
[x] Database
[ ] Agile, several students interacting with answering questions.

HOOK:
Points: 3.6-4.0
Reason:
Granting more accessibility to the large amounts of coding options we have in our classroom
3.8
KNOWLEDGE:
Points: 3.6-4.0
Reason:
Talked about verifying users and deciding between person and teacher. Teachers are verified and can chat with other users. Wide variety of code and knowledge of backend aspects
3.8
VALUE:
Points: 0.6-1.0
Reason:
Provide a wide variety of options such as a github stats checker/grader , jwt token gen, and
1
WOW FACTOR:
Reason:
No agile but pretty engaging
8.6/9

(Extra Credit For Aditya D, Aditya R, Sai T, Tanav K, Timo A)
Criteria/Key Features:
Frontend - Done
Backend - Done
API - Done
Agile - Done
HOOK:
Points: 3.5
Reason:
Underwhelming but inclusive and intriguing.
KNOWLEDGE:
Points: 4.0
Reason:
Knew everything like the back of their hands, very knowledgeable.
VALUE:
Points: 0.75
Reason:
Nothing too surprising and somewhat of a basic website.
overall: 8.25/9

Criteria/Key Features:

[ ] Frontend

[ ] Backend

[ ] API

[ ] Database

[ ] Agile

HOOK:
Points: 3.5-4.0
Reason:
Allowed for interaction with the website, but limited.
KNOWLEDGE:
Points: 4.0-4.0
Reason:
Explained reasoning and code, pulled it up and answered questions in an understandable way.
VALUE:
Points: 0.7-1.0
Reason:
Seemed useful but could have been more interesting website.
WOW FACTOR:
Reason:
Stats of grades included and overall functionality worked.
9.2/10, website worked well, but could have been more engaging.

Criteria/Key Features:
Frontend
Backend
API
Database
Agile, several students interacting with answering questions.
HOOK:
Points: 3.6-4.0
Reason:
Rachit asked to input schedule, interactive. Applicable to students
3.6
KNOWLEDGE:
Points: 3.6-4.0
Reason:
Shared 2 APIs, talked about classes. API takes a long time to load.
3.5
VALUE:
Points: 0.6-1.0
Reason:
Applicable to students. Very nice!
.8
WOW FACTOR:
Reason:
Useful and applicable to students.
8.9/10


SIP YouTube video tutorial is set to private

Trying to view this link: https://www.youtube.com/watch?v=Wmhal4shmVo
Says:
Video unavailable
This video is private.

Hi, video is unavailable.

For sip, boot into recovery mode (from a usb) open terminal from there and type in: csrutil disable
and you are good to go!


Version updater didn't work

Observed behaviour
When the version updater was run, the resulting nametable had nameID 5 as 0.024
Expected behaviour
It should have been Version 1.025
Resources and exact process needed to replicate
Please double check this script and make tests that prove it works the way it supposed to work :)

Which font file did you use to get this bad behaviour ?

beware that the helper scripts are all on gftools now, so this should be a bug reported in the https://github.com/googlefonts/tools/ issue tracker.
I'd suggest uninstalling old fontbakery scripts so that you don't end up using old versions of them by mistake.

There used to be a pair attributes on fontbakery-update-families.py to bump up the minor version number.
-b, --versionbump  increment font files' minor version number

but that was deprecated (see https://github.com/googlefonts/fontbakery/issues/1216) based on this discussion: https://github.com/googlefonts/fontbakery/commit/eb428fefde30613132ec65c3400aa21c6c7d498d#commitcomment-20713481

@davelab6 what is the version updater script you're referring to ?

I need feedback here, @davelab6

We implemented a method for the return of a tuple of major version, minor version integers in the libfv library based upon feedback from Felipe and this will be the basis for our major/minor version increment support in the library.  If it is helpful for this issue, here is a link to an example of the data that you get from the font binaries with either a file path string or a fonttools TTFont object:
https://github.com/source-foundry/font-v#work-with-majorminor-version-number-integers
I happened to wander across this issue report when I filed my PR.  If this is something that you would be willing to implement from the libfv project dependency and are interested in collaborating on the source to make it happen I am definitely interested and plan to support this in the library.

Thanks, @chrissimpkins
@davelab6 Let me know more info about your problem whenever you can take a look at this again, please.

I assume the user who reported this was using an old version, so closing. Thanks for taking a look :)