Actions.popTo not working with beta 15 and above

Version
Tell us which versions you are using:

react-native-router-flux v4.0.0.beta15 (v3 is not supported)
react-native v0.45.1

Expected behaviour
Pops all scenes and and pushes new scene in argument. This works up until beta 11.
Actual behaviour
Does nothing
Steps to reproduce
Actions.popTo('launch') and this is called from a route inside a tab bar.
-routes.js
<Scene key="root" {...sceneConfig} hideNavBar={true} style={{backgroundColor: 'white'}} >
               <Scene key="launch"{...sceneConfig} component={InitialScreen} initial hideNavBar style={{ backgroundColor:'white'}}/>
               <Scene key="login" {...sceneConfig} cardStyle={{backgroundColor: 'white'}} component={Login} title="Login" duration={1}/>
               <Scene key="register" {...sceneConfig}component={Register} duration={1}/>
</Scene>

var sceneConfig = {
   cardStyle: {
       backgrouwndColor: 'white'
   },
   labelStyle: {
       fontFamily: 'open-sans',
   },
   activeTintColor: '#de1d3e',
   inactiveTintColor: 'gray',
   navBarTintColor: 'red',
}

Is there a new function that needs to be called in the newer versions for this to work?

Thanks, should be fixed now. Please check latest master (Example Login3 page contains popTo)

Ty, it works now.

Action.popTo works fine,
Use it as  Actions.popTo("sceneName");
Note: Make sure component name should be in double quotes.

@HemantRMali There is no RNRF beta.28 yet?

nvm ... beta.28 is missing from the repo release but was submitted to npm.

@HemantRMali and @aksonov I'm on
"react": "16.2.0",
"react-native": "0.53.0",
"react-native-router-flux": "^4.0.0-beta.28"
And popTo is still broken. Trying to use it crashes the app.

Sorry, beta.28 is fully experimental and should not be used (some developers asked to publish to fix react-navigation 1.x issues)

On 7 May 2018, at 02:10, Dave Padovano<EMAIL_ADDRESS>wrote:
nvm ... beta.28 is missing from the repo release but was submitted to npm.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/aksonov/react-native-router-flux/issues/2163#issuecomment-386927398, or mute the thread https://github.com/notifications/unsubscribe-auth/ABQpccoVuUwCARCiPVutM-KROP8tCPyJks5tv5DxgaJpZM4OqWZ-.


Fill Path does not provide a source rectangle?

Hey there,
Really loving this library with all my heart. I'm currently working on a game that requires polygons - I draw these using DrawBatch.FillPath(TextureBrush, Polygon) - problem is that when the polygon moves, so does the texture inside. It seems that Polygon both references the position in the texture (using a modular type repetition) and also the position on the screen.
Would this be a conflicting issue with the 2D Camera matrix, or am I missing something?

Regards,

Eddie

You might need to provide more information on how you're batching these draw calls.
My first thought is you might get around this by drawing each polygon in its own batch, drawing the polygon at a fixed location relative to origin, and then using transforms to position them in the proper location on the screen.
Probably for simplicity, the API never surfaced more complex ways of handling UV coordinates.  There's a few ways it could be dealt with of varying difficulty.  Easiest might to to try and encode an offset in the texture brush, which might cover this case, but I don't know if it would be adequate if rotation were introduced.
My analysis of all this might be a bit rusty.  It's been a few years since I did any major work on this.

You might need to provide more information on how you're batching these draw calls.

I've got a Texture of an asteroid that can be repeated in each direction, and I've got a polygon that I draw at the position it's at.
So I'll start off calling the draw batch like so (using a 2D camera matrix):
`
        DrawBatch.Begin(DrawSortMode.Deferred, null, null, null, null, null, Camera.Matrix);

`
Which is then proceeded by a call to the draw batch.
`
drawbatch.FillPath(Brush, BoundVertices);
`

drawing the polygon at a fixed location relative to origin, and then using transforms to position them in the proper location on the screen.

The texture is not placed at any different position if I change the transform matrix, now I don't mean to be rude but I also fail to understand how adding a matrix transform will change the way a triangulated polygon is drawn with a texture.

When you call one of the draw functions, the position elements of the vertex array are the same points you provide.  The UV elements are also assigned the same values, which also causes your texture to wrap when you're dealing with values larger than 0..1.  This is what gives the appearance of your texture being fixed to the world and your polygons "sliding over it".  That's because it basically is.
So it can be influenced by how the world or camera matrix are setup ahead of the draw call.
Alternatively, now that I'm looking closer at the code, the Tranform property on the TextureBrush may already be enough to provide what you want.  Before each FillPath call, update the position component of the Transform property of the brush, so the texture will be offset by the same amount.  Then it should track the moving asteroid.  You can tweak the transform further if scale is an issue.

I did some testing with your example, and my advice mostly holds.  I did need to make a small tweak to the project, which I've just checked in changes for.  But basically, you'd change your drawing block to
var brush = new TextureBrush(texture);
brush.Transform = Matrix.CreateTranslation(new Vector3(-Path[0].X, -Path[0].Y, 0)) * brush.Transform;

drawBatch.FillPath(brush, Path);

The change to LilyPath is that the TextureBrush transform is by default a scale matrix of 1/W, 1/H, which you'd multiply against your offset translation.

Cheers! Works great now.


Unable to trigger custom event

Version
1.0.0-beta.29
Reproduction link
http://no-link
pasting code instead:
      <div class="journeys-dropdown-container">
        <tc-dropdown
          data-qe-id="journeys-dropdown"
          :mode="'select'"
          :options="dropdownElements"
          :placeholder-label="placeholderLabel"
          :theme="dropdownTheme"
          @input="changeTemplate">
        </tc-dropdown>
      </div>

  it('should change the charts when we select another template', async () => {
    const input = wrapper.find({ name: 'dropdown' });
    input.trigger('input', [122588]); // tried this
    wrapper.vm.$emit('input', 122588); // tried this as well
    await wrapper.vm.$nextTick();
    console.log(wrapper.vm);
    expect(wrapper.findAll('.box').length, 'boxes').to.equal(4);
  });

Steps to reproduce
I used .trigger to trigger an 'input' event for a custom child component I am testing. I need to pass a payload with an array of integers. (or just one integer). Do I use .trigger or wrapper.vm.$emit ? How can I debug this?
What is expected?
I used .trigger to trigger an 'input' event for a custom child component I am testing. I need to pass a payload with an array of integers. (or just one integer). Do I use .trigger or wrapper.vm.$emit ? How can I debug this?
What is actually happening?
The event isnt triggered correctly
other comments
The discord help channel is practically deserted. We beg for some help, I've been using vue-test-utils for 2 years, still in beta, and help is really scarce..

older issue on the topic: https://github.com/vuejs/vue-test-utils/issues/145

I managed to bypass this limitation by passing the event through in a stub:
<!-- "open" is a custom event triggered by watching -->
<!-- the `open` attribute on the wrapped dialog. -->
<DialogWrapper @open="doStuff" />

it('does stuff when dialog is opened', () => {
  const wrapper shallowMount(MyComponent, {
    stubs: {
      DialogWrapper: `<dialog @open="$emit('open')" />`,
    },
  });

  wrapper.trigger('open');

  // Assuming we have all spies set up.
  expect(wrapper.vm.doStuff).toHaveBeenCalled();
});

Note the stubs wrapper option. Just set it to any html tag and make sure it passes on which ever event you are testing:
<div @myEvent="$emit('myEvent')">

Hey, I am sorry but from what I see, this should work? @lmiller1990 @JessicaSachs am I missing something here? Trigger works both on custom and native events.

const input = wrapper.find({ name: 'dropdown' });
input.trigger('input', [122588]).vm.$emit; // this?

Should you be doing emit on the input you found?
Also join https://vue.land/ it is very active! There is a #testing channel.

I've also had this issue.  This, however, has worked for me
const input = wrapper.find('something-stub');
input.vm.$emit('foobar');


How to add new coin in Peatio?

I am looking instructions how to add new coin in Peatio. I found this tutorial: https://gist.github.com/brossi/175f60bd1dc4f99f9373 but it was written three years ago.
My withdrawal does not work. Maybe there is newer hints somewhere?

@vetal20600 https://gist.github.com/brossi/175f60bd1dc4f99f9373

Welcome to my fork!!! We will make it more better!!!
Https://github.com/netwareboss/btctw

@netwareboss do you have any new coins there? I see only new fiat currency added.

