no refresh

I'm new to IOT Manager so please go easy if I've missed the point.
I have Node-Red sending setup commands - no problem - I have a couple of toggle switches on one page and a couple of water fill gauges on another.
The gauges appear when I send a value (which is odd - I'd have expected them to appear anyway)... and the toggle switches change when I send 1 or 0.  So all is well.
But when I flick pages back and forth on the phone (Android HTC ONE M8), the values of the toggle switches stay there, but the water fill guages disappear and only reappear when I send new values to them - yet when you change pages there is no way to inform MQTT that the page has changed - and that you need to send update values.
Am I missing something?

Hi, Piter! I'm glad to see you again!
Tell me about IoT Manager version (at now available 1.5.0 stable and 1.5.1 beta)
v1.5.1 beta have bug with data refreshing, because in development new option: refresh rate limiter
This bug will be fixed in v1.5.1 beta2 (one or two days required)

Hi there
Excellent – I was planning to update my blog (http://tech.scargill.net) on the subject – but with the refresh issue I came to a halt.
Please let me know when the refresh is fixed and I will test it and update my blog with some examples of setting up in Node-Red.
Thanks  - Pete
<EMAIL_ADDRESS>

Also it would be nice if possible of get some kind of MQTT message when you change tabs!

Hi
Right –
So – I have the new version of the APP…. I have a couple of pump switches , a couple of water levels and a couple of thermometers… one of the thermometers is just off screen.
At power up the level meters do not show until you send a value to them – but the switches do show greyed out…
The thermometers also shows at power up… inconsistent, I would have thought the circles for the water level meters would at least show.
So now I have sent values to all and everything is working.
So that is all on one page – then I go into settings – and under VIEW SETTINGS – I select SHOW PAGES TABS and SHOW ALL.
I go back to the main view – the water level indicators have disappeared off the ALL view as have the thermometers.
When I select the other pages – nothing there except for the page with the switches.  The level meters and the thermometers have gone.
If I go to the water level pages – and send values – they appear again.
The thermometers however do not re-appear.
If I go from the thermometers page to the water level page – they have once again disappeared.
This incidentally is on a standard HTC ONE M8 with lots of memory and Android 6.0
Pete.
From: Victor Brutskiy<EMAIL_ADDRESS>Sent: 22 September 2016 17:21
To: 4refr0nt/iot-manager-demo<EMAIL_ADDRESS>Cc: Peter Scargill<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [4refr0nt/iot-manager-demo] no refresh (#2)
Hi, Piter! I'm glad to see you again!
Tell me about IoT Manager version (at now available 1.5.0 stable and 1.5.1 beta)
v1.5.1 beta have bug with data refreshing, because in development new option: refresh rate limiter
This bug will be fixed in v1.5.1 beta2 (one or two days required)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/4refr0nt/iot-manager-demo/issues/2#issuecomment-248935618 , or mute the thread https://github.com/notifications/unsubscribe-auth/ABzUg0ZYngPLkzjUaJQJZkOp9yTDkZxQks5qspzwgaJpZM4KD6zF .

ok, I'm test all again (with your widgets pack: water levels and thermo )
and send report to you.
Can you send me your widgets configs or full scripts?
2016-09-25 22:47 GMT+05:00 Peter Scargill<EMAIL_ADDRESS>
Hi
Right –
So – I have the new version of the APP…. I have a couple of pump switches
, a couple of water levels and a couple of thermometers… one of the
thermometers is just off screen.
At power up the level meters do not show until you send a value to them –
but the switches do show greyed out…
The thermometers also shows at power up… inconsistent, I would have
thought the circles for the water level meters would at least show.
So now I have sent values to all and everything is working.
So that is all on one page – then I go into settings – and under VIEW
SETTINGS – I select SHOW PAGES TABS and SHOW ALL.
I go back to the main view – the water level indicators have disappeared
off the ALL view as have the thermometers.
When I select the other pages – nothing there except for the page with the
switches. The level meters and the thermometers have gone.
If I go to the water level pages – and send values – they appear again.
The thermometers however do not re-appear.
If I go from the thermometers page to the water level page – they have
once again disappeared.
This incidentally is on a standard HTC ONE M8 with lots of memory and
Android 6.0
Pete.
From: Victor Brutskiy<EMAIL_ADDRESS>Sent: 22 September 2016 17:21
To: 4refr0nt/iot-manager-demo<EMAIL_ADDRESS>Cc: Peter Scargill<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [4refr0nt/iot-manager-demo] no refresh (#2)
Hi, Piter! I'm glad to see you again!
Tell me about IoT Manager version (at now available 1.5.0 stable and 1.5.1
beta)
v1.5.1 beta have bug with data refreshing, because in development new
option: refresh rate limiter
This bug will be fixed in v1.5.1 beta2 (one or two days required)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <
https://github.com/4refr0nt/iot-manager-demo/issues/2#
issuecomment-248935618> , or mute the thread <https://github.com/
notifications/unsubscribe-auth/ABzUg0ZYngPLkzjUaJQJZkOp9yTDkZ
xQks5qspzwgaJpZM4KD6zF> .
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/4refr0nt/iot-manager-demo/issues/2#issuecomment-249435293,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAhn13uEMtfulV15oClSvMeCHD-KotvSks5qtrOVgaJpZM4KD6zF
.

--
С уважением,
Виктор Бруцкий
Администратор esp8266.ru
ESPlorer http://esp8266.ru/esplorer/
IoT Manager
https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager

fixed


channel.isStopped is not really stopped when the last running task is still in process

I noticed that channel.isStooped flag is set to true right after channel.stop() or channel.forceStop() is called. Do we have anything I can use to determine if the channel is fully stopped? Thanks

@y25zhao
There is a method that called channel.status() that you can use, but it was not working properly. I fixed it. You need update the package.
See changes: ff631b1

Great! Thanks @atayahmet Let me give this a shot today and I will update this ticket if it's working.

Ping @y25zhao

Hi @atayahmet  sorry for the late response. I think there is still a bug to status(). When I stop the channel. A work could still be running for a few more seconds for e.g. I was expecting the channel to tell me a work under this channel has not finished yet.


Reworking CDSAPI.jl to be more Julia-centric

Removed py2ju -> people who are using CDSAPI.jl should be more or less familiar with Julia Dictionaries
Added some logging statements to retrieve() to mimic the Python CDSAPI retrieval logs
Updated Project.toml to reflect all changes, and allow more flexibility in Julia version
Bump version to 0.2.0 because of breaking changes/syntax

Thank you @natgeo-wong for the nice refactoring and logging. Could you please update the tests accordingly so that we have a clearer picture of the proposed API?
Appreciate if you can review the PR @LakshyaKhatri. It is also an opportunity to figure out if that issue about decryption is still present.

Hello @juliohm! Sorry for the delayed response. I think we should test these chages locally before merging them. Also, since this is an external pull request, Travis is turning the environment variables off to prevent modification of the encrypted files and that is why the tests are failing.
I will first test the current changes locally and then we will be ready to merge the changes. After that, I will check what can be done on the Travis part to resolve the issue.
Also, @natgeo-wong, thank you so much for such beautiful changes. The code looks neat.

I revamped the set of tests, because the output is quite different. You could add your own tests to this as well?

The current version of cdskeys() is showing timestamps like this:

IMO, having a timestamp won't be that much of a help. Also, for showing a timestamp we are adding an additional dependency of Dates.jl (which could be overkill). @juliohm, it would be helpful to have your views on this.

Thanks for pinging @LakshyaKhatri , I think the dependency on Dates is fine as it is a stdlib shipped with Julia. My main concern is actually the verbosity of these messages. It is nice to have logging features, but we should consider adding a verbose option to do things quietly if possible. This option could default to true. What do you think?

The verbosity of these messages are very similar to the CDSAPI by Python, and actually I like them because I can monitor the progress of the downloads.
When I was using the initial version of CDSAPI, my datasets are extremely large and take a long time to download, so the CDSAPI script kept throwing "Request is running" every second, which I believe is even more verbose for large datasets.
Reason why I added the log for the cdskeys() is so that people are reminded that they shouldn't be continuously calling the cdskeys() function in a loop when once will do.

My main concern is actually the verbosity of these messages. It is nice to have logging features, but we should consider adding a verbose option to do things quietly if possible. This option could default to true. What do you think?

@juliohm could you provide some more information. I am still linking this with the timestamps that are added by @natgeo-wong in the info logs!

Also, I should add that when I have more time I'm going to try and add a progress bar option to HTTP.jl for downloads, which would be cool.

That would be very cool indeed @natgeo-wong :100:
Also, I still we should consider adding a verbose option to the download command. Sometimes users are not interested in verbosity, for example when running multiple processes in a computer cluster. I had similar issue with the Pkg manager recently and they are considering adding a verbose option there as well. Imagine multiple processes downloading different datasets.
We could just follow a pattern verbose && @info "foo" throughout the code. Shouldn't be that hard to add this option.
Regarding the dependency on Crayons, do we really want to add an extra dependency just for a boldface?

We could just follow a pattern verbose && @info "foo" throughout the code. Shouldn't be that hard to add this option.

I have done this in the most recent push

Regarding the dependency on Crayons, do we really want to add an extra dependency just for a boldface?

I could remove it haha, I just like nice formatting.

Would it be ok to remove the Crayons dependency? Given that the package is very small, and that we are not using formatting all over the place, I think it would be better to remove it. I didn't check the loading time, but the less dependencies the better in the long-term.

@natgeo-wong did you have a chance to take a look into this? It would be nice to update the PR and merge the improvements.

Hi @juliohm and @LakshyaKhatri, sorry I've just been pretty busy these past few days, I'll go through and have a look!

Done!

Awesome @natgeo-wong , do we also need an update to the README? I will try test the PR locally tomorrow :+1:

An update to the README would be good.  I'll work on the README over this coming week as a way to soothe myself when everything starts getting extremely crazy on Tuesday.

Hey @natgeo-wong , do you think you could manage a final stretch on this PR this week? I know it is been a crazy week for you. :)
Looking forward to review the changes.

This week is good!  Expect updates today or tomorrow!

Done!

I've just cloned the repo and tried the changes locally, and unfortunately I don't think we can merge the PR as is. There are many issues including the fact that tests with the ERA5 in GRIB format were erased, NetCDF was replaced with NCDatasets without a corresponding update in the Project.toml, and other source code formatting issues. Overall, it is more difficult to understand what the code is doing now compared to the master branch.
Taking a step back, this PR is basically adding a "verbose" feature, i.e. more control over the messages printed to the terminal. If you would like to start a fresh PR to add this feature, we'd be happy to review it.

I am sorry about the tests.  I think I mentioned early on that I am not too sure how Testing works in Julia and I'm still trying to figure it out, because I do not use it regularly.
This PR is more than just "verbosity". When I first looked at CDSAPI.jl, I was very uncertain as to how to use it because of py2ju. I've gotten rid of that, because the crux of CDSAPI.jl should be on Julia, and not on "conversion" measures from Python to Julia.  I didn't even know what the nature of the inputs were until I had a very close look at the code and realized that what py2Ju was doing was simply returning a dictionary. So I didn't even know what inputs I was supposed to be using, and that is offputting to people who are still trying out the basics of Julia.
I would argue that when one comes from Julia, one finds the master branch of CDSAPI harder to absorb because of conflicting information and priorities aimed to "converting" a python code or dictionary or information into Julia, when one should simply be using Julia code directly.  I rewrote the code to be able to do that, specifically by restricting the types of the input argument, which should already be giving people familiar with Julia a sense of what sort of input arguments are required.
I've also pulled out the retrieval of the cdskeys as a function on its own, so people don't need to keep rereading the cdskeys each time when we use loops to retrieve large datasets (over different months/years, for example).
I can probably restore some of the GRIB tests, etc. from the master branch.  I don't use those formats, so I am predisposed to rely only on NCDatasets, but I will do my best.
My key message is this: We really need to remove the dependency of py2ju, because that is just confusing.

TLDR, what I did was:

Restrict the nature of input arguments to make it clearer for Julia users

Restricting input arguments is a Julia anti-pattern, see section "Over-constraining argument types" https://www.oxinabox.net/2020/04/19/Julia-Antipatterns.html

Remove py2ju because we really should not be relying on python syntax in Julia code. Instead, show users how to input the arguments in Julia code.

Isn't it true that the current master branch supports Julia dicts just fine? We are only providing an additional helper function py2ju in case someone doesn't want to build the dict by hand. The CDS website creates Python queries for you, and converting these queries by hand can be a waste of time. What we should do is clarify in the README that Julia dicts are supported.

Pulling out minor functions (see below), so that they can be individually modified without disturbing the overall code.
a. Retrieval of cdskeys
b. Parsing of HTTP request

To be honest I don't see much use in a separate cdskey function, but we can review a separate PR with this improvement. Regarding the parsing of HTTP, this is the part of the code that I thought could be reformatted. What about we start two separate PRs with these changes?

Hi, sorry for the silence.
I will make the PRs when I have time, now is crunch time with class projects coming up.
I still believe that specifying the input types will be helpful, especially if people are coming over from Python to Julia, for new users to understand exactly how the Julia portions of the code work.  I stand by my previous statement that specifying it is necessary.
I will make separate PRs for the parts you've specified.

Awesome. I will close this PR for now, and then we can start fresh PRs with individual changes when you are over your other tasks in your todo list.


Feat:want to fix ui of frequntly Asked Question

Describe the feature
want to fix ui of frequntly Asked Question
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Assigned!
Make sure to attach before & after screenshots in your PR and include the issue number.
Also, please star the repo before working on it. Happy open-source contributing!


Add lint support through the dotnet-format tool

Add a new executor that runs the dotnet-format tool against the project, which defaults to checking only but can also automatically fix various issues. This executor is then added to all new and existing projects.
Fixes #13

Looks good! Great job @bcallaghan-et , loving the contributions over the past few days.
I was unable to test the migration locally, but that might be something to do with how I am running it.


Ignore property set if document is not present (SSR).

Describe the bug
If using in an SSR environment document (/index.ts#L10) is not present. So, the plug-in should ignore setProperty if document is not present.
Error when evaluating SSR module /src/views/Index.vue: failed to import "@capacitor-community/safe-area"
|- ReferenceError: document is not defined
    at setProperty (/.../node_modules/@capacitor-community/safe-area/dist/plugin.cjs.js:12:5)

To Reproduce
Steps to reproduce the behavior:

Using Vue with SSR environment.
Install package @capacitor-community/safe-area
Add config to capacitor.config.ts
Add package with import '@capacitor-community/safe-area'

Expected behavior
It should work for web in a SSR environment.
if (typeof window !== 'undefined') {
  setProperty('top');
  setProperty('left');
  setProperty('bottom');
  setProperty('right');
}

In my opinion, yes. SSR loads only js scripts for web (Node JS server) and not related code of Android and iOS. Other extensions for React, Vue, etc. that uses window.* handles code sequences in the same way.

If you want to still call setProperty() then we need to check if document exists inside setProperty /src/index.ts:
function setProperty(position: 'top' | 'left' | 'bottom' | 'right') {
  if (typeof window === 'undefined') return

  document
    .querySelector<HTMLElement>(':root')
    ?.style.setProperty(
      `--safe-area-inset-${position}`,
      `max(env(safe-area-inset-${position}), 0px)`,
    );
}

I understand, but it is not possible to set this CSS variables on SSR (server side) because there is no window.  On client side (web), the code is executed (because of presence of window) and the CSS variables are set. Therefore it should work anyway. I have per default set the CSS variables, that are overwritten by @capacitor-community/safe-area on the client side. It works!
 :root {
  --safe-area-inset-bottom: 0;
  --safe-area-inset-left: 0;
  --safe-area-inset-right: 0;
  --safe-area-inset-top: 0;
}


Copy Paste Hyperlink Issue

Describe the bug
A user experiences incorrect results pasting in links.
To Reproduce
Steps to reproduce the behavior:

Go to the live demo
Create a new paragraph
Paste in https://github.com/accordproject
Press Enter
See markdown on the left incorrect (first screenshot)
Paste and press Enter as many times as you wish
See compounding issue (second screenshot)

Expected behavior
Pasting links should behave as expected.
Screenshots

How did you paste the link? When I do it (Safari) it just inserts the text of the link.

Copy the URL, MOD + V in the editor.

This was fixed in #340


Additional step if implementing on AD FS Farm with WID

I believe there is an extra step required when configuring the MFA adaptor in an AD FS farm which uses WID for the AD FS databases.
In this case. an exception will occur when executing the New-AdfsAzureMfaTenantCertificate cmdlet on a secondary AD FS server To get past this, it is necessary to configure the AD FS server as the primary server for the farm (using Set-AdfsSyncProperties), execute the New-AdfsAzureMfaTenantCertificate cmdlet, and then optionally re-configure the AD FS server as secondary server.

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

ID: ae96cfcf-0a50-7e13-30c8-43e3730e184f
Version Independent ID: 9d8ed7b7-eec6-1b95-40b8-24a13361f66d
Content: Configure AD FS 2016 and Azure MFA
Content Source: WindowsServerDocs/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa.md
Product: windows-server-threshold
GitHub Login: @billmath
Microsoft Alias: billmath

I have a different experience. I have been able to do what you mention without first making the ADFS server a primary ADFS server


Ignore file which cannot be open

We read files returned by do_file_search and as directory may contain
files which cannot be opened this commit remove them from the result.
Emacs may create a lock file when a buffer is modified and not saved:
http://www.gnu.org/software/emacs/manual/html_node/emacs/Interlocking.html
as this file cannot be read it make racer panics when trying to read the file.
Note: I wanted to add a unit test but i do not know how i could create an invalid file.

Hi @damienrg,
Thanks for the patch! Does this affect performance much? - it looks like it now opens every file rather than just the ones matching the searchstring

I can do some benchmarks but it will depend on my disk speed and it will be
worse in case of a folder over network. So as you mention it will be better
if i delay the test. I will update the pull request.

@phildawes I have updated the patch to only open file when necessary. I have also done a small refactoring and if you prefer I can split it in 2 pull requests.

Great, thanks @damienrg


Configurable Binding host in Dockerfile

This small update aims to allow configuration of bind host on Docker.

LGMT, thanks @qhess34! :)


Add default values

would be great to know the default values to all the parameters
eg:
[--default-action {Allow, Deny}]
[--https-only {false, true}]

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

ID: 92115d19-d7a0-93a8-bf2b-5126d1cddcd0
Version Independent ID: a657f09b-e1ac-12a2-4b9c-7aaa1f0e3f5c
Content: az storage account
Content Source: src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_help.py
Service: storage
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

For flags (--https-only), the default is always false (flag not specified). For some parameters, like --default-action the default from the CLI to specify nothing and allow the server to enforce the default.  However, that default should be expressed via the rest API specs, in which it would bubble up to the CLI. cc/ @johanste

add to S165.

The help message for --https-only has been refined in https://github.com/Azure/azure-cli/pull/10824. cc @Juliehzl
As for --default-action, it is an Enum, so there is no default value for it and a specific value is mandatory:
https://github.com/Azure/azure-cli/blob/5edbd822ee860d7ba5d5182811b68233e0846ba8/src/azure-cli/azure/cli/command_modules/storage/_params.py#L230-L231
As @tjprescott suggested, if the value is not specified, Azure CLI will omit that field in the REST request. Then that depends on the Resource Provider's behavior to decide the default value as defined in the REST spec:
https://github.com/Azure/azure-rest-api-specs/blob/master/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/storage.json#L1851-L1855
        "supportsHttpsTrafficOnly": {
          "type": "boolean",
          "x-ms-client-name": "EnableHttpsTrafficOnly",
          "description": "Allows https traffic only to storage service if sets to true. The default value is true since API version 2019-04-01."
        },


ERROR: audio conversion failed: Unknown encoder 'libmp3lame'

[avconv] Destination: Taylor Swift - Bad Blood ft. Kendrick Lamar.mp3
ERROR: audio conversion failed: Unknown encoder 'libmp3lame'
How can i install libmp3lame ?
I am on centos 6

I just went with ffmpeg instead
Here a tutorial if anyone need it
https://github.com/supermasita/ufe/wiki/Installing-FFMPEG-on-CentOS-with-ATRPMS-repo

I had the same error and had to rebuild ffmpeg with the libmp3lame support for it to work.
Thanks to "ghost" :
https://github.com/rg3/youtube-dl/issues/302


Feature request - close on escape key press

Pretty self explanatory. I don't mind adding this, but thought I'd leave a note here. 😛

Side note: might be nice to have a shortcut to open it also.

This would be nice! Also would be nice if there was a setting to auto-close after "ok"ing the last notification and you have the empty list and the fancy animation. It could be closing slowly while showing the animation or at least close after the animation.  Note: I have the setting "on click mark as read" turned on

This would be nice! Also would be nice if there was a setting to auto-close after "ok"ing the last notification and you have the empty list and the fancy animation. It could be closing slowly while showing the animation or at least close after the animation.  Note: I have the setting "on click mark as read" turned on

Would appreciate this, I always hit escape to close the window forgetting the shortcut doesn't work.


Fix linting errors

Pull Request
Description
Fixed a couple of bare except: issues. There may be a tighter exception that could be used though. Then ran black --line-length 100 satip which removed a few blank lines.
Fixes #137
How Has This Been Tested?
CI tests.
Checklist:

[x] My code follows OCF's coding style guidelines
[x] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[x] I have checked my code and corrected any misspellings

No problem, I'd be keen to contribute more!

Great! We do have the list of other good first issues, if you want to poke around!


Bluetooth improvements (discussion)

I recently set up my Pi Zero as a Bluetooth receiver with bluealsa by reading and following several write ups and tutorials and bug reports scattered across the web. Your repo was invaluable but I believe your implementation could be improved. Here is a list of improvements that I have implemented. Before I put in any pull requests I wanted to get an idea of if you're interested in any of these?

bluealsa and bluealsa-aplay run under a unprivileged system user 'buealsa' who is a member of the audio and bluetooth groups. Adapted from here

My service files look like this:
[Unit]
Description=Bluealsa daemon
Requires=bluetooth.service
After=bluetooth.service

[Service]
Type=dbus
BusName=org.bluealsa
User=bluealsa
Group=bluealsa
NoNewPrivileges=true
ExecStart=/usr/bin/bluealsa -i hci0 -p a2dp-sink --a2dp-force-audio-cd
Restart=on-failure
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
RemoveIPC=true
RestrictAddressFamilies=AF_UNIX AF_BLUETOOTH

[Install]
WantedBy=bluetooth.target

[Unit]
Description=Bluealsa audio player
Requires=bluealsa.service
After=bluealsa.service

[Service]
Type=simple
ExecStartPre=/bin/sleep 1
ExecStart=/usr/bin/bluealsa-aplay --profile-a2dp --single-audio --pcm-buffer-time=1000000 00:00:00:00:00:00
Restart=on-failure
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
RemoveIPC=true
RestrictAddressFamilies=AF_UNIX
User=bluealsa
Group=audio
NoNewPrivileges=true

[Install]
WantedBy=bluetooth.target

I noticed what I think is a bug. But if 2 devices are connected and one disconnects bluetooth becomes discoverable even though there is still a connected device. I racked my brain on this this one and this is the best solution I came up with.  bluetoothctl info spits out 'Missing device address argument' if no devices are connected so I use that to make sure nothing is connected before I enable discovery. (I also made my own sound for discovery mode).

My /usr/local/bin/bluetooth-udev looks like this:
#!/bin/bash
if [[ ! $NAME =~ ^\"([0-9A-F]{2}[:-]){5}([0-9A-F]{2})\"$ ]]; then exit 0; fi
action=$(expr "$ACTION" : "\([a-zA-Z]\+\).*")
if [ "$action" = "add" ]; then
    bluetoothctl discoverable off
    if [ -f /usr/local/share/sounds/__custom/device-added.wav ]; then
        aplay -q /usr/local/share/sounds/__custom/device-added.wav
    fi
    ifconfig wlan0 down &
fi
if [ "$action" = "remove" ]; then
    if [ -f /usr/local/share/sounds/__custom/device-removed.wav ]; then
        aplay -q /usr/local/share/sounds/__custom/device-removed.wav
    fi
    deviceinfo=$(bluetoothctl info)
    if [ "$deviceinfo" = "Missing device address argument" ]; then
        if [ -f /usr/local/share/sounds/__custom/discoverable.wav ]; then
            aplay -q /usr/local/share/sounds/__custom/discoverable.wav
        fi
        bluetoothctl discoverable on
        ifconfig wlan0 up &
    fi
fi

Without the --single-audio bluealsa-aplay arg it's possible for multiple devices to stream audio at the same time. I'm not sure if this is intentional but in my mind only one device should be able to stream at a time.  --single-audio doesn't stop multiple devices from being connected you can just pause or stop one stream and start the other.

python-dbus has been deprecated for YEARS and should not be used. I plan on rewriting a2dp-agent.py in PyGObject (I know my way around dbus and PyGObject)

A short audio trouble shooting section would also be nice. 99.9% of the time running aplay -l and changing defaults.ctl.card 0 and defaults.pcm.card 0 in /usr/share/alsa/alsa.conf to whatever card you want to be default solves the problem of no sound.

OK here is a rewrite of a2dp-agent.py in python 3 with no python-dbus. The only dependencies are python3 and python3-gi. It is functionally identical to the previous version. But does not use a crusty old version of python and the deprecated python-dbus garbage.
#!/usr/bin/env python3

# Copyright (c) 2020 Jason Gray<EMAIL_ADDRESS># This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

from gi.repository import Gio, GLib

AGENT_IFACE = 'org.bluez.Agent1'
AGENT_PATH = '/test/agent'

class Server:
    def __init__(self, con, path):
        method_outargs = {}
        method_inargs = {}
        for interface in Gio.DBusNodeInfo.new_for_xml(self.__doc__).interfaces:
            for method in interface.methods:
                method_outargs[method.name] = '({})'.format(''.join([arg.signature for arg in method.out_args]))
                method_inargs[method.name] = tuple(arg.signature for arg in method.in_args)
            con.register_object(object_path=path, interface_info=interface, method_call_closure=self._on_method_call)
        self._method_inargs = method_inargs
        self._method_outargs = method_outargs

    def _on_method_call(self, connection, sender, object_path, interface_name, method_name, parameters, invocation):
        args = list(parameters.unpack())
        for i, sig in enumerate(self._method_inargs[method_name]):
            if sig == 'h':
                args[i] = invocation.get_message().get_unix_fd_list().get(args[i])
        try:
            if self._method_outargs[method_name] != '()':
                invocation.return_value(GLib.Variant(out_args, (getattr(self, method_name)(*args),)))
            else:
                invocation.return_value(None)
        except:
            pass

class Agent(Server):
    """
    <!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
    "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
    <node>
        <interface name="org.bluez.Agent1">
            <method name="Release" />
            <method name="RequestPinCode">
                <arg direction="in" type="o" />
                <arg direction="out" type="s" />
            </method>
            <method name="DisplayPinCode">
                <arg direction="in" type="o" />
                <arg direction="in" type="s" />
            </method>
            <method name="RequestPasskey">
                <arg direction="in" type="o" />
                <arg direction="out" type="u" />
            </method>
            <method name="DisplayPasskey">
                <arg direction="in" type="o" />
                <arg direction="in" type="u" />
                <arg direction="in" type="q" />
            </method>
            <method name="RequestConfirmation">
                <arg direction="in" type="o" />
                <arg direction="in" type="u" />
            </method>
            <method name="RequestAuthorization">
                <arg direction="in" type="o" />
            </method>
            <method name="AuthorizeService">
                <arg direction="in" type="o" />
                <arg direction="in" type="s" />
            </method>
            <method name="Cancel" />
        </interface>
    </node>
    """

    def __init__(self):
        bus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None)
        self._pin_code = GLib.Variant('s', '0000')
        self._pass_key = GLib.Variant('u', 0000)
        self._trust_variant = GLib.Variant('(ssb)', ('org.bluez.Device1', 'Trusted', True))
        Gio.bus_own_name_on_connection(bus, AGENT_IFACE, Gio.BusNameOwnerFlags.NONE, None, None)
        Server.__init__(self, bus, AGENT_PATH)

    def _trust(self, path):
        props = Gio.DBusProxy.new_for_bus_sync(
            Gio.BusType.SYSTEM,
            Gio.DBusProxyFlags.NONE,
            None,
            'org.bluez',
            path,
            'org.freedesktop.DBus.Properties',
            None
        )
        props.call_sync(
            'Set',
            self._trust_variant,
            Gio.DBusCallFlags.NONE,
            -1,
            None
        )

    def Release(self):
       mainloop.quit()

    def RequestPinCode(self, device):
        self._trust(device)
        return self._pin_code

    def DisplayPinCode(self, device, pincode):
        pass

    def RequestPasskey(self, device):
        self._trust(device)
        return self._pass_key

    def DisplayPasskey(self, device, passkey, entered):
        pass

    def RequestConfirmation(self, device, passkey):
        self._trust(device)

    def RequestAuthorization(self, device):
        self._trust(device)

    def AuthorizeService(self, device, uuid):
        self._trust(device)

    def Cancel(self):
        pass

    def Introspect(self):
        return self.__doc__

if __name__ == '__main__':
    agent = Agent()
    manager = Gio.DBusProxy.new_for_bus_sync(
        Gio.BusType.SYSTEM,
        Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES,
        None,
        'org.bluez',
        '/org/bluez',
        'org.bluez.AgentManager1',
        None
    )
    manager.call_sync(
        'RegisterAgent',
        GLib.Variant('(os)', (AGENT_PATH, 'NoInputNoOutput')),
        Gio.DBusCallFlags.NONE,
        -1,
        None
    )
    manager.call_sync(
        'RequestDefaultAgent',
        GLib.Variant('(o)', (AGENT_PATH,)),
        Gio.DBusCallFlags.NONE,
        -1,
        None
    )
    mainloop = GLib.MainLoop()
    mainloop.run()

Well doing a little debugging revealed that none of the methods in the agent are even called in NoInputNoOutput mode so it's pointless to even use it. bluez-tools`` has  bt-agentbuilt into it that's written in C that does the exact same thing (basically nothing) you can start it withbt-agent --capability=NoInputNoOutputSo you can ditch thepython-gobjectandpython-dbus``` dependencies all together.

Thanks @JasonLG1979 for the great suggestions!
The solutino with bt-agent looks great, would be awesome to finally get rid of a2dp-agent.py and its dependencies! I did not have time to test it, but it looks promising!
As for the --single-audio argument: currently it is possible to play with multiple devices simultaneously, because either the ALSA device supports hardware mixing, or the dmix plugin is used. I thought this behaviour avoids quite some complexity when it comes to switching between sources. Projects like HiFiBerryOS only allow one source at once (with the benefit to be able to use the ALSA device exclusively) but take quite some effort to achieve this, especially when also AirPlay and Spotify is used.
Unprivileged user for bluealsa: I do not really think this is necessary: the only purpose of the device is playing audio, so event if it becomes possible to gain root access (due to a security hole), the device is compromised anyway. So I'd like to avoid the complexity of adding and managing users apart from what Debian brings along with its packages...

The solutino with bt-agent looks great, would be awesome to finally get rid of a2dp-agent.py and its dependencies! I did not have time to test it, but it looks promising!

I've been playing with bt-agent for a couple days and it works as intended but it hangs on shutdown for several minutes on my pi zero. It predates systemd and doesn't seem to play well with it as far as gracefully shutting down when asked. I'm in the process of re-rewriting a2dp-agent.py and incorperating python-systemd to provide tight systemd integration.

As for the --single-audio argument: currently it is possible to play with multiple devices simultaneously, because either the ALSA device supports hardware mixing, or the dmix plugin is used. I thought this behaviour avoids quite some complexity when it comes to switching between sources. Projects like HiFiBerryOS only allow one source at once (with the benefit to be able to use the ALSA device exclusively) but take quite some effort to achieve this, especially when also AirPlay and Spotify is used.

--single-audio shouldn't effect any other service. It only makes sure that only one bluetooth stream is playable at a time.

Unprivileged user for bluealsa: I do not really think this is necessary: the only purpose of the device is playing audio, so event if it becomes possible to gain root access (due to a security hole), the device is compromised anyway.

I'm going to have to disagree with you on this. Creating a bluetooth device that accepts all pairs and that is potentially connected to your network is a huge security hole in and of itself. It's not a matter of if the pi can be compromised or even if you care that it is. It's a matter of the fact that the pi can be used as a stepping stone into your otherwise secure network. IMHO the bluetooth service shouldn't even be ran as root in this situation. There is already bluetooth and audio groups by default it's trivial to create an unprivileged system user and add them to just those groups. If you insist on not following my advice then at least disable bluetooth networking with  --noplugin=network in the bluetooth.service unit file.

Here is a rewrite of a2dp-agent.py with systemd integration.
The dependencies are  python3 python3-gi python3-systemd on bluetooth 2.1 or higher devices it's basically a noop (nothing in the agent class is ever called) because of "Just works" pairing but for pre 2.1 devices it will reject any attempt to use any service but A2DP.
To use this you'll need to add  Type=notify in the  [Service] section of a2dp-agent.service unit file because though the magic of python3-systemd a2dp-agent.py tells systemd when it's ready and will gracefully exit and pass error messages on failure that can be read with systemctl status a2dp-agent.service.

I'd like to throw bt-agent into the discussion again: it does just this (be a simple Bluetooth agent that does NoInputNoOutput and does not have any dependencies. This eliminates the need of Python on the system, is pre-compiled and already supplied with Debian/Raspberry Pi OS.
I added this in #64. The shutdown problems you mentioned is because of a bug in the signal handlers, see khvzak/bluez-tools#30. The systemd unit in the PR works around this.

I'd like to throw bt-agent into the discussion again: it does just this (be a simple Bluetooth agent that does NoInputNoOutput and does not have any dependencies. This eliminates the need of Python on the system, is pre-compiled and already supplied with Debian/Raspberry Pi OS.
I added this in #64. The shutdown problems you mentioned is because of a bug in the signal handlers, see khvzak/bluez-tools#30. The systemd unit in the PR works around this.

If that does the trick then I say use it.

Next up is bthelper, specifically /usr/bin/bthelper it's a shell script that doesn't really seem to do anything on my pi zero (because I use it's on board bt) except turn bluetooth on and off again and cause a Failed to set privacy: Rejected (0x0b) error in the bluetooth.service.
The script states this in the comments about cycling on and off:
# Force reinitialisation to allow extra features such as Secure Simple Pairing
# to be enabled

After nooping the script with exit 0 I can confirm that it's pretty much useless as Simple Pairing is enabled by default anyway and you set sspmode 1 (I'm still not sure what that does? The hciconfig docs kinda suck...)
hciconfig hci0 sspmode
hci0:	Type: Primary  Bus: UART
	BD Address: B8:27:EB:5B:28:8E  ACL MTU: 1021:8  SCO MTU: 64:1
	Simple Pairing mode: Enabled

That is without your<EMAIL_ADDRESS>

sspmode 1 I guess just enables Secure Simple Pairing so that's redundant also as as I've said it's enabled by default.

hciconfig %I piscan is also redundant as both PSCAN ISCAN are also enabled by default.

hciconfig hci0 -a
hci0:	Type: Primary  Bus: UART
	BD Address: B8:27:EB:5B:28:8E  ACL MTU: 1021:8  SCO MTU: 64:1
	UP RUNNING PSCAN ISCAN
	RX bytes:816 acl:0 sco:0 events:56 errors:0
	TX bytes:3027 acl:0 sco:0 commands:56 errors:0
	Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
	Link policy: RSWITCH SNIFF
	Link mode: SLAVE ACCEPT
	Name: 'PiZero'
	Class: 0x040428
	Service Classes: Rendering
	Device Class: Audio/Video, HiFi Audio Device
	HCI Version: 4.1 (0x7)  Revision: 0x1ed
	LMP Version: 4.1 (0x7)  Subversion: 0x2209
	Manufacturer: Broadcom Corporation (15)

I've set my device class to 0x040428 if that matters.

Did you check if sspmode is also enabled by default on external (USB) Bluetooth dongles? The internal Bluetooth chip is really really not suitable for audio transmission (on any Raspberry Pi, I wasted so much time trying, it sucks), so it needs to work with dongles.

Did you check if sspmode is also enabled by default on external (USB) Bluetooth dongles?

No I have not but from what I understand Bluez 5 enables it by default if the device supports it.

The internal Bluetooth chip is really really not suitable for audio transmission (on any Raspberry Pi, I wasted so much time trying, it sucks), so it needs to work with dongles.

I've had no problems on a pi zero after I increased the  pcm-buffer-time to 1000000.

On a zero you can also try disabling the serial console, overclocking it, setting the cpu governor to performance, and renicing bluetooth related stuff. In my experience it's more about the transmitting device. My computer and phone do really well with the zero stock. My 5th gen fire 7 (with LineageOS 12.1 (android 5.1)) drops out from time to time unless I tweak the zero a bit.

Here are a couple other suggestions:

Disable unneeded bluetooth plugins in the bluetooth.service file with --noplugin=sap,network,hog,health,midi. The sap plugin in particular causes bluetoothd to throw an error.

set the Type to dbus and the BusName to org.bluealsa in the bluealsa service file to stop bluealsa-aplay from throwing an error about not finding the busname in any service file and not being able to find devices.

I'll add the Type=dbus enhancements, this seems like a good thing that may help  on timing issues on startup. Maybe I'll add the User/Group settings commented out (like the in the BlueALSA docs), so people can opt-in by themselves (as this involves quite some steps to achieve, including changing the dbus configuration, I'd like to keep this as optional).

--noplugin=sap is also an easy way to work around a startup bug in bluetoothd unless you plan on accessing your phone's SIM card with your Raspberry Pi,lol!!!
https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#SIM_Access_Profile_(SAP,_SIM,_rSAP)

OK here is a rewrite of a2dp-agent.py in python 3 with no python-dbus. The only dependencies are python3 and python3-gi. It is functionally identical to the previous version. But does not use a crusty old version of python and the deprecated python-dbus garbage.
#!/usr/bin/env python3

# Copyright (c) 2020 Jason Gray<EMAIL_ADDRESS># This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

from gi.repository import Gio, GLib

AGENT_IFACE = 'org.bluez.Agent1'
AGENT_PATH = '/test/agent'

class Server:
    def __init__(self, con, path):
        method_outargs = {}
        method_inargs = {}
        for interface in Gio.DBusNodeInfo.new_for_xml(self.__doc__).interfaces:
            for method in interface.methods:
                method_outargs[method.name] = '({})'.format(''.join([arg.signature for arg in method.out_args]))
                method_inargs[method.name] = tuple(arg.signature for arg in method.in_args)
            con.register_object(object_path=path, interface_info=interface, method_call_closure=self._on_method_call)
        self._method_inargs = method_inargs
        self._method_outargs = method_outargs

    def _on_method_call(self, connection, sender, object_path, interface_name, method_name, parameters, invocation):
        args = list(parameters.unpack())
        for i, sig in enumerate(self._method_inargs[method_name]):
            if sig == 'h':
                args[i] = invocation.get_message().get_unix_fd_list().get(args[i])
        try:
            if self._method_outargs[method_name] != '()':
                invocation.return_value(GLib.Variant(out_args, (getattr(self, method_name)(*args),)))
            else:
                invocation.return_value(None)
        except:
            pass

class Agent(Server):
    """
    <!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
    "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
    <node>
        <interface name="org.bluez.Agent1">
            <method name="Release" />
            <method name="RequestPinCode">
                <arg direction="in" type="o" />
                <arg direction="out" type="s" />
            </method>
            <method name="DisplayPinCode">
                <arg direction="in" type="o" />
                <arg direction="in" type="s" />
            </method>
            <method name="RequestPasskey">
                <arg direction="in" type="o" />
                <arg direction="out" type="u" />
            </method>
            <method name="DisplayPasskey">
                <arg direction="in" type="o" />
                <arg direction="in" type="u" />
                <arg direction="in" type="q" />
            </method>
            <method name="RequestConfirmation">
                <arg direction="in" type="o" />
                <arg direction="in" type="u" />
            </method>
            <method name="RequestAuthorization">
                <arg direction="in" type="o" />
            </method>
            <method name="AuthorizeService">
                <arg direction="in" type="o" />
                <arg direction="in" type="s" />
            </method>
            <method name="Cancel" />
        </interface>
    </node>
    """

    def __init__(self):
        bus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None)
        self._pin_code = GLib.Variant('s', '0000')
        self._pass_key = GLib.Variant('u', 0000)
        self._trust_variant = GLib.Variant('(ssb)', ('org.bluez.Device1', 'Trusted', True))
        Gio.bus_own_name_on_connection(bus, AGENT_IFACE, Gio.BusNameOwnerFlags.NONE, None, None)
        Server.__init__(self, bus, AGENT_PATH)

    def _trust(self, path):
        props = Gio.DBusProxy.new_for_bus_sync(
            Gio.BusType.SYSTEM,
            Gio.DBusProxyFlags.NONE,
            None,
            'org.bluez',
            path,
            'org.freedesktop.DBus.Properties',
            None
        )
        props.call_sync(
            'Set',
            self._trust_variant,
            Gio.DBusCallFlags.NONE,
            -1,
            None
        )

    def Release(self):
        mainloop.quit()

    def RequestPinCode(self, device):
        self._trust(device)
        return self._pin_code

    def DisplayPinCode(self, device, pincode):
        pass

    def RequestPasskey(self, device):
        self._trust(device)
        return self._pass_key

    def DisplayPasskey(self, device, passkey, entered):
        pass

    def RequestConfirmation(self, device, passkey):
        self._trust(device)

    def RequestAuthorization(self, device):
        self._trust(device)

    def AuthorizeService(self, device, uuid):
        self._trust(device)

    def Cancel(self):
        pass

    def Introspect(self):
        return self.__doc__

if __name__ == '__main__':
    agent = Agent()
    manager = Gio.DBusProxy.new_for_bus_sync(
        Gio.BusType.SYSTEM,
        Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES,
        None,
        'org.bluez',
        '/org/bluez',
        'org.bluez.AgentManager1',
        None
    )
    manager.call_sync(
        'RegisterAgent',
        GLib.Variant('(os)', (AGENT_PATH, 'NoInputNoOutput')),
        Gio.DBusCallFlags.NONE,
        -1,
        None
    )
    manager.call_sync(
        'RequestDefaultAgent',
        GLib.Variant('(o)', (AGENT_PATH,)),
        Gio.DBusCallFlags.NONE,
        -1,
        None
    )
    mainloop = GLib.MainLoop()
    mainloop.run()

Somehow (ssb) doesn't work - use (ssv).

self._trust_variant = GLib.Variant('(ssv)', ('org.bluez.Device1', 'Trusted', GLib.Variant.new_boolean(True)))
Thanks @JasonLG1979 and @nicokaiser

@pucgenie, That's weird. type v is a string type I though? Anyway it's neither here nor there. bt-agent does the same thing with less dependencies so that's my choice. Here is a step by step guide to how I set everything up.
https://github.com/JasonLG1979/PiZero-Bluetooth-Audio-Receiver

https://github.com/JasonLG1979/PiZero-Bluetooth-Audio-Receiver

Thanks @JasonLG1979.
I struggled with these repo scripts for a while, with no success in getting bluetooth enabled.  I see a lot of explanations and workarounds kicking around.  I didn't have the appetite to keep debugging after an hour or so.
Your repo, though only instructions, worked out of the box.  I think too much has changed since these scripts were written. I'm on Pi Zero W Raspberry Pi OS -- "2021-05-07-raspios-buster-armhf-lite"
Thanks again.  Now I'm finally off to customizing...

Since this little script now achieves Bluetooth connectivity using PulseAudio (instead of BlueALSA, which is not included in Raspberry Pi OS 11 anymore), I'm now closing the related tickets. Hope PulseAudio works better...


docs(list): add usage demo & enhan responsive grid

Types of changes

[ ] New feature
[ ] Bug fix
[x] Enhancement
[ ] Component style change
[ ] Typescript definition change
[x] Documentation change
[ ] Coding style change
[ ] Refactoring
[ ] Test cases
[ ] Continuous integration
[ ] Breaking change
[ ] Others

Background and context

Solution

How is the change tested?

Changelog

Type
Component
Changelog(CN)
Changelog(EN)
Related issues

docs
list
新增使用案例
add usage demo
-

feat
list
支持响应式网格布局参数
support responsive grid props
-

Checklist:

[ ] Test suite passes (npm run test)
[ ] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
[ ] Changes are submitted to the appropriate branch (e.g. features should be submitted to feature branch and others
should be submitted to main branch)

Other information

🤔 响应式网格没有任何结构修改，仅算是一直使用增强

更新到2.37.0 a-list组件不能使用了，   最基本的 123123 不显示，只显示一条横线


File Upload

Is it possible to upload files like csv to analyze? What might be the basic roadmap to realize it?

Hi @NeverOccurs this isn't in the ai-artifacts project yet but E2B sandboxes support that and we want to add it here

Hi @NeverOccurs this isn't in the ai-artifacts project yet but E2B sandboxes support that and we want to add it here

That would be cool. Really great work thanks!

please add it! great stuff!


Don’t emit the html for hot-update compilation.

<EMAIL_ADDRESS>seems to be emitting hot update bundles separately from the full bundle. This makes HtmlWebpackPlugin mistake it for the real bundle, and generates a HTML file that looks like this:
<script src="0.8f9c33574d86dd9eab0d.hot-update.js"></scriptt>

This commit uses quite a hack to check if the emitted bundle is a hot-update bundle, and skip emitting index.html file.

Cool would love to merge this - could you please add a test? Should be possible with the caching test spec.

Not sure how to test this but here is my scenario:

start my app with --hot and --inline
rebuild a file that have a change that is not handled by the HMR (eg: a very simple change in your entry point)
webpack refresh the full page, but this plugin is serving a hot-update instead of the expected chunks

This PR definitely solved the issue for me, hope to get it merged :)

This is related to the fact that webpack 2 now use a 2 passes build step for hot loaded stuff

Child html-webpack-plugin for "index.html":
chunk    {0} index.html 505 kB
Compilation needs an additional pass and will compile again.
webpack: bundle is now VALID.

Here is a raw debug where you can see the chunks details

Hope that helps to understand the problem

I will try to write a test with https://github.com/jantimon/webpack-recompilation-simulator


ERR_REQUIRE_ESM error when using @textile/eth-storage

Describe the bug
yarn run v1.22.10
$ next dev
ready - started server on <IP_ADDRESS>:3000, url: http://localhost:3000
info  - Using webpack 4. Reason: webpack5 flag is set to false in next.config.js https://nextjs.org/docs/messages/webpack5
event - compiled successfully
event - build page: /next/dist/pages/_error
wait  - compiling...
event - compiled successfully
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module<EMAIL_ADDRESS>require() of ES modules is not supported.
require() of<EMAIL_ADDRESS>from /userxxx/aproject/.next/server/pages/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename<EMAIL_ADDRESS>to end in .cjs, change the requiring code to use import(), or remove "type": "module" from<EMAIL_ADDRESS>
    at new NodeError (internal/errors.js:322:7)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1102:13)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at eval (webpack-internal:///@textile/eth-storage:1:18)
    at Object.@textile/eth-storage (/userxxx/aproject/.next/server/pages/index.js:149:1)
    at __webpack_require__ (/userxxx/aproject/.next/server/pages/index.js:23:31)
    at eval (webpack-internal:///./pages/index.js:18:78)
    at Module../pages/index.js (/userxxx/aproject/.next/server/pages/index.js:138:1)
    at __webpack_require__ (/userxxx/aproject/.next/server/pages/index.js:23:31)
    at /userxxx/aproject/.next/server/pages/index.js:91:18
    at Object.<anonymous> (/userxxx/aproject/.next/server/pages/index.js:94:10)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at requirePage (/userxxx/aproject/node_modules/next/dist/next-server/server/require.js:1:1519)
    at loadComponents (/userxxx/aproject/node_modules/next/dist/next-server/server/load-components.js:1:1442) {
  code: 'ERR_REQUIRE_ESM'
}

To Reproduce
Steps to reproduce the behavior:
follow https://eth.storage/javascript/#eth--polygon in a next.js project.

Expected behavior
no ERR_REQUIRE_ESM error
Additional context
After I remove "type": "module" from<EMAIL_ADDRESS>and<EMAIL_ADDRESS>this problem solved, but it's not friendly to users.

It has problem on macos, node v14.18.0.
It's ok on linux, node v14.17.2.
Close it.  Maybe it's related to node version or difference between systems.

It has problem on   macos, node v14.18.0.  while running next dev
It has same problem on linux, node v14.17.2, while running next build


Incorrect evals output when used via XGBClassifier interface

I was getting some funky behavior when using evals via XGBClassifier. I believe it's due to line 322 in sklearn.py. When creating the evals DMatrix, missing should be set to self.missing, the same as in train_dmatrix.

Could you provide some reproducible example? Pull requests are more than welcomed!

import xgboost as xgb
import numpy as np

from sklearn.metrics import roc_auc_score
from sklearn.cross_validation import StratifiedKFold

np.random.seed(10)
X = np.random.randint(-1, 2, 100)[:, np.newaxis]
y = np.int64(np.random.rand(100) < .5)

train, valid = list(StratifiedKFold(y, 4))[1]
X_train = X[train]
X_valid = X[valid]
y_train = y[train]
y_valid = y[valid]

clf = xgb.XGBClassifier(n_estimators=1, objective='binary:logistic', silent=True)

clf.fit(X_train, y_train, eval_metric='auc',
         eval_set=[(X_valid, y_valid)])
preds = clf.predict_proba(X_valid)[:, 1]
print('The roc score reported by roc_auc_score: {}'.format(roc_auc_score(y_valid, preds)))

The validation_0 auc and roc_auc_score should be the same

@lwoloszy Thanks! I've made a fix at 7606bf8. Could you try it again?

perfect


Prefer named methods over "apply"

The List and Map collection objects both use apply(...) to retrieve an item.
I think spelling it out is preferable here, i.e. get(...). Note that for Map we already have get_or_else(...).
The argument is two-fold:

It makes it clear at the call-site what is happening.
It encourages using "apply" only for function-like objects (which might be an anti-pattern in the first place) or for factories.

Note that this is submitted as an issue since "changing shape does not change meaning".

I also think it would make it easier for a person learning to code Pony (like me) if there was a 'get' function for retrieving.

@malthe are you suggesting adding get or are you suggesting removing apply and replacing with get ?
If it is the latter, then this should go through RFC process.
Re your arguments:

map(key) is in my mind, quite clear at the call site what is going on.
before you convince me with that argument, you'll need to explain why you consider that encouragement a good thing.

In general, this feels very much like a candidate for an RFC no matter what, given the nature of the large change to current API and what sounds like arguments about changing the common usage of apply across the standard library and existing codebases.

Yes, I think this would be an RFC candidate either way, since either is an API change that isn't a bugfix or a correction to an accidental API mistake - when these APIs were being designed, they were designed to use the apply and update sugar, since they look like element access operations in other languages.  For whatever it's worth, I'd like to keep it that way, but I can't stop you from filing an RFC to make your case.

Closing this and opening as RFC.

I added an RFC pull requests: https://github.com/ponylang/rfcs/pull/3.
@SeanTAllen, I think map(key) is problematic because unlike in mathematics, you are allowed to attempt getting a value for a missing key. It is a leaky abstraction if you will. Having map.get(key) is to my mind clearer.
In C++ you would first get an iterator with map.find(key) and then continue based on this intermediate result. The RFC argues that we have to be careful to not mismatch the interface with the underlying algorithm.


SDK-173 update native sdks

Updates iOS native SDK to 0.25.11.
Updates Android native SDK to 3.0.4.
Also update Android build update script and support the change from jar to aar.

Overall it looks good. Lets walk through it tomorrow and build it on my machine.


[WIP] Resolve memory issue with SMIRNOFF by moving pipeline to GROMACS

Moves the whole pipeline to use GROMACS topology/coordinate files rather than AMBER (whether or not SMIRNOFF is used), resolving #5 . Also brings in updated license ( #4 ).
Testing on my cluster still.
@kyleabeauchamp - OK if I do a v0.0.1 point release (or similar -- your choice on version number) before this gets merged for the record? Specifically, I am doing a repeat of your benchmark on my cluster with the version prior to this PR, so it'd be nice if I had a point release I could say I did it with. :)

A v0.0.1 point release prior to change sounds like a great idea.

Will take a closer work after work.

Overall LGTM.  One thought is that code/munge_output_gromacs.py seems to be identical to the previous amber version, so it might be possible to just use one script that generalizes to both cases---particularly because the output file types are likely not dependent on the MD engine.

Yup, sort of already done. I was actually just lazy/didn't want to break anything so I left munge_output_amber.py there but removed everything which uses it and shifted the full pipeline to use GROMACS format. Now I'll actually remove that script.

I'll go ahead and merge for now but if there are other issues we can address in a separate PR. I'll get to testing this on larger scale today hopefully (have already verified it runs locally, at debug length).


Fix copy-and-paste bug in orbit_service::Process

This bug/crash only appeared on the error case because the error message
generating logic was accessing the wrong result variable, most likely
introduced due to copy-and-paste.
Test: Compiles. Tests run.
Bug: http://b/169121244
Anton, I will assign this to you for review - and to a random person on the team.

I'm currently thinking about improving the tests here: Ideally we test all the error branches. But since this code reads from the "real" /proc this will be hard to do without mocking "/proc". Any ideas/suggestions?

I'm currently thinking about improving the tests here: Ideally we test all the error branches. But since this code reads from the "real" /proc this will be hard to do without mocking "/proc". Any ideas/suggestions?

Well we could mock utils::ReadFileToString and make it return what we would like to return. As this is non-virtual, this is a bit tricky though. But I guess we should go that direction.

I like flos suggestion with mocking ReadFileToString, but this should only be an addition and at least one test reading the /proc should be there.
Thank you for fixing this bug!

Yeah, mocking ReadFileToString can be done easily, even without virtual functions but it also complicates the code quite a bit. Ideally unit test should make reading code easier, not harder.
That's why I'm currently thinking about making the procfs-mountpoint adjustable. Right now it's hard coded to /proc. Making this changeable would allow tests to point to some prepared fake-directory and the cognitive overhead is similar to removing a magic constant. WDYT?
Anyway I'm not planning on doing this in this PR because this fix should go into 1.53

I like flos suggestion with mocking ReadFileToString, but this should only be an addition and at least one test reading the /proc should be there.
Thank you for fixing this bug!

Yeah, mocking ReadFileToString can be done easily, even without virtual functions but it also complicates the code quite a bit. Ideally unit test should make reading code easier, not harder.
That's why I'm currently thinking about making the procfs-mountpoint adjustable. Right now it's hard coded to /proc. Making this changeable would allow tests to point to some prepared fake-directory and the cognitive overhead is similar to removing a magic constant. WDYT?
Anyway I'm not planning on doing this in this PR because this fix should go into 1.53

SGTM. I see that making non-virtual functions mockable, makes the code less readable, so this sounds like a plan.

I like flos suggestion with mocking ReadFileToString, but this should only be an addition and at least one test reading the /proc should be there.
Thank you for fixing this bug!

Yeah, mocking ReadFileToString can be done easily, even without virtual functions but it also complicates the code quite a bit. Ideally unit test should make reading code easier, not harder.
That's why I'm currently thinking about making the procfs-mountpoint adjustable. Right now it's hard coded to /proc. Making this changeable would allow tests to point to some prepared fake-directory and the cognitive overhead is similar to removing a magic constant. WDYT?
Anyway I'm not planning on doing this in this PR because this fix should go into 1.53

SGTM. I see that making non-virtual functions mockable, makes the code less readable, so this sounds like a plan.

Great. Thank you both!


npm start can not start

$ npm start

<EMAIL_ADDRESS>start D:\Works\GiftedAgent\bitcore-wallet-service
./start.sh

'.' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: ./start.sh
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\Leon Zhang\AppData\Roaming\npm-cache_logs\2018-12-19T01_21_26_648Z-debug.log
Log file as follow:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\Program Files\nodejs\node.exe',
1 verbose cli   'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli   'start' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>6 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>7 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true
8 verbose lifecycle<EMAIL_ADDRESS>PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\Works\GiftedAgent\bitcore-wallet-service\node_modules.bin;C:\Users\Leon Zhang\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Leon Zhang\bin;C:\Program Files\Java\jdk1.8.0_181\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\libnvvp;C:\Program Files\Microsoft MPI\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\dotnet;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\MySQL\MySQL Utilities 1.6;C:\Program Files\EmEditor;D:\Works\LIV\confuserex-reborn\Release\bin;C:\Program Files\CMake\bin;C:\Program Files (x86)\Yarn\bin;C:\Program Files\kotlinc\bin;C:\Program Files\nodejs;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Python37\Scripts;C:\Python37;C:\Users\Leon Zhang\AppData\Local\Microsoft\WindowsApps;C:\Users\Leon Zhang\AppData\Local\atom\bin;C:\Users\Leon Zhang\AppData\Local\Microsoft\WindowsApps;D:\ProgramFiles\apache-maven-3.5.4\bin;C:\Users\Leon Zhang\AppData\Local\Yarn\bin;C:\Users\Leon Zhang\AppData\Roaming\npm;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl
9 verbose lifecycle<EMAIL_ADDRESS>CWD: D:\Works\GiftedAgent\bitcore-wallet-service
10 silly lifecycle<EMAIL_ADDRESS>Args: [ '/d /s /c', './start.sh' ]
11 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
12 info lifecycle<EMAIL_ADDRESS>Failed to exec start script
13 verbose stack Error<EMAIL_ADDRESS>start: ./start.sh
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:285:16)
13 verbose stack     at EventEmitter.emit (events.js:180:13)
13 verbose stack     at ChildProcess. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:180:13)
13 verbose stack     at maybeClose (internal/child_process.js:936:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
14 verbose pkgid<EMAIL_ADDRESS>15 verbose cwd D:\Works\GiftedAgent\bitcore-wallet-service
16 verbose Windows_NT 10.0.17134
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "start"
18 verbose node v9.11.2
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error<EMAIL_ADDRESS>start: ./start.sh
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Is there any dependency package need to be installed?

No, running on MINGW64, which almost all my nodejs applications running on.

Redeployed on Ubuntu on Windows, but it says
Connection refused.
When access the wallet API URL

Could you tell us more about the last error?
On Sat, Dec 22, 2018, 2:15 PM Leon-Zhang<EMAIL_ADDRESS>wrote:

Redeployed on Ubuntu on Windows, but it says
Connection refused.
When access the wallet API URL
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bitpay/bitcore-wallet-service/issues/817#issuecomment-449585066,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGCHIWuKB98f_ME7juEHJPp9GGfaeMCks5u7mi7gaJpZM4ZZfmU
.

Could you tell us more about the last error?
…
On Sat, Dec 22, 2018, 2:15 PM Leon-Zhang @.*** wrote: Redeployed on Ubuntu on Windows, but it says Connection refused. When access the wallet API URL — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#817 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGCHIWuKB98f_ME7juEHJPp9GGfaeMCks5u7mi7gaJpZM4ZZfmU .

leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start

<EMAIL_ADDRESS>start /home/leonzh/Works/bitcore-wallet-service
./start.sh

Successfully started locker/locker.js. PID=1411. Logs are at logs/locker.log
Successfully started messagebroker/messagebroker.js. PID=1412. Logs are at logs/messagebroker.log
Successfully started bcmonitor/bcmonitor.js. PID=1413. Logs are at logs/bcmonitor.log
Successfully started emailservice/emailservice.js. PID=1414. Logs are at logs/emailservice.log
Successfully started pushnotificationsservice/pushnotificationsservice.js. PID=1419. Logs are at logs/pushnotificationsservice.log
Successfully started fiatrateservice/fiatrateservice.js. PID=1424. Logs are at logs/fiatrateservice.log
Successfully started bws.js. PID=1429. Logs are at logs/bws.log
leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start

<EMAIL_ADDRESS>start /home/leonzh/Works/bitcore-wallet-service
./start.sh

locker/locker.js is already running. Run 'npm stop' if you wish to restart.
messagebroker/messagebroker.js is already running. Run 'npm stop' if you wish to restart.
bcmonitor/bcmonitor.js is already running. Run 'npm stop' if you wish to restart.
emailservice/emailservice.js is already running. Run 'npm stop' if you wish to restart.
pushnotificationsservice/pushnotificationsservice.js is already running. Run 'npm stop' if you wish to restart.
fiatrateservice/fiatrateservice.js is already running. Run 'npm stop' if you wish to restart.
bws.js is already running. Run 'npm stop' if you wish to restart.
When I try to access http://localhost:3232/bws/api, chrome says,
This site can’t be reached localhost refused to connect.
Search Google for localhost 3232 bws api
ERR_CONNECTION_REFUSED

Can you send the output of logs/bws.log?
It seems the deamon is failind to start.
Do you have mongod running?
On Sun, Dec 23, 2018, 1:58 AM Leon-Zhang<EMAIL_ADDRESS>wrote:

Could you tell us more about the last error?
… <#m_32677044021963270_>
On Sat, Dec 22, 2018, 2:15 PM Leon-Zhang @.*** wrote: Redeployed on
Ubuntu on Windows, but it says Connection refused. When access the wallet
API URL — You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub <#817 (comment)
https://github.com/bitpay/bitcore-wallet-service/issues/817#issuecomment-449585066>,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGCHIWuKB98f_ME7juEHJPp9GGfaeMCks5u7mi7gaJpZM4ZZfmU
.
leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start
<EMAIL_ADDRESS>start
/home/leonzh/Works/bitcore-wallet-service
./start.sh
Successfully started locker/locker.js. PID=1411. Logs are at
logs/locker.log
Successfully started messagebroker/messagebroker.js. PID=1412. Logs are at
logs/messagebroker.log
Successfully started bcmonitor/bcmonitor.js. PID=1413. Logs are at
logs/bcmonitor.log
Successfully started emailservice/emailservice.js. PID=1414. Logs are at
logs/emailservice.log
Successfully started pushnotificationsservice/pushnotificationsservice.js.
PID=1419. Logs are at logs/pushnotificationsservice.log
Successfully started fiatrateservice/fiatrateservice.js. PID=1424. Logs
are at logs/fiatrateservice.log
Successfully started bws.js. PID=1429. Logs are at logs/bws.log
leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start
<EMAIL_ADDRESS>start
/home/leonzh/Works/bitcore-wallet-service
./start.sh
locker/locker.js is already running. Run 'npm stop' if you wish to restart.
messagebroker/messagebroker.js is already running. Run 'npm stop' if you
wish to restart.
bcmonitor/bcmonitor.js is already running. Run 'npm stop' if you wish to
restart.
emailservice/emailservice.js is already running. Run 'npm stop' if you
wish to restart.
pushnotificationsservice/pushnotificationsservice.js is already running.
Run 'npm stop' if you wish to restart.
fiatrateservice/fiatrateservice.js is already running. Run 'npm stop' if
you wish to restart.
bws.js is already running. Run 'npm stop' if you wish to restart.
When I try to access http://localhost:3232/bws/api, chrome says,
This site can’t be reached localhost refused to connect.
Search Google for localhost 3232 bws api
ERR_CONNECTION_REFUSED
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/bitpay/bitcore-wallet-service/issues/817#issuecomment-449614589,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGCHMJlwt83Xj2kezrg0GVT92iczSXeks5u7w1ogaJpZM4ZZfmU
.

Can you send the output of logs/bws.log? It seems the deamon is failind to start. Do you have mongod running?
…
On Sun, Dec 23, 2018, 1:58 AM Leon-Zhang @.*** wrote: Could you tell us more about the last error? … <#m_32677044021963270_> On Sat, Dec 22, 2018, 2:15 PM Leon-Zhang @.*** wrote: Redeployed on Ubuntu on Windows, but it says Connection refused. When access the wallet API URL — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#817 (comment) <#817 (comment)>>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGCHIWuKB98f_ME7juEHJPp9GGfaeMCks5u7mi7gaJpZM4ZZfmU . leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start @.*** start /home/leonzh/Works/bitcore-wallet-service ./start.sh Successfully started locker/locker.js. PID=1411. Logs are at logs/locker.log Successfully started messagebroker/messagebroker.js. PID=1412. Logs are at logs/messagebroker.log Successfully started bcmonitor/bcmonitor.js. PID=1413. Logs are at logs/bcmonitor.log Successfully started emailservice/emailservice.js. PID=1414. Logs are at logs/emailservice.log Successfully started pushnotificationsservice/pushnotificationsservice.js. PID=1419. Logs are at logs/pushnotificationsservice.log Successfully started fiatrateservice/fiatrateservice.js. PID=1424. Logs are at logs/fiatrateservice.log Successfully started bws.js. PID=1429. Logs are at logs/bws.log leonzh@LEON-LIV:~/Works/bitcore-wallet-service$ npm start @.*** start /home/leonzh/Works/bitcore-wallet-service ./start.sh locker/locker.js is already running. Run 'npm stop' if you wish to restart. messagebroker/messagebroker.js is already running. Run 'npm stop' if you wish to restart. bcmonitor/bcmonitor.js is already running. Run 'npm stop' if you wish to restart. emailservice/emailservice.js is already running. Run 'npm stop' if you wish to restart. pushnotificationsservice/pushnotificationsservice.js is already running. Run 'npm stop' if you wish to restart. fiatrateservice/fiatrateservice.js is already running. Run 'npm stop' if you wish to restart. bws.js is already running. Run 'npm stop' if you wish to restart. When I try to access http://localhost:3232/bws/api, chrome says, This site can’t be reached localhost refused to connect. Search Google for localhost 3232 bws api ERR_CONNECTION_REFUSED — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#817 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGCHMJlwt83Xj2kezrg0GVT92iczSXeks5u7w1ogaJpZM4ZZfmU .

info Listening on port: 3232
info Limiting wallet creation per IP: 15 req/h
info Limiting estimate fee per IP: 60 req/h
info Using locker server:localhost:3231
ERR! Unable to connect to the mongoDB. Check the credentials.
ERR! Could not initialize MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED <IP_ADDRESS>:27017]
ERR! Could not initialize     at Pool. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\topologies\server.js:336:35)
ERR! Could not initialize     at Pool.emit (events.js:180:13)
ERR! Could not initialize     at Connection. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\pool.js:280:12)
ERR! Could not initialize     at Object.onceWrapper (events.js:272:13)
ERR! Could not initialize     at Connection.emit (events.js:180:13)
ERR! Could not initialize     at Socket. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\connection.js:189:49)
ERR! Could not initialize     at Object.onceWrapper (events.js:272:13)
ERR! Could not initialize     at Socket.emit (events.js:180:13)
ERR! Could not initialize     at emitErrorNT (internal/streams/destroy.js:64:8)
ERR! Could not initialize     at process._tickCallback (internal/process/next_tick.js:178:19)
ERR! Could not initialize  { MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED <IP_ADDRESS>:27017]
ERR! Could not initialize     at Pool. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\topologies\server.js:336:35)
ERR! Could not initialize     at Pool.emit (events.js:180:13)
ERR! Could not initialize     at Connection. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\pool.js:280:12)
ERR! Could not initialize     at Object.onceWrapper (events.js:272:13)
ERR! Could not initialize     at Connection.emit (events.js:180:13)
ERR! Could not initialize     at Socket. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\connection.js:189:49)
ERR! Could not initialize     at Object.onceWrapper (events.js:272:13)
ERR! Could not initialize     at Socket.emit (events.js:180:13)
ERR! Could not initialize     at emitErrorNT (internal/streams/destroy.js:64:8)
ERR! Could not initialize     at process._tickCallback (internal/process/next_tick.js:178:19)
ERR! Could not initialize   name: 'MongoError',
ERR! Could not initialize   message: 'failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED <IP_ADDRESS>:27017]' }
D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb\lib\mongo_client.js:421
throw err
^
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED <IP_ADDRESS>:27017]
at Pool. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\topologies\server.js:336:35)
at Pool.emit (events.js:180:13)
at Connection. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\pool.js:280:12)
at Object.onceWrapper (events.js:272:13)
at Connection.emit (events.js:180:13)
at Socket. (D:\Works\GiftedAgent\bitcore-wallet-service\node_modules\mongodb-core\lib\connection\connection.js:189:49)
at Object.onceWrapper (events.js:272:13)
at Socket.emit (events.js:180:13)
at emitErrorNT (internal/streams/destroy.js:64:8)
at process._tickCallback (internal/process/next_tick.js:178:19)
Seems yes, how I can install mongoDB on MINGW64 on windows?

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/


[berkeley] Fixup feature flag validation for modified ffmul

This PR ports the fix from #13858. This is a breaking change, and as such must be included in the berkeley hard-fork.
Checklist:

[ ] Dependency versions are unchanged

Notify Velocity team if dependencies must change in CI

[ ] Modified the current draft of release notes with details on what is completed or incomplete within this project
[ ] Document code purpose, how to use it

Mention expected invariants, implicit constraints

[ ] Tests were added for the new behavior

Document test purpose, significance of failures
Test names should reflect their purpose

[ ] All tests pass (CI will check this if you didn't)
[ ] Serialized types are in stable-versioned modules
[ ] Does this close issues? List them

!ci-build-me

!approved-for-mainnet


Add random fog breaks to LV

About the PR

Not nightmare inserts but close enough for now so we can add survivors soon
Why / Balance

Technical details

Media

Requirements

[ ] I have read and I am following the Pull Request Guidelines. I understand that not doing so may get my pr closed at maintainer’s discretion
[ ] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog
:cl:

add: Added LV's missing random fog breaks. Every round that LV is chosen as the planet map, one of three spots in the fog will randomly be chosen to be opened up at round-start, located at the far west of the river, the far east, and the bridge near the middle.

lurker gang we up


docs: redesigned the README.md file & add contributing.md file

In README.md we are using basic design/structure but we can customize it. such as we can add tech stacks, links, etc.
Also, we can add separate contributing guide files that will help newcomers to create their first PR

Congratulations on opening your first issue to the project! We will triage this shortly.

@priyankarpal Assigned the issue. All the best.

@priyankarpal Assigned the issue. All the best.

thank you