How to overwrite the default views files through the multi-tenant folder?

I'm trying to build a Hello World project with 2 customers and see the power of the package for myself, but I'm stuck at the resources and routes elements now.
The problem
When accessing my different hostnames (home.php7.local and customer-1.php7.local), I see welcome.blade.php that is located under hello-world/resources/views/welcome.blade.php. I tried creating different files under their own storage folder, but no luck so far.
I have one file at /hello-world/storage/multi-tenant/1-home-php7-/views/welcome.blade.php and a different one at /hello-world/storage/multi-tenant/2-customer-1/views/welcome.blade.php. How do I get them to overwrite the default welcome.blade.php located in the resources/views folder?
For more information, the next session gives a little background on how I got here.
Background

I installed a brand new Cent OS 7 VM from scratch using the minimal iso and Virtual Box (No Vagrant), installed PHP 7.0, MySQL 5.7 and set a shared folder to point to /var/www/html/.
After that, I created a clean Laravel project and installed hyn/multi-tenant: 2.0.x@dev through composer.
I made sure to Integrate Into Laravel and Configure it following the docs.
Note: I didn't run the queue at all because I would like to configure Apache myself because when the time for deployment comes, I will be using a cPanel environment. Although I have root access to it, I can't allow third-party libraries to change cPanel Apache configuration files.

Tenancies
I now have 2 customers, 2 hostnames and 2 websites. One is home.php7.local and the other is customer-1.php7.local. The following snippet represents the Apache Configuration for customer-1, but home is pretty similar, changing just the alias value and the logs.
<VirtualHost *:80>
  ServerName customer-1.php7.local
  DocumentRoot "/var/www/html/hello-world/public/"
  alias "/media/" "/var/www/html/hello-world/storage/multi-tenant/2-customer-1/media/"
  <Directory "/var/www/html/hello-world/public/">
    Options Indexes FollowSymlinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>
  ErrorLog "/var/log/httpd/error-customer-1-hello-world.log"
  ServerSignature Off
  CustomLog "/var/log/httpd/access-home-customer-1-world.log" combined
</VirtualHost>

Currently the tenant view path does not have a higher priority over the system-wide view path. This is caused by using addLocation on the FileViewFinder which simply appends another location to search for views. A solution would be to make this configurable and allow for namespacing, pre- or appending the location. From the top of the brain I think I decided for this approach because a) I hate namespaced views and b) prepending is not easy to do.

After reading your comment, I just erased the system-wide file resources/views/welcome.blade.php and that was enough to have each welcome.blade.php being shown by their respective domain. Although it is sad to know that I can't work on generalized views system-wide and add customization views on a tenant-level, it was really nice to know that I did everything correctly.
My migrations are still empty, so my next step will be to create some tables and watch it working with separation of data. I also want to investigate the implementation of Dingo API generalized for all tenants.
Feel free to close this if you don't intend to support generalized/customized views or make it a future enhancement. Either way, at least I know I'm making progress with the package. Thank you very much.

I think making view loading configurable is something I'd like to have. So no worries it will be in there, just not sure prepending will be an option then.
Can you explain how you want to solve this with symbolic links?

My thought is to never have view files under the system-wide folder resources/views/ and come up with a new separate folder whatever/views. From the system perspective, those views don't even exists. So every tenant that will inherit the standard view file would have a symbolic link at storage/multi-tenant/<tenant>/ pointing to the respective file in whatever/views. If a tenant buys customization, I would create the same file manually at their own tenant folder, allowing me to have customized content in that file.
I haven't tried it yet, but I know that a symbolic link is a fake-file that consist of permission 777, which is enough condition to get blocked by suPHP, for instance. I don't know if the view files in a Laravel project gets to be interpreted by PHP and if suPHP will allow Apache to invoke the file anyway.


Add extractIfPresent() for assertThat(Optional)

Summary
I want to reuse tests, so I don't know if an optional is empty or not. I want that if it's empty, then it succeeds, if not that it's being matched.
The API should be similar to assertThat(Optional).get(), but it should not fail when the optional is empty.
Example
String[] possibleValues = { "abc", "def" };
assertThat(Optional.of("abc")).extractIfPresent().isIn(possibleValues); // Doesn't fail
assertThat(Optional.<String>empty()).extractIfPresent().isIn(possibleValues); // Doesn't fail
assertThat(Optional.of("xyz")).extractIfPresent().isIn(possibleValues); // Fails

Currently, this is achievable by manually extracting the value of the optional:
String[] possibleValues = { "abc", "def" };
Optional.of("abc").extractIfPresent(value -> assertThat(value).isIn(possibleValues)); // Doesn't fail
Optional.<String>empty().extractIfPresent(value -> assertThat(value).isIn(possibleValues)); // Doesn't fail
Optional.of("xyz").extractIfPresent(value -> assertThat(value).isIn(possibleValues)); // Fails

I'm not sure this is feasible, what would extractIfPresent() return if the value is not present ?
Whatever it is, the chained assertion does not know that this special value meant ignore any further assertions so it would be executed ...
Would your use case be addressed by assumptions ?
// the whole test is ignored if the assumption is not met
assumeThat(option).isPresent();

// only executed if the assumption was met
assertThat(option).hasValue(...);

I don't a better solution at the moment than using ifPresent as in your last examples (I assume you meant ifPresent as extractIfPresent is not part of the Optional api):
Optional.of("abc").ifPresent(value -> assertThat(value).isIn(possibleValues));

or maybe we could add our own ifPresent ...
assertThat(option).ifPresent(value -> assertThat(value).isIn(possibleValues));

thoughts ?

Thank you for sharing your thoughts on this.
I do not wish that the whole test is ignored if the assumption isn't met. Subsequent checks might be important. The template I suggest is rather unusual, I admit it. It's supposed to be used in helper methods which do not know whether the optional is empty or not.
What I was thinking is that the value returned by extractIfPresent would be either an assertion around the optional content if it is present, and a "fake", never-failing assertion in the case where the optional is empty.
The ifPresent solution is kind of nice, but I would wrap the value in the assertion already, so that:
assertThat(optional).ifPresent(assertion -> assertion.isIn(possibleValues));

Why? Because we're already in the "assert" part and that's already a good context, so the code could be shortened for readability. But on the other side, your solution might be better because it leaves the handling of the content in the hands of the test writer.
P.S. Indeed I meant using ifPresent in my examples instead of extractIfPresent. It was a bad copy paste when I wrote the issue.

I don't think adding ifPresent to the optional assertion api adds a lot of value as optional has a similar method that does the same job:
if we add ifPresent:
assertThat(optional).ifPresent(value -> assertThat(value).isIn(possibleValues));

if we don't:
optional.ifPresent(value -> assertThat(value).isIn(possibleValues));

The latter requires less typing and use the java api to achieve the same result.

The ifPresent solution is kind of nice, but I would wrap the value in the assertion already, so that:
assertThat(optional).ifPresent(assertion -> assertion.isIn(possibleValues));

@ogregoire are you thinking of assertion = assertThat(optional.get())?
There are 2 issues with this, first it does follow the same semantic as Optional#ifPresent which can confuse users (Optional#ifPresent accepts optional's value while OptionalAssert#ifPresent accepts an object assertion of optional's value), second is readability: assertion.isIn(possibleValues) does not look too good, it seems that the assertion is the a list of possible values while it's really about the object under test.
@ogregoire what do you think? do you have additional reasons to have an ifPresent assertion that I don't see?

Hello @joel-costigliola , thanks for coming back to this issue.
Yes, I mostly want to chain calls. I usually organize my assertions like below.
assertThat(methodThatReturnOptional())

	.withFailMessage("was null")
	.isNotNull()

	.withFailMessage("is not present")
	.isPresent()

	.extractIfPresent()

	.withFailMessage("wrong optional content")
	.isIn(acceptableValues);

I personnally prefer this above to the more complex:
var optional = methodThatReturnOptional();
assertThat(optional)

	.withFailMessage("was null")
	.isNotNull()

	.withFailMessage("is not present")
	.isPresent();

assertThat(optional.get()) // since we know that optional.isPresent() returns true

	.withFailMessage("wrong optional content")
	.isIn(acceptableValues);

Now if you believe that tests should not be written this way, I understand and you may close the ticket, but I believe that I'm not the only one doing this.

Chaining is a fair point, thanks for pointing it out.

We have a get method for optional assertions so your example can be written as
assertThat(methodThatReturnOptional())

	.withFailMessage("was null")
	.isNotNull()

	.withFailMessage("is not present")
	.isPresent()

	.get()

	.withFailMessage("wrong optional content")
	.isIn(acceptableValues);

you can even pass an InstanceOfAssertFactory to have strongly typed assertions, e.g:
assertThat(Optional.of("frodo")).get(as(InstanceOfAssertFactories.STRING)).startsWith("fro");

The only difference with extractIfPresent is that get would fail if the optional is empty.
Does that address your needs?

I've taken the time to think about it. And I must say that I'm concerned by the fact that get fails. Shouldn't it errors instead? Or silently do nothing for the rest of the chain? I'm a bit divised on this, but failing clearly seems the outlier here, though I have a slight preference for error (and I mean letting the Optional throw its own NoSuchElementException).
Also, the name is a bit surprising. While it's not surprising in regards or Optional itself, Optional is a container, and all your containers have extract... names for their respective operation that maps their contents to the outside. So, yes I can use get, but it's surprising. Maybe adding a synonym to extract or extractIfPresent would make it? Similarly, List and Map have get methods, but their counterpart in AssertJ is extract, why break that with the name get for Optional assertions?

We could have thrown a NoSuchElementException indeed, we'll discuss that with the team.
We used get to follow the Optional api get method, it's different from extract as extract takes a parameter to specify what to extract. The closest methods in iterables to get would be first(), last() or element(index).


