how to add a grey background on the incons of the desktop ?

Most of the background pictures (for desktop)  are dark. Unfortunately the text of the icons on the desktop is black too.
Would be nice to have a small halo/background in grey (like you can have in xfce).
I've tried to do it via the "theme template", but I've not succeed.
thanks for your help

I have a few different "hooks" in the theme file for things like this, but I am not sure if there is a Qt hook for applying background colors to "just" the text for a QListWidgetItem.
Some of the Lumina-specific hooks:

Change the font color to something lighter-colored (I use an almost-white for my fonts on a dark-colored theme)
"LDPlugin#LuminaDesktopPlugin{}" is the overall settings for the desktop plugins which allow invisibility (such as the desktopview plugin).

You might be able to do something more complicated with widget parentage like:
"LDPlugin#LuminaDesktopPlugin QListView::item{}"
That "should" (although I have not tried it) allow you to customize just the individual icons within the desktopview plugin.
Some info about StyleSheets that I use for reference is here: http://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qlistview

Thanks Ken. By changing the backgrouund of LDPlugin#LuminaDesktopPlugin I change it for the whole area.
I was looking for something limited to the text zone like in XFCE:
http://fedoraproject.org/w/uploads/c/c2/XFCE_Desktop.png
(Look at "home", file system", ...)
I've added a "color" entry in LDPlugin#LuminaDesktopPlugin, but it has not changed the color of the text. Am I missing something ?

If you specifically want to change the color of the font only in the "invisible background" desktop plugins, then try this:
LDPlugin#LuminaDesktopPlugin .QWidget{   color: white; }
The plugin container itself does not have any fonts (which is probably why it is not working for you), you need to apply that setting to it's children widgets.

Many thanks !!!!
I've changed it a little bit and the exact CSS is:
LDPlugin#LuminaDesktopPlugin QWidget{
color: %%SECONDARYCOLOR%%;
}
the "." before QWidget was not correct.

The solution is the following:
LDPlugin#LuminaDesktopPluginVisible{
background: %%ACCENTDISABLECOLOR%%;
border: 1px solid transparent;
border-radius: 5px;
}
(I've just replce the backghround transparent by ACCENTDISABLECOLOR)
With this change the text bellow the icon will be black on a grey background. Excatly like XFCE.
Better than white color.
But now the other Icons on the desktop (created via the application launcher) are not adapted.
How to change those too ?

The stand alone "applauncher" plugin is based on a QToolButton I believe, so you would do something similar, but specifically targetting the QToolButton child widgets:
LDPlugin#LuminaDesktopPlugin QToolButton{ background: %%ACCENTDISABLECOLOR%%; }
This actually makes me wonder if we can start tagging each of the different base plugins widgets by the name of the plugin so this type of thing is easier to perform: for example, LDPlugin#desktopview, or LDPlugin#applauncher. If I remember right, the "#[name]" comes from the ObjectName() which is set for the widget:
this->setObjectName(QString something)

Ok, I just put in a quick change to move from the "LuminaDesktopPlugin[Visible]" tags to plugin-specific tags. Just un-comment line 43 in lumina-desktop/desktop-plugins/LDPlugin.h to enable it and rebuild your lumina-desktop session to start playing with it. I am guessing that it will break the visuals for almost all the desktop plugins (so the stylesheet will need quite a bit of adjusting to fix it up again), but this might be what we need to do in the long-term for finer-grained control of the visuals.
I won't have that much time to test it out this weekend/early next week, so if you want to see what you can come up with, I would be happy to pull it into the main tree sometime later next week!

Based on the change you proposed on May 2nd, the following is working very fine :-).
The only issue (not sure from where this come from) is linked to the contextmenu background color.
On the desktopview the background is white, on the applauncher it's black.
LDPlugin#desktopview QListWidget{
  background: transparent;
}

LDPlugin#applauncher  QWidget{
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
  stop: 0 transparent,
  stop: 0.7 transparent,
  stop: 1.0 %%ACCENTDISABLECOLOR%%);
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}

LDPlugin#desktopview QListWidget::item{
  background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
  stop: 0 transparent,
  stop: 0.7 transparent,
  stop: 1.0 %%ACCENTDISABLECOLOR%%);
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}

A much better solution, to my eyes is the following:
LDPlugin#applauncher  QWidget{
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
  stop: 0 transparent,
  stop: 0.7 transparent,
  stop: 1.0 %%ACCENTDISABLECOLOR%%);
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}
LDPlugin#applauncher  QWidget:hover{
  background: %%ACCENTDISABLECOLOR%%;
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}

LDPlugin#desktopview QWidget{
  background: transparent;
  border: 1px solid transparent;
}

LDPlugin#desktopview QListWidget::item{
  background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
  stop: 0 transparent,
  stop: 0.7 transparent,
  stop: 1.0 %%ACCENTDISABLECOLOR%%);
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}

LDPlugin#desktopview QListWidget::item:hover{
  background: %%ACCENTDISABLECOLOR%%;
  border-radius: 5px;
  color: %%ALTBASECOLOR%%;
}

I'll try to find the correct file and propose push-request.

You need to be careful with transparency on Qt, because it is not a window-manager compositor, only a parent-child compositor. This is why your context menu is black when you tell it to be transparent, because it does not have a parent Qt window to pull from (a context menu is a top-level window from my experience).

Your new changes are now included in the next version of libLumina[1].
Thanks for sending it in!
https://github.com/pcbsd/lumina/pull/111

Ken,
based on the last changes, I propose to adapt the color scheme for Text
Highlighted to something like rgb(171,171,171).
W.
On Tue, May 12, 2015 at 5:21 PM, Ken Moore<EMAIL_ADDRESS>wrote:

Your new changes are now included in the next version of libLumina[1].
Thanks for sending it in!
#111 https://github.com/pcbsd/lumina/pull/111
—
Reply to this email directly or view it on GitHub
https://github.com/pcbsd/lumina/issues/106#issuecomment-101318850.

Ken,
My last proposal has some bad side effects.
I could suggest to not change the color scheme, but have in the theme
template "color: %%TEXTDISABLECOLOR%%" for "LDPlugin#applauncher
QToolButton:hover" and "LDPlugin#desktopview QListWidget::item:hover"
W.
On Tue, May 12, 2015 at 7:47 PM, william opensource4you <
<EMAIL_ADDRESS>wrote:

Ken,
based on the last changes, I propose to adapt the color scheme for Text
Highlighted to something like rgb(171,171,171).
W.
On Tue, May 12, 2015 at 5:21 PM, Ken Moore<EMAIL_ADDRESS>wrote:

Your new changes are now included in the next version of libLumina[1].
Thanks for sending it in!
#111 https://github.com/pcbsd/lumina/pull/111
—
Reply to this email directly or view it on GitHub
https://github.com/pcbsd/lumina/issues/106#issuecomment-101318850.

Color schemes are designed to work together in groups, which is why in the theme template should stick to using only the colors specified in the current scheme.
I actually think the font color for the "hover" states needs to stay with the %%TEXTHIGHLIGHT%% color because when the user hovers the mouse over an item, you want to be sure that the font is easily readable. Since the items already use the ACCENTDISABLECOLOR for the background, the FONTDISABLECOLOR (usually) has the tendency to blend into that background a bit while the TEXTHIGHLIGHTCOLOR should stand out a bit more (again, this is dependant on how the color scheme is setup).
It might be more advantageous, to tweak the color scheme your are using to create the effect you are looking for. This should ensure a broader application of those effects and unify the appearance across the entire desktop. The other alternative would be to change the color used for the background of the desktop icons, maybe just ACCENTCOLOR or one of the SECONDARYCOLOR's instead of the current disable color.


[Bug]: Profile pic error on console when home page is loaded

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Browser console shows errors when display pic of users in not found.

Steps To Reproduce

Go to app.appsmith.com and open up console. Observe 404 errors for display pic API calls.

Environment
Production
Version
Cloud

A user on discord also reported this, mentioning here to log the request.


Add helm formula for latest stable

Adds support for kubernetes' package manager helm.
All Submissions:

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

New Formulae Submissions:

[x] Does your submission pass
brew audit --strict --online <formula> (where <formula> is the name of the formula you're submitting)?
[x] Have you built your formula locally prior to submission with brew install <formula>?

@bfontaine gotcha. Changed the formula to build from source. Any ideas for functionality to test besides that the proper version is installed? The more interesting commands all seem to have side effects or require network access.
   create		Create a chart in the local workspace.
   doctor		Run a series of checks to surface possible problems
   edit			Edit a named chart in the local workspace.
   fetch		Fetch a Chart to your working directory.
   home			Displays the location of the Helm home.
   info			Print information about a Chart.
   install		Install a named package into Kubernetes.
   lint			Validates given chart
   list, ls		List all fetched packages.
   publish		Publish a named chart to the git checkout.
   remove, rm		Remove one or more Charts from your working directory.
   repository, repo	Work with other Chart repositories.
   search		Search for a package.
   target		Displays information about cluster.
   uninstall		Uninstall a named package from Kubernetes.
   update, up		Get the latest version of all Charts from GitHub.
   generate		Run the generator over the given chart.
   template, tpl	Run a template command on a file.
   help, h		Shows a list of commands or help for one command

@jtescher You could use helm create foo then ensure "#{testpath}/.helm/workspace/charts/foo" is a directory. HOME is set to the testpath during tests.

Looks good now.
@BrewTestBot test this please.

Merged. Thank you for your contribution to Homebrew!
For future reference, our preferred format for new-formula commit messages is "  (new formula)", e.g. "kubernetes-helm 0.5.0 (new formula)".


Blank screen on Lenovo Gaming Chromebook 16 "Taniks" (Alder Lake)

Built the USB according to the instructions, but I get a blank screen when I try booting from USB. Tried rebuilding the image, flashing with different programs (ChromeOS recovery, etcher), tried different USB sticks, without any luck.
Any ideas on why it could be hanging?

it is 0( issue: https://github.com/cb-linux/breath/issues/325 )

I don't own this computer anymore. Godspeed to whoever tries to make this work.


add 'copyEventHandlers'

copyEventHandlers is used for the purpose of copying any event handlers defined externally, and setting them on the component's root.

[ ] Add spec documentation
[ ] Implement with tests

This feature was at some point added to the root function but then canceled by #99 .
is this still a feature request? or is it canceled?
@idoros @nadavwix

needs further discussion before it is ready for processing


Setup.py #60

Add setup.py to project and slightly modify the folder structure.

Coverage increased (+12.4%) to 67.586% when pulling 1b7a67a331cc79d7bd9273dee25bec1c4c2671ca on setup.py-#60 into 681fe744ce2ac17aa589ed1c851bfe4145bbffb3 on master.

Rebase is done. Should be ok to merge.

Coverage increased (+12.4%) to 67.586% when pulling 817b932942b8d2fca98e7a2b931b46b309657d6b on setup.py-#60 into 0f1ebe71d855351074845deb5694c440a88ef4cc on master.

LGTM~

I have found out that since I have moved the main.py into microproxy/command_line.py, we may need to issue the pip install when debugging. IMO, it's a little bit inconvenient. Maybe keeping the main.py while adding the command_line.py into the microproxy folder.

Coverage increased (+12.5%) to 63.205% when pulling 733eac06db177b7530d323cc1b0ff97365343a01 on setup.py-#60 into d0fd1c9072649203c7d49f07a8487e68f01404b1 on master.


Javascript lexer missparse floating point numbers without dot

(Original issue 528 created by None on 2010-08-30T17:10:29+00:00)
Numbers, which are floating point, but do not include a dot, will not be parsed correctly by the Javascript lexer.
Example:
1e5, 1e+5, 12E-2
Fix:
change
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
to
(r'[0-9][0-9]\.[0-9]+([eE][+-]?[0-9]+)?[fd]?|[0-9][0-9]([eE][+-]?[0-9]+)[fd]?', Number.Float),
or something similar
in lexers/web.py
Reported by thoka

(Original issue was assigned to gbrandl)

(Original comment by tshatch on 2010-12-21T08:11:41.749523+00:00)
Do you have a link to the spec, or an example file with all known-to-parse number formats to go on?

(Original comment by tyilo on 2015-06-29T19:06:45.186361+00:00)
This is probably related: 0. should be parsed as [(Token.Literal.Number.Float, '0.')] instead of [(Token.Literal.Number.Integer, '0'), (Token.Punctuation, '.')].
Also javascript only have floating point numbers, so I don't think JavascriptLexer should use Token.Literal.Number.Integer.
You can see the wrong syntax highlighting here too: http://pygments.org/demo/2031743/


Update architecture diagram for Cloud SCC

Please update the architecture diagram at https://forsetisecurity.org/docs/latest/concepts/architecture.html to include the Notifier -> Cloud Security Command Center feature (as per discussion with @blueandgold).

@jjawad-google can you handle this? Reach out to me offline and I'll show you the steps, thanks!

Grooming note: Try to combine this with other imagery changes.

Review if there are additional components that needs to be added to the architecture diagram besides what we have in the request (let's target this for v2.15).
Once complete, file a bug to update the diagram.

Is this ready to go out in 2.17?

This was already completed: https://forsetisecurity.org/docs/latest/concepts/architecture.html


Should use export default instead of export =

Hi, @wdavidw , would you like to release a new version that includes this PR.

Hi @Atry ,
I have temporarily reverted your change because I introduced some test and I couldn't make it work with your proposal. Could you review my changes and the TS related test file and make a new pull request ?


proposal: runtime/pprof: add new WithLabels* function that requires fewer allocations

runtime/pprof.Labels is used in conjunction with runtime/pprof.WithLabels to set pprof labels in a context for performance profiling.
https://github.com/golang/go/blob/c485506b0aae298652448e80fca35036bfa755ac/src/runtime/pprof/label.go#L59
Adding information for fine grained on demand profiling of already running binaries should idealy be very efficient so it can always stay enabled with minimal overhead. The current API could be made more efficient by requiring fewer heap allocations. Pprof information sourced from contexts added by census frameworks is used in large go deployments on every RPC request and thereby small performance gains add up to a larger resource saving across many servers.
The current runtime/pprof API requires census frameworks such as OpenCensus to first convert their internal representation of key and value tag pairs (in a slice or map) to a slice of strings for input to runtime/pprof.Labels.
https://github.com/census-instrumentation/opencensus-go/blob/df6e2001952312404b06f5f6f03fcb4aec1648e5/tag/profile_19.go#L24
This requires at least one heap allocation for a variable amount of labels. Then internaly the Labels functions constructs a LabelSet data structure which requires another allocation (the case where this uses more than one allocation will be improved with cl/181517 ). All in all this makes two heap allocations per context creation with pprof labels which can potentially be avoided.
I propose to extend runtime/pprof to have an API that takes e.g. a mapping/iteration interface such that census frameworks can implement that interface on their internal tag representations (e.g. maps and slices with custom types) and runtime/pprof can then source the labels to be set in a new runtime/pprof.WithLabels* function without first requiring conversion between multiple internal and external data structures.
cl/188499 is a quick prototype as an example how this could look like. Different other ways of making an interface that can be used are possible to reduce allocations. Note that the LabelSet struct cant be changed to an interface itself (which seems the cleaner approach) due being not API backwards compatible.
/cc @aclements @randall77 @matloob

ping to experts. Would be nice if this could be resolved before go1.14 enters the freeze period.
/cc @hyangah @pjweinbgo @matloob

I think @matloob knows the history of this API design and the plan to optimize LabelsSet and WithLabels better.
My impression was - it was originally designed to support census and it was uncommon to see a large number of new tags (labels) added at once. (usually one or two additional tags added per Do call except when a server is creating the new context based on the tags from wire). Maybe the trend is changed now?
The runtime/pprof.Do is what the package recommends for users to use, so this needs a variance of Do that works with LabelMapper.

Ping @pjweinbgo @matloob for any thoughts. Needing to make a Do does make this more complex.

I don't think that we need to have a variant of Do. WithLabels is meant to be a lower level interface than Do, and the WithLabelsFromMapper looks like just a more efficient replacement that an alternative to Do should use. I think it would be valid for OpenCensus to have its own variant of Do that calls WithLabelsFromMapper instead. As long as the OpenCensus variant of Do sets and unsets labels the same way Do does, code that uses pprof's Do and code that uses OpenCensus's Do should be compatible.
The way I thought about Do originally was that we'd make Do available for users who weren't using census or something similar, and other libraries would provide their own Dos that set the labels on the context and called WithLabels at the same time. It looks like this change provides another more efficient alternative to WtihLabels, so it seems like it fits in fine.

This sense of "map" - meaning apply a function to a data structure - is not one we've used much in Go to date (strings.Map is the exception). I'm also bothered by needing both Len and Map. Would it really be so bad if there was only Map? Then the argument could be a plain function instead of an interface. Right now the CL uses it as a hint to allocate a map, in which case it really doesn't matter, but if a different implementation used it to allocate a slice and then blindly filled in increasing indexes, that would be a problem.
I'm also a little confused about the avoidance of LabelSet. Should we instead be looking at an alternate LabelSet constructor, like LabelSetFromFunc (or a better name)? Then the result could be passed to both Do and WithLabels.

Any comments about trying to use an alternate LabelSet constructor instead of all new API?

I have not gotten around to profiling or testing that yet. Putting better naming aside a possible approach is:
type LabelSet struct {
  list []label // never used
  mapper LabelMapper
}

func LabelsFromMapper(lm LabelMapper) LabelSet {
  return LabelSet{mapper: lm}
}

func Labels(args ...string) LabelSet {
  return LabelSet{mapper: listMapper(args)}
}

func (l listMapper) Len() int { return len(l) }
func (l listMapper) Map(f func(key, value string)) {
  for i := 0; i+1 < len(l); i += 2 {
   f(l[i], l[i+1])
  }
}

to keep LabelSet struct backwards compatible. The inner workings of WithLabels can then be replaced with that of WithLabelsFromMapper from https://golang.org/cl/188499 using the mapper field of LabelSet.

Running new benchmarks will add them here soon.

@martisch, thanks for confirming that we can use an alternate LabelSet constructor instead of having to change other parts of the API.
It would still be good to find a way to avoid exposing the map[string]string. In the long run I expect that internal detail might change too. Unless it is OK for the LabelSet constructor to be passed a dummy map and copy those values out.

It would still be good to find a way to avoid exposing the map[string]string.
I agree.

Since we are in freeze for go1.14 I have 6months to spend some time figuring out an interface (and potential generic compiler optimization if needed) that does not cause an additional allocation and just assumes a string type for key and value but no other implementation details.

Marking this on hold until @martisch's update. @martisch, please remove the hold label once you have an update. No hurry. Thanks.

The OpenTelemetry Go SDK has taken a position on this topic:
https://github.com/open-telemetry/opentelemetry-go/pull/651
The Metrics API needs a LabelSet type that is both inexpensive, as stated in this issue, but also supports an Equal method, to support combining metric events by distinct label set. We landed on an interface{} containing a variable-size array of key-value structs.
It would be great if the runtime/pprof labels were somehow able to re-use structures computed in this way for OpenTelemetry.  OpenTelemetry's trace.WithSpan() function would then be able to automatically enter profiler labels from its span attributes, and cheaply, because it would simply enter a structure it has computed for other reasons.

In the above library, @martisch, we take the position that a stable sort, followed by de-duplication, is cheaper than using a map in this situation.

Referring to @rsc's API proposal above (https://github.com/golang/go/issues/33701#issuecomment-531009349), I believe that it's slightly better to support an interface like in the OTel label package above, which is:
type LabelSet interface {
    Len() int
    Get(int) (KeyValue, bool)
}

This my preference because often to pass a func() argument implies an allocation, whereas the simpler Get() API does not.

Thanks for the suggestions.
I initially chose the Map approach since some census frameworks use maps for census labels. Since maps have no native operations to get the i th element and no stable iteration order the Get approach for maps needs them to extract all keys+values and buffer them. Maybe that easy enough to do with a wrapper (but it will cause allocation(s)). If that is as good as the map approach this might be workable and as good in performance if we teach the compiler to potentially optimize extracting all keys and values in a loop.
P.S. I dont see a proposal of Len and Get in the comments (but tried it in an initial prototype).

I was referring to Len() and Get() in the OTel API linked in the comment above (https://github.com/golang/go/issues/33701#issuecomment-618606266).
If the type has to be a struct, I'd make it a struct { LabelInterface } so that we can support more than one input type that implements LabelInterface.


Automated testing

It would be great to get some test datasets and automated testing in place. We've started to do this with the demo folder but there are probably more robust ways than doing a full integration test.

Continuous integration functionality was added by @keithchev as of the most recent version. Thanks, Keith!


Update to .NET 5.0

Update all projects to .NET 5.0, Download SDK Here

Cheers buddy! Now do you want to add all of Cata+ to it? 😄
Will look over later

Cheers buddy! Now do you want to add all of Cata+ to it? 😄
Will look over later

Add all of Cata+?! 😄 Do you mean MoP and stuff?

Beautiful, cheers dude!


[RFC] FastCall API

Currently, Zephir compiler misses a lot of cases where method caching could save some time. Some of these misses are by design (i.e., when a non-final method is called, the compiler cannot be sure which class $this refers to), some are compiler defects (when the same method is called in a loop).
Some of these deficiencies are dealt with by the Zephir Kernel (it tries to cache functions and methods called by the user code). However, this caching is not very efficient: a) every method/function is cached, b) cache is stored in hash tables.
FastCall API can be used to deal with these deficiencies; however, right now it is quite low-level and is for manual use only.
Usage example
Benchmarks
PS: fastcall branch was branched off master and does not include fixes from #1509.
However, my initial impression is that it could be faster than our current CALL API.
The main question is: do we need it? :-)
@sergeyklay @Jurigag @ovr

The current implementation is very simple:
void fcall_init(zval *return_value, zval *callable)
{
	zephir_fci *info = ecalloc(1, sizeof(zephir_fci));
	char *error = NULL;

	if (FAILURE == zend_fcall_info_init(callable, IS_CALLABLE_STRICT, &info->fci, &info->fcc, NULL, &error)) {
		zend_throw_exception_ex(zend_exception_get_default(), 0, "Error: %s", error);
		efree(error);
		RETURN_NULL();
	}

	ZVAL_PTR(return_value, info);
}

void fcall_call(zval *return_value, zval *fcall, zval *parameters)
{
	if (parameters && Z_TYPE_P(parameters) != IS_ARRAY && Z_TYPE_P(parameters) != IS_NULL) {
		zend_throw_exception_ex(zend_exception_get_default(), 0, "fcall_call: parameters must be array or NULL");
		RETURN_NULL();
	}

	if (IS_PTR == Z_TYPE_P(fcall)) {
		zephir_fci *info = Z_PTR_P(fcall);

		if (info->fci.size == sizeof(info->fci)) {
			if (parameters && IS_ARRAY == Z_TYPE_P(parameters)) {
				zend_fcall_info_args_ex(&info->fci, info->fcc.initialized ? info->fcc.function_handler : NULL, parameters);
			}

			zend_fcall_info_call(&info->fci, &info->fcc, return_value, NULL);

			if (parameters && IS_ARRAY == Z_TYPE_P(parameters)) {
				zend_fcall_info_args_clear(&info->fci, 1);
			}

			return;
		}
	}

	zend_throw_exception_ex(zend_exception_get_default(), 0, "Bad parameter passed to fcall_call()");
	RETURN_NULL();
}

void fcall_done(zval *fcall)
{
	if (IS_PTR == Z_TYPE_P(fcall)) {
		efree(Z_PTR_P(fcall));
		ZVAL_NULL(fcall);
		return;
	}

	zend_throw_exception_ex(zend_exception_get_default(), 0, "Bad parameter passed to fcall_done()");
}

PHP 7.0.17 ZTS DEBUG
$this->f()                 5.162
self::f()                  6.259
self::f() -> true          6.289
$this->f() [slow]          3.973
$this->f() [fast]          0.647
self::f() [fast]           0.645
self::f() -> true [fast]   0.643

PHP 7.0.17 ZTS DEBUG, #1509:
$this->f()         2.074
self::f()          2.210
self::f() -> true  2.222

Looks good to me. Awesome job man 👍

7.0.17 NTS RELEASE
#1509
$this->f()         0.381
self::f()          0.468
self::f() -> true  0.467

fastcall
$this->f()                 1.187
self::f()                  1.453
self::f() -> true          1.467
$this->f() [slow]          0.650
$this->f() [fast]          0.118
self::f() [fast]           0.117
self::f() -> true [fast]   0.118

right now it is quite low-level and is for manual use only.
Will be a problem to make it not manual use? Like automatically used when possible?

Not sure. The reason is that the optimizer does not have enough information about the environment.
For example,
class A
{
    public function someMethod()
    {
        /* ... */
    }

    public function test()
    {
        $this->someMethod();
    }
}

The optimizer does not know which someMethod() is called: A's or of some other derived class. The developer may know that, and therefore is able to optimize this.

Basically, I see only two safe cases:

A plain function is called.
A private final method or private static function is called.

As i understand this is seperated thing from fix here - https://github.com/phalcon/zephir/pull/1509/files ? Or i miss something?

Yes. They are both applicable. #1509 is ready to use, this one is yet to be discussed :-)

It could be nice to have such a thing. If there are cases where we could make used by default.
Tbh im not sure what exactly is cached etc stuff, i think like for example in phalcon this would be uselss to add this, i guess the code itself in most of methods is costing more time than call itself.

@Jurigag it depends
For example, in this case:
foreach ($array as $value) {
    $class->doSomething($value);
}

fcall can help. If the same method is going to be used more than once, fcall can help.
Its advantage over our current call API is that it does not waste time maintaining caches and setting up call contexts. The setup is performed once in fcall_init. facll_call just passes parameters to the method/function and calls its handler, nothing more, this is why it is fast. However, if you pass a fcall variable to another method in another class (it is technically possible), that method will be able to call the cached method even if it is protected or private or is otherwise not callable from the current context.
The disadvantages are that it is too low-level (fcall_done() must be called manually for every fcall_init() — I failed to make the compiler understand a custom type, it converts it to zval :-( ), lacks error checking (by design), and currently have to be used only manually.

Could it speed up recursive method calling? Like for example this topic on forum - https://forum.phalconphp.com/discussion/15947/acl-increase-speed i have other to solve it, just by adding getters and setters so people can just use some cache to set and remove addRole etc stuff

Yes. You just need to make sure that fcall_init() is called only once.
Smth like that:
funciton f($fci = null)
{
    $cleanup = false;
    if (fci === null) {
        fci = fcall_init('f');
        $cleanup = true;
    }

    /* Recursion */
    $result = fcall_call($fci, [$fci, $other, $parameters]);

    if ($cleanup) {
        fcall_done($fci);
    }
}

It's more controllable for me.

Well actually we need to make somehow a nice way to make it default way to call methods, functions etc because currently zephir is around 3 times slower than PHP 7.2 in method calling etc. I would propose somehow to cache all those fcall infos and reuse them, maybe even between requests if somehow possible.

I think on some point we should focus on this @sergeyklay just test this https://github.com/phalcon/zephir/blob/development/unit-tests/microbench.php between zephir + php 5.6/7.0./7.1/7.2 and implement this in plain php 5.6/7.0/7.1/7.2 you will notice that results for zephir method calling are kind of really meh, because of no fast call. Not sure if im correct but i think it was here on some point? But it was introducing issues, i guess we need to work on this for performance.

@dreamsxin Could you look into this somehow and check out what could we do here?

It is better to directly call the kernel method or the Ç function to reduce the use of zend_call_*

Yea but it's too complicated to do it in zephir code.

This thing is very complex to implement it properly :-(
When PHP compiles the code, it can calculate FCI fields in advance and make every suitable FCALL reference the respective FCI structure. If we populate the FCI at runtime, there are several challenges:

FCI depends on the method visibility (i.e., if we call a protected or private method, we must take into account relationships between classes);
we need to take into account magic methods (__invoke, __call, __callStatic), as they allow us to call methods which are not visible to the caller;
we store FCIs in a hash; the more elements in that hash, the more expensive cache lookups are (they affect performance; PHP has a pointer to a FCI structure, access time is roughly O(1); we have a hash, access time is roughly O(log n)).

One possible solution is to make Zephir collect all function / method calls in the method being processed, and add the code to populate their FCIs. However,

if a method / function is called only sometimes (say, when some condition is true), we will have performance penalty for FCI calculation;
FCI won't be shared between methods (say, two methods call str_replace() - its FCI will be calculated twice);
need to take care of protected / private contexts.

Another solution is to use low-level API, as described above :-(

Well at least implementing it as low-level API could be fine, to add it in most of the areas where we can achieve actual performance boost, i guess mostly with same method called multiple times.


How does the Cryptographic scheme of Stash work

Hi,
wanted to understand how it all works!

What hash algorithm is used to create the hash of the master password?

Is that same (stored in the db) hash used to encrypt & decrypt data on nodes stored in the database? Of if something else, how is it generated? (and the salt)

I've tried tracing through the Haskell, but am not an expert and couldn't quite get there :) thanks!

Thank you... but what is the key (padded or not) used for the AES encryption/ decryption (and where does it come from)? That's the part I was trying to trace through but didn't manage.
libsodium looks very interesting! a cross platform standard for securing data.
BTW, would it be possible to add a license for stash?

Ah the AES encryption/decryption key is the passphrase of the stash file. It is read in either from console prompt or from STASH_ENCRYPTION_KEY env variable if it is set -- for babashka pod script you pass it in during stash/init call https://github.com/rorokimdim/stash/blob/master/scripting-examples/babashka/stash.clj#L25-L27
(On hindsight, i should have used the passphrase to encrypt a random encryption key and used the random encryption key for the data. the libsodium version will do that)
stash is made available under bsd-3 license https://github.com/rorokimdim/stash/blob/master/LICENSE

Got it. Thanks very much!

Actually @rorokimdim  last question about encryption! Would it not be better to use a stronger password hashing algorithm than sha512 for hashing the master password? e.g. something like bcrypt or scrypt.

i picked sha512 + good random salt as it seemed good enough to me.
i could have avoided hashing or storing hashes altogether if i had designed the program differently. I am indeed working on a version that does that -- along with switching to using libsodium and lot of other things including a mobile app and a way to safely share data.
However, if you are are concerned about using sha512, it's not difficult to switch to anything you want (just these lines mostly https://github.com/rorokimdim/stash/blob/1b3fefab402c580a8e743119e69d71b3a25f42a4/src/Cipher.hs#L52-L65)

Thanks @rorokimdim. Look forward to the next version (of this super useful utility). I hope it will come as a babashka pod at some point!

@judepayne wondering if you'd be interested in trying out something I've been working on https://textlambda.com/. If you have suggestions or comments for me you can email me at<EMAIL_ADDRESS>While I see myself using it I'm not sure if it will appeal to anyone else.
Many thanks!

@rorokimdim thanks for asking. Quite busy at the moment, but will try to get to it in the next ten days or so

@judepayne of course! thank you very much


Over All-in bug

Fix the bug where, if you bid more chips than the opponent has, it doesn't take any chips away from the opponent if they lose. All their chips should be added to the pot.

W18 OK (75 pts)


⚠ Bofrost.fr has degraded performance

In 2555d64, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 995 ms

Resolved: Bofrost.fr performance has improved in 94591ec.


Add decorator for hermes/dialogueManager/intentNotRecognized

See the forum.

Added in release 0.2.0.


Cheat Codes extension

Easily add cheat codes to your code.

Please consider using ioDevices.keyboard instead of document.addEventListener.

This one is actually very useful to me, thx!

Ok but what stops you from using this block from Makey Makey? It does the exact same thing, but a whole lot simpler.

Closing for the above issue.


Add User-Agent to jwks http requests

Title: Add User-Agent to jwks http requests
Description:
Requests to get the jwks url fail because the requests lack a user-agent header. This is a requirement from the IDP. I'm currently using Envoy Gateway in EKS.
The below request fails, I'd like to add a user-agent to get that working.
[2024-08-21 22:46:23.522][1][debug][router] [source/common/router/router.cc:750] [Tags: "ConnectionId":"0","StreamId":"17207847609171885090"] router decoding headers:
':path', '/path/oauth/jwks'
':authority', 'auth.url.dev'
':method', 'GET'
':scheme', 'http'
'x-envoy-internal', 'true'
'x-forwarded-for', '<IP_ADDRESS>'
'x-envoy-expected-rq-timeout-ms', '10000'

cc @tyxia as code owner

I guess I can work on this issue

Incase of programs what should we mention in the UA string? Some generic browser UA string or the go library we are using?

@Athishpranav2003 I think it is still open. Your help/contribution would be appreciated. Thanks!

I will work on it this week ✌

@KBaichoo @tyxia could you guys please check this. I am not sure how i can test it.


Bad parsing if I remove 2nd paragraph in last definition

Here is example to try:
(Or permalink)
Term 1

: Definition of term 1

  Definition continuation...

Term 2

: Definition of term 2

  Definition continuation...

Term 3

: Definition of term 3

  Definition continuation... Could not be removed

It works well. But, if I try to remove the last continuation, the parsing will be wrong.
It doesn't affect the demo. The demo works perfectly: permalink, there are no errors.
But in my local testing, for some reason, it fails.
Instead of properly rendering, the
 tags are missings. That's what I mean:

Term 1

Definition of term 1Definition continuation...

Term 2

Definition of term 2Definition continuation...

Term 3

Definition of term 3

And as a result, the text is just broken. Like this:
Definition of term 1Definition continuation...

Vitaly, is it expected behaviour by default? I see, in demo it works perfectly, without any errors, but probably you used some special code in index.js to fix this issue (and this issue is well known to you)? Thanks.

https://github.com/markdown-it/markdown-it/blob/master/support/demo_template/index.js#L135 demo has no special code, it just activates plugin.
Try to create separate repo with minimal example how to reproduce your problem (example should be as minimal as possible, for node.js). 2 samples - good and bad

I use browser version and not familiar with Node. But, it seems, there is a little mistype in current dist version of plugin.
A simple diff between index.js and markdown-it-deflist.js shows, that tight = true; is located in different places.
markdown-it-deflist.js (buggy):
OUTER:
for (;;) {
  tight = true;
  prevEmptyEnd = false;

index.js (correct result):
// Start list
listTokIdx = state.tokens.length;
tight = true;

Are you changed it intentionally, or it is really just a mistype (bug)?

Seems i forgot to rebuild browser files in prev release. 2.0.2 should fix this.


docker compose failing with this error - macOS

username@nickname-MacBook-Pro snap-camera-server-3.0.1 % docker compose up
[+] Running 0/1
 ⠋ Container snap-camera-server-301-webproxy-1  Creating                                   0.1s
Error response from daemon: image with reference nginx was found but does not match the specified platform: wanted linux/amd64, actual: linux/arm64/v8

I have read the instructions and my config is:
`version: '3.8'
services:
mysql:
platform: linux/amd64
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
ports:
- ${MYSQL_LOCAL_PORT}:${MYSQL_DOCKER_PORT}
volumes:
- db:/var/lib/mysql
- ./mysql:/docker-entrypoint-initdb.d:ro
adminer:
platform: linux/amd64
image: adminer
environment:
- ADMINER_DEFAULT_SERVER=mysql
- ADMINER_DESIGN=${ADMINER_DESIGN}
ports:
- ${ADMINER_LOCAL_PORT}:${ADMINER_DOCKER_PORT}
depends_on:
- mysql
webproxy:
platform: linux/amd64
image: nginx
environment:
- WEBAPP_PORT=${APP_DOCKER_PORT}
- HTTP_PORT=${NGINX_DOCKER_PORT}
- WWW_ROOT=${NGINX_WWW_ROOT}
volumes:
- ./ssl/studio-app.snapchat.com.crt:/etc/ssl/certs/studio-app.snapchat.com.crt:ro
- ./ssl/studio-app.snapchat.com.key:/etc/ssl/private/studio-app.snapchat.com.key:ro
- ./nginx/default.conf.template:/etc/nginx/templates/default.conf.template:ro
- ./nginx/theme:/etc/nginx/theme:ro
- ./nginx/snap-camera-categories-media:${NGINX_WWW_ROOT}/snap-camera-categories-media:ro
- ./nginx/snap-camera-media:${NGINX_WWW_ROOT}/snap-camera-media:ro
- ./nginx/snap-camera-media-alt:${NGINX_WWW_ROOT}/snap-camera-media-alt:ro
- ./import:${NGINX_WWW_ROOT}/import
- storage:${NGINX_WWW_ROOT}
ports:
- ${NGINX_LOCAL_PORT}:${NGINX_DOCKER_PORT}
- 443:443
depends_on:
- webapp
webapp:
platform: linux/amd64
build: .
environment:
- DB_HOST=mysql
- DB_USER=${MYSQL_USER}
- DB_PASS=${MYSQL_ROOT_PASSWORD}
- DB_NAME=${MYSQL_DATABASE}
- DB_PORT=${MYSQL_DOCKER_PORT}
- PORT=${APP_DOCKER_PORT}
- STORAGE_SERVER=http://studio-app.snapchat.com:${NGINX_LOCAL_PORT}
- STORAGE_PATH=/var/lib/snapcamera
- IMPORT_DIR=import
- MEDIA_DIR=snap-camera-media
- MEDIA_DIR_ALT=snap-camera-media-alt
volumes:
# content of snap-camera-media (MEDIA_DIR) is not getting included automatically through storage
- ./nginx/snap-camera-media:/var/lib/snapcamera/snap-camera-media:ro
- ./import:/var/lib/snapcamera/import
- ./:/usr/src/app
- /usr/src/app/node_modules
- storage:/var/lib/snapcamera
ports:
- ${APP_LOCAL_PORT}:${APP_DOCKER_PORT}
depends_on:
- mysql
volumes:
storage:
name: server-storage
db:
name: mysql-db`

You probably have to delete your existing containers
run docker compose down
and/or manually remove any old docker images inside docker desktop
after cleaning docker compose up should work

nope, there is the same
username@nickname-MacBook-Pro snap-camera-server-3.0.1 % docker compose down
[+] Running 4/4
 ⠿ Container snap-camera-server-301-webapp-1   Removed                                     0.1s
 ⠿ Container snap-camera-server-301-adminer-1  Removed                                     0.1s
 ⠿ Container snap-camera-server-301-mysql-1    Removed                                     0.0s
 ⠿ Network snap-camera-server-301_default      Removed                                     0.1s
username@nickname-MacBook-Pro snap-camera-server-3.0.1 % docker compose up
[+] Running 4/4
 ⠿ Network snap-camera-server-301_default       Created                                    0.0s
 ⠿ Container snap-camera-server-301-mysql-1     Created                                    0.1s
 ⠿ Container snap-camera-server-301-adminer-1   Created                                    0.1s
 ⠿ Container snap-camera-server-301-webapp-1    Created                                    1.8s
 ⠋ Container snap-camera-server-301-webproxy-1  Creating                                   0.1s
Error response from daemon: image with reference nginx was found but does not match the specified platform: wanted linux/amd64, actual: linux/arm64/v8

Hmm try to remove the platform line from webproxy
webproxy:
    image: nginx

If it doesn't work, try to add a tag after nginx
  webproxy:
    platform: linux/amd64
    image: nginx:1.22

Other possible tags could be:
1.23 | latest | stable

Removing the "platform" line helped me.
However, when the process went further, apparently not all lenses are saved, because a lot of similar errors fell out in the terminal:
snap-camera-server-301-webapp-1    | Downloading https://lens-storage.storage.googleapis.com/png/0ddd45e4b5244ae5a38fa5df396e98a4
snap-camera-server-301-webapp-1    | downloadFile error: FetchError: Invalid response body while trying to fetch https://lens-storage.storage.googleapis.com/png/edf081d1d4fb42a3adbc3d46ebbcd264: aborted
snap-camera-server-301-webapp-1    |     at consumeBody (file:///usr/src/app/node_modules/node-fetch/src/body.js:234:60)
snap-camera-server-301-webapp-1    |     at runMicrotasks (<anonymous>)
snap-camera-server-301-webapp-1    |     at processTicksAndRejections (node:internal/process/task_queues:96:5)
snap-camera-server-301-webapp-1    |     at async downloadFile (file:///usr/src/app/src/utils/storage.js:207:24)
snap-camera-server-301-webapp-1    |     at async savePNG (file:///usr/src/app/src/utils/storage.js:134:13)
snap-camera-server-301-webapp-1    |     at async Module.saveLens (file:///usr/src/app/src/utils/storage.js:22:9)
snap-camera-server-301-webapp-1    |     at async Module.downloadLens (file:///usr/src/app/src/utils/helper.js:121:20)
snap-camera-server-301-webapp-1    |     at async Query.onResult (file:///usr/src/app/src/utils/db.js:258:25) {
snap-camera-server-301-webapp-1    |   type: 'system',
snap-camera-server-301-webapp-1    |   errno: 'ECONNRESET',
snap-camera-server-301-webapp-1    |   code: 'ECONNRESET',
snap-camera-server-301-webapp-1    |   erroredSysCall: undefined
snap-camera-server-301-webapp-1    | } https://lens-storage.storage.googleapis.com/png/edf081d1d4fb42a3adbc3d46ebbcd264

The server is working fine, but some of the lenses cannot be loaded. For example, when I try to turn on one of these lenses, the Webproxy terminal writes only this and that's all:
2023-04-02 11:37:59 <IP_ADDRESS> - - [02/Apr/2023:08:37:59 +0000] "GET /vc/v1/explorer/unlock?uid=61838800878 HTTP/1.1" 200 363 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"
2023-04-02 11:37:59 <IP_ADDRESS> - - [02/Apr/2023:08:37:59 +0000] "GET /3/c8FUojs13utIRDnlf9Ntm?bo=EhgaABoAMgF9OgEEQgYIyr_zoAZIAlASYAE%3D&uc=18 HTTP/1.1" 200 86190 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"

At the same time, if I turn on a lens that can load, the Webproxy terminal writes:
2023-04-02 11:41:57 <IP_ADDRESS> - - [02/Apr/2023:08:41:57 +0000] "GET /png/9f0b0619-1852-31af-b853-6f6fa18faaa2_320_d2876207-2ffb-45c3-811b-9c2cd39bf2bd.png HTTP/1.1" 200 57810 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"
2023-04-02 11:41:57 <IP_ADDRESS> - - [02/Apr/2023:08:41:57 +0000] "GET /vc/v1/explorer/unlock?uid=60115820875 HTTP/1.1" 200 2209 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"
2023-04-02 11:41:58 <IP_ADDRESS> - - [02/Apr/2023:08:41:58 +0000] "POST /vc/v1/explorer/lenses HTTP/1.1" 200 908 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"
2023-04-02 11:41:58 <IP_ADDRESS> - - [02/Apr/2023:08:41:58 +0000] "GET /vc/v1/explorer/unlock?uid=60115820875 HTTP/1.1" 200 2224 "-" "SnapCamera/<IP_ADDRESS> (macOS 13.3)" "-"

Apparently there is an error somewhere in the parsing of some lenses.

Did you apply the signature patch?


Test262: Show percent of tests of TestResult type from the total in tooltips

This patch adds displaying of percent of tests with TestResult type from the total test count in tooltips. I think it's convenient to see for example a fraction of passed tests at some date.

Awesome, thanks! Please reformat the code using prettier :)


Part images not loading - API change?

Hi, I've noticed that recently all the part images are starting to fail to load; this appears to be linked to LCSC's recent website revamp, the content you scrape from the webpage to retrieve the images etc. has changed and the particular section with various image sizes is no longer present, so we get "no image found" for every part 😢
I started a vague attempt at fixing this up myself;  it looks like you're jumping through a lot of hoops to find the part's product page, scrape the page for a script tag, and process out the contents of the script tag to extract attributes and image URLs?
I'm not quite sure what would need changing to deal with the change in image URL presentation, but there is one thing I've found that's probably helpful. The scraping doesn't seem to be necessary anymore, with the new site there's a web API you can call at https://wwwapi.lcsc.com/v1/products/detail?product_code=<LCSC C number here> which passes back a JSON response with all the part details; e.g. for C1525 (0.1uF 0402 basic capacitor) you get:
{
  "productId": 1877,
  "productCode": "C1525",
  "productModel": "CL05B104KO5NNNC",
  "parentCatalogId": 312,
  "parentCatalogName": "Capacitors",
  "catalogId": 313,
  "catalogName": "Multilayer Ceramic Capacitors MLCC - SMD/SMT",
  "brandId": 254,
  "brandNameEn": "Samsung Electro-Mechanics",
  "encapStandard": "0402",
  "split": 100,
  "productUnit": "Piece",
  "minPacketUnit": "Reel",
  "minBuyNumber": 100,
  "maxBuyNumber": -1,
  "minPacketNumber": 10000,
  "isEnvironment": true,
  "allHotLevel": null,
  "isHot": true,
  "isPreSale": false,
  "isReel": true,
  "reelPrice": 3,
  "stockNumber": 6888200,
  "stockSz": 4332700,
  "stockJs": 2555500,
  "productPriceList": [
    {
      "ladder": 100,
      "usdPrice": 0.0013,
      "currencyPrice": 0.0013,
      "currencySymbol": "US$",
      "discountRate": null
    },
    {
      "ladder": 1000,
      "usdPrice": 0.001,
      "currencyPrice": 0.001,
      "currencySymbol": "US$",
      "discountRate": null
    },
    {
      "ladder": 10000,
      "usdPrice": 0.0009,
      "currencyPrice": 0.0009,
      "currencySymbol": "US$",
      "discountRate": null
    },
    {
      "ladder": 50000,
      "usdPrice": 0.0008,
      "currencyPrice": 0.0008,
      "currencySymbol": "US$",
      "discountRate": null
    }
  ],
  "productImages": [
    "https://assets.lcsc.com/images/lcsc/900x900/20180914_Samsung-Electro-Mechanics-CL05B104KO5NNNC_C1525_front.jpg",
    "https://assets.lcsc.com/images/lcsc/900x900/20180914_Samsung-Electro-Mechanics-CL05B104KO5NNNC_C1525_back.jpg",
    "https://assets.lcsc.com/images/lcsc/900x900/20180914_Samsung-Electro-Mechanics-CL05B104KO5NNNC_C1525_blank.jpg"
  ],
  "pdfUrl": "https://datasheet.lcsc.com/lcsc/1810191219_Samsung-Electro-Mechanics-CL05B104KO5NNNC_C1525.pdf",
  "productDescEn": null,
  "productIntroEn": "X7R 100nF ±10% 16V 0402 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS",
  "paramVOList": [
    {
      "paramCode": "param_10954",
      "paramName": "温度系数",
      "paramNameEn": "Temperature Coefficient",
      "paramValueEn": "X7R",
      "isMain": true,
      "paramType": null,
      "paramDetailValue": "X7R",
      "paramUnit": null,
      "paramDetailValueForSearch": -1,
      "paramSearchType": null
    },
    {
      "paramCode": "param_10951_n",
      "paramName": "容值",
      "paramNameEn": "Capacitance",
      "paramValueEn": "100nF",
      "isMain": true,
      "paramType": "param_detail",
      "paramDetailValue": null,
      "paramUnit": null,
      "paramDetailValueForSearch": 100000,
      "paramSearchType": "equal"
    },
    {
      "paramCode": "param_10952_s",
      "paramName": "精度",
      "paramNameEn": "Tolerance",
      "paramValueEn": "±10%",
      "isMain": true,
      "paramType": "param_detail",
      "paramDetailValue": "±10%",
      "paramUnit": null,
      "paramDetailValueForSearch": null,
      "paramSearchType": null
    },
    {
      "paramCode": "param_10953_n",
      "paramName": "额定电压",
      "paramNameEn": "Voltage Rated",
      "paramValueEn": "16V",
      "isMain": true,
      "paramType": "param_detail",
      "paramDetailValue": null,
      "paramUnit": null,
      "paramDetailValueForSearch": 16,
      "paramSearchType": "able"
    }
  ],
  "productArrange": "Tape & Reel (TR)",
  "productWeight": 0.013,
  "foreignWeight": 0.013,
  "isForeignOnsale": true,
  "isAutoOffsale": false,
  "isHasBattery": false,
  "title": "Samsung Electro-Mechanics CL05B104KO5NNNC",
  "weight": 0.013,
  "brandCategory": 2,
  "videos": [
    {
      "url": "https://assets.lcsc.com/attachment/video/video_1b65dfd2cf7d46a08fa134d0a3a69e11.mp4",
      "cover": "https://assets.lcsc.com/attachment/video/video_8d167f6069fb4dda8f0c7f52583f3e84.jpg",
      "detail": "Let's see how to pick Multilayer Ceramic Capacitors at LCSC Electronics."
    },
    {
      "url": "https://assets.lcsc.com/attachment/video/video_74d949def8c245b6ae820630b61345cb.mp4",
      "cover": "https://assets.lcsc.com/attachment/video/video_3eced888029042fda97994a72903a92e.jpg",
      "detail": "See how to pick MLCC-SMD in LCSC"
    },
    {
      "url": "https://assets.lcsc.com/attachment/video/video_1376295b190a485793576a4ce0511d21.mp4",
      "cover": "https://assets.lcsc.com/attachment/video/video_f14d7328866d4e2f9cda92fa1119faa7.jpg",
      "detail": "How do LCSC staffs pick electrolytic capacitors?"
    }
  ],
  "recommend": [
    "Snipped this bit out for brevity since it's not needed."
  ]
}

(I ran this through jq for formatting)
I would be quite happy to rework things to use this API path to retrieve part info, but I haven't been able to work out enough of the program flow / how the objects that are being passed around are supposed to look to know what to change...

Thank you for letting me know and pointing me to the API. I was scraping the pages after the change in a hard way.
I just updated the system, so the images should gradually appear (we have to refetch the whole database which can take several days).

No problem, the whole scraping thing looked like it was a nightmare to set up & maintain, and I figured if they had a search API they probably had a "get product details" API - a little bit of digging through page sources later, I found one 😄 Thanks for the fix!
I should mention, links through to the product pages (by clicking the C-number) weren't working for me either, but it seems like that probably had the same root cause; if that's still broken once parts are updated (it could take up to two weeks, from the look of things - at 10k/day with ~150-160k parts) I'll let you know.
Thanks again!

Both links and images should be working now.

All looks fine from here, thanks again! I'll go ahead and close this 😄


Is the new TaHoma Switch supported?

Hi,
I'm planning to integrate my Somfy shutter control into ioBroker. Is the new TaHoma Switch supported by your adapter? Or is only the TaHoma Premium box supported?
I checked the following sheet that compares the compatibility of TaHoma Switch, TaHoma DIN Rail and TaHoma Premium.
According to this table the local API is also supported in the new TaHoma Switch. I assume your adapter is using this API for access?

Any hint is appreciated so that I do not buy the wrong box. ;-)
Kind regards
Florian

The most honest answer about Tahoma Switch support I can give is "I don't know". Mainly because I only own Tahoma Premium and therefore cannot test it myself. If it can be controlled via Tahomalink.com or the Tahoma Smartphone app, I would say there is a good chance it could work, since they use the same API that this adapter uses (in an unofficial manner). I don't know though if the API differs for Tahoma 3.0 vs. 2.0.
The "Local API" seems not much more than some rumor spread by Somfy, but I know of numerous cases where people asked Somfy about more information and did not get any meaningful reply. To me it seems like Somfy has no real interest to provide a  solution for offline access of their device-API, which is a shame. Closing down their forum where customers at least could exchange directly about such topics does not make things easier either. :-(
The only real offline/local API that exists for Somfy IO devices to my knowledge is offered via Velux KLF 200, but I don't own that one either.

@Excodibur
Thanks for your detailed answer. I will therefore play it safe and buy the Tahoma Premium box.


ESLint / Minor bug fixes and eslint-recommended practices

License: Fix warning about unrecognized SPX identifier in package.json: "BSD" -> "BSD-3-Clause"
Linting: Add recommended ESLInt rules (to catch bugs); 1. Fix: reference to Point instead of Point2D in toString; 2. Avoid globals (roots, cmd); 3. unnecessary semi-colons; 4. unused variables; 5. Avoid redeclarations; 6. Markup assignment within conditional with extra parentheses
npm: Add eslint script
Git: Ignore package-lock.json

I'm also planning changing source to ES6 Modules with UMD and ESM distributions (possibly with Babel against other ES6 changes) if you're open to it.
And if you wouldn't mind, I'd also be interested in hearing if you've been tracking the subsequent changes to the original project from which you forked and what led you to fork rather than submit PRs.
And if you have any thoughts about a utility to convert an actual SVG element to your SVG-like constructs.
Thanks!

Great to see you contributing, thank you! :)
To be honest, I cannot quite remember what triggered me to fork the repo instead of just wrapping the kld-intersections modules. What we added on top of the actual intersection calculation functions is an  API to initialize the input parameters for these functions that is straightforward when dealing with SVG elements (see IntersectionParams.newShape function). For some reason, forking seemed like the way to go back then, probably because we needed to access private APIs of kld-intersections to realize this.
We didn't do a great job tracking changes from the upstream. The kld-intersections module seems to have come a long way since our fork and we might evaluate whether we could use it as a dependency while keeping our public API. So this module would be nothing more than an API wrapper. We should explore this. Any help would be greatly appreciated ;)

I've gone ahead and revised the commits (also in the other PR).
Thank you for publishing this useful library, and thank you for the understanding regarding forking and the new API. I'd also like to build upon your newShape code to allow SVG elements themselves to be passed in.
Regarding a new API, what if I were to possibly lint/modularize against their upstream version, and in the process ask about openness to either directly integrating your changes or providing for hooks? I'm not sure how easily/quickly I can gain an insight into your needs to do so, but maybe starting a discussion could point out a direction?


RequestPattern breaks  hashCode contract

RequestPattern breaks java hashCode contract with respect to equals.

If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.

A = {
  "urlPath" : "/test",
  "method" : "GET"
}
B = {
  "urlPath" : "/test",
  "method" : "GET"
}
A equals B = true
B equals A = true
A.hashCode equals B.hashCode = false

this is because hashCode includes matcher, defaultMatcher whereas equals does not

Thanks for pointing this out. Is this causing a discernable impact somewhere?

You can use pojo-tester (that I developed) to avoid such a bugs in the future.
I tests your equals and hashcodes (and more) automatically and find bugs in implementation on test phase.
See more at www.pojo.pl ;)

Thanks, will check that out!

Ah, shame it's Java 8 upwards. WireMock needs to stay on 7 for a while longer unfortunately.

Oh 😞 why not switching to 8 :) ?

I did briefly in the 2.0-beta, but to howls of complaint. There are still too many folks stuck on 7 so I'm going to wait a while before making the switch.

So looking forward to java 8 ;)
BTW I you are still interested in pojo-tester features (more stable pojo-methods, avoid boilerplate tests), before completly switching to java 8, and using intellij you can switch to java8 in Project Structure ;)


Update README File with Azure SDK link

provide visual studio link for Auzre SDK

Hi @crystaju, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

Thanks Andrew! Really appreciate it.


docker-hub: remove duplicated api latest page

follow-up https://github.com/docker/docker.github.io/pull/14685#issuecomment-1120810195
Signed-off-by: CrazyMax<EMAIL_ADDRESS>

Interesting; Netlify build failed? Not sure i've seen that before 😅

oh; it's running again 🤞

Interesting; Netlify build failed? Not sure i've seen that before 😅

Yes looks like a dir has not been cleaned up correctly i ntheir pipeline:
11:17:10 PM: mv: target '/opt/build/cache/node_version/' is not a directory
11:17:10 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
11:17:10 PM: Creating deploy upload records
11:17:11 PM: Failing build: Failed to build site
11:17:11 PM: Failed during stage 'building site': Build script returned non-zero exit code: 2 (https://ntl.fyi/exit-code-2)
11:17:11 PM: Finished processing build request in 1m0.681372451s


"Rename Symbol" not functional

Bug description
Selecting Rename Symbol, whether via Command Palette or F2, will not cause the action to perform. In addition, it can crash Lapce upon repeatedly attempting to use the feature. This could only be reproduced upon the first attempt after installing Lapce.
Lapce Version
0.2.6
System information
Arch Linux with GNOME

So you don't have any extensions installed? Lapce does not have a rename functionality by itself, it relies on LSPs to provide. I suppose the option shouldn't even be there if there are no LSPs to provide them.

There are no extensions installed. The Rename Symbol option is present.

I  can't reproduce this myself. What file were you trying to edit?

I can edit any file, like a .txt file, with the issue. During the crash, I had a Python file open for editing.


keep the table order of the table whitelist

When providing a table whitelist the order of that whitelist should be kept when dumping the tables.
This helps if dumping the database without table locks and having tables with foreign key references into other tables. By carefully defining the order of tables you can still achieve a consistent dump without violating the referential integrity by first dumping the table containing the foreign key, followed by the table which is the target of the reference.

yeah, my use case is for acyclic dependencies for which I can create a correct partial order of the tables, but this would break for true cycles...
my last PR about supporting table locks https://github.com/bradzacher/mysqldump/pull/68 doesn't play that nicely with AWS Aurora and read replica: SET GLOBAL read_only = ON is not allowed on them, so I am trying to find other solutions...
maybe you can provide some pre & post command hooks where someone can feed in some commands required to lock and unlock the DB accordingly, which might be different for MySQL and AWS Aurora - read replica, and maybe some other variants?

it seems to me like you want to set your master DB to read_only before you start your dump?
That or just dump normally, and then clean up the data afterward?

What would be the drawback of merging this PR?
It just changes the order of the scanned tables from a not-controllable (random) manner to a controllable-by-the-calling-user order.

may I ask you for pushing out a new release containing these changes?


Sema: Fix some issues with overrides of materializeForSet

When overriding storage with a forced static dispatch materializeForSet,
the override's materializeForSet should not override the base
materializeForSet.
This is the case where a dynamic property witnesses a protocol
requirement, and Sema synthesizes a materializeForSet for it.
In this case, the synthesized materializeForSet dynamically dispatches
to the dynamic property's getter and setter, and the protocol witness
thunk directly calls the synthesized materializeForSet.
The subclass only needs to override the getter and setter in this case,
since the base class's materializeForSet will already do the right
thing.
In fact, marking it as an override exposes a problem where we cannot
serialize an xref to an imported property's materializeForSet, since
it was not created by the importer.
Radar: rdar://problem/35138127

@swift-ci Please test

@jrose-apple I couldn't get the mock SDK working. Ran into -enable-source-import issues, and the %clang-importer-sdk-nosource variant only works with %target-swift-frontend, not %target-build-swift.

@swift-ci Please test

@swift-ci Please test

Okay, but even if you have to use the real Foundation, please make your own class rather than reusing NumberFormatter.

@jrose-apple What's the downside of using NumberFormatter (or some other Foundation class)? Are you suggesting using -import-objc-header with my own header, or something else? I actually want to build and link the result and there are multiple Swift modules in play so I'm not sure -import-objc-header makes sense either.

@jrose-apple I updated the tests to define a new Clang module with a custom type.

@swift-ci Please test

@swift-ci Please test

@swift-ci Please test

@shahmishal CI is broken again?

@swift-ci Please test

For fuck's sake

@swift-ci Please test

Build failed
Swift Test Linux Platform
Git Sha - e719109268a29da2d19e0e13004dfb2dc20f652b

Build failed
Swift Test Linux Platform
Git Sha - 0f2da217a4ada84f0b447aba24ea60dc8503ded0

@swift-ci Please test Linux

@swift-ci Please test linux

Its due to number of systems we have available.
https://ci.swift.org/label/mac-pro/load-statistics

Build failed
Swift Test Linux Platform
Git Sha - 0f2da217a4ada84f0b447aba24ea60dc8503ded0

@shahmishal
<unknown>:0: error: module map file '/home/buildnode/jenkins/workspace/swift-PR-Linux/branch-master/swift-corelibs-libdispatch/dispatch/module.modulemap' not found
<unknown>:0: error: module map file '/home/buildnode/jenkins/workspace/swift-PR-Linux/branch-master/swift-corelibs-libdispatch/dispatch/module.modulemap' not found

@swift-ci Please test Linux

Build failed
Swift Test Linux Platform
Git Sha - 0f2da217a4ada84f0b447aba24ea60dc8503ded0

Building remotely on ubuntu-16.04-04 (Ubuntu-16.04 linux-pr executors-4) in workspace /home/buildnode/jenkins/workspace/swift-PR-Linux
java.util.concurrent.TimeoutException: Ping started at<PHONE_NUMBER>500 hasn't completed by<PHONE_NUMBER>500
Caused: java.io.IOException

@swift-ci Please test Linux

Build failed
Swift Test Linux Platform
Git Sha - 0f2da217a4ada84f0b447aba24ea60dc8503ded0

@swift-ci Please test Linux

@swift-ci Please test Linux


How to perform database manipulations (set/update/delete,etc.) with Angularfire2?

I'm not sure how's it done, thanks!

I think we have to wait for the Alpha release. I hope it's done soon.

@kdenz @doczoidberg AF2 is currently in Alpha, and those methods are already available! 🎉
Here's an example!
class MyComp {
  questions: FirebaseListObservable<any[]>;
  value: FirebaseObjectObservable<any>;
  constructor(af: AngularFire) {
    this.questions = af.database.list('/questions');
    this.value = af.database.object('/value');
  }
  addToList(item: any) {
    this.questions.push(item);
  }
  setValue(data: any) {
    this.value.set(data);
  }
}

The total list of methods are here:
af.database.list

push(newItem: any): PromiseWithFirebase<void>
update(value: any): Promise<void>
remove(key?: string): Promise<void> (if you all remove with a key, it will remove the item, if you all remove with null or no param it will delete this list)

af.database.object

set(value: any): Promise<void>
update(value: any): Promise<void>
remove(): Promise<void>

I'm closing the issue but let me know if you have any questions! I'll be adding TONS more documentation soon. Trying to get a release out first 😄
And pleassseee leave feedback!

nice
I'd love to see setWitPriority in angularfire2, just sayin....
:)))

@numerized Looks like priority is on the road to deprecation, so I doubt you'll see it.

Hey @davideast, is it possible to set the name of an object with a string variable?
For example:
car: {
  brands: {
    var1: ''
  }
}

This is the query I imagined would work:
addBrand (var1) {
  var brandRef = firebase.database () .ref ().child ('car/brands');
    brandRef.set ({
      var1: ''
    });
}

The output I get is the text var1, not its value.
Is there any way of achieving this?

@RaulGarafulic
I am going through the same problem any solutions

Hmm ok @patrickmcd so what is the way to add new data in opposite order than timestamp ?
Last added to top of the list.
I do like this:
this.myCelebsListRef.child(celebCamelName).setWithPriority(infoToSave, 0 - Date.now());

It's really practical for infinite scroll timelines that loads X new entries each time we reach the bottom.

I think you'd just add a new member to your model to take over the functionality that priority held.
...set({
  stuff: 'stuff',
  thing: 'thing',
  fauxPriority: 0 - Date.now()
})

I usually do like this to create my infiniteLoad:
this.emoz.limitToFirst(limitToFirstNum).once('value')
I'll convert it like this then:
this.emoz.limitToLast(limitToFirstNum).orderByChild("fauxPriority").once('value')
?

Just one comment from my side, at the time that I am writing you this comment, the 'Property list doesnt exist anymore on database'.
af.database.list() is no longer existed. You should use af.list(). In order to push records, you can simply use the below:
this.questions.push({...})

how to get the key value! as method 'list' doesn't contain the key! I am facing a huge problem to find example in the documentation!

@alighali85 try object.$key


Minor documentation adjustments

Is this a bug fix or adding new feature?
N/A
What is this PR about? / Why do we need it?
Minor documentation updates.
What testing is done?
I read the page.

/approve
/lgtm


Searches are case-sensitive for special searches, like Subject search.

Describe the bug
Searches when not searching "Everything" is not case-sensitive.
This is either by design (which makes this issue a feature request) or it is a bug.
I am assuming it is a bug.
To Reproduce
Steps to reproduce the behavior:

Go to College Of Veterinary Medicine Image Collection.
Add Cattle to Everything search and click search, which works.
Add cattle to Everything search and click search, which works.
Change search dropdown to Subject.
Add Cattle to Subject search and click search, which works.
Add cattle to Subject search and click search, which does not return results.

Expected behavior
I expect at step 6, that cattle for Subject searches should returnr esults.
Additional context
This might be solvable via SOLR configuration changes.

This matter can likely be addressed here: https://github.com/TAMULib/tl_solr/tree/master/files/default/cores/sage-core


TCOMP-246 Implement a single point of registration for components.

Adds DatastoreDefinition and DatasetDefinition interfaces (currently empty)
that will be used to group functions and properties for specific component
families for the Data Streams project.
Adds a ComponentFamilyDefinition that groups all of the Datastores, Datasets,
Components and Wizards for a single family.
Adds a ComponentInstaller interface that provides the single point of
registration for datastores, datasets, components, wizards and families.
Remove all @Component annotations from all classes except ComponentInstallers.
Adapted OSGI and Spring implementations to refer to the ComponentInstaller
to find all definitions.

Pull request test result: success :star:

Hello!  I have some outstanding questions to keep in mind while reviewing:

Component versus ComponentFramework:

There's some classes like ComponentDefinition that exclusively deal with literal components on the screen (an action or processing on data), and other classes like ComponentInstaller that is really an installer of Components and Component-related things (like datastores, wizards, and any future definitions we make up).
Is this OK, or should we rename the latter somehow to make this more clear...  (ComponentInstaller to  ComponentFrameworkInstaller or FrameworkInstaller or TCompInstaller or ???).
In the same line: ComponentRegistry, ComponentService, ComponentFamilyDefinition...  all deal with components and component-related things.

There are some public classes in org.talend.components.api.service.*internal* like ComponentRegistry -- mostly used by test classes.  Is that an issue?

I chose to have the interfaces ComponentInstaller separate from ComponentFamilyDefinition because we can expect some definitions to be installed outside a family (a new file format definition will be used by the existing File Input family components, for example).  What do you think?

Updated to address sgandon's comments.  I left the ComponentFamilyDefinition in for discussion, and added an abstract implementation.  Let me know if you prefer that I remove it entirely for this PR.

Pull request test result: success :star:

Pull request test result: success :star:

@ftom @francisu @sgandon
I pushed an update so this is current with master.
It looks like there's two issues that need to be addressed:

Removing ComponentFamilyDefinition for this PR:

If you're going to want it at some point, I might as well leave it here for now as a placeholder to add future functionality (for categories).  It's useful immediately as the container for related definitions.
I think there's a place for both ComponentFamilyDefinition and ComponentFrameworkContext.  I imagine that the former "definition" object will be accessible via a service to get information (the group of related components and wizards, but also labels/tags/categories in the future).   The "context" object is only useful during install-time to register the definitions (both grouped in a family and individually).
For this PR, I propose: keeping the ComponentFamilyDefinition and the best practice for a "normal" component is to provide an implementation very much like the SalesforceComponentFamilyDefinition.

**Are Datastore and Dataset "definitions" or "interface-tagged properties? **:

This is the bigger discussion!  I think these have a larger place in the framework than a tag on the properties.
We could do the implementation via a tagging interface on a ComponentProperties, but a lot of the actions that we want to perform on both of these types are very much in parallel with what we do with ComponentDefinition, including:

Getting the list of available Datastore types that TCOMP supports,
Creating an instance of a Datastore type and persisting it for Data Streams,
Fetching a runtime based on the values of the instance to make a technology-specific call...

It's weird to me that the Datastore "types" would use inheritance of ComponentProperties, while ComponentDefinition uses composition.
For this PR, I propose: launching a discussion to hash this out -- are you available tomorrow?

Pull request test result: failure :x:

Despite the build-talend message, mvn clean install succeeds on this branch!

yes some jira test failed again :(, but now you have conflict with the destination branch, probably because I merged my PR before :)

Pull request test result: success :star:

Pull request test result: failure :x:

Pull request test result: success :star:

Pull request test result: success :star:


adding support for changing window position

I added a helper function to move a window to a specific point on the screen :
void mlx_set_window_position(void *mlx, void *win, int x, int y);

I added a function named setWindowPosition to the Application class and used SDL_SetWindowPosition to implement the displacement of the window

in which case would you want to move the window ?

I have multiple window and I want to move them a startup so they don't begin one on top of the other

seems legit


Pin footer to bottom when fullscreen with paging

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[x] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
Footer is shown right after table content (rows).
Expected behavior
There should be an option to stick footer at the bottom.
Reproduction of the problem

What is the motivation / use case for changing the behavior?
Right now the footer is jumping up/down based on displayed row numbers. I would like to have it always at the bottom. If you set scrollbarV to true then footer is pinned to bottom but pager disappears.

Please tell us about your environment:

Table version: 0.9.x

Angular version: 4.2.x

Browser: all

Language: TypeScript 2.4

You could make your table position absolute and pin to the top/right/bottom/left of the container and it should do what you are expecting.


VK_NEXT = Key::PageDown

jfyi:
examples/common/entry/entry_windows.cpp line 361 is:
s_translateKey[VK_NEXT]       = Key::PageUp;
but should be:
s_translateKey[VK_NEXT]       = Key::PageDown;
thx for that great lib, keep on the good work ;)

