4.0.2里当dataZoom打开并且series为空时，setOption notMerge抛出异常

One-line summary [问题简述]
更新已有chart数据时，调用echartInstance.setOptions({dataZoom: [{show: true}], series: []}, true)抛出异常。
echarts.min.js:1 Uncaught TypeError: Cannot read property 'getDataPercentWindow' of undefined
    at echarts.min.js:1
    at Array.forEach (<anonymous>)
    at c (echarts.min.js:1)
    at i.eachComponent (echarts.min.js:1)
    at Object.func (echarts.min.js:1)
    at echarts.min.js:1
    at Array.forEach (<anonymous>)
    at c (echarts.min.js:1)
    at Oa.Wa (echarts.min.js:1)
    at Oa.update (echarts.min.js:1)

Version & Environment [版本及环境]

ECharts version [ECharts 版本]: 4.0.2
Browser version [浏览器类型和版本]: chrome 64
OS Version [操作系统类型和版本]: macOs 10.13.3

Expected behaviour [期望结果]
空白的chart，有没有dataZoom没关系，不应该有异常抛出。
ECharts option [ECharts配置项]

myChart.setOption({
    "dataZoom": [{
        "show": true
    }],
    "legend": {
        "data": [{
            "name": "北京温度"
        }, {
            "name": "上海温度"
        }]
    },
    "xAxis": {
        "type": "time",
        "show": true
    },
    "yAxis": {
        "show": true
    },
    "series": [{
        "type": "line",
        "name": "北京温度",
        "data": [{
            "value": [1503474810837, 33]
        }, {
            "value": [1503474820837, 33]
        }]
    }, {
        "type": "line",
        "name": "上海温度",
        "data": [{
            "value": [1503474810837, 35]
        }, {
            "value": [1503474820837, 35]
        }]
    }]
});

setTimeout(function() {
   // 这句会抛出异常
    myChart.setOption({
        "dataZoom": [{
            "show": true
        }],
        "series": []
    }, true)
}, 3000);

Other comments [其他信息]
重现示例见 http://gallery.echartsjs.com/editor.html?c=xrJW6oI-fG&v=2

@pissang  @LonHon @deqingli @100pah Any Update in this issue, I am also facing this issue in Sankey chart DataZoom level function, How can we give Zoom in and Zoom out in Sankey Chart , Could you anyone help me out in this issue..

👍

v4.2.1.rc1版本里仍有这个问题，4.1.0里似乎修复了。

求解决

临时的解决方案是在dataZoom设置生效前，判断series是否为空。

i

我也遇到了这个问题，我在使用桑基图的时候，因为数据量的问题需要做横向滚动。请问有好的解决方案吗？
I also encountered this problem. When I was using Sankey, I had to do horizontal scrolling because of the amount of data. Is there a good solution?

@pissang @LonHon @deqingli @100pah Any Update in this issue, I am also facing this issue in Sankey chart DataZoom level function, And if the DataZoom consider without xAxis and yAxis values binding ,How can we give Zoom in and Zoom out in Sankey Chart , Could you anyone help me out in this issue..

我也遇到了这个问题，我在使用桑基图的时候，因为数据量的问题需要做横向滚动。请问有好的解决方案吗？
I also encountered this problem. When I was using Sankey, I had to do horizontal scrolling because of the amount of data. Is there a good solution?

临时的解决方案是在dataZoom设置生效前，判断series是否为空。

It definitely works. Grateful for your help.
English version: you should try to set dataZoom after series has been set.
Maybe i can take a look on that a make a pull request later.

Hi, I also encountered the same issue. I tried setting datazoom options after series has been set. No use. Here is my option for dataZoom.
this.spec.dataZoom = [{
type: 'inside',
zoomOnMouseWheel: false,
moveOnMouseMove: true,
moveOnMouseWheel: false,
preventDefaultMouseMove: false
}];
Below is the error that I am getting in browser console.
core.js:4127 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'getDataPercentWindow' of undefined
TypeError: Cannot read property 'getDataPercentWindow' of undefined
at dataZoomProcessor.js:96
at Array.forEach ()
at each (util.js:300)
at ExtendedClass.eachComponent (Global.js:449)
at Object.overallReset (dataZoomProcessor.js:92)
at Task.overallTaskReset [as _reset] (Scheduler.js:453)
at reset (task.js:232)
at Task.push.../../node_modules/echarts/lib/stream/task.js.taskProto.perform (task.js:129)
at Scheduler.js:276
at Array.forEach ()
at resolvePromise (zone.js:832)
at zone.js:898
at ZoneDelegate.push.../../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:28173)
at ZoneDelegate.push.../../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push.../../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:601)
at ZoneTask.push.../../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:507)
at invokeTask (zone.js:1671)
at XMLHttpRequest.globalZoneAwareCallback (zone.js:1708)

me too


Desktop app

Is your feature request related to a problem? Please describe.
I would like to have a dedicated application for Twitch chat so I can let the chat run in background and get a notification when someone mentions me
Describe the solution you'd like
A desktop application maybe done with Electron so it can easily support all PC platforms and would be easier to integrate with React
Describe alternatives you've considered
A simple desktop application with a web view but that's not really good to see
Additional context
The desktop application should be able to notify on mentions using the OS notification system (should be easier with electron)

Thanks for you feedback, as a matter of fact, I'm kinda in the same boat and would love a dedicated application.
Having worked a lot with Electron, I'm kinda against publishing a 140MB+ package for something that shouldn't be more than 5MB at most. And top of that, this would be nothing more than a glorified webview with an icon and not a lot of native features (I think notifications may be the only one actually ^^).
The good thing is, we may be relatively close to the end of Electron (I like the tech & idea, don't get me wrong, it's just silly tho to bundle Chromium as a library in each Electron app) thanks to a new project from GoogleChromeLabs named carlo.
What carlo does is basically checking if you have Chrome installed locally and if you do, it'll communicate with the locally-installed Chrome instance using Puppeteer for everything related to rendering for a size of just 2MB.
I've already started experimenting with it in a local branch, I have a very basic hacky version running, but carlo is very new, there is still a lot missing so it'll take time but if there is ever an application, it'll be using carlo or something different of Electron.
I'm closing this issue for now as it's already in my radar and something I want but won't be released very soon.
PS: good luck on Notify ^^


MonadBlockChain instance for Contract does not take TxOpts into account

The MonadBlockChain instance for Plutus Contract does not take options TxOpts in transaction skeletons into account. Especially regarding balancing and ensuring every utxo has the minimum required amount of ada.
For example, take a skeleton that specifies a public key utxo should be spent to mint an NFT and put in at a script address, with the adjustUnbalTx option enabled. The instance for Contract generates a transaction with only one script output carrying only the NFT. Unlike the transaction generated by Direct, it misses a payback output for the public key and the 2 adas in the script output.

This is definitely related to #78, which contains suggestions on fixing this

Closing this because this will be handled only when / if we decide to have an instance for the contract monad.


Defining which characteristic gets read

I have to say, this repo is fantastic :) Thank you for your work Joelx!
I've just been getting into BLE programming, so forgive me if I say something that is completely uninformed. I wasn't sure where else to put my question, so I've decided to drop it here.
In my setup, the ultimate goal is to have multiple buttons attached to a single arduino board which is connected via BLE to Unity.
I've read through your source code and others, and I'm not sure the best way to approach this. Would it be best to have multiple characteristics for each button or one characteristic and set up the bytes that get sent on the Arduino?
I haven't been able to see how the code defines which characteristics get read and my testing hasn't revealed anything to me.
Any help would be greatly appreciated :)

Hi @MiniMe453 , thank you so much for the kind words :)
Don't worry, it's a rather complicated domain overall. This is a very simple example, but there are still quite a lot of things to consider.
First of all please make sure, that this kind of approach is what you need. This repo is built upon a UWP BLE wrapper to allow the support of BLE for Windows/PC platforms in Unity due to the lack of UWP support.
So if you plan on building for mobile platforms only, there might be more suitable solutions.
That said - we hoped this approach would be redundant soon/already with the introduction of .NET5 in Unity, but this seems to have been further delayed to .NET6 ( https://visualstudiomagazine.com/articles/2021/04/22/unity-plans.aspx ). So if you're building for PC, this might still be one of the best solutions for a while.
Okay, with that out of the way :D
For my understanding of what you're trying to do, you would want to set up one characteristic for each button.
So in the case of a button you would have to connect and subscribe to each of the button characteristics.
Unfortunately I haven't really tested this scenario and do not have the opportunity now, but what you could try is to

Fill in all your characteristics in the array at the top of your script (e.g. BleTest mono behavior)
If I remember correctly the ConnectBleDevice() method should hopefully subscribe to all of them.
In your script, call the BLE.ReadPackage() method and watch if the different characteristics in your Debug.Log appear when pressing the buttons.
If that's the case you could simply query this characteristic in your program and and branch to some sub-procedure that does whatever this particular button should do.

Needless to say, you need to program the characteristics on your Arduino accordingly. On my ESP32 projects I've used "BLEDevice.h" and "BLE2902.h".
Like I said, I haven't really tested reading different characteristics with that demo and can't promise that it works.
Hope that helps a bit. Fingers crossed

Thanks for the quick response :)
Unfortunately, the project is only for Windows, so I can't use any of the solutions on the asset store...
I'll take a look at your approach! At the very least, it helps to have a general idea of what to try/what to research :)


Ability to control speed and inclination of FTMS treadmills

As mentioned in https://github.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/issues/176#issuecomment-1684503451 now that we use the Control Point anyway to signal the start and stop of a workout, we might as well add support for speed and inclination. (In case of bike that would be resistance level).
There are two main things:

Develop the UI, where and how the controls would be
Liability! I don't want to get sued if someone falls

This is requested explicitly by Will Howell who has a Horizon Fitness 7.0AT treadmill.

We'll first need to query for the inclination and speed range to know the limits. We should also watch that constantly in case the athlete manually adjusts it

I don't have such a bike or treadmill which can be controlled by the FTMS control point or have servo motor to do adjustment upon command, so I'll need some help for this.

#458 will allow the display of the resistance level. Possibly we could implement resistance level up/down for bikes as well. Similarly to the resistance level the treadmill inclination should be a display only thing, we won't persist it for now because the generated GPS doesn't have any elevation change either, so it wouldn't match up with any inclination setting. Maybe one day if we have something if we add straight up climb GPS for stair and step machines #163, but until then we won't persist.

I was just looking into my Hammer Qvadis 7.0 to see if I can make it more useful. The default quick speed controls etc are not useful.
I connected with nRF Connect and found it does use the FTMS. I played around with the values according to the BT standards manual.
It supports speed and inclination control and reports the step, min and max for each.
However, I did run into a bit of an issue with speed control - the manual says it's uint16. But passing the lowest value of 1 sets the speed to 2.5 ( while it supports a step of 0.1 with a minimum of 0.3).
So I wonder if either they app has an issue or it's actually not using uint16 - but a bytearray with a smaller value?
Ideally the goal would be to able to add shortcuts for quick speed (like interval training) and/or with inclination to match.

