Overriding of a library seems to work only for those imported in the environment/default/main.jsonnet

My understanding , when reading https://tanka.dev/libraries/overriding, is that any import in any jsonnet file , including those nested in the vendor libraries, should follow the import path and override rules described in the docs
In my testing though the override only seem to work for import performed in the main.jsonnet of the tanka environment
Of course if my understanding is wrong please just close this issue
Example that follow is for cortex
Base Cortex / Tanka setup
➜  tanka-example  tk init
GET https://github.com/ksonnet/ksonnet-lib/archive/0d2f82676817bbf9e4acf6495b2090205f323b9f.tar.gz 200
GET https://github.com/grafana/jsonnet-libs/archive/811ccb022bc2bdcd0b8281ed0a0c858c63e20542.tar.gz 200
Directory structure set up! Remember to configure the API endpoint:
`tk env set environments/default --server=<IP_ADDRESS>:6443`
➜  tanka-example  jb install github.com/grafana/cortex-jsonnet/cortex
GET https://github.com/grafana/cortex-jsonnet/archive/da1e8e75fc697a5cf05a7facbb913436fe9e2393.tar.gz 200
GET https://github.com/grafana/jsonnet-libs/archive/811ccb022bc2bdcd0b8281ed0a0c858c63e20542.tar.gz 200
GET https://github.com/grafana/jsonnet-libs/archive/811ccb022bc2bdcd0b8281ed0a0c858c63e20542.tar.gz 200
GET https://github.com/grafana/jsonnet-libs/archive/811ccb022bc2bdcd0b8281ed0a0c858c63e20542.tar.gz 200

main.jsonnet
$ cat environments/default/main.jsonnet
local cortex = import 'cortex/cortex.libsonnet';

cortex {
  local vars = {
    random_id: 'abcdef',
    project_id: 'project',
    bigtable_name: std.format('cortex-%s', vars.random_id),
    bucket_name: std.format('cortex-%s', vars.random_id),
    cortex_sa_name<EMAIL_ADDRESS>[vars.random_id, vars.project_id]),
  },

  cortex_serviceAccount: serviceAccount.new('cortex') +
                         serviceAccount.mixin.metadata.withAnnotationsMixin({ 'iam.gke.io/gcp-service-account': vars.cortex_sa_name }),

  ingester_deployment+:
    $.apps.v1.deployment.mixin.spec.template.spec.withServiceAccountName('cortex'),

  querier_deployment+:
    $.apps.v1.deployment.mixin.spec.template.spec.withServiceAccountName('cortex'),

  table_manager_deployment+:
    $.apps.v1.deployment.mixin.spec.template.spec.withServiceAccountName('cortex'),

  _config+:: {
    namespace: 'cortex',

    schema: [{
      from: '2020-05-15',
      store: 'bigtable-hashed',
      object_store: 'gcs',
      schema: 'v11',
      index: {
        prefix: 'cortex_index_',
        period: '168h',
      },
      chunks: {
        prefix: 'cortex_chunks_',
        period: '168h',
      },
    }],

    storage_backend: 'gcp',
    bigtable_instance: vars.bigtable_name,
    bigtable_project: vars.project_id,
    gcs_bucket_name: vars.bucket_name,

    memcached_replicas: 1,

    querier+: {
      replicas: 3,
    },

  },
}

With no override, we get 3 memcached replicas ( for example )
$ tk show environments/default --dangerous-allow-redirect -t statefulset/memcached | yq read - 'spec.replicas'
3

Try to override just memached.libsonnet
which is imported by cortex.libsonnet and so not directly imported by enviroment/default/main.jsonnet. For simplicity i will just edit the memcached.libsonnet and replace the replica count
$ mkdir -p lib/cortex && cp vendor/cortex/memcached.libsonnet lib/cortex
$ vim lib/cortex/memcached.libsonnet
$ diff -u vendor/cortex/memcached.libsonnet lib/cortex/memcached.libsonnet
--- vendor/cortex/memcached.libsonnet   2020-05-19 10:45:48.104269344 +0200
+++ lib/cortex/memcached.libsonnet      2020-05-19 11:03:05.983929621 +0200
@@ -9,7 +9,7 @@
     local statefulSet = $.apps.v1beta1.statefulSet,

     statefulSet:
