Checkbox doesn't respect Lumo size variables

Description
The checkbox (both box itself and the label) doesn't seem to respect Lumo size variables, but renders the same size regardless.
Expected outcome
E.g. when using the Lumo compact preset, one would expect the box size and font size to conform to the sizes set in the preset, like all other fields do.
Actual outcome
Compact preset, or e.g. --lumo-font-size-m, has no effect on the component, which is rendered with "1em" / "1rem" based sizes regardless.
Steps to reproduce

Create a UI with a vaadin-checkbox
Observe size of checkbox and font-size of label.
Apply the Lumo compact preset.
Observe no change in size or font size.

Ironically, vaadin-checkbox-group does respect the size variables.


Spectral PMN with maximum decibel values per frequency bin

Is your feature request related to a problem? Please describe.
At present, the spectral PMN index provides the averaged decibel value per frequency bin.
Describe the solution you'd like
It would be nice to have an option to calculate the maximum decibel value per frequency bin as well.
Describe alternatives you've considered
Additional context

To be clear:
You want the maximum decibel value from each frequency bin, after noise removal?
What should we name this? MMN?
Currently, PMN is the average decibel value from each frequency bin, after noise removal.

To be clear:
You want the maximum decibel value from each frequency bin, after noise removal?
What should we name this? MMN?
Currently, PMN is the average decibel value from each frequency bin, after noise removal.

Yes, indeed, the maximum decibel value for each frequency bin after noise removal.
If the Signal-to-Noise ratio is currently defined as "The difference between the maximum decibel value in the decibel envelope and the decibel value of BGN", perhaps this new feature could be the spectral SNR, or SSN/SNRsp?

Yes, I think spectral SNR is a reasonable name for this index. I can set this up when I work on Issue 292, calculating the spectral centroid as a summary index.


More logging if 1password item cant be read and continue processing other items

Hello,
We had this issue where we could find out what the problem we had because the of lack of logging.
The problem was due to some annotations in the secrets that we referring to a 1pass item what we didn't have access to (403 forbidden). After adding more logging, we immediately found out that 403 forbidden.
This change will log more output to help the users to debug the problems + if the item fetch fails, it will proceed with the next item.

We have change the connected vault to this cluster.
Since secrets were already generated and linking to the old vault path.
Other secrets were properly getting updated. But the auto-restart  feature wasn't working.
So, we suggest adding more verbose logging for this case and continue the auto-restart process for all the other objects.


Add versioning for static files

In the current iteration, there are two files that are being served from the service:

/diagnostics.json
/initFile.txt

These files are consumed by Hotspot-Production-Tool, and because we need to maintain backward compatibility, we can't break these paths. However, what we should probably do is as follows:

Create semantic versioning of the API and call the existing version 0.1 (e.g. /v0.1/diagnostics.json) and simply alias /diagnostics.json to this version.
Bump up the version and use that for the newer Hotspot-Production-Tool and reformat the JSON payload to something more structured with more readable keys etc.

Not sure this is relevant anymore @kashifpk @KevinWassermann94 - not sure what you think?

I don't see a need for this

Ok, closing then as we already have the version on settings and the hash of the commit so have enough traceability IMO


ENH: improve rayleigh accuracy for large x.

Improve the accuracy of the rayleigh distribution for large x, by replacing exp(x)-1 with expm1(x) and log(1+x) with log1p(x). closes #4034

@rgommers , do I need to squash the commits ?

No need to squash these commits.

Somehow this needs a rebase

@ev-br should I rebase on master ?

Sorry, I was trying to rebase and it got closed.

Doing it in #4426 now. It would be helpful if you can tell how to prevent accidentally closing a PR. It has happened before also when I rebased. Please mark this as invalid.

Maybe you somehow pushed a branch with zero commits? The rebase should be as simple as:
git rebase master    # check that this worked
git push origin feature-branch -f      # you need -f, or Github will reject your push

where feature-branch is the name of your branch of course, in this case  issue4034.

@rgommers . When I did git rebase master, there were some conflicts and it didn't allow further commands until I did one of the options - abort , continue or skip. I couldn't understand and then did the git push as you suggested. I will take advice next time before pushing to the feature branch. Thanks :)


GN-4615: Fix display of some SVG icons

Overview
GN-4615: Fix display of some SVG icons
Overrides "fill" attribute of "g" elements with fill="none" with fill="currentColor"
to make sure we see the icons. This is an artifact of using svg-jar to inline the icons.
connected issues and PRs:
https://binnenland.atlassian.net/browse/GN-4615
Setup

Checkout

How to test/reproduce

Make sure you still see the icons in the menu
Make sure you see the "remove link" icon

Checks PR readiness

[X] UI: works on smaller screen sizes
[X] UI: feedback for any loading/error states
[X] Check cancel/go-back flows
[X] Check database state correct when deleting/updating (especially regarding relationships)
[X] changelog
[X] npm lint
[X] no new deprecations

hmm that icon is supposed to be red, any way to do that?


Validate Dates and Timestamps on MMG-validation

Because the Structure Validator does not handle Leap years 100% accurately, we will validate if a date or timestamp is truly a valid date on MMG - Validator.
(results from ticket #537)
Valid HL7-Format: YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ].
Ex.:<PHONE_NUMBER>00000.000 is not a valid DateTime. The format should be: YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]
valid dates could be:
2023
202302
20230215
user final description: 77995-9 (Date Reported) is not populated with a valid date
(OBX-3.1) (mmg field name) is not populated with a valid date/datetime

duplicate of #726


ADD Git Contributors Page

fix: #3758

that section is already present in about us @shubhagarwal1

that section is already present in about us @shubhagarwal1

i was assigned this issue, i just worked on the code ADD a dedicated page for Git Contributors #3758 i just didnt knew about the page nor was informed, many folks may get tricked like this, as it takes a lot of effort to build a page.
Thankyou for your considertion

I am really sorry for this by wasting ur time work on new issue I will assign high level don't worry @shubhagarwal1

I am really sorry for this by wasting ur time work on new issue I will assign high level don't worry @shubhagarwal1

Do you have any specific implementation, or any feature planning, please share would love to work on it.

Fix the Navbar on all pages with all options included @shubhagarwal1

Fix the Navbar on all pages with all options included @shubhagarwal1

ok Sure...


No public IP output if load balancer is disabled

Currently there are only IP(v4/v6) outputs if the external load balancer from Hetzner is used.
For single-node clusters, the IPs need to extracted from the control_planes_public_ipv4 output (and no IPv6).
To make the usage of the Ingress IPs more consistent down the line, they should have a consistent output for both v4 and v6.
The implementation is fairly simple, just one decision needs to be done: should the behaviour of the existing load_balancer_public_ipv4|load_balancer_public_ipv6 be extended to include the kilpper-lb IP or should new outputs ingress_public_ipv4|ingress_public_ipv6 be added?

@captnCC Not sure I follow you all the way here. The problem with Klipper is that it gives many IPs, so it's an array, with the external IPs of all the nodes, as it's an on-metal LB provider.

You are right; for a single node cluster, it should be outputted! Please don't hesitate to take this on.

@mysticaltech Yes especially the single-node where my main point. For dev/prod-setups this is very useful (when the dev cluster is a dev-cluster is single node, and prod a full-blown cluster with load balancer). Then there is no need for extra logic to set DNS records for the cluster!
As usual, the PR will follow soon!

"No need for extra logic", exactly @captnCC !! 🙏🏻


Ctrl+C or quitting via GUI sometimes doesn't kill pulsemeeter-nightly started from CLI

Describe the bug
If you start pulsemeeter with just pulsemeeter in the CLI and close it in your DE, sometimes it says "writing config" and doesn't properly exit and return you to your shell.  Most of the time it works.
To Reproduce

Download current nightly – at the time of writing: https://github.com/theRealCarneiro/pulsemeeter/commit/6a7d8162aacb64fae01e6448f99fa154de12f04e
Start in Terminal
let it run for a while, play some audio, do other things
quit in GUI, check if you get returned to your shell
check if you get returned if you hit Ctrl+C

Expected behavior
Pulsemeeter actually exits 100% of the time when you hit Ctrl+C or quit the app.
Logs
Closed via GUI:
[DEBUG] in [logger@init_log]: started logger instance <Logger generic (DEBUG)> at thread 18840
[DEBUG] in [audio_server@start_sinks]: pmctl init sink GPU+AUX "2"

[DEBUG] in [audio_server@start_sources]:
[DEBUG] in [audio_server@start_primarys]:
[DEBUG] in [server@query_clients]: new client 0
[DEBUG] in [server@listen_to_client]: message from client #0, size 10: b'get-config'
[DEBUG] in [audio_server@handle_command]: get-config
[DEBUG] in [server@listen_to_client]: message from client #0, size 4: b'exit'
[DEBUG] in [server@listen_to_client]: message from client #0, size 4: b'quit'
[INFO] in [client@disconnect]: closing connection to socket
[DEBUG] in [server@listen_to_client]: client 0 disconnect
[INFO] in [client@listen]: closing socket
[INFO] in [audio_server@main_loop]: sending exit signal to listener threads, they should exit within a few seconds...
[DEBUG] in [audio_server@save_config]: writing config

Desktop (please complete the following information):

Distro: Arch
Python Version 3.10

Additional information:
Sometimes it just works, then it looks like (closed via Ctrl+C):
[DEBUG] in [logger@init_log]: started logger instance <Logger generic (DEBUG)> at thread 19188
[DEBUG] in [audio_server@start_sinks]: pmctl init sink GPU+AUX "2"

