Talk about division and visibility

Hello Romain
I open this issue to discuss two points:

Can a division really be negative? Is there any sense in doing Residue::create(100)->divideBy(-3)? I sincerely ask myself this question and have no idea in either direction.

All methods are public, but I think that many of them don't make sense to be public.

Waiting for your feedback

Hy @MockingMagician

Can a division really be negative? Is there any sense in doing Residue::create(100)->divideBy(-3)? I sincerely ask myself this question and have no idea in either direction.

I don't think it brings anything to divide by a negative number, you're right

All methods are public, but I think that many of them don't make sense to be public.

you are also right, it is an old habit that I have to declare everything public. We can change the methods that can to 'private'

can I start working on these 2 points, unless you have already started?
FYI: I started to set up an online tester to facilitate testing and eventually bug reports: https://residue-online-php-tester.herokuapp.com/ (beta)

Hi @romainnorberg
Great to be able to test the library live: https://residue-online-php-tester.herokuapp.com/
Deeper, I ask myself new questions that you will surely be able to answer, but the division is still unfair. For example:
Residue::create(100)
    ->divideBy(3)
    ->decimal(2)
    ->step(4)

Result: [36, 32, 32]

Residue::create(100)
    ->divideBy(3)
    ->decimal(2)

Result: [33.33, 33.33, 33.34]

...
In addition to being unfair, the distribution can also be with a surplus on the first or last member depending on the number of starts and the size of the step.
I wonder if the distribution should not be fair all the time and leave a remainder in all cases.

To answer your questions, I have a first draft about visibility, I will pass it on to you. At the same time, I also thought about the idea of fair distribution, but maybe this is outside the scope of this package's definition, or maybe I'm doing the opposite in a way that I don't see.
I'm waiting for your feedback on this point.

Hi @MockingMagician
Thank you in advance for the point concerning visibility
Regarding the division, the initial wish is:

in the case where the step is defined: to distribute equitably and at best in order to avoid having any remainder, for example:
Residue::create(340)
    ->divideBy(3)
    ->step(20) // [120, 120, 100]

Residue::create(340)
    ->divideBy(3)
    ->decimal(2)
    ->step(0.5) // [113.5, 113.5, 113]

without a defined step: to distribute fairly according to the number of decimal provided.

We could keep this default behavior and at the same time suggest a way to force the remainder, for example:
Residue::create(100)
    ->divideBy(3)
    ->decimal(2)
    ->step(4, <mode>) // <mode> could be ALLOCATE (default behavior) or REMAINDER (your example)

With remainder mode:
Result: [32, 32, 32]
Remainder: 4

Today this package meets the basic needs of a production project, it probably has bugs on the divisions. I am obviously open to all proposals to improve the portability of this package and its efficiency.
Thank you for your time

One more question
What about decimals and step when they "not match" ?
example :
Residue::create(100)
    ->divideBy(3)
    ->decimal(2)
    ->step(0.0124)

Result: [33.33, 33.33, 33.33]
Step remainder: float(0.0010000000000057)

Residue::create(100)
    ->divideBy(3)
    ->decimal(2)
    ->step(0.0124)

Result: [33.34, 33.33, 33.33]
Step remainder: float(-0.0059999999999894)

As you can see both results are strange...
In the first, all have 33.33 and we've got a stepremainder of 0.0010000000000057 looks prety good but stepRemainder should be more 0.01 in that case
In the second example, first part has 33.34, why not after all but stepRemainder is now negative and has -0.0059999... as value, but it should be more 0 in that case.
So you have this strange behaviors when step and decimals are not matching... It is out of the scope of the initial talk, so I leave it behind for now, we can discuss about later in new issue...

We could keep this default behavior and at the same time suggest a way to force the remainder, for example:
Residue::create(100)
    ->divideBy(3)
    ->decimal(2)
    ->step(4, <mode>) // <mode> could be ALLOCATE (default behavior) or REMAINDER (your example)

With remainder mode:
Result: [32, 32, 32]
Remainder: 4

Il like that way to open the api. In the case of allocate, who have to be allocate ? first , second , third, ...,  last ?
It have to be consistent and always in the same way

So you have this strange behaviors when step and decimals are not matching... It is out of the scope of the initial talk, so I leave it behind for now, we can discuss about later in new issue...

yes i may have noticed this weird behavior while setting up https://residue-online-php-tester.herokuapp.com/ yesterday. I started looking at a bug-fix but didn't have time to work on it today (busy day)

Okay @romainnorberg
So just a recap to see if we sing the same song:

In case of no step (fairly distribution)

Residue::create(100)
    ->divideBy(3)

Result : [33.33, 33.33, 33.33]
Remainder: 0.01

In case of step, default to ALLOCATE, or choosing REMAINDER

Residue::create(100)
    ->divideBy(3)
    ->step(0.01)

Result : [33.34, 33.33, 33.33]
Remainder: 0

Residue::create(100.01)
    ->divideBy(3)
    ->step(0.01)

Result : [33.34, 33.34, 33.33]
Remainder: 0

Residue::create(100.01)
    ->divideBy(3)
    ->step(0.01, self::MODE_REMAINDER)

Result : [33.33, 33.33, 33.33]
Remainder: 0.02

Can you confirm I'm singing the song ^^ ?

Residue::create(100)
->divideBy(3)
->decimal(2)
->step(4, ) //  could be ALLOCATE (default behavior) or REMAINDER (your example)

And about the mode on split ?
Residue::create(100.01)
    ->divideBy(3)
    ->step(0.01)
    ->split(<mode>) default to allocate

As is, with orwithout step, the api will stay consistent ... :thinking:

yes @MockingMagician, very nice! (I was responding with the solution: Residue::create(100, self::MODE_REMAINDER) but your solution is better)
So:

In case of no step :

Residue::create(100)
    ->divideBy(3)
    ->split() // default to allocate

Result : [33.33, 33.33, 33.34] // we allocate the remainder to the last element to keep the advantage of \Generator (unless there is another solution ?)
Remainder: 0

/////

Residue::create(100) // fairly distribution
    ->divideBy(3)
    ->split(self::MODE_FORCE_REMAINDER)

Result : [33.33, 33.33, 33.33]
Remainder: 0.01

In case of step, default to ALLOCATE, or choosing MODE_FORCE_REMAINDER

Residue::create(100)
    ->divideBy(3)
    ->step(0.01)
    ->split() // default to allocate

Result : [33.34, 33.33, 33.33] // first to last
Remainder: 0

/////

Residue::create(100.01)
    ->divideBy(3)
    ->step(0.01)
    ->split() // default to allocate

Result : [33.34, 33.34, 33.33] // first to last
Remainder: 0

/////

Residue::create(100.01)
    ->divideBy(3)
    ->step(0.01)
    ->split(self::MODE_FORCE_REMAINDER) // default to allocate

Result : [33.33, 33.33, 33.33]
Remainder: 0.02

