Can't upload images from my javascript app to Storage setup via the CLI

I've added Storage via the CLI and given permission to Authenticated (read, write, delete) and Guest users (read only) and then pushed.
I've got an app that I have to log into (which is working) and then I've then got a form that tries to upload an image to the storage but its failing with 403 forbidden. I'm not sure where to go from here to get it to authenticate or to try to work out what the issue might be.
Any ideas?
To Reproduce
Steps to reproduce the behavior:
run amplify add Storage or amplify update storage if already added

Then using this little helper:
import { Storage } from "aws-amplify";

export async function s3Upload(sourceFile, targetFilename) {
  const filename = targetFilename ?? `${Date.now()}-${sourceFile.name}`;

  const stored = await Storage.put(filename, sourceFile, {
    contentType: sourceFile.type,
  });

  console.info("S3 Response", stored);

  return stored.key;
}

Used in my onChange handler for my file input:
const handleFileChange = async (event) => {
  console.info("File changed", event.target.files[0]);
  const file = event.target.files[0];
  const attachment = await s3Upload(file);
  console.info("File uploaded to " + attachment );
}

When using the form I get this error in the console:

Expected behavior
Adding Storage and allowing the permissions I have for Authenticated users I would expect that I could push images up once logged in (Authenticated right?).
Desktop (please complete the following information):

OS: Win 10
Browser chrome
Version 87.0.4280.88

Additional context
Not sure if this is related: https://github.com/aws-amplify/amplify-console/issues/1403
This issue was copied from https://github.com/aws-amplify/amplify-console/issues/1427 as I raised it in the wrong repo.

Hi @PeteDuncanson did you run amplify push after updating the storage configuration? And are you able to perform other authenticated actions (such as accessing your API) through the JS library?

Hi @PeteDuncanson did you run amplify push after updating the storage configuration? And are you able to perform other authenticated actions (such as accessing your API) through the JS library?

Hey @edwardfoyle :)
Did I push: Yes
Can I hit the API via my code: Yes

Came back to this one today and still getting 403 Forbidden. Any pointers on what I can check or what I might be doing wrong? Feels very much like I'm stuck on this one. I could go poking around manually in the permissions in the console but I don't understand why its not just working out of the box and don't want to use any manual setup steps ("infra as code for the win" right?)

Came back to this one today and still getting 403 Forbidden. Any pointers on what I can check or what I might be doing wrong? Feels very much like I'm stuck on this one. I could go poking around manually in the permissions in the console but I don't understand why its not just working out of the box and don't want to use any manual setup steps ("infra as code for the win" right?)

Hey @PeteDuncanson I'll try to repro this today. In the meantime, can you open up the 403 response in the network tab of the dev tools in your browser and see if there's any helpful information in the error response?

Hey @PeteDuncanson I'll try to repro this today. In the meantime, can you open up the 403 response in the network tab of the dev tools in your browser and see if there's any helpful information in the error response?

@PeteDuncanson so far I haven't been able to repro this. Make sure that the browser session you are testing in has valid credentials (retrieved using Auth.logIn(username, password)). If I logged out, then I got a 403 (as expected).

@PeteDuncanson so far I haven't been able to repro this. Make sure that the browser session you are testing in has valid credentials (retrieved using Auth.logIn(username, password)). If I logged out, then I got a 403 (as expected).

It seems like the CLI is provisioning the storage resource correctly so I'm going to transfer this to the JS repo where they can hopefully determine if it's a client-side issue

It seems like the CLI is provisioning the storage resource correctly so I'm going to transfer this to the JS repo where they can hopefully determine if it's a client-side issue


" import scipy"raises ModuleNotFoundError: No module named '_ctypes'

I use SCIRun software which include python3.8.2. When I   import scipy in the python console , it raises error that ModuleNotFoundError: No module named '_ctypes'. When I   import scipy in the cmd.exe , it raises normal.
Error message:

Scipy/Numpy/Python version information:

I don't understand the cause of the mistake（ModuleNotFoundError: No module named '_ctypes'）

Somehow your Python installation is not good. Either reinstall Python itself or make sure python is on the path. It is possible that the SciRun is not installing Python correctly. They also mention to install python separately here http://sciinstitute.github.io/scirun.pages/python.html
If you search for No module named '_ctypes' + windows you can have lots of similar issues not related to SciPy. Hence we can't do more about this. But feel free to continue the discussion.


SSL parameters are undefined

The https server setup doesn't explicitly define safe ciphers or protocols. This means LCB could be unknowingly deployed on systems still using SSLv3 or lower.

This would also be nice for xmpp and perhaps use the mozilla prefered cipher list:https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29


Experimenting with CBMC with and without patches

Hi 👋 . I chatted a bit with @danielsn and I'm interested in experimenting with some of the patch preprocessing used with this project and cbmc, similar to the ideas of the existing patches. I was able to get up and running with the ctest command in the README.
The tests seem flaky (I'm on Mac OS X). Either two or four tests sometimes fail, but I'll just ignore this unless this is a real problem. For reference:
The following tests FAILED:
         12 - IotHttpsClient_Disconnect-report (Failed)
         28 - IotHttpsClient_SendSync-report (Failed)

The following tests FAILED:
          8 - IotHttpsClient_Connect-report (Failed)
         12 - IotHttpsClient_Disconnect-report (Failed)
         20 - IotHttpsClient_ReadHeader-report (Failed)
         28 - IotHttpsClient_SendSync-report (Failed)

Couple of questions:
I'd basically like to, for example, add my own patch and see whether that changes the behavior of cbmc. To do that, it'd be helpful to understand how the current patches are applied to some analysis pipeline. I looked at some of the scripts, makefiles, and patches, but it's not clear to me how they fit together. It'd be great if there's a simple rundown of:

What command to enter that uses the patches for some analysis (does ctest do this, or is there another command?)

The scripts and steps of what the above command invokes (so that I can understand how they fit together, and modify parts of it). I'm interested in adding or removing patches, understanding how they affect the current analysis, and what the analysis target is (set of programs or subparts that are analyzed).

Thanks!

Hi @rvantonder. Great questions.
The patches are just applied using git apply [name].patch by patch.py. These git patches are simply applied to the original amazon-freertos codebase, so you should also be able to achieve the same effect by modifying the original codebase.

Thanks a lot for the response @yourslab. OK, I went back and figured out that patch.py needs to be run inside the directory where it lives and can see that the patches apply to the project. A last couple of questions:

After running ./patch.py, what is the typical command to run CBMC on amazon-freertos on the changed files? Is it only the ctest --build-and-test ... in the README ?

Is it expected that some of the tests (that I mentioned above) fail for the ctest --build-and-test ... command?

My understanding is that some of the patches were introduced to also overcome some (possibly performance related) issue in CBMC. I'm thinking specifically about 0002-Change-FreeRTOS_IP_Private.h-union-to-struct.patch. This one mentions:

This patch should be removed soon: It is for a CBMC issue being fixed now.

I'd be very interested if there's a reference handy to the fix in CBMC so I can understand that context, if you have that handy?

Hello @rvantonder,
If you do not want to set-up everything manually, you can run python3 prepare.py (only Python version 3 and above works in this case) in the proofs directory. The script will apply the patches for you and set-up the Makefiles based on the configuration in Makefile.json in each proof subdirectory. See steps here.
To add to what @yourslab said, the patches are used only to make the source accessible by cbmc infrastructure. It removes static, volatile etc. keywords in the source code. But except that, cbmc does not require patches. If you modify certain patches, my guess would be that certain proofs might fail since they will not be able to access the static functions under test. In some cases, the proofs might work correctly. It depends on what changes the modified patches make.
To answer your questions:

If you have run prepare.py without any failures, then you just need to go to the directory of each proof and run make cbmc. It would generate a cbmc.txt file for you which will have the results enlisted.

If you have not modified anything, then the tests should not fail. Every single one of them is supposed to pass. Do note however that some tests use quite a bit of CPU and quite a bit of memory wherein they might be stopped by the OS. In these cases, you'll see Process Killed message at the end of cbmc.txt.

Yes. Your understanding is correct. But now we are moving towards removing as many patches as we can. See the CBMC folder of FreeRTOS/FreeRTOS. It is identical to the one in amazon-FreeRTOS except the patches.

I hope this answers you questions. Feel free to ping us back with any more questions you might have. :)

Hi @AniruddhaKanhere. That's great, thank you! I think I have everything I need to experiment with some things.

But except that, cbmc does not require patches. If you modify certain patches, my guess would be that certain proofs might fail since they will not be able to access the static functions under test. In some cases, the proofs might work correctly. It depends on what changes the modified patches make.

Got it, that's super clear now.

But now we are moving towards removing as many patches as we can. See the CBMC folder of FreeRTOS/FreeRTOS. It is identical to the one in amazon-FreeRTOS except the patches.

Useful, thanks! Looks like the current set of patches then is to remove static, and there's one for volatile. I understand the context of those changes now.
I'll close this issue since I don't have more questions, and I don't think I'll have more. If I do, I can just reopen it :-) Cheers!


how to use caps as hyper?

installed skhd with brew, started the service, gave it access to accessibillity, restarted the service.
started to add keycommands to skhdrc.
if run the command
yabai -m window --space 2; yabai -m space --focus 2 i get an error saying there is no desktop. If a manually create the second desktop, running the command works using ctrl + opt + cmd + shift.
after tinkering, running "skhd -k "hyper - 2" triggers the keycommand.
tried:
0x39 - 2 : yabai -m window --space 2; yabai -m space --focus 2
does not work, nothing happens. how do i define the hyper button to be caps? 0x39 doesn't seem to work.
What am i missing?