@Ketec good info since I don't have such treadmill!

Can you see if your machine exposes the "Supported Speed Range" endpoint: https://github.com/oesmith/gatt-xml/blob/master/org.bluetooth.characteristic.supported_speed_range.xml (I see you mention "while it supports a step of 0.1 with a minimum of 0.3" so you may have polled 0x2AD4? Never hurts to poll one more time.) Essentially someone cannot just willy-nilly set anything. It has to be within the supported boundary (also for liability purposes), and also the increments cannot be lower than the given. I assume the minimum increment will be 0.1 mph or similar.
When you tried to set it outside of a boundary (maybe some bad conversion or division) then did possibly get back a 0x09 or 0x0A training status code indicating error (0x09 Speed Outside of Control Region - Low (increase speed to return to controllable region) or 0x0ASpeed Outside of Control Region - High (decrease speed to return to controllable region))? See Table 4.13: Training Status Field Definition. This code comes back in the 0x2AD3 Training Status characteristic 0x2AD3 (https://github.com/oesmith/gatt-xml/blob/master/org.bluetooth.characteristic.training_status.xml). Try hook up to that one and perform the setting. I never tried to set by nRF Connect.
I also wonder what data you get back for the "Supported Inclination Range" endpoint 0x2AD5: https://github.com/oesmith/gatt-xml/blob/master/org.bluetooth.characteristic.supported_inclination_range.xml

This will be beneficial once I put controls on the app. I see in my source code I don't even have the training status yet.

For config. Will log data separately with different interactions.

nRF Connect, 2024-04-02
FS-6041F1 (9F:55:37:54:96:98)
V	23:33:03.631	Reading characteristic 00002acc-0000-1000-8000-00805f9b34fb
D	23:33:03.631	gatt.readCharacteristic(00002acc-0000-1000-8000-00805f9b34fb)
I	23:33:03.735	Read Response received from 00002acc-0000-1000-8000-00805f9b34fb, value: (0x) 5C-16-00-00-03-00-00-00
A	23:33:03.735	"Fitness Machine Features:
Total Distance Supported
Inclination Supported
Elevation Gain Supported
Step Count Supported
Expended Energy Supported
Heart Rate Measurement Supported
Elapsed Time Supported

Target Setting Features:
Speed Target Setting Supported
Inclination Target Setting Supported" received
V	23:33:10.281	Reading descriptor 00002902-0000-1000-8000-00805f9b34fb
D	23:33:10.281	gatt.readDescriptor(00002902-0000-1000-8000-00805f9b34fb)
I	23:33:10.366	Read Response received from descr. 00002902-0000-1000-8000-00805f9b34fb, value: (0x) 00-00
A	23:33:10.366	"Notifications and indications disabled" received
V	23:33:13.631	Reading characteristic 00002ad3-0000-1000-8000-00805f9b34fb
D	23:33:13.631	gatt.readCharacteristic(00002ad3-0000-1000-8000-00805f9b34fb)
I	23:33:13.725	Read Response received from 00002ad3-0000-1000-8000-00805f9b34fb, value: (0x) 01-01
A	23:33:13.725	"Status: Idle
Details: " received
V	23:33:16.656	Reading descriptor 00002902-0000-1000-8000-00805f9b34fb
D	23:33:16.656	gatt.readDescriptor(00002902-0000-1000-8000-00805f9b34fb)
I	23:33:16.757	Read Response received from descr. 00002902-0000-1000-8000-00805f9b34fb, value: (0x) 00-00
A	23:33:16.757	"Notifications and indications disabled" received
D	23:33:16.761	gatt.setCharacteristicNotification(00002ada-0000-1000-8000-00805f9b34fb, false)
V	23:33:16.763	Notifications and indications disabled for 00002ada-0000-1000-8000-00805f9b34fb
V	23:33:19.633	Reading descriptor 00002902-0000-1000-8000-00805f9b34fb
D	23:33:19.633	gatt.readDescriptor(00002902-0000-1000-8000-00805f9b34fb)
I	23:33:19.724	Read Response received from descr. 00002902-0000-1000-8000-00805f9b34fb, value: (0x) 00-00
A	23:33:19.724	"Notifications and indications disabled" received
D	23:33:19.729	gatt.setCharacteristicNotification(00002ad9-0000-1000-8000-00805f9b34fb, false)
V	23:33:19.731	Notifications and indications disabled for 00002ad9-0000-1000-8000-00805f9b34fb
V	23:33:24.373	Reading characteristic 00002ad4-0000-1000-8000-00805f9b34fb
D	23:33:24.373	gatt.readCharacteristic(00002ad4-0000-1000-8000-00805f9b34fb)
I	23:33:24.467	Read Response received from 00002ad4-0000-1000-8000-00805f9b34fb, value: (0x) 1E-00-98-08-0A-00
A	23:33:24.467	"Minimum Speed: 0.29999998 km/h
Maximum Speed: 22.0 km/h
Minimum Increment: 0.099999994 km/h" received
V	23:33:26.483	Reading characteristic 00002ad5-0000-1000-8000-00805f9b34fb
D	23:33:26.483	gatt.readCharacteristic(00002ad5-0000-1000-8000-00805f9b34fb)
I	23:33:26.596	Read Response received from 00002ad5-0000-1000-8000-00805f9b34fb, value: (0x) 00-00-78-00-0A-00
A	23:33:26.596	"Minimum Inclination: 0.0
Maximum Inclination: 12.0
Minimum Increment: 1.0" received

Log of those data pulls

In my local dev environment I already have the resistance display (even though that's rather relevant to bikes, or certain other machines). I plan to add steps / revolutions / strokes #303.
For this ticket I'd need to add a few things:
0. Settings to turn on speed target setting feature

Settings to turn on inclination target setting feature
Settings to turn on resistance setting feature
Settings to turn on power setting feature
I already have a speed display
Speed up / down buttons. I guess either in a new display row or on top of the accordion section
Resistance up / down buttons. Just like for speed up / down: new display row added or buttons on top of the graph in the accordion. Builds on top of newly added #458
Inclination up / down buttons.
Power up / down buttons - this may need a special power controlled workout mode support, so maybe later
Heart rate up / down buttons - this may need a special ERG workout mode (heart rate controlled) support, so maybe later

Note: if the app is in simplified UI mode #33 then there's no accordion, so we'd need to handle that corner case - add accordion just make it empty without the graphs?

@Ketec nice, and do you see 0x09 or 0x0A coming in the Training Status when you try to set the speed?
Important note 1: even though the minimum increment is 0.1 km/h, the speed uint16 has a resolution of 0.01! So it's one magnitude off. Keep this in mind, because if you only divide your speed by 10, then you can unintentionally try to set 10x higher speed (say 36 kmh instead of 3.6 kmh).
Important note 2: if you set 1 as the uint16 speed, that's 0.01 kmh, which is below the minimum 0.3 kmh.
Question: when you say the speed was set to 2.5, is that kmh or mph? I guess you set it too low and the machine just either defaulted to a reasonable value, or you were already at that walk speed and nothing changed?

Will collect a log with trying different t changes tomorrow.
The machine is kmh(I think this is in bt standard?).
I tried uint16 big endian values and 1 is 2.5, 2 is 5.4, 5 was over 12km.
The Inclination jumped to 25 with value 1 (which is out of bounds so it maxes at max height).
There is also that write permisdion request you need to do o ce per session.
So it could be that the tool sends wrong data I guess.
Some various logs I captured while trying.
Log 2024-04-03 00_14_26.txt
Log 2024-04-03 00_12_49.txt
Log 2024-04-03 00_06_07.txt

@Ketec all of the multi byte values are little endian. I still don't know 100% what do you mean by setting 1, but from that latest description it sounds like you set the MSB (Most significant byte) to 1, which would mean 256. Due to the 1/100 precision that actually means 2.56 km/h, so 2.5 sounds about right - given that the machine does a truncation and not rounding up to 2.6. Value 2 in the MSB means 512, which should come out to 5.1 km/h. 5 would mean 5*256 = 1280, divided by 100 -> 12.8 km/h.
So it almost seems like to me you are mistreating the little endian uint16 as big endian, and now these values almost make sense. Similarly with inclination.

It depends on the machine, but if you want to follow full protocol, then you'd want to request control first https://github.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/blob/c814af14ae59be670bdbada56c7942b3b565accf/lib/devices/gatt/ftms.dart#L109, then also signal workout start to the machine. Maybe that'll help. Make sure everything stays connected, and nothing signals workout pause or stop (both via Bluetooth FTMS or on the physical console). Request control is done on the 0x2AD9 FTMS Control Point:
My app already does these three:

Request control https://github.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/blob/c814af14ae59be670bdbada56c7942b3b565accf/lib/devices/gadgets/fitness_equipment.dart#L655
Signal workout start (or resume): https://github.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/blob/c814af14ae59be670bdbada56c7942b3b565accf/lib/devices/gadgets/fitness_equipment.dart#L1297
Signal workout stop (or pause): https://github.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/blob/c814af14ae59be670bdbada56c7942b3b565accf/lib/devices/gadgets/fitness_equipment.dart#L1313

I know the elevation worked fine when I tried it with Kinomap - it tried to match it to the run height.
Start/stop worked through swift and this app too.
Likely also need to call reset at certain times to clear all settings.
It will accept speed when stopped, displays it and sets to 0 in a few seconds. Start can also just switch to instantly paused mode - but likely it had some invalid settings already and needed a reset.

That's good, maybe we don't have to differentiate. I'll need some time to verify this finding in the original Russian hacker code, maybe I haven't ported it over properly from C / C++, that would be the best case.

Also, if we are adding more sections, perhaps it's time for preferences to show/hide them. There will be a lot of equipment specific fields.
Or a simple equipment profiles, hiding irrelevant fields.

100%. I added the resistance level (not released yet), but it'll have a show / hide preferences option. Each field I'll add will have one. Long term it'd be great to make the UI fully configurable (order items, show/hide): #179. Back in the past I tried that but it was super slow. Maybe after I refactor the state handling to RiverPod or similar.

Hi,
First of all, I want to express my appreciation for the TrackMyIndoorWorkout app (Android). It works excellently with my SVENSSON BODY LABS FURY SPIN trainer, and I’m especially pleased with how it captures all the training data and records it into files.
I have a suggestion that I believe could enhance the user experience even further. My trainer supports the FTMS Bluetooth protocol and offers 16 resistance levels. It would be fantastic if the app could implement predefined workout programs, where the resistance could automatically adjust based on a specified power, heart rate, or speed profile (i.e., a graph). This would enable users to follow structured training sessions without manually adjusting the resistance throughout the workout.
Since the app already supports controlling the trainer (start/stop), I believe this could be a relatively small addition, but it would greatly improve its functionality for users who prefer guided workouts.
I am a Python developer myself and would be happy to help with the implementation of this feature. However, I would need some assistance in understanding the structure of the project and identifying where the feature could be integrated.
Best regards, Evgeny

Sadly, Slack doesn't work in my country.....
Can we communicate on this topic here, or, for example, in Telegram?
To begin with, I am studying the project. I realized, of course, that I am not an expert in Dart). I am still trying to understand the structure of interaction with the equipment. The application successfully sends stop/start commands to the trainer. It also shows on the screen information about the resistance level set on the trainer in the field with the icon “123”.
I of course also have a serious workload with work and family. I think I need to try to figure out how to debug such apps in general, since I have no experience developing for mobile operating systems.

@Evgeny105 does Discord work? Maybe I should establish a Discord channel. I have Skype, Teams, and Google chat as well. I haven't used telegram yet, but I can try especially if it is possible on the desktop. I can show you around in the code.


No ability to destroy Idle Object

I only want to monitor Idle activity on part of my application (Using Angular/OnsenUI). Is there a way to destroy the Idle object when I navigate away from that part of the application?

It's a service, which are implemented as singletons in Angular, so there isn't a way to destroy the instance. However, you can cease the watch behavior by just calling .unwatch() when you navigate away, and .watch() when you navigate in (and want the behavior to resume again).
How/where exactly to make those calls depends on what you're using for routing. If you're using normal Angular Routing module, you could use the $routeChangeSuccess event (the current and previous event parameters can be used to figure out when you're entering and when you're leaving the target route.

Thanks! This is just what I needed.


vernemq-hook: auth_on_publish  don't need  payload.

Environment

VerneMQ Version: 1.4.1
OS: Centos7
Erlang/OTP version (if building from source):

I use one user to publish msg , so payload is needn't
Add a config option  like:
vmq_webhooks.mywebhook1.take_payload = off

I'll start this one. will call it mq_webhooks.mywebhook1.send_payload = off

@codeadict thank you!

 There are, IIRC, three hooks which include payloads: auth_on_publish, on_publish and on_deliver should it be possible to omit the payload on all of these or only in auth_on_publish?
Other possible config names could be: include_payload or omit_payload. Not sure which one of the suggested ones read better when defining a webhook :)

Hey, it can be included for all the hooks, omit_payload sounds perfect.
Thanks!
 There are, IIRC, three
hooks which include payloads: auth_on_publish, on_publish and on_deliver
should it be possible to omit the payload on all of these or only in
auth_on_publish?
Other possible config names could be: include_payload or omit_payload.
Not sure which one of the suggested ones read better when defining a
webhook :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/erlio/vernemq/issues/787#issuecomment-411294725, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAKR-EdlQj7_i_rl1pjHOS0tMw67lOTRks5uOn4wgaJpZM4VvZ5S
.


Greeting new users with an image card.

type: Feature Request
about: Greeting users with image card
Greeting new users can be boring with text, but pretty images are welcoming.
Feature: Instead of a ping and a text message like Welcome to the server, ${user}, we could do something like an image banner with user's info in it.

Overall its great for brand of server and looks pretty. In addition to this image, we can also add a text message to ping user, so that it is also searchable.

@ap4gh ah! Like https://www.welcomer.gg/ ?

@benjaminspak yes. About an year ago I made a bot that can handle that feature. I used node.js package jimp to do that.


New ranking system

This pull request reviews the ranking process we're using, and rebuilds it roughly from scratch.  The idea is to build our best guess at how the ranking ought to work, including which features it should use, compare how this performs to what we're currently using, and then switch over.
Nothing in this pull request should change the ordering of search results on the site, unless a new debug parameter is supplied.  If &debug=new_weighting is added to a search query string, the new weighting will be used.  The idea is that this PR should be fine to merge without affecting ranking, so that we can review it (and refine the synonym lists for it) over at least a few days without blocking deploys to production.
The individual commits should be reviewed in order, but the changes they make are intended to do the following:

Change the way in which we implement synonyms, to make synonym groups be replaced at index time with special "marker" terms, and to look for these terms at search time; rather than trying to do the full synonym matching at search time.  This should give better ranking (by treating a synonym as a single term, so its frequency makes sense), and also interact properly with the minimum_should_match setting.  The synonym list used by the new ranking is separated from that used by the old ranking, so that the new list can be reworked independently.

Review the way in which the weighted text query is built, to use per-field boosts (and use different boosts for different fields, such that, for example, matches in title fields are considered more important than indexable_text fields).

Stop using stopwords, since they don't really help us at all.

Increase the minimum_should_match settings, to require more terms to be matched.  It was artificially low to compensate for problems with synonyms and stopwords.

Use "shingles" (word pairs) to boost the score of partial phrase searches.

First off, this is a really nicely structured PR. I especially appreciated the comments on the code in 0ec932, 0101af, and 0d3898. They'll be useful in the future.
In 0101af you pointed out that the indexes must be migrated when this PR is deployed, to ensure
that the new query_with_old_synonyms analyzer exists. Is this using the existing rummager:migrate_index task or something else?

Once the question I have above about how this is deployed is answered, I'm happy for this PR to be merged :+1:

Yes, this just needs to be deployed using "deploy:migrations", which will run the migrate index. (and all preview deploys do this, so it will happen in preview automatically)

I'm not sure about requiring more terms to match. Although some users expect that adding more words should narrow down their results, other users are already missing what would have been relevant results because their query contains 'extra' words that don't match the content.
Since this will only be on a debug parameter, it's fine for now and we can review examples of longer queries to see whether some relevant content is no longer returned.

:rocket: awesome PR, should improve the search a lot!

@tijmenb I've rebased to address your comments - which was probably foolish as now it's hard to see the changes I made to do this.  I've pushed the old version to the "old-better-synonym-matching", but can't manage to construct a correct comparison URL in github.  If you do git fetch, you should be able to see the diff by running git diff old-better-synonym-matching..better-synonym-matching


Have encounter undefined method new_session_path when upgrading to Rails 3.1 with Devise 1.4.3

Hi,
When I upgrade today Rails 3.1 final with devise 1.4.3 I encounter this error where previously I had none (for devise 1.4.2)
undefined method `new_session_path' for #<Devise::PasswordsController:0x007fcba3271ef8>

When I reset password using RC6 + devise 1.4.2 I am able to. But not with new Rails 3.1 final and Devise 1.4.3
devise (1.4.3) app/controllers/devise/passwords_controller.rb:47:in `after_sending_reset_password_instructions_path_for'
devise (1.4.3) app/controllers/devise/passwords_controller.rb:17:in `create'
actionpack (3.1.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.1.0) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.1.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.1.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.1.0) lib/active_support/callbacks.rb:434:in `_run__1121920347073212923__process_action__1247591639961876394__callbacks'

@josevalim It would be helpful to know which commit contains this fix, thanks.


Architecture Refactoring

Reorganize the existing code into new logical layers with the main scope of increase the overall software quality and surpass architecture limitations that critically mine systematic qualities as scalability, extensibility, evolvability, testability and robustness of the actual solution system.
The current code base grew over multiple proof of concept implementations and is partially a bit messy. See issues: #80 #82 #83
The poc8 feature freeze is a good date to consider a cleanup of the architecture.
The revised architecture should strengthen the predominant characters of the python implementation, which are
* readability (the educational implementation)
* hackability (prototyping)
* reusability (libraries)
Issues touched by this refactoring:
#181 #182 #184 #185 #186
The new architecture should be compatible to python 3 (#132) and pypy (#188).
Q: Do we need py2.x compatibility?
Note the architecture proposed below might change
Libraries
devp2p
Standalone library, which offers a p2p base layer with peer discovery, DHT shaped topology, encryption, authentication, multiplexing, framing, peer info persistence and trust metrics. Can be used by registering sub-protocols.
devp2p  <-wirep2p-> other-nodes

pyethereumlib
Library with everything related to the chain and the eth protocol.
    blockchain
        db
            leveldb
            other db
        blocks
        processblocks
        trie
        transactions
        vm
   tester
   eth_wire_protocol
   miner
   synchronization

The Client
The actual client is split into multiple loosely coupled components, which are run in the same event loop.
__main__
event loop
    dev_p2p   <-wirep2p-> other-nodes
     |-- eth_protocol
     |       blockchain
     |       synchronization
     |-- whisper_protocol
    API   <-json-rpc->   local clients

Separate Processes
miner
Can also be run in the client event loop.
miner process(es) <-> api

(network probably too slow if we incorporate state data)
cli
cli <-> api

gui / wallet (if any)
Can also be run in the client event loop.
gui <-> api

WIP: https://github.com/heikoheiko/pydevp2p


added note about python versions.

Add a setup note, when multiple versions of python is present

Add some more info, for getting started.

thank you but I don't think I'm going to merge this. this has a few spelling mistakes and I'd rather keep the readme clean of such specific problems.
sorry for the extremely late reply.


add self to MAINTAINERS

I plan to help with PR review.

@silverwind if you have a discord account, comment here and we can give you elevated permissions in the discord server.

Discord silverwind#6301, thought I probably won't be active much there 😉

Codecov Report

Merging #7245 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #7245      +/-   ##
==========================================
+ Coverage   40.97%   40.98%   +<.01%
==========================================
  Files         462      462
  Lines       62584    62584
==========================================
+ Hits        25645    25647       +2
+ Misses      33578    33575       -3
- Partials     3361     3362       +1

Impacted Files
Coverage Δ

modules/log/event.go
64.61% <0%> (-1.03%)
:arrow_down:

models/repo_list.go
73.09% <0%> (+1.01%)
:arrow_up:

models/unit.go
67.56% <0%> (+5.4%)
:arrow_up:

Continue to review full report at Codecov.

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


Unexpected trailing bytes in notifications received

Describe the bug
Receiving messages with some strings unexpectedly results in a set of repeated bytes at the end of the message. The word "test" is one of those words:
alvaro@rs-2022:~/Desktop/update/at_pico_w/src$ micropython main.py
Welcome! What would you like to do?
        1) Change recipient atSign (presently alvaro)
        2) Connect to arrogantcheetah
        3) Send at atTalk message to alvaro
        4) Exit