-      statefulSet.new(self.name, 3, [
+      statefulSet.new(self.name, 1, [
         self.memcached_container,
         self.memcached_exporter,
       ], []) +

Rendering with this override does not work , still 3 replicas
$ tk show environments/default --dangerous-allow-redirect -t statefulset/memcached | yq read - 'spec.replicas'
3

Override cortex.libsonnet
to include the local memcached.libsonnet on top of the rest
$ cat lib/cortex/cortex.libsonnet
(import '../../vendor/cortex/cortex.libsonnet') +
(import 'memcached.libsonnet')

Override worked, only one replica for memcached
$ tk show environments/default --dangerous-allow-redirect -t statefulset/memcached | yq read - 'spec.replicas'
1

Hi! While imports overriding actually does work without for other files than main.jsonnet, the official jsonnet.FileImporter implementation (which Tanka also uses) considers local files first, before even looking at the JPATH:
// https://github.com/google/go-jsonnet/blob/d1c1457520c7f81554a973185944a84d0584f8c2/imports.go#L223-L242
func (importer *FileImporter) Import(importedFrom, importedPath string) (contents Contents, foundAt string, err error) {
	dir, _ := path.Split(importedFrom)

        // Here it looks at local files first
	found, content, foundHere, err := importer.tryPath(dir, importedPath)
	if err != nil {
		return Contents{}, "", err
	}

        // Only if that failed at the JPATH
	for i := len(importer.JPaths) - 1; !found && i >= 0; i-- {
		found, content, foundHere, err = importer.tryPath(importer.JPaths[i], importedPath)
		if err != nil {
			return Contents{}, "", err
		}
	}

Because vendor/cortex/cortex.libsonnet does an import of memcached.libsonnet, which is satisified by the local file vendor/cortex/memcached.libsonnet, the FileImporter takes that without checking whether you put a shadowing file into a more specific JPATH.
I just discovered this and did not assume such a behavior when writing both the Tanka code and our docs, so both are incorrect.
In this case this is very counter-intuitive, however it is probably a well-chosen property for other use-cases.
@sbarzowski Can you clarify on this?

First of all, importing was not meant as a mechanism for injecting custom logic / values. For that there are functions, object overriding and extVars. With imports you should know what you're importing and downstream code should not mess with the imports.
In particular if the cortex repo has a local import from the same directory, it's a feature and not a bug that it will always be that file, no matter what. Otherwise you could get really surprising behavior with users who accidentally override libraries, just because they're named the same.
There is one use case for intentional overriding that really makes sense and it's mentioned in Tanka docs. Sometimes you may want to fix a dependency without waiting for upstream. The safest way to do it is to fork the whole package and to never just override a single file. This should work with JPATH, because imports going across packages should use JPATH-rooted files.
So in the @primeroz case it seems possible to switch the memcached/ package or cortex/ package, but you can't override local use of cortex/memcached.libsonnet inside cortex. I think this behavior is reasonable.

@sbarzowski i understnad, it make sense.
I was a bit confused by the docs and i interpreted it as i was able to just override a single file, but maybe is just me.
So if you reckon the docs are clear enough then feel free to close this case.
Thanks for the explanation

The docs are indeed not clear, they were written under the impression that your exact approach works. I'll update them and close this

Documentation has been adapted. Closing this issue

Documentation has been adapted. Closing this issue


[WIP][Doc] Russian Translation

Don't merge this PR yet, it's a work in progress.
Translation progress:

[x] README.md

[x] SUMMARY.md

[x] installation.md

Essentials

[x] getting-started.md
[x] dynamic-matching.md
[x] nested-routes.md
[x] navigation.md
[x] named-routes.md
[x] named-views.md
[x] redirect-and-alias.md
[x] history-mode.md

Advanced

[ ] navigation-guards.md
[ ] meta.md
[ ] transitions.md
[ ] data-fetching.md
[ ] scroll-behavior.md
[ ] lazy-loading.md

API Reference

[ ] router-link.md
[ ] router-view.md
[ ] route-object.md
[ ] options.md
[ ] router-instance.md
[ ] component-injections.md

Proof-reading progress:

[ ] README.md

[ ] SUMMARY.md

[ ] installation.md

Essentials

[ ] getting-started.md
[ ] dynamic-matching.md
[ ] nested-routes.md
[ ] navigation.md
[ ] named-routes.md
[ ] named-views.md
[ ] redirect-and-alias.md
[ ] history-mode.md

Advanced

[ ] navigation-guards.md
[ ] meta.md
[ ] transitions.md
[ ] data-fetching.md
[ ] scroll-behavior.md
[ ] lazy-loading.md

API Reference

[ ] router-link.md
[ ] router-view.md
[ ] route-object.md
[ ] options.md
[ ] router-instance.md
[ ] component-injections.md

Closed and moved to #944 due to inability to change the source branch.


Win. Use uv_key_t to store current thread handle in TLS on Windows prior Vista.

When we use LoadLibrary to load libuv library process gets AV when trying assign to uv__current_thread.
PS. To build it also needs comment '_WIN32_WINNT=0x0600', line in uv.gyp.

ping

This is why I prefer link with dynamic library. In this case you know when you unload.

Well, it's not a matter of preference, we can't break people's code while fixing this.

But because waiting on Sync objects in DllMain is not safe it also quite difficult to stop threads in this stage. So all threads should be stopped in user code (uv_loop_close?) and DllMain could release all sync objects.

uv_loop_close just closes one loop, there might be others running. Maybe we need some "uv_destroy" to destroy all global state created by libuv (or better, try to get rid of it if possible). However, we don't have a public "uv_init", it's done automatically, so this would look weird.

But to do this in LibUV we should support thread safe container of all finalizers.
May be we can just use one critical section and basic linked list to register callback with context?

That sounds way too generic, can you elaborate?
TBH, I don't know a clean way to solve this at this point.

I agree that make libuv uloadable is a difficult task and it needs separate PR.
So I remove dllmain from current PR. Is there reason to not merge this PR?

Is there reason to not merge this PR?

@piscisaureus, WDYT?

Thanks - landed in https://github.com/libuv/libuv/compare/libuv:ebc50ae...libuv:a310248
I removed any cleanup related code. I'm open to supporting proper cleanup for all of libuv, but only if there is a decent strategy to do it.


fix: 回退排序筛选事件变量名

👀 PR includes
🐛 Bugfix

[x] Solve the issue and close #0

📝 Description

s2-core: S2Event

SORT_GROUP_SORT -> RANGE_SORT

SORT_GROUP_SORTED -> RANGE_SORTED

FILTER ->  RANGE_FILTER

FILTERED -> RANGE_FILTERED

s2-react

onGroupSort ->  onRangeSort
onGroupSorted -> onRangeSorted
onFilter -> onRangeFilter
onFiltered ->  onRangeFiltered

:tada: This PR is included in version @antv/s2-v1.9.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version @antv/s2-react-v1.9.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Remove deprecated interfacer linter

What happened:
The golangci-lint linter interfacer has been deprecated.

The linter 'interfacer' is deprecated (since v1.38.0) due to: The repository of the linter has been archived by the owner. "

(from any of our Go linting CI)
What you expected to happen:
There is no recommended alternative.

Deprecated: A tool that suggests interfaces is prone to bad suggestions, so its usefulness in real code is limited. This tool will remain available as a proof of concept, and for others to examine and learn from.

https://github.com/mvdan/interfacer
When @skitt first enabled the linter, it did flag code that we changed.
https://github.com/submariner-io/submariner/pull/701/files
Should we remove it? I tend to think yes, as it isn't being maintained.
How to reproduce it (as minimally and precisely as possible):
Run make lint locally or see any of our Go linting CI.

bump


WIKI: "New Search Task: Search Parameters" is looking dated

https://github.com/smith-chem-wisc/MetaMorpheus/wiki/New-Search-Task:-Search-Parameters

yay


Standardize font and font-size across all pages and components

This is totally my fault, and I think we need to revert it or figure out what our default size should be. Right now it looks a little disjointed with the text on the pages and text on the components.

Hi there, may I know what should do about this issue?

Hi @YC-Kwan, thanks for asking!
If you look at the bio text on our about page, the font and font color isn't set to what we use in the text above it.
For the data rendering, we probably want the div to have almost-black added to the class:
https://github.com/opensourcestories/opensourcestories.org/blob/e5d960d8fd5884dc751a07987019980c37923fc9/layouts/about/list.html#L15
the h2 to have f3 fw1 lh-title added to the class:
https://github.com/opensourcestories/opensourcestories.org/blob/e5d960d8fd5884dc751a07987019980c37923fc9/layouts/about/list.html#L16
and the p to have f5-l nested-copy-line-height added to the class:
https://github.com/opensourcestories/opensourcestories.org/blob/e5d960d8fd5884dc751a07987019980c37923fc9/layouts/about/list.html#L17
There may be other areas on the site that you notice similar inconsistencies -- please let me know if this is an issue you'd like to take on!

@YC-Kwan great question! almost-black is in our css:
https://github.com/opensourcestories/opensourcestories.org/blob/e5d960d8fd5884dc751a07987019980c37923fc9/assets/ananke/css/opensourcestories.css#L9
It turns the font color nearly black, or #222222 if you prefer the hex.

Okay, so which mean I need to add almost-black into
 like
 right?

@YC-Kwan that's correct!

Okay, thanks. Is it necessary to install Go and Hugo?

Generally, I think that's a good thing to do so that you can see how it works before submitting a PR.

Hi @YC-Kwan, are you still interested in this issue?

hi,im a beginner tp opensource projects.
i have done bunch of projects
i think i will be able to fix this good first issue
can u please assign me?

we can add f4 class to div of team-person class
so that we can fix the issue

Hi @VenkateshThoguta, happy to assign it to you!

I have made the changes in class in list.html in about section
Made a pull request
Kindly check

Made a change in class by adding f4 in about section in list.html and made
a pull request
Kindly check
On Mon, 19 Jun 2023, 02:23 julia ferraioli, @.***>
wrote:

Assigned #49
https://github.com/opensourcestories/opensourcestories.org/issues/49 to
@VenkateshThoguta https://github.com/VenkateshThoguta.
—
Reply to this email directly, view it on GitHub
https://github.com/opensourcestories/opensourcestories.org/issues/49#event-9561973525,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5R57DWD4RRFENUFMPPHJY3XL5TGHANCNFSM5TQ635HQ
.
You are receiving this because you were assigned.Message ID:
<opensourcestories/opensourcestories.org/issue/49/issue_event/9561973525@
github.com>

Hi @VenkateshThoguta, I actually don't see an open PR from you. Can you ensure you submitted it?

Sorry for the inconvenience
Made PR now.....
On Tue, 20 Jun 2023, 01:55 julia ferraioli, @.***>
wrote:

Hi @VenkateshThoguta https://github.com/VenkateshThoguta, I actually
don't see an open PR from you. Can you ensure you submitted it?
—
Reply to this email directly, view it on GitHub
https://github.com/opensourcestories/opensourcestories.org/issues/49#issuecomment-1597720411,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5R57DRNHB44PR26GSEPDPTXMCYT7ANCNFSM5TQ635HQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Parse key config rather than config list

The ohttp-server prints an encoded config to stdout. Have the ohttp-client parse this instead of an encoded config list to make the ohttp-client and ohttp-server compatible.
Fix #52

fixed on main


How to specify color for each group with pl.tsne()

Hi all,
I want to plot a tSNE plot with categorical groups.
I have already a palette that I need to use to maintain consistency across figures.
I tried to use the method pl.tsne() as the following:
sc.pl.tsne(adata_p, color='signature', size=15, palette=pal, groups=['Group1', 'Group2', 'Group3'])

Originally I set up a dictionary to use as a palette (using Seaborn), in particular it would be:
{'Group1': (0.06988755691850207, 0.2682780410742496, 0.405798717591302), 'Group2': (1.0, 0.4749019607843138, 0.4647058823529413), 'Group3': (0.8049999999999999, 0.8049999999999999, 0.8049999999999999)}

However, scanpy does not support a dictionary as argument for palette so I only used the values. But unexpectedly, the colors are assigned to each group not in alphabetic order (based on the name of the group). I can I assign directly the colors to each group, or make scanpy use the colors I want?
I tried to look into adata.uns['signature'] but it contains only the list of the colors so I don't know exactly how to define it in the right order.
In particular, I noticed that the palette is in the right order, while the groups are not sorted in alphabetic order.
Thanks,
Francesco

Won't this automatically lexicographically sort, among other things, the order of plot legend labels for all scatter plots now?  That is probably not desirable as default behavior;  the order of the categories should be defined at the data object level, and not altered during plotting.
There should instead maybe be a utility function to properly assigns a palette to your labels prior to plotting, then the actual plotting functionality can stay the same.

Dear @fbrundu,
very sorry for the late response. I took a couple of days off with the family.
Everything is dictated by the order in .obs['mycategorical'].cat.categories. If you're starting off from a string .obs['mystring'] annotation, then this will default to natsorted categories. If you pandas .reorder_categories then this will be reflected, too.
Now, in AnnData, we have the additional possibility to store colors for each category. The corresponding array matches .obs['mycategorical'].cat.categories just that instead of the category names, it stores the colors.
Let me know if this clears things up for you.

No worries and thanks for the clarification.
I initially reworked part of the code because I thought the order was not reproducible. But then I discovered that it was like that because scanpy was using pandas categories, which is the correct implementation in my opinion.


Add License

If you get a chance, could you add a license file to the repo? Thanks!

The license is now added.

Nooo, GPL xD. Oh well.

No worries, changed it to MIT.
Feel free to use it without disclosing the source.

Thanks a bunch!


Sarah jwt authentication client 13

client side utils folder and accompanying files for jwt authentication

conflicts addressed. seed.js file will need rewrite.


[R] semi_join and anti_join function signatures in Arrow differ from dplyr

Describe the bug, including details regarding any error messages, version, and platform.
Both semi_join() and anti_join() have argument suffix, which don't exist in the dplyr implementation.
Component(s)
R

Is this issue resolved?

Nope

Oh sorry, I saw the merged PR that seemed to address it and was wondering if this was unintentionally left open.

Sorry, I didn't update the PR title to reflect what actually got changed in the end.


Updated cardano-cli ping command

cardano-cli ping command compatible with cardano-node-8.1.0.

Ups, it seems I overwrote your changes @newhoggy.

@newhoggy I think your CODEOWNER changes should be pushed as a separate PR, unless they are necessary for this PR to pass CI, so they're reviewed by the right people.

@newhoggy there's something strange with the ci/hdyra-build:required.  It fails running the golden tests with:
dist-newstyle/cache/plan.json: openBinaryFile: does not exist (No such file or directory)

This error happens when nix doesn't defined the necessary environment variables for the tests to find the binary it needs.


WIP Platform REST API docs

Direct preview link: https://turso-docs-git-fork-codingdoug-platform-api-chiselstrike.vercel.app/reference/platform-rest-api/

@athoscouto ack and ready to go ?


Google Movies fully working now

Thanks for the good work

Thanks a lot. Enjoying to learn that way. Anyway can I make it mine as an updated and mantained revision in my own account under my own name? Would be great for both as you don't need to be merging every PR

Sure 👍

Thanks a lot! I'll do asap.


No initialize_dist in precompute_latent.py

I got this error running mainline precompute_latent.py with composer,
RuntimeError: The world_size(8) > 1, but the distributed package is not available or has not been initialized. Please check y$
u have initialized the distributed runtime and that PyTorch has been built with distributed support. If calling this function
outside Trainer, please ensure that `composer.utils.dist.initialize_dist` has been called first.

My understanding is that I need add dist.intialize_dist(device, timeout) right after get_device()
is this understanding correct? Thanks

@DiegoD94 thanks for flagging this! I believe that's correct, it looks like we're missing dist.initialize_dist. If you call
from composer.utils import dist

dist.initialize_dist('gpu')

that should work. Let me know if you have any issues!

Thanks!


Fix round end not setting the game state to post round

Changelog

:cl: Simyon

fix: Round will not end properly. No more "The X have won the round" after the round has already ended.

man i am so good at coding


clarify docs for mac x86 users

During the installation process for x86_64-apple-darwin users end up being presented with the fact that cargo binstall cargo-risczero currently does not have prebuilt binaries for this architecture.
Users in this architecture should instead run cargo risczero build-toolchain, i.e. build the toolchain from scratch. This is different from what we mention in cargo-risczero's documentation, where we say we do provide prebuilt binaries.
We should be consistent across our documentation pages.

apologies if some of that is incoherent -- I was taking notes based on oral comments.

We just need to remove this line:
https://github.com/risc0/risc0/blob/main/risc0/cargo-risczero/README.md?plain=1#L41

I think this has been resolved, but please re-open if not.


Updated MVC intro/quick start docs to beta3 usage

Reference view models
No need for DI aliases of controllers any more

Merged following review!


Forestry bags

I'm not ![Uploading 94966646...]personally sure how it was done but with forestry bags you can dupe. I have a screenshot I sent and I'm trying to get more info on it. If the screenshot doesn't send please let me know.

Hey, it looks like something went wrong and the image was not sent.

Okay I hope it sent this time. Working on getting more info from the user. He's been very compliant with wanting to get it fixed as well. Thankfully.

 He said that it happens client side as well and he has yet to see it fail.

Tell-me if it works
mod inside.zip

Okay, patched was enabled and applied, unfortunately the duplication was still successful.

Oh, it's weird. This worked on my tests :/
No errors in the logs?

No errors, just the loading initialized from the mod.
He is going to dig deeper and see if he can manage to collect a in-depth log to find anything from the mod when the action of duping is happening.
Other then what he can may be able to fined, I'll be home around 2000Hr / 8PM CST and will take the testing to my end as I am more comfortable with your application then my buddy is.

It looks like this log is from the client. DupeFix Project needs to be installed & configured on the server-side.

Yes it is client log

Ah oops, totally didn't register that this whole time.
Okay, Welcome aspy <- he was the one testing for me.
I'll be home in a few hours, will run the tests then :) Sorry about that.

so will dupefix have to be installed client and server side for this to work, or can the client join without dupefix

No, it is server side. I just thought it would work client side. My b.

As in my tests everything worked fine, I will close this issue. Any problem let me know.


Dev new superproject

This incorporates the superbuild directly in the medInria repository.
Main advantages:

no more headache synchronisation between the tow repositories (medInria-public, and medInria-superproject each time a third part library is updated

no more mess with the medInria update step (no update step at all for medInria, the code is already here). So it's always safe to launch a build of the super-build, even if there is uncommitted modifications in medInria.

It require cmake 3.2 if there it is not packaged for your OS yet, you can compile it from the source : git://cmake.org/cmake.git (there are release tag/branches). It is need for some awesome new features such as the BUILD_ALWAYS flag of the ExternalProject module which force to always update->configure->build any external project. So we can get rid of our custom step target to force them on Jenkins.
Things are organised slightly differently than before, I use the EP_PREFIX flag to set the source/build/install directories of all the third part libraries. they are now download and builded in the build directory (in ${CMAKE_BINARY_DIR}/superbuild/src).
medInria is build in ${CMAKE_BINARY_DIR}/medInria-build. It can still be configure and builded by its own (it is still an "external project" actually). To dev just open the VS solution generated in ${CMAKE_BINARY_DIR}/medInria-build or the CMakeLists.txt in ${CMAKE_SOURCE_DIR}/src
Qt5 components are found by providing the path to the Qt5Config.cmake file for the Qt5_DIR variable. on my machine it's .../Qt/5.4/gcc_64/lib/cmake/Qt5
The packaging and the get revision project are broken, It will be fixed soon.
I tested it with clang/gcc and make/ninja.
The composer Area made by Nicolas is integrated (accessible from the homepage area), there are nodes for the process present in the medCore layer.


Remove Package: goplus.gop

Just want to rename package, so remove first.
Only has a test version.

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/goplus/gop/releases/download/v1.2.0-test.3/gop_v1.2.0-test.3_Windows_i386.zip
Response status code does not indicate success: 404 (Not Found).
(Automated message - build 602)


WAZE Mobility DATA not updated

Hi all,
The WAZE Mobility data has not been updated for the past 17 days. Could you please have a look and update it if you can as I can see that there are some new data points available.
Thank you in advance,
Regards

Updated 27.06

Good morning!
I hope you are doing well.
May I kindly ask you to run the scrapper for WAZE data one more time, as I
need recent pints for an update!
Thanks you in advance.
Regards,
Viktor
On Mon, 27 Jun 2022 at 00:15, ActiveConclusion @.***>
wrote:

Updated 27.06
—
Reply to this email directly, view it on GitHub
https://github.com/ActiveConclusion/COVID19_mobility/issues/55#issuecomment-1166660364,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZT3UE5MFHCAE3U4YJZMMA3VRDI6TANCNFSM5YWR4FBA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Updated 05.07

Updated 09.07

No updates since 09.07

Good morning!
I hope this email finds you well.
I have noticed that there are some new points available for July, may i
kindly ask you to update the file.
I wish you a lovely day.
Regards,
VZ
On Thu, Jul 14, 2022 at 10:54 PM ActiveConclusion @.***>
wrote:

No updates since 09.07
—
Reply to this email directly, view it on GitHub
https://github.com/ActiveConclusion/COVID19_mobility/issues/55#issuecomment-1184887850,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZT3UEZAEERDRSLKLCKV6MTVUB477ANCNFSM5YWR4FBA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Updated 22.07
P.S. Most likely, this update will be the last...

Waze Covid-19 Impact dashboard has been retired and will no longer be updated as of July 2022. Added a note about that in Readme.
But the good news is that TomTom reports are now available again. Feel free to use them.
Closing this issue.

Good afternoon!
Thanks for the update, everything is clear now. I will have a look at Tom
Tom reports in order to see to what extend they can be used.
I wish you a lovely day.
Regards,
Viktor
Вс, 31 июля 2022 г. в 12:28, ActiveConclusion @.***>:

Waze Covid-19 Impact dashboard has been retired and will no longer be
updated as of July 2022. Added a note about that in Readme.
But the good news is that TomTom reports are now available again. Feel
free to use them.
Closing this issue.
—
Reply to this email directly, view it on GitHub
https://github.com/ActiveConclusion/COVID19_mobility/issues/55#issuecomment-1200396140,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZT3UE5TINA3DEWUPGVWPHDVWZILDANCNFSM5YWR4FBA
.
You are receiving this because you authored the thread.Message ID:
@.***>


TypeScript: Error in history type

Hi, I have a cra project on typescript, added the connected-react-router to it, the first step:
`// reducers.js
import { combineReducers } from 'redux'
import { connectRouter } from 'connected-react-router'
export default (history) => combineReducers({
router: connectRouter(history),
... // rest of your reducers
})`
After adding this code, an error occurs:
Parameter 'history' implicitly has an 'any' type.
I do not really want to register any, please tell me which type to register there?

Hey there! First, npm i --save @types/history, and then try doing this:
import { History } from 'history'


Deploying to the cloud

I have modified the files, and our service is now running on the cloud.

This is the link for the customers service. (http://<IP_ADDRESS>:31000/)


Implement support for reports

Codecov Report

Merging #2 into master will decrease coverage by 1.97%.
The diff coverage is 85.88%.

@@            Coverage Diff             @@
##           master       #2      +/-   ##
==========================================
- Coverage   90.20%   88.23%   -1.98%
==========================================
  Files          11       13       +2
  Lines         194      272      +78
==========================================
+ Hits          175      240      +65
- Misses         19       32      +13

Impacted Files
Coverage Δ

pymws/__init__.py
100.00% <ø> (ø)

setup.py
0.00% <ø> (ø)

tests/test_orders.py
100.00% <ø> (ø)

pymws/reports.py
75.86% <75.86%> (ø)

pymws/utils.py
83.33% <78.57%> (-6.67%)
:arrow_down:

pymws/pymws.py
90.66% <83.33%> (-3.62%)
:arrow_down:

tests/test_pymws.py
100.00% <100.00%> (ø)

tests/test_reports.py
100.00% <100.00%> (ø)

... and 2 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a85ca50...af6c876. Read the comment docs.


issue with the stacked bar plot

I don't see work done being stacked up in your graph. I guess you want to show a bar graph to show different work done at different velocities. Or you could also use a line graph for that. Also, could you guys label points A, B,..., E to visualize the velocities output at various points?

Yeah, we are still working on it. This is not our final result.


lein: 2.9.1 -> 2.9.5

Motivation for this change
Many bugfixes: https://github.com/technomancy/leiningen/releases/tag/2.9.5
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 107328 1

1 package built:

leiningen

Adding myself as the maintainer of this package since this package.

/marvin opt-in
/status needs_reviewer


HelpWindow: May interfere with UI Components while active #727

Fixes #727
On a side note, should this TODO be converted into a separate issue or is it already covered by #551?
/**
 * TODO: This test is incomplete as it is missing test cases.
 */
public class HelpCommandSystemTest extends AddressBookSystemTest {

On a side note, should this TODO be converted into a separate issue or is it already covered by #551?

Yup. That's why it remains unchecked in #551. :p
The commit message can be clearer. In the 2nd paragraph, you should state what you have mentioned above - Only when you type help in Command Box then the Command Box will not execute any commands because the processing of the command is blocked, whereas if you press F1 etc, the execution of further commands aren't blocked.  You can take a look at Paul's commit messages here to see how to structure longer commit messages.

@Zhiyuan-Amos Do you think we should add a regression test for this?

Yup I think we can add a test in HelpCommandSystemTest, such that when you execute help command, you are still able to execute another simple command such as ExitCommand

@vivekscl

The current event in this case would be the command box area since that's where the event was called from, only that area is blocked while the other events work fine as the other events are in a nested event loop. While the command box is blocked, the commands run fine and UI changes accordingly everywhere except at the command box.

Hmm? According to my testing, other UI elements do not seem to update. e.g. try adding a person while the help window is opened. The status bar should update to reflect the fact that the address book was modified, but it does not (!?)

Hmm? According to my testing, other UI elements do not seem to update. e.g. try adding a person while the help window is opened. The status bar should update to reflect the fact that the address book was modified, but it does not (!?)

Yup just tested too.

If you use F1, command execution will update all UI components.
If you execute help, command execution will only update PersonListPanel. It seems that StatusBarFooter, ResultDisplay and BrowserPanel do not update because additional events are raised. Whereas PersonListPanel is updated because it is being binded to the Model; don't think there's any events raised to update the PersonListPanel.

Hint: The use of showAndWait(), by itself, isn't what is causing the problem (i.e. A vanilla JavaFX project will likely not have this problem), so the commit message is inaccurate. As the JavaFX mentions, showAndWait() starts a nested event loop precisely to allow other events to run including the same event type of the caller that was blocked. Hence, why the command box still allows us to run commands when the help window is open.
What actually happens is the use of showAndWait() plus some other factor in our code base. Of course, if we have factor A and B which causes the problem, if we remove factor A of course the problem disappears. But factor B still remains, and may combine with another factor to cause us trouble again in the future, which is why it needs to be properly investigated and mentioned in the commit message rather than being handwaved away.

Since it seems like the investigation will take a while, I'll post my progress here in the meantime.
After tracing the program execution after typing the help command, it gets stuck at Dispatcher.java where it enters the dispatchEvent method located beside the black arrow. After that, it enters a nested event loop in Stage#showAndWait(). As such it doesn't return back and the while loop doesn't terminate. If the while loop doesn't terminate, the dispatching.remove() method isn't called resulting in the if condition, !dispatching.get() to be false. If that is false, subsequent events will not be able to enter the while loop and be dispatched to their respective subscribers. Furthermore, thequeueForThread keeps increasing in size as it just collects the subsequent events as seen by the "size = 3" note at the side after attempting to delete a person. After closing the help window, the execution continues from the while loop, causing a mass execution of all the events that were in the queue.

I'm still finding that factor B. Hopefully I'll arrive at it soon :smile:

@Zhiyuan-Amos Would it be better if the new test that was added was changed to a private method instead?
On a side note, this test fails for Stage#showAndWait() but passes for Stage#show().

Would it be better if the new test that was added was changed to a private method instead?

@vivekscl yes, you should put it in a separate method. The test should have more rigorous checks though i.e. verify that other components are updated too.
Also, take a look at your commit message on GitHub, there's some minor mistakes :P
Lastly:

At this point, it iterates through the subscribers and dispatches the event to each of
them. However, as Stage#showAndWait() temporarily blocks processing of
the current event and starts a nested event loop to handle other events,
the iteration of the subscribers does not terminate. As a result,
subsequent events are unable to enter the iteration and be dispatched
to their respective subscribers as these events are held up in the
queue.

This part seems a bit confusing. ><

@vivekscl From your commit message:

However, as Stage#showAndWait() temporarily blocks processing of
the current event and starts a nested event loop to handle other events,
the iteration of the subscribers does not terminate. As a result,
subsequent events are unable to enter the iteration and be dispatched
to their respective subscribers as these events are held up in the
queue

So, the nested event loop started by Stage#showAndWait() does not bother dispatching our events such as ShowHelpRequestEvent, NewResultAvailableEvent etc. However, it must be dispatching some kind of events, otherwise our UI would be completely frozen and we would not, for example, be able to press enter in the command box and run the command (Callbacks like CommandBox#handleCommandInputChanged() still get called). So, why does Stage#showAndWait() choose to dispatch events to callbacks such as CommandBox#handleCommandInputChanged(), and not the subscribers of ShowHelpRequestEvent, NewResultAvailableEvent etc.? In other words, what are those "other events" mentioned in your commit message, and what makes them so special compared to ShowHelpRequestEvent, NewResultAvailableEvent etc.?

Yes, as @Zhiyuan-Amos mentioned, the commit message (2nd and 3rd paragraphs) contains implementation details which are not important at the level of abstraction that we are looking at this issue from, and thus could be made more succinct.
Also, in the commit message:

https://docs.oracle.com/javacard/3.0.5/api/javacard/framework/service/Dispatcher.html

!???

@pyokagan

So, why does Stage#showAndWait() choose to dispatch events to callbacks such as CommandBox#handleCommandInputChanged(), and not the subscribers of ShowHelpRequestEvent, NewResultAvailableEvent

Only those with the events @Subscribe annotation are part of the subscriber queue that is being held up.The CommandBox#handleCommandInputChanged() does not use the eventBus to post events and as such, they do not enter the subscriber queue. If they do not enter the queue, they won't be held up and will continue to work.

Also, in the commit message:
https://docs.oracle.com/javacard/3.0.5/api/javacard/framework/service/Dispatcher.html
!???

Oh I thought that might be a useful reference if needed, but maybe it isn't since the implementation details are not that important :sweat_smile:.

@vivekscl

The CommandBox#handleCommandInputChanged() does not use the eventBus to post events and as such, they do not enter the subscriber queue. If they do not enter the queue, they won't be held up and will continue to work.

Yes, that's the important point: We have two event systems in the code base -- the JavaFX event system, and the Guava EventBus system. ShowHelpRequestEvent, NewResultAvailableEvent etc are EventBus events, whereas CommandBox#handleCommandInputChanged() is called on a JavaFX event. These systems are not aware of each other, so it makes sense that when Stage#showAndWait() starts a nested event loop, it will only dispatch JavaFX events.
So, your commit message will need to be very clear whether it is talking about EventBus events or JavaFX events.
The second piece of the puzzle (Factor B) is that the default Dispatcher used by EventBus, Dispatcher.perThreadDispatchQueue(), does not allow nested callback invocations, and instead chooses to queue them to be invoked after the current invoked callback completes. This could be fixed by using the Dispatcher.immediate() dispatcher, for example.

Oh I thought that might be a useful reference if needed, but maybe it isn't since the implementation details are not that important 😅.

No, the documentation linked is not Guava docs. I think you are looking for https://github.com/google/guava/blob/master/guava/src/com/google/common/eventbus/Dispatcher.java

There's no need for line break for the hyperlink of Guava Dispatcher.

@Zhiyuan-Amos but shouldn't the commit message wrap at 72 characters? Without the line break, it exceeds 72 characters. Or does this not apply to hyperlinks?

4th para: To fix this... it is sufficient

There's a let's replace.... after To fix this so replacing it with it is sufficient would sound off right?

There's a let's replace.... after To fix this so replacing it with it is sufficient would sound off right?

Sorry, I meant:
4th para: to fix this
5th para: ... in this case as it is suffice sufficient to show...

@Zhiyuan-Amos and leave the hyperlink as is or change it? :sweat_smile:

I don't think we wrap because if you wrap it, the hyperlink can't be clicked. If I'm not wrong, the line break after 72 characters is for readability, but we don't need to read the html link. Sorry for missing this out!

@damithc for your review.

@yamgent for your approval :)

@Zhiyuan-Amos let's merge this as we have enough reviews and we need to release level 4 for this sem soon.


Get the package back in shape

Fix nlm integration.
Relicense under BSD-3-Clause and officially license code as fully owned by Groupon.
Add license headers and move library code to lib.
Update package.json with new repo location.
Update build config to use standard travis config with current node versions.
Use current lint settings.
Add missing body features for lazy and streaming bodies.

Added README updates for the extended API surface.


typingEvent: Report stop event to server on sending message.

So that other user doesn't think that user is typing another message.
Set lastTypingStart as 0, when typing operation is stop, so that
immediate start typing event can be send to the server, if required.

Thanks for the updates! Looks good -- merged.


Review Changes

While reviewing v2 again, these are some of the remaining changes I would do. Further points not yet addressed:

Kill Amp\Message
Kill Amp\StreamIterator::drain()
Add Amp\Promise::isResolved()?
Find better names for Amp\wrap(), Amp\call()
git diff 2f7e9a0..a0b8de4 lib/Loop/UvDriver.php → Cancel watchers instead of disabling them?

Kill Amp\Message: Yes, moving that to the stream lib.
Kill Amp\StreamIterator::drain(): The method is needed for implementing the Message class. There's other ways, but they're much less efficient. I don't see any gain in not offering this method.
Add Amp\Promise::isResolved(): I've considered this myself, it might eliminate the need for booleans that essentially just keep track of this, and is trivial to implement.
Find better names for Amp\wrap(), Amp\call(): Very open to suggestions here… I have none.
Cancel instead of disable: Could result in an invalid watcher being enabled again… but the original cause is an error anyway, so another potential error is probably fine.

Other changes LGTM. I did not realize using eval would stop IDE's complaining about multiple definitions, cool!

@trowski That's why we did it with eval already in version 1. It also stops IDEs from thinking Deferred implements Promise.
Regarding drain: If we want to keep it, we should probably add it to Iterator?

That's why we did it with eval already in version 1. It also stops IDEs from thinking Deferred implements Promise.

This change confuses me:

Does eval() have support for OpCache?
What about debugging evaled classes?
What if I still want to choose to what class declaration to jump?
Did you consider @noinspection PhpUndefinedClassInspection annotation?

StreamIterator? … mhm, we anyway have Amp\Iterator, then StreamIterator is probably fine.
So: LGTM.
I dislike adding Amp\Promise::isResolved(). I do not know of real use cases, except inside tests. For tests it's trivial to add a helper function like
function isPromiseResolved(Promise $p) {
    $resolved = false;
    $p->when(function() use (&$resolved) { $resolved = true; });
    return $resolved;
}

I kind of like \Amp\wrap() and \Amp\call(), I see no need for a rename here.
Regarding StreamIterator::drain(), I see no reason to object to Aaron.

What's there to debug? This is only for the production definitions of Deferred and Emitter, which are pulled from traits.
Not sure what you mean here… the definition is based on the value of zend.assertions.
PhpUndefinedClassInspection annotation ignores undefined classes. There is no way to ignore multiple definitions of which I'm aware.

I'm not sure about these either. Typically you should get rid of Deferreds/Emitters once you have resolved them.
It feels for me like it would probably be a code smell to use isResolved(). If you really need to check whether it's been already resolved, one can simply null it and check against that. But mostly there are better solutions except in highly specific cases.

@bwoebi That's a good point. The few instances where isResolved() may be used, the deferred is nulled and likely then the preferred method as then a reference to the resolved value is not being kept unnecessarily. So then I agree, adding such a method has little value.


Dev james

Manage league page allows the head official to promote members to officials and demote officials to members.

Just noticed that our manage url pattern is missing a trailing slash.
http://<IP_ADDRESS>:8000/leagues/1/manage_league/ gives a 404
http://<IP_ADDRESS>:8000/leagues/1/manage_league works

I'm fine accepting this PR, but I think there's too much logic in the template. The template would be much cleaner if the lists of members/officials was adjusted on the view side. I'll make a PR with what I have in mind.


Request to include solax cloud api

Hi,
it would be great if solax cloud could also be used as a source as well.
A api is available:
https://www.eu.solaxcloud.com/phoebus/resource/files/userGuide/Solax_API_for_End-user_V1.0.pdf

That's a great idea @HeuerJan - for whatever reason, my inverter doesn't allow me to sign-up to the cloud version, as it doesn't accept my serial number of the WiFi dongle. So have no easy way to develop and test this. If you were able to provision me a read-only type token to access your data (if happy with that), I could see what I can do?

Do you have no access to the following page?

Sadly no, as I can't create the account to get to that area. The demo account only shows the overview, and nothing else for me.

How can I send this to you in a less public way?

Here is the JSON output that I receive from the API ( SN are changed )
{"exception":"Query success!","result":{"inverterSN":"H3DE3443664742","sn":"SE3HDOZZEN","acpower":435.0,"yieldtoday":1.0,"yieldtotal":5.6,"feedinpower":-21.0,"feedinenergy":3.29,"consumeenergy":9.14,"feedinpowerM2":0.0,"soc":63.0,"peps1":0.0,"peps2":0.0,"peps3":0.0,"inverterType":"5","inverterStatus":"102","uploadTime":"2021-02-24 12:38:34"},"success":true}

And this is the URL that you need to use to fetch the above JSON
The user would need to enter in the settings just the token and the inverter serial number. Both are available in the cloud.
https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=&sn=< Inverter serial number>
That’s all I can provide. If it helps, I can test the hombridge plugin for you.

And this is the URL that you need to use to fetch the above JSON
The user would need to enter in the settings just the token and the inverter serial number. Both are available in the cloud.
https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=&sn=< Inverter serial number>
That’s all I can provide. If it helps, I can test the hombridge plugin for you.

Thanks, the sample reply itself will go a long way for me. Will likely make a start in about 10 days time (busy time of year for me)

Be advised, that people with battery may have two inverter.

The API output has been changed: (they added :  batPower in/out and powerdc1 + powerdc2 ( solar cell output ) )
{"exception":"Query success!","result":{"inverterSN":"H3DE11111111111","sn":"SEXXXXXXXXXX","acpower":183.0,"yieldtoday":4.0,"yieldtotal":210.0,"feedinpower":-33.0,"feedinenergy":117.82,"consumeenergy":178.12,"feedinpowerM2":0.0,"soc":20.0,"peps1":0.0,"peps2":0.0,"peps3":0.0,"inverterType":"5","inverterStatus":"102","uploadTime":"2021-03-11 09:40:00","batPower":200.0,"powerdc1":242.0,"powerdc2":135.0},"success":true}

Thanks @HeuerJan . I haven’t had a chance to get my hands dirty with it yet, but thanks for the update, much appreciated.

Any news? I would really appreciate a way to control for example our pool heater according to solax output. For this a adaption of your home bridge plug-in would be really appreciated.
I have in the meantime created a iOS app that uses the same api to show the data as a alternative to the solax cloud app: if you like to check out :

Any news? I would really appreciate a way to control for example our pool heater according to solax output. For this a adaption of your home bridge plug-in would be really appreciated.
I have in the meantime created a iOS app that uses the same api to show the data as a alternative to the solax cloud app: if you like to check out :

Hi, my apologies - it's definitely been on the forefront of my thoughts, but since the weekend I was planning on working on it, several things have changed in my life. It's still on my TODO list, but has fallen down my priority list.
In the interim, you're welcome to fork off of it if keen, and can prioritise the time for review pull-requests. No biggie if not, it is something I'm wanting to get to.

Hi,
it would be great if solax cloud could also be used as a source as well. A api is available:
https://www.eu.solaxcloud.com/phoebus/resource/files/userGuide/Solax_API_for_End-user_V1.0.pdf

Hi @HeuerJan , feel free to try my Solax Cloud API homebridge plugin at https://github.com/AllMightySauron/homebride-solaxcloud-api.


Test suite build failure

test/Instances.hs:253:10: error:
    Duplicate instance declarations:
      instance Arbitrary a => Arbitrary (NonEmpty a)
        -- Defined at test/Instances.hs:253:10
      instance [safe] Arbitrary a => Arbitrary (NonEmpty a)
        -- Defined in ‘Test.QuickCheck.Arbitrary’

I'm not maintaining or updating this, can I pull it from the next snapshot?

I'll move it to unmaintained packages.

Thanks!

No problem, thanks for the quick response.
On Thu, Oct 13, 2016 at 7:24 AM, Mitchell Rosen<EMAIL_ADDRESS>wrote:

Thanks!
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/mitchellwrosen/language-lua2/issues/4#issuecomment-253411276,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADBB6nmI70nct-7X3d0i3122YUNzX1aks5qzbJmgaJpZM4KVbbb
.


Channel uri receiver window

Adds the ability to set the receiver initial window in the URI.
Adds validation to C and Java media drivers that compare the mtu to the socket sndbuf and receiver window to the socket rcvbuf.
Adds validation to prevent creating subscriptions or publications that try to change the socket sndbuf and rcvbuf values.

This is a nice step forward.


Seaweedfs filling up disk

Describe the bug
Seaweedfs is filling up extra disk
System Setup
Nodes overview

Hostname
Ip
Functions

seaweed01
<IP_ADDRESS>
master + volume + filer + mount

seaweed02
<IP_ADDRESS>
volume + mount

seaweed03
<IP_ADDRESS>
volume + mount

System Information:

Debian 10 buster
seaweed version 30GB 2.19 2ce86f3 linux amd64
Data is stored on seperate partition of 50GB mounted at /srv/seaweedfs
All seaweed commands are run with systemd unit files, but will only show the Execstart commands (all managed with Puppet)

Seaweed01
Master service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-master master -mdir=/var/lib/seaweedfs-master -port=9333 -ip=<IP_ADDRESS> -defaultReplication=001 -volumePreallocate

Volume service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-volume volume -dir=/srv/seaweedfs -ip=<IP_ADDRESS> -max=7 -mserver=<IP_ADDRESS>:9333 -port=8088 -dataCenter=dc1 -rack=rack1

Filer service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-filer filer -ip=<IP_ADDRESS> -port=8888 -master=<IP_ADDRESS>:9333 -defaultReplicaPlacement=001

root@seaweed01:~# cat /etc/seaweedfs/filer.toml
[leveldb2]
enabled = true
dir = "/var/lib/seaweedfs-filer"

Mount service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-mount-prometheus mount -dir=/mnt/prometheus -filer=<IP_ADDRESS>:8888 -nonempty

Seaweed02
Volume service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-volume volume -dir=/srv/seaweedfs -ip=<IP_ADDRESS> -max=7 -mserver=<IP_ADDRESS>:9333 -port=8088 -dataCenter=dc1 -rack=rack1

Mount service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-mount-prometheus mount -dir=/mnt/prometheus -filer=<IP_ADDRESS>:8888 -nonempty

Seaweed03
Volume service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-volume volume -dir=/srv/seaweedfs -ip=<IP_ADDRESS> -max=7 -mserver=<IP_ADDRESS>:9333 -port=8088 -dataCenter=dc1 -rack=rack1

Mount service:
/usr/local/bin/weed -logdir=/var/log/seaweedfs-mount-prometheus mount -dir=/mnt/prometheus -filer=<IP_ADDRESS>:8888 -nonempty

Expected behavior
I wanted to use seaweedfs for shared storage across those 3 nodes. I did test it the following way:
# Seaweed01
cd /mnt/prometheus
touch testfile

# Seaweed02
cd /mnt/prometheus
ls (file was present)
echo "seaweed02" > testfile

# Seaweed01
echo testfile
(content not present)

After digging in the logs, I've fount the following lines:
Seaweedfs-master:
Jan 06 19:24:35 seaweed01 weed[12972]: I0106 19:24:35 12972 volume_growth.go:226] Failed to assign volume 36181 to [Node:topo:dc1:rack1:<IP_ADDRESS>:8088, volumes:map[3:Id:3, Size:8, ReplicaPlacement:001, Collection:, Version:3, FileCount:0, DeleteCount:0, DeletedByteCount:0, ReadOnly:true 10:Id:10, Size:8, ReplicaPlacement:001, Collection:, Version:3, FileCount:0, DeleteCount:0, DeletedByteCount:0, ReadOnly:true], Ip:<IP_ADDRESS>, Port:8088, PublicUrl:<IP_ADDRESS>:8088 Node:topo:dc1:rack1:<IP_ADDRESS>:8088, volumes:map[1:Id:1, Size:8, ReplicaPlacement:001, Collection:, Version:3, FileCount:0, DeleteCount:0, DeletedByteCount:0, ReadOnly:true 2:Id:2, Size:1240, ReplicaPlacement:001, Collection:, Version:3, FileCount:3, DeleteCount:2, DeletedByteCount:242, ReadOnly:true], Ip:<IP_ADDRESS>, Port:8088, PublicUrl:<IP_ADDRESS>:8088] error rpc error: code = Unknown desc = cannot load volume data /srv/seaweedfs/36181.dat: open /srv/seaweedfs/36181.dat: no space left on device
Jan 06 19:24:35 seaweed01 weed[12972]: I0106 19:24:35 12972 volume_growth.go:88] create 6 volume, created 0: Failed to assign 36181: rpc error: code = Unknown desc = cannot load volume data /srv/seaweedfs/36181.dat: open /srv/seaweedfs/36181.dat: no space left on device
... (repeating)

Seaweedfs-volume (seaweed01)
Jan 06 19:29:41 seaweed01 weed[13112]: I0106 19:29:41 13112 store.go:122] In dir /srv/seaweedfs adds volume:36594 collection: replicaPlacement:001 ttl:
Jan 06 19:29:41 seaweed01 weed[13112]: E0106 19:29:41 13112 volume_grpc_admin.go:47] assign volume volume_id:36594  preallocate:31457280000  replication:"001": cannot load volume data /srv/seaweedfs/36594.dat: open /srv/seaweedfs/36594.dat: no space left on device

root@seaweed01:/srv/seaweedfs# df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb         49G   49G     0 100% /srv/seaweedfs

root@seaweed02:/srv/seaweedfs# du -lah .
30G	./1.dat
4.0K	./1.vif
20G	./2.dat
16K	./lost+found
49G	.
(Only shown files where size is different from 0

# Showing content with hexdump as it's binary
root@seaweed02:/srv/seaweedfs# hexdump 1.dat
0000000 0103 0000 0000 0000
0000008

root@seaweed01:/srv/seaweedfs# curl http://<IP_ADDRESS>:9333/dir/status | jq
{
  "Topology": {
    "DataCenters": [
      {
        "Free": 14,
        "Id": "dc1",
        "Max": 21,
        "Racks": [
          {
            "DataNodes": [
              {
                "EcShards": 0,
                "Free": 4,
                "Max": 7,
                "PublicUrl": "<IP_ADDRESS>:8088",
                "Url": "<IP_ADDRESS>:8088",
                "VolumeIds": "1-2 11572",
                "Volumes": 3
              },
              {
                "EcShards": 0,
                "Free": 5,
                "Max": 7,
                "PublicUrl": "<IP_ADDRESS>:8088",
                "Url": "<IP_ADDRESS>:8088",
                "VolumeIds": "1-2",
                "Volumes": 2
              },
              {
                "EcShards": 0,
                "Free": 5,
                "Max": 7,
                "PublicUrl": "<IP_ADDRESS>:8088",
                "Url": "<IP_ADDRESS>:8088",
                "VolumeIds": "3 10",
                "Volumes": 2
              }
            ],
            "Free": 14,
            "Id": "rack1",
            "Max": 21
          }
        ]
      }
    ],
    "Free": 14,
    "Layouts": [
      {
        "collection": "",
        "replication": "001",
        "ttl": "",
        "writables": []
      }
    ],
    "Max": 21
  },
  "Version": "30GB 2.19 2ce86f3"
}

root@seaweed01:/srv/seaweedfs# curl http://<IP_ADDRESS>:8088/status | jq
{
  "DiskStatuses": [
    {
      "dir": "/srv/seaweedfs",
      "all":<PHONE_NUMBER>0,
      "used":<PHONE_NUMBER>4,
      "free": 16777216,
      "percent_free": 0.031910352,
      "percent_used": 99.96809
    }
  ],
  "Version": "30GB 2.19 2ce86f3",
  "Volumes": [
    {
      "Id": 1,
      "Size": 0,
      "ReplicaPlacement": {
        "SameRackCount": 1,
        "DiffRackCount": 0,
        "DiffDataCenterCount": 0
      },
      "Ttl": {
        "Count": 0,
        "Unit": 0
      },
      "Collection": "",
      "Version": 3,
      "FileCount": 0,
      "DeleteCount": 0,
      "DeletedByteCount": 0,
      "ReadOnly": true,
      "CompactRevision": 0,
      "ModifiedAtSecond": 0,
      "RemoteStorageName": "",
      "RemoteStorageKey": ""
    },
    {
      "Id": 2,
      "Size": 1068,
      "ReplicaPlacement": {
        "SameRackCount": 1,
        "DiffRackCount": 0,
        "DiffDataCenterCount": 0
      },
      "Ttl": {
        "Count": 0,
        "Unit": 0
      },
      "Collection": "",
      "Version": 3,
      "FileCount": 3,
      "DeleteCount": 2,
      "DeletedByteCount": 242,
      "ReadOnly": true,
      "CompactRevision": 0,
      "ModifiedAtSecond": 0,
      "RemoteStorageName": "",
      "RemoteStorageKey": ""
    },
    {
      "Id": 11572,
      "Size": 0,
      "ReplicaPlacement": {
        "SameRackCount": 1,
        "DiffRackCount": 0,
        "DiffDataCenterCount": 0
      },
      "Ttl": {
        "Count": 0,
        "Unit": 0
      },
      "Collection": "",
      "Version": 3,
      "FileCount": 0,
      "DeleteCount": 0,
      "DeletedByteCount": 0,
      "ReadOnly": true,
      "CompactRevision": 0,
      "ModifiedAtSecond": 0,
      "RemoteStorageName": "",
      "RemoteStorageKey": ""
    }
  ]
}

Additional context
My question is why that it is filling up the disk.
Do I have a problem with my configuration, is my usecase wrong or am I running into a bug?
The storage will be used by the containers hostes on these 3 nodes with Hashicorp Nomad so it doesn't matter on which node a container is running.
Later I will look at the implementation of the csi driver.
Thx in advance!

Ok, thinking this might be related with not enough space for the volumes on the device, testing.

Ok, thinking this might be related with not enough space for the volumes on the device, testing.

/usr/local/bin/weed -logdir=/var/log/seaweedfs-master \
  master \
  -mdir=/var/lib/seaweedfs-master \
  -port=9333 \
  -ip=<IP_ADDRESS> \
  -defaultReplication=001 \
  -volumePreallocate <---------------------

on the master server by default it will create 8 volumes on startup. This requires it to allocate 8x 30G of storage, which presumably fails after the first one, as you have preallocate set.
Try this again without the -volumePreallocate flag, and also (for testing, at least), reduce the volume size via   -volumeSizeLimitMB uint and use -max=0 which will allow the volserver to keep creating volumes until the disk is almost full.
I am not 100% sure where these parameters go (on masters, or on volservers) but you will figure it out pretty quickly.
see wiki for more info.

/usr/local/bin/weed -logdir=/var/log/seaweedfs-master \
  master \
  -mdir=/var/lib/seaweedfs-master \
  -port=9333 \
  -ip=<IP_ADDRESS> \
  -defaultReplication=001 \
  -volumePreallocate <---------------------

on the master server by default it will create 8 volumes on startup. This requires it to allocate 8x 30G of storage, which presumably fails after the first one, as you have preallocate set.
Try this again without the -volumePreallocate flag, and also (for testing, at least), reduce the volume size via   -volumeSizeLimitMB uint and use -max=0 which will allow the volserver to keep creating volumes until the disk is almost full.
I am not 100% sure where these parameters go (on masters, or on volservers) but you will figure it out pretty quickly.
see wiki for more info.

Ok thx, this fixed the issue indeed. Will close the issue.

Ok thx, this fixed the issue indeed. Will close the issue.


Create new abbreviation?

Other than RDF-PAQT:
Lin(k)DaLe
(or something other fancy)

Settings have been changed to use linkdale.org. However changing it can take up to a day

And for the logo might this be an idea

We can reuse getting started picture from tutorials as logo. With LinkDale you will learn hot to think in graphs.


WAILA crash with painted facade

Issue Description:
Game crashes when the player looks at a reinforced obsidian facade, either by itself placed in the world or placed on a conduit.
Steps to reproduce:

Paint facade with reinforced obsidian
Place on ground
Crash

Affected Versions (Do not use "latest"):

EnderIO: <IP_ADDRESS>4
EnderCore: <IP_ADDRESS>
Minecraft: 1.7.10
Forge:<IP_ADDRESS>4

Your most recent log file where the issue was present:
http://pastebin.com/r9uqhfxd

JFYI: EIO last beta 425 on curseforge.

Duplicate of #3290


Added ISO formatter options to print timezone without time separator (ie. +0200 instead of +02:00)

An options to the ISO8601 parser to print date's timezone without time separator.
For example:
2018-09-19T09:32:55+02:00
to
2018-09-19T09:32:55+0200
The option is contained into ISOFormatter.Options and its called .withoutTZSeparators.
You can combine it with the following other options:

withInternetDateTimeExtended
withInternetDateTime
When withTimeZone is false, withTimeZone is true

Example:
let regionIT = Region(calendar: Calendars.gregorian, zone: Zones.europeRome, locale: Locales.english)
let date = DateInRegion(Date(), region: regionIT).toISO([.withoutTZSeparators])


iron-icon Demo page redirecting problem

From @Hunsin on January 25, 2016 4:20
Hi, I'm not sure if its ok to issue here?
https://elements.polymer-project.org/elements/iron-icon?view=demo:demo/
When I click on "<iron-icons> demo" link, the new whole page loaded in the iframe, causing duplicated drawer shown on screen...

Same page on the other hand,  cart-icon[fade-out].page-element { opacity: 0;} makes "My Collection" button disappeared??

Copied from original issue: Polymer/docs#1513

Thanks for the report! This appears to be an issue with the catalog handling a link from one demo to another demo, because if you open the link in a new tab/page, it opens correctly.
As for the "my collection" button, I think it's hidden in the demo view...? Not sure what the design is supposed to do here.

Another report over here of this odd behavior. Ping?


ENH: Fix inconsistency in setup.py

Description
The file setup.py contains 'tests' and 'doc' extras which are not designed for the final user. It would be better if these libraries were the subject of separates requirements.***.txt, similarly to what is done for requirements.dev.txt.
Fixes #272
Type of change
Bug fix (non-breaking change which fixes an issue)
How Has This Been Tested?
There should be no impact on the behavior of the code since this modification only affects the working environment in test and doc configuration.
Following the checklist will be sufficient.
Checklist

[x] I have read the contributing guidelines
[x] I have updated the HISTORY.rst and AUTHORS.rst files
[x] Linting passes successfully : make lint
[x] Typing passes successfully : make type-check
[x] Unit tests pass successfully : make tests
[x] Coverage (to be fixed in another PR) : make coverage
[x] Documentation builds successfully : make doc

Codecov Report
Patch and project coverage have no change.

Comparison is base (ee828cf) 99.84% compared to head (b0e5e74) 99.84%.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #284   +/-   ##
=======================================
  Coverage   99.84%   99.84%
=======================================
  Files          28       28
  Lines        3295     3295
  Branches      346      346
=======================================
  Hits         3290     3290
  Misses          4        4
  Partials        1        1

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


RCTGetReactNativeVersion XCODE fixed!

Into your BugSnagReactNative.m file,
you need to change ### RCTGetReactNativeVersion()
In function findReactNativeVersion
fix:  NSDictionary *versionMap = RCT_REACT_NATIVE_VERSION;
old:  NSDictionary *versionMap = RCTGetReactNativeVersion();
problem will be fixed.
this is definition:
`
#define RCT_REACT_NATIVE_VERSION @{
@"major": @(number),
@"minor": @(number),
@"patch": @(number),
@"prerelease": [NSNull null],
}
check this link:
`
https://github.com/facebook/react-native/blob/6df2edeb2a33d529e4b13a5b6767f300d08aeb0a/scripts/bump-oss-version.js

Hi @bakystefan, what version of React Native are you using?
It looks like React Native has had the RCTGetReactNativeVersion() implementation of this feature since v0.55.0. We support back to v0.50.0, so this looks like something we should fix.
Thanks!

Version on my project is 53.0.3. Thanks!

This is now released as of v2.22.2.


Update to show new Genesis features.

Updates to all run books to show Genesis v2 features. This includes: documentation for updated Genesis syntax, new documentation of kit specific addons, updated screen shots and outputs, etc.

Reviewed and everything looks good and correct to me. Approved 👍 .


Charlvl emb

Implementing an option to embed each input token through a RNN or CNN encoder applied on the token characters.
Needs serious refactoring.

Closing. When you get to finish this up, feel free to open another pull request.


automatically detect client host endpoint

What did you implement:
Automatically detect the client host endpoint, the same way as docker-cli does.
I've implemented this feature in a project I'm working, so I decided to open a PR here in case you think this could be useful.
Steps

Try to load the endpoint from the DOCKER_CONTEXT environment variable
Try to load the endpoint from the DOCKER_HOST environment variable
Try to load the endpoint from the config.json file
otherwise use the default endpoint

@vv9k


activeOnlyWhenExact should be the default? or at least less verbose

I've been converting an existing codebase to use V4 and running into a DX issue with the activeOnlyWhenExact property of <Link>s...
It seems like most of my links require the link to only become "active" when the path matches exactly, so it feels weird to have to specify it each time, when I think it should really be the default.
And it seems like for almost all of the examples on the V4 site that have a home <Link to="/">Home</Link> link, if there was an active state styled, they would need to have set activeOnlyWhenExact to prevent incorrect active states. And in all those cases, having it default to true wouldn't actually adversely affect anything.
The only case where the default needs to be overridden is once you get more complex and add a secondary navigation to a page with a second nested set of <Match>s, where you'd then need to "loosen" the link's active state matching.
So I think it should default to be exactly matched, and be optionally loosened instead.

Separately, even though I've been having to apply it to all my links, I keep forgetting what the exact property name is since it's so long, and having to look up activeOnlyWhenExact which is frustrating. When flipping the default, I'd suggest renaming it to matchLoosely (or matchExactly without the flip).

It should be a lot easier to achieve the result this API was supposed to solve in v4 using our new <NavLink> component. A <NavLink> is different from a regular <Link> in that it knows whether it is "active" or not. Regular <Link>s no longer care. The name stems from the fact that the primary use case for knowing whether or not a <Link> is active is for creating navigation (menus, tabs, etc.).

Closing due to inactivity.

I am having this problem right now actually and I hope this work around works for you .
export default () => (
  <Router>

      <Route path="/:active?" component={Nav} />

        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />

  </Router>
)

here I am rendering nav on every every path basically and giving it a name active and making it optional for home
now I can check for match.params.active in nav component it gives the full path .
heres an example

<NavLink to="/">Home</NavLink>

<NavLink to="/about">About</NavLink>

<NavLink to="/notfound">nothing</NavLink>


setting pushState = true  && use $$.post() to fetch data from remote server，then when i click browser' history back button，the webapp didn't  goback。

Debug in this file (src/js/push-state.js)

if commment line from 26 to 30,force to set blockPopstate = false，history goback will work，may be it is not a good solution
app.initPushState = function () {
    var blockPopstate = true;

    /**
    $(window).on('load', function () {
        setTimeout(function () {
            blockPopstate = false;
        }, 0);
    });
    */

As i remember this code was very important, as on some platforms, it push to history index page without even navigate it, especially on iOS

Closing as seems to be not actual anymore


add active color on neutral and subtle cards

@Febakke Is this still relevant?

Relatert til #2407

This is fixed


Crashing when using JS License Key

I'm using RN 0.39.0 and version 2.3.0 and I can't seem to be able to get the app not to crash if I don't include the license key in strings.xml and try to use the JS initialization via InAppBillingBridgePackage; There is no detailed example how to use the new InAppBillingBridgePackage("YOUR_LICENSE_KEY");
Where does the InAppBillingBridgePackage get imported from?

I'm trying to capture the crash with adb logcat but it's not telling me anything useful. I'll try and get this back to you.

I was asking how to import the JS method InAppBillingBridgePackage. In your JS examples (like the one right above here https://github.com/idehub/react-native-billing#testing-with-static-responses), you have new InAppBillingBridgePackage("YOUR_LICENSE_KEY"); Where does the variable InAppBillingBridgePackage get imported from? In your examples you have:

const InAppBilling = require("react-native-billing");

That creates a variable called InAppBilling but where does InAppBillingBridgePackage come from?
Here's my current code that seems to be getting a build working:
import InAppBilling from 'react-native-billing';

import {
    Platform,
    NativeModules,
} from 'react-native';

import {
    environment
} from '../../appConfig';

const productPrefix = environment === 'production' ? 'com.greatjonesstreet.prod.' : 'com.greatjonesstreet.dev.';

const getLicenseKey = () => {
        return environment === 'production' ? `[removed key for security]` : `[removed key for security]`;
    };

new InAppBilling(getLicenseKey());

export async function purchaseProduct(id) {
    await InAppBilling.close();
        try {
            await InAppBilling.open();

            return InAppBilling.purchase(id);
        } catch (err) {
            console.log(err);
        } finally {
            await InAppBilling.consumePurchase(identifier);
            await InAppBilling.close();
        }
    }
}

Here's what I was able to get out of a crash log:
I/InputDispatcher( 3608): Delivering touch to (3608): action: 0x1, toolType: 1
I/Process ( 6596): Sending signal. PID: 6596 SIG: 9
D/OpenGLRenderer( 3608): endAllStagingAnimators on 0x7f8e330200 (RippleDrawable) with handle 0x7f705ebb60
D/MultiWindowConverter( 3608): dismissGuide() : Before attaching the guide view, mForceDismissGuide : false
D/WindowManager( 3608): beginLayoutLw mStatusBar.isVisibleLw() = true, statusBarTransient=false, displayId=0
D/StatusBarManagerService( 3608): manageDisableList userId=0 what=0x0 pkg=Window{16885e62 u0 d0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity}
D/InputDispatcher( 3608): Focus left window: 3608
D/InputDispatcher( 3608): Focus entered window: 4574
D/DragAndDrop( 4574): dragCancel(false)
D/PointerIcon( 3608): setMouseIconStyle1 pointerType: 1001 iconType:101 flag:0 pid:3608 uid:1000
D/PointerIcon( 3608): setMouseCustomIcon IconType is same.101
E/ViewRootImpl( 3608): sendUserActionEvent() mView == null
E/OpenGLRenderer( 3608): SFEffectCache:clear(), mSize = 0
E/AmazonKindle.com.amazon.kindle.services.authentication.MAPTokenCache( 5896): [IntentService[NwstdIntentService]]: Null or empty account: [null], key: [PFM], aborting...
E/AmazonKindle.com.amazon.kindle.services.authentication.MAPTokenCache( 5896): [IntentService[NwstdIntentService]]: Null or empty account: [null], key: [XFSN_COOKIE], aborting...
D/InputMethodManagerService( 3608): windowGainedFocus mCurrentFocusedUserId - 0 and mSecureKeypadEnabled-false
E/AmazonKindle.com.amazon.kindle.services.authentication.MAPTokenCache( 5896): [IntentService[NwstdIntentService]]: Null or empty account: [null], key: [XMAIN_AND_XACB_COOKIES], aborting...
E/JavaBinder( 3608): !!! FAILED BINDER TRANSACTION !!!
W/InputMethodManagerService( 3608): Got RemoteException sending setActive(false) notification to pid 6596 uid 10400
E/JavaBinder( 3608): !!! FAILED BINDER TRANSACTION !!!
E/libEGL  ( 3608): ------------------------------------------------
E/libEGL  ( 3608): HWUI Context(-1575550848) Damaged Report-Shader
E/libEGL  ( 3608): HWUI   Shaders(2):
E/libEGL  ( 3608): HWUI     Unit 0) Handle(13)
E/libEGL  ( 3608): HWUI     Unit 1) DAMAGED Handle(15)
E/libEGL  ( 3608): ------------------------------------------------
E/libGLESv2( 3608): HWUI Protection: wrong calling from app context F:ES2-glDeleteShader, handle(15)
E/libEGL  ( 3608): ------------------------------------------------
E/libEGL  ( 3608): HWUI Context(-1575550848) Damaged Report-Shader
E/libEGL  ( 3608): HWUI   Shaders(2):
E/libEGL  ( 3608): HWUI     Unit 0) DAMAGED Handle(13)
E/libEGL  ( 3608): HWUI     Unit 1) Handle(15)
E/libEGL  ( 3608): ------------------------------------------------
E/libGLESv2( 3608): HWUI Protection: wrong calling from app context F:ES2-glDeleteShader, handle(13)
D/SamsungIME( 8575): onStartInput: No inputType, No imeOption, isInputViewShown = false, isExtractViewShown = false, isShowInputRequested = false, isConfigChanged = false
D/PanelView( 4110): There is/are notification(s)
E/        ( 3011): BitTube(): close sendFd (78)
E/        ( 3011): BitTube(): close sendFd (81)
W/InputDispatcher( 3608): channel ~ Consumer closed input channel or an error occurred.  events=0x9
I/ActivityManager( 3608): Process com.greatjonesstreet.dev (pid 6596)(adj 13) has died(126,851)
E/InputDispatcher( 3608): channel ~ Channel is unrecoverably broken and will be disposed!
I/WindowState( 3608): WIN DEATH: Window{3095833 u0 d0 com.greatjonesstreet.dev/com.greatjonesstreet.MainActivity}