https://www.btczoo.com/markets/btcuah
From: vetal20600<EMAIL_ADDRESS>Sent: Monday, March 27, 2017 6:40 PM
To: peatio/peatio
Cc: Subscribed
Subject: Re: [peatio/peatio] How to add new coin in Peatio? (#552)
@netwareboss https://github.com/netwareboss  do you have any new coins there? I see only new fiat currency added.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/peatio/peatio/issues/552#issuecomment-289492984 , or mute the thread https://github.com/notifications/unsubscribe-auth/AIx21pf9sezdI6551t2_1AK5G6tbBmulks5rp9hOgaJpZM4MTotV .  https://github.com/notifications/beacon/AIx21iK_YeFVoFQgLVMVvxQeFntydUCcks5rp9hOgaJpZM4MTotV.gif

Yes we do
We have ETH ETC USDT LTC and others
<EMAIL_ADDRESS>From: vetal20600<EMAIL_ADDRESS>Sent: Monday, March 27, 2017 6:40 PM
To: peatio/peatio
Cc: Subscribed
Subject: Re: [peatio/peatio] How to add new coin in Peatio? (#552)
@netwareboss https://github.com/netwareboss  do you have any new coins there? I see only new fiat currency added.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/peatio/peatio/issues/552#issuecomment-289492984 , or mute the thread https://github.com/notifications/unsubscribe-auth/AIx21pf9sezdI6551t2_1AK5G6tbBmulks5rp9hOgaJpZM4MTotV .  https://github.com/notifications/beacon/AIx21iK_YeFVoFQgLVMVvxQeFntydUCcks5rp9hOgaJpZM4MTotV.gif

I emailed you valuead but I haven't received a response. Also, do you have a live exchange available that you've worked on? BTCZoo doesn't appear to be active.

i run btcw but i can not find LTC and ETC in this.
please provide me help for how to add ETC cryptocurrency  in this.
thanks in advance..

I have not add ETC in it!!
I need someone help me ,too
On Mon, 12 Jun 2017 at 4:33 PM NeerajThapliyal<EMAIL_ADDRESS>wrote:

i run btcw but i can not find LTC and ETC in this.
please provide me help for how to add ETC cryptocurrency in this.
thanks in advance..
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/552#issuecomment-307724277, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AGitiISUTKoNsqA3JEUqfpApLvEOgNsPks5sDPfNgaJpZM4MTotV
.

@valuead I wanna see your works. Can you share it?

I know a great Peatio developer but he's very busy. If you need help though I might be able to reach out to him. Email me<EMAIL_ADDRESS>

hello
the source of ethereum is open source now!!
please check my fork
please help me to continue by donating

You absolutely rock :)
I am totally donating to you, as soon as I get my exchange up and running!
On Sun, Sep 3, 2017 at 12:16 PM, Muhammed Nagy<EMAIL_ADDRESS>wrote:

hello
the source of ethereum is open source now!!
please check my fork
please help me to continue by donating
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/552#issuecomment-326780011, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADr4eGKTOnqMGhXaRSOOyEb0_p87s6UMks5segwYgaJpZM4MTotV
.

--
Felipe

Thanks

thanks
2017-09-03 10:56 GMT+08:00 Muhammed Nagy<EMAIL_ADDRESS>
Thanks
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/552#issuecomment-326781232, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AGitiH4KmuPmzkHm6H9S6aZytaWmPi0eks5sehV5gaJpZM4MTotV
.


compartment & compartment boundary terms for genital discs

The terms:
genital disc  	FBbt:00001784
male genital disc FBbt:00001785
female genital disc FBbt:00001787
lack compartment/coordinate terms (anterior compartment, posterior compartment, dorsal compartment, ventral compartment, anterior-posterior compartment boundary, dorsal-ventral compartment boundary) that were assigned to the other imaginal discs. Those terms were all obsoleted as spatial qualifiers, and need to be added as FBbt terms  in the same manner as for the other imaginal discs (for example, "anterior-posterior compartment boundary of the wing disc" and "wing disc dorsal compartment").

IIRC, compartments work a little differently in the genital discs.  Worth checking classical/primary lit carefully before adding (some info in blue book + a good chapter in Ashburner and Wright series).

@dosumis Thanks for the heads up!
@SianGramates I am not going to be able to address this for the Feb FBbt update, but will aim to look at it for the May update. I hope this is going to be okay for your work.

I have added terms for the anterior compartments, posterior compartments, and the anterior-posterior compartment boundary, for the genital disc, female genital disc, and male genital disc. Dorsal/ventral compartments and boundaries are not applicable to the genital discs, as far as I can tell.


external storage

surefire-report.pdf

Can one of the admins verify this patch?

ok to test

retest this please

newman-report.pdf

retest this please


Automated cherry pick of #2842: fix ucloud snapshot delete

Cherry pick of #2842 on release/2.11.
#2842: fix ucloud snapshot delete

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.11@1095587). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.11   #2844   +/-   ##
==============================================
  Coverage                ?   7.16%
==============================================
  Files                   ?     472
  Lines                   ?   75013
  Branches                ?       0
==============================================
  Hits                    ?    5378
  Misses                  ?   69183
  Partials                ?     452

Flag
Coverage Δ

#aFlag
7.16% <0%> (?)

Impacted Files
Coverage Δ

pkg/multicloud/ucloud/snapshot.go
0% <0%> (ø)

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 1095587...31109c3. Read the comment docs.

/lgtm

/approve


add metrics agents

Summary by CodeRabbit
Release Notes

New Features

Introduced HelmRelease configurations for cert-manager CRDs, monitoring agents, and Victoria Metrics Operator, enhancing Kubernetes deployment capabilities.
Added support for external labels and remote write URLs in the VMAgent configuration.
Implemented new resource specifications for the vmselect component, ensuring defined resource constraints.

Improvements

Updated various Helm charts and values for better configuration management, including the introduction of new properties and restructuring of dependencies.
Enhanced documentation for cert-manager and Victoria Metrics Operator, providing clearer installation and configuration instructions.
Adjusted resource limits for Redis failover, optimizing memory allocation.

Bug Fixes

Resolved issues with template handling and indentation across multiple charts, ensuring proper YAML formatting and functionality.

also please add into migrations:
# we remove monitoring, because we renamed it to monitoring-agents
kubectl delete hr -n cozy-monitoring monitoring

Since you renamed monitoring to monitoring-agents, we need to remove previus release


MIG-284 - phase 1 of rsync client pod progress reporting

This depends on #711
Intended to partially fix #730

closing in favor of #734


chore(deps): bump revm to accomodate latest changes

looks like some specid issues?

@mattsse yep pushed some debug info (will revert that), the original test failure is sparklend having changed their RPC setup, so we'll need to take it out of the integration tests and have a separate job for it, like maple


unresolved package.json conflicts

@kartikk221
https://github.com/kartikk221/hyper-express/blob/d92ed8fa9f8a1f32364cf80b78980800a2b772d7/tests/package.json#L12-L17
https://github.com/kartikk221/hyper-express/blob/d92ed8fa9f8a1f32364cf80b78980800a2b772d7/tests/package-lock.json#L12-L17

Looks like these were caused by a snyk merge, I have pushed a commit to resolve this. Thanks for the heads up!


What Do I change the DNS to and do I have to change the TCP/UDP ports?