What do you think ?
In this case, we have to update toArray() method (split() returns a \Generator, and toArray returns iterator_to_array($this->split())

Yeah @romainnorberg I think we are so close to a clean solution
I'm always a bit annoyed about the difference in behavior in the allocation...
We have to find a solution so that the behavior is the same no matter if the step is defined or not...
Need to think about it... I have a feeling about to factorize in such a way splitWithoutStep and splitWithStep. I just don't clearly see the good way at this point

A good start for this job is to implement our contract for Residue, so we can already define what is public and what is not (the not defined in our contract) :
<?php

namespace Romainnorberg\Residue\Contracts;

use Generator;

interface ResidueInterface
{
    public const MODE_ALLOCATE = 'allocate';
    public const MODE_EQUITY = 'equity';
    public const MODES = [
        self::MODE_ALLOCATE,
        self::MODE_EQUITY,
    ];

    public function divideBy(int $divider): self;
    public function step(float $step): self;
    public function decimal(int $decimal): self;
    public function split(string $mode = self::MODE_ALLOCATE): Generator;
    public function getRemainder(): float;
    public function toArray(): array;
}

Result : [33.33, 33.33, 33.34] // we allocate the remainder to the last element to keep the advantage of \Generator (unless there is another solution ?)

Cleary want to keep generator... but maybe a try without to see if something can be done... then rewrite in the way of functional generator if possible
I gonna work on potential factorization of splitWith and splitWithout...

first, thank you already for your involvement!  We have tests so we can refactor as we want,  if we can make this package more robust, more clean and more cohesive while keeping it light, I am for.
I'm ok to implement a contract like your example ResidueInterface, I can't wait to see your work on this part 👍

Hi @romainnorberg

first, thank you already for your involvement!

This package can be usefull for one of my project (On the condition that it works without edge effect). And I must admit that I really liked your code, I found it rather clean and I didn't see a single "else", it's so beautiful and rare that it made me want to take part in your project.

I'm ok to implement a contract like your example ResidueInterface, I can't wait to see your work on this part :+1:

I hope to come back soon with a (start of) solution

I think I have the shot, :tada:  seems good on the first look, no unexpected behaviors on the first test bench, always a bit drafty, but the main is there.
Waiting for your review and comments https://github.com/romainnorberg/residue/pull/3

Hy @MockingMagician feedbacks here: https://github.com/romainnorberg/residue/pull/3#pullrequestreview-510953846
-> nice work 🎉

Hy @MockingMagician can we close this issue ? I think it's covered by your PR #3

@romainnorberg yeap nothing to discuss more here ^^


felix/bpf: CTLB workaround for host and nodeports

Description
Packets from the host are intercepted at the first device they hit. If
it is towards the same host, it is the loopback device, otherwise it is
the main device on the cluster network. At that point we do the DNAT -
select the backed pod for the nodeport. We assume that there is a
default route so it hits a device. Otherwise we cannot do much.

We either use FIB to redirect the packet to an outgoing device (if on lo
or if it should go to a different one than the default) or we redirect
the packet to the bpfin.cali iface to turn the packet around into the
host address namespace that can route the packet. If an overlay is used,
we SNAT the packet so that it has the tunnel's source and we redirect it
to the tunnel.

Related issues/PRs
refs https://github.com/projectcalico/calico/issues/4509

Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

TBD

Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one docs-* label.

docs-pr-required: This change requires a change to the documentation that has not been completed yet.
docs-completed: This change has all necessary documentation completed.
docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

release-note-required: This PR has user-facing changes. Most PRs should have this label.
release-note-not-required: This PR has no user-facing changes.

Other optional labels:

cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

Spotted a couple of points on second read through. I'm still wary of accept_local; could we get rid of that if we assume bpf_redirect_neigh?

Not sure as if a pod is responding to local host it needs to revers DNAT and the resulting packet may have the local host's source if it was accessing the pod via local nodeport :sweat_smile:  We may be able to deliver straight to a socket but I did not explore that concept yet.


Voice pitch changes in a streaming application

Hi, thanks for the great library!
I tested the library in a non-streaming application, and everything worked fine (reading from one file, converting sr, writing the resulting buffer to another file).
However, when I switched to a streaming application, I noticed that the library alters the voice pitch - makes the voice pitch high when converting the sampling rate to a higher rate (16KHz->48KHz) and low when converting the sampling rate to a lower rate (48KHz->16KHz).
I looked at everything and cannot find the bug in my code. Do you know by any chance if anything in the library might cause this behavior?
Thank you so much!

Sample rate conversion alone won't preserve pitch. You should look for pitch-shifting algorithms.

Sample rate conversion alone won't preserve pitch. You should look for pitch-shifting algorithms.

Or if you are upsampling 16kHz to 44.1kHz and playing back at 16kHz, the pitch will be lower. You should playback it at 44.1kHz as well.

Or if you are upsampling 16kHz to 44.1kHz and playing back at 16kHz, the pitch will be lower. You should playback it at 44.1kHz as well.


Tree/alignment features

This adds some features (in a backward compatible manner) needed for jointly viewing alignments and trees, namely

the ability to skip an update when resorting children
the ability to return nodes in the order that they appear as laid out
the ability to toggle whether or not labels are shown

Also, it restores index.html to Bootstrap 4, which was undone by this commit. Bootstrap 4 is also present in the phylotree core to render menus. As such, menus in index.html currently look like this due to this version mismatch:

The first failure was an easy fix, while I believe the second is related to this:
https://github.com/sphinx-doc/sphinx/issues/5417


HDFS job jar not accessible

In routers.conf, when I try to create endpoint in which jar is pointing to hdfs and invoking it with curl, I'm seeing the following error.
Exception in thread "pool-1-thread-3" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at io.hydrosphere.mist.jobs.resolvers.HDFSResolver.fileSystem$lzycompute(HDFSResolver.scala:20)
at io.hydrosphere.mist.jobs.resolvers.HDFSResolver.fileSystem(HDFSResolver.scala:19)
at io.hydrosphere.mist.jobs.resolvers.HDFSResolver.exists(HDFSResolver.scala:24)
at io.hydrosphere.mist.jobs.resolvers.HDFSResolver.resolve(HDFSResolver.scala:28)
at io.hydrosphere.mist.jobs.JobInfo$$anonfun$1.apply(JobInfo.scala:49)
at io.hydrosphere.mist.jobs.JobInfo$$anonfun$1.apply(JobInfo.scala:49)
at scala.util.Try$.apply(Try.scala:192)
at io.hydrosphere.mist.jobs.JobInfo$.load(JobInfo.scala:49)
at io.hydrosphere.mist.jobs.JobInfo$.load(JobInfo.scala:45)
at io.hydrosphere.mist.master.data.EndpointsStorage.io$hydrosphere$mist$master$data$EndpointsStorage$$load$1(EndpointsStorage.scala:43)
at io.hydrosphere.mist.master.data.EndpointsStorage$$anonfun$getFullInfo$1.apply(EndpointsStorage.scala:47)
at io.hydrosphere.mist.master.data.EndpointsStorage$$anonfun$getFullInfo$1.apply(EndpointsStorage.scala:46)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:253)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more
Do I need to configure anything extra for accessing jars in HDFS? Any inputs would be appreciated.

