[BUG] Azure FrontDoor Model does not contain its ResourceGroup, making some update paths impossible.

Describe the bug
If I fetch all FrontDoors for a given subscription await frontDoorManagementClient.FrontDoors.ListAsync(); , there is no way to get from the AzureFrontDoor models in the response to the update path without knowing the resource group of the AzureFrontDoor beforehand; because the ResourceGroup is not contained within the FrontDoor model.
Expected behavior
FrontDoor model. contains resource information such as its ResourceGroup etc so that the update path is always reachable.
Environment:

Name and version of the Library package used: "Microsoft.Azure.Management.FrontDoor" Version="3.0.0"

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

@Ofekw, in general, resource definition does not expose ResourceGroup as a property. However, the resource id (FrontDoor.Id) contains the full path to the resource which contains all of the contextual information such as subscription and resource group etc. You can parse the resource group name out using a simple regex.

@Ofekw, in general, resource definition does not expose ResourceGroup as a property. However, the resource id (FrontDoor.Id) contains the full path to the resource which contains all of the contextual information such as subscription and resource group etc. You can parse the resource group name out using a simple regex.

Hey @allenjzhang, thank you for the prompt response.
This is indeed the path we went with - however I'd still urge you consider this feedback. Requiring regex to extract unstructured data from a model in order to satisfy the update path isn't user-friendly and is prone to errors.
For prosperity here's the full code snippet of the workaround:
private readonly Regex resourceGroupRegex = new Regex(@"resourcegroups/([^/]+)", RegexOptions.IgnoreCase);

private bool TryExtractResourceNameFromFromFrontDoorModel(FrontDoorModel model, out string resourceGroup)
{
    Match match = this.resourceGroupRegex.Match(model.Id);

    if (match.Length > 0)
    {
        resourceGroup = match.Groups[1].Value;
        return true;
    }

    resourceGroup = string.Empty;
    return false;
}

Hey @allenjzhang, thank you for the prompt response.
This is indeed the path we went with - however I'd still urge you consider this feedback. Requiring regex to extract unstructured data from a model in order to satisfy the update path isn't user-friendly and is prone to errors.
For prosperity here's the full code snippet of the workaround:
private readonly Regex resourceGroupRegex = new Regex(@"resourcegroups/([^/]+)", RegexOptions.IgnoreCase);

private bool TryExtractResourceNameFromFromFrontDoorModel(FrontDoorModel model, out string resourceGroup)
{
    Match match = this.resourceGroupRegex.Match(model.Id);

    if (match.Length > 0)
    {
        resourceGroup = match.Groups[1].Value;
        return true;
    }

    resourceGroup = string.Empty;
    return false;
}


env_file bad documentation

Problem description
Hi,
After looking for calling an .env file in a subfolder, I found that it is not possible as the .env file needs to be in the same directory as docker-compose.yml, as confirmed here : https://github.com/docker/compose/issues/4782#issuecomment-298743339
One problem : the documentation doesn't say the same
The doc say that's possible to call an .env file located in - /opt/secrets.env. I tried relative and absolute path : both doesn't work.
Problem location
Here : https://docs.docker.com/compose/compose-file/#env_file
Suggestions for a fix
Remove that line : - /opt/secrets.env in first example

a .env file and the env_file directive are different things, perhaps that’s where the confusion is? https://github.com/docker/compose/issues/4782#comment-298743339

As shin says : The env_file directive in your service doesn't change that
So that's why I think that's an error in the doc.
Also I tried :

env_file: ./app/.env
env_file: /home/ME/workspace/MYPROJECT/app/.env

With this config :
docker-compose.yml :
version: '3.6'

services:

  web:
    container_name: web
    build: docker/web
    env_file: ./app/.env
    ports:
      - ${APP_PORT}:80
    volumes:
      - ./app:/var/www/html

./app/.env :
APP_PORT=8080

Ok, I understood. env_file is not for docker_compose.yml. I close the issue.


Initial

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

Project coverage is 43.33%. Comparing base (aeefc01) to head (a93e788).
Report is 8 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   43.11%   43.33%   +0.21%
==========================================
  Files           6        6
  Lines        1046     1050       +4
==========================================
+ Hits          451      455       +4
  Misses        532      532
  Partials       63       63

Flag
Coverage Δ