C:\Users\aidan\PegaSwitch-master>ruby rdns.rb $<IP_ADDRESS>
I, [2017-03-14T16:09:08.644173 #12936]  INFO -- : Starting RubyDNS server (v1.0.3)...
I, [2017-03-14T16:09:08.644173 #12936]  INFO -- : <> Listening on udp:<IP_ADDRESS>:53
I, [2017-03-14T16:09:08.659645 #12936]  INFO -- : <> Listening on tcp:<IP_ADDRESS>:53
With this, what settings would I change on my switch?

Change the 'DNS Servers' on your switch to the IP of your computer.

Ok, but when the DNS server is less than fifteen characters, the switch adds more 0s to make up for that, is that ok?

Yes :)

Ok, thx, I will try. Also, when I typed the command you gave for serve.py, it didn't work so I just typed serve.py to run it, would that work?

You need to type python serve.py

I get this error when I type that.
C:\Users\aidan\PegaSwitch-master>python serve.py
'python' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\aidan\PegaSwitch-master>


fix: add /var/log/cron to rsyslog logrotate

What type of PR is this?
/kind bug

What this PR does / why we need it:
This PR adds /var/log/cron to the rsyslog logrotate config. This has no impact on hosts that don't have /var/log/cron since the rotate uses missingok
Currently Azure Linux AKS nodes are not rotating /var/log/cron which results in uncurbed growth of the file on long lived hosts. The default configuration within AzureLinux rotates /var/log/cron, but AKS replaces the rsyslog logrotate config with a custom one.
Which issue(s) this PR fixes:

Fixes #
Requirements:

[x] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
Add log rotation for /var/log/cron in Azure Linux images

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 71.109%

Totals

Change from base Build<PHONE_NUMBER>4:
0.0%

Covered Lines:
2577

Relevant Lines:
3624

💛  - Coveralls


Fix to work with node > v0.4

Hi,
I've patched the code to not break when using a version of node that throws exceptions when require.paths is accessed. I haven't attempted anything fancier than just silently swallowing the exception.
Cheers,
Gareth.

Merged in 38dc33a67e73d7f9826e8e3a6bac0ee5a67239fa. Thanks!


feat: Improve support for nested fragments

Make sure you're opening this pull request pointing to beta branch!
What does this PR do/solve?
This PR improves fragment support.
Given the schema:

type Query {
  interface: InterfaceA
  union: UnionA
}

interface InterfaceA {
  s: String
  i: Int
}
union UnionA = ImplementationA | ImplementationB
type ImplementationA implements InterfaceA {
  s: String
  i: Int
  b: Boolean
}
type ImplementationB implements InterfaceA {
  s: String
  i: Int
  i2: Int
}

and the query
fragment InterfaceFragment on InterfaceA {
  s
  i
  ...on ImplementationA {
    b
  }
  ...on ImplementationB {
    i2
  }
}
fragment UnionFragment on UnionA {
  ...on ImplementationA {
    b
  }
  ...on ImplementationB {
    s
  }

}
query some_query {
  interface {
    ...InterfaceFragment
  }
  union {
    ...UnionFragment
  }
}

This is an example of what Artemis currently generates:

@JsonSerializable(explicitToJson: true)
class SomeQuery$Query$InterfaceA extends FileSystemEntryMixin
    with EquatableMixin {
  SomeQuery$Query$InterfaceA();
  factory SomeQuery$Query$InterfaceA.fromJson(Map<String, dynamic> json) =>
      _$SomeQuery$Query$InterfaceAFromJson(json);
  @override
  List<Object?> get props => [s, i];
  Map<String, dynamic> toJson() => _$SomeQuery$Query$InterfaceAToJson(this);
}

The code above is not valid Dart code.
Instead, I believe it should be:

@JsonSerializable(explicitToJson: true)
class SomeQuery$Query$InterfaceA extends JsonSerializable
    with EquatableMixin, InterfaceFragmentMixin {
  SomeQuery$Query$InterfaceA();
  factory SomeQuery$Query$InterfaceA.fromJson(Map<String, dynamic> json) =>
      _$SomeQuery$Query$InterfaceAFromJson(json);
  @override
  List<Object?> get props => [s, i];
  Map<String, dynamic> toJson() => _$SomeQuery$Query$InterfaceAToJson(this);
}

Hi, thanks for PR
I’ll check it this week

You’re welcome. I think this needs some additional work on handling
fragment spreads to work properly though, so let me have a look at that.
On Sun, 16 May 2021 at 15:35, Vasiliy Ditsyak @.***>
wrote:

Hi, thanks for PR
I’ll check it this week
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/comigor/artemis/pull/309#issuecomment-841825968, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2UFS3P46BNWZBQXBCV3LLTN7J27ANCNFSM44XDC5ZQ
.

@budde377 ok
tag me when the PR will be ready

@vasilich6107.
I think the changes needed are pretty big, so to test my hypothesis I created this project: https://pub.dev/packages/graphql_codegen
Here I create "interfaces" for fragments and fields, instead of mixins, and create classes for operations and selection sets. I'll be using that package instead since I'm using the graphql_flutter client, but feel free to take anything you can use.

Hi, sorry for this half necro. I was wondering whether there are there any plans to integrate this into artemis (from either of both parties involved in this thread so far) as I hit several issues with nested fragments recently as well and got excited to see this being worked on.
If there are still changes required, please let me know if I can look into it and where I should start!

I ended up creating my own package with better fragment support:
https://pub.dev/packages/graphql_codegen
Here's a post outlining the motivation:
https://budde377.medium.com/structure-your-flutter-graphql-apps-717ab9e46a5d
On Mon, Aug 23, 2021 at 8:49 AM geisterfurz007 @.***>
wrote:

Hi, sorry for this half necro. I was wondering whether there are there any
plans to integrate this into artemis (from either of both parties involved
in this thread so far) as I hit several issues with nested fragments
recently as well and got excited to see this being worked on.
If there are still changes required, please let me know if I can look into
it and where I should start!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/comigor/artemis/pull/309#issuecomment-903490234, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2UFSZU6EWPGFTCXKOW7RTT6HVPTANCNFSM44XDC5ZQ
.


feat(charts): adds a helm chart that can deploy argo-diff

feat(docker): adds support for running as non-root user
feat(actions): adds helm chart actions. Helm lint + helm releaser

0 of 0 apps with changes compared to live state
9:57PM UTC, 14 Jan 2024

Combined #23 and #25  into one PR


cannot install succesfully on ubuntu - help

I have habridge running for years. But I cannot migrate it from one hypervisor to another one successfully so I decided to reinstall and export import backup.
followed to the letter:
https://github.com/bwssytems/ha-bridge#manual-installation-of-ha-bridge-and-setup-of-systemd-service
But I get this:
pi@habridge:~$ mkdir ha-bridge
pi@habridge:~$ cd ha-bridge/
pi@habridge:~/ha-bridge$ wget https://github.com/bwssytems/ha-bridge/releases/download/v5.3.0/ha-bridge-5.3.0.jar
--2020-08-23 10:59:32--  https://github.com/bwssytems/ha-bridge/releases/download/v5.3.0/ha-bridge-5.3.0.jar
Resolving github.com (github.com)... <IP_ADDRESS>
Connecting to github.com (github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/39848099/f05f9800-b1e3-11e9-831f-1819c0225853?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200823%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200823T105934Z&X-Amz-Expires=300&X-Amz-Signature=06543acf49d64f0c3e6431b51c69fe00ce3faabb2a03147a41fe08ad1c18f7c1&X-Amz-SignedHeaders=host&actor_id=0&repo_id=39848099&response-content-disposition=attachment%3B%20filename%3Dha-bridge-5.3.0.jar&response-content-type=application%2Foctet-stream [following]
--2020-08-23 10:59:32--  https://github-production-release-asset-2e65be.s3.amazonaws.com/39848099/f05f9800-b1e3-11e9-831f-1819c0225853?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200823%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200823T105934Z&X-Amz-Expires=300&X-Amz-Signature=06543acf49d64f0c3e6431b51c69fe00ce3faabb2a03147a41fe08ad1c18f7c1&X-Amz-SignedHeaders=host&actor_id=0&repo_id=39848099&response-content-disposition=attachment%3B%20filename%3Dha-bridge-5.3.0.jar&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... <IP_ADDRESS>
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9640491 (9.2M) [application/octet-stream]
Saving to: ‘ha-bridge-5.3.0.jar’

ha-bridge-5.3.0.jar 100%[===================>]   9.19M  8.76MB/s    in 1.0s

2020-08-23 10:59:34 (8.76 MB/s) - ‘ha-bridge-5.3.0.jar’ saved [9640491/9640491]

pi@habridge:~/ha-bridge$ cd /etc/systemd/system
pi@habridge:/etc/systemd/system$ sudo nano ha-bridge.service
[sudo] password for pi:
pi@habridge:/etc/systemd/system$ sudo systemctl daemon-reload
pi@habridge:/etc/systemd/system$ sudo systemctl start ha-bridge.service
pi@habridge:/etc/systemd/system$ sudo systemctl enable ha-bridge.service
Created symlink /etc/systemd/system/multi-user.target.wants/ha-bridge.service → /etc/systemd/system/ha-bridge.service.
pi@habridge:/etc/systemd/system$ tail -f /var/log/syslog
Aug 23 11:00:23 habridge systemd[1]: Reloading.
Aug 23 11:00:23 habridge systemd[1]: /lib/systemd/system/dbus.socket:5: ListenStream= references a path below legacy directory /var/run/, updating /var/run/dbus/system_bus_socket → /run/dbus/system_bus_socket; please update the unit file accordingly.
Aug 23 11:00:25 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:25 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:25 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:25 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:30 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:30 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:30 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:30 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:35 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:35 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:35 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:35 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:40 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:40 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:40 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:40 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:45 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:45 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:45 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:45 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:50 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:50 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:50 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:50 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:00:55 habridge multipathd[633]: sda: add missing path
Aug 23 11:00:55 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:00:55 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:00:55 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:01:00 habridge multipathd[633]: sda: add missing path
Aug 23 11:01:00 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:01:00 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:01:00 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:01:05 habridge multipathd[633]: sda: add missing path
Aug 23 11:01:05 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:01:05 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:01:05 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory
Aug 23 11:01:10 habridge multipathd[633]: sda: add missing path
Aug 23 11:01:10 habridge multipathd[633]: sda: failed to get udev uid: Invalid argument
Aug 23 11:01:10 habridge multipathd[633]: sda: failed to get sysfs uid: Invalid argument
Aug 23 11:01:10 habridge multipathd[633]: sda: failed to get sgio uid: No such file or directory

This still looks as you have path issues for your system. The error you received is that it could not find the java executable
Aug 23 13:03:44 habridge systemd[1345]: ha-bridge.service: Failed at step EXEC spawning /usr/bin/java: No such file or directory

I have restored my older VM snapshot and that solved it. Reinstall was not an option for me.


Error on installing Caravel.

Hi,
I'm running a digialocean ubuntu instance and i'm trying to install Caravel on it.
When running: pip install caravel
I get:
Collecting caravel
Downloading caravel-0.8.9.tar.gz (32.0MB)
99% |████████████████████████████████| 32.0MB 33.4MB/s eta 0:00:01Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 328, in run
wb.build(autobuilding=True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 748, in build
self.requirement_set.prepare_files(self.finder)
File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 360, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 577, in _prepare_file
session=self.session, hashes=hashes)
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 810, in unpack_url
hashes=hashes
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 649, in unpack_http_url
hashes)
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 871, in _download_http_url
_download_url(resp, link, content_file, hashes)
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 595, in _download_url
hashes.check_against_chunks(downloaded_chunks)
File "/usr/lib/python2.7/dist-packages/pip/utils/hashes.py", line 46, in check_against_chunks
for chunk in chunks:
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 563, in written_chunks
for chunk in chunks:
File "/usr/lib/python2.7/dist-packages/pip/utils/ui.py", line 139, in iter
for x in it:
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 552, in resp_read
decode_content=False):
File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/response.py", line 344, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/response.py", line 301, in read
data = self._fp.read(amt)
File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/filewrapper.py", line 54, in read
self.__callback(self.__buf.getvalue())
File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/controller.py", line 224, in cache_response
self.serializer.dumps(request, response, body=body),
File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/serialize.py", line 81, in dumps
).encode("utf8"),
MemoryError
I also get this error on raspberry based system which is strange as i had it running a few hours earlier before I had this error.
Any thoughts?

Looks like you're running out of ram. It might only happen sometimes as other processes may or may not be using memory. To find out what's using your memory, you can use the command top, followed by F, arrow keys to highlight %MEM, then s and q to set the sort and quit the menu.

Hi andrewhn,
Thanks for the response. On first hand i thought this might be the error. In htop however it seems like my system is only using half of my ram available. I'm going to try to reduce my memory footprint and see what happens then. Does anyone know how much ram Caravel needs at this point?
Thanks.


RBAC feature should also provide minimally needed roles

I enabled the RBAC feature, and then found that "everything was broken" :)

the worker nodes couldn't connect to the api server until I provided a ClusterRoleBinding from User 'kube-worker' to ClusterRole 'system:node'
the kube-dns pod and the dashboard pods failed and restarted because they couldn't connect to the API server, with errors indicating that the api server IP <IP_ADDRESS> is completely not known (dial tcp <IP_ADDRESS>:443 i/o timeout). It turned out that that was true: kube-proxy was unable to talk to the API server and get the endpoints, and therefore failed to setup any iptables rules. It took me a long time to figure out how the networking is supposed to work, and then only by accident did I notice that issue.

This is my "minimal" role bindings so far:
apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: ClusterRoleBinding
metadata:
  name: worker-node
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:node
subjects:
- kind: User
  name: "kube-worker"
---
apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: ClusterRoleBinding
metadata:
  name: worker-node-proxy
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:node-proxier
subjects:
- kind: User
  name: "kube-worker"

It would be great if this could be provided by default, and/or at least pointed to in cluster.yaml.

Additionally this set was needed for making kube-dns etc actually work:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-system-admin
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["*"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-system-service-account-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kube-system-admin
subjects:
  - kind: ServiceAccount
    name: default
    namespace: kube-system

Based on https://blog.kcluster.io/setup-role-based-access-control-rbac-and-audit-logs-for-kubernetes-clusters-9e4db5b67020

Great @ankon, I'd love to know what the actual minimal RBAC permissions required for a functioning kube-aws install were. But while I'd like those as an install option or an example, I think the default kube-aws should include more open permissions, to enable everything to work just as if RBAC was not enabled.
If minimal permissions are applied by default, new users are going to get frustrated if they have to craft more RBAC resources to do every little thing :smile: None of the k8s examples they try are going to work, and often all that will happen is that they'll disable RBAC immediately rather than have to learn RBAC just to run a busybox test container. Better they launch a cluster with the RBAC capability enabled by default, and restrict access once they are familiar - is my thinking.
I used to use the below resources as the null-impact permissions for enabling RBAC on a kube-aws cluster build. I say 'used to' because apparently we can no longer specify 'resources' and 'nonResourceURLs' in the same role any more? So I guess I need twice and many roles and bindings for this base set-up now? 😭  (unless anyone knows a better way of handling that? ❓ )
Maybe the default kube-aws install could be with RBAC installed, with your minimal permissions, but plus an extra couple of role binding that open everything up again. Then to get a good restriction users could simply delete the couple of suggestively names resources (name: make-default-namespace-unsecured) and add their own specific permissions?
#
# These RBAC permissions open up the cluster as if RBAC was not enabled:
# The 'kube-admin' and 'kube-worker' users have full access
# The 'kube-system/default' and 'default/default' ServiceAccounts have full access
# This is a starting point to craft tighter permissions
#

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
    name: full-access
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["*"]
    nonResourceURLs: ["*"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-admin
subjects:
  - kind: User
    name: kube-admin
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-worker
subjects:
  - kind: User
    name: kube-worker
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: system-default-service-account
subjects:
  - kind: ServiceAccount
    namespace: kube-system
    name: default
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: default-service-account
subjects:
  - kind: ServiceAccount
    namespace: default
    name: default
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io

If minimal permissions are applied by default, new users are going to get frustrated if they have to craft more RBAC resources to do every little thing

That does sound awfully familiar ... :)
Indeed, having a good OOB experience is really important, but for production at one point you should understand RBAC and work with the minimal permissions for your problem only. I think that it would make sense to just document these, and describe how to start a RBAC-enabled cluster without any "convenience" roles and bindings.

How about this for an agena?

[ ] Write a 'How to Enable and Bootstrap RBAC' page for the 'Documentation' folder with example permissions
[ ] Create an experimental.rbac option for cluster.yaml to enable RBAC, with option to install:

[ ] No permissions
[ ] Minimal, cluster works, workers can join permissions
[ ] Fully open permissions

[ ] Convince kube-aws community to enable RBAC by default, with some consensus level of initial permissions

With a side project of, what are the RBAC 'Minimal, cluster works, workers can join permissions' anyway? 🤣

That really sounds like a good plan!
Need to think a bit about it further, but maybe I can help here - at least my memory of what to do is still fresh ;)