> 2
Connecting to arrogantcheetah...
Connected
Welcome! What would you like to do?
        1) Change recipient atSign (presently alvaro)
        2) Connect to arrogantcheetah
        3) Send at atTalk message to alvaro
        4) Exit
> 3
To return to menu type: /exit

@alvaro: hello
@alvaro: testing
@alvaro: test

@alvaro: issue happened!
yes

This is currently handled with the function remove_trailing, which tries to remove the most usual trailing bytes which I have observed, but it doesn't guarantee that other different non-handled trailing bytes will eventually appear.
Steps to reproduce

Substitute this line of code:
https://github.com/atsign-foundation/at_pico_w/blob/849b3f6c4a0b38de6ec5ff884cdc14abce3e1d29/src/lib/atclient.py#L359
By the following:

decrypted_msg = decrypted_msg_b.decode('utf-8').rstrip("\v")

(So it is possible to visualize the issue)

Using the MicroPython client, connect to your secondary (option 2) and then start talking with your recipient (option 3). Don't send any message.
Open a different attalk client (you can use Dart one) and send the word "test" to the atSign which is listening in the MicroPython client.
See that many "spaces" have been introduced with the last message received ("test" word message). Those are not spaces or line jumps, they are actually other kind of characters which have been described below.

Adding the following lines to the attalk_recv method:
print("aesKey: " + ubinascii.b2a_base64(self.sharedkeyrecp).rstrip().decode() + ", iv: " + ubinascii.b2a_base64(iv).rstrip().decode())
print(notifications[-1]['value'].rstrip().encode())