unittests
43.33% <100.00%> (+0.21%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

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


⚠ PrivateHD has degraded performance

In b852657, PrivateHD ($PHD) experienced degraded performance:

HTTP code: 200
Response time: 1455 ms

Resolved: PrivateHD performance has improved in 2f7e135.


[TreeView] close #19953

[x] I have followed (at least) the PR section of the contributing guide.

You could.  Seems like a fair enough feature request to separate click selection and expansion.

You could. Seems like a fair enough feature request to separate click selection and expansion.

Depends how hard it is to achieve. I wouldn't want to make this too easy since it's easy to create bad UX with this. The icon is really tiny and if it's the only clickable surface it doesn't meet the usual hit target.

If the developer wants the functionality then they can restyle to make it larger.  ( I personally prefer the icon larger anyway )
I don't know what you mean by

The icon is really tiny and if it's the only clickable surface it doesn't meet the usual hit target.

Clicking anywhere in the containing div and toggling is performed.

@eps1lon I am trying to open my pull request in codesandbox but cannot get it to work.
https://codesandbox.io/docs/ci
The config file is present in the repo so I assume it is possible.
Can you advise ?

Can you advise ? Do I need to have certain permissions for mui-org ?

Should be able to open https://ci.codesandbox.io/status/mui-org/material-ui/pr/20087/builds/14476. The package urls can be used instead of version strings. The codesandbox build page also includes links to codesandboxes that use the build from this PR.

Can you advise ? Do I need to have certain permissions for mui-org ?

Should be able to open https://ci.codesandbox.io/status/mui-org/material-ui/pr/20087/builds/14476. The package urls can be used instead of version strings. The codesandbox build page also includes links to codesandboxes that use the build from this PR.

Thanks, that is exactly what I wanted.

I think we should rather use the approach we use with the other components: Add labelProps that are spread to the <Typography>{label}</Typography> and then you can intercept clicks that happen on the label.

What are you suggesting is done in the label onClick ? Attach to the event object a boolean for use in onNodeToggle ?

A single prop makes it too easy to build inaccessible treeitems. The icon does not have a sufficient hit target.

As suggested, there could be a corresponding style that TreeItem would apply instead of classes.iconContainer.  You seem decided on this point so I will not mention it anymore.

replaced by #20657


Icons acting strange?

Icons on V2.3
Link icon does not display anything at all (even on the docs website), star outlined actually displays star.

Take a look https://github.com/Semantic-Org/Semantic-UI/pull/6226

Any guesses on when this will be merged? And also, I'm not sure if this is causing the link icon to not appear (the bit about outlined icons breaking makes sense though)

Lots of the icons had the wrong unicode this is why they break, however the link icon is called linkify to get around the link variation.
The PR will possibly get merged sometime this weekend.

Many thanks @hammy2899


[Feature Request] Add ability to alternate between total time played + login time on Report Button

Hey there, this plugin is amazing for my use case. Thank you!
I really like having the total time played on the Report Button rather than as a floating widget, however, it's also very useful to have the normal Report Button plugin to tell me how long I've been logged in, for tracking things like random events, shooting star disintegration time and the 6-hour logout timer.
Would it be possible to add a feature to Time Played so that the Report Button timer can occasionally alternate between total time played and login time/time for current session? Either on an arbitrary interval (every ~10 seconds) or with an interval specified by the player.
Thank you again for this excellent plugin!

Glad you're enjoying the plugin :)
I think this is a good idea but I'm not sure it would actually look very good if implemented. Surely being able to cycle through multiple options on the report button plugin in general could be useful, but it would probably end up being more confusing to the user overall. Plus, there's a large amount of combinations of options that would have to be implemented - what if players want different report button options, like ticks since login or idle?
I'll keep thinking if there would be a decent UX for this, but for now probably just using both plugins together, and putting the widget near the report button is gonna be your best option.

Thanks, that makes sense. I already have a lot of widget clutter on my screen so I was excited to be able to reduce it a bit. I envisioned this as an option that would be disabled by default so it wouldn't create too much confusion for other users, but I see your point about wanting to cover all of Report Button's functionality.
That said I don't think the other Report Button display options really have the same player utility as "Login Timer" -- Date, UTC Time, Jagex HQ Time, Local Time are all accessible from out-of-game, so I don't think you'd need to replicate every combination of those.  I haven't actually encountered anyone who uses the "Game Ticks" option, I'm not sure where it'd be more useful than seeing that same info in minutes.
Idle Time seems like it could have a use case. But Login Timer connects to so many things (especially random events + idle logout warning) that I figured if you just supported one as an option that that would be the one to go for.
Thanks for considering it!


add Account domain and implement redux-saga

This PR is a kind a "rebase" of #238. The idea is to isolate the domain refacto + redux-saga from 2of2 multisig account logic .
Account domain

The idea is to wrap the IdentityInterfaces needed to (1) fetch utxos/txs and (2) sign transactions.
Explained in PR #238

Redux-saga

Redux saga allows replacing two middleware: redux-thunk and background-aliases (from webext-redux).
All asynchronous tasks are now managed by "sagas" (including the utxos and txs updater).
Thanks to saga, we can implement more complex logic (task cancelation or "worker pattern" for unspent updater).
I also noticed that saga is much more stable in the web extension context (saga runs in the background script).

Bug fix

fix the first address generation (I discovered that the problem comes from the edge case where lastUsedIndexes are -Infinity: now this is handled by the increment function in wallet reducer).

it closes #242
@bordalix @tiero please review

Please solve conflicts @louisinger

@louisinger if you have 1 L-BTC in your balance, and you try to send 1 L-BTC, without leaving room for the fees,  the extension crashes and it's not possible to get it back. I had to uninstall and install it again. Happens in Chrome and Firefox.

Looks like somehow we showing the name of asset instead of the ticker in the list.

Looks like somehow we showing the name of asset instead of the ticker in the list. @louisinger

This is fixed by the last commit. However, u need to reinstall in order to refetch the assets data where ticker = name.

on SEND_ALL the amount will be filled with comma. This seems to be OK-ish with transaction flow, although would be better to user dot as decimal separator always

I think the update mechanism is still awkward: I do need to "deep restore" to actually check correct balances.

main blocker for me for this change to go in is the "worst" performance for wallet with big utxo set, is arguably much more slower.
Should we try to "rollback" in this PR to the old way to fetch utxos from explorer (instead of new utxosFromTransaction) to prove what is slowing down?

Trying to SEND ALL a non featured asset it crashes and gets the extension stuck to blank page @louisinger
index.js:2 TypeError: Cannot read properties of undefined (reading 'precision')
    at mapPropsToValues (index.js:2:2977521)
    at i.render (index.js:2:2888228)
    at Ga (index.js:2:2551352)
    at Ha (index.js:2:2551151)
    at Ks (index.js:2:2592096)
    at QA (index.js:2:2578246)
    at wA (index.js:2:2578174)
    at BA (index.js:2:2578037)
    at pA (index.js:2:2575024)
    at index.js:2:2524696

I have some LCAD in my testnet wallet, in the errors of Marina I get that there was a network error.
Shouldn't we try again in next time we update?

I have some LCAD in my testnet wallet, in the errors of Marina I get that there was a network error.
Shouldn't we try again in next time we update?

I've added a periodic update used to check each asset of the utxos set every 60s. If the asset is unknown, marina will retry to fetch precision, ticker, and name from the registry.
Send all on "unknown" asset is also fixed.

still not clear how we would prevent browser runtime to kill the setInterval that redux-saga (may) use to do periodic updates

Solve conflicts @louisinger

Can you solve conflicts and help me in a final Q&A? @bordalix
I still find occasionally a problem to fetch asset hash for some reason, altough this commit https://github.com/vulpemventures/marina/pull/244/commits/5c4738e1c08973bca950e4b0ec83d1538e707843 should have fixed it (cliecking on marina logo will update also that)

I don't see any conflicts with master, but I do see this bug:

Click L-BTC then Receive and we have a blank page (bad)
Click Receive and then L-BTC and we see the QR Code (good)

Could be related: #277
cc/ @louisinger

@bordalix should be master already merged here?

@bordalix should be master already merged here?

It is, was in 2d4aef8 by @louisinger
I'm putting taxi REST on this to be able to try everything.

Issue: when I change network, it not refresh assets from taxi, so when I try to topup in testnet, it uses ce0 (USDt in mainnet) in taxi testnet, which obviously fail.
cc @louisinger

Please @bordalix  take over on this PR and try to fix where you see fit

With latest commit, it hangs (ie. keep loading) as soon I get in the choose fee screen

This happens with me when I'm sending a Tx to blockstream that:

Is using same inputs sent on previous Tx, or
Is sending the same Tx (same hash) that was previously accepted

Waiting for 2 minutes should work, since it gives time for previous Tx to confirm and Marina to update list of utxos and Tx.
Having said that, I will raise the HTTP error to the UI.

Waiting for 2 minutes should work, since it gives time for previous Tx to confirm and Marina to update list of utxos and Tx.

was the first tx I made since long time, yes raising the full explorer error would be best


Restore the pytest-httpbin package in tox.ini

The branch with the fix for HTTPS redirects is included in v1.0.1
See https://github.com/kevin1024/pytest-httpbin/releases/tag/v1.0.1

Codecov Report

Merging #671 (a2d6433) into master (cef85a4) will decrease coverage by 0.36%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #671      +/-   ##
==========================================
- Coverage   89.81%   89.45%   -0.37%
==========================================
  Files          26       26
  Lines        1738     1735       -3
  Branches      311      245      -66
==========================================
- Hits         1561     1552       -9
- Misses        141      147       +6
  Partials       36       36

Impacted Files
Coverage Δ

vcr/serializers/yamlserializer.py
80.00% <0.00%> (-20.00%)
:arrow_down:

vcr/stubs/httpx_stubs.py
95.87% <0.00%> (-2.07%)
:arrow_down:

vcr/migration.py
74.48% <0.00%> (-2.05%)
:arrow_down:

vcr/cassette.py
96.29% <0.00%> (-0.02%)
:arrow_down:

vcr/serialize.py
100.00% <0.00%> (ø)

vcr/stubs/compat.py
100.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Option to only post thread comment when errors are detected

Hey 👋🏼
I was wondering whether you would be willing to introduce an option to only post thread comments when some errors have been detected?
The "no errors found" message creates quite some noise as it always causes an email/notifcation to be sent. Especially after merging a PR (where all errors have been resolved), the subsequent run on main always triggers such a message.
Maybe some people fancy that, but it would be great to have an option to turn that behavior off (and, e.g., remove the previous thread comment if there are no more errors).

I was wondering whether you would be willing to introduce an option to only post thread comments when some errors have been detected?

There wasn't any "LGTM" comment before addressing https://github.com/cpp-linter/cpp-linter/issues/24 (in cpp-linter pkg v1.6.0). It would make sense to add a input flag to disable those (and restore previous behavior).
Personally I don't use the thread-comments feature because it is limited by the GitHub REST API (see #154 as an example that we can't currently solve). I think the only way to improve the feature is to spend money by hosting our own full-fledged GitHub Checks App or switch to bot-generated PR reviews (which also might yield duplicated comments without exhaustively crawling the PR thread's history).

the subsequent run on main always triggers such a message

You don't mention which events you use to trigger the cpp-linter-action. The push event does not have access to PR threads (as concluded in #154).

I suppose we could also just update an existing comment instead of deleteing any old cpp-linter comments and posting new ones... That should relieve your email inbox a bit, that may lead to the comment getting hidden in long PR threads.

This leads to cpp-linter adding a comment to commits after PRs have been merged. See, for example, https://github.com/cda-tum/mqt-core/commit/ba5244edbe3a5bbfb1c2609323b53d882fb8ca02#commitcomment-125027883
Although I guess that "problem" would also be solved by disabling the thread-comments feature, right?

You could also conditionally disable thread-comments for push events:
# only post comments for PR events
thread-comments: ${{ github.events_name == 'pull_request' }}

I suppose we could also just update an existing comment instead of deleteing any old cpp-linter comments and posting new ones... That should relieve your email inbox a bit, that may lead to the comment getting hidden in long PR threads.

I'd be fine with that. It's kind of how codecov handles it (at least in the default configuration). See https://docs.codecov.com/docs/pull-request-comments#behavior
They are essentially facing the same situation.

This leads to cpp-linter adding a comment to commits after PRs have been merged. See, for example, cda-tum/mqt-core@ba5244e#commitcomment-125027883
Although I guess that "problem" would also be solved by disabling the thread-comments feature, right?

You could also conditionally disable thread-comments for push events:
# only post comments for PR events
thread-comments: ${{ github.events_name == 'pull_request' }}

Thanks for the suggestion. Sounds reasonable!

BTW, I had begun work on a PR review feature but stopped when I realized that the clang-tidy suggestions couldn't be guaranteed to fit within the PR diffs... Couple that with clang-format suggestions (which might be duplicates based on the configured tidy-checks/style), and you get a headache. IIRC, the update vs replace situation would still apply to PR reviews.

We wouldn't be able to detect if a comment was deleted in the REST API, but this is another reasonable approach.
BTW, I had begun work on a PR review feature but stopped when I realized that the clang-tidy suggestions couldn't be guaranteed to fit within the PR diffs... Couple that with clang-format suggestions (which might be duplicates based on the configured tidy-checks/style), and you get a headache. IIRC, the update vs replace situation would still apply to PR reviews.

I totally understand that headache 🙃
What I get from the discussion here is that this issue might have revealed two areas for improvement:

having an option for not posting the LGTM comment if everything succeeded. Preferably, old comments could be deleted once everything looks good.
having an option to customize whether every run creates a new comment or updates an existing one.

Thanks for inquiring! This is being tracked by https://github.com/cpp-linter/cpp-linter/issues/34

PR cpp-linter/cpp-linter#35 still needs testing, but it should be the solution.

The changes have been implemented downstream (in python src pkg). We'll start the new release cycle (& testing) soon.

I've also found a way to fake a ternary operator in github action expression syntax:
      - name: Run linter as action
        uses: cpp-linter/cpp-linter-action@latest
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          # only update comments in a PR thread:
          thread-comments: ${{ github.event_name == 'pull_request' && 'update' || 'false' }}

Warning
This hasn't been tested yet... More info about the legitimacy of this approach found in this blog post. If this works in our testing, then the fake ternary operator will be added to the README example.

After some testing, the following value will work well to update existing comments on only PR threads:
thread-comments: ${{ github.event_name == 'pull_request' && 'update' }}

Using this approach will also prevent comments getting posted for commits (push events).

Also the new no-lgtm option defaults to true. Meaning, an outdated comment will be deleted if there are no problems to report. Users can set this to false to enable LGTM comments (as that was the intrusive default for v2.6.0 & v2.6.1).


Increase hitSlop and pressRetentionOffset for navbar buttons

This is an issue from react-navigation https://github.com/react-navigation/react-navigation/issues/287
As ide said in that issue, we could just increase the hitSlop in the header back button to make it easier to touch. I just looked at the current code and currently on iOS we're using margin to increase the touch area instead of using hitSlop.
https://github.com/react-navigation/react-navigation-stack/blob/106f1e74db6fa66b27f42d12648fe22d8741fd1b/src/views/Header/HeaderBackButton.js#L156
So that's another way to make the button easier to touch and I think it would make the implementation between android and iOS more consistent but that would also require a little more code.
What do you guys think?

@tienf4m @brentvatne Did you guys find any solution to increasing the touch area with current version of react-navigation?
We are currently having a similar issue where we only changed the back button image. Everything works properly on iOS, but on android the hit area is to small.

@JensDebergh - we'll be able to improve this on android on the next release of react-native-gesture-handler - with it we will change to using react-native-gesture-handler for the button (we have on ios already) but we had to old off temporarily because it didn't yet support custom ripple colors on android. then we can increase hitslop: https://github.com/react-navigation/react-navigation-stack/blob/master/src/views/TouchableItem.js#L57

@brentvatne Thanks for the heads up!
For anyone wondering how to get the same effect on android without completely overriding the headerLeft property of react-navigation.
I played around with margins on android to get the desired effect like so:

Add margins to headerBackImage to increase overall touch area of the back button on all platforms.

Add negative marginLeft for the same amount as the added margins on the backImage property.

Extract navigation options in a separate object for easy access throughout the app.

You'll have to fiddle around with those 2 values to get the desired result in your app. But we got it working on both android and ios with the same touch surface.
	headerLeftContainerStyle: {
		marginLeft: Utils.isAndroid() ? -8 : 0, <-- Pull image to the left for 8 pixels on android
	},
	headerBackImage: (
		<Image
			source={Images.icArrowBack16()}
			style={{
				width: 16,
				height: 16,
				tintColor: Style.color.trout,
				margin: Utils.isAndroid() ? 8 : 16, <-- Add margin to the image to increase touch area
			}}
		/>
	),

Closing in favor of #125


Real time 'GC'

It would be pretty neat if users could specify strict limits on GC - I have an exploratory implementation in this branch that lets users disable/enable the GC in a given scope, and I think there could be more added, mainly two things -

Users can specify the maximum number of items to collect within a limited scope
Users can specify the maximum time that can be spent collecting in a given scope

Since collections in one thread don't block collections in another, there are also some really cool things that could be done here in combination with the above. An idea I had is a system where GC work is offloaded to separate worker threads, or at least non real-time threads - This lets crossbeam behave like a pauseless GC that quickly reclaims memory and doesn't impose big throughput penalties on the real-time threads. I'm sure there are other things that could be done.
I'm not sure what a good, or even idiomatic rust api for something like this is. I doubt what I tried is. Maybe the scope api for scoped threads can also handle other scope-based attributes of crossbeam like real-time regions or limiting GC in a given scope.
Of course, crossbeam and the associated datastructures probably won't be suitable for hard real-time work, simply because jemalloc isn't hard real-time afaik. But it would be nice to get something close, at the very least something effective for soft real-time and latency sensitive programs.

FWIW, I'd love to expose functionality along these lines, as well as instrumentation for tracking GC, etc. Crossbeam is still quite experimental, so I'm open to landing early-stage APIs (perhaps under a feature flag) to gain experience.
The current heuristics around when to do a GC and so on are pretty arbitrary, though I did some basic testing with benchmarks to find the smallest local threshhold that didn't impose a performance penalty. I suspect there's a lot more room for experimentation there, as well.
I've never dug deep into GC/allocator customization myself, so maybe a good starting place is just to collect some of the useful ideas that have cropped up elsewhere, and see what makes sense to offer in crossbeam?

Now that I think about it more, I really don't like the API I put in that PR. Adding new features would probably require more, or at least more complicated macros which are kinda opaque and weird as opposed to normal code. I think something more along the lines of the scope api would be better and safer while avoiding macro shenanigans.
I think that the smallest thresholds possible without negatively affecting performance are good - being able to get simple concurrent memory management and avoid GC-like latency spikes is a huge advantage. Also, if these thresholds are adjustable, then users can change them if it actually affects their use.
I've looked at some literature (JVM options, RTJS, Azul JVM, library/software sources) and have some ideas for what could go in (not that all of this needs to) and what the upsides/downsides of such features are. In the below, I use application threads to mean threads that are doing useful work for the program and operating on the datastructures with crossbeam, real-time application threads as application threads with strict latency requirements, and GC threads to mean threads that purely do work for the garbage collector.
In a given scope, one might be able to control:

GC prevention: prevent (and re-enable) the GC. This can take many forms - one could simply skip all GC related activity, or migrate garbage to to global lists. There would need to be an option to force GC disabling (but not enabling!) so that a poorly behaved third-party library couldn't re-enable it and cause big latency spikes.
Dedicated GC threads: Cossbeam would create GC threads which take work directly from application threads and the global bag. This would lower overall throughput due to worse cache locality and hitting the multithreaded part of the allocator hard, but would allow real-time application threads to never have to use the GC. While needing more than one GC thread seems extreme, in the day and age of 40+ core x86 servers and 100+ core Arm/PowerPC servers, it's entirely plausible.
GC limits: Limit the amount of time spent in the garbage collector, or amount of items collected. Timing restrictions as opposed to completely disabling the GC would allow some of the work to be distributed into application threads as long as it didn't break time/usage limits.
Skipping the allocator: For a limited subset of cases, it might make sense to allow the GC to send freed memory chunks directly back certain writer threads, skipping the allocator overhead and getting better lock-freedom properties. There are ways of doing this with lock-free freelists/queues that involve none to few atomics for the consumers.

Also, in a given scope, user could optionally collect stats (global and local) on:

local GC frequency

of GC calls

statistics on number of operations per call
total time spent in GC
portion of Crossbeam time (time between participant enter/exit calls) spent in GC
latency statistics

And if if we really want to get fancy, we could enable some forms of logging although that seems maybe a bit out of the scope of this project.
This is more of a brain dump that claiming that Crossbeam needs the features - although I think that they are very, very attractive to people who want the benefits of a GC when writing multicore data structures and don't necessarily want to shell out tremendous amounts of money for specialized JVMs and possibly nonstandard hardware (+ the questionable throughput of most real-time jvms), while still bending over backwards to get the GC to fully cooperate.

I'm going to break this out into a few separate issues, since it's kinda hard to meaningfully discuss such a giant blob of different ideas.


How can i call refresh method from the parent component ?

I have a v-show in my parent component which show a loader waiting for an ajax call to complete.
When the ajax call is done i show my page containing the vue-slider.
So i have the exception for vue-slider on initialization, but how can i call the refresh method of vue-slider from the parent component ??

Solution on the document. https://github.com/NightCatSama/vue-slider-component#exceptions

Yeah but i didnt understand the solution is to multiple solutions that you described ? Or is it one big solution following those steps ?
So i need to set real-time to true after the v-show show the slider ?

Is not a step, it is a variety of choices.
The simplest can using v-if instead of v-show, or call the refresh method.

As i was asking in my title : how can i call refresh method then ???

https://jsfiddle.net/2xy72dod/80/

my bad.  :sweat_smile:

Great thanks i didnt know we could do that in Vue ! You did an awesome work with this component !


how to make import works

Hi, I have tried running example.py
but the error is
Traceback (most recent call last):
  File "example.py", line 3, in <module>
    from data_loader.data_generator import DataGenerator
ModuleNotFoundError: No module named 'data_loader'

How do you guys make the sibling package imports work? Are you using IDE to help you do that?

There is a stackoverflow about this, so this can be solved on our own.


List of Registration Statuses

Brett to provide a list of sites with the following Registration Statues

[ ] Decision Pending
[ ] Cancelled Record
[ ] Registered/Unprotected
[ ] Registry Candidate

Closed in favour of 552


Remove experimental

Plan is to go directly to official now so removing the experimental banner

this was implemented by another PR so closing this PR.


aur-sync: enable --provides by default

Having aur-sync ignore providers by default has caused enough confusion over time, let's enable it by default.
Closes #695

Test fails - I forgot to remove P from the short options.


React bindings:  component

I was checking out React Apollo to see what their API is like. They encourage a HoC approach, like so:
import React, { Component } from 'react';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';

// here we create a query opearation
const MY_QUERY = gql`query { todos { text } }`;

// We then can use the graphql container to pass the query results returned by MY_QUERY
// to a component as a prop (and update them as the results change)
const MyComponentWithData = graphql(MY_QUERY)(props =>
...
);

A similar API could be created for Redux Resource. @sprjr thought about something like this awhile back with a <Resource/> component. We shelved those discussions temporarily after we had come up with the getStatus and getResources methods, because those were lower-level tools that let us do what we wanted within connect's mapStateToProps.
My initial reaction after reading the Apollo docs is that we start by trying to mimic their API directly.
Imagine something like:
import React, { Component } from 'react';
import { resource } from 'react-redux-resource';

const MyComponentWithData = resource(REQUEST)(props =>
...
);

The question here is defining what REQUEST is. Low-hanging fruit requests would be something like:
{
  resourceName: 'books',
  resources: [24]
}

But what about if you need books, authors, and comments? And what about fetching lists based on some input? With GraphQL, mapping a query to a request is straightforward, because the query defines the request. Furthermore, my understanding is that it always defines a single request, so more complex queries don't cause many network requests.
For Redux Resource, we would need some way to map these input queries to what could possibly be multiple HTTP requests that your backend supports. This is a more difficult problem.
It could be that the single-input QUERY approach doesn't work for Redux Resource. A possibly-simpler idea could be:
import React, { Component } from 'react';
import { resource } from 'react-redux-resource';
import { fetchBooks, fetchAuthors } from './somewhere';

const REQUESTS = [
  fetchBooks({ searchByName: 'Game of' }),
  fetchAuthors({ id: 24 })
];

const MyComponentWithData = resource(REQUESTS)(props =>
...
);

Those methods there would be some common interface that we define, similar-ish to action creators but maybe a little different. Then, the component would receive the data in an array format.
Useful links:

graphql HoC source
graphql HoC docs (reads)
graphql HoC docs (writes)

Closing. This work will be tracked over in the React bindings repo.


Broken links in README

Hello, thanks for continuing to update this great dataset.
There are a few broken links in the README. The links pointing to http://nyphil.org/history/performance-history/help lead to a 404 error page. These links are in field reference table of the README, in the Description column for the Orchestra and eventType rows.
(Can't seem to link to line numbers in a Github .md file, would if I could.)

Fixed; please pardon the delay, and thanks for letting us know!


Order of test execution

Hi,
I got a very smple Maven project with the following two test classes
public class ATest {

  @BeforeSuite
  public void setPreserveOrder(ITestContext context) {
    System.out.println("context.getCurrentXmlTest().getPreserveOrder() = " + context.getCurrentXmlTest().getPreserveOrder());
  }

  @Test
  public void testA1(ITestContext context) {
    System.out.println("A1");
  }

  @Test(dependsOnMethods = "testA1")
  public void testA2() {
    System.out.println("A2");
  }
}

and
public class BTest {

  @Test
  public void testB1() {
    System.out.println("B1");
  }

  @Test(dependsOnMethods = "testB1")
  public void testB2() {
    System.out.println("B2");
  }
}

Given that according to documentation preserve-order is set to true by default, I expected to have

context.getCurrentXmlTest().getPreserveOrder() = true
A1
A2
B1
B2

but I got (whatever TestNG version I try)

context.getCurrentXmlTest().getPreserveOrder() = false
A1
B1
A2
B2

Removing dependencies between tests, I have the expected sequence A1, A2, B1, B2.
Having in @BeforeSuite the context.getCurrentXmlTest().setPreserveOrder("true") also make the sequence I expect.

Thanks for the report.
Maybe related to #288 and/or #271
What is very strange is the result of context.getCurrentXmlTest().getPreserveOrder() = false which is supposed to be true by default.

I agree that default value of preserverOrder seems wrong.
Digging in the question, there's no default value of group-by-instances mentionned in the documentation despite, setting it to true in before suite solves also the issue (except that BTest plays before ATest but that would be okay for me)

The default value for preserve-order is located here: https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/xml/XmlSuite.java#L193
But for an unknown reason, it is not used here:
https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/TestNG.java#L852

Issue indeed solved with 6.9.13-SNAPSHOT. Thank you @juherr and @cbeust


Unable to authenticate because the browser doesn't open

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
Latest - downloaded 9/13/2024
Regression From
Not sure, but I thought it was the latest
Architecture
i86
Storage Explorer Build Number
No response
Platform
Windows
OS Version
No response
Bug Description
The browser never opens for me to authenticate. I have uninstalled and reinstalled twice. I have tried switching the sign on to use the in-app authentication (instead of browser), but it doesn't do anything when I try to sign in.
How do I get the browser to open so that I can authenticate and log in?
Steps to Reproduce

Open ASE tool.
Select Sign in
Select Azure.
Wait for browser to open for authentication, but it never does.

Actual Experience

Open ASE tool.
Select Sign in
Select Azure.
Wait for browser to open for authentication, but it never does.

Expected Experience
I am usually already logged in to ASE when I open it, because I set it up months ago. Even though I try to re-set it up, it never allows me to get past the first screen.
Additional Context
I am trying to access our Azure repo so I can publish new help documentation. This is blocking me from my work.

Hi,
I had the same problem but was able to get around it by changing where the sign in happens:
https://learn.microsoft.com/en-us/azure/storage/common/storage-explorer-sign-in#changing-where-sign-in-happens

Thanks. Sadly, changing the sign in away from a browser did not work for me. I'm glad that it worked for you, though!

I also have a similar issue, tried all the different sign-in other places options to no avail.

Had the same issue after updating to 1.35.0.
Downgrading back to 1.31.2 solved my issue, so seems to be something in the new version.

Wow, thank you, @N3rdage!  That solved it for me! Yay!  (I even tried setting different browsers as default, but none worked)
In case anyone comes here due to this issue and wants to try the resolution of going back a version, you can download 1.31.2 here: https://github.com/microsoft/AzureStorageExplorer/releases/tag/v1.32.1

Do you have .NET 8 installed?

No, @craxal, I do not have .NET 8.

D'oh @craxal, just updated and it worked, thanks. 😊
Had been doing !C# development for a while and hadn't been keeping up with my .NET runtimes.

@Blackbaud-ColleenGutierrez .NET 8 became a requirement as of 1.34.0 (we mentioned it in our release notes). Funny, you should have gotten a prompt to install it when installing the Storage Explorer update. Try updating to see of that fixes your issue.
@N3rdage Very glad updating .NET unblocked you.

Woooo, I'm back in after updating to .NET 8. Thank you, @craxal !
(I did not, in fact, get prompted to update .NET)

Resolved with the update to .NET 8.


WIP

Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

@github-actions crossbow submit wheel-windows-cp312-amd64

I don't see where it would go, but you'll need to move the /nodefaultlib:libucrt.lib /nodefaultlib:libvcruntime.lib to linker options and add ucrt.lib vcruntime.lib there as well.
You might be able to keep them in CXXFLAGS and add -link before the linker args start, but I suspect that won't work through CMake. There's probably a separate variable that you just aren't using yet.

The current logs show:
cl : command line warning D9002: ignoring unknown option '/nodefaultlib:libucrt.lib'

I don't see where it would go, but you'll need to move the /nodefaultlib:libucrt.lib /nodefaultlib:libvcruntime.lib to linker options and add ucrt.lib vcruntime.lib there as well.
You might be able to keep them in CXXFLAGS and add -link before the linker args start, but I suspect that won't work through CMake. There's probably a separate variable that you just aren't using yet.

Hmm, ok. Well, as I said on the issue, then, the simplest is probably to keep the current build options and simply not bundle the DLL anymore.


swap link titles

The topics had each other's titles in the left Nav (ToC). A tweak to one of the titles to make it clearer what-all it does was also requested.

Agree, George, but that raises a few issues so I'm saving that for another day. Thanks for the reminder!


Unable to install with CUDA

Hi, I'm excited to use this package but unfortunately am having issues getting it working with CUDA. I am using a conda env and have followed the steps in the README related to that. My torch version is 1.11.0 and my cudatoolkit version is 11.3.1. My Python version is 3.8.13 on a Linux machine if that is relevant.
From a fresh environment:
conda install -c pytorch pytorch torchvision cudatoolkit=11.3
pip install torchsort

then if I try to use torchsort on a CUDA tensor, I get ImportError: You are trying to use the torchsort CUDA extension, but it looks like it is not available. Make sure you have the CUDA toolchain installed, and reinstall torchsort with pip install --force-reinstall --no-cache-dir torchsort to rebuild the extension. (which I have tried a few times now).
Any help in getting this working would be amazing! Thanks so much!

Hi @sachit-menon, I assume it is working alright on non-CUDA tensors?
In addition, are you getting any error messages when you install? If so could you share them?
In setup.py, it checks for the availability nvcc to determine whether to build the CUDA extension. Installing cudatoolkit like you have should do this (I think), but could you double check that you have the nvcc command available?

Hi @teddykoker , I suspect that's the issue! I have cudatoolkit installed but nvcc yields command not found -- my understanding (with help from a bit of Googling) is that cudatoolkit is only for runtime use and doesn't expose developer commands like nvcc. Could it be possible to check whether to build the CUDA extension another way? (The nvidia-smi command works for me, as a side note.)
I'm not getting any error messages at installation and CPU seems to work.

Ah that makes sense! nvcc (the CUDA compiler) is necessary for compiling the CUDA extension. It looks like there are a number of ways to install nvcc using conda (not sure which one is recommended, cudatoolkit-dev looks promising).

Progress! So after seeing that, I still ran into a few other issues, but I think (fingers crossed) I've worked them all out now. I'll describe them here with a summary at the end so you can add to the README since I think most/all conda users would face this now (unlike when the previous conda instructions were made).
So after you noted nvcc was required, I installed cudatoolkit-dev as you suggested. This resulted in a long and complicated error message, but at least it started trying to build with CUDA.
Within this mess it seemed to me that I had to install a particular version of gcc, instead of what conda now installs by default (I think when the previous README edit was made the default was suitable). So I instead installed version 9.4.0 which is less than 10 (the requirement in the error message).
Then when reinstalling, I found that the pip command given in #23 #29 #33 #44 results in a new build error, from a CUDA version mismatch. This comes from the fact that torch is reinstalled in that case with a build that may not match the user's CUDA version/the toolkit version. I found that I instead had to install torch first (as is typical), then modify the command to not re-install dependencies (which created a CUDA conflict loop).
So in summary, the modified steps are:

Install g++ with conda install -c conda-forge gxx_linux-64=9.4.0
Set export variable export CXX=/path/to/miniconda3/envs/env_name/bin/x86_64-conda_cos6-linux-gnu-g++
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/miniconda3/lib
pip install --force-reinstall --no-cache-dir --no-deps torchsort

This results in output matching what's described in the README, with a gradient for both functions.
x = torch.tensor([[8., 0., 5., 3., 2., 1., 6., 7., 9.]], requires_grad=True).cuda()
y = torchsort.soft_sort(x)

torch.autograd.grad(y[0, 0], x)
# (tensor([[0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111]],
#         device='cuda:0'),)

y2 = torchsort.soft_rank(x)
torch.autograd.grad(y2[0, 0], x)
# (tensor([[ 0.8000,  0.0000, -0.2000,  0.0000,  0.0000,  0.0000, -0.2000, -0.2000,
         -0.2000]], device='cuda:0'),)