Here's an example a typical users OOB experience with RBAC, a lot of wasted time due no OOB/bootstrap permissions: kubernetes/kubernetes/issues/38997
What unites you, me, and this person, is that even after getting RBAC working, we still don't know what permissions are actually minimally required by the cluster. 😕

@ankon our new best friend @uruddarraju has done a lot of the work towards the RBAC policies we need for kubw-aws: https://github.com/uruddarraju/kubernetes-rbac-policies

If you don't have RBAC or similar, then every container gets 'root' access to the entire cluster by default. When you enable RBAC with kube-aws nothing works. You can contact the controller, but worker nodes are blocks from even registering.
These are the bootstrap permissions I use to enable a k8s 1.5.x cluster to start working when you have RBAC enabled. Once you add these permission the worker nodes will be able to register with the controller. It provides no access for the default namespace, default Service Account, so user Pods launched in the default namespace will not have any k8s api access by default. Which is good 😄
#
# These RBAC permissions enable the cluster to operate, but restrict the default/default Service
# The 'kube-admin' and 'kube-worker' users have full access
# The 'kube-system/default' ServiceAccount has full access (used by the default kube-system Pods)
# The 'default/default' ServiceAccount has no access, and so can only pull public or ECR images
#

#
# ClusterRole's
#

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
    name: full-access
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["*"]
  - nonResourceURLs: ["*"]
    verbs: ["*"]
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
    name: read-access
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["get", "list", "watch"]
  - nonResourceURLs: ["*"]
    verbs: ["get", "list", "watch"]
---
#
# ClusterRoleBindings's
#

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-admin
subjects:
  - kind: User
    name: kube-admin
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: kube-worker
subjects:
  - kind: User
    name: kube-worker
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: system-default-service-account
subjects:
  - kind: ServiceAccount
    namespace: kube-system
    name: default
roleRef:
  kind: ClusterRole
  name: full-access
  apiGroup: rbac.authorization.k8s.io

Is there some place to find a working set of RBAC rules for a cluster? I have tried all of the usual references to the different issues discussing this topic but none of them make all the access denied errors go away on some of my host kubelets when I journalctl them.

@defunctzombie RBAC are Kubernetes permissions and journalctl is a Linux OS logging tool, I don't think there is any overlap?

@defunctzombie maybe the auditlog can help, enable in your cluster.yaml
https://github.com/coreos/kube-aws/blob/d6026883e8b2ae514f1b2fe82fb4a39c4fdcb944/config/templates/cluster.yaml#L436-L439

I don't think there is any overlap?

There is when I use it to see that kubelet is having permission denied errors when accessing the api.

The issue was that kubeadm configured my kubelets to use the kubernetes-admin user and not the kubelet user when accessing the api. When I gave that user permissions, kubelet was able to connect again.

guys, can you look on #316

Great @gianrubio.  I think #316 is a hugely helpful patch for users' confusion when they enable RBAC and nothing works. Basically we provide default open permissions on the 'kube-system' namespace and the 'kube-admin' user, and default closed permissions for everything else, including the default namespace.
Something I noted in 1.5.x is that enabling RBAC now comes with some build in cluster roles. These roles appear to generated by 'bootstrap' code (examples are in the 'testdata' directory).
https://github.com/kubernetes/kubernetes/tree/master/plugin/pkg/auth/authorizer/rbac/bootstrappolicy
They are quite complex (meaning lengthy) and there are some general roles and some 'system:' roles. However, the 'cluster-admin' role is the same as the 'full-access' cluster role I suggested, so if you like, you could change your page to bind to the 'cluster-admin' role, rather than creating a role. It make no practical difference though.
It may even be possible to bind the 'kube-worker' user to a more restricted role, like maybe 'system:node'. But there are roles in the code that aren't in 1.5.1, like 'system:node-bootstrapper' so this may be moving target; No documentation so hard to say. We may be better to stick with 'cluster-admin' or 'full-access'.
General purpose roles:

admin
cluster-admin
edit
view

'system:' prefixed roles:

system:basic-user
system:controller:replication-controller
system:discovery
system:node
system:node-proxier

Sadly most k8s and tool developers develop with RBAC disabled, and so almost no one documents or publishes the permission requirements of their code. 😞

We should follow the k8s nomenclature for every configuration, but as you write there's no docs about what are the default/recommended rbac policies :(. As you suggested, I renamed the full-access to cluster-admin.
"Let's get the ball rolling ⚽"  (@mumoshu), we could adapt the policies as long we are using rbac.


can't show PM10 data on Apple Watch

I try with same parameters on Postman, which works. and then I hardcode those params for Apple watch extensions as show above, but failed to fetch data on apple watch.