:+1:


tar archive is created on /home/k6 instead of tmp

Brief summary
That means user should be 65534 or have access rights to that folder.
https://github.com/grafana/k6-operator/blob/main/pkg/resources/jobs/initializer.go#L57
If it is created in /tmp folder, any user could run the tests without any particular uid privilege.
k6-operator version or image
latest (8.0.0rc3)
K6 YAML
apiVersion: k6.io/v1alpha1
kind: K6
metadata:
  name: k6-sample-with-extensions
  namespace: k6-tests
spec:
  parallelism: 4
  script:
    configMap:
      name: sample-stress-test
      file: test.js
  arguments: --http-debug -o output-prometheus-remote
  runner:
    image: xxxx:latest

Other environment details (if applicable)
No response
Steps to reproduce the problem
Run k6 tests from a namespace with restricted users. For example
securityContext:
runAsUser: 1000
Expected behaviour
Archive stored and read successfully.
Actual behaviour
Permission denied errors.

Any update on this? In a secured cluster, usually it is not allowed by administrators to run containers with a defined user.
Thanks.

Sadly, not yet. I don't think this is a hard issue to fix or test, hence the 'good first issue' label - I was kind of wondering if someone would want to push a contribution and then forgot it myself... @rgordill, thanks for the ping; I'll see if we can move it up and fix sooner.

