Using with new aurelia easywebpack from typescript-webpack skeleton?

Getting all sorts of "Cannot find module aurelia-materialize-bridge" errors in my "import {...} from 'aurelia-materialize-bridge" statements when migrating from AureliaWebpackPlugin. I was able to run the bridge fine before Aurelia 1.0.0 by using the "includeSubmodules" option, but now that's been deprecated. I've tried
"aurelia": {
"build": {
"resources": ["aurelia-materialize-bridge"]
}
}
but to no avail.
Has anyone else run into this? How'd they get it working? Great, great project btw!

Does this help in any way? https://github.com/Thanood/md-webpack-skeleton
It's using RC1, not 1.0 - will have to check that out again. And it's not TypeScript. But it's also not using includeSubmodules.
If it's only for typings, these should be here: https://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge/blob/master/dist/aurelia-materialize-bridge.d.ts (or node_modules/aurelia-materialize-bridge/aurelia-materialize-bridge.d.ts).
It should be available with using typings I guess. If nothing works, try to copy the file into custom_typings to see if the file itself is wrong somehow.
Would you mind having a quick look at the .d.ts file and tell me if it's generated correctly? I must say I'm a little confused about all the export declare class - TS docs tell me that this is correct but I've never seen that before.

@abeven Any news on this?
I will have to explain where users should get typings from.

I wont guarantee for any or this. But got it running without compile errors.
Clone and npm install skeleton-typescript-webpack
npm rm bootstrap --save
npm rm jquery --save
npm rm @easy-webpack/config-global-jquery --save-dev
npm i<EMAIL_ADDRESS>--save
npm i materialize-css --save
npm i aurelia-materialize-bridge --save

npm i script-loader –save-dev

I use script-loader to get jquery and materialize global (not ideal solution).
webpack.config.js:
remove (line 89/125/152):
require('@easy-webpack/config-global-jquery')(),