[DEBUG] in [audio_server@start_sources]:
[DEBUG] in [audio_server@start_primarys]:
[DEBUG] in [server@query_clients]: new client 0
[DEBUG] in [server@listen_to_client]: message from client #0, size 10: b'get-config'
[DEBUG] in [audio_server@handle_command]: get-config
^C[INFO] in [audio_server@main_loop]: sending exit signal to listener threads, they should exit within a few seconds...
[DEBUG] in [audio_server@save_config]: writing config
[INFO] in [client@disconnect]: closing connection to socket
[DEBUG] in [server@listen_to_client]: message from client #0, size 4: b'quit'
[DEBUG] in [server@listen_to_client]: client 0 disconnect
[INFO] in [client@listen]: closing socket

Especially after Pulsemeeter has been open for a while it seems to hang upon exit/quit.

those two first 'exit' messagens were you trying to exit? I belive it's a bad exception that I didn't threat in the client, causing it to close and request the server to close


fix: handle AccessDenied in report for macOS

Draft for:

[ ] At least some minimal testing

https://gist.github.com/BasilHorowt/52883871039c748d76cb8dafdf00f0d2
 full traceback
Traceback (most recent call last):
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_common.py", line 447, in wrapper
    ret = self._cache[fun]
AttributeError: 'Process' object has no attribute '_cache'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_common.py", line 447, in wrapper
    ret = self._cache[fun]
AttributeError: _cache

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 365, in catch_zombie
    yield
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 406, in _get_pidtaskinfo
    ret = cext.proc_pidtaskinfo_oneshot(self.pid)
ProcessLookupError: [Errno 3] No such process (originated from proc_pidinfo())

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/chia/chia-blockchain/venv/bin/plotman", line 8, in <module>
    sys.exit(main())
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/plotman/plotman.py", line 171, in main
    interactive.run_interactive()
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/plotman/interactive.py", line 353, in run_interactive
    curses.wrapper(curses_main)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/plotman/interactive.py", line 271, in curses_main
    jobs_win.addstr(0, 0, reporting.status_report(jobs, n_cols, jobs_h,
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/plotman/reporting.py", line 107, in status_report
    plot_util.human_format(j.get_mem_usage(), 1),
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/plotman/job.py", line 278, in get_mem_usage
    return self.proc.memory_info().vms  # Total, inc swapped
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_common.py", line 450, in wrapper
    return fun(self)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/__init__.py", line 1054, in memory_info
    return self._proc.memory_info()
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 344, in wrapper
    return fun(self, *args, **kwargs)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 475, in memory_info
    rawtuple = self._get_pidtaskinfo()
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 344, in wrapper
    return fun(self, *args, **kwargs)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_common.py", line 450, in wrapper
    return fun(self)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 406, in _get_pidtaskinfo
    ret = cext.proc_pidtaskinfo_oneshot(self.pid)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/chia/chia-blockchain/venv/lib/python3.9/site-packages/psutil/_psosx.py", line 378, in catch_zombie
    raise AccessDenied(proc.pid, proc._name)
psutil.AccessDenied: psutil.AccessDenied (pid=14694)

@BasilHorowt, let me know if you can try this out.  I understand we can't force the issue to prove it has been fixed, but it would be nice to get at least a little test time on this in the environment where the failure occurred.

I can definitely switch to this branch and leave it running, however, do you have a sense of what the triggering situation is? Is it about a plot finishing?

I can definitely switch to this branch and leave it running, however, do you have a sense of what the triggering situation is? Is it about a plot finishing?

Sorry.  Yes, your analysis made perfect sense.  There were sort of two related issues.  First that by the time the identified process is analyzed, it may be gone.  Or may be a zombie and there are different permissions for that on macOS maybe?  I can't say I dug into that in great detail since it fits with other macOS differences we've dealt with.  This is addressed by adding the psutil.AccessDenied exception so it is caught as well.  Second, that we didn't collect all the process info at one time and rather grabbed it piece by piece which meant that there were several opportunities to fail even after we already had gotten some info about the process.  That's what the with j.proc.one_shot(): is for.

@altendky I didn't have a chance to switch to this until now, and I get this on trying to plotman interactive!
AttributeError: 'Process' object has no attribute 'one_shot'

@altendky I didn't have a chance to switch to this until now, and I get this on trying to plotman interactive!
AttributeError: 'Process' object has no attribute 'one_shot'

It would seem that I did something silly... Thanks for the feedback. The erroneous underscore has been removed.

Ah cool, works now :) will leave it running on my main plotting machine.


Have 4D dask arrays as result of time-sliced functions

This turns result of time-slicer annotated functions into 4D delayed dask arrays as proposed by @Cryaaa in #5
This PR doesn't fully work yet in the interactive napari user-interface. After setting up a workflow and when going through time, it crashes sometimes with a KeyError while saving the duration of an operation. This is related to a computation finishing while the result has already be replaced. Basically multiple threads writing to the same result. It's this error:
https://github.com/dask/dask/issues/896
Reproduce:

Start napari
Open the Example dataset clEsperanto > CalibZapwfixed
Turn it into a 2D+t dataset using Tools > Utilities
Open the assistant
Setup a workflow, e.g. Denoise, Threshold, Label
Move the time-bar a couple of times until it crashes.

I'm not sure yet how to solve this.

@haesleinhuepf,
that is very weird. I encounter the same error even only using one workflow step. This is extremely alarming since I wasn't encountering the error when doing my own tests. Definitely looking into this though..

This is extremely alarming since I wasn't encountering the error when doing my own tests.

I'd that's good because it means that I introduced that issue. That means, we can also remove it again :-) A major change I did, which might be related is that I put the "getting time point from array" step into the delayed function here.

@haesleinhuepf,
actually it might have something to do with the assistant. I've done some further testing and the time-slicer dask function you created works with simple test functions I generated and with the nsbatwm-functions when I make simple guis without the wrappers introduced in the assistant. My feeling is that somewhere in the many layers of wrappers things are getting messed up. I'll report back once I have something concrete though. As for the testing notebooks, shall I add them to this branch so you can see what I'm testing?

Hi @GenevieveBuckley,
I'm tagging you here because you're the most dask-knowledgable person I know. Maybe, you have an Idea how to fix an issue here in this draft.
Assume there is napari open with 4 layers, which are connected via dask. Layer 2 has a 4D dask-array as data, that computes on the fly (delayed) 3D images from layer 1. Layer three works the same and produces image data from layer 2, and so on.
In napari this works, until the user moves the time-slider too fast. The layers then access each other in a hard-to-reproduce way (race conditions) and it crashes in this line in dask:
https://github.com/dask/dask/blob/50ab8af982a31b186a8e47597f0ad7e5b59bcab5/dask/cache.py#L56
because this line was called just before and emptied the dictionary:
https://github.com/dask/dask/blob/50ab8af982a31b186a8e47597f0ad7e5b59bcab5/dask/cache.py#L65
To me it sounds like dask is not thread-safe, which is hard to believe. I conclude, that we are using dask in a wrong way.
Did you ever see a dask-napari example where multiple dask-backed-delayed layers were computed from each other?
If we could make this to work, it would be a game-changer!
And hint is welcome!
Thanks!
Best,
Robert

If you are running into race conditions, perhaps you might want to look at asynchronous operation of Dask? I'm not very familiar with this, but have a look at the docs here and see if you think it might help: https://distributed.dask.org/en/latest/asynchronous.html
My other best advice is to post a copy of this question on the Dask discourse forum, to try and get more eyes on it: https://dask.discourse.group/
@jacobtomlinson is quite knowledgeable about dask/distributed, so maybe he has some insight? I see @gjoseph92 has also been doing a fair bit of work recently over there too.

Did you ever see a dask-napari example where multiple dask-backed-delayed layers were computed from each other?

No, I think I've only seen examples like Talley's lattice lightsheet deskew/deconv, which have one dask array computed on the fly from the raw data.
I'm not convinced it is a good idea to chain multiple dask arrays together like that - would that maybe cause Dask to recompute the earlier tasks/layers multiple times? My gut feeling is that it might end up being pretty slow.

To me it sounds like dask is not thread-safe, which is hard to believe. I conclude, that we are using dask in a wrong way.

I did find this issue at dask/distributed, so at the very least, parts of dask are known to NOT be thread safe: https://github.com/dask/distributed/issues/3827
What to do about that information, I'm not so sure (let's see if your question on https://dask.discourse.group/ generates any suggestions first)

it sounds like dask is not thread-safe, which is hard to believe

The dask API is absolutely not thread-safe. Dask can execute tasks in multiple threads safely, but virtually nothing in dask is guaranteed to be safe to interact with from multiple threads. Many things happen to be thread-safe, but it's not part of the API contract and shouldn't be relied on.
I haven't looked at your code at all, but if you're sharing the same Cache instance between multiple threads, which might be calling compute concurrently, that's definitely going to cause issues. (Also, be aware that the dask cache doesn't avoid recomputation like you'd expect: https://github.com/dask/dask/issues/6228.)

HI @gjoseph92,
thanks for the feedback!

I haven't looked at your code at all, but if you're sharing the same Cache instance between multiple threads, which might be calling compute concurrently, that's definitely going to cause issues. (Also, be aware that the dask cache doesn't avoid recomputation like you'd expect: https://github.com/dask/dask/issues/6228.)

How can I use different caches in different threads? My code is at the core something like:
               lazy_arrays = [delayed(partial(some_function)) for some_function in list_of_functions]

               dask_arrays = [
                    da.from_delayed(
                        delayed_reader,
                        shape=output_sample.shape,
                        dtype=output_sample.dtype)]
                    )
                    for delayed_reader in lazy_arrays
                ]