Caps Lock is not a valid modifier key, you cannot do this with skhd.

you might have to use Karabiner Elements to do this (i.e. skhd will not be able to help here)

You can use CapsLock enhancer with Karabiner: https://ke-complex-modifications.pqrs.org/#caps_lock_enhancement
It will transform Caps Lock into Hyper key.
But it won't work out-of-the-box with skhd as you want, I think for 2 reasons:

this Hyper key is mapped to right version of modifiers (right shift, right control, right opt, right cmd), while the skhd hyper maps to left versions (I think)
the Capslock enhancer comes with default actions for almost all keyboard combinations with hyper - but you can enable just some parts of the mappings in Karabiner.


Implement Regex IfMatches and IfNotMatches

Closes #8

Couldn't have written it better myself.. Thanks for implementing this 🙏🏼🙌🏽

Codecov Report

Merging #33 (fe90ff8) into main (3612e59) will decrease coverage by 0.05%.
The diff coverage is 93.10%.

@@            Coverage Diff             @@
##             main      #33      +/-   ##
==========================================
- Coverage   93.92%   93.87%   -0.06%
==========================================
  Files          28       28
  Lines         823      881      +58
==========================================
+ Hits          773      827      +54
- Misses         50       54       +4

Impacted Files
Coverage Δ

src/Validators/Validator.Strings.cs
83.60% <84.61%> (+0.27%)
:arrow_up:

...tensions/ValidatableExtensions.StringProperties.cs
100.00% <100.00%> (ø)

...datableExtensions/ValidatableExtensions.Strings.cs
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


BI-1583 Error Message 1: Missing Data Worksheet

Description
BI-1583

For Germplasm and Experiment imports,

add error banner message if the import XSL files does not have a workbook sheet titled "Data".  (to allow for backward compatibility also all allow the sheet to be titled "Germplasm Import" or "Experiment Data")

For Ontology imports,

Improve the error message.
Show the error message if the import XSL files does not have a workbook sheet titled "Data".  (or, for backward compatibility  "Template")

Dependencies
bi-web branch feature/BI-1583
Testing
Germplasm Import

Create a valid Germplasm import XSL-file, with the date in a Worksheet titled "Data"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Germplasm import XSL-file, with the date in a Workbook sheet titled "Germplasm Import"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Germplasm import XSL-file, with the date in a Worksheet titled "Something Else"
Import the file
EXPECTED RESULT
Error Banner reading " Error(s) detected in file, [File Name]. Worksheet titled 'Data' is missing. Import cannot proceed. "

Ontology Import

Create a valid Ontology import XSL-file, with the date in a Worksheet titled "Data"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Ontology import XSL-file, with the date in a Workbook sheet titled "Template"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Ontology import XSL-file, with the date in a Worksheet titled "Something Else"
Import the file
EXPECTED RESULT
Error reading "Error(s) detected in file, [File Name]. Worksheet titled 'Data' is missing. Import cannot proceed. "

Experiments & Observations Import

Create a valid Experiments & Observations import XSL-file, with the date in a Worksheet titled "Data"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Experiments & Observations  import XSL-file, with the date in a Workbook sheet titled "Experiment Data"
Import the file
EXPECTED RESULT
The validation is successful.
Create a valid Experiments & Observations  import XSL-file, with the date in a Worksheet titled "Something Else"
Import the file
EXPECTED RESULT
Error Banner reading " Error(s) detected in file, [File Name]. Worksheet titled 'Data' is missing. Import cannot proceed. "

Checklist:

[X] I have performed a self-review of my own code
[X] I have tested my code and ensured it meets the acceptance criteria of the story
[ ] I have tested that my code works with both the brapi-java-server and BreedBase
[ ] I have create/modified unit tests to cover this change
[X] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to documentation
[X] I have run TAF: [](https://github.com/Breeding-Insight/taf/actions/runs/4566702657)

Testing looks good


ValueError: api query returns no item for pattern {'name': 'clara_pt_spleen_ct_segmentation_1'}

Hi there,
I have been using the original repo to play around with the sample apps, but I also wanted to try out BIFSeg to see how it works.
I am having trouble running the segmentation_spleen_scribbles app. I installed all dependencies from the requirements.txt but am not stumbling upon this error:
(monai_apps) zrrr@my_pc:~/repos/apps_monai/MONAILabel-Apps$ CUDA_VISIBLE_DEVICES=0 monailabel start_server --app /home/zmarinov/repos/apps_monai/MONAILabel-Apps/segmentation_spleen_scribbles/ --studies /home/zmarinov/repos/MONAI_Label/MONAILabel/datasets/Task09_Spleen/imagesTr/
Using PYTHONPATH=/home/zmarinov/repos/apps_monai/MONAILabel-Apps:/cvhci/software/deeplearn/caffe/build_gpu/install/python:
[2022-05-13 10:27:06,733] [5867] [MainThread] [INFO] (__main__:293) - USING:: app = /home/zmarinov/repos/apps_monai/MONAILabel-Apps/segmentation_spleen_scribbles
[2022-05-13 10:27:06,733] [5867] [MainThread] [INFO] (__main__:293) - USING:: studies = /home/zmarinov/repos/MONAI_Label/MONAILabel/datasets/Task09_Spleen/imagesTr
[2022-05-13 10:27:06,733] [5867] [MainThread] [INFO] (__main__:293) - USING:: verbose = INFO
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: conf = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: host = <IP_ADDRESS>
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: port = 8000
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: uvicorn_app = monailabel.app:app
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: ssl_keyfile = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: ssl_certfile = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: ssl_keyfile_password = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: ssl_ca_certs = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: workers = 1
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: limit_concurrency = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: access_log = False
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: log_config = None
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: dryrun = False
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:293) - USING:: action = start_server
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_API_STR =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_PROJECT_NAME = MONAILabel
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_APP_DIR =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_STUDIES =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_APP_CONF = '{}'
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_USERNAME =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_PASSWORD =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_CACHE_PATH =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_QIDO_PREFIX =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_WADO_PREFIX =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_STOW_PREFIX =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_FETCH_BY_FRAME = False
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DATASTORE_AUTO_RELOAD = True
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_DATASTORE_FILE_EXT = '["*.nii.gz", "*.nii", "*.nrrd"]'
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_SERVER_PORT = 8000
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_CORS_ORIGINS = '[]'
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_SESSION_PATH =
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_SESSION_EXPIRY = 3600
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_INFER_CONCURRENCY = -1
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:297) - ENV SETTINGS:: MONAI_LABEL_INFER_TIMEOUT = 600
[2022-05-13 10:27:06,734] [5867] [MainThread] [INFO] (__main__:298) -
[2022-05-13 10:27:07,785] [5867] [MainThread] [INFO] (uvicorn.error:82) - Started server process [5867]
[2022-05-13 10:27:07,786] [5867] [MainThread] [INFO] (uvicorn.error:45) - Waiting for application startup.
[2022-05-13 10:27:07,786] [5867] [MainThread] [INFO] (monailabel.interfaces.utils.app:38) - Initializing App from: /home/zmarinov/repos/apps_monai/MONAILabel-Apps/segmentation_spleen_scribbles; studies: /home/zmarinov/repos/MONAI_Label/MONAILabel/datasets/Task09_Spleen/imagesTr; conf: {}
[2022-05-13 10:27:07,808] [5867] [MainThread] [INFO] (monailabel.utils.others.class_utils:35) - Subclass for MONAILabelApp Found: <class 'main.MyApp'>
[2022-05-13 10:27:07,808] [5867] [MainThread] [INFO] (main:46) - TTA Enabled: 0; Samples: 5
[2022-05-13 10:27:07,808] [5867] [MainThread] [INFO] (monailabel.interfaces.app:121) - Init Datastore for: /home/zmarinov/repos/MONAI_Label/MONAILabel/datasets/Task09_Spleen/imagesTr
[2022-05-13 10:27:07,808] [5867] [MainThread] [INFO] (monailabel.datastore.local:125) - Auto Reload: True; Extensions: ['*.nii.gz', '*.nii', '*.nrrd']
[2022-05-13 10:27:07,835] [5867] [MainThread] [INFO] (monailabel.datastore.local:538) - Invalidate count: 0
[2022-05-13 10:27:07,835] [5867] [MainThread] [INFO] (monailabel.datastore.local:145) - Start observing external modifications on datastore (AUTO RELOAD)
[2022-05-13 10:27:09,353] [5867] [MainThread] [ERROR] (uvicorn.error:119) - Traceback (most recent call last):
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/starlette/routing.py", line 621, in lifespan
    async with self.lifespan_context(app):
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/starlette/routing.py", line 518, in __aenter__
    await self._router.startup()
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/starlette/routing.py", line 598, in startup
    await handler()
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/monailabel/app.py", line 99, in startup_event
    instance = app_instance()
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/monailabel/interfaces/utils/app.py", line 51, in app_instance
    app = c(app_dir=app_dir, studies=studies, conf=conf)
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/segmentation_spleen_scribbles/main.py", line 49, in __init__
    super().__init__(
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/monailabel/interfaces/app.py", line 87, in __init__
    self._infers = self.init_infers()
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/segmentation_spleen_scribbles/main.py", line 61, in init_infers
    self.final_model, load_from_mmar(self.mmar, self.model_dir)
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/monai/apps/mmars/mmars.py", line 226, in load_from_mmar
    model_dir = download_mmar(item=item, mmar_dir=mmar_dir, progress=progress, version=version, api=api)
  File "/home/zmarinov/repos/apps_monai/MONAILabel-Apps/monai_apps/lib/python3.8/site-packages/monai/apps/mmars/mmars.py", line 143, in download_mmar
    raise ValueError(f"api query returns no item for pattern {item}.  Please change or shorten it.")
ValueError: api query returns no item for pattern {'name': 'clara_pt_spleen_ct_segmentation_1'}.  Please change or shorten it.

[2022-05-13 10:27:09,354] [5867] [MainThread] [ERROR] (uvicorn.error:56) - Application startup failed. Exiting.

I am just using the datasets/Task09_Spleen/imagesTr directory from the original MONAILabel repo.
As far as I can understand the stack trace, the model cannot be downloaded from the Medical Model Archive (MMAR), right? I am not quite sure why the model cannot be downloaded. Can anyone give any hints?
P.S. The example from the docs for using load_from_mmar gives me the same error for the prostate_mri model

Strangely, removing the _1 suffix in both cases solves the compilation error, e.g., clara_pt_spleen_ct_segmentation instead of clara_pt_spleen_ct_segmentation_1. I am still not quite sure if that is the same model, though.
Leaving this in case someone runs into the same issue. It would be great if you could confirm that this is a valid solution, though. Should we also link it to the main MONAILabel repo if you think that it is relevant?

Thanks for highlighting this, @Zrrr1997.
It is the same model. Those weights are downloaded from the NVIDIA NGC: https://catalog.ngc.nvidia.com/models?filters=&orderBy=dateModifiedDESC&query=clara_pt_spleen_ct_segmentation
This repo is more to show applications to different image modalities. The main MONAI Label repo has all that you can find here.
Thanks again!

Fix proposed here https://github.com/diazandr3s/MONAILabel-Apps/pull/9

I suggest to use main branch or weekly packages or latest monailabel docker..

@Zrrr1997 please correct me if I am wrong - I believe @Zrrr1997 wants to look into scribbles method that use output from CNN in addition to scribbles for optimisation. Possibly that's why an interest in BIFSeg that does this. The MONAI main repo does not show this functionality.


359 improve pizza corner

Description
In this website I have improved home page added hover effect, improved navbar, added contents and relevant images. I have also added some animation effects and improved footer. I have also created contact, offers, services page. I have also added a back button.
Fixes #359
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] This change requires a documentation update

