feat(formatters): mentions

Please describe the changes this PR makes and why it should be merged:
This adds new mentions formatters to the library. You can now use userMention(), roleMention(), and channelMention().
Status and versioning classification:

I know how to update typings and have done so, or typings don't need updating
This PR changes the library's interface (methods or parameters added)
Code changes have been tested against the Discord API, or there are no code changes

Codecov Report

Merging #9 (53662e1) into main (de5fa82) will decrease coverage by 17.64%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##              main       #9       +/-   ##
============================================
- Coverage   100.00%   82.35%   -17.65%
============================================
  Files            1        1
  Lines           14       17        +3
  Branches         5        5
============================================
  Hits            14       14
- Misses           0        3        +3

Impacted Files
Coverage Δ

src/messages/formatters.ts
82.35% <0.00%> (-17.65%)
:arrow_down:

Continue to review full report at Codecov.

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

Also missing tests for this.

Also missing tests for this.

Sorry, forgot about that. I've wrote tests now.

This is missing tests for channels and roles.

Should I put the mentions tests within a describe("Mentions", ...) block like how it's done for the messages formatters?

Sure


Add option to upload file directly to folder via context menu

Verified on staging successfully. Now Upload item appears in parent and in all nested folders.
See also #368


v4 platform.is('cordova'); runs into a strange error if platform is not ready

Bug Report
Ionic Info
Run ionic info from a terminal/cmd prompt and paste the output below.
Ionic:
   ionic (Ionic CLI)          : 4.1.1 (/usr/lib/node_modules/ionic)
   Ionic Framework            : @ionic/angular 4.0.0-beta.5
   @angular-devkit/core       : 0.7.5
   @angular-devkit/schematics : 0.7.5
   @angular/cli               : 6.1.4
   @ionic/ng-toolkit          : 1.0.7
   @ionic/schematics-angular  : 1.0.5

Cordova:
   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.1.1
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.2, cordova-plugin-ionic-webview 2.0.0, (and 11 other plugins)

System:
   Android SDK Tools : 26.1.1 (/home/michi/software/android/sdk)
   NodeJS            : v8.11.1 (/usr/bin/node)
   npm               : 6.4.0
   OS                : Linux 4.15