coreBundles  = {… ,
  materialize: [
    'jquery',
    'materialize-css/dist/js/materialize.min.js',
    'aurelia-materialize-bridge'
  ];

…

const baseConfig = {
  entry: {
    'app': [/* this is filled by the aurelia-webpack-plugin */],
    'aurelia-bootstrap': coreBundles.bootstrap,
    'aurelia': coreBundles.aurelia.filter(pkg => coreBundles.bootstrap.indexOf(pkg) === -1),
    'materialize': coreBundles.materialize
  },
  output: {
    path: outDir,
  },
  module: {
    loaders: [
      {
        test: /[\/\\]node_modules[\/\\]jquery[\/\\]dist[\/\\]jquery\.js$/,
        loader: "script"
      },
      {
        test: /[\/\\]node_modules[\/\\]materialize-css[\/\\]dist[\/\\]js[\/\\]materialize.min\.js$/,
        loader: "script"
      }
    ]
  }
}

src/main.ts:
remove
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap';
add
import 'materialize-css/dist/css/materialize.min.css';
and
.feature('aurelia-materialize-bridge', b => b.useAll());
package.json
  "aurelia": {
    "resources": [
      "aurelia-materialize-bridge"
    ]
  },

node_modules/aurelia-materialize-bridge/package.json
add these resources
    "build": {
      "resources": [
	"aurelia-materialize-bridge/index",
	"aurelia-materialize-bridge/autocomplete/autocomplete",
	"aurelia-materialize-bridge/chip/chips",

npm start
I use Atom and had to change tsconfig.json to skip errors in editor. Changed “es2015” to “es6” and added “outDir”: “.tsbuild” to remove compiled js and map files in src folder. I dont know if you need to do that.
  "compilerOptions": {
    "target": "es6",
    "module": "es6",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "allowJs": true,
    "outDir": ".tsbuild"
  },

I have not tested all components in the bridge.

Wow, thanks!
So it's not just missing typings? I ask because webpack-esnext is pretty easy to do.

No problem with missing typings here. Needed to add 3 lines to bridge package before it would build.
I got some trouble with md-waves effect using ts-webpack and this solution. Wave is not removed on button after pressing it (not tested more yet). Do you have a webpack-esnext project I can study to see if the webpack-ts can be configured another way?

It's not updated to Aurelia 1.0 but here it is: https://github.com/Thanood/md-webpack-skeleton

Installed.. :smile:
I needed to add
"aurelia-materialize-bridge/autocomplete/autocomplete",
"aurelia-materialize-bridge/chip/chips",

under
"build": {
      "resources": [

in package.json to get it to build.
Same trouble with waves.
Going to try out with latest aurelia components.

Interesting since in my tests I didn't need this. It's all in the bridge's package.json..
Oh, right... That was before I've added autocomplete and chips.. Doh! :smile:
Waves should be in, though

Yeah… hehe. Waves is there and trigger when pressing a button with md-waves attribute. But the button wont get “back to start”. If the effect trigger a darker wave, the button get darker and darker every time its pressed.
Maybe its something strange on my computer. Wave on jspm version work.

It's not your computer. I've noticed this, too but I thought it was solved with the latest Aurelia/webpack versions.
Apparently it's not.

Actually what I thought was: Materialize may be initialized twice (which has really been the case with webpack).
That particular issue is solved now with the 1.0.0 skeleton. My skeleton is pre-1.0.0 and that may be the issue because in my tests for the above mentioned issue it was not enough to just update webpack dependencies.
Something in the config must be different.

webpack-esnext working with this commit
going to do the same with typescript.. a sec

Thanks for testing! :smile:
I hope closing this was okay. Seems to work..

Duh.. build:prod and server:prod didn't work. I just got «TypeError: a is not a function» in the browser console.
I needed to copy the build from easy-webpack/config-uglify and change mangle.keep_fnames to false to get it working. Don't know if it will destroy other stuff. But with this skeleton it work.
I have updated the webpack-typescript repository.

@Ullfis there is a note in installaton description:

When using aurelia-materialize-bridge (and thus materialize) via webpack with the UglifyJS-plugin (standard in aurelia webpack skeleton production build) you have to make sure to except the materialize module (via exclude: ['materialize'] if your module is named materialize) from the UglifyJS plugin. Otherwise the names will be mangled and the materialize module won't load correctly (missing dropdown). Another option would be to disable mangle as a global setting on the UglifyJS settings object.

It's suggesting to set mangle to false but your description seems more appropriate.
I'm reopening this to remind myself to test this and change the documentation.

I did try with exclude: ["materialize-css"] without luck. Just link. I will (try to) not change them :smile:

Maybe it's good if you change them (f.i. for fixes like the one you did above) :wink:
But I can also fork them, no problem. That way, I'm up to date if something changes.
Thinking about it, I'll have to (kind of) recreate them anyway. I like to test (aka "do it myself") anything I put in the docs.

I just use different branches like this one aurelia-materialize-skeleton-i18n-typescript-webpack. It's just for testing anyway. Fork if you want to be safe lol.

Wow, this is still open?
I'll try to reproduce the steps tomorrow and update the documentation.
Also, i'll put the installation instructions into the GitBook so I don't have to deploy the sample app everytime I fix something in the docs..

@Ullfis Thanks for the practical solution. It worked for me.


branch: refactor/mv3 use tsx

Describe the bug

Reproduction
file path：vitesse-webext/src/popup/Popup.vue
update script lang
<script setup lang="tsx">
import { storageDemo } from '~/logic/storage'

function openOptionsPage() {
  browser.runtime.openOptionsPage()
}
</script>

System Info
System:
    OS: macOS 11.7.1
    CPU: (8) arm64 Apple M1
    Memory: 103.06 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.14.0 - /usr/local/bin/node
    Yarn: 1.22.5 - ~/.yarn/bin/yarn
    npm: 8.3.1 - /usr/local/bin/npm
  Browsers:
    Chrome: 108.0.5359.124
    Edge: 103.0.1264.71
    Firefox: 106.0
    Safari: 14.1.2

Used Package Manager
pnpm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

我先用h函数进行处理jsx绕过了

the main branch should have solve this issue. you can reopen it if not, thanks! :)


Aspect/FOV fix

Fixed fov to be within the 4:3 origin and added vertical aspect support.

I don't know if I'm missing something, but I've compared your version and the current version and I couldn't make out a difference (I tried many different aspect ratios). Looking at your code, it looks like you're essentially performing a no-op on this.zoom, so what is it supposed to do, exactly?
Also I'd prefer if any rendering changes were achieved through the main TypeScript code instead of modifying a library.

It's meant to zoom out the fov to it's original 4:3 zooming, plus conditionally set the direction of aspect if beneath 16:9.


How to handle multiple socket properly

I want to create muiltiple room at the same time so I create a Dictionary<string, SocketManager>.
The problem is when socket reconnect I cannot use SocketManager.
So how to handle multiple socket properly?

Rooms are server side only features:

Please note that rooms are a server-only concept (i.e. the client does not have access to the list of rooms it has joined).

Source
But, even i wouldn't recommend to use multiple SocketManagers. Socket.IO's strength is to multiplex connections: you can use only one SocketManager and multiple sockets (namespaces), it will use only one TCP connection.


Client side module objects

We have encountered multiple cases where a client side module object would be useful.  I am considering building this out for part of the logging solution I'm working on, and I'd like to get some input on the structure/syntax.  I'm picturing a javascript object being automatically generated for each module that could be accessed as follows:
Vanderbilt.SomeExternalModule.log(message)
The top level javascript object ("Vanderbilt" in the above example) could match the PHP namespace, and the child object could match the module class name ("SomeExternalModule" in the above example).  There could be some built in methods (like logging), and a simple way to add arbitrary methods/variables (perhaps just monkey patching them into the object).
What are your thoughts?
@123andy, @tbembersimeao, @pbchase

I think a javascript object that is analogous to the php one would be a neat idea...  In Shazam, I sent all client-side debugging to 'Shazam.log()' and tried to add some wrappers to handle old browsers where console.log isn't defined, etc.
Another thing I want to do often is take php variables and push them to javascript.  Perhaps there could be a javascript bin that is present in the AbstractExternalModule instance.  You could do stuff like:
$module->js->foo = json_encode($arr_foo);
Then, to push it to the client you'd have a $moduile->js->render() or something like that... This would push the object (could be named the same as the EM), set some variables, and also include some default functions like the logger...

I should add one place where I would like to be able to include javascript more easily is in the config editor - it would be nice to just be able to insert a js file and call a method when the config is rendered (maybe this is new possible with some of the new hooks).  The alternate method is to add a field to config and then specify the js source but it is awkward to mess with the entire config from a single field.


sctp over udp encapsulation does not work under NAT network

I am trying usrsctp right now.
As far as I understand, usrsctp should work fine even client is behind NAT when udp encapsulation is using.
However, I found that demo programs does not work when client is behind NAT.
(Note that: WebRTC is working fine and discard_server is not reside in the LAN.)
The 4-way handshake always stuck at the second step and the client will keep retry and retry.
Is that a normal case for the demo programs?
The log of client and discard_server is shown as below:
$ ./client SERVER_IP 9 0 22222 11111
##show nothing

  $ ./discard_server 11111 22222
  [0.000] SCTP: add HMAC id 1 to list
  [0.000] SCTP: added chunk 193 (0xc1) to Auth list
  [0.000] SCTP: added chunk 128 (0x80) to Auth list
  [0.000] Bind called port: 9
  [0.000] Addr: [0.000] IPv6 address: 0:0:0:0:0:0:0:0:port:9 scope:0
  [0.000] Main hash to bind at head:0x557afedd8a70, bound port:9 - in tcp_pool=0
  [22.287] recv_function_udp: Received 112 bytes.[22.287]  - calling sctp_common_input_processing with off=12
  [22.287] stcb:(nil) inp:0x557afeddd120
  [22.287] stcb is (nil)
  [22.287] Ok, Common input processing called, m:0x7f5a78000c30 iphlen:0 offset:12 length:112 stcb:(nil)
  [22.287] sctp_process_control: iphlen=0, offset=12, length=112 stcb:(nil)
  [22.287] Its an INIT of len:100 vtag:0
  [22.287] sctp_process_control: processing a chunk type=1, len=100
  [22.287] SCTP_INIT
  [22.287] sctp_handle_init: handling INIT tcb:(nil)
  [22.287] sctp_handle_init: sending INIT-ACK
  [22.287] Check for unrecognized param's
  [22.288] Hit default param 8004
  [22.288] move on
  [22.288] Select source addr for:[22.288] IPv4 address: NAT_IP:52809
  [22.288] ifn from route:(nil) ifn_index:1
  [22.288] ifn_index:1 name:lo is emit interface
  [22.288] Is destination preferred:[22.288] IPv4 address: <IP_ADDRESS>:0
  [22.288] src_loop:1 src_priv:0 src_glob:0
  [22.288] dest_loop:0 dest_priv:0 dest_glob:1
  [22.288] NO:6
  [22.288] Found 0 preferred source addresses for intf:lo
  [22.288] Trying Plan B
  [22.288] Examine interface enp3s0f0
  [22.288] Is destination preferred:[22.288] IPv4 address: SERVER_IP:0
  [22.288] src_loop:0 src_priv:0 src_glob:1
  [22.288] dest_loop:0 dest_priv:0 dest_glob:1
  [22.288] YES
  [22.288] Found ifn:(nil) 1 preferred source addresses
  [22.288] num preferred:1 on interface:0x557afeddc5b0 cur_addr_num:0
  [22.288] Is destination preferred:[22.288] IPv4 address: SERVER_IP:0
  [22.288] src_loop:0 src_priv:0 src_glob:1
  [22.288] dest_loop:0 dest_priv:0 dest_glob:1
  [22.288] YES
  [22.288] Calling ipv4 output routine from low level src addr:AAAAAAAA
  [22.288] Destination is BBBBBBBB
  [22.288] RTP route is 0x7f5a780142c0 through
  [22.288] IP output returns 0
  [25.323] recv_function_udp: Received 112 bytes.[25.324]  - calling sctp_common_input_processing with off=12
  [25.324] stcb:(nil) inp:0x557afeddd120
  [25.324] stcb is (nil)
  [25.324] Ok, Common input processing called, m:0x7f5a78000c30 iphlen:0 offset:12 length:112 stcb:(nil)
  [25.324] sctp_process_control: iphlen=0, offset=12, length=112 stcb:(nil)
  [25.324] Its an INIT of len:100 vtag:0
  [25.324] sctp_process_control: processing a chunk type=1, len=100
  [25.324] SCTP_INIT
  [25.324] sctp_handle_init: handling INIT tcb:(nil)
  [25.324] sctp_handle_init: sending INIT-ACK
  [25.324] Check for unrecognized param's
  [25.324] Hit default param 8004
  [25.324] move on
  [25.324] Select source addr for:[25.324] IPv4 address: NAT_IP:52809
  [25.324] ifn from route:(nil) ifn_index:1
  [25.324] ifn_index:1 name:lo is emit interface
  [25.324] Is destination preferred:[25.324] IPv4 address: <IP_ADDRESS>:0
  [25.324] src_loop:1 src_priv:0 src_glob:0
  [25.324] dest_loop:0 dest_priv:0 dest_glob:1
  [25.324] NO:6
  [25.324] Found 0 preferred source addresses for intf:lo
  [25.324] Trying Plan B
  [25.324] Examine interface enp3s0f0
  [25.324] Is destination preferred:[25.324] IPv4 address: SERVER_IP:0
  [25.324] src_loop:0 src_priv:0 src_glob:1
  [25.324] dest_loop:0 dest_priv:0 dest_glob:1
  [25.324] YES
  [25.324] Found ifn:(nil) 1 preferred source addresses
  [25.324] num preferred:1 on interface:0x557afeddc5b0 cur_addr_num:0
  [25.324] Is destination preferred:[25.324] IPv4 address: SERVER_IP:0
  [25.324] src_loop:0 src_priv:0 src_glob:1
  [25.324] dest_loop:0 dest_priv:0 dest_glob:1
  [25.324] YES
  [25.324] Calling ipv4 output routine from low level src addr:AAAAAAAA
  [25.324] Destination is BBBBBBBB
  [25.324] RTP route is 0x7f5a780142c0 through
  [25.324] IP output returns 0
  [31.398] recv_function_udp: Received 112 bytes.[31.398]  - calling sctp_common_input_processing with off=12
  [31.398] stcb:(nil) inp:0x557afeddd120
  [31.398] stcb is (nil)
  [31.398] Ok, Common input processing called, m:0x7f5a78000c30 iphlen:0 offset:12 length:112 stcb:(nil)
  [31.398] sctp_process_control: iphlen=0, offset=12, length=112 stcb:(nil)
  [31.398] Its an INIT of len:100 vtag:0
  [31.398] sctp_process_control: processing a chunk type=1, len=100
  [31.398] SCTP_INIT
  [31.398] sctp_handle_init: handling INIT tcb:(nil)
  [31.398] sctp_handle_init: sending INIT-ACK
  [31.398] Check for unrecognized param's
  [31.398] Hit default param 8004
  [31.398] move on
  [31.398] Select source addr for:[31.398] IPv4 address: NAT_IP:52809
  [31.398] ifn from route:(nil) ifn_index:1
  [31.398] ifn_index:1 name:lo is emit interface
  [31.398] Is destination preferred:[31.398] IPv4 address: <IP_ADDRESS>:0
  [31.398] src_loop:1 src_priv:0 src_glob:0
  [31.398] dest_loop:0 dest_priv:0 dest_glob:1
  [31.398] NO:6
  [31.398] Found 0 preferred source addresses for intf:lo
  [31.398] Trying Plan B
  [31.398] Examine interface enp3s0f0
  [31.398] Is destination preferred:[31.398] IPv4 address: SERVER_IP:0
  [31.398] src_loop:0 src_priv:0 src_glob:1
  [31.398] dest_loop:0 dest_priv:0 dest_glob:1
  [31.398] YES
  [31.398] Found ifn:(nil) 1 preferred source addresses
  [31.398] num preferred:1 on interface:0x557afeddc5b0 cur_addr_num:0
  [31.398] Is destination preferred:[31.398] IPv4 address: SERVER_IP:0
  [31.398] src_loop:0 src_priv:0 src_glob:1
  [31.398] dest_loop:0 dest_priv:0 dest_glob:1
  [31.398] YES
  [31.398] Calling ipv4 output routine from low level src addr:AAAAAAAA
  [31.398] Destination is BBBBBBBB
  [31.398] RTP route is 0x7f5a780142c0 through
  [31.398] IP output returns 0
  [43.545] recv_function_udp: Received 112 bytes.[43.545]  - calling sctp_common_input_processing with off=12
  [43.545] stcb:(nil) inp:0x557afeddd120
  [43.545] stcb is (nil)
  [43.545] Ok, Common input processing called, m:0x7f5a78000c30 iphlen:0 offset:12 length:112 stcb:(nil)
  [43.545] sctp_process_control: iphlen=0, offset=12, length=112 stcb:(nil)
  [43.545] Its an INIT of len:100 vtag:0
  [43.545] sctp_process_control: processing a chunk type=1, len=100
  [43.545] SCTP_INIT
  [43.545] sctp_handle_init: handling INIT tcb:(nil)
  [43.545] sctp_handle_init: sending INIT-ACK
  [43.545] Check for unrecognized param's
  [43.545] Hit default param 8004
  [43.545] move on
  [43.546] Select source addr for:[43.546] IPv4 address: NAT_IP:52809
  [43.546] ifn from route:(nil) ifn_index:1
  [43.546] ifn_index:1 name:lo is emit interface
  [43.546] Is destination preferred:[43.546] IPv4 address: <IP_ADDRESS>:0
  [43.546] src_loop:1 src_priv:0 src_glob:0
  [43.546] dest_loop:0 dest_priv:0 dest_glob:1
  [43.546] NO:6
  [43.546] Found 0 preferred source addresses for intf:lo
  [43.546] Trying Plan B
  [43.546] Examine interface enp3s0f0
  [43.546] Is destination preferred:[43.546] IPv4 address: SERVER_IP:0
  [43.546] src_loop:0 src_priv:0 src_glob:1
  [43.546] dest_loop:0 dest_priv:0 dest_glob:1
  [43.546] YES
  [43.546] Found ifn:(nil) 1 preferred source addresses
  [43.546] num preferred:1 on interface:0x557afeddc5b0 cur_addr_num:0
  [43.546] Is destination preferred:[43.546] IPv4 address: SERVER_IP:0
  [43.546] src_loop:0 src_priv:0 src_glob:1
  [43.546] dest_loop:0 dest_priv:0 dest_glob:1
  [43.546] YES
  [43.546] Calling ipv4 output routine from low level src addr:AAAAAAAA
  [43.546] Destination is BBBBBBBB
  [43.546] RTP route is 0x7f5a780142c0 through
  [43.546] IP output returns 0

I have go through it and found that my main interface was added into the asoc,sctp_restricted_addrs and this is why the four-way handshake always stuck. However, if I deactivate the virbr0 in my client computer, the demo program works without any issue. It is a quite strange program.

Can you figure out why the addresses where added?

In my case, a connection cannot be established even if I create address/port translation rule directly in the router. Tried three different machines with Windows 10 and different routers, not luck.

Debug logs
SCTP: add HMAC id 1 to list
Bind called port: 50704
Addr: IPv6 address: 0:0:0:0:0:0:0:0:port:50704 scope:0
Main hash to bind at head:0000000004928630, bound port:50704 - in tcp_pool=0
Allocate an association for peer:IPv4 address: <IP_ADDRESS>:9500
Port:9500
Adding an address (from:1) to the peer: IPv4 address: <IP_ADDRESS>:9500
Association 000000000C0B1070 now allocated
Sending INIT
Sending INIT - calls lowlevel_output
Select source addr for:IPv4 address: <IP_ADDRESS>:9500
ifn from route:0000000000000000 ifn_index:1
No ifn emit interface?
Trying Plan B
Examine interface {8B0878A2-ABFC-4045-AC13-B242D16856CE}
Is destination preferred:IPv4 address: <IP_ADDRESS>:0
src_loop:0 src_priv:1 src_glob:0
dest_loop:0 dest_priv:0 dest_glob:1
NO:7
Found ifn:0000000000000000 0 preferred source addresses
No preferred -- skipping to next
Trying Plan C: find acceptable on interface
Jump to Plan D - no emit_ifn
Trying Plan D looked_at is<PHONE_NUMBER>000000
IPv4 address: <IP_ADDRESS>:0
dst_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_glob:1
address is acceptable
Trying Plan C: find acceptable on interface
Jump to Plan D - no emit_ifn
Trying Plan D looked_at is<PHONE_NUMBER>000000
IPv4 address: <IP_ADDRESS>:0
dst_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_glob:1
address is acceptable
IPv4 address: <IP_ADDRESS>:0
dst_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_priv:0
ifa->src_is_loop:0 dest_is_glob:1
address is acceptable
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 1 thresh:5
Overall error count for 000000000C0B10C8 now 1 thresh:8 state:1
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 2 thresh:5
Overall error count for 000000000C0B10C8 now 2 thresh:8 state:1
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 3 thresh:5
Overall error count for 000000000C0B10C8 now 3 thresh:8 state:1
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 4 thresh:5
Overall error count for 000000000C0B10C8 now 4 thresh:8 state:1
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 5 thresh:5
Overall error count for 000000000C0B10C8 now 5 thresh:8 state:1
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 6 thresh:5
Overall error count for 000000000C0B10C8 now 6 thresh:8 state:0
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)
Timer type 2 goes off
Error count for 000000000C0B1BF0 now 7 thresh:5
Overall error count for 000000000C0B10C8 now 7 thresh:8 state:0
Sending INIT
Sending INIT - calls lowlevel_output
Calling ipv4 output routine from low level src addr:c0a80102
Destination is 25d7d8b
RTP route is<PHONE_NUMBER>945C10 through
IP output returns 0
Timer now complete (type = 2)

Which addresses do you have configured on which interface on the machine behind the NAT. It seems that it owns <IP_ADDRESS>. Do you see packets going out that machine? If yes, are you using UDP encapsulation and which SCTP and UDP port numbers are you using? Do you see packets being received by the external host?

Which addresses do you have configured on which interface on the machine behind the NAT. It seems that it owns <IP_ADDRESS>.

Yes, the machine behind the NAT owns <IP_ADDRESS>.

Do you see packets going out that machine?

Yes, SCTP is repeatedly sending INIT until ABORT packet.

If yes, are you using UDP encapsulation and which SCTP and UDP port numbers are you using?

Server and client are encapsulated using 9925 port in usrsctp_init(), and this port number is used for usrsctp_setsockopt() w/ SCTP_REMOTE_UDP_ENCAPS_PORT, client local adress is bound to in6addr_any with randomly generated port, server is listening on all interfaces and 9500 port which is used for usrsctp_connect() on the client side.

Do you see packets being received by the external host owning <IP_ADDRESS>?

Nope, it seems that it doesn't receive anything.

But you see an SCTP packet some random source port to the destination port number 9500 encapsulated in a UDP packet using 9925 as the source and destination port number encapsulated in IPv4 using <IP_ADDRESS> as the source address and <IP_ADDRESS> as the destination address, right? If that is true and if the checksums (IPv4 header, UDP, SCTP) are correct, the problem is not with the SCTP implementation on the client side. I would try to capture on the uplink of the NAT box to see if it really sends the packet upstream. If that is the case, are you sure that your external host (the one owning <IP_ADDRESS>) is protected by any kind of firewall? I just tried to initiate an association with that server, but I don't get any response...

But you see an SCTP packet some random source port to the destination port number 9500 encapsulated in a UDP packet

Yes.

using 9925 as the source and destination port number encapsulated in IPv4 using <IP_ADDRESS> as the source address and <IP_ADDRESS> as the destination address, right

Nope, the source port is random as well while the destination is 9925. In the local network everything works fine, the problem occurs only when an external IP address behind NAT is used. To make sure that the problem is not with the router I just checked another transport which works fine using the same port and translation rule.

I just tried to initiate an association with that server, but I don't get any response (no ICMP (Destination unreachable, port unreachable) or SCTP ABORT or SCTP INIT-ACK)...

The server was down, but I can keep it running for a while if you want.

I just realized that 9925 port number for NAT translation should be used instead of 9500, only then the client is able to establish a connection.
So manual address translation helps, but SCTP itself doesn't map ports?

I just realized that 9925 port number for NAT translation rule should be used instead of 9500, only then the client is able to establish a connection.
So manual address translation helps, but SCTP itself doesn't map addresses (UPNP/PMP)?

Outgoing SCTP/UDP/IP packets should use the port number provided in the usrsctp_init() call as the UDP source port number. If that is not happening, then it is a bug. Are you seeing a different behaviour?
Behind a NAT box, an SCTP client should be able to initiate a SCTP/UDP based communication with a host in the Internet without any additional configuration on the NAT box. The SCTP does not interact with middle-boxes using UPNP/PMP. Why do you think this is necessary?

Outgoing SCTP/UDP/IP packets should use the port number provided in the usrsctp_init() call as the UDP source port number. If that is not happening, then it is a bug. Are you seeing a different behaviour?

Everything is correct, yes, I was a bit confused...

Behind a NAT box, an SCTP client should be able to initiate a SCTP/UDP based communication with a host in the Internet without any additional configuration on the NAT box.

Yes, it works as expected, for the client no external steps are required. I have a different problem actually which directly related to:

The SCTP does not interact with middle-boxes using UPNP/PMP. Why do you think this is necessary?

My case is a quite common thing in multiplayer games where a user is hosting a game server which is listening for incoming connections behind NAT and this requires to manually (or by using UPNP/PMP) set translation rule to the address behind NAT. Some UDP transport layers provide this feature out of the box due to the popular demand (see for example) and this one is one of the most popular implementations.

Outgoing SCTP/UDP/IP packets should use the port number provided in the usrsctp_init() call as the UDP source port number. If that is not happening, then it is a bug. Are you seeing a different behaviour?

Everything is correct, yes, I was a bit confused...

OK, great. Thanks for the clarification.

Behind a NAT box, an SCTP client should be able to initiate a SCTP/UDP based communication with a host in the Internet without any additional configuration on the NAT box.

Yes, it works as expected, for the client no external steps are required. I have a different problem actually which directly related to:

The SCTP does not interact with middle-boxes using UPNP/PMP. Why do you think this is necessary?

My case is a quite common thing in multiplayer games where a user is hosting a game server which is listening for incoming connections behind NAT and this requires to manually (or by using UPNP/PMP) set translation rule to the address behind NAT. Some UDP transport layers provide this feature out of the box due to the popular demand (see for example) and this one is one of the most popular implementations.

Understood. But usrsctp is just an SCTP implementation. You can combine it with NAT traversal tools if you want. This is what WebRTC does, for example, by combining it that STUN/TURN/ICE. But this is not part of any SCTP specification...

Yup, I'll stick with a sort of signaling server as well I think, just was a bit confused with NAT-friendly mode. 👌

If there is still an issue, please re-open.


simplify tests

I was reading the tests to understand this part and it got confusing with the duplication. Of that was intentional b/c those args may change in the future please just close this. If not, this PR consolidate the common ones and then just update what is different for each case.

Looks good, thanks. I think that the codecov failure can be ignored.


Update text “The server says: camlistored” in auth

The camlistored auth handler has this weird text:

“The server says: camlistored”

Why?
I guess it means that the username must be "camlistored".  But why does the username matter? We don't support multiple users yet anyway.
We could just ignore the username and change the text to say "Any username works. Password is available from (LINK TO COMPUTE GCE INSTANCE URL METADATA)"

We cannot change that part of the text: "The server says:", as it is added to the dialog by the browser (the text is slighly different on firefox) because we sent back a realm (which is "camlistored" != username).
What we could do is:

Nothing. because realms can be used to separate different auth domains. maybe we'll want a different auth for a different part of what we serve? I don't know.

send an empty realm. I've checked that both on chrome and ff, that makes the whole "The server says..." string disappear.

use the realm as a hint for where to find the username/password, like you suggested (when I assume you had forgotten it was about the realm). but it now seems to me that it's not what it's meant for and it would be kinda gross, no?

Empty realm works.

sgtm, will do.

e13dc9a0ce2b8bb7e7110470692c8344a013fce0


Click and drag to highlight characters on Linux

On linux, clicking and dragging doesn't highlight any characters. Double clicking a word highlights a word and a triple click highlights the line. Should you be able to click and drag to highlight character by character or not?

I'm not sure what you mean.  I use Linux and I can click + drag to select text just fine.

Have you followed the suggestions in the Debugging document? Also, could you give the following information?

Which version of Atom are you using?
What OS and version are you running?
Do you have Emmet installed?
Can you reproduce the issue after completely exiting Atom and restarting using atom --safe?

Are you running Linux in a VM?

I am using Atom 1.0 on Mint 17.2 as a VM. I do not have Emmet installed and I could reproduce it  using atom --safe

I'm running Atom 1.0.0 on Linux Mint 17.1, and I do not have this problem.  Perhaps it's some software separate from Atom creating this issue.

@npezza93 More specifically, are you running it in VirtualBox?

@mnquintana I am running it in VirtualBox. Does VirtualBox mess up highlighting stuff?

There's currently a few problems with Atom (more specifically, Chrome <43) wrongly detecting Virtualbox as a touchscreen interface: see #6306, #6243, and #6219 for more information.


Stuck in groovy pad

Hello, when I go open groovy pad [F5] somehow I can't exit unless I restart the container is there a way to exit from Groovy Pad since there is no X - close button in corners.

Thanks for reporting, I'm fixing this.


Refactor interface (datastructure)

Hi,
I suggest that we refactor the interface to have a common data structure. I created this issue so we could start working on these.
In pystan we get Ordered dict with
odict = fit.extract()

and with pymc3
from itertools import OrderedDict
odict = OrderedDict()
for name in trace.varnames:
    odict[name] = trace.get_values(name)

These have a common structure considering only the data. Sample size is on the first axis.
Most of the plots do not need chain number etc (excluding forestplot etc). I have tested these with needed modifications and it works with results from both libraries.
The other "problems" are logp (not a problem) and possibility to extract priors and other information.
Both pystan and pymc3 have a possibility to call logp with a function call so these should be handled.
Also there are functions from pymc3 that need to be handled.
ps. Some naming conventions

trace vs traces / Multitrace
burn-in vs warm-up

That makes sense to me. Before changing any code here, however, we should copy the most recent plotting code from pymc3 over.

Hi,
here are some remarks considering the future.
Main interface
We should make the main interface to read in correctly created (Ordered)dictionary.
Then we could read also fit objects from pymc3 / pystan.
External functions
Do we need to implement some general calculations (Rhat, WAIC etc).
Refactor for the library
I also propose a refactor for the plotting code. The plotting could be a process.

function that reads in fit object / dictionary and gathers all (meta, xy) data for plotting

function that outputs trace specific data (for plotting)

function that actually plots (could be bokeh or matplotlib)

Only numpy dependency (optional for matplotlib / bokeh, no scipy)
Can we make a plotting library without a dependency for real plotting library?
Examples for plotdata generating functions
I have created some examples for plotdata creation functions  (following the current codebase).

hist

calculate with numpy.histogram
plot with bar or step functions

kde

calculate with numpy.fft
follows fast_kde method
plot with lineplot

violin

kde/histogram flipped
plot with lineplot

autocorr / xcorr

numpy.fft based calculation
plot with lineplot

forest

plot with lineplot / fillplot

Still missing some functionality.
see here a jupyter notebook
or here a link for the folder.
Real-time plotting (pystan/pymc3/others)
Do we want to support real-time plotting?

All of this sounds fine to me in general terms.
re: dependencies. I think we can/must depend on matplotlib (>=2.0). It would be nice to only depend on that and numpy, in my opinion.
re: real-time plotting. I haven't seen any demand for this.

current pymc3 codebase supports realtime plotting.
Is this something one could implement with pystan in the future (httpstan?)

Interesting. I'll have to check that out. In principle there's no reason
we couldn't do it. Samples are available as a stream.
On 06/08/2017 10:10 AM, Ari Hartikainen wrote:

current pymc3 codebase supports realtime plotting.
Is this something one could implement with pystan in the future (httpstan?)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/mcmcplotlib/mcmcplotlib/issues/12#issuecomment-307115484,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABN7s1JSgv1Kj1ThAiBdiWU4KxOeKkxks5sCADzgaJpZM4NZwy7.

See also here: https://github.com/mcmcplotlib/mcmcplotlib/issues/4#issuecomment-374933062

I think refactor is ready.


#1650880191 Enhance api structure and api documentation.

What does this PR do?

Enhance the api structure.
Change the landing page to direct to core-api documentation

refactor all views to generic views

Description of Task to be completed?

[x] make core-api documentation the landing  page.
[ ] register user model to admin
[x] remove nested request body
[x] refactor tests

How should this be manually tested?

Run server for application using python manage.py runserver
Copy server link into browser of choice http:localhost:8000
You should be able to see core-api documentation.

What are the relevant pivotal tracker stories?
#1650880191

Coverage increased (+0.009%) to 93.846% when pulling 519216a20660a1b580187e8b13317731ec9d6358 on ch-enhance-API-structure-165080191 into d6cee24ebf88dbfb9a846e0f25395c29467c21f1 on develop.


unable get all childFrames when headless is false(puppeteer version 1.20.0,4.0.1,5.0.2),when version is 1.19.0 it is ok.

Steps to reproduce
Tell us about your environment:

Puppeteer version:1.20.0
Platform / OS version:mac
URLs (if applicable):
Node.js version:10.15.0

What steps will reproduce the problem?
Please include code that reproduces the issue.
1.(await frame.childFrames()).length // 0 when headless is false
(await frame.childFrames()).length // 1 when headless is true
2.
3.
What is the expected result?
Setting headless true or false must return the same childFrames.
when i test this code on puppeteer version 1.19.0 which return the same childFrames.
What happens instead?

Just confirmed that it is working in 1.19.0. Previously I had 5.5.0 and it indeed couldn't retrieve the iframes from headless browsing.
Can't anyone look into this?

Just confirmed that it is working in 1.19.0. Previously I had 5.5.0 and it indeed couldn't retrieve the iframes from headless browsing.
Can't anyone look into this?


Custom agent with only VS Build Tools (not full Visual Studio 2017) - not found

Background
We have some custom agents with the VS build tools for 2017 but without full VS2017 installed. These build agents have been working for a while now but we noticed that in the past couple days they no longer are able to build our 2017 projects. We get an error when using the VS 2017 build task of "Visual Studio 2017 was not found." When we attempt to use the MSBuild Task instead we also get an error of "MSBuild version '15.0' was not found for architecture 'x86'. Verify the architecture input value is correct and verify Visual Studio 2017 is installed. MSBuild version '15.0' is included when Visual Studio 2017 is installed." Note that we are able to see the capabilities for 2017 in the agent properties and this has previously worked with no changes to our agent host VMs on our part. I am assuming this is related to a recent update of the agent software.
Reproduction

Create a build that uses VS 2017
Select an agent pool with the 2017 SDK and MSBuild 15 but not VS 2017
Run a build for a VS 2017 project

Expected
The build should execute VS or MSBuild.
Actual
Visual Studio 2017 or MSBuild was not found.

We have some custom agents with the VS build tools for 2017

The task has an option for you to specify the msbuild location for scenarios like this.  Look in advanced.

I don't see that option. If I did though, are you saying that this is a change in behavior for the task and that our setup is no longer supported unless we install full VS2017? Here is what I see for the task:

i'm working on a PR. the workaround is use the msbuild task - it has the advanced option

@ericsciple thanks for the reply, I think that's what I was looking for!

@ericsciple since you are working this, here is some more context on the bug: Our agent VM has full VS 2015 on it and when I choose "Latest" it will try to build the project using the 2015/14.0 tooling.

@aarondandy this oversight on my part. the problem is vswhere only searches for full VS by default. what i'm going to do is fallback to searching for the BuildTools product if full VS isn't found. If you want to pre-validate the fix on your machine, you can verify the following vswhere commandline will find your buildtools install (works on my machine):
vswhere.exe -version "[15.0,16.0)" -products Microsoft.VisualStudio.Product.BuildTools -latest -format json
You can find a copy of vswhere in the task cache in the agent (agent\_work\_tasks\VSBuild_<guid>\<latestver>\vswhere.exe)

Running
vswhere.exe -version "[15.0,16.0)" -products Microsoft.VisualStudio.Product.BuildTools -latest -format json
Does yield the MSBuild tools 2017 installed, where as
vswhere.exe -version "[15.0,16.0)
yields none.
A fix would be appriceate because most builds are now failing on our custom build agent.

I encounter the same issue. Running using "Latest" works fine too, but is not ideal.

I temporay adjusted the following:
ps_modules\MSBuildHelpers\PathFunctions.ps1
and altered the line where the arguments are passed to
Invoke-VstsTool -FileName "$PSScriptRoot\vswhere.exe" -Arguments "-version [15.0,15.1) -products Microsoft.VisualStudio.Product.BuildTools -latest -format json" -RequireExitCodeZero 2>&1 |
So it includes '-products ..' like @ericsciple said.
That allows us to run builds again, hope this is a usefull temporary fix for others.

We encountered exactly the same issue here, latest gets rid of the error, but probably uses VS2015.

@np83 VS2015 should also work with C# 6. We are using among other String Interpolation and it compiles just fine on VS2015 :)

a fix is in progress. until the hotfix rolls to all rings, the workaround is:
for agent routing: add user capability on pool admin page.
for task: use msbuild task and advanced option to specify the location of msbuild

My build failed using VS 2017 as the settings; I switched it to "latest" and it succeeded.

@codymullins - that's a different issue.  This one is about private agent without VS sku installed (only build tools).  But, to answer your question, on the queue tab you probably have "Hosted Pool" selected which only has VS2013, 2015.  So if you selected to use VS2017, it would say not found correctly.  If you select Hosted VS2017 queue then you will land on a machine with VS2017 and it would be found.  We are aware of the confusion and discussing changes.

@bryanmacfarlane looking at the settings, it appears you are correct. Thank you for the clarification, I did not realize I needed to select a different hosted pool.
Is there some kind of technical limitation to requiring a separate pool for VS2017 being a valid option in the build's Visual Studio Version drop down? Just out of curiosity.

@codymullins - don't want to get too far off topic for the original issue but to answer the question quickly - yes, the previous approach of stacking all versions on a single VM image is intractable.  The "hosted pool" points to a set of machines with VS2010,12,13,15.  17 wouldn't fit so we're moving to a model of era of VS.  So we will have VS2017, VS2015, pools and current hosted pool will be deprecated.  The queue determines what pool of machines you're using.  The dropdown in the msbuild task says find the version of msbuild associated with VSxxxx I chose.  So, if you choose hosted pool (vs2015, etc..., no vs2017) and the msbuild task says to find use vs2017's msbuild, it's not found.  Big usability problem.  We're going to make next major versions of task default to PATH/Latest, have a queue/pool per VS version, and then put the queue choice more up front when creating def instead of hiding it in options (used to make sense hiding as advanced option of old world with an image that contains all tools).

I could be wrong but this may also be impacting the VSTest tasks as well.

Hey @aarondandy ,  can we fix the typo in the issue title: Cusom -> Custom ?

I hate to be negative, but we're going on a week here guys and still no fix? 😞
Do you realize how many builds we would have to update with these proposed workarounds because of this? Longer term I don't want them to be defined that way, I just want the build to be defined the way it is using the regular build task with no customizations so then we'd have to spend time rolling back the definitions. Therefore it's actually just easier for us to retarget to a build agent that has full VS2017 installed, but even that cost us all time to stand up, then all the teams have to retarget all of their builds (that require 2017... which is quite a few) and we're effectively funneling everything down to one agent as opposed to the pool of N we had set up already. I have to imagine our company pales in size compared to some of your bigger customers too. Are you really not hearing this from more people??
So I have to ask: how was this not an immediate stop and fix (or rollback)? 😢

The tasks have been fixed and they are rolling out scale unit by scale unit in a safe deployment manner.  It should hit yours within the next couple of days.  Our patches and deployments go through rings.

how was this not an immediate stop and fix (or rollback)?

It was an immediate fix but we still roll it out over days so we don't make it worse and break mainline (VS skus installed).  The vast majority of folks have full VS installed and/or use the hosted pools.  There's also a workaround.
If it was blocking (no workaround) and/or affected a large swath of users we would disregard deploying by rings and blast out everywhere.

@drub0y i've now added a patch available here you can apply without waiting for the rollout through the rings

@bryanmacfarlane Well thank you very much for that explanation. That helps us understand the process and decision making for this kind of issue in the future.
I guess what this really brings to light for me is something I've worried about for a while now which probably warrants a separate discussion (if there's not one already going on somewhere) which centers around the ability to only peg yourself to a major version of a task (e.g. 1.*) instead of being able to peg yourself to an exact version of a task.  Still, you wouldn't want to have to go do this on every build in a scenario like this, so you'd have to be able to manage build task versions at the project level at the very least... obviously account wide would be great too. Food for thought! :smile:

@ericsciple Appreciate that! We'll give that a look. Can you tell me tho, if we upload this version now, will future versions still continue to automatically update?

@drub0y - yes, you will get future updates.  tasks you upload are overlayed and unioned with the in-the-box ones and sorted by version decending.  you can also delete the task using tfx and it will delete the overlay.
regarding pinning to exact versions - yes, lots of discussion and considerations (too long to go into here).  The good news is we will offer yaml preview in a few sprints (in dev now) and it will allow you to lock down not only the process but check-in tasks to source control and completely lock.
https://www.youtube.com/edit?o=U&video_id=lkPnv5H2ANI

@bryanmacfarlane - Using tfx I've verified that our VSO install has VSBuild 1.118.0 however the new build server with agent version 2.116.1 is still not reporting MSBuild 15.0 under system capabilities.
I have tried adding this under user capabilities but queued build jobs are still not being assigned to this agent. Is there anything I can do to get jobs being assigned to this agent?

@discorev you may be missing a different capability. what i would do is add a queue-time demand for the specific agent name. then if it fails to find an agent that satisfies all of the demands, you will get an error that lists all of the demands

also i believe the agent fix is included in the 117.1 release: https://github.com/Microsoft/vsts-agent/releases/tag/v2.117.1

The task hotfix has rolled everywhere. And the agent update is available now on every scale unit, or nearly every scale unit I believe. To update the agent, click to update the agent from the context menu for the agent on the agent pool admin page.

After upgrading to VS 2017 BuildTools 15.3.3 this bug appeared again - agent cannot find them...

C:\Program Files (x86)\Microsoft Visual Studio\Installer>vswhere.exe -version "[
15.0,16.0)" -products Microsoft.VisualStudio.Product.BuildTools -latest -format
json
[
{
"instanceId": "c489a95a",
"installDate": "2017-03-15T11:14:18Z",
"installationName": "VisualStudio/15.3.3+26730.12",
"installationPath": "C:\Program Files (x86)\Microsoft Visual Studio\2017
\BuildTools",
"installationVersion": "15.3.26730.12",
"isPrerelease": false,
"displayName": "Visual Studio Build Tools 2017",
"description": "Nástroje Visual Studio Build Tools umožňují vytváření nativn
ích a spravovaných aplikací na bázi platformy MSBuild, aniž by se vyžadovalo pro
středí IDE sady Visual Studio. K dispozici jsou i možnosti pro instalaci nástroj
ů, jako jsou kompilátory a knihovny nebo podpora Visual C++, MFC, ATL a C++/CLI.
",
"enginePath": "C:\Program Files (x86)\Microsoft Visual Studio\Installer\
resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service",
"channelId": "VisualStudio.15.Release",
"channelPath": "C:\Users\admin-zidek\AppData\Local\Microsoft\VisualStu
dio\Packages\_Channels\4CB340F5\catalog.json",
"channelUri": "https://aka.ms/vs/15/release/channel",
"releaseNotes": "https://go.microsoft.com/fwlink/?LinkId=660469#15.3.26730.1
2",
"thirdPartyNotices": "https://go.microsoft.com/fwlink/?LinkId=660485"
}
]
C:\Program Files (x86)\Microsoft Visual Studio\Installer>vswhere.exe -version "[
15.0,16.0)" -latest -format json
[]
C:\Program Files (x86)\Microsoft Visual Studio\Installer>