We can obtain the necessary data needed to decrypt the message.

Now we can use CyberChef to look more closely to the decryption process:

Changing the Output from Hex to Raw we can see which is the encoded value:

FF stands for Form Field, which representation in bytes is 0c.

This same issue has also been observed when sending other different messages, resulting in 0a (LF Line Feed) or 0b (VT Vertical Tab) among other characters.

Expected behavior
The console should print "test" (or any other message which repplicates the issue) with no extra trailing characters.
Screenshots
No response
Smartphones
No response
Were you using an atApplication when the bug was found?
No response
Additional context
No response

@realvarx Maybe these could be of any help?
https://github.com/atsign-foundation/at_c/blob/d83f930be773246e2aeab4cf1ad3f953efa7184e/src/at_chops/aes_ctr.c#L140
https://www.ibm.com/docs/en/zos/2.4.0?topic=rules-pkcs-padding-method

@realvarx Maybe these could be of any help?
https://github.com/atsign-foundation/at_c/blob/d83f930be773246e2aeab4cf1ad3f953efa7184e/src/at_chops/aes_ctr.c#L140
https://www.ibm.com/docs/en/zos/2.4.0?topic=rules-pkcs-padding-method

Ohhh how could I not take notice of that! I even looked for an unpad method, but I thought padding was all zeroes and one byte representing the size of it, for some reason :grimacing:
Thx Jeremy! :smile:

Fixed by https://github.com/atsign-foundation/at_pico_w/commit/45fcd8829be149a21134be6515dab93c62b91f9e


BUG: Github Action "Deploy Lambdas to Dev" does not use the correct branch

Describe the bug
I attempted to deploy the lambda function va_profile_remove_old_opt_outs_lambda using the packaging process on branch 855_va_profile_lambda_packaging.  The Github Action seems to be checking out the branch, but the Github Action executes a different packaging process (probably from master).
To Reproduce
Steps to reproduce the behavior:

Run the Github Action "Deploy Lambdas to Dev" to deploy either "ProfileRemoveOldOptOuts" or "All".  Both have the same outcome.
Inspect the Action logs to see what actually runs.
In AWS Lambda console, observe that the code has not changed for the lambda.

Expected behavior
The lambda should deploy using the recipe from the given branch.

gh cli with the following command solves the issue:
gh workflow run -r 855_va_profile_lambda_packaging
Then, the terminal will give you options.  Select:
choice: ProfileRemoveOldOptOuts
ref: 855_va_profile_lambda_packaging
It will then run the test.   You can confirm by:
gh run list --workflow=deploy_lambda_dev.yml


ExecuteStateTransition fails when sending bids using devnet script

{"error":"rpc error: code = Unknown desc = struct is nil","height":7,"level":"error","msg":"Error in executing the state transition","process":"accept block","time":"2020-07-27T14:08:14+02:00"}
{"error":"rpc error: code = Unknown desc = struct is nil","height":3,"level":"error","msg":"could not accept intermediate block","process":"chain","time":"2020-07-27T14:08:14+02:00"}

Fixed via #601


All newest sdk releases crash on Ubuntu wsl

I have tried installing multiple releases of dart major version 3 (including the latest one 3.2.4), all of them are crashing on Ubuntu 20 & 22 TLS wsl
here's the logs:
$ dart --version
Dart SDK version: 3.2.4 (stable) (None) on "linux_x64"
$ dart create -t console cli
../../runtime/vm/virtual_memory_posix.cc: 375: error: memfd_create failed: 38 (Function not implemented)
===== CRASH =====
si_signo=Segmentation fault(11), si_code=1, si_addr=0x10
Aborting reentrant request for stack trace.
Aborted (core dumped)
$ dart
../../runtime/vm/virtual_memory_posix.cc: 375: error: memfd_create failed: 38 (Function not implemented)
===== CRASH =====
si_signo=Segmentation fault(11), si_code=1, si_addr=0x10
Aborting reentrant request for stack trace.
Aborted (core dumped)

@mraleph For main, no; for dev, yes: https://storage.googleapis.com/dart-archive/channels/dev/release/3.4.0-11.0.dev/linux_packages/dart_3.4.0-11.0.dev-1_amd64.deb
There are also instructions for apt-get on the wiki:
https://github.com/dart-lang/sdk/wiki/Installing-beta-and-dev-releases-with-brew,-choco,-and-apt-get#installing-and-upgrading-on-linux-with-apt-get


NO LONGER MAINTAINED!

I created this plugin for a client project back in 2015 while working for Manifest Web Design.
Since the project finished, this plugin went into maintenance-only mode.
I've since left the company and have lost access to all their Github repositories.
If you're still interested in this project, please take a look at the forks and see if one of them would work for you.

Hey man, I have been actively using and extending your plugin for the past weeks. I thought in making a pull request soon but since it is no longer maintained should I put it in my own repo?
Nonetheless, thanks to all the contributors to the project. It helped me a lot. :)

Since I don't have write access to the repository any more, I would say keep it in your own fork or find one of the other forks that looks good for you and submit a PR against them.
I'm glad that this project has helped people and hope to see someone take up the torch and keep it going.

I created a fork which has the LATEST twitterkit sdks both for android and ios and fixes the various bugs existing in the other versions of this plugin. Also added info about some gotchas and important things to pay attention to in the readme. Enjoy: https://github.com/guylando/twitterkit3-plugin


Failed to detect tcmalloc or jemalloc for Fedora 26

The wildcard given by the current Makefile failed to detect the gperftools/jemalloc malloc libraries.
Currently, it uses the following snippet to detect these libraries, which assumes the .so file is located in the '*/lib' subdirectories.
https://github.com/apache/incubator-mxnet/blob/35ceea73ccc1acfb2ec62cdaa841822e51c13456/Makefile#L168-L213
This is not true for Fedora 26 (and for many 64-bit systems), which put the shared library files into 'lib64' subdirectories. For example, on my system, it is located in the /usr/lib64 directory.
$ locate libtcmalloc.so
/usr/lib64/libtcmalloc.so.4
/usr/lib64/libtcmalloc.so.4.4.5

