3D permutation tests (e.g. time x space x freq) is too complicated

MNE can do cluster-based permutation tests on 3D data, but from what I understand, it's fairly complicated and time-consuming to set up the connectivity matrix. Ideally, it would be super cool if we could also assume regular lattice connectivity in the second dimension and have the user only supply the spatial neighbourhood connectivity matrix. Alternatively, we should at least make the doc string a bit more explicit about what to do.
@kingjr

+1^100 ;)
In general the interface to cluster tests could be simplified, along with results (a specific object with some viz methods?) - but that would require some thought. The lattice assumption makes sense, so far I've been using fieldtrip or custom code in Julia when dealing with > 2d spaces but only rarely these spaces have more complex adjacency structure than lattice for everything apart for spatial dim (whether the spatial dim are channels or channels_by_channels etc.).
One thing that I also miss in mne cluster tests are some "filtering" options like minnbchan in fieldtrip.

In case it's of interest, I have cluster-based tests like this implemented at http://eelbrain.readthedocs.io/en/r-0.26/reference.html#module-testnd in a framework that was too much statistics-related overhead to add to mne-Python at the time. MEG examples at https://github.com/christianbrodbeck/Eelbrain/tree/master/examples/meg.

Thanks @christianbrodbeck, I wasn't aware of this functionality in eelbrain (I didn't use it previously) - I'll give it a try!

@mmagnuski Let me know if anything is not obvious how to do!

@jona-sassenhagen I've been struggling with cluster-based permutation tests lately (this is the first time I'm doing this so I'm a complete newbie in this area), and I find the MNE functions rather difficult to use (but mind you, FieldTrip is also not much easier with every option in the cfg struct). So any simplification is really welcome!
@christianbrodbeck this is awesome! Thanks for pointing this out, I didn't even know your package - I'll give it a try, looks nice (but I still might come back with questions :smile:).

Oh, one more thing, do you guys know how this publication/methods relates to the three methods described in http://eelbrain.readthedocs.io/en/r-0.26/reference.html#module-testnd? Is this something new or is it equal to one of the existing methods?
http://www.sciencedirect.com/science/article/pii/S1053811912010300

@cbnr threshold-free cluster-enhancement is implemented in mne (and eelbrain too IIRC) - you need to pass a dict to treshold parameter of mne.stats.permutation_cluster_test.

@cbrnr TFCE is the same method (Smith and Nichols, 2009), except Mensen and Khatami seem to suggest to use e=2/3 instead of Smith and Nichols’ e=0.5. M&K mention empirical support for this in an appendix but I can’t see that appendix in the paper(?). I did not expose e and h in Eelbrain but it would be simple to do if there is a good reason for it.

@christianbrodbeck thanks, good to know that there are only minor differences.
@mmagnuski @christianbrodbeck
eelbrain requires Python '>=2.7, <3.0' but the running Python is 3.6.3

😱
I think I will continue to try MNE's TFCE.

@cbrnr it's due to the tight integration with wxPython which has not made it to Python 3 yet (although it recently started beta versions), but with conda it's very painless to install.

I think wxPython 4 is already pretty usable on Python 3. But yes, I could set up a conda env with Python 2, I'm just not sure if I want to 😉 . Anyway, I'll probably come back with questions regarding the tests, thanks for the great work implementing all this!

Yeah I’m planning to look into wx 4, but “pretty usable” does not sound encouraging...

On Oct 20, 2017, at 7:53 AM, Clemens Brunner<EMAIL_ADDRESS>wrote:
I think wxPython 4 is already pretty usable on Python 3. But yes, I could set up a conda env with Python 2, I'm just not sure if I want to 😉 . Anyway, I'll probably come back with questions regarding the tests, thanks for the great work implementing all this!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Have either of you tried our environment.yml?

@larsoner I would prefer it not relying on development versions... there is no release build of Mayavi that works yet?

Released versions of mayavi require PyQt4 which pins matplotlib down to 1.5. If you want to go that route the environment2.yml does it

@christianbrodbeck no, it really works nicely. A while ago I've ported PsychoPy to Python3, which also involved going from wxPython 3 to version 4. Everything worked almost out of the box. A few changes here and there was all it took.
@larsoner nope, MNE has always worked just fine.

Thanks @cbrnr that sounds much better :) I will look into it as soon as I get around to it. I hope mayavi is compatible with wx 4 as backend. Then Qt4 should not be needed?

I think this is superseded by #4859

@cbrnr in case you're still interested, the master branch of Eelbrain is now optimized for Python 3.


Login problems with OAuth

Seems that toggl button is unable to login if users logs in to toggl.com with google.
User says it appeared a few days ago. With release 6.0.0 probably.
OS:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
Chrome
Version 40.0.2214.111 (64-bit)
More info: 132650

Connected to manifest permission closed with 5e60bdf1783851ae46a74014dd46e4f543936cbd


emphasize in instructor guide the versionning aspect; closes #59

I would really like to make sure we spend few minutes on this aspect and discuss it with participants and not only mention it in passing.

very important!


BUG: Test failure due to scipy.optimize.nnls defect

v0.6.2 fails to past the test, as scipy changed its optimize.nnls implementation since version 1.12.0, which results in error for certain Fortran-order arrays. I have submitted an issue to scipy. Let's see how they handle it. Another option is to specify scipy version in pyproject.toml: scipy==1.11.4 or earlier.

I think it's best to wait, if they don't resolve it I agree to do what you say.

Finally, I changed the version to scipy<1.12. However, when it is fixed, I will switch back to the newer version.
Can the issue be closed?

Not sure if they have fixed the problem in scipy. I am OK with closing the issue. Hopefully we will not heavily rely on the approximate solution of NNLS after direct PGD is well implemented and tested (it can still be kept as an option though).

Not sure if they have fixed the problem in scipy. I am OK with closing the issue. Hopefully we will not heavily rely on the approximate solution of NNLS after direct PGD is well implemented and tested (it can still be kept as an option though).

Any news on that? Are you working on it?

I just came back from a vacation, and yes, I have already done with orthogonal projection onto unit simplex with numpy in my fork. It may not be the fastest algorithm but it is easy to implement vectorize. The next step for me is to combine it with gradient descent. Seems that backtracking line search is our best option to adjust step size.

That sounds promising! Maybe could you keep a log of your progress in #27 ?
+1 to keep NNLS as option :)

scipy/scipy#21021 seems to have fixed the issue. It will be available in scipy 1.15.0.


Update dockerfile and README for ROS 2 and latest tooling

This updates the supplied dockerfile to build in the ROS 2 environment. It can be used a base for developers that do not have Ubuntu 22 base OS. I also added a job in CI to test it works which will prevent regressions.
The README also needed a few updates that were missing.
CI was already building in docker, but it didn't use this dockerfile.
Relates to https://github.com/ethz-asl/terrain-navigation/issues/6

Merge when ready! Thanks!


Json Array Doesn't Work

[Enter feedback here]
I made same process and it works with one record but it doesn't work with multiple records.
This works
{"TimeStamp": "1987-11-16 12:00","Value": "two array World","Source": "TestSource"}
but this doesn't work
[{"TimeStamp": "1987-11-16 12:00","Value": "two array World","Source": "TestSource"},{"TimeStamp": "1987-11-16 12:00","Value": "twotwo array World","Source": "TestSource"}]
Could you advice me why multiple records doesn't work?

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

ID: ddf4599f-0e80-47fc-c919-be4434dcdffd
Version Independent ID: 8ef468be-2c25-d37c-be11-23f0ad8d5c3c
Content: Ingest Azure Blobs into Azure Data Explorer
Content Source: data-explorer/ingest-data-event-grid.md
Service: data-explorer
GitHub Login: @orspod
Microsoft Alias: orspodek

Found, there is multiline json option. (I had the same problem 5 years and I did again.)

@AC740  Hope you have self resolved and hence closed the issue. Thanks for the update.


Empty progress bar tweaks are Firefox-only

See https://github.com/twbs/bootstrap/blob/5cdb09231871e320c2c2210a3a03262bc78875fb/scss/_progress.scss#L49-L54
Presumably they ought to be applied to all browsers.
Or perhaps the tweaks are unnecessary.

Removing them entirely in d46c7ef as we no longer have them in v3 as of awhile ago.


tools: Add a bash completion script for the configure tool

Summary
This PR intends to add support for bash completion for the ./tools/configure.sh script.
It currently supports completion both for the board name and the configuration profile, even when arguments are passed to the ./tools/configure.sh script.
Impact
No impact, new feature that is not automatically enabled.
Testing
The user is required to execute on the working terminal:
$ source tools/configure_completion.bash

This feature should be ported to tools/configure.c as well.  configure.c is used on platforms that do not support bash scripting (or for which people may want slightly faster configurations).  It is the default configuration tool for the Windows native build.

This feature should be ported to tools/configure.c as well.  configure.c is used on platforms that do not support bash scripting (or for which people may want slightly faster configurations).  It is the default configuration tool for the Windows native build.

This would only work for a bash shell as it is giving bash context on what the arguments can be for auto complete. I guess it could be updated to work on the compiled config tool, but you would still need to be in a bash shell.  Is that what you were asking?

This particular implementation would only work in a Bash shell, but the identical functionality could be implemented in C as well.  The underlying functionality does not depend on Bash.

Sorry still not following the change is not to the configuration tool, it is to enable bash to give suggestions when you press tab on the command line. To support another shell this would have to be implemented with whatever that shell uses for the auto complete.
https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html

Ignoring Bash, the functionality could be implemented in C as well (as NSH does).  There is no magic here.  But it certainly would be a bigger job.  That is why I suggest it probably would not be worth the effort.

@gustavonihei looks like you deleted the branch? I think this is useful and we can merge it, I was just trying to understand what Greg was suggesting.

@gustavonihei looks like you deleted the branch? I think this is useful and we can merge it, I was just trying to understand what Greg was suggesting.

@btashton It has already been merged some hours ago by @acassis.

Ah missed that, thanks!


About graph_unet

❓ Questions & Help

Hello, Thanks for your amazing work, I have run your graph_unet for Cora dataset, but can not get the accurancy as mentioned in the paper, and even not as good as GCN. I can not figure out why.