Hi! Sorry, I missed the notification email then :(
If you're still interested in this, it looks like the problem was very simple - in one of the data series, for a different parameter (CO I think?) the returned values were listed as numbers, not as strings. And the parsing code in init(from decoder:) was throwing an error, because it assumed it always needs to parse the value from a string first.
This seems to fix it:
if let timestamp = try? Int(container.decode(String.self)) {
    self.date = Date(timeIntervalSince1970: TimeInterval(timestamp))
} else {
    throw InvalidValueError()
}

if let value = try? Double(container.decode(String.self)) {
    self.value = value
} else if let value = try? container.decode(Double.self) {
    self.value = value
} else {
    throw InvalidValueError()
}

Hi! Sorry, I missed the notification email then :(
If you're still interested in this, it looks like the problem was very simple - in one of the data series, for a different parameter (CO I think?) the returned values were listed as numbers, not as strings. And the parsing code in init(from decoder:) was throwing an error, because it assumed it always needs to parse the value from a string first.
This seems to fix it:
if let timestamp = try? Int(container.decode(String.self)) {
    self.date = Date(timeIntervalSince1970: TimeInterval(timestamp))
} else {
    throw InvalidValueError()
}

if let value = try?

In what way it didn't work?

In what way it didn't work?


Adds channel scope support

Description
Adds admin command:
!spellbot scope [server|channel]
The default setting is server. When changed to channel the !play queues will be specific to each channel on the server.

Resolves #20

Checklist

[x] Add tests for these changes
[x] Test coverage is not decreased
[ ] Entire test suite passes

Codecov Report

Merging #22 into master will increase coverage by 0.64%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #22      +/-   ##
==========================================
+ Coverage   96.48%   97.12%   +0.64%
==========================================
  Files           8       10       +2
  Lines         483      521      +38
  Branches       65       71       +6
==========================================
+ Hits          466      506      +40
+ Misses         13       12       -1
+ Partials        4        3       -1

Impacted Files
Coverage Δ

src/spellbot/__init__.py
94.89% <100.00%> (+0.19%)
:arrow_up:

src/spellbot/data.py
100.00% <100.00%> (+1.73%)
:arrow_up:

...ersions/95d019d132f5_wait_time_by_channel_scope.py
100.00% <100.00%> (ø)

...ot/versions/versions/aae06e464fc4_servers_table.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Auto Select Country

Currently, the starter will automatically select the region if provided by the response from the Create a Cart API call, but it won't select the country even if cart.shipping_address.country_code is set.

Hi @stnguyen90,
If you are up for it then feel free to open a PR with this, I won't be adding it, as the starter is just meant as a starter for users to build onto themselves, and I think it does that job fine as is. But I would definitely not oppose merging it if such a PR was opened 😄

@kasperkristensen, I'm open to creating a PR. Can this be left open and me assigned to it to track the work?

Sure thing @stnguyen90, I've assigned you 😄


Ftp Client constructor overload that accepts a System.Uri

FTP OS: Unix
FTP Server: Irrelevant
Computer OS: Windows (development) / Docker on Kubernetes + Ubuntu (Production)
Please provide a constructor overload for the FluentFTP.FTPClient type that accepts a System.Uri instead of a string for the host and an integer for the port. Currently, I have to do this:
Uri someUri = UriFactory.Create();
NetworkCredential credential = CredentialFactory.Create();
IFtpClient ftpClient = new FtpClient(uri.Host, uri.Port, credential);

This would be more convenient:
Uri someUri = UriFactory.Create();
NetworkCredential credential = CredentialFactory.Create();
IFtpClient ftpClient = new FtpClient(someUri, credential);

Ideally, the following constructors would be added to FtpClient:

FtpClient(Uri host)
FtpClient(Uri host, NetworkCredential credentials)
FtpClient(Uri host, string username, string password)

Any Uri can be verified for Ftp using the following oneliner:
bool isValid = (!(uri is null) && uri.Scheme == Uri.SchemeFtp);

Edit: port is of course an integer, not a string.

Good idea. Easy stuff.

Done. Gone live with 29.0.0:

New: New constructors for FtpClient to support hostnames in Uri format

https://www.nuget.org/packages/FluentFTP/29.0.0


Odd base_footprint_wheel frame floating around?

While running through the demo bag, I noticed there's a stray frame floating around. Is that intended?

Confirmed, but I don't know the answer.

base_footprint_wheel is from the wheel odometry. We typically check it out to make sure there isn't too much slippage, but isn't used for anything.

Per @athackst, WAI.


func-js can't compile files that are too large (a few megabytes) with a weird error

Looks like this is the same issue: https://github.com/ton-blockchain/ton/issues/971


Use SourceFile#full_path for mtime in feed.xml instead of implicit to_s which doesn't work for struct.

Fixes #244.

Coverage decreased (-0.1%) to 94.82% when pulling 916f6513292f490f2732380b5cf275b42e3deb28 on jarkko:master into ae51fe4636f39ccde0ff8b5b1dd6a0a05a150764 on middleman:master.

Coverage decreased (-0.1%) to 94.82% when pulling 916f6513292f490f2732380b5cf275b42e3deb28 on jarkko:master into ae51fe4636f39ccde0ff8b5b1dd6a0a05a150764 on middleman:master.

@jarkko Can you rebase this please as there are conflcts.

This file no longer exists in master.


Loop filter integrator telemetry issues

Similar to #102, the loop filter integrator telemetry can show erroneous values when the integrator is clamped. In that scenario, the integrator is first set by the loop filter itself, and then later it is clamped to another value. Since this variable is polled asynchronous to these operations, the telemetry channel may sample it before or after the clamping operation. Find a way to fix this behavior so that the telemetry channel only samples the clamped value.
I have a feeling this issue is going to occur frequently, so if there is a way to improve the telemetry polling mechanism to avoid this sort of problem universally that would be highly desirable.

Fixed by copying all telemetry variables to a separate dict exactly once at the end of the control loop. Reading and writing to this special dict is protected by a mutex such that it can't be read in the middle of an update.


Max PPS ramp up time depends on lookup table size

Discovered an interesting behavior in snabb when using large per-packet lookup table: The larger the hash table, the longer it takes to reach maximum packets per second (PPS). I've used binding table size of 0 (bypassing the lookup), 50k, 100k and 200k. It takes up to 13 seconds on an Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz to reach the maximum PPS:

For my lightweight 4 over 6 AFTR prototype (https://github.com/mwiget/snabbswitch/tree/lwaftr/), I need to lookup the binding for each packet. The look up key for the encapsulation path (IPv4 packets) is the IPv4 destination address and TCP/UDP (or ICMP Id) 16 Bit mask. The key size is 32+16=48 Bits (fits in a Lua number) and the value is an IPv6 address. Initially I created another lookup table for the encapsulation path with the IPv6 address as key, but turns out there is an easier way: Packets from the lightweight B4 client contain the IPv4 packet within an IPv6 header, so its possible to do a look up based on the IPv4 header information and compare the IPv6 packet source address with the hash result.
The test result was generated with a little snabb program lwaftrbench: https://github.com/mwiget/snabbswitch/tree/lwaftr/src/program/lwaftrbench, which basically sends the content of two PCAP files in each direction thru the lwaftr app and reports statistics every second:
ipv6_pcap_file ---> lwaftr ---> Statistics
    Statistics <--- lwaftr <--- ipv4_pcap_file

The slow ramp up effect can be seen when using an IPv4 PCAP file with 50k unique packets (hitting 50,000 unique binding table entries):
cd src/program/lwaftrbench/tests
$ grep CPU /proc/cpuinfo |head -1
model name	: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
../../../snabb lwaftrbench -D 30 snabb-port-50k.cfg b4-icmp-request-0138.pcap lwaftr-ipv4-50k.pcap
Configuration file: snabb-port-50k.cfg
running for 30 seconds
offset=0 len=6 -> psmask=0xfc00
50000 bindings parsed, using 1778 kBytes
ipv4_to_ipv6: 1496 bpp 0.013 MPPS, 0.152 Gbps.
ipv6_to_ipv4:   98 bpp 0.013 MPPS, 0.010 Gbps.
ipv4_to_ipv6: 1496 bpp 0.012 MPPS, 0.142 Gbps.
ipv6_to_ipv4:   98 bpp 0.012 MPPS, 0.009 Gbps.
ipv4_to_ipv6: 1496 bpp 0.009 MPPS, 0.113 Gbps.
ipv6_to_ipv4:   98 bpp 0.009 MPPS, 0.007 Gbps.
ipv4_to_ipv6: 1496 bpp 0.010 MPPS, 0.125 Gbps.
ipv6_to_ipv4:   98 bpp 0.010 MPPS, 0.008 Gbps.
ipv4_to_ipv6: 1496 bpp 0.607 MPPS, 7.266 Gbps.
ipv6_to_ipv4:   98 bpp 0.607 MPPS, 0.476 Gbps.
ipv4_to_ipv6: 1496 bpp 1.232 MPPS, 14.748 Gbps.
ipv6_to_ipv4:   98 bpp 1.232 MPPS, 0.966 Gbps.
ipv4_to_ipv6: 1496 bpp 1.233 MPPS, 14.758 Gbps.
ipv6_to_ipv4:   98 bpp 1.233 MPPS, 0.967 Gbps.
ipv4_to_ipv6: 1496 bpp 1.234 MPPS, 14.764 Gbps.
ipv6_to_ipv4:   98 bpp 1.234 MPPS, 0.967 Gbps.
ipv4_to_ipv6: 1496 bpp 1.230 MPPS, 14.715 Gbps.
ipv6_to_ipv4:   98 bpp 1.230 MPPS, 0.964 Gbps.
. . .

I'm curious to learn/find out what exactly happens here that will explain the jump in performance. My guess its memory caching by the CPU core.

The hash table key is built by the following function (https://github.com/mwiget/snabbswitch/blob/lwaftr/src/apps/lwaftr/lwaftr.lua)
local function ipv4idkey(ipv4, id, psmask)
  local psid = bit.band(id,psmask)
  local ipv4psid = bit.band(0xffffffffffffLL, ipv4)
  local key = tonumber(bit.bor(bit.lshift(ipv4psid,16), psid))
  return key
end

and the IPv6 address is stored as cdata:
local in_addr6  = ffi.new("uint8_t[16]")
local result = C.inet_pton(AF_INET6, binding_ipv6_addr, in_addr6)
local psidshifted = bit.lshift(psid,16 - psoffset - psid_len)
local ipv4psid = ipv4idkey(ipv4, psidshifted, 0xffff)
map_ipv4psid_to_ipv6[ipv4psid] = in_addr6

Is this a result of L1/L2 cache? How can I find out?

Definitely not a SnabbSwitch expert, but I've been trying to follow along. I would guess that making use of the PMU module: https://github.com/SnabbCo/snabbswitch/blob/master/src/lib/pmu.lua would allow you to see what the L1/L2/L3 cache hit ratio looks like as the execution ramps up, and things potentially start to be kept in one of the cache levels.
Cool idea for an app, by the way!

Great suggestion! Thanks. I added some basic reporting to the main program lwaftrbench and see the difference in L2 cache hit/miss, but I can't get L3 cache counters. Somehow I'm using pmu.setup() wrong:
    pmu.setup({
      "mem_load_uops_retired.l._hit",
      "mem_load_uops_retired.l._miss",
      "mem_load_uops_retired.l3_hit",
      "mem_load_uops_retired.l3_miss"})

Doing a test run with single packet versus 50k packets, I clearly see the expected L2 cache misses at the beginning for the large packet capture. Would be great to get L3 counters.
 $ sudo ./r2.sh
model name	: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
=========================================================
Running snabb-port-200k.cfg
PCAP files v6:b4-icmp-request-1502.pcap v4:aftr-icmp-reply-0098.pcap ...
taskset -c 0 ../../../snabb lwaftrbench -D 5 snabb-port-200k.cfg b4-icmp-request-1502.pcap aftr-icmp-reply-0098.pcap
Configuration file: snabb-port-200k.cfg
running for 5 seconds
offset=0 len=6 -> psmask=0xfc00
200000 bindings parsed, using 15633 kBytes
ipv4_to_ipv6:  138 bpp 2.749 MPPS, 3.035 Gbps.
ipv6_to_ipv4: 1460 bpp 2.749 MPPS, 32.105 Gbps.
ipv4_to_ipv6:  138 bpp 2.778 MPPS, 3.067 Gbps.
ipv6_to_ipv4: 1460 bpp 2.778 MPPS, 32.451 Gbps.
ipv4_to_ipv6:  138 bpp 2.774 MPPS, 3.062 Gbps.
ipv6_to_ipv4: 1460 bpp 2.774 MPPS, 32.397 Gbps.
ipv4_to_ipv6:  138 bpp 2.780 MPPS, 3.069 Gbps.
ipv6_to_ipv4: 1460 bpp 2.780 MPPS, 32.467 Gbps.
EVENT                                             TOTAL
cycles                                   12,999,707,304
ref_cycles                                            0
instructions                             19,565,368,417
mem_load_uops_retired.l1_hit              4,763,231,439
mem_load_uops_retired.l1_miss               266,653,176
mem_load_uops_retired.l2_hit                104,591,830
mem_load_uops_retired.l2_miss               162,061,346
---------------------------------------------------------
=========================================================
Running snabb-port-200k.cfg
PCAP files v6:b4-icmp-request-1502.pcap v4:lwaftr-ipv4-50k.pcap ...
taskset -c 0 ../../../snabb lwaftrbench -D 5 snabb-port-200k.cfg b4-icmp-request-1502.pcap lwaftr-ipv4-50k.pcap
Configuration file: snabb-port-200k.cfg
running for 5 seconds
offset=0 len=6 -> psmask=0xfc00
200000 bindings parsed, using 15633 kBytes
ipv4_to_ipv6: 1496 bpp 0.009 MPPS, 0.110 Gbps.
ipv6_to_ipv4: 1460 bpp 0.009 MPPS, 0.108 Gbps.
ipv4_to_ipv6: 1496 bpp 0.008 MPPS, 0.090 Gbps.
ipv6_to_ipv4: 1460 bpp 0.008 MPPS, 0.088 Gbps.
ipv4_to_ipv6: 1496 bpp 0.005 MPPS, 0.055 Gbps.
ipv6_to_ipv4: 1460 bpp 0.005 MPPS, 0.053 Gbps.
ipv4_to_ipv6: 1496 bpp 0.003 MPPS, 0.040 Gbps.
ipv6_to_ipv4: 1460 bpp 0.003 MPPS, 0.039 Gbps.
EVENT                                             TOTAL
cycles                                   13,177,342,212
ref_cycles                                            0
instructions                             13,404,706,258
mem_load_uops_retired.l1_hit              1,804,519,341
mem_load_uops_retired.l1_miss               267,961,568
mem_load_uops_retired.l2_hit                  2,129,026
mem_load_uops_retired.l2_miss               265,832,542
---------------------------------------------------------

Need to investigate further how pmu finds matching counters. The CPU is D-1540 has L3 cache:
$ lstopo|grep L3
  Socket L#0 + L3 L#0 (12MB)

Interesting! I found these docs/files on the D-1500's PMU's from Intel:
332427-001.pdf
xeon-d-1500-uncore-performance-monitoring.zip

My overall impression is that there is a fair amount of variation between that PMUs support from one CPU model to the next.
Intel publish some CSV files that list all of the counters for each CPU model (identified with CPUID instruction) and Snabb Switch has a script to translate these tables into Lua and lookup what is supported on the running machine.
Here is the Lua file containing the per-CPU definitions and the script that generates it:

lib/pmu_cpu.lua
scripts/generate-pmu.sh

The CPU-ID string is created with these lines in pmu_x86.dasl using the CPUID instruction.

Looks like the D-1500 (Broadwell-DE) lives at the bottom of the file: https://github.com/SnabbCo/snabbswitch/blob/master/src/lib/pmu_cpu.lua#L10510
It seems that L3 cache stats should exist:
    ["mem_load_uops_retired.l1_hit"] = 0x01d1,
    ["mem_load_uops_retired.l2_hit"] = 0x02d1,
    ["mem_load_uops_retired.l3_hit"] = 0x04d1,
    ["mem_load_uops_retired.l1_miss"] = 0x08d1,
    ["mem_load_uops_retired.l2_miss"] = 0x10d1,
    ["mem_load_uops_retired.l3_miss"] = 0x20d1,
    ["mem_load_uops_retired.hit_lfb"] = 0x40d1,
    ["mem_load_uops_l3_hit_retired.xsnp_miss"] = 0x01d2,
    ["mem_load_uops_l3_hit_retired.xsnp_hit"] = 0x02d2,
    ["mem_load_uops_l3_hit_retired.xsnp_hitm"] = 0x04d2,
    ["mem_load_uops_l3_hit_retired.xsnp_none"] = 0x08d2,
    ["mem_load_uops_l3_miss_retired.local_dram"] = 0x01d3

(TIL xsnp = cross-core snoop)

(Probably we should have a simple way to print all available counters for the current CPU...)

Oh I think I see the problem here.
The CPU can only track a limited number of general purpose event counters at a time: four when hyperthreads are enabled or eight when disabled. Marcel's examples show four general purpose counters so if he has hyperthreads enabled (BIOS) then the others are likely being skipped due to lack of hardware resources.
We should print a warning about this! The pmu.setup() function does return the number of counters that were dropped due to lack of resources but this is undocumented and should really become a warning with higher-level functions that call setup().
The Linux perf framework avoids this problem with sampling. It rotates the logical counters across the available physical counters and then also reports the % of time that the counter was active. I am not sure whether something like this would make sense for us and if so whether it should be done inside the pmu module or above in some higher-level code e.g. the engine.

Great catch! Thanks. Indeed, when I specify just the L2 and L3 hit/miss counters, I get what I'm currently interested in. The main question I'm trying to answer for myself is the following: Given random traffic, at what point is the lookup impacting processes on other cores. I hope to get an indication from the L3 hit/miss ratio, though I'm aware from the limited reading I've done so far, I'm not sure if such a conclusion can be made ;-).
Anyway, just run some tests again with the following 4 counters:
    pmu.setup({
      "mem_load_uops_retired.l2.hit",
      "mem_load_uops_retired.l2.miss",
      "mem_load_uops_retired.l3_hit",
      "mem_load_uops_retired.l3_miss"})

This reports the following, first running 4k unique packets thru  hash table with 200k binding entries, then with 50k unique packets:
snabb lwaftrbench -D 30 snabb-port-200k.cfg b4-icmp-request-0138.pcap lwaftr-ipv4-4k.pcap
...
ipv4_to_ipv6: 1496 bpp 1.410 MPPS, 16.880 Gbps.
ipv6_to_ipv4:   98 bpp 1.410 MPPS, 1.106 Gbps.
EVENT                                             TOTAL
cycles                                   73,734,875,518
ref_cycles                                            0
instructions                             74,380,017,968
mem_load_uops_retired.l2_hit                424,474,692
mem_load_uops_retired.l2_miss             1,340,172,842
mem_load_uops_retired.l3_hit                940,464,091
mem_load_uops_retired.l3_miss                         0

snabb lwaftrbench -D 30 snabb-port-200k.cfg b4-icmp-request-0138.pcap lwaftr-ipv4-50k.pcap
...
ipv4_to_ipv6: 1496 bpp 1.109 MPPS, 13.276 Gbps.
ipv6_to_ipv4:   98 bpp 1.109 MPPS, 0.870 Gbps.
EVENT                                             TOTAL
cycles                                   73,840,447,011
ref_cycles                                            0
instructions                             65,387,567,486
mem_load_uops_retired.l2_hit                182,810,566
mem_load_uops_retired.l2_miss             1,276,121,242
mem_load_uops_retired.l3_hit                894,374,142
mem_load_uops_retired.l3_miss                         0

The l3_miss counter doesn't seem to get updated. But the L2 hit/miss ratio clearly shows the impact of the larger packet base.

I do get correct l3_miss counters on a E5-2690v3. Anyhow, I need to split the packet injection part away from the app under test, because reading and repeating 50k packets is eating up a major part of the L3 cache. Even with an empty binding table I do get lots of L3 cache miss when loading 50k packets:
snabb lwaftrbench -D 30 snabb-port-50k.cfg b4-icmp-request-0138.pcap lwaftr-ipv4-50k.pcap
Configuration file: snabb-port-50k.cfg
running for 30 seconds
offset=0 len=6 -> psmask=0xfc00
50000 bindings parsed, using 6365 kBytes
. . .
ipv4_to_ipv6: 1496 bpp 1.072 MPPS, 12.825 Gbps.
ipv6_to_ipv4:   98 bpp 1.072 MPPS, 0.840 Gbps.
EVENT                                             TOTAL
cycles                                   104,719,843,882
ref_cycles                                   64,216,854
instructions                             61,424,683,495
mem_load_uops_retired.l2_hit                248,320,590
mem_load_uops_retired.l2_miss             1,276,794,789
mem_load_uops_retired.l3_hit                778,389,472
mem_load_uops_retired.l3_miss               498,403,630

Will try injecting the packets from another server over loopback cables. That will eliminate the PCAP file based packet injection.

Good news! Built a small app pcibench, which takes 2 PCAP files and 2 PCI addresses, then sends the content in a loop over both 10GE ports. Then I modified my lwaftrbench app to accept PCI addresses instead of PCAP files. Connecting both apps via 2 loopback cables helped me really test the lwaftr encap/decap function and its pretty good ;-).
Running the actual lwaftr app with a binding table of 200k entries:
./runlwaftrbench.sh snabb-port-200k.cfg
model name	: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
../../../snabb lwaftrbench -D nil snabb-port-200k.cfg 0000:05:00.1 0000:0b:00.1
Configuration file: snabb-port-200k.cfg
offset=0 len=6 -> psmask=0xfc00
200000 bindings parsed, using 14971 kBytes

and the pcibench with the actual B4 and AFTR packets, of which the latter contains 50k distinct packets:
 ./runbenchpci-50k.sh
=========================================================
model name	: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
PCAP files v6:b4-icmp-request-0138.pcap v4:lwaftr-ipv4-50k.pcap ...
taskset -c 0 ../../../snabb pcibench -D 30 b4-icmp-request-0138.pcap 0000:05:00.0 lwaftr-ipv4-50k.pcap 0000:0b:00.0
pci1_to_pci2:   98 bpp 0.012 MPPS, 0.009 Gbps.
pci2_to_pci1: 1496 bpp 0.012 MPPS, 0.142 Gbps.
pci1_to_pci2:   98 bpp 0.138 MPPS, 0.108 Gbps.
pci2_to_pci1: 1496 bpp 0.137 MPPS, 1.634 Gbps.
pci1_to_pci2:   98 bpp 2.216 MPPS, 1.737 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.188 MPPS, 2.499 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.251 MPPS, 2.549 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.299 MPPS, 2.587 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.296 MPPS, 2.584 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.305 MPPS, 2.591 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.309 MPPS, 2.594 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.305 MPPS, 2.591 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.306 MPPS, 2.592 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
pci1_to_pci2:   98 bpp 3.288 MPPS, 2.578 Gbps.
pci2_to_pci1: 1496 bpp 0.822 MPPS, 9.842 Gbps.
^C

So there is still some ramp up for 2 seconds, but then it settles at line rate for the large packets and over 3 MPPS in the other. Need to look now at L3 cache usage and increase the binding table to really push it harder.

I got the answers I was looking for. My initial test setup was flawed by reading large PCAP files into memory. Thanks also for the resolution on how to use pmu.lua. Very cool tool!

:+1:


chore: remove dead links from comments

I thought about updating the links but realised that the py-shiny/shiny/examples/download/app.py shows a full set of examples, and with py-shiny/shiny/examples/download_button/app.py and py-shiny/shiny/examples/download_link/app.py covering link and button specific examples, the comment was no longer necessary.
This addresses issue https://github.com/rstudio/py-shiny/issues/555

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

Note that I have completed the license/CLA with my posit.co email address that it linked to the account that made this PR

Thanks!


Install TravisCI plugin

As per https://github.com/spotify/backstage/issues/674

hey @dtuite sorry i was too slow - there's a conflict to resolve - wanna rebase so we can get this in?

@freben I'm on it. Will need a few mins

@freben rebased

Build failed with
Error: Cannot find module 'fs-extra'
Require stack:
- /home/runner/work/backstage/backstage/docs/verify-links.js

Which seems unrelated. Any advice?

Yeah I just got that for a different one too - this happened as part of the big documentation push happening yesterday and today, we're on it

https://github.com/spotify/backstage/pull/1920

Done, please try again :)

And https://github.com/spotify/backstage/pull/1921 :grin:

🚢


Enter fullscreen mode in client view (manual control with/without steering)

CARLA version: 0.9.15
Platform/OS: Windows 11
Problem: When running the manual_control.py script the display is in windowed mode, very small, and I want it in full screen. Neither pressing F11 nor alt+enter does anything. The issue persists when running manual_control_steeringwheel.py with Logitech controller, but entering fullscreen works fine in the server view. I have looked through the docs, git issues and the scripts but can't figure out how to make the screen full. Otherwise the controls work rather fine. Please help!

@FilipMari manual_control uses pygame for rendering the output and resizing is not directly possible. For resigning pygame window you have to update pygame window height and width in manual_control script.
pygame.display.set_mode((args.width, args.height),pygame.HWSURFACE | pygame.DOUBLEBUF)


Support donejs add command

User should be able to run commands like donejs add cordova.
This will:

Install the donejs "plugin" (such as donejs-cordava) if not already installed
Run any generators supplied by the plugin

donejs add cordova will run the default generator supplied by donejs-cordova.
donejs add cordova foo will run the foo generator supplied by donejs-cordova.

This is already supported.


Backport "HBASE-27052 TestAsyncTableScanner.testScanWrongColumnFamily is flaky" to branch-2.5

Backport of #4451

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
1m 10s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ branch-2.5 Compile Tests _

+1 :green_heart:
mvninstall
2m 24s
branch-2.5 passed

+1 :green_heart:
compile
2m 18s
branch-2.5 passed

+1 :green_heart:
checkstyle
0m 33s
branch-2.5 passed

+1 :green_heart:
spotless
0m 44s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 20s
branch-2.5 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 11s
the patch passed

+1 :green_heart:
compile
2m 18s
the patch passed

+1 :green_heart:
javac
2m 18s
the patch passed

+1 :green_heart:
checkstyle
0m 32s
the patch passed

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
11m 48s
Patch does not cause any errors with Hadoop 2.10.0 or 3.1.2 3.2.1.

+1 :green_heart:
spotless
0m 43s
patch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 24s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 11s
The patch does not generate ASF License warnings.

33m 49s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4456

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux bc8f44aabbcf 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2.5 / 96182e2cf9

Default Java
AdoptOpenJDK-1.8.0_282-b08

Max. process+thread count
69 (vs. ulimit of 12500)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 54s
Docker mode activated.

-0 :warning:
yetus
0m  5s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ branch-2.5 Compile Tests _

+1 :green_heart:
mvninstall
3m 59s
branch-2.5 passed

+1 :green_heart:
compile
0m 33s
branch-2.5 passed

+1 :green_heart:
shadedjars
3m 50s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 21s
branch-2.5 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m  9s
the patch passed

+1 :green_heart:
compile
0m 35s
the patch passed

+1 :green_heart:
javac
0m 35s
the patch passed

+1 :green_heart:
shadedjars
3m 49s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 21s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
180m 35s
hbase-server in the patch passed.

199m 22s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4456

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux a9f22c783448 5.4.0-1071-aws #76~18.04.1-Ubuntu SMP Mon Mar 28 17:49:57 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2.5 / 96182e2cf9

Default Java
AdoptOpenJDK-1.8.0_282-b08

Test Results
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/testReport/

Max. process+thread count
2277 (vs. ulimit of 12500)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 54s
Docker mode activated.

-0 :warning:
yetus
0m  4s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ branch-2.5 Compile Tests _

+1 :green_heart:
mvninstall
4m 17s
branch-2.5 passed

+1 :green_heart:
compile
0m 42s
branch-2.5 passed

+1 :green_heart:
shadedjars
4m  0s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 25s
branch-2.5 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 31s
the patch passed

+1 :green_heart:
compile
0m 41s
the patch passed

+1 :green_heart:
javac
0m 41s
the patch passed

+1 :green_heart:
shadedjars
3m 57s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 22s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
202m 41s
hbase-server in the patch passed.

223m 33s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4456

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux 92c63c4989f8 5.4.0-1043-aws #45~18.04.1-Ubuntu SMP Fri Apr 9 23:32:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2.5 / 96182e2cf9

Default Java
AdoptOpenJDK-11.0.10+9

Test Results
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/testReport/

Max. process+thread count
2706 (vs. ulimit of 12500)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4456/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.


I am having difficulty getting Packages

I keep getting "Got socket error trying to find package xxx " since I tried using Flutter. Please help

@hashweather is the issue still relevant? There can be many reasons. Can you open https://pub.dev/ from browser? Do you have an antivirus installed? Is your flutter in the folder without write permission? Are you in China? Do you have a corporate firewall?

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.


Align final energy consumption with gross inland energy consumption

Description of the issue
In issue #916 / PR #997 we introduced energy consumption value and made gross inland energy consumption and gross national electricity consumption subclasses of it. We should align ~primary energy consumption and~ final energy consumption.
Ideas of solution
Update definitions:

~Primary energy consumption is an energy consumption value measuring the total consumption of energy in a spatial region excluding the non-energetic use of fuels.~ => Was already decided in issue #1129.
Final energy consumption is an energy consumption value measuring the consumption of energy delivered to and consumed by end users.

Workflow checklist

[ ] I discussed the issue with someone else than me before working on a solution
[ ] I already read the latest version of the workflow for this repository
[ ] The goal of this ontology is clear to me

I am aware that

[ ] every entry in the ontology should have a definition
[ ] classes should arise from concepts rather than from words

I just recalled, that in PR #1306 we changed primary energy consumption: Primary energy consumption is an energy consumption value accounting for the total consumption of energy in a spatial region excluding the non-energetic use of fuels. I am wondering why this is currently not in the dev branch. 😕

I found the problem. This 173ebb9427acd0cd17d8effd9ccb35c1aec7e657 of PR #1315 accidentially deleted the changes of PR #1306.

I agree with the alignment.

Okay, thanks. Then I will implement.


Issue with MelScale's n_fft used in MelSpectrogram

I have been working with torchaudio and the MelSpectrogram class. It seems like the following line is weird:
https://github.com/pytorch/audio/blob/c670898c057904cce9b5108e7ba68b862b66f779/torchaudio/transforms.py#L571
There's apparently no reason to change n_fft. What was the idea behind that?

Hi @wesbz
It's related to onesided argument of Spectrogram.
The Spectrogram(n_fft, onesided=True) returns a Tensor with n_fft // 2 + 1 bins as it drops the negative frequencies.
The implementation seems to assume that always onesided=True even though it exposes the parameter. (so this is technically a bug and it is supposed to be self.n_fft // 2 + 1 if onesided else self.n_fft)
So this script works
import torch
import torchaudio

waveform = torch.randn(2, 256)

transform = torchaudio.transforms.MelSpectrogram()
spec = transform(waveform)
print(spec.shape)

torch.Size([2, 128, 2])

while the following fails
import torch
import torchaudio

waveform = torch.randn(2, 256)
transform = torchaudio.transforms.MelSpectrogram(onesided=False)
spec = transform(waveform)  # Fail

Traceback (most recent call last):
  File "issue-1984.py", line 12, in <module>
    spec = transform(waveform)
  File "/torch/nn/modules/module.py", line 1106, in _call_impl
    return forward_call(*input, **kwargs)
  File "/torchaudio/torchaudio/transforms.py", line 585, in forward
    mel_specgram = self.mel_scale(specgram)
  File "/torch/nn/modules/module.py", line 1106, in _call_impl
    return forward_call(*input, **kwargs)
  File "/torchaudio/torchaudio/transforms.py", line 381, in forward
    mel_specgram = torch.matmul(specgram.transpose(-1, -2), self.fb).transpose(-1, -2)
RuntimeError: mat1 and mat2 shapes cannot be multiplied (4x400 and 201x128)

so this is technically a bug and it is supposed to be self.n_fft // 2 + 1 if onesided else self.n_fft)

Now that I think of it, I do not think mel-scale Spectrogram is defined in negative frequency. Probably the correct fix is to remove or not to use onesided argument.

I never saw mel-scale Spectrogram using negative frequencies :sweat_smile:
Given the mel-scale formula, you couldn't even go below a certain negative frequency.
Real-valued signals do not need negative frequencies anyway and since the mel-scale has been built for audio signals, hence real-valued, I don't think it would make sens to try and use them from complex-valued signal, hence I don't think it would make sense to consider negative frequencies.
To me, you should either give control of the n_fft parameter given to MelScale or set it to self.n_fft. Also https://github.com/pytorch/audio/blob/c670898c057904cce9b5108e7ba68b862b66f779/torchaudio/functional/functional.py#L556 implicitly consider positive frequencies only.

To me, you should either give control of the n_fft parameter given to MelScale or set it to self.n_fft.

MelSpectrogram performs Spectrogram and MelScale.
The number of bins used by Spectrogram is n_fft // 2 + 1, so MelScale has to use that value.
I do not think that other values would work. Am I missing something?
You can control the number of intermediate frequency bins indirectly with n_fft and output mel frequency bins with n_mel.


cuda-memcheck reports errors

When running the examples with cuda-memcheck, I encounter various errors. For example,  cuda-memcheck ./mdtwObj -t CLASSIFICATION -i GPU 3 512 1 -f data/classification/rm_1/X_MAT data/classification/rm_1/Y_MAT data/classification/rm_1/Z_MAT -k 10 0 -o 1000 152 -m 0 DTW -d 0 -v 0 results in many errors of the form
========= Invalid __global__ read of size 4
=========     at 0x00000e88 in MD_DTW_D
=========     by thread (485,0,0) in block (0,0,0)
=========     Address 0x701d9632c is out of bounds
=========     Saved host backtrace up to driver entry point at kernel launch time
=========     Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 (cuLaunchKernel + 0x2c5) [0x203f65]
=========     Host Frame:./mdtwObj [0x20be1]
=========     Host Frame:./mdtwObj [0x3e783]
=========     Host Frame:./mdtwObj [0x74fe]
=========     Host Frame:./mdtwObj [0x514b]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main + 0xf0) [0x20830]
=========     Host Frame:./mdtwObj [0x6c99]

Those need to be investigated on smaller samples. Compile with nvcc -g -G ... for GPU stack traces.
Part of review at: https://github.com/openjournals/joss-reviews/issues/1049

Also the CPU path is not valgrind clean:
$> valgrind ./mdtwObj -t CLASSIFICATION -i CPU 3 1 -f data/classification/rm_1/X_MAT data/classification/rm_1/Y_MAT data/classification/rm_1/Z_MAT -k 10 0 -o 1000 152 -m 0 DTW -v 0
==28320== Memcheck, a memory error detector
==28320== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==28320== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==28320== Command: ./mdtwObj -t CLASSIFICATION -i CPU 3 1 -f data/classification/rm_1/X_MAT data/classification/rm_1/Y_MAT data/classification/rm_1/Z_MAT -k 10 0 -o 1000 152 -m 0 DTW -v 0
==28320==

The number of iteration is greater than testSize! Verbose mode will be suppressed for this run
Reading data...
Dataset size: [1000,152,3]

Classification w/ DEPENDENT-DTW using CPU

==28320== Invalid read of size 4
==28320==    at 0x409BA6: accumarray (module.cu:1253)
==28320==    by 0x409EA9: crossvalind_Kfold (module.cu:1343)
==28320==    by 0x404348: main (MD_DTW.cu:364)
==28320==  Address 0x60ccf90 is 0 bytes after a block of size 4,000 alloc'd
==28320==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28320==    by 0x409E14: crossvalind_Kfold (module.cu:1332)
==28320==    by 0x404348: main (MD_DTW.cu:364)
==28320==
...

cuda-memcheck ./mdtwObj -t CLASSIFICATION -i GPU 3 512 1 -f data/classification/rm_1/X_MAT data/classification/rm_1/Y_MAT data/classification/rm_1/Z_MAT -k 10 0 -o 1000 152 -m 0 DTW -d 0 -v 0

When i run the software i got a different error, that was due to the first invalid parameter for the cudaMemset function.
========= Program hit cudaErrorInvalidValue (error 11) due to "invalid argument" on CUDA API call to cudaMemset.
=========     Saved host backtrace up to driver entry point at error
=========     Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x330453]
=========     Host Frame:./mdtwObj [0x3ed3c]
=========     Host Frame:./mdtwObj [0x4470]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main + 0xf5) [0x21f45]
=========     Host Frame:./mdtwObj [0x6f25]
=========