I suggest to using the following snippet to replace the above-mentioned codes.
It simply replaces 'lib' into 'lib*' in the wildcard matching.
# gperftools malloc library (tcmalloc)
ifeq ($(USE_GPERFTOOLS), 1)
#	FIND_LIBNAME=tcmalloc_and_profiler
	FIND_LIBNAME=tcmalloc
	FIND_LIBFILEEXT=so
	FIND_LIBFILE=$(wildcard /lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
	ifeq (,$(FIND_LIBFILE))
		FIND_LIBFILE=$(wildcard /usr/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
		ifeq (,$(FIND_LIBFILE))
			FIND_LIBFILE=$(wildcard /usr/local/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
			ifeq (,$(FIND_LIBFILE))
				USE_GPERFTOOLS=0
			endif
		endif
	endif
	ifeq ($(USE_GPERFTOOLS), 1)
		CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
		LDFLAGS += $(FIND_LIBFILE)
	endif
endif

# jemalloc malloc library (if not using gperftools)
ifneq ($(USE_GPERFTOOLS), 1)
	ifeq ($(USE_JEMALLOC), 1)
		FIND_LIBNAME=jemalloc
		FIND_LIBFILEEXT=so
		FIND_LIBFILE=$(wildcard /lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
		ifeq (,$(FIND_LIBFILE))
			FIND_LIBFILE=$(wildcard /usr/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
			ifeq (,$(FIND_LIBFILE))
				FIND_LIBFILE=$(wildcard /usr/local/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
				ifeq (,$(FIND_LIBFILE))
					FIND_LIBFILE=$(wildcard /usr/lib*/x86_64-linux-gnu/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
					ifeq (,$(FIND_LIBFILE))
						USE_JEMALLOC=0
					endif
				endif
			endif
		endif
		ifeq ($(USE_JEMALLOC), 1)
			CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc \
			-fno-builtin-free -DUSE_JEMALLOC
			LDFLAGS += $(FIND_LIBFILE)
		endif
	endif
endif

@cjolivier01 do you know how to resolve this issue?

Of course you may submit a CR.
How do you handle libtcmalloc.so.3 and libtcmalloc.so.4 in the same directory?

I think we're probably going to deprecate Makefile and use cmake.  Does it find it ok with cmake?
See discussion:  https://github.com/apache/incubator-mxnet/issues/8702#issuecomment-345568868

Please reopen if necessary, but I think we're just going to standardize on cmake. Let me know if cmake doesn't find it.,


Can not get promise with calling handleSubmit

I think it's related to #538.
I'd like check the submit sync validation result so that user is alerted, but returnRejectedSubmitPromise does not work for me.
Maybe it's because I does not pass onSubmit props to redux-form-connected Component.
Before, my code was like bellow.

MyComponent extends Component {

  handleSave(values) {
    // do something.
  }

  render() {
    return <button onClick={this.handleSubmit(::this.handleSave)}></button>
  }
}

and I changed this so that I can check the validation result using Promise.

MyComponent extends Component {

  handleSave(values) {
    // do something.
    return Promise.resolve();
  }

  handleOnClick(e){
    this.props.handleSubmit(::this.handleSave)(e) // => this does not return a promise.
    .then(() => {
    }, (errors) => {
      // => I'd like to get sync errors!
      showAlertSothatYouCanKnowWhatsGoingOn(errors );
    });
  }

  render() {
    return <button onClick={::this.handleOnClick}></button>
  }
}

I guess returning the result in the callback function would work.
https://github.com/erikras/redux-form/blob/master/src/createHigherOrderComponent.js#L92
Also, is that possible to return syncErrors with Promise when it is rejected?
https://github.com/erikras/redux-form/blob/master/src/handleSubmit.js#L37
How do you think about this?

I just ran into this as well. I think what is going on is that a promise is being return but only when the validation fails and null when validation passes.
So you get a for me Uncaught TypeError: Cannot read property 'catch' of undefined error on success.

work around:
		const x = handleSubmit(e);
		if (x) {
			x.catch(() => this.props.onSubmitFailed(this.props.errors));
		}

@haradakunihiko's fix published as v4.1.10.

Please confirm that v4.1.10 fixes this problem, @kristian-puccio.

No unfortunately :(
I looked quickly at the pull request and it looks like it should but I'm
still getting undefined error.
<form
autoComplete={false}
onSubmit={ this._handleSubmit }>

And here is  where I handle the submit, x print out as undefined when there
are no async errors.
When there are async errors I get: Promise {_d: Object} "<<<<< x"
_handleSubmit = (e) => {
const {handleSubmit} = this.props;

const x = handleSubmit(e);
console.log(x, '<<<<< x');
if (x) {
x.catch(() => this.props.onSubmitFailed(this.props.errors));
}
};

On 12 February 2016 at 00:56, Erik Rasmussen<EMAIL_ADDRESS>wrote:

Please confirm that v4.1.10 fixes this problem, @kristian-puccio
https://github.com/kristian-puccio.
—
Reply to this email directly or view it on GitHub
https://github.com/erikras/redux-form/issues/580#issuecomment-182875249.

I'm facing the same issue. When I have a component that I pass the following too:
onSubmit={(values) => values}
returnRejectedSubmitPromise={true}

I get a promise if my validation failed, or the values object if the validation succeeds.
That behavior is a bit inconsistent, don't you think?


Font Size

Hi, I know you said in issue https://github.com/huashengdun/webssh/issues/68#issuecomment-515762854 that changing the font size is not supported. The idea of zooming in/out in the browser doesn't work (at least for me) because it cuts off some lines of text from the terminal. Is font size something you are working on, or something that you think is possible in the future? Thanks!

It is supported now. See here https://github.com/huashengdun/webssh/pull/233,

Yes, works brilliantly, thanks for pulling it in!


Added bounding boxes support in Folding and fixed bug.

An example of bounding boxes input and output with Folding augmentation:
Input and output images

Input boxes:

Output boxes:


Table of Contents not working in the book version

Hello Daniel,
There seems to be problem with the book version of the course (learnpytorch.io) or at least I am facing it.
For most of the sections, I am unable to navigate to a particular sub-section of a chapter using the table of contents on the right side. This making it very difficult for me to jump to the specific sub-section that I am following on Udemy.
Is it just me making some mistake or is there a specific issue?
Any help/resolution would be highly appreciated.
Thanking in anticipation.
Manoj

Hi @manojent,
Thank you for letting me know.
I didn't know this was an issue and I'm not currently sure what's causing it.
Let me try and figure it out and come back to you!

Hi @manojent,
It seems to be fixed for me - does it work for you?

Hey @mrdbourke
Yes, it works fine. Appreciate the prompt action and reply.
And once again, thank you for creating such a marvelous course😊.
God bless and cheer!!!!


Dataverse cards loading

Feature: Dataverse items loading

As a user of the portal,
I want to see some cards skeleton animation
When I arrive on the explore Dataverse page
So that I understand that my action is taken into account and that the content is loading

Acceptance criteria
Scenario 1 : default display (desktop)
Given that I am a user of the web portal (unauthenticated or authenticated),
And I am using a desktop device,
When I am on the explore Dataverse page
Then I should see 9 animated skeleton cards if data are not ready to be displayed
Scenario 2 : Tablet display
Given that I am a user of the web portal (unauthenticated or authenticated),
And I am using a tablet device,
When I am on the explore Dataverse page
Then I should see 8 animated  skeleton cards if data are not ready to be displayed
Scenario 3 : Mobile Display
Given that I am a user of the web portal (unauthenticated or authenticated),
And I am using a mobile device,
When I am on the explore Dataverse page
Then I should see 2 animated skeleton cards if data are not ready to be displayed
Resources
Mockups
Here is an example of inspiration, knowing that we will have to get as close as possible to our current card:
### Environment

staging URL: https://app.staging.okp4.network/

Additional informations
To implement from scratch, no library should be used.

We can make a component Skeleton for the component folder.
With some properties like rouded, rectangular, circular...
Like this exemple from MUI:
https://mui.com/material-ui/react-skeleton/

Hello ! Could you tell me how I can test it without the ontological database ?

Hello ! Could you tell me how I can test it without the ontological database ?

Hey! I discussed with @lolottetheclash about that. The code has been validated by the tech team but we won't test it until we fetch some data from the ontology.

Ok thank you !

Tested on Mozilla, Windows desktop => Success
Couldn't test on Iphone Safari, I don't know how to generate the loading.

I was able to test on Safari from an Iphone on the dataverse (explorer) page:

Thanks @0xLodz


Fixing Mac Boot2Docker installation doc

Edited the Mac Boot2Docker installation doc to reflect that VirtualBox also appears in the "Applications" folder along with Boot2Docker after the install. Fixes #13345
Signed-off-by: Anchal Agrawal<EMAIL_ADDRESS>

Looks like janky failed because of the 45m timeout in the test-integration-cli bundle.
Can this build be triggered again?

Thanks @anchal-agrawal for the fix.  ping @thaJeztah for the kick and an LGTM as appropriate.

Kicked Janky
LGTM. Thanks @anchal-agrawal


[BUG]: No way to define volumes with this lubelogger chart so images/documents cannot be persisted

What chart are you seeing the problem on?
Lubelogger
What happened?
There appears to be no way to define a volume / PVC to lubelogger, so any images or documents you upload will not be persisted, as they don't appear to be stored in the database. Can you update to enable adding volumes so we can persist this data?
Relevant log output
No response

Sure, I will work on that soon (probably weekend).

Looks great thanks :)


Coercion vs Trnaslation lambdas

Is there a semantic or functional difference between these two operations?
Why pick either over the other:
class FunkyDate < Hashie::Trash
    include Hashie::Extensions::Dash::Coercion

    property :date, coerce: Date.method(:parse).to_proc
end

class FunkyDate < Hashie::Trash
    property :date, translate_with: Date.method(:parse)
end

Where did you find the second syntax? :) It's not something I am finding in code.

https://github.com/intridea/hashie#example-using-translation-lambdas ?

There's transform_with, not translate_with.

:transform_with reads from one key and creates another (potentially), ie. it supports :from, while coerce is always in-place and is much more aware of types - in your example though I believe they effectively accomplish the same thing.
I think transform_with is older, and something that's a Dash extension, while Coercion is newer and works everywhere with the limitations above.
I'll close this, but maybe some documentation could be useful, please feel free to contribute.

Thank you, @dblock. It is still unclear to me for which usecases each one is preferable. In fact, coercion seems a much less flexible translation-lambda (one that always calls coerce and new).
If I get some experience insight in this I will definitely make a documentation contribution.
Thanks!

Yes, that's entirely possible. Both developed organically, but I am pretty sure coercion came last and was trying to be much simpler and more predictable. If there's a way to get rid of one and use the other, go for it!


Preview image

How do use "opengraph-image.jpg" with Next 13 page router?

Just a Next 13 feature
https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image
https://www.franciscomoretti.com/blog/setting-up-static-og-image-nextjs-app-router


[TW#28242] Building clean project via Eclipse fails

Environment

Development Kit:      None

Kit version NA

Module or chip used:  ESP32-WROOM-32

IDF version v3.3-beta1-136-g97eecfa1b

Build System:         Make

Compiler version  (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a5) 5.2.0

Operating System:     Windows

Power Supply:         NA

Problem Description
//Detailed problem description goes here.
Building clean via Eclipse fails with:
16:16:32 **** Incremental Build of configuration Default for project wt_starter_esp_idf_2 ****
make -j8 all
including /home/William/esp/esp-idf/components/app_update/Makefile.projbuild...
including /home/William/esp/esp-idf/components/bootloader/Makefile.projbuild...
including /home/William/esp/esp-idf/components/bootloader_support/Makefile.projbuild...
including /home/William/esp/esp-idf/components/coap/Makefile.projbuild...
including /home/William/esp/esp-idf/components/esp32/Makefile.projbuild...
including /home/William/esp/esp-idf/components/esptool_py/Makefile.projbuild...
including /home/William/esp/esp-idf/components/mbedtls/Makefile.projbuild...
including /home/William/esp/esp-idf/components/nghttp/Makefile.projbuild...
including /home/William/esp/esp-idf/components/partition_table/Makefile.projbuild...
including /home/William/esp/esp-idf/components/ulp/Makefile.projbuild...
including /home/William/esp/esp-idf/components/unity/Makefile.projbuild...
MAKEFLAGS="" CC=cc LD=ld \
/usr/bin/make -C /home/William/esp/esp-idf/tools/kconfig
make[1]: Entering directory '/home/William/esp/esp-idf/tools/kconfig'
cc -c  -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE -MMD  /home/William/esp/esp-idf/tools/kconfig/mconf.c -o mconf.o
cc: error: spawn: No such file or directory
make[1]: *** [Makefile:171: mconf.o] Error 1
make[1]: Leaving directory '/home/William/esp/esp-idf/tools/kconfig'
make: *** No rule to make target '/home/William/esp/esp-idf/tools/kconfig/conf-idf', needed by '/home/William/esp/wt_starter_esp_idf_2/build/include/config/auto.conf'.  Stop.
"make -j8 all" terminated with exit code 2. Build might be incomplete.

16:16:37 Build Failed. 2 errors, 0 warnings. (took 5s.838ms)

sdkconfig.txt
In order to allow Eclipse to build, I first need to execute: make -j8 all via the Mingw32 command line.
Expected Behavior
Eclipse should be able to build projects from clean too.
Actual Behavior
Eclipse fails with error above
Steps to reproduce

Import project into Eclipse following instructions from https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html
Build clean from Eclipse

Other items if possible

[ ] sdkconfig file (attach the sdkconfig file from your project folder)

I am having the same issue

Hi @william-ferguson-au , I did not observe the issue.
Build Finished. 0 errors, 0 warnings. (took 1m:46s.817ms)

Eclipse version: 2018-09(4.9.0)

I'm pretty sure this was caused by the Eclipse clean wiping out the files generated by make menuconfig.
Running make menuconfig then allowed the build to work.


Stop screenshot plugin from overwriting pictures

fixes #4374
Simply added more precise seconds to the file name.

This fixes the linked issue, but not the more general "Screenshots of same name overwrite each other" issue. Personally, I'd like to see a fix that works like most filesystems handle duplicate file names--appending a counter to the screenshot, like  Screenshot Name (1).png

Right you are,
I've updated the PR to fix the more general issue.

Removed the unnecessary code, and updated the commit.
Thanks for taking a look.


[dev.icinga.com #12784] enable feature command

This issue has been migrated from Redmine: https://dev.icinga.com/issues/12784
Created by vkhatri on 2016-09-25 01:19:04 +00:00
Assignee: vkhatri
Status: Assigned
Target Version: (none)
Last Update: 2016-09-25 01:19:04 +00:00 (in Redmine)

requirement for icingaweb2

Done.


Fixed Overlapping password show hide button

#503
I have fixed: Resolve password show/hide button overlapping with password input (#503)

@shaharsh624 Thank you for your contribution, this is already done in https://github.com/origranot/reduced.to/pull/505


Linter: Catch "No module named typing" exception better

I was trying to follow the testing guide and it said: "To run everything, just use ./tools/test-all." I didn't know what virtualenv and/or Vagrant environment I should have been in (that could be a separate bug against the documentation). Regardless, I got the following error since I hadn't installed the typing Python module; Tim suggests that we should catch that exception more nicely.
(zulip)sumanah@perspective ~/test/zulip $ tools/test-all
----
Running ./tools/clean-repo

----
Running ./tools/lint-all
Traceback (most recent call last):
  File "./tools/lint-all", line 11, in <module>
    import lister
  File "/home/sumanah/test/zulip/tools/lister.py", line 13, in <module>
    from typing import Union, List, Dict
ImportError: No module named typing

FAILED ./tools/lint-all~~~

This is already open as #882

(And there's an open PR, #892, as well)

I like this description better, so closing #882 as duplicate.

@timabbott I think https://github.com/zulip/zulip/pull/892 is ready to be merged

#892 was merged.


Refine example for "pullrequest" resource

I think we need a e2e(pullrequest is both input and output) example.
The example will

Download the pr
Check if the pr is approved
If not add label question
Uplaod the pr

Changes

Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[ ] Includes tests (if functionality changed/added)
[ ] Includes docs (if user facing)
[ ] Commit messages follow commit message best practices

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.
Release Notes
Describe any user facing changes here, or delete this block.

Examples of user facing changes:
- API changes
- Bug fixes
- Any changes in behavior

We do have a test that downloads and uploads in the unit tests.
If we add a test that works with an actual PR on GitHub, I think we should do so in a way that is portable for everyone how might want to run that test. So we should:

use a sandbox project
create a new PR before the test
run the test
delete the PR after the test

What next steps do we want here? Maybe it would make sense to open an issue where we can outline what we'd want in an example?
note we also now have the pullrequest task in the catalog: https://github.com/tektoncd/catalog/tree/v1beta1/pullrequest

I'm going to close this for now, seems like the next step would be to discuss requirements in an issue.


Button in select display in wrong way

Bug, feature request, or proposal:
BUG
I try to display button in angular material select and I use this code:
<mat-select #placeNameControl="ngModel" placeholder="Place name">
  <mat-option >
    Add new place name
  </mat-option>
  <mat-option *ngFor="let addedPlaceName of addedPlaceNames" [value]="addedPlaceName">
    {{addedPlaceName}}
    <button type="buttton" mat-icon-button>
    remove
    </button>
  </mat-option>
</mat-select>

And this works, but when I select one of the options, this display selected element and name of the icon like this:

Inside the Button tags and surrounding the ícone name you need mat-icon tag:
 <button mat-icon-button>
    <mat-icon>remove</mat-icon>
 </button>

Of course my mistake. I tried different solutions and by mistake pasted wrong snippet. I already edit this.
Unfortunately this:
<button mat-icon-button>     <mat-icon>remove</mat-icon>  </button>
and this:
  <button type="buttton" mat-icon-button>
       <i class="material-icons">remove</i>
  </button>

give the same result. Icons display as expected when select shows dropdown.

The trigger value is a string, that's why the icon isn't shown after selection.
But if you desire to remove and option (I don't know whether the remove icon is a random one or you really want to remove an option by clicking on the icon), you can try something like this demo: https://stackblitz.com/edit/angular-select-icon
But you'll have to do some work to remove when clicking on the icon in the opened panel (the example allows you to remove after the panel is closed).

Select with 2-way value binding cause the selected option to not contains the icon -
https://angular-select-icon-ucgq7q.stackblitz.io
I did something wrong?


Build progress popup prevents and delays information from showing inside the Output view

Brief Issue Summary
When I start a build (via F7 or the command palette) in a VSCode CMake-tools project, there is a build progress dialog popping up in the lower right corner of the IDE window. This is something new, which wasn't there before. I have no way to confirm it, but I suspect it is this pop-up, which delays the normal CMake build information from showing up in the output view. Instead of the files being shown one by one as they are compiled, the Output view remains blank for a long time, then all of a sudden the output shows file number 200+ being built. This has the side effect of hiding any warnings during compilation of previous files being hidden.
I looked at the VSCode settings and also searched the internet, but there doesn't seem to be a way to turn of this annoying progress pop-up. I would rather have only the Output view showing the cmake/ninja/gmake output, rather than this useless progress bar.
For demonstration of the issue I did a short screen capture which clearly illustrates the shortcoming of the progress dialog.
https://user-images.githubusercontent.com/43143191/150661038-8e90e1e8-f45a-410d-8739-b2e1c371dd29.mp4
CMake Tools Diagnostics
{
  "os": "linux",
  "vscodeVersion": "1.63.2",
  "cmtVersion": "1.9.2",
  "configurations": [
    {
      "folder": "/home/foo/bar/baz/firmware/fw_smartblock_f4",
      "cmakeVersion": "3.22.1",
      "configured": true,
      "generator": "Ninja",
      "usesPresets": true,
      "compilers": {
        "C": "/opt/arm-gcc/9.3.1/bin/arm-none-eabi-gcc",
        "CXX": "/opt/arm-gcc/9.3.1/bin/arm-none-eabi-g++"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [],
    "responses": [],
    "partialMatches": [],
    "targetCount": 10,
    "executablesCount": 1,
    "librariesCount": 8,
    "targets": [
      {
        "name": "programmable",
        "type": "UTILITY"
      },
      {
        "name": "stm32f4xx",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "stm32f4hal",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "segger_rtt",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "freertos",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "usbhost",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "fatfs",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "stemwin",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "lwip",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "smartblock.elf",
        "type": "EXECUTABLE"
      }
    ]
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": false
    }
  ]
}

Double-clicking the bell icon below the pop-up does nothing for the output view, it only minimizes the pop-up.
I also disagree with the statement that my system is fast enough to compile 200 files fast enough, which is the reason the output view does not update. You can clearly see in the video above, that about 11 seconds pass between starting the compilation process and updating the output view - in computer time this is an eternity.

Hi, I get this too, even when the output rate is slow, the output seems buffered.
After analysis and using tail on the 7-CMakeBuild.log file, I found that:

The 7-CMakeBuild.log file is updated as soon as the build output logs, so CMake extensions seems to not delay anything here
The VSCode main process poll that file for changes to detect when to update the CMake Build output pane, with a ThrottledDelayer and a delay of 500ms.
When there are changes, onDidContentChange event is triggered and called, which cause appendContent to be called.
appendContent will also use an ThrottledDelayer with a delay of 200ms.

But I'm not sure it's related to ThrottledDelayer.
When building using a single thread (out of 12) so Code.exe has enough CPU power left, I still get small hic-hups ("hangs" for around 2s instead of 500ms).
When using a script to happen lines to the 7-CMakeBuild.log manually (without any build running), VSCode displays the new lines from the file in the output pane with a perfectly regular rate of 500ms per update.
I'm wondering if VSCode could be busy doing something else, but the main Code process is not using CPU at all ... (not even one core).


How evaluate the performance on MegaFace?

Hi~
Thank you for your great work!
The megaface devkit requires 2 files (i.e., megaface and facescrub) for performance evaluation.
However, the eval_megaface.py generates .feat in each folder. (do we wrongly used the script?)
How do we evaluate the performance on megaface?
Thank you.

The feature format is generated following the test protocol of megaface, you can use megaface devkit tool  to evaluate your model.

The megaface devkit requires only 2 feature files for evaluation.
But we get .feat file for each image separately in each folder.
Do we use eval_megaface.py incorrectly?

Megaface devkit requires two folders not two files. Did you use the official devkit tools?

I see. I think that we misunderstand the usage of the official devkit.
Just for clarification.
Is it normal to scatter the .feat files with the corresponding images?
Thank you.

Yes，the devkit tool will find corresponding image features base on the image list  json file

So if we want to submit our result to the MegaFace website.
Could we just simply compress all the image+.feat files and upload the zipped files to the website?

Just uploading the featues only is ok.

Thank you very much.
Just one additional questions:
We get only 3.6k images after applying align_facescrub.py to FaceScrub dataset.
Is this a correct result? (The python script is adopted from InsightFace.)
Again, thank you for your kindly responses!

I suggest that you should totally understand the test protocol of MegaFace befor the following operations.
In MegaFace Challenge 1,  for the probe set facescrub, only 3530 images of 80 individial identities are required, and for gallery set, there exist different splits of distractors, which corresponding to 10, 100, 1000, 10000, 100000, 1000000.
All the images needed in this test are listed in megaface_features_list.json

We have read the readme of MegaFace, while we are still not sure for some details.
Therefore we just double confirmed the details to make sure the process is correct.
Thank you for your great help!


update link for Adam Curry

And cleanup of useless whitespace.
I didn't found a strategy how you deal with dead links.
If you don't update links like this please just comment and close it.

The approach you've taken here is fine. We generally don't update unless there's an appropriate place to redirect.


Add package offlinemail

Sorry, I thought I had prevented a PR from beeing created, I didn't intend for this to be reviewed.


Add a helm chart for the on-prem builder.

This adds a helm chart to deploy all the services for the on-prem
builder.
It supports

Persistent volumes for minio and postgres
uploading of bldr API keys via a secret
Uploading of all configuration files via secrets

It has been tested in AKS, GKE and minikube.
TODO:

[ ] docker images need to be build automatically and published
[x] Look at using builder-datastore rather than core/postgresql96
[x] Need habitat-sh/builder#617 to be merged
[x] Need habitat-sh/core-plans#1843 to be merged
[x] Need habitat-sh/habitat-operator#351 to be merged
[x] Complete README.md and NOTES.txt
[x] Test on minikube

Signed-off-by: James Casey<EMAIL_ADDRESS>

Closing - can be reopened if there is a clear requirement for this


feat: mapsTo, surjOn and injOn are preserved by Filter.map

And use it to simplify the proof of completeSpace_iff_isComplete_range.
I also add the consequence of the previous result that any uniform embedding from a complete space to a hausdorff space is a closed embedding (I agree this may be a bit unrelated, but I was in the area).
Notes about the filter results:

the left/right inverse results are not used, but I think they can be helpful. I'm okay with removing them.
the new API doesn't match very well the existing one, but after way more time that I'm willing to admit I came to the conclusion that it doesn't make sense to make it better without reorganizing and splitting the whole file.

I added the iff version of the mapsTo, injOn and surjOn lemmas, but not of the [Left, Right]Inverse lemmas because I don't think they're that useful, and they're pretty easy to add if needed.

bors r+


awdd feawoture Cwass Owobject

It's gonna be more owosome if it can use owobject like:
cwass Owo:
  fwunction __iwnit__(sweef, nwame, awge):
    sweef.nwame = name
    sweef.awge = awge

owo1 = Owo("Kawaiowo", 19)

pwint(owo1.nwame)
pwint(owo1.awge)

pog :3

If this happened I would have to change my code, so if someone creates a pull request also change the battle simulator in the examples tab 👍

Hey, you can tryout this project https://github.com/radon-project/radon because this projects are not maintaining. We will move a language together. It's very exciting. We have implement class feature in our project. Also standard library and third party imports.
See you there.
@anonimak @zellaa @Tulip-0333


Ignore index

@leofansq Why ignore index=255 is used in the lost function? I have observed that there are 21 classes in prediction where groundtruth has values 0 to 20 and 255? Please explain this.

There are 21 foreground semantic classes and one background class.

Pascal Voc has 20 foreground classes and 1 background class. It is given on
paper too.
On Wed, May 17, 2023 at 7:09 AM Siqi Fan @.***> wrote:

There are 21 foreground semantic classes and one background class.
—
Reply to this email directly, view it on GitHub
https://github.com/leofansq/CPCL/issues/3#issuecomment-1550565303, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A5BU5TGPB43RC4EE4ZL3XD3XGQT6RANCNFSM6AAAAAAYDRPZM4
.
You are receiving this because you authored the thread.Message ID:
@.***>

According to the code 0 is background class, 1 to 20 is foreground class
and additional index of 255 is ignore index. Is this correct interpretation?
On Wed, May 17, 2023 at 10:27 AM Rini Thakur @.***> wrote:

Pascal Voc has 20 foreground classes and 1 background class. It is given
on paper too.
On Wed, May 17, 2023 at 7:09 AM Siqi Fan @.***> wrote:

There are 21 foreground semantic classes and one background class.
—
Reply to this email directly, view it on GitHub
https://github.com/leofansq/CPCL/issues/3#issuecomment-1550565303, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A5BU5TGPB43RC4EE4ZL3XD3XGQT6RANCNFSM6AAAAAAYDRPZM4
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry for my misleading answer. 255 is the ignored label in Cityscapes. As for PascalVoc,  you can transfer 0 to 255, if you want to ignore background while training.


Add documentation

Since typescriptLang accepts markdown as doc, i changes the code generator to support it.

Looks very good to me 👍


Usage of an input-function in the FMU-layer of a Chain is not possible, yet

Please provide an example (and presumably missing functionality) to include an input-function into the FMU-layer of an FMIFlux.Chain.
This is crucial when you work with FMUs that only create reasonable output with nonzero input.
Remark:

I know there are several options to define an input-function to an FMU:
inputFunction!(t::T, u::AbstractArray{<:T})
inputFunction!(comp::FMU2Component, t::T, u::AbstractArray{<:T})
inputFunction!(comp::FMU2Component, x::Union{AbstractArray{<:T,1}, Nothing}, u::AbstractArray{<:T})
inputFunction!(x::Union{AbstractArray{<:T,1}, Nothing}, t::T, u::AbstractArray{<:T})
inputFunction!(comp::FMU2Component, x::Union{AbstractArray{<:T,1}, Nothing}, t::T, u::AbstractArray{<:T})
However I am not sure, if support of the more complex function types (i.e. those which do not only depend on t) are actually relevant for many users.
I would be happy, if a purely time-dependent input function was supported.

When extending functionality, please keep in mind that in batched training one might want to use different inputs on different batches. (..as we discussed for the batch-wise parameters. This might be worth a second ticket, once this one is finished).

As an update: I found a workaround for this one.
If you are the owner of the FMU, you can export this FMU with a variable being equal to the (simulation) time.
E.g. in Modelica:
Real mytime = time:
Export this variable together with the FMU.
Then, in julia, you can "use" this variable via fmiGetReal(fmu.components[end],"mytime"), e.g. to define the "t" in the FMU-call:
myFMU(;x=x,dx_refs=:all, t = fmiGetReal(fmu.components[end],"mytime"))
or, to define an input function:
myFMU(;x=x,dx_refs=:all,u_refs = my_input_refs, u = inputFctOOP(fmiGetReal(fmu.components[end],"mytime"))
Remark (for myself 😏): For this, the inputFct which you define for your FMU (which by the FMI.jl-requirements should be in-place, see above), has to be rewritten as its out of place (OOP) variant.
One should be very well aware that this is really only a workaround (an ugly but working one).
It's no excuse for not implementing this feature 🙃.


Add critical care compartment transition

Add transitions from:

Hospitalized to critical care with ICU and viceversa
Hospitalized to critical care without ICU and viceversa
Critical care with ICU to dead
Critical care without ICU to dead

Questions:

Should we add a general rate of "progression" to critical state and then specify to ICU and no ICU? Must look into the way rates of progressions are expressed and decide!
Can non-hospitalized people (asymptomatic) reach a critical state? If so, we should add an extra transition


Adding a new question: Container with most water

As part of the GSSoC'23 program, I would like to contribute by adding a solution for: Leetcode 11, Container with most water.

Hi I'm GSSoC'23 Contributor. I would  like to work on this issue pls assign it to me.

Hello @srushtikage, as per the guidelines provided by the maintainer, they are not accepting any questions. You can refer to #305 for more details.


Wireguard add Description Peer

Hi,
First of all, congratulations on the superb work developed on this API, it will undoubtedly help a lot of people.
I'm just exploring the wireguard part and I think it would be interesting to have the possibility of adding the peer description and not requiring the Pre-shared Key as in the GUI
thanks,

Looks like the description field was planned for the original release but was never implemented. Probably skipped over on accident. I'll make sure that's implemented in v2.1.0.
As for the presharedkey field, it is currently not a required field. You can exclude the field from the request data altogether or you can set the field to null to unset its current value.

Thanks for the reply
I'll be waiting for the next update.
Regarding the presharedkey, when you send null or exclude the request field, the API returns
{"code":400,"status":"bad request","response_id":"FIELD_EMPTY_NOT_ALLOWED","message":"Field presharedkey cannot be empty.","data":[]}

Ah you're right, I see the issue. This warrants a separate issue so I've opened #541. Feel free to follow that issue for updates.
Thanks!


Promotion not always getting into a local function

This doesn't work:
main() {
  foo();
}

void foo([int? x]) {
  x ??= 42;
  print(x + 1); // <- not an error; x is non-null because of the above line.
  void y() {
    print(x + 1); // <-- error because I don't know.
  }
  y();
}

But this does:
main() {
  foo();
}

void foo([int? x]) {
  if (x != null) {
    print(x + 1);
    void y() {
      print(x + 1);
    }
    y();
  }
}

But this doesn't:
main() {
  foo();
}

void foo([int? x]) {
  x ??= 42;
  if (x != null) {
    print(x + 1);
    void y() {
      print(x + 1); // <- error
    }
    y();
  }
}

and on the last example if I analyze it with the analyzer I get this:
Analyzing t.dart...

  error - t.dart:10:15 - The operator '+' can't be unconditionally invoked because the receiver can be 'null'. Try adding a null check to the target ('!'). -
          unchecked_use_of_nullable_value
   info - t.dart:7:9 - The operand can't be null, so the condition is always true. Remove the condition. - unnecessary_null_comparison

2 issues found.

where I'm told that on line 7 it can't be null so the 'if'-check is unnecessary (which is true), but on line 10 I'm told that I can't use it because it can be null (it can't).
I was told by @johnniwinther (about the first example) that

Flow analysis conservatively assumes that a local function can be called at any point in time. This means that it doesn't know if x is read before or after the x ??= 42 assignment. For the code at hand, an improvement would be to preserve promotions the occur prior to local function declaration when the promoted local is not assigned to after the declaration.

Can we do better?
/cc @lrhn @stereotype441

I hope we can. I'll defer to @stereotype441 about whether we actually can.
It should be "obvious" that a function cannot be called before its declaration. It can be called at any later time. (We do not try to determine whether the function can escape. If it does, "any later time" must mean until the end of the program, not just until the end of the declaring function. And since we don't know, we have to assume the worst case.)
The bigger problem is guaranteeing that every code path from that declaration to the end of the program will never assign a value to variables that the function refers to, which do not have the type they were promoted to.
That's a non-local property of the code after the declaration, which means that the type of the code in the body of the function cannot be type-analyzed until the rest of the scope of the variables it closes over has. And probably vice-versa, in case you do call the function immediately.
And for each of those variables, we have to decide whether they are ever, possibly, assigned to in a way which demotes. If they are, the function cannot assume those variables have any type more precise than the lowest it's ever demoted to.
But what defines demotion?
Arguably, the variable x is demoted back to int? after then if statement, where the false branch joins the true branch.
In this example, there is no code there. If there had been any code, we'd have had to figure out whether that code can possibly call y. We'd have to assume it can - again, no escape analysis, no side-effect analysis, any code must be assumed to be able to trigger arbitrary user code.
Does that mean that y might get called in code where x has been demoted? No, because it's only really demoted along the false branch, and y only exists along the true branch.
We should probably check whether there is any assignment to x on any path downstream from the declaration of y, and if any of those declarations demote x. But not actually demote. They might promote the already-demoted-but-not-reassigned variable, or do nothing at all. What matters is whether the assignment preserves the promotion of the captured variables.
(If any closure contains an assignment to x, things get even harder, because then we also don't know when assignments happen. We might know which types are assigned to the variable, but again, we need to do type inference in some order, so we don't always have all the information.)
Since the second example works, my guess is that we are already doing something, but it takes very little to throw us off course. Possibly the problem in the third example is that the if statement is not the one doing the promotion, because you promoted the variable just before, and our algorithm somehow misses that that's better information. Same reasoning might apply to the first example - what we do only works if we promote in a branch.


Set EDITOR env

"$EDITOR" is used to open and edit files, so that a prefered editor can be used
If it's not set, the scripts fail. This change sets the EDITOR env to "nano" (probably most user friendly) if it is not already set

bob dislikes nano so i am approving before he sees it

better nano that it blowing up :)


return date values as either some instance of Date object (joda, raw java etc) or posix date

Right now you return String instance, which is nice if you need to show that directly to the user, but very inefficient if you need to manipulate/store these (which would be the common case imho).
I believe the best thing to do is either to return a simple posix date which is perfect for interop. or storage, or some kind of Date/joda.DateTime instance.
Optionally you could make this configurable.

From a quick look at the source it seems it should be fairly easy to wire this option in core/extract unless I am mistaken. Let me know if you'd take a PR for this.

The reason we don't return a posix date is that it wouldn't contain timezone information. In most use cases, the user just says "2pm" (we don't really know their timezone) and Duckling returns a string-encoded "local" date with 2pm: that's what the app needs to fill a form etc. If we return a posix date, we need to make a decision on the timezone, return the timezone on top of the posix value, and the developer would have to convert that back to a local date.

The reason we don't return a posix date is that it wouldn't contain timezone information. In most use cases, the user just says "2pm" (we don't really know their timezone) and Duckling returns a string-encoded "local" date with 2pm: that's what the app needs to fill a form etc. If we return a posix date, we need to make a decision on the timezone, return the timezone on top of the posix value, and the developer would have to convert that back to a local date.

You do have a joda date instance that contains this info tho. You could return that instead.
We just use our own "parse" function for now and set date-fn to identity.


Supporting a shared monorepo package in check-tsconfig

@henrymgarrett Would it be okay to close this out?

@FrancesCoronel Yep!  Done


Wiki

Is it possible to make a wiki for all these scripts? For beginners its difficult to understand all the includes. It seems everything needed is included here, but its not that transparent to beginners.

There was a thought about that, yes!
I'll try to come up with a base set of pages, so the community could also pick up from there.

great idea. nice project by the way.


secp256k1 support

Hi,
the spec mentions secp256k1 support (https://trustoverip.github.io/tswg-did-method-webs-specification/#secp256k1), but there does not seem to be such an option available in the code. Did I miss it?
Secondary question on the matter, would/will it be possible to create a did:webs for an existing (secp256k1) key?
And last question, this currently seems to be the only open source code implementation of the did:webs spec, am I correct do did I also miss this in my research?
Thanks

Hi,
the spec mentions secp256k1 support (https://trustoverip.github.io/tswg-did-method-webs-specification/#secp256k1), but there does not seem to be such an option available in the code. Did I miss it?
Secondary question on the matter, would/will it be possible to create a did:webs for an existing (secp256k1) key?
And last question, this currently seems to be the only open source code implementation of the did:webs spec, am I correct do did I also miss this in my research?
Thanks

@lemoustachiste it should be possible. The CESR spec provides support. Keripy provides supports and has test examples like. The KERI community often uses ed25519 so we did the same. But we'd be interested if you find code restricting the use of secp256k1.
This is the only reference implementation that I'm aware of.

Thanks, I'll explore that route

@2byrds following your comment on the keripy repo, I've tried to pull the thread on the verfer object instance.
It seems that the Habery kerver property which comes from the db property as instantiated here https://github.com/WebOfTrust/keripy/blob/3febc54a463125a4cc3d86d694e57004134b2092/src/keri/app/habbing.py#L211C9-L211C16 holds references to Ed25519 rather than the desired secp256k1:
obj.__dict__ = {'_code': 'D', '_size': None, '_raw': b':p\x01q\xe1U\x85P-\x0f3?\x8f:\xef;Z\x15\xb2\xc7\xacE\xe9x\xe2R\xb9\xaa3\x84D]', '_verify': <function Verfer._ed25519 at 0x7f3690824af0>}

as shown in the MatterCodex:
obj.Codex = MatterCodex(Ed25519_Seed='A', Ed25519N='B', X25519='C', Ed25519='D'...

As opposed to what I suppose should be 1AAB for ECDSA_256k1 in the same Codex.
I've pushed further the investigation and it seems that this is set up at the kli incept command, which does not seem to accept a code parameter, but could potentially inject it into the Habery instance, which I would need to test out tomorrow.
So at this point it looks more like an issue at KERI level than at the did-webs-resolver level.
I will try to see if it's fixable.


Use larger page size while validating k3s version

First of all, thank you for your wonderful piece of software!
When I want to use an "older" release of k3s (eg.: 1.20.12 which was released two weeks ago) I get the following error:
Some information in the configuration file requires your attention:
 - Invalid k3s version

I find this part of the code:
https://github.com/vitobotta/hetzner-k3s/blob/f2154e59d7baaaedd16d506a2bc11b294e3b08f7/lib/hetzner/k3s/cli.rb#L201
It uses GitHub API to search for tags, but it will only send back the last 30 tags.
According to GH API docs, it's possible to increase the page size, using the per_page parameter.
So I raised this per_page limit to 999.

Awesome, thanks!

Updated with 0.4.8. :)


write upload session info atomically

We now use a lock and atomic write on upload session metadata to prevent empty reads. A virus scan event might cause the file to be truncated and then a finished event might try to read the file, just getting an empty string.

ocis ci of https://github.com/owncloud/ocis/pull/10102 running in https://drone.owncloud.com/owncloud/ocis/39054

ocis pr is green


Node-level message aggregation for CkMulticast

Original issue: https://charm.cs.illinois.edu/redmine/issues/1394

Because CkMulticastMgr is a group, it uses a tree structure of PEs to send group messages. The problem is that if one of the PEs in the tree is busy with something, it won't process multicast messages that could be processed by other PEs in the same node.
Solution is to convert CkMulticastMgr to a nodegroup. Trees should be of logical nodes (processes) instead. Ideally, the spanning tree algorithm will also be physical-node aware when topology information is present.

Original date: 2017-02-16 21:44:51

Core decided that a Node Group should be added on top of the current Group CkMulticastMgr

Original date: 2017-05-09 20:50:04

This won't be an API change, AFAICT, so it could be done in a patch release.

Original date: 2017-08-30 19:47:27

Any update on this?

Original date: 2017-10-11 20:23:18

Currently debugging this on Blue Waters.

Original date: 2017-10-11 20:39:48

This is crashing on BW with 64 nodes.
The dependency chain for building CkArray group is locMgr->mcastMgr->array. Apparently the crash is due to nodegroup dependencies not existing (are ignored). So, because mcastMgr is in the middle of dependency chain the end result is that there is NO dependency being enforced for creation.

Original date: 2017-10-30 14:44:20

Respecting the dependencies during creation seems to solve problems. Performance still needs to be tuned.
But nodegroup dependencies support does not exist yet in main charm branch, and merging a good solution will probably take some time.


having a clean and functional notebook

Functionalities:

[x] load data (e.g. 1DA15_nuit_hab.edf)
[x] filter and epoch data
[x] apply classification methods
[x] apply Annotate()to raw with classification results
[x] visualize meaningful chunks of data with annotations
[ ] (optional) visualize statistical properties of annotated chunk versus normal

I'm soon done, I'm just looking how to properly annotate the figures but the final results will be great, e.g.
https://matplotlib.org/3.1.1/gallery/subplots_axes_and_figures/axes_zoom_effect.html#sphx-glr-gallery-subplots-axes-and-figures-axes-zoom-effect-py

@RobinGuillard I think I did enough in this PR, please review.

Very interesting, but yet important changes need to be made:
It would be nice to have the line of the signal more fine. To distinguish better

as NOT mentioned in the docstring (I forgot), additional arguments (**kwargs) are passed to plot. So color, linewidth, etc. are all valid parameters

In addition, as you can see, on the bottom plot, burst are not easily seeable:

I would be better if they could be in first plan.

Problem here is that the burst are very small in comparison of the whole recording. Also, double check that you used pltAnnotations on both subplots (in my examples I didn't because it was heavy)

Moreover, I haven't found for now a way to scroll "rapidely" on the zoomed version of the data. It is currently not envisageable to explore all the data at this speed.

As mentioned in the notebook, for now we use plt.set_xlim. I'll build a NB widget with a scollbar to do the same thing smoothly but it is not urgent.

Moreover, it seems we currently have only one color for all annotations, it would be more visual if we had a color per annotation type (perhaps an addition for dict_annotations?)

yep, for now, we need to call each plotAnnotation independently. The color is param fc

Your code definitely reveals a high level of mastery, and I am outpassed to understand most of what's happening in visualization.py and the corresponding outpass my level and my PR capability is limited.

anyway, reviewing code is hardcore. Thus the importance to focus on high quality pytest and thrust those.


MSDKUI-1682: Documentation updates

Updated WaypointListDelegate methods
Updated commit rules (72 chars for line)
Other minor fixes / updates

Signed-off-by: Piotr Szmyt<EMAIL_ADDRESS>

Codecov Report

Merging #27 into master will increase coverage by 0.6%.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           master     #27     +/-   ##
========================================
+ Coverage   87.69%   88.3%   +0.6%
========================================
  Files          88      58     -30
  Lines        5639    3684   -1955
========================================
- Hits         4945    3253   -1692
+ Misses        694     431    -263

Flag
Coverage Δ

#ios
88.3% <ø> (+0.6%)
:arrow_up:

Impacted Files
Coverage Δ

MSDKUI_Demo/IconButton.swift

MSDKUI_Demo/OptionsViewController.swift

MSDKUI_Demo/ManeuversOverviewViewController.swift

MSDKUI_Demo/GuidanceDashboardViewController.swift

MSDKUI_Demo/ExtensionArray.swift

MSDKUI_Demo/RouteViewController.swift

MSDKUI_Demo/ExtensionUITableViewCell.swift

MSDKUI_Demo/ExtensionBundle.swift

MSDKUI_Demo/ExtensionNMAMapMarker.swift

...UI_Demo/GuidanceDashboardTableViewDataSource.swift

... and 20 more

Continue to review full report at Codecov.

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


pdf.js version not set correctly for builds of downloaded sources (non-git repositories)

I finally (I hope) figured out why the version number of pdf.js Chrome extensions built by me didn't have the correct version.
I downloaded the 2.0.550 archive from the releases pages, set up everything as should (npm, gulp, etc) and then tried to build a Chrome extension.
The build is successfull, but the resulting extension has 2.0.0 version.
The problem is that gulpfile.js assumes it's in a git repository to determine the build number (see line 426 and on), but it's not in this case (git gives fatal: Not a git repository (or any of the parent directories): .git)
This wouldn't happen if the directory were obtained using git clone ... in which case it would be a proper git repository.

Indeed, that may well be the case. I don't really think there is anything we can do about that though because the version number is determined by the commits. Only a different versioning scheme could help, but for now that's not really considered.

You could at least put a comment / warning in the README.

Perhaps it would make more sense to just error out, rather than generating a fake buildnumber?
https://github.com/mozilla/pdf.js/blob/34594a5b02394a531c1512ff10b44148225abe67/gulpfile.js#L431-L434

I don't really see this as a problem, but if someone wants to contribute a patch for that I'm fine with it. Marking as a good beginner bug.


add a way to return side-information from grad

For example, a user may want to return a statistic or auxiliary data structure from the Python function to which grad is applied, not to be considered as part of the value of the mathematical function to be differentiated.

Following up from JAXers conversation: it's possible to do this by manually invoking vjp with more than one seed:
import jax
def loss(x): return (x + x, x)
def mygrad(x):
  (l, extra), pullback = jax.vjp(loss, x)
  dx, = pullback((1.0, 0.0))
  return dx, extra

But as Dougal pointed out, even calling jax.ad.vjp with jax.ad_util.zero (rather than 0.0) doesn't avoid materializing the second seed (and performing unnecessary backward-pass computations).
So it would be nice to have an API that either accepts real symbolic zeros or allows selecting a single scalar output to receive a seed.

@jekbradbury as you probably know, that's the approach taken in Autograd.
Note that the extra flop cost will, I think, not be too bad for most use cases, because often extra is something that's computed during computation of l anyway (or doesn't take much to compute from some intermediate value during the computation of `l). This is the case in the trivial example you give. That means that the zeros will only be propagated through a small piece of graph before being merged into the gradient computation that's going on anyway. Does that make sense?

Can you guys try out the code in #484, and let me know if you run into issues, or have a better way of organizing the API?