Change default location of temp files for Environments

Writing temp files in cwd() / .azurite directory instead of dumping everything in the project directory

@microsoft-github-policy-service agree

@EmmaZhu
Would you please help to look?


Fix Master build failure

Problem
https://github.com/project-chip/connectedhomeip/pull/13071 seems to have broken a couple of CI job
Change overview
Fix the build failure
Testing
EFR32 platform now compiles

This case is interesting the CI didn't report a failure in its PR but the error was raised in master branch

That's because it was a merge conflict, no?  @electrocucaracha

This case is interesting the CI didn't report a failure in its PR but the error was raised in master branch

That's because it was a merge conflict, no?  @electrocucaracha

It could be or at least it's a possibility


If CSV has ISO time as column resulting SQL Table is empty

Hi,
If I import a CSV with time data in a column I get "No rows selected" after running a query. Using it without the time data works perfectly fine.
Steps:
Import CSV:
"id","createdOn"
"60dc8bd397491cb72be381e3","2021-06-30T15:20:51.469Z"
"60dc83c297491cb72be381af","2021-06-30T14:46:26.326Z"
"60dc813997491cb72be381a2","2021-06-30T14:35:37.010Z"
"60dc813797491cb72be381a1","2021-06-30T14:35:35.629Z"
"60dc7b5097491cb72be38165","2021-06-30T14:10:24.717Z"