I fixed it by replacing the callbackcudaMemset(&d_test, 0, n_feat * window_size * sizeof(float)) with the following one: cudaMemset(d_test, 0, n_feat * window_size * sizeof(float))


Allow OAuth login in config

Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
I would like to have the possibility to use OAuth Authentication.
This way we can use Databricks plugin in automatic dashboard, without using secure-less tokens.
Databricks GO sdk allow to use ClientID / ClientSecret<EMAIL_ADDRESS>Describe alternatives you've considered
Additional context
I just begin to develop the feature in this PR: https://github.com/turbot/steampipe-plugin-databricks/pull/6
It should be quite simple :ok_hand:

I'm waiting for https://github.com/turbot/steampipe-plugin-databricks/pull/10 to merge https://github.com/turbot/steampipe-plugin-databricks/pull/6

Still waiting for #10 to be merged so #6 can be reviewed and merged


Developer Instructions

Adding developer instructions to the README. They are pretty rough.

Closes #1

I added some instructions.


Relay

All feedback is encouraged.
This PR enables a nebula node to relay traffic to a peer through an intermediary Nebula node.
Relay traffic is end-to-end encrypted, and hop-by-hop AD verified.
graph LR
    A[Peer HI <-> Terminal HI] -->|AD| B(Fwd HI <-> Fwd HI)
    B -->|AD| C(Terminal HI <-> Peer HI)
    A -->|End-to-End Encrypted| C