Explain the Testing instructions
Test Configuration:

Operating system:
Version:
Text-editors used:

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

SCREENSHOT
Before

After

I have added content modified button and added hover effect.
Before

After

I have added content and modified font.
Before

After

Added hover effect
Before

After

Added content, images, hover effect and modified font.
Before

After

Changed background image and  added back button.
I have added offer page which was not present originally.

I have added services page which was not present originally.

I have added contact page which was not present originally.

@VidhiBhatt01 I have added before and after images in description. Kindly view.

Good job!!

@VidhiBhatt01 I have resolve the merge conflict.

@arpit456jain I have deleted the mentioned files. Please view.


Create docker container to build chaincode and fabric client apps

Currently, developer has to configure local dev environment to build chaincode and/or fabric client apps for local testing.  The configuration involves multiple steps and dependencies, and it is platform-dependent.
One solution is to create a docker image with everything pre-configured, and so developer can simply download the docker image, and use it to build chaincode package or client executable from flogo json export, no matter which OS environment that the developer is using.
This docker image will do the following:

from chaincode flogo model, build chaincode cds package that can be installed on any fabric network;
from client app flogo model, build executables for specified hardware platform.

built docker image that supports fabric v1.4.4 and flogo 0.9.4. refer makefile of samples for how it works.


Exclude lock files and don't just write changes

It is recommended to run the -w flag with also the -i flag https://github.com/codespell-project/codespell/blob/cb4dbe1c34911772d81b748db4c011e96ec3b54b/README.rst?plain=1#L58. I don't know how this would play with pre-commit, I'm tempted to remove these flags fully.
Reason being is that in #83 that this got changed https://github.com/UCL-ARC/python-tooling/pull/200/files#r1371562344 to something that it shouldn't. I've checked, and it is definitely rouge https://github.com/rouge-ruby/rouge.
I've also added codespell into the cookied repo - to keep consistent with other pre-commit hooks.
I've also updated the Gemfile.lock file - and excluded that from codespell.
I've also changed the YAMLs to a new way I prefer

I think it should be dropped from pre-commit entirely.

I think there's a few orthogonal changes, each of which deseerve their own PR so we don't get lost and to make them easier to review:

Overkill but sure

Closing in favour of #210, #211, #212, #213. Have given up updating the Gemfile.lock as that is enough PRs as it is.


Submenu in dropdown component isn't accessible from keyboard

We cannot open the second level of items in the dropdown component using keyboard input, it's only accessible with mouse. For example, you can see this here. Therefore, please add support of keyboard import there.

Will be fixed in #1430


How to use the enhanced PoseTrack dataset (original and pseudo sample) to train HRNet?

We have tried to train HRNet using posetrack_train.json, while we only obtain the accuracy of  79.4 mAP.
Can you provide details of the HRNet training process? 😁

+1


⚠ HKprogram-trading_Slow endpoint has degraded performance