Can I add a custom cache somewhere in dask.delayed or dask.array.from_delayed?
Thanks!
Robert


fix: Duplicate of items in collection

Thank you for your contribution to the KodaDot NFT gallery.
👇 _ Let's make a quick check before the contribution.
PR type

[x] Bugfix
[ ] Feature
[ ] Refactoring

What's new?

[x] PR closes #3479
[ ] Requires deployment <rubick/magick_issue>
[ ] <brief_description_of_what_I've_added>

Before submitting Pull Request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality
[x] I've posted a screenshot of demonstrated change in this PR

Optional

[ ] I've tested it at </rmrk/collection/26902bc2f7c20c546a-1FVG7>
[ ] I've tested PR on mobile and everything seems works
[ ] I found edge cases
[ ] I've written some unit tests 🧪

Had issue bounty label?

[x] Fill up your KSM address: Payout

Community participation

[x] Are you at KodaDot Discord?

Screenshot

[x] My fix has changed something on UI; a screenshot is best to understand changes for others.

pay 50 usd


CVXPY help

Error
ValueError: Cannot broadcast dimensions  (16, 12) (12,)
If someone can help to solve this error what to modify in my code?
Code
import cvxpy as cp
import numpy as np
Given input values
A = np.array([1, 3, 4, 6, 7, 9, 11, 12, 13, 13, 10, 12])
D = np.array([6, 13, 10, 10, 10, 13, 14, 16, 16, 17, 17, 17])
theta = np.array([[1, 0.375, 0.5, 1.5, 3, 0.75, 1, 0.25, 1, 1.75, 0.125, 1.25]])
W = np.array([5, 3.75, 3, 6, 9, 3, 3, 1, 3, 7, 0.875, 6.25])
s_min = 1
s_max = 6
T = 16
n = 12
Define variables
theta_var = cp.Variable((T, n))  # Theta matrix
s_var = cp.Variable(T)           # Processor speed
Define objective function
objective = cp.Minimize(cp.sum(cp.multiply(s_var, np.ones(T))))
Define constraints
constraints = [
s_min <= s_var,                     # Minimum processor speed constraint
s_var <= s_max,                     # Maximum processor speed constraint
cp.sum(theta_var, axis=1) == 1,     # Sum of theta per time period equals 1
s_var == cp.sum(cp.multiply(theta_var, W), axis=1),  # Processor speed constraint
theta_var >= 0,                     # Theta must be non-negative
theta_var <= W                      # Theta must be less than or equal to the work required
]
Define and solve the problem
problem = cp.Problem(objective, constraints)
problem.solve()
Output results
print("Minimum energy consumption:", problem.value)
print("Optimal theta:", theta_var.value)
print("Optimal processor speeds:", s_var.value)

maybe this line?
s_var == cp.sum(cp.multiply(theta_var, W[None, :]), axis=1), # Processor speed constraint

maybe this line?
s_var == cp.sum(cp.multiply(theta_var, W[None, :]), axis=1), # Processor speed constraint

Thank you for replying, but still got the same error

Had to fix one other line
import cvxpy as cp
import numpy as np

#Given input values
A = np.array([1, 3, 4, 6, 7, 9, 11, 12, 13, 13, 10, 12])
D = np.array([6, 13, 10, 10, 10, 13, 14, 16, 16, 17, 17, 17])
theta = np.array([[1, 0.375, 0.5, 1.5, 3, 0.75, 1, 0.25, 1, 1.75, 0.125, 1.25]])
W = np.array([5, 3.75, 3, 6, 9, 3, 3, 1, 3, 7, 0.875, 6.25])
s_min = 1
s_max = 6
T = 16
n = 12

#Define variables
theta_var = cp.Variable((T, n)) # Theta matrix
s_var = cp.Variable(T) # Processor speed

#Define objective function
objective = cp.Minimize(cp.sum(cp.multiply(s_var, np.ones(T))))

#Define constraints
constraints = [
s_min <= s_var, # Minimum processor speed constraint
s_var <= s_max, # Maximum processor speed constraint
cp.sum(theta_var, axis=1) == 1, # Sum of theta per time period equals 1
s_var == cp.sum(cp.multiply(theta_var, W[None, :]), axis=1), # Processor speed constraint
theta_var >= 0, # Theta must be non-negative
theta_var <= W[None, :] # Theta must be less than or equal to the work required
]

#Define and solve the problem
problem = cp.Problem(objective, constraints)
problem.solve()

#Output results
print("Minimum energy consumption:", problem.value)
print("Optimal theta:", theta_var.value)
print("Optimal processor speeds:", s_var.value)

Had to fix one other line
import cvxpy as cp
import numpy as np

#Given input values
A = np.array([1, 3, 4, 6, 7, 9, 11, 12, 13, 13, 10, 12])
D = np.array([6, 13, 10, 10, 10, 13, 14, 16, 16, 17, 17, 17])
theta = np.array([[1, 0.375, 0.5, 1.5, 3, 0.75, 1, 0.25, 1, 1.75, 0.125, 1.25]])
W = np.array([5, 3.75, 3, 6, 9, 3, 3, 1, 3, 7, 0.875, 6.25])
s_min = 1
s_max = 6
T = 16
n = 12

#Define variables
theta_var = cp.Variable((T, n)) # Theta matrix
s_var = cp.Variable(T) # Processor speed

#Define objective function
objective = cp.Minimize(cp.sum(cp.multiply(s_var, np.ones(T))))

#Define constraints
constraints = [
s_min <= s_var, # Minimum processor speed constraint
s_var <= s_max, # Maximum processor speed constraint
cp.sum(theta_var, axis=1) == 1, # Sum of theta per time period equals 1
s_var == cp.sum(cp.multiply(theta_var, W[None, :]), axis=1), # Processor speed constraint
theta_var >= 0, # Theta must be non-negative
theta_var <= W[None, :] # Theta must be less than or equal to the work required
]

#Define and solve the problem
problem = cp.Problem(objective, constraints)
problem.solve()

#Output results
print("Minimum energy consumption:", problem.value)
print("Optimal theta:", theta_var.value)
print("Optimal processor speeds:", s_var.value)

Thanks!