formData prop isn't kept in sync with internal Form state in Form/Form.jsx

Describe the bug
The Form component is allowed to have a formData prop passed to it which contains the blocks and block layout for the form to be rendered on the page.  However, the current behaviour of this prop is that it is read in on component mount and copied to an internal state. The Form component then exclusively uses the internal state, ignoring any potential changes from the prop
To Reproduce
Steps to reproduce the behavior:

Render a Form component from @plone/volto/components/manage/Form/Form with a prop of formData
Change the formData prop that is passed to it by the rendering component
View the form on the web page

Expected behavior
The form is updated to reflect the new formData
Actual behavior
The form stays as it previously was
Options

Rename the prop to initialFormData to more accurately represent it's behaviour
Update the internal state updating logic to keep the prop and internal state synced

Would need to decide on how to handle conflicts in state between the prop and the internal state. For example, if the Form internal state is changed by using the editor, but the external prop is not updated with this information and an external

Would the prop take priority in conflicts?
OR would the internal state take priority in conflicts?
OR would we completely ignore internal state if a the formData prop is present

Can I be assigned this issue?

@aarishshahmohsin please read and follow Contributing to Plone and First-time contributors.

@JeffersonBledsoe It's hard to speculate about the right way to deal with conflicts without considering a specific use case. Is there a particular situation where you are anticipating updates to the prop while the component is active?

Let me have a look at the Form.jsx file. I'll remind you as soon. Also, if I remember correctly then GitHub also faced a similar issue with props in the past. I'll try to take some inspiration from those cases too. ^^

Thank you for elaborating on your objective to render a full blocks form in a control panel using the Form component. It's clear that keeping the form data in sync, especially when dealing with both the formData prop and the onChangeFormData callback, is crucial for your implementation.
Based on your description, it sounds like the synchronization between the external data (passed as formData prop) and the internal state of the form (which likely gets modified through user interaction and the onChangeFormData callback) is where the complexity lies.
A potential approach to address this could be to implement a mechanism within the componentDidUpdate method that checks for changes in the formData prop and intelligently merges these changes with the current state. This way, you ensure that the external updates are acknowledged while respecting the user’s interactions within the form.
Here's a rough sketch of what this could look like:
componentDidUpdate(prevProps) {
  if (this.props.formData !== prevProps.formData) {
    // Implement logic here to merge this.props.formData
    // with the current state, potentially using a utility
    // function that resolves conflicts between the two
    // while prioritizing user inputs where appropriate.
    this.setState({ formData: mergedFormData });
  }
}

As for handling conflicts between the prop and the internal state, a few strategies could be considered:

Prioritizing User Input: If user modifications are critical, you might choose to prioritize the internal state changes made through user interactions over external formData prop updates.

External Data as Source of Truth: Alternatively, if the control panel's data should always override user changes, the external formData updates can be given precedence.

Hybrid Approach: In some cases, a hybrid approach that merges changes from both sources might be the most user-friendly. This would require a more sophisticated merging strategy to ensure that the form reflects a combination of both user changes and external updates without losing context.

I understand that you're still working through some issues with this approach. Please feel free to share any specific challenges you encounter, and I'd be happy to brainstorm solutions with you. Keeping the form data in sync, especially in dynamic and interactive interfaces like yours, often requires a bit of trial and error to get right.


refactor(db_engine_specs): Removing top-level import of app

SUMMARY
Yak shaving at its finest. This PR started due to the fact that some of the database engine specs had the following import logic,
from superset import app

which was very problematic due to potential circular imports and app contexts which needed to be invoked. For testing we required magical logic like
from tests.test_app import app

prior to importing the actual engine spec.
This change ensures that the engine specs are decoupled from the Flask app and use the flask.current_app where necessary when the application configuration is required.
Note what started out as somewhat of a benign change quickly spiraled out of control in order to ensure that the tests passed as more and more code needed to be touched. The TL;DR is:

Even though this logic could further be improved, in my opinion the approach is in the direction of the north star, i.e., removing the dependency for tests.test_app and using the app pytest fixture instead.
The app fixture is scoped to the function which ensures that the tests are idempotent and thus the app.config neither i) needs to be mocked, or ii) reset upon completion of the test.
Migrates a subset of tests to be more pytest like so we can leverage the app fixture.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

@villebro any thoughts as to why CI may be failing? I've been wrangling with this for hours, descoping the impact of the change as I go. Note it seems like the test hardness is failing on tests/queries/api_tests.py though passes when run separately, i.e.,
tox -e py38-sqlite -- tests/queries/api_tests.py

which would possibly indicate some leakage, however I've gone over the change a number of times and can't see what the issue could be. For example I renamed the fixture I added from app to test_app to now app_ to make sure there's no conflict with the whole tests.test_app.app yuckiness which gets imported (in various ways) and is used in a number of fixtures.


Controlled to uncontrolled warning for Enable globals from all environments

Warning in the console (start:webpack version) after checking/unchecking Enable globals from all environments:
backend.js:6 Warning: A component is changing a controlled input of type checkbox to be uncontrolled. Input elements should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://fb.me/react-controlled-components
    in input (created by Environments)
    in label (created by Environments)
    in div (created by Environments)
    in div (created by Environments)
    in div (created by Environments)
    in div (created by Environments)
    in Environments (created by Configuration)
    in div (created by Configuration)
    in div (created by Configuration)
    in div (created by Configuration)
    in div (created by Configuration)
    in Configuration (created by App)
    in div (created by App)
    in div (created by App)
    in App

It doesn't show for Enable all rules

Hi @mdjermanovic, thanks for this issue.
I'm not familiar with React-- what is the impact or potential impact of this issue? (Not saying it isn't worth fixing-- just trying to learn.)