Put together this video too: https://www.youtube.com/watch?v=XMrUBC4Xgl8&feature=youtu.be

@cbrevik let me know if you could screenshare as this is holding up a product launch of ours. Thanks!

Hi @dwilt. The license key is added in the MainApplication.java file. That is the location of InAppBillingBridgePackage. See from the example-project: MainApplication.java.
In other words, the license key is added in the Java-code, not JavaScript.

@cbrevik got it. I'm not familiar with Java thus didn't realize the new keyword was there. Thanks for the clarification.

Just to make it clear, in your React Native project folder, go to android/app/src/main/com/<yourappname>/MainApplication.java.
Find this method: protected List<ReactPackage> getPackages().
Under there, find where new InAppBillingBridgePackage(), and change it to new InAppBillingBridgePackage("YOUR_LICENSE_KEY")

No worries @dwilt. And sorry for not answering sooner, but I am swamped at work and home these days. Not much time for open source projects.

@cbrevik yea, I see what you mean. So we have the ability to have the license key either in string.xml or in MainApplication.java, right?
No worries at all man.

Yep, that's right. I see why you would think you could do it through JavaScript though. That is the obvious API choice.

K. Thanks for the clarification. I'll be posting another issue soon as I'm struggling to get the purchase button to do anything. I'm calling purchaseProduct but no dialog is shown. I'm on a Galax S6 by the way.

