java-spring-boot2 Dockerfile fails trying to find JRE 1.8.0_sr5fp37

Describe the bug
I am using the kabanero java-spring-boot2 stack.  The appsody build is failing.  The Dockerfile downloads a yaml file from https://public.dhe.ibm.com and expects to find a fix pack labeled 1.8.0_sr5fp37 but there is no such fix pack in the response.
To Reproduce

appsody repo add kabanero https://github.com/kabanero-io/collections/releases/download/v0.1.0/kabanero-index.yaml
appsody init kabanero/java-spring-boot2
appsody build

Expected behavior
appsody build is successful
Actual behaviour
[Docker] + BASE_URL=https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/
[Docker] + wget -q -U UA_IBM_JAVA_Docker -O /tmp/index.yml https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta//sdk/linux/x86_64/index.yml
[Docker] [0m[91m++ sed -n '/^1.8.0_sr5fp37:/{n;s/\s*uri:\s//p}'
[Docker] [0m[91m+ JAVA_URL=
[Docker] + wget -q -U UA_IBM_JAVA_Docker -O /tmp/ibm-java.bin
[Docker] [0m[91mwget: missing URL
[Docker] Usage: wget [OPTION]... [URL]...
Environment Details (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

If applicable please specify:

CLI version: 0.4.2
Collection you are using: java-spring-boot2

Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
The Dockerfile does a wget to https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/sdk/linux/x86_64/index.yml.  When I go there I get this response:
# version: uri
---
1.8.0_sr5fp6:
    uri: https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/<IP_ADDRESS>/linux/x86_64/ibm-java-sdk-8.0-5.6-x86_64-archive.bin
    sha256sum: b5e2824313e62d647c7c7c7c8a6eb8704e445e915da460d379aedd30e6835030
    license: http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-PMAA-A3Z8P2&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+8.0&l=en

1.8.0_sr5fp40:
    uri: https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/<IP_ADDRESS>/linux/x86_64/ibm-java-sdk-8.0-5.40-x86_64-archive.bin
    sha256sum: bc53faf476655e565f965dab3db37f9258bfc16bb8c5352c93d43d53860b79d3
    license: http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-SMKR-AVSEUH&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+8.0&l=en

1.8.0_sr5fp41:
    uri: https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/<IP_ADDRESS>/linux/x86_64/ibm-java-sdk-8.0-5.41-x86_64-archive.bin
    sha256sum: 6545147d99ed83124eb6f0091b262d97089ba41b2c8c7d8adc7836836af29658
    license: http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-SMKR-AVSEUH&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+8.0&l=en

The Dockerfile uses sed to look for a string 1.8.0_sr5fp37 in the yaml file. Since that's not there, JAVA_URL isn't set to anything and the following wget fails.

@kilnerm This seems to be a major issue as the java we are using has been removed from the list. We may need to have another think of how we install Java on this stack. Could you please have a look at this. Thanks.

I have just opened PR #100 to move the java-spring-boot2 collection onto OpenJDK which has permanent download availability. This, in conjunction with the most recent merge from Appsody stacks, will resolve this issue for future releases.
I need to work out the porcess for delivering a fix on an existing release to resolve the issue for users of the released collection

This should be fixed with the latest v0.2.0-beta2 release and its subsequent updated docker images.

@GregDritschler This should be resolved in release v0.2.0-rc1. Could you please test and verify you issue is resolved?

Fix verified


⚠ Bofrost.be has degraded performance

In 88f4fcd, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2042 ms

Resolved: Bofrost.be performance has improved in c7c0229 after 21 minutes.


A .NET Core 6 console app can't start another console app from within itself (Process.Start()) in WSL while debugging in VS

Windows Version
Microsoft Windows [Version 10.0.19045.2251]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
Linux version <IP_ADDRESS>-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) <IP_ADDRESS>00220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
Distro Version
Ubuntu 20.04 LTS
Other Software
Microsoft Visual Studio Enterprise 2022
Version 17.5.2
VisualStudio.17.Release/17.5.2+33502.453
Repro Steps
A .NET Core 6 console app can't start another console app from within itself (using Process.Start()) in WSL (Windows Subsystem for Linux) while debugging in Visual Studio.
Here is the minimal setup to reproduce. There is first .NET Core console application:
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Process process = new Process();
            process.StartInfo.FileName = Path.Combine(".", "ConsoleApp2");
            using (process)
            {
                process.Start();
                process.WaitForExit();
            }
            Console.ReadLine();
        }

And the second console app can be almost anything, say, the simpliest Main(string[] args) method with "Console.WriteLine("Hello, World!");"
When debugging in WSL this code in Visual Studio 2022 I keep getting the exception below:
System.ComponentModel.Win32Exception
  HResult=0x80004005
  Message=An error occurred trying to start process './ConsoleApp2' with working directory '/mnt/c/Temp/TestProject2/ConsoleApp1/ConsoleApp1/bin/Debug/net6.0'. No such file or directory
  Source=System.Diagnostics.Process
  StackTrace: (is skiped for brevity)

Have tried to use different paths to pass-in.
When use this one:
            string path = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
            process.StartInfo.FileName = Path.Combine(path, "ConsoleApp2.dll");

I get exception:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Expected Behavior
I expect the second console app running, it quite likely a bug because why WSL can't find System.Runtime assembly if both console apps target the same .NET Core 6 and the first one is running (so all the .NET Core assemblies should be in place).
(but I'm still elaborating if I pass-in path to the second console app in a wrong way)
Actual Behavior
An exception:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Diagnostic Logs
No response

Add it as a comment to my own possible-bug report as it may also relate.
if your a path is like this one below (note 'exe' in the console app name):....
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Process process = new Process();
            string path = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
            process.StartInfo.FileName = Path.Combine(path, "ConsoleApp2.exe");
            using (process)
            {
                process.Start();
                process.WaitForExit();
            }
            Console.ReadLine();
        }

...from the second console (which code is below):....
        static void Main(string[] args)
        {
            Console.WriteLine("The second console!");

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                Console.WriteLine("The second console: I'm on Windows:\r\n");
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                Console.WriteLine("The second console: I'm on Linux:\r\n");
        }

...you get the output (below) (you get the second console running though :) ):
Hello, World!
The second console!
The second console: I'm on Windows:

The second console app works (or at least RuntimeInformation.IsOSPlatform(OSPlatform.Windows) returns True) on Win environment. Which doesn't seem right when you start the debug of the first console app in WSL.


Make setup script executable

Fixes https://github.com/twilio-labs/socless-playbooks-template/issues/2
Currently setup script is not executable, made it executable.
#Hacktoberfest
Contributing to Twilio

All third-party contributors acknowledge that any contributions they provide will be made under the same open-source license that the open-source project is provided under.

[X] I acknowledge that all my contributions will be made under the project's license.

@ubaniabalogun  please take a look when you get some time :bow:


Pattern match anomaly checker

Based on "Warnings for pattern matching" paper (link).
Currently implemented as a separate module that does not affect the rest of the compiler pipeline. Supports exhaustion check and finding useless clause. Unit test written in match test module.
Possible further improvements: provide counter-example for non-exhaustion case.
TODO: combine and merge with AST patterns.

Marking as Draft until thus lands changes to the main compiler pipeline

This commit is a very ugly/work-in-progress version of the exhaustion check. I will now work on integration tests for this checker pass. With the tests, I will refactor the code to a more stylistically reasonable state.


Register Oceananigans v0.6.1

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/1186
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if Julia TagBot is installed, or can be done manually through the github interface, or via:
git tag -a v0.6.1 -m "<description of version>" dcfc1bffda169aa80e246d382ad8fceae64ec658
git push origin v0.6.1


IL - Missing LOINC Codes

Describe the bug
Illinois reporting missing LOINC codes. These files need to be corrected and resent. There are over 100 different instances from two SimpleReport Facilities: Vernon Hills and Villa Park
Impact
Because of this, they are unable to determine what tests are being used.
Screenshots

@timothybest-usds the messages stated above originated from SR.
3b7cb8b7-0346-424a-961a-219b76463b23: Equipment name = BD Veritor System for Rapid Detection of SARS-CoV-2*
fb313e06-a477-4537-9924-98a1cd827472: Equipment name = BD Veritor System for Rapid Detection
Can you please verify if the above equipment aligns with the latest LIVD mappers. I suspect the LOINCs  were blanked because there is a mismatch. SR will also need to resubmit these records.

Anshul checking with IL to get full list of impacted message IDs for resubmission.

@zdeveloper I reached out to Tim on this, but I think he's ooo. Can you please resubmit these for IL? They are from SR.

@zdeveloper can you please take a look at these?

Done, resent 136 events


nil value (field 'cite_method')

I have the latest versions of RStudio and quarto installed.
After creating a new quarto project in RStudio, running quarto use template quarto-journals/elsevier

and then rendering the qt.qmd, I get the following error:
Error running filter _extensions/quarto-journals/elsevier/elsevier.lua:
_extensions/quarto-journals/elsevier/elsevier.lua:60: attempt to call a nil value (field 'cite_method')

Could you try updating to the latest prerelease version of Quarto? We've been making changes to the LUA apis which have affected some of our formats...
https://quarto.org/docs/download/prerelease.html

Thank you. Yes, it's working with the pre-release quarto --version 1.2.226.


Allow Unit Testing outside of repo

something like this naive implementation:
https://gist.github.com/danwalmsley/dfcd6fa0362a5ef551e8ea5569c0f789
possibly with headless branch merged in.
@kekekeks has a lot of ideas.

The current idea is to start the app in headless mode.
See https://github.com/kekekeks/Avalonia-unit-testing-with-headless-platform for a reference implementation


partial implementation of Email Events API

Hey @jhorv-bvb - we're just figuring out the best plan right now. We've started to iterate on a v1 branch (v1-preview), and will be looking to increase our overall API coverage. So if you wanted to add support for additional APIs and methods that would be a huge help!
Right now, there's a couple of issues with the custom models & serialization on that branch that we're working on at the moment too!

Sorry to just drop the ball on you @jhorv-bvb! We're getting back on it. Thank you for your PR!


docs/general/mdraid-esp: create guide for redundant ESP with mdraid

I drafted some warning text about volume consistency; feel free to edit as appropriate and fold whatever you like into your commit.


Filesystem  returns null

[Enter feedback here]
when I try to add sqlite database I use filesystem helper
string path1 = FileSystem.Current.AppDataDirectory;
the path1 returns null and the data did not be stored
I try
string dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Employees.db3");
but  the dbpath returns null too.

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

ID: 5b7e12aa-3c09-0f82-2fa2-a39c2c8065d8
Version Independent ID: 5b7e12aa-3c09-0f82-2fa2-a39c2c8065d8
Content: File system helpers - .NET MAUI
Content Source: docs/platform-integration/storage/file-system-helpers.md
Product: dotnet-mobile
Technology: dotnet-maui
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Hi @HossamTash
Afraid that product questions need raising in the engineering repo with a full repro sample.


useDrag with dropEffect can break dragging capability

Describe the bug
When using useDrag with specified dropEffect and props (deps array of the useDrag), and deps have changed - it won't allow to drag anymore after the first drop. Dragging is simply not working for some reason. Removing dropEffect  fixes the issue, so seems like it's a bug.
Reproduction
Live Reproduction
Steps to reproduce the behavior:

Take any example with hooks
Add simple state in Container.jsx file, for example, counter:

import { useState } from react;
// ...
// ... in component code
const [counter, setCounter] = useState(0);
// ...

Pass both counter and setCounter to SourceBox component
In useDrag hook, specify:

// ...
const [collected, drag] = useDrag(() => {
  type: ItemTypes.BOX,
  options: { dropEffect: 'copy' },
  end: () => { setCounter(c => c + 1); },
  // ... rest of the spec code
}, [counter]);
// ...
5. Drag once and drop
6. Verify dragging is not working anymore

**Expected behavior**
The case described above described should not break the dragging behavior.

**Screenshots**
N/A

**Desktop (please complete the following information):**

- OS: macOS
- Browser: Chrome
- Version 96.0.4664.55 (Official Build) (arm64)

**Additional context**
I didn't check if the same bug happens with Decorators, so don't know if it's just a Hooks-specific bug.

same happens with dropEffect

Apologies for the typo, @ItayBa you're right - it's dropEffect , not dragEffect (I don't believe there is such an option at all)

Indeed I am facing the same issue. Reverting back to v14.0.0 does solve it. Did you ever find a different workaround?

After investigation, the root cause of the issue is that dependencies when changed issue a disconnect of the drag connector, but the reconnect is not fired.
Looking at the file useDrag

The deps paramater when changed causes new instances of spec.options and spec.previewOptions to be created. These are passed to the useDragSourceConnector hook, which does the following:

Whenever the dragSourceOptions input has a new reference, the hook is re-fired, which means the connector.disconnectDragSource() is called when the dragSourceOptions are changed. That causes the connector to cleanup the old connection by disconnecting it. So far so good. Since the hook is re-fired, after the cleanup, the connector.reconnect() should be fired to re-connect the connector with the source.
However, the problem lies here:

The re-connection will only happen if the didChange variable is true. In the case of the same drag element in the HTML with only the deps array changing, the didHandlerIdChange and didConnectedDragSourceChange will evaluate to false since it is the same element. However, we expect the didDragSourceOptionsChange evaluation to be true, since the source options did in fact change due to the change in the deps array.
The didDragSourceOptionsChange does a key-by-key object comparison though using a custom shallowEqual implementation. This causes the evaluation of didDragSourceOptionsChange to be false even the reference changed due to the change in deps in the useDrag hook.
The workaround I did for now is that I added the values of my deps array as keys in the specOptions object. So for example, my code looks like this:
const [{ isDragging }, drag, preview] = useDrag(() => ({
      type: "someType",
      item: { id },
      options: { dropEffect: 'move', dep1, dep2 }, // Note that dep1 and dep2 don't belong as part of the options for the hook
      collect: (monitor) => ({ isDragging: monitor.isDragging() }),
  }), [dep1, dep2]);

Having the dependencies in the options object ensures that the didDragSourceOptionsChange function evaluate to true when the connector.reconnect() is called when the useDrag hook is updated.
My suggestions to a fix for this issue would be either:

Use reference equality == inside the didDragSourceOptionsChange function to account for the options reference changed. This would ensure the reavluation happens whenever the source options change whenever the hook is re-evaluated due to any of its dependencies changing. The source options would never change anyway since the default deps value is an empty array.
OR, pass down the deps (as a different interface?) to the connector to be evaluated as part of the expression that calculates the didChange variable value.

@omarsourour THANK YOU! This was pretty frustrating to debug, but your solution works great.
Would be great to get this fix merged now that were on 2 major versions past this issue :/

@jamesopti Happy it helped! :) Yeah hidden bugs like these can be tedious. I recommend implementing a wrapper around this hook if you use it in multiple places until the issue gets fixed.

any news on this defect ?

Thanks a lot for this, I tried @davletovalmir 's workaround & it solved a big roadblock for me

His so i just wanted to say I've come accross this issue myself in v16 and v15. Spent a lot of time debugging before I found this thread. I'd highly recommand updating the documentation to at least give a warning about this.

Hi
I'm using V16.0.1
Faced the same issue,
worked around by @davletovalmir advice!


Showcase Submission for transformations/translate-rotate-push-pop

Thank you The Kid for your contribution! A member of the Coding Train team will review it shortly.

and There Was Light
The Kid

I keep losing!! Great work :)


added a compiler command to clear the compiler cache

Seemed simple enough to implement so I took a crack at it. Working perhaps isn't the best, but I think is moderately clear enough. Didn't add any tests because I don't know enough about the compiler to know how to easily generate cache files.
Fixes #4730

For testing, you could just write a file to CacheDir.instance.dir, run the command and verify that the file is gone.
However, we don't really have much testing of compiler commands at all, so it should no be a requirement to add it for this one (it would be nice, though).

For testing, you could just write a file to CacheDir.instance.dir, run the command and verify that the file is gone. However, we don't really have much testing of compiler commands at all, so it should no be a requirement to add it for this one (it would be nice, though).

Added a spec for it. Not 100% sure if we actually want this spec or not, since it actually deletes the actual compiler cache, and I could imagine that there might be an issue with doing that during the tests. I'm thinking that it would be problematic if the compiler tests were ever run in parallel, since it could easily interfere with another test.
I briefly took a look at making a tempdir for the test and trying to use that instead of the actual compiler cache. Couldn't reassign the CacheDir singleton, and I'm not familiar enough with crystal to really know the best way to mock out a singleton. So if you have any guidance on that then I'd be happy to modify the spec so that it uses a tempdir instead of the actual compiler cache. Otherwise, I think this is alright for now (especially since the spec isn't really a requirement for the PR)

I briefly took a look at making a tempdir for the test and trying to use that instead of the actual compiler cache. Couldn't reassign the CacheDir singleton, and I'm not familiar enough with crystal to really know the best way to mock out a singleton. So if you have any guidance on that then I'd be happy to modify the spec so that it uses a tempdir instead of the actual compiler cache. Otherwise, I think this is alright for now (especially since the spec isn't really a requirement for the PR)

Closest to mocking that stdlib provides, is monkey-patching the CacheDir class, sth like:
class CacheDir
  class_setter instance

  def initialize(@dir)
  end
end

This would allow you to swap the CacheDir instance in specs, preferably within around_each hook.

@baseballlover723 Please avoid force pushes to a PR, as requested in the the contributing guide. Especially, after it has been approved and milestoned.

My apologies, I didn't realize that that document existed. I'll refrain from force pushing in the future.


ISPN-8570 Produce Hibernate 5.1 and 5.2 compatible 2LC providers

https://issues.jboss.org/browse/ISPN-8570
The cache providers have been split into two modules:

org.infinispan:infinispan-hibernate-cache for 5.2
org.infinispan:infinispan-hibernate-cache-v51 for 5.1

The cache-commons module keeps shared production and test code that's compatible with either version.
The work relies heavily on using ServiceLoader pattern to load version specific classes. This was much easier to implement than inheritance based approaches.
There are 3 big compatibility issues that drove the code changes:

The switch from SessionImplementor (5.1) to SharedSessionContractImplementor (5.2) in Hibernate Region APIs.
Refactoring of Hibernate transaction classes from org.hibernate.resource.transaction to org.hibernate.resource.transaction.spi
Refactoring of Hibernate Query classes from org.hibernate to org.hibernate.query.

@galderz @Sanne @emmanuelbernard @sebersole will org.infinispan:infinispan-hibernate-cache also cover other ORM versions (e.g. 5.3, 6.0, 7.0, ...)?

@galderz thanks!
@scottmarlow we'll upgrade the targeted versions as necessary. For example I expect we'll soon target ORM 5.3 and drop 5.2, while maintaining the one compatible for ORM 5.1 a bit longer (as it's in WildFly).
Would be good to release at least one stable version before switching though, so that people using ORM 5.2 have an option.

@scottmarlow we'll upgrade the targeted versions as necessary. For example I expect we'll soon target ORM 5.3 and drop 5.2, while maintaining the one compatible for ORM 5.1 a bit longer (as it's in WildFly). Would be good to release at least one stable version before switching though, so that people using ORM 5.2 have an option.

So I guess the plan is:

Infinispan 9.2 would have Hibernate 5.2 and 5.1 providers.
Infinispan 9.3 we'd move up to Hibernate 5.3 and 5.1 providers.

@galderz @Sanne thanks for the quick response!
I think that a tricky part will be knowing when to sync to Hibernate 6.0 and 5.1 providers, which is a bit in the future, so not a concern today but soon will be.  @Sanne proposed (WildFly) being able to sync with three ORM versions, perhaps Infinispan should consider that also when 6.0/7.0/later versions come into play.
We actually have been integrating with three Hibernate ORM versions in WildFly (when it makes sense), we just currently only include the Hibernate ORM jars for one version.
@pferraro any concerns from you, about potentially supporting WildFly second level caching with Hibernate 5.1 + 5.3 (JPA 2.2) + 6.0 (maybe next year)?  The idea is that the WildFly-Hibernate integration code (JipiJapai impl) will extend this new Infinispan module that replaces the current (Hibernate ORM) hibernate-infinispan code.  I think that Hibernate may provide the Hibernate 5.3 implementation of https://github.com/wildfly/wildfly/tree/master/jpa.

So it's reasonable from your perspective to drop hibernate-infinispan in
5.3?
On Wed, Dec 13, 2017 at 9:52 AM Scott Marlow<EMAIL_ADDRESS>wrote:

@galderz https://github.com/galderz @Sanne https://github.com/sanne
thanks for the quick response!
I think that a tricky part will be knowing when to sync to Hibernate 6.0
and 5.1 providers, which is a bit in the future, so not a concern today but
soon will be. @Sanne https://github.com/sanne proposed (WildFly) being
able to sync with three ORM versions, perhaps Infinispan should consider
that also when 6.0/7.0/later versions come into play.
We actually have been integrating with three Hibernate ORM versions in
WildFly (when it makes sense), we just currently only include the Hibernate
ORM jars for one version.
@pferraro https://github.com/pferraro any concerns from you, about
potentially supporting WildFly second level caching with Hibernate 5.1 +
5.3 (JPA 2.2) + 6.0 (maybe next year)? The idea is that the
WildFly-Hibernate integration code (JipiJapai impl
https://github.com/wildfly/wildfly/tree/master/jpa) will extend this
new Infinispan module that replaces the current (Hibernate ORM)
hibernate-infinispan code. I think that Hibernate may provide the Hibernate
5.3 implementation of https://github.com/wildfly/wildfly/tree/master/jpa.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/infinispan/infinispan/pull/5638#issuecomment-351432724,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOUEy8qFwUWa0mYPZtuV74H6vb3PF1Pks5s__K8gaJpZM4Q-1Aa
.

@scottmarlow No concerns from me.  This is already integrated as part of my Infinispan 9.1.x upgrade branch (currently sitting at the end of a long PR dependency queue). See: https://github.com/pferraro/wildfly/tree/infinispan-9.1

No concerns about dropping hibernate-infinispan as part of Hibernate 5.3?
On Wed, Dec 13, 2017 at 2:29 PM Paul Ferraro<EMAIL_ADDRESS>wrote:

@scottmarlow https://github.com/scottmarlow No concerns from me. This
is already integrated as part of my Infinispan 9.1.x upgrade branch
(currently sitting at the end of a long PR dependency queue). See:
https://github.com/pferraro/wildfly/tree/infinispan-9.1
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/infinispan/infinispan/pull/5638#issuecomment-351512635,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOUE5hiffTZ5mP_6mH-51EWrU7tvfAJks5tADOkgaJpZM4Q-1Aa
.

@sebersole My integration branch already removes references to hibernate-infinispan (for 5.1, at least).  So, I don't have any concerns if this is dropped as part of Hibernate 5.3.

Neither do I @sebersole


Look into supporting the Kivy Inspector

Kivy has an inspector that may be worth including in mpf-mc.  I followed their example here and was able to get it somewhat working but it looks like it only picks up children in the widget tree down to the DisplayOutput.  I wonder if we're doing something in DisplayOutput that prevents it from recognizing the widgets it contains.
If you'd like to try it out you can update MpfMc.displays_initialized to the following:
    def displays_initialized(self, *args):
        del args
        self.validate_machine_config_section('window')
        from mpfmc.uix.window import Window
        Window.initialize(self)
        ### add these lines
        from kivy.core.window import Window as KivyWindow
        from kivy.modules import inspector
        inspector.create_inspector(KivyWindow, self)
        self.events.post('displays_initialized')

Once your game is running you can press Ctrl-E to toggle the inspector.
Example
https://ibb.co/T4Shjjy

Wow that is cool. We probably do something different. I guess this is worth exploring.
Jan

So the issue is that Kivy's inspector is looking for a list of children on each widget in the widget tree.  DisplayOutput explicity doesn't add children.
I put together a proof of concept here by updating the DisplayOutput class to manage its own children list.  It works but I'm not sure if this is safe to do.  If you want to try it out I've got the changes on this branch:
https://github.com/seanirby/mpf-mc/tree/kivy-inspector

The reason for that is that a display can be attached to multiple display widgets. That is a concept which is missing in kivy. However, I don't think this would hurt. I will try that in my machine later as I use that feature


Updates ember-inflector version

Current version is 1.3.1

thx! @rwjblue, any reason you put 1.4.0?

@twokul / @samselikoff - ember-inflector is kinda messed up as an addon. As you can see 1.4.0 is available in the repo (see here), but not on NPM or bower.

gotcha, went ahead and reverted. thanks.

@rwjblue @samselikoff  that's not the one available through bower, I don't think. bower link and repo link

@twokul - Yes, that repo is pushing to bower, but the latest tag was not pushed to bower.  That is what I'm saying.

@rwjblue ok, re-read your comment

yah 1.4 doesn't work out of the box, user has to add to bower. I'll use 1.3 for now until next version is on bower.

Not sure why the travis build didn't fail though, is there a way to clear the cache each time?


What is the recommended version of 'react-native-reanimated' that best suits for react-native-draggable-flatlist

Describe the bug
For this issue #244 (comment) some one suggested to install reanimated v1 --   Then I installed reanimated- 1.13.2 then I got following error

Error: Unable to resolve module ./reanimated2 from node_modules\react-native-reanimated\src\Animated.js:

This error is apparently stating that reanimated 2 must be installed then I installed - reanimated": "2.0.0-rc.3". Then I got following error

TurboModuleRegistry.getEnforcing(...): 'NativeReanimated' could not be found. Verify that a module by this name is registered in the native binary., js engine: hermes

Even though I followed this thread I haven't found a clear solution for this. Here I am not sure about what version of reanimated should be installed.
To Reproduce
Please install reanimated package as I mentioned above. Then you can encounter this error.
Platform & Dependencies
Please list any  applicable dependencies in addition to those below (react-navigation etc).

Platform: android
React Native: 0.63.2
Reanimated version: I tried both "2.0.0-rc.3" and 1.13.2
React Native Gesture Handler version: "1.9.0"

Additional context
I just want to mention that at some point of time Draggable Flatlist worked fine with both reanimated versions mentioned above. But all of sudden both versions of package are giving error.
I want to here from package manager that what exact version is suitable to Draggable Flatlist and I want same thing to be mentioned in the package documentation.

I suspect your errors are only related to reanimated, and not this library. Go over the installation instructions again for reanimated and make sure to clear your cache before switching between the two - the first error when downgrading from reanimated two is a cache error.

@Svarto I agree with you that errors are related to reanimated only. But I would like to know the suitable version of reanimated. Can you tell me the suitable version if you are using react-native-draggable-flatlist?

I have used both reanimated v1.13.2 and reanimated v2.0.0-rc0 with no issues other than a yellow warning for v2, but that could easily be silenced and is already a known issue here in the repo.

@Svarto  I have installed  v2.0.0-rc.0. This is also giving same error in command prompt

due to which I am unable to proceed for further. Others also getting the same error - Issue - #1127. But hey are getting this issue when they enabled debug mode. for that some one suggested this solution .But I am getting this error even though I didn't enable debug mode.
Can you please suggest any solution for this?

I would suggest you ask that question in the reanimated repo. From the looks of it you are using the Hermes js engine /turbo modules that reanimated doesn't like that - either due to you not cleaning out cache before startup or it's actually incompatible. I am on expo right now, so don't have experience with reanimated in RN-cli.

@Svarto Thank you for your suggestion.


fix: pnpm config flag

Fixes --userconfig flag error as pnpm uses --config (https://github.com/pnpm/pnpm/issues/40).
Example: https://github.com/jundaoapp/design/actions/runs/3983241579/jobs/6828393161#step:9:59

Apparently v7 doesn't use --config either, and any possibility to override the default configuration finding logic was completely and opinionatedly removed.


Add Heroku button for one-click deploys

Because I'm fundamentally lazy, when I stumble across projects that are easy to deploy on Heroku it's awesome to have a one-click Heroku Button. This automatically sets up the app based on the contents of app.json in the project root when clicked.
You can see how this might work by visiting this URL – it basically asks you for the required environment variable and then goes ahead and sets up a shiny new Heroku app for you.

That's awesome, thanks @mcmillan!


Add more explanation to the API version

Added more explanation what the latest and stable really means.

Any more suggestions? 🤔

The API server will redirect, according to whether the customer is a beta or live customer. All you can do by choosing "latest" or "stable" is getting faster results.

I think I get it now, after an internal discussion with @dkaisers. I think we need to adapt the code first before we add some extra explanation here.
Will adapt the code first. Stay tuned.


'Connect-AzureAD' is not recognized as a name of a cmdlet in macOS

Context:
I'm running PowerShell 7.3.1 in macOS Ventura 13.0.1 as admin, and I want to use AzureAD module.
Process:
I ran the following instruction to install AzureAD module Install-Module -Name AzureAD
which installed fine, but the issue comes up when I want to import the module using Import-Module AzureAD
what I'm getting is the next error message

Import-Module: Could not load file or assembly 'System.Windows.Forms, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.

Also, when I want to connect to AzureAD with Connect-AzureAD -AccountId [myemailaddress] it doesn't recognize the cmdlet, and what I get is this:

Connect-AzureAD: The term 'Connect-AzureAD' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Any suggestion? Am I missing something or doing something wrong?
Please let me know. Thanks!
-Noe

The AzureAD module is unfortunately not supported on platforms other than Windows.
As the AzureAD module relies on the Azure AD Graph API which is planned for deprecation, the recommendations is to start using the
Microsoft Graph PowerShell module instead. This module has cross-platform support based on PowerShell 7.

The AzureAD module is unfortunately not supported on platforms other than Windows.
As the AzureAD module relies on the Azure AD Graph API which is planned for deprecation, the recommendation is to start using the Microsoft Graph PowerShell module instead. This module has cross-platform support based on PowerShell 7.
Check out Azure AD PowerShell to Microsoft Graph PowerShell migration FAQ for additional information.

Thanks for the reply :) I'll try to learn and see how it works!

Thank you, @NoahOliva for raising this issue and @janegilring for your response.
I will proceed to close this issue.


Version tag standardization

The developer in me wants consistent tags on our releases. The last release got tagged with a different format.
$> git tag
9.5.0
v8.0.0
v9.0.0
v9.1.0
v9.2.0
v9.3.0
v9.4.0

I don't know if we have documented what the tag should look like.
Is adding the tag automated or is it still manual?
Visually I like the "v" in front of the semver number, but if it wasn't there then it could be used directly to replace the "X.x.x" in the release process and other scripts (for automated tests, deploy scripts, etc).

The correct format is v9.5.0. It is documented here:  https://semarts.atlassian.net/wiki/spaces/OF/pages/1126760539/gist+Release+Management+Ontologists.
It is still manual. The release manager should do a GitHub release and specify the name of the tag.

However, I'm looking at the releases and see it tagged as v9.6.0. When I run git tag I get:
v8.0.0
v9.0.0
v9.1.0
v9.2.0
v9.3.0
v9.4.0
v9.5.0
v9.6.0

Releases are named "9.6.0" etc. and I wonder if that should be changed to "v9.6.0" as well.

Closing - can't reproduce.


WIP: Persistence

WIP: Added Export() to export a cache.
This is a work-in-progress for exporting the entire cache so it can be stored on disk. This layout/format isn't set in stone, nor is it terribly performant currently. Would love some feedback on how to improve the performance. I think it would be good to pipeline the data export a bit, so instead of trying to serialize the entire cache, you can pipeline it with a io.Writer and channels.
Signed-off-by: Mike Lloyd<EMAIL_ADDRESS>

Coverage decreased (-34.6%) to 55.639% when pulling 93bc3d99a73e313c132f53412d65d11e7b2e4502 on storage into ca9a59ef2ad95442436b6a0ed9f061e6a47e376a on master.

There is still a lot of work left to be done on this PR.

I have to make sure that it can be done concurrently and asynchronously.
I still have to implement Import().
We have to agree on the interface.
I have to go through and figure out how to make the export performant.
Data integrity is very important, so we definitely need a way to export it, but it should be fast enough, which is a problem when you go to checksum it.
Import() should be fast enough.
We have to agree on the file format.
I need to figure out how to do this without copying the entire cache (thus doubling a memory requirement).

I wanted to push an early commit so I can get some early feedback. This directly relates to feedback in #83.

Closing until I have a better solution in mind.


Cannot Activate UICollectionView Cell Click

I am trying to test the ability to click a cell. I am printing to the log on cell click. However, when I click the respective cell I am not seeing anything being printed:
`
import UIKit
import FirebaseDatabase
import FirebaseDatabaseUI
import FirebaseStorageUI
import Material

private let reuseIdentifier = "PollCell"

class TrendingViewController: UICollectionViewController {

    var ref: FIRDatabaseReference!
    var dataSource: FUICollectionViewDataSource!
    fileprivate var menuButton: IconButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        ref = FIRDatabase.database().reference()
        prepareMenuButton()
        print("TESTER")

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Register cell classes

        self.dataSource = self.collectionView?.bind(to: self.ref.child("Polls")) { collectionView, indexPath, snap in
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! PollCell
            /* populate cell */
            cell.pollQuestion.text = snap.childSnapshot(forPath: "question").value as! String?
            let urlPollImage = snap.childSnapshot(forPath: "image_URL").value as! String?
            cell.imageView.sd_setImage(with: URL(string: urlPollImage!), placeholderImage: UIImage(named: "Fan_Polls_Logo.png"))
            //Comment
            return cell
        }

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print("CLICKED")
}

extension TrendingViewController {
    fileprivate func prepareMenuButton() {
        menuButton = IconButton(image: Icon.cm.menu)
  }
}`

You haven't assigned the collection view's delegate property.


useIncomers, useOutgoers hooks

get incomers and outgoers by simply useIncomers() inside a node

I will close this, because we added useHandleConnections that can be used to get the connections of a specific handle.


webcomponents: unnecessary wrappers

Describe the bug
The outcome produces a builder-component which wouldn't exist in the React counterpart, meaning that each component will result in DOM bloat for no reason, nor benefits.
To Reproduce
Steps to reproduce the behavior:

visit this demo example
inspect the DOM
note builder-component wraps the DIV, which is the only thing React would render instead

Expected behavior
A div builtin extend that is="builder-component-xxx" where xxx is the unique relation between the MyComponent function and the outcome in the DOM.
Additional context
The only way to represent React output as Custom Element is to use builtin extends, available in every browser but Safari, which can easily be polyfilled if necessary in case window.safari or window.webkit exists, through import maps or ad-hoc builds for these targets.
The output should be a custom elements which represents what the React function would return and update its state/view whenever a state is triggered.
This is because it's impossible otherwise to represent special nodes such as td, li, tr, option, or others, if these get wrapped by unrelated nodes.
Changing div with td as returned node will indeed fail.

When you say “inspect the dom”, are you referring to the builder preview? The preview uses a  wrapper just for the visual editor to work. It should not be in the mitosis generated code unless I am mistaken and you can point us to where the mitosis output code includes this

@steve8708 when I say inspect the DOM I mean with devtools DOM inspector, but it's trivial to understand the output will have a <builder-component> element and that cannot possibly work in cases like this one.
You cannot translate React into Custom Elements wrappers, because not all elements can be wrapped, and wrapping creates unnecessary DOM bloat regardless.

Hey @WebReflection I still think there is some confusion here. When editing visually with Builder.io, we rap the editable region in a . But Mitosis will never output code to have this (that I know of). I am guessing you are inspecting the dom in that preview iframe but that adds wrapping for the interactive editor to work that doesn't show up in the output code. In the example you linked to, this is the output code which has no

Let me know if I am mistaken here though

Oops I am on clunky plane wifi and think my image never uploaded, I'll paste here as text instead. This is what mitosis actually generates:
/**
 * Usage:
 *
 *  <my-component></my-component>
 *
 */
class MyComponent extends HTMLElement {
  constructor() {
    super();

    const self = this;
    this.state = { name: "Steve" };

    // Event handler for 'input' event on input-1
    this.onInput1Input = (event) => {
      this.state.name = event.target.value;
      this.update();
    };
  }

  connectedCallback() {
    this.innerHTML = `

        <input class="input" data-name="input-1" />

        Hello! I can run in React, Vue, Solid, or Liquid!

      `;
    this.update();
  }

  update() {
    this.querySelectorAll("[data-name='input-1']").forEach((el) => {
      el.value = this.state.name;
      el.removeEventListener("input", this.onInput1Input);
      el.addEventListener("input", this.onInput1Input);
    });
  }
}

customElements.define("my-component", MyComponent);

The  is just an alternative means of rendering for visual editing that has some slight differences from the mitosis output, and shouldn't affect mitoisis's generated code

this is what I mean: the outcome creates a wrapper of what React would've created ...

React: it renders a div
mitosis: it renders a custom element that contains the div React would've rendered so it adds an extra layer/element per each translated component

This does not work when components cannot be wrapped, as it is for
, ,
, <option> and other standrd HTML element otherwise possible with React.
Indeed, this example/demo is not possible with current mitosis webcomponents target, but if it is, please show me that exact demo outcome after mitosis, where the rendered output should be exactly this one:

      Name
      Age

      Custom Element
      8

I hope this is now clear.

This absolutely clarifies, thanks so much for taking the time to elaborate @WebReflection. I am not married to the current approach at all, would be absolutely be game for your propose change. Please feel free to improve this and shoot over a PR!
Also, you should join our discord where we have a #mitosis->general channel for chatting on this stuff as well, would love to collaborate closely and love your ideas, you can join here

I'm afraid I don't have much time these days to join channels, plus I've solved this long time ago through my libraries!
However, I'd be more than happy to write down what this project should consider, in order to properly translate React to WC, as long as this project also welcomes custom elements builtin extends, and optional Safari polyfill, otherwise we'll both waste time around this topic 'cause nothing else would practically work 😉

I'm afraid I don't have much time these days

@WebReflection  Congratulations! 😄

However, I'd be more than happy to write down what this project should consider, in order to properly translate React to WC

That would be greatly appreciated! Knowledge from domain experts such as yourself can be tremendously helpful for us to implement the Mitosis WC generator. 🙏🏽

@samijaber thanks! About the example, this is just a quick summary of what should be done, but it requires special care for props and it doesn't include fragments possibility. Bear in mind 1:1 React to WC is extremely difficult to have, simply because the paradigm is different, and so are the primitives used behind the scene.
React
import { useState } from<EMAIL_ADDRESS>
export default function MyComponent(props) {
  const [name, setName] = useState("Steve");

  return (

 console.log(event.type)}>
      <input
        css={{
          color: "red",
        }}
        value={name}
        onChange={(event) => setName(event.target.value)}
      />
      Hello! I can run in React, Vue, Solid, or Liquid!

  );
}

WC
/**
 * Usage:
 *
 *

 *
 */
 class MyComponent extends HTMLDivElement {
  constructor() {
    super();

    // needed only if global style is needed/used (see connectedCallback)
    this.dataset.name = 'div-1';

    this.state = { name: "Steve" };

    // Event handler for 'click' event on div-1
    this.onDiv1Click = (event) => {
      console.log(event.type);
    };

    // Event handler for 'input' event on input-1
    this.onInput1Input = (event) => {
      this.state.name = event.target.value;
      this.update();
    };
  }

  // currently, the injected style would affect all inputs out there
  // so, there are two different possible CSS solutions for the input:
  //  * inline style (faster, simpler, easier to implement)
  //  * global style with a specifier:
  //
  connectedCallback() {
    this.innerHTML = `
        <input style="color: red;" data-name="input-1" />

        Hello! I can run in React, Vue, Solid, or Liquid!
    `;
    this.update();
  }

  update() {
    // the values related to the element itself should be addressed directly
    this.value = this.props.name;
    this.removeEventListener("click", this.onDiv1Click);
    this.addEventListener("click", this.onDiv1Click);

    // values related to inner nodes should, instead, be added at runtime
    this.querySelectorAll("[data-name='input-1']").forEach((el) => {
      el.value = this.state.name;
      el.removeEventListener("input", this.onInput1Input);
      el.addEventListener("input", this.onInput1Input);
    });
  }
}

customElements.define("my-component", MyComponent, {extends: 'div'});
// the render should now create a
 instead
// and it should attach right after `props` to it

Now, with this kind of outcome, we can represent pretty much every JSX except for fragments, which cannot really be represented as single WC because we can't extend, or define, a fragment in a declarative way, so that use case might require a special <partial-content> Custom Element that takes its previous node and append to it its content.
Last, but not least, it should be possible to have inner components through "virtual slots" injected once with the innerHTML on connected callback, and updated later on each time it's needed (propagate updates down those references).
So, updates propagates down but there's no need to propagate up, except for events that bubble already so ... it's all good.
I hope this give you a better idea of what I mean when I say that currently mitosis does not provide React to WC conversion.


How to create a custom TransportBindingElement for .Net Standard 2.0

I'm going to implement a binding with a custom transport over a message broker, namely SolaceSystems.Solclient.Messaging for .Net Standard 2.0.
I've done it for .Net Framework 4.6.1 - see for reference SolaceBinding.
However, when I tried to port it to .Net Standard I faced a lack of following classes (I used System.ServiceModel.Primitives nuget package):
System.ServiceModel.Channels.ChannelListenerBase<T> (ChannelFactoryBase<T> exists)
System.ServiceModel.Channels.IReplyChannel (IRequestChannel exists)
System.ServiceModel.Dispatcher.IDispatchMessageFormatter (IClientMessageFormatter exists)
Looks like I'm able to implement the client side of a custom transport, but not the server side. Have these classes been renamed?
Anyway, could you please provide a sample how to implement the server side of a custom transport binding element (ChannelListener, IReplyChannel, IDispatchMessageFormatter etc)?

Moved to https://github.com/dotnet/wcf/issues/3255


Set up ListView for banned countries on Settings

The list of banned countries with checkboxes should be set up to make it configurable.
What we need to do is set up a scrollable list view with countries pulled from an API or as a constant JSON file. Look into it.
Passing criteria is having a configurable list view of banned countries that can be selected and unselected.

This feature was completed on another ticket. Closing.


deps: update bunyan

Pretty straight-forward. Without this change there were a lot of dtrace errors.

Probably needs a version bump, if this is merged?

Hi, thank you.

No problem :-)


bug: Notifier closes window created by nvim-treesitter-context

Did you check docs and existing issues?

[X] I have read all the snacks.nvim docs
[X] I have updated the plugin to the latest version before submitting this issue
[X] I have searched the existing issues of snacks.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
0.10.2
Operating system/version
MacOS 14.4
Describe the bug
Notifications created by the Notifier snack cause the nvim-treesitter-context window to close. This is especially bad when using Notifier to display LSP progress with Notifier and nvim-treesitter-context enabled.
Steps To Reproduce

Open a code file that is scroll-able to display a nvim-treesitter-context window.
Run a test notification :lua vim.notify("test")

Expected Behavior
The notifier window should display above the nvim-treesitter-context window (this is how nvim-notify by rcarriga handles it)
Repro
vim.env.LAZY_STDPATH = ".repro"
load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

require("lazy.minit").repro({
  spec = {
    { "folke/snacks.nvim", opts = { notifier = { enabled = true } } },
    { "nvim-treesitter/nvim-treesitter-context" },
  },
})

That's a bug in the nvim-treesitter-context code. See this line: https://github.com/nvim-treesitter/nvim-treesitter-context/blob/8e412ebe97d84504b68a071ecf9bb68413b13632/lua/treesitter-context.lua#L192
It should check that the event was triggered by the buffer where the context is being displayed.
not a snacks issue


Trace fixtures have clear timestamps

While working on #33 it's clear that the fairly arbitrary timestamps in the test traces make it hard to validate results (and see the bug that was present).
This change has no functional effect, but makes it much easier to validate the expected SI results.
The results below for speed indexes calculated for trace w/ 1 frame @ 4242ms already arise some suspicions. :) I'll be addressing those back in #33.

Gonna proactively merge this guy to simplify the next few patches.
That said, happy to make any changes if you guys spot anything. :)