(As a side note, I know this is the correct output but I was wondering if you have any straightforward intuition for why these are the gradients we get? Especially the ranking one is a bit confusing to me. Maybe not suitable for GitHub issues but figured I'd ask while I'm staring at it!)

Thank you for trying all of this! I updated the instructions in the readme to reflect your steps.
In terms of why these are the gradients we are getting, I think it is best explained with a simple example:
Lets say we have an array x:
x = torch.tensor([[5., 4., 3., 2., 1.]], requires_grad=True)

x would currently have a ranking of [[5., 4., 3., 2., 1.]]
Now lets say we wanted to minimize the ranking of the 0th element of the array, in this case the 5. What would you have to do to all of the numbers in x to minimize the ranking of the 5? Obviously there are two options:

Decrease the 5
Increase the rest of the numbers

So, it makes sense that the gradients with respect to the ranking of the 0th element would be positive for the 0th element, and negative for all other elements. We can see this in practice by performing gradient descent:
import torch
import torchsort
x = torch.tensor([[5., 4., 3., 2., 1.]], requires_grad=True)

for step in range(10):
    y = torchsort.soft_rank(x, regularization_strength=1)
    loss = y[0,0] # we want to minimize the ranking of the 0th element (and 0th batch)
    loss.backward()
    print("x:", x)
    print("x.grad:", x.grad)
    print("y:", y)
    print()
    with torch.no_grad():
        x -= x.grad
        x.grad.zero_()