@cbrevik we ended up getting things working by the way. Just following back up on this as I'm making my rounds to the plugins that we are using.. would you know how to put a PR together of how to move the license key to the JS side so we could do something like:
import InAppBilling from 'react-native-billing';

const inAppBilling = new InAppBilling("[KEY GOES HERE]");

It's in my opinion that all React Native plugins should be initialized with their respective keys (when there is a key of some kind involved) on the JS and not the native side. This provides more flexibility to the developer (who is most likely a JS expert and not proficient in Objective-C orJava) and it only keeps the key in one place.

If you need help doing this on the JS side, let me know. I'd be happy to help setup the class so the new word could be used and would take in the license key.

Hi @dwilt,
I'd agree that it is probably more idiomatic for JS developers if the license key is input as a parameter in JS. The reason why I didn't initially do that though, is because it didn't seem prudent to put API secrets in clear-text JavaScript. Still sort of doesn't, from a security standpoint.
But if handled correctly, I guess some secrets could be injected from native code. I've used react-native-config for that in the past.
As far as what you're suggesting with regards to using class, the only thing that worries me here is that developers might think they can open multiple concurrent connections to the Play Store service by constructing multiple new InAppBilling(...).
The native code does not allow that. And even if were possible, it is a really bad idea because the service connection to the Play Store is heavy on the app. That is why developers have to manually open() and close() from the JS side. It is a bad idea for the native side to "open" and "close" the connection for each operation (purchase, getProductDetails, consumePurchase, etc). And it is a bad idea to keep the connection open during the whole app lifecycle.
It is to underline that it is only a single transient connection to the Play Store, that the InAppBilling object is pre-constructed and only has static operations.
But, with that in mind, there is nothing stopping us from exposing a static licenseKey property on the pre-constructed InAppBilling. That value could be sent in each time we call open().
I.e
static open() {
  return InAppBillingBridge.open(licenseKey);
}