Thanks for reporting!
No, you don't need any special configuration for that.
That problem appears because hadoop dependency is missed from runtime dependencies for mist.
There is a workaround for that problem (until we'll fix it) - you can manually add hadoop into cp in bin/mist-master

we dropped support of hdfs artifacts


Always empty string

Hey... I'm using ruby 1.9.3 with Rails v3.2. If I do
Albino.colorize('puts "Hello World"', :ruby)

I get an empty string.
I also found this: http://stackoverflow.com/questions/5945522/rails-syntax-highlighter-albino-is-not-working

I'm guessing this is a real issue as I am seem to be having the same issue


include *.cds file to editorconfig

related = https://github.com/SAP/abap-file-formats/issues/161, which file extension to use is an open issue


Error not thrown fix

@hubt just starting this PR for the client side fix of this issue. We can review this and merge once you have the backend side it fixed

Oops, just realized I branched this off a branch I was working on to add better test coverage and clarify the documentation on the incorrect usage of:
branch.data(function(err, data) {
     branch.sendSMS(...);
});

So let's be sure to review that before we merge.

cool - can we maybe make some assertions too around making the XHR return 4xx and 5xx errors?

alright @dmitrig01 look good?

ah wait a sec. I need to write those tests for 4xx and 5xx errors. Let me do that first

Ok @dmitrig01 feel free to review

:+1:


AttributeError: 'NoneType' object has no attribute 'recognize_async'

I tried to install this package with winrt, but on import I got this error:
Traceback (most recent call last):
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\__main__.py", line 10, in <module>
    results = ocr_reader.read_nearby(screen_coordinates=(0, 0))
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\_screen_ocr.py", line 154, in read_nearby
    screenshot, offset=bounding_box[0:2], screen_coordinates=screen_coordinates
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\_screen_ocr.py", line 160, in read_image
    result = self._backend.run_ocr(preprocessed_image)
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\_winrt.py", line 68, in run_ocr
    lambda: asyncio.run(self._run_ocr_async(image))
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\concurrent\futures\_base.py", line 432, in result
    return self.__get_result()
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\concurrent\futures\_base.py", line 384, in __get_result
    raise self._exception
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\concurrent\futures\thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\_winrt.py", line 68, in <lambda>
    lambda: asyncio.run(self._run_ocr_async(image))
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\asyncio\runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "C:\Users\Davron\AppData\Local\Programs\Python\Python37\lib\asyncio\base_events.py", line 568, in run_until_complete
    return future.result()
  File "C:\projects\ocr\venv\lib\site-packages\screen_ocr\_winrt.py", line 46, in run_ocr_async
    result = await engine.recognize_async(bitmap)
AttributeError: 'NoneType' object has no attribute 'recognize_async'

Steps:

Install using pip install screen-ocr[winrt]
Download and install Tesseract
Try to run python -m screen_ocr

OC: Windows 10
Python: 3.7.0

Sounds like this line is returning null:
engine = ocr.OcrEngine.try_create_from_user_profile_languages()
This is a Windows API. You should be able to reproduce this by running the following in a Python REPL:
import winrt
import winrt.windows.media.ocr as ocr
engine = ocr.OcrEngine.try_create_from_user_profile_languages()
engine

If engine is None, then that confirms that this is the problem. I'm not sure why this would be. The documentation indicates that this could be because your configured language is not supported. Are you using some language other than English?

Issue solved. The problem was in language pack.
For any one who faces this issue:

Settings-> Time & Languages -> Languages
select your language -> options
Download speech, regional format, handwriting for your languages.

Thank you for debugging this! Improved the error message to point here.


Add support for Hive (Spark) backends

Codecov Report
Attention: Patch coverage is 60.45016% with 123 lines in your changes missing coverage. Please review.

Project coverage is 88.99%. Comparing base (c2b6f49) to head (91f9b9d).

Files with missing lines
Patch %
Lines

src/chronify/sqlalchemy/functions.py
39.72%
44 Missing :warning:

src/chronify/store.py
40.84%
42 Missing :warning:

src/chronify/hive_functions.py
41.17%
10 Missing :warning:

src/chronify/utils/path_utils.py
44.44%
10 Missing :warning:

tests/test_store.py
89.65%
6 Missing :warning:

src/chronify/schema_manager.py
64.28%
5 Missing :warning:

src/chronify/time_series_mapper_base.py
78.94%
4 Missing :warning:

tests/conftest.py
90.47%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #32      +/-   ##
==========================================
- Coverage   93.15%   88.99%   -4.17%
==========================================
  Files          34       36       +2
  Lines        2192     2371     +179
==========================================
+ Hits         2042     2110      +68
- Misses        150      261     +111

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


#1775 Vertical tab name read. Spreadsheet cell value read fix.

Can we add this Shortcut CTRL+ALT+PAGE_UP / CTRL+ALT+PAGE_DOWN on the Keys Preferences page? For example, my laptop has no PAGE_UP/PAGE_DOWN keys and I want to change the binding.

Unfortunately we can't, it is OS-dependent set of shortcuts (traversal).
All traversal shortcuts consist of combination of page up/down + ctrl/alt/shift.
On some MacOSes page up/down is a combination of fn+up/down

verified


Add a command parameter to allow you to add temporary permissions.

Hello, sorry for my poor English.
I do not know if you can understand what I mean.

I run this command twice, I want to give temporary permission for two days.
But it says I already have temporary permission.
So I want to add a command parameter: addtemp
When I use this command to obtain temporary permission to day.
/lp user XYBlue permission addtemp essentials.fly 1d
Once again, I use this command will give me permission to temporarily increase the day

Change this config option: https://github.com/lucko/LuckPerms/blob/master/bukkit/src/main/resources/config.yml#L67


add map and tweak responsive height of its container

Description
Add Mapbox map to main page
Addresses #72
Type of changes

[ ] Bugfix
[ ] Chore
[x] New Feature

Testing

[ ] I added automated tests
[x] I think tests are unnecessary

How to test
Run app, open index page and observe that map of SF is showing. Compare to Figma design. Attempt to pan/zoom with mouse and touch across diff devices.

@mantuok OK I polished this up, added some missing things based on your feedback, and pulled it out of draft. FYI I rebased on master, so you may need to clear out this branch locally to get the new version.
Furthermore, note that I adopted your naming convention for the mapbox token, so you can get rid of the other one locally if you still see it there.

@mantuok OK I polished this up, added some missing things based on your feedback, and pulled it out of draft. FYI I rebased on master, so you may need to clear out this branch locally to get the new version.
Furthermore, note that I adopted your naming convention for the mapbox token, so you can get rid of the other one locally if you still see it there.

FYI I just did the force push that rebases on master.


Ionic Capacitor Angular with Android 11 uri -> resolveNativePath -> Unable to resolve filesystem path

I am facing issue in Android 11 while using cordova-plugin-multiple-documents-picker and @ionic-native/multiple-document-picker to choose PDF document
Upload from Download folder working fine

Uploading from document folder or filtering document or traversing to document folder in directory(Example Whatsapp folder)
Facing issue in getting filepath

this.multipleDocumentsPicker       .pick(2)       .then((res: any) => {         console.log(JSON.parse(res));         const uploadPdfData = JSON.parse(res);         const uploadDataDetails: any = [];         let resolvedPath: any;         let promises: any[] = [];         for (let i = 0; i < uploadPdfData.length; i++) {           const obj: any = {};           resolvedPath = this.filePath             .resolveNativePath(uploadPdfData[i].uri)             .then((path) => {               console.log('>>>>>>>>>', path);               obj.name = uploadPdfData[i].name;               obj.filePath = path;               obj.type = 'pdf';               obj.size = uploadPdfData[i].size;               uploadDataDetails.push(obj);             });           promises.push(resolvedPath); } }) .catch((error: any) => console.error(error));
Response data => [{name: "demo.pdf"
size: 12972
type: "application/pdf"
uri: "content://com.android.providers.media.documents/document/document%3A14627"}]
URI: content://com.android.providers.media.documents/document/document:A14627
this.filePath.resolveNativePath(uploadPdfData[i].uri) -> ERROR
ERROR Error: Uncaught (in promise): Object: {"code":0,"message":"Unable to resolve filesystem path."}
@hiddentao  Please check urgent issue

This plugin is no longer actively maintained. Please use an alternative. Perhaps one of the other contributors can help you.

ok Thank you


[BUG] Quotation marks are added to reports/queries

The version v1.5.13 introduces bug - qutation marks are added automatically and I think randomly to queries and reports:

On the version v1.5.12 the issue did not occure.

Ok, I figured it out.  The reason why this is happening is the underscores.  You're right, I should have included that from starters .. :-/.
Not sure what I should do now, because when I introduce this change, it's going to remove the quotes for all fields with underscores.. causing unwanted changes again 🤔.

Release is on the way:
https://github.com/waldo1001/crs-al-language-extension/actions/runs/2616988311

I've downloaded the newest version and I do confirm that the issue has been resolved. Thanks a lot for such quick bugfix :)


Nondeterministic behavior with variable init

Test code:

using (var graph = new TFGraph())
{
var W = graph.Variable(graph.Const((float)1.0));
var b = graph.Variable(graph.Const((float)-1.0));
            var x = graph.Placeholder(TFDataType.Float);

            TFOutput m = graph.Mul(graph.ReadVariableOp(W, TFDataType.Float), x);
            TFOutput linear_model = graph.Add(m, graph.ReadVariableOp(b, TFDataType.Float));

            float[] trainDataX = new[] { 1.0f, 2, 3, 4, 5, 7 };

            using (var sess = new TFSession(graph))
            {
                sess.GetRunner().AddTarget(graph.GetGlobalVariablesInitializer()).Run();

                Console.WriteLine("res:");
                for (int i = 0; i < trainDataX.Length; i++)
                {
                    var runner = sess.GetRunner();
                    runner.AddInput(x, trainDataX[i]);
                    runner.Fetch(linear_model);

                    var output = runner.Run();

                    foreach (var res in output)
                    {
                        Console.Write(res);
                        Console.Write("\t");
                    }

                    Console.WriteLine();
                }

                Console.ReadKey();
            }
        }

I believe this should compute y =W*x + b but instead of correct result: 0,1,2,3,4,6 I am getting either -2,-3,-4,-5,-6,-8 or 2,3,4,5,6,8 at random.
Please correct me if my sample is wrong.

I suppose this is being caused by the problem described in #170, please see that issue for a workaround.

Thanks, the VariableV2 worked fine when using TF1.4. Thanks!


x/pkgsite: show no. of downloads per week

NOTE: This proposal was opened to a separate issue as told by @julieqiu The feature was originally requested here.
Nowadays almost all package registries show no. of downloads per week of packages installed by the CLI. I would like to propose the same for pkg,go.dev. Currently users have to see via Insights/Git clones for seeing how many people have installed their package via go get. This feature would be really handle for the registry and the users so they will be able to keep track of it.
We can probably show this it here. PS: I am not a designer.

As we don't have make to accounts to submit packages to the registry so the downloads listing will be public i.e. visible to all users by default.
Example of NPM of this feature. (public by default)
For PyPL you would have to see it via their public dataset on Google Big Query as answered here.

cc @heschik @katiehockman @hyangah for proxy support.

I'm not sure how useful this would be; proxy.golang.org is the default for Go setups, but it's designed to not be centralized. At best, it would be "download stats for this proxy", and not "download stats for all proxies".
Also, how do you intend to prevent "gaming" the stats? If I set up some sort of bot net to download a module thousands of times per day, do I suddenly make it to the "most downloaded" lists? Note that other proxy implementations like gocenter already have download stats, but I'm not sure what useful information you can actually gather from that.

@mvdan Hey! Thanks for reaching out on this proposal. I don't have any experience on how it will work on the proxy side (I am really serious). But as an author of a package (PS: I am not advertising my package but just linking if anyone doesn't believes me), I would like to how much popular the package is. I feel this is must for package authors so that they can be motivated to add more features and fix bugs and optimize code for the users.
I have checked GoCenter but it seems to be broken and outdated with the progress of pkg.go.dev(I believe as the README.md of my package is broken).
Most people will also rely on the official registry of GoLang IMHO.

I would say that either "number of packages/modules that has this as a (direct or indirect) dependency" is a better measure of popularity than "downloads".
Number of downloads is a proxy for "how frequently are things with this as a dependency built for the first time on a specific machine". Direct or indirect dependencies are a proxy for how many find your package/module useful. It will be a lower number, growing more slowly, but is probably a better indicator than just downloads.
Both will be skewed by a variety of factors. Only packages already indexed by pkg.go.dev will be accounted for in either a direct or indirect dependency count (this excludes a whole slew of possible packages). Downloads will be skewed by caches (on-disk module caches, Athens proxies in corporate environments, ...).

Hi, I find a download count quite useful. Of course, this can be easily manipulated, which is why I would advise against creating a ranking list. It's true that the number of times a module is used as a dependency indicates how popular a module is. But I personally would be more motivated to write modules, if I could see directly how much my module contributes to the community, or how much it is used.
With the dependency graphs, it is quite difficult to find out how relevant your module is, because you can't see directly how often the modules are used, which import your module. A module could be used in 100 different projects, but still have fewer downloads than a module that is used in an extremely large project. It is currently not obvious what kind of impact the own project has in the Go community.
For example, let's say that Project B is a low-level module, which is not used often, but it's used in popular modules, A for example.

Project
Imported By
Actual Downloads

A
1,000
1,000,000

B
10
1,400,000

As you can see, B has many downloads because it's used in A, but it's not obvious that it has an impact in the community, as we only see that it's used 10 times.
I think the whole thing also has a psychological effect. It gives the creators of such modules direct feedback that they are making a significant contribution, which increases the chances that they will feel more comfortable in the community and possibly have more fun writing modules.
Of course, such statistics are to be enjoyed with caution, because they can be easily manipulated and might not show every download (if another proxy is used for example), but this applies to almost all such statistics (GitHub Release download count, Docker pulls, NPM downloads, GitHub clone count, even GitHub stars can be bought, just to just name a few).
All in all, I think such statistics would make a great addition to motivate developers.
@mvdan what do you think about it?