In e1f20b7, HKprogram-trading_Slow endpoint (https://markets.hankyung.com/investment/program-trading) experienced degraded performance:

HTTP code: 200
Response time: 786 ms

Resolved: 한경메인 performance has improved in 7024469.


Atom causes whole system to freeze when changing a lot of files with git

Description
When using git to change a bunch of files, Atom often causes the whole system to freeze, often up to the point where I have to hard-reset my computer.
Steps to Reproduce

Open some files in a git repository
Use git to change a bunch of these files at once (git checkout, git stash, anything that affects multiple files)

Expected behavior: The system shouldn't freeze.
Actual behavior: The system freezes
Reproduces how often: ~80-90%
Versions
1.30.0 x64 (non-snap)
Additional Information
I'm on Ubuntu 18.04

Thanks for the report - it looks like the Prerequisites section of the issue template was removed, did you try safe mode or any of the other debugging steps?
Also, do you see this behavior in any Git repository or just a particular one?

Use git to change a bunch of these files at once (git checkout, git stash, anything that affects multiple files)

About how many files?  Just more than 1?

1.30.0 x64 (non-snap)

Just to confirm here, you installed using the official .deb or the official package repository?

[...] did you try safe mode or any of the other debugging steps?
No, I didn't try safe mode yet. Since this issue is a bit "random", it's hard to know exactly when it will happen. But I'll try to reproduce it in safe mode.

Also, do you see this behavior in any Git repository or just a particular one?
I've had the issue with multiple repositories.

About how many files? Just more than 1?
I'm not sure what's the "minimum" amount is. It might happen with even just one file, but I never experienced that. In my experienced it happend with pretty much any amount of files, ranging from just 2 to about 10, though.

Just to confirm here, you installed using the official .deb or the official package repository?
I installed it via the official package repository.

Great thanks :+1:

I've had the issue with multiple repositories.

Are the repos particularly large?
Also, if you used Atom before 1.30, can you confirm if this behavior is new for you with 1.30 and things worked fine before?

Are the repos particularly large?

The one I'm working on right now, which caused me to report this issue, only has between 100 and 2000 files (depending on whether the documentation is built or not, it happens in both cases).

Also, if you used Atom before 1.30, can you confirm if this behavior is new for you with 1.30 and things worked fine before?

It also happened on my old computer, which was running an earlier version of Atom. I'm not sure which one right now but I'll see and get back to this issue again!

this also happens to me
Debian 9
8gb ram, i5, SSD
Atom 1.29

It also happened on my old computer, which was running an earlier version of Atom. I'm not sure which one right now but I'll see and get back to this issue again!

:+1:
Still not sure what the issue might be, just checking other potential issues - if you change Settings > File System Watcher to Experimental, does that make any difference?  Is there anything related to Atom in /var/log/syslogafter you see this behavior?


acr_values should be available for all providers

We use an OIDC provider that also accepts the acr_values parameter in the login URL but it is currently only enabled for the login.gov provider. It should be made available for all providers or at least for oidc (which we use) in addition to login.gov.
NOTE: It seems that acr_values is a general OIDC thing.
Expected Behavior
I expect to be able to set acr_values in the login URL when using an OIDC provider.
Current Behavior
Not possible.
Your Environment

Version used: 5

This should be added. I wonder if there is a good way in which we can make additional properties like this available generically so that we don't keep adding specific code for little optional things like this


Use direct call to templated flatten_bits instead of if

Templatizing flatten_bits like the rest of the code the right thing to do regardless whether the if is causing a perf problem, methinks.
NOTE: I haven't perf tested or Linux/ARM-tested this, yet. Relying on CI for the latter.

We may need to update the amalgamation script.
cc @ioioioio

Ah. I was expecting it to read stage1_find_marks.cpp to find out how to include the .h files; I bet it doesn't do that. I'll see if I can fix it up to do that tonight ...

@jkeiser The amalgamation script is not smart.

@jkeiser  I can fix the amalgamation script for you if you want. Let me know.

I'll take a look when I get home and have a Linux :)
On Tue, Aug 6, 2019, 2:50 PM Daniel Lemire<EMAIL_ADDRESS>wrote:

@jkeiser https://github.com/jkeiser I can fix the amalgamation script
for you if you want. Let me know.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lemire/simdjson/pull/262?email_source=notifications&email_token=AAE74IUI74FMYJT6CDVYFGLQDHWYZA5CNFSM4IJYN6X2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3WSDXQ#issuecomment-518857182,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAE74IQ2XFRUALUUC4HCF73QDHWYZANCNFSM4IJYN6XQ
.

OK, moving flatten_haswell.h to CFILES fixes the problem. Gives me the willies though :(

I've just noticed you only have to add really_inline to find_structural_bits_64 on that branch and it fixes the performance regression.

@jkeiser  Your PR appears to fail under Visual Studio...(see appveyor)

wow, really_inline fixes it?
Also, of course my fix that I only tested on Linux fails on my host OS :) Will fix shortly.

Can't believe I lost really_inline. argh.

Regardless of reason, it is criminal user experience that any compiler, especially one that has existed for decades, is willing to produce this error:
Severity	Code	Description	Project	File	Line	Suppression State
Error	C2664	 'uint64_t simdjson::cmp_mask_against_input<simdjson::Architecture::HASWELL>(simdjson::simd_input<simdjson::Architecture::HASWELL>,uint8_t)': cannot convert argument 1 from 'simdjson::simd_input<simdjson::Architecture::HASWELL>' to 'simdjson::simd_input<simdjson::Architecture::HASWELL>'	simdjson	C:\Users\john\Source\simdjson\include\simdjson\stage1_find_marks_common.h	27

OK, this latest push compiled (using CI to double check). I haven't checked perf myself, but I did add really_inline back to find_structural_bits_64.
I am not happy with the .h file being in ALLCFILES, but I think the right solution might be a reorganization of headers so that interfaces are in include/simdjson and implementations are in src. I say "I think" because I haven't got a good grasp on where we intend our inline boundaries to be: my intuition says that we're probably OK with the outer parse function being non-inline and all the inline stuff being implementation.
Fixing that can and should be done separately and after; the fix isn't so toxic that it's worth keeping the perf regression around.

I tested the performances. Everything seems fine.

I agree that we should separate out the header files. This was discussed several times. Never implemented. I will open annissue.

@lemire FYI tests are passing and it significantly improves performance over master on my machine as well.

I read it over and it is nice and simple. Merging.


New version: NetworkDynamics v0.9.1

Registering package: NetworkDynamics
Repository: https://github.com/JuliaDynamics/NetworkDynamics.jl
Created by: @hexaeder
Version: v0.9.1
Commit: cd3178180b8ee529b5ec2aab31bdfc8894caee03
Reviewed by: @hexaeder
Reference: https://github.com/JuliaDynamics/NetworkDynamics.jl/commit/cd3178180b8ee529b5ec2aab31bdfc8894caee03#commitcomment-149299080
Description: Julia package for simulating Dynamics on Networks

[merge approved]


[Zero Trust] Update index.md

This PR was opened before the developer doc site was moved to Cloudflare Pages. There are many conflicting branches. I'm going to close it now, but feel free to open a new issue or ask any questions.


Wrong translation to **Accounts: Limit local account use of blank passwords to console login only**

Wrong bold and wrong translation

将本地帐户使用空白密码限制为仅控制台登录 don't match the UI in settings

you should use **账户：使用空密码的本地账户只允许进行控制台登录** instead

文档详细信息
⚠ 请勿编辑此部分。 docs.microsoft.com ➟ GitHub 问题链接必须具有此部分。

ID: 3d312e0d-4055-0f64-b409-1a981b3a30bb
Version Independent ID: f539e763-734d-6363-7b78-2e55e4a4948f
Content: 帐户 限制本地帐户使用空白密码 (Windows 10)  - Windows security
Content Source: windows/security/threat-protection/security-policy-settings/accounts-limit-local-account-use-of-blank-passwords-to-console-logon-only.md
Product: m365-security
Technology: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@LaoshuBaby the  Chinese article has now been translated by a human.   Can you please check if the issue is fixed and close if it's ok?
https://docs.microsoft.com/zh-cn/windows/security/threat-protection/security-policy-settings/accounts-limit-local-account-use-of-blank-passwords-to-console-logon-only

Verified. Thanks.

Thanks! Sorry for missing emails and haven't reply!
It seems that the translation problem has been corrected and it reads smoothly, thank you for your attention！

شكرا للجميع


gpgstats: don't build on darwin

building path(s) ‘/nix/store/6jrdikrnq4pfp0kcz3c2z7887lyy6rj2-gpgstats-0.5’
unpacking sources
unpacking source archive /nix/store/x9ylndxpznbnw7wacpx8pvkzwd598lpn-gpgstats-0.5.tgz
source root is gpgstats-0.5
patching sources
configuring
no configure script, doing nothing
building
make flags: SHELL=/nix/store/jxbyzscwyrrhcd2nn7hw71inbrz1zvng-bash-4.3-p42/bin/bash
clang -Wall -O2 -DVERSION=\"0.5\" -g  `gpgme-config --cflags`   -c -o error.o error.c
clang++ -Wall -O2 -DVERSION=\"0.5\" -g  `gpgme-config --cflags`   -c -o utils.o utils.cpp
utils.cpp:15:14: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
                error_exit("failed to allocate %d bytes for %s\n", size, what);
                           ^
utils.cpp:24:14: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
                error_exit("failed to reallocate to %d bytes for %s\n", newsize, what);
                           ^
utils.cpp:33:14: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
                error_exit("failed to copy string '%s': out of memory?\n", in);
                           ^
3 warnings generated.
clang++ -Wall -O2 -DVERSION=\"0.5\" -g  `gpgme-config --cflags`   -c -o array.o array.cpp
array.cpp:108:75: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        strings  = (char **   )myrealloc(strings,  sizeof(char *)   * (nin + 1), "string array");
                                                                                ^
array.cpp:109:75: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        hashes   = (int *     )myrealloc(hashes,   sizeof(int)      * (nin + 1), "hashes array");
                                                                                ^
array.cpp:110:87: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        counters = (long int *)myrealloc(counters, sizeof(long int) * ncounters * (nin + 1), "counter array");
                                                                                ^
3 warnings generated.
clang++ -Wall -O2 -DVERSION=\"0.5\" -g  `gpgme-config --cflags`   -c -o iarray.o iarray.cpp
iarray.cpp:49:65: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        values  = (int *)myrealloc(values,  sizeof(int)   * (nin + 1), "values array");
                                                                       ^
iarray.cpp:50:65: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        counters = (int *)myrealloc(counters, sizeof(int) * (nin + 1), "counter array");
                                                                       ^
2 warnings generated.
clang++ -Wall -O2 -DVERSION=\"0.5\" -g  `gpgme-config --cflags`   -c -o s.o s.cpp
s.cpp:35:42: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char *out = (char *)mymalloc(len*6 + 1, "unescape buffer");
                                                ^
s.cpp:71:34: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                          ^
s.cpp:71:38: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                              ^
s.cpp:71:48: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                        ^
s.cpp:71:58: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                                  ^
s.cpp:71:69: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                                             ^
s.cpp:71:82: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                                                ^
s.cpp:71:94: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                                                ^
s.cpp:71:104: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *weekday[7+1] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                                                                                ^
s.cpp:72:34: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                          ^
s.cpp:72:38: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                              ^
s.cpp:72:45: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                     ^
s.cpp:72:52: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                            ^
s.cpp:72:59: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                   ^
s.cpp:72:66: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                          ^
s.cpp:72:73: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:80: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:87: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:94: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:101: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:108: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:72:115: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *month[12+1]  = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
                                                                                ^
s.cpp:73:25: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                         ^
s.cpp:73:36: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                                    ^
s.cpp:73:49: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                                                 ^
s.cpp:73:58: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                                                          ^
s.cpp:73:70: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                                                                ^
s.cpp:73:78: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                                                                                ^
s.cpp:428:93: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
                        char *top_sigs_name = (char *)mymalloc(strlen(uids -> name) + strlen(uids -> email) + 4, "max n sigs");
                                                                                ^
s.cpp:438:106: warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]
                char *top_uids_name = (char *)mymalloc(strlen(current_person_name) + strlen(current_person_email) + 4, "max n uids");
                                                                                ^