better method names (#243 Part 1)

The first part of #243

Thanks Christian for the quick PR!
My only nitpick would be, could we add tests for the method names?
Otherwise, it looks good to me! @edward3h, you know the model extension a lot better, I'd say you should have the final say before merge :-)

I agree it could do with some tests. Otherwise it looks good to me.

Merged, thanks for the PR @chkl!


Melee rebalancing

Wide attacks are going to feel undertuned in the meantime and we should buff it to a spot where it's not the go-to option for every single fight.
:cl:

tweak: Re-balanced melee combat. Windup is removed, heavy attacks cost 15 stamina, stamina damage cooldown reduced from 5s to 3/s, wide attacks provide a 10% damage bonus, and wielding no longer grants immunity to disarms.
tweak: Reduce desword values to standard fast weapons (left wide-attack angle at 100 degrees instead of the standard 60).

i personally do not enjoy this uhh change because many players will hate it and will stop being robust(mainly because of wideswing removal)

tony hawk from iron man once said:
"if you're nothing without heavy attacks, then you shouldn't have them"

Space Ticks will love this PR.

The CL entry claims wielding no longer grants immunity to disarms, but it is my understanding that this behavior stems from this event handler:
https://github.com/space-wizards/space-station-14/blob/501bc4be049ce5112383c132ef836b64b42426b0/Content.Shared/Wieldable/WieldableSystem.cs#L88-L92
This does not appear to be touched in this PR, and I'm unable to find what results in wielding no longer granting immunity to disarms.

10% damage boost seems too little compared to the previous up to 100%, makes the boost negligible compared to the only real utility of being wide swing

The CL entry claims wielding no longer grants immunity to disarms, but it is my understanding that this behavior stems from this event handler:

The PR mentions changes to disarms but I don't see anything related to that in the changed files. Can you clarify where this is?

I forgor to draft and commit.

Bumped heavy damage to 25% so will see how we go?

talked to keron about it on disc but we can revert if it goes terrible

Can the deployed changelog be edited to correctly state +25% damage instead of the originally planned 10?

oop yeah, could just webedit too if you see it


The generated command packet has a wrong calculated checksum.

The checksum in the command packet should be 1 byte.
But if the summation of packets is over than 0xFF, the number of the command packet is overflowed.

This bug has been resolved in pysfm v0.0.50


Restful server started failed

Describe the issue:
Restful server started failed when i tried to run the mnist example
Environment:

NNI version:2.4

Training service (local|remote|pai|aml|etc):local

Client OS:ubuntu

Python version:3.8

Is conda/virtualenv/venv used?:?

Is running in Docker?: no

Configuration:

Experiment config (remember to remove secrets!):

Search space:
INFO:  Starting restful server...
ERROR: Restful server start failed!
INFO:   Stdout:

            Experiment start time 2021-08-18 14:46:26

INFO:   Stderr:
            Experiment start time 2021-08-18 14:46:26

Failed to create log dir: RangeError: Invalid time value
at Date.toISOString ()
at Logger.log (xx/.local/lib/python3.8/site-packages/nni_node/common/log.js:54:72)
at Logger.error (xx/.local/lib/python3.8/site-packages/nni_node/common/log.js:41:14)
at xx/.local/lib/python3.8/site-packages/nni_node/main.js:109:33
Log message:

nnimanager.log:
dispatcher.log:
nnictl stdout and stderr:

Could anyone help me look at this issue? stuck on this for a week

Hi @geng0021 Thanks your feedback, there is a very similar issue at https://github.com/microsoft/nni/issues/4077. Can we discuss this issue here?

i get the same erro;my nni version is 2.4;i guess the version problem; so i reinstall the nni to 2.3. the problem has been sovled.

also getting a similar error on windows
ERROR: Restful server start failed!
INFO:   Stdout:
            Experiment start time 2021-08-19 16:30:06

INFO:   Stderr:
            Experiment start time 2021-08-19 16:30:06

Failed to create log dir: RangeError: Invalid time value
at Date.toISOString ()
at Logger.log (c:\users\chmunyas\anaconda3\lib\site-packages\nni_node\common\log.js:54:72)
at Logger.error (c:\users\chmunyas\anaconda3\lib\site-packages\nni_node\common\log.js:41:14)
at c:\users\chmunyas\anaconda3\lib\site-packages\nni_node\main.js:109:33
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 679, in wrapper
return fun(self, *args, **kwargs)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 933, in create_time
user, system, created = cext.proc_times(self.pid)
ProcessLookupError: [Errno 3] assume no such process (originated from GetExitCodeProcess != STILL_ACTIVE)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init_.py", line 354, in init
self.create_time()
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init.py", line 710, in create_time
self._create_time = self._proc.create_time()
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 681, in wrapper
raise convert_oserror(err, pid=self.pid, name=self._name)
psutil.NoSuchProcess: psutil.NoSuchProcess process no longer exists (pid=25516)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\launcher.py", line 432, in launch_experiment
kill_command(rest_process.pid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\command_utils.py", line 37, in kill_command
process = psutil.Process(pid=pid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init_.py", line 326, in init
self.init(pid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init.py", line 367, in _init
raise NoSuchProcess(pid, None, msg)
psutil.NoSuchProcess: psutil.NoSuchProcess no process found with pid 25516
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\launcher.py", line 525, in create_experiment
launch_experiment(args, config_v2, 'new', experiment_id, 2)
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\launcher.py", line 434, in launch_experiment
raise Exception(ERROR_INFO % 'Rest server stopped!')
TypeError: not all arguments converted during string formatting
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 679, in wrapper
return fun(self, *args, **kwargs)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 933, in create_time
user, system, created = cext.proc_times(self.pid)
ProcessLookupError: [Errno 3] assume no such process (originated from GetExitCodeProcess != STILL_ACTIVE)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init_.py", line 354, in init
self.create_time()
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init.py", line 710, in create_time
self._create_time = self._proc.create_time()
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_pswindows.py", line 681, in wrapper
raise convert_oserror(err, pid=self.pid, name=self._name)
psutil.NoSuchProcess: psutil.NoSuchProcess process no longer exists (pid=25516)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\chmunyas\anaconda3\lib\runpy.py", line 194, in _run_module_as_main
return run_code(code, main_globals, None,
File "c:\users\chmunyas\anaconda3\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C:\Users\chmunyas\Anaconda3\Scripts\nnictl.exe_main.py", line 7, in
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\nnictl.py", line 290, in parse_args
args.func(args)
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\launcher.py", line 529, in create_experiment
kill_command(restServerPid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\nni\tools\nnictl\command_utils.py", line 37, in kill_command
process = psutil.Process(pid=pid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init.py", line 326, in init
self.init(pid)
File "c:\users\chmunyas\anaconda3\lib\site-packages\psutil_init.py", line 367, in _init
raise NoSuchProcess(pid, None, msg)
psutil.NoSuchProcess: psutil.NoSuchProcess no process found with pid 25516

Hi @Munyasya, can you help me to do some test? Since I still can not reproduce it.
Add this two lines on c:\users\chmunyas\anaconda3\lib\site-packages\nni_node\common\log.js at line 53:
console.log(new Date().toLocaleString());
console.log(new Date(new Date().toLocaleString() + ' UTC'));
and launch an experiment.
Anything on "Stdout" or "Stderr"?

Sure, happy to work on it Monday. What time works for you?
Kind regards,
Chris
Get Outlook for iOShttps://aka.ms/o0ukef

From: Ni Hao @.>
Sent: Friday, August 20, 2021 7:45:07 AM
To: microsoft/nni @.>
Cc: Chris Munyasya @.>; Mention @.>
Subject: Re: [microsoft/nni] Restful server started failed (#4083)
Hi @Munyasyahttps://github.com/Munyasya, can you help me to do some test? Since I still can not reproduce it.
Add this two lines on c:\users\chmunyas\anaconda3\lib\site-packages\nni_node\common\log.js at line 53:
console.log(new Date().toLocaleString());
console.log(new Date(new Date().toLocaleString() + ' UTC'));
and launch an experiment.
Anything on "Stdout" or "Stderr"?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/nni/issues/4083#issuecomment-902471312, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACOHVE6O3QQCIG3FYQJKFBLT5X2XHANCNFSM5CLL5IXA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

how to do 555

how to do 555

I find 2 points:

Don't use nni on windows. there will work easy on linux
version==2.0 is run well ;newer version maybe come cross a little bug but no answer

There is a fix about this issue, https://github.com/microsoft/nni/pull/4108.
Have a try with source code or wait for next release.

I encountered this issue on win10 but not running the mnist. I  run a different experiment. nni 2.4 does not work, but when I use nni 2.3 it worked.

I got 2.4 working so far using the following changes.
Change
const isoTime = new Date(new Date().toLocaleString() + ' UTC').toISOString();
to
const isoTime = new Date(new Date() + ' UTC').toISOString();
Just remove the toLocaleString().
Can be found at:
...lib\site-packages\nni_node\common\log.js:54:72)

This is on windows 10 and python 3.9.

Fixed in v2.5.


Unable to generate Open Api documentation with OpenApi generator

Unable to generate the OpenApi documentation with the OpenApi generator plugin in JetBrains IntelliJ IDE when using controller

I don't understand what you are trying to achieve here 🤔 .
Kodein has nothing to do with Open API generation.
This is a Dependency Injection library not a backend development framework.


Duplicated key license in about section of meta.yaml file

When using ruamel_yaml python module I get a error DuplicatedKeyError

A PR would be welcome 🙂

closed in #32


[Release Radar Request] Material Design Icons 6.5.95

Open Source Project name
Material Design Icons
What is your project?
Material Design Icons contains over 6000 community created icons and has been integrated into many large Open Source projects such as Home Assistant. The set starting in June 2014 provides an easy integration for designers or developers to use the icons in any project from web to print media.
Version
6.5.95
Date
November 13, 2021
Description of changes
100 New Icons created by the community. Bringing the total icon count to 6595.
Preview<EMAIL_ADDRESS>GitHub Repo
https://github.com/Templarian/MaterialDesign/
Website
https://materialdesignicons.com (it's being rewritten right now, it's also nearly 8 years old)
Link to changelog
https://dev.materialdesignicons.com/changelog
Social media
https://twitter.com/MaterialIcons
Anything else to add?
https://pictogrammers.com/ is the parent Organization of designers and developers that maintain Material Design Icons.
I left out any stats, but this project is about to close the 6000th issue request. Since we don't really do pull requests this is how we measure community involvement. Usage Stats: JSdelivr CDN's 16th most requested package. The NPM org @mdi accounts for 300,000 Weekly Downloads.

Thanks @mishmanners! ⭐ A few people shared that we were featured in the November Release Radar. 💯

This was included in our November Release Radar 🎉 congrats


BracketGenerator more than 3 rounds

hello, want to ask. Does this components can make more than 3 rounds? i am trying to add to 4 but things starting to break.

this is my JSOG data
[{
    "@id": "15",
    "scheduled":<PHONE_NUMBER>000,
    "name": "Cup",
    "sides": {
        "home": {
            "team": null,
            "score": null,
            "seed": {
                "sourceGame": {
                    "@id": "20",
                    "id": "b6e869cc-e6ad-4151-9186-5df828b45802",
                    "scheduled":<PHONE_NUMBER>000,
                    "name": "C1",
                    "gameGroup": null,
                    "sides": {
                        "home": {
                            "team": null,
                            "score": null,
                            "seed": {
                                "sourceGame": {
                                    "@id": "1",
                                    "scheduled":<PHONE_NUMBER>000,
                                    "name": "B1",
                                    "sides": {
                                        "home": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "sourceGame": {
                                                    "@id": "1",
                                                    "scheduled":<PHONE_NUMBER>000,
                                                    "name": "b3",
                                                    "sides": {
                                                        "home": {
                                                            "team": {
                                                                "@id": "11",
                                                                "name": "West Salem Panthers"
                                                            },
                                                            "score": null,
                                                        },
                                                        "visitor": {
                                                            "team": null,
                                                            "score": null,
                                                        }
                                                    }
                                                },
                                                "sourcePool": null,
                                                "rank": 2,
                                                "displayName": "Winner of A1"
                                            }
                                        },
                                        "visitor": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "sourceGame": null,
                                                "sourcePool": null,
                                                "rank": 3,
                                                "displayName": "Winner of A2"
                                            }
                                        }
                                    }
                                },
                                "sourcePool": null,
                                "rank": 1,
                                "displayName": "Winner of B1"
                            }
                        },
                        "visitor": {
                            "team": null,
                            "score": null,
                            "seed": {
                                "sourceGame": {
                                    "@id": "1",
                                    "scheduled":<PHONE_NUMBER>000,
                                    "name": "B2",
                                    "sides": {
                                        "home": {
                                            "team": {
                                                "@ref": "13"
                                            },
                                            "score": null,
                                            "seed": {
                                                "sourceGame": null,
                                                "sourcePool": {
                                                    "@ref": "14"
                                                },
                                                "rank": 2,
                                                "displayName": "Winner of A3"
                                            }
                                        },
                                        "visitor": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "sourceGame": null,
                                                "sourcePool": {
                                                    "@ref": "12"
                                                },
                                                "rank": 3,
                                                "displayName": "Winner of A4"
                                            }
                                        }
                                    }
                                },
                                "sourcePool": null,
                                "rank": 1,
                                "displayName": "Winner of B2"
                            }
                        }
                    },
                },
                "sourcePool": null,
                "rank": 1,
                "displayName": "Winner of C1"
            }
        },
        "visitor": {
            "team": null,
            "score": null,
            "seed": {
                "sourceGame": {
                    "@id": "17",
                    "id": "5dd25794-429b-4a1b-9926-bca93438a799",
                    "scheduled":<PHONE_NUMBER>000,
                    "name": "C2",
                    "sides": {
                        "home": {
                            "team": null,
                            "score": null,
                            "seed": {
                                "sourceGame": {
                                    "@id": "18",
                                    "id": "b43e7160-9a6a-4fef-8d6a-1dfb73473653",
                                    "scheduled":<PHONE_NUMBER>000,
                                    "name": "B3",
                                    "sides": {
                                        "home": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "displayName": "Winner of A5"
                                            }
                                        },
                                        "visitor": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "displayName": "Winner of A6"
                                            }
                                        }
                                    },
                                },
                                "sourcePool": null,
                                "rank": 1,
                                "displayName": "Winner of B3"
                            }
                        },
                        "visitor": {
                            "team": null,
                            "score": null,
                            "seed": {
                                "sourceGame": {
                                    "@id": "18",
                                    "id": "b43e7160-9a6a-4fef-8d6a-1dfb73473653",
                                    "scheduled":<PHONE_NUMBER>000,
                                    "name": "B4",
                                    "sides": {
                                        "home": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "sourceGame": {
                                                    "@id": "18",
                                                    "id": "b43e7160-9a6a-4fef-8d6a-1dfb73473653",
                                                    "scheduled":<PHONE_NUMBER>000,
                                                    "name": "B4",
                                                    "sides": {
                                                        "home": {
                                                            "team": null,
                                                            "score": null,
                                                            "seed": {
                                                                "displayName": "Winner of A7"
                                                            }
                                                        },
                                                        "visitor": {
                                                            "team": null,
                                                            "score": null,
                                                            "seed": {
                                                                "displayName": "Winner of A8"
                                                            }
                                                        }
                                                    },
                                                },
                                                "sourcePool": null,
                                                "rank": 1,
                                                "displayName": "Winner of B4"
                                            }
                                        },
                                        "visitor": {
                                            "team": null,
                                            "score": null,
                                            "seed": {
                                                "sourceGame": {
                                                    "@id": "18",
                                                    "id": "b43e7160-9a6a-4fef-8d6a-1dfb73473653",
                                                    "scheduled":<PHONE_NUMBER>000,
                                                    "name": "B4",
                                                    "sides": {
                                                        "home": {
                                                            "team": null,
                                                            "score": null,
                                                            "seed": {
                                                                "displayName": "Winner of A7"
                                                            }
                                                        },
                                                        "visitor": {
                                                            "team": null,
                                                            "score": null,
                                                            "seed": {
                                                                "displayName": "Winner of A8"
                                                            }
                                                        }
                                                    },
                                                },
                                                "sourcePool": null,
                                                "rank": 1,
                                                "displayName": "Winner of B4"
                                            }
                                        }
                                    },
                                },
                                "sourcePool": null,
                                "rank": 1,
                                "displayName": "Winner of B4"
                            }
                        }
                    }
                },
                "sourcePool": null,
                "rank": 1,
                "displayName": "Winner of C2"
            }
        }
    }
}]