x: tensor([[5., 4., 3., 2., 1.]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[5., 4., 3., 2., 1.]], grad_fn=<SoftRankBackward>)

x: tensor([[4.2000, 4.2000, 3.2000, 2.2000, 1.2000]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[4.2000, 4.2000, 3.2000, 2.2000, 1.2000]], grad_fn=<SoftRankBackward>)

x: tensor([[3.4000, 4.4000, 3.4000, 2.4000, 1.4000]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[3.4000, 4.4000, 3.4000, 2.4000, 1.4000]], grad_fn=<SoftRankBackward>)

x: tensor([[2.6000, 4.6000, 3.6000, 2.6000, 1.6000]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[2.6000, 4.6000, 3.6000, 2.6000, 1.6000]], grad_fn=<SoftRankBackward>)

x: tensor([[1.8000, 4.8000, 3.8000, 2.8000, 1.8000]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[1.8000, 4.8000, 3.8000, 2.8000, 1.8000]], grad_fn=<SoftRankBackward>)

x: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], requires_grad=True)
x.grad: tensor([[ 0.8000, -0.2000, -0.2000, -0.2000, -0.2000]])
y: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], grad_fn=<SoftRankBackward>)

x: tensor([[0.2000, 5.2000, 4.2000, 3.2000, 2.2000]], requires_grad=True)
x.grad: tensor([[0., 0., 0., 0., 0.]])
y: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], grad_fn=<SoftRankBackward>)