s.cpp:484:113: warning: format specifies type 'int' but the argument has type 'unsigned long long' [-Wformat]
        if (dummy) printf("
Average subkey expiration for not already expired subkeys:	%d
\n", avg_subkey_expiration_after_now / dummy);
                                                                                ~~               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                %llu
s.cpp:505:113: warning: format specifies type 'int' but the argument has type 'unsigned long long' [-Wformat]
        if (dummy) printf("
Average signature expiration for not already expired sigs:	%d
\n", avg_sigs_expiration_after_now / dummy);
                                                                                ~~               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                %llu
s.cpp:73:9: warning: unused variable 'validity' [-Wunused-variable]
        char            *validity[6] = { "Unknown", "Undefined", "Never", "Marginal", "Full", "Ultimate" };
                         ^
33 warnings generated.
clang -Wall -W error.o utils.o array.o iarray.o s.o -lstdc++ `gpgme-config --libs` -g  -o gpgstats
ld: library not found for -lstdc++
clang-3.6: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:13: recipe for target 'gpgstats' failed
make: *** [gpgstats] Error 1
builder for ‘/nix/store/2hfh7gjmkfvfjqgfma2gzxas47lrdby6-gpgstats-0.5.drv’ failed with exit code 2
error: build of ‘/nix/store/2hfh7gjmkfvfjqgfma2gzxas47lrdby6-gpgstats-0.5.drv’ failed

Looks like it just needs to be told to use libc++ instead of libstd++ on Darwin.

It also doesn't build on linux atm.

@domenkozar i can install it on NixOS 15.09 from cache.nixos.org
https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.gpgstats.x86_64-linux
where have you tied it?
@copumpkin how can i do that?

@domenkozar: it builds for me on x86_64-linux on staging (tried two different machines).

I guess it's fixed now (or it was 32bit failure, don't remember)


[refl-cpp] Update to 0.12.0

Updating a header only library to the newest version.

Thanks for your contribution!


feat: added StakedSui improvements SIP

SIP-Number
<Leave this blank; it will be assigned by a SIP Editor>

Title
StakedSui improvements

Description
Improvements to the StakedSui object, including giving it the store ability and secondary functions into the staking flow that return the StakedSui object

Author
Kevin<EMAIL_ADDRESS>@admin-aftermath>, Aftermath Finance <aftermath.finance>

Editor
<Leave this blank; it will be assigned by a SIP Editor>

Type
Standard

Category
Framework

Created
2023-06-07

Comments-URI
<Leave this blank; it will be assigned by a SIP Editor>

Status
<Leave this blank; it will be assigned by a SIP Editor>

Requires
N/A

Abstract
This SIP specifies improvements to the StakedSui struct and associated functions. The existing implementation is limited in its overall composability and inevitably leads to less transparent, custodial extensions of Sui staking.
This SIP tries not to stick to one domain when considering these changes, but rather provides improvements that will enable a new possibility of extensions to be made to Sui's staking mechanism.

As Sui will continue to evolve over time, a snapshot of the Sui repo will be used when referencing Sui Framework code. This SIP uses the latest stable version of mainnet: mainnet-v<IP_ADDRESS>

Background
Proof-of-Stake. The Sui network utilizes a Delegated Proof-of-Stake (POS) consensus mechanism to determine the active validator set.2,3 Users can delegate SUI to the validator of their choice to increase the validator's voting power. Every epoch, transaction gas fees and stake subsidies are redistributed back to the validators and their delegators.
Staked Sui. By delegating to a validator, a user receives a StakedSui object that acts as a receipt to their position. This StakedSui object accrues rewards when the epoch advances and can be redeemed at will by its owner. Currently, the StakedSui struct is implemented as follows4:
/// A self-custodial object holding the staked SUI tokens.
struct StakedSui has key {
    id: UID,
    /// ID of the staking pool we are staking with.
    pool_id: ID,
    /// The epoch at which the stake becomes active.
    stake_activation_epoch: u64,
    /// The staked SUI tokens.
    principal: Balance<SUI>,
}

The corresponding functions that deal with staking Coin<SUI> are entry functions and thus directly transfer the resulting StakedSui back to the sender.
Motivation
Transparency. Without the store ability on StakedSui, projects building on top of the native Sui staking mechanics require a centralized address to store the StakedSui objects. This will limit the overall reach of these projects due to the high level of trust required for a user to feel comfortable in interacting with their product. In some cases this can also lead to a loss of funds, if the keys for the centralized account are lost or stolen.
     In order to enable truly trustless, transparent, and composable extensions of Sui staking, the StakedSui struct requires the store ability. This change moves the underlying, extrinsic trust in the project to the inherent safety in the relevant Sui Move modules. Trust can only be reassured, while smart contracts can go through many rounds of audits and tests to prove correctness.
Composability. In order to allow the use of StakedSui flows in programmable transactions, public, non-entry variations of request_add_stake and request_add_stake_mul_coins are required that directly return the StakedSui objects. Without these functions, the inclusivity of Sui staking flows are limited within programmable txs.
Expressiveness. By design, StakedSui is yield-bearing: every epoch an amount of Coin<SUI> rewards is distributed to each Validator's StakingPool to be later redeemed by unstaking a StakedSui position. A natural requirement for any protocol utilizing StakedSui is to determine the total value (i.e. principal + reward) accrued in the position. Currently, there exists a function to query the underlying principal value of a StakedSui object but not to query accrued rewards or the state of the associated StakingPool.
     To enable better on-chain interaction with StakedSui objects, additional sui_system getter functions are required.
Prerequisites
In order to upgrade a package, your changes must satisfy a list of requirements.5 Adding new abilities to existing structs is strictly prohibited and thus, as it stands, adding store to StakedSui will not pass the upgrade verification check. To get around this, upgrades for only the sui_system package should have a relaxed set of requirements.
Specification
The upgrade requirements for the sui_system package (0x3) will be relaxed and the store ability will be added to the implementation of the StakedSui struct.
Secondary functions will be added for request_add_stake and request_add_stake_mul_coins that return their resulting StakedSui instead of automatically being transferred back to the sender.
A #[test_only] function, calculate_rewards, will be modified to be accessible onchain. Accordingly, a sui_system.move -> staking_pool.move flow will be added to support the calling of calculate_rewards. Also, PoolTokenExchangeRate getters will be added to allow historic and future exchange rate calculations.
Rationale
With the store ability, dApps extending upon Sui staking can now store all StakedSui objects with a shared object and maintain all of their logic onchain without the need for a centralized, custodial address. The store ability inherently presents its own concerns (which are further elaborated in Security Considerations).
Without the ability to accurately value StakeSui objects onchain, the overall composability of the sui_system package is limited. The sui_system was abstracted in a way to enable upgrading the underlying structs (e.g. ValidatorSet, StakingPool, ...) without having to leave legacy code within the upgraded modules. By exposing functions for the PoolTokenExchangeRate struct directly, future StakingPool upgrades can still occur without the need to provide support for legacy StakingPool-related getters and a new level of functionality with the validator set is unlocked.
Backwards Compatibility
This SIP presents no issues with backwards compatibility.
Reference Implementation
We have created a fork of the Sui repo6 to implement these specifications; the relevant changes are detailed below:
i. Changes to StakedSui
The StakedSui object needs the store ability.
/// A self-custodial object holding the staked SUI tokens.
struct StakedSui has store, key {
    id: UID,
    /// ID of the staking pool we are staking with.
    pool_id: ID,
    /// The epoch at which the stake becomes active.
    stake_activation_epoch: u64,
    /// The staked SUI tokens.
    principal: Balance<SUI>,
}

ii. Changes to SUI staking/unstaking flow
To enable seemless composability with prog. txs, request_add_stake and request_add_stake_mul_coin should have an adjacent flow that directly return their respective StakedSui objects, rather than transferring back to the sender. The changes to these two are nearly identical, therefore only the updates to the request_add_stake flow are shown here:
sui_system. A public, non-entry variant of the request_add_stake function needs to be added that will return the created StakedSui object.
/// Add stake to a validator's staking pool.
public fun request_add_stake_non_entry(
    wrapper: &mut SuiSystemState,
    stake: Coin<SUI>,
    validator_address: address,
    ctx: &mut TxContext,
): StakedSui {
    let self = load_system_state_mut(wrapper);

    sui_system_state_inner::request_add_stake(self, stake, validator_address, ctx)
}

/// Add stake to a validator's staking pool.
public entry fun request_add_stake(
    wrapper: &mut SuiSystemState,
    stake: Coin<SUI>,
    validator_address: address,
    ctx: &mut TxContext,
) {
    let staked_sui = request_add_stake_non_entry(wrapper, stake, validator_address, ctx);

    transfer::public_transfer(staked_sui, tx_context::sender(ctx));
}

sui_system_state_inner. sui_system_state_inner::request_add_stake needs to return the StakedSui object.
/// Add stake to a validator's staking pool.
public(friend) fun request_add_stake(
    self: &mut SuiSystemStateInnerV2,
    stake: Coin<SUI>,
    validator_address: address,
    ctx: &mut TxContext,
): StakedSui {
    validator_set::request_add_stake(
        &mut self.validators,
        validator_address,
        coin::into_balance(stake),
        ctx,
    )
}

validator_set. validator_set::request_add_stake needs to return the StakedSui object.
/// Called by `sui_system`, to add a new stake to the validator.
/// This request is added to the validator's staking pool's pending stake entries, processed at the end
/// of the epoch.
/// Aborts in case the staking amount is smaller than MIN_STAKING_THRESHOLD
public(friend) fun request_add_stake(
    self: &mut ValidatorSet,
    validator_address: address,
    stake: Balance<SUI>,
    ctx: &mut TxContext,
): StakedSui {
    let sui_amount = balance::value(&stake);
    assert!(sui_amount >= MIN_STAKING_THRESHOLD, EStakingBelowThreshold);

    let validator = get_candidate_or_active_validator_mut(self, validator_address);
    validator::request_add_stake(validator, stake, tx_context::sender(ctx), ctx)
}

validator. validator::request_add_stake needs to return the StakedSui object.
/// Request to add stake to the validator's staking pool, processed at the end of the epoch.
public(friend) fun request_add_stake(
    self: &mut Validator,
    stake: Balance<SUI>,
    staker_address: address,
    ctx: &mut TxContext,
): StakedSui {
    ...
    let staked_sui = staking_pool::request_add_stake(
        &mut self.staking_pool, stake, stake_epoch, ctx
    );

    ...

    event::emit(
        StakingRequestEvent {
            pool_id: staking_pool_id(self),
            validator_address: self.metadata.sui_address,
            staker_address,
            epoch: tx_context::epoch(ctx),
            amount: stake_amount,
        }
    );

    staked_sui
}

staking_pool. request_add_stake::request_add_stake needs to return the created StakedSui object.
/// Request to stake to a staking pool. The stake starts counting at the beginning of the next epoch,
public(friend) fun request_add_stake(
    pool: &mut StakingPool,
    stake: Balance<SUI>,
    stake_activation_epoch: u64,
    ctx: &mut TxContext
): StakedSui {
    let sui_amount = balance::value(&stake);
    assert!(!is_inactive(pool), EDelegationToInactivePool);
    assert!(sui_amount > 0, EDelegationOfZeroSui);

    pool.pending_stake = pool.pending_stake + sui_amount;

    StakedSui {
        id: object::new(ctx),
        pool_id: object::id(pool),
        stake_activation_epoch,
        principal: stake,
    }
}

The above example follows the notation set by an implementation of the request_withdraw_stake flow that returns Balance<SUI> which, at the time of writing, has just been included into Sui version testnet-v<IP_ADDRESS>
iii. sui_system getters
iiia. calculate_rewards function
sui_system. A top level public function, calculate_rewards, will be added as a wrapper around the flow that will call staking_pool::calculate_rewards. This function will allow other contracts to calculate the rewards that a StakedSui object is entitled to.
/// Given the `staked_sui` receipt calculate the current rewards (in terms of SUI) for it.
public fun calculate_rewards(wrapper: &mut SuiSystemState, staked_sui: &StakedSui): u64 {
    let self = load_system_state(wrapper);

    sui_system_state_inner::calculate_rewards(self, staked_sui)
}

sui_system_state_inner. Following the design of other sui_system functions, a corresponding calculate_rewards function will be added to sui_system_state_inner.move.
/// Given the `staked_sui` receipt calculate the current rewards (in terms of SUI) for it.
public(friend) fun calculate_rewards(self: &SuiSystemStateInnerV2, staked_sui: &StakedSui): u64 {
    let validators = &self.validators;
    let epoch = epoch(self);

    validator_set::calculate_rewards(validators, staked_sui, epoch)
}

validator_set. Similarly, a corresponding calculate_rewards function will be added to validator_set.move.
/// Given the `staked_sui` receipt calculate the current rewards (in terms of SUI) for it.
public(friend) fun calculate_rewards(self: &ValidatorSet, staked_sui: &StakedSui, epoch: u64): u64 {
    let staking_pool_id = pool_id(staked_sui);
    let mapping = &self.staking_pool_mappings;

    // If there is no such staking pool id in the staking pool id -> validator mapping
    // return zero.
    if (!table::contains(mapping, staking_pool_id)) {
        return 0
    };

    let validator_address = *table::borrow(mapping, staking_pool_id);
    // There are no rewards if validator is not active.
    if (!is_active_validator_by_sui_address(self, validator_address)) {
        return 0
    };

    let validator = get_active_validator_ref(self, validator_address);
    let staking_pool = validator::get_staking_pool_ref(validator);

    staking_pool::calculate_rewards(staking_pool, staked_sui, epoch)
}

validator. The #[test_only] function get_staking_pool_ref will become public(friend) and #[test_only] will be removed so it can now be called before calling staking_pool::calculate_rewards.
public(friend) fun get_staking_pool_ref(self: &Validator) : &StakingPool {
    &self.staking_pool
}

staking_pool. The #[test_only] function calculate_rewards will become public(friend) and #[test_only] will be removed, allowing the function to be called onchain by friend modules. Also, note that the function now returns the calculated rewards (i.e. reward_withdraw_amount) and doesn't include the StakedSui's principal amount.
/// Given the `staked_sui` receipt calculate the current rewards (in terms of SUI) for it.
public(friend) fun calculate_rewards(
    pool: &StakingPool,
    staked_sui: &StakedSui,
    current_epoch: u64,
): u64 {
    let staked_amount = staked_sui_amount(staked_sui);
    let pool_token_withdraw_amount = {
        let exchange_rate_at_staking_epoch = pool_token_exchange_rate_at_epoch(pool, staked_sui.stake_activation_epoch);
        get_token_amount(&exchange_rate_at_staking_epoch, staked_amount)
    };

    let new_epoch_exchange_rate = pool_token_exchange_rate_at_epoch(pool, current_epoch);
    let total_sui_withdraw_amount = get_sui_amount(&new_epoch_exchange_rate, pool_token_withdraw_amount);

    let reward_withdraw_amount =
        if (total_sui_withdraw_amount >= staked_amount)
            total_sui_withdraw_amount - staked_amount
        else 0;
    reward_withdraw_amount = math::min(reward_withdraw_amount, balance::value(&pool.rewards_pool));

    reward_withdraw_amount
}

iiib. PoolTokenExchangeRate getters
staking_pool. The following functions will be added to enable third-party interaction with staking_pool::pool_token_exchange_rate_at_epoch and the PoolTokenExchangeRate struct.
public fun exchange_rates(pool: &StakingPool): &Table<u64, PoolTokenExchangeRate> {
    &pool.exchange_rates
}

public fun sui_amount(exchange_rate: &PoolTokenExchangeRate): u64 {
    exchange_rate.sui_amount
}

public fun pool_token_amount(exchange_rate: &PoolTokenExchangeRate): u64 {
    exchange_rate.pool_token_amount
}

Security Considerations
When adding the store ability to any Sui Move object, users and developers must consider the negative possibilities of modules now being able to store the object. In the case of StakedSui, the owner of the StakedSui object is the only one able to withdraw its principal and rewards; for this reason, giving StakedSui the store ability now forces a heightened level of trust between a user and a module that will be persistently storing StakedSui.
dApps that will compose off of native Sui staking and utilize the store ability should be thoroughly audited and tested before being published on mainnet. Users that aim to use these protocols should understand both the risks of transferring their StakedSui to a module and the implications of mutable packages on the safety of their StakedSui.8 Before interacting with any protocol that extends upon Sui staking, a user should perform their own checks on the presence and number of audits, the level of testing thoroughness and the mutability of the relevant packages. As such, protocols should make this info readily available to the average user.
Third party apps that want to simply provide an interface to native Sui staking (e.g. wallets, explorers) should continue to use the request_stake_sui, reques_stake_sui_mul_coins, and request_withdraw_sui entry functions. For a user strictly interacting with these applications, there are no extra security considerations.
References

[Sui Repo] mainnet-v1.2.1
[Sui Docs] Sui's Delegated Proof-of-Stake System
[Sui Blog] Testnet Wave 2 Stake Delegation
[Sui Repo] StakedSui
[Sui Docs] Package Upgrades > Requirements
[Aftermath Repo] sui-with-store
[Sui Repo] request_withdraw_stake_non_entry
[Move] Third-Party Package upgrades

Copyright
CC0 1.0.

Great project

Very good

Good project

We've identified two minor "getter" changes that will improve the accessibility of the sui_system package:

a PoolTokenExchangeRate sui_system -> validator_set flow,
a wrapper around the validator_set::active_validators function that will allow it to be called outside of sui_system.

Both changes have been added in my last commit

active_validator_addresses getter is a good idea! But maybe we should keep the scope of this SIP to be improvements around staking.


F1

:star: PR built and available in a preview environment dlish-spring-boot-http-gradle-pr-2 here


Extend automation of Volley trait to NPCs

Closes #7211
Refactored to move common handling of certain traits to a base static class and made the PC version subclass it

Might need to check for attack roll check type specifically, since you can do athletics checks with weapons (at least not implemented in core, though I think some modules and macros make that possible).

On second glance, I think the only exception is sweep. The rest seem to be restricted to attacks in general, not just attack rolls, but sweep and finesse specifies attack roll.

I'm not sure what you mean. These are only used for generating strikes.

getCheckRollContext() was expanded for all checks was it not?

Ok no I got, it was expanded to support spell attack rolls, but not all checks (despite its name).

That's a different PR: https://github.com/foundryvtt/pf2e/pull/7198


System.InvalidOperationException has been thrown

Hi,
I successfully upgraded from PubSub 3.1.0 to 4.0.0, but this week I un-installed the app and re-installed from scratch.  During startup I received
System.InvalidOperationException has been thrown
Collection was modified; enumeration operation may not execute

Oddly it seemed to crash every time thereafter.
I tried putting in lock mutex's around all of my hub.Subscribe and hub.Publish invocations to ensure no threading issues from my end, but the problem continued.
In the end I had to revert back to PubSub 3.1.0 and then the problem went away.
Unfortunately I don't have the call stack any more, but it was deep inside PubSub with a LINQ .Where clause.

What is the status here? I have the same problem ... is there a workaround?

@upta Can you merge pull request https://github.com/upta/pubsub/pull/31 to fix this issue?

@gb0o @christophedelanghe @devology-rob
My apologies!  I completely forgot this fix was pending, then was going to do it when @christophedelanghe brought it up and got busy and forgot again :(
I'll merge the fix and update the nuget package tomorrow.  Sorry about the inconvenience!

Thx! I reverted back to version 3.1.0. Wil test it again after your merge.

Merged in #31 and published to Nuget as 4.0.1
Thanks guys!


Table header is not fixing

Above 16 records table header is not visible in 1366*768 resolution laptop.
In iPad and some other device resolutions it works good.
please take a look and solve this.

Food Types

<md-table-container >

                    ID
                    @Html.DisplayNameFor(model => model.foodName) Food Type
                    Fat (g)

                    {{item.id}}
                    {{item.foodName}}
                    {{item.foodName}}

</md-table-container>

You need your md-table-container element wrapped in an element with max-height and overflow: auto; properties.

OK, but here I'm using div with flex property, so I can't give fixed height. Please tell me how to manage this

I had a situation where I couldn't give a fixed height either.  I reworked fixed-table-header to use Angular Material's $mdSticky service, taking cues from md-subheader.  It seems to work great now when it's inside an md-content tag or a flex container.  See pull request #15.

@jraadt it doesn't work either tho


algorithm doesn't work with a high angular resolution of scans

Hi, when I have an angular increment higher than 0.01 rad, the algorithm publishes the line markers in a circle at the max range of the scan message (I have a resolution of 0.0022 rad from my scanner, with a 270 degrees field of view). This problem can be easily reproduced both in simulation and on actual laser data. I tried all parameters, but apart from getting one small segment converging into line, nothing works. Any idea what I can try?

Do you have a small bag file containing LaserScan data from that scanner to help figure this out?

I've created one. The scan topic is scan_merged on base_link. In the image you see my results. If I reduce the angular resolution, then the line extraction works.

2020-09-25-10-09-18.zip

Thanks for the data. The issue was your data has a ton of points beyond the range_max and the algorithm was not properly ignoring data beyond range_max. I just pushed changes that added a max_range param. So in your launch file, add a max_range param and set it appropriately (50.0 for the data you provided). See example.launch for an example. A to-do here would be to set max_range automatically to be the range_max in the LaserScan message. I'll make an issue for this.
Anyway, here is a screenshot of your data with these changes, using the default settings except for a max_range of 50.0.

The problem was not connected with the angular resolution at the end, very interesting. Thanks Marc @kam3k a lot for solving it! I pulled your changes a6f0d0bb4688743ea1f1ed6aef00701ddbc83019 and set the max_range to 50m. It works perfectly! I'l close the issue.


get a hands on ...

First commits. Did some refactoring. I'll be happy to get some feedback if the process is correct. So don't be too mean if smth went wrong.

Sorry, this PR cannot be applied. The Servlet API classes cannot have any direct dependencies other than the Java 8 API (which is  why the Tomcat specific hack is implemented the way it is).
It would help to understand the motivation for the refactoring.
There does seem to be an excessive, and unnecessarily verbose, use of one line methods. e.g. optionsAllowed()
I'd be interested to see some performance numbers comparing the old and new code. My instinct is the new code will be slower. It probably doesn't matter for doOptions() but I'd still be interested.
Looking at the original code, there is certainly scope for improvement although, again, performance isn't critical here. A simpler refactoring that dropped the booleans, used a StringBuilder, started with an allow header value of "OPTIONS" and added to the allow header while looping though the methods is probably as far as I would have gone.

I do understand that there are some prequistes that I did not consider according to the Java 8 deps. It would be helpful to get a hint what kind of line of code does violate it.
I also agree that performace might decrease a little bit. But you have to admit: Reflection in general is not fast at all. And as you said: Here performance does not really matter.
But what I do not understand is: what do you mean with excessive? According to my motivation: I like CleanCode an I wanted to help to improve the code base. Never thought to justify for that anywhere...
Nevertheless. Thank you for the the fast feedback. Could we at least have one more iteration where you see the problem with java deps.

I did the performance measurement. My setup:
i5 4440 CPU 3,1 GHz
10.000.000 calls on doOptions
Current implementation: 1,381 seconds
My implementation: 3,852 seconds
trace allowed evaluation mocked (omit reflection)
As expected: My implementation is 3 times slower under these conditions.
Further execution analysis shows that the reflection stuff the "trace allowed" evaluation does (even without executing "getAllowTrace") will take 11,814 seconds alone!!!
Let's do the math:
My implementation: 1,381 + 11,814 = 13,195
My implementation: 3,852 + 11,814 = 15,666
So the performance decreased by only 18% considering the reflection stuff at least partially.
The main point here is: we have 10 million calls...
So to say that this is a problem is the same as to say: "We have a problem JAVA. Let's write all our programs in Assembler so everything is faster!"

If Im not mistaken and if it helps, you can cache the method after the first call then cost will be negligible.
Very worse case you make a catalina class implementing Function<HttpServletRequest, xxx> or equivalent in catalina and instantiate it at first call in the servlet (these classes are available) by reflection then it is native code.
So we are not yet at java limitations IMHO.

As a general rule of thumb ... Ideally for a first contribution, you should try to look at fixing specific issues. Refactorings are nice, but you start to have to argue about them, then it's not the best thing.

If Im not mistaken and if it helps, you can cache the method after the first call then cost will be negligible.
I could but it would change the assertion of the "allow trace" evaluation. I tried to keep the assertions as they were during my refactoring. Who knows which methods rely on a non-cached "allow trace evaluation"?

Very worse case you make a catalina class implementing Function<HttpServletRequest, xxx> or equivalent in catalina and instantiate it at first call in the servlet (these classes are available) by reflection then it is native code.
Please rephrase it. I do not understand what you mean.

So we are not yet at java limitations IMHO.
I never said that. I only see no problem with the performance 18% performance decrease. This is because...
... reflection calls are the crucial parts which were already part of the previous implementations
... the doOption() method will surely never be called 10 million times in 4 seconds

Refactorings are nice, but you start to have to argue about them, then it's not the best thing.
Serious?

As a general rule of thumb ... Ideally for a first contribution, you should try to look at fixing specific issues.

The point is: I like refactorings. This would have been my offer to support this project: Refactoring.

The issue with refactoring for clean code is that the benefits are subjective and people are going to have different views.
Performance numbers are objective and while a refactoring that makes a small piece of code ~3x slower is going to have a negligible impact on performance, the idea of repeating that sort of refactoring - with that sort of impact - across the code base is not something that is likely to be considered acceptable.
The caching idea is one that occurred to me - although the TRACE component can't be cached because it is dynamic. There looks to be merit in that idea. This combined with the simpler refactoring I outlined earlier is more likely to get accepted.
The issue isn't that you have depended on Java 9+ functionality (as far as I could see from a quick look), but that you have added a compile time dependency on org.apache.catalina.*. That is not permitted for the Servlet API classes which cannot have any compile time dependencies other than the JRE.
It is also worth noting that, for ease of maintenance and back-ports, we try and keep the code aligned across all the currently supported Tomcat versions. That means a minimum Java version of Java 6. This isn't always practical and there are plenty of places where we don't do this but impact on maintenance is another factor to consider when introducing Java 8 specific code.
If refactoring is your area of interest then I'd recommend taking a look at the unit tests. There is a lot of scope there for reducing code duplication and improving code coverage by making much more use of parameterized tests. Current code coverage stats are available from one of the CI systems we use.

Performance numbers are objective and while a refactoring that makes a small piece of code ~3x slower is going to have a negligible impact on performance, the idea of repeating that sort of refactoring - with that sort of impact - across the code base is not something that is likely to be considered acceptable.

I see that you are not able to get my point. Maybe my english isn't that precise. Sorry about that.

The issue isn't that you have depended on Java 9+ functionality (as far as I could see from a quick look), but that you have added a compile time dependency on org.apache.catalina.*. That is not permitted for the Servlet API classes which cannot have any compile time dependencies other than the JRE.

Here you got a point according to the "hack".

The issue with refactoring for clean code is that the benefits are subjective and people are going to have different views.

Clean Code isn't a matter of "views". It's a matter of understanding.
Nevertheless: I heard enough. Thank you for your time.

The issue with refactoring for clean code is that the benefits are subjective and people are going to have different views.

There is a term for this: bikeshedding
Specific refactorings are often a good idea. Re-factoring code to make it "feel nicer" for a single programmer often ends up in a commit war.
Let's see where we can build consensus, and move-forward with those refactorings. Others will simply have to wait.


module 'sparseconvnet.SCN' has no attribute 'Metadata_3'

Hi @art-programmer , @chenliu-wustl,
Thanks for your codes.
When I trained the model, I  got the output like this:
keyname=instance_normal_augment_2 task=train started
the number of images val 20
the number of images train 1201
the number of images 1201
But after that, I got:
Traceback (most recent call last):
File "train.py", line 390, in
main(args)
File "train.py", line 91, in main
augmented_coords, augmented_colors, augmented_instances, _ = augmentation_model(coords[batch_index], faces[batch_index], colors[batch_index], instances[batch_index])
File "/orion/u/jiayun/env/anaconda3/envs/sp/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in call
result = self.forward(*input, **kwargs)
File "/orion/u/jiayun/downloads/MASC/models/instance.py", line 199, in forward
voxel = self.input_layer((all_coords, all_values))
File "/orion/u/jiayun/env/anaconda3/envs/sp/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in call
result = self.forward(*input, **kwargs)
File "/orion/u/jiayun/downloads/MASC/src/sparseconvnet/sparseconvnet/ioLayers.py", line 49, in forward
self.dimension),
File "/orion/u/jiayun/downloads/MASC/src/sparseconvnet/sparseconvnet/metadata.py", line 17, in Metadata
return getattr(sparseconvnet.SCN, 'Metadata_%d'%dim)()
AttributeError: module 'sparseconvnet.SCN' has no attribute 'Metadata_3'
Do you have any idea about that?
Thanks.

It seems to be an issue from the SparseConvNet code.
https://github.com/facebookresearch/SparseConvNet/issues/56

It is probably because I have downloaded Sparseconv repo before and now I download the MASC which also contain Sparseconv repo. When I remove the Sparseconv repo I downloaded before, I can run the code.
Thank you !


Add API Reference page

This replaces the old website with the foundation for the new API Reference page. The result can be viewed at https://zanshe.github.io/tiden/
@mikabytes Note that you will have to change the settings for the GitHub Page to be based on the main branch and /docs folder once this is merged. You can also delete the gh-pages branch.

This PR is from main branch to main branch. So gh-pages isn't even a thing here :)

Hmm, I wonder if we could have a navigation bar somewhere with two entries About`` and API. Then API will be what's already here, and just copy the whole README.md` into the About section?
That way we have some kind of description when someone visits the page. Even if its not completely done, it's still something.

This PR is from main branch to main branch. So gh-pages isn't even a thing here :)

tidenjs has a branch called gh-pages, what I meant is that that branch will be made obsolete once the changes I mentioned have been made.

Hmm, I wonder if we could have a navigation bar somewhere with two entries About and API.

Sure, I'll see what I can do

@mikabytes Well, there's a lot of copy-pasted code, but we have an About page ready to be reviewed now :)

Good stuff! Merging this :)