it should horizontally scroll

I think it's not detecting more than 3 rounds because it's not horizontally scrollable

i'm not sure what you mean by not detecting--the container should be scrollable. if it's not, did you override the style? afaict from the screenshot, the game on the far left is cut off by overflow

nvm, something is definitely wrong with the json, it says winner of b4 goes to game b4

do you have any JSON example using more than 3 rounds? i can't get working bracket with more than 3 rounds. always get cut in the left.

i figured it out that each sourceGame in seed need ID, scheduled, and name value. i forgot to add the ID part. thanks

Hi, I know this is closed but I'm working on figuring this out exactly.  I'm currently structuring my data (all the users that are involved in the tournament) into a graph to pass into this component.
Right now I have 8 users, all saved as eight objects in a "Tournament.participants"  array.  I randomized them, and am structuring the 8 users into a graph.. but I'm looking at this data set posted by hoseajsap and there's a lot of extra properties/keys that I'm not sure if they are required for this component to work, or if they are extra.
Example, "@id" and "scheduled" are throwing me off a bit.  I understand "name" and "sides"..
Should I just copypaste this structure as the foundation, and simply pass in whatever specifics later? For example.. some of the null properties that are acting as placeholders to generate the bracket?
Sorry if this isn't contributing to the project

I'm attempting to make a bracket with more than 3 rounds also, and I'm having the same issue even though I'm supplying each sourceGame with ID, scheduled and name.

I'm attempting to make a bracket with more than 3 rounds also, and I'm having the same issue even though I'm supplying each sourceGame with ID, scheduled and name.

Make sure you add "sides" with "home" and "visitor" object. I can make about 8 rounds now and didn't have any problem.

I'll post a picture of my stuff.
Is there a particular convention I need to follow with 'id' and 'rank' ? Or can they all just be 1 ?

UPDATE:
I cleaned up some properties that don't seem necessary "gameGroup", "team" for example.
Also, I changed the ids so that each nested sourceGame is id + 1
Example:
The finals, which is the root of the tree, is id: 1
The next nested home/visitor group is id: 2,
The next one is id: 3,
and so on.
I'm building more.  Will post here or create a new issue if necessary.  Thanks!

UPDATE:
This is driving me a little crazy.
I'm doing literally the same thing; Nesting another sourceGame:{} inside a bracket seed that I want to have another bracket seed connecting to it on the left side.
It works when I do it for the very topmost part of the bracket, but if I do the EXACT same thing on any of the other sourceGames it doesn't render anything.

Any help is appreciated.  Maybe you can show me how some of your larger
brackets are rendered?
I'm trying to make brackets for sizes 8-16 players.
On Wed, Oct 21, 2020 at 9:05 AM hoseajsap<EMAIL_ADDRESS>wrote:

I'm attempting to make a bracket with more than 3 rounds also, and I'm
having the same issue even though I'm supplying each sourceGame with ID,
scheduled and name.
Make sure you add "sides" with "home" and "visitor" object. I can make
about 8 rounds now and didn't have any problem.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/moodysalem/react-tournament-bracket/issues/28#issuecomment-713554546,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AITL6CL62MLGVM4CRGXZEIDSL3MCTANCNFSM4N6JP44Q
.

It appears the culprit was the 'rank' property.
If the node is gonna have a sourceGame, it has to have a rank of 1 to
render it.
On Wed, Oct 21, 2020 at 10:50 AM Dustin Cintron<EMAIL_ADDRESS>wrote:

Any help is appreciated.  Maybe you can show me how some of your larger
brackets are rendered?
I'm trying to make brackets for sizes 8-16 players.
On Wed, Oct 21, 2020 at 9:05 AM hoseajsap<EMAIL_ADDRESS>wrote:

I'm attempting to make a bracket with more than 3 rounds also, and I'm
having the same issue even though I'm supplying each sourceGame with ID,
scheduled and name.
Make sure you add "sides" with "home" and "visitor" object. I can make
about 8 rounds now and didn't have any problem.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/moodysalem/react-tournament-bracket/issues/28#issuecomment-713554546,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AITL6CL62MLGVM4CRGXZEIDSL3MCTANCNFSM4N6JP44Q
.


Does not support Chinese input

[x] I am on the latest Hyper.app version
[x] I have searched the issues of this repo and believe that this is not a duplicate

OS version and name: Mac OS X
Hyper.app version: 10.12.6
Link of a Gist with the contents of your .hyper.js:
Relevant information from devtools (CMD+ALT+I on Mac OS, CTRL+SHIFT+I elsewhere): N/A
The issue is reproducible in vanilla Hyper.app:

Issue
When I use the Chinese input method in the terminal, the input to the terminal is the English alphabet, and these English letters can not be deleted and operated.

when i input chinese, only get some letters T_T

same on windows 10

This problem seems to be fixed in 2.0.0-canary.8 version

https://github.com/zeit/hyper/issues/2322


PCK section missing from compiled templates

Tested versions
4.3.dev HEAD
System information
Arch Linux
Issue description
When exporting with embedded PCK an error is produced saying the PCK section is missing. Probing the resultant executable file with objdump -x you can indeed see there is no pck section in the ELF file.
Steps to reproduce
This is with the MYSQL extension installed. To get it to compile on Arch I had to use LLVM and LLD, which may be the issue?
So... compile the templates with LLVM and LDD and examine the results to see if the pck section exists in them.
Minimal reproduction project (MRP)
No need for a project. Just compile the templates from the source tree with LLVM and LLD.

PCK section is not supported when linking with LLD, build process should print a warning: Warning: Creating export template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold, LLD or mold..

PCK section is not supported when linking with LLD, build process should print a warning: Warning: Creating export template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold, LLD or mold..

I'm a bit confused, doesn't mold support inline pck? When exporting godot does prompt that the pck part can't be found, but the exported executable, runs all right.