Run query (select all rows from the imported CSV)
Actual result
No rows selected
Expected result
5 rows selected

Hi @ZlydeTJ ,
Thank you for letting me know about the issue. Indeed, there is an error because CSV parser returns date as Date object and it can not be inserted into the database because SQLite doesn't support Date type. I'll fix it as soon as possible.

Hi @lana-k,
Thank you for fixing the Issue this fast! Working with sqliteviz is very enjoyable.


Filepond inside accordion does not have the right height

When placing the filepond enhanced file input inside an accordion, the height of the "drag and drop" zone is not calculated correctly.

See fiddlejs

@apandichi, good catch. FilePond measures the available space and then scales the drop area accordingly if it's initialized in an invisible element the available space will be 0 (as the element does not have any layout).
You could initialize FilePond when the section becomes visible (maybe the accordion throws an event?).
I'll look into the following solutions

Keep (cheap) render loop going while invisible to determine if FilePond has become visible
Detect visibility changes and trigger re-render once FilePond has become visible

I've just published versions 1.2.5 of FilePond. It fixed the issue in my test case. Will close for now.

@rikschennink Thanks, it fixed my problem too!

Awesome, thanks for confirming! @apandichi


Coordinators

First off nice setup, I went ahead and give this a shot and it works perfectly with how you have it setup.
However i noticed once i started using persistent storage I need to modify a few things around host names etc.
Agents and database seem to work fine but I am getting caught up with the coordinators.  It seems to duplicate them every time i take the cluster up and down. (4 -> 8 etc). They are all reporting as alive even the IP's being pointed to no longer exist and thus traffic is trying to be routed to them.
Just curious if i am missing something, I was under the impression that they are supposed to be stateless