Request for the MSR data set in npy format

Hi Hehe,
Can you pleaase share the npy data file for the MSR data set.
It is a bit struggle for me to phrase bin data into npy.
Hope you can help me.
Best,
Xin

Hi @Delusionx1,
Please find the  dataset from the link https://drive.google.com/file/d/1QWZA3OyhaOcQcCMF-Sz9thjRJRExICIz/view?usp=sharing
Best regards.


error Could not install from "....\Users\Victor\Desktop\Discord" as it does not contain a package.json file.

Can you help me?
2017-12-04T01_02_50_559Z-debug.log

alright. hope you figured it out.


Spinner component doesn't render properly

Describe the bug
The moving progres circle doesn't fit perfectly to the background circle.
Sometimes they are even separated one from each other.

Closing as duplicate:
https://github.com/dxc-technology/halstack-react/issues/364


Added isAuthenticating flag to state

Addresses #6.
Adds isLoggingIn to the state. This is true when a login request is in progress.

Thanks.


AMBARI-24781 - Ambari setup-ldap: change group member default for IPA

What changes were proposed in this pull request?

Change the default value of "Group member attribute" for IPA to "member"
Remove --ldap-use-generic-defaults option and add --ldap-type option to choose the default values for missing options in cli mode instead.
The newly added option for --ldap-sync-disable-endpoint-identification should be defaulted to true to avoid issues with newer jdks.