If I remember correctly, the PCK section is not required to embed PCK, it can be simply appended at the end of the executable.

PCK section is not supported when linking with LLD, build process should print a warning: Warning: Creating export template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold, LLD or mold..

I'm a bit confused, doesn't mold support embed pck? When exporting godot does prompt that the pck part can't be found, but the exported executable, runs all right.

The same with LLD - it complains and "fails" the export, yet it has embedded the PCK and it runs.

It still fails in at least one way as it won't handle shared libraries if the embedding fails

I'm facing the same problem I'm trying to export to windows both with embed pck on/off and it throws same error on run .exe

@imvenx That should be a different issue, this one is specific to Linux and clearly identified as related to how the binaries are compiled. It can't affect Windows which uses a different approach.


Adding cheatsheets of Branching & Merging

What does this PR do?

Add new CheatSheet

Description

Adding and reordering git Branching & Merging commands

Can you please add hacktoberfest and hacktoberfest-accepted labels for me? Thx


Probe behaviour: probe_handle_msg/2 or probe_handle_message/2?

Behaviour Instruments.Probe expects a callback probe_handle_msg/2 to be defined (and this is implemented in the sample Instruments.Probes.Schedulers as well as in the probe tests), however the handle_info callback in Instruments.Probe.Runner GenServer calls the probe_handle_message/2 function of the probe module.

Committed the fix, sorry that languished!


[SPARK] Optimize : SELECT COUNT(*) FROM Table WHERE partitition=1

Which Delta project/connector is this regarding?

[x] Spark
[ ] Standalone
[ ] Flink
[ ] Kernel
[ ] Other (fill in here)

Description
Running the query "SELECT COUNT(*), MIN(X), MAX(X) FROM table WHERE partition_column = 1" takes a lot of time for big tables, Spark scan all the parquet files just to return the number of rows and min max values, that information is available from Delta Logs
Resolves https://github.com/delta-io/delta/issues/1916

How was this patch tested?
Created unit tests to validate the optimization works

Does this PR introduce any user-facing changes?
Only performance improvement

cc @felipepessoto  Can you help with review or guidance?

@7mming7 I'm travelling on vacation, it will take some time to review it. Anyway, you will need an approval from one of the maintainers.

@felipepessoto I see. Have a nice vacation.


[Refactor] refactor replication_num in lake mv

What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[x] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Like lake table,

add replication_num property in show create materialized view result.
remove the override getDefaultReplicationNum method.
move storageCooldownTime property to appendUniqueProperties method.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

@Mergifyio backport branch-3.0


Issue #50 - proof read README

Hey guys - saw some typos in the Silk README, and submitting a PR to correct :)

Codecov Report

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

@@           Coverage Diff           @@
##           master      #51   +/-   ##
=======================================
  Coverage   94.52%   94.52%
=======================================
  Files          11       11
  Lines         657      657
=======================================
  Hits          621      621
  Misses         36       36

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 95b82aa...64735da. Read the comment docs.

Thanks!


Fix (in)compatibility with unsigned columns

Closes #21

Any chance of this PR being merged?

@pindab0ter After three years? 🥲

Wouldn't be the first time I'd see PR's merge after multiple years! You never know! 😅


Z order index randomly changes during color correction

As I'm trying to match the color of two landsat scenes so that I can mosaic them I zoom into where a seam is (on the left side):

But after knocking around with the color balance for about a minute, the z-order index switches:

This is particularly annoying if you're zoomed in pretty far to a seam and the z-order changes--now you have to zoom back out to find the new seam.

Does not need to be fancy, enforce a consistent sort on tiles before merging -- start with creation time.

Gonna close this in favor of https://github.com/raster-foundry/raster-foundry/issues/3863


Update J000298 via #138

Coverage remained the same at 59.813% when pulling 7944211f4080689b8cb073e5b7df114bfcba8860 on phoneyourrep:patch-J000298 into a5a44bd80711a59008504f2e1f88e5dbeaf5978c on unitedstates:gh-pages.

👍

Pramila Jayapal - J000298
Image URL:  https://upload.wikimedia.org/wikipedia/commons/6/6e/Pramila_Jayapal_115th_Congress_photo.jpg
Found on: https://commons.wikimedia.org/wiki/File:Pramila_Jayapal_115th_Congress_photo.jpg
License: This Image was found on Wikimedia Commons, where it is stated to be a work of the Senate and open licensed in the public domain

https://github.com/unitedstates/images/issues/138#issuecomment-290217634


"Too big request header"

Is there an existing issue for this?

[X] I have searched the existing issues
[X] And it has nothing to do with Traefik

Describe the bug
When the auth cookies for my website are present and I try to a non existing page I get "Too big request header" instead of the error page. When I clear said cookies I see my error page as expected.
Steps to reproduce

Setup error pages
Set long token in cookies
Get "Too big request header" instead of error page

Configuration files
No response
Relevant log output
No response
Anything else?
I am not sure if this is a traefik issue, It does only happen with the error page container, accessing the normal webpage is fine with and without the auth cookies set.

Could you please provide an example (e.g., a curl command) to reproduce the error?

I think this is related: https://github.com/traefik/traefik/issues/8846
Maybe we can configure thr max header bytes for the error pages server aswell? Via a env variable or so.
I dont really have an example on hand since i dont want to provide my auth cookies (for obvious reasons).

I forked the project and introduced a new environment variable READ_BUFFER_SIZE which can be used to pass the desired maximum request size in bytes (including header and body). See pull request #244.

Very nice thank you! 😀

🚀 v2.26.0

I have this error with traefik.

Too big request header

My env

READ_BUFFER_SIZE: 1024

How to fix it ? Thank bro.

Just increase the number until it works. A larger read buffer has only one negative side-effect: the resource consumption is slightly higher. On an average server and normal load conditions this should not cause any problems since error-pages does not require many resources in the first place. But it might make it easier for someone with bad intentions to deliberately overload your server by sending many requests with a lot of payload data. So you also don't want to increase the read buffer to the maximum possible value.


Editor is taking 2 to 3 seconds to re-lint

I saw the discussion about enable linting while typing , I feel that is much needed and related to here.
Because whenever I am saving only the python plugin is re-linting and it takes around 2 to 3 seconds that is I feel slow , because I need to wait two to three second to check I did correct or not ?
Addtional Details:
VSCode
Version 1.20.0
Commit c63189deaa8e620f650cc28792b8f5f3363f2c5b
Extension :
2018.1 (01 Feb 2018)

Couldn't this be improved by running pylint inside a server similar to the one used by Jedi and selectively invalidating the astroid cache for newly saved files?


treewide: automatically add testVersion where possible

Motivation for this change
Things done

Built on platform(s)

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

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

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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

@SuperSandro2000 ran the script again from fresh master

Passing the package back in gets problematic when overriding. Just a simple override will cause the passthru to still use the original version. You will have to call the function also with the updated package.
We do this in some cases, but it's not very nice. Let's not add it when it is not absolutely necessary.

Passing the package back in gets problematic when overriding. Just a simple override will cause the passthru to still use the original version. You will have to call the function also with the updated package.
We do this in some cases, but it's not very nice. Let's not add it when it is not absolutely necessary.

It seemed to be the preferred way to add versionTest, but you're saying it isn't? I understand why, but what is the alternative? Wrapping the whole thing in let self = ... in self? Seems like overkill to me as well...

Wrapping the whole thing in let self = ... in self? Seems like overkill to me as well...

Yes, but as far as I can tell it would be the preferred option. It's indeed a hassle though.

It seemed to be the preferred way to add versionTest, but you're saying it isn't? I understand why, but what is the alternative?

What you suggested. At least, that is my view on it.

Gonna wait for #119942 to merge before continuing this

Gonna wait for #119942 to merge before continuing this

#119942 is merged. News?

Can't this be done inside stdenv.mkDerivation ? so other stdenv also get this feature and it avoid boilerplate.


Panel item settings and Clock Settings

Hopefully this is at least up to your style. SettingsFragment has not been documented yet but it works.
The Clock PanelItem has been updated to allow changing the time settings.

Sorry I know the commits are a mess.

Could you make the scheme file use double quotes ? I think it looks better that way

Not a problem.

Also, could you please do:
if (typeof this._settings[key] !== 'undefined') where these checks are done ? "=== undefined" will produce a lint error :)

I need to get a linter :smile:

You can copy-paste into here: http://jshint.com/
Or even better set up a plugin for your editor :) I use https://www.bithound.io/github/andersevenrud/OS.js-v2/master for managing all linting and techdept. Pretty awesome stuff actually.

Is this mergable now, or is more commits coming ?

Will be doing a thurough test when I get off work and merge this :+1:

Seems to be working like a charm
Nice job! :)

I added docu to the settings-fragment

@RyanRiffle In latest commit I have made abstraction for the settings stuff. So now everything is mostly done in PanelItem.
https://github.com/andersevenrud/OS.js-v2/blob/e229b96e056e73ab504465d6409d532fa47a5e53/src/packages/default/CoreWM/panelitems/clock.js

I wasn't doing anything in PanelItem itself just because I figured not all panel items would need settings but that works well too :smile:

@RyanRiffle It has changed a little bit after a few more commits, but basically the same :)

Alright Ill just view the diff to get an update.


Question regarding the json data set

Could you tell me how you created the example data set? I understand how the information is stored in the json file, but I am at a loss at how to generate a data set automatically from my own images. I have tried to write a script in js but haven't had much luck. What i'm looking to do is have users upload images to a public folder, then after so many images have been uploaded or based on time I will display a mosaic on the site. I'm pretty sure I could do it in python but I would love to create the data set on a server, on the fly.