Cloudstack shouldn't allow to change a user's password if the user is of saml and ldap  from cloudstack

ISSUE TYPE
Bug/Improvement request
COMPONENT NAME
Component: Improvement, UI,Bug
CLOUDSTACK VERSION
Cloudstack version 4.19.1.x
SUMMARY
Cloudstack shouldn't allow to change a user's password if the user is of saml and ldap  from cloudstack
Steps to reproduce the issue

Have a cloudstack environment with Ldap and saml enabled

Make sure the ldap user and saml users are imported with a user role

Navigate to a ldap user /saml user , or login as a ldap/user. there is an option to change the password

Previously Cloudstack  didn't allow to change the password of ldap or a small account

Expected behaviour
The update user API call shouldn't allow to change the password for ldap/saml user
https://cloudstack.apache.org/api/apidocs-4.19/apis/updateUser.html
Cloudstack shouldn't allow to change a user's password if the user is of saml and ldap  from cloudstack
Cloudstack should throw an exception message to contact the administrator

fixed in #9999


compute_map error. e= unhashable type: 'numpy.ndarray'

I keep getting compute_map error. e= unhashable type: 'numpy.ndarray' when training

Sounds weird since the map is not supposed to be computed during training.
Next week we'll release a step by step tutorial on how to use the repository to finetune on a custom dataset.
In the meanwhile can you please provide me with enough code for me to reproduce your issue?
Thanks