How was this patch tested?
Run python tests in ambari-server
mvn test -DskipSurefireTests
Manual tests:

Install Ambari and replace the affected .py files.
start ambari server
Run ambari-server setup-ldap
check whether the ldap config properties are saved to the database table ambari_configuration
Restart ambari server
Run ambari-server sync-ldap
Log into the ambari server web UI using one of the users stored in ldap
Check that the users in Ambari are associated to any group

Use a one line command to to setup-ldap by passing all the ldap properties using cli options.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4282/
Test PASSed.

@smolnar82
I reverted the default of --ldap-sync-disable-endpoint-identification to false

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4293/
Test FAILed.
Test FAILured.

Retest this please

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4297/
Test PASSed.


Replaced Got HTTP client with native fetch

Resolves #33

Awesome! Thanks a lot for taking the time to create the PR
Looks perfect to me :)


Bus error

I've tried to install control d on my ubuntu 22 laptop and after agreeing with "install binary...", I got reboot and now I can't connect to internet and when I try to enter any "ctrld" command I got "Bus error" ок "Bus error (core dumped)". How can I uninstall or manualy stop service to destroy it?

I fixed my problem by manually configuring the DNS resolver with DNSoverTLS in /etc/systemd/resolved.conf and restarting systemd-resolved.service. This allowed me access to the Internet. I then downloaded and installed Control-D again without any problems.