Hello,
so it's been a really long time since I've looked at this project. But based on the json data file that I have https://raw.githubusercontent.com/efekarakus/mozaic/master/examples/tiles/all-tiles.json, it looks like the json input file needs to be formatted as:
{
"width": pixel width of one tile,
"height": pixel height of one tile,
"data":  [ [tile1], [tile2], ..., [tileN] ]
}
Where each tileJ in data is of the format = [[r1, g1, b1], [r2, g2, b3], ...] for every pixel in the tile.
To be honest, this project was done when I was a sophomore in college so the input dataset doesn't make much sense :/ but hopefully this helped.

I see, you just need to enumerate through the 20 x 20 tile pixel by pixel in RGB for the data set. Neat! Hey, I could handle that on the Commodore64 ;) Thanks for clearing that up.


No data points @ top ads by domain/queries

Hi!
Not sure whether you're able to help out here too, but I'll give it a shot.
Followed your guide, everything setup correctly as it seems, dashboards are working and data is coming in.
What's not working:

Every other graph displays data as intended.
Did I miss something? Any pointers?
Thanks!
Cheers,
Aeon

This is usually an indication that the server running this cannot reach http://pi.hole/admin. Try running the container using docker-compose up (without the -d) to see what errors it is throwing.

I've added an environment variable to allow you to manually specify the location of your pi. If you cannot reach http://pi.hole/admin, try changing that line of code to the pihole instance ip address directly.

Now it's working after I exchanged the dns name for the IP. Thank you @Brandawg93


style(error): changed links style to not have the same as default text

PR Type

[x] Bugfix
[ ] Feature
[ ] Refactoring

Context

[x] REF #6654
[ ] Requires deployment <snek/rubick/worker>

Before submitting pull request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality

Optional

[ ] I've tested it at </ksm/collection>
[ ] I've tested PR on mobile
[ ] I've written unit tests 🧪
[ ] I've found edge cases

Did your issue had any of the "$" label on it?

[x] Fill up your DOT address: Payout

Community participation

[x] Are you at KodaDot Discord?

Screenshot 📸

[x] My fix has changed something on UI; a screenshot is best to understand changes for others.

Copilot Summary

🤖 Generated by Copilot at 769abca
Refactored the code for opening the shopping cart modal from the navbar. Moved the logic and configuration from ShoppingCartModalConfig.ts and ShoppingCartButton.vue to Navbar.vue to improve code organization and performance.

🤖 Generated by Copilot at 769abca

ShoppingCartButton
Simpler, no more emit -
Autumn leaves falling

pay 10 usd

😍 Perfect, I’ve sent the payout
💵 $10 @ 5 USD/DOT ~ 2 $DOT
🧗 16UcV9V6nVvPYdHz98ymUKmNLkzjCEU5sbKJMi7hxYyTHjzR
🔗 0x4ddf165c179de01afe5b2032dfa95887770eb3cabe5c4a10dcedf847ca2108ea
🪅 Let’s grab another issue and get rewarded!
🪄 github.com/kodadot/nft-gallery/issues


write AST-mod for adding fillet, piped to extrude variable expression

See video in #2606 for context but essentially write an ast-mod that takes
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %)
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)

And transforms it to
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %, 'seg01')
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %)
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({
    radius: 5,
    tags: ["seg01"],
  }, %)

@Irev-Dev, thank you for the sketch on face tip; it helped a lot to understand the situation. Please see my findings and ideas and check if I am missing anything.
We need to create a UI button for filleting, which involves selecting an edge, tagging it, and modifying the AST to include the fillet operation within the Extrude. Here's a plan:
Data Flow

User Interaction: User interacts with the application (e.g., selects an edge).
Event Capture in Stream Component: Stream.tsx handles mouse events and captures the edge selection.
Event Processing:

sendSelectEventToEngine normalizes the coordinates and creates a selection event.
sendSelectEventToEngine uses modelingSend to send the processed event to the state machine.

State Management:

Modeling Machine State: modelingMachine.ts stores selections (edges/faces) in selectionRanges.
Context Provision: ModelingMachineProvider.tsx provides context and state management for the modeling machine, enabling components to access the current state and send events.

AST Modification:

Function Invocation: The state machine calls functions in modifyAst.ts to modify the AST based on the selections stored in the context.
Guards: Guards in modelingMachine.ts ensure certain conditions are met before transitions or actions occur.

Main Components

src/components/Stream.tsx - Capture user interactions and trigger events.
src/machines/modelingMachine.ts - Manage the application's state, store selections, and trigger actions.
src/components/ModelingMachineProvider.tsx - Provide context and state management for the modeling machine.
src/lang/modifyAst.ts - Define functions to modify the AST based on selections and the fillet operation.
src/Toolbar.tsx - Provide UI for selecting tools and triggering operations like fillet.
src/handlers/EdgeSelectHandler.ts - Handle logic specific to edge selection and processing.

Steps

Create Fillet Button: Add a Fillet button in src/Toolbar.tsx.

<ActionButton
  onClick={() => send({ type: 'Enter fillet', data: { forceNewFillet: true } })}
>

Manage Fillet State: Update modelingMachine.ts to manage Fillet mode state.

on: { 'Enter fillet': 'filletMode', },
states: { filletMode: { /* State Logic */ }, }

Edge Selection Handling: Ensure edge selection logic in src/components/Stream.tsx captures edges.

sendSelectEventToEngine(e, videoRef.current, streamDimensions)

Trigger Fillet Operation: Use modelingSend to send the selection event to the state machine.

modelingSend({ type: 'Process Fillet', data: edgeSelection })

AST Modification: Write AST transformation logic for Fillet in src/lang/modifyAst.ts.

function applyFilletToEdge(ast, edge) { /* Logic */ }

//////////////////
Functionality Discussion
We start with something simple, but the logic must be valid for the following scenarios:

Selection: The selection involves not only individual edges but also chained edges and faces.

  |> fillet({
    radius: 5,
    // edges
    tags: ["seg01”, "seg02”, "seg03"]
    // or chained edges

    tags: [“chain01”]
    // or faces

    tags: [“face01”]

Tags: There are more edges in the extruded volume than sketch segments, especially if the extrusion merges with a different volume. Tagging the fillets to the sketch segments can be tricky. We can use a naming convention, like seg01(E) for extruded ones, seg01(A) for edges along the extrusion, and seg01(1), seg01(2), etc., for those that will be shattered by different volumes. For example:

const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %, 'seg01')
  |> line([1.29, -115.74], %)
  // other segments
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({
    radius: 5,
    tags: ["seg01(1)”, "seg01(2)”, “seg01(A)”, "seg01(E)”]
  }, %)

Or we can skip all that and just make fresh tags for each fillet without referencing the sketch segments.

Reference: Since fillets can be applied to several parts, it is worth writing a separate pipeline for it:

const fillet001 = fillet(10, [extrude001, extrude002])
    |> edge01
    |> edge02

Nice digging around, I couldn't actually tell you if you found everything or not without digging through it again myself, but it sounds about right.
I had thought the steps involved will roughly be the three tasks in #1206, i.e. we could start with just the code mod, write unit test for them etc, Then we look into getting the most basic UI selections working. Then we look into fixing up some of the selections. I think I want to stick with tags, and we are able to use the tags to get to all edges from an extrusion, but we can talk about it because I didn't quiet follow what you were talking about with some of the alternatives.
We should talk about gathering the fillets at the end because maybe that will effect the code-mod we want to right.

For refernce we were talking about
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([-6.27, -7.26], %)
  |> line([35.14, 55.93], %, 'tag')
  |> line([54.94, -6.44], %)
  |> line([15.67, -52.79], %, 'tag2')
  |> close(%)

const myExtrude = extrude(10.14, sketch001)

const sketch002 = startSketchOn(myExtrude, 'END')
  |> startProfileAt([49.21, 20.48], %)
  |> line([0.14, 12.33], %)
  |> line([31.52, 0], %)
  |> line([-2.94, -16.54], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)

const extrude001 = extrude(5, sketch002)
const myBody = fillet({
  radius: 1,
  tags: [
    getNextAdjacentEdge("tag", myExtrude),
    getOppositeEdge("tag2", myExtrude)
  ]
}, extrude001)

@Irev-Dev the mod and test are still in progress, but it would be great if you could check them out: 78fb73a773b4aa8bc76d127847d3e3576536679a
It works with 3 cases now:

Simple Case

const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %)
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)

Edge Case with Existing Tag on Another Line. A new unique tag is generated when another segment is already tagged.

const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %)  // selected edge
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg01') // tagged edge
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)

Edge Case Where the Selected Segment Already Has a Tag

const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03') // selected edge
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)

I will continue to work on edge cases.
Please let me know if there are any changes or improvements needed.

Hi @Irev-Dev
Update: 5ff92399bed40c8f953034196a35b6459d971b22
I've started to cover the cases where the fillet already exists, like here:
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %,) // selection
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03') // existing tag
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({ radius: 10, tags: ['seg03'] }, %) // existing fillet

Terraformed to:
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %, 'seg01') // new tag
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03')
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({ radius: 10, tags: ['seg03'] }, %)
  |> fillet({ radius: 5, tags: ['seg01'] }, %) // new fillet

The next case to cover would be:
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %,)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03') // select line with existing tag
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({ radius: 10, tags: ['seg03'] }, %) // modify existing fillet

Fillet the fillet
how to tag the edge of the fillet ?

I think it would be good to follow the same logic as with the general shatter case, when extruded edge gets shattered after the boolean operation, like this:

and treat the fillet like the last part of the shattered edge
in this case the code will look like this:

for example:
// initail edge
getOppositeEdge('seg01', extrude001)

// shattered edge parts:
getOppositeEdgeStart('seg01', extrude001)
getOppositeEdge01('seg01', extrude001)
getOppositeEdge02('seg01', extrude001)
getOppositeEdge03('seg01', extrude001)
getOppositeEdge05('seg01', extrude001)
getOppositeEdgeEnd('seg01', extrude001)

@Irev-Dev added new edge case, with existing fillet that has to be modified:
d1b515741e4276b0983d8755b171273a7ff218cd
take this:
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %,)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03') // select line with existing tag
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({ radius: 10, tags: ['seg03'] }, %) // modify existing fillet

and transform to this:
const sketch001 = startSketchOn('XZ')
  |> startProfileAt([2.16, 49.67], %)
  |> line([101.49, 139.93], %)
  |> line([60.04, -55.72], %)
  |> line([1.29, -115.74], %)
  |> line([-87.24, -47.08], %, 'seg03')
  |> tangentialArcTo([56.15, -94.58], %)
  |> tangentialArcTo([14.68, -104.52], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(50, sketch001)
  |> fillet({ radius: 5, tags: ['seg03'] }, %) // new radius

there are still a lot of other cases, that I've mentioned above
But I think it is a good time to hook up ast-mod with UI and user's selections..
@Irev-Dev what do you think?

how to tag the edge of the fillet ?

Right!, another idea would be to stick to the principle of being able to tag faces and edges in the operation in which they are created, so that if you have |> fillet({ radius: 10, tags: ['seg03'] }, %, 'filletTag'), this face the arc surface and the two deges get the filleTag tag, Then we can use the tag by itself the the face/surface and getEdge getOppositeEdge for the two edges (using the same extrude direction for them).
But having said that, is there a real need to select this edge? I ask because when you have a straight edge going into a tangential arc, that then follows with another tangential segment, in most CAD can you fillet these separately? I thought they must be all filleted together? in which case using getOppositeEdge('seg01', extrude001) to fillet one segment will naturally also fillet the curved edge from the previous fillet? hopefully that made sense.

But I think it is a good time to hook up ast-mod with UI and user's selections

Absolutely!
I might make you branch so far into a PR again, I think it's the best way to leave comments in line.

But having said that, is there a real need to select this edge?

I think, yes, we need to be able to select it in order to cover these cases:

add the fillet setting like:

tangent propagation - off
tangent propagation - on
partition fillet - on
etc..

add the fillet setting like:
tangent propagation - off
tangent propagation - on
partition fillet - on
etc..

Oh right that's helpful.
Face1, 2, 3 etc might be needed, but would be curious if we can avoid it, I think just using indexes like like that is more likely to be brittle to changes but we might have to do it, (I think we spoke previously about a boolean operation that splits a staged face into two, it's unavoidable I think at that stage, need to use indices.)
Maybe conceptualizing an edge as something two faces have in common.

const sketch001 = startSketchOn('XZ')
  |> startProfileAt([1.64, 2.24], %)
  |> line([0.52, 1.62], %, 'tag2')
  |> line([3.38, -0.12], %, 'tag1')
  |> line([0.22, -2.38], %)
  |> line([-4.04, -0.96], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)
const extrude001 = extrude(5, sketch001)
  |> fillet({
    radius: 1,
    tags: ["tag1"],
    tag: 'filletTag'
  }, %)
  // and then for filleting the edge highlighted in red
  // |> fillet({
  //   radius: 1,
  //   tags: [commonEdgeOfTwoFaces('tag2, filletTag')],
  // }, %)

Currently we don't allow adding tags to fillet calls, and commonEdgeOfTwoFaces is a hypothetical helper function (which would be named better).


Group meds by reason

Adding alphabetical sort functionality for the "reason column" in the medications pages so all items are sorted by reason

Made this by mistake, please delete

Issue added to wrong repo


Add OwrBus which aggregates messages from a new OwrMessageOrigin interface

WIP, but I'm keeping all commits buildable, so parts of it could be landed.

Updated with fix from previous comment about g_strdup everywhere


Don't resize one pane when container size changes

As far as I can tell, there's no way to create a sidebar that the user can resize, but that stays a fixed size (in pixels) when the window is resized. This is a common sidebar or panel configuration, so I think it should be possible in a library like this.
Is this already possible?

Hi @davidcann
It is, check the last example on this page https://orefalo.github.io/svelte-splitpanes/
	<Pane size={6} minSize={6} maxSize={6}>

MenuBar

	</Pane>

It seems that everything in the library is based only on percentages, so pixels are not possible. Is that correct? Otherwise, the library looks fantastic, so I wish it could do this too!

You got it right, pixels are nightmare for us. Not because we don't know how to transform pixels to prec and vice versa, but because it doesn't capture all cases in a general way(never forget SSR and user custom styling), not to mention legacy supports (when Observer is partially supported). See the full discussion in #33.

I'd also like for the user to be able to drag to change the sidebar's width and have it remain fixed at that pixel width, like described above.

Therefore, the current status, until we'd choose or get a PR that handle all the small side cases, is that we prefer to keep the conversion between PX and % to the user land.
Maybe it should be documented in an example that tells how to do this, but here is my recepie:

For SSR, you can add custom CSS styling to the pane that sets min-width: 1px; max-width: 1px;; change the measurements and the dimension to your case.
On mount, calc by JS the size of % which equals to the amount of PX
Use JS modern Observer for the container dimension, or for non-modern client use a custom trigger when the container size should be changed(e.g. when side menu is being opened/closed) together with listening to window resize event, and when it gets trigger, do the same as in 2.

Wish that there will be an easier way to achieve this all things together. As mentioned, the current status is to let the user to deal with this issue by himself, since he chooses how complicated the code should be for capturing all this side cases. (Some don't care about SSR and non-modern support.)


GitHub Actions: Speed up CI

Current situation
The CI takes quite long because it uploads a 2 GB binary package tar ball and other things needed for the kola tests and then downloads that again.
Impact
The package build speedup reduced the build time but now the bottleneck is in the up- and download.
Ideal future situation
We run the kola tests as step of the first workflow so that we can stop uploading the binpackages for the devcontainer. We can still offer it as separate workflow if wanted but then we should skip the test that needs binpackges (skipping logic can exist inside the kola test).

If we run the kola tests in the same build step - which makes a lot of sense to me! - we could skip uploading any artifacts other than the test results. A quick calculation from a recent run shows that we would save about 8GB of uploads, ie. 4GB per architecture.
I don't really see a need to keep offering a separate kola run; CI should be ephemeral. I get that we sometimes might just want to re-run tests, but we should explore other options for that, e.g. use Bincache.

Being able to download the built image is quite useful for extra testing without having to start a Jenkins or local build first.

Is this something people do? For digging into test run failures? Hmmm.
Which one would we keep, the generic one or the vm-image one? IIRC the generic one is used for testing, no?

When reviewing PRs it's good for independent testing, for external PRs even more.

Which image would we want to upload, the generic one (flatcar_production_image.bin) or the vendor image (flatcar_production_qemu_uefi_image.img)? The generic is used for running tests, right? But the vendor image is better for testing interactively.


Update apache thrift version in cadence client library

Describe the bug
From the commit id  of apace/thrift dependency I see that we are using v0.10.0 of apace/thrift. But we have multiple CVEs filed that needs updating the library to the latest version (v0.14.x)
To Reproduce
Is the issue reproducible?

Yes

Steps to reproduce the behavior:
Everyone using cadence client library will get apache/thrift older versions as an implicit dependency and upon checking for security vulnerabilities we get the CVEs flagged
Expected behavior
Up-to-date apache/thrift dependency

Hi Cadence is moving towards gRPC and it’ll almost there. After migrate to gRPC you can turn off the thrift ports. There will be a period that we will support both protocols until some time that we decided to deprecate thrift.
Would it solve this problem for you?

@longquanzheng I understand the move to gRPC, but you have broken releases, that are not upgradable. And memory leaks in previous versions (hopefully not in the newest - but no way to try). How can you fix that?

👋 For what it's worth, we faced this same problem, and this was all we needed to fix it: https://github.com/digitalocean/cadence-client/pull/1/files
We've just been maintaining that fork and carrying that patch forward

Closing this since the dependency (github.com/apache/thrift) has been updated:
https://github.com/uber-go/cadence-client/blob/master/go.mod#L6


Installation through mamba

Improvement Description
Due to a growing number of packages, instead of installing through conda install through parallelizable mamba to speed up installation.
Current Behavior
conda env create -n qiime2 --file qiime2.yml.
Proposed Behavior
conda install mamba
mamba env create -n qiime2 --file qiime2.yml
References

Mamba documentation

Hi @crusher083 - my understanding is that mamba is a drop-in replacement for conda, so the steps you proposed above should just work. Did you try it and run into some kind of issue? Or are you proposing that we add this to the user docs? Let me know what you had in mind and I'll make sure this issue winds up in the right place. Thanks!

@thermokarst QIIME2 is a package-heavy software, so I propose adding it to docs, as it speeds up the installation of QIIME2 significantly.
time conda env create -n qiime2-2020.8 --file qiime2-2020.8-py36-linux-conda.yml
real    5m23,541s
user    3m42,669s
sys     0m20,728s

After env removal and cleaning cache with conda clean -a
time mamba env create -n qiime2-2020.8 --file qiime2-2020.8-py36-linux-conda.yml
real    3m15,572s
user    2m19,527s
sys     0m20,032s