Question related to transaction costs Standard HDD and Standard SSD

Hi there,
I've got a few questions in relation to the transaction costs for Standard HDD and Standard SSD.
I'm trying to calculate the financial break-even point for premium SSD vs Standard HDD/SSD.

Does the price for 100K transactions at Standard HDD apply to Standard SSD as well, where 1 transaction is equal to an I/O unit of 256K? If not, what's the cost per I/O unit on a Standard SSD?
Does the statement "Transactions include both read and write operations to storage." go for Standard SSD as well?

Kind regards,
Jimmy

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

ID: 2cd6eb6c-745c-b3eb-8ea8-7fb3be24b607
Version Independent ID: 93637a78-fc66-6c5d-7845-a4fad0045c7d
Content: Select a disk type for Azure IaaS Windows VMs - managed disks
Content Source: articles/virtual-machines/windows/disks-types.md
Service: virtual-machines-windows
GitHub Login: @roygara
Microsoft Alias: rogarana

Thanks for your question. We are investigating and we will update you shortly.

@JayKus  I have assigned the issue to the content author to investigate further and update the document as appropriate.
@roygara Please take care of this issue

@JayKus Thanks for reaching out.
Given that you're trying to calculate a financial break even point, I'd recommend making use of the actual pricing materials to achieve that, not the technical documentation. Which do also answer your questions related to transaction costs and so on.
I'd recommend starting here: https://azure.microsoft.com/pricing/details/managed-disks/
and here: https://azure.microsoft.com/pricing/calculator/
@jakaruna-MSFT FYI
#please-close

Hello @roygara, are you aware of any possibility to monitor the numer of transactions in Premium SSD disks in order to forecast the cost of moving to Standard SSD?
Thanks,

@paratz You can find this in the monthly billing (download the CSV for extraordinary detail). It's listed under MeterName (column P here) "Disk Operations", and then you'd want to look at ConsumedQuantity (column E here).

