is there a working npm install react-native-material-kit for windows?

Forgive me for this sin, I know all good devs should be on linux.
Currently stuck in win dev land, pray for me to find the strength to migrate to linux.
oh and thanks for the awesome package, I spent too much time yesterday reading material and starting on a tutorial path using this and other packages before realising my windows npm install didn't work (?).
If I'm reading and googling correctly, there is no stable windows stable install for this package?
If this is true, are there workarounds to reaching a workable version? Future plans to make a windows npm install version available?
apologies if I've misread the bleeding obvious. :)
[and yes, I really need to migrate to linux]

what is the error message you found?

Forgive me for this sin, I know all good devs should be on linux.
Currently stuck in win dev land, pray for me to find the strength to migrate to linux.
oh and thanks for the awesome package, I spent too much time yesterday reading material and starting on a tutorial path using this and other packages before realising my windows npm install didn't work (?).
If I'm reading and googling correctly, there is no stable windows stable install for this package?
If this is true, are there workarounds to reaching a workable version? Future plans to make a windows npm install version available?
apologies if I've misread the bleeding obvious. :)
[and yes, I really need to migrate to linux]

You need to install node in order to be able to install npm packages


cmd/compile: performance regression in zeroing structs in 1.8

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
1.7, 1.8 and tip
What operating system and processor architecture are you using (go env)?
amd64
What did you do?
Ran https://play.golang.org/p/jAE_x1PZb_
What did you expect to see?
Same performance as 1.7.x
What did you see instead?
2.5x slowdown, note that the performance hit doesn't exist on tip so that's good at least.

This doesn't meet the strict requirements for minor release backport, so Go 1.8 will have to remain as it is.


Cannot delete fasterlog from disk if the log was disposed with a commit request in flight

I recently upgraded to FASTER's latest nuget version and the following testcase started failing.
The testcase initiates a write, initiates a commit (with spinWait=false), disposes off the log and the device, and then tries to delete the log from disk.  This can easily happen in my app because the app has API's to create/delete logs and to append to logs. The delete and append can be done concurrently.
The delete fails with System.IO.IOException: The process cannot access the file 'commit.0.0' because it is being used by another process.
I figured out that there is some code in fasterlog that's holding an active reference to the log-commit file even after dispose.
Note that if I remove the call to log.Commit, or do the commit with spinWait=true, then the delete does not fail.
Note that even if i wait for the commit to complete (with spinWait=false) - by checking that the ValueTask returned by TryEnqueue has succeeded/failed - I still cannot delete the log.
[TestMethod]
public void TestDisposeReleasesFileLocksWithInprogressCommit()
{
    DirectoryInfo di = Directory.CreateDirectory(this.TestContext.TestRunDirectory + $"\\log");
    IDevice device = Devices.CreateLogDevice(this.TestContext.TestRunDirectory + $"\\log\\testDisposeReleasesFileLocksWithInprogressCommit.log", preallocateFile: true, deleteOnClose: false);
    FasterLog fasterLog = new FasterLog(new FasterLogSettings { LogDevice = device, LogChecksum = LogChecksumType.PerEntry });
    fasterLog.TryEnqueue(new byte[100], out long beginAddress).Should().BeTrue();
    fasterLog.Commit(spinWait: false);
    fasterLog.Dispose();
    device.Dispose();
    di.Delete(recursive: true);
}

Commit initiates a write to disk, so the delete would fail until that write completes. The following seems to work:
        [Test]
        public void TestDisposeReleasesFileLocksWithInprogressCommit()
        {
            var commitPath = TestContext.CurrentContext.TestDirectory + "/" + TestContext.CurrentContext.Test.Name + "/";
            DirectoryInfo di = Directory.CreateDirectory(commitPath);

            IDevice device = Devices.CreateLogDevice(commitPath + "fasterlog.log", preallocateFile: true, deleteOnClose: false);
            FasterLog fasterLog = new FasterLog(new FasterLogSettings { LogDevice = device, LogChecksum = LogChecksumType.PerEntry });
            Assert.IsTrue(fasterLog.TryEnqueue(new byte[100], out long beginAddress));
            fasterLog.Commit(spinWait: false);
            fasterLog.WaitForCommitAsync().GetAwaiter().GetResult();
            fasterLog.Dispose();
            device.Dispose();
            di.Delete(recursive: true);
        }

Note that even if i wait for the commit to complete (with spinWait=false) - by checking that the ValueTask returned by TryEnqueue has succeeded/failed - I still cannot delete the log.

TryEnqueue does not return a ValueTask. If you meant EnqueueAsync then note that this task completes when the record has been successfully enqueued in memory, not when it is committed to disk:
        /// <summary>
        /// Enqueue entry to log in memory (async) - completes after entry is
        /// appended to memory, NOT committed to storage.
        /// </summary>
        /// <param name="entry">Entry to enqueue</param>
        /// <param name="token">Cancellation token</param>
        /// <returns></returns>
        public ValueTask<long> EnqueueAsync(byte[] entry, CancellationToken token = default)

Note that even if i wait for the commit to complete (with spinWait=false) - by checking that the ValueTask returned by TryEnqueue has succeeded/failed - I still cannot delete the log.

I misspoke here, i meant to say "by checking that the ValueTask returned by WaitForCommitAsync has faulted".
Here is something that fails even if I wait for the commit task to fail. Adding a 10 second delay before deleting the subscription also doesn't free up the file lock, so it looks unlikely there's a race condition in how the testcase is structured ?
[TestMethod]
public async Task TestDisposeReleasesFileLocksWithInprogressCommit()
{
    DirectoryInfo di = Directory.CreateDirectory(this.TestContext.TestRunDirectory + $"\\log");
    IDevice device = Devices.CreateLogDevice(this.TestContext.TestRunDirectory + $"\\log\\testDisposeReleasesFileLocksWithInprogressCommit.log", preallocateFile: true, deleteOnClose: false);
    FasterLog fasterLog = new FasterLog(new FasterLogSettings { LogDevice = device, LogChecksum = LogChecksumType.PerEntry });
    fasterLog.TryEnqueue(new byte[100], out long beginAddress).Should().BeTrue();
    fasterLog.Commit(spinWait: false);
    ValueTask waitingWriter = fasterLog.WaitForCommitAsync(beginAddress + 1);
    fasterLog.Dispose();
    device.Dispose();
    while (!waitingWriter.IsCompleted)
    {
        await Task.Yield();
    }
    waitingWriter.IsFaulted.Should().BeTrue();
    await Task.Delay(10_000);

    di.Delete(recursive: true);
}


ISSUE-646 Replace VectorDrawable with MaterialIcon in main

Issue

close #646

Overview (Required)

Remove vector resources in https://github.com/DroidKaigi/conference-app-2021/tree/main/uicomponent-compose/main/src/main/res/drawable
No effective changes UI-wise

Links

NA

Screenshot

Before
After

Thank you!


Allow set cookies

This PR allows other responses, than the first one to send a cookie to the client by Set-Cookie header.

Coverage increased (+0.1%) to 92.58% when pulling c51e0a83d199c2d7f7dd9011703b103e96e6b7f8 on allow-set-cookies into d4e78f0255ef78a287680c02e3cdb1c8577cab38 on master.

I have recreated the PR in #32 , which is based on #31 to avoid merge conflicts.


Request/ sec

Is there a benchmarking done for request per second. If so can you please share them.

No, though anecdotally, it was originally run at ebay with relatively high load for long periods of time.
A benchmark would depend on the host resources, and configuration. A test is pretty easy to setup with a load generator such as locust. Run some tests and publish your results, that would be a great addition to the FAQ!


docstring for function with decorators display the doc for the decorator not the the function

From @tangorboyz on October 29, 2017 11:25
Environment data
VS Code version:  1.18.0-insider
Python Extension version:
Python Version:   0.7.0
OS and version:    Ubuntu 16.04

Actual behavior
When hover over a function with decorators like @properties display the the doc for @properties
Expected  behavior
It should only display the doc for the function.
As you can see at picture above, is_authenticated is decorated with @properties. But when hover over on is_authenticated, the doc for @properties is displayed.
Copied from original issue: DonJayamanne/pythonVSCode#1352

From @tangorboyz on November 2, 2017 5:15
Another info: if we type the object method with decorators, the doc for the decorators is displayed.
However if we access it directly from it's class, the actual doc for that method is displayed. Example
User.is_authenticated(), hovering over would display the doc for the is_authenticated itself.
But if initialize an object of that class like user = User(username='username'), and user.is_authenticated(), would display the doc for @property.

I see a lot of inconsistent behavior with decorators/docstrings/argspecs when using intellisense.  functools.wraps seems to prevent consistent failure, but introduces inconsistent intellisense behavior.  Loading the same file with the same exact code doesn't guarantee that my intellisense popups will show the same way both times.  Behavior is erratic with both simple decorator and decorator factories.  Note that I do not see this erratic behavior with the interpreter.  The interpreter is consistently providing the correct docstrings, provided that the functools.wraps decorator is being used correctly.
Is it possible to get this issue reopened and reviewed again?  My framework requires very heavy use of decorators and decorator factories to prevent duplicate code, and this makes it hard for anyone not already familiar with the API to understand the function calls.
I have included example screenshots, as well as the code for those screenshots.
The following screenshots were very hard to get, I had to close and reopen vscode several times to get the message to show.  Based on how many times I messed with it to see the incorrect behavior, I have a suspicion that some kind caching logic may be involved, but as I have not looked at the extension code, I cannot be sure.
Simple decorators

Decorator factories

Sample Code
issue.py.txt


PagedListAdapter display admob native advanced ad

Hey everyone I was wondering if any one knows the best way to implement admob native advanced after 7 rows in PagedListAdapter class.  Using normal recyclerview adapter class is easy to implement admob. Thank you

Hey everyone I was wondering if any one knows the best way to implement admob native advanced after 7 rows in PagedListAdapter class. Using normal recyclerview adapter class is easy to implement admob. Thank you

Did you manage to do this?

In the future, this is going to be handled by implementing a MergeAdapter as explained on the issue.
Please make sure you're filing issues against Paging in the Paging issue tracker as the issues here are solely for the sample code here.


Reducing extractor allocations, pass 1.

@tellarin,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Document SSH access configuration