And on the native side we could handle both cases, both natively and JS license keys. This also makes it easier to keep it backwards-compatible.

@cbrevik Yes, I've tried using react-native-config and had trouble getting that installed working correctly. I've since used BuddyBuild for all our CI and that need was solved by them. It's still the 12 Factor principle just a bit different how they do it.
To your point about security. As far as I understand it, the JS is just as protected as the native code is right? This isn't viewing JS like it usually is on the web. You can't just view source/inspect it. So, that being said, if someone were to hack the app, it wouldn't matter at the point if the key was in the native code or in the JS bundle right?
Regarding where to pass the key:

the only thing that worries me here is that developers might think they can open multiple concurrent connections to the Play Store service by constructing multiple new InAppBilling(...).

Got it. Totally makes sense and I agree. That being said, I'm not so sure passing it into the open method is the best idea. It just seems a bit odd from the developer standpoint because you might think "why am I setting this key every time" and the thought of putting in some logic so you're only passing it in once otherwise would seem weird too (and to your point, it's very possible that you'd need to call multiple open and closees during the lifecycle of the application. But, keeping in mind your suggestion about exposing a static method, maybe following what Mixpanel does is a good idea (this is from our project):
// mixpanel.service.js

import {
    // this is importing the Mixpanel key from a file that isn't in the repo and is generated automatically by BuddyBuild (following 12 Factor best practices)
    MIXPANEL_KEY
} from '../../env';

import Mixpanel, {
    sharedInstanceWithToken
} from 'react-native-mixpanel';

// this is the method that is `export`ed for your to end your key in
sharedInstanceWithToken(MIXPANEL_KEY);

// now you are ready to start tracking events

export default Mixpanel;

Now, the only drawback here is that a developer must call sharedInstanceWithToken to initialize the plugin. But as long as this is obvious and right up front in the documentation, I don't think it would be a problem.
I don't really like the method name sharedInstanceWithToken - maybe we can have something much more obvious and specific like setGooglePlayLicenseKey. So, for example:
import {
  close,
  open,
  isPurchased,
  purchase,
  getPurchaseTransactionDetails,
  setGooglePlayLicenseKey
} from 'react-native-billing';

import {
  GOOGLE_PLAY_LICENSE_KEY
} from '../../../env';

setGooglePlayLicenseKey(GOOGLE_PLAY_LICENSE_KEY);

// now we're ready to purchase

Notice how I didn't import the default from the InAppBilling package. I've destructured the import because I'm being explicit in the methods that I want. I think this is a really clean practice and something else we should consider updating our plugin to. It prevents having multiple InAppBilling variables all over the place to call methods from.

It is a bad idea for the native side to "open" and "close" the connection for each operation (purchase, getProductDetails, consumePurchase, etc). And it is a bad idea to keep the connection open during the whole app lifecycle.
Let's talk about this.  In the front-and-center example on the home page you have the open and close method being called.

InAppBilling.open()
.then(() => InAppBilling.purchase('android.test.purchased'))
.then((details) => {
  console.log("You purchased: ", details)
  return InAppBilling.close()
})

Because, to your point, the connection needs to be opened in order for the purchase to work. However, this doesn't mean jackshit to me as the developer. All I want to do is purchase. It should be the plugin under the hood that manages this. It's too much to think about as a JS developer to have to open then close. We, who know better, should manage this connection on the plugin side so the developer can just call purchase. And to my point, in your second example you are calling close first:
// To be sure the service is close before opening it
await InAppBilling.close();
  try {
    await InAppBilling.open();
    if (!await InAppBilling.isPurchased(productId)) {
      const details = await InAppBilling.purchase(productId);
      console.log('You purchased: ', details);
    }
    const transactionStatus = await InAppBilling.getPurchaseTransactionDetails(productId);
    console.log('Transaction Status', transactionStatus);
    const productDetails = await InAppBilling.getProductDetails(productId);
    console.log(productDetails);
  } catch (err) {
    console.log(err);
  } finally {
    await InAppBilling.consumePurchase(productId);
    await InAppBilling.close();
  }

which you didn't do in the first example. Let's bundle this into the purchase method and not expose any of this stuff. It's just confusing and you, who know the native side under the hood better, should handle when to open and close the connection. So, a much shorter example of purchasing (with our newly created setGooglePlayLicenseKey method) might look like this:
import {
  isPurchased,
  purchase
} from 'react-native-billing';

import {
  GOOGLE_PLAY_LICENSE_KEY
} from '../../../env';

setGooglePlayLicenseKey(GOOGLE_PLAY_LICENSE_KEY);

export const pay = async productId => {
  try {
    const isAlreadyPurchased = await isPurchased(productId);

    if (!isAlreadyPurchased) {
      const receipt = await purchase(productId);
    }
  } catch (err) {
    // handle err
  }
}

This is now much more obvious what is going on and much simpler. To highlight:

We've moved all the code to the JS side for a developer. They can use react-native link out of the box and have everything ready to go for them because they don't need to put a license key in any native code.
We've taken the open and close methods and hid them from the developer and our calling them on our side because we're either a) calling it for them every time or b) using some kind of timeout that we'd close it after a while for performance reasons. Whatever the solution is though, this would reduce code and bugs as the developers won't have to do this themselves
We've simplified the imports so that the developers are explicitly deciding what methods they want to use.