x: tensor([[0.2000, 5.2000, 4.2000, 3.2000, 2.2000]], requires_grad=True)
x.grad: tensor([[0., 0., 0., 0., 0.]])
y: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], grad_fn=<SoftRankBackward>)

x: tensor([[0.2000, 5.2000, 4.2000, 3.2000, 2.2000]], requires_grad=True)
x.grad: tensor([[0., 0., 0., 0., 0.]])
y: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], grad_fn=<SoftRankBackward>)

x: tensor([[0.2000, 5.2000, 4.2000, 3.2000, 2.2000]], requires_grad=True)
x.grad: tensor([[0., 0., 0., 0., 0.]])
y: tensor([[1.0000, 5.0000, 4.0000, 3.0000, 2.0000]], grad_fn=<SoftRankBackward>)

You'll see that with each step, there will be a positive gradient on the 0th element, and negative on the rest until the 0th element reaches a value less than the rest of the elements, giving it the lowest rank.
Hopefully this makes sense! Happy to answer any other questions (though just to be clear I am not the author of the original paper)

Hi, just wanted to say thanks so much for the great explanation, that makes a lot of sense now! I'm working to see if this fits my use case and am sure more questions will pop up as I'm doing that, appreciate your hard work on the library!

Great! Always happy to help :)


Fix phone number max length for Argentina

Argentina's phone numbers can be longer than 10 digits. In fact, any mobile number will be at least 11 digits, in the form of +54<PHONE_NUMBER>5.
Area code can be 3 or 4 numbers long, and the rest of the number is usually 8 numbers long.

This pull figures merged but in version 3.2.0 the error persist, min is 12 and max is 12, cloud you revert for the next version? thanks


Only add SSH Agent PostStart event if SSH key with passphrase is used

Currently, we are adding the init-ssh-agent-command-... postStart event unconditionally to all workspaces.
There are cases where this automatically-injected postStart event can actually cause the workspace to fail. For example, if a devworkspace contains a container component that uses a distro-less image where sh is missing, as described here.
We should instead only inject the init-ssh-agent-command-... postStart event if the SSH secret that will be mounted to the workspace pod actually requires a passphrase.
Short term solution
In the short term, we could check if there's an SSH secret with a predefined name git-ssh-key (that the Che Dashboard uses) in the workspace's namespace, and check if it has a passphrase. However, this solution creates a coupling between DevWorkspace Operator and the Eclipse Che Dashboard, as DWO does not actually enforce you to name your SSH secret git-ssh-key. Instead, it's only given as an example SSH secret name in the docs.
Long term solution
In the long term, echo'ing @l0rd's thoughts, we should revise how the automatic SSH passphrase injection is handled:

In general I think that https://github.com/devfile/devworkspace-operator/pull/1307 was a bad idea because there is a high risk to break existing workspaces (we just found 2 container images where the command failed, there may be more). And no matter the value of the new feature implemented, avoiding breaking existing workspaces should be the priority. Also we should avoid, at the DWO level, to modify a DW applied by a user. The dashboard does an automatic generation of DW, so why not adding the post start event there?

Some ideas:

Move all SSH agent functionality (creation of the SSH agent configmap script & the injection of the postStart event) to the Che Dashboard
Keep the SSH agent functionality in DWO, but have it enabled only when a devworkspace attribute is provided, e.g. controller.devfile.io/initialize-ssh-agent: true. The Che Dashboard could then add this attribute to devworkspace's when the user provides an SSH key that has a passphrase.

@l0rd BTW I was unable to pull the specific version of your distro-less image that does not contain sh unfortunately:
$ docker pull ghcr.io/l0rd/outyet@sha256:b83e158687d6cb3d7ae46382be1e4fbb8eb3572f3423a9c3c9beae6cd55cc0e8
ghcr.io/l0rd/outyet@sha256:b83e158687d6cb3d7ae46382be1e4fbb8eb3572f3423a9c3c9beae6cd55cc0e8: Pulling from l0rd/outyet
unsupported media type text/spdx+json

$ podman pull ghcr.io/l0rd/outyet@sha256:b83e158687d6cb3d7ae46382be1e4fbb8eb3572f3423a9c3c9beae6cd55cc0e8
Trying to pull ghcr.io/l0rd/outyet@sha256:b83e158687d6cb3d7ae46382be1e4fbb8eb3572f3423a9c3c9beae6cd55cc0e8...
Getting image source signatures
Copying blob e2ecab31c0f4 done   |
Error: writing blob: adding layer with blob "sha256:e2ecab31c0f45ca127dc34b63091f1e1dcad7cceedd6a3f140314bf3f55a4879"/""/"sha256:e2ecab31c0f45ca127dc34b63091f1e1dcad7cceedd6a3f140314bf3f55a4879": unpacking failed (error: exit status 1; output: archive/tar: invalid tar header)
exhausting input failed (error: archive/tar: invalid tar header)

@AObuchow, you are right. I got the same error. You can try with ghcr.io/l0rd/outyet@sha256:3ab91b5801ab2e2a6147cab5d4a959838d9318921298e84cf7b6d19a3359e496 if you like. But there is nothing special. It's an image for a go application built with ko, which is pretty common.


Support destructuring without let/const/var

let a, b;
{a, b} = {a: 1, b: 2};

is perfectly legal ES2015, but Flow doesn't like it:
destructuring.js:3
  3: {a, b} = {a: 1, b: 2};
            ^ Unexpected token =

Hrm, never mind, apparently parentheses are necessary:
let a, b;
({a, b} = {a: 1, b: 2});


internal/objects/service: refactor test

Refactors to check each Envoy service for an exact set
of annotation keys, rather than checking for the existence
and non-existence of a subset of annotations.
Signed-off-by: Steve Kriss<EMAIL_ADDRESS>

Thanks for the PR @skriss.


Create a client for Sublime Text

Hello! :smile_cat:
I'm a C++ developer, and I'm using Sublime Text 3 as my primary editor. I recently discovered this exciting project, and I must begin with a big Thank You for this amazing effort.
If I wasn't clear yet, I would like to bring cquery to Sublime Text :smile:.
For this purpose, I'll write here important information which should help you decide how to approach my request.
Introduction to Sublime Text 3
Sublime Text 3 is a text editor written in C++ at its core, and is easily hackable/extendable by using its well documented python API for plugin developers.
Currently, Sublime is pretty wide spread, and has an active (and very kind :stuck_out_tongue_winking_eye: ) plugin development community. Most of the plugins are available via Package Control, the official package manager.
Sublime Text as C++ IDE
Marketing itself as a text editor, Sublime does not focus on providing IDE-like features, but rather on simplicity of use and performance. As a result, most of the C++ oriented features are coming from external plugins, similarly to vscode.
However, Sublime Text's core (which is written in C++) is very efficient, and as such, plugin developers are encouraged to use it (via the python API) in order to complete their tasks. In other words, it is better to let Sublime to do the work for you, when possible, than doing it by yourself, since it will probably be more efficient.
Furthermore, it's worth noting that everything in Sublime Text supports fuzzy searching, which is a very powerful feature, that just as well, happenes efficiently.
Currently Available features/plugins
In order to give you a complete picture, I will write both the built-in features available to a new, registered, Sublime Text user (with the newest development build), and the "most feature rich" state which combines several plugins to achieve a more C++ IDE-like experience.

Core C++ Oriented Features (Sublime Text Build 3156)

Regex based syntax highlighting

Hashed Syntax Highlighting

GoTo Symbol Definition/Declaration/References - file wide and project wide
Snippets

Sublime Text's API Limitations
Most C++ Feature Rich Sublime Configuration - With External Plugins

Semantic Autocomplete, GotTo Declaration, Diagnostics, and Documentation on hover
Semantic GoTo Definition and Find All References
Include Paths Autocompletion
Documentation Generation
Debugger - untested

Note

Core C++ Oriented Features (Sublime Text Build 3156)
Regex based syntax highlighting
Sublime provides syntax highlighting using a custom regular expression engine, and supports both TextMate's .tmLanguage file format as well as as its own .sublime-syntax file format. The core syntax highlighting files are available at Sublime's Core Packages Repository.
Hashed Syntax Highlighting
As of build 3153, Sublime is able to draw different words with different colors based on their hash:

jsp (Sublime Text Developer): "A given word is assigned a color from a table based on the hash of its contents. This way most variable names etc are different colors, but the same name always has the same color."

GoTo Symbol Definition/Declaration/References - file wide and project wide
Sublime indexes the entire project internally, based on the regex syntax highlighting. After it finishes, it gives you the ability to either navigate to symbol's definition/declaration/references, and to search for symbols in the current file, and even project wide. This can be done both by keyboard shorcuts and by mouse hover.
 All symbols with the same name are being proposed (no context filtering, even by language!), which makes it harder to find the right symbol, and many symbols are left unrecognized due to the complex C++ syntax which can't be parsed entirely by using regex alone.
Snippets
Sublime's C++ default package provides some built in snippets for class, if/else, ifndef, namesapce, and such.
Sublime Text's API Limitations
Before I go on with external plugins, I would like to mention the limitations of Sublime's API:

There currently is no API for overrding a word's color, beside using a custom syntax highlighting file. Which means that there seems to be no way to make semtantic syntax highlighting.
There is no way to interfere with Sublime's internal symbols index. Which means that file and project wide symbol indexing must be handled at the plugin side.
Sublime has yet to provide an actual GUI API to create buttons, frames and such. The closest thing to it is the tooltip which supports HTML and CSS formatting (minihtml). This results in one of Sublime's top weakness - the lack of a good debugger/debuggig environment.