Please document docker-compose.yml configuration to access the PHP container via SSH.
Perhaps best would be to add it as a commented section in docker-compose.yml itself.
Something like this works for me (inspired by https://github.com/wodby/docker4drupal/issues/65#issuecomment-288293006):
  sshd:
    image: wodby/drupal-php:7.1-2.1.0
    command: /usr/sbin/sshd -De
    environment:
      SSH_PUBLIC_KEYS: |-
        ["MYKEY"]
    volumes:
      - ./:/var/www/html
    ports:
      - '2222:22'

Drush did not work when using drupal-php versions with stability tags -- see #39
Here's an updated snippet that works:
  sshd:
    image: wodby/drupal-php:7.1
    command: /usr/sbin/sshd -De
    environment:
      SSH_PUBLIC_KEYS: |-
        ["MYKEY"]
    volumes:
      - ./:/var/www/html
    ports:
      - '2222:22'

Documented at https://github.com/wodby/php#sshd


[Profile] fix #1256

This should fix the issue #1256
But I wonder why the showProfileMainWindow of the profile has such a complicated behavior.
From my point of view having it displayed close to the mouse would be good too no ?

Then you would have to move the profile window away from the plot each time you start a profile and the window is hidden.
To me in an application, it would be better to have the profile window and the plot both included in a single window.

With floating windows, my experience is that sometimes show() is not enough and one needs to call the widget method raise_() after show because it can be "shown" but under other widget/window.


[GreenIT] Provide information when an analysis fails because of a timeout

If the analysis fails because of a timeout, the user does not have a clue about this situation: he just see that the analysis failed.
This situation is even more complicated in CI workflows, where additional tools can trigger a job failure.
Objective: provide information to the user when the analysis failed because of a timeout, and suggest to increase it by using the configuration.

Close by #73


Add sip 4.17

We don't really do point releases here any more. Why would you want 4.17 specifically instead of 4.18?

Our CI builds are broken since the update to 2.18 https://travis-ci.org/qgis/QGIS/builds/123309494
In the long run we will need to figure out how to fix it from our side but for now it would be good to be able to re-enable them.

Sorry, we'd rather not include patch releases in this form. Please consider keeping this in your own tap. Sorry!

No worries, we're using it from the own repo now. I was proposing it here just in case there's interest.

@m-kuhn cool, thanks!


Atom sunset

It seems GitHub has finally pulled the plug and are sunsetting Atom.
I have been using a somewhat custom version of Atom for a while and plan on still using it for some development for a while.
Question is: Do people want linter-eslint-node to continue to get updates? or should we archive it (and the rest of the linters)?

That'll teach me to write a bunch of new code.
Personally, I can see myself continuing to be responsive to PRs and issues for as long as I'm still using Atom, but I probably won't try to keep my local Atom alive beyond the sunset date. I have no opinion on what should happen to the repo/extension at that time.

I for one will probably continue to use atom until it's inconvenient to do so, I think that the nail in the coffin would be if (probably when) the package manager disappears :thinking:

So the good news is that Pulsar has appeared, and I'm impressed at the progress that they've made. I've been using it for a couple of weeks and the transition has been seamless.
Plus they've got their own package manager.
If all that has to happen is that some URLs have to be updated in this project's GitHub Actions, then I'd be happy to continue maintaining this package for as long as I'm using Pulsar.

@savetheclocktower I invited you to be a member of AtomLinter. I am going to clean up the repos at some point. Possibly even just create new organizations for pulsar packages.

Pulsar is good and still compatible with Atom packages. So it'd be great to move into this direction.


[CI] [Don't merge] Test how BuildKite handles a PR that's also a branch

BuildKite doesn't block on this PR since it's also a regular branch. So #9034 was not really effective, and the CI runs for all dependabot PRs :(


Way to get form values without onSubmit?

hi !
I am trying to build JsonForm by sending schema from the server to client. I cannot use templating because I don't know before hand which schema to use. but once user selects some options, I do AJAX calll to the server and retrieve schema, e.g.
dataType: 'json',
success: function (data) {
const my_schema = JSON.parse(data.schema_str);
$('#featureAttribs').jsonForm( my_schema );
}
this works fine, but I also need to save values, so that I can populate form later. Only way I know so far is to extract all values from POST at server side, then form values.  But it would be great if I could call something like getFormValue before POST and then send values inside the post and avoid parsing at server ser.
is getFormValue() official API?  I did not see it the wiki docs.
I could not also use onSubmit callback (which supplies values), because i could not pass function definition in Json format.
I tried also
    dataType: 'json',
    success: function (data) {
        const my_schema = JSON.parse(data.schema_str);

        my_schema["onSubmit"] = "function (errors, values) { alert(\"Hello\"); return onJsonFormSubmission(errors, values);  }";

        $('#featureAttribs').jsonForm( my_schema );
    }

but callback never gets called. I can guess that JsonForm extracts function part and then parses schema.

started reading JsonForm source code....(in lib/jsonform.js) and in the end it has:
/**

Retrieves the structured values object generated from the values
entered by the user and the data schema that gave birth to the form.

Defined as a jQuery function that typically needs to be applied to
a  element whose content has previously been generated by a
call to "jsonForm".

Unless explicitly disabled, the values are automatically validated
against the constraints expressed in the schema.

@function
@return {Object} Structured values object that matches the user inputs
and the data schema.
*/
$.fn.jsonFormValue = function() {
return jsonform.getFormValue(this);
};

I am new to Javascript (I have first learned Javascript literally 2 weeks ago), can someone please show me how I am supposed to call this function?
comments suggest, I call this in the following way:
var attributes_as_json = $('#featureAttribs').getFormValue();
  //var attributes_as_json = myJsonForm.getFormValue();      <--- here I attempted to save return from JsonForm and use that.
console.log(attributes_as_json);

this did not work, nothing happens and browser gets wobbly (I have to restart it, because debugging stops working).
so I could use only this
var attributes_as_json = $('#featureAttribForm :input').serialize();
this works, but I need obtain structured json, which I can send to server, save, and then I can re-use it by passing as "values" back to JsonForm when user needs to edit.
continuing reading source code....

ok... I found answer to one of questions I had.   JsonForm accepts Javascript object, not pure Json.  that is why, it is possible to add "function objects" (and thus specify onSubmit function). I still don't understand though, why the following is not working:
      var my_schema = JSON.parse(data.schema_str);   // <-- parse stringified Json from server

        // also add function callback

       my_schema["onSubmit"] = "function (errors, values) { alert(\"Hello\");  }";
       // or my_schema.onSubmit = "onJsonFormSubmission";

I think I lack knowledge of precize JS syntax or smth else in the way json object created.

because my_schema is a binary object now (after JSON parse), so adding a 'string' object is wrong...
u want
 my_schema["onSubmit"] = function (errors, values) { alert("Hello");  };

they give u a sample of the onsubmit ..
here is my client side, receiving the  text string of the json form (after stringify)
I am using socket.io as the transport
activesocket.on("json", function (incoming_json) {
    // make it binary  (don't need the leading/trailing {}
    let data = parseData(incoming_json.slice(1, -1));
    // free the memory, my form is 12,000 lines
    incoming_json = null;

    // clear my form output message
    $("#outmessage").text("");
    try {
// add handle for submitValid  (all good, send data base to server
      data.onSubmitValid = function (values) {
        activesocket.emit("saveConfig", values);
        $("#outmessage").html(
          "
Your Configuration has been submitted.
"
        );
      };
//  add handle for submit
      data.onSubmit = function (errors, values) {
        if (errors) {
          console.log("Validation errors 1", errors, values);
          let buildInner = "";
          errors.forEach(function (errItem) {
            let errSchemaUri = errItem.schemaUri
              .replace(/.+\/properties\//, "")
              .replace("/", " >> ");
            buildInner +=
              `<p><strong style="font-color:red">Error: ` +
              errItem.message +
              "
Location: " +
              errSchemaUri +
              "
";
          });
          $("#outMsg").html(buildInner);
          console.log("Validation errors 2", values);
          return false;
        }
        return true;
      };

sorry, intended to add   JUST because there was a submit, does NOT mean u have to send back to the server..JSONFORM does not care.. u received the callback on onSubmit..

hi !  thanks a lot for your reply. this has brightened by my day.
Yesterday, I gave up trying and change my design a bit:  on server side, introduced case-specific classes, which handle both "schema" and "parsing" of POST results, by cherry picking items (I added Json form inside more bigger, complex form, which allows to dynamically select cases and then I do AJAX call to fetch case-specific JsonForm schema from the server and then I insert result of JsonForm() call into  inside this outer form) - so I cherry pick and reconstruct "values" manually. Also considered using https://github.com/marioizquierdo/jquery.serializeJSON on client side.
but luckily, I have done all these design on paper only and have started implementation.
Now I will try what you suggested. Thanks a lot for your help!
(and indeed, parsed Json is binary structure and adding "string" object would not work.  this did not occur to me at all).

hi again!
I tried this:
var my_schema = JSON.parse(data.schema_str);

my_schema["onSubmit"] = function (errors, values)
{
alert("Hello");
};
and then checked how content changes (in the debugger).  Indeed, as you said, function object is added:
Local
.....
my_schema:
form: (2) [{…}, {…}]
onSubmit: ƒ (errors, values)
arguments: null
caller: null
length: 2
name: ""
prototype: {constructor: ƒ}
proto: ƒ ()
[[FunctionLocation]]: feature_new:309
... . .....
so now for use, my_schema contains correct function signature.  But   this function is not getting called on form submission.
(I first tried sample to see that in classic examples, onSubmit is called, so I know that my submit button works, etc.)
do you know, is there could be some other reason why JsonForm is not calling functions created this way?
in the example you gave (thanks for that too, btw), you call:
let data = parseData(incoming_json.slice(1, -1));
in this, parseData, do you call JSON.parse() ?  that is, standard Json parse method?  I will try onSubmitValid now. may be it will work.

sorry, intended to add JUST because there was a submit, does NOT mean u have to send back to the server..JSONFORM does not care.. u received the callback on onSubmit..

actually, I do send back to server too. I need to send values to server and persist there. and once it is there, I can later use "values" to display same form for editing purposes (e.g. user wants to edit configuration).

yes, the parse on the client side is just JSON.parse.   I have a exit that handles function defs in the form contents, so that is part of the parse.  and the reason I send text. as socket.io does stringify under the covers (without such an exit)
I can put a stop on the onsubmit functions in the browser and they stop after the user presses submit in the form. and I can examine the values raw data
data is the after parse binary JavaScript object, so adding another element into the object is easy.
I do have a submit button defined in the form

ok. thanks for confirming.
Update from my side:   I got this callback working!
Reason why it was not working was:   I used  where I inserted output of JsonForm:
         var my_schema = JSON.parse(data.schema_str);
         my_schema.onSubmit = function (errors, values)
         {
            alert("Hello");
         };

        $('#featureAttribs').jsonForm( my_schema );  //   <- - - -  HERE featureAttribs is
 inside HTML form.

When I replace last line with this
        $('#featureAttribForm').jsonForm( my_schema );  //   <- - - -  HERE featureAttribForm is <form> inside HTML form.

then my callback started working.
Conclusions:

JsonForm output can go to , inside any form, but then function callbacks do not work
if we want onSubmit to work, JsonForm output must go to

My guess is that JsonForm uses something from , may be some jQuery method like this:
    $("#featureAttribForm").submit( function(eventObj)

Using (2) creates some inconvenience for me, because JsonForm messes up my form where I combine also other things, like JS managed inputs and also inputs from Django.  But I can live with this, by specifiying inputs in JsonForm schema (it will then have to repeat for each schema) and I can take out JS managed inputs outside of the form.
My HTML form looks like this:
<form method="POST" class="post-form" id="featureAttribForm">
    {% csrf_token %}
    {{ form.as_p }}

&nbsp

    <button type="submit" class="save btn btn-default" name="first_button" value="just-save">Save</button>
</form>

sorry for typos, I have now corrected in all places.

I am about to close this ticket. should a new issue be created to address this?  for example, JsonForm can handle such cases, by looking at the parent of the div element?

in my html I have a div for the form
and use jQuery to fill it in the JavaScript
$("#result").html('<form id="result-form" class="form-vertical"></form>');
      // insert the new form
      $("#result-form").jsonForm(data);

my project is here
https://github.com/sdetweil/MMM-Config
config.html and form-client.js
node_helper.js sends the form text
and processes the response
I am building a configuration form over a user composed set of extensions in a magic mirror application.

thanks a lot! I will familiarize myself more deeper with MMM-Config, I am sure it will help me to gain more insights and learn more.
i see .... you have  a div with id="outmessage" and generate form inside it using JS.  That is, form is inside div.  and then you still call jsonForm(data) on this form:
$("#result-form").jsonForm(data);
in my case, it is other way around, there is a div was inside a form.   and then I  called jsonForm() on this div:
$("#DIV_INSIDE_MY_FORM").jsonForm(data);
and this did not work.   but this one works:
$("#MY_FORM").jsonForm(data);
and I think it works because JsonForm needs to call  $("#MY_FORM").submit( callback_function).
JsonForm library can be improved so that it checks and realizes that DIV_INSIDE_MY_FORM is not a form, and then looks up its parent MY_FORM before calling submit( callback_function).
I just did this now:
$("#featureAttribForm").submit( function(eventObj) {
return true;
});
and it hits breakpoint.
should I give a go and try to fix/improve in JsonLib?  do you think it is a good thing and pull request will be accepted ?

jsonform is going to generate the html that goes inside an html
I construct this form field on the fly
$("#result").html('');
and then  to use it here
for the jsonform generated output
$("#result-form").jsonForm(data)
yes my form is in a div.   I don't think jsonform should have to locate the right parent

yes, having thought second time - if really necessary, things can be put in right places without using div. ok, thanks a lot for all  the help you gave so far. I will close this issue not.


Double search icon

In the Fermyon Cloud developer docs, there appears to be a double search ion. I would expect only one (non-emoji).

With help from @karthik2804 , realized this was an intermittent repro (wouldn't repro in incognito browser). hard refresh resovled the issue.

Yes, we should upgrade the static file server but I still think there might be one or two edge cases with assets being cached for the older duration.


Event indicators: Percentage sign missing when you add an event

Note: After #263 is completed, this ticket will only apply to Event indicators, since you won't be able to manually add events to other types of indicators.
To reproduce the issue:

In the Targets tab of the Indicator setup form, choose % under Unit of measure.
Choose Event for target frequency and complete required fields.
Click "Create targets"
Note that the target fields are automatically populated with a % sign.
Click Add an event

Expected: Since this is a % indicator, the new event target also is auto-populated with a % sign.
Observed: The % sign is not included. (The % signs do appear after you apply changes, but it comes across as a bug, and users will get frustrated trying to manually add the % sign -- which we purposely don't permit because it's a numeric field.)

Validated.


How can I contribute to TF Hub?

I want to add Cartoon-GAN model and publish it to TF Hub with useful colab demo to show them in use. But I'm not clear how can I do such thing. Could anyone show me a channel?

How to contribute- https://github.com/tensorflow/hub/blob/master/README.md
How to publish- https://github.com/tensorflow/hub/tree/master/tfhub_dev

Hi @Dynmi , @hrishikeshmane has added the right links -- please take a look and let us know if you have any questions about publishing. Looking forward to seeing your contribution!


Map Pin Plus

Icon name
map-pin-plus
Use cases
Indicates adding a new map marker/pin to an existing list/map.
Design ideas
Center circle could be replaced with a "+" or a "+" can be added on the bottom right, similar to mail-plus
Checklist

[X] I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
[X] I have searched existing icons to make sure it does not already exist and I didn't find any.
[X] I am not requesting a brand logo and the art is not protected by copyright.
[X] I am not requesting an icon that includes religious, political imagery or hate symbols.
[X] I have provided appropriate use cases for the icon(s) requested.

This is a Lucide-ised redesign of our map pin icon & two separate sets with some of our common inside elements:  https://www.figma.com/design/aThgThuGPzAv7SY99sn68V/lucide%2Fmap-pins?node-id=0-1&t=AfsWsBgv8BX8tuq3-1
@ericfennis & @jguddas, let me know what you think, which set would you prefer? (unless both, but then we would need to come up with descriptive names for at least one variant)

I think both variants are cute and kinda valid, the left represents to me "here is a cross", the left one represents to me a "add a pin".


Robot test execution

As a developer, I would like to execute Robot tests natively in the IDE
Just so it's written down, the #1 item that would differentiate the various Intellij plugins (and for record, I really like this one!) is the ability to run/debug tests natively. This can be done with currently with low-level Maven and Java debugger commands but that isn't very nice at all (and assumes Maven).
Obviously this is not a trivial enhancement but do you have any idea of what the sizing would be?

Closing as I got confused by which repo is the canonical source for this plugin - neither this nor the jivesoftware one are forked from each other (in github terms) so both appear as the primary (and both have PRs and Issues enabled!).
Assuming I have direction correct, I recommend destroying this one recreating it by "forking" from jivesoftware


Other discussions around auto-detecting Redux state usage

There's been some other experimentation and discussion around auto-detecting which pieces of Redux state are used.  In particular, @thekashey has done a lot of work around trying to use proxies, but apparently there's a number of difficult edge cases.
Please see https://github.com/respond-framework/remixx/issues/1 and https://github.com/reduxjs/react-redux/issues/1018 for related discussion.
If you've got ideas for how we can leverage this kind of functionality in a future version of React-Redux, I'd appreciate any help you can provide!

@markerikson Thanks! I'll look into those discussion.

@theKashey's proxyequal seems great. Let me try incorporating it.

Works like a charm. Thanks tons, @theKashey.

😄 😃 😀

I would like to see some implementation details in the article.
Meanwhile:

Why you need bailOut hack? It would be great to utilise React.memo. Actually I am not sure this is easy doable with hooks.
You are not handling some edge cases, when you are reading not a POD type, an object for example, and passing it to another component. You have to “deproxify” all the props in the result (you can do it inside bailouthack).
See https://github.com/theKashey/memoize-state/blob/master/src/call.js
You should pass a third argument to proxyState to maintain cross-render proxies-object red equality.
Selectors, like reselect would be able to work properly after .3, but their memoization would break your one. Like you have 3 selectors, all reading different keys of a object. 2 got memorised and assessing only object, but one is not, and assessing the inner key - only that key would be in affected. 2 would partially fix it. I have a ongoing task for this a wrapper for memoization lib, which will replay the used keys in case of memozation.

The rest is awesome.

article

I would like to write one when I got better understanding.

bailOutHack

The original motivation of mine is to avoid memoization (which I found is a rather hard concept for beginners).
After looking at https://github.com/facebook/react/issues/14110, my hope is something like this library and I started experimenting it.
I may misunderstand something. What do you mean by utilising React.memo?
I made a small example with useMemo at https://github.com/dai-shi/react-hooks-global-state/blob/master/examples/11_deep/Person.tsx#L31-L43
Is it related at all? (BTW, this is another probject of mine with the similar motivation, but since it doesn't use Redux, there's nothing to do with this project.)

deproxify

Will look into it.

the third argument & reselect

Thanks. I'll try that.

Probably the best way is not use use proxyState directly, but via memoize-state, which will handle most of edge cases.
For you - just replace one line by another. See https://github.com/theKashey/beautiful-react-redux/blob/master/src/index.js#L64

Thanks for your suggestion.

beautiful-react-redux

Wonderful. Solves the general problem I have in mind.

memoize-state

Starting reading the code.

third argument to proxyState

I got this one.
I woner if "deproxify" is needed if this ProxyMap is kept the same across rendering.

Like you have 3 selectors, all reading different keys of a object. 2 got memorised and assessing only object, but one is not, and assessing the inner key - only that key would be in affected.

Probably because I don't get this one yet. Maybe, I'd write a failing test to better understand the issue.

const state = {
 a: {
   value: 1,
   b: {
     value1: 1
  }
}
....
affected - a.value, b.value.
... memoize
affected - a, as long it maintain eq-ref all good.
... change a.value(changes also a), b is the same
affected - a.value, b

... you know - it would always fallback to the "root node", value of which would be changed due to immutability principles, and never miss the update. Just would be not as precise, as could.
So lets don't call it a problem, while it is not proven.

Got that. Not a problem, but not as precise as it could be. Thanks.

Just a note: based on https://github.com/facebook/react/issues/14110#issuecomment-446845886, I ended up with the normal Redux subscriptions.
I'd probably need to do some benchmarks how slow this proxy approach is compared to react-redux.

Well, I was trying twitter-lite benchmark (I don't think it's a good one for this comparison, though),
and found it just doesn't work probably because __proxyequal_scanEnd: "this is secure guard" is enumerable. I need to learn more about this.

secure guards is a complex thing, and probably a mistake. And probably I should replace them by Symbols, to create a key non-enumerable by loops, but enumerable by spread.
The idea behind is to detect a full object spread and inform dev about deoptimization, or not to track all keys, as long one is tracking a whole object (this never was done).
For now you can disable it (globally) by calling spreadGuardsEnabled(false)

I run a benchmark using tree-view.
react-redux 5.0.7
┌─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                      │
├─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ 50.73   │ 9262.02   │ 7520.57   │ 576.89   │ 1,52,51,54,52,43,49,47,48,56,53,50,47,57,49,51,50,57,49,53,54,47,52,54,52,50,42 │
└─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────────────────────────────────────┘

react-hooks-easy-redux 0.8.0
┌─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                      │
├─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────┤
│ 8.37    │ 28016.50  │ 693.61    │ 51.04    │ 4,5,11,7,6,12,13,6,10,11,10,4,0,7,9,11,5,8,16,8 │
└─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────┘

As a comparison, this is a dumb implementation without any bindings, but just use useEffect to subscribe the store and update for any changes.
┌─────────┬───────────┬───────────┬──────────┬──────────────────────────────────────────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                       │
├─────────┼───────────┼───────────┼──────────┼──────────────────────────────────────────────────────────────────────────────────┤
│ 29.62   │ 22724.41  │ 3248.64   │ 224.59   │ 22,28,27,30,26,29,31,34,27,26,25,29,23,29,30,27,38,35,33,34,24,27,36,31,22,36,33 │
└─────────┴───────────┴───────────┴──────────┴──────────────────────────────────────────────────────────────────────────────────┘

:noooooooooooo:

No, something is wrong. When I run the dumb version in dev mode, it's almost freezing.

I don't know why, but the dumb version in production mode is fast contradictory to the intuition. I'm curious about its optimization.
So far, what I found about proxyequal is that proxyState() takes several milliseconds when an object is big. This can be seen to be fair because tree-view is an extreme example. ...What's bothering is that the dumb version actually beats the proxy version.

Probably I know that's the problem, and I know the way to solve it.
The Problem
You could not establish proxy upon frozen object. That's why it clones it via Object.assign(it's slow).
https://github.com/theKashey/proxyequal/blob/master/src/index.js#L43
if (state.constructor.name === 'Object') {
    const clone = Object.assign({}, state);
   /// ^^ replace this by `const clone = {}`
    Object.setPrototypeOf(clone, Object.getPrototypeOf(state));
    return clone;
}

The solution
Set a prototype for an empty object, and override getOwnKeys to emulate key existence. Just enable spreadGuardsBack, or activate these 3 lines in another way.
Another solution
Detect frozen object, and skip everything for plain ones.
@dai-shi - please monkey patch your version of proxyequal, and if it will help I'll ship a new version.

I hope I don't misunderstand anything.
What I did: const clone = {}; if (true || shouldHookOwnKeys) { ... }
before (twice):
┌─────────┬───────────┬───────────┬──────────┬──────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                           │
├─────────┼───────────┼───────────┼──────────┼──────────────────────────────────────┤
│ 6.63    │ 28119.50  │ 606.36    │ 44.71    │ 3,5,6,8,10,12,6,7,10,6,2,0,7,6,7,9,5 │
└─────────┴───────────┴───────────┴──────────┴──────────────────────────────────────┘
┌─────────┬───────────┬───────────┬──────────┬────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                 │
├─────────┼───────────┼───────────┼──────────┼────────────────────────────────────────────┤
│ 7.00    │ 28459.22  │ 763.89    │ 48.56    │ 3,5,6,7,13,9,8,9,8,11,1,3,0,7,8,6,8,5,6,13 │
└─────────┴───────────┴───────────┴──────────┴────────────────────────────────────────────┘

after (twice):
┌─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                          │
├─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────────┤
│ 8.00    │ 27645.82  │ 877.30    │ 70.92    │ 1,6,9,13,11,7,9,8,3,5,9,7,4,10,8,5,10,9,10,7,5,9,12 │
└─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────────┘
┌─────────┬───────────┬───────────┬──────────┬───────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                    │
├─────────┼───────────┼───────────┼──────────┼───────────────────────────────────────────────┤
│ 7.15    │ 27425.04  │ 902.62    │ 63.44    │ 1,4,9,7,8,11,4,8,6,9,10,2,3,6,5,8,6,11,8,10,8 │
└─────────┴───────────┴───────────┴──────────┴───────────────────────────────────────────────┘

Although my laptop may not be very stable while running, I see only a slight change.

Let me try a bit differently.
with spread guards:
┌─────────┬───────────┬───────────┬──────────┬────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                             │
├─────────┼───────────┼───────────┼──────────┼────────────────────────────────────────┤
│ 6.47    │ 28246.59  │ 628.99    │ 47.14    │ 3,6,8,7,4,10,9,3,9,10,4,3,0,8,7,6,10,6 │
└─────────┴───────────┴───────────┴──────────┴────────────────────────────────────────┘

with spread guards + `const clone = {};`:
┌─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────┐
│ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                      │
├─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────┤
│ 6.71    │ 27706.79  │ 905.02    │ 70.12    │ 1,4,3,8,7,4,9,10,5,9,4,10,1,3,8,7,8,6,5,10,11,9 │
└─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────┘

Not much difference? Hope these may help...

Initial:
┌─────────┬─────────┬───────────┬───────────┬──────────┬───────────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                │
├─────────┼─────────┼───────────┼───────────┼──────────┼───────────────────────────────────────────┤
│ 5.0.7   │ 6.44    │ 28581.75  │ 604.55    │ 42.48    │ 4,10,8,7,13,8,5,8,7,10,1,2,0,6,7,4,5,10,5 │
└─────────┴─────────┴───────────┴───────────┴──────────┴───────────────────────────────────────────┘

The problem was not in change tracking, but in the change comparison, to be more concrete in the building a list of keys to compare - collectValuables, which uses search-trie underneath.
I've run some perf tests and found a bit quicker solution to build trie(FPS 14), and get data I need from it(20)
┌─────────┬─────────┬───────────┬───────────┬──────────┬────────────────────────────────────────────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                 │
├─────────┼─────────┼───────────┼───────────┼──────────┼────────────────────────────────────────────────────────────────────────────┤
│ 5.0.7   │ 19.20   │ 22173.94  │ 2957.29   │ 223.88   │ 4,8,17,22,19,15,10,14,22,24,21,18,28,22,10,21,18,22,9,17,24,25,19,24,18,33 │
└─────────┴─────────┴───────────┴───────────┴──────────┴────────────────────────────────────────────────────────────────────────────┘

Still not awesome, but much better than before, as similar as dumb tree:
┌─────────┬─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                      │
├─────────┼─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ 5.0.7   │ 20.77   │ 23343.37  │ 3144.17   │ 227.37   │ 9,23,27,24,17,22,25,30,27,28,23,21,18,21,24,17,19,23,17,14,15,21,19,18,24,10,13 │
└─────────┴─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────────────────────────────────────┘

I will publish a new version tomorrow.
PS: without proxyequal, with an update on every change, it gives 12FPS on my machine (MBP mid 2015)

Great work. Let me try on my end.
with proxyequal v2.0.1:
┌─────────┬─────────┬───────────┬───────────┬──────────┬──────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                           │
├─────────┼─────────┼───────────┼───────────┼──────────┼──────────────────────────────────────┤
│ 5.0.7   │ 7.69    │ 27448.93  │ 674.92    │ 47.62    │ 3,7,9,10,8,13,7,8,13,8,3,0,7,8,7,9,6 │
└─────────┴─────────┴───────────┴───────────┴──────────┴──────────────────────────────────────┘

with proxyequal v2.0.2:
┌─────────┬─────────┬───────────┬───────────┬──────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                      │
├─────────┼─────────┼───────────┼───────────┼──────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ 5.0.7   │ 15.59   │ 24285.89  │ 2009.59   │ 148.65   │ 1,10,22,25,20,23,6,15,17,13,12,18,16,12,22,23,20,7,12,14,18,17,10,15,7,15,13,19 │
└─────────┴─────────┴───────────┴───────────┴──────────┴─────────────────────────────────────────────────────────────────────────────────┘

Much better. (but, your perf test looks a bit better.)

PS: without proxyequal, with an update on every change, it gives 12FPS on my machine (MBP mid 2015)

How is this different from tree-view-dumb?

How is this different from tree-view-dumb?

19 vs 20 FPS

Hm, my previous result was not really stable. Let me again run several times on my machine (MBP 2017).
tree-view-rher: 21 FPS
tree-view-dumb: 31 FPS

@theKashey I happened to find // IE11 case is faster on my machine in tree-view-rher.

if (false && trie.edges.values) {

┌─────────┬─────────┬───────────┬───────────┬──────────┬────────────────────────────────────────────────────────────────────────────────────┐
│ Version │ Avg FPS │ Scripting │ Rendering │ Painting │ FPS Values                                                                         │
├─────────┼─────────┼───────────┼───────────┼──────────┼────────────────────────────────────────────────────────────────────────────────────┤
│ 5.0.7   │ 48.78   │ 19296.74  │ 21.64     │ 16.24    │ 1,48,54,46,47,48,54,49,45,43,46,49,43,54,47,52,49,41,52,56,43,54,48,53,45,55,45,51 │
└─────────┴─────────┴───────────┴───────────┴──────────┴────────────────────────────────────────────────────────────────────────────────────┘

Does it make sense?

:nods:, I was thinking about flat arrays yesterday. Cool that you already spiked it and got so amazing results.
Meanwhile will try to see the difference

According to this tests - https://jsperf.com/ltree-test/1 - the code with Set, I posted above, is 2-3 times faster that your one.
Your one(arrays) is 25% faster than initial one, and the same with the "current" one for long strings, but faster on short ones.

Good, jsperf is easier to test. (It's been a while since I last used it. It's now totally changed. Requiring GitHub oauth, and no fork?)
Played around a bit based on yours. https://jsperf.com/ltree-test-2/1
We might need the using part after putting for further experiments.
(BTW, I generally prefer array prototypes to for-loops, and I would avoid for-loops whenever possible in my application code...)

😿 Maps/Sets sucks. Arrays rule.
Probably hash mapping is far more expensive for short data, and in this case it always would be "short".

https://jsperf.com/ltree-test-2/5 - Set degrades quickly with more and more data filled in.
Your variant just smashing it in Chrome. In Safari difference is just 10%.

https://jsperf.com/ltree-test-2/9
Another trial, but it's not that compelling.

:nods: so, by removing concatenation (as long as it's a lazy operation nowadays) you are skyrocketing it yet again. Pretty sure - that's enough :)

@dai-shi Two quick questions:

If I install this package from npm, which of these examples above is it using now? I expect it to be tree-view-rher, but I only want to make sure if I'm correct. Are all performance improvements already up-to-date in npm?
Is this package ready for production?

@buzinas
Yes, it's tree-view-rher. It's up-to-date. The result is of v0.9.1.
Yes, v1.0.0 is supposed to be production ready.

It's interesting because I was just planning to do these before I got your comment.

file a new issue for benchmark, and run it for v1.0.0 again.
release v1.1.0 today and run the benchmark.

Let us continue the discusson about benchmarks in #3.

Want to chip in this thread and mention that there is a new kid on the block https://github.com/cerebral/overmind/tree/next/packages/node_modules/proxy-state-tree
May be worth trying or borrow some ideas from it

Hi @smashercosmo!
Looks interesting. How are you familiar with the library?

That means one tree stops tracking when an other starts tracking. Since all component libraries produces their UI description synchronously, this gives a predictable behaviour.

That's something we talked about once. Having one tracker per state and switching it to different consumers. Probably it's not so dangerous. It's actually not a problem to trigger an error on track out of expected locations (ie async access), thus help customer detect a problem and wrap it with some method you may provide.

It may not be dangerous if synchronous, but I’m not sure how to implement it in a hook.
Haven’t yet read proxy-state-tree in detail, but I don’t get how to compare previous state and new one.

Yeah, It's a bit complicated (and reactive) library. I am not sure it's interface would work for you.

Meanwhile - @faceyspacey - you probably have something to say.

@dai-shi nope, sorry, has zero experience in this field) Just thought it might be interesting for you.

there's a lot going on in this thread...i just wanna say im super impressed and very happy someone finally brought this to fruition. great work @dai-shi !!
The benchmarks are obviously of prime concern when it comes to this thing. If they can rival the old react-redux benchmarks, there's no reason this shouldn't become the de-facto way to use Redux.
An important goal for me in the past was the ability to continue to do deep key access checking in relation to the rest operator and object spreads:
rest operator
const { someKey, ...rest } = someObject
<div>rest.someValue</div>

spread
const obj1 = { firstName: 'Foo', age: 22 };
const obj2 = { lastName: 'Bar', gender: 'M' };

const newObj = { ...obj1, ...obj2, planet: 'Earth' };

If you guys checked out Remixx from the Respond Framework you might have seen why this is important. Essentially the idea is that all component functions receive a 2nd argument for state, which inevitably will be destructured most of the time, eg:
const MyComponent = (props, state, actions) => ...
const MyComponentDestructured = (props, { foo } , actions) => ...

Not having this is akin to the controversy around hooks requiring linting rules for the scenarios it doesn't support. @theKashey had mentioned the hurdles to this in the past. How are people viewing it now? A solid possibility that just needs to be pursued? Or a road better not followed as the costs are too high? What are those costs?

So - still there is no solution for the rest spread, except...
We may actually create a super simple Babel plugin, which would transform rest opartor to the something digestible by us. One line before and one line after to toggle proxies on and off.

I'm obviously not opposed to that. Are you 100% sure that's the only route?

@faceyspacey Thanks! I started this project with the mind that Redux should be easier for beginners, but you implied that it could be used in a broader way. That sounds exciting.
@theKashey already replied, but quoting his comment again, we are not yet ready for rest/spread.
I haven't thought much about it so far, but I will take some time to think about it as now it's clearer to me that rest/spread is important.
I don't know other unsupported edge cases at the moment, but I didn't obviously cover cases exhaustively.

Meanwhile - rest was a problem for mapStateToProps realization, when you might want return/inject some slices from state as props.
With this approach, you are just "reading" from state inside component, as you wanted to do, and no need to rest.
const MyComponent = (props, state, actions) => ...
const MyComponentDestructured = (props, { foo } , actions) => ...

const RemixxComponent = (props) => {
  const state = useReduxState();
  const dispatch = useReduxDispatch();
  return MyComponent(props, state, dispatch);
};

🚀?

it's very nice to see you remembered the strategy; it's even nicer to see react-hooks-easy-redux playing it's part perfectly (as in your sample implementation).
yea, on our side destructuring rest isn't a problem. it's only a problem for users that would expect to do so, as destructuring is so common with arguments.
both this and its "broader" use cases are exciting 🚀. now we just gotta lockdown:

something for selectors: https://github.com/respond-framework/remixx/blob/master/docs/initial-plan.md#connect-implementation-5-selectors

something for redux modules: https://github.com/respond-framework/remixx/blob/master/docs/initial-plan.md#remixx-modules

I use selectors, I love selectors for memoization, "scoping" and testability. And preparing a small update for reselect with WeakMaps and Hooks in mind.
Selectors ARE the API.

@theKashey
Here's an example where the selectors API in this setup fails us:
const MyRemixxComponent = (props, state, actions) => {
  const val = mySelector(state, props)
  return <div>{val}</div>
}

const mySelector = (state, props) => {
  return state.temp === 'high' // low | medium | high
    ? state.highs    // low and medium always returns mediums, therefore:
    : state.mediums // POTENTIAL FOR UNNECESSARY RENDER
}

So react-hooks-easy-redux is only checking state. It's not making use of the intelligence within selectors, like react-redux does with HOCs.
How can we make the above not trigger unnecessary renders when state.temp changes between medium and high??
My original idea for Remixx was to make the state arg passed to your remixx components also have selectors built in, e.g:
const MyRemixxComponent = (props, state, actions) => {
  const val = state.mySelector(props)
  return <div>{val}</div>
}

And then somehow internally we produce a state object that addresses this issue. Thoughts??

redux like mapStateToProps. A black box. But we could track what was used as inputs (property access), and what was returned. Like we know everything, and could bailout on shallow equal. But - we could return an array or an object, not just a POD type, and it may matter

inline state access. We might track only the first part - property access, but not to bailout if you got the same result from different values. But! Usually, you will use POD types to create elements...

selectors. We might track what's happening inside selector, and we might track what it will return (that should be "our" selectors). This might create something like hierarchical cache - the first level (state access) determine should MyRemixxComponent be called, while the second(selector result) may determine should MyRemixxComponent return be rejected.

Plus - we have to hook into React.createElement, and track the factual usage. Including wrapping POD variables by object with defined [toPrimitive], thus track not the property access, but property read (only for numbers and strings :( )

But we could track what was used as inputs (property access), and what was returned. Like we know everything, and could bailout on shallow equal.

that's what I was thinking.
And by having state.mySelectors, during createStore we have an opportunity to wire up the shallowEqual testing of selector return values in order prevent component re-rendering.
In other words, we couple this to how re-rendering is currently prevented by react-hooks-easy-redux. It works to our advantage to have all our selectors up front. In fact, it's necessary (though we will to offer an API to add more via code-splitting).

This might create something like hierarchical cache - the first level (state access) determine should MyRemixxComponent be called, while the second(selector result) may determine should MyRemixxComponent return be rejected.

I guess this begins to more closely describe the implementation.

Plus - we have to hook into React.createElement, and track the factual usage

I guess here's where things get out of control--ur saying the most optimum version of selector tracking includes tracking usage of objects generated by the selectors, correct?

Sounds like we have a roadmap??

Sounds like we should have a series of experiments. Another, not bad, option would be - useMemo
const MyRemixxComponent = (props, state, actions) => {
  const val = state.mySelector(props)
  const render = useMemo(() => <div>{val}</div>, [val]);
  return render();
}

So - you will be able to bialout render by returning exactly the same return, and es-lint(not babel, not proxy!) would help properly pass down all the props  you need.
The memoization quality could be easily tested by Remixx, but calling a function twice.

Why es-lint? I'm missing a connection here.
And to be clear, by "bail out" you mean detect usage, and if nothing that changed is being used, return a cached component tree?

Es-lint can automatically discover all the values that go in the array like [val]? I'm not sure what u r referring to that we get from es-lint??

Cmon - React team created ESLint plugin to help you provide all the stuff you need for useEffect  and useMemo. And also watches if you are using something you are NOT using :)
What about usage rate of selectors - it depends on code style. Sometimes it's 😭.

Lol, have only been studying hooks, havent used em yet. ..In our case, it's kind of annoying that its an es-lint plugin, as we likely need our babel plugin to do the same work. Maybe you have a way to streamline building this I'm not aware of. I think we only wanna require our users to install a babel plugin.
Does it just provide warnings, or does it actually make the changes for you with eslint --fix?
Unless somehow we get this for free as part of a standard babel plugin integration, i think we either gotta copy it or implement it ourselves, eg:
const MyRemixxComponent = (props, state, actions) => {
  const val = state.mySelector('MyRemixComponent', props) // component name injected by babel plugin
  return <div>{val}</div>
}

And then the hierarchical cache compares cached values for this precise component and makes final decision of whether to trigger re-rendering.
Also, since their could be multiple MyRemixComponent, i guess we have to use useRef or something like this to get a handle on particular component instances. Eg:
const MyRemixxComponent = (props, state, actions) => {
  const ref = useRef(null)
  const val1 = state.mySelector1(ref, props)
  const val2 = state.mySelector2(ref, props)
  return <div>{val1}, {val2}</div>
}

Then our algo operates on a structure like:
const refs = {
   [ref]: [returnVal1, returnVal2], // compare these to return values in next potential rendering
   [ref2]: [returnVal2_1, returnVal2_2]
}

yep, something like this.

const wrapSelector = selector => {
   const fn = (state, ...args) => selector(proxy(state), ...args);
   fn.getAffected = proxy.getAffected.....
   return fn;
}
const createSelector = (...args) => wrapSelector(realCreateSelector(...args));

@dai-shi - you may proxy proxied state. With some extension to your spread PR one could disable tracking on the parent proxy while selector is working to make result more pure.

(I'm getting to understand what you guys are trying to do.)

yes, my friend, it's a chance for your work to be way bigger than something for "beginners" as you initially imagined it. And at the very least, it allows you to solve the selectors issue, not just reducers. That makes your lib extremely powerful. Of course a redux fork must be used, but that's where the magic begins.

We had very nice discussions here. I appreciate for all who participated. Sine it got long, let me close this issue now. Please discuss in more specific existing issues or file a new issue.


Remove multiplexed Flutter Android lifecycle

Remove multiplexed Flutter Android lifecycle.
By moving Lifecycle access to ActivityAware and ServiceAware, Flutter no longer needs to multiplex Lifecycles in the standard plugin binding.

Done here: https://github.com/flutter/engine/pull/13394


portico: Fix the position and size of overflow for small size devices.

Fixes: #8424
Previously for Small devices

Now:

Nice, merged, thanks @SiddharthVarshney!
For next time, I'd appreciate your writing a bit more about the thinking behind the changes in the commit message (which gets copied into the PR description) -- I had to guess that the reason you made most of the changes was to convert the image from a background-image to an image so that you could apply CSS to it.


Consider Jenkins instead of Travis

Investigate whether Jenkins may work better for this project than Travis CI.

Any more background on why ? gcloud-python / gcloud-ruby / gcloud-node all use Travis pretty happily. :)

Jenkins was recently used to create Docker images for testing Managed VMs, and we thought it might be good to know why.  This issue is a pretty low priority; AFAIK, gcloud-java hasn't hit any big issues with Travis either, we just want to know more.

This issue has been open for a while, I see no reason for moving to Jenkins and for the time being I believe it's better that all gcloud-* projects stick to the same CI. If we ever encounter issues with Travis or if you have strong point in favor of further investigation feel free to reopen this issue.


Access Denied with restricted S3 permissions

Utilizing the AWS Auth documentation, I have the IAM policy at the end of this post. When using this policy, the following error is received:
level=error msg=AccessDenied: Access Denied
This is only fixed by allowing s3:* on the bucket policy rule (not the state file policy rule). However, I'm unable to determine what the missing s3 permissions are.
{
  "Sid": "DynamoDBState",
  "Effect": "Allow",
  "Action": [
    "dynamodb:DescribeTable",
    "dynamodb:GetItem",
    "dynamodb:PutItem",
    "dynamodb:DeleteItem",
    "dynamodb:CreateTable"
  ],
  "Resource": [
    "arn:aws:dynamodb:*:*:table/TABLE_NAME"
  ]
},
{
  "Sid": "S3State",
  "Effect": "Allow",
  "Action": [
    "s3:ListBucket",
    "s3:GetBucketVersioning",
    "s3:GetObject",
    "s3:GetBucketAcl",
    "s3:GetBucketLogging",
    "s3:CreateBucket",
    "s3:PutObject",
    "s3:PutBucketPublicAccessBlock",
    "s3:PutBucketTagging",
    "s3:PutBucketPolicy",
    "s3:PutBucketVersioning",
    "s3:PutEncryptionConfiguration",
    "s3:PutBucketAcl",
    "s3:PutBucketLogging"
  ],
  "Resource": [
    "arn:aws:s3:::BUCKET_NAME"
  ]
},
{
  "Sid": "S3StateFile",
  "Effect": "Allow",
  "Action": [
    "s3:PutObject",
    "s3:GetObject"
  ],
  "Resource": [
    "arn:aws:s3:::BUCKET_NAME/some/path/here"
  ]
}

Hello,
AFAIK, additionally will be required to set:
"s3:GetEncryptionConfiguration",
"s3:GetBucketPolicy",
"s3:GetBucketPublicAccessBlock",
"s3:PutLifecycleConfiguration"

I appreciate the missing permissions. That worked as expected!


Static Routes not passing in 5.0.0

My testing infrastructure is failing to pass on static route checks.
        router.get('/', (req, res) => {
            this.rapidApi(res);
        });

[snip]

    rapidApi(res){
        res.writeHead(302, {
            'Location': 'https://example.com,
        });
        res.end();
    }

error:
FAIL src/homepage.test.js (6.23 s)
  ● GET / › should respond with 302
    TypeError: argument callback is required
      at Function.handle (node_modules/router/index.js:150:11)
      at Server.router (node_modules/router/index.js:59:12)
  ● GET / › should respond with 302
    thrown: "Exceeded timeout of 5000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."
      4 |
      5 | describe('GET /', () => {
    > 6 |     test("should respond with 302", async () => {
        |     ^
      7 |         const response = await request(app).get('/')
      8 |         expect(response.statusCode).toBe(302);
      9 |     });
      at test (src/homepage.test.js:6:5)
      at Object.describe (src/homepage.test.js:5:1)
A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them.

Was something changed in 5.0.0 that requires a code change, or do we have some other bug?

I think you have another bug. There is not enough here for me to know for sure, but this is one of the most well covered things in the tests and others have not reported this. I will leave it open for now, but if you find more details and can close please do.

I'll take a deeper look, I know it was working in previous 4.x.x releases with no issues. So unsure what has changed that could be triggering this.

Might be an issue with supertest + jest.
Testing the code manually proves redirects are still working as expected.


[18.09 backport] Fix overlay2 busy error on mount

backport of https://github.com/moby/moby/pull/38968 and https://github.com/moby/moby/pull/39780 for 19.03
When mounting overlays which have children, enforce that
the mount is always performed as read only. Newer versions
of the kernel return a device busy error when a lower directory
is in use as an upper directory in another overlay mount.
Adds committed file to indicate when an overlay is being used
as a parent, ensuring it will no longer be mounted with an
upper directory.
Related to kernel@146d62e5a586

@dmcgowan @kolyshkin PTAL


fix typo

Pull Request Test Coverage Report for Build 238

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 49.134%

Totals

Change from base Build 237:
0.0%

Covered Lines:
1475

Relevant Lines:
3002

💛  - Coveralls


ERROR: method .register_for_exectution has not attribute "name"

Describe the bug
I am following the tutorial here: https://microsoft.github.io/autogen/docs/tutorial/tool-use
At one point it says I can use the .register_for_execution function, using this syntax:
user_proxy.register_for_execution(name="calculator")(calculator)
However, when I run that code I get the error:
AttributeError: 'method' object has no attribute '_name'
Why are the getting started tutorials not working?
Steps to reproduce

Follow the instructions here: https://microsoft.github.io/autogen/docs/tutorial/tool-use
Use this code:

from autogen import ConversableAgent

user_proxy = ConversableAgent(
    name="User",
    llm_config=False,
    is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"],
    human_input_mode="NEVER",
)

user_proxy.register_for_execution(name="calculator")(calculator)

### Model Used

_No response_

### Expected Behavior

The function should work like it does in the tutorial.

### Screenshots and logs

_No response_

### Additional Information

Autogen version 0.2.24, Windows

Describe the bug
I am following the tutorial here: https://microsoft.github.io/autogen/docs/tutorial/tool-use At one point it says I can use the .register_for_execution function, using this syntax: user_proxy.register_for_execution(name="calculator")(calculator) However, when I run that code I get the error: AttributeError: 'method' object has no attribute '_name'
Why are the getting started tutorials not working?
Steps to reproduce

Follow the instructions here: https://microsoft.github.io/autogen/docs/tutorial/tool-use
Use this code:

from autogen import ConversableAgent

user_proxy = ConversableAgent(
    name="User",
    llm_config=False,
    is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"],
    human_input_mode="NEVER",
)

user_proxy.register_for_execution(name="calculator")(calculator)

### Model Used

_No response_

### Expected Behavior

The function should work like it does in the tutorial.

### Screenshots and logs

_No response_

### Additional Information

Autogen version 0.2.24, Windows

@tyler-suard-parker hope you defined an assistant: ConversableAgent Agent, if not please define the agent as mentioned in the tutorial. followed by:
assistant.register_for_llm(name="calculator", description="A simple calculator")(calculator)
this should help with setting up the argument _name

Did you run the notebook from the first cell? You might have redefined some variables.

similiar problem:
Error: calculator() got an unexpected keyword argument 'name'
the utilized code was 1:1 copied from
https://microsoft.github.io/autogen/docs/tutorial/tool-use
environment: local llama (2 and 3 tested) +autogen+litellm

@tyler-suard-parker The exact code works for me:
from autogen import ConversableAgent

user_proxy = ConversableAgent(
    name="User",
    llm_config=False,
    is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"],
    human_input_mode="NEVER",
)

user_proxy.register_for_execution(name="calculator")(calculator)

@WebSniper Your error is different:

Error: calculator() got an unexpected keyword argument 'name'

from the OP's error:

AttributeError: 'method' object has no attribute '_name'

Your error is the LLM made a mistake in writing the parameters for the calculator tool.

@ekzhu  can you provide the versions of python and pyautogen.

I had the same issue and after some research I found that it's a bug in the package.
the solution is to override the package and set the attribute '__func__' before accessing the '_name' attribute
I made this exception and it worked for me.
The solution inspired by this answer on Stackoverflow:

I had this issue but it was because I was passing method of a class to the "register_for_execution" decorator.
self.rule_user_proxy.register_for_execution(name="relevant_rule_finder")(find_relevant_rules)
The issue was resolved as soon as I move the find_relevant_rules outside the class definition.
In fact, the function has the _name attribute, but a method does not have. that is why you are getting that problem.

I had this issue but it was because I was passing method of a class to the "register_for_execution" decorator. See the below code for my case: self.rule_user_proxy.register_for_execution(name="relevant_rule_finder")(self.find_relevant_rules)
The issue was resolved as soon as I move the find_relevant_rules outside the class definition. In fact, the function has the _name attribute, but a method does not have. that is why you are getting that problem.

Thank you, this is exactly my error

I had this issue but it was because I was passing method of a class to the "register_for_execution" decorator. See the below code for my case: self.rule_user_proxy.register_for_execution(name="relevant_rule_finder")(self.find_relevant_rules)
The issue was resolved as soon as I move the find_relevant_rules outside the class definition. In fact, the function has the _name attribute, but a method does not have. that is why you are getting that problem.

or you can use @staticmethod decorator
e.g.
class demo:
       @staticmethod
       def urFunction():
             ...


insufficient information

[Enter feedback here]
Working with a partner to help their active-active VPN configuration with BGP. But, to be frank, this document is not giving full details.
For example, it’s talking about mainly APIPA addresses, don’t using any screenshots and some parts are not clear:
Mentioned "BGP peer IP address" could be internal or external, I confused here. Document just says "the address that you noted in previous steps". Used internal IP address from on-prem site according to a screenshot in the document but faced with some challenges. Also, Checkpoint document mentions public IP address:
[https://community.checkpoint.com/t5/Security-Gateways/BGP-over-VPN-between-Azure-docx/td-p/38979]
So, I think we need to update our document with right details and may be add more screenshots. I can be volunteer to update document.
my alias: muammerb

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

ID: 90e43666-9cde-c8bc-b657-066de9712bd6
Version Independent ID: 8367e82b-4d57-e2f5-e74a-2a90b6c8169b
Content: Configure BGP for VPN Gateway: Portal - Azure VPN Gateway
Content Source: articles/vpn-gateway/bgp-howto.md
Service: vpn-gateway
GitHub Login: @cherylmc
Microsoft Alias: cherylmc

@muammerbenzes , thank you for your feedback. We have assigned this to the content owner/author for review.
@cherylmc , for your review.

Thanks! I'll bring this up with the product team when we meet.

#reassign:aybatra

#assign:deeharris-23

#reassign:deeharris-23

Thanks for your dedication to our documentation. We have created an internal work item in our backlog to resolve this issue. If you determine another possible update to our documentation, please don't hesitate to reach out again. #please-close


[Zowe V2] Change default ports to be in the 7550+ range to align with APIML

Your checklist for this pull request
🚨Please review the guidelines for contributing to this repository.

[x] If the changes in this PR is part of the next future release, make this pull request against the docs-staging branch which will be published at the next release boundary. If the changes in this PR are part of the current release, use the default base branch, master. For more information about branches, see https://github.com/zowe/docs-site/tree/master#understanding-the-doc-branches.

[ ] If this PR relates to GitHub issues in docs-site or other repositories, please list in Description, prefixed with close, fix or resolve keywords.

Description (including links to related git issues)
Please describe your pull request.
This PR addresses Issue:

Changing the port number for the servers such that they are consecutive after the APIML ports.
This makes our port assignments more organized.

:heart:Thank you!

@bobadesakshi21 Doc updates for Zowe V2 will need to go to the v2-doc-branch before V2 is live. Would you please change the base branch to v2-doc-branch? Thanks!


[ENG-2306] Four new registration forms

Purpose
Adds new schemas for OSF preregistration
Changes

4 new schemas and a migrations

QA Notes
Please make verification statements inspired by your code and what your code touches.

Verify all language is the same as as the excel spreadsheet
Verify all schemas are initially invisible

Documentation
simple tech task, no docs.
Side Effects
None that I know of.
Ticket
https://openscience.atlassian.net/browse/ENG-2306

Based on the last travis run it looks like this might not be up-to-date with develop and its migrations.


Remove System.Array from GetOrCreateBasicType

Fixes #506
There is no "basic type" for System.Array.
System.String is missing here - not sure if it's intentional.

System.String is missing here - not sure if it's intentional.

We should always have System.String, it's enumerated via GetCommonMethodTables (or whatever that function is called).  Even if the runtime is barely started we should never fail to find that type, so I think we'd never fail (and therefore need it) in GetOrCreateBasicType.  That's from memory though, I'm not 100% sure.


Show conditional formating affects DisplayFormat

Without bringing this to the users attention it's easy to miss that the bolding on the Range is applied by conditional formatting, not to the cell itself.
Based on the original example there is no way to obtain the displayed color of a cell using a UDF.

Docs Build status updates of commit c07c7f5:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

api/Excel.Range.DisplayFormat.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@opbld31 Thanks for the fantastic fix!


auto disable autocompile if compilation performance too low

I would like to disable autocompile by default every time.
@chriseth ?
then we'll replace the compilation result by a warning saying the autocompile is off.
Cause I received feedback that remix is pretty slow if there are multiple 'opened' files.

Yes, that's a good idea. Perhaps the warning should rather be put where the compile button is. We should also have an indication that the compiler is currently compiling.

add a key shortcut for compilation


Mobile compatibility: New tab button should be visible at all times (not only on hover)?

Thanks for this excellent plugin. I use it as my primary means for managing tabs on mobile, even with the new update to Obsidian I find your plugin more functional.
I recently updated to 0.10.0, I'm not sure which version I came from but it was probably from months ago.
On version 0.10.0 without custom css the "new tab" button is invisible on mobile. If you click in the space under the last tab the functionality is there.
This issue would be addressed by making the button visible at all times (and I think this is an improved UX for desktop too).

Thanks,

The "New Tab" button is not available on mobile yet. I'm still trying to figure out which design is the best ~ Just stay tuned!

The "New Tab" button is not available on mobile yet. I'm still trying to figure out which design is the best ~ Just stay tuned!

Can you add the function of closing the tab by double-clicking? I don’t know why the latest version of the plug-in has lost this function on the mobile terminal.

Hi @lxmwwl ! Double clicking is now assigned to ephemeral tabs, the same as IDEs like VSCode. BTW, I found that double clicking can be easily triggered by accident.

I have just made the mistake of updating to the latest version and have also just noticed the double clicking to close Is not functioning anymore.
Is it not possible to separate the config for mobile users and desktop users or based on viewport or something else? So that you can bring back these customisations? Or you could just bring back the cross and hide it so that I can use CSS to make it visible all the time like a few versions back.
You can do this while you try and figure out what you want the UX to be in the long term.
Also, if you would like to have a chat about a long term solution and your concerns etc I'd be happy to!

Hi @hdsateyate ! I'm working on these long-term solutions. But I have to fix some bugs before releasing. Thank you for your patience and understanding.

Hi @hdsateyate @lxmwwl !
In the next version, a new feature called "Tab Editing" will reveal the close buttons and new tab buttons. Please note that you need to disable "Tab Editing" before navigating.

Thanks! I'm excited to test it out.

Hi @lxmwwl @hdsateyate ! New tab button is now available on mobile.

Hi @lxmwwl @hdsateyate ! New tab button is now available on mobile.
Thank you for your reply, but it becomes even weirder on the mobile side. After opening the edit mode, the sidebar cannot be slid and must be closed again. The operation steps are one more step than the original operation of long pressing the tab and then clicking to close it.

I agree it does feel a little incomplete.
With edit mode selected you cannot slide the pane closed. In my case Vertical Tabs is a tab in my left pane, attempting to close it just opens the right pane with the left pane remaining open behind it. Also, I am unable to navigate to tabs while in edit mode, clicking an item does nothing.
Personally I would like the option to have edit mode enabled by default at all times (either persist the toggle choice in the pane or add it into the settings) and have no restriction on usage (be able to access items and open/close panes as normal).
Would that be possible?

Hi @hdsateyate @lxmwwl ! Thank you!

After opening the edit mode, the sidebar cannot be slid and must be closed again.

Attempting to close it just opens the right pane with the left pane remaining open behind it. Also, I am unable to navigate to tabs while in edit mode, clicking an item does nothing.

Both are intended behaviors in the current version. I have to admit that this is not the perfect solution, but a workaround.

I have to pin the drawer because it may unintentionally close when tapping inside Vertical Tabs. I'm still trying to figure out why and how to avoid this.
I have to disable navigation when you editing tabs because there's a high chance that you will accidentally open a tab instead of closing it when tapping the "x" icon.

I'm still working on these know limitations. By releasing the incomplete version, I believe it's better than nothing.

You may open a discussion if you have more ideas to share. Thank you 😊

Since your last update and reintroducing the elements to the mobile version I was once again able to use CSS to make it function the way I want.

I have the crosses always visible
I have the new tab button always visible
Interaction works as normal at all times as edit tabs button does not need to be toggled on (so I can slide pane open and close and clicking a tab opens it as normal
Tapping "+ New tab" closes the pane automatically (as expected)
Tapping "x" to close tab does not close pane so I can close multiple panes without interruption

I appreciate the above may not suit everyone but allowing the user to enable such functionality natively through settings would probably be useful. Anyway, I am happy now! 😄


Elementum crashes on startup on retropie kodi app

Expected Behavior
Elementum should be starting.
Current Behavior
Elementum crashes after install (popup saying "Elementum has crashed, restarting..." on a loop until it gives up).
Steps to Reproduce (for bugs)

Install Retropie 4.3.13
Install latest Kodi compatible version:

    10:09:47.868 T:1946182304  NOTICE: Starting Kodi (17.3 Git:20170525-1789806-dirty). Platform: Linux ARM 32-bit
    10:09:47.868 T:1946182304  NOTICE: Using Release Kodi x32 build (version for Raspberry Pi)
    10:09:47.868 T:1946182304  NOTICE: Kodi compiled May 25 2017 by GCC 4.9.2 for Linux ARM 32-bit version 3.16.7 (200711)
    10:09:47.869 T:1946182304  NOTICE: Running on Raspbian GNU/Linux 8 (jessie), kernel: Linux ARM 32-bit version 4.9.35-v7+

Install latest Elementum from http://elementum.surge.sh/

Log
https://paste.kodi.tv/palijeyuxe.kodi
Additional Information
Both remote control settings have been enabled.
I was able to run Elementum on a separate SD card with OSMC. Since i don't want to continuously switch between the two SD cards and all my favorite settings are on the Retropie one, i would like to know how to fix the crashes.
The problem was already mentioned #313,  but unfortunately setting the path for the download and library folders doesn't solve the problem, any known incompatibility with any of my components?

You can try to run manually from shell: /home/pi/.kodi/userdata/addon_data/plugin.video.elementum/bin/linux_armv7/elementum , you will see the error.

The error i got was:
/usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/pi/.kodi/userdata/addon_data/plugin.video.elementum/bin/linux_armv7/elementum)

my distro (and consequently gcc) was too old, I tried an update:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

but it didn't installed gcc5 (which solved the problem), so i manually updated my repo list:

sudo nano /etc/apt/sources.list
Replace jessie with stretch

and then again:
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install gcc-5
sudo reboot

this fixed gcc problem:
pi@retropie:~ $ /home/pi/.kodi/userdata/addon_data/plugin.video.elementum/bin/linux_armv7/elementum
INFO  main         ▶ main             Starting Elementum daemon
INFO  main         ▶ main             Version: 0.1.25 LibTorrent: <IP_ADDRESS> Go: go1.12, Threads: 4
INFO  config       ▶ Reload           Reloading configuration...
INFO  config       ▶ Reload           Setting remote address to <IP_ADDRESS>:65221
WARN  config       ▶ Reload           Can't continue because addon info is empty
WARN  config       ▶ func1            Addon settings not properly set, opening settings window: "LOCALIZE[30113]"

At this point i got a message on Kodi:
Your version 0.6.1 of the Python cryptography module is too old. You need at least version 1.7. Please, upgrade your operating system. For more information, see https://kodi.wiki/view/linux

this thread explains how to solve it:
https://www.reddit.com/r/kodi/comments/9z2ekb/update_python_cryptography_kodi_on_retropie/
at the moment burst doesn't work (i suspect because of this last update), here is what i get in the log:
16:39:42.137 T:1441469360   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.AttributeError'>
                                            Error Contents: 'module' object has no attribute 'SSL_ST_INIT'
                                            Traceback (most recent call last):
                                              File "/home/pi/.kodi/addons/script.elementum.burst/burst.py", line 7, in <module>
                                                from burst.burst import search
                                              File "/home/pi/.kodi/addons/script.elementum.burst/burst/burst.py", line 20, in <module>
                                                from provider import process
                                              File "/home/pi/.kodi/addons/script.elementum.burst/burst/provider.py", line 13, in <module>
                                                from client import Client
                                              File "/home/pi/.kodi/addons/script.elementum.burst/burst/client.py", line 11, in <module>
                                                import requests
                                              File "/home/pi/.kodi/addons/script.elementum.burst/resources/site-packages/requests/__init__.py", line 95, in <module>
                                                from urllib3.contrib import pyopenssl
                                              File "/home/pi/.kodi/addons/script.elementum.burst/resources/site-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
                                                import OpenSSL.SSL
                                              File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
                                                from OpenSSL import rand, crypto, SSL
                                              File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 105, in <module>
                                                SSL_ST_INIT = _lib.SSL_ST_INIT
                                            AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
                                            -->End of Python script error report<--
```

Ok, i solved the previous error with:
sudo python -m easy_install --upgrade pyOpenSSL
but provider do not respond: https://paste.kodi.tv/cilogepuxu.kodi
this is weird since the same provider on the OSMC sd card works good, i think it is related with pyopenssl, any suggestion?

finally solved the problem, i had to switch off the following setting in Burst:
proxy https requests with elementum
If this is NOT an important setting to turn off you can just close the issue.

Proxying through Elementum gives ability to bypass Cloudflare defense (if you meet one). If you don't care - it's fine if you disable it.

No idea what Cloudflare is, closing for the moment.


KAFKA-8215: Pt I. Share block cache between instances

As of v5.12, RocksDB provides an API for sharing the block cache across all instances in a single process. Because it involves passing the same cache to the Rocks Options, this ability is not supported by the current Streams configs.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

There are a few possibilities for how to support this; I felt it was best to keep all the RocksDB related configs together so I tried to expose it through the RocksDBConfigSetter with an optional method to override. I'm happy to discuss other approaches if you have any thoughts
@cadonna @bbejeck @mjsax @vvcephei @guozhangwang


Define a credential metadata and a metadata endpoint for catalog requests and the trust protocol

For @mtgnt and @jimmarino
We need to define an endpoint in the DSP Catalog specification where clients can discover credential requirements for accessing protected datasets. This must be done in the upstream DSP specifications.

This will be two parts:

In DSP define a reserved Catalog URL for retrieving metadata, /.well-known/dspace-trust
In the presentation specification, define the contents of the returned metadata. This must align with the Issuance Protocol specification metadata's use of the 'credentialsSupportedobject (without theofferReasonandissuancePolicy` properties):

"credentialsSupported": [
    {
      "types": [
        "VerifiableCredential",
        "CompanyCredential"
      ],
      "bindingMethods": [
        "did:web"
      ],
      "cryptographicSuites": [
        "JsonWebKey2020"
      ],
    }
  ]

Note cryptographicSuites should either use values defined by IANA JOSE for JWT-based VCs or the Linked Data Cryptographic Suite Registry for LD-based VCs.

I added an upstream issue for the DSP specifications.

PR submitted #20 which will allow us to complete this task.


Fix more azurecore strict nulls

I'm going to look at replacing the current deferred usage at some point too - the way it's done now works fine but strict checking doesn't like it since it relies on setting up the deferred object in a callback. Using the same deferred object we use in a bunch of other extensions is a much easier way.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

8 of 16 (50.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.002%) to 42.061%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

extensions/azurecore/src/account-provider/auths/azureDeviceCode.ts
0
1
0.0%

extensions/azurecore/src/account-provider/auths/azureAuthCodeGrant.ts
0
3
0.0%

extensions/azurecore/src/account-provider/utils/simpleWebServer.ts
4
8
50.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.002%

Covered Lines:
28002

Relevant Lines:
61992

💛  - Coveralls

I'm assuming you tested the changes, right?

Haven't seen any issues so far!


Image Display

Cannot display the image file dynamically in the gallery and search templates. Got to work on it

Should be implemented correctly now


Documentation Helidon MP: Maven command does not create ExampleResource

The Helidon MP Data Source Guide ask to update ExampleResource class but this class is not present into the sample project.
There is instead GreetResource class.
 But following the guide with GreetResource instead of ExamplesResource works perfectly fine.
Is it useful to keep -DapplicationName=ExampleApplication as it is not used ?

Thanks for the report.  I just recently updated some related documentation and I think I missed this.  I'll assign it to myself.

Is it issue still valid? I tried to find it in the docs, but I couldn't.

@ljnelson I think this can be closed now. I see the changes in your other PR.


Checkbox issue

Hey, I've encountered what might be a bug in the beautiful Shards!
I have a card where I want to use a few checkboxes, so I took the example code right from the documentation, but it ends up like this in my document:

As you can see, the little checkmark appears next to the square where it's supposed to be. Is this a known issue? Any fix? :)
Code:

 Options

  <input type="checkbox" class="custom-control-input" id="customCheck1" checked>
  Checkboxes are cool

  <input type="checkbox" class="custom-control-input" id="customCheck2">
  Send me free pizza

  <input type="checkbox" class="custom-control-input" id="customCheck3" disabled>
  Oh no! I'm disabled!

Didn't have latest version of Shards...!

I have the same issue, even with shards 3.0.0 and bootstrap 4. I am working with laravel. I can give more details if necesary


Enhancement: NixOS options to create NFS/Samba share path if do not exist

Motivation
For any given configuration with an NFS or Samba service defined, the configuration cannot be used to install NixOS. The services must be disabled first because the paths that NFS or Samba are trying to share do not exist. This requires the system to have a separate install configuration from their production configuration requiring two rebuilds and some external script to create the paths. This is both annoying to maintain and breaks the chain of reproducibility that NixOS has much success with. I believe its integral to the design of NixOS to favor creating such paths for the ability to install with a single configuration and also to not rely on external scripts.
Issue Description
There should be a NixOS option for both NFS and Samba configuration to automatically create respective share paths. This could be named something like services.nfs.server.autoCreate and services.samba.autoCreate which would either be of an enable option type or a list of paths to create during build. This doesn't seem too outside the scope of NixOS with other configurations such as environment.etc and systemd.tmpfiles / systemd.user.tmpfiles.

I don't understand the request here; shouldn't that be on the user to ensure that they either have a valid mount configuration and/or make use of systemd-tmpfiles to create paths that don't exist?

Is there something I need to clarify? I can try rewording it maybe if you quote it.
Regarding the second statement, there's a number of reasons:

systemd-tmpfiles is invoked after the NFS and Samba shares are created. This means that the NFS and Samba share options will error out without building correctly. If the directory paths are created ahead of time, the NFS and Samba services will correctly bind to the export path.
Any configuration should be reproducible in NixOS without external factors. If it is not possible in the current state, this should probably be fixed.

If this was possible with tmpfiles, I would agree with you that this is up to user configuration instead of the responsibility of NixOS. But in the current state, this is not true. I can see where you're coming from though.

Forgot to mention: @eclairevoyant . Sorry, you probably wanted the ping.

@midirhee12 This is already possible for NFS, and has been for some time - perhaps a similar mechanism could be applied to Samba shares as well though:
https://search.nixos.org/options?channel=24.11&from=0&size=50&sort=relevance&type=packages&query=services.nfs.server.createMountPoints
https://github.com/NixOS/nixpkgs/blob/190c31a89e5eec80dd6604d7f9e5af3802a58a13/nixos/modules/services/network-filesystems/nfsd.nix#L69


Downloading or backing up entire storage bucket

Improve documentation for Storage API while awaiting longer term solution for being able to download all files from storage buckets
User Problem
User would like to download all files from a storage bucket more easily.
User would like to backup storage buckets more easily.
Potential Solutions

Client-side code using current API to list the contents of a bucket, downloading each file asyncronously, also using the API (see simple Node example below).
Supabase could provide a new endpoint called something like .storage.from('mybucket').downloadAll() or .storage.from('mybucket').backup().  Future version request for options like {asSingleZipFile: true, callHookWhenComplete: 'https://myhook_to_call_when_complete', etc: 'etc'}.
Alternatively, Supabase could provide a new endpoint called something like .storage.from('mybucket').createBackupFile('backups') which does the backend work to create a new file which gets placed into 'backups' storage bucket.  Finally, the current .download() API endpoint could be used to get the backup file.

Simple example Node script for looping through entire storage folder and downloading each file asynchronously.

Extending this request with "ListAll" endpoint, for listing all files with their full paths in a bucket.
https://github.com/supabase-community/storage-csharp/issues/18
Thank you 🥰


perf - don't refresh all shapes if only refreshing one service

code is in but needs testing to make sure we didn't break other refreshing


Wired lifecycle events

Hi
first sorry for my bad english ;)
there are some situations that websocketDidDisconnect() get called but the value of the isConnected property is still true , and in some circumstances calling connect() method inside websocketDidDisconnect() block makes another websocket connection although the previous one is alive and receives messages.

Hmm, ok I have not seen that. Is there anyway to reproduce the issue?

I will roll this in the improvements on #81.