Use .gitattributes to avoid merge conflicts in CHANGELOG

Perhaps this technique will reduce the number of PRs that have to be updated before being mergeable?
http://krlmlr.github.io/using-gitattributes-to-avoid-merge-conflicts/

The "Update" section of this post verifies https://about.gitlab.com/2015/02/10/gitlab-reduced-merge-conflicts-by-90-percent-with-changelog-placeholders/

FPO has been using it successfully on both the college-costs and retirement repos. Merge conflicts due to the CHANGELOG have gone to nil.

@marteki Score, thanks for the confirmation


Select entities seem to be shifted for my Intesis/Toshiba airco device

The indexing in the stateText strings seemed to be offset by one.
I have corrected this in my fork https://github.com/infradom/bacnet-fork ,
but as I only have one BACNET device, this may break other devices. I am not familiar enough with BacNet to know if this correction is needed for all Bacnet devices or just this device.

It might seem to be vendor specific. On my Siemens PXC4 and Priva Blue ID C4 the StateText strings seem to be correctly displayed. On these devices the present value is basically never 0 and always 1-amount of StateText strings.
Currently I'm only looking at MultiStateValue objects, as I don't have Input and Output as configured objects. Does your airconditioning's present value go to 0? Or was it an issue when writing to an object?
If you're using MultiStateInputs or Outputs, this might be the issue as I haven't really tested those. I'll see if I can get some of those objects set up in my devices.