Most C++ Feature Rich Sublime Configuration - With External Plugins
Semantic Autocomplete, GotTo Declaration, Diagnostics, and Documentation on hover
Using the plugin EasyClangComplete, I have flawless semantic autocompletion of symbols (with snippets), triggered automatically when appropriate; Context aware GoTo Declaration (not definition); Real time diagnostics with inline decorations and popups; and documentation on hover, with a peek to the symbol's declaration.
This plugin is based on libclang's python bindings, and take as much information as it can from a single translation unit. That means, this plugin does not handle multiple translation units together, and does not provide project wide information.
Semantic GoTo Definition and Find All References
Using my own plugin, which is based on RTags, I implement anything that EasyClangComplete doesn't already give me. So far, I implemented GoTo Definition, Find All References, and Find Overrides of Virtual Method.
Include Paths Autocompletion
Using the plugin Include Autocomplete which is compile_commands.json aware.
Documentation Generation
Using the plugin DoxyDoxygen, I create and update code documentation with ease. It parses classes and function's signature and generates a documentation snippet in real time. Furthermore, it is able to update the documentation when the signature changes.
Debugger - untested
Using SublimeGDB it is possible to debug your C++ program. I havn't tried it myself yet but it seems to be a popular package that tries to make the best out of the poor GUI API that is currently available.
Note
There are more plugins and features which are relevant for a C++ developer which uses Sublime Text, but these are not related to cquery's abilities in any way, so there is no point to mention them here.
How can you integrate cquery into Sublime Text
I can think of two ways in which cquery can be integrated into Sublime Text. I would love to hear your thoughts about each of them:

Make it work with Sublime Text's LSP-client plugin (see #208).
Create a dedicated cquery client, which enables the use of its extra, non lsp-standard supported features (either from scratch, or by forking/copying code of the existing plugins).

Information Resources
Here are useful links to the best sources for information about Sublime Text:

Unofficial Documentation
Official Documentation
Official Forum
Myself :relaxed:

Does it worth the effort? Is it better than RTags?
As you can see, I got most of the stuff figured out already. But this project got me wondering whether I should stick with RTags, or switch to cquery.
cquery seems to bring everything in one package, like RTags. It looks like it is very actively developed, and you answer to issues very quickly (as opposed to RTags' developers), which is very important for me as a user. Moreover, cquery claims to be faster than RTags, and it supports LSP.
So I would like you to answer these questions:

Are there features that currently provided by RTags, which are not available with cquery at the moment?
Are there features that currently provided by cquery, which are not available with RTags at the moment?
How noticeable is the performance difference between RTags and cquery? Please refer to RAM usage, CPU usage, and time measurements.
What are the recommended hardware specifications for a good use of cquery? What is needed to get the true performance boost (you mention high cache usage, do you mean RAM usage)?

Thank you very much for your time,
I spent the entire day to write this to you :sunglasses:
Have a lovely week!

@papadokolos It would be really nice if you could create a client for Sublime Text.
I'm so excited to highlight the two new features in the https://github.com/cquery-project/cquery/releases/tag/v20180213 release
textDocument/definition in comments will search for the qualified identifier at point approximately in all symbols.
CXSymbolRole differentiates read/write references and Emacs lsp-mode assigns different colors for them. There are no other libclang users supporting this as it just landed in libclang yesterday!

Yes, a sublime client would be really nice. I tried it with LSP plugin, but had no luck.

It requires around six restarts of Sublime Text to make it work with LSP, but I can assure you that it does work, partially.
I managed to make it run the cquery server, and to communicate with it for diagnostics, auto-complete and goto-definition. But, unfortunately, it is unstable and sometimes behaves unexpectedly.

Could you share your LSP configuration, please? Thanks!

OK, I have it working and it is stable (Ubuntu 16.04). These are my user settings for LSP:
{
    "clients":
    {
        "cquery":
        {
            "languageId": "cpp",

            "command":
            [
                "/opt/cquery/build/release/bin/cquery",
                "--log-file=/var/log/cquery/cquery.log"
            ],

            "scopes":
            [
                "source.c",
                "source.c++",
                "source.cpp"
            ],

            "syntaxes":
            [
                "Packages/C++/C.sublime-syntax",
                "Packages/C++/C++.sublime-syntax"
            ],

            "initializationOptions":
            {
                "cacheDirectory": "/home/me/.cquery"
            }
        }
    }
}

Take care for cacheDirectory. Furthermore - in case you want to have a log file - make sure the folder for the log file is writable by you.

 But are you sure that it is working smoothly?
I, for example, have an issue with the diagnostics, which seems to always lag behind the current state of the file. For example, if a whole word causes a compilation error, only the first letter is marked. This gets fixed when I save the file.

@papadokolos There have been a lot of changes to cquery, it is likely that it works better now :)

I think there is some stuff we can optimize in the settings. I also saw that my code is checked while I'm writing. This is something I don't like. I should be informed about problems on save. Having a look in the log file I see much settings which can be changed through initializationOptions. I still have to invest some time into this.

I also saw that my code is checked while I'm writing.

Set diagnostics.frequencyMs to -1.
https://github.com/cquery-project/cquery/blob/master/src/config.h#L153


How to create custom Media Control?

If you have some example, please show it.
I tryed:
var element = document.getElementById('player');
var MyMediaControl = function () {
	this.template = function () { return 'hello'; }
	this.stylesheet = function () { return '#player { background: blue }'; }
}
var player 	= new Clappr.Player({
	'source' 		: src,
	'width'  		: 480,
	'height' 		: 240,
	'mediacontrol'	: MyMediaControl
});
player.attachTo(element);

or
Object.defineProperty(Clappr.MediaControl, "template", {
	get: function() { return 'Hello!' }
});
Object.defineProperty(Clappr.MediaControl, "stylesheet", {
	get: function() { return 'body { background: blue }' }
});

or
Clappr.MediaControl.prototype.template.source = 'hello';
Clappr.MediaControl.prototype.stylesheet.source = 'body { background: blue }';

But it is not working.
Thank you!
https://kangax.github.io/compat-table/es6/

Hi @mikeevstropov I think you can use this example to guide you.

@leandromoreira Thank you for answer. But i need edit player ui like template. It's tutorial real right way?

@mikeevstropov you can also (or at least should be able to):
var HelloWorld = Clappr.MediaControl.extend({})
// https://github.com/clappr/clappr/#control-bar-colors
  var player = new Clappr.Player({
    source: "http://your.video/here.mp4",
    mediacontrol: HelloWorld
  });

@clappr/core do you have any example of custom media control?

@leandromoreira Sorry for my bad eng.  But extend is not defined in MediaControl. I use video.js and videojs-contrib-hls plugin. But m3u8 stream with videojs is very bad solution for production (amazing huge busg). I try set my vjs payer template into Clappr.

Wow, it is not working too...
var element = document.getElementById( 'player' );

class MyMediaControl extends Clappr.MediaControl {
	get template() {
		return Clappr.template(
			`

					Where is this string??? Wtf?

			`
		)
	}
	get stylesheet () {
		return Clappr.Styler.getStyleFor(
			'.media-control-background { background: red }'
		)
	}
	constructor(options) {
		super(options);
	}
}

var player 	= new Clappr.Player({
	'source' 		: src,
	'width'  		: 400,
	'height' 		: 250,
	'mediacontrol'  : MyMediaControl
});
player.attachTo(element);

@mikeevstropov did that last example show any error on console log?

@leandromoreira No. http_://cp.moonplayer.ru/serial/e40589935fd708c44147d1339c0c53c5/iframe

You'll probably need to enable logging.
Clappr.Log.level(Clappr.Log.LEVEL_DEBUG);

On 16 Feb 2016, at 17:09, mikeevstropov<EMAIL_ADDRESS>wrote:
@leandromoreira No. http_://cp.moonplayer.ru/serial/e40589935fd708c44147d1339c0c53c5/iframe
—
Reply to this email directly or view it on GitHub.

Sorry should be setLevel
On phone

On 16 Feb 2016, at 17:09, mikeevstropov<EMAIL_ADDRESS>wrote:
@leandromoreira No. http_://cp.moonplayer.ru/serial/e40589935fd708c44147d1339c0c53c5/iframe
—
Reply to this email directly or view it on GitHub.

@tjenkinson Ok

No any ideas?

@mikeevstropov I think you need to enable log level to debug and see at console log.
Clappr.Log.setLevel(0);

var player  = new Clappr.Player({
    'source'        : src,
    'width'         : 400,
    'height'        : 250,
    'mediacontrol'  : MyMediaControl
});
player.attachTo(element);

@lucasmundim Yes, I did it yesterday. And i can't see any errors. I show it in last link.

@mikeevstropov what do you wan to do?

Create a new Media Control
Tweak the UI a little bit
Add buttons to it

@lucasmundim In my last example I was expecting in control panel will be a "Where is this string ??? Wtf?". Yes, I want to completely replace the control panel to my custom html.

@mikeevstropov I believe there's something wrong with your mediacontrol parameter.
Actually, the mediacontrol parameter should be an object containing either parameters to customize the media control colors, or a reference to an external implementation, like this:
var player  = new Clappr.Player({
    // ...
    mediacontrol: { external: MyMediaControl }
});

Let me know if this will work.

@leandromoreira about the missing extend in MediaControl class, I think we overlooked this. Only the plugin classes have the extend method. But even without the method being defined in MediaControl, Clappr exposes it in the Utils namespace, so the same could be done with:
var MyMediaControl = Clappr.Utils.extend(Clappr.MediaControl, {
  //...
});

should be an object containing

class MyMediaControl extends Clappr.MediaControl {
	get template()       { return 'DAMN!!!' }
   	get stylesheet()     { return 'body { background: red !important }' }
   	constructor(options) { super(options); }
}
var player 	= new Clappr.Player({
	'source' 		: manifest.data.media[2]['src'],
	'width'  		: that.cfg.width,
	'height' 		: that.cfg.height,
	'mediacontrol'  : new MyMediaControl
});
player.attachTo(element);

// !!! Cannot read property 'persistConfig' of undefined in media-control.js 71

and
var MyMediaControl = Clappr.Utils.extend(Clappr.MediaControl, {
	get template (){ return 'DAMN!!!!'; }
});