Yes I totally agree that "download count" is not equal to popularity. If there is a popularity score planned for the future that would be better.
Just to throw an example in: I have a project that has 1,3k Stars on GitHub, and the GitHub insights tell me that it's cloned 100-300 times a day. pkg.go.dev tells me that it's imported by 26 projects. According to the GitHub traffic insights, I would guess that we have around 30k-50k total downloads.
In my case, I don't even want to know how "popular" my module is, I'd rather like to know if my effort is worth it (I wouldn't use my free time to work on it, if nobody would use it), and I think many people ask themselves the same question (a popularity score would also help).
Another idea that you might like more: In addition to "imported by" it could also show "deeply imported by", which would also increase if the project is used as sub-modules/indirect modules (I don't know the exact term for it, but I think you know what I mean).
This would also solve my example from earlier:

Project
Imported By
Deeply Imported By

A
1,000
1,100

B
10
1,140

I think this might fit better than a download count, and it would just extend the current calculation to include indirect imports, which are way more reliable and harder to manipulate.
After all, I don't really care about how exactly it's going to be displayed (download count, deep imported by, score, grades, etc.), I would just appreciate a better indication on how much impact a module has. I am sure that the Go team will find a good solution here. Do you think there will be a proposal or some other kind of public discussion? I would really like to follow such a thread.

I am reading my issue after one year and now I can say this idea wasn't a good one. I will be closing it.

Hey just checking to see if we still have some way to get the downloads/stats/usage of the golang package, all the links that I see are now not in use, example https://search.gocenter.io/, so any other way I can get the stats?
Thank you

No, there is no way to show the download number of go modules.

Thanks, is there any plan for future ?


How to add specific version attrs=23.1.0 in yocto krikstone version

Hi Team,
In our project we have to add attrs 23.1.0 particular version in yocto (krikstone) .Because we are fixing to version.  We are facing so many challenges(like build errors and multiple dependencies) by creating custom dev-python recipe. Could you please help me to add specific version smoothly in our target images. Please point me If any documentation available regarding the same.
Thanks & Regards,
Srinivas M

This seems like a topic to bring to the Yocto community. attrs is a regular Python package without any dependencies. Whatever the correct approach for Python packages is, is also the correct approach for attrs. AFAIK, nobody around here has any experience with Yocto.


Add simple example

This is a simple self-contained print configuration, that you can run without having a GeoServer with test data running. The example for a workshop.

LGTM.
But that worries me a bit... the json coming from the clients can reference any file on the server file system?

But that worries me a bit... the json coming from the clients can reference any file on the server file system?

Only files inside the folder of the print-configuration.


[joy-ui][Select] Fix keyboard navigation in Safari

[x] I have followed (at least) the PR section of the contributing guide.

Fixes #39083
To make keyboard navigation work for the Select component in Safari, a div element must be used instead of a button (as MUI Select does). Safari has only limited tab navigation and a button element cannot be focused out of the box. See https://caniuse.com/?search=tab for more information.

Because the button slot is now a div, some attributes are no longer available. For example, we have to check for the aria-disabled attribute instead of the disabled attribute. The MUI Select handles this in the same way. For example, see https://github.com/mui/material-ui/blob/375358b6f7d00342ad2a282c34950ebfb4b2cdc8/packages/mui-material/src/Select/Select.test.js#L451C2-L455C8
I am unsure about the name attribute. If a name prop is defined via the Select component, it is passed to both the button slot and the hidden input element. But a direct access (event.target.name) to the name attribute of the button slot is not possible anymore becaus it is a div now. I am not sure about the implications of this. But I think the most important thing is that the hidden input element has the name attribute, so that form handling works correctly.

Hey @sodenn thanks for taking the time to work on this; we appreciate your interest. Sadly, the team is busy working on other projects and we won't be able to review this PR any time soon, so we're closing it. Thanks for your understanding.


Suggestion about rules compilation

i noticed that the yara-x compiled rules is kinda readable compared to default yara compiled rules
default yara:

yarax:

im not sure if this are made on purpose but i think is better to make Compiled rules less readable for humans

IMHO that's not really an issue, what's the point of making the compiled rules "unreadable" to humans? I could scramble or compress certain data inside the compiled rules, but that doesn't change the fact that all the data is there. Which is exactly your concern?

Compiled rules do not intend to keep your rules private, the only intention is avoiding to compile the rules again. Even if rule names and identifiers are scrambled somehow, they could be reverse-engineered. Also, the old YARA doesn't do anything special in that regard, rule and string identifiers are also legible in compiled rules produced by YARA.


.contentWindow Support

Related to #2850, the support for <object>.contentWindow is quite fragmented. Chromium started supporting it about 3 years ago, and WebKit did it only a month ago. It seems Firefox has it forever, but not so sure about that. Time to dig up some old versions, apparently.

Looks like this is now covered by MDN data:
https://caniuse.com/mdn-api_htmlobjectelement_contentwindow
(via mdn/browser-compat-data#1522)


Karpenter doesn't wait for all the daemon sets to become Ready

Description
Observed Behavior:
We are seeing the pending pods are being scheduled to the new node where the daemon set is not Running in state yet after the new node is created. This behavior is not happening when using CAS where the node is tainted and wait for all the daemon sets are ready.
Why:
We use Linkerd and its CNI daemon set needs to update the config in the node first before the workload pods and being injected with sidercar proxy. There is an initContainer which checks the CNI config and failed because of the pending workload is scheduled to the new node before the CNI daemon set has done the config changes.
Expected Behavior:
Karpenter releases the new node to become ready only after all the daemon sets are in Running state.
Reproduction Steps (Please include YAML):
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
metadata:
  name: default
spec:
  amiFamily: AL2
  amiSelectorTerms:
  - id: ami-0bbb54e1eafc59d8c
  - name: amazon-eks-node-1.26-*
  metadataOptions:
    httpEndpoint: enabled
    httpProtocolIPv6: disabled
    httpPutResponseHopLimit: 2
    httpTokens: required
  role: KarpenterNodeRole-dev-apse2
  securityGroupSelectorTerms:
  - tags:
      karpenter.sh/discovery: dev-apse2
  subnetSelectorTerms:
  - tags:
      karpenter.sh/discovery: dev-apse2
---
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: default
spec:
  disruption:
    budgets:
    - nodes: 10%
    consolidationPolicy: WhenUnderutilized
    expireAfter: 720h
  limits:
    cpu: 1000
  template:
    spec:
      nodeClassRef:
        apiVersion: karpenter.k8s.aws/v1beta1
        kind: EC2NodeClass
        name: default
      requirements:
      - key: kubernetes.io/arch
        operator: In
        values:
        - amd64
      - key: kubernetes.io/os
        operator: In
        values:
        - linux
      - key: karpenter.sh/capacity-type
        operator: In
        values:
        - spot
      - key: karpenter.k8s.aws/instance-category
        operator: In
        values:
        - c
        - m
        - r
      - key: karpenter.k8s.aws/instance-generation
        operator: Gt
        values:
        - "2"

helm repo add linkerd-edge https://helm.linkerd.io/edge

helm install linkerd-crds linkerd-edge/linkerd-crds \
  -n linkerd --create-namespace

helm install linkerd-cni -n linkerd-cni --create-namespace linkerd-edge/linkerd2-cni

step certificate create root.linkerd.cluster.local ca.crt ca.key \
--profile root-ca --no-password --insecure

step certificate create identity.linkerd.cluster.local issuer.crt issuer.key \
--profile intermediate-ca --not-after 8760h --no-password --insecure \
--ca ca.crt --ca-key ca.key

helm install linkerd-control-plane \
  -n linkerd \
  --set cniEnabled=true \
  --set-file identityTrustAnchorsPEM=ca.crt \
  --set-file identity.issuer.tls.crtPEM=issuer.crt \
  --set-file identity.issuer.tls.keyPEM=issuer.key \
  linkerd-edge/linkerd-control-plane

curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -

kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -

Ref:
https://linkerd.io/2.15/tasks/install-helm/
https://linkerd.io/2.15/getting-started/
Versions:

Chart Version: 0.37.0
Kubernetes Version (kubectl version): 1.26

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Seems like this is something you'd want to orchestrate with startupTaints if there's specific startup behavior you want to ensure is completed before pods are scheduled. What taint was being added with Cluster Autoscaler?

Sorry my bad. CAS doesn't have any specific taint to wait the daemon sets are running. Not really sure why we are not facing the issue with CAS. I quickly search about startupTaints and found the similar thread #628 related with Cilium. I also notice that the latest version of Cilium has a capability of adding the taint node.cilium.io/agent-not-ready=true:NoExecute. So I think I will check with Linkerd community as well whether there is a similar approach.

Closing this issue as seems like Linkerd has a fix in https://github.com/linkerd/linkerd2/pull/11699


PHP Fatal error

PHP Fatal error:  Uncaught Hitrov\Exception\ApiCallException: {
"code": "NotAuthenticated",
"message": "Date 'Wed, 26 Apr 2023 13:08:43 UTC' is not within allowed clock skew. Current 'Wed, 26 Apr 2023 14:23:55 UTC', valid datetime range: ['Wed, 26 Apr 2023 14:18:55 UTC', 'Wed, 26 Apr 2023 14:28:56 UTC']"
} in /home/suporte/oci-arm-host-capacity/src/HttpClient.php:42
Stack trace:
#0 /home/suporte/oci-arm-host-capacity/src/OciApi.php(257): Hitrov\HttpClient::getResponse()
#1 /home/suporte/oci-arm-host-capacity/src/OciApi.php(132): Hitrov\OciApi->call()
#2 /home/suporte/oci-arm-host-capacity/index.php(74): Hitrov\OciApi->getInstances()
#3 {main}
thrown in /home/suporte/oci-arm-host-capacity/src/HttpClient.php on line 42
How can I solve this error, please?

hey, seems your system clock are incorrect

Thanks for reply.
The error is a timesyncd on raspberry not sync time with the ntp server.


fix: do not apply QoS settings if RoCE optimizations are disabled + better error handling

If RoCE optimizations are disabled in the template, do nothing. If a port doesn't have a network interface and RoCE is requested, report an error.

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

10 of 12 (83.33%)  changed or added relevant lines in 1 file are covered.
6 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.05%) to 60.497%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/host/configvalidation.go
10
12
83.33%

Files with Coverage Reduction
New Missed Lines
%

internal/controller/nicconfigurationtemplate_controller.go
6
87.06%

Totals

Change from base Build<PHONE_NUMBER>2:
0.05%

Covered Lines:
1752

Relevant Lines:
2896

💛  - Coveralls


Update simulated_device_linux.md

Fix file paths and update header to be less confusing for newbies
This is a minor edit to the simulated_device_linux.html page.  I noticed some path errors when following along, thought I'd submit a fix.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Added bulk operations

updated composer fot php 7
added bulk operation for addRecords

@rafaelcneves look at this

Nice!  ;)
PS: and the last - could you set tag for this fix? :)


feat: use vertical form layout

Description
Form items now use a vertical layout, which means that the labels are on top of the input field. Before, they were located in the same line as the input fields. This should finally fix all form inconsistencies and simplifies this strongly.
BREAKING CHANGE: MinScaleDenominator and MaxScaleDenominator do not extend the FormItemProps anymore. Due to the vertical layout, these properties are not needed anymore.
Symbolizer Editor