In this case, I don't know if there's any real impact, since it's a stateless component. But in a component with state, this could lead to bugs because the value of the input could be out of sync with the component's state (and it's a fair assumption the author wants the value of the input to reflect the state because the component is changing it at some point).
Confirmed - PR fix incoming.

There is a small impact on the screen only:  open this Demo Link (before the fix is merged) and then select & deselect all environments. The browser env will stay checked on the screen, but false internally (out of sync).
Same as it was with rules, but there was easier to spot this because the recommended rules were initially checked, while the envs are usually, not unless present in URL/local storage.

Thanks @kaicataldo and @mdjermanovic for the explanations!


[Duplicate of #3927]: Blockchain offered as a service

Article checklist
Pre-submission checks

Please ensure that you have only one open topic suggestion (issue) + in-review article (linked pull request) at a time. This will ensure that we complete the review process in a timely manner from inception to publishing

If you have not already, please go over our Resources Page for more tips and tricks on how to improve your overall technical writing so reviews are swifter, increase the chance of a payout and provide more value to our readers.

For first-time contributors and for more details on our submission guidelines, see our Contributing Guidelines.

Formatting and structure checks

[x] Have you used the correct folder and file structure? - see Contribution Guidelines

[x] Is your article properly formatted in Markdown? - see Github Markdown guide

[x] Have you used our preferred heading structure? - H3 (###) and up

[x] Does your article follow any of the suggested structure formats? - see example formats

[x] Is your article over 750 words? - Tool: Wordcounter.net

[x] Is the article you are submitting an in-depth and unique article? Does it go beyond what is in the official docs and what is covered in other blog sites. See these articles as examples.

[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.

[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.

[x] Have you included a hero image that is 600x400 pixels and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid - Grammarly
[x] Please place your article through a 3rd party plagiarism checker. We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide
[x] Have you checked your code runs correctly and you've highlighted all necessary dependencies for installation?
[x] Are the software programs and packages you're highlighting in your article up to date, using current versions and not deprecated?

Topic suggestion this closes

Remove the backticks and add the issue number below to link and close your Topic Suggestion (issue) when your article has been published (PR has been merged). See this video for more details.

This closes #3612

Finally, delete the article checklist notes in blockquotes and submit your PR. We look forward to reviewing your article.

@srishilesh I have updated the content to a more detailed article

Duplicate of #3927

Thank you very much i will let you know once am done
On Mon, Dec 6, 2021 at 4:34 PM Srishilesh P S @.***>
wrote:

@.**** requested changes on this pull request.
@crezyj https://github.com/crezyj
Great work. Your article has improved a lot from your previous PR.
I've made a few suggestions. Make sure to address all of them.
Since we're talking about some new technology, it would be great if you
add in some stats or overall market size, the key players of the BaaS
provider market. (I've mentioned these as suggestions). It'll definitely
help in improving the quality of the article.
Ping me when these changes are done.
Thanks.
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r762997793
:

@@ -0,0 +1,69 @@

+Blockchain as a Service.
+### Introduction

+Blockchain-as-a-service (BaaS) is the establishment and management of cloud-based networks by a third party for companies that develop blockchain applications. BaaS is based on the software as a service (SaaS) model and allows clients to use cloud services to build, host services, work on apps, and other blockchain-related functions. Clients benefit from BaaS because it allows for faster application development, lower maintenance costs, and faster adoption of Blockchain technology.
+### Prerequisites
It would be great if you could add a line explaining what are we gonna
cover in this article.
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r762998276
:

@@ -0,0 +1,69 @@

+Blockchain as a Service.
+### Introduction

+Blockchain-as-a-service (BaaS) is the establishment and management of cloud-based networks by a third party for companies that develop blockchain applications. BaaS is based on the software as a service (SaaS) model and allows clients to use cloud services to build, host services, work on apps, and other blockchain-related functions. Clients benefit from BaaS because it allows for faster application development, lower maintenance costs, and faster adoption of Blockchain technology.
+### Prerequisites
+To understand this article one should have:
+1. Good knowledge and understanding of how blockchain works.
+2. Good understanding of the basics of Blockchain.
+3. Basic information about applications of Blockchain.

+### Understanding  BaaS.
⬇ Suggested change
-### Understanding  BaaS.
+### Understanding BaaS

In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r762999198
:

@@ -0,0 +1,69 @@

+Blockchain as a Service.
+### Introduction

+Blockchain-as-a-service (BaaS) is the establishment and management of cloud-based networks by a third party for companies that develop blockchain applications. BaaS is based on the software as a service (SaaS) model and allows clients to use cloud services to build, host services, work on apps, and other blockchain-related functions. Clients benefit from BaaS because it allows for faster application development, lower maintenance costs, and faster adoption of Blockchain technology.
+### Prerequisites
+To understand this article one should have:
+1. Good knowledge and understanding of how blockchain works.
+2. Good understanding of the basics of Blockchain.
+3. Basic information about applications of Blockchain.

+### Understanding  BaaS.
+In a world of distributed applications, blockchain can provide to any type of application, including those centralized ones we’re all used to. Nowadays there are many types of blockchains each with its own characteristics which make them more or less suitable for use by large enterprises and small businesses alike. As such, cloud providers should embrace the technology and offer blockchain as a service to their customers.
Adding a paragraph about Blockchain - what is it? How it works?, would help
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r762999736
:

+Blockchain as a Service.

+### Introduction

+Blockchain-as-a-service (BaaS) is the establishment and management of cloud-based networks by a third party for companies that develop blockchain applications. BaaS is based on the software as a service (SaaS) model and allows clients to use cloud services to build, host services, work on apps, and other blockchain-related functions. Clients benefit from BaaS because it allows for faster application development, lower maintenance costs, and faster adoption of Blockchain technology.
+### Prerequisites
+To understand this article one should have:
+1. Good knowledge and understanding of how blockchain works.
+2. Good understanding of the basics of Blockchain.
+3. Basic information about applications of Blockchain.

+### Understanding  BaaS.
+In a world of distributed applications, blockchain can provide to any type of application, including those centralized ones we’re all used to. Nowadays there are many types of blockchains each with its own characteristics which make them more or less suitable for use by large enterprises and small businesses alike. As such, cloud providers should embrace the technology and offer blockchain as a service to their customers.

+Today, the technology behind blockchains is still rather complicated for most people to use regularly. For example, setting up a validator node for some public networks such as Ethereum can be a tedious process requiring some Linux knowledge. A large amount of time and effort must be spent to ensure the blockchain software has been configured correctly and is running smoothly without any unforeseen issues. If something goes wrong, one must troubleshoot the issue or look to the documentation for guidance.

+The same applies to some other public blockchains such as Bitcoin where full nodes require a server farm to verify transactions since it’s not possible for a single desktop machine to do the job. For enterprises, running a full node for each blockchain they want to use is often not feasible due to financial and resource constraints especially during the early phases of adoption. As such, it would be best if cloud providers started offering blockchain as a service where customers can quickly get up and running with their own nodes or a preconfigured virtual machine.
running a full node for each blockchain
Can you explain more about this?
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763000027
:

@@ -0,0 +1,69 @@

+Blockchain as a Service.
+### Introduction

+Blockchain-as-a-service (BaaS) is the establishment and management of cloud-based networks by a third party for companies that develop blockchain applications. BaaS is based on the software as a service (SaaS) model and allows clients to use cloud services to build, host services, work on apps, and other blockchain-related functions. Clients benefit from BaaS because it allows for faster application development, lower maintenance costs, and faster adoption of Blockchain technology.
+### Prerequisites
+To understand this article one should have:
+1. Good knowledge and understanding of how blockchain works.
+2. Good understanding of the basics of Blockchain.
+3. Basic information about applications of Blockchain.

+### Understanding  BaaS.
+In a world of distributed applications, blockchain can provide to any type of application, including those centralized ones we’re all used to. Nowadays there are many types of blockchains each with its own characteristics which make them more or less suitable for use by large enterprises and small businesses alike. As such, cloud providers should embrace the technology and offer blockchain as a service to their customers.

+Today, the technology behind blockchains is still rather complicated for most people to use regularly. For example, setting up a validator node for some public networks such as Ethereum can be a tedious process requiring some Linux knowledge. A large amount of time and effort must be spent to ensure the blockchain software has been configured correctly and is running smoothly without any unforeseen issues. If something goes wrong, one must troubleshoot the issue or look to the documentation for guidance.
setting up a validator node
Please explain more about this
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763000911
:

+### Example of application
+A good example of a cloud provider that offers blockchain as a service is Microsoft Azure, with options to use both Ethereum and BitCoin’s blockchains. The service costs about $13 per month for the most basic of configurations which is rather steep compared to some other VPS providers such as DigitalOcean who charge $5.

+In addition to setting up a node, blockchain as a service provider should also offer tools for the easy deployment of smart contracts so that customers and even third parties can create and deploy software in a decentralized way. It is also encouraged that these providers design their systems with an open API for easy integration into existing applications.

+One of the most promising blockchain as a service provider is IBM’s Bluemix which offers both Hyperledger Fabric and Ethereum blockchains or an alternative with their own Corda blockchain. This platform also provides all the tooling needed to develop smart contracts in many different languages. Although still in beta, this service looks promising and could be a serious contender to Azure if they continue to market the platform as successfully as they have been doing.

+It isn’t yet clear how blockchain as a service can be used by traditional enterprises but this shouldn’t stop these providers from offering their platforms since it will benefit them in the long run. Customers who are interested in using blockchain to improve their business models will flock to service providers offering this technology.

+As time goes by, the market for these services may grow enough to warrant the design of a decentralized cloud computing marketplace where anyone can use their idle resources to earn income. The future is now and now is the future.

+### Considerations When Choosing a Blockchain as a Service Provider
+Choosing a business vendor necessitates a great deal of thought and analysis, and in the case of BaaS, this will be even more challenging due to the lack of readily available standards and best practices in the market. While there are numerous things to consider when selecting a BaaS provider, there are a few general rules to follow.

+1. Prior experience/credentials in establishing blockchain infrastructure.
⬇ Suggested change
-1. Prior experience/credentials in establishing blockchain infrastructure.
+#### Prior experience/credentials in establishing blockchain infrastructure

In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763002379
:

+One of the most promising blockchain as a service provider is IBM’s Bluemix which offers both Hyperledger Fabric and Ethereum blockchains or an alternative with their own Corda blockchain. This platform also provides all the tooling needed to develop smart contracts in many different languages. Although still in beta, this service looks promising and could be a serious contender to Azure if they continue to market the platform as successfully as they have been doing.

+It isn’t yet clear how blockchain as a service can be used by traditional enterprises but this shouldn’t stop these providers from offering their platforms since it will benefit them in the long run. Customers who are interested in using blockchain to improve their business models will flock to service providers offering this technology.

+As time goes by, the market for these services may grow enough to warrant the design of a decentralized cloud computing marketplace where anyone can use their idle resources to earn income. The future is now and now is the future.

+### Considerations When Choosing a Blockchain as a Service Provider
+Choosing a business vendor necessitates a great deal of thought and analysis, and in the case of BaaS, this will be even more challenging due to the lack of readily available standards and best practices in the market. While there are numerous things to consider when selecting a BaaS provider, there are a few general rules to follow.

+1. Prior experience/credentials in establishing blockchain infrastructure.
+Make sure your BaaS provider has a track record of creating and Blockchain technology deployment and in a similar environment to the one you propose. If at all possible, inquire about qualifications or references from former clients.

+2. Commitment to Quality.
+Any enterprise application or software installation effort must prioritize quality. Blockchain is no exception. Inquire about the dedication to quality, process, and standards of the vendor.
How do we ensure the quality of a service?
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763003451
:

+3. Affirmation of safety.
+Look for any security flaws in the proposed implementation strategy. It's critical because even minor flaws can have serious consequences. When it comes to distributed ledgers, it is critical to plan for the most dependable results.
+4. Operation System Selection.
+Examine the previous installations of cloud-based services and the system they operate on that are similar to yours by the vendor. You must also guarantee that the new Blockchain installation works in tandem with your existing system.

Usability.

+Ensure Blockchain-enabled systems and processes you're proposing are simple to use and implement. After all, you don't want a system that's difficult to use or navigate for your staff, since this could lower adoption rates and hurt your bottom line.

Prices and Supporters.

+Every customer desires to pay Cost of that which a BaaS provider provides. Examine alternatives of pricing as well as the deploying support and modalities carefully. Paying for that which adds biggest value to your company.

+### Conclusion
+“Blockchain as a service (BaaS) is emerging as one of the most dynamic fields in technology, according to Amazon Web Services (AWS). BaaS solutions are designed to provide organizations across various business verticals with greater agility and lower costs by offering blockchain-based backends that cut out the middleman.”

Add a conclusion from this article.
Mention the key takeaways, summarize what was said above
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763003694
:

+- Dhillon, V., Metcalf, D., & Hooper, M. (2021). Blockchain-as-a-Service. Blockchain-Enabled Applications, 325-334. doi:10.1007/978-1-4842-6534-5_14

+- Crepax, T., & Rao, S. P. (2020). Blockchain in the Cloud: A Primer on Data Security for Blockchain as a Service (BaaS). SSRN Electronic Journal. doi:10.2139/ssrn.3766900
You could make them hyperlinks - use markdown formatting
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763003812
:

+About the Author:

+I'm a blockchain enthusiast who has been involved in this space since 2016. I have a background in both software engineering and marketing with over 2 years of experience in each field.

+Donations: I'm happy to answer questions and help out if I can, but I don't do a great job of staying on top of my inbox. If you need something from me please email @.*** or
⬇ Suggested change
-About the Author:

-I'm a blockchain enthusiast who has been involved in this space since 2016. I have a background in both software engineering and marketing with over 2 years of experience in each field.

-Donations: I'm happy to answer questions and help out if I can, but I don't do a great job of staying on top of my inbox. If you need something from me please email @.*** or

In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763006674
:

+2. Good understanding of the basics of Blockchain.

+3. Basic information about applications of Blockchain.

+### Understanding  BaaS.
+In a world of distributed applications, blockchain can provide to any type of application, including those centralized ones we’re all used to. Nowadays there are many types of blockchains each with its own characteristics which make them more or less suitable for use by large enterprises and small businesses alike. As such, cloud providers should embrace the technology and offer blockchain as a service to their customers.

+Today, the technology behind blockchains is still rather complicated for most people to use regularly. For example, setting up a validator node for some public networks such as Ethereum can be a tedious process requiring some Linux knowledge. A large amount of time and effort must be spent to ensure the blockchain software has been configured correctly and is running smoothly without any unforeseen issues. If something goes wrong, one must troubleshoot the issue or look to the documentation for guidance.

+The same applies to some other public blockchains such as Bitcoin where full nodes require a server farm to verify transactions since it’s not possible for a single desktop machine to do the job. For enterprises, running a full node for each blockchain they want to use is often not feasible due to financial and resource constraints especially during the early phases of adoption. As such, it would be best if cloud providers started offering blockchain as a service where customers can quickly get up and running with their own nodes or a preconfigured virtual machine.
+### Reasons Companies choose BaaS?

Businesses that use Blockchain as a Service acquire access to qualified Blockchain developers, procedure and management specialists, the whole infrastructure from cloud service provider for developing, programming, and deploying, not worrying about budget costs for any other operation that would cost them more.

In most situations, a reputable BaaS partner is a source of practical expertise and knowledge that can improve the security of the systems. It considerably reduces the dangerous cases that might otherwise be encountered if it were created in-house

+### Example of application
+A good example of a cloud provider that offers blockchain as a service is Microsoft Azure, with options to use both Ethereum and BitCoin’s blockchains. The service costs about $13 per month for the most basic of configurations which is rather steep compared to some other VPS providers such as DigitalOcean who charge $5.
Looks like Azure Blockchain services has been stopped since Sept 2021, and
was replaced by Consensys Quorum.
Azure Blockchain Service was retired on 10th September, 2021. Customers
are recommended to use ConsenSys Quorum Blockchain Service as a direct
replacement, which offers expanded features and more flexible deployment
options for managed blockchain networks.
https://azure.microsoft.com/en-in/solutions/blockchain/#related-products
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763007614
:

+2. Commitment to Quality.
+Any enterprise application or software installation effort must prioritize quality. Blockchain is no exception. Inquire about the dedication to quality, process, and standards of the vendor.

+3. Affirmation of safety.
+Look for any security flaws in the proposed implementation strategy. It's critical because even minor flaws can have serious consequences. When it comes to distributed ledgers, it is critical to plan for the most dependable results.
+4. Operation System Selection.
+Examine the previous installations of cloud-based services and the system they operate on that are similar to yours by the vendor. You must also guarantee that the new Blockchain installation works in tandem with your existing system.

Usability.

+Ensure Blockchain-enabled systems and processes you're proposing are simple to use and implement. After all, you don't want a system that's difficult to use or navigate for your staff, since this could lower adoption rates and hurt your bottom line.

Prices and Supporters.

+Every customer desires to pay Cost of that which a BaaS provider provides. Examine alternatives of pricing as well as the deploying support and modalities carefully. Paying for that which adds biggest value to your company.

It would be great if we could get a glimpse of few products under any BaaS
provider.
Explain what does it do.
Also, explaining a little about the overall BaaS market would also help.
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763001144
:

+### Example of application
+A good example of a cloud provider that offers blockchain as a service is Microsoft Azure, with options to use both Ethereum and BitCoin’s blockchains. The service costs about $13 per month for the most basic of configurations which is rather steep compared to some other VPS providers such as DigitalOcean who charge $5.

+In addition to setting up a node, blockchain as a service provider should also offer tools for the easy deployment of smart contracts so that customers and even third parties can create and deploy software in a decentralized way. It is also encouraged that these providers design their systems with an open API for easy integration into existing applications.

+One of the most promising blockchain as a service provider is IBM’s Bluemix which offers both Hyperledger Fabric and Ethereum blockchains or an alternative with their own Corda blockchain. This platform also provides all the tooling needed to develop smart contracts in many different languages. Although still in beta, this service looks promising and could be a serious contender to Azure if they continue to market the platform as successfully as they have been doing.

+It isn’t yet clear how blockchain as a service can be used by traditional enterprises but this shouldn’t stop these providers from offering their platforms since it will benefit them in the long run. Customers who are interested in using blockchain to improve their business models will flock to service providers offering this technology.

+As time goes by, the market for these services may grow enough to warrant the design of a decentralized cloud computing marketplace where anyone can use their idle resources to earn income. The future is now and now is the future.

+### Considerations When Choosing a Blockchain as a Service Provider
+Choosing a business vendor necessitates a great deal of thought and analysis, and in the case of BaaS, this will be even more challenging due to the lack of readily available standards and best practices in the market. While there are numerous things to consider when selecting a BaaS provider, there are a few general rules to follow.

+1. Prior experience/credentials in establishing blockchain infrastructure.
You can make similar changes for the below sub-headings
In content/articles/blockchain-offered-as-a-service/index.md
https://github.com/section-engineering-education/engineering-education/pull/5293#discussion_r763004205
:

+About the Author:

+I'm a blockchain enthusiast who has been involved in this space since 2016. I have a background in both software engineering and marketing with over 2 years of experience in each field.

+Donations: I'm happy to answer questions and help out if I can, but I don't do a great job of staying on top of my inbox. If you need something from me please email @.*** or
We wouldn't need this here, since we'll be having this under author info
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/section-engineering-education/engineering-education/pull/5293#pullrequestreview-823940408,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVNOJHNA3AP7IR5LOCG4N6LUPS3WNANCNFSM5JBFL34Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

@crezyj
Since I've suggested some major changes for improvement. Let's close this PR for now. You can still work on these changes, on your forked repository.
On addressing all the suggestions, create a new PR and ping me.
Let me know once you're done with the changes.

@crezyj
Just checking if there are any updates on the suggestions?

Hi @crezyj ,
Just checking out if you need any help.


Adding support for TypeScript

This PR includes types for the latest updated package, and extends rollup to copy the types to the dist folder during build. I did however experience a series of updates to the package-lock.json file, which I suspect is due to me running a later version of Node.js.
I am installing Node.js v 14.21.3 now - and wil ltry to install package again hoping it will resolve it.

After installing Node.js v 14.21.3, the package-lock.json file simply got added to, so now it makes more sense. Should be ready for merge.

@imCorfitz add these two secrets in ur repository

The integration tests run on the context of ur repository, and since secrets aren't shared between repositories, ur jobs are running with empty env vars:

Great - I performed a local test and everything also worked. (Used Photoshop to replace my credentials).

I have added the secrets for future updates. Cheers.

ts types were packaged. Thank you @imCorfitz


Claimed escrow payments are appearing as reclaimable

Expected Behavior
When an escrow transaction is claimed by the recipient, the sender should not see the escrow payment as reclaimable.
Current Behavior
Claimed escrow payments are appearing as reclaimable.
Context: https://celo-org.slack.com/archives/C018VLA3YAK/p1613602576385500

Should be part of celo-org/celo-monorepo#6999

Escrow payments removed in https://github.com/valora-inc/wallet/pull/3303.


Windows 10 Pro 10.0.19045.2965 not supported

Cannot find solution to 'not supported' for this 22H2 OS version.  Cannot locate/identify rdpwrap.ini solution or replacement code for termsrv.dll approach.

Cannot locate/identify rdpwrap.ini solution

Attach your zipped termsrv.dll and screenshot of RDP_CnC or RDPConf

Duplicate of https://github.com/stascorp/rdpwrap/issues/2180

Thank you for your support.
Chas
Chas M White, MS - President
White Associates Research & Development, LLC
Melbourne, FL USA 32940
Global TN +1<PHONE_NUMBER> (Mobile & WhatsApp)
eMail<EMAIL_ADDRESS>@.*** http://www.linkedin.com/in/chaswhite Join me on LinkedInhttps://www.linkedin.com/in/ChasWhite
From: sebaxakerhtc @.>
Sent: Friday, 2 June, 2023 02:24
To: stascorp/rdpwrap @.>
Cc: ChasNet @.>; Author @.>
Subject: Re: [stascorp/rdpwrap] Windows 10 Pro 10.0.19045.2965 not supported (Issue #2236)
Cannot locate/identify rdpwrap.ini solution
Attach your zipped termsrv.dll and screenshot of RDP_CnC or RDPConf
—
Reply to this email directly, view it on GitHubhttps://github.com/stascorp/rdpwrap/issues/2236#issuecomment-1573217901, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BAHKDQL6JAEZIV6FJQ5OJ73XJGBIXANCNFSM6AAAAAAYXOWZJY.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

This resolved my problem.  Thanks!
Sent from my iPhone
Mobile : +1<PHONE_NUMBER>
On Jun 2, 2023, at 02:35, sebaxakerhtc @.***> wrote:

Duplicate of #2180https://github.com/stascorp/rdpwrap/issues/2180
—
Reply to this email directly, view it on GitHubhttps://github.com/stascorp/rdpwrap/issues/2236#issuecomment-1573227083, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BAHKDQOS4SGOMLXGAXBGA4TXJGCTXANCNFSM6AAAAAAYXOWZJY.
You are receiving this because you authored the thread.Message ID: @.***>

This resolved my problem.  Thanks!
Sent from my iPhone
Mobile : +1<PHONE_NUMBER>
On Jun 2, 2023, at 02:35, sebaxakerhtc @.***> wrote:

Duplicate of #2180https://github.com/stascorp/rdpwrap/issues/2180
—
Reply to this email directly, view it on GitHubhttps://github.com/stascorp/rdpwrap/issues/2236#issuecomment-1573227083, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BAHKDQOS4SGOMLXGAXBGA4TXJGCTXANCNFSM6AAAAAAYXOWZJY.
You are receiving this because you authored the thread.Message ID: @.***>


How do I add new templates locally?

The stack guide says to look at this repo to add more templates. But the stack-templates readme doesn't explain how to add templates locally. How do you?

Hi,
Currently there is no support for local templates. However, (it is planned for the future)[https://github.com/commercialhaskell/stack/issues/783]
For the time being, making pull requests to this repository is how new templates have been being added.

commercialhaskell/stack#1095 landed a few days ago.

So this can be closed :)


Fix localize CupertinoDatePicker for Korea locale

Column order issue found when using CupertinoDatePickerMode.time in CupertinoDatePickerMode.
CupertinoDatePicker(
  mode: CupertinoDatePickerMode.time,
  onDateTimeChanged: (value) {},
  initialDateTime: DateTime.now(),
)

Currently, the code is running:: DatePickerDateTimeOrder.date_time_dayPeriod

The following is the result of DatePickerDateTimeOrder.date_time_dayPeriod type

10 | 20 | 오전
11 | 21 | 오후

Modifications are needed as follows:: DatePickerDateTimeOrder.date_dayPeriod_time

The following is the result of DatePickerDateTimeOrder.date_dayPeriod_time type

오전 | 10 | 20
오후 | 11 | 21

Hi @JosephNK. It looks like there's no changes with the commits you included in this PR? If this is still a work in progress, can this PR be converted into a draft or closed to clear up the PR queue?

Hello @JosephNK. Thank you for the contribution! As this PR hasn't been updated in a while, I'm going to close it to clear up our PR queue. Please feel free to reopen it if you are able to come back to it.

@MitchellGoodwin I looked at the Ci logs.
I am getting error only on Linux analysis. can you help me?


Suggest removal of the mod_python command

I discovered a mod_python command installed in /usr/bin and that it was a bit broken. I started to fix it to work with python 3.12 and recent versions of apache2 (the attached diff) but found that it depended on python's execfile() function which is a relic of python 2 - it was removed in python 3.0. Since it could never have worked properly with python 3, and no one has complained about it, I wonder if it might be better just to remove it altogether.
If you do want to keep it the attached diff got it working again for me - though I think it could probably do with a bit more work.
What do you think?
fix_mod_python_cmd.diff.gz

I'm not ready to concede that it cannot be made to work with python 3 :)
I'll keep this issue around maybe some day we'll get it fixed or determine that it should be deprecated.

Oh, it can definitely be made to work with python 3. The patch I attached fixes that :) Or at least it "fixed it for me" on my particular setup (vanilla Ubuntu noble installation). I didn't spend any more time improving it beyond compatibility fixes because I wasn't sure if it would remain.
The question was only how useful the script is in practice if no one's noticed it was broken in python 3. I don't know if its a case of people not using it because it's broken, or people not noticing it's broken because they aren't using it.
Anyway, you are probably right to keep it because no doubt someone somewhere is using it and will complain if it disappears.


Https cloning repository from link

hi, nice Extension!
Could you add support for HTTPS cloning from link vscode:stateful.runme... ? It only support git@ ssh for now?

Hey, there @RadFromOrange! Thanks for the request.
Luckily we already support HTTPS repo references besides SSH-based ones. I've added a blurb to the docs which you can find here please: https://docs.runme.dev/features#run-with-runme-deep-linking.
Essentially you can use either SSH or HTTPS notations for the repository parameter. In the above's example just replace git@github.com:stateful/blog-examples.git with https://github.com/stateful/blog-examples respectively.
Thank you for using Runme and please consider joining Runme's discord where other users and the team usually congregate: https://discord.gg/runme

thanx ,i was missing the ending .git


SSL enable plugins, docs and downloads subdomains

The subdomains are currently S3 buckets, so we'll need to use something like cloudflare [1] or move to digital ocean with caddy.
[1] https://support.cloudflare.com/hc/en-us/articles/200168926-How-do-I-use-Cloudflare-with-Amazon-s-S3-Service-

@bradrydzewski Fastly hosts open source projects for free and they terminate TLS. Lots of projects are fronted by them, e.g. Hashicorp sites.
If you're interested, we can help you our setting up the service.

Fastly is the way to go if they are offering! We are very satisfied users.

Downloads are now served from github releases which is https

@bradrydzewski Awesome! Sounds like it might be safe to close this?


Count rules inside media query and more neat output.

Resolving this issue: https://github.com/phamann/grunt-css-metrics/issues/8
More neat output

Hey @orlinbox thanks for this. I no longer maintain this repo and instead have written: https://github.com/guardian/grunt-asset-monitor

Are you looking for a new maintainer? Or should this be considered abandoned.


More tolerance towards meanless spaces.

Fixes https://github.com/sandrolovnicki/pLam/issues/11
also
Fixes https://github.com/sandrolovnicki/pLam/issues/10

Nice. I will check this and merge later today


restores python 3.7 compatibility in automated tests

restores python 3.7 compatibility in req2flatpak's automated tests
follows from @real-yfprojects code review of #25 (thank you!)
refs #5

The tests run successfully again using py37 (tested locally).
Instead of merging directly myself (as I did with my previous pull requests), it would be better to rely on mutual peer reviews... So I assigned this PR to you @real-yfprojects... hoping that's ok?, thanks in advance and with best regards, Johannes

Instead of merging directly myself (as I did with my previous pull requests), it would be better to rely on mutual peer reviews... So I assigned this PR to you @real-yfprojects... hoping that's ok?

I am a proponent of a thorough review process although it takes quite some time to properly review a PR.

What merge strategy do you prefer? I like a mostly linear commit history.

Consider using mypy

Yes, thank you for pointing this out. To be honest, I like mypy, but I had not set it up yet. (I like your initiative in #26 to add mypy to the linters).

What merge strategy do you prefer? I like a mostly linear commit history.

Me too, especially on the main branch. That's why I like to squash-and-merge branches into main.

That's why I like to squash-and-merge branches into main.

Squashing is great but I would go a step further and do an interactive rebase - only squashing commits that actually belong together as well as rebasing branches on to new changes instead of merging changes from a main branch into it. This allows fast forwarding the main branch to the feature branch when merging, preserving commit signatures and avoiding merge commits.

yes, I also like interactive rebasing locally. (if on the other hand a feature branch has been pushed already, I tend to avoid rebasing because it would rewrite published history).


fix(ngAnimate): Change to falsy value in addClass and removeClass

Change addClass & removeClass to pass in string to setClass so
$$setClassImmediately does not trigger due to arrays always being
truthy

This fixes #11268 .

Closing, this does not look quite right - need to think some more.


Unable to delete Alexa Media Player integration

Describe the bug
I no longer use Alexa devices, and I want to clean up my HA instance to get rid of the 60+ entities exposed through the Alexa Media Player integration. I have long ago marked the integration as "disabled", but I am unable to delete it.
To Reproduce

In HA, go to Settings -> Devices and Services -> Integrations

Click on the three dots on the Alexa Media Player integration and select Delete

Nothing happens. Go to Settings -> System -> Logs and see error:

Expected behavior
The Integration is deleted
Screenshots
See above
System details

Home-assistant (version): 2023.1.2
alexa_media (version from const.py or HA startup): 4.5.0 (also had this issue when I was previously on a 3.x version)
alexapy (version from pip show alexapy or HA startup): Initially this command said that the package was not found. So I ran pip install alexapy, it installed, I rebooted HA, and now pip show alexapy reports version 1.26.4
Amazon 2FA is enabled (y/n). Yes

Logs
Please provide logs.
Each time I attempt to delete the integration, this is what appears in the logs:
Logger: aiohttp.server
Source: custom_components/alexa_media/__init__.py:16
Integration: Alexa Media Player ([documentation](https://github.com/custom-components/alexa_media_player/wiki), [issues](https://github.com/custom-components/alexa_media_player/issues))
First occurred: 11:17:02 AM (1 occurrences)
Last logged: 11:17:02 AM
Error handling request

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 81, in ban_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle
    result = await result
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 86, in delete
    result = await hass.config_entries.async_remove(entry_id)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 968, in async_remove
    await entry.async_remove(self.hass)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 569, in async_remove
    component = integration.get_component()
  File "/usr/src/homeassistant/homeassistant/loader.py", line 725, in get_component
    cache[self.domain] = importlib.import_module(self.pkg_path)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/alexa_media/__init__.py", line 16, in <module>
    from alexapy import (
ModuleNotFoundError: No module named 'alexapy'

Additional context

I recently updated Alexa Media Player in HACS and rebooted HA in an attempt to resolve the problem. No change.
I manually installed alexapy via an SSH session (see above under System Details), rebooted, still got the same error

Make sure you do pip install instead the HASS container. The fact you're still seeing no module found is showing it's not available. Another option may be to manually install alexapy in /config/, perform the delete, and then delete alexapy.
HA should automatically install all dependencies if you try to add the integration a second time. The add action should force it to install any missing dependencies. You shouldn't have to actually log in.

HA should automatically install all dependencies if you try to add the integration a second time. The add action should force it to install any missing dependencies.

Heh, that did it. I clicked in Integrations to add the integration again, it spun for a few seconds, then I canceled out of the new integration setup and was able to delete the existing one. Never occurred to me. Thanks!


Possible to trigger headroom--top earlier?

Hey, this is a question not an issue:
I'm wondering, when scrolling up towards the top of the page, if it's possible to trigger headroom--top earlier than the actual top of the screen? For the specific use case I've got it'd be great if I could do that.
Thanks so much!

The offset option should do this

Eg. Setting offset to 200 will trigger top at 200px from top

Sorry didn't have notifications turned on. Thank you very much!

Ok, can't seem to get the offset to work. Should it look like this?
headroom.init({
		"tolerance": 1,
		"offset": 300,
	});


Error executing action create on resource 'private-chef_pg_database[opscode-pgsql]'

Copied from https://github.com/chef/chef/issues/2715
Filing this under chef-server, since this appears to be an install failure.
More detail would be welcome, including:

What command was being run. Was this an install?
What version of chef-server
What OS

@sridhar-ars veera1989 Your bug has been moved here.

@veera1989 your bug was moved here

Error reported in other ticket:
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
execute[create_database_opscode-pgsql] (/opt/opscode/embedded/cookbooks/private-chef/providers/pg_database.rb line 13) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of createdb --template template0 --encoding UTF-8 opscode-pgsql ----
STDOUT:
STDERR: createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
---- End output of createdb --template template0 --encoding UTF-8 opscode-pgsql ----
Ran createdb --template template0 --encoding UTF-8 opscode-pgsql returned 1

Also, in chef#2714:

I get the below errors when i try to install chef server on RHEL ec2 instance

@sridhar-ars @veera1989
I ran into an issue very similar to this and found two things wrong:

/var/log was missing the group x bit which prevented searches further down the directory tree. Adding the bit allowed svlogd to open /var/log/opscode/postgresql/9.2/current

$: chmod 755 /var/log

The mode on /tmp missing the w bit which is required for postgresql to open a socket.
$: chmod 777 /tmp

Hope that helps

I had the same issue installing on a testing box that also happen to have an omnibus installed gitlab already on the box. In my case the clash was the copy of postgresql that Gitlab installed already having the socket in place in /tmp. When Chef tried to reconfigure, it saw the socket, but wasn't able to use it because it was trying to delete the socket file owned by the other copy of postgresql.
I worked around it by editing each project's copy of postgresql's config to put their socket file in /tmp/gitlab and /tmp/chef respectively, and then re-running "chef-server-ctl reconfigure"  I'm sure the better option is to setup a single copy of postgres and make both projects use it, but I was more interested in getting both applications running since it's all for testing anyway.

Similar to https://tickets.opscode.com/browse/CHEF-4134, I solved this by changing shm settings. From @kelvk:
kernel.shmmax =<PHONE_NUMBER>72
kernel.shmall = 134217728

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty
$ dpkg-deb  -I chef-server-core_12.0.8-1_amd64.deb
 new debian package, version 2.0.
 size 459863754 bytes: control archive=1486199 bytes.
     325 bytes,    13 lines      control
 6497824 bytes, 56476 lines      md5sums
    1536 bytes,    47 lines   *  postinst             #!/bin/bash
     190 bytes,     8 lines   *  postrm               #!/bin/bash
 Package: chef-server-core
 Version: 12.0.8-1
 License: unknown
 Vendor: Omnibus<EMAIL_ADDRESS> Architecture: amd64
 Maintainer: Chef Software, Inc.
 Installed-Size: 1182820
 Conflicts: private-chef
 Replaces: private-chef
 Section: misc
 Priority: extra
 Homepage: https://www.chef.io
 Description: The full stack of chef-server

It might be useful to

have a preflight check to check for
a. Postgres port available
b. shmmax settings
c. permissions
when we can check if Postgresql can be connected to and give an appropriate message if not.
(leaning towards 2)

Closing out in favor of https://github.com/chef/chef-server/issues/4


Join when starting a server span with a parent

This replicates the same behavior as exists in zipkin-go-opentracing.
We support adding "span.kind" before a span is started. By doing so, we
can properly decide whether to join a span or start a remote child.
This rewrites the unit tests so that we can ensure dependency links
work, too. The tests were taken from #27.
Closes #27

It looks good :+1:


new_transformer

I added a transformer called observed. This version requires new version of firepit. I have added a new function to firepit/sqlstorage, which is used when the new transformer is applied in Kestrel.

Looks like this is still not based on the latest develop branch, hmm...


Raster images can't be loaded from data

Because SVGs mostly contain base64 encoded raster images; image data needs to be fed into capypdf as data and not as a filename.
The current code is extremely convoluted and I don't think is amenable to being changed into accepting data instead of filenames.
Do we need new functionality to handle image data?

OK, so the process here would be...
Read base64 encoded PNG, decode the PNG into pixel data, compress that data with zlib, send that pixel data to capypdf? So it ends up in the pdf as a BMP?
What happens if it's a Jpeg? Do we end up double encoding it? What if it's a CMYK jpeg, does the pixel data support 4, 5 channels with or without transparencies in the PNG streams?
The data in an SVG is literally the PNG, JPEG or TIFF file data, not pixel data. Though I can decode and re-encode, I just think we'll lose a lot of consistency when doing that.

OK looking deeper at the structures, it looks like png and tiff data would be handled as raw pixels and jpegs would be embedded as jpeg streams?

Passing in png files directly is not supported ATM. We should do that. I did the current implementation first, because I assumed that most people already have the pixel data in memory for display purposes.

does the pixel data support 4, 5 channels with or without transparencies in the PNG streams?

All of that should be supported eventually. Currently it is not.

Read base64 encoded PNG, decode the PNG into pixel data, compress that data with zlib, send that pixel data to capypdf?

You don't have to compress it, CapyPDF does it automatically. That was more of if you already have it in zlib compressed form or want to compress it yourself for whatever reason (i.e. running a custom zlib encoder and/or doing all the compression beforehand in parallel).

The problem with using display data is that it's not guaranteed to be in the right color space. Cairo pixbufs will negate CMYK data for example, let alone other RGB icc profiles.
What I'm hoping for is being able to get whatever is in the SVG, into the PDF file with only syntactical conversions. The goal is to do conversions like color, raster formats, filters, fonts etc in the GUI, inside SVG before we even get to PDF.
The raster API looks to be a bit messy, should I start thinking of a new way of providing data as PNG, JPEG and TIFF streams directly?

I just pushed some refactoring work on this. You might want to look at that first. It should be a case of adding a new function like "load_image_from_memory" and making it call the corresponding function in imagefileops.cpp.
Note that I have not actually tested if those code paths work (nor have I formally proven them correct).


compile on MinGW/MSYS2

Hello,
I'm reporting to you the problems I encountered when trying to compile libkml from your repo in MinGW/MSYS2, and how I managed to fix or workaround them:

add strptime.c from NetBSD, which provides the strptime function
add gitattributes to testdata folder, for checking out text files with Unix line endings
patch installation of CMake and pkgconfig configuration files for MinGW
patch build_target macro to link libraries without the LINK_INTERFACE_LIBRARIES specifier (due to reasons unknown to me, it was giving undefined references when linking kmldom)
patch super_find_package macro to propagate some result variables to the parent scope (needed for zlib, strangely)
link curlfetch from the hellonet example as static library and exchange the link order of the tests
apply similar patch for the linking of the helloworld example
remove inclusion of termios.h from several source files in the hellonet example (prompt.h already provides what is necessary)
implement disabling/enabling of echo in standard input on Windows in the hellonet example (see prompt.h)
set properties on some source files to suppress specific warnings
define symbol in unzip.c to suppress warnings about different data types in function calls
use the correct implementation of strptime function in date_time.cc
fix the use of wide strings in file_win32.cc (was not explicitly necessary)
define strncasecmp in string_util.cc only if it was not previously defined
patch the FilenameToUri function in uri_parser.cc to depend on the file path itself instead of on the platform
ad hoc implementation of getenv in google_doc_list.cc was not needed
specify the minimum required version of Python, so as to choose Python 2, because Python 3 complained about the syntax of the command used to obtain the installation directory
fix initialization of static variable in Testb2a_hex from string_util_test.cc
fix the group name of the convenience tests in the call to build_test (was regionator, which caused some weird errors about overwriting object files)
provide setenv function in google_maps_data_test.cc
select the correct expected number on TestComputeBboxLookAt depending on architecture
select the correct path strings on some tests of KmzTest, to account for the path separator on each platform
[updated] add 64-bit specific compilation flag for the python bindings on windows (it was giving undefined reference to _imp __Py_InitModule4 on appveyor in the MSYS2 project)

Thanks for this PR for support on mingw. The bulletin list really was helpful when looking at this code. I really appreciate your effort. I would like to find the problem in python2 vs python3 about installation directory and see if we could support both or python3.
Everything else looks good and ready to merge.

@rashadkm thanks for the feedback! I already made some adjustments to reflect your queries. I also reverted the changes in file_win32.cc, because I thought best to keep the Unicode support.
Regarding Python 3, I had to add a compile option to suppress warnings about "missing-field-initializers". However, I could not make the tests work with Python 3. They say No module named 'kmlbase' or No module named 'kmldom', and I did not know how to solve that :(

Thanks.


Autocomplete

Autocomplete "complete -A hostname   ssh rsh rcp telnet rlogin r ftp ping disk" don't work with custom hosts file, can fix this?

HI t3mpo,
thanks for asking this question. I looked into issue and it seems the autocompletion for host-names is handled by bash internally via hostname action. It's thankfully configurable, please add following in your .bashrc, it should do the trick:
export HOSTFILE=$HOME/.hosts


Outdated info to add table from existing connections in AS Tabular

https://docs.microsoft.com/en-us/analysis-services/tabular-models/add-a-table-ssas-tabular
says hit the Existing Connections button from the Model menu in SSDT.
But that's not there anymore; to add tables from existing connections you right click on the data source in the Model Explorer and hit "Add New Tables"

@kthejoker - Thanks for your comment. This article has now been updated. Unfortunately, documentation is not always updated right away when there are changes in the tools.


If the server url contains .do when not VIYA it gets stripped

sas.domain.com - will get broken by the replace() function.
Example
sasomain.com
https://github.com/sasjs/adapter/blob/60d3ff2d3904c721446cb442f96528ad7c9c159e/src/auth/AuthManager.ts#L242
https://github.com/sasjs/adapter/blob/60d3ff2d3904c721446cb442f96528ad7c9c159e/src/auth/AuthManager.ts#L351

For reference, this should be explicitly for serverType "SAS9" (as not relevant for "SASJS")


add lz4json

Description of changes
Added lz4json, a package useful to convert automatically-backed up mlz4json files from Firefox, such as bookmarks.
Things done
I created a minimal derivation.

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[X] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

<!--

I tested this on linux and it works fine!

Remove with lib;.
Merge commits into two:

add yourself to maintainers.nix
add lz4json package

Other than that looks good to me.

So, I've squashed the commits into two in a branch on my fork (here) but I don't really know how to rebase/update this PR with those changes and replace the previous ones. Should I open a new one or is it possible to do it within this one? Many thanks!

You can force push to afermg:master branch since you only have your change. So there won't be any damage.

I meant to force push sort-commits branch to master.

And probably need to run nixfmt ./pkgs/by-name/lz/lz4json/package.nix (and those changes are ammended to the commit which adds a package.) to make CI happy. So this PR is ready!

My bad. It should be fixed now.

you haven't run nixfmt pkgs/by-name/lz/lz4json
I can still get formatting error.
Run that and squash into the commit adding the package.

Sorry! Have been a bit busy. Will do ASAP

It is still failing formatting despite the tool not showing any change. Any ideas? Thanks
❯ nix-shell -p nixfmt --command 'nixfmt pkgs/by-name/lz/lz4json/package.nix'
❯ git status
On branch fmt
nothing to commit, working tree clean

Use nixfmt-rfc-style package instead

Formatting is right but, I think you might have formatted the wrong (previously fixed) code? So formatting is correct but all change requests above still apply.

Result of nixpkgs-review pr 327009 run on x86_64-linux 1

1 package built:

lz4json

Yep, looks good to me.

@drupol Any reason for closing it?

Hello,
Yes, more than one.

I have the feeling that this PR is no more active, some comments are not addressed since a while.
The PR title is wrong, indicating a lack of interests into merging it.

Feel free to reopen it if you feel I made a too quick move, I'll be glad to get this merged actually.
Move your PR to draft mode if it's not ready yet so we don't review them in the meantime.

Hello,

The only comment not addressed in code or reply is the license one. That's my bad, I assumed it was a direct edit. I'll accept the suggestion once it is open once again.
How is the PR title wrong? It would seem to me straightforward enough.

Thanks!

The button to reopen is on the bottom left, below the comment box.

Some more suggestions. I can merge after you apply them.
diff --git a/pkgs/by-name/lz/lz4json/package.nix b/pkgs/by-name/lz/lz4json/package.nix
index de10a46c78e8..95a588a09f97 100644
--- a/pkgs/by-name/lz/lz4json/package.nix
+++ b/pkgs/by-name/lz/lz4json/package.nix
@@ -7,9 +7,9 @@
 }:

 stdenv.mkDerivation {
-
   pname = "lz4json";
   version = "2-unstable-2019-12-29";
+
   src = fetchFromGitHub {
     owner = "andikleen";
     repo = "lz4json";
@@ -17,20 +17,28 @@ stdenv.mkDerivation {
     sha256 = "sha256-rLjJ7qy7Tx0htW1VxrfCCqVbC6jNCr9H2vdDAfosxCA=";
   };

+  nativeBuildInputs = [
+    pkg-config
+  ];
+
   buildInputs = [
     lz4
-    pkg-config
   ];

   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/bin
     install -D lz4jsoncat $out/bin/lz4jsoncat
+
+    runHook postInstall
   '';

   meta = {
     description = "LZ4 JSON compressor for Mozilla proprietary format";
     homepage = "https://github.com/andikleen/lz4json";
-    license = lib.licenses.unfree;
+    license = lib.licenses.bsd2;
     maintainers = [ lib.maintainers.afermg ];
+    mainProgram = "lz4jsoncat";
   };
 }

Hello,
* The only comment not addressed in code or reply is the [license one](https://github.com/NixOS/nixpkgs/pull/327009#discussion_r1837340212). That's my bad, I assumed it was a direct edit. I did get two approvals afterwards, so I do not see where this is coming from. I'll accept the suggestion once it is open once again if that is alright.

* How is the PR title wrong? It would seem to me straightforward enough.

I see that the title has been fixed, great! In any case, thanks for replying, let's work all together to fix this and merge this thing!


Renamed super.mycompany.com into images.my-company.example

Hey 👋
This is a follow up to the PR #22702: as said in comments, super.mycompany.com could be confusing so I changed it to images.my-company.example as @sftim proposed 😄

/assign @kbarnard10


Big file streaming missing characters

I am facing really weird issue. I have a csv file with 320mb size. I am reading it with fs.createReadStream and piping it to csv parse. After some point (close to end of the file) i see some of last characters are missing after parsing. Eg. Awards becomes Award, Kids becomes Kid etc. I am really stuck on that point. Here is my code;
const parse = require('csv-parse');

const config = {
  parserOptions: {
    columns: true,
    delimiter: '\t',
    trim: true,
    relax: true, // preserve quotes in row
    relax_column_count: true,//Discard inconsistent columns,
    skip_empty_lines: true,
    quote: false
  }
 };

getFileStream() {
  return new Promise((resolve, reject) => {
    return resolve(fs.createReadStream('/path/to/file'));
  });
}

parseFile() {
  getFileStream().then(stream => {
    stream.pipe(parse(config.parserOptions))
      .on('data', csvrow => console.log(csvrow.category)) // sometimes characters are missing at the end of the word
      .on('error', error => console.log(error));
  });
}

Some notes:

I checked multiple times if there is a misspelled words on the file for this lines. But there is no spell error.
It doesn't happen for the same line everytime.

I really need help for that. Spent 1 week for it but no result..

@wdavidw thank you for the quick response. The issue is with bigger file sizes. I can't reproduce with a smaller data set. Everything works as expected for smaller files. There is no way that i can reproduce it with a smaller sized files. I am really stuck... I am trying it with smaller highWaterMark for fs.stream but still the same.

@wdavidw thank you for the quick response. The issue is with bigger file sizes. I can't reproduce with a smaller data set. Everything works as expected for smaller files. There is no way that i can reproduce it with a smaller sized files. I am really stuck... I am trying it with smaller highWaterMark for fs.stream but still the same.

I know it has been a while, but did you ever solve this issue? I am having the same error with larger data sets only.

@orhankutlu I know it has been a while, but did you ever solve this issue? I am having the same problem relating to errors with larger data sets.

I was not able to reproduce the issue so I couldn't help.

Closing due to lack of activity.

Closing due to lack of activity.


Make updating progress on every screen (not the third screen) the default

We haven't found a performance penalty to saving progress to the interview metadata, which makes sense as it's a lightweight DB query. I think we should change the default to having it always on, instead of always off unless you explicitly change config to enable it. See also #489 which this would completely obsolete.

[ ] Add the new configuration option
[x] Document
[x] Add to the ALDashboard installation script

See: https://github.com/SuffolkLITLab/docassemble-AssemblyLine-documentation/pull/365

This is already the default when people install AL using the ALDashboard.


MigrateUtils utility class

This is the utility class that handles the git and flutter commands used by the migrate tool.
This code is inaccessible by the rest of the tool as of now.

@christopherfujino This is ready for another round, whenever you have the time. Thanks!

@christopherfujino This is ready for another round, whenever you have the time. Thanks!

I'll take a look tomorrow, thanks for the ping!

@christopherfujino friendly ping :)

@christopherfujino friendly ping :)

Oops, yeah, looking now!

@christopherfujino Ready for another pass! Thanks!

Idk why, but multiple times on this PR I could have sworn I submitted feedback, but then apparently I didn't...

Addressed Zach's comments in https://github.com/flutter/flutter/pull/103466


Bitcoin Core 0.20.0 required..

Hello, good day
First of all thank you for your project
Can I work with different coins in the electrum-person-server ? Is it only over bitcoin ?
vagrant@vagrant:~/electrum-personal-server$ electrum-personal-server config.ini INFO:2020-05-10 08:52:47,686: Starting Electrum Personal Server 0.2.0 INFO:2020-05-10 08:52:47,687: Logging to /tmp/electrumpersonalserver.log ERROR:2020-05-10 08:52:47,761: ValueError("JsonRpcError({'code': -32601, 'message': 'Method not found'},)",) ERROR:2020-05-10 08:52:47,761: Descriptor related RPC call failed. Bitcoin Core 0.20.0 or higher required. Exiting.. vagrant@vagrant:~/electrum-personal-server$

Only the master branch requires Bitcoin Core 0.20.0, as it's still under development. Most users should use a release: instead https://github.com/chris-belcher/electrum-personal-server/releases
As for altcoins, I don't know, I'm not involved in altcoins.

Thank you for your quick reply.
I downloaded your older versions but I got another error, why ?
berkay@berkay-X:~/electrum-personal-server-eps-v0.1.5$ ./server.py
2020-05-12 16:30:36,222654 [  LOG] Obtaining bitcoin addresses to monitor . . .
2020-05-12 16:30:37,344929 [  LOG] Obtained list of addresses to monitor in 1.1222271919250488sec
2020-05-12 16:30:37,344988 [  LOG] Building history with 200 addresses . . .
2020-05-12 16:30:37,352252 [  LOG] Found 0 txes. History built in 0.0014400482177734375sec
2020-05-12 16:30:37,352399 [  LOG] Starting electrum server
2020-05-12 16:30:37,352443 [  LOG] Listening for Electrum Wallet on ('<IP_ADDRESS>', 50002)
2020-05-12 16:31:09,245796 [  LOG] Electrum connected from ('<IP_ADDRESS>', 59308)
2020-05-12 16:31:09,245912 [  LOG] Electrum wallet disconnected
2020-05-12 16:31:09,450305 [  LOG] Electrum connected from ('<IP_ADDRESS>', 59310)
Traceback (most recent call last):
  File "./server.py", line 572, in <module>
    main()
  File "./server.py", line 569, in main
    poll_interval_listening, poll_interval_connected, certfile, keyfile)
  File "./server.py", line 367, in run_electrum_server
    txmonitor)
  File "./server.py", line 236, in handle_query
    uptime = rpc.call("uptime", [])
  File "/home/berkay/electrum-personal-server-eps-v0.1.5/electrumpersonalserver/jsonrpc.py", line 58, in call
    raise JsonRpcError(response["error"])
electrumpersonalserver.jsonrpc.JsonRpcError: {'code': -32601, 'message': 'Method not found'}

This is the result of the curl
berkay@berkay-X:~$ curl localhost:50002
curl: (56) Recv failure: Connection reset by peer
berkay@berkay-X:~$

That node doesn't seem to have the RPC call uptime, that's very weird. Are you definitely using Bitcoin Core?


Setting form is not displayed if desktop application is installled from installation package

Confirm developer tools.

https://github.com/ihiroky/live-comment/pull/43


Remove mention of the Talons project from the tutorial, update FAQ

The Talons project has not become a general repository for
community add-ons, as originally envisioned. Remove from the
the tutorial to avoid confusion (based on community feedback.)
Also update the FAQ as follows:
* Remove mention of talons to allow for diversity in
  the Falcon ecosystem
* Remove mention of specific "choices" that Falcon lets
  you make regarding complementary libraries, since in
  each case there are actually many more choices than
  given, and the list only seems to belabor the point.

LGTM


Feature: expose the reducers mapping object supplied to combineReducers()

The reducer returned from combineReducers() is currently an opaque function with respect to the original reducers that comprise it. While this is typically desirable, there may be tooling benefits to allowing enhancers to perform some introspection.
Example Use Case:
Several store enhancers currently exist [1] that allow "slices" of state to be dynamically added and removed from the store. Related behavior has also been provided by Dan Abramov[2].
If the initial reducers object was attached to combination [3] (we'll assign it to the _reducers property for this example), the functionality described above could trivially be achieved using a store enhancer:
let initialReducers;
let store;

exports.enhancer = createStore => (reducer, preloadedState, enhancer) => {
  store = createStore(reducer, preloadedState, enhancer);
  initialReducers = reducer._reducers;

  return store;
};

exports.addSlice = (key, reducer) => {
  store.replaceReducer(combineReducers({
    ...initialReducers,
    [key]: reducer
  });

  store.dispatch(/* something to "wake up" the new reducer */);
};

Why not just create another module that does this?
I wholly respect that combineReducers() is neither intended nor presented as the one-true approach to slice management, but I also support paving cowpaths. This is a two-line addition with no backwards compatibility concerns or API changes relevant to regular usage. In exchange, it opens the door to some useful reducer manipulation, including patterns like the one in the example that assist with both code organization and code splitting. The benefit of including this in redux core vs. a new module is the increased interoperability of these enhancers, as they have a consistent and ubiquitously used property to target (i.e., _reducers).
Thoughts?
[1] https://github.com/umidbekkarimov/redux-inject-reducer, https://github.com/asteridux/paradux, https://www.npmjs.com/package/redux-dynamix, etc.
[2] https://stackoverflow.com/questions/32968016/how-to-dynamically-load-reducers-for-code-splitting-in-a-redux-application/33044701#33044701
[3] https://github.com/reactjs/redux/blob/master/src/combineReducers.js#L132

For the sake of illustrating the actual modification I'm suggesting, it would look something like this:
// change this:
return function combination(state = {}, action) { ... }

// to this:
const combination = function(state = {}, action) { ... }
combination._reducers = reducers

return combination

https://github.com/reactjs/redux/blob/master/src/combineReducers.js#L132

Busy atm, but at first glance I think I can get behind this.  We've got prior precedent with connect exposing WrappedComponent.  (Also, as a link-centric person, I definitely appreciate you pulling together relevant resources for this topic :)  )

A few topics for discussion if anyone has opinions:

Any better property names than _reducers? Looks like the _ prefixing isn't a common convention in the redux source, so perhaps one of reducers, originalReducers, initialReducers, or reducerMap?
Would it be better to retain a reference to finalReducers , rather than the unpruned reducers argument itself?
Would it be better to store a copy of the reducers, rather than the initial reference? I can't think of why someone would try to mutate the proposed property, but if they did, this would at least prevent it from borking the behavior of the current reducer instance.

I'm currently leaning towards 1) originalReducers, 2) yes, and 3) yes. So:
combination._reducers = reducers
... from my example would turn into:
combination.originalReducers = { ...finalReducers }.

It would seem you can do this with a higher-order/enhancer function:
function combineAndSaveReducers(reducers) {
  const combinedReducers = combineReducers(reducers)
  combinedReducers.reducers = reducers
  return combinedReducers
}

@timdorr This is what I'm currently doing. I'm just advocating that the resulting utility benefits make this a compelling core feature.
Without a standard target included in core, multiple enhancers trying to introspect against the reducers object will face interoperability issues. IMHO, it's a pretty powerful enabler for being such a simple expando addition.

It doesn't seem like a necessary feature to me. You can either use a HoF like that, or you can simply collect the input to combineReducers before running the function and store it in a singleton or some other form:
let currentReducers
export function buildCombineReducers(reducers) {
  currentReducers = reducers
  return combineReducers(reducers)
}

export const getCurrentReducers = () => currentReducers

I don't think we need to add this to the core library.

@timdorr I agree that the workaround is trivial for a single enhancer. The problem is when multiple enhancers (especially from independent module developers) need to introspect, they have nothing to coordinate against.
combineReducers isn't composable in the sense needed here, so you can't use independent HoF's from both module-a and module-b (at least not with a reasonable level of API ergonomics).
Interoperability between independent enhancers requires a common target, and it's unlikely to see that emerge outside of core (as evidenced by the present lack of a common target, despite there already being substantial community activity in this area).

@timdorr Any chance you could weigh in on the merits (or lack thereof) for this being an interoperable solution? I think that's the biggest limitation of simple HoF-based solutions.
A secondary advantage would be that libraries like this could be enhancer-only, rather than enhancer + custom reducer.

While it is trivial, I think it would be nice to have an official way to access the current reducers.  It'd help when writing redux libraries regarding dynamic reducers, at least.


Update to Kint 3.3

Description
The only way to satisfy the requirement for CI and Kint is to use compiled kint.phar. Fortunately phar version exists but it's only available on github repo and composer package does not include it.
There is an issue of not allowing the kint to load multiple time which is fortunately behavior of the Kint itself as it checks and defines the KINT_DIR on load which prevents it from loading multiple times.
The composer.json file has been updated to pull the kint from github repo using the commit hash of latest production version 3.3 which contains the phar file. This is not the best way to do it as kint classes will exist in multiple places and with hardcoded hash it will require to manually update version in composer.json file on each release but it's the only way to do it at the moment.
It will be nice if we can get kint-php/kint to provide phar version via composer repositories so taht in future it can easily be updated
Ref #2373
Checklist:

[x] Securely signed commits
[x] Component(s) with PHPdocs
[x] Unit testing, with >80% coverage
[x] User guide updated
[x] Conforms to style guide

Another way to achieve the same functionality will be to completely get rid of Kint composer package and provide the kint.phar file in the framework. This may solve some issues related to dependencies but this will make updating kint completely manual.
Another possible option will be to include Kint build scripts in CI4 and build Kint from composer script on each update.


In dev mode, is it possible to disable all the pin codes,

verification of the seed words, enable copy and paste?
I use ./bin/start_dev_desktop, but this does not disable any pin codes, enable copy-and-paste.

Not yet.. but not necessarily a good idea either.. how do you use dev mode?

I use /bin/start_dev_desktop. I hooked it up to openmonero in testnet, so I thought that if its on testnet or stagenet in dev mode one would be able to simply create new wallets (without retyping seed for confirmations), pin numbers, etc.

The difficulty for me is I use it for actually developing features, so if I turn some off, I wouldn't be working with the actual production featureset while developing...

Testnet mode is configured in the context object, so I could definitely see flags to turn that stuff off which have to be hardcoded in the context ...
The main reason I would steer away from letting the user not have a PIN (able to be turned off with password in settings) is that it would encourage storing keys in the open, which isn't good for non-power users... they would have too-little indication that they're actually not safe.

Fully understand. Thus maybe it could be only be available in testnet and stagenet modes. This way its easy to create new wallets and make txs (without all the pins, seed re-confirmations, etc) for testing and development. But such option would be not available when on mainnet, for the very reasons you specified.

Hm yes, although it seems to me like something which could become complex if we lump those modes into the flag under the name semantic of network type... in any case that's inevitably an implementation detail. Going to add this to my list but it'd be fine if anyone got to it first .. we would just need to make sure to hit all the locations in an appropriate manner by checking the specific flag on the context object.

Thanks for considering this. I can try to look into it as well and see how it goes.