Sounds weird since the map is not supposed to be computed during training.
Next week we'll release a step by step tutorial on how to use the repository to finetune on a custom dataset.
In the meanwhile can you please provide me with enough code for me to reproduce your issue?
Thanks

The code is the one from train_coco.py
The command given was python train_coco.py --datadir /root/detr-tensorflow/coco --batch_size 1  --target_batch 1 --log

The code is the one from train_coco.py
The command given was python train_coco.py --datadir /root/detr-tensorflow/coco --batch_size 1  --target_batch 1 --log

Never mind, that error seems to be gone. I was actually able to train a simple model on a V100 with 32 Gb, but if I try to do the same with a GTX1050 with 2 Gb I get:
Traceback (most recent call last):
File "train_coco.py", line 74, in
run_finetuning(config)
File "train_coco.py", line 58, in run_finetuning
training.fit(detr, train_dt, optimzers, config, epoch_nb, CLASS_NAME)
File "/root/detr-tensorflow/training.py", line 46, in fit
m_outputs, total_loss, log, gradient_steps = run_train_step(model, images, t_bbox, t_class, optimizers, config)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/def_function.py", line 828, in call
result = self._call(*args, **kwds)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/def_function.py", line 862, in _call
results = self._stateful_fn(*args, **kwds)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 2942, in call
return graph_function._call_flat(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 1918, in _call_flat
return self._build_call_outputs(self._inference_function.call(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 555, in call
outputs = execute.execute(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.ResourceExhaustedError:  OOM when allocating tensor with shape[252,256,2048] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[node gradient_tape/detr_finetuning/detr/transformer/encoder/layer_5/linear2/MatMul/MatMul_1 (defined at /root/detr-tensorflow/optimizers.py:115) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
[Op:__inference_run_train_step_69433]
Errors may have originated from an input operation.
Input Source operations connected to node gradient_tape/detr_finetuning/detr/transformer/encoder/layer_5/linear2/MatMul/MatMul_1:
detr_finetuning/detr/transformer/encoder/layer_5/dropout_11/dropout_1/Mul_1 (defined at /root/detr-tensorflow/networks/transformer.py:174)
Function call stack:
run_train_step
Obviously, it is running out of memory: not much that can be done there. Hope this is useful information

Never mind, that error seems to be gone. I was actually able to train a simple model on a V100 with 32 Gb, but if I try to do the same with a GTX1050 with 2 Gb I get:
Traceback (most recent call last):
File "train_coco.py", line 74, in
run_finetuning(config)
File "train_coco.py", line 58, in run_finetuning
training.fit(detr, train_dt, optimzers, config, epoch_nb, CLASS_NAME)
File "/root/detr-tensorflow/training.py", line 46, in fit
m_outputs, total_loss, log, gradient_steps = run_train_step(model, images, t_bbox, t_class, optimizers, config)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/def_function.py", line 828, in call
result = self._call(*args, **kwds)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/def_function.py", line 862, in _call
results = self._stateful_fn(*args, **kwds)
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 2942, in call
return graph_function._call_flat(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 1918, in _call_flat
return self._build_call_outputs(self._inference_function.call(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/function.py", line 555, in call
outputs = execute.execute(
File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.ResourceExhaustedError:  OOM when allocating tensor with shape[252,256,2048] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[node gradient_tape/detr_finetuning/detr/transformer/encoder/layer_5/linear2/MatMul/MatMul_1 (defined at /root/detr-tensorflow/optimizers.py:115) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
[Op:__inference_run_train_step_69433]
Errors may have originated from an input operation.
Input Source operations connected to node gradient_tape/detr_finetuning/detr/transformer/encoder/layer_5/linear2/MatMul/MatMul_1:
detr_finetuning/detr/transformer/encoder/layer_5/dropout_11/dropout_1/Mul_1 (defined at /root/detr-tensorflow/networks/transformer.py:174)
Function call stack:
run_train_step
Obviously, it is running out of memory: not much that can be done there. Hope this is useful information

Thanks, but that hasn't shown again. Probably just needed a reboot. :)

Thanks, but that hasn't shown again. Probably just needed a reboot. :)

I am having that issue too! It happens with finetune_hardhat.py


SILOptimier: Fix a miscompile in COWArrayOpt.

If a make_mutable operation is done conditionally in a loop, the hoisting of this operation can cause an over-release of the array buffer in some cases.
rdar://problem/48906146
Unfortunately it causes some benchmarks to regress. But (at least for now) we have to live with it.

@swift-ci test

@swift-ci benchmark

Performance: -O

TEST
OLD
NEW
DELTA
RATIO

Regression

RemoveWhereSwapInts
19
60
+215.8%
0.32x

RemoveWhereMoveInts
12
35
+191.7%
0.34x

DropLastAnySeqCntRange
508
727
+43.1%
0.70x

DropLastAnySeqCRangeIter
516
713
+38.2%
0.72x

MapReduceSequence
475
637
+34.1%
0.75x

RandomShuffleLCG2
1760
2304
+30.9%
0.76x

SuffixAnySeqCntRange
755
882
+16.8%
0.86x

SuffixAnySeqCRangeIter
809
933
+15.3%
0.87x

Improvement

ObjectiveCBridgeStubFromNSDateRef
4370
4060
-7.1%
1.08x (?)

Code size: -O

TEST
OLD
NEW
DELTA
RATIO

Regression

RandomShuffle.o
3507
3683
+5.0%
0.95x

ReversedCollections.o
11451
11675
+2.0%
0.98x

RemoveWhere.o
23991
24439
+1.9%
0.98x

Performance: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

RemoveWhereSwapInts
19
62
+226.3%
0.31x

RemoveWhereMoveInts
12
35
+191.7%
0.34x

DropLastAnySeqCRangeIter
515
724
+40.6%
0.71x

DropLastAnySeqCntRange
521
731
+40.3%
0.71x

MapReduceSequence
509
680
+33.6%
0.75x

RandomShuffleLCG2
1744
2288
+31.2%
0.76x

SuffixAnySeqCntRange
755
879
+16.4%
0.86x

SuffixAnySeqCRangeIter
814
936
+15.0%
0.87x (?)

Code size: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

ReversedCollections.o
9674
9930
+2.6%
0.97x

RandomShuffle.o
3759
3847
+2.3%
0.98x

RemoveWhere.o
23702
24166
+2.0%
0.98x

Breadcrumbs.o
44821
45573
+1.7%
0.98x

SortIntPyramids.o
12673
12881
+1.6%
0.98x

RangeOverlaps.o
11824
11952
+1.1%
0.99x

Code size: -swiftlibs

TEST
OLD
NEW
DELTA
RATIO

Regression

libswiftStdlibUnittest.dylib
352256
356352
+1.2%
0.99x

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

I think instead of the postdominance query you can ask whether the BB dominates the exit(ing blocks).

@aschwaighofer You are right, just using the dominator tree is better.

@swift-ci smoke test

@swift-ci smoke test

@swift-ci smoke test

@swift-ci benchmark

@swift-ci benchmark

Performance: -O

TEST
OLD
NEW
DELTA
RATIO

Regression

RemoveWhereSwapInts
17
53
+211.8%
0.32x

RemoveWhereMoveInts
10
31
+210.0%
0.32x

DropLastAnySeqCntRange
456
652
+43.0%
0.70x

DropLastAnySeqCRangeIter
460
636
+38.3%
0.72x

MapReduceSequence
426
572
+34.3%
0.74x

RandomShuffleLCG2
1584
2064
+30.3%
0.77x

SuffixAnySeqCntRange
678
793
+17.0%
0.85x

SuffixAnySeqCRangeIter
727
850
+16.9%
0.86x

Code size: -O

TEST
OLD
NEW
DELTA
RATIO

Regression

RandomShuffle.o
3507
3683
+5.0%
0.95x

ReversedCollections.o
11451
11675
+2.0%
0.98x

RemoveWhere.o
23991
24439
+1.9%
0.98x

Performance: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

RemoveWhereSwapInts
17
56
+229.4%
0.30x

RemoveWhereMoveInts
10
31
+210.0%
0.32x

DropLastAnySeqCntRange
467
656
+40.5%
0.71x

DropLastAnySeqCRangeIter
465
646
+38.9%
0.72x

RandomShuffleLCG2
1552
2080
+34.0%
0.75x

MapReduceSequence
457
610
+33.5%
0.75x

SuffixAnySeqCntRange
678
791
+16.7%
0.86x

SuffixAnySeqCRangeIter
730
851
+16.6%
0.86x

Code size: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

ReversedCollections.o
9674
9930
+2.6%
0.97x

RandomShuffle.o
3759
3847
+2.3%
0.98x

RemoveWhere.o
23702
24166
+2.0%
0.98x

Breadcrumbs.o
44821
45573
+1.7%
0.98x

SortIntPyramids.o
12673
12881
+1.6%
0.98x

RangeOverlaps.o
11824
11952
+1.1%
0.99x

Code size: -swiftlibs

TEST
OLD
NEW
DELTA
RATIO

Regression

libswiftStdlibUnittest.dylib
352256
356352
+1.2%
0.99x

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 8-Core Intel Xeon E5
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 8
  L2 Cache (per Core): 256 KB
  L3 Cache: 25 MB
  Memory: 64 GB


fix: avoid use of deprecated stage names

These cause warnings with recent versions of pre-commit, and will be
removed in the future.

Thanks!


Query: Fixes order by logic to throw original exception instead of AggregateException

Description
I expect OperationCancelledException not AggregateException If operation is cancelled

use GetAwaiter() to avoid AggregateException
pass CancellationToken to Continue to avoid start continuation if not needed
fix typo

Type of change

[] Bug fix (non-breaking change which fixes an issue)

/azp run

/azp run

Just waiting for a fix to go in then I'll start the test run.

/azp run


len(AdvancedCollectible) is always 0, tokenId does not increment

I thought I made a mistake modifying it to 0.8, but even with a fresh pull of the example code this is still the case. It happens in the video too @ 1:24:10

Same problem here. It also then always prints the token_id = 0 breed in the print function in create_collectible.py
breed = get_breed(advanced_collectible.tokenIdToBreed(token_id))
print("Dog breed of tokenId {} is {}".format(token_id, breed))

I have feeling that this funtion does not properly work
token_id = advanced_collectible.requestIdToTokenId(requestId)

However
sender = advanced_collectible.requestIdToSender(requestId)

gives me the right sender address (=my address).

Can you send the full command you're running, the error you're getting, and the script you're running.

@Tomberino @PatrickAlphaC I am running into this issue as well, and I think this again has to do with the delayed response from the Chainlink nodes. When you call createCollectible that function updates the requestIdToSender mapping (which is why you are seeing this mapping work), but not the requestIdToTokenId mapping. That mapping is only updated after the fulfillRandomness callback is called by the Chainlink node.
So my question is, is there a way within brownie to wait or listen for an event? I suspect that you'd want to wait or listen for the Transfer event that is emitted from the _safeMint function so that you know the token has actually been minted before checking the requestIdToTokenId mapping.

Yes, it's on my todo list to add a listen update to the examples here, I just haven't got around to it yet.
You can either:

Listen
wait longer

To solve


Evaluation overview / university view: Firefox CSS issue

tttriple on Firefox could not view whole table: it went over the right screen side without offering a horizontal scroll bar.
This CSS issue is difficult to reproduce, didnt happen on my Firefox

Reproduced on Firefox: Make window smaller than normal laptop screen. Reload the page. If the screen is resized, the problem seems to be fixed but reappears on reload.

happens on chrome too.
There's a temporary fix for this in production, which is that a horizontal scroll appears if the table does not fit, but this should be fixed better. some css pro... @rikurauhala ? or uusihenkilö??


How do i use forget() now

Hey guys, i was using forget() which in master is removed. I'll go through the commit history to find how is it intended to use now, but thought of asking here too in case it has a quick answer:
Previously:
fn run() {
    std::thread::spawn(move || {
        for it in mpsc_rx.recv() {
            let tx = queue.remove(it.uuid);
            tx.complete(SomeType);
        }
    }).unwrap();
}

fn ffi(cb: extern "C" foo(*const u8, u32)) {
    let (tx, rx) = futures::oneshot();
    queue.insert(some_uuid, tx);
    rx.map(move |result| {
        let (data, size) = transform(result);
        cb(data, size);
    }).forget();
}

How am i supposed to correctly transform this ^^^ using master (it works with the one in crates.io) ?
Thanks !

Thanks for the report! The forget function was removed in favor of a clearer picture about where futures are actually executed. I think here what you'll want to do is to have a CpuPool in the background, and you'll want to spawn futures into it.
The problem with forget before was that it'd just run code on whatever thread completed it, which while fine for some use cases can be quite dangerous for others. The recent executor changes made it much clearer about where futures are being executed.

Let me know if that doesn't help though!

Thanks for the prompt reply !
I have only just started working with this crate so my lack of understanding might be frustrating. Is CpuPool is a threadpool kind of stuff ? Anyway, i thought a simple example is worth a million explanatory words, so i better state my problem using one instead of potentially confusing myself with my own explanations.
 So natural progression was to use a single threaded event-loop and callback pattern. The above changes to:
// Caller calls f0() as many times without a thread-per-call for simultaneous access.

fn f0<F: FnOnce(Type0)>(cb: F) { // async call
    f1(move |type_1| {
        f2(move |type_2| {
            f3(move |type_3| {
                cb(transform(type_1, type_2, type_3));
            }
        }
    }
}

fn f1<F: FnOnce(Type1)>(cb: F) {
    network_call(move |network_result_type| { // async call
        cb(transform(network_result_type));
    });
}

fn f2<F: FnOnce(Type2)>(cb: F) {
    network_call(move |network_result_type| { // async call
        cb(transform(network_result_type));
    });
}

fn f3<F: FnOnce(Type3)>(cb: F) {
    network_call(move |network_result_type| { // async call
        cb(transform(network_result_type));
    });
}

Of-course all callbacks will be called in the thread running the event-loop. So now we have 2 threads - the caller's and the event-loop and with those we can have unlimited async invocations of f0() by the caller. But as you can see this callback nesting and indentation is what i wanted to prevent and thought of using futures-rs.
Using futures:
fn f0<F: FnOnce<Type0>)(cb: F) { // async call
    let future_type_1 = f1(); // async call
    let future_type_2 = f2(); // async call
    let future_type_3 = f3(); // async call
    let joined_futures = future_type_1
        .join(future_type_2)
        .join(future_type_3);

    joined_futures.map(|((type_1, type_2), type_3)| {
        cb(transform(type_1, type_2, type_3));
    }).forget();
}

fn f1() -> Box<Future<Item=Type1, Error=futures::Canceled>> {
    let network_result_future = network_call(); // async call - registers a futures::Complete with event loop returning a futures::Oneshot
    network_result_future.and_then(move |network_result_type| {
        let type_1 = transform(network_result_type);
        futures::finished(type_1)
    }).boxed()
}

fn f2() -> Box<Future<Item=Type2, Error=futures::Canceled>> {
    let network_result_future = network_call(); // async call
    network_result_future.and_then(move |network_result_type| {
        let type_2 = transform(network_result_type);
        futures::finished(type_2)
    }).boxed()
}

fn f3() -> Box<Future<Item=Type3, Error=futures::Canceled>> {
    let network_result_future = network_call(); // async call
    network_result_future.and_then(move |network_result_type| {
        let type_3 = transform(network_result_type);
        futures::finished(type_3)
    }).boxed()
}

Though i wouldn't say the code is particualarly pretty now, i do not have the danger of callback hell and there is no inversion of flow of control like it is in callback based mechanism. Also there are still 2 threads again - one in which the Caller calls f0 and the other in which futures actually execute. Now i get your concern that if all futures were somehow ready, forget() could fire in the same thread as the Caller's (when they called f0()). (This though, is not very important for my use-case but that's beside the point).
So without the use of forget() what is the transformation of the above code ? I don't want to have a thread pool with futures performing blocking waits. That would be ugly and underutilisation of the library because depending on the network-io wait, one could exhaust the thread pool with futures' blocking waits.

Oh so in the example above if you didn't want to bake in the concept of where the future ran, you'd want to punt the future up, e.g. return a future from f0. That way the caller could figure out the most approriate way to run the future. For example it could run it on the event loop or perhaps in a thread pool

The problem, though, is the first function f0() is called from across the FFI. So i can see only 2 simple solutions - either it's a blocking call (which i wanted to refactor) OR i take an ffi callback in f0() like shown. Returning a future is thus not an option (well i could return an opaque pointer but that wouldn't bring any benefit).
However I have got back the functionality of forget() using a very round about way.
struct MyExecutor;
impl Executor for MyExecutor {
    fn execute(&self, r: Run) {
        r.run();
    }
}

// then later in code instead of `final_future.forget()` what i need to do now is:
task::spawn(final_future).execute(Arc::new(MyExecutor));

This behaves exactly as forget() once again (and if i can use this anyway why remove forget() - it was a convenience). But that is assuming that these are not also soon-to-be-removed ways of doing things.
What i am actually looking for is a notification based solution (like callbacks) instead of polling. forget() was one such solution. The others that you have mentioned seem to be all polling based (delegate a blocking future::wait() to a thread etc). Is there any notification based solution you have in mind (because what i did above with executor does not look pretty - i am not even sure i am meant to use it that way) ?

Ah yeah it's true that you can rebuild forget() with what you did above. We in general found it dangerous enough (running code in "random locations") to not provide by default, but we may need to discuss more!
You can transform polling to notifications with the forget you wrote + oneshot channels I think, would that work? (I may not be precisely understanding what you're thinking)

Yes with forget() it would work. So when it was removed i was hunting for a mechanism to do it. I was unsure given that forget() was removed if my way of doing it as above was valid at all. But since you sanction my rebuild of forget() the way i did above - i think all is good.
Thanks a ton @alexcrichton !


Separator between two consecutive capital

北京理工大學 北京理工大学 [Bei3 jing1_Li3 Gong1_Da4 xue2] /Beijing Institute of Technology/Institute of Technology, Beijing/

Should it be Bei3 jing1_Li3_Gong1_Da4 xue2? otherwise it will be rendered as Běijīng LǐGōng Dàxué, instead of Běijīng Lǐ Gōng Dàxué
Same with:
古巴比倫 古巴比伦 [Gu3 Ba1 bi3 lun2] /ancient Babylon/Babylon, ancient/

That will be rendered as: GǔBābǐlún

Ah, that's a conversion issue.  The original is Běijīng Lǐ-Gōng Dàxué, which should probably convert to Bei3 jing1_Li3-Gong1_Da4 xue2 in the ChinaScribe format, but I need to double-check if ChinaScribe can handle the hyphen.

Confirmed ChinaScribe 1.63 can cope with hyphens in its CEDICT-like format.
(ChinaScribe also now has a newer format of its own, which is closer to the first 5 columns of the main cedpane.txt if labelled Definitions Simplified Traditional Mandarin_1 Yale_1 except the definitions need to be /-separated and alternate orders provided.  Using this new format for ChinaScribe imports might help if CedPane improves on ChinaScribe's default Cantonese conversion, plus it also has a way to specify segmentation priority, although the level numbers are limited and you'd have to sync it with the rest of the dictionary; I often prefer to add "phrase" entries to solve common segmentation misses.  But I'm not so sure it's a good idea to drop the old ChinaScribe format from CedPane now a few other projects are using it.  Fixing the hyphens conversion probably wouldn't do any harm though.)

Confusing delimeters -_, I think they are meant as _
e.g.,
安城鄉 安城乡 [An1 cheng2-_Xiang1] /Ancheng- Township/Township, Ancheng-/
北隍城鄉 北隍城乡 [Bei3 huang2 cheng2-_Xiang1] /Beihuangcheng- Township/Township, Beihuangcheng-/

Yes, there's incorrect extra hyphens in 50 township entries.  They were there before in cedpane.txt; the fix to the ChinaScribe conversion merely exposed the existing problem in that format too.  I'm not quite sure how this got in; probably some mistake in a one-off conversion script I used to add some townships to the rest of the data.  Will fix in the next update.

Ah but the hyphen should not be there, it should be Bāyīzhèn

Ah but the hyphen should not be there, it should be Bāyīzhèn

Hm.. that seems to runs counter to the examples given on 2.4 when I saw these examples, the zhen4 seems need to be separated:
Běijīng Shì (Beijing City),
Dòngtíng Hú (Lake Dongting)
And then further reading, saw particular guidelines for towns (zhen4), villages (cun1), etc, :)

So it's Bāyīzhèn 👍


Added DPR Support

This PR adds support for PrizeTierHistoryV2 contracts. This means reading these contracts' info, displaying all relevant info, allowing the user to edit DPR values on the edit forms, and submit transactions to update these on-chain.
The main changes to accomplish this are the following:

Added V2 contract ABI (abis/PrizeTierHistoryV2.js).
Added DPR inputs on edit form.

Added DPR displays for V2 contracts throughout the app.

Added checks to differentiate V1 and V2 contracts throughout the app (isV2s, etc.).
The PrizeTierConfigV2 type is used instead of PrizeTierConfig app-wide.
The usePrizeTierHistoryContracts hook (link) now also includes V2 contracts from config.

Other fixes/improvements were made alongside these changes, such as:

Contracts with no prize tiers on them yet no longer break the app (fallbacks are now used in some places).
Values changes from 0 now show the correct color.
Abstracted out EditButton for easier use (link).
Once a transaction is successful, the contract's data is now refetched (link).
Added the formatPrettyPercentage util (link).

Couple more comments:

I'm getting an overflow with these numbers

Showing "Remove Tier X" in the button would be a little clearer

I'm getting an overflow with these numbers

Fixed it through ed041a8 (it was calculating correctly, but obviously it shouldn't exceed the decimals of the token being used).
The logic for formatting the prize totals is now on utils/formatTotalPrizeValue.ts.

Showing "Remove Tier X" in the button would be a little clearer

Agreed - added in aa8c5d0 :)
I also noticed that the DPR percentage was being rounded quite aggressively by the default .toLocaleString() percentage settings. I've set that to round to 4 decimal places if necessary for now.


Plugin breaks if the filename contains a number range

Hi Andrew,
Thanks for creating this great plugin!
I was just using it on a file with a filename readme-2000-2010-2.md and the plugin broke. It thinks that all edits should happen on line 2000.
I experimented some more and it works if the filename is readme-2000.md but breaks again if it's readme-2000-2010.md.
Also, if the pathname contains a range but the filename does not, then sometimes it breaks the same way. At the moment, it looks like it breaks if the pathname contains a range only if it's using git grep.
Apparently, if there's something that looks like a number range in the pathname or filename, then something goes wrong.
I hope you can replicate it and fix it. Thanks once again.
Peter

Ah, parsing edge cases. The plugin tries to match grep output to figure out which part is a filename and which is a line number. I suppose it's unsurprising that it doesn't work that well for all cases.
I'll see what I can do to fix the situation. I've got some ideas, but I need to try them out.

I've pushed some commits that should fix the issue. Essentially, the problem is that filename:42:line text is unambiguous, but file:name:42:line text is not so much. What I ended up doing is checking the possible combinations of : delimiters (and also - delimiters) and confirming that the parsed file exists, that it has a line that matches the parsed line, and that the contents are the correct ones.
 But there's no reliable way that I can see to get grep output in a more machine-readable way. Ripgrep has a --json flag that I should really play around with.
In any case, could you test it out now and confirm it works correctly?

Hello Andrew,
Thanks for your work! I just started testing the new release but ran into something that looks like a completely new bug that wasn't there before.
Here's a screenshot that shows the new issue:

Here are the steps that I took that led to this new issue.

I upgraded the previous writable-search version that I had cloned from this git repository on Feb 24 to today's master.

To quickly create a directory with number ranges for testing, I copied writable-search directory to /tmp/writable-search-git-2020-04-16 and opened the README.md file in vim. When I ran the :WritableSearch the command, I got the error in the screenshot.

Just to verify that it's a new issue in today's master, I put back the Feb 24 version and this issue was not present (but the previous issue is still present.)

Here are 5 commands for quick copy/pasting that instantly lead to this new issue:
cd /tmp
git clone 'git@github.com:AndrewRadev/writable_search.vim.git'
mv 'writable_search.vim' 'writable-search-git-2020-04-16'
vim writable-search-git-2020-04-16/README.md
:WritableSearch the

I'll be happy to do more testing at any time, just let me know.
Peter

Ah, I seem to have missed a particular case to test. Thanks for the detailed report. Could you try the most recent master?

Hi Andrew,
I just tested today's master (head 5dd96a52) but unfortunately another error has come up. I took the same steps to test it as the last time and got this error:

For your convenience, here are the commands that I ran:
cd /tmp
git clone 'git@github.com:AndrewRadev/writable_search.vim.git'
mv 'writable_search.vim' 'writable-search-git-2020-04-21'
vim writable-search-git-2020-04-21/README.md
:WritableSearch the

I'll be happy to test again, just let me know when.
Peter

Ah, yes, seems like I had managed to fix it only for a specific case, my bad. I've pushed another attempt, please try again.

Hi Andrew,
I just tried again with the latest commit 5644382 but now a new error has come up:

I used the exact same 5 steps as in the previous message. I'll be happy to test again, just let me know, and thanks so much for all this effort!
Peter

That's strange, I can't replicate the error with these steps. Could you let me know what your Vim version is, and ideally share your .vimrc? There might be some configuration I'm accidentally relying on.

Hi Andrew,
I use the following vim version:
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 21 2019 04:10:35)
Included patches: 1-197, 322, 377-378, 550, 649, 651, 703, 706-707
Extra patches: 8.1.1401, 8.1.1382, 8.1.1368, 8.1.1367, 8.1.1366, 8.1.1365, 8.1.1046, 8.1.0613, 8.1.0547, 8.1.0546, 8.1.0544, 8.1.0540, 8.1.0539, 8.1.0538, 8.1.0506, 8.1.0208, 8.1.0206, 8.1.0205, 8.1.0189, 8.1.0177, 8.1.0067, 8.1.0066

I just disabled all plugins except writable-search and here's a list of all default system plugins that were loaded:
  1: /usr/share/vim/vimrc
  2: /usr/share/vim/vim80/debian.vim
  3: ~/.vimrc
  4: /usr/share/vim/vim80/filetype.vim
  5: /usr/share/vim/vim80/ftplugin.vim
  6: /usr/share/vim/vim80/indent.vim
  7: /usr/share/vim/vim80/syntax/syntax.vim
  8: /usr/share/vim/vim80/syntax/synload.vim
  9: /usr/share/vim/vim80/syntax/syncolor.vim
 10: /usr/share/vim/vim80/plugin/getscriptPlugin.vim
 11: /usr/share/vim/vim80/plugin/gzip.vim
 12: /usr/share/vim/vim80/plugin/logiPat.vim
 13: /usr/share/vim/vim80/plugin/manpager.vim
 14: /usr/share/vim/vim80/plugin/matchparen.vim
 15: /usr/share/vim/vim80/plugin/netrwPlugin.vim
 16: /usr/share/vim/vim80/plugin/rrhelper.vim
 17: /usr/share/vim/vim80/plugin/spellfile.vim
 18: /usr/share/vim/vim80/plugin/tarPlugin.vim
 19: /usr/share/vim/vim80/plugin/tohtml.vim
 20: /usr/share/vim/vim80/plugin/vimballPlugin.vim
 21: /usr/share/vim/vim80/plugin/zipPlugin.vim
 22: ~/.vim/pack/writable-search/start/writable_search.vim/plugin/writable_search.vim

My .vimrc is here: https://github.com/pkrumins/dotfiles/blob/master/.vimrc
Please let me know if you need any other extra information.
Peter

Hm, I think I maybe sort of understand what might be the problem. The core of it is that running the command includes stderr, which means diagnostic messages also get placed in the buffer, like "permission denied". I think the reason I'm not getting the error with my normal Vim setup is because my backend is the ack.vim plugin which might do its own filtering.
I'll see about ignoring stderr, but I'm wondering if it would work for you if you cd-ed into the writable-search-git-2020-04-21 directory before running the command. So, running these steps:
cd /tmp
git clone 'git@github.com:AndrewRadev/writable_search.vim.git'
mv 'writable_search.vim' 'writable-search-git-2020-04-21'
vim writable-search-git-2020-04-21/README.md
:WritableSearch the

Either way, I do need to fix the stderr issue, just wondering if this is the core of the problem or if there's something else still.

Update: The stderr issue should be fixed, so your unmodified test might work now as well.

Hi Andrew,
Thanks for figuring this out! I just tried the latest master at d6a408 and it's working well. The original issue and other issues are gone.
Just one final question:
When I run the :WritableSearch the command, then make some test changes, then :wq! the results tab, I end up with about 15 open buffers.
Here's a screenshot that lists the open buffers after I :wq! exited the results tab:

It looks like these are all buffers that have the matches. Is that the expected behavior? I don't remember if it left all buffers with matches open before.
Peter

Yes, this has probably always been the case. To update the buffers, the plugin switches to them, applies the update, then switches back. Which is why it temporarily sets bufhidden to hide for the proxy buffer before jumping to the other ones.
I've applied a fix, since it shouldn't be necessary to hide the original buffers. Let me know if it looks okay now.

Hi Andrew,
I just tested the new version (master f537c7) and it's almost perfect now except for one new issue related to buffers.
Here are the steps to reproduce it:
cd /tmp
echo "hello the world" > a
echo "bye the world" > b
echo "adfasdf the world" > c

git clone 'git@github.com:AndrewRadev/writable_search.vim.git'
mv 'writable_search.vim' 'writable-search-git-2020-04-29'
vim a b c writable-search-git-2020-04-29/README.md
:WritableSearch the

Now change some "the" in some of files to something else like "moo".
Now :wq! to save the changes.
What will happen now, only a file (the first argument to vim) will stay open but the buffer of this file will have some weird property. If you now open any new file or create a fresh new buffer via :enew, then a file/buffer will disappear and this error will appear when you try to switch to a again:

I'll be happy to test again at any time.
Peter

Hm, I see, the problem is that I was too eager to mark buffers as deletable when switching back to the result buffer. I added a check for whether the buffer already exists or we're loading it just for the replacement. Could you check now?

Hi Andrew,
I just got to testing the latest changes and it looks like it's finally working without errors. Really great!
There are just two more tiny issues which I don't think are related to this ticket but it would be nice to fix them as well.
The first one is this – after doing a :w! in WritableSearch buffer, it shows this message "No lines in buffer". Like this:

The second is this one – it shows a lot of grep "No such device or address" messages right after running ":WritableSearch foo". Like this:

Both of these issues can be reproduced with the latest master and with all plugins disabled (only writable_search plugin is active).
I'll be happy to test these last two issues at any time.
Peter


Theme: Encoding issue on System Information page

Greetings.
You have a disruption of the character encoding in the marked areas on the screenshot.
And they are becoming more.
I ask you to fix them.

It only affects on XHR.
https://domain.ru:10000/stats.cgi?xhr-stats=general
On window.focus() encoding is OK.

Dupe:
https://github.com/qooob/authentic-theme/issues/921

XHR has been fixed. I see.
But Cron menu item in System group still broken.

Cron label will be fixed with next Webmin release.

There is one more thing.
Google Chrome Javascript console
bundle.js:46270 Refused to create a worker from 'blob:https://domain.ru:10000/6fe6c2b3-a02c-4b03-afd5-0f208bc6bd42' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval'". Note that 'worker-src' was not explicitly set, so 'script-src' is used as a fallback.

"Cron label will be fixed with next Webmin release."
Thanks.
It was annoying.