Card Style

Rule Generator

Do you introduce a breaking change?

[x] Yes
[ ] No
[ ] I am unsure (no worries, we'll find out)

Passing the FormItmeProps has no downside does it? I would not remove this feature. Even more if it is a breaking change.

Passing the FormItmeProps has no downside does it? I would not remove this feature. Even more if it is a breaking change.

Removed the breaking change. Min-/MaxScaleDenominator still extend FormItemProps.


Inject script/template with the model

How can i inject a

The model:
{ "html": "
one
"}

Resulting in an error SyntaxError: unterminated string literal

You've got to escape the double quotes in the string.
Out of curiosity, what are you trying to accomplish with that?

Sorry, i forgot the quotes only here in github. I builded a spa with ractive. Now i have a very special page which is only visible to admins and they will visit it rarely. This special page is injected with json into the htmlTemplate from above. Now the tricky part: I want to use ractive (custom ractive instance) on this page. Build the gui, use it for the tables, data binding and event binding.

Resulting in an error SyntaxError: unterminated string literal

Like @evs-chris said, this is merely a syntax error in your script.
I'd avoid injecting scripts in the template. By looking at your snippet, it looks like you are trying to render a

This model is working:
{"html": "
one
"}

And this model does not work:
{"html": "
one
"}

Well, there you have it, you can't put scripts inside templates.

So Ractive isn't like jQuery where it pops in your HTML and executes any JS found inside the markup (although it might be doing something similar as a side-effect).
What you appear to be doing is taking a traditional page (markup with data and script) and loading it with Ractive. You might want to consider creating a component with that similar markup and script, and have your server respond in JSON containing the data you need. Then render that component with the newly loaded data.

const ComponentThatWasHtml = Ractive.extend({
  template: `

  `,
  onrender(){
    // Script from that HTML. This will run when an instance of this component is rendered.
  }
});

const ParentComponent = Ractive.extend({
  components: { ComponentThatWasHtml },
  template: `
    {{#if dataThatWasInHTML }}<ComponentThatWasHtml />{{/}}
  `,
  data: {
    dataThatWasInHTML: null
  },
  onrender(){
    // Do whatever that loads that data
  }
});

Just wanted to note that you can resetTemplate to rerender with whatever template you like, resetPartial to swap out partials on the fly (necessary if they're renedered), and simply set a new partial to a string or pre-rendered template e.g. ractive.partials.foo = "... whatever HTML/Ractive that you want ..." before a {{>foo}} is rendered to achieve dynamic templating.
If you want to template directly from data, you can {{> { template: ~/template } }} and ractive.set('template', "... whatever HTML/Ractive that you want ..."). Any further updates to template will be parsed and rendered into the partial. You can also render pre-parsed templates from data with {{> ~/template}} and ractive.set('template', Ractive.parse('...')).

Also, I just noticed that you're tying to render a script inside another script, which is not possible. The contents of script tags don't get parsed as HTML, so the inner tag will never show up in the DOM.

Thank you all for your help! @evs-chris I'll have a closer look into your comment the next days (Because as you said: parse a script-tag to script-tag is not possible).


Remove optional.IsSet

What does this PR do?
This PR removes optional.IsSet as it can be misused.
For example, this code uses IsSet instead of checking the boolean returns by Get
if secretResolver.IsSet() {
		resolver, _ := secretResolver.Get()
}

The idiomatic way to use optional is
if resolver, ok := secretResolver.Get(); ok {
}

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes
Check windows_event_log/config.go works the same as before

/merge


(🐞) Doesn't work on Windows

from subprocess import run
from subprocess_tee import run as run_tee

run('notepad.exe test.py')  # works
run_tee('notepad.exe test.py')  # FileNotFoundError: [WinError 3] The system cannot find the path specified

@KotlinIsland any reason you closed this? it doesn't seem resolved


Star Citizen Brazilian support

We carried out a revised translation job using human-machines

@all-contributors Please add @Nxzzin for translation

@Nxzzin Thanks for the work!
Is it possible for me to contact your team? I may have some matters to discuss.

@Dymerz you can dm me, its @Nxzzin


Automatic Button Pressing

-Autoload first pattern of the Specs, also it loads instructions &
presses combine, so all you need to do is press "9" on A1 gem
-Fixed Resolutions issues in window mode (I hope)
-Gave an example on the Help Form.
-Altered Combiner a little to hide info & reshow, and place gem back in
original spot
-Removed fullscreen in options since its not needed anymore

Hi @CooLTanG , it's the first time I receive a Pull Request, let's see what you got.
Would be helpful for me if you could break it in 2-3 different commits with the changes to different parts in different commits.

resolution is now 1088x612: THANKS, I forgot about that when adding Steam support, the difference from 900x600 was so tiny in height (less than a pixel/cell) that I never noticed.
I'd be very happy to keep compatibility with the web version, too, maybe a switch to change the resolution between the 2 versions.

fancy handler for GC window: welcome to that, again, if no GC is detected, maybe fall down to the browser version?

pressing key_dot : why not, but the help must be updated for that, may also consider to send a lone mouse click, to be sure the user has focus in place (at least 4 people reported problems for that)

key_g : the guy who originally built the wGC said this method was slower, did you benchmark it?

move gem to default: cool addition, approved

auto load recipe: the 2 extra clicks were most for debugging and for the few folks that use wGC as a recipe parser, but faster flow is good, too

closing form check: good addition

spec description in help: great

I also add I can't test your changes now and will be busy IRL next 2-3 days, will check this out in the weekend.
I also have some more changes in a local branch, but seeing what you changed there'll be no merge conflicts, just be sure not to touch the debug logger.
Thank you for your interest in this project.

First time for me doing a pull request too lol.

But yeah I forgot about the flash version,  I'll make that compatible with it for sure.
I'll update the help with the pressing dot.
The pressing G thing seems perfect to me, even running at a 20ms combine time.  It kinda ruins the pressing of it "12.8" isn't quite right I don't think with the modified resolution, but I can keep it in for the web version if people like

Thanks for the comments, I'll update it when I can with the changes, maybe a toggle for Steam/Flash or just get it to drop down to flash version if it can't find the steam version of it.
Date: Thu, 4 Jun 2015 02:03:29 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [wGemCombiner] Automatic Button Pressing (#7)
Hi @CooLTanG , it's the first time I receive a Pull Request, let's see what you got.
Would be helpful for me if you could break it in 2-3 different commits with the changes to different parts in different commits.
resolution is now 1088x612: THANKS, I forgot about that when adding Steam support, the difference from 900x600 was so tiny in height (less than a pixel/cell) that I never noticed.
I'd be very happy to keep compatibility with the web version, too, maybe a switch to change the resolution between the 2 versions.
fancy handler for GC window: welcome to that, again, if no GC is detected, maybe fall down to the browser version?
pressing key_dot : why not, but the help must be updated for that, may also consider to send a lone mouse click, to be sure the user has focus in place (at least 4 people reported problems for that)
key_g : the guy who originally built the wGC said this method was slower, did you benchmark it?
move gem to default: cool addition, approved
auto load recipe: the 2 extra clicks were most for debugging and for the few folks that use wGC as a recipe parser, but faster flow is good, too
closing form check: good addition
spec description in help: great
I also add I can't test your changes now and will be busy IRL next 2-3 days, will check this out in the weekend.
I also have some more changes in a local branch, but seeing what you changed there'll be no merge conflicts, just be sure not to touch the debug logger.
Thank you for your interest in this project.
—
Reply to this email directly or view it on GitHub.

I've made those changes, although I'd love for you to look and test the "resolutionRatio" calculation for the steam version.  It works like 95% of the time for me, hard to find the problem with it, although its not very elegant of a calculation.

Nevermind, I think I got the resolution working, the problem was caused by delay issues.  I'm a little lost there since at fullscreen, I can put it at 1ms delay and everything combines correctly (using killgem spec -> 987), but when I put it on 50ms delay it doesn't do it right.....

Please, if you can, rebase the branch and resplit it in commits for every different feature/fix you implemented, the way it is now it makes very difficult to test changes singularly.
I have also uploaded the rc branch, with a couple extra changes, would you be so kind to rebase against that? I can do it myself, but splitting and rebasing your commits will be much more difficult for me than it is for you.
Thanks.

I've never done any of that before, but I'll read up and give it a shot.

Moved to #9.


"Add new scientific name" prompts windows to close

When I hit "Add new scientific name", Chrome would ask me if I would leave the website. See screenshot. I would choose "cancel", the site remains open. I would hit "close", and the entry would get saved.

@GZhang2 to supplement issues (or pull requests) with images, you can just drag (or paste) those images into the comment box. (If that weren't so, anyone who wants to post an issue and add an image would have to have either write privileges to the repo, or would have to fork it.) See example here:

As per https://stackoverflow.com/a/20760450/27310, this happens because Chrome requires buttons to have their type set explicitly to "button".


Responsiveness

The site looks great on full and mobile, but half way between the two it looks like this:

want to help @matamalaortiz? I have nightmares with css

May I help? I love the idea of the library. But the page mobile-responsiveness did make me wince a little haha. Between 700px -> 1300px is where things get hairy. I can introduce a simple media query system.

thanks @dangdennis, but we just updated the page and now this is fixed! see https://github.com/ml5js/ml5-website/pull/47


Mocha 5.0.0 won't precompile using Babel

Prerequisites

[x] Checked that your issue hasn't already been filed by cross-referencing issues with the faq label
[x] Checked next-gen ES issues and syntax problems by using the same environment and/or transpiler configuration without Mocha to ensure it isn't just a feature that actually isn't supported in the environment in question or a bug in your code.
[x] 'Smoke tested' the code to be tested by running it outside the real test suite to get a better sense of whether the problem is in the code under test, your usage of Mocha, or Mocha itself
[x] Ensured that there is no discrepancy between the locally and globally installed versions of Mocha. You can find them with: node node_modules/.bin/mocha --version(Local) and mocha --version(Global). We recommend avoiding the use of globally installed Mocha.

Description
I can't seem to get mocha to work with babel. I get an unexpected token import issue.
./node_modules/.bin/mocha --compilers js:babel-core/register test/actions.spec.js
/Users/bschmeisser/projects/cupcake-pgp/src/actions.js:1
(function (exports, require, module, __filename, __dirname) { import jetpack from 'fs-jetpack';
                                                              ^^^^^^

SyntaxError: Unexpected token import

Steps to Reproduce
git clone git@github.com:blainesch/cupcake-pgp.git
cd cupcake-pgp
npm install
./node_modules/.bin/mocha --compilers js:babel-core/register test/actions.spec.js

Expected behavior: Run my tests
Actual behavior: Didn't run my tests
Reproduces how often: 100%
Versions

Mocha: 5.0.0
Node v8.9.0
NPM 5.5.1
babel-core 6.24.1
babel-loader 7.1.2

I think it's swallowing the real error. When I switch --compilers js:babel-core/register to something silly such as --compilers js:meow nothing different happens.
However the help docs do say it's using this format in mocha --help it says --compilers <ext>:<module>,...          use the given module(s) to compile files

Re-adding back in my .babelrc file didn't seem to fix anything, but if anybody wants it:
{
  "plugins": ["transform-class-properties"],
  "presets": ["react"]
}

not a mocha issue.  you need something like babel-preset-env to go with babel-preset-react, because the latter doesn't give you any ES6+ support.


fortran wrapper type error??

void mui_forget_upper_3d_f(mui_uniface_3d *uniface, double *upper, int *reset_log) {
    uniface->forget(*upper, static_cast<bool>(*reset_log));
}

In its fortran interface
    subroutine mui_forget_upper_3d_f(uniface,upper,reset_log) bind(C)
      import :: c_ptr,c_int,c_double
      type(c_ptr), intent(in), value :: uniface
      real(kind=c_double), intent(in), value :: upper
      integer(kind=c_int), intent(in), value :: reset_log
    end subroutine mui_forget_upper_3d_f

For arguments upper  and reset_log, is the property value is right? since they are pointers in cpp?

Thanks for the issue report, I believe the current implementation is correct here - as this is using Fortran's c-bind, it is typical to prototype the called c function as a pointer and then the Fortran subroutine not. You will see the same pattern throughout the entire wrapper, with variables that are actually pointers in the c code defined as double pointers and then set as type c_ptr in the Fortran subroutine.
I'm going to close this one as I believe the current implementation is correct.

In the cpp code, arguments 'upper' and 'reset_log'  are the pointers.


Xaw3d : update version to 1.6.6

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./LICENSES-AND-NOTICES/SPECS/data/licenses.json, ./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md, ./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary

Xaw3d : update version to 1.6.6
Build/Dependency Information
The PR is a leaf PR which builds alone successfully
Change Log

SPECS-EXTENDED/Xaw3d/Xaw3d.signatures.json
SPECS-EXTENDED/Xaw3d/Xaw3d.spec
cgmanifest.json
Does this affect the toolchain?

NO
Associated issues

#xxxx

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-YYYY-XXXX

Test Methodology

Pipeline build id: xxxx

Buddy Build: https://dev.azure.com/mariner-org/mariner/_build/results?buildId=700403&view=results


Document missing org.gradle.logging.level option

Thank you for your contribution.

@bot-gradle merge

The merge queue build has started. Click here to see all failures if any.


Fix XHR for file URLs by working around node-XHR bug

Closes #1180.
Please review @justinmchase. I was unable to write a test showing that getResponseHeader throws as long as the file URL was two-slashes only.

:+1:
Thanks for being so responsive! This will unblock me and my project.


Fix - Upgrade GitHub actions and remove support for build with Node 12.

Closed since we still need support for Node 12 and to keep it aligned with the Stencil Core.


Make release for v3.0.2-0.4.5

want https://github.com/omisego/omg-js/pull/257 included as it updates a bug coming from outdated package-locks
main reason for the release comes from https://github.com/omisego/omg-js/pull/254 fixing the handling of errors from rootchain calls

https://github.com/omisego/omg-js/pull/259


How to Retrive Posted Data in Intercom

I Like to Retrive Data which i posted while on boot and now i need to retrive data from intercom is there any options are there ?

Hi, please use the issue template.
All data is available in window.intercomSettings

Thanks

Hey . is that Boot Method Return Response. ?


Global banner design standards

Objectives
Now that we have a global banner mechanism, we need to establish standards and examples.
Notes

the following elements are recommended

heading
optional subheading
image handling (bg, spot, etc)
CTA (button or link)

Acceptance criteria

[ ] design specs are available (template level, outer padding, text specs, etc)
[ ] template files are available
[ ] design inspirations

Example: THINK 2020

COVID-19 Response

Colsing, no longer relevant

Reopening the issue based on Shixie's comments.

Convert to an epic, design research, design exploration, func specs, website and the dev & QA issues.


refactor(doc)Resolve typo

Hi @gprasath
Can you please sign your commit?

Signed-off-by: gprasath<EMAIL_ADDRESS>


Support provided Maven/Gradle runtimes

Support host provided Maven and Gradle runtimes.
It would be great if this plugin could support host provided Maven and Gradle runtimes in addition to wrappers to provide:

Firewalled support (i.e. cant download wrappers)
Consistent runtime versions
Faster
Better support for CI steps

Hi @jbadeau
Thanks for submitting the idea.
Can you elaborate what you mean by "host provided runtimes"?
and how you would like to specify them?
Cheers

Hi @jbadeau
Thanks for submitting the idea.
Can you elaborate what you mean by "host provided runtimes"?
and how you would like to specify them?
Cheers

The builders rely on the wrappers 'mvnw' and 'gradlew' which are not always existing (coudlnot download for instance).
I just did a quick test by changing the command
./mvnw${isWin ? '.cmd' : ''};
to
mvn;
which works fine. A builder option for ignoreWrapper would be great.

The builders rely on the wrappers 'mvnw' and 'gradlew' which are not always existing (coudlnot download for instance).
I just did a quick test by changing the command
./mvnw${isWin ? '.cmd' : ''};
to
mvn;
which works fine. A builder option for ignoreWrapper would be great.

Ok I get it now. Thanks for clarifying.
It is indeed a legit improvement.
I will start implementing that soon.

Ok I get it now. Thanks for clarifying.
It is indeed a legit improvement.
I will start implementing that soon.

Awesome! And great job on the plug-in :)

Awesome! And great job on the plug-in :)

Cool, will try out today.
Will also have a look at the dependency and caching later this week.


Restricted prototype disappearing under heavy load

This PR adds the failing test case for #282
Although I am not sure of the exact requirements, afaik 2 conditions are required to reproduce this issue:

A host object is exposed to script during script runtime (line 1463)
There is a heavy load in script (memory allocation?) (line 1467)

Unfortunately, I don't know the reason or the solution for this. So this PR only includes the test case. Please let me know if there is something else I can do to help.

Hi @KurtGokhan,
Thanks so much for posting the test case! It turns out that the behavior you're seeing is correct.
As you know, the prototype is a property of the JavaScript proxy that provides access to the target .NET object. The root problem here is that nothing is holding onto the test.Inner proxy when the script engine encounters memory pressure. The test proxy is reachable from the global object, so it's safe, but the test.Inner proxy is garbage-collected.
The next time the script requests test.Inner, it gets a new proxy, and OnExposedToScriptCode either leaves it alone due to the way it's implemented, or it isn't invoked at all, depending on conditions on the .NET side.
Note that holding onto the test.Inner proxy makes the test succeed:
Assert.AreEqual('function', typeof test.Add);
Assert.AreEqual('function', typeof test.Inner.Add);
var inner = test.Inner; // *** EXCLUDE CUSTOMIZED PROXY FROM GARBAGE COLLECTION ***
// Emulate heavy load
var arr = [];
for (let i = 0; i < 1000000; i++) arr.push({});
// Assert again
Assert.AreEqual('function', typeof test.Add);
Assert.AreEqual('function', typeof test.Inner.Add);

Note also that this isn't a problem with ClearScript's caching system, which is designed to maintain proxy-target coherence only as long as the proxy remains in use.
Here's a thread-safe reimplementation of RestrictedPrototypeObject that addresses this problem:
public class RestrictedPrototypeObject : RestrictedPrototypeObjectBase, IPropertyBag, IScriptableObject {
    private readonly ConditionalWeakTable<ScriptEngine, Entry> map = new ConditionalWeakTable<ScriptEngine, Entry>();
    private readonly bool setPrototypeOnExpose;
    public RestrictedPrototypeObject(bool setPrototypeOnExpose) {
        this.setPrototypeOnExpose = setPrototypeOnExpose;
    }
    public object GetPrototype(ScriptEngine engine) {
        if (map.TryGetValue(engine, out var entry)) {
            return entry.Prototype;
        }
        return null;
    }
    void IScriptableObject.OnExposedToScriptCode(ScriptEngine engine) {
        var entry = map.GetOrCreateValue(engine);
        if (entry.Prototype == null) {
            entry.Prototype = this.ToRestrictedHostObject<RestrictedPrototypeObjectBase>(engine);
            if (setPrototypeOnExpose) {
                engine.Script.Object.setPrototypeOf(this, entry.Prototype);
                entry.ProxyHolder = engine.Script.Object.create(this); // *** HOLD PROXY TO RETAIN CUSTOM PROTOTYPE ***
            }
        }
    }
    private class Entry {
        public object Prototype;
        public object ProxyHolder;
    }
}

Please let us know what you think. Thanks again!

Thank you so much @ClearScriptLib
Seems like I was missing a key info about how ClearScript is working internally to understand this issue. I somehow knew the object was GC'ed in script side but I didn't know how that is possible. It all makes sense now. Anyway, it is nice to see GC working so well.
entry.ProxyHolder = engine.Script.Object.create(this);
As I understand, this line holds onto a copy of the object in .NET side so that it is not collected. This is very interesting.
My issue is solved. Closing this PR and the related issue.

entry.ProxyHolder = engine.Script.Object.create(this);
As I understand, this line holds onto a copy of the object in .NET side so that it is not collected.

Exactly.
In this scenario we customize the proxy for a .NET object, but then we need to hold onto that proxy to keep it from being garbage-collected and replaced with a new one.
But how do we hold onto a proxy? Passing it back to .NET would be counterproductive, as marshalling would discard it and give .NET its original object.
So instead we give .NET a script object that holds the proxy. That sets up an indirect reference that does the job. Object.create is a quick way to construct such a script object.
Another possibility might be to store the customized proxy in a hidden global script collection, but then we'd have to worry about trimming that collection to prevent memory leaks.
The real issue here – the reason for all these gymnastics – is that ClearScript has no good hook for proxy customization. OnExposedToScriptCode is available but far from optimal. We'll investigate a better solution for a future release.
Thanks again for bringing this to our attention!


Exclude codes.DeadlineExceeded from the list of retryable gRPC codes

What was changed

Exclude codes.DeadlineExceeded from the list of retryable gRPC codes.
Why?

gRPC library doesn't retry "context errors" (codes.DeadlineExceeded and codes.Canceled), so remove them from the list of retryable codes to eliminate the confusion.

This list of errors is common across SDKs, do we need to update them as well?

For that you need to check gRPC library implementation in those langs. I hope it is consistent there.

gRPC library doesn't retry "context errors" (codes.DeadlineExceeded and codes.Canceled)

DeadlineExceeded can be a client context error or a server error. I am a bit worried to assume they are only "context errors".

I think this should be checked/fixed on server. Server should never explicitly return CDE if user context is not timed out yet. I checked persistence layer, and CDE is always replaced with internal error (persistence.TimeoutError) which then becomes codes.Unknown on gRPC layer. There are other places when CDE for some internal context might be generated and passed up as user context deadline exceeded.

To confirm this PR, since the interceptor skips retrying this code no matter what, this is just to remove the unnecessary item from our list? There should be no runtime effect, correct?

Yes, it doesn't change behaviour. CDE was never retried (I've just discovered this today). So I decided to align our codes with gRPC lib implementation.


Not all years are displayed in the initial rendering in Firefox

When the year selector is opened for the first time, only years up to 2016 are displayed. If the year is selected and opened again all the years are correctly displayed.
My initial guess is that it's somehow related to iron-list not picking up the proper size of the parent element. Note: if I close the inspector window all the years appear, probably due to the iron-list noticing a resize event / redrawing itself. Same happens if I open the year selector and then open the inspector window.
Screenshot of the issue:

This issue only occurs on (at least the latest) Firefox, not Chrome.

@panuhorsmalahti Please state the FF and OS version that produces this problem. Tested on Windows 10 x64 FF 49.0.2 and couldn't reproduce.

I'm testing on Mac OS X El Capitan and Firefox 49.0.2.

@panuhorsmalahti Tested on FF 49.0.2 on macOS Sierra but couldn't reproduce the issue. Any special steps to reproduce?

Hmm, I can't reproduce this in jsfiddle ( https://jsfiddle.net/2q3fqehz/84/embedded/result/ ). I also noticed that if I call window.wrap($0).fire('iron-resize'); after opening the year selection all the years become visible.

@panuhorsmalahti Hmm...a fire('iron-resize')seems fine for me. It's expected to run slow on unsupported browsers like FF as everything is still polyfill. However I still can't reproduce it.

Argh, I didn't know GitHub spams this issue even from forks. I'm still testing a fix, disregard those for now.

New clue: I can't reproduce this if I have animations enabled (by not using no-animation attribute).

Closing issue. Feel free to reopen.


fix: Fix signature of beforeRequest method in Interceptor interface (box/box-codegen#625)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

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

Totals

Change from base Build<PHONE_NUMBER>9:
0.0%

Covered Lines:
13663

Relevant Lines:
25252

💛  - Coveralls


Support bootstrap v4 beta changes

Now that bootstrap v4 beta is finally out, it would be great if this could align with it :)

Yes, aligning would be nice, considering the typeahead component does not even work anymore in bootstrap v4 beta

Yes, I need to sit down and upgrade to Bootstrap 4 beta.
Now that Bootstrap 4 is in Beta, and is more or less production ready (I have been using it for my projects for a while now) I will drop support for Bootstrap 3. I just don't have the time to support both versions.

Im currently not getting typehead working with bootstrap v4 beta, is this a known bug or am I doing something wrong? (Downgrading to v3.3.7 and NOT setting config.options.version = 4 is working for me)

@thejaff2 - it's known - https://github.com/tochoromero/aurelia-bootstrap/issues/40
same for me

Bootstrap v4 is now at version 4.1.1
(see https://getbootstrap.com/)
Is it likely that you will update this project, or is it now abandoned?


fix(utils): Add recently removed export statement

Add recently removed export statement (via https://github.com/tannerlinsley/react-table/pull/2738)
Remove log statements

:tada: This PR is included in version 7.6.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Browser support list messed up design on next version of Bootstrap running locally

I've recently updated my local copy of Bootstrap with the v4-dev branch, the supported browsers list formatting looks weird compared to the current site. I'm running locally via the npm run docs-serve and haven't compiled but surely this wouldn't make a difference?
See screenshot below:

That's how it's supposed to look.

@XhmikosR  Is it? Here's a photo from https://getbootstrap.com/docs/4.1/getting-started/browsers-devices/, there's a noticeable difference here

Like I said that's how it's supposed to look.
It's not js anymore, it's plain text.

to add context: the repo itself is always ahead of the live site, since it refers to all the stuff for the next release...

Yeah, but it's not JS anymore. We could highlight it as a shell script or something, but again, the file isn't a shell script.


Allow ability to constrain jobs that are tracked

Allow the ability to somehow constrain the set of jobs we track. This could be a whitelist, or a blacklist. My gut says that default should be all, and we should allow a blacklist of jobs not to be tracked.

Implemented in 9fde32a699aceaf73de03622147cf39422112197


Wrong default types for params and data

params and data are marked as dictionaries in the constructor prototype. However _encode_params returns lists or None sometimes.
There is a big inconsistency in _encode_params that could affect hooks. It's affecting me in request-oauth-hook. Thus I have to do these type of checkings:
https://github.com/maraujop/requests-oauth-hook/blob/dev/oauth_hook/hook.py#L184
So if params is a dictionary, I understand it should be an empty dictionary or a filled dictionary, but not a list or None. The same happens to data.
I haven't been able to run requests_tests sorry, they failed before I did a change to the code. This will likely affect you in other parts of the code.

I forgot to say that I'm working on a better test suite for requests-oauth-hook, and some Request inconsistencies, make it very hard to write.

This will change in the next release.

This means it is fixed in version 0.7.6 ?
Are you using my patch?

No, this will change in the next major release.


executeJS outside scope

Is it possible to pass any other arguments than window to  'executeJS(function(window))' ?
I would like to inject Redux state, but don't know if it is possible with Gemini (and I would like to avoid pasting it directly inside the function, because it contains ~3000 LOC).

hi. no, you can't do it throw API. But there is another variant. @eGavr can you show your variant here?

I just hit the same problem. Currently I've solved it using the piece of code below. It's a bit hacky though and it's quite possible that the code can be improved upon.
`getOptions = function (options) {
var defaultOptions = {
"env": 'prod',
};
return Object.assign(defaultOptions, options || {});
}
loadTest = function (window) {
window.loadJSFunction( /* REPLACEME */ );
}
/*
**  Copied from https://github.com/gemini-testing/gemini/blob/master/lib/tests-api/actions-builder.js and modified to accept dynamic options
/
function serializeFunc(func, options) {
return '(' + func.toString().replace('/ REPLACEME */', JSON.stringify(options)) + '(window));';
}
/*
**  Copied from https://github.com/gemini-testing/gemini/blob/master/lib/tests-api/actions-builder.js and modified to accept dynamic options
*/
myExecuteJS = function (callback, options) {
if (typeof callback !== 'function') {
throw new TypeError('executeJS argument should be function');
}
this._pushAction(this.executeJS, function executeJS(browser) {
	return browser.execute(serializeFunc(callback, options));
});
return this;

};
gemini.suite('firsttest', function (suite) {
suite.setUrl('/test.html')
.setCaptureElements(['#testContainer']);
gemini.suite('fullpage', function (suite) {
	suite.before(function (actions, find) {
			actions.executeJS = myExecuteJS;
			actions.executeJS(loadTest, getOptions({
				"env": "test"
			}));
			actions.wait(1000);
		})
		.capture('test');
})

})`

@Pszek @rhoog
As @sipayRT has said there is no a straight way to pass any other arguments to method executeJS, but we are using the next hack to make closure work in this method:
var format = require('util').format;

/**
 * Helper which supports closure in callback of method '.executeJS'
 *
 * @param {Function} fn – callback of method '.executeJS'
 * @param {Object} vars – variables to be injected
 */
exports.executeJsInjector = function(fn, vars) {
    var varsToExport = Object.keys(vars)
        .map(function(v) {
            return format('var %s = "%s";', v, vars[v]);
        })
        .join('\n');

    return new Function([
        varsToExport,
        format('(%s)(window)', fn.toString())
    ].join('\n'));
};

This hack can be used like this:
actions
  .click('.ololo')
  .executeJS(executeJsInjector(moveCaretToTheEnd, {controlSelector: controlSelector}));

where controlSelector is the variable which will be injected to function moveCaretToTheEnd. And function moveCaretToTheEnd will be passed as a callback to method executeJS

@rhoog @eGavr
Thanh you both!

Both approaches look real hacky. Will the actions.executeJS be updated to allow external functions to be passed in?


Debug console log source messages cut off text

I've never noticed this before. The text always wraps correctly except for the last line - if it runs into the log source on the right side, then we lose some text.

Yeah the log sources are screwing up my wrapping strategies. Nothing new, april to investigate how to fix

Now we are taking into account the width of the source link on the right.
Please note that the wrapping strategy is still not perfect, but it behaves good in most cases.

Seems to work fine:


install: Run generate_secrets.py before zulip-puppet-apply

Testing Plan: Did a fresh production install, verified working camo.

This is a nice cleanup.
Just an observation: We already had similar behavior of running generate_secrets inside the upgrade code path before zulip-puppet-apply.


Possibly time in seconds wrong and merged_track questionable

'set_tempo' meta-messages, pitch-bend messages, and pitch-bend range messages are inside MidiTrack objects. So it seems like each track has its own tempo changes, pitch-bend changes, and pitch-bend range changes, independent of other tracks. Is that in line with the MIDI specification?
merged_track doesn't contain the info regarding which tempo changes, pitch-bend changes and pitch-bend range changes belong to which track. So interpreting merged_track as a MIDI track yields in general incorrect timing and pitches. They cannot be reconstructed from merged_track because merged_track lacks the necessary info. In other words, merged_track is in general quite useless and misleading/dangerous. Even the order of messages in merged_track might be wrong because they are sorted by ticks, and each tick corresponds to a different number of seconds depending on the current tempo of the respective track.
MidiFile.__iter__() uses merged_track for converting the time offset to seconds, so in general these results are wrong.
I propose removing merged_track and merge_tracks(). They are only used by MidiFile.__iter__(), which needs a rewrite anyway due to several recent issues such as #527.
(Alternatively, we could replace channel_number by something like channel_number+16*track_number or (track_number,channel_number), but that's misleading and against the MIDI specification.)

'set_tempo' meta-messages, pitch-bend messages, and pitch-bend range messages are inside MidiTrack objects. So it seems like each track has its own tempo changes, pitch-bend changes, and pitch-bend range changes, independent of other tracks. Is that in line with the MIDI specification?

First of all, when these are inside a MIDI File we should refer to them as Events, not Messages. It's a design oversight in mido I intend to address someday. See https://github.com/mido/mido/issues/82#issuecomment-1410121347
Only Message Events can be transmitted as Messages in the protocol. Meta Events are metadata for presentation/interpretation of the file.
With that in mind, I can confidently say yes, the specification allows multiple Set Tempo meta events and Message events inside all tracks.
The difference will come when interpreting said file depending on its format (aka type):

0 & 1: The Set Tempo affects the whole since there is only a single track (format 0) or multiple synchronous tracks (format 1).
2: The Set Tempo only affects its track since format 2 tracks are independent and are not meant to be played together.

merged_track doesn't contain the info regarding which tempo changes, pitch-bend changes and pitch-bend range changes belong to which track. So interpreting merged_track as a MIDI track yields in general incorrect timing and pitches. They cannot be reconstructed from merged_track because merged_track lacks the necessary info. In other words, merged_track is in general quite useless and misleading/dangerous. Even the order of messages in merged_track might be wrong because they are sorted by ticks, and each tick corresponds to a different number of seconds depending on the current tempo of the respective track.

Merged track simply represents data from a format 1 MIDI File in format 0. This shall not incur any data loss since the data should be identical. (Message-wise, yes the originating track is lost but this information is not needed for playback)
AFAIK we never merge tracks from format 2 files.

MidiFile.__iter__() uses merged_track for converting the time offset to seconds, so in general these results are wrong.

This may be an issue with loss of precision during the conversion, something you already reported in #528

I propose removing merged_track and merge_tracks(). They are only used by MidiFile.__iter__(), which needs a rewrite anyway due to several recent issues such as #527.

I don't know how I feel about this. If you have a better approach for iterating over messages, please describe it.

(Alternatively, we could replace channel_number by something like channel_number+16*track_number or (track_number,channel_number), but that's misleading and against the MIDI specification.)

Nope but why though? You don't need the track number for playback.

0 & 1: The Set Tempo affects the whole since there is only a single track (format 0) or multiple synchronous tracks (format 1).

If there are multiple synchronous tracks (format 1) and the 'set_tempo' meta-event affects all tracks, then why is that meta-event stored inside one MidiTrack object, as if it affects only that track? Where does the MIDI file specification say that that meta-event affects all tracks?

There is no need to specify anything. Tempo is a well known construct and is global to the playback context. Doesn't matter which track required the change, it will affect all playback.

Pitch-bend events and pitch-bend range events affect a specific channel. Do they affect that channel in all tracks or only the current track? Where in the General MIDI specification is this documented?

My answer to your other question should clear things up about the difference between tracks & channels: https://github.com/orgs/mido/discussions/436#discussioncomment-6637112
This raises an interesting question. The current implementation is a bit naive in that it expects you to play the file to a single Port (MIDI Output).
However, one may want to play each track to a different device in which case the current implementation is indeed inappropriate.
Thanks for helping me wrap my head around that.

If a considerable percentage of MIDI files in format 1 set the tempo in other tracks than the first, then this should raise a warning, but not an error, I think. The user might want to make a small modification to a MIDI file but leave it as-is otherwise, including those commonplace non-compliances. The user might even want to use mido to generate commonplace non-compliances, for example to thoroughly test how certain other MIDI software or hardware will deal with them or whatever. mido can support them in such experiments.
Regarding the playback of Standard MIDI Files on a computer: do pitch-bend events and pitch-bend range events in any track affect the pitch of the same channel in all other tracks in format 1 files?

Agreed!

Regarding the playback of Standard MIDI Files on a computer: do pitch-bend events and pitch-bend range events in any track affect the pitch of the same channel in all other tracks in format 1 files?

If all the tracks are routed to the same output, then yes. The only scenario I can think of where this would not be the case is the one I exposed earlier. This is not something we can infer in a deterministic way without further knowledge about the playback situation. The SMF specification explicitly defers such choices to the application implementer (Not that they needed their approval given the variety of implementations in the wild).

Regarding the playback of Standard MIDI Files on a computer: do pitch-bend events and pitch-bend range events in any track affect the pitch of the same channel in all other tracks in format 1 files?

If all the tracks are routed to the same output, then yes.

The SMF specification explicitly defers such choices to the application implementer

Thank you, this is very insightful! And also quite shocking that the SMF specification defers the choice of something as important as pitch. 😲
So as far as I understand, merged_track correctly simulates the routing of all tracks to the same port. That's good, better than I feared, I think we can keep merged_track.
Maybe we'll want to rename merged_track to clarify its limitations. And/or implement something for multiple ports. I'd have to think about the situations where several tracks from format 1 get routed in the nontrivial ways you describe.

Just to be clear: for the choice deferred to application implementer I was talking about the relationship between tracks and outputs, not pitch.
Furthermore, pitch bends were considered an effect at the time MIDI was designed, not something that needed a lot of precision and was heavily device dependent.
For those that need pitch precision (Say microtonal music, non-chromatic scales, non-tempered instruments, etc.) there is the MIDI Tuning extensions but this requires support on the sounding device side (Be it hardware or software).

Should we close this issue (because it was based on the assumption that tempo changes and pitch-bend changes that are stored inside some track don't affect other tracks in Format 1) and open a separate issue about the ports situation you mentioned?


Should avoid triggering CI builds and checks for docs changes

Describe the bug
Currently the Azure build pipeline and GitHub check suite run for all changes, including docs.
This seems like an unnecessary use of time and resources.
The Azure build pipeline should support excluding paths/files:
https://docs.microsoft.com/azure/devops/pipelines/build/triggers?tabs=yaml#pull-request-validation
Would need to verify this also skips auto-triggering the GitHub check suite. Or at worst we could see if the skip-checks flag on commits works with the repo CI setup.
I think we could exclude at least:
exclude:
  - docs/*
  - CODE_OF_CONDUCT.md
  - CONTRIBUTING.md
  - LICENSE
  - README.md

Interesting, we'll see if skipping the trigger on the PR build would fix this.

I tried excluding the folder and, indeed, the PR build no longer triggers. Unfortunately the CI check is blocked:

So we'll have to do something more fancy in the yaml pipeline itself to skip the build and quickly report back a check.


2622 make the entire row clickable

Targets #2622

Description
Clickable any row after showing the all details.
Checklist:

[x] I have performed a self-review of my own code.

Closing this, Not any one is working this.


Custom login notice?

When using LDAP or generic Oauth2 it would be nice to be able to add a small text/HTML note to the login screen to explain to users with which account to login, or link to the external registration page.
Thanks.

Just add a custom note to login page? That's easy breezy. Next release.

How much control do you want over it? Font, size of note panel, etc...

Hmm, for me something basic is sufficient. But it would be nice if it could include clickable links.

I believe you would be able to by using html in the note. Alternatively, I could use markdown, but in order to do that, I'd have to give the application roles to the method since no one is actually logged in yet when they are at the login screen.

Sure, HTML links would be fine.

You can test it out here: https://projects.nachostudio.ml
admin/admin
html formatting works just fine inside the note.
I still need to add to the live preview, and I have something else I want to improve before I make a new release. let me know if you have any more feedback on this though, before I finalize.

Seems fine. Maybe by default have it at least as wide as the login box?
Thanks a lot for adding this!

https://github.com/creecros/Customizer/releases/tag/1.13.0
By default, the Note Panel will adjust to the size of the content. However, with HTML Formatting you could adjust the size of the panel to be larger than the content.
Example:
This is a test note.
And here is a test link.

I used a line break to go to second line.

And now I changed the color


Add flag to set database path

I have added a flag to configure the path to the database, I think it's not okay to save configs in a root.

Thank you for your PR. What is the difference between saving the db in binary's root folder (./db ) and /etc/wireguard/db? I think having a custom path for it makes sense. However, can you instead use the existing path (./db) as the default value?

Okay, will change the default value and I will let you know