Thanks @jaykus, I’m asking for that information now, but do you know if this metric is available for Premium SSD disk which are not billed by transactions? That’s what we need to forecast moving to standard ssd. Thanks again,
From: JayKus<EMAIL_ADDRESS>Sent: Thursday, May 23, 2019 4:00 AM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Pablo Ratz<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] Question related to transaction costs Standard HDD and Standard SSD (#26328)
@paratzhttps://github.com/paratz You can find this in the monthly billing (download the CSV for extraordinary detail). It's listed under MeterName (column P here) "Disk Operations", and then you'd want to look at ConsumedQuantity (column E here).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/issues/26328?email_source=notifications&email_token=AFN4Y7USZX6R3QMHN62NMSDPWZFHZA5CNFSM4G4BGITKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWBMTHA#issuecomment-495110556, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AFN4Y7XQI42T5KLQZW4HEMTPWZFHZANCNFSM4G4BGITA.


Extract Corvus.Testing.AzureFunctions library

As discussed via Twitter, this PR extracts a separate library independent of all testing frameworks to provide the Azure Functions pieces as an individually-consumable package. I've left lots of comments in the commit history, and have pulled out the more interesting ones here:

Some small formatting changes (mostly in XML-Doc comments) were introduced in the extraction process and weren't caught by StyleCop, etc.; I'm happy to revert any that don't conform to "house style".
The public methods GetFunctionsOutput() and TeardownFunctions() are reimplemented as delegating members on the SpecFlow-specific version to ensure stability of interface.
There's a little bit of type-system hackery in DemoFunctionPerFeatureHooks to convince the compiler to import the appropriate version of FunctionController. Obviously, this can be easily resolved by renaming one or other of the FunctionController classes as preferred, when we've worked out what each should be called 😁

A further refactorings that could be achieved in the context of the new library is the introduction of some new helper classes, to reduce the weight of the FunctionController class. #56 will also need to be resolved before the new library is ready for use in third-party repositories.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

As an aside,  I'm thinking of renaming the existing projects in the solution as follows:

Corvus.SpecFlow.Extensions -> Corvus.Testing.XXX.SpecFlow, where XXX is a specific bit of functionality - for example, the Azure Functions bits from that project -> Corvus.Testing.AzureFunctions.SpecFlow
Corvus.SpecFlow.Extensions.Demo -> Corvus.Testing.AzureFunctions.SpecFlow.Demo
Corvus.SpecFlow.Extensions.DemoFunction -> Corvus.Testing.AzureFunctions.DemoFunction.

It'll make this PR quite difficult to follow if we do all that at the same time, so (assuming this is acceptable to those with an interest in the project) I'll do it in a follow-up PR once we've got this one merged back.

One thing that would be great to add is a demo of using the newly extracted bits with the test framework of your choice. Obviously you could use the existing demo function and create a new demo project Corvus.Testing.AzureFunctions.<nunit | mstest | whatever>.Demo to show how you expect to use it in whatever your test framework is - hopefully this will give you the added benefit of making sure it all behaves as you expect when you start using it to test your own code.

This was a very telling exercise! While the motivating use case was to use the Functions/process-wrangling pieces in NUnit tests with Pact, I opted for plain Xunit tests for ease of development, both from a familiarity perspective and a fewer-moving-parts perspective. I obviously found myself writing the same sort of extension code that already exists in the SpecFlow extensions library for the purposes of this sample, which begs the question of whether more test framework extension libraries will start to sprout up around this core library.
Another key thing I found was something I'd struggled with earlier in the development of this PR: I can't see the Console.WriteLine() output anywhere in my dev environment. Xunit even discourages (deactivates?) the standard Console class in favour of its own ITestOutputHelper. So in addition to #56 as mentioned in the PR description, there's maybe some additional work uncovered here to integrate something like Microsoft.Extensions.Logging.Abstractions.
As an experiment, I tried removing the reference to NUnit from the SpecFlow extension library, and this is satisfyingly easy to do now! The only usage that wasn't utterly trivial to resolve was this deprecation warning.

I've also realised that I need to add some Xunit tests to set additional configuration. Earlier, I couldn't find the bit in the SpecFlow feature files that set this up, but I've just located them and so will add those tomorrow.

Those final tests have now been added. It might be an idea to de-duplicate the test methods themselves at this point, as there's now 3 identical classes. Other than that, though, I'm happy this is ready for re-review or additional contributions.

Looks like the build failed because of a transient issue installing the Functions tools from NPM. A quick retry should sort that :+1:

I re-ran the build

Any further comments/thoughts/updates, @jongeorge1?

We are going to try to land it today/tomorrow - just getting ahead of the week!


Feature Request : User input for Deferral

Some users find only having the option to defer after a certain number of hours annoying.
Would it be possible to add a user input option for the deferral? So the user can select one of the menu deferrals or enter an exact time in the day like defer until such as 5:30pm. Most users prefer to do it at the end of the day.

This is "effectively" implemented via the new --scheduled-install-user-choice option in https://github.com/Macjutsu/super/releases/tag/v5.0.0-beta2
It would be entirely too complicated to have multiple simultaneous workflows... instead you can override your default workflow with a temporary workflow until complete.


Update from pytorch-transformers to transformers library

updated dependencies and imports to use transformers.
updated ignore_index and ignored values in tensors to be -100, same as default in transformers and pytorch.
updated checkpoint save to use correct path #60

Thanks! Did you do anything to verify that this doesn't effect metrics or otherwise break?

I ran it on a smaller subset of the dataset and ran the interact script, it seemed to be fine. I'm currently training it on the full dataset. It'll take a while on my vm, but I'll report back once that finishes and I run the ConvAI2 evaluation scripts!

@sshleifer  I trained with the parameters:
--model="openai-gpt" --device="cuda" --n_epochs=1
the evaluation script finished with
[ Finished evaluating tasks ['convai2:self'] using datatype valid ]
{'exs': 7801, 'hits@1': 0.75, 'hits@5': 0.961, 'hits@10': 0.992, 'hits@100': 1.0}
============================
FINAL Hits@1: 0.75

Do we need anything else to verify metrics?

Are those the same as the ones in the preview here?
https://github.com/huggingface/transfer-learning-conv-ai/pull/30
Sorry I'm being so lazy, mostly focused on main repo :)

No worries, the tensorboard metrics are pretty close:
results from your PR
{'accuracy': 0.7466991411357519,
'average_accuracy': 0.74669914113575a19,
'average_nll': 2.6821035040007972,
'average_ppl': 14.615805388160778,
'nll': 2.6821035040007972}

results from my PR
{'accuracy': 0.7496474981307983,
'average_accuracy': 0.7496474981307983,
'average_nll': 2.6389272212982178,
'average_ppl': 13.99817943572998,
'nll': 2.6389272212982178}

👍

@acarrera94 were you able to test these changes with gpt2? Specifically, did you try testing interact.py with gpt2?

When I try to interact with a model trained using gpt2, I get the following error:
    logits = logits[0, -1, :] / opts.temperature
IndexError: too many indices for tensor of dimension 2

I think the logits = logits[0] is not applicable with the latest transformers and is just an artifact of pytorch_pretrained_bert, and hence can be removed.
@acarrera94 @julien-c @thomwolf

Good question, I didn’t have enough memory to train  gpt2 on my vm, but if you have a checkpoint I can download id be happy to take a look at it

@acarrera94 you don't need to be able to train GPT-2 to figure out that this is a bug.
Do something like this in your Python interpreter:
>>> import pytorch_pretrained_bert
>>> from pytorch_pretrained_bert import GPT2LMHeadModel
>>> print(pytorch_pretrained_bert.__version__)
0.6.2
>>> model = GPT2LMHeadModel.from_pretrained("gpt2")
>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> input = "hello how are you"
>>> input_ids = tokenizer.convert_tokens_to_ids(tokenizer.tokenize(input))
>>> import torch
>>> input_ids = torch.tensor(input_ids)
>>> input_ids = input_ids.view(1,-1)
>>> outputs = model(input_ids)
>>> outputs[0].shape
torch.Size([1, 4, 50257])
>>> import transformers
>>> from transformers import GPT2LMHeadModel
>>> print(transformers.__version__)
2.3.0
>>> model = GPT2LMHeadModel.from_pretrained("gpt2")
>>> outputs = model(input_ids)
>>> outputs[0].shape
torch.Size([1, 4, 50257])

Clearly, the logits is a 3-dimensional tensor for gpt2. So the logits = logits[0] fix won't work for gpt2, even with pytorch_pretrained_bert 0.6.2.
cc @sshleifer since I think I remember you mentioning in one of your past pull requests that you were unable to interact with GPT-2 in the code as it currently stands
also cc @KasparPeterson since you were the one who introduced this fix in the first place in this pull request: https://github.com/huggingface/transfer-learning-conv-ai/pull/6


Factor all Discogs server interactions into coordinators

Factor all Discogs client interactions into a coordinator class. (Coordinators aren't all bad, I guess.)


cmake:build file support with libcxx 17.0.6

Summary
support CMake build for llvm 17
relate to https://github.com/apache/nuttx/pull/11301#issuecomment-1855241323
Impact
Testing
CI build

@xuxin930 please rebase to the last mater, and revert the patch:
https://github.com/apache/nuttx/pull/11301/commits/3f3e9afa07f2b92f80ce841d337919772703cbff

ci error is fixed here: https://github.com/apache/nuttx/pull/11414


Allow authentication using preview apps

I know this one is a bit of a drag, but the whole creating bouquets depends on it to do proper QA.

Mmm... 🤔 with a reverse proxy? But already sounds awfully complicated.

Ca fonctionne maintenant !
https://github.com/opendatateam/udata/pull/2935


cmd/run: remove default workdir

closes #287

For some reason I thought we did this on purpose to allow relative paths or something?

I think we should merge this. Here's what I tested:
funnel run 'echo hi > out'
Doesn't work because the working directory is a read-only filesystem (in the default alpine image)
funnel run 'echo hi > $out' -o out=output.txt
Works.
funnel run 'md5sum $in > $out' -i in=input.txt -o out=output.txt
Works.
Having funnel run make it impossible to use the default workdir set by an image seems like the worst case. If there's some other critical reason why we need funnel run to force the workdir that we're forgetting, we'll have to change it back later.

Logic seems sound to me.


Ignore new GCP fields during billing aggregation.

It seems GCP added new field into invoice, called 'invoice.publisher_type'.
Our aggregated table does not contain it and BQ had failed to load it.
This only happened so far when running locally and it is a bit of mystery why the loading is not failing yet on production.
Adding ignore for new fields makes it more future resilient, in case Google add any new fields to their billing records.

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

Please upload report for BASE (main@767dc1e). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #289   +/-   ##
=======================================
  Coverage        ?   90.93%
=======================================
  Files           ?        4
  Lines           ?      430
  Branches        ?        0
=======================================
  Hits            ?      391
  Misses          ?       39
  Partials        ?        0

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


feat: make init optionally unreliable

As requested by @roziscoding for doing a custom error handling in the browser that involves users explicitly clicking retry before handling errors

A bit harsh on the JSDoc, but I really just want to get an error if an error happens, so I'll take what I can have

A bit harsh on the JSDoc

It's important to be transparent when implementing something dangerous.

I just generally disagree with this approach. It's like a hack to avoid something which we could solve instead. There are in fact two problems and they have different solutions.
We're missing control around aborting the initialisation (solution: add an abort signal).
We're causing high load on browsers when offline (solution: backoff between requests).
I think these two things are much preferable over what I've done here. I'll close this as soon as I have a superseding PQ.


Added AWS marketplace product template.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Michal Harish seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


[DOCS] Add instructions on how to get data to display

Description
Add instructions for submitting to the EddieHub API and how to initiate new data to fill the side panel.
Info - refine for clarity and tone:
Submit a request here to be added to the API: https://github.com/EddieHubCommunity/support/issues/new?assignees=&labels=EddieHub-API-add&template=add-api-user.yml&title=Please+add+me+to+the+EddieHub+API
After that, open or comment on an issue in the EddieHubLive project to create an entry, edit your comment to create multiple entries
do not keep adding new comments to create data, this will create spam.  Editing your existing comment should work for testing purposes.
Screenshots
No response
Additional information
No response

Thanks Amanda 💯

I can take this next, but quick question  - for a docs change, is it the same as code? Would I create a branch, etc etc?  Also, if these instructions are listed out somewhere already, please link me!

Yes please 👍

yep it is the same as code changes
currently everything is in the README, when it grows bigger we can look to move to a docs folder and include it in the app


Add Apache hive 3.1.2

Is this image suitable to have PT suites 1-5 run on it?

Is this image suitable to have PT suites 1-5 run on it?

Yeah I would also be interested in running hive_transactional PTs against this if there is a way, apart from running them against hdp3 env to validate this change as well

It looks like master is currently broken, so it prevents me from merging this atm. I restarted the job on master branch to see if it is reproducible, but I see a lot of failures on your pull request as well.

 Please verify its path and try again
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/

Errors are from centos6-oj8

It looks like master is currently broken, so it prevents me from merging this atm. I restarted the job on master branch to see if it is reproducible, but I see a lot of failures on your pull request as well.

 Please verify its path and try again
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/

Errors are from the build of Image centos6-oj8

Please rebase, master is fixed now.


Collaboration Service - Integrate a real-time collaboration library/tool via Websocket and provide APIs

#44 Using socket.io


Boilers can use acid spray through preparation vendors

Little unfair because they can just damage barricades for free and you can't shoot them
Vendors are also unable to be destroyed

i'm gonna add onto this post with some vendor related exploits
marines can melee xenos over the vendor if they hug it too close (so vendor stuff isn't entirely uncounterable)
marines can chuck grenades/throwing knives over vendors though (not an exploit just needs to be mentioned)
xenos can shove and devour marines over the vendor
warrior fling and other direct target abilities hit marines (inconsistent)
attacking hits marines (somehow less consistent than shoving??)

We also need the squad vendors to be slashable by xenos, which makes them fall over and have to be stood back up and repaired. While in this state xenos and marines can just walk over them - they stop blocking things.


Is it possible to create sub namespace inside a version?

My use case is like below:
controllers/
    v1/
        stores/
            some_store_controller.rb
        users/
            some_user_controller.rb

I use the generator to do this like:
rails g versionist:new_controller stores/registrations V1
But it will not count that stores as a module. Is it possible to support this use case? Or there is other better way to organize the structure? Thanks.

It's certainly possible to support this, but clearly it's not handling this correctly currently.

Is there any walk around to achieve this for now?

I tried a few things but couldn't get it to work. You'll need to deal with this manually or just don't use the generators.

Thanks. I will do it manually.
On Monday, August 15, 2016, Brian Ploetz<EMAIL_ADDRESS>wrote:

I tried a few things but couldn't get it to work. You'll need to deal with
this manually or just don't use the generators.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bploetz/versionist/issues/77#issuecomment-239804167,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGYi5ZwYt6gx-nF8SBQxSdByVIWX6-32ks5qgGxYgaJpZM4JjO9i
.

I would like to do the inverse(?) of this and use a super-namespace. ie. support routes like /api/v1/my_action. Problem is that if you set api_version(:module => "API::V1",... then the "api" isn't included in the routes and you end up with just /v1/my_action
If you wrap the api_version in a namespace like this:
namespace :api do
    api_version(:module => "V1", :default => true,
                        :header => {:name => "Accept", :value => "application/vnd.api+json;version=1"},
                        :path => {:value => "v1"}) do
        resources :users
    end
end

Then while you do get nice routes like: api_v1_users GET    /api/v1/users(.:format)            api/v1/users#index you can no longer use generators:
> rails g versionist:new_controller clients V1 -p
/Users/gingitsune/.rvm/gems/ruby-2.4.1/gems/versionist-1.5.0/lib/generators/versionist/new_controller/new_controller_generator.rb:13:in `block in new_controller': API module namespace V1 doesn't exist

The same is true for running the generator with various combinations of API::V1 and whatnot.
Any thoughts on how I could make this work cleanly?

ah... nm. I just discovered that the case for the super-namespace can be achieved like this:
api_version(:module => "Api::V1",:path => {:value => "api/v1"}) do
    resources :users
end

This lets you generate using rails g versionist:new_controller users Api::V1 which works fine.
Note though that the casing is capitalized not upcase on "Api". This is because if you have a class like class API::V1::UsersController < API::V1::BaseController in the file /app/controllers/api/v1/users_controller it breaks rails naming convention. It should instead be: class Api::V1::UsersController < Api::V1::BaseController even though API is an acronym.
PS. Sorry to hijack the sub-namespace thread. It would also be an excellent feature in the generators, as would traversing namespaces rather than requiring the namespace be baked into the module param.

@Genkilabs re: API vs Api, welcome to the wonderful world of the Rails inflector. :) I'm pretty sure you can override this behavior if you prefer all uppercase. See http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html#method-i-acronym


Simulate cloud operations

is there any method to imitate send command from cloud to device in your code?
There are SendProperty ,SendTelemetry, but there is any method like call "SendCommand" which can imitate cloud send data to device?
And for the "SendProperty ", I have property named "firmwareVersion" in central, but I didn't get any message from your code:
PropertiesCallback onProps = (IoTCProperty property) -> {
System.out.println(String.format("Received property '%s' with value: %s", property.getName(),
property.getValue().toString()));
property.ack("Property applied");
};
I invoked the SendProperty, message can see in "Raw data" of device, but the listener didn't get the any message
what should I do?
Originally posted by @wuwei3 in https://github.com/lucadruda/iotc-java-device-client/issues/4#issuecomment-769620709

You are mixing concepts here. This is a device client so there is no way to simulate service client (IoT Central) and imitate commands or properties.
If your property is a writeable one then callback should trigger.
Please pull latest version in your pom.xml and try again.

You are mixing concepts here. This is a device client so there is no way to simulate service client (IoT Central) and imitate commands or properties.
If your property is a writeable one then callback should trigger.
Please pull latest version in your pom.xml and try again.

hi,
I did what you said for the property, but not worked, see the pic

I config the property and make it "writable"

the display on page

I created one test device to run the code, the "Telemetry" and "propertity" data send to central,

but the property listener didn't get any response.
I am sorry, I am the green hand on the IOT central, did I something wrong so that the code doesn't work?

hi,
I did what you said for the property, but not worked, see the pic

I config the property and make it "writable"

the display on page

I created one test device to run the code, the "Telemetry" and "propertity" data send to central,

but the property listener didn't get any response.
I am sorry, I am the green hand on the IOT central, did I something wrong so that the code doesn't work?

Did you pull latest version (2.1.0)?
I can see you are sending the property correctly and listener is well formed. What do you have in Central page when updating the firmware property from the cloud?
Are you using components in your device definition?

Did you pull latest version (2.1.0)?
No, can't build success, it still get the same error, I comment in the closed issue.

I can see you are sending the property correctly and listener is well formed. What do you have in Central page when updating the firmware property from the cloud?
I created the "firmwareVersion" property in central page and make it "writable"(you can see for the first page in my comment), the data can show in "Raw Data" tab, but the listener didn't get any message.

Are you using components in your device definition?
yes, component, default component both used, but both didn't get any response.

from the page, you could see, I create 2,one for default component, one for component, but both were not work for property listener, the data, can show in the "Raw data" tab

Listener only works if you change property from Central, not from device. Your device is already sending the property so there is no reason to listen for the same value

Listener only works if you change property from Central, not from device. Your device is already sending the property so there is no reason to listen for the same value

OK, I see,

Listener only works if you change property from Central

Could you please tell me how to do this for making the listener work? I mean, is there any page or button, can trigger the property listener works?

You have to provide a form view for your properties.
When you define your device template add a form view from "Views" menu.

Then select property you'd like to change from cloud side and add the section to template.

Remember to publish template at the end.

I did what you told

the value just in "pending" status
click the "Pending", it shows

but the listener still got nothing, what else can do to make the status change?

Are you sure using the lastest version? Do commands work?
Paste your code here. Property listener should trigger immediately when device is connected and property changes.

Hi，
Yes, I am sure I using the latest version

I re-clone the codes, and build success (BTW, the iotc-device-samples cannot build success, because it says can't find the iotc-device-client 2.0.1 version in maven central, but I think it's not big issue)
public class TestSendData {
static final String deviceId = "renxing2";
static final String scopeId = "0ne00200B86";
static final String deviceKey = "ytBZSkuCZZV0R8rbjawE7hZvhyBL9v9nT7D7jzsgo/Q=";

//device template->model->view entity
static String modelID = "dtmi:olcsimulationcentral:testforsensor1bk;1";

static class MemStorage implements ICentralStorage {

    @Override
    public void persist(Storage storage) {
        System.out.println("New credentials available:");

//            System.out.println(storage.getHubName());
//            System.out.println(storage.getDeviceId());
//            System.out.println(storage.getDeviceKey());
return;
}
    @Override
    public Storage retrieve() {
        return new Storage();
    }

}

public static void main(String[] args) {
	System.out.println("Welcome to IoTCentral");
    IoTCClient client = new IoTCClient(deviceId, scopeId, IOTC_CONNECT.DEVICE_KEY, deviceKey, new MemStorage());
    client.SetLogging(IOTC_LOGGING.ALL);

    PropertiesCallback onProps = (IoTCProperty property) -> {
        System.out.println(String.format("Received property '%s' with value: %s", property.getName(),
                property.getValue().toString()));
        property.ack("Property applied");
    };

    CommandCallback onCommand = (command) -> {
        System.out.println(String.format("Received command '%s' with value: %s", command.getName(),
                command.getRequestPayload().toString()));
        return command.reply(IOTC_COMMAND_RESPONSE.SUCCESS, "Command executed");
    };

    client.on(IOTC_EVENTS.Properties, onProps);
    client.on(IOTC_EVENTS.Commands, onCommand);

    try {
        client.Connect();
        client.SendProperty(String.format("{\"firmwareVersion\":%d}", 12));

        while (true) {
            System.out.println("Sending telemetry");
            client.SendTelemetry(String.format("{\"temperature\":%,.0f}", 35.78));
            try {
				Thread.sleep(300 * 1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
        }

    } catch (IoTCentralException ex) {
        System.out.println("Exception: " + ex.getMessage());
    }
}

}
This is my code, just paste from your code, only change the deviceID and device KEY, the device ID in the code is the test device I am using in central, you can use it as test, no worry

Please also attach capability model (//device template->model->export).
If something is wrong on the SDK side you can try to debug by putting a breakpoint in device client at: https://github.com/lucadruda/iotc-java-device-client/blob/889f406ed937285943f0861a5688028c061d0525/iotc-device-client/src/main/java/com/github/lucadruda/iotc/device/IoTCClient.java#L296

The model below:
[
{
"@id": "dtmi:olcsimulationcentral:testsen4471;2",
"@type": "Interface",
"contents": [
{
"@id": "dtmi:olcsimulationcentral:testsen4471:sendConfigToSensor;1",
"@type": "Command",
"commandType": "synchronous",
"displayName": {
"en": "send config to sensor"
},
"name": "sendConfigToSensor",
"request": {
"@type": "CommandPayload",
"displayName": {
"en": "period"
},
"name": "period",
"schema": "long"
},
"response": {
"@type": "CommandPayload",
"displayName": {
"en": "SUCCESS"
},
"name": "SUCCESS",
"schema": "string"
}
},
{
"@id": "dtmi:olcsimulationcentral:testsen4471:firmwareVersion;1",
"@type": "Property",
"displayName": {
"en": "firmware version"
},
"name": "firmwareVersion",
"schema": "long",
"writable": true
},
{
"@id": "dtmi:olcsimulationcentral:testsen4471:testsen4V26q5;2",
"@type": "Component",
"displayName": {
"en": "Component"
},
"name": "testsen4V26q5",
"schema": "dtmi:olcsimulationcentral:testsen4V26q5;1"
}
],
"displayName": {
"en": "testsen4"
},
"extends": [
"dtmi:olcsimulationcentral:testsen42oj;1"
],
"@context": [
"dtmi:iotcentral:context;2",
"dtmi:dtdl:context;2"
]
},
{
"@context": [
"dtmi:iotcentral:context;2",
"dtmi:dtdl:context;2"
],
"@id": "dtmi:olcsimulationcentral:testsen42oj;1",
"@type": "Interface",
"contents": [
{
"@id": "dtmi:olcsimulationcentral:testsen42oj:temperature;1",
"@type": "Telemetry",
"displayName": {
"en": "temperature"
},
"name": "temperature",
"schema": "double"
},
{
"@id": "dtmi:olcsimulationcentral:testsen42oj:humidity;1",
"@type": "Telemetry",
"displayName": {
"en": "humidity"
},
"name": "humidity",
"schema": "double"
}
],
"displayName": {
"en": "Interface"
}
},
{
"@context": [
"dtmi:iotcentral:context;2",
"dtmi:dtdl:context;2"
],
"@id": "dtmi:olcsimulationcentral:testsen4V26q5;1",
"@type": "Interface",
"contents": [
{
"@id": "dtmi:olcsimulationcentral:testsen4V26q5:sendConfig2;1",
"@type": "Command",
"commandType": "synchronous",
"displayName": {
"en": "send config2"
},
"name": "sendConfig2",
"request": {
"@type": "CommandPayload",
"displayName": {
"en": "per"
},
"name": "per",
"schema": "long"
},
"response": {
"@type": "CommandPayload",
"displayName": {
"en": "SUCCESS"
},
"name": "SUCCESS",
"schema": "string"
}
}
],
"displayName": {
"en": "Component"
}
}
]

I played your code with that model and property listener works good for me.
Double check you don't have old instances running.
Also check your modelId. Id in your json model it looks different from the code above. It should be "dtmi:olcsimulationcentral:testsen4471;2"

Ok, modelID I don't use it.
I didn't have any old instance running, very strange, whatever, many thanks for your help.

I know why, the root problem is I didn't sent data with JSON, in your code (IoTCClient listenToProperties()):
JsonObject payloadObject = (JsonObject) new JsonParser().parse(property.getValue().toString());
if the receive data is not JSON, this line will get exception

from the pic, I just put {"firmwareVersion":4}, but the receive data is only "4.0", not the JSON, so it cannot exec the below codes.
Very Strange, I did what you did in your code, I don't know why it cannot to be JSON

It's not clear to me what you are trying to do.
IoTCentral sends properties in JSON format so your device code should be able to receive it in the right way.
Property message in the format {"ac":...,"ad":...} is a response message client sends back to ack new property value. Why are you receiving this back on client side?
Looks like your scenario is wrong in some parts

Hi
I always get this error:
com.github.lucadruda.iotc.device.exceptions.IoTCentralException: Registration error, bailing out
at com.github.lucadruda.iotc.device.DeviceProvision._internalRegister(DeviceProvision.java:138)
at com.github.lucadruda.iotc.device.DeviceProvision.register(DeviceProvision.java:99)
at com.github.lucadruda.iotc.device.DeviceProvision.register(DeviceProvision.java:73)
at com.github.lucadruda.iotc.device.IoTCClient.Connect(IoTCClient.java:159)
at com.github.lucadruda.iotc.device.IoTCClient.Connect(IoTCClient.java:153)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.utils.DeviceConnUtils.isOpen(DeviceConnUtils.java:60)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.testsend.pushdata.PushDataThread.reOpenConnection(PushDataThread.java:128)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.testsend.pushdata.PushDataThread.run(PushDataThread.java:55)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
I think, my network was ok, how this caused?

Another exception info:
Caused by: com.microsoft.azure.sdk.iot.provisioning.device.internal.exceptions.ProvisioningDeviceConnectionException: Exception opening connection
at com.microsoft.azure.sdk.iot.provisioning.device.internal.contract.mqtt.ContractAPIMqtt.open(ContractAPIMqtt.java:175)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.contract.mqtt.ContractAPIMqtt.authenticateWithProvisioningService(ContractAPIMqtt.java:228)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask.authenticateWithSasToken(RegisterTask.java:202)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask.authenticateWithDPS(RegisterTask.java:319)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask.call(RegisterTask.java:341)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask.call(RegisterTask.java:37)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
... 4 more
Caused by: java.io.IOException: Unable to subscribe on topic : $dps/registrations/res/#
at com.microsoft.azure.sdk.iot.deps.transport.mqtt.MqttConnection.subscribe(MqttConnection.java:236)
at com.microsoft.azure.sdk.iot.provisioning.device.internal.contract.mqtt.ContractAPIMqtt.open(ContractAPIMqtt.java:170)
... 11 more
Caused by: Timed out waiting for a response from the server (32000)
at org.eclipse.paho.client.mqttv3.internal.Token.waitForCompletion(Token.java:112)
at org.eclipse.paho.client.mqttv3.MqttToken.waitForCompletion(MqttToken.java:67)
at com.microsoft.azure.sdk.iot.deps.transport.mqtt.MqttConnection.subscribe(MqttConnection.java:232)
... 12 more
com.github.lucadruda.iotc.device.exceptions.IoTCentralException: Registration error, bailing out
at com.github.lucadruda.iotc.device.DeviceProvision._internalRegister(DeviceProvision.java:138)
at com.github.lucadruda.iotc.device.DeviceProvision.register(DeviceProvision.java:99)
at com.github.lucadruda.iotc.device.DeviceProvision.register(DeviceProvision.java:73)
at com.github.lucadruda.iotc.device.IoTCClient.Connect(IoTCClient.java:159)
at com.github.lucadruda.iotc.device.IoTCClient.Connect(IoTCClient.java:153)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.utils.DeviceConnUtils.isOpen(DeviceConnUtils.java:60)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.testsend.pushdata.PushDataThread.reOpenConnection(PushDataThread.java:128)
at com.orangelabs.iot.azure.central.IOTAzureCentralTest.testsend.pushdata.PushDataThread.run(PushDataThread.java:55)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Please open separate issues if topics are not related.
Anyway, that looks like an error on DPS, either you can't reach the global url, your credentials are not valid or your device registration in the hub got corrupted. Try to change device Id and provision a different one to exclude corruption.

ok, I submitted another issue, you could close this one, many thanks.


Can you share your standardize_arr_lite.npz?

no data

I guess I can upload a sample of those datasets since the original dataset is too large. Keep an eye on the update.

A sampled collection of datasets are available now.


Docs issue with setcap

Version
n/a
Linux Version
Linux 5.4.0-1060-gcp #64~18.04.1-Ubuntu SMP Fri Jan 7 04:02:54 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Describe the bug
setcap on README doesn't work correctly
Steps to reproduce the bug
$ sudo setcap cap_sys_resource,cap_sys_admin,cap_bpf+eip $(which bee)
fatal error: Invalid argument
usage: setcap [-q] [-v] (-r|-|<caps>) <filename> [ ... (-r|-|<capsN>) <filenameN> ]

 Note <filename> must be a regular (non-symlink) file.

Expected Behavior
need to doc correct way to setcap on a default ubuntu 18.04 LTS (this example from GCP)
Additional Context
No response

Terminal/shell issue? Enclosing in quotation marks (due to '+')? At least below works on Fedora 33 and Ubuntu 21.04
$ sudo setcap "cap_sys_resource,cap_sys_admin+eip" $(which bee)

Unfortunately that doesn't seem to be the problem on the machine I was testing on:
$ sudo setcap "cap_sys_resource,cap_sys_admin,cap_bpf+eip" ~/.bumblebee/bin/bee
fatal error: Invalid argument
usage: setcap [-q] [-v] (-r|-|<caps>) <filename> [ ... (-r|-|<capsN>) <filenameN> ]

 Note <filename> must be a regular (non-symlink) file.
$ sudo setcap "cap_sys_resource,cap_sys_admin,cap_bpf+eip" $(which bee)
fatal error: Invalid argument
usage: setcap [-q] [-v] (-r|-|<caps>) <filename> [ ... (-r|-|<capsN>) <filenameN> ]

 Note <filename> must be a regular (non-symlink) file.

CAP_BPF is a relatively recent capability and when it is missing attempting to add it will result in the Invalid argument error. To prevent getting started issues, going to opt for documenting more permissive caps but call out that this can be more specific.


Legend is not displayed for single entry point

Search terms

legend
missing legend
single entry point
single output page

Expected Behavior

Legend is displayed at the bottom of the page.
Actual Behavior
For single entry point, no legend is displayed.
However, for multiple entry points, the legend is displayed.
I could not find any other clues and/or differences than the fact of single / multiple entry points..
I tried to play with entryPointStrategy option, but without success..

Steps to reproduce the bug
Minimal repo: here
Steps to reproduce the problem:

git clone the repo
cd the repo directory
npm install
npm run test
see single-entry-point/out/index.html
see multiple-entry-points/out/index.html

Environment

Typedoc version: 0.22.15
TypeScript version: 4.6.4
Node.js version: 16.15.0 LTS
OS: Ubuntu 22.04 LTS

This is because a ProjectReflection is not a DeclarationReflection:
https://github.com/TypeStrong/typedoc/blob/master/src/lib/output/plugins/LegendPlugin.ts#L309
PR welcome, though the legend is going away in 0.23 as icons are self explanatory there... might not be worth fixing.


Fix for #1721. Changes required due to TextBuffer.save becoming async in Atom 1.19

What does this implement/fix? Explain your changes.
Fix to handle the async save operation of editor.save() released in Atom 1.19. Resolves promise from editor.save before deleting pendingPaths and logging it.
Does this close any currently open issues?
https://github.com/Glavin001/atom-beautify/issues/1721 and https://github.com/Glavin001/atom-beautify/issues/1801
Any other comments?
First pull request ever on GitHub, please provide any feedback on improvements.
Checklist
Check all those that are applicable and complete.

[X] Merged with latest master branch
[ ] Regenerate documentation with npm run docs
[ ] Add change details to CHANGELOG.md under "Next" section
[ ] Added examples for testing to examples/ directory
[ ] Travis CI passes (Mac support)
[ ] AppVeyor passes (Windows support)

Published to v0.30.5

Thank you for contributing, @szeck87 !


Is @SuppressWarnings("infer") not supported from 0.9.4 ??

But the documentation says it is removed in 0.10.0. Then how come it is not working in 0.9.4 itself?

But the documentation says it is removed in 0.10.0. Then how come it is not working in 0.9.4 itself?

Do you have a small example where @SuppressWarnings does not work with 0.9.4 ?
Having support for @SuppressWarnings is very tricky because the default @SuppressWarnings annotation only source retention only, and Infer runs on bytecode. The support was based on some complex annotation processing step and I would not be surprised if there are cases where it does not work properly. As of 0.10.0, using @SuppressLint should be more stable as we are sure that we can retrieve the annotation from the bytecode.

Please reopen with more information.


Check sizes before saving after resizing

There should be a check to see if all the sizes of the image layers match the image size. If it is then error it out.

Solved in commit b24f8e2


Remove stylesheet entries from Encore config

The documentation says:

Using addStyleEntry() is supported, but not recommended. A better option is to use follow the pattern above: use addEntry() to point to a JavaScript file, then require the CSS needed from inside of that.

With Encore, think of your app.js file like a standalone JavaScript application: it will require all of the dependencies it needs (e.g. jQuery or React), including any CSS.

See https://symfony.com/doc/current/frontend/encore/simple-example.html#compiling-only-a-css-file

Much better indeed! Thanks Oleg!


Building a project assumes library crate type

Let's consider this example
fn foo() {
    println!("foo");
}

fn main() {
    foo();
}

Normally the playground suggests you to "run" the project. If you just want to check it without actually running it, you can use the "build" command in the burger menu next to "run".
But then the playground/compiler assumes that the crate type is a library and annotates the dead code (not exported, therefore dead).
I would suggest to investigate if there is a function main and change the crate type accordingly.

The problem is that the concept of building and the crate type are intricately combined in the backend. These will need to be disentangled.


Adding a Dockerfile for building a basic container image

Description
Adding a Dockerfile for building an image containing the compiled service
Type of change

New feature (non-breaking change which adds functionality)

Testing steps
Regular CI

Codecov Report

Merging #37 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #37   +/-   ##
=======================================
  Coverage   57.80%   57.80%
=======================================
  Files           6        6
  Lines         173      173
=======================================
  Hits          100      100
  Misses         63       63
  Partials       10       10

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 de2b1e1...83dff8e. Read the comment docs.


unlink stale unix socket before binding

loop.create_unix_server() should remove socket at that path if it exists. Every application that wants to use unix socket server should do that. Why not to add code that removes unix socket before binding ?
It should:

Check if it is exists and that is UNIX socket (i.e. do os.stat())
raise exception if removal failed, raise exception if this path exists but is not unix socket.
not even try to remove if path starts with zero byte (i.e. abstract unix socket)

What if you are trying, by mistake, to start a second instance of a server, with the previous one still running?  We want to catch that mistake, instead of silently removing the existing socket.

All software that I see unlinks stale socket unconditionally. Can you show any one that checks for the other instance ? Also, seems the kernel checks if address already in use during bind() even when FS node is removed.

+1 one to do this. @socketpair can you quickly make a PR (so that we can fix this before 3.6b2)?

Although there is another approach: maybe the correct thing to do is to remove the socket file after we close the unix server? How Twisted/Tornado implement this?

@1st1 both Twisted and Tornado clean stale sockets before binding:

https://github.com/twisted/twisted/blob/trunk/src/twisted/internet/unix.py#L290
https://github.com/tornadoweb/tornado/blob/master/tornado/netutil.py#L215

@1st1 @ZhukovAlexander @gjcarneiro please review


Cannot merge arrays in prisma.$transaction

Bug description
When you have a transaction that uses updateMany or deleteMany (operations on multiple objects) together with create, update, upsert or delete (operations on a single object), you cannot use the array spread operator without a TypeScript error.
No overload matches this call.
  The last overload gave the following error.
    Argument of type '(Prisma__UserClient<User> | Promise<BatchPayload>)[]' is not assignable to parameter of type 'Iterable<User | PromiseLike<User>>'.
      The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.
        Type 'IteratorResult<Prisma__UserClient<User> | Promise<BatchPayload>, any>' is not assignable to type 'IteratorResult<User | PromiseLike<User>, any>'.
          Type 'IteratorYieldResult<Prisma__UserClient<User> | Promise<BatchPayload>>' is not assignable to type 'IteratorResult<User | PromiseLike<User>, any>'.
            Type 'IteratorYieldResult<Prisma__UserClient<User> | Promise<BatchPayload>>' is not assignable to type 'IteratorYieldResult<User | PromiseLike<User>>'.
              Type 'Prisma__UserClient<User> | Promise<BatchPayload>' is not assignable to type 'User | PromiseLike<User>'.
                Type 'Promise<BatchPayload>' is not assignable to type 'User | PromiseLike<User>'.
                  Type 'Promise<BatchPayload>' is not assignable to type 'PromiseLike<User>'.
                    Types of property 'then' are incompatible.
                      Type '<TResult1 = BatchPayload, TResult2 = never>(onfulfilled?: ((value: BatchPayload) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<...>) | ... 1 more ... | undefined) => Promise<...>' is not assignable to type '<TResult1 = User, TResult2 = never>(onfulfilled?: ((value: User) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<...>) | null | undefined) => PromiseLike<...>'.
                        Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
                          Types of parameters 'value' and 'value' are incompatible.
                            Type 'BatchPayload' is missing the following properties from type 'User': id, username, email, password, and 6 more.ts(2769)
lib.es2015.iterable.d.ts(226, 5): The last overload is declared here.

How to reproduce
const test = [
  prisma.user.create({
    data: { username: 'test', email<EMAIL_ADDRESS>password: 'test' },
  }),
]

// This gives a TypeScript error
prisma.$transaction([
  // deleteMany or updateMany
  prisma.user.deleteMany({
    where: { id: 1 },
  }),
  // Cannot be mixed with create, upsert, update or delete when using array spread operator
  ...test,
])

Expected behavior
The above code should not give a TypeScript error and work the same way as the following code does:
// This does not give a TypeScript error
prisma.$transaction([
  prisma.user.deleteMany({
    where: { id: 1 },
  }),
  prisma.user.create({
    data: { username: 'test', email<EMAIL_ADDRESS>password: 'test' },
  }),
])

Prisma information
generator client {
  provider        = "prisma-client-js"
  output          = "./src/graphql/generated/prisma-client"
  binaryTargets   = ["native", "debian-openssl-1.1.x"]
  previewFeatures = ["transactionApi"]
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id                     Int                     @id @default(autoincrement())
  username               String                  @unique
  email                  String                  @unique
  password               String

  @@map("user")
}

Environment & setup

OS: Mac OS
Database: MySQL
Node.js version: 12.16.2
Prisma version:

@prisma/cli          : 2.9.0
@prisma/client       : 2.9.0
Current platform     : darwin
Query Engine         : query-engine 369b3694b7edb869fad14827a33ad3f3f49bbc20 (at node_modules/@prisma/cli/query-engine-darwin)
Migration Engine     : migration-engine-cli 369b3694b7edb869fad14827a33ad3f3f49bbc20 (at node_modules/@prisma/cli/migration-engine-darwin)
Introspection Engine : introspection-core 369b3694b7edb869fad14827a33ad3f3f49bbc20 (at node_modules/@prisma/cli/introspection-engine-darwin)
Format Binary        : prisma-fmt 369b3694b7edb869fad14827a33ad3f3f49bbc20 (at node_modules/@prisma/cli/prisma-fmt-darwin)
Studio               : 0.296.0

The error also occurs when using .concat:
prisma.$transaction(
  [
    prisma.user.deleteMany({
      where: { id: 1 },
    }),
  // This also gives a TypeScript error
  ].concat(test)
)

@P4sca1  Dude I wrote 2 issue, and I didn't get answer, I forced back to typeorm...  key factor for me became flexibility transaction

I can reproduce this and this has been reported before.
Closing as duplicate of https://github.com/prisma/prisma-client-js/issues/894


chore(docs): update upgrade.md

Signed-off-by: Niladri Halder<EMAIL_ADDRESS>
What this PR does:
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Checklist

[ ] PR messages has document related information
[x] Labelled this PR & related issue with documentation tag
[ ] PR messages has breaking changes related information
[ ] PR messages has upgrade related information
[ ] Labelled this PR & related issue with requires-upgrade tag
[ ] Tests updated

This should be a cherry-pick, but this is easier.

This documentation change is not necessary in the release branch. The change is already there in the develop branch.


Display applied modules count in header

We can display the number of applied modules in header using the modules statistics

Hello :)
I would like to try to contribute with this first issue if it is possible. I intent to just display the applied modules count in header without refresh it in real time if you are agree with that.

Hello :) I would like to try to contribute with this first issue if it is possible. I intent to just display the applied modules count in header without refresh it in real time if you are agree with that.

Yep, totally!

Here it is :

I find a bit strange the information in the navbar.
For me, the navbar should not be used for displaying this kind of information. But I don't know where to put it

I tried to put this next to the logo but it was more strange : /

IMO, it is not surprising to have this in the navbar like this. Also, it will be too much if we add a specific style juste for one statistic.
Maybe the need is to have another place dedicate to display some stats.

Maybe the need is to have another place dedicated to display some stats.

Later, the plan is to have a dedicated page with stats over time for the instance. For now I wanted to start with that and have a simple counter on https://lite.jhipster.tech (dunno if the mongoDB is deployed on this instance, cc @jdubois)

It seems that there is something returned by https://lite.jhipster.tech/api/statistics

Yep but that may be the InMemoryRepository responding :D

Yep but that may be the InMemoryRepository responding :D

Oh okay, you are probably right because yesterday it was marked about 400 and now it is marked about 80

Sorry, the Mongo DB part isn't set up yet.
I changed a few things in the way we handle file storage, and realised that the performance is bad, I also need to look at this.

Isn't it better to use a classic SQL database, like PostgreSQL for that ?

I wanted this because we have a free tier for Cosmos DB, that supports MongoDB... well now there's also PostgreSQL support, I need to check what would make sense

@nassimerrahoui : I tried but it is still strange for me in the navbar, which should be used to change page, navigate etc, not for this kind of information
I would suggest 2 places:

near the button, near the other count applied
similar information like compated / extended, but at another place

What do you think ?

@nassimerrahoui : I tried but it is still strange for me in the navbar, which should be used to change page, navigate etc, not for this kind of information
I would suggest 2 places:

near the button, near the other count applied
similar information like compated / extended, but at another place

What do you think ?

I'm agree with that the navbar should be only for navigation. It can be placed like compated / extended and at another place like your previous screenshot, I guess.
Near the other count may be confusing with the current project properties.

agree for the solution 1 so :D


adding setGlobalEmitter

this changes the behavior of having every active emitter receive process.emit metrics
only the globalEmitter will get metrics from process.emit('metric') and it must be explicitly set as the global emitter with Emitter.setGlobalEmitter(emitter)

I'd lean towards setting the event name to listen on than setting the emitter itself — so users can direct process.emit('specific-metrics') to a subset of listeners without having to keep references to those emitters.

Talked this over in Slack — I am okay with this!


data format?

How is the data in A_edge_matrices_mutag.csv structured?

yes i have the same question.
there are two matrices for the mutag datasets used as inputs; the A and teh X
the A has dim 5264x28 (guessing this means which node is connected to what other node, so edges)
the X has dim 5264X7 which i do not understand!
Please clarify if possible
Thank you for your time

By looking at the data, I'm pretty sure we have 188 graphs with 28 nodes each (or at least 28 at most, and the matrices are padded to be uniform size)


Error when 'NEW_SESSION' is used instead of 'LAUNCH' intent.

I'm submitting a...

[x ] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Other... Please describe:

Expected Behavior

As per documentation either 'NEW_SESSION' or 'LAUNCH' must be implemented.
If only 'NEW_SESSION' is used, the intent is fired, however, there is an error in console which says "Could not find the route LAUNCH in your handler function".

Current Behavior

Error log
If you have an error log, please paste it here.

Your Environment

Jovo Framework version used: 1.x.x
Operating System:

Hey @prodigylabs!
We fixed it last week. npm install jovo-framework will fix the problem.

great, I will test it out. In any case, this is just error showing on console, the app continues to function.


UDP port not exposed from WSL2 to host

I'm running Asterisk in my WSL2 subsystem on Windows 11.
Asterisk is listening on TCP 5038 and UDP 5060. I'm checking on my WSL2 Debian console :
TCP port is listening
~$ netstat -an |grep "5038"
tcp        0      0 <IP_ADDRESS>:5038          <IP_ADDRESS>:*               LISTEN
UDP port is open
~$ netstat -an |grep "5060"
udp        0      0 <IP_ADDRESS>:5060            <IP_ADDRESS>:*
Now, I check on my host (Windows 11) from command prompt :
>netstat -an | find "5038"
TCP    <IP_ADDRESS>:5038         <IP_ADDRESS>:0              LISTENING
>netstat -an | find "5060"

UDP port is not accessible from my host to my WSL2 environment.

There are a number of issues reported where UDP is not exposed from WSL via <IP_ADDRESS>.
Are there any plans to fix this or should we consider if a permanent restriction?

Currently is by design. Any implementation/fix to solve this would rely on heuristics/guesswork that wouldn't guarantee functionality in all cases. For the time being you shouldn't expect it to change.

Thank you for the reply. I'm writing a UDP/TCP relay to satisfy my use case. Would be great to see this in WSL in the future.

Nice. 2 years has passed and no resolution so far.
I guess even if it gets ifxed it would force mifration to Windows 11? orr 12?

Mirror networking has been introduced in WSL2: https://learn.microsoft.com/en-us/windows/wsl/networking#mirrored-mode-networking
I haven't tried it yet but it sounds like it might introduce this feature. According to the docs it is supported from Windows 19041, which as I understand it it Windows 10.

@DavidMartynWood

I haven't tried it yet but it sounds like it might introduce this feature. It requires Windows 11 22H2 or higher.

Have you had a chance to try?
I have tried that with FreeSwitch, hoping it's fixed. So, while TCP works for SIP messages, I can not get it working for UDP  transport.
What leaves me completely puzzled, is that once I set my client sip phone to TCP for SIP, RTP does flow using UDP successfully!


Binance WAPI removal

According to Binance info:
"To optimize API performance and provide better trading services for our API users, Binance will delist all WAPI endpoints from the Binance API at 2021-08-01 2:00 AM (UTC). Information on WAPI endpoints will be removed from Binance API Documentation at approximately 2021-06-01 2:00 AM (UTC). "
Do you plan to have a binance client compatible with their changes ?
If so in which release?

Hi if there is a feature you want please submit a PR

Binance will decommission all WAPI endpoints. Currently XChange binance connector is using them. Are you aware of that change? They are going to stop supporting all WAPI endpoints by August 2021.
Do you plan to remove them and change them to supported ones?

I am not aware of anyone working on this, this project is community driven and a product of folks generously giving their time to keep this project up to date!

Ok, we will try to research what should be changed and maybe we can help out with this.

I'm aware and maybe can help with that due to a project I'm building and focused in Binance as first target.

Feel free to start it on your fork and announce it as a WIP PR


Update hdinsight-component-versioning.md

@ashishthaps1 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


can't purge cron resources

while attempting removing 'unmanaged' cron entries, module recognizes those, but fails to remove
how to reproduce:
# crontab -u user -l
0 0 * * * /bin/echo test

puppet resource reports it as 'unmanaged'
# puppet resource cron
cron { 'unmanaged:/bin/echo_test-1':
  ensure   => 'present',
  command  => '/bin/echo test',
  hour     => ['0'],
  minute   => ['0'],
  provider => 'crontab',
  target   => 'user',
  user     => 'user',
}

Code to apply:
purge { 'cron':
  if => [ 'user', '==', 'user' ],
}

Result of puppet apply:
Notice: /Stage[main]/Main/Purge[cron]/ensure: ensure changed 'purgable' to 'purged'
Notice: /Stage[main]/Main/Cron[unmanaged:/bin/echo_test-1]/ensure: removed

But cron entry remains intact.
Thanks,
Vadym

Hello,
I've just hit this while trying to use the module.
I'm able to get cronjobs purged for the root user using a snippet similar to @vchepkov 's, but any for other user the cronjobs get marked as getting removed but they just stay there in the crontab file like what is described by OP.

I'm trying to figure out what's present in the catalog, but with with a request of the following type against puppetdb, I'm not seeing a resource for the cronjob that's not getting removed:
catalogs { certname = "node-name.fqdn" }

nothing in the output is mentioning "unmanaged:" or "echo" (which is part of the test cronjob that should get removed).
I don't know why that resource is not in the catalog but visibly getting processed by the agent

ah, sorry for my confusion in the previous message. I've read the type code and I can see the resources are injected by the purge type. if I look at the reports (instead of the catalogs) for that same machine, I can see that puppet claims to have removed the resource:
      {
        "status": "success",
        "timestamp": "2021-08-20T12:33:12.795-04:00",
        "resource_type": "Cron",
        "resource_title": "unmanaged:/usr/bin/echo_blah_toisssi-1",
        "property": "ensure",
        "corrective_change": null,
        "new_value": "absent",
        "old_value": "present",
        "message": "removed",
        "file": null,
        "line": null,
        "containment_path": [
          "Stage[main]",
          "Profile::Cron",
          "Cron[unmanaged:/usr/bin/echo_blah_toisssi-1]"
        ],
        "containing_class": "Profile::Cron"
      },

as stated before though, it's still present in the crontab file for the www-data user.

It's being awhile, anyone was able to find a solution?

I have inspected the res object in generate function and I found that
res[:user] -> nil
res[:target] -> "root"

I believe both are wrong and should be set to an actual user

FYI, module fails to remove previously managed entries, i.e. those that have Puppet Name: prefix


Wrong rendering of line plots on the Web Interface (missing values)

Environment:

wandb 0.10.4
tensorflow 2.1.0
keras 2.2.4
Keras WandbCallback
We are using the metrics as provided by Keras

Issue:
We noticed that the line plots on the W&B Web interface behave erratically, sometimes missing certain values. I have attached two pictures to show the problem. In the first picture, one can see the downward spike of val_true_negatives to almost 0 between epoch 1k and 1.5k. And the corresponding upward spike in val_true_positives.
The training continuous and in picture 2 that drop suddenly disappears, giving a wrong impression about the performance of the model. After some epochs, the spikes appear and disappear again. We spotted this problem with any metric. The correct values appear in the W&B logs. So I assume it is a visualization issue. Which, however, is quite serious for us, since we cannot be absolutely sure if we can trust W&B.
It is probably an issue with the resolution of the graph. Zooming in to the values shows the correct result. Is it possible to alert the user in case this happens? Otherwise, important clues during the training of models might get obfuscated.

@habichta if you send us a link to the run in question we can debug the root cause.  My guess is you're actually logging NaN values where we render zeros in the chart.  You can see the raw data by using our public api to access all the data points: https://docs.wandb.com/library/api/examples#export-metrics-from-a-large-single-run-without-sampling

Hey @habichta
Could you let us know if the issue is tackled with?
We are closing this issue due to inactivity of the thread. Please feel free to reopen this ticket if the issue persists. :smile:


Build fails with: no method named handler found for type syntax::errors::Handler in the current scope

# cargo build
[...]
   Compiling regex_macros v0.1.24
   Compiling num v0.1.29
/home/rustdev/.cargo/registry/src/github.com-88ac128001ac3a9a/regex_macros-0.1.24/src/lib.rs:559:41: 559:50 error: no method named `handler` found for type `syntax::errors::Handler` in the current scope
/home/rustdev/.cargo/registry/src/github.com-88ac128001ac3a9a/regex_macros-0.1.24/src/lib.rs:559         cx.parse_sess().span_diagnostic.handler().err("failure parsing token tree");
                                                                                ^~~~~~~~~
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
Could not compile `regex_macros`.

To learn more, run the command again with --verbose.

# rustc --version
rustc 1.7.0-dev (ef91cdb14 2015-12-18)

Just noticed this is quite redundant with #144


Lesion segmentation analysis

In this issue, I use the segmentation of the lesions on the spinal cord after cropping the images (issue #37 ).
The analysis of the segmentations accounts for the following:

[x] Identifying a lesion across slides
[x] Measuring its volume
[x] Measuring its center
[ ] Registration between images and segmentations at different time points
[ ] Comparison of the lesions at different time points
[ ] Creating a text file to sum up evolutions of the MS lesions

I worked on a segmentation that was inferred by nnU-Net (the one trained on 1000 epochs) on image sub-cal072_ses-M12_STIR. On this volume, I performed:

Automatic clustering of the segmented voxels in lesions (the number of lesion is automatically detected) across slices
Computation of the lesion volumes
Computation of the center of the lesions

Output:
It outputs a file where each segmented voxel is indexed per lesion (1 for lesion 1, 2 for lesion 2, etc.)

Number of lesions: 4
Volume and center of each lesion (mm3):
Lesion 1 : volume: 42.63 mm3, center: [155.5862069<PHONE_NUMBER>5   4.        ]
Lesion 2 : volume: 232.26 mm3, center: [159.92405063<PHONE_NUMBER>7   4.34810127]
Lesion 3 : volume: 29.4 mm3, center: [164.4 132.3   3. ]
Lesion 4 : volume: 29.4 mm3, center: [218.75  21.5    4.  ]

Automatic clustering of the segmented voxels in lesions (the number of lesion is automatically detected) across slices
Computation of the lesion volumes
Computation of the center of the lesions

Cool! For this, you are using the lesion_seg_analysis.py script from plb/nnunet branch, right?
Be aware that SCT contains sct_analyze_lesion.py function, which does pretty similar things:
$ sct_analyze_lesion -m sub-cal080_ses-M0_STIR_lesion-manual.nii.gz

...

Lesion count = 1

Measures on lesion #1...
  Volume : 52.92 mm^3

...

Averaged measures...
  Volume [mm^3] = 52.92+/-0.0
  (S-I) Length [mm] = nan+/-nan
  Equivalent Diameter [mm] = nan+/-nan

Total volume = 52.92 mm^3
Lesion count = 1

...

(It does not print the center, but it could be easily added)

what is the purpose of the registration? if it is to identify the same lesions across time points, then it should be fine (given that lesions span several voxels)

The objective is to register images from M0 and M12 to perform comparison of the sc lesions. Yes, it means identifying the lesions across time points.

Currently performing registration between M0 and M12 images using: sct_register_multimodal -i sub-cal072_ses-M0_STIR.nii.gz -d sub-cal072_ses-M12_STIR.nii.gz -iseg sub-cal072_ses-M0_STIR_seg.nii.gz -dseg sub-cal072_ses-M12_STIR_seg.nii.gz with the segmentations being the spinal cord segmentation (computed with sct_deepseg_sc) used to improve the registration.

Another possible approach might be using sct_straighten_spinalcord; see point 2 in https://github.com/neuropoly/idea-projects/issues/17#issuecomment-1584916867. However, sct_straighten_spinalcord requires, besides SC seg, also disc labels (which are not currently available for STIR/PSIR).

from @valosekj:

Another possible approach might be using sct_straighten_spinalcord; see point 2 in https://github.com/neuropoly/idea-projects/issues/17#issuecomment-1584916867. However, sct_straighten_spinalcord requires, besides SC seg, also disc labels (which are not currently available for STIR/PSIR).

That's a good idea, although it might be an overkill (straightening takes time). But for visualisation purpose, that could be interesting. In any case, if @plbenveniste needs to have some reasonable level of alignment between time points, he will definitely need disc levels (otherwise, how can he make sure that the coverage is exactly the same across time points).
from @plbenveniste:

The objective is to register images from M0 and M12 to perform comparison of the sc lesions. Yes, it means identifying the lesions across time points.

In that case, you don't need sub-millimetric precision, given that lesions are 'big blobs'. 2-3mm precision in the registration will make it possible to identify the same lesion across time.

After registration, there is still one problem. Even though registration is well performed on slices, because of the anisotropic nature of the image, we can see slices with spinal cord "registered" to slices without spinal cord. That happens, even though both images are well aligned on the x and y axis.

The resulting problem is visible when performing registration on the lesion segmentation images. The time points can't really be compared since they don't superpose well.

Solution:

One solution is to perform lesion comparison from M0 to M12 without doing registration, hoping that lesions from the first time point are "similar enough" to those at the second time point and close enough.
Another solution I want to try is to create a .nii.gz image in which 0=spinal cord and 1=lesion segmentation. From this, I'll directly perform registration to superpose lesions and then compare them.

I'm not sure I fully understand https://github.com/ivadomed/canproco/issues/38#issuecomment-1661099253. A few comments:

you mentioned "the registration is well performed on slices", but the first GIF animation suggests that the two time points are not well registered (notice a shift of ~5cm along the rostro-caudal axis)
also, what do you mean by registration performed "on slices"? How was the registration done by the way (linking to your code would be useful)
"both images are well aligned on the x and y axis": in medical imaging, I would recommend to instead use the terms AP, RL, IS to avoid confusion (because an "x" axis can be along AP, RL or IS depending on the orientation of the FOV during acquisition)
can you make the images brighter/more exposure? it is very difficult to properly see these images
what are the red and blue labels on the GIF images?

Changing the parameters improved the registration. The final parameters are:

step=1,type=seg,algo=slicereg,poly=5:step=2,type=im,algo=syn,metric=MI,deformation=1x1x1,smooth=3
I played with the polynom order, the metric (MI or CC) and the smoothing.
However, even though the spinal cord is well aligned, there is still a problem with the alignment of vertebral labels as we can see in the following:

I can't manage to use vertebral labels in the following command line.
The error I get is the following:

Exception: Error: number of source and destination landmarks are not the same, so landmarks cannot be paired.

Do the -ilabel and -dlabel have the same number of labels?

now that looks like a much better registration indeed!

can you also try with the 'dl' algo (without segmentation)? I'm curious to see how it performs

Registration performed with 'dl' with vertebral levels:

parameters = 'step=0,type=label,dof=Tx_Ty_Tz:step=1,type=im,algo=dl,metric=CC,deformation=1x1x1,smooth=3'

Registration performed with 'dl' without the vertebral levels:

parameters = 'step=1,type=im,algo=dl,metric=CC,deformation=1x1x1,smooth=3'

Conclusion : TO BE ADDED

parameters = 'step=0,type=label,dof=Tx_Ty_Tz:step=1,type=im,algo=dl,metric=CC,deformation=1x1x1,smooth=3'

I believe that when algo=dl is used, all other parameters (such as metric=CC,deformation=1x1x1,smooth=3) are ignored. --> There is no need to specify them. -param step=1,type=im,algo=dl should be enough.

Registration, lesion segmentation, and lesion matching (from first-time point to 2nd-time point) have been done. I did these using the lesions from the 2nd time point on which forward had been applied. Everything is therefore viewed on the image from the first time point. I created a lesion segmentation file where the voxel value = lesion ID.  The objective is to be able to use a matching table to match lesions from the 2nd time point to the 1st. I then applied inverse warping on this lesion mask. The result is the following:

The inverse warping also modified the intensity of the voxels which corrupts the labeling of the lesions as IDs.
In order to avoid that problem, I performed lesion clustering on the first time point and the 2nd time point warped on the first time point image. I got the temporal matching of lesions this way.
Then, I did clustering of the lesions in the second time point without warping (meaning that they are still in their original image). To get the matching between the second time point images with and without warping, I used graph-based matching. I created a graph where each node is the center of the lesion and each edge is the distance between the lesions. I, therefore, obtained the matching without having to perform inverse warping.
TO DO:

include the volume of the lesion in the node embedding.
generate the final '.txt' output

The inverse warping also modified the intensity of the voxels which corrupts the labeling of the lesions as IDs.

with nearest neighbour interpolation, the intensity of the voxel should remain the same

After quite some trouble with graph matching, I changed my strategy to the following:

perform registration between t1 and t2: the objective is to get the segmentation file from t2 registered to the segmentation file from t1
perform lesion matching on t1 and t2_registered_to_t1: both segmentation file have voxels = lesion ID (with IDs matching from t1 to t2)
perform inverse warping on t2_registered_to_t1_correctly_labeled
perform lesion matching between the original t2 segmentation and the inversely wrapped segmentation of t2: the original t2 seg file is transformed so that each voxel = lesion ID (with IDs matching from t1 to t2)
perform comparison of the lesions from t1 to t2
create an output file

The result is the following:

On the left the t1 image, on the right the t2 image (both with matching labeled lesions)
The output file is the following:

The code can be found here

very good progress @plbenveniste ! 👏

On the left the t1 image, on the right the t2 image

please avoid using t1 t2 for times points 1-2, because in MRI we often use t1 and t2 for the contrasts. Instead, you could use ses-1, ses-2 (inspired by BIDS)

As suggested in this comment, I tried using sct_label_utils -remove-reference to get a common list of vertebral levels in both segmentation file, in order to use them during registration.  I apply it to both images using the other as a reference. I also overwrite the images.

os.system('sct_label_utils -i ' + first_vert_output_path + ' -remove-reference ' + second_vert_output_path + ' -o ' + first_vert_output_path)
t1 = time()
print("time to remove-reference",t1-t0)
os.system('sct_label_utils -i ' + second_vert_output_path + ' -remove-reference ' + first_vert_output_path + ' -o ' + second_vert_output_path)
t2 = time()
print("time to remove-reference",t2-t1)

However, I am surprised by a very long computation time for the images (which is much longer than the previous method which consisted of loading the data, removing outliers and saving it.
For the first image: 147 seconds. For the second image: 161 seconds
Terminal output:

about https://github.com/ivadomed/canproco/issues/38#issuecomment-1673920787: it is surprising indeed, given the triviality of the task. Could you please open an issue on the SCT repos? Thanks!


Keras only lets me use Theano backend

Despite that in the keras.jason file the backend is set to tensorflow, each time that I activate my tensorflow environment the backend is set to theano.
C:\Users\Uriel\Anaconda3\Scripts>activate tensorflow
(tensorflow) C:\Users\Uriel\Anaconda3\envs\tensorflow\etc\conda\activate.d>set "KERAS_BACKEND=theano"
writing set "KERAS_BACKEND=tensorflow" does nothing.
Please, help me to set the backend to tensorflow.

Keras Backend documentation shows you how change backend.
In your $HOME/.keras/keras.json file got "backend": "theano" section. If you change theano with tensorflow , your problem will fixed.

In the keras.json file the backend is already set to "tensorflow", so this doesn't fix the issue.

 After run import keras; keras.backend.backend(). You must see tensorflow.

Can you use TensorFlow with python? Are you sure you install TensorFlow right?

I can use tensorflow and as I mentioned in the original message the command "set KERAS_BACKEND=tensorflow" doesn't fix this either.

I got that problem as well, I just delete the file in the activate.d folder, and everything back to normal. It seems if you want to run another keras session under the same env, the env will automatically change your setting in the activate.d folder, not sure why, but that is what I have encountered.

@gitathrun I encounted exactly same problem.
"deleting files in <your_conda_path>/envs/<your_env>/etc/activate.d" really pulls me out.

I edited the file /home/user/anaconda2/envs/tfpy36/etc/conda/activate.d/keras_activate.sh and changed theano to tensorflow. When I reactivated the env and imported Keras was using Tensorflow as backend

I've got the same problem, which I'm able to fix typing KERAS_BACKEND=tensorflow.
I'd love to fix it once and forever, but I can't even find any activate.d directory or a keras_activate.sh file :(

import tensorflow
KERAS_BACKEND=tensorflow
import keras
??
worked for me

As said by @gitathurn, go to your conda environment and change activate.d file. In my case
~/anaconda2/envs/keras35/etc/conda/activate.d/keras_activate.sh
Within that change the export KERAS_BACKEND=tensorflow also for the linux.

To those that are still struggling with this I found the "activate.d" folder at <your_conda_path>/envs/<your_env>\etc\conda\activate.d
There was only one .bat file which only had one command in it: Exactly the one that was setting the backend whenever I activated my Anaconda environment. Deleting that bat file resolved the issue for me.

Closing as this is resolved

what i i did was conda remove tensorflow , conda remove keras and then conda install -c conda-forge keras

i find when you change the keras_activate.sh file , like export KERAS_BACKEND=tensorflow.  but this change need to reactivate your_env.   eg:conda deactivate your_env  than activate it again.  than i resolved the issue


non-sequent sector numbers - how-to?

As I see in diskdefs.cfg, there's possibility to define non-sequent sector numbers. But, when I try to put something like it, into custom format description, i get "invalid literal for int() with base 10". Is t possible only for selected disk encodings, not for any?? Or i do something wrong? Below is my try:
disk zx.isdos.800
cyls = 80
heads = 2
tracks * ibm.mfm
secs = 1,2,3,4,9
bps = 1024
h = 0
end
end

Currently it's not possible, except by using the generic format ibm.scan.

this perfectly works for read, but if I want to write IMG, sector nums probably will be in sequence 1-5. So, if not possible, then only solution is HFE format.

You could use a verifiable format like ImageDisk (IMD)?
I could probably also allow id to be specified as a list in the diskdef config.

let me explain.

IMD doesn't store gap lengths. You should try it. For example:
gw read --format=ibm.scan name.imd
gw convert --format=ibm.scan name.imd name.img
gw convert name.imd name.hfe
gw write name.imd

So you can read to IMD, then create IMG and "perfect" HFE. And use the IMD to write back too. The need for --format=ibm.scan on the second command line above is a bit of a shame. I'll see about fixing that to make it automatic.


Running dotnet shows the usage instructions and then returns error code 129

Problem encountered on https://dotnet.microsoft.com/en-us/learn/languages/fsharp-hello-world-tutorial/install
Operating System: macos
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.
Using an M1 Mac, simply running dotnet shows the usage instructions and then returns error code 129
``shell
👉  dotnet
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help         Display help.
--info            Display .NET information.
--list-sdks       Display the installed SDKs.
--list-runtimes   Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
👹 129
👉  echo $?
129
``

Did you install the Arm64 version of the SDK?

Yes I did, just for future reference, how do I check @mairaw ?
👉  dotnet --list-sdks
6.0.101 [/usr/local/share/dotnet/sdk]
6.0.202 [/usr/local/share/dotnet/sdk]
👉  dotnet --list-runtimes
Microsoft.AspNetCore.App 6.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Thanks for confirming that. This doc has some information about how to check:
https://docs.microsoft.com/en-us/dotnet/core/install/how-to-detect-installed-versions?pivots=os-macos

Thanks @mairaw , was looking to see if there was something specific about identifying an ARM installation. Do you have all the information you need?

43f9b184817e4f48ba091d068a4d517c86daafd3
6.0.301
osx-arm64

Have you ever tried to build and/or run any application in your environment? If you haven't yet, you can create a new project by the following command;
dotnet new console
after creation is completed, you can run the app by the following command.
dotnet run
Please check out the result and share the output. It should be printed "Hello World"

Are you still having issues @mmulji-ic? I realize this is quite old.


Change of table name generation in version 0.6.0

I switched from version 0.5.6 to 0.6.0.
The maven plugin org.jvnet.hyperjaxb3:maven-hyperjaxb3-plugin:0.5.6 generates table names for a complexType named OperationStateType the table name OPERATIONSTATETYPE.
Plugin org.jvnet.hyperjaxb3:maven-hyperjaxb3-plugin:0.6.0 generates OPERATION_STATE_TYPE.
Could you please give an advice, how to get the old table names with version 0.6.0?
<complexType name="OperationStateType">
	<sequence>
		<element name="operationUUID" type="string" />
		<element name="state" type="string" />
	</sequence>
</complexType>

Had the same problem, adding

org.jvnet.hyperjaxb3
hyperjaxb3-ejb-extensions-custom-naming-pre_0_6_0
0.6.1

as a dependency to the maven-hyperjaxb3-plugin uses the old naming convention. Not sure if using it together with 0.6.0 causes any problem, but worth testing.

Bad luck. This did not work.
Some other suggestions?

Now after moving to version 0.6.1 my maven plugin definition looks like the following. But still I get the table name OPERATION_STATE_TYPE instead of OPERATIONSTATETYPE in the generated java source. Did I something wrong here?
<plugin>
	<groupId>org.jvnet.hyperjaxb3</groupId>
	<artifactId>maven-hyperjaxb3-plugin</artifactId>
	<version>0.6.1</version>
	<executions>
		<execution>
			<id>generate-hyperjaxb3-sources</id>
			<phase>generate-resources</phase>
			<goals>
				<goal>generate</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<forceRegenerate>true</forceRegenerate>
		<schemaDirectory>${model.dir}</schemaDirectory>
		<verbose>false</verbose>
		<variant>jpa2</variant>
		<persistenceXml>${project.basedir}/src/main/persistence/persistence-template.xml</persistenceXml>
		<episode>true</episode>
		<generateDirectory>${java.gen.dir}</generateDirectory>
		<extension>true</extension>
		<persistenceUnitName>${persistence.unit.name}</persistenceUnitName>
	</configuration>
	<dependencies>
		<dependency>
			<groupId>org.jvnet.hyperjaxb3</groupId>
			<artifactId>hyperjaxb3-ejb-extensions-custom-naming-pre_0_6_0</artifactId>
			<version>0.6.1</version>
		</dependency>
	</dependencies>
</plugin>

Hi all,
found the old 0.5.6 DefaultNaming sources. I will pass a link to the sources working for jpa1 and jpa2 too.

I need to keep already existing table and column names stable - even if I swicht to the newest version of hyperjaxb3. In here, it is not enough to replace the _   (an empty string). In 0.5.6 joined columns or table and column names longer than 30 characters contained _ too. For that reason I copied the behaviour of 0.5.6.
Steps taken:

Incorporated the 0.5.6 getName(String) method into Class com.qpark.eip.hyperjaxb3.naming.Pre600DefaultNaming
Added applicationContext.xml for pathes
org/jvnet/hyperjaxb3/ejb/plugin/custom,
org/jvnet/hyperjaxb3/ejb/jpa1/plugin/custom and
org/jvnet/hyperjaxb3/ejb/jpa2/plugin/custom

May at one time the org.jvnet.hyperjaxb3.ejb.plugin.EjbPlugin line 144 and 147 could use EjbPlugin.class instead of getClass(). In that case the distribution of the applicationContext.xml files would not be needed.
I would appreciate, if the org.jvnet.hyperjaxb3.ejb.plugin.EjbPlugin and the hyperjaxb3-ejb-extensions-custom-naming-pre_0_6_0 jar would be enhanced with my ideas.
See: [QPark/EIP eip-hyperjaxb3-naming]
(https://github.com/QPark/EIP/tree/master/qp-enterprise-integration-platform/eip-hyperjaxb3-naming)

Hi @bhausen,
sorry I could not react earlier.
The best you could do is to send me a pull request with your custom strategies. The best would be creating an extension here:
https://github.com/highsource/hyperjaxb3/tree/master/ejb/extensions/naming/custom-naming-pre_0_5_6
Additionally please consider adding a test project here:
https://github.com/highsource/hyperjaxb3/tree/master/ejb/tests/custom-naming-pre_0_5_6
So that your extension will be tested during the build.
Generally, custom naming strategy is exactly the right solution here. Sometimes there are backwards incompatible changes, we can't avoid it. But configurable strategies allow you to override it to get old conventions back. This is exactly why that's strategies and that they're configurable.
Best wishes,
Alexey