Possible bug: Getting recursive project/project/... files

Describe the bug
After loading a project with nvim-metals I notice I get the file project/metals.sbt. But I also get project/project/metals.sbt. My project has the following structure:
.
├── build.sbt
├── components  <- code
├── logs
│   └── log.json
├── modules <- code
├── project
│   ├── build.properties
│   ├── metals.sbt <- generated by nvim-metals
│   ├── plugins.sbt
│   ├── project <- generated by nvim-metals
│   └── target <- generated by nvim-metals

The extra project directory looks something like this:
project
├── project
│   ├── metals.sbt
│   ├── project
│   │   ├── metals.sbt
│   │   ├── project
│   │   │   └── target
│   │   │       └── config-classes
│   │   └── target
│   │       ├── config-classes (fewer files)
│   │       ├── scala-2.12 (some files)
│   │       └── streams (some files)
│   └── target
│       ├── config-classes (many files)
│       ├── scala-2.12 (many files)
│       └── streams (many files)
└── target
    ├── config-classes (most files)
    ├── scala-2.12 (most files)
    └── streams (most files)

To reproduce, you would need my code - but I can't share that. However, the steps are something like this:

Start from a clean version of the code.
Open a Scala file.
When Metals ask to import the build, I say yes.
Metals works in the background indexing and compiling.
When it is finished, the above mentioned files are created.

I wouldn't really know where to begin looking in to this, but I hope someone might be able to help figure it out.
My related configuration:

https://github.com/lervag/dotnvim/blob/86d5b9bc042f7b3248f2862c3fd0b2815969a0d7/plugin/lsp.lua#L348-L431

Expected behavior
I would assume that only the single file metals.sbt was generated inside the project folder:
.
├── project
│   ├── build.properties
│   ├── metals.sbt <- generated by nvim-metals
│   ├── plugins.sbt

Operating system
Linux
Version of Metals
v0.11.12
Commit of nvim-metals
51cd9fabe8ba7ff9abafd0c1ec4292f3a2eb1a31

Hey @lervag, good question! So this is actually the expected behavior. You'll actually see it reflected in the doctor even when you look at your build targets. You'll notice you'll have a <something>-build and <something>-build-build. The reason for this is that Metals needs to support editing your build file. So in order to support your root build.sbt file it creates the first project/metals.sbt file. Then Metals also needs to support editing in your meta-build, aka anything in your project/*. So in order to do that it needs to add the plugin one layer up in project/project/metals.sbt. It will essentially keep going one layer up to ensure you have editor support in the layer below. Not the prettiest, but it's how it works :).

Hey @lervag, good question! So this is actually the expected behavior. …

Thank you for the good explanation! So, if I understand correctly, I would want to add project/project to my .gitignore file, as well as .metals and metals.sbt, right?

Hey @lervag, good question! So this is actually the expected behavior. …

Thank you for the good explanation! So, if I understand correctly, I would want to add project/project to my .gitignore file, as well as .metals and metals.sbt, right?

You don't need to add the full project/project. As long as you have the normal things like target in your .gitignore, just adding the following should be all you need for Metals related projects
.bsp/
.bloop/
.metals/
metals.sbt

Ah, yes, of course.


RSSI card shows Battery for BLE device

Describe the bug

rssi shows batterry state
How to reproduce

BLE device Xiaomi MJYD02YL found over Passive BLE monitor Intergration provides both Batterry and rssi information
got two entities
sensor.ble_battery_b460ed979297 (now its 50%)
sensor.ble_rssi_b460ed979297 ( -67 dBm)
Expected behavior

Well, i just wanted to see right numbers =)
The good part is that if I try to insert RSSI entity to Battery card its autochanges to battery entity
YAML configuration

# please paste here your card config

Screenshots

Version

last

all updated to last (beta channel)

Reoppening it as it make sense to have a way to disable this logic

Hi! Thank you for support again, also I found that gradient didn’t work with lqi all signals is  grey, maybe it’s result that it’s shows as negative

Also interested in this. I have Xiaomi temperature/humidity sensors all over the place and hoped to use this to show room temperatures with color-coded icons. The "state" of sensor.living_room_temperature contains the temp, but the card ignores that and show's the sensor's battery level since that's one of the attributes. Totally understand that this is primarily a battery card... but it's so close to being useful in so many other ways :-). Either way, thank you for the card! I love using it for batteries too...

Hi! Thanks for this awsome card! I was wondering whether any progress has been made on this? Thanks!

Ok I think that I have something what will work for you (will be available in v3)

I think I was reading and thinking about too many enhancements/issues at the same time and I confused this one with the one which was related. Anyway your problem will be solved when you add non_battery_entity: true in the card/entity configuration. This way you're disabling lookup on attributes to get the state

I've added one more feature which you may find useful. More details here #586


mobile: Fixes to the Apple Core Foundation to C++ conversion

And adds unit tests for the Apple utility functions.

/assign @alyssawilk

/retest


Epic fail

In #29 I claim that I added all methods under the blockchain section and I swear I did all those but that PR has half missing. Either I messed up a rebase someplace and lost all the work (likely switching between machines and not updating git appropriately) or I marked all those methods as done in the PR description when I had not done them (I doubt I did that).
Anyways, half of the blockchain stuff is missing on master and missing from the PR that claims to have added it - epic fail.

From some investigation it appears to happened when I migrated the repo from my personal account to rust-bitcoin.

I redid everything from scratch - ouch. See github.com/rust-bitcoin/corepc if you are interested.