Relays are a feature of HostInfo objects. There are two different types of Relay objects - Forwarding relays, and Terminal relays. When a Terminal Relay receives a packet from an associated forwarding relay object, it authenticates the packet from the previous hop and then passes the packet through the regular packet processing routine, treating it the same as if it were received from the UDP socket.
A Forwarding Relay exists on the Relay node itself. It either processes a packet passed from another HostInfo, or processes a packet received from the UDP socket. It forwards the packet to a next hop, which will either be another local HostInfo that's either a Forwarding or Terminal Relay, or write the packet to the wire for a peer on a different host.
This adds a new message subtype: MessageRelay, on the Message type. On receipt of this message type, Nebula will look up the Relay information associated with the index indicated in the Nebula header. This header indexes to the HostInfo object of the previous hop. Relay messages are only forwarded over established Nebula connections, and are authenticated by validating the payload as AD info, avoiding double-encryption. When forwarding the Relay traffic, the packet payload is authenticated based on the HostInfo for the next hop.
sequenceDiagram
    note left of Connector: Encrypt message for Peer, wrap in Neubula header
    Note left of Connector: AD payload for next hop `Relay`
    Connector->>+Relay: MessageRelay to RelayIdx 4
    Note right of Relay: Look up HostInfo of Connector by RelayIdx, verify AD
    Note right of Relay: Look up HostInfo of Relay PeerIP, AD payload for next hop `Peer`
    Relay->>+Peer: MessageRelay to RelayIdx 3
    note right of Peer: Look up HostInfo of Relay by RelayIdx, verify AD
    note right of Peer: Relay is Terminal, so process directly. Interpret payload as Nebula packet.
    note right of Peer: Look up HostInfo of `Connector` by Index, decrypt packet