Thanks !
I am indeed using MultiState Inputs and  Outputs. These were offset by 1
The multivalue treatment seemed to be correct in your implementation, I dit not modify your code for multivalue, just cosmetic
So if you have not tested MultiStateInput and Output, it is highly likely that it is a but in your code.
My values start at 1
Shall I issue a Pull Request in this case ?

Yeah, that is fine! It should be fixed then.

It's merged, should be fine now!

Thanks !!!


document COCKROACH_LOG_MAX_SYNC_DURATION

The environment variable COCKROACH_LOG_MAX_SYNC_DURATION configures the time to detect a disk stall. This needs to be documented.
Thread: https://cockroachlabs.slack.com/archives/CHVV403F0/p1619026675117800

Nb: this was implemented ever since v19.1.
The default has changed over the releases

19.1 to 20.2: 30 seconds
21.1: 60 seconds

Separately, we have another env var COCKROACH_ENGINE_MAX_SYNC_DURATION which does the same thing for low-level KV writes to disk.

Note for logging, we detect a stall starting at 10 seconds in all cases. That first threshold triggers a waraning. Then when the max duration (as configured by env var) is reached, the process terminated.

Note also the storage.max_sync_duration and storage.max_sync_duration.fatal.enabled cluster settings.


button: Missing documentation to install @mineral-ui/component-utils

Expected behavior
Expected to be able to follow documentation and import Mineral-UI Button into my project.
Current behavior
Get the error 'can't resolve @mineral-ui/component-utils'
Possible solution
Add instruction to documentation:
npm install --save @mineral-ui/component-utils
Steps to reproduce (for bugs)

Clone mineral-ui component repository
Follow import instructions

Context
Trying to use mineral-ui Button in a project
Versions
| Button | 2.0.1 |

Some possible solutions:

Update package readmes to include "Install the package and any of its peer dependencies"
Add a dev time check for components that validates that they are being used inside of a ThemeProvider?
update package readmes with script that installs peer dependencies