We tried our best to reproduce the Graph U-net model but its true that its performance cannot reach the one reported in the paper, see https://github.com/rusty1s/pytorch_geometric/pull/573#issuecomment-516150552 and https://github.com/rusty1s/pytorch_geometric/issues/37.

ok, thanks a lot for your reply.

Are you splitting the train test differently? I'm probably missing something, as I'm getting 89% when running
https://github.com/rusty1s/pytorch_geometric/blob/7bc6a0bb0588c5fc6a5aa75b2e5693c01c735391/examples/graph_unet.py
Are there different specs for running the train/test data split?


Makefile: 改正rpm target

这个 PR 实现什么功能/修复什么问题:
Makefile: 改正rpm target
.travis.yml: 去掉过时comment

是否需要 backport 到之前的 release 分支:

release/2.10.0

/area util

Codecov Report

Merging #2353 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #2353   +/-   ##
======================================
  Coverage     7.1%    7.1%
======================================
  Files         454     454
  Lines       71444   71444
======================================
  Hits         5075    5075
  Misses      65952   65952
  Partials      417     417

Flag
Coverage Δ

#aFlag
7.1% <ø> (ø)
: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 9d45ff8...49daf58. Read the comment docs.

/lgtm

/approve


Don't allow students to register twice

If a user is already registered, /students route should show the student's course instead of allowing her to register again.
We could also allow user to change her inscription information.

Closing this will also fix #25


add fullscreen options for youtube etc

I'm trying to use Beaker as my default browser. I was watching this excellent critique on masculinity in film :
https://www.youtube.com/watch?v=C4kuR1gyOeQ
But couldn't watch it fullscreen :crying_cat_face: (blocked fullscreen / needy tabs + nav wanting to join the party)
This PR aims to rectify that. Works well on Linux. Things that might still need attention :

what does this do on darwin?
Hitting Esc while watching a video doesn't yet exit fullscreen mode, but it does get you your tabs + nav back.

Ok some other things we need to hit for this.

[ ] Maximizing via mac's maximize button shouldnt hide the toolbar. That should only happen when the app requests fullscreen mode. So, we need to differentiate from fullscreen and maximized.
[ ] When maximized but not fullscreen on mac, we need to render our own version of the traffic lights UI, because mac stops doing it for us. (Bleh.)
[ ] We need to either ask permission before going fullscreen, or do what Chrome does and let the user know they've gone fullscreen. Otherwise it could be a way to phish users (go fullscreen, present fake browser UI, get user info).

If we want to ask first, that's as simple as going to /app/lib/perms.js and setting alwaysAllow: false on the fullscreen perm. The UX isn't as good though. Chrome's solution is definitely better.

[ ] Open for debate (cc @taravancil), but I really like that chrome darkens the tab background when in maximized mode. I'd like to try that too!

I think that's everything. @mixmix let me know which of these todos are easy for you to tackle. The other ones you can leave for us.

okee @pfrazee , had a mull on this.
In short - I can't really dev the mac parts of this (I'm running linux on a thinkpad).
I have had a go at point (3) though. I've gone for "tell the user they're entering fullscreen mode" (and offer them the exit if they hover over the top border of the screen).
check it here (more notes on a possible implementation there)
I've done this instead of the permissions route because I would personally lose it if a browser asked me if I wanted to fullscreen every time I clicked a fullscreen button :japanese_goblin: :fire:

Great, I'll check it out

Ok done. Thanks for making this PR @mixmix, I might not have gotten around to doing this otherwise. Check out what it ended up taking to get right: 3e5d9df1c97587c4f55403fd38cd0d941f9a9b1a
But it now works exactly like in Chrome!

Excellent. Sorry I couldn't follow this so the way through.
Interested to know how it was having this sort of contribution :
E.g. Did it pull you off task?
Certainly it's harder with intermittent contribution. Do you have an idea
of the threshold you want for adding someone as a contributor? That always
makes prs easier to modify in my experience
On Sat, 30 Sep 2017, 13:47 Paul Frazee<EMAIL_ADDRESS>wrote:

Closed #687 https://github.com/beakerbrowser/beaker/pull/687.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/beakerbrowser/beaker/pull/687#event-1272572402, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACitnuCVxl_RexIW-zvwQZKqADc_TrNMks5snY-GgaJpZM4PgODN
.

Excellent. Sorry I couldn't follow this so the way through.

No worries. TBH I can't imagine how you could've seen this one to the end. There is a high barrier of knowledge on this project, and I'm not sure how it could be lowered.

Interested to know how it was having this sort of contribution: E.g. Did it pull you off task?

In this case, it got me to look at the problem again and see solutions that I hadn't seen the first time around. I don't know if it would always go as nicely, but this time it was a nice push. If it wasn't, I would've either requested the changes and left it, or explained why we couldn't handle the feature yet and closed the PR.

Certainly it's harder with intermittent contribution. Do you have an idea of the threshold you want for adding someone as a contributor? That always makes prs easier to modify in my experience

I'll think about that. We haven't had enough outside PRs for it to come up, yet.


Make a standard for what type, and how many underscores are used

I'm always frustrated when the amount of underscores used differ between cards and sometimes in between cards! I would like to enforce a standard amount of underscores, the standard would be based on the discussions in the comments. I can't think of any alternatives. I've made this website to test different underscore lengths.

After doing some testing, the standard will now be 7 _ and an update will be made shortly


Save Crashes during network outage

If I pull the network cable and then bring up the Save widget, I get an uncaught exception:

Just as bad ... the error message appears under the Cytoscape window ... this is not user-friendly.

This is an Electron issue, not sure if there's anything we can do about this... at least there is an error, and the ENOENT is a dead giveaway to a programmer.

@bdemchak How can I reproduce this error?
I disabled network connection and tried, but I cannot get the error you have.  Save fails when I click save button, but I did not get this error.

This is the I got when save a network without connection.


MPC Tracker - odometry input

Hi Tomas,
thanks for your help with the previous integration from the MRS MPC Tracker on non-MRS project.  I was going to post this in the same issue but I though this already another issue ;-)
So I have been testing / debugging / playing you name it ;-)  with the MPC tracker.
At the moment I am loading a simple trajectory to track, as you can see below:

Once I startTrajectoryTracking() the mpc starts streaming the predicted trajectory.Until here, everything  is working as expected. Well I mean the mpc tracker is working as supposed to.

The issue(s):
When I call the update() method with the odometry being passed as reference the start point from the predicted trajectory is not being adjusted. It basically makes the MPC tracker follow the trajectory but the fed odometry has no impact on it.

At the moment I have a timer that is calling this every 100ms and feeding it with the odometry / pose from a mavros  topic.
mrs_msgs::PositionCommand::ConstPtr tracker_output_cmd;
mrs_msgs::AttitudeCommand::ConstPtr last_attitude_cmd;
mrs_msgs::UavState uav_state;
uav_state.pose.position = _current_pose.pose.position;
uav_state.pose.orientation = _current_pose.orientation;
uav_state.header.frame_id = "uav1/utm_origin";
mrs_msgs::UavState::ConstPtr        uav_state_const_ptr(std::make_unique<mrs_msgs::UavState>(uav_state));
tracker_output_cmd = Hailon_MPC_Tracker::update(uav_state_const_ptr, last_attitude_cmd);

You have any idea what I might be missing ?
I  would like to make the tracker dependent on the UAV position and/or velocity. In case I have a slower drone and this is unable to keep track with the predicted time-trajectory. Is it possible to make the mpc tracker dependent on that instead of time based ?
Greetings,
Pedro

Hey, so you are not supposed to use the current odometry for more than a mere initialization of the tracker (during activation). Since the activation, the tracker is supposed to live its own life with the MPC only having a direct influence on the simulated model, see the paper for more info. The simulated model behaves perfectly so the the MPC will actually move it as you would expect. The output of the tracker should actually by the state of the simulated model.

Maybe you are still looking at the MPC Tracker as on a controller, which it is not. Yes, It uses an MPC controller inside itself, but it can't control your UAV directly. For that, I recommend, e.g., the SE(3) geometric tracking controller, which is very good at following the reference that is generated by the MPC Tracker. Actually, the SE(3) can deal with all the nonlinearities of the UAV quite easily, wheres, designing an MPC to do that aswell would be a very difficult problem.

Hi, I must have missed something in the beginning then. I guess I was assuming wrong all the way. But shouldn't the tracker generate a predicted trajectory with basis on the current position from the drone?

Hi, so I made a few changes of my own and now I believe I have the desired output for my case scenario. Might not be the same as currently implemented but this was the behavior I was aiming for(in my setup) with the MPC tracker.
There are still a few things that I need to add( like dynamic route planning based on current pose) but is getting close. :-D