Describe the Bug
Previously we was able to do a simple this.platform.is('cordova) or this.platform.is('mobile') without we had to wait until platform.ready() promise.
Now in beta5 doing is('mobile') does have no problems, but on doing the same thing for is('cordova') without waiting ready event runs into a strange error. Or better there is no error.
We do this in the constructor of a service, the service seems to break without showing an error and is not injected at all.
BTW:
there are also some breaking changes, you probably should document there are some platforms which we can not query anymore. But they are still documented in the angular provider https://github.com/ionic-team/ionic/edit/master/angular/src/providers/platform.ts
I created a PR #15371 where I removed and added platforms
From the other side I think you have also to add "capacitor" in the MAP and there is a last thing:
You removed mobileweb, but somethimes we would like to now if you are running APP from the browser on mobile, which honestly should be not really the same thing as a PWA. You can run a normal WEB build and open this in a browser, this information now is missing. right?

Hm, it seems also this.platform.is('mobile'); needs to wait for ready(); Previously this wasn't so.

We see only now, we are running into another error if we do the platform query after ready status
core.js:1673 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'includes' of undefined
TypeError: Cannot read property 'includes' of undefined
    at isPlatform (platform.js:20)

export function isPlatform(win, platform) {
    return getPlatforms(win).includes(platform);
}

getPlatforms(win) seems to be undefined

duplicate issue #15348 which is closed with beta.6


Add 'around' and 'aroundEach'

Right now, we can enhance our suites with before, beforeEach, after, and afterEach.
That ignores a whole class of helper function: those that temporarily modify global state. (You know they exist!)
For instance, take this CoffeeScript function:
withAnimationsDisabled = (code) ->
  x = jQuery.fx.off
  jQuery.fx.off = true
  code()
  jQuery.fx.off = x

I'd find value if Mocha would let me do this:
aroundEach(withAnimationsDisabled)

Without aroundEach or around, there's no way to use a function such as withAnimationsDisabled. You can test it, but you can't use it as a helper unless you write it in every test.
I feel that around and aroundEach promote good test suite hygiene, so I think Mocha should support them.
Precedents:

RSpec: around(:each) and around(:all): https://www.relishapp.com/rspec/rspec-core/v/3-0/docs/hooks/around-hooks
ScalaTest withFixture(): http://www.scalatest.org/user_guide/sharing_fixtures#withFixtureNoArgTest
Specs2 Around: http://etorreborre.github.io/specs2/guide/org.specs2.guide.Structure.html#Around

I know, I know, you can bend beforeEach and afterEach to come close to what aroundEach would do. But aroundEach is better:

aroundEach separates concerns. Every aroundEach can be independent of every other aroundEach. That's not the case with beforeEach and afterEach, which are often intertwined.
aroundEach implicitly does things in the correct order. If a beforeEach initializes 1. a database connection, and 2. some global variable pulled from the database, then code in afterEach sometimes needs to be written "backwards". (2. remove global variable; 1. kill database connection.) aroundEach makes the correct ordering the obvious ordering.
aroundEach provides a friendly interface for coding test helpers (like my withAnimationsDisabled example).

Of course, async support would be amazing. It seems straightforward, right?
I'd be happy to contribute lots of feedback and maybe some code, if this feature is a welcome one. I'm using Mocha for an integration-test suite, and it needs lots of this sort of helper (e.g., "create user / drop user").

@kwarunek @travisjeffery I need to implement something like Ruby's (database_cleaner)[https://github.com/DatabaseCleaner/database_cleaner], for sequelize. Can you suggest, how I can  wrap each test case in separate sequelize transaction without aroundEach?


abc.com:8000 works, but abc:80 doesn't

Hello!
I'm trying to add domain abc.com.
My conf looks like this:
upstream web {
  ip_hash;
  server web:8000;
}

server {

    location /static/ {
        autoindex on;
        alias /src/static/;
    }

    location / {
        proxy_pass http://web/;
    }
    listen 8000;
    server_name abc.com;
}

and it works.
However if I replace listen 8000 to listen 80 -- it doesn't. What am I doing wrong ?

You need to change few other things to make it work.

In Dockerfile you need to change

gunicorn mydjango.wsgi -b <IP_ADDRESS>:8000

to
gunicorn mydjango.wsgi -b <IP_ADDRESS>:80

In NGINX file:

upstream web {
ip_hash;
server web:80;
}
server {
    location /static/ {
        autoindex on;
        alias /src/static/;
    }

    location / {
        proxy_pass http://web/;
    }
    listen 80;
    server_name abc.com;
}

Huge thanks! It works!
I also had yo change 8000 to 80 in docker compose.


HHH-14392: Test case for CASE WHEN ... THEN ... END failing in @org.hibernate.annotations.OrderBy

Adding test case for https://hibernate.atlassian.net/browse/HHH-14392
NOTE THAT THE FULL TEST CASE CODE ISN'T REQUIRED. -> the code of methods setUp and testOrderByCaseWhen could be commented completely.
It is only required after fixing to test the bottommost, most complex @OrderBy example commented in the code above the teams relationship to show that the CASE WHEN ordering is working.

What needs to be done here?

Superseded by https://github.com/hibernate/hibernate-orm/pull/3895


Log messages in "--train" mode of zstd CLI outputs incorrect size for input file.

Note that for a 1.0 GiB file, it says sorting 1 files of total size 0 MB .... Full logs below.
davidlam-mbp:zstd davidlam$ du -sh myfile
1.0G    myfile
davidlam-mbp:zstd davidlam$ ./zstd --train ./myfile
!  Warning : nb of samples too low for proper processing
!  Please provide one file per sample
!  Avoid concatenating multiple samples into a single file
!  otherwise, dictBuilder will be unable to find the beginning of each sample
!  resulting in distorted statistics
sorting 1 files of total size 0 MB ...
finding patterns ...
!  warning : created dictionary significantly smaller than requested (0 < 112640)
!  consider increasing the number of samples (total size : 0 MB)
statistics ...
warning : could not compress sample size 131072
HUF_writeCTable errorSave dictionary of size 7 into file dictionary

From what I can tell in the code, we limit samples files to the first 128 KiB (https://github.com/Cyan4973/zstd/blob/master/programs/dibio.c#L113). Another note is that because of that 128 KiB limit, we will never output for a single file anything other than 0 MB. Should this log message be updated?

This one is a difficult issue.
zstd --train expects a serie of individual messages,
not a big concatenated version of them.
This is important, as it cannot guess where messages start within a big concatenated file.
Therefore, a single big 1 GB file for training is a bad idea.
The warning messages try to explain that. Apparently, it's not clear enough.
I'm also worried that this situation, providing the dictBuilder with a single big concatenated file, seems to happen very often. So users feel it's natural to provide it this way.
Not sure about what to do, how to educate, are there better possibilities, etc.

Therefore, a single big 1 GB file for training is a bad idea.
The warning tries to explain that. Apparently, it's not clear enough.

The warnings you mention is unrelated to the issue of the incorrect size in the log message though right?

It is.
Though it seems not clear enough.
When provided with a single sample, the dictionary builder will consider that, beyond 128 KB, dictionary will no provide any benefit. So it will stop analyzing the sample beyond that limit.
So it doesn't matter if the sample is 129KB, or 1MB, or 1GB, the builder will only take in consideration its first 128 KB.
That's because it believes the file is a single sample,
as opposed to a concatenation of multiple samples inside a single file.

thanks for explanation, so would the fix be to add a warning log message in https://github.com/Cyan4973/zstd/blob/master/programs/dibio.c#L102-L104, and change https://github.com/Cyan4973/zstd/blob/master/lib/dictBuilder/zdict.c#L515 to use KiB instead of MiB? I can send a pull request if so.

so would the fix be to add a warning log message whenever size is greater than 128 KiB

That would be too much.
There are valid cases where, among a serie of messages used as sample set, some of them are > 128 KB. In which case, it's valid to use only the first 128 KB to populate the sample set.
The real indicator is the number of samples.
A single file means a single sample, which is clearly too little to create a dictionary from.
Even 2 or 3 samples is really too low to build anything meaningful.
The current code generates a warning message as soon as nbSamples < 5 :
https://github.com/Cyan4973/zstd/blob/master/programs/dibio.c#L206
The main situation to avoid is the one you met, when all samples are provided concatenated into a single file. Main objective is to provide a clear warning message which explain users how the training mode is supposed to work (aka, one file per sample).
A more complex complementary solution could be to provide a way to split the big file into individual samples. I'm afraid it will introduce syntax complexities though, and there is no "universal" solution. Simply concatenating individual messages into a big file is bound to fail due to potential absence of a clean end / begin signal. It means the concatenating process is not trivial and will be impacted too. At which stage, it's questionable what are the gains compared to providing the samples as individual files.

I've changed a bit the text and behavior in case of dictionary building failure.
Hopefully, the new version (dev branch) helps clarity.

cool, thanks for your work!


allow text inside svg title tags

When rendering data inside SVG with D3 one can add
tooltips using the 'title' tag
Right now those title tags are rendered with empty text
and therefore the tooltip is not displayed
This fixes that
Proof of concept:

Before:

Now:

It would be very awesome if there is an official release to NPM so I can upgrade my dependency and use this changes

project is no longer maintained unfortunately


Upgrade to Spring boot 2.2.7

@DanielFran : thanks, I'll do the release of jhipster lib in 1 or 2 hours

@DanielFran : the release of jhipster 3.7.0 is done. Waiting maven central now: https://repo.maven.apache.org/maven2/io/github/jhipster/jhipster-dependencies/

oh, it seems already released, I'm doing the PR in main generator-jhipster


Support for IE 11

Hello,
at the moment, this component doesn't work in IE 11 also.
When I clicked on the calendar, the page become white immediately
Browser: IE 11
OS: Windows 7

https://github.com/dmtrKovalenko/material-ui-pickers/issues/94


Text sizes should use sp as unit, not dp

https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_barcode_scanning.xml#L33
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_main.xml#L120
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L36
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L55
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L73

https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_barcode_scanning.xml#L33

This is for easier UI work. Fixed text size make it easier for setting the background radius.

https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_main.xml#L120

We set this to dp intentionally due to the bottom area is small and the version information is not that important for common use cases.

https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L36
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L55
https://github.com/ailabstw/social-distancing-android/blob/8e4e761dc681a0a71a48c609f58c8b199c41c84f/SocialDistance/src/main/res/layout/activity_splash.xml#L73

Fixed.


From Label to User and Item column. What should I put in Item column?

Problem encountered on https://dotnet.microsoft.com/learn/ml-dotnet/get-started-tutorial/install
Operating System: windows
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.
So the steps is to download the wikipedia-detox data that has 2 columns: Sentiment and SentimentText. In the tutorial there is a Feature and a Label column however the latest GUI requests data for three columns:

What is the user and item column for?
To help your team as well and lessen issues that are just questions I would like to ask if you have a release notes or if it doesn't exist yet I suggest that it should be added.

Thanks,
Jan

Hello! It looks like you're using recommendation when trying to train on a sentiment analysis or text classification dataset. Please try training using Text Classification.
For recommendation- an example would be movie recommendations. So the column to predict would be the rating a user would give the movie. The user column would be an ID or name. The Item Column would be the movie id or name column.
Hope that helps!

Thanks for the recommendation on release notes. We'll make sure they're added to our github for the release.
Cheers,
Jake

Resolving this issue due to lack of activity. Please re-open if you're still hitting this issue and the workaround provided didn't fix it.


Error on install

What issue do you have? Please be as thorough and explicit as possible.
On installing the plugin I got this error:
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-11/bluetooth_hci_socket-0.5.3-11-node-v115-linux-arm.tar.gz
Details of your setup.

Do you use (1) Homebridge UI-X (2) Homebridge CLI or (3) HOOBS?
Homebridge UI-X

Which version of Homebridge/HOOBS do you have?
4.56.1

Which platform do you run Homebridge/HOOBS on (e.g. Raspberry Pi/Windows/HOOBS Box)? Please also mention your version of Node.js/NPM if known.
Raspberry Pi

Which version of this plugin (homebridge-govee) do you have? Has the issue started since upgrading from a previous version?
10.5.0

Which Govee devices do you have that are causing issues? Please include product models if applicable.
none yet

Please paste any relevant logs below.

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-11/bluetooth_hci_socket-0.5.3-11-node-v115-linux-arm.tar.gz

Same Problem here.
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-11/bluetooth_hci_socket-0.5.3-11-node-v108-linux-arm.tar.gz
Do you use (1) Homebridge UI-X (2) Homebridge CLI or (3) HOOBS?

(1) Homebridge UI-X

Which version of Homebridge

1.8.0

Which platform do you run Homebridge on ? Please also mention your version of Node.js/NPM if known.

Raspberry Pi, Node.js 18.20.2

Which version of this plugin (homebridge-govee) do you have? Has the issue started since upgrading from a previous version?
10.6.0 (Error appeared also in earlier Versions)
Does anyone has a solution for this? There is one more Plugin with the same error that I need ...


[ENHANCEMENT] DeveloperNetworkPolicy: namespace-scoped part of NPv2

Is your enhancement request related to a problem? Please describe.
I want to have the next generation of NetworkPolicies for Application Developers as an addition to Admin-focused APIs.
Describe the solution you'd like
I would like to create a new API object for Application Developer Network Policies, based on a new set of user stories that will be outlined in an NPEP
Describe alternatives you've considered
Keep using NetworkPolicy/v1 :)
Additional context
https://docs.google.com/document/d/10L9_ZV7nmabObFSKs4rR_t8ATtOTBPwsZKKSB6GFYp0/edit

/remove-lifecycle stale

/remove-lifecycle stale


Enhancement: Stage Positioning Debug (not the characters)

Please check for duplicates or similar issues before creating this issue.
no
What is your suggestion, and why should it be implemented?
there is already a stage positioning debug menu (avaiable in debug build) but its only for the characters, so a stage positioning for the actual stage elements (like floor, wall or some shit) would me awesome because set stage elements position SUCKS

LOL this is already a thing, press Shift in the stage debugger to toggle between characters and objects.


Let's log some unicode

https://github.com/nortxort/pinylib/blob/master/pinylib.py#L63
fh.file_writer(path, file_name, msg.encode('ascii', 'ignore'))
Currently any unicode is just left out.
Let's log that too aye?
fh.file_writer(path, file_name, msg.encode(encoding='UTF-8',errors='ignore')
Confirmed working under Linux, should be fine for Windows as well.

[aida@programmerfag pinybot-master]$ cat files/logs/awkwardlysocial/logs/2016-08-24_awkwardlysocial.log | grep aida
[14:45:24] [joins] guest-54301:54301 changed nick to: aida
[14:45:31] enzo: sup aida
### Before UTF-8 encoding
[14:45:37] [users] aida: !syncuser aida
[14:45:39] [users] aida: !yt DN "bonnie & clyde
[14:57:32] [joins] Joins Moderator aida:54301:ccpd
### After UTF-8 encoding
[14:57:56] aida: DΞΔN
[14:57:57] [users] aida: !yt DΞΔN
[14:57:59] [users] aida: !stop
[15:07:14] aida: ¥	¼	Ñ	ñ
[15:07:18] aida: Ą	ą	Ĳ	ĳ
[15:07:22] aida: Ə	Ɛ	ƕ	ƺ
[15:07:28] aida: ɖ	ɞ	ɫ	ɷ
[15:07:33] aida: ʱ	ʬ	˕	˨
[15:07:37] aida: o̕	o̚	ơ	o͡o
[15:07:41] aida: Ύ	Δ	δ	Ϡ
[15:07:47] aida: Љ	Щ	щ	Ӄ
[15:07:53] aida: ؟	ب	حٍ	۳
[15:07:57] aida: ߄	ߐ	ߋ	߹

I want to be able to ban unicode PM spam so very much. Not knowing what the spam contained was a problem.

@Technetium1 , I think what is essential when banning unicode in particular is the raw unicode number. I mean just for example saying if '╚' in msg: self.send_ban_msg(self.user.nick, self.user.id) might not be enough. We want to produce a small catalog (if you intend on banning someone who sends a particular unicode symbol.
So ╚ would be equal to sending u'\u255A' in python.

@GoelBiju is there a site in particular you use for finding the python equivalents?

@Technetium1 , most of the time I have consulted file format infounicode section to find the python equivalents, along with their HTML codes (plus equivalents for other languages). I would try it in a Python IDE before implementing it.

All-in-all, like @Autotonic said, it is worthwhile for @nortxort to think about rendering unicode and writing it to the log file for reference.

@Technetium1 use http://graphemica.com/
Can copy and paste the character into the search, scroll down and there is a "Python: " bit.

Thanks @GoelBiju and @Autotonic!

This has been added now. Thanks @Autotonic


MTP-1513 speed up circle ci

I'd agree that some of the commit messages that have been squashed should be more descriptive. The purpose/business justifcation in full can be found via the Jira ticket id prepended to the commits.


fs2 streams?

Is it possible to replace scalaz streams with fs2 streams, considering that many libraries are now moving toward the cats/fs2 ecosystem?

:+1:

@rossabaker was looking into this a little while back, but im not sure where it ended up.

I put that on the backburner because the version of fs2 that everybody is using is a milestone and we don't have a great milestone story ourselves.  I would like to move on this when fs2-0.10 is released, which is expected after cats-1.0.

https://github.com/Verizon/knobs/pull/57

Fixed by #57.


Improving performance with custom input VectorSpace

Some overheads remain, but the Theano part is faster in PyLearn2 than Lasagne.
Closes #26.

Coverage decreased (-0.1%) to 99.9% when pulling e94832c97227634cd6466393e1eb557a2a67a419 on profile into f472e113cad1d9acc16edec25def328e5e935ec9 on master.

Coverage remained the same at 100.0% when pulling e2f50e8bef807471db86b8508fc2bf3ee75ca6cb on profile into f472e113cad1d9acc16edec25def328e5e935ec9 on master.

Coverage remained the same at 100.0% when pulling 9d88196f37757f26dde89bdb5430d76cc4b96fd3 on profile into f472e113cad1d9acc16edec25def328e5e935ec9 on master.

Coverage remained the same at 100.0% when pulling d72ccf95ac02d3ec796193e529acc957622b0d4a on profile into f472e113cad1d9acc16edec25def328e5e935ec9 on master.


Ukkonen's Algorithm (Substrings) in C, C++, Python and Java

Is your feature request related to a problem? Please describe.
Yes, my feature request is related to a problem. I would like to implement Ukkonen's algorithm using C, C++, Python and Java languages.
Ukkonen's algorithm is a method of constructing the suffix tree of a string in linear time. Suffix trees are useful because they can efficiently answer many questions about a string, such as how many times a given substring occurs within the string.
Describe the solution you'd like
I would like a solution that provides an implementation of the Ukkonen's algorithm using C, C++, Python and Java languages.
I would like to work on this issue under SSOC 2023. Please assign it to me.

Assigned!
@Trisha-tech : C, C++, Java & Python

@Trisha-tech what is your status on this issue?

as this issuse is prolonged if trisha is not doing this code than @Kumar-laxmi  can you assigned it to me

Hey @Aarsh30, I am working on this issue and will raise the PR within 2-3 days.


API Review: should IResettableService.ResetStateAsync() return ValueTask

Currently IResettableService.ResetStateAsync() returns ValueTask since the one place we need an async path is in RelationalConnection where we use it to async dispose the DbConnection and the DbTransaction:
public virtual async ValueTask DisposeAsync()
{
    if (CurrentTransaction != null)
    {
        await CurrentTransaction.DisposeAsync();
    }
    ClearTransactions(clearAmbient: true);
    if (_connectionOwned
        && _connection != null)
    {
        await DbConnection.DisposeAsync();
        _connection = null;
        _openedCount = 0;
    }
}

So there are no async paths that this uses that call any Task returning async methods.

Make it Task

Note that I checked, and ValueTask.AsTask() doesn't allocate if the ValueTask is completed (it just returned Task.CompletedTask. So there's really no loss of perf in returning Task here instead of ValueTask, and a better API being exposed.

Note: #16761 also adds a cancellation token to IResettableService - resetting isn't the same as disposing, so it seems like the general logic of having a token should hold (and it also calms down our API consistency tests).
/cc @divega

@roji is cancelling the reset meaningful?

I admit I only added this after the API consistency tests raised an error, and I hesitated about this for a while. The general practice seems to be to always allow async operations to be cancellable by default, except for some very specific cases, such as the DisposeAsync pit of failure. That specific pit of failure doesn't seem to exist here, so there's at least no strong reason not to make it cancellable.
Here's a (very) theoretical case where this could be useful. We currently reset DbContext's services sequentially, one by one. This in theory could be done in parallel with Task.WhenAll (although if services are expected to use the same connection resource, that would be a big bug). In this scenario, if one of the services throws an exception (i.e. failed to reset), we should issue cancellations on the others before discarding the poolable context.
Basically it's about IResettableService being a public abstraction, so we're not sure exactly where it will end up. If you have strong feelings against this (especially if you see some pit of failure) we can revert.


fix(Table): colspan of empty and loading is wrong when selection enabled

If you use the selection, the number of columns of the empty and loading slot is wrong.

You're right, that would be the same

Thanks 😊


Unable to enable non-public members in nested dictionary mapping.

    public class Pet
    {
        public string Name { get; set; }
        private string Color { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var config = new TypeAdapterConfig();
            config.ForType<IDictionary<string, object>, Pet>()
                .EnableNonPublicMembers(false);

            var pet = new Dictionary<string, object>() { { "Name", "Fluffy" }, { "Color", "White" } }.Adapt<Pet>(config);
        }
    }

If you change EnableNonPublicMembers to true it will make both members null. I believe the correct behavior would be to return an instance of Pet with both Name and Color initialized with their respective values.

Please annotate with [AdaptMember] for now. EnableNonPublicMembers will apply private lookup to both Pet and IDictionary. And this make Mapster lookup IDictionary private members rather than dictionary keys.

This is another way
 var config = new TypeAdapterConfig();
config.ForType<IDictionary<string, object>, Pet>()
                .IncludeMember((member, side) => side == MemberSide.Destination &&
                                                 member.Info is PropertyInfo &&
                                                 member.AccessModifier == AccessModifier.Private);

I will close this issue since there is workaround.


Gem handling

Would it be/is it possibe to handle gems?
E.g pour out into gem cast if ore dict is gemXXX for example?

That would be good, wouldn't it.  I believe this would be possible and will get it added ASAP.

👍 Would be super usefull thanks.

I have added this to version 0.1.6, which is available for MC 1.8.9!!


Docker container restart causes data loss

Hi folks,
I realise that ye may not own the docker image for influx but I wanted to note my issue here in case it is a bug (or feature) in influxdb itself.
Given a running container, when I restart, original data plus any new data written is lost. I think this might be an issue with naming. The names I am using for my measurements are:
role:foo,cmd:bar
role:a,cmd:b
These names represent 'messages' in my system. When I create and write to these there is no issue. However if I restart the container following is now listed.
role:foo/
role:a/
Any further writes after the restart don't cause an error (it looks like they write fine) but are not present in the system. Any previous data has been lost.
I am using the tutum/InfluxDb image @0.9.
My first instinct is that the comma in the name is causing the issue, it doesn't however create an issue if the db is a fresh container. As a note, I will most likely change my measurement names to
role:foo_cmd:bar
role:a_cmd:b
regardless of this issues, as they are easier to read.
Am I correct in thinking data should persist across container restarts?

Can you show us the config that it starts up with?  Measurement names have no affect on if the data stays around or not.  Also, if you could show us your retention policies.  I suspect that maybe the system is starting up by storing the data files in a tmp directory, or retention policies are truncating your data (those are the most likely).  I would like to rule those out first.

@corylanou Thanks for such a quick response.
I don't do anything special with config or retention policies. I use the defaults (I'm more than happy to change these if needed, although I'll have to figure out how to do it in the context of a container)
When the container starts it dumps the following:
 influxdb configuration:
influx_1        | ### Welcome to the InfluxDB configuration file.
influx_1        |
influx_1        | # Once every 24 hours InfluxDB will report anonymous data to m.influxdb.com
influx_1        | # The data includes raft id (random 8 bytes), os, arch, version, and metadata.
influx_1        | # We don't track ip addresses of servers reporting. This is only used
influx_1        | # to track the number of instances running and the versions, which
influx_1        | # is very helpful for us.
influx_1        | # Change this option to true to disable reporting.
influx_1        | reporting-disabled = false
influx_1        |
influx_1        | ###
influx_1        | ### [meta]
influx_1        | ###
influx_1        | ### Controls the parameters for the Raft consensus group that stores metadata
influx_1        | ### about the InfluxDB cluster.
influx_1        | ###
influx_1        |
influx_1        | [meta]
influx_1        |   dir = "/data/meta"
influx_1        |   hostname = "localhost"
influx_1        |   bind-address = ":8088"
influx_1        |   retention-autocreate = true
influx_1        |   election-timeout = "1s"
influx_1        |   heartbeat-timeout = "1s"
influx_1        |   leader-lease-timeout = "500ms"
influx_1        |   commit-timeout = "50ms"
influx_1        |
influx_1        | ###
influx_1        | ### [data]
influx_1        | ###
influx_1        | ### Controls where the actual shard data for InfluxDB lives and how it is
influx_1        | ### flushed from the WAL. "dir" may need to be changed to a suitable place
influx_1        | ### for your system, but the WAL settings are an advanced configuration. The
influx_1        | ### defaults should work for most systems.
influx_1        | ###
influx_1        |
influx_1        | [data]
influx_1        |   dir = "/data/db"
influx_1        |
influx_1        |   # The following WAL settings are for the b1 storage engine used in 0.9.2. They won't
influx_1        |   # apply to any new shards created after upgrading to a version > 0.9.3.
influx_1        |   max-wal-size = 104857600 # Maximum size the WAL can reach before a flush. Defaults to 100MB.
influx_1        |   wal-flush-interval = "10m0s" # Maximum time data can sit in WAL before a flush.
influx_1        |   wal-partition-flush-delay = "2s" # The delay time between each WAL partition being flushed.
influx_1        |
influx_1        |   # These are the WAL settings for the storage engine >= 0.9.3
influx_1        |   wal-dir = "/data/wal"
influx_1        |   wal-enable-logging = true
influx_1        |
influx_1        |   # When a series in the WAL in-memory cache reaches this size in bytes it is marked as ready to
influx_1        |   # flush to the index
influx_1        |   # wal-ready-series-size = 25600
influx_1        |
influx_1        |   # Flush and compact a partition once this ratio of series are over the ready size
influx_1        |   # wal-compaction-threshold = 0.6
influx_1        |
influx_1        |   # Force a flush and compaction if any series in a partition gets above this size in bytes
influx_1        |   # wal-max-series-size = 2097152
influx_1        |
influx_1        |   # Force a flush of all series and full compaction if there have been no writes in this
influx_1        |   # amount of time. This is useful for ensuring that shards that are cold for writes don't
influx_1        |   # keep a bunch of data cached in memory and in the WAL.
influx_1        |   # wal-flush-cold-interval = "10m"
influx_1        |
influx_1        |   # Force a partition to flush its largest series if it reaches this approximate size in
influx_1        |   # bytes. Remember there are 5 partitions so you'll need at least 5x this amount of memory.
influx_1        |   # The more memory you have, the bigger this can be.
influx_1        |   # wal-partition-size-threshold = 20971520
influx_1        |
influx_1        | ###
influx_1        | ### [cluster]
influx_1        | ###
influx_1        | ### Controls non-Raft cluster behavior, which generally includes how data is
influx_1        | ### shared across shards.
influx_1        | ###
influx_1        | [cluster]
influx_1        |   write-timeout = "5s" # The time within which a write operation must complete on the cluster.
influx_1        |   shard-writer-timeout = "5s" # The time within which a shard must respond to write.
influx_1        |
influx_1        | ###
influx_1        | ### [retention]
influx_1        | ###
influx_1        | ### Controls the enforcement of retention policies for evicting old data.
influx_1        | ###
influx_1        | [retention]
influx_1        |   enabled = true
influx_1        |   check-interval = "10m0s"
influx_1        |
influx_1        | ###
influx_1        | ### [admin]
influx_1        | ###
influx_1        | ### Controls the availability of the built-in, web-based admin interface. If HTTPS is
influx_1        | ### enabled for the admin interface, HTTPS must also be enabled on the [http] service.
influx_1        | ###
influx_1        | [admin]
influx_1        |   enabled = true
influx_1        |   bind-address = ":8083"
influx_1        |   https-enabled = false
influx_1        |   https-certificate = "/etc/ssl/influxdb.pem"
influx_1        |
influx_1        | ###
influx_1        | ### [http]
influx_1        | ###
influx_1        | ### Controls how the HTTP endpoints are configured. These are the primary
influx_1        | ### mechanism for getting data into and out of InfluxDB.
influx_1        | ###
influx_1        | [http]
influx_1        |   enabled = true
influx_1        |   bind-address = ":8086"
influx_1        |   auth-enabled = false
influx_1        |   log-enabled = true
influx_1        |   write-tracing = false
influx_1        |   pprof-enabled = false
influx_1        |   https-enabled = false
influx_1        |   https-certificate = "/etc/ssl/influxdb.pem"
influx_1        |
influx_1        | ###
influx_1        | ### [[graphite]]
influx_1        | ###
influx_1        | ### Controls one or many listeners for Graphite data.
influx_1        | ###
influx_1        | [[graphite]]
influx_1        |   enabled = false
influx_1        |   bind-address = ":2003"
influx_1        |   protocol = "tcp"
influx_1        |   consistency-level = "one"
influx_1        |   separator = "."
influx_1        |   database = "graphitedb"
influx_1        |
influx_1        |   # These next lines control how batching works. You should have this enabled
influx_1        |   # otherwise you could get dropped metrics or poor performance. Batching
influx_1        |   # will buffer points in memory if you have many coming in.
influx_1        |
influx_1        |   # batch-size = 1000 # will flush if this many points get buffered
influx_1        |   # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
influx_1        |   batch-size = 1000
influx_1        |   batch-timeout = "1s"
influx_1        |   templates = [
influx_1        |      # filter + template
influx_1        |      #"*.app env.service.resource.measurement",
influx_1        |
influx_1        |      # filter + template + extra tag
influx_1        |      #"stats.* .host.measurement* region=us-west,agent=sensu",
influx_1        |
influx_1        |      # default template. Ignore the first graphite component "servers"
influx_1        |      "instance.profile.measurement*"
influx_1        |  ]
influx_1        |
influx_1        | ###
influx_1        | ### [collectd]
influx_1        | ###
influx_1        | ### Controls the listener for collectd data.
influx_1        | ###
influx_1        | [collectd]
influx_1        |   enabled = false
influx_1        |   # bind-address = ":25826"
influx_1        |   # database = "collectd"
influx_1        |   # retention-policy = ""
influx_1        |   # typesdb = "/usr/share/collectd/types.db"
influx_1        |
influx_1        |   # These next lines control how batching works. You should have this enabled
influx_1        |   # otherwise you could get dropped metrics or poor performance. Batching
influx_1        |   # will buffer points in memory if you have many coming in.
influx_1        |
influx_1        |   # batch-size = 1000 # will flush if this many points get buffered
influx_1        |   # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
influx_1        |
influx_1        | ###
influx_1        | ### [opentsdb]
influx_1        | ###
influx_1        | ### Controls the listener for OpenTSDB data.
influx_1        | ###
influx_1        | [opentsdb]
influx_1        |   enabled = false
influx_1        |   # bind-address = ":4242"
influx_1        |   # database = "opentsdb"
influx_1        |   # retention-policy = ""
influx_1        |   # consistency-level = "one"
influx_1        |
influx_1        | ###
influx_1        | ### [[udp]]
influx_1        | ###
influx_1        | ### Controls the listeners for InfluxDB line protocol data via UDP.
influx_1        | ###
influx_1        |
influx_1        | [[udp]]
influx_1        |   enabled = false
influx_1        |   bind-address = ":4444"
influx_1        |   database = "udpdb"
influx_1        |
influx_1        |   # These next lines control how batching works. You should have this enabled
influx_1        |   # otherwise you could get dropped metrics or poor performance. Batching
influx_1        |   # will buffer points in memory if you have many coming in.
influx_1        |
influx_1        |   # batch-size = 1000 # will flush if this many points get buffered
influx_1        |   # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
influx_1        |
influx_1        | ###
influx_1        | ### [monitoring]
influx_1        | ###
influx_1        | ### Send anonymous usage statistics to m.influxdb.com?
influx_1        | ###
influx_1        | [monitoring]
influx_1        |   enabled = false
influx_1        |   write-interval = "24h"
influx_1        |
influx_1        | ###
influx_1        | ### [continuous_queries]
influx_1        | ###
influx_1        | ### Controls how continuous queries are run within InfluxDB.
influx_1        | ###
influx_1        |
influx_1        | [continuous_queries]
influx_1        |   log-enabled = true
influx_1        |   enabled = true
influx_1        |   recompute-previous-n = 2
influx_1        |   recompute-no-older-than = "10m0s"
influx_1        |   compute-runs-per-interval = 10
influx_1        |   compute-no-more-than = "2m0s"
influx_1        |
influx_1        | ###
influx_1        | ### [hinted-handoff]
influx_1        | ###
influx_1        | ### Controls the hinted handoff feature, which allows nodes to temporarily
influx_1        | ### store queued data when one node of a cluster is down for a short period
influx_1        | ### of time.
influx_1        | ###
influx_1        |
influx_1        | [hinted-handoff]
influx_1        |   enabled = true
influx_1        |   dir = "/data/hh"
influx_1        |   max-size =<PHONE_NUMBER>
influx_1        |   max-age = "168h"
influx_1        |   retry-rate-limit = 0
influx_1        |   retry-interval = "1s"
influx_1        | => Starting InfluxDB ...
influx_1        | => No database need to be pre-created
influx_1        | exec /opt/influxdb/influxd -config=${CONFIG_FILE}
influx_1        |
influx_1        |  8888888           .d888<PHONE_NUMBER>b.  888888b.
influx_1        |    888            d88P"  888                   888  "Y88b 888  "88b
influx_1        |    888            888    888                   888    888 888  .88P
influx_1        |    888   88888b.  888888 888 888  888 888  888<PHONE_NUMBER>888K.
influx_1        |    888   888 "88b 888    888 888  888  Y8bd8P' 888    888 888  "Y88b
influx_1        |    888   888  888 888    888 888  888   X88K   888    888 888    888
influx_1        |    888   888  888 888    888 Y88b 888 .d8""8b. 888  .d88P 888   d88P
influx_1        |  8888888 888  888 888    888  "Y88888<PHONE_NUMBER>888P"  8888888P"
influx_1        |
influx_1        | 2015/12/03 14:33:40 InfluxDB starting, version <IP_ADDRESS>, branch 0.9.4, commit da1b59e7d7764d36786253b2db13b97f42ed4e1d
influx_1        | 2015/12/03 14:33:40 Go version go1.5, GOMAXPROCS set to 1
influx_1        | 2015/12/03 14:33:40 Using configuration at: /config/config.toml

I'm new enough to using Influx and Docker, if you have any recommendations on a better config and how to load it via a container I'm all ears :D

The config looks sane.  I'm not very familiar with Docker though, so I don't know if it persists data or not depending on how it was set up.  @nathanielc has more experience than I do here. Maybe he has a suggestion.

@corylanou Awesome, cheers. @nathanielc This is the image I am using https://hub.docker.com/r/tutum/influxdb/
As I said, I'm not sure if this is even an issue or if it is something that is expected. Traditionally I wouldn't use containers for DB stuff but they make developing super easy and allow me to test different scenarios a bit easier.

@mcdonnelldean The config looks fine. Can you share the command you are using to start the container?
My guess is that docker volumes are not being handled correctly and so when you restart the container it doesn't know where to find the old data.

Try using this docker command (slightly modified from the docs):
docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -v PATH_ON_HOST_FOR_DATA:/data tutum/influxdb

What is happening is that each container is getting its own copy of the docker volume mounted under /data where the InfluxDB data is. If you mount that volume explicitly to a location on the host new containers will continue to use the same data.
If you lost critical data use docker volume ls to see a list of volumes and then inspect each one to find your data.

@nathanielc Ah! I did not know about docker volumes.
This makes sense :D
I have only been testing so no major issues with loses.


Rename gtm click tracking.js

What
This PR changes all instances of gtm-click-tracking/GtmClickTracking to gtm-event-click-tracker/GtmEventClickTracker.
This will have a knock-on effect in applications where gtm-click-tracking is still used as a data attribute. Therefore, these changes are breaking and will need to be fixed in applications where gtm-click-tracking appears (such as collections and frontend).
Why
Prior to these changes, some of our analytics modules had similar names e.g. gtm-click-tracking.js and gtm-link-click-tracker.js. In order to improve the differentiation between these modules (and also to provide consistency in naming conventions i.e. using tracker instead of tracking), these changes have been made.
Visual Changes
None.

Superseded by PR 2906 - https://github.com/alphagov/govuk_publishing_components/pull/2906


Download RDP option is coming even the system is shut down

Even if the system is shut down, download rdp option is enabled in the plugin.
In windows azure portal if the system is shut down, connect option is disabled.
PFB the screen shot.

This issue is reproducible in the latest build.

This issue is fixed and working as expected in the latest build.


sidecli should only sign messages

Currently sidecli uses node logic and do things like producing blocks, this should be implemented on the node itself and the sidecli should only sign messages.

This is done.


Add kissanime to Specto

Hi MrKnow, any news on if this was possible yet? Really looking forward to it if it is!

I wonder if it was beter to add a separate addon for the website  kissanime.io.
And what do you think?

Hi MrKnow,
I really don't know that much about developing addons. But there only seems to be the one addon relating to anime, which is seriously lacking due to low res thumbs and backgrounds and not very user friendly for selecting episodes and creating playlists. I'm sure there are plenty of other users out there that feel the same way and would be grateful for an alternative


Mermaid content does not appear in PDF generated by Prince

Please select the area your Bug applys to. (Multiple selections are Possible)

[ ] Onboard. Initial vault setup and import/export pods
[ ] Create. Note creation, lookup, snippets and templates
[ ] Retrieve. Backlinks, references, graph view
[ ] Structure. Refactoring, multi-vault and schemas
[ ] Publish. Sharing your repo with the world
[X] Misc (Choose this if your not sure)

Describe the bug
If I include a Mermaid graph in my Markdown, the graph shows up in the preview but not in the PDF.
To Reproduce
Steps to reproduce the behavior:

Open a Markdown file
Define a Mermaid graph (sample below)
View the Dendron preview and confirm that the graph is visible
Right-click on the preview and choose PDF
Open the resulting PDF
Note that the graph is not rendered into the PDF

Sample Mermaid graph
graph TD;
    A-->B;
    A-->C;
    A-->D;
    A-->E;

Expected behavior
Graph is visible
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information)

OS: [Windows 10]
Browser [Firefox]
Version [78.10.0esr]

Additional context
Add any other context about the problem here.
Dendron Log file
Please attach the output of >Dev:Dendron: Open Logs here
Untitled-1.log

Thanks for the issue, confirmed and repro'd. The preview pdf export is currently a few versions out of date from the most recent Dendron markdown syntax. Will aim to clear some cycles in May to fix this

Wondering if this will be fix in the future releases of Notion?


Automate syncing

Right now it needs to be triggered manually which is annoying.
Ideas on when sync should happen:

With a debounce after changing a page locally
Every minute

Obviously, this should be smart about Internet connectivity.

Not saying SB should do it this way -- but for context, Obsidian's syncs appear to happen on each local update. And the local update seems to basically use the "debounce after changing a page locally" strategy.


Outdated CHANGELOG.md

The latest version mentioned in the CHANGELOG.md (which is part of this project) is v3.2.1, but the latest released version is v3.4.2.
It would be nice if the changelog would be keeped up to date, so that users know what has been changed.
Thanks!

Why no changelog updates anymore? @kucherenko?

hi, thank you for the reminder, looks like the changelog generator is broken


Use PKI keys to improve device security

Currently we use device token, which is UUID v4 string, to identify and authenticate device. These tokens are used as API keys and send on every HTTP request (in the case of MQTT situation is better, as they are used as MQTT password and sent only on connection request).
There are (at least) 2 problems with these tokens:

They are generate and kept by Mainflux server and send over the network
They need to be revoked (currently TODO mechanism)

In order to address these problems I propose that we introduce specific pubkey field in the thing structure to hold the things public key.
Flow would be following:

User (operator) creates PKI key-pair (private and public key) for each device (user can do this on the premises using simple openssl-based tool, better than obtaining keypair from Mainflux over the network)
User burns private key into the device
User sends public key to the Mainflux via an API, and Mainflux writes this key into pubkey field or keeps it somewhere in [device_id][pubkey] KV map in the DB.

This has 3 nice consequences:

Mainflux never stores the private keys - only user has private keys of his devices
Private keys never leave the device - device only sends its thing_id and based on this Mainflux can find its pubkey and check the message signature
Revoking is easy - all user have to do is call a /revoke API call and send new pubkey. Mainflux takes this pubkey and writes it in the [device_id][pubkey]. Upon next requests from this device we do not even have to check some revoked list - we just try to decrypt with actual pubkey in Mainflux DB, and if does not succeed - well, bad luck, key has been revoked and "You shall not pass!".

Elliptic-Curve Diffie-Hellman should be used for generating PKI keyparis, because it is suitable for embedded devices, for example TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: https://realtimelogic.com/ba/doc/en/C/shark/certmngmtIoT.html
Also, SenML is specified over the CBOR, so COSE might be interesting to apply.
It should be noted additionally that many constrained embedded devices use specialized HW chips for encryption, like ATECC508A. Usage of these devices can be seen here. These devices can offload heavy crypto computation from device's modest MCU, and they already have private keys inside. All is needed is that user takes public key from this crypto-chip and send ti to Mainflux (via API call). So - PKI is something that can be very suitable for embedded devices.
This flow was inspired by "Best Practices for IoT Security in the Cloud" talk by Amazon IoT team: https://www.youtube.com/watch?v=V7wLJZszDYk
Also - I see this flow as a step forward towards a final destination - device X.509 certificates.

Interesting, Google is doing JWT auth, where JWT is used as a MQTT password. Username is ignored - very similar to Mainflux.
https://youtu.be/A32RFbkozFc?t=1139
Only difference is that they use device key to sign JWT, and on server side they check JWT signature by using device public key for that device.
Looks very similar to what I proposed here :)

Interesting analysis of Google and Amazon IoT services: https://www.davidb.org/post/cloud-iot/

I'll need to do some research on this topic, but for now, this really makes sense. For some protocols, even JWT is too heavy, especially because its size isn't fixed. Some protocols, such as CoAP, are meant to use a single IP packet and should avoid fragmentation if possible. Even in the case of some less constrained protocol, it's a good idea to keep the metadata as compact as possible.

@evarga can you please give one scenario of spoofing or mim attack in the scenario I explained with simple keypair with private key on device side.
Note that Google IoT cloud use practically same approach (please take a look at the links above) - can you please find the attack vector, I was thinking about the subject and could not see the flaw for now and why X.509 would be necessary in this case.

@drasko The whole discussion started about avoiding tokens, as these add unacceptable burden to many constrained low-power devices. Google's approach has many other components and requirements besides simple key pair usage. This is what I've commented about. If the goal is to completely avoid tokens, then we should stick to a standard regarding PKI. I hope this clears the confusion. Sure, if regularly refreshing tokens, and doing time sync. is acceptable, then a token based approach with asymetric keys would also work.

@evarga

Google's approach has many other components and requirements besides simple key pair usage.

I am maybe missing something, but from the videos I'd say that thay use only JWT produced and signed by device private key.
My question here is do we need Amazon approach (X.509 certs on device) and why Google's approach with simple keypair is not sufficient - as it looks to me that it is.

Besides JWT there is a need for time syncing. Nonetheless, as I have written in my mail:

...if regularly refreshing tokens, and doing time sync. is acceptable, then a token based approach with asymetric keys would also work.

So, I am not stating it isn't sufficient, but we should use a full solution; either X.509 certs or Google's approach with associated peculiarities regarding tokens. X.509 is a mature full blown standard, while the latter is not. Let @dusanb94 investigate first what would more easily fit into the current solution.

another point of reference: the OCF cloud spec mandates that the device have certs to both authenticate the cloud to the device, authenticate the device to the cloud and on top of that, use access/refresh tokens akin to OAuth for authZ. Perhaps it makes sense to support multiple options for different customer requirements?
here's some IETF drafts for some additional inspiration.
https://tools.ietf.org/html/draft-ietf-ace-oauth-authz-13
https://tools.ietf.org/html/draft-ietf-oauth-device-flow-12

As an update, here is some new brainstorming:

When keypair is generated, private key is flashed into device, and public key is upload to Mainflux
Mainflux keeps deviceID:pubkey mapping
Device uses it's private key to create a password. It can be anything we agree upon - it can be signed word "hello" or a signed deviceID. It really does not matter.
Device sends username = deviceID and password = privte-key-encrypted-deviceID in the Authorization header
Mainflux uses username (plain-text deviceID) to fetch pubkey from its internal mapping
Mainflux verifies signature of the password with this pubkey. If it matches, device is authenticated

This method allows us to never generate or store private keys in Mainflux.
Note also that password generation on device has to be done only once, not upon each message.
For the key rotation:

Device generates new key-pair (via firmware or HW)
Device uploads new pubkey to Mainflux
Device generates new password and uses it for all next authentications

@drasko

Mainflux keeps deviceID:pubkey mapping

Just in time provisioning should be considered also, here is an explanation and the pain which trying to solves.
https://youtu.be/V7wLJZszDYk?t=1611

note that plain-text deviceID is already part of URL, so maybe no need for sending username

Not always I would not rely on this.

Device uses its private key to create a password. It can be anything we agree upon - it can be signed word "hello" or a signed deviceID. It really does not matter.

I would go with signed deviceID which is UUID (using term password can be confused). Its like device "key" which is not secret and it's OK to be public and signed. An aditional string like "hello" is not needed IMHO.
I think those are all good points and it's really a nice and clean solution.

In brainstorming with @dusanb94 we saw a drawback to this solution: once pre-generated, password - which is signed deviceID will not change as long as pk is not rotated. That means that anybody who breaks TLS and sniffs TCP traffic and gets password can represent itself as a device.
In other words - password must be something that is changing from one connection to other (form one session to other) - i.e. must be unique for one session.
Can we use connectionID instead of deviceID to sign with pk and use it for the password for a given session?

Looks like mTLS (mutual TLS) for MQTT can be done this way: https://www.nginx.com/blog/nginx-plus-iot-security-encrypt-authenticate-mqtt/
For HTTP it should be straight-forward, as cert info can be derived from `$ssl_client_cert and put into HTTP header.
Some references:

https://medium.com/@itseranga/tls-mutual-authentication-with-golang-and-nginx-937f0da22a0e
https://serverfault.com/questions/412432/how-to-specify-multiple-root-certificates-for-nginx-client-certificate-verificat
http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client
https://www.nginx.com/blog/nginx-and-iot-adding-protocol-awareness-for-mqtt/
http://nginx.org/en/docs/njs/index.html

In brainstorming with @dusanb94 we saw a drawback to this solution: once pre-generated, password - which is signed deviceID will not change as long as pk is not rotated. That means that anybody who breaks TLS and sniffs TCP traffic and gets password can represent itself as a device.
In other words - password must be something that is changing from one connection to other (form one session to other) - i.e. must be unique for one session.
Can we use connectionID instead of deviceID to sign with pk and use it for the password for a given session?

This nonce that must be rotated can be creted with something unique known to both server and client independently, and must not be repeated.
One of the options would be that client generates random hash (big number) and sends it in username as a plain text. However, upon valid connection, server must remeber this hash and check in the DB that it is not repeated anymore (if the connection was not valid, hash can be resued, because attacker who captured the hash nad the password can not do anything with it).
This might lead to a huge storage that will augment on every sucessful connection or request. But this also can be mitigated with some pruning after pk rotation.

Additionally - lookup table that is identical to both client and server can be used to get a different nonce every time. When nonces are exosted, lookup table is rotated.

Nonce can be also demanded from a server via TCP call prior to MQTT connect.
A dedicated service in the cloud (maybe part of the Bootstrap server) would then set the nonce a link it to the device's private key.
It will be one-time password, as upon disconnect nonce will be invalidated.

This issue is depricated with introduction of mTLS in Mainflux (to be more precise in NginX via JS/Lua script), and will be further enhanced via https://github.com/mainflux/mainflux/issues/532.
Using simpler PKI keys would enhance maintainability comparing to X.509 certs (and their revocation). For this NATS 2.0 nonce-like approach can be used.
Closing this issue, but discussion around it is a very nice reference for sure.


heroku Application crushed

An error occurred in the application and your page could not be served. Kindly check and resolve this issue

i


Make inline comments stay inline

First of all, thanks for this project. I use it in my project for detecting ignore comments :D
This is my approach for making inline comments stay inline.
I overwrote the traverse to inspect the first item of the body (maybe a comment) and save the lineno to a list if the lines of body parent and comment match.
When visiting a comment I immediately write the comment with two leading spaces instead of writing a newline by using fill.
When adding a setup.py with your package name you can see which packages depend on yours on github. Just a litte bonus :)

That's a great work you've done here!
Here are some thoughts:
setup.py
As I understand setup.py does not add any value here: poetry.lock is well enough for github and its dependency graph (https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems).
inlined comments work in very specific cases
Your solution works with def, class, if, ... With everything that has body attribute.
However, if we start identifying inlined comments for if-parts we'd better do this for elif/else parts also (https://github.com/t3rn0/ast-comments/issues/10).
Moreover, having this inlined-regular logic inside traverse method will make the problem impossible to solve for simple expressions like a = 1  # inlined.
I'd compare line numbers in _enhance function and store inline info into Comment.inline (bool) attribute.
I mean, I don't have any concrete solution yet, it's just a thought.


Create share buttons for facebook and twitter in articles

Social buttons added:

Feature phone text only fallback

@projectmushroom  🍰 👍


Made Contact us Page

Description
Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.
#1165
Type of change

[ ] Added a new machine learning frameworks, libraries or software.
[ ] Documentation update

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings


Edge double-click context menu

Edge opens a context menu on double clicking on a sprite.  This might be fixable by making the wrapping div clickable rather than the image.

This was due to the touchpad in use, not Edge.

This was due to the touchpad in use, not Edge.


Update fastlane

Tool information

Tool name: fastlane
Tool license:
Add or update? update
Desired version: 2.154.0
Approximate size: ?
If this is an add request:

Brief description of tool: App automation done right
URL for tool's homepage: https://fastlane.tools/
Provide a basic test case to validate the tool's functionality: fastlane scan

Area for Triage:
['Area: Apple']
Question, Bug, or Feature?:
['question']
Virtual environments affected

[x] macOS 10.15
[ ] Ubuntu 16.04 LTS
[ ] Ubuntu 18.04 LTS
[ ] Ubuntu 20.04 LTS
[ ] Windows Server 2016 R2
[ ] Windows Server 2019

Can this tool be installed during the build?
sudo gem install fastlane
sudo gem cleanup
Tool installation time in runtime
2min
Are you willing to submit a PR?
Yes

Hi @mjvdende!
Fastlane is updated automatically. The new image with version 2.154.0 is supposed to be deployed by Friday
Temporary workaround:
    steps:
      - name: update fastlane
        run: |
          gem update fastlane
          fastlane --version

Hello, @mjvdende
The new image has been deployed and Fastlane 2.154.0 is now available for macOS - https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md


rollout latest changes on next

Pull Request Test Coverage Report for Build 10a5342699bc030b1255b0ca3cb5ed719d5a5d49-PR-43

7 of 15 (46.67%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-3.7%) to 85.377%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/core/utils.ts
5
6
83.33%

src/core/transition-base.ts
2
9
22.22%

Totals

Change from base Build ea50bea6bf05daca95342171de42b8a5d9f8e471:
-3.7%

Covered Lines:
201

Relevant Lines:
221

💛  - Coveralls


Token for API

#25

by default no token
add description field
use a table to list tokens
clean UI (buttons)
full CRUD (on edit key  cannot be updated manually but can be refreshed from a button)
from main page the token is truncated


Check existence of States named in add_transitions

Per @aleneum's comment in #153, it would make sense to check that States named in the source and dest arguments to add_transition actually exist. The only potential drawback I can see is it's conceivable someone might want to add transitions involving states that don't exist yet (e.g., perhaps the source State is expected to be added dynamically later). If we think the latter is likely to be a real (if rare) use case, I would lean towards not implementing name checking, since I don't think we want to start adding a Machine-level flag for something like this (i.e., an option that overrides the default checking behavior). Otherwise we should probably raise an Exception whenever a non-existent state is invoked.

I also think of transitions' 'lazy evaluation' as a feature. For strings I'd keep that behaviour.
I was just thinking about the following case: If you use State objects for adding transitions, you might want to make sure this is the actual state object and not just one that has the same name.
machine.add_state('A')
machine.add_state('B')
state_A = State('A', on_enter='fancy_things')
machine.add_transition('go', state_A, 'B')
machine.go() # no fancy things happening

Oh, I see. Yeah, that makes sense.


Create tr-TR.json

Turkish translation

@Eurxhub thanks for you advice Im going to change it :)

You are welcome.


Make DropwizardApacheConnectorTest runnable in Travis CI

https://github.com/dropwizard/dropwizard/commit/17961d8838ca614f811debf98f79986fea271f71

Do we know why we're facing these issues? I'm facing similar issues on CircleCI.

Closed by #1578


Unhandled Exception during frist Start

After installation manually the v.10 (with GPG): it says on first Start:
[15:18:22.206] [DBG] ------------------------------
[15:18:22.207] [DBG] Starting pass-winmenu v1.10
[15:18:22.207] [DBG] ------------------------------
[15:18:22.319] [DBG] Config reloading enabled
[15:18:22.384] [DBG] Attempting to detect the GPG installation directory
[15:18:22.385] [DBG] GPG executable found at the configured path. Assuming installation dir to be C:\Program Files\pass-winmenu\lib\GnuPG\bin
[15:18:22.442] [ERR] Could not start pass-winmenu: An exception occurred.
[15:18:22.445] DependencyResolutionException (An exception was thrown while activating PassWinmenu.Actions.ActionDispatcher -> PassWinmenu.Windows.DialogCreator -> λ:PassWinmenu.ExternalPrograms.ISyncService.) in :0:0
[15:18:22.445]   DependencyResolutionException (A delegate registered to create instances of 'PassWinmenu.ExternalPrograms.ISyncService' returned null.) in :0:0
[15:18:22.445]     -> in Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance -- :0:0
[15:18:22.445]     -> in Autofac.Core.Resolving.InstanceLookup.Activate -- :0:0
[15:18:59.414] [DBG] Shutting down.

Thank you for your report! I discovered this issue shortly after publishing the release, and I have created a fix for it, but I have not yet published it. Could you try the following build to check if it resolves your issue?
GPG build:
https://ci.appveyor.com/api/buildjobs/6x83dqylcgf012p9/artifacts/pass-winmenu%2Fbin%2Fpass-winmenu.zip
nogpg build: https://ci.appveyor.com/api/buildjobs/6x83dqylcgf012p9/artifacts/pass-winmenu%2Fbin%2Fpass-winmenu-nogpg.zip

Yes thanks, that works!

Thanks for testing! v1.10.1 is out now, which includes this fix.


Update smallweb.txt

please mind the order in the file

Sorry, I overlooked the http vs. https part. I made my updates.


Documentation: specify how WindowDialog's default title bar is made

Fixes #40828

Could you squash the two commits into one? See PR workflow.

Thanks!


Styling tweaks

Remove pencil icon from Articles list page
Style date and read time the same as per the articles-list page
Remove the full stop from read time

Sorry for the confusion above!
I'd like to update the styles used here for date and read time...

I'm thinking the font size and weight could be the same as we're using on the article-list page...


fix ionic version

Description
In README it is recommended to install ionic version 4, but in package.json there is ionic@5. For me this broke npm run ionic:android:
➜  ionic-showcase git:(master) npm run ionic:android

><EMAIL_ADDRESS>ionic:android /Users/jhellar/work/repos/ionic-showcase
> ionic cordova run android

[ERROR] native-run was not found on your PATH. Please install it globally:

        npm i -g native-run

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>ionic:android: `ionic cordova run android`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>ionic:android script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/jhellar/.npm/_logs/2019-09-24T13_50_34_856Z-debug.log

Changing to version 4 fixes the build.

Yeah. Update is needed later on


License 'apachev2' should work per knife generate and docs

https://getchef.zendesk.com/agent/tickets/8419 points out that our docs specify 'apachev2' should generate the Apache 2.0 license files and snippets. But the code only works
In chef-dk, apachev2  is in the README:

lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md

But apache2 is in the code for licenses
Also, the knife cookbook create command in the Chef project (chef/chef) uses apachev2 for cookbook generation:

lib/chef/knife/cookbook_create.rb

And the documentation references apachev2
SO -- it seems the documentation is correct but the code is wrong. I think the docs should remain the same. This PR updates generator to accept either apache2 or apachev2 and generate the 2.0 Apache License.

👍

Ugh, that rebase went horribly wrong. Closing this pull request and re-submitting.


refactor: add/switch/remove missing decl-specifiers and attributes

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (d888e11) 98.72% compared to head (9ff3976) 98.73%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #31   +/-   ##
=======================================
  Coverage   98.72%   98.73%
=======================================
  Files          44       44
  Lines        4560     4574   +14
=======================================
+ Hits         4502     4516   +14
  Misses         58       58

Files Changed
Coverage Δ

include/emio/buffer.hpp
99.23% <100.00%> (ø)

include/emio/detail/bignum.hpp
99.40% <100.00%> (ø)

include/emio/detail/format/parser.hpp
94.87% <100.00%> (ø)

include/emio/detail/parser.hpp
93.15% <100.00%> (ø)

include/emio/format_string.hpp
100.00% <100.00%> (ø)

include/emio/formatter.hpp
96.00% <100.00%> (+0.76%)
:arrow_up:

include/emio/ranges.hpp
96.06% <100.00%> (+0.03%)
:arrow_up:

test/unit_test/test_formatter.cpp
98.37% <100.00%> (ø)

... and 1 file with indirect coverage changes

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


Realm accessed from incorrect thread, help needed

How can I debug Realm accessed from incorrect thread error? I want to know what object or operation is the reason of this error. Basically I use Realm for tasks like this one. I want to mark local objects as deleted, synced, updated and so on depending on server response. AFNetworking performs callbacks on main thread. I use [RLMRealm defaultRealm] everywhere.
// this is called from main thread
- (void)deleteFromServer {
    RLMResults *xs = [Entity objectsWhere:@"shouldDelete = YES"];
    for (id *x in xs) {
        [self deleteEntityFromServer:x];
    }
}

- (void)deleteEntityFromServer:(Entity *)entity {
    NSString *endpoint = @"...";

    [self.http DELETE:endpoint parameters:nil completion:^(OVCResponse *resp, NSError *err) {
            [[RLMRealm defaultRealm] beginWriteTransaction];
            entity.deleted = YES;  // this is called from main thread too
            [[RLMRealm defaultRealm] commitWriteTransaction];
        }
    }];
}

I added logging of current thread, but it seems to be the same every time
2015-05-17 16:40:27.100 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.102 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.114 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.117 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.137 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.141 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.164 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.167 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.178 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.179 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.737 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.745 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.780 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.782 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:27.811 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:27.812 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.117 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.119 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.135 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.137 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.156 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.159 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.180 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.185 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.202 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.204 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.228 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.231 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.307 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.308 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.330 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.332 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.359 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.360 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.401 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.403 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.542 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.544 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.569 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.571 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.592 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.594 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.707 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.709 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.730 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.732 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.753 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.755 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.783 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.785 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.866 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.868 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.913 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.915 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:28.968 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:28.970 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.015 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.017 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.065 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.067 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.110 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.113 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.168 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.170 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.198 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.200 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.246 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.248 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.299 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.301 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.340 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.342 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.386 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.388 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.540 App[7836:60b] __37-[MyService uploadEntities]_block_invoke, exists
2015-05-17 16:40:29.542 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.565 App[7836:60b] __37-[MyService uploadEntities]_block_invoke_2, find
2015-05-17 16:40:29.567 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread
2015-05-17 16:40:29.596 App[7836:60b] __37-[MyService uploadEntities]_block_invoke_2, find
2015-05-17 16:40:29.598 App[7836:60b] Running on <NSThread: 0x14d56100>{name = (null), num = 1} thread

And then I get 0x3ecc90 <+280>: b      0x3ecca4                  ; <+300> at RLMObjectBase.mm:188

What could be wrong here?

I also added this check in every place where I use RLMObjects NSCAssert([NSThread isMainThread], @"");

Realm Cocoa 0.92 introduced a thread check in -[RLMObjectBase dealloc] (#1727), and strongly capturing "entity" in the completion block probably causes this issue, since AFNetworking might retain/release the block on a different thread.
I'm struggling a bit myself with this, and to avoid it I use weak reference in situations like this.
Have a look at #1893 for more information. Also, to the really smart people at Realm: Please forgive me if this was not a totally accurate answer.

@nmtitov store your objects primary key, then while inside the AFNetworking call, re-fetch the object with [RLMObject objectForPrimaryKey:]. There is a bug that will give you grief if your HTTP request fails, however. AFNetworking is releasing objects on its own thread, and Realm throws an exception

@RyanCopley you mean, whatever I do, if AFNetworking receives error, dealloc would crash?

Until https://github.com/realm/realm-cocoa/issues/1893 is resolved -- to my understanding, yes. I am not a Realm dev though, so I could be wrong.

@RyanCopley I tried to do it this way, but still get crashes. This should be same as primaryKey, right?:
- (void)deleteEntityFromServer:(Entity *)entity {
    NSString *endpoint = @"...";
    long serverID = entity.serverID;
    [self.http DELETE:endpoint parameters:nil completion:^(OVCResponse *resp, NSError *err) {
            [[RLMRealm defaultRealm] beginWriteTransaction];
            RLMResults *results = [Entity objectsWhere:@"serverID = %ld", serverID];
            Entity *entity = results.firstObject;
            entity.deleted = YES;  // this is called from main thread too
            [[RLMRealm defaultRealm] commitWriteTransaction];
        }
    }];
}

And it's important for me to receive server errors. I could rewrite server API to return success with error description or switch to another networking library.

Rewriting your server API would be futile-- what if they're in airplane mode? I am hoping that they release a fix soon.

Ignoring the warning for now, try this:
    self.http.completionQueue = dispatch_get_current_queue();

Thanks, I didn't try that yet (eventually block would perform on main thread since dispatch_get_current_queue(); would return main queue and then block will be deallocated somewhere else in the guts of AFNetworking in case of error, it would still crash?).
What I did:

Created EntityUpdateMessage message for each operation

@interface EntityUpdateMessage : NSObject
@property (assign, nonatomic) long serverID;
@property (copy, nonatomic) NSString *baz;
@property (assign, nonatomic) long foo;
@property (assign, nonatomic) BOOL bar;
@end

Wrote this method which makes AFNetworking calls. This method is called from for..in loop over RLMObjects, so I pull values from RLMObjects and pass them to this method. AFNetworking blocks don't catch RLMObjects, just values.

- (void)uploadEnitityWithServerID:(long)serverID foo:(NSString *)foo bar:(NSString *)bar baz:(BOOL)baz;

In AFNetworking responses I create EntityUpdateMessage objects and pass them to "handler" this way:

- (void)uploadEnitityWithServerID:(long)serverID foo:(NSString *)foo bar:(NSString *)bar baz:(BOOL)baz {
    NSDictionary *params = @{
        @"serverID": @(serverID),
    };
    @weakify(self);
    [App().http GET:@"foo/bar/" parameters:params completion:^(...) {
            // ...
            [App().http GET:@"baz/" parameters:params completion:^(...) {
                @strongify(self);
                if (resp.HTTPResponse.statusCode == 200) {
                    EntityMantle *serverEntity = resp.result;
                    if (!serverEntity) {
                        return;
                    }

                    EntityUpdateMessage *entityUpdateMessage = [[EntityUpdateMessage alloc] init];
                    entityUpdateMessage.serverID = serverID;
                    entityUpdateMessage.foo = foo;
                    entityUpdateMessage.bar = serverEntity.bar;
                    entityUpdateMessage.baz = serverEntity.baz;

                    [self performSelector:@selector(updatedEntityWithMessage:) entityUpdateMessage afterDelay:0];
                    return;
                }
            }];

            return;
        }

Added this convenience function

(void)updatedEntityWithMessage:(EntityUpdateMessage *)entityUpdateMessage {
[self updatedEntityWithServerID:entityUpdateMessage.serverID ...]; // (unwrap entityUpdateMessage)
}

And added handler, which works with Realm

- (void)updatedEntityWithServerID:(long)serverID foo:(id)foo bar:(id)bar baz(id)baz {
    [App() checkMainThread];

    NSLog(@"%s, update entity with::", __PRETTY_FUNCTION__);
    NSLog(@"Running on %@ thread", [NSThread currentThread]);

    Entity *entity = [Entity objectForPrimaryKey:@(serverID)];
    RLMResults *childEntities = [entity.childEntities objectsWhere:@"serverID = %lu", serverID];
    ChildEntity *childEntitiy = childEntities.firstObject;
    if (!childEntitiy) {
        return;
    }
    // Finally :-)
    [[RLMRealm defaultRealm] beginWriteTransaction];
    childEntitiy.foo = foo;
    childEntitiy.bar = bar;
    [[RLMRealm defaultRealm] commitWriteTransaction];
}

I don't know if this is correct at all, but I just managed to upload some entities to server and it makes me happy. I've been struggling with this for several days.

Basically I could use RACTuple instead of class and two functions, but I wanted to make it simple. My idea was to prevent AFNetworking blocks from capturing RLMObject instances.

Thanks everyone for chiming in on this thread. #1984 should allow thread-safe object deallocation, which should land shortly.


Add Multi Remote Capability

I've made changes that will support the use of MultiRemote. Instead of defaulting to the global browser everywhere, I check to see if there are multiple capabilities defined and use those in its place.
One question I have is if we should add the methods to the browser global even if we have multiple capabilities defined, and execute the command on each capability in that case. I think that's how things usually work when you use browser in a MultiRemote environment.
Note: I'm new to WDIO, this library and opening PRs so all comments welcome.

@pip8786
Merged it, thanks for your work. I'll update the readme and create a new release in a few minutes

@pip8786
Merged it, thanks for your work. I'll update the readme and create a new release in a few minutes

Thanks for helping me out with the PR! Looking forward to the release.


[test](index compaction)Fix unstable index compaction fault injection case

What problem does this PR solve?
Problem Summary:
When set enable_match_without_inverted_index to false, enable_common_expr_pushdown must be true,  if not, it will throw [E-6001]match_any not support execute_match error.
Release note
None
Check List (For Author)

Test

[x] Regression test
[ ] Unit Test
[ ] Manual test (add detailed scripts or steps below)
[ ] No need to test or manual test. Explain why:

[ ] This is a refactor/code format and no logic has been changed.
[ ] Previous test can cover this change.
[ ] No code files have been changed.
[ ] Other reason

Behavior changed:

[x] No.
[ ] Yes.

Does this need documentation?

[x] No.
[ ] Yes.

Check List (For Reviewer who merge this PR)

[ ] Confirm the release note
[ ] Confirm test cases
[ ] Confirm document
[ ] Add branch pick label

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.
Please clearly describe your PR:

What problem was fixed (it's best to include specific error reporting information). How it was fixed.
Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
What features were added. Why was this function added?
Which code was refactored and why was this part of the code refactored?
Which functions were optimized and what is the difference before and after the optimization?

run buildall


Hang after creating ~6 accounts

Hello all, I have experienced the script hanging on two separate instances. The other night after starting the script I noticed it pauses after creating ~6 accounts and does not continue. I tried again today and the same thing occured.

Has anyone else experienced this?
Is there any kind of verbose flag I can pass in to find out what's happening?

Thank you.

Having the same. Turned on debug and got the following log
Creating account 14 of 100
[DEBUG] Handle first page #14
[DEBUG] Fill first page #14
[DEBUG] Handle second page #14
[DEBUG] Fill signup page #14
[DEBUG] Error:{}
[DEBUG] Handle second page #14
[14] Servers are acting up... Trying again.
[DEBUG] Handle first page #14
[DEBUG] Fill first page #14
[DEBUG] Handle second page #14
[DEBUG] Fill signup page #14

Also gets stuck at "Fill signup page" for me

Support's been dropped for this tool. Please use https://github.com/skvvv/pikapy.


update xcode 14   the Module compiled by Swift 5.6.1 cannot be imported by the Swift 5.7 compiler [

Bug Report

upgrad xcode to version 14 or above [now Apple officially requires that uploading in the appstore must use xcode14 or above for packaging， It is found that other files referencing R2Shared in the project report errors, indicating that the Module compiled by Swift 5.6.1 cannot be imported by the Swift 5.7 compiler
here is our newest cartifile (version is 2.3.0 before we updated)

after updating error:

Expected behavior
How to reproduce?

Environment
xcode 14
Swift 5.7 compiler

Readium version: 2.5.0
"macOS: ventura 13.3
"carthage: 0.39.0
xcodebuild -version 14

-->
seek for help to buld successfully

See https://github.com/readium/swift-toolkit/issues/82#issuecomment-1213004645

参看#82（评论）
I am sorry to tell u that didn't work
I run
"mkdir -p Carthage/Build/iOS
carthage update --platform ios --use-xcframeworks --cache-builds"
it just blocked for a longtime so that updated fail
(I have tried it for many time all. sometime it show other error. this is one of situtation error)

The version 0.13.3 does exist. I'm not sure why you get this error, maybe clear all the Carthage cache on your computer and/or open an issue on the Carthage repository.
Or migrate to Swift Package Manager for a better experience.

版本 0.13.3 确实存在。我不确定为什么会出现此错误，也许清除计算机上的所有 Carthage 缓存和/或在 Carthage 存储库上打开一个问题。
或者迁移到 Swift Package Manager 以获得更好的体验。

waiting for a long night still like this(updated fail)


raft: error on ignored proposal and wait for EntryConfChange results

fixes: https://github.com/etcd-io/raft/issues/43

there might be some other side effects of returning ErrProposalDropped. If there is interest in merging this PR, I can do some more digging/testing.

etcd only uses so-called deprecated pb.ConfChange, but I am wondering how this change will impact pb.ConfChangeV2 handling.
https://github.com/etcd-io/raft/blob/3cbcd6e7088c773cab6331459162561682e0d1df/node.go#L141-L153
cc @ahrtr @serathius for insights~

etcd only uses so-called deprecated pb.ConfChange, but I am wondering how this change will impact pb.ConfChangeV2 handling.

raft will automatically convert it to V2, see node.go#L533.

m.Entries[i] = pb.Entry{Type: pb.EntryNormal}

The intention is just to ignore the confChange, as the log "ignoring conf change" mentions.

etcd only uses so-called deprecated pb.ConfChange, but I am wondering how this change will impact pb.ConfChangeV2 handling.

To be clear, I am not sure what's the impact of fail fast in case of pb.ConfChangeV2 handling https://github.com/etcd-io/raft/blob/7357439323abcd0654b7146022f7a58793d667eb/raft.go#L1222-L1226
Is there an unknown reason that designs like this? @tbg for consulting..

cc @nvanbenschoten, noticed some of your recent comments here
https://github.com/etcd-io/raft/blob/7357439323abcd0654b7146022f7a58793d667eb/raft.go#L698-L704
can you take a look at this PR?

@lavacat thanks for the ping. I don't see any issue with the changes made to stepLeader. There's now a decent amount of coupling between the rejection logic in stepLeader and the auto-leave proposal logic in appliedTo, but it appears to be correct.


How to add security to the ML zip file in BLOB

Is there a way to add security to the ML BLOB zip file. We noticed the “public access level setting of ‘Private’ “ prevents download of the zip file to the camera?  Also is anonymous download is blocked how can we can we add a serivce id and secret so the camera can downloud the zip file in BLOB storage ?

@MikeWilcoxMicrosoft There is a potential solution based on the below link.
https://stackoverflow.com/questions/42875787/download-all-blobs-files-locally-from-azure-container-using-python

@MikeWilcoxMicrosoft Were you able to try the above solution?

Closing, Kindly reopen if further support is required.


checkov: 2.3.309 -> 2.3.311

Diff: https://github.com/bridgecrewio/checkov/compare/refs/tags/2.3.309...2.3.311
Changelog: https://github.com/bridgecrewio/checkov/releases/tag/2.3.311
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 241610 run on x86_64-linux 1

2 packages built:

checkov
checkov.dist


Fix QR scan for requests

Description
Fixed bug where QR scan for a request would take you into the send flow.
Other changes
None
Tested
On device
Related issues

Closes #4059

Backwards compatibility
Yes

Hi @jeanregisser i have verified task using Test flight build v1.1.0 (21) & & Valora internal build V1.1.0(1004294309)
Test scenarios:

Verify user is able to see the Request button on home page
Verify user should redirect to Request contact page by tapping on request button
Verify user should able to see the scanner icon on top right corner in request contact page
Verify scanner page should open when user tap on scanner icon
Verify user should able to scan the other user Qr code
Verify verify user should redirect to Request amount page after scanning other user QR code
Verify Review button should enable when user enter valid amount
Verify user should redirect to send request page after tapping on Review button
Verify request sent message should show when user tap on request button
Verify Waiting for payment notification should show on home page
Verify other user should receive the request notification

Devices: iPhone 6+ (12.4.5), Google pixel Xl 8.1
Fixed issues:
#4059
Please let me know if any thing else i need to verify for this task.
Thanks !


updating testing module

Updating testing module
Including .png of testing
Deleting original test.py

Including testing module for SpaCy as well


Updated fizbuzz using map operator

This is cool, would you mind making the map solution a second want to solve it, so we have two good examples on the same page?

@jwadhams Good idea, have updated

😍 thanks!


Update prometheus message format

Description
Changes proposed in this pull request:

Update prometheus message format

@mszostok tested locally, and it works 🚀

Thanks guys, I answered your comments, please take a look once again :)
@pkosiec @huseyinbabal

Only MS Teams don't respect properly new lines:

but it's still quite readable.


Dapr V 1.10 is causing crashes in coredns service in Kubernetes cluster on AWS

Can you provide more info on this? Logs? steps to reproduce? how do you know this is Dapr related?

Ping @gmangesh77

Hello @yaron2 ,
We dubbed the issue by inspecting all our mucroservices one by one and only factor which was common was dapr service version running greater than 1.9.6 .
When same service which run along with dapr version 1.9.6 runs stable without hogging up our CPU utilization.

Any logs?

We have moved to stable 1.9.6  version now. We will update after your major stable update only.

I have recently faced this issue with v1.10.4. When in this version, CPU utilization of Dapr sidecars and CoreDNS containers keeps increasing over time.
Downgrading to v1.9.0 slows the issue for me.