So, if a Nebula node Connector wishes to relay to a peer Peer through an intermediary Relay, it will

Establish a Nebula connection to Relay with a handshake
Request a Relay tunnel to Peer
Create a handshake packet for Peer
Forward this handshake packet through the Relay tunnel to Relay, as AD traffic for Relay
Wait for its response handshake
Calculate symmetric keys
Forward all remaining traffic to Peer encrypted with its symmetric keys for Peer as AD for Relay

The Relay object holds local index, remote index, peer Ip, state, and type info. The type will either be TerminalType, meaning the host should process the payload directly, or ForwardingType, which means this host should forward the payload to the Relay.PeerIP.
For actual relaying, during handshake, the Nebula node will attempt to create Nebula tunnels to all discovered relays for its target peer. Once those tunnels are established, it'll send a new CreateRelayRequest message to the Relay, indicating its target VpnIP.
sequenceDiagram
    Connector->>+Relay: CreateRelayReuest, idx=1, from C to P
    Relay->>Peer: CreateRelayRequest, idx=2, from C to P
    note right of Peer: Relay{State:Established, PeerIP: C}
    Peer->>Relay: RelayCreated, idx=3
    Note right of Relay: Relay{localIdx 2, remoteIdx 3, State: Established, PeerIP: C }
    Note right of Relay: Relay{localIdx 4, remoteIdx 1, State: Established, PeerIP: P }
    Relay->>Connector: RelayCreated, idx=4
    Note left of Connector: Relay{localIdx 1, remoteIdx 4, State: Established, PeerIp: P }

The example config is updated with Relay config options.
A Nebula node is configured to act as a relay by settings its relay.am_relay to true
relay:
  am_relay: true

A Nebula node configures which hosts can be used as relays to access it by listing them in its relay.relays config.
relay:
  relays:
    -  <IP_ADDRESS>

Hosts so named must have their am_relay set to true, otherwise they'll ignore CreateRelayRequest messages. These IPs will be advertised to the LightHouse, and included in host query responses.
Cleanup depends on the existing connection manager logic. When the relays fail, the connection manager should detect the failed connection. When HostInfo objects are cleaned up due to these failures, the associated Relay state is also (locally) cleaned up.

Is this meant to solve part of https://github.com/slackhq/nebula/issues/85#issuecomment-586622822 ?

We are merging this PR as mostly complete and fixing issues/cleaning up in future PRs. Known items are tracked here #690

How to choose an optimal path

I know I'm quite late here, but this is an incredibly exciting feature add. Great work devs!!

Can the lighthouse advertise itself a a relay host too?

Can the lighthouse advertise itself a a relay host too?

I do not believe it will "advertise" but it can be used as a lighthouse. You will need to configure the lighthouse to act as a relay and add it's nebula IP as a relay in the list of relays on node configs. I don't know what the minimal set of configs that need it added as a relay is though.


Extensions Installation

Type: Bug
When i trying to install PlatformIO IDE the installation process take so long, i have tried to restart the application, reset the connection, flush the dns, reinstall the App. But nothing changed. But if i install other extension like, notepad++ keymap, Remote - WSL, it can install without any problem. Any sugestion to me ?
VS Code version: Code 1.70.2 (e4503b30fc78200f846c62cf8091b76ff5547662, 2022-08-16T05:35:13.448Z)
OS version: Windows_NT x64 10.0.19044
Modes:

Hi @sahwala
the issue related to vscode, please create your issue here https://github.com/microsoft/vscode/issues

I can not reproduce. Thus closing this, as @madhurivadaligithub suggests if you can reproduce please create a new issue in VS Code with steps.


Improve service errors - add more context

The errors of the validation functions for the service's data are not good enough. They are not explicit enough.
https://github.com/mesg-foundation/core/blob/bd84ad1d54eadfb8aa2bd79ac0c7c68f775f9c03/service/error.go#L14-L18

[ ] Rename Key to EventKey to be more specific

https://github.com/mesg-foundation/core/blob/bd84ad1d54eadfb8aa2bd79ac0c7c68f775f9c03/service/error.go#L38-L43

[ ] Rename Key to TaskKey to be more specific

https://github.com/mesg-foundation/core/blob/bd84ad1d54eadfb8aa2bd79ac0c7c68f775f9c03/service/error.go#L53-L61

[ ] Add TaskKey to OutputNotFoundError error to give more context

https://github.com/mesg-foundation/core/blob/bd84ad1d54eadfb8aa2bd79ac0c7c68f775f9c03/service/error.go#L63-L76

[ ] Rename Key to OutputKey to be more specific
[ ] Add TaskKey to InvalidOutputDataError to give more context
[ ] e.Key is the outputKey, not the task key. The errorString has to be fixed and also include the add TaskKey.

related with https://github.com/mesg-foundation/core/issues/337.


[W4.4h][W12-2]Loh Wei Jie, Oscar

Added a 'Rename tag' use case

@auskure
Some comments added. Please take note and close the pull request.


Is the scan time doubled again ??

http://www.geekpoint0.com/console/2016/8/4/dqsj955r4mo56yd5ceuj7eisw2hovf

I would suggest you go have a read over at https://www.reddit.com/r/pokemongodev/

unknown6 is solved. cannot believe the people here still deleting the link and wasting time and resources to re-invent the wheel
src @ https://www.sendspace.com/file/5h1q29

password protected zip

password will be released tonight


Create FHIROperation implementations that connect to FHIRTermService in the new fhir-term module

Create a new module fhir-operation-term and implement operations for:
$expand
$lookup
$subsumes
$closure
$validate-code
$translate

These operations are now merged


Keybase not starting from task menu

Keybase GUI Version: 6.0.1-20220609140211+0fc9feea3d
Showing "starting up keybase" constantly

Avast reported about keybaserq.exe as FileRepMalware [Trj].