Hey, ye so we do not "input" the current odometry to the MPC tracker because the tracker is not responsible for controlling a real UAV. The tracker outputs states of the UAV translational dynamics that are the "reference" for where the UAV is supposed to be. The UAV is all the time somewhere around the reference and minimizing the difference between the reference (the MPC Tracker's output) and the current states is the job of a "Feedback controller". What might confuse you is that the MPC Tracker contains an MPC controller. But mind that the MPC controller only controls an ideal model without any disturbances. And thanks to the ideal model being part of a simulated feedback loop with the MPC, we can produce an "ideal reference" by sampling the states of the simulated model. And since we are talking about an idea point-mass model, the MPC does not need to account for steady-state errors or nonlinearities, which you should do in the case of a real UAV.
With this mechanism, the reference produced by the tracker provides appropriate feedforward action (acceleration, jerk), and provides a feasible reference in position and velocity. Moreover, the MPC can optimally track even infeasible reference trajectories. All of this for generating a reference for a feedback (and feedforward) controller.
So I guess if you wish to use the Tracker as a controller (meaning you would only use, e.g., the acceleration output of the Tracker), then you can supply the current UAV odometry as the initial state. But don't forget to implement some form of integral feedback to minimize steady-state errors.


Simplify & harden Bluemix deployment example

Automate the manual configuration steps:
Auto-fetch the user registry namespace (bx ic namespace-get)
Auto-create and map random routes for the controller/registry
Merge the .bluemix.cfg file into the a8-bluemix script
Add logic to validate remote operations succeed (group create, etc.)

Additionally, we can use the existing docker-compose file to deploy the helloworld/bookinfo apps, and use the bluemix script only to cpi all images / deploy the controlplane.


Error from Encoder.Encode() should be tested

Error from the following call (that might happen) https://golang.org/pkg/encoding/json/#Encoder.Encode should be explicitly check there:
https://github.com/RedHatInsights/insights-operator-utils/blob/5819e1fc31a9531e657e748f34739c4c29aecfb4/responses/responses.go#L61
and
https://github.com/RedHatInsights/insights-operator-utils/blob/5819e1fc31a9531e657e748f34739c4c29aecfb4/responses/responses.go#L63

Fixed in https://github.com/RedHatInsights/insights-operator-utils/commit/bc8746914fb612a5763bcc7f504c9336ac160e4d


The version flag should fall back to a default in dev mode

Running poetry run python cleantoots/main.py --version currently results in a RuntimeError: Could not determine version.

Maybe we should better extract the version information. Or maintain two version sources.


SIP: Spin templates

WIP SIP for post-0.1 templates

We have had templates support for a while now — do we want to merge this PR?


Determine which turn-up guides can be replaced with kubeadm

This is a...

[x] Feature Request
[ ] Bug Report

Problem:
There are many outdated pages that do various flavours of cluster turnup.
Proposed Solution:
Redirect to kubeadm http://kubernetes.io/docs/getting-started-guides/kubeadm/.

Rather obvious targets would be:
[ ] http://kubernetes.io/docs/getting-started-guides/ubuntu/
[ ] http://kubernetes.io/docs/getting-started-guides/ubuntu-calico/
[ ] http://kubernetes.io/docs/getting-started-guides/fedora/flannel_multi_node_cluster/
[ ] http://kubernetes.io/docs/getting-started-guides/fedora/fedora_manual_config/
[ ] http://kubernetes.io/docs/getting-started-guides/fedora/fedora_ansible_config/
What is the best way to go about this?

cc @pwittrock

Woot

@pwittrock do you wanna discuss this?

@errordeveloper Yeah.  Slack?  Zoom?

@pwittrock, was there any decisions made about this issue?

@kubernetes/sig-cluster-lifecycle-misc Ideas?

kubeadm directly (with manual IaaS provisioning?) or something like kubernetes-anywhere with a single kubeadm-powered stage?

/remove-lifecycle stale
SIG Cluster Lifecycle is looking into reprioritizing this in 2018

cc @kubernetes/sig-cluster-lifecycle-feature-requests

You added the stale label btw

@chrislovecnm Sorry, I don't understand your comment?

Now tracked in https://github.com/kubernetes/website/issues/7278.


navigation doesn't show red underline as in demo site

Hi,
I just begin to use the TeXt theme, but both the header navigation and sidebar navigation showed no underline and color highlight, and user have no idea where the current navigation is.
I double it I may missed some config settings, but failed after experiments changing various parameters in _config.yml.
The site I build is https://vlabsys.github.io

according to the issue #81 , the problem solved after adding permalink: the_url in the front matter of the pages that matching the exact the_url in _data/navigation.yml.
it would be better to include this tip in the TeXt doc.

The red underline show when the url in* _data/navigation.yml* equals to the page's url, You can specify a path by permalink key, this will overwrite the default path.


[Core] Allow PollEvents to use wait logic

This PR moves the test to use the glfw wait logic outside of the PollEvents call and into the EndDrawing. This way people who are using the advanced timing feature can choose to use wait or poll depending on program state not a build flag.

@JeffM2501 I'm afraid I'm not merging this change. It implies adding and extra parameter to a function that most of the time will be called with a false value, making the function less clear when directly seen in the code (if not checked the function in raylib). Also, I feel it a bit confusing that you are asking to poll events but actually you want to wait for events. If that function is really required by some user, I prefer to just expose the WaitEvents().

Fair enough 😀

@JeffM2501 I'm closing this PR. I'll keep the build flag method for the moment. It seems a specific use-case for some raylib applications...


Hue Motion Sensor light level - dark=false and daylight=false?

Hello,
Not sure whether this is an issue in Hue or something that maybe should be handled better on the Homebridge side. At a specific time during the day we are seeing dark=false and daylight=false. Of course, we're just going to go ahead and set up automation triggers using just one of those settings, and adjust the sensitivity as necessary. Though it was a little confusing to start as we used Dark=Yes and Daylight=Yes as the two different triggers for whether it is daylight or not. Of course, when both false, it didn't make sense, we'd be seeing "Not daylight" inside Hue app but no automation trigger.
I wonder what your thoughts are on this? Is it worth making the homebridge-hue only ever report them mutually exclusive - that is, never both the same value? Might be less confusing as it does seem to be it might be some internal calculation thing inside Hue and that it would make more sense when exposing it to Humans for it to be mutually exclusive.
Thanks! Great work and really appreciate it.

Not sure whether this is an issue in Hue

The Dark and Daylight characteristics that homebridge-hue exposes simply take the values of the dark and daylight attributes on the Hue bridge.  Philips did a brilliant job of not documenting their intended use.

I wonder what your thoughts are on this?

Here's what I figured out:

The config attributes tholddark and tholdoffset provide the thresholds for dark and daylight:
dark = (lightlevel < tholddark)
daylight = (lightlevel > tholddark + tholdoffset)
Last time I looked, the official Philips Hue creates rules that only look at dark.  This causes the light to switch on and off continuously, when the Hue motion sensor "looks" straight at a light, causing dark to be false when the light is on;
HomeKit rules execute when any one of the triggers fires while all conditions are true;
Unlike HomeKit, the Hue bridge doesn't recognise the difference between triggers and conditions.  Hue bridge rules execute when a (the "last") condition becomes true, while the other conditions are true already.

Though it was a little confusing to start as we used Dark=Yes and Daylight=Yes as the two different triggers for whether it is daylight or not.

A HomeKit rule with these triggers would fire when Dark becomes true or when Daylight becomes true, not when (Dark and Daylight) becomes true.  With a positive value for tholdoffset, Dark and Daylight can never be true at the same time, so a Hue bridge rule with these conditions would never fire.

Is it worth making the homebridge-hue only ever report them mutually exclusive - that is, never both the same value?

There's three possible situations:

Dark, which implies not Daylight;
Daylight, which implies not Dark;
"Twilight", not Dark and not Daylight.

I use 1) for rules to turn on the lights, and 2) for rules to turn off the lights.  During twilight, I don't change the lights.  With the right calibration of tholddark and tholdoffset the lights turn on automatically when I close the blinds and off when I open them.
I have set tholddark to 12000 for all my rooms, and tholdoffset between 2000 and 8000, depending on the lightlevel when the lights are on (and there's no natural daylight).  Note that lightlevel gets updated only once every five minutes or so, when no motion is detected, so double-check lastupdated before noting down the lightlevel.

Thanks! That's what we found out too. It just seemed very odd to find both Dark and Daylight as false at the same time and seemed like something wasn't working. Having a Twilight phase where it is neither makes sense. Thanks!


Make printWidth option configurable

The printWidth option of prettier is currently set to 100: https://github.com/UnwrittenFun/svelte-vscode/blob/a40e28ce26c7e7ef395190d53f25e8ae4c5725b2/.prettierrc#L3
It would be great if this could be made configurable. In my opinion 100 is way too low, if you have 4-5 nested HTML tags the text will be broken every word or so.
Edit: I just noticed that dropping a custom .prettierrc in the project root dir and reloading VSCode works as well. Still, it'd be nice if this could be configured through a VSCode preference.

Of course we will never please everyone. I prefer 80. I'd much rather have a default of 100 than something higher. This is because I very frequently edit files side-by-side.

Hence the request to make it configurable, not to change the default 😉


Pipeline: optimize part scan

What problem does this PR solve?
Issue Number: ref #6518 ref #4474
Problem Summary:
What is changed and how it works?

Avoid excessive memory usage due to too many partitions read concurrently
Under the storage thread pool + pipeline model, data imbalance between multiple partitions will not cause data skew in the computing layer, so here is simply concat the streams of different partitions.

Check List
Tests

[ ] Unit test
[ ] Integration test
[x] Manual test (add detailed scripts or steps below)

create table part_test.no_part_table(a int, b int);

create table part_test.part_table(a int, b int)
PARTITION BY RANGE (a) (
    PARTITION p0 VALUES LESS THAN (1),
    PARTITION p1 VALUES LESS THAN (2),
    ...
    PARTITION p59 VALUES LESS THAN (59),
    PARTITION p60 VALUES LESS THAN (MAXVALUE)
);

ALTER TABLE part_test.no_part_table SET TIFLASH REPLICA 1;
ALTER TABLE part_test.part_table SET TIFLASH REPLICA 1;

60 partition, 50w per partition.

set tidb_enable_tiflash_pipeline_model = ON;
select count(1) from no_part_table;
+----------+
| count(1) |
+----------+
| 30000000 |
+----------+
1 row in set (0.08 sec)
select count(1) from no_part_table where b = 0 or b = 5;
+----------+
| count(1) |
+----------+
|   200000 |
+----------+
1 row in set (0.02 sec)
select count(1) from part_table;
+----------+
| count(1) |
+----------+
| 30000000 |
+----------+
1 row in set (0.43 sec)
select count(1) from part_table where b = 0 or b = 5;
+----------+
| count(1) |
+----------+
|   200000 |
+----------+
1 row in set (0.08 sec)

set tidb_enable_tiflash_pipeline_model = OFF;
select count(1) from no_part_table;
+----------+
| count(1) |
+----------+
| 30000000 |
+----------+
1 row in set (0.07 sec)
select count(1) from no_part_table where b = 0 or b = 5;
+----------+
| count(1) |
+----------+
|   200000 |
+----------+
1 row in set (0.01 sec)
select count(1) from part_table;
+----------+
| count(1) |
+----------+
| 30000000 |
+----------+
1 row in set (0.45 sec)
select count(1) from part_table where b = 0 or b = 5;
+----------+
| count(1) |
+----------+
|   200000 |
+----------+
1 row in set (0.09 sec)

[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/run-all-tests

/run-all-tests

/run-unit-test

/run-integration-test

/approve


AttributeError: 'module' object has no attribute 'FireFox'

Could you elaborate what you mean here?

You'll have to update the path of the this installed webdriver under: python driver = webdriver.Chrome() if its not the default location your OS needs. Similarly, for FireFox python driver = webdriver.FireFox()

I'm not very experienced with Python and I get this error. I already put geckodriver.exe in my PATH.
Traceback (most recent call last):
  File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 46, in <module>
    getWFSlot('https://www.amazon.com/gp/buy/shipoptionselect/handlers/display.html?hasWorkingJavascript=1')
  File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 11, in getWFSlot
    driver = webdriver.FireFox()
AttributeError: 'module' object has no attribute 'FireFox'

can you please pull the latest changes and check?

That fixed it! Thanks!

C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py:14: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.
The code that caused this warning is on line 14 of the file C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.
soup = bs4.BeautifulSoup(html)
Traceback (most recent call last):
File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 46, in
getWFSlot('https://www.amazon.com/gp/buy/shipoptionselect/handlers/display.html?hasWorkingJavascript=1')
File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 19, in getWFSlot
driver.refresh()
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 831, in refresh
self.execute(Command.REFRESH)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: Browsing context has been discarded

Spoke too soon. The firefox window opened fine and I'm still waiting to see if it notifies correctly. But in the terminal I got:

The code that caused this warning is on line 14 of the file C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.

  soup = bs4.BeautifulSoup(html)
Traceback (most recent call last):
  File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 46, in <module>
    getWFSlot('https://www.amazon.com/gp/buy/shipoptionselect/handlers/display.html?hasWorkingJavascript=1')
  File "C:/Users/ignam/Desktop/Whole-Foods-Delivery-Slot-master/whole_foods_delivery_slot_firefox.py", line 19, in getWFSlot
    driver.refresh()
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 831, in refresh
    self.execute(Command.REFRESH)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: Browsing context has been discarded

It's working correctly on my Firefox. Can you try running it once again?

Can you also post your Firefox version?


rename HeaderFetcher to HeaderGetter

Consider renaming HeaderFetcher alias to the HeaderGetter

@vgonkivs  can u assign this issue to me

done ✅


Graph drawing tools

We have a number of common visualization patterns that we'd like to do. I've been using NetworkX for this, but this seems like overkill as there is a big translation between their ids and our ids, which makes the process slightly tedious and error-prone.

standard graph drawing given xy or xyz coordinates for each vertex.
a standard graph drawing (xy or xyz coords) for each vertex and a subset set of nodes highlighted.
a standard graph drawing (xy or xyz coords) for each vertex and a vector of data highlighted (e.g. a float value for each node).

G = GraphLocal()
Here xy, xyz are arrays with a row for each vertex with 1 or 2 coordinates.
G.draw(xy)
G.draw(xyz)
G.draw(xy, nodemarkersize=0)
G.draw(xy, set=S)
G.draw(xy, set=S)
G.draw(xy, values=f)
G.draw(xyz, groups=g) # this is a partition.

Parameters
G.draw(coords, ...)

coords: a n-by-2 or n-by-3 array with coordinates for each node of the graph.

Optional parameters:

alpha: [0, 1] the overall alpha scaling of the plot
nodealpha: [0, 1]
edgealpha:
setalpha:

nodecolor:
edgecolor:
setcolor:

nodesize:
linewidth:

ax=None (default) will create a new figure, or this will plot in ax if not None.

Return a dictionary with:
fig, ax, nodes, edges, setnodes, setedges, groupnodes, groupedges
these are the handles to the actual plot elements, so that you could change
values after the fact.
"""

There is some additional stuff in the above, but it has the things you need :)

And in 3d
# From https://www.idtools.com.au/3d-network-graphs-python-mplot3d-toolkit/
from mpl_toolkits.mplot3d import Axes3D
def draw3d(G, pos, **kwargs):
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    xs = [p[0] for v,p in pos.items()]
    ys = [p[1] for v,p in pos.items()]
    zs = [p[2] for v,p in pos.items()]
    ax.scatter(xs, ys, zs, alpha=0.5)

    for i,j in enumerate(G.edges()):
        x = np.array((pos[j[0]][0], pos[j[1]][0]))
        y = np.array((pos[j[0]][1], pos[j[1]][1]))
        z = np.array((pos[j[0]][2], pos[j[1]][2]))

        # Plot the connecting lines
        ax.plot(x, y, z, c='black', alpha=0.5, linewidth=0.5)

    #ax.view_init(30, 0)
    ax.set_axis_off()
    return fig

def fiedler_view3(N):
    F = lgc.algorithms.eig2_nL(lgc.GraphLocal().from_networkx(N),dim=3)[0]
    return draw3d(N,matrix2dict(F,N)), F

# This is still not done...
def ncpsetview3(N, pos, ax=None,ncp=None,nbins=20,rholist=[1e-2,1e-3,1e-4]):

    assert(nbins == 20) # todo make this flexible

    fig = plt.figure(figsize=(8,8))
    axs = [ fig.add_subplot(4,5,i+1, projection='3d') for i in range(4*5)]

    # We need to be a bit hacky here because feature_by_group_min_line
    # assumes you are plotting. So if the ax=None, then we don't want
    # to plot the line at all, instead, what we do is just plot
    # to the first set of axes that will get the graph eventually.
    # then we clear

    if ax is None:
        lineax = axs[0]
    else:
        lineax = ax
    if ncp is None:
        ncp = lgc.NCPData(lgc.GraphLocal().from_networkx(N)).approxPageRank(rholist=rholist)

    setdata = lgc.NCPPlots(ncp).feature_by_group_min_line(
            "output_cond","output_sizeeff", ax=lineax, label="", nbins=nbins)
    if ax is None:
        lineax.clear()
    for ax in axs:
        ax.axis('off')

    # convert coordinates
    xs = [pos[v][0] for v in N.nodes()]
    ys = [pos[v][1] for v in N.nodes()]
    zs = [pos[v][2] for v in N.nodes()]

    for i,d in enumerate(setdata):

        S,cond = ncp.output_set(int(d[2])) # get the output set

        # for this we are going to use indices from 0 to N
        R = set(range(len(pos)))
        R -= set(S)
        # make sure we always look at the small size
        if len(R) < len(S):
            R, S = S, R # swap!

        axs[i].scatter([xs[v] for v in R], [ys[v] for v in R], [zs[v] for v in R], alpha=0.1, c='k')
        axs[i].scatter([xs[v] for v in S], [ys[v] for v in S], [zs[v] for v in S], alpha=0.5, c='r')

        #nx.draw_networkx_nodes(N, pos, ax=axs[i], alpha=0.5, node_size=2, node_color='k', nodelist=list(R))
        #nx.draw_networkx_nodes(N, pos, ax=axs[i], node_size=14, nodelist=list(SN), node_color='r')
        #nx.draw_networkx_edges(N, pos, ax=axs[i], alpha=0.5, width=0.5)
        axs[i].set_title('|S|=' + str(len(S)) + '\ncond=%.4f'%(d[1]),fontsize=10)
        axs[i].axis('tight')
    return fig


make: exec(./build/capnp-fbsd/c++/src/capnp/capnp) failed (No such file or directory)

Hello.
I have added : linux_enable="yes" to /etc/rc.conf,but I get the same error when I try to compile the foreign-cdm port (it works if I do the installation of the package) :
[mario@marietto /usr/ports/www/foreign-cdm]==> make clean
[mario@marietto /usr/ports/www/foreign-cdm]==> make MAKE_JOBS_UNSAFE=yes
===>  Building for foreign-cdm-20231217_3
./build/capnp-fbsd/c++/src/capnp/capnp compile -obuild/capnp-fbsd/c++/src/capnp/capnpc-c++ src/cdm.capnp
make: exec(./build/capnp-fbsd/c++/src/capnp/capnp) failed (No such file or directory)
*** Error code 1
Stop.
make: stopped in /usr/ports/www/foreign-cdm/work/foreign-cdm-3fe4d7130bb1e0581b5310635515a120f2794b88
*** Error code 1
NB : I have updated several times the ports tree.
Stop.
make: stopped in /usr/ports/www/foreign-cdm

The output is consistent with linux64.ko not being loaded. Now, I hope never see any notifications from you specifically.


Change auth url call to require an endpoint id

v5's consent requirements broke the current auth flow. We now need to ask for a user to consent to having the thick client access the data in an endpoint. The only way to do this in a single auth call is to ask the user to provide the endpoint ID in the initial call.
Change the current call so it does that, add error handling if it isn't supplied, and request the correct scopes for the endpoint in the auth call.

this is done, but it breaks personal connect endpoints.


Fix/status forwarding

closes #3

Coverage remained the same at 100.0% when pulling<PHONE_NUMBER>1f371c50b35f5fb51c836ccb057349 on fix/statusForwarding into 485398bc99b6d61da7218f538489fe5ca96d13ac on master.

Coverage remained the same at 100.0% when pulling 837902d1596e915360d2efd242dfaf5194e96f4f on fix/statusForwarding into 485398bc99b6d61da7218f538489fe5ca96d13ac on master.


Question: How to append URLs such that indexes get created

This is a question.
I have a bunch of new URLs, needing to be indexed in a sitemap, that are added on a consistent basis. After 50,000 urls, a sitemap index is required. Is there a way I can add an URL whenever I get a new URL and create the resulting sitemap along with sitemap indexes. I could potentially be adding millions of URLs, and so I need an online means of adding URLs to create a huge sitemap?

is there a convenient function that already does this for you? no. You can, however, probably create the functionality by putting a counter stream before the sitemap transform that changes destination sitemap filestream and appends to a sitemap index with the url of the new sitemap. It's somewhat complex which is why I haven't touched it yet.

Thanks for replying. Would you mind if I submitted a PR for this functionality (I am in desperate need of it). Perhaps we could spec it out together?

Go for it! I'll try to chuck some of my thoughts in here this weekend. I'd suggest you check out createSitemapAndIndex source even though it doesn't do what you need just in case there is some special cases I can't think of off the top of my head.
As far as the stream needing to be open at all times, I'm not really sure as I'm somewhat new to streams I'm not sure what the pros/cons would be.
Feel free to create a breaking change if you need to but try to keep it somewhat easy to migrate.

Ok so here are my thoughts
Goals

Be able to take an arbitrarily large number of urls and spit out corresponding sitemap + index
Be able to add to the sitemap incrementally, appending data to the existing list
Algorithm should perform well with upfront data as well as in small increments

An approach to goal 1
Track number of urls received for current sitemap. When number exceeds threshold (50000):

Create a new stream/file
Append location of stream/file to a sitemap index

Considerations
A sitemap index can contain 50k sitemaps which can each contain 50k locations.
This puts the upper limit on one index file to 2.5 billion urls. As such it may not be
necessary to consider multiple indexes, at least initially.
Goal 2 considerations
Currently the closing tags for a sitemap are not written until flush is called.
Whatever solution is considered here would need to write out that close tag when
the file is initially created then be able to open and append to it. Parsing and prepending has been handled in the CLI so it's not completely new territory. The sax lib used there may be helpful in finding the location to append to.
This holds true for the index file as well, though is less important as it is
expected the file will be appended to less frequently.
API interface
Needs to accept either a destination folder or a function that would return/generate
a sitemap stream + url for the sitemap index.
The functionality need not even handle the index directly itself. It may just
need to signal via passed in function that it is time to add another sitemap.
It'd be nice if the split threshold was configurable.
Can be a function or a stream that is new'd with the above parameters.

Thanks for these goals.
In order to be able to incrementally add urls, a state needs to be stored somewhere to record the number of urls added so far (unless you know of a way to obtain the number of urls in the current index file without needing to store state). If you agree that we need to store state, I propose storing it in a file on disk. We run into a problem with synchronizing multiple processes trying to add urls at the same time, however we can use a lock file (although I need to think about this in more detail).
Your thoughts are very welcome.

It strikes me that in the process of reopening a file and finding the last url so that you can write after it, you would have passed all the urls for that file and can tally the total for that file on the fly rather than having to store it externally. You also only need to know the most recent sitemap file as presumably all before it will have been filled to their peak.

If I understand you correctly, one will iterate through the entire file to get the number of URLs added when adding an additional URL? If so, that will be extremely slow. The way I would think about it, when adding a new URL, one get's a file pointer, goes to the end of the file (which is quick), then walks back a certain fixed amount (because of the closing braces etc) and only then writes the URL. In that sense, it will not be able to count the number URLs.
Another note: If this going to be run on a distributed system, then some type of queueing technology will need to happen. That would be outside of the scope of this project, but perhaps we can mention this in the docs.

Ah, I had not thought of walking back from the end, nice.

I am not the familiar with the sitemap format in general. I am wondering if you know if metadata representing the total number of sites in an index can be placed in the file? That would mean we would not need to store state separately? Also, I am going to design this online algorithm assuming that if someone wants to run it in a distributed system, then they will be responsible for infrastructure to cope with the side-effects (e.g. a queue)

@barrysteyn It doesn't look like it can be placed in the index file https://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd has no field for it.

Yes, but I was thinking of an extra field to denote the number of sites? The rationale is that it would be ignored, however I think XML files have a strict schema. So then I was thinking that perhaps it could be a property in some tag?

Here are some options:

Create your own xsd similar to how google extended it with theirs https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd
https://github.com/ekalinin/sitemap.js/blob/master/lib/sitemap-stream.ts#L12
https://github.com/ekalinin/sitemap.js/blob/master/schema/all.xsd#L5

Take the slower route and just parse in, print out the whole file in batches counting the urls along the way. I'd almost opt for this option as it is safer. There will be less risk of the count not matching. You realistically only take ~1s and 70mb of ram to do this worst case for a full sitemap. You could even use sax to speed this up and only count, then print at the end using your previous technique.

Yes, that may be the simpler way to go. In that respect, perhaps it makes it worth while to batch URLs, so instead of just adding one URL at a time, you can add an array of urls instead.

fwiw, there is a perf testing tool here if you want to modify it to your needs. It has around 20k of test data, but I'm sure you could swap that in with your own.
npm run test:perf -- 3 3 stream memory
npm run test:perf -- 3 3 stream <-- cpu

Hi, so just an update: I should have this completed by Sat 16 Nov. I have decided in terms of simplicity to not keep external state and take your suggestion by reading the entire file. With that in mind, my interface will allow us to batch these URLs (i.e. the input can take an array of URLs). For each URL in the array, it will do the following:

If the URL is found in the current sitemap, then update the lastmod field to the current timestamp.
If the URL is not found, then append it to a sitemapindex as we have discussed.

Now sitemaps (and indexes) can have 50,000 URLs, however they also cannot be larger than 50MB. Should we be checking for size as well as number of Urls?

Hi, Yes both should be checked - sorry I've been meaning to mention that but keep getting distracted.
RE 1. as the url could have been in any of the previous sitemaps, is it even worthwhile to check?
RE accepting an array: it may not be necessary to explicitly take an array in, if you just suggest to users that batching their pushes on to the stream will result in better performance.
I appreciate the date for completion but if you don't make that, thats ok. I appreciate you contributing. And if you need to focus on adapting for your needs first and adapting to wider lib needs I am also happy to pick up whatever you leave off with your fork.

This indeed doesn't seems an easy task.
I have over 15M urls, and had similar issue. Only .xml files size was over 5GB (more then actual DB size), not to mention it's generation was over half an hour. After I get couple unexpected breaks (like in this case https://github.com/ekalinin/sitemap.js/issues/264 ) I ended up with dynamic sitemap generation on the fly! Thanks to new implementation it's pretty fast!

@bdrtsky Are you saying that you already have an implementation of what we are discussing here?

@barrysteyn not at all. I probably misread this thread, but I was simple referring to this feature https://github.com/ekalinin/sitemap.js#example-of-using-sitemapjs-with-express
It's already implemented. My point is when you have such use cases, like mine (15kk of urls) or, probably, yours, generating static XML files is probably not the best idea, since you: 1). polluting disk space with huge amounts of VERY rarely used data (we are talking about gygabites here) 2). wasting a lot of CPU time on generating this files 3). have little control of the process, if something breaks you will need to start all over again.

Update: Sorry for the delay. I will try finish this on my thanksgiving break.

No worries. Enjoy the Turkey! 🦃

Hi @derduher
So I have an update. First, this is the plan (please can I get your nod):

Check if sitemap index is present

If not present: Start creating sitemap-0, and then once finished, create the sitemap index and insert created sitemaps in it. In other words, do exactly what createSitemapAndIndex does
If present: Parse the sitemap index, extracting the last created index. Parse the last created index (which will determine how many entries we are able to add). Then continue like (1) above, but append to the already created index

The above would use functionality that is mostly present already. Except for parsing the sitemap index. This is something I have already started creating.
How does that sound?

Hi @barrysteyn sorry for the delay, crazy week. That sounds great! Go ahead.
Just for your information I will likely be releasing #253 with your changes. If when you open your PR you could open it against the next branch that would help facilitate the merge process.
This PR does contain some changes that may impact what you've done but we'll work that out later. It's all flexible for now.

Perfect. I want to first have the parsing of site map index going. That
should not take too long. Then you should release rather than wait for
everything else
On Sat, Dec 14, 2019 at 12:55 PM Patrick Weygand<EMAIL_ADDRESS>wrote:

Hi @barrysteyn https://github.com/barrysteyn sorry for the delay, crazy
week. That sounds great! Go ahead.
Just for your information I will likely be releasing #253
https://github.com/ekalinin/sitemap.js/pull/253 with your changes. If
when you open your PR you could open it against the next branch that
would help facilitate the merge process.
This PR does contain some changes that may impact what you've done but
we'll work that out later. It's all flexible for now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ekalinin/sitemap.js/issues/258?email_source=notifications&email_token=AALXKRBRKWECJFC6S2J3O3LQYVB4BA5CNFSM4JFFBXDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG4LFCY#issuecomment-565752459,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALXKRBDB2BWA6RQY4HQJ4DQYVB4BANCNFSM4JFFBXDA
.

--
Barry Steyn
Blog http://doctrina.org LinkedIn http://ca.linkedin.com/in/barrysteyn
GitHub https://github.com/barrysteyn

@barrysteyn I'd like to cut a release in the next week or two. Do you still think you are able to do this?

Hi, I am working on it now. I will have the parsing of the sitemap-indexes done, then do what we spec'd for next release.

Ok. Thanks!

I will try have things for you tomorrow evening...


Account activation

I created a new account. Received activation email. On activation link click, I got this error.

I was able to login after this issue (Without account activation)

Cannot reproduce this


How can I put dot at bottom of particular dayView?

I want to place dot at bottom of particular dayView.
How can I achieve it?

try this calendar. saves you the headache


Added card for Kristoffer Strube

#WeAreDonet Creator Submission Guidelines

[x] Check all points before submitting the PR.

[x] By submitting this pull request to add my creator card, I verify that I adhere to the #WeAreDotnet creator card submission guidelines.

[x] Make sure to follow our Code of Conduct

[x] We do not accept submissions with the sole intention of promoting a product or company.

[x]  We add you as a creator, not your company.

[x]  The moderator team decides whether we accept or reject a submission.

When Do We Accept Someone's Creator Card Submission?

[x] You must have published at least three content pieces (long form content) since 2022 on any of your channels.

.NET itself

.NET libraries and projects

.NET languages C#, F#, Visual Basic

Tools needed during development (for .NET)

CI/CD

Only in combination with .NET: SPA Frontend technologies like Angular, Vue.js, React etc.

Cloud services related to .NET applications (AWS, Azure...)

[x] There must be three content pieces in English.

[x] There needs to be more than tweets.

[x] Longer-form article on LinkedIn is good, but a self-hosted blog or one on a well-known platform like Hashnode, medium etc., is better.

[x] Alternatively, you contributed with another form on a platform like YouTube, Twitch, Udemy or Pluralsight. If you have some recorded talks of conferences or anywhere else, that counts too! So in the form of a recorded video or a book.

RSS or Atom Feed

[x] The content with feed.type = dotnet must be .NET related:

.NET itself

.NET libraries and projects

.NET languages C#, F#, Visual Basic

Tools needed during development (for .NET)

CI/CD

Only in combination with .NET: SPA Frontend technologies like Angular, Vue.js, React etc.

Cloud services related to .NET applications (AWS, Azure...)

[x] the content under feed.type = personal may contain off-topic posts.

Project management

leadership

Other

[x] Submit an Atom or RSS URL inside your creator card that belongs to your blog

[x] If you do not submit an RSS or Atom URL. We cannot consider your feed for the aggregation feature.

Content Guideline

[x] If you have a self-hosted blog, please ensure you have a valid HTTPS certificate.

[x] We host NO malicious or offensive content on the blog (including photos, swearing, etc.)

[x] You must add the full URL to your GitHub profile to your card, so we can assign it to the member account that used the same GitHub account for sign-up.

Hey @DeeJayTC I hadn't noticed that the dotnet and the personal had to be disjunctive. I have a feed that is for personal stuff which excludes all dotnet stuff which is the following if your want to use that instead: https://kristoffer-strube.dk/RSS.personal.xml
I think we should either.

A) Add that different feeds should not overlap in the PR template i.e. the personal and the dotnet feeds should not overlap.
B) Combine/detect duplicate entries in feeds by comparing a combination of feed links and post guid's or titles.

I'll update that to your personal feed later

JFYI I see my posts twice both in the primary feed and my profile feed aggregation so the exclusion of duplicates might not work right now.


Do not incorrectly impl Send for World

Fixes https://github.com/bevyengine/bevy/issues/3310
For actual-pipelining, it might be required to change RenderWorld to contain a Turtle instead, but this version currently works.
I suspect that would also cause mutability problems, and Turtle would need to defer most of the non-non_send methods.
As it happens, those checks would panic at runtime anyway, but we could remove the checks now that this change has happened.

Bumping to Critical, as clippy is now causing CI to fail because this Send impl is unsound.

bors try

Back down to High: #3667 is a much lower risk immediate fix.

Ping @bevyengine/ecs-team; unsoundness is not good.

@DJMcNab can you rebase?

I'm not convinced this is quite the correct changeset. The current impl Send for World is definitely wrong, but I don't think Turtle is unambiguously the correct API here.
Broadly I think we might need to have variants of World, each differently constructed for Send and not Send
I.e. a SendWorld has static requirements that all component types are Send, and crucially a SendWorld cannot be created from an existing World (the main use for this is Assets, just like Turtle in this PR, but it's about constraining the API more correctly).
As it currently stands, this is equivalent to just not supporting the NonSend apis, so the temptation may be to implement World in terms of SendWorld (i.e. literally as a DerefMut); however this falls down once we relax the bounds on Component, which we're likely to do eventually.
I guess we can still call it 🐢.


Add files via upload

Add CBT Atizapan

@seiyamx Could you please clarify how do students receive the email addresses in the domain of aulamexiquense.mx? Is it an email address which the state provides to all students? Is there any official information at the website of the ministry of education, which explains how to receive the email address? Do the students keep the address after their graduation?

Hi @philipto :
Sorry about the delay in responding.
In reference to your questions I comment the following:
In effect, the state provides these addresses to students and teachers who belong to high schools
In the following document the decree is made where reference is made to the creation of the domain
https://www.ipomex.org.mx/recursos/ipo/files_ipo/2016/9/9/6ec25111ece15a5b32c69fba24f56a58.PDF
The email accounts that they create at the time that students and teachers are assigned to a high school once they have finished their relationship with it, the account is blocked and then deleted.
The program site is: http://aulamexiquense.mx/
And to enter use the following url: http://correo.aulamexiquense.mx
Greetings and thanks in advance

@seiyamx Thank you for the clarification. Pull request merged.


build: added a settlements schema

Resolves #808

Check comment on issue @GaryThisSidee

My mistake for not clarifying but the requirements inherit from the parent issue

The bot is expected to be stable after these changes are implemented which implies that all of the functions that interact with the database should also be refactored to accomodate this new architecture.

@seprintour

@whilefoo this is not my PR, it's incomplete anyway and it's supposed to be closed as the issue has been released to the devpool

oh sorry!


ERR_PNPM_UNSUPPORTED_ENGINE when specified version is installed

When I specify a pnpm version in package.json that is older than the latest version of pnpm I get the ERR_PNPM_UNSUPPORTED_ENGINE error.
deploy@cherry:/var/www/redacted/beta/current$ pnpm --version
8.6.2

relevant package.json fields:
  "engines": {
    "node": "16 || 18",
    "pnpm": "8.6.2"
  },
  "packageManager"<EMAIL_ADDRESS>
deploy@cherry:/var/www/redacted/beta/current$ npx ci
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your pnpm version is incompatible with "/var/www/redacted/beta/releases/20230712150540".

Expected version: 8.6.2
Got: 8.6.7

This is happening because the package's manifest has an engines.pnpm field specified.
To fix this issue, install the required pnpm version globally.

To install the latest version of pnpm, run "pnpm i -g pnpm".
To check your pnpm version, run "pnpm -v".

This tool doesn't read the packageManager  property, but PR welcome to add support.

I was more curious why pnpm is trying to use 8.6.7 when I only have 8.6.2 installed.

ahhh, I see... getPnpmVersion returns "latest". Would you be opposed to removing the pnpm version specification for all together so it behaves like your yarn code path?  In other words, let pnpm decide what version to use.

arguably it's less surprising to use an already installed version than to arbitrarily choose "latest", or 6, or 5 based on the version of node installed (and to let pnpm error out if there is a version conflict). However, this is your project and if you think it's appropriate to always force "latest" for new node versions I may have time to attempt a PR.

I think you're looking at it the wrong way.
The latest version isn't being "forced", it's simply the default version that gets installed when you don't specify a version. For example, when you do npm install express, it gets the latest version of express by default.
The difference here is that npx ci currently doesn't support a way to pass in a specific version. Which is why I said I welcome a PR to read the packageManager property.


How to prepare the 3d model and target coloring area for printing?

I've been trying out the demos from this project and have a few questions about preparing a 3D model for the AR coloring functionality. Specifically, I'm trying to understand how to set up a 3D model with texture mapping and how to prepare its target coloring area for printing on paper.
Background:
I am currently using a bus model for my use case. My initial understanding was that I might need to create a version of the bus model with two textures mapped on each side. But based on my conversation with @Akbartus, it seems I only need to map the texture on one side of the bus, as the other side is just a mirror.
Questions:

Should the texture on the bus model be like the attached bus1.png?
Should the paired coloring book image be similar to the attached bus-outline.png?
Is an additional marker necessary for tracking?

@Akbartus's Recommendations from Slack conversation:

In Blender, map the texture only on one side of the bus, make it black and white or empty, and then add it as texture to the 3D model.
The image target used for coloring should have enough features. Some applications use colorful scenes to enhance this.

bus1.png

bus-outline.png

Here is another concept using a QR code, would this work?

@akbartus feedback:

If using a QR code as the target image, ensure its resolution is a multiple of 8 (e.g., 1024x1024). Place the image in the center and make it smaller. Then in Blender, map the texture so that the bus fits the 3D model, disregarding other areas. This method should work efficiently, as the QR code is feature-rich.

Also if you're interested to check out the model we are looking to "WebAR color" there are 2 options:

This is the one we use in the app, although it has an interior with windows so would require mesh modification to make it easier to apply 1 big UV map: https://github.com/3DStreet/3dstreet-assets-dist/blob/main/sets/flyer-bus/gltf-exports/draco/new-flyer-bus.glb
I would suggest looking at this one -- it is the previous one using texture instead of mesh to show vehicle features. It might be better for this WebAR coloring UV mapping: https://github.com/3DStreet/3dstreet-assets-source/blob/main/models/flyer-bus/resources/XD40.glb

@kfarr thank you for your kind summary and questions. I prepared an example texture mapping for this particular glb model. It can be found under folder "texture-mapping-example". The folder contains the following:

original glb file,
b/w bus texture, which is attached to 3D model in blender. The same is then used for image target
b/w bus image target with some updates to increase features for ease of recognition
sample photoshop file to edit the image target
sample blender file which show 3D model and its UV + texture
sample project, zipped file, which shows its use in web AR coloring.

Now concerning your questions: you can take now image target, remove the inner and leave only the outline. But make sure to add features because simple outline is not trackable in all web AR systems. Maybe add some qr code or other images. Make sure what you add is not inside of the bus outline, because that area is for coloring.
You can also make the way you did with qr marker. But make sure that QR marker does not intersect the bus outline.
Basically, as I mentioned in the repo, everything is dependent on how you make texture mapping.

Excellent! I was able to get this working on mobile here is a quick video:
https://github.com/akbartus/WebAR-Coloring/assets/470477/432a8a84-8230-492a-99dc-a6bba51b92a6
I migrated the sample project directory to a glitch repo:
https://glitch.com/edit/#!/sedate-marbled-glitter?path=index.html%3A7%3A0
I had to name the .mind file as -mind.glb to allow uploading to glitch's asset system

Glad that it worked. Feel free to make 3d model bigger or smaller. Also you can add whatever you want to image target

Just in case, if you want to upload files with other formats you can follow instructions here for Glitch:
https://support.glitch.com/t/uploading-a-whole-folder/3128/3. I usually use this method of uploading.

@kfarr if everything is ok, I am closing the issue.

Yes this is great, thank you for your help!


[Event Request] Table 36 "Sales Header" - OnValidateBillToCustomerNoOnBeforeCheckBlockedCustOnDocs

We are migrating our code from NAV 2018 to BC16.4. In the Table 36 "Sales Header", in the field 4 "Bill-to Customer No.", in the trigger OnValidate, we need to add a condition to the use of Cust.CheckBlockedCustOnDocs() procedure. To do so, we need a IsHandled flag and an event publisher, like this :

With this integration event :

Do you think it could be possible ?
Thank you for your work.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


add compute support

compute is extremely useful for things like tiled forward shading, animation, etc
(es 3.1+)

added extension check in 8021ae0a


Don't execute CustomSqlChanges to generate logs

Impact

[x] Bug fix (non-breaking change which fixes expected existing functionality)
[ ] Enhancement/New feature (adds functionality without impacting existing logic)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description
CustomSQLChanges were being executed twice: one to generate logs and the other one was the actual run.
This PR prevents log generation execution.
This fixes #5523

Tested locally and with the package build on this pr against my example provided in the issue
<dependency>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-core</artifactId>
  <version>5523-customsqlchange-execute-method-runs-twice-SNAPSHOT</version>
</dependency>


[SUGGESTION]: Data-Driven Aging and Waxing Staves

Hi! I love your mod.
Would you consider making the Aging and Waxing Staff conversions data-driven so that compatibility can be added with other mods? It would be awesome to use this feature alongside mods like Immersive Weathering and Pigsteel.

Hi, that is a planned feature! I'd love to make it have configurable randomized outcomes 👀
I'm not sure why it doesn't work with other "aging" mods, perhaps they have implemented the aging differently than vanilla? I'll try to figure something out, but can't tell you when that's going to happen as I'm quite busy right now 😁

Awesome, thank you!


OnDrop works, but OnSelect, Onchange, OnAction not fired

Hi Scott,
Not sure if probably an issue or I'm doing something wrong, but in the application I wrote I need to capture the currently selected Item in the power-drag-drop list. OnDrop fired successfully, but none of OnSelect, Onchange, OnAction have been fired. I have watched the videos with the Task Scheduler but I missed the scenario where the currently selected item can be catched.

Thanks in advance!
Regards:
Katzenbach

Hi Scott,
Case can be closed, the HTML action was wrong.


Inter-Process Communication

This PR implements basic inter-process communication (IPC), which is an API-only feature - not available through CLI.
Command has the following new fields/methods:

send: to send messages
messages.incoming: to listen for received messages
messages.outgoing: to listen for sent messages

The caller must set the ipc property when calling concurrently(). It sets the number of the file descriptor on which to set up the IPC channel.
Example usage:
const { commands } = concurrently([{ command: 'echo foo', ipc: 3 }]);
commands[0].send({ hello: 'world' })
commands[0].messages.incoming.subscribe(({ message }) => {
	console.log('command 0 sent this:', message);
});

With this PR I also realise that the README is no longer a good option for documentation.
We need to expand it into a website...

coverage: 99.178% (+0.03%) from 99.144%
when pulling 14b318a3a9e6ceda66bd5abb9b3877e6f94ba1b7 on ipc
into 23f97ac412f390a9913f96814da1f4070704d955 on main.

🚢 This is now available in v9.0.0!
https://github.com/open-cli-tools/concurrently/releases/tag/v9.0.0

This is great! Thx @gustavohenke.
I created a simple "waitForStartMessage.js" script, so that I could delay a process until our Orval code generation process is setup.
    {
      command: `node ${__dirname}/waitForStartMessage.js && yarn start`,
      name: "ui",
      ipc: 3,
    },


fix tiny typo in lib/io/file.dart

[x] I’ve reviewed the contributor guide and applied the relevant portions to this PR.

Contribution guidelines:

See our contributor guide for general expectations for PRs.
Larger or significant changes should be discussed in an issue before creating a PR.
Contributions to our repos should follow the Dart style guide and use dart format.

Note that this repository uses Gerrit for code reviews. Your pull request will be automatically converted into a Gerrit CL and a link to the CL written into this PR. The review will happen on Gerrit but you can also push additional commits to this PR to update the code review.

Thanks very much for the fix!


Group window missing after sending it to another workspace

Steps to reproduce:

Create a group with at least two windows.
Execute the movetoworkspace dispatcher.
Notice the window disappearance.

more intuitive would be to probably move the entire group, but for now fixed in cd6640e89059e049e69784b91b937afcd5d5e05d


Add additional video stream

Hello! On an Android tablet, I have a live video stream (currently H.264, but this can be anything an Android MediaCodec can generate) that I would like to transmit over WebRTC and display in a peer's desktop browser. Currently, the best idea I have is to repeatedly send chunks as base64-encoded channel messages, then hope I can render them with Broadway or some similar software; I'm certain this is not at all the best way to go about this. Would it be possible to instead create an extra WebRTC video channel, using SimpleWebRTC, and stream data through that to an HTML5 video element? How exactly would I go about doing that? Thank you!

Would it perhaps be possible to use the screensharing stream for this somehow?


KeyError: 'st.session_state has no key "selected_model". Did you forget to initialize it?

I keep getting the same error, no matter the machine i'm using. Do you have any advice?
Full error below:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
result = func()
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 590, in code_to_exec
exec(code, module.dict)
File "/home/linux/local-packet-whisperer/bin/lpw_main.py", line 8, in
pg.run()
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/navigation/page.py", line 291, in run
exec(code, module.dict)
File "/home/linux/local-packet-whisperer/bin/lpw_home.py", line 75, in
st.metric("Selected Model ✅", st.session_state['selected_model'])
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/runtime/state/session_state_proxy.py", line 100, in getitem
return get_session_state()[key]
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/runtime/state/safe_session_state.py", line 94, in getitem
return self._state[key]
File "/home/linux/.venv/lib/python3.10/site-packages/streamlit/runtime/state/session_state.py", line 412, in getitem
raise KeyError(_missing_key_error_message(key))
KeyError: 'st.session_state has no key "selected_model". Did you forget to initialize it? More info: https://docs.streamlit.io/develop/concepts/architecture/session-state#initialization'

Hi,
Thanks for reporting. Please upgrade lpw to 0.2.4
pip install -U lpw


User should be able to download a remote model

duplicate of https://github.com/projectatomic/ai-studio/issues/173 ?


feat(ENG-669): Upgrade Barcode-Scanning plugin

ENG-669: Upgrade Android target SDK version to latest and sign with v3 signature scheme

I am closing this PR because the Pull Request Guidelines were not followed.


New fan speed settings aren't working properly

What issue do you have? Please be as thorough and explicit as possible.
The new fan speed configuration is not working properly for me. It shows as a 0-100% scale and I have to select by moving the slider a pixel up or down. My fan is broken in all automations, which wouldn't be a huge deal to fix except that the fan in all automations is still shown with the original 0%-33%-66%-99% setup, so I can only set it to off (0%) or full speed, since obviously 33% is above 3%. This persists even when I remove and re-add the accessory to the automations.
Attached is a photo of what my UI looks like.
Details of your setup.

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

Which version of Homebridge/HOOBS do you have?
v1.7.0

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

Which version of this plugin (homebridge-ewelink) do you have? Has the issue started since upgrading from a previous version?
v12.2.0, the issue began with this version.

Which eWeLink devices do you have that are causing issues? Please include product models if applicable.
Sonoff iFan02

Please paste any relevant logs below.
I haven't seen anything relevant in the logs, but I'll update this if I notice anything or if logs are requested.

It seems in my case, I just needed to wait for my Homekit caches on each device (or the hub?) to clear. Or maybe Homebridge cleared its own cache automatically. In any case, the new behavior is now working for me as well.
Thanks for the tip!


Setting browserNameSpace throws an error

I get Error: Usage: psc-bundle FILE [-o|--output ARG] [-m|--module ARG] [--main ARG] [-n|--namespace ARG] when setting browserNameSpace to any string.

Good catch. Looks like browserNamespace has to be migrated to namespace.

Should be corrected in version 0.7.0. If you have a chance to test it out, that would be great.


Windows cleanup

Various cleanups/improvements in the Windows implementation. I would recommend review this on a commit by commit based, the commits themselves are fairly small, but adding them together it becomes a large change.

This is sort of a follow up of #1086, but this code actually works (according to the CI as well). :)

I'm not quite sure. But accept will fail if you successfully accepted one
connection and continue to listen for accept event
On Thu, Oct 31, 2019, 02:24 Thomas de Zeeuw<EMAIL_ADDRESS>wrote:

@Thomasdezeeuw commented on this pull request.
In src/sys/windows/mod.rs
https://github.com/tokio-rs/mio/pull/1112#discussion_r340786387:

@@ -22,6 +22,20 @@ macro_rules! syscall {
}};
}

+/// Helper macro to execute an I/O operation and register interests if the
+/// operation would block.
+macro_rules! try_io {

($self: ident, $method: ident $(, $args: expr)*)  => {{

   let result = (&$self.inner).$method($($args),*);

   if let Err(ref e) = result {

       if e.kind() == io::ErrorKind::WouldBlock {

           $self.io_blocked_reregister()?;

       }

   }

   result

}};
+}

It seems that 1140dec
https://github.com/tokio-rs/mio/commit/1140decf067471a831cde25f446ab66c8f75bbc3
broke the CI, the peek test in the tcpmodule fails:
https://dev.azure.com/tokio-rs/Tokio/_build/results?buildId=3027&view=logs&jobId=e1a083b5-91b8-5cb1-6c0a-e91e3e10d3b3
.
Are you sure we need to reregister after each successful operation?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/tokio-rs/mio/pull/1112?email_source=notifications&email_token=AE43NAS6NJJULE5X5QFZVYDQRHGOLA5CNFSM4JGGSAAKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCJYXU4A#discussion_r340786387,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43NAQJFVQK5TX7AT4HIALQRHGOLANCNFSM4JGGSAAA
.

Looks great 👍, but I did have a question about removing active_poll_count as, my understanding, is that it is required for correctness. I pinged @piscisaureus as he has the best understanding of the AFD stuff.

The active_poll_count counter is used in wepoll to ensure that when multiple threads are blocked on the same completion port, and then an event happens, they all wake up (instead of just one thread receiving the event). This is to match epoll "thundering herd" behavior. However it's not super efficient so I think that mio might be better off without that logic.
But TBH I don't know enough about mio internals to know for sure.

The active_poll_count counter is used in wepoll to ensure that when multiple threads are blocked on the same completion port, and then an event happens, they all wake up (instead of just one thread receiving the event). This is to match epoll "thundering herd" behavior. However it's not super efficient so I think that mio might be better off without that logic.

Well we don't set EPOLLEXCLUSIVE on epoll(2) either so we have the same problem there.

Since the review comments slowed down I'm going to rebase this on master.

Well we don't set EPOLLEXCLUSIVE on epoll(2) either so we have the same problem there.

EPOLLEXCLUSIVE is not quite the same thing. It controls whether multiple threads wake up when they're waiting on different epoll FDs. The counter is used to wake up all threads that wait on the same port.

EPOLLEXCLUSIVE is not quite the same thing. It controls whether multiple threads wake up when they're waiting on different epoll FDs. The counter is used to wake up all threads that wait on the same port.

You're right, but since Poll::poll takes &mut self the only way to poll concurrently is to duplicate the underlying file descriptor and then you're using two different epoll fds. Or using the fd directly in a call to epoll_wait(2), but I'm not sure we if we currently really support that.
In any case concurrently polling the same fd/port shouldn't be possible when only using the safe api of Mio. So I don't think this is a problem, or am I missing something else?

Poll::poll takes &mut self

That's great. You can't duplicate a IOCP on windows, so that at least tells us that there's no reason to keep the active_poll_count on Windows.

the only way to poll concurrently is to duplicate the underlying file descriptor and then you're using two different epoll fds.

I think that if you duplicate an epoll fd on linux, you're still polling the same epoll set and therefore the EPOLLEXCLUSIVE flag would still have no effect. But luckily this all doesn't matter, because this isn't about linux.

@piscisaureus I've added a note about the safe usage of Windows' Selector::select.

@dtacalau I can't seem to request your re-review via GitHub, but can you take another look at this?

@piscisaureus I've created #1128.


adding nosql

:no_entry: Snyk checks have failed. 4 issues have been found so far.

Icon
Severity
Issues

Critical
0

High
4

Medium
0

Low
0

:no_entry: code/snyk check is complete. 4 issues have been found. (View Details)


MTU configuration should not include L2 header size

Resolved in https://github.com/Igalia/snabbswitch/pull/132 (for nutmeg) and https://github.com/Igalia/snabbswitch/pull/126 (for olive).


cargo install hvm throwing error

cargo install hvm
Updating crates.io index
Installing hvm v2.0.19
Updating crates.io index
Compiling libc v0.2.155
Compiling utf8parse v0.2.2
Compiling anstyle v1.0.7
Compiling is_terminal_polyfill v1.70.0
Compiling anstyle-query v1.1.0
Compiling colorchoice v1.0.1
Compiling cc v1.0.99
Compiling strsim v0.11.1
Compiling clap_lex v0.7.1
Compiling highlight_error v0.1.1
Compiling anstyle-parse v0.2.4
Compiling TSPL v0.0.12
Compiling anstream v0.6.14
Compiling clap_builder v4.5.6
Compiling num_cpus v1.16.0
Compiling hvm v2.0.19
Compiling clap v4.5.6
The following warnings were emitted during compilation:
warning<EMAIL_ADDRESS>In file included from /usr/include/cuda_runtime.h:83,
warning<EMAIL_ADDRESS>                 from :
warning<EMAIL_ADDRESS>/usr/include/crt/host_config.h:132:2: error: #error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
warning<EMAIL_ADDRESS>  132 | #error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
warning<EMAIL_ADDRESS>      |  ^~~~~
error: failed to run custom build command for hvm v2.0.19
Caused by:
process didn't exit successfully: /tmp/cargo-installgdjlEk/release/build/hvm-f04826ba4c52da85/build-script-build (exit status: 1)
--- stdout
cargo:rerun-if-changed=src/hvm.c
cargo:rerun-if-changed=src/hvm.cu
TARGET = Some("x86_64-unknown-linux-gnu")
HOST = Some("x86_64-unknown-linux-gnu")
cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
CC_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
CC_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_CC
HOST_CC = None
cargo:rerun-if-env-changed=CC
CC = None
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("false")
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
CFLAGS_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
CFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=AR_x86_64-unknown-linux-gnu
AR_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=AR_x86_64_unknown_linux_gnu
AR_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_AR
HOST_AR = None
cargo:rerun-if-env-changed=AR
AR = None
cargo:rerun-if-env-changed=ARFLAGS_x86_64-unknown-linux-gnu
ARFLAGS_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=ARFLAGS_x86_64_unknown_linux_gnu
ARFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_ARFLAGS
HOST_ARFLAGS = None
cargo:rerun-if-env-changed=ARFLAGS
ARFLAGS = None
cargo:rustc-link-lib=static=hvm-c
cargo:rustc-link-search=native=/tmp/cargo-installgdjlEk/release/build/hvm-eb4a9f31c45f20ed/out
cargo:rustc-cfg=feature="c"
cargo:rustc-link-search=native=/usr/local/cuda/lib64
TARGET = Some("x86_64-unknown-linux-gnu")
OPT_LEVEL = Some("3")
HOST = Some("x86_64-unknown-linux-gnu")
cargo:rerun-if-env-changed=CXX_x86_64-unknown-linux-gnu
CXX_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=CXX_x86_64_unknown_linux_gnu
CXX_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_CXX
HOST_CXX = None
cargo:rerun-if-env-changed=CXX
CXX = None
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=NVCC_x86_64-unknown-linux-gnu
NVCC_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=NVCC_x86_64_unknown_linux_gnu
NVCC_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_NVCC
HOST_NVCC = None
cargo:rerun-if-env-changed=NVCC
NVCC = None
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("false")
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
cargo:rerun-if-env-changed=CXXFLAGS_x86_64-unknown-linux-gnu
CXXFLAGS_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=CXXFLAGS_x86_64_unknown_linux_gnu
CXXFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_CXXFLAGS
HOST_CXXFLAGS = None
cargo:rerun-if-env-changed=CXXFLAGS
CXXFLAGS = None
cargo:warning=In file included from /usr/include/cuda_runtime.h:83,
cargo:warning=                 from :
cargo:warning=/usr/include/crt/host_config.h:132:2: error: #error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
cargo:warning=  132 | #error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
cargo:warning=      |  ^~~~~
--- stderr
error occurred: Command "nvcc" "-ccbin=c++" "-Xcompiler" "-O3" "-Xcompiler" "-ffunction-sections" "-Xcompiler" "-fdata-sections" "-Xcompiler" "-fPIC" "-m64" "-Xcompiler" "-Wall" "-Xcompiler" "-Wextra" "-diag-suppress=177" "-diag-suppress=550" "-diag-suppress=20039" "-o" "/tmp/cargo-installgdjlEk/release/build/hvm-eb4a9f31c45f20ed/out/2e40c9e35e9506f4-hvm.o" "-c" "src/hvm.cu" with args nvcc did not execute successfully (status code exit status: 1).
warning: build failed, waiting for other jobs to finish...
error: failed to compile hvm v2.0.19, intermediate artifacts can be found at /tmp/cargo-installgdjlEk.
To reuse those artifacts with a future compilation, set the environment variable CARGO_TARGET_DIR to that path.
System Settings
Example:

OS: Linux (Ubuntu 24.04)
CPU: Ryzen & 4800H
GPU: GTX 1650
Cuda Version 12

Additional context
No response

#error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.

You need to install a version of gcc supported by CUDA. Then, you can set the right version during installation by doing CXX=g++-12 cargo install hvm.
Duplicate of https://github.com/HigherOrderCO/HVM/issues/291


Logging: remove redundant Hutch::Config.initialize

The last statement of the Config class is to run initialize. We don't need to do it twice.

I'd like to do some more testing with various Hutch CLI scenarios before we can be confident that it's no longer needed.

Still needs some testing on my end. I likely won't have the time to do it next week, sorry.

@michaelklishin I'm not in a rush to have this land.
I logged #261 as a follow-up issue for this when I found it. It's a hen-and-egg of Config defaults and settings. (Colloquially described: The logger wants a level before a level has been resolved to a real setting value.)


Output is reversed when using the trace file option

When using setarch x86_64 -R ltrace -o trace ./target; villoc.py trace out.html, the output is reversed. For exmple, the first malloc is at the bottom, and I have to read from bottom to top.

That's intended. Usually I'm more interested in what happens last so it
shows first. That way when working on something I don't have to
repeatedly scroll all the way down to see what's going on and I can just
have the page auto-refresh.
If you want to change this it should be as easy as adding an option to
argparse.ArgumentParser (say --chronological) storing reversed or
lambda x: x in a order attribute, and then use it on this line
https://github.com/wapiflapi/villoc/blob/2647761f24c4cc854b88a899b836fd8949620912/villoc.py#L530
instead of always using reversed
PRs welcom ! Thank you for the feedback :-)
On Wed, Jul 1, 2020 at 1:05 PM clubby789<EMAIL_ADDRESS>wrote:

When using setarch x86_64 -R ltrace -o trace ./target; villoc.py trace
out.html, the output is reversed. For exmple, the first malloc is at the
bottom, and I have to read from bottom to top.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/wapiflapi/villoc/issues/17, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMLOR2NR72VCTQSM5Q4GOLRZMJ7BANCNFSM4ONJQZRA
.

That's intended. Usually I'm more interested in what happens last so it shows first. That way when working on something I don't have to repeatedly scroll all the way down to see what's going on and I can just have the page auto-refresh.
If you want to change this it should be as easy as adding an option to argparse.ArgumentParser (say --chronological) storing reversed or lambda x: x in a order attribute, and then use it on this line https://github.com/wapiflapi/villoc/blob/2647761f24c4cc854b88a899b836fd8949620912/villoc.py#L530 instead of always using reversed
PRs welcome ! Thank you for the feedback :-)

Thanks for the contribution :-)


fix: update aws-amplify in yarn.lock

Description of changes

Issue #, if available

Description of how you validated changes
Checklist

[ ] PR description included
[ ] yarn test passes
[ ] Tests are [changed or added]
[ ] Relevant documentation is changed or added (and PR referenced)

Codecov Report

Merging #234 (fe80135) into main (df9bd74) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@           Coverage Diff           @@
##             main     #234   +/-   ##
=======================================
  Coverage   44.03%   44.03%
=======================================
  Files          16       16
  Lines        1274     1274
  Branches      201      201
=======================================
  Hits          561      561
  Misses        713      713

:mega: Codecov offers a browser extension for seamless coverage viewing on GitHub. Try it in Chrome or Firefox today!


Window resizing is messy

We should probably have a fixed minimum width for the various settings and perhaps have the icons themselves in a scrollable area.

Perhaps the app could end up looking more like Pages?

Done.