Thank you for the feedback.
The coordinators should scale up/down properly.  Can you post your resulting yaml file, so I can take a look, hopefully replicate it on my end, and then figure out what's going on?
Also, what does your Kubernetes environment look like (self-hosted, AWS, Google)?  If self-hosted, what networking add-on are you using?

Sure i will try and find some time this afternoon to do that. One of the main things i changed other then the volume was adding this in
    scheduler.alpha.kubernetes.io/affinity: >
      {
        "nodeAffinity": {
          "requiredDuringSchedulingIgnoredDuringExecution": [
            {
              "labelSelector": {
                "matchExpressions": [
                  {
                    "key": "arangodb-coord",
                    "operator": "In",
                    "values": ["yes", "true"]
                  }
                ]
              }
            }
          ]
        },
      }```


chore: add .DS_Store to .gitignore

On Mac we were not ignoring the .DS_Store

It is fine, but FYI, you can configure a global exception in your local environment (I assume you want to exclude .ds_store files in all your projects)
git config --global core.excludesFile [path-to-global-ignore.file]

Same for the file .git/info/exclude if you want to do it only for a specific project.


Implement locale-specific upper and lower case conversions in Intl

See https://code.google.com/p/dart/issues/detail?id=28
Also https://plus.google.com/u/0/114943499066504644906/posts/XJFut2iS7Tg
and http://www.unicode.org/faq/casemap_charprop.html

This issue has been moved to dart-lang/intl#25.


Update README.md

Revised the text; updated the docker run commands

I really don't understand the test failing.
I only came across this kind of error
ImportError: cannot import name 'check_allowlist' from 'conda.core.index' (/opt/conda/lib/python3.9/site-packages/conda/core/index.py)

in the context of circular dependencies. I also can reproduce this in my local docker env. I started to play around with the package versions in the environment.yml for the pyiron/base and pyiron/md images, but haven't yet figured out, where the problem originates. Any suggestion?

The trick is basically comparing the last working build with the current build. As the last build was not that long ago I could look both up here on the GitHub actions. Alternatively there is always the option to pull an old image and then check where it might be incompatible. Finally, another hint was the error message being related to conda so then as I did not see any changes regarding conda, mamba was the next related change.


SceneDelegate - Linking getInitialURL() and addEventListener() don't work on iOS

Description
I thank you for the work you are doing with React Native.
Recently in one of my projects I correctly integrated the Linking.getInitialUrl and Linking.addEventListener APIs.
However out of necessity I had to modify AppDelegate.m and introduce AppDelegate.swift handling (+ adding a SceneDelegate).
There are two scenes PhoneScene and CarPlayScene, this was necessary for the introduction of CarPlay within the project.
Since I made these changes on the native side, the functions related to Linking have stopped working completely, always returning null.
What we have been able to understand is that with the introduction from iOS 13 of SceneDelegates the initial app launch parameters (launchOptions in iOS) and subsequent calls from background mode are no longer handled by AppDelegate.swift but by SceneDelegate. In our case in PhoneScene.swift.

I have already tried running the program without debug mode enabled.
I am sure that the link method is called when the application is loaded

Expected Behavior
I expect to get the initial URL called via deepLink via getInitialUrl or listener handler.
Version
0.68.2
Output of npx react-native info
System:
    OS: macOS 11.6.5
    CPU: (8) x64 Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
    Memory: 79.48 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.19.1 - ~/.nvm/versions/node/v14.19.1/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 6.14.16 - ~/.nvm/versions/node/v14.19.1/bin/npm
    Watchman: 2<IP_ADDRESS> - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.11.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
    Android SDK: Not Found
  IDEs:
    Android Studio: 2021.1 AI-211.7628.21.2111.8092744
    Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.16 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.2 => 17.0.2
    react-native: 0.68.2 => 0.68.2
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Steps to reproduce
1. Remove previous ObjC files

Delete main.m
Delete AppDelegate.h and AppDelegate.mm

2. Create the new Swift AppDelegate
Create a new AppDelegate.swift file, once prompted, click Create bridging headers for Swift.
Paste the following code to the AppDelegate.swift, it includes Flipper code.
// ios/AppDelegate.swift
import Foundation
import UIKit
import CarPlay
import React
#if DEBUG
#if FB_SONARKIT_ENABLED
import FlipperKit
#endif
#endif

@main
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate {
  var window: UIWindow?
  var bridge: RCTBridge?;
  var rootView: RCTRootView?;
  static var shared: AppDelegate { return UIApplication.shared.delegate as! AppDelegate }

  func sourceURL(for bridge: RCTBridge!) -> URL! {
    #if DEBUG
    return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackURLProvider:nil);
    #else
    return Bundle.main.url(forResource:"main", withExtension:"jsbundle")
     #endif
  }

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    initializeFlipper(with: application)
    print("launchOptions", launchOptions?[UIApplication.LaunchOptionsKey.url])
    self.bridge = RCTBridge.init(delegate: self, launchOptions: launchOptions)
    self.rootView = RCTRootView.init(bridge: self.bridge!, moduleName: "PROJECT_NAME", initialProperties: nil)

    RNBootSplash.initWithStoryboard("BootSplash", rootView: rootView);

    return true
  }

  func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
    print("connectionScene")
    if (connectingSceneSession.role == UISceneSession.Role.carTemplateApplication) {
      let scene =  UISceneConfiguration(name: "CarPlay", sessionRole: connectingSceneSession.role)
      scene.delegateClass = CarSceneDelegate.self
      return scene
    } else {
      let scene =  UISceneConfiguration(name: "Phone", sessionRole: connectingSceneSession.role)
      scene.delegateClass = PhoneSceneDelegate.self
      return scene
    }
  }

  func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
  }

  private func initializeFlipper(with application: UIApplication) {
    #if DEBUG
    #if FB_SONARKIT_ENABLED
    let client = FlipperClient.shared()
    let layoutDescriptorMapper = SKDescriptorMapper(defaults: ())
    client?.add(FlipperKitLayoutPlugin(rootNode: application, with: layoutDescriptorMapper!))
    client?.add(FKUserDefaultsPlugin(suiteName: nil))
    client?.add(FlipperKitReactPlugin())
    client?.add(FlipperKitNetworkPlugin(networkAdapter: SKIOSNetworkAdapter()))
    client?.start()
    #endif
    #endif
  }
}

Paste the following to your bridging header file ProjectName-Bridging-Header.h:
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import <React/RCTLinkingManager.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTBridge.h>
#import <React/RCTEventDispatcher.h>
#import <React/RCTRootView.h>
#import <React/RCTUtils.h>
#import <React/RCTConvert.h>
#import <React/RCTBundleURLProvider.h>
#import "RNCarPlay.h"
#import "RNBootSplash.h"
#import <UserNotifications/UserNotifications.h>
#import <RNCPushNotificationIOS.h>

#ifdef DEBUG
#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
#endif
#endif

3. Add flags for Swift compiler in debug mode
Go to XCode project, hit Build Settings, search for Swift Compiler - Custom Flags and then under Active Compilation Conditions, add the following flags to Debug only:

DEBUG
FB_SONARKIT_ENABLED

4. Create Phone Scene
Add a new Swift file called PhoneScene.swift:
// ios/PhoneScene.swift
import Foundation
import UIKit
import SwiftUI
class PhoneSceneDelegate: UIResponder, UIWindowSceneDelegate {
  var window: UIWindow?
  func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let appDelegate = (UIApplication.shared.delegate as? AppDelegate) else { return }
    guard let windowScene = (scene as? UIWindowScene) else { return }
    let rootViewController = UIViewController()
    rootViewController.view = appDelegate.rootView;
    let window = UIWindow(windowScene: windowScene)
    window.rootViewController = rootViewController
    self.window = window
    window.makeKeyAndVisible()
  }
}

5. Create Car Scene
Add a new Swift file called CarScene.swift
// ios/CarScene.swift
import Foundation
import CarPlay
class CarSceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate {
  func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
                                  didConnect interfaceController: CPInterfaceController) {
    RNCarPlay.connect(with: interfaceController, window: templateApplicationScene.carWindow);
  }
  func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didDisconnectInterfaceController interfaceController: CPInterfaceController) {
    RNCarPlay.disconnect()
  }
}

6. Update the manifest in Info.plist
Add the following ApplicationScene manifest to your Info.plist file.
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict>
			<key>CPTemplateApplicationSceneSessionRoleApplication</key>
			<array>
				<dict>
					<key>UISceneClassName</key>
					<string>CPTemplateApplicationScene</string>
					<key>UISceneConfigurationName</key>
					<string>CarPlay</string>
					<key>UISceneDelegateClassName</key>
					<string>$(PRODUCT_MODULE_NAME).CarSceneDelegate</string>
				</dict>
			</array>
			<key>UIWindowSceneSessionRoleApplication</key>
			<array>
				<dict>
					<key>UISceneClassName</key>
					<string>UIWindowScene</string>
					<key>UISceneConfigurationName</key>
					<string>Phone</string>
					<key>UISceneDelegateClassName</key>
					<string>$(PRODUCT_MODULE_NAME).PhoneSceneDelegate</string>
				</dict>
			</array>
		</dict>
	</dict>

Snack, code example, screenshot, or link to a repository
Implement all delegates in AppDelegate and PhoneScene to capture URLs in the following cases:

uninstall app -> click deep link -> install app -> open app
terminate app -> click deep link. -> open app
background mode -> click deep link -> open app

PhoneScene.swift
// ios/PhoneScene.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    //...

    // <---- either one will work ---->
    print("connectionOptions.urlContexts.first?.url", connectionOptions.urlContexts.first?.url)
    print("connectionOptions.userActivities.first?.webpageURL", connectionOptions.userActivities.first?.webpageURL)
  }

  func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    // <---- first launch after install ---->
    print("URLContexts", URLContexts.first?.url)
  }

  func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    // <---- when in background mode ---->
    print("userActivity", userActivity.webpageURL)
  }

AppDelegate.swift
// ios/AppDelegate.swift
import Foundation
import UIKit
import CarPlay
import React
#if DEBUG
#if FB_SONARKIT_ENABLED
import FlipperKit
#endif
#endif

@main
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate {
 // ...

  func application(_ application: UIApplication, continue userActivity: NSUserActivity,
   restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    print("userActivity.webpageURL", userActivity.webpageURL)
    return true;
  }
  func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool{
    // <---- first launch after install ---->
    print("first launch after install", url)
    return true;
  }
  func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool{
    // <---- first launch after install for older iOS version ---->
    print("first launch after install for older iOS version", url)
    return true;
  }

}

N.B: I have already tried using RCTLinkingManager but these functions in AppDelegate are not invoked, everything is captured by PhoneScene. I cannot understand how to fix this from a UIScene.

// ios/AppDelegate.swift

import Foundation
import UIKit
import CarPlay
import React
#if DEBUG
#if FB_SONARKIT_ENABLED
import FlipperKit
#endif
#endif

@main
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate {
 // ...

  func application(_ application: UIApplication, continue userActivity: NSUserActivity,
   restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    print("userActivity.webpageURL", userActivity.webpageURL)
   return RCTLinkingManager.application(application, continue: userActivity, restorationHandler: restorationHandler);
  }
  func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool{
    // <---- first launch after install ---->
    print("first launch after install", url)
     return RCTLinkingManager.application(application, open: url, options: options);
  }
  func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool{
    // <---- first launch after install for older iOS version ---->
     return RCTLinkingManager.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
  }

}

Did you already find a solution for this?
We are also using a SceneDelegate and we currently also don't know how to use RCTLinkingManager with a UIScene.

This worked for us.
UIWindowSceneDelegate:
  func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    URLContexts.forEach({ context in
      RCTLinkingManager.application(UIApplication.shared, open: context.url)
    })
  }

any one got any solution ?

Any solution?

Did anybody find solution to this bug?
Even my project has same case, I have moved all life-cycle methods from AppDelegate to SceneDelegate.swift and
Linking.getInitialURL() always return "null" when app is launched from terminated state. It still works when reverted back to AppDelegate but that's not the solution for me unfortunately.
----- Here willConnectTo method from SceneDelegate -----
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
var deeplink: URL?
if let userActivity = connectionOptions.userActivities.first(where: { $0.activityType == NSUserActivityTypeBrowsingWeb }),
let webpageURL = userActivity.webpageURL {
// get universal link
deeplink = webpageURL
} else if let urlContext = connectionOptions.urlContexts.first {
// get app scheme deep link
deeplink = urlContext.url
}
handleDeepLink(deeplink)
}
//handels app scheme myapp:// in active and inactive foreground mode

func scene(_ scene: UIScene, openURLContexts URLContexts: Set) {
if let url = URLContexts.first?.url {
handleDeepLink(url)
}
}
//handels universal links https:// in active and inactive foreground mode
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
if let url = userActivity.webpageURL {
handleDeepLink(url)
}
}
}
//function to pass deelink value to react native

func handleDeepLink(_ deeplink: URL?) {
guard let deeplink = deeplink else {
os_log("No deeplink found", log: OSLog.default, type: .debug)
return
}
os_log("Deeplink URL FOUND: %@", log: OSLog.default, type: .debug, deeplink.absoluteString) //Prints Deeplink value
RCTLinkingManager.application(UIApplication.shared, open: deeplink, options: [:]) //Works in background mode but doesn't in terminated / app killed state
}
os_log prints the deeplink value when app is launched from terminated state by pressing the deeplink scheme "myapp://"
But the value is always "null" when it;s received here Linking.getInitialURL()
Same code works as expected in background and deeplink value is received from Linking.addEventListener
I have tried everything from the internet and all the sources nothing has worked until now.

hi, check my example with solution https://github.com/alex-vasylchenko/react-native-carpaly-example he problem was solved using the connectionOptionsToLaunchOptions function

@alex-vasylchenko can you please provide entire source code?
I'd like to run the code locally to test it and apply on my project.
It's that true that lifecycle methods from AppDelegate's connectionOptionsToLaunchOptions need to be moved to SceneDelegate when Scene are introduced?
I'll really appreciate your advise.

@alex-vasylchenko is it possible to get in touch with you google meets or anywhere you prefer?

I'm stuck on this bug for couple of weeks now and I cannot find any solutions anywhere.
I really appreciate your willingness to help.

@alex-vasylchenko Nice solution, but doesn't seem to work with RN 0.74.x. Have you tried it?


Help : How build a divi module from a subfolder

Hi
I have a plugin and Im creating blocks/modules/elements in VisualComposer, Gutenberg and Elementor.
Now I want to create a Divi module to my plugin but "create-divi-extension" is to buil a extension from raiz.
I will buil the module in a subfolder and the problem is, it will create a node_module and package.json there too ... everything will be messy.
How can I sort this files to my convenience? Could I only create a module without create a extension?
Regards

If you want this: YourPluginName -> FolderForDiviModule
You can walk through inside this folder and put package.json(You have to create one manually) inside your intended folder. After this manually run npm install command. This will install all dependencies.


Feature Suggestion: Make it work with notcurses

Not a bug but a feature suggestion would be to make this work with notcurses, too. It would make an outstanding option for the terminal.

I contemplated basing this project off of https://github.com/crossterm-rs/terminal#implemented-backends which could allow users to select a backend, but even then it doesn't look like notcurses is an implemented backend. That's one potential option to solve this


[Feature]: Provides a method to get the entire dependency module tree based on the entrypoint module

What problem does this feature solve?
In webpack, we can use moduleGraph to get all the dependent module objects with entrypoint as the entry point. I need to count the data of each entry dependent module.
What does the proposed API of configuration look like?
getAllModulesByEntryPoint

you  can use this get
 for (const chunk of  compilation.entrypoints.get(this.entryPoint).chunks) {
         for (const module of compilation.chunkGraph.getChunkModulesIterable(chunk)) {
         // do something,  console.log(module.identifier())
}     }

您好，我最近正在休假中，无法亲自回复您的邮件。我将在假期结束后，尽快给您回复。

You can use the following code snippet to achieve the required functionality:
const entries = theCompilation.entries.values();

const visitedModules = new Set();

function traverse(connection) {
	const module = connection ? connection.module : null;
	if (module) {
		if (visitedModules.has(module)) {
			return;
		}
		const connections =
			theCompilation.moduleGraph.getOutgoingConnections(module);
		visitedModules.add(module);
		for (const c of connections) {
			traverse(c);
		}
	}
}

for (const entry of entries) {
	for (const dependency of entry.dependencies) {
		const connection = theCompilation.moduleGraph.getConnection(dependency);
		traverse(connection);
	}
}


Refactoring Logs

Coverage increased (+0.04%) to 85.951% when pulling c1019bf68aa79d018c8c74fe2d6bc1998aa86833 on daniel into 002ef69403a87d18a32c57d34b21c6e4324110d5 on main.


[Meteor 1.3] MongoError: cannot remove from a capped collection

MongoError: cannot remove from a capped collection: meteor.__kdtimeevents

Is this a collection that comes with the Meteor core?
You can fix this error by adding the collection to the excluded collections. See: https://github.com/xolvio/cleaner#13-1

@Sanjo That works, Thanks!

It comes from Kadira: https://github.com/kadirahq/meteor-debug/commit/b525ae8
resetDatabase({excludedCollections: ['__kdtraces', '__kdtimeevents']});

+1 should skipping capped should probably be the default


Cuirass type ventilator

here is another link you may like to add
https://github.com/jps2000/Cuirass-Ventilator

I have added it. It is difficult for me to evaluate clinical suitablity. You do not have a license  statement; may I suggest CC0 for desgins and GPL 3 for code? Get back to me if you make a change. Thanks for your efforts!

Would you like to offer an email for us to add to our public spreadsheet as a point-of-contact?

point of contact should be handled via https://github.com/jps2000/Cuirass-Ventilator / Issues
License added

@ RobertLRead
Just added a cuirass construction  designed with F360. f3d File is included  !!!!!


RUN-1833: dockerclient: use /bin/sleep for idling instead of sleep

The built-in "sleep" in the latest alpine base image's shell behaves differently from the version it has to exec(), exiting when it receives a stray SIGCHLD for one of the processes we're running in an exec session, and this is causing a consistent failure in the "copy and env interaction" conformance test.
Call /bin/sleep explicitly to work around this.
Note to other maintainers: please do not /lgtm until Travis is green.

LGTM
and happy green test buttons.

/lgtm


Plan Docker image structure and organization

Based on the inventory of PASS build artifacts in #197, perform an analysis to define how those build artifacts should be captured in Docker images for deployment.
Definition of done:

A documented plan for the development of Docker images which includes all top-level project build artifacts (those which are the final product of the build process and not intermediary artifacts).

Depends on #197

This definition is part of a broader project analysis. Consider the following thought experiment for how the docker image structure may be defined by larger concerns:
What if we were to consolidate projects into logical major components, perhaps something like:
- Server backend - Provides the PASS API. Communicates with DB and Fedora
- Support systems - Data Loaders and other asynchronous systems. Communicates with PASS API.
- UI - Provides user interface. Communicates with PASS API.

Each major component (with the possible exception of the UI) could be a multi-module maven project that includes all associated projects.

A single docker image could be built for each major component (which would drastically reduce the overall number of docker images in play)

Integration tests could be a stand-alone project within each major component. All parts of the major component under test would be built and run directly (not using docker). If there is a dependency on another major component, that piece could be launched via docker, but I think we'd want to try to avoid this where possible.

A set of system tests could be developed to execute all parts of the system. These would launch the system using the major compoent docker images and perform black-box tests. Some of the existing integration tests may be better suited to this type of environment, so could be pulled out and used there.

Looking into how to create a maven multi-module which could contain all the rest services and be built as a single artifact.

I've updated the document as a result of the discussion we have had and also added a proposal for a pass-support library to consolidate other parts of the backend.


Add pipeline for ingesting from MCS papers

E.g
https://molecularcasestudies.cshlp.org/content/9/4/a006294.full
All MCS case reports have HPO IDs pre-annotated.
Of course manual curation is required to capture the individuals but it could still be useful to have a placeholder phenopacket as the g2p relationship is potentially useful

It would also be great to see if we can develop an LLM powered tool to decipher tables such as this:
https://molecularcasestudies.cshlp.org/content/9/4/a006294/T1.expansion.html
We also need to extract the variants. I  think that Z. Liu at NLM had a good tool for that.
Love this idea, maybe we can write a grant proposal for it.

https://chat.openai.com/share/69dd5d8d-dc24-49bf-8ad3-68484504839d
(may not be visible if you're not a subscriber)
It should be possible to recapitulate this in openinterpreter

I think this kind of pipeline is out of scope for this repo, although it would be useful. Here we want manually curated/checked curations!


elementum player wont start

after laumching elementum it says encounter error and please check the log.

Expected Behavior

Current Behavior

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

Version used: 0.0.58

Environment name and version:

Operating System and version: win10

Link to Kodi debug log:

http://paste.kodi.tv/mexiqoyewa

Have you enabled remote control in Kodi?
Have you set initial Elementum settings? (go to plugin settings and press OK).

Please, try with 0.0.62.
If there is no response - i will close the issue. Thanks


pythonPackages.pyls-black: 0.3.0 -> 0.4.4

Motivation for this change
update. https://github.com/NixOS/nixpkgs/pull/58771 broke the build of the old version
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

python37Packages.pyls-black


DataFrame.read_parquet and DataFrame.write_parquet

Docs for Polars are here: reading and writing.
I've held back on implementing these as almost certainly a pure elixir backend won't be able to use it. I do think it's worth getting in though. Not sure what the best practice is here: just raising that it's not supported for a given backend?

I had actually done some research on this a while back trying to leverage Parquet files from within Elixir.  Here are some resources I found but never got a chance to dig deeply into beyond generating the Erlang bindings for the Thrift definition (I was more focused on getting the data processed than tool-building at the time):

https://github.com/apache/parquet-format
https://thrift.apache.org/docs/Languages.html

https://github.com/apache/thrift/blob/master/lib/erl/README.md

FWIW, I think raising an exception on unimplemented for a specific backend would be fine until it is implemented, but doesn't hold up the progression of the explorer package.
For example, Nx didn't hold back on implementing features based on XLA in order to keep libtorch on parity, which is fine.

Thanks for that @arpieb! Those are great resources to come back to for the pure Elixir implementation.


sbt >= 1.9.4 doesn't handle packaging type ejb properly

steps
The reproducer can be found here: https://github.com/thescouser89/ejb-sbt-issue
Just run:
sbt run

in each sub-folder inside.
problem
sbt >= 1.9.4 gets confused by the packaging type "ejb" for a Maven dependency and tries to download the dependency.ejb file instead of the dependency.jar file. sbt 1.9.3 handles this properly.
The dependency we hit the issue is: https://repo1.maven.org/maven2/org/jboss/da/reports-model/2.1.0/reports-model-2.1.0.pom
expectation
sbt downloads the proper jar file.
notes

@thescouser89 Thanks for the report! I'm guessing that the root cause is likely in the Coursier, so could you also report to coursier/coursier as well please?
https://github.com/sbt/sbt/releases/tag/v1.9.4 updated lm-coursier-shaded from 2.1.0 to 2.1.1, and according to https://github.com/coursier/sbt-coursier/compare/v2.1.0...v2.1.1, that updated Cousier from 2.1.2 to 2.1.6. Maybe https://github.com/coursier/coursier/pull/2718 has triggered this new behavior?

Thanks @eed3si9n ! Created https://github.com/coursier/coursier/issues/3040 on the coursier side.


cancelling chef-server-ctl cleanse --with-external still acts on external sources

Running chef-server-ctl cleanse --with-external and then typing CTRL-C will proceed to attempt cleanse the external solr and postgresql data.
It should actually abort.
This is with 12.14.0.  I have not tested other versions.
# chef-server-ctl cleanse --with-external
    *******************************************************************
    * * * * * * * * * * *       STOP AND READ       * * * * * * * * * *
    *******************************************************************
    This command will delete *all* local configuration, log, and
    variable data associated with Chef Server.
    This will also delete externally hosted Chef Server data.
    This means that any service you have configured as 'external'
    will have any Chef Server permanently deleted.

    You have 60 seconds to hit CTRL-C before configuration,
    logs, local, and remote data for this application are permanently
    deleted.
    *******************************************************************

^C
Deleting data from external service: opscode-solr4
Cleansing data in a remote Sol4 instance is not currently supported.
Deleting data from external service: postgresql
Chef Server databases and roles have been successsfully deleted from your_database.rds.amazonaws.com

Ouch, I'm sorry that you ran into that. We'll do some digging, as I'd like to know how long this has been out there.
That aside, here's the omnibus-ctl PR that resolves it. I will close this issue once we pull that change into a build for current.

@acranox I am really sorry it has taken us so long to get back to you. The change @marcparadise mentioned is still outstanding but we have made to prioritize this issue.


Enable an automated test for the Provisioners API

Description
Hey! As a developer, I want to have an automatic way to test my implementation before merging it into the main branch. Currently, the only test in the kyma-project/control-plane repo that provisions cluster via Provisioner's API pre-main-control-plane-gke-provisioner-integration is not only optional and not triggered automatically when the PR to the Provisioner is opened, it's also broken for a long time. The image in the values.yaml is set to the nonexisting value, the test itself uses not supported Kubernetes version and who knows what else
I think we should either fix the test and configure it to be triggered automatically when there is a PR opened to the Provisioner or use somehow the fast-integration test for the runtimes as it uses Provisioner's API (it's triggered only in the kyma-project/kyma repo though)
Or replace the Provisioner with other components as fast as possible
Expected result
The automatic test that uses Provisioner's API (and its database, so the migrations are also tested) is triggered while PR is created, and passes
Actual result
The test is not triggered automatically and while triggered manually, it crashes
Steps to reproduce
Open a PR to the kyma-project/control-plane repo, comment it with /test pre-main-control-plane-gke-provisioner-integration and wait for the failure. You can connect to the Prow cluster to see the logs
Troubleshooting
Here are logs acquired while troubleshooting, while trying to use the job in this PR:

kubectl -n kcp-system describe po oct-tp-testsuite-all-kcp-provisioner-tests-0 - Failed to pull image "eu.gcr.io/kyma-project/control-plane/provisioner-tests:PR-650": rpc error: code = Unknown desc = Error response from daemon: manifest for eu.gcr.io/kyma-project/control-plane/provisioner-tests:PR-650 not found: manifest unknown: Failed to fetch "PR-650" from request "/v2/kyma-project/control-plane/provisioner-tests/manifests/PR-650".
after updating the test image to PR-632 kubectl -n kcp-system logs oct-tp-testsuite-all-kcp-provisioner-tests-0 tests - #1: graphql: Failed to start provisioning, error creating Shoot for 123123 cluster: %!!(MISSING)!(MISSING)s(MISSING), shoots.core.gardener.cloud "qwe" is forbidden: [spec.kubernetes.version: Unsupported value: "1.18.12": supported values: "1.21.1", "1.20.6", "1.20.5", "1.20.4", "1.20.2", "1.19.10", "1.19.9", "1.19.8", "1.19.6", "1.18.18", "1.18.17", "1.18.16", "1.18.14", "1.17.17", "1.17.16", "1.16.15", "1.15.12"]

Provisioner will be removed soon


Add more CORS headers

Trying to work with aiohttp and CORS; noticed a couple of CORS related headers were missing.

Cool! Thanks!


Lock wait timeout exceeded; try restarting transaction

Following on from #1229 we found the issue why this add-on failed, adding this to the #1244 tracker. We found that the validation took 20 seconds:
   MySQL [addons_mozilla_org]> select created, modified from file_uploads where uuid = '9700c2853c6549c8be9432d81bf1e69a';
    +---------------------+---------------------+
    | created             | modified            |
    +---------------------+---------------------+
    | 2016-01-10 05:16:13 | 2016-01-10 05:16:35 |
    +---------------------+---------------------+
    1 row in set (0.01 sec)

But no version was created. Kibana showed this:
2016-01-10T13:47:27.000Z    OlympiaWebApp   http_app_addons     signing     INFO    getting specific upload for 10510: FoxTrick 0.16.1...
2016-01-10T13:31:23.000Z    OlympiaWebApp   http_app_addons     signing     INFO    getting specific upload for 10510: FoxTrick 0.16.1...
2016-01-10T13:23:19.000Z    OlympiaWebApp   http_app_addons     signing     INFO    getting specific upload for 10510: FoxTrick 0.16.1...
2016-01-10T13:19:17.000Z    OlympiaWebApp   http_app_addons     signing     INFO    getting specific upload for 10510: FoxTrick 0.16.1...
2016-01-10T13:17:15.000Z    OlympiaWebApp   http_app_addons     signing     INFO    getting specific upload for 10510: FoxTrick 0.16.1...
2016-01-10T13:16:35.000Z    OlympiaWebApp   http_app_addons     z.devhub.task   INFO    Creating version for 9700c2853c6549c8be9432d81bf1e...
2016-01-10T13:16:13.000Z    OlympiaWebApp   http_app_addons     z.devhub    INFO    FileUpload created: 9700c2853c6549c8be9432d81bf1e6...

We came to the conclusion that it was failing somewhere around here:
https://github.com/mozilla/olympia/blob/master/apps/versions/models.py#L132-L145
But couldn't find anything in the log. Jason found this in the syslogs, it wasn't in kibana or sentry:
Jan 10 13:18:47 ip-172-31-39-200 http_app_addons: [<anon>][None] z.addons:ERROR Could not save version changes current: <IP_ADDRESS> to <IP_ADDRESS>, latest: <IP_ADDRESS> to <IP_ADDRESS> for addon 10510: FoxTrick ((1205, 'Lock wait timeout exceeded; try restarting transaction')) :/data/olympia/apps/addons/models.py:754
Jan 10 13:18:47 ip-172-31-39-200 http_app_addons: [<anon>][None] z.task:ERROR Celery TASK exception: TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block. :/data/olympia/apps/amo/celery.py:46#012Traceback (most recent call last):#012  File "/data/olympia/venv/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task#012    R = retval = fun(*args, **kwargs)#012  File "/data/olympia/venv/lib/python2.7/site-packages/celery/app/trace.py", line 438, in __protected_call__#012    return self.run(*args, **kwargs)#012  File "/data/olympia/apps/amo/decorators.py", line 168, in wrapper#012    return f(*args, **kw)#012  File "/data/olympia/apps/amo/decorators.py", line 155, in __call__#012    return self.f(*args, **kw)#012  File "/data/olympia/apps/devhub/tasks.py", line 71, in submit_file#012    create_version_for_upload(addon, file_)#012  File "/data/olympia/apps/amo/decorators.py", line 168, in wrapper#012    return f(*args, **kw)#012  File "/data/olympia/apps/amo/decorators.py", line 155, in __call__#012    return self.f(*args, **kw)#012  File "/data/olympia/apps/amo/decorators.py", line 258, in inner#012    return fn(*args, **kwargs)#012  File "/data/olympia/apps/devhub/tasks.py", line 90, in create_version_for_upload#012    version = Version.from_upload(file_, addon, [amo.PLATFORM_ALL.id])#012  File "/data/olympia/apps/versions/models.py", line 144, in from_upload#012    source=source#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 157, in create#012    return self.get_queryset().create(**kwargs)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/query.py", line 322, in create#012    obj.save(force_insert=True, using=self.db)#012  File "/data/olympia/apps/versions/models.py", line 126, in save#012    super(Version, self).save(*args, **kw)#012  File "/data/olympia/apps/amo/models.py", line 290, in save#012    result = super(OnChangeMixin, self).save(*args, **kw)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/base.py", line 545, in save#012    force_update=force_update, update_fields=update_fields)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/base.py", line 582, in save_base#012    update_fields=update_fields, raw=raw, using=using)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 185, in send#012    response = receiver(signal=self, sender=sender, **named)#012  File "/data/olympia/apps/versions/models.py", line 582, in update_incompatible_versions#012    if not instance.addon.reload().type == amo.ADDON_EXTENSION:#012  File "/data/olympia/apps/amo/models.py", line 376, in reload#012    from_db = self.__class__.get_unfiltered_manager().get(pk=self.pk)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 151, in get#012    return self.get_queryset().get(*args, **kwargs)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/query.py", line 304, in get#012    num = len(clone)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/query.py", line 77, in __len__#012    self._fetch_all()#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/query.py", line 857, in _fetch_all#012    self._result_cache = list(self.iterator())#012  File "/data/olympia/venv/src/django-cache-machine/caching/base.py", line 146, in iterator#012    return iter(iterator())#012  File "/data/olympia/venv/src/django-queryset-transform/queryset_transform/__init__.py", line 20, in iterator#012    results = list(result_iter)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/query.py", line 220, in iterator#012    for row in compiler.results_iter():#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 713, in results_iter#012    for rows in self.execute_sql(MULTI):#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 786, in execute_sql#012    cursor.execute(sql, params)#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/backends/util.py", line 47, in execute#012    self.db.validate_no_broken_transaction()#012  File "/data/olympia/venv/lib/python2.7/site-packages/django/db/backends/__init__.py", line 372, in validate_no_broken_transaction#012    "An error occurred in the current transaction. You can't "#012TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

This could in theory happen, but this particular case is going to be solved by fixing cache machine and stopping those long invalidation cycles.


duplicate count of links

greetings,
first of all thank you for such a nice tool
I am trying to graph our BGP here at AWMN (http://bgpmap.ozo.com/)
I am getting duplicate counts for each link
for instance for a full BGP path dump, for node 3298:
11350 3298
13101 3298
14534 3298
17599 3298
19074 3298
20042 3298
20305 3298
3267 3298
3298 11350
3298 11663
3298 13101
3298 14534
3298 17599
3298 19074
3298 1982
3298 20042
3298 20305
3298 22128
3298 3267
3298 57
3298 7736
3298 9632
57 3298
7736 3298
9632 3298
aspath_graph counts 25 links instead of the actual links which is 14
3298 11350
3298 11663
3298 13101
3298 14534
3298 17599
3298 19074
3298 1982
3298 20042
3298 20305
3298 22128
3298 3267
3298 57
3298 7736
3298 9632
is there a way to deal with this issue?

I managed to work around the above issue and successfully get correct results (you can check them @ http://spq.ozo.com/live/)  with the following hackish script
#!/bin/sh
rm -f /tmp/lili
touch /tmp/lili
vtysh -c "sh ip bgp" | grep -v " h " | grep -v ^*d | grep -v } | grep " i| e" | awk -F " i| e" '{printf $1"\n"}' | cut -c 62-600 | sed 's/^ //g' | awk '{printf NF"\t"$0"\n"}' | grep -P ^[1-9]'\t' | cut -f 2-30 | egrep -o '[0-9]+ [0-9 ]+' | rev | cut -d " " -f 1,2 | rev | sort | uniq > /tmp/awmn-full
cat /tmp/awmn-full | awk '{printf $NF"\n"}' | sort | uniq > /tmp/tasn-out-awmn
IFS=$'\n'
for y in cat /tmp/tasn-out-awmn
do
grep $y" | "$y'$' /tmp/awmn-full > /tmp/awmn-full-tmp
for i in cat /tmp/awmn-full-tmp
do
UPATH="$i"
RUPATH="echo $UPATH | awk '{for (i=NF;i>0;i--){printf $i" "};printf "\n"}' | awk -F " $" '{printf $1"\n"}'"
if ! grep -q "$UPATH" /tmp/lili
then
echo $RUPATH >> /tmp/lili
fi
done
done
awk -F " $" '{printf $1"\n"}' /tmp/lili | sort | uniq > /tmp/aspaths.txt
output looks like this:
grep 3298 /tmp/aspaths.txt
11663 3298
1982 3298
22128 3298
3298 11350
3298 13101
3298 14534
3298 17599
3298 19074
3298 20042
3298 20305
3298 3267
57 3298
7736 3298
9632 3298

Hey @acoul! Thanks for stopping by. :)
It's been awhile since touching this so I'll need to sit down and play with the example you sent to see why it's acting up. Shouldn't be too tough. I need to dedicate some time during the weekend or something to address the other issues too. :)

Hello @coxley, I have to tell you that this is a really neat and handy tool. thank you so much for bringing it to life and sharing it with the community.
here is a simpler aspaths that does generate false results:
240 416 8506
410 416 240
410 416 8506
416 240
416 410 11087
416 410 18523
416 410 3200
416 8506
416 8506 11607
in this case 416 has just three peers: 240, 410, 8506
aspath_graph insists they are 5 peers


fix: Added cache for speed benchmark

I will just merge these in as I will need them for another PR


HTML5 Gamepad API integration

This isn't urgent https://github.com/lichess-org/lila/issues/9860

Can we please add Xbox controller support?
There is an HTML5 Gamepad API available that could help with this.

Thanks for the suggestion, but I do not own a gamepad :) I couldn't possibly test it. Or is there an emulator somewhere?

Can you provide me with a mapping between controller actions and lichess actions? Maybe I can code it and you can test it.

No help received. I won't fix this.


add support to define paths through options

For now, paths could only passed through query, it should also be allowed to pass it through global stylusOptions.

@JounQin thanks for opening this PR and filling this hole!