// !!! Cannot set property template of #<t> which has only a getter

=(

I have the same concerns as mikeevstropov, namely I would like to implement a custom mediacontrol but have the same errors as were reported. Is there a reason this issue was closed? Was there a resolution?The example on the home page doesn't work and if at all possible should be updated to a working example. Thanks ~

@jasonbodily I'm not sure why this issue was closed, but you're right, there are some issues with the examples using extend. I'll check the examples and fix what's broken with them.

Sorry. I closed this issue because I think what we have only one way to edit the Media control. We need work with source code.

@jasonbodily
var clapprTemplate = Object.getOwnPropertyDescriptor(Clappr.MediaControl.prototype, 'template');
clapprTemplate.get = function () {
    return Clappr.template(`<div>Tada!</div>`);
};
Object.defineProperty(Clappr.MediaControl.prototype, 'template', clapprTemplate);

Put it before create Clappr object.
Maybe it will be helpfull.

@mikeevstropov @jasonbodily the extend function has been recently fixed on 638965bc4523ae583710f7b94ee6b616e995832a. It was also added as a helper to the MediaControl class, so you can now do something like:
var HelloWorld = Clappr.MediaControl.extend({
  get template() { return '
Tada!
' }
});
var player = new Clappr.Player({
  source: "http://your.video/here.mp4",
  mediacontrol: { external: HelloWorld }
});

@towerz Wow! Thank you! We can close this issue.


All Addresses return Invalid Address

Just finished the sync, most transactions doesn`t show the values and the input addresses are Unparsed.
But the main problem is there every address i try to search return Invalid Address, i don't know what can be wrong.
Using:
bitcoind v0.17
the explorer link actually is:
http://bitcoinvalor.com.br:3001/insight/
Any tips?

Are you using  bech32 addresses? You fan disable them in bitcoin.conf
On Sat, Nov 17, 2018, 11:14 AM makeholer<EMAIL_ADDRESS>wrote:

Just finished the sync, most transactions doesn`t show the values and the
input addresses are Unparsed.
But the main problem is there every address i try to search return Invalid
Address, i don't know what can be wrong.
Using:
bitcoind v0.17
the explorer link actually is:
http://bitcoinvalor.com.br:3001/insight/
Any tips?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bitpay/insight/issues/976, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGCHKP13Y0xr3YJzE57Xm5tyMOda4GNks5uwBnGgaJpZM4YneAw
.

The problem seems to be the bitcoind version, it worked after i purged it and reinstalled bitcore alone.


adds test for fix for RT #126740, populates table caption property

requires rakudo fix for RT #126740 (rakudo PR #1303)

This needs a test for :caption(0).

OK that can be done lates


another test issue for automation

Describe the bug
another test issue for automation
Expected Behavior
another test issue for automation
Current Behavior
another test issue for automation
Reproduction Steps
another test issue for automation
Regression Issue

[ ] Select this option if this issue appears to be a regression.

Possible Solution
No response
Additional Information/Context
No response
neuronx-cc version used
another test issue for automation
Framework(s) and their versions used (JAX, PyTorch, etc..)
No response

closing issue


Global string for missing addresses

"--Not provided--" is a magic string that is copy/pasted a bunch. Use a global variable or another solution to remove this hack.

Context: it's used because we expect an address, as we do a first and last name.


sdlog2 python script usage is wrong.

The usage of the log analysis tool sdlog2_dump.py is stating that we should specify field using a dot '.' whereas it should be using underscore '_'.
eg. using this
python sdlog2_dump.py log006.px4log -t TIME -m TIME -m IMU -m SENS_BaroAlt,BaroTemp > log.csv
instead of this
python sdlog2_dump.py log006.px4log -t TIME -m TIME -m IMU -m SENS.BaroAlt,BaroTemp > log.csv
Best

Agreed, just spend an hour trying to figure out why the sdlog2_dump.py script wasn't working at all.
It's line 306 in the code where it specifies the separater between MSG name and the first FIELD name as "_"
I'm still not getting any actual data in the csv file output but at least now I get the header line.
Attached is the .BIN file I'm trying to convert to a csv

@DaveSprague  hi, Sorry to disturb you . but i am confused . the log download from QGC is ***.px4log . but it can not use to analysis . Is there any way to solve the problem?
thank u so much .

@DaveSprague


Clarification about exception safety

Hello,
Thank you for this article, it is a very interesting read that demonstrates very thorough work.
Unfortunately there's a claim that I'm unable to independently reproduce.
The article rates various implementations for a property called "exception safety", and states that implementations either leave the input unmodified, or may leave duplicated objects in the input.
In particular, the sort implementations of the C++ std are marked as not exception safe, which implies that they cause object duplication. This is a surprising result that the standard library would do this, because a tenet of C++ is to use move and copy operators when available, and avoid untyped bitwise copies.
Trying to replicate that result, this is not what I'm seeing for cpp_std_libcxx_stable at least.
I do see that the input is not preserved; it now contains "moved-out" items (nullptrs in the case of a unique_ptr), but it doesn't contain duplicated objects. Here's a link to a Godbolt with my experiment.
These two issues are very distinct, because the one I observe leaves the input in a "valid, but unspecified state", which is not amenable to UB if due diligence is taken, while object duplication of the input would necessarily cause UB by way of double free etc. "Exception safety" is generally understood as "an exception at a certain point in the program causes UB", not the stronger variant of "the input is left in its original state".
Unfortunately, as far as I can understand, the code of the benchmark only uses types that are trivially copyable; in C++ this can cause specialized codepaths to be used, which may duplicate elements of the input: these particular results are not generalizable to types that are not trivially (or at all) copyable.
Would you mind to augment the benchmark with results on non copyable types that would demonstrate the object duplication, or clarify in the text that no object duplication can occur in the sort implementations of the C++ standard library?
Additionally, in the interest of clarity, if the C++ standard library does not cause object duplication (for objects that are non-copyable), can you either enrich the rating for "exception safety" to distinguish between "will lead to UB" and the weaker "may not preserve the input", and also clarify that the article is using a stronger-than-usual definition of exception safety?
Apologies if there's anything I misunderstood or missed. Also, I understand that my quick attempt at reproducing your results might be insufficient, and that UB is an elusive beast that is not always easy to observe. Hence why I'm asking for a more reliable reproduction.
Again, thank you for your work on this article, which is in no way invalidated by this clarification request.

Hello,
Thank you for the detailed and rapid response, I appreciate you dedicating time to the issue I raised.
As a full time Rust developer that switched from C++ out of concern for the issues created by the lack of memory safety of the latter language, rest assured that I fully understand what you mean when you speak of the importance of handling developer errors gracefully. In short, "make the API hard to misuse", which I believe is an important tenet of Rust.
That being said, reusing the "exception safety" terminology has the unfortunate side-effect of leading people already aware of that terminology to believe that the article claims that some of the C++ implementations of the std provide no exception safety whatsoever. People in this category that don't simultaneously have a good knowledge of the guarantees provided by the C++ std may disseminate that claim that is stronger than what the article intended. People that know of both the exception safety terminology and the guarantees of the std on the other hand, might dismiss the article on that basis, which would be a shame because it contains good information and is the result, as you said, of a lot of work.
I took a look at the PR you opened, and while it makes it clearer that you're not using the common definition of exception safety, I think this obscures a little whether the individual algorithms that fail this property suffer from item duplications (insta UB in C++) or "merely" from moved out items (surprising but recoverable).
I agree that in spirit, the lack of this form of exception safety is already an issue that should be mentioned, but I also think it should definitely be separated from the lack of the other form of exception safety.
There exists accepted terminology in C++ to differentiate between forms of exception safety:

"lack of exception safety": for code that invoke undefined behaviour in the presence of an exception
"basic exception safety": for code that does not invoke undefined behaviour, does not create memory leaks, and leaves all inputs in a valid, but unspecified state ("moved out" objects are in at least a valid, but unspecified state). The std::sort implementations fall in this bucket.
"strong exception safety": for code that has basic + leaves all inputs in their original state. This is the exception safety you're discussing.

Here's a source explaining the terminology: https://arne-mertz.de/2015/12/levels-of-exception-safety/, it is also featured on the wikipedia article for exception safety.
So I feel that the shortest path to fully address my concern would be to:

Update the text on exception safety to clarify that you're considering strong exception safety, that basic exception safety also exists (the part about unique ptrs being duplicated occurs for code that don't uphold at least basic exception safety) and why.
Update the table to specify "strong exception safety"

Optionally, I would love knowing which algorithms in the list uphold "no exception safety", vs "basic exception safety", vs "strong exception safety", but that's additional work to determine which is which, so that's not needed for the purpose of clarifying what is said on exception safety, only for the purpose of making the article even more informative.
Thank you for your first PR trying to address my concern, I wrote this message in the hope of fully clarifying the matter.

PS:

In my opinion giving people a language with unwinding and then applying arbitrary rules, they lack any language level tooling to follow, like "but don't use it here" is an untenable position for users.

Fully agreed, but I think the argument that strong exception safety is needed, actually (especially in a language that is not memory safe, ignoring UnwindSafety in Rust is less of a concern and we can in general be satisfied with regular "panic safety"), will be better articulated in its own piece, although the arena example you linked is definitely one piece of evidence.
The fact that strong exception safety does not impede performance for sorting compared with basic exception safety  is a key take-away of your article that could be used in such a piece (although I'm unsure if it can be generalized to all situations).

I agree with the points you make. Especially re-using existing terminology to avoid confusion. I'm open to split the table into basic and strong exception safety. I'm not entirely sure how to test the sort implementations that don't support move only types. Maybe a temporary change to the FFIStringCPP type that is only used for this analysis, because a functional one would be un-fair in the comparison in my eyes, as it would force deep copies. Although that is a real consideration users would need to be aware of, that for example ips4o sorting std::string would create deep copies as it goes along. Alternatively one could add both kinds of strings, one with POD/string_view semantics and one with owning semantics. Alas doing so adds a lot of code I'm not too keen on supporting. Another question that arises when splitting into basic and strong exception safety, how does that affect the second kind of observation safety?

Although that is a real consideration users would need to be aware of, that for example ips4o sorting std::string will create deep copies as it goes along.

Yes I think it would make for an interesting footnote or even column in the table.

Another question that arises when splitting into basic and strong exception safety, how does that affect the second kind of observation safety?

Re-reading the section on the second kind of observation safety, I'm not 100% sure how it would be defined in the case where strong exception safety is missing. I see two possibilities:

take into account that some elements are moved, and apply observation safety only to elements that were in the original input. In that case my hunch is that the C++ std implementations would meet that requirement. Or,
forbid "moved out" elements for this property. Then the C++ std implementations, that don't have strong exception safety, fail these trivially as before

Actually, your questions raise a good point on the definition of strong exception safety I shared in my previous message.
Strong exception safety in C++ is often understood as "transactional semantics", where a failure due to an exception restores the object to its original state. That's even stronger that the guarantee you've been using, that all the original items are still in the container, but now in unspecified order and with the side-effects of the comparison functions applied to the items that were compared. So in this hyper strong definition of exception safety, the one you've been using is merely a special case of "basic exception safety" (where the input is in an arbitrary state; here, a specific one).
I still think your definition have value because "have all the original items in an unspecified order" is what I would intuitively expect of an interrupted sort routine. I'm just unsure how we should label it now...
Ack, are we back to the drawing board?

That's even stronger that the guarantee you've been using

I'm not sure that's true. You want the side-effects applied, otherwise you get direct UB https://github.com/emilk/drop-merge-sort/issues/23.

@dureuill as a short update. I've asked Klaus Iglberger for his opinion on the topic and am still waiting for feedback from him. I'd appreciate ideas from your side how to address the issue in the writeup. The original suggestion seems problematic to me.

Ah apologies @Voultapher, I ran out of time to work on this. I'll try to suggest something during the week. I think we can both be more explicit on what guarantees we consider and why, and keep the additions constrained.

In the absence of suggestions, I took it upon myself to update the section on exception safety. Feel free to open a PR if you disagree with the current wording.

Hello,
Apologies for leaving you hanging there. I put in the time to update the section in a way that fully resolves my concern in https://github.com/Voultapher/sort-research-rs/pull/24
Please feel free to merge it or ask for modifications.
Please do as


Split README.md so the change log is in a new Changelog.md file (Fixes #189)

Fixes #189
Add Changelog.md file

This change is

@luigilink I'm waiting for a word from @kwirkykat in issue #189 that this will just work when she does releases, or if they she has to change something in her end as well.
I do think we have touch this subject before, several months back, but I can't find where though.

Unless I hear something different from @kwirkykat by Tuesday I will review and merge this.

Reviewed 1 of 2 files at r1.
Review status: 1 of 2 files reviewed at latest revision, 1 unresolved discussion.

README.md, line 372 at r1 (raw file):

## Examples

Examples for use of this resource can be found with the System Center resources, such as **xSCVMM**, **xSCSMA**, and **xSCOM**.

This is and old text and is no longer correct.
I think we should replace this to something that say that the examples can be found in the Examples folder. What do you say?

Comments from Reviewable

Reviewed 1 of 2 files at r1, 1 of 1 files at r2.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

README.md, line 372 at r1 (raw file):
Previously, johlju (Johan Ljunggren) wrote…
> This is and old text and is no longer correct.
> I think we should replace this to something that say that the examples can be found in the Examples folder. What do you say?

Done.

Comments from Reviewable

Reviewed 2 of 2 files at r3.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable

Could you rebase this one, at least by tomorrow?
I will review and merge this tomorrow evening.

When you can my friend :smile_cat:

Reviewed 2 of 2 files at r4.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

README.md, line 372 at r1 (raw file):
Previously, luigilink (Jean-Cyril Drouhin) wrote…
> Done.

Done.

Comments from Reviewable

Reviewed 2 of 2 files at r4.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable


how to send file as attachment

Hi.
This works for me, I could send emails from automation runbook using sendgrid API, but how could I send attachment with email?
based on sendgrid API docs (https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html) I added additional section to JSON file but having error.
attachments = @(
@{
content = $base64String
filename = $filename
}
)
Error like this
Invoke-RestMethod : {"errors":[{"message":"Invalid type. Expected: string, given: object.","field":"attachments.0.conten t","help":"http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.content"}]} At line:60 char:13 + $response = Invoke-RestMethod -Uri https://api.sendgrid.com/v3/mail/s ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

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

ID: f3d18144-dd03-c659-f0a4-c0ab13d3d343
Version Independent ID: ecdcbda2-259f-4992-57d8-c448a3934011
Content: Send an email from an Azure Automation runbook
Content Source: articles/automation/automation-send-email.md
Service: automation
Sub-service: process-automation
GitHub Login: @bobbytreed
Microsoft Alias: robreed

@Rutikhal  Thanks for your comment. We are actively investigating and will get back to you shortly with an update.

@Rutikhal - To determine if the issue is caused by the runbook or not, copy your PowerShell script from the runbook editor and re-run locally (in PowerShell Interface) to see if you hit the same attachment error.
Are you aware of the size limitations with attachment payload when using SendGrid?

Also are there are specific error codes associated to the error you posted above which can help determine root cause? Here's a list of SendGrid's attachment error-codes for your reference.
If your issue is related to the attachment size, explore the option of using SendGrid's integration with Digioh service. This solution allows up to 2GB attachments.

May not be a bad idea to check in with SendGrid's support channel as this could be an API response exception that they are familiar with and can help you resolve.
Hope that helps.
We will now close this issue. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.

I am just wondering  that it could be nice to have on this doc page small example code  how to send not just body html in email, but some attachement, checked from your MS side. It will do easier process of using attachement and  troubleshooting.


How to know when crawl finished?

I didn't find on documentation how can we handle when the crawler finished.

Yeah, I'm running into this myself.  Crawler emits a urllistempty or urllistcomplete event only when catching a RangeError in getNextUrl.  For the moment, for testing, I'm only using the FifoUrlList, and I can see that the list maintained doesn't include any state after the page has been crawled.  I can see that there is an entry in the list for my example page and for robots.txt (404) but neither one is ever removed from the list.
Additionally, there's no way to clean up the list after processing is complete because you can only insert, upsert or get the next item in the list.
Even on my very simple test case, the process is sitting there waiting with a couple of items in the list that won't be removed.

@brendonboshell I'd be happy to send a PR, if you have a preference for how this will work, I haven't tested with Redis of DB lists yet, and want to get Fifo working first before distributing the processing (no point in running a bunch of Docker containers if they're just going to run perpetually).

Quick update here, I've just been trying to do this quickly, but I can't seem to delete, splice or update URL's (adding a separate processed property) in the Fifo list, as soon as it's queried again my changes haven't persisted.  The only thing I can think to do at the moment is to keep a separate list of all processed URL's, cross reference every few (5-10) seconds, and kill the process if all of the URLs in the Fifo list are equal to all of the URL's in the processed list.  I'm not sure how else these elements are supposed to be removed, I don't see any splicing or deleting happening in Crawler.js or the list classes.

The urllistcomplete event should tell you when the crawl is finished if you are not running in a distributed mode. Is there any issues with this not working?
For distributed crawling, the use case is almost always to have the crawling processes running indefinitely, since the crawl queue could be manipulated from other processes (either added by Supercrawler or elsewhere if you are using a custom UrlList). Not only that, but URLs are scheduled for a recrawl after 30 days (at least with RedisUrlList) so the crawl is never finished.

^ Please re-open/comment if the above does not answer your question.

I don't seem to have the option to re-open the ticket, but can definitely confirm that the FifoUrlList is not firing urllistcomplete, I'm using a shadow copy of the queue until I know that all pages have been crawled.
Unless I'm missing something entirely here and I need to be removing things from the queue manually.
I need to be able to stop processing once it's complete, transparently, I've got a Docker swarm handling the crawl until it's complete and autoscaling based on load.  If there's no load, the containers are shut down until load picks up and autoscaling takes over as necessary and those tasks start looking at the queue again.
I can do this right now with my shadow queue and the FifoUrlList, but would prefer to use Redis here if possible (but also had some other issues getting RedisUrlList to work locally, it looked at the first page, but then didn't continue, I haven't gone back to figure out what that was about.

Also, happy to contribute here wherever I can, let me know how you would like to address these issues and I can send a PR


Editing website content under "What are we about" section

Hello! i am a fellow gssoc'21 participant and I would like to fix a grammatical error in the content under the above mentioned section by replacing "having to write" by "writing" and many more errors. If you think that's a genuine documentation fix then please do assign the issue to me.

Give it a try. I'll check out the PR directly


Flutter analyze command shows an error when custom_lint is enabled in a big project using a container

When running flutter analyze with the custom_lint plugin enabled and the project is big, the command outputs:
Analyzing gallery...
Error from the analysis server: Could not start the VM service: localhost:46297 is already in use.
Error from the analysis server: Failed to start plugins

...{normal analyzer errors}

Despite printing those errors the analyzer seems to execute correctly.
To Reproduce
Fork this repository and run the analyze workflow: https://github.com/victorcatn/gallery/blob/customl2/.github/workflows/analyze.yml
Expected behavior
The analyze command doesn't output those two errors and shows only the normal problems.
I tried to reproduce the problem with a small project but the errors didn't pop. Maybe the analyzer must run for a while before the errors are shown.

custom_lint: ^0.3.2

🤔
In CI mode, it shouldn't even try to use vm-services. I'll look into it.

Having the same problem btw, also using custom_lint: ^0.3.2


Proposal: Coffee Meetup

Description:

This meetup is fueled by Meta Pool and Kaia Network. We will bring together tech enthusiasts, programmers, and community builders with a focus on blockchain, especially about Meta Pool and Kaia Network. Whether you're deep into blockchain, just dipping your toes in web3, or somewhere in between, this weekly meetup is your new go-to. We’re here to build, share ideas, and maybe even find your next collaborator. Grab a coffee, pull up a chair, and let’s build something great together!
Time: 09:30AM - 12:00PM on Sunday, 17th November
Location: Hầm Trú Ẩn Cafe (78 Ng. Trung Tiền, Khâm Thiên, Đống Đa, Hà Nội)

Bounty track:

Community

Here is the x link: https://x.com/kyle_dev_crypto/status/1858054140905271423

Approved and assigned 360 KAIA bounty for you.

Closing for payout


typo

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