@rgordill I've grok-ed this problem a bit more and realized that I probably misunderstood it initially :sweat_smile: More precisely, I'm no longer sure what you mean by a "restricted namespace". Initializer pod is not using security context at the moment at all: shouldn't it be used for all pods in your setup? E.g. what you described in the "step to repeat" is not actually sufficient to repeat the bug.
We can definitely add a /tmp folder to the archive path as here if that would help your use case but for my understanding, could you please clarify a bit more what "restricted namespace" means?

Hi, @yorugac.
When a container writes a file in a defined folder, it needs privileges to do it. In this case, it needs to be run as user 65534. Either the initializer is not using a security context, some security products through webhooks can enforce the user to be randomized, to be more secured.
That leads to this issue, and the security constraints should be relaxed, but for the need to write on a folder. If the selected folder is writable by anyone (like /tmp), then the container can be run by any user and keep the security at maximum.

some security products through webhooks can enforce the user to be randomized, to be more secured.

This is the part I didn't realize. Seems something like OpenShift guidelines, I suppose.
OK, I'll finish the fix and merge it in. Thank you for clarification!


PY-T: Fix non-working python tutorials

AC

[x] fix non-working tutorials outlined in #79 # Results

Looks like this one has been merged already.

23 claim rewards and 33 password key change in #79 need to be tested and validated as working first.


request is loaded by our dependencies before we can patch setImmediate

We do not currently patch request. Isn't it the underlying http require done by request that is problematic?

Updated the title to make it more accurate. The problem is that we need to patch setImmediate (indirectly through CLS) before request is loaded. request caches the value of setImmediate.


Update uniform API

Switch away from callback uniform API. Replace old uniforms function with allocateUniforms to create arrays to store uniform values and updateUniforms to set them in the render loop.

@rolyatmax How does this look?
I updated the triangle example to show how to mix application and PicoMercator uniforms together.

Yeah, I like this better :-)


Improve replica revision counter

Which issue(s) this PR fixes:

https://github.com/longhorn/longhorn/issues/8436
What this PR does / why we need it:

Remove unused replica HTTP service
Replace revision counter mutex lock with a go channel
Use a separate goroutine to increase the revision counter during write

Special notes for your reviewer:
Additional documentation or context
This PR implements idea 4 and 5 mentioned in this comment

Quick question: we are removing the /pkg/replica/rest, are we no longer need it in any testing tool?

No, we don't need it anymore.