Allow to use 0 damage for hostile mobs

The API currently forces a minimum damage of 1 for hostile mobs. This PR allows to use 0 damage.
It can be fun to have mods which try to attack you but never deal damage. Also required for an actual mob I want to create.

Changed.


Packer - move to use external plugins

 Warning: Bundled plugins used

 This template relies on the use of plugins bundled into the Packer binary.
 The practice of bundling external plugins into Packer will be removed in an
 upcoming version.

 To remove this warning and ensure builds keep working you can install these
 external plugins with the 'packer plugins install' command

 * packer plugins install github.com/hashicorp/azure
 * packer plugins install github.com/hashicorp/amazon
 * packer plugins install github.com/hashicorp/googlecompute

We can of course install the correct plugin per packer image build.

Done as part of https://github.com/scylladb/scylla-pkg/pull/4168


Found version 4, expected 3

Hi, I'm getting this issue:
ERROR in node_modules/ngx-editor/app/ngx-editor/ngx-editor-toolbar/ngx-editor-toolbar.component.d.ts (3,31): Cannot find module 'ngx-bootstrap'.
ERROR in Error: Metadata version mismatch for module /node_modules/ngx-editor/ngx-editor.d.ts, found version 4, expected 3
Maybe It's something easy to fix but i'm newbie using this tool. Any ideas?

@mjuri. What version (both angular and ngx-editor) are you using and have u installed ngx-bootstrap.

Hi! I'm using angular 1.4.10 and latest version of ngx-editor

angular 1.4?
This Editor is for Angular 2.x, Works well with 4.x

@mjuri . Close the issue if you are using angular 1.x

sorry, my apologies, I gave you my angular cli version before. I'm using 4.2.4

Try upgrading your angular version. The Editor works well with angular 5.2.0 which is a peerDeendency

@mjuri . Did that work

Yes, it was that. Thank so so much for your help I really appreciate it

😄


DNaaS vs No Code Benchmark

I wanted to perform a simple benchmark against DNaaS (/dev/null as a Service) I was pleasantly surprised to find No Code was infinitely faster.
DNaaS:
❯ touch nothing.txt
❯ time curl -d @nothing.txt -X POST http://devnull-as-a-service.com/dev/null
0.01s user 0.01s system 1% cpu 0.651 total

0.651s (baseline)
No Code:

+∞% (faster)

Wow, excellent work!  We should be sure to add this into the Readme!  I guess the question is whether or not the faster percentage should be displayed as ±∞% faster or should be NAN% faster?

@iamkirkbater I'm open to either formatting option. May want to check the standards doc for this project?


Allow to use arrow keys with TOOL_MOVE

Closes https://github.com/godotengine/godot-proposals/issues/249

Thanks!

this also is valid for 3.1 and 3.2

Cherry-picked for 3.2.1.


Added release script and documentation

As discussed in #16, this PR adds a release.sh to help with making releases consistent. For documentation, I have added a RELEASING.md. Additionally, I have added mlmorg as an owner to image-diff in npm.
In this PR:

Added release script
Added documentation for releasing

/cc @mlmorg

This PR will fail Travis CI due to #17 not being landed.

Awesome, thanks @mlmorg!


Asserting checked exception while creating an Aggregate

There is a problem with asserting checked exceptions during the creation of an Aggregate. Consider an Aggregate like this:
public class MyAggregate {
    ...
    public MyAggregate(CreateMyAggregateCommand cmd) throws CheckedException {
        throw new CheckedException();
    }
    ...
}

And a test like this:
public class MyAggregateTest {
    ...
    @Test
    public void testMyAggregateCreation() {
        fixture.givenNoPriorActivity()
                  .when(new CreateMyAggregateCommand())
                  .expectException(CheckedException.class);
    }
    ...
}

The test fails with this stacktrace:
org.axonframework.test.AxonAssertionError: The command handler threw an exception, but not of the expected type

Expected <an instance of io.axoniq.demo.meetup.command.CheckedException> but got <exception of type [NullPointerException]>. Stacktrace follows:
java.lang.NullPointerException
	at org.axonframework.commandhandling.model.LockingRepository.prepareForCommit(LockingRepository.java:207)
	at org.axonframework.commandhandling.model.LockingRepository.prepareForCommit(LockingRepository.java:50)
	at org.axonframework.commandhandling.model.AbstractRepository.lambda$newInstance$7(AbstractRepository.java:117)
	at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:68)
	at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.notifyHandlers(DefaultUnitOfWork.java:91)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:221)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commitAsRoot(AbstractUnitOfWork.java:82)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commit(AbstractUnitOfWork.java:70)
	at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:75)
	at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:148)
	at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:121)
	at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:85)
	at org.axonframework.test.aggregate.AggregateTestFixture.when(AggregateTestFixture.java:372)
	at org.axonframework.test.aggregate.AggregateTestFixture.when(AggregateTestFixture.java:359)

Hi, here are test cases for checked and unchecked exceptions. Only unchecked test case passes.
import org.axonframework.commandhandling.CommandHandler;
import org.axonframework.test.aggregate.AggregateTestFixture;
import org.junit.*;

class ExceptionalAggregate {
    ExceptionalAggregate() {}

    @CommandHandler
    ExceptionalAggregate(DivideByZero command) {
        int division = 1 / 0;
    }

    @CommandHandler
    ExceptionalAggregate(InstantiateFoo command) throws ClassNotFoundException {
        Class.forName("foo");
    }
}

public class ExceptionalAggregateTest {
    private AggregateTestFixture<ExceptionalAggregate> fixture;

    @Before
    public void setUp() {
        fixture = new AggregateTestFixture(ExceptionalAggregate.class);
    }

    @Test
    public void testCheckedExceptionInConstructor() {
        fixture.when(new InstantiateFoo())
                .expectException(ClassNotFoundException.class);
    }

    @Test
    public void testUncheckedExceptionInConstructor() {
        fixture.when(new DivideByZero())
                .expectException(ArithmeticException.class);
    }
}

class DivideByZero {}

class InstantiateFoo {}

As a workaround I can extend my domain exceptions from RuntimeException. And in Kotlin it doesn't matter are exceptions checked or not.

also getting this error. All my tests with expectException passed in Axon 3.2; after upgrading to Axon 3.3.6 they failed with same stack trace as above.
java.lang.NullPointerException
	at org.axonframework.commandhandling.model.LockingRepository.prepareForCommit(LockingRepository.java:207)
	at org.axonframework.commandhandling.model.LockingRepository.prepareForCommit(LockingRepository.java:50)
	at org.axonframework.commandhandling.model.AbstractRepository.lambda$newInstance$7(AbstractRepository.java:117)
	at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:68)
	at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.notifyHandlers(DefaultUnitOfWork.java:91)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:221)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commitAsRoot(AbstractUnitOfWork.java:82)
	at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commit(AbstractUnitOfWork.java:70)
	at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:75)
	at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:148)
	at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:121)
	at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:85)
	at org.axonframework.test.aggregate.AggregateTestFixture.when(AggregateTestFixture.java:372)
	at org.axonframework.test.aggregate.AggregateTestFixture.when(AggregateTestFixture.java:359)

I cannot make my exceptions unchecked as the CommandExecutionException only wraps checked exceptions and is handled by the command initiator. My work around is to ignore the test until this bug is fixed

I am unsure which commit resolved this predicament, but the test cases introduced in commit https://github.com/AxonFramework/AxonFramework/commit/81f7633650cddaa4517b02a7fba6b395a73e536f point out the predicament no longer exists.
As such, this issue is closed as resolved.


Adding component form should be placed after each root component

Now we have this form only after the last root component, it should be placed after each one of them. This will reduce need of draging component from the end to top.

Closes as it will be enhancemented by issue #86


The docs are not porting the repo to my Kali box for docker installation.

File: engine/install/debian.md
https://medium.com/@airman604/installing-docker-in-kali-linux-2017-1-fbaa4d1447fe
This link has a working debian sources list addition. Please replicate on Kali 2020.2a

Thanks for opening this ticket; while it may work, we don't officially support Ubuntu and Debian derivatives, such as Kali Linux. Given that we don't test docker on these distros, we don't mention them in our installation guide, but make mention of these in the "other distributions" section on this  page: https://docs.docker.com/engine/install/
Let me close this ticket because of the above, but feel free to continue the conversation


@conda-forge-admin, please add bot automerge

Adding the auto merge bot.

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added bot automerge in conda-forge/seamm-installer-feedstock#8.


Inconsistent timezones for client-size Blazor

Describe the bug
Due to a bug in client-side Blazor (https://github.com/dotnet/aspnetcore/issues/17017), the current timezone is always in UTC. However, the underlying date handler Chart JS uses (moment) handles the local timezone just fine. This causes inconsistency and the need to manually adjust times. However, even beyond this bug, the times given to Moment seem to need adjusting when using UTC times.
Which Blazor project type is your bug related to?

Client-Side

Which charts does this bug apply to?
Time charts
To Reproduce
Use a time chart :)
For example, add a data point with DateTime.Today or DateTime.UtcNow.Date, which should be midnight of the current day. On the graph I end up seeing the data point at yesterday 5pm (my local time is UTC-7).
Expected behavior
UTC times should be handled correctly
Screenshots

The console output is simply a Console.WriteLine of the dates as I add them to the datasets.
You can see that the time labels show 5pm. The tooltips seem correct in the screenshot (no TooltipFormat was provided), but if I provide "MMM D" the day is off by 1 due to the conversion to local time.
Additional context / logging
A potential solution would be for the the Moment ctor to look at the provided DateTime's DateTimeKind and adjust the time if it's UTC.
Code example
The time samples should be sufficient. They use random times though so the bug probably just wasn't noticed.

Thanks for the report!
I'm a bit confused about this being a bug. From what I understand, this is the expected behaviour. Also I'm not sure what you mean by inconsistent. As far as I know, the times should be consistent for both client-side and server-side blazor (but not across both; that's because the time zones are handled differently).
We convert our datetimes (or moments) to ISO 8601 using the Round-trip ("O", "o") Format Specifier. These are then parsed by moment.js. This means the time zone information is preserved accross the C# <-> JavaScript barrier.
Since on client-side blazor, every datetime is represented as UTC time, it will also be a UTC time for chart.js. Chart.js automatically converts UTC time to local time when displaying time points (source). That's why you see them displayed at 5pm because that's what the local time would be according to your browser.
Do you understand what I mean? I'm not able to do any tests right now. Are you able to provide some more examples with datetimes of different DateTimeKinds?

Looks like in the latest version of Blazor they implemented timezones so the bug is a bit more clear now.
Basically, the bug on the ChartJS.Blazor side is that it doesn't seem to look at the DateTimeKind. If I give it a UTC time vs the same exact time (semantically) but with DateTimeKind.Local, it treats them differently. For example, DateTime.Now and DateTime.UtcNow end up not being treated as the same date when crossing the boundary to JS. It seems like the DateTime given is always assumed to be local, so I have to ToLocalTime() all of my UTC dates when providing them.
Probably the fix is as easy as something like this on your end:
// Adjust the time to be a local time before passing off to JS
if (dateTime.Kind == DateTimeKind.Utc)
{
  dateTime = dateTime.ToLocalTime();
}

I don't think our library treats them differently, that might be moment.js that does it. As already mentioned we use the o format specifier. However the docs of moment.js state that they first try to parse the time from a known ISO 8601 format (which we provide) and they also state that they support time parts:

If a time part is included, an offset from UTC can also be included as +-HH:mm, +-HHmm, +-HH or Z.

Here's some sample output in client-side blazor 3.1 pre4 in Firefox.

Here's the correspondig code:

DateTime.Now

@now

DateTime.UtcNow

@nowUtc

DateTime.Now.ToUniversalTime()

@nowToUtc

DateTime.UtcNow.ToLocalTime()

@nowUtcToLocal

@code
{
    private string now;
    private string nowUtc;
    private string nowToUtc;
    private string nowUtcToLocal;

    protected override void OnInitialized()
    {
        var dtNow = DateTime.Now;
        var dtNowUtc = DateTime.UtcNow;
        now = ToDisplayString(dtNow);
        nowUtc = ToDisplayString(dtNowUtc);
        nowToUtc = ToDisplayString(dtNow.ToUniversalTime());
        nowUtcToLocal = ToDisplayString(dtNowUtc.ToLocalTime());
    }

    private string ToDisplayString(DateTime dt)
    {
        return dt.ToString("o") + "  |  " + dt.Kind;
    }
}

Do you get different results? I still don't quite understand what the issue is. Maybe it would be of use to have a complete repro project.

I'm still a bit lost on this. Have you tried my snippet? Do your results differ from mine?
Maybe we don't have to search in C# or Blazor.. Does moment.js or Chart.js handle dates differently depending on whether the timezone is denoted by a Z or an UTC offset?

Closing this due to inactivity. Please respond if this issue should be reopened.

This is no longer an issue as Blazor supports timezones at this point.

Great 😁


Provide dynamic provisioning with storage classes for shared access to existing data in IBM Spectrum Scale

Is your feature request related to a problem? Please describe.
A user in OpenShift is used to use dynamic provisioning for requesting storage for containerized applications in OpenShift. Dynamic provisioning provides ease of use and does not require the admin to create individual persistent volumes (PVs) for a user on every request. These PVs are generated on demand from a given storage class (SC) through a persistent volume claim (PVC) by a user.
However, current storage classes (SCs) only provide dynamic provisioning for new and empty (!) persistent volumes (PVs) for the containerized applications in OpenShift/Kubernetes. There is no similar and convenient way to request dynamically provisioned volumes for already existing data in IBM Spectrum Scale. In order to provide shared access to already existing data in OpenShift/Kubernetes an administrator would have to manually provision persistent volumes (PVs) for each user in a different namespace on request today. Even for sharing access to the same path / same data in IBM Spectrum Scale the admin would have to manually create multiple different static PVs (each with the same volume handle and path but a different name) as one PV for each user in a different namespace would be needed to bind to the user's PVC. Furthermore, additional effort is needed to enure that the correct PV binds to a users' PVC in this case (e.g. using Kubernetes labels/selectors or claimRefs - see Reserving a Persistent Volume to ensure a proper 1:1 binding). See my presentations on using static PVs for accessing shared data in IBM Spectrum Scale for more details

How to enable AI Workloads with OpenShift and IBM Spectrum Scale
UDF15-Talk Advanced Static Provisioning with IBM Spectrum Scale on Kubernetes/OpenShiftusing Labels and Selectors

So a major use case of easily providing/sharing access to already existing data in IBM Spectrum Scale with dynamic provisioning is not covered today with IBM Spectrum Scale CSI driver.
As a proven and scalable software-defined storage solution for "Data Lakes" IBM Spectrum Scale provides a global namespace for all the customer's data, supporting POSIX file access as well as access through various protocols like NFS, SMB, Object, and HDFS. It allows data ingest from a variety of data sources and data access across a variety of analytics and big data platforms including HPC, Hadoop and OpenShift without the need to duplicate or copy data.
So providing shared access to existing data in IBM Spectrum Scale with storage classes and dynamic provisioning with ease of use for the OpenShift/Kubernetes user would be a major use case that is missing today without involving the administrator to manually create and reference static PVs for each user in a different namespace on demand.
Describe the solution you'd like
I am requesting a storage class that would allow users in OpenShift to dynamically claim PVs for access to shared data (i.e. pre-existing, non-empty data) in IBM Spectrum Scale that is meant to be shared among many users and stored under a given path. Using dynamic provisioning provides ease of use to the users and does not require the administrator to manually provision the volumes on every request. It would also allow to set common access permissions and policies, including SELinux permissions, on such PVs.
For example, a team of Data Scientists with OpenShift users in different namespaces wants to have access to a path /mnt/fs1/data-science/training in IBM Spectrum Scale that holds huge amounts of training data needed to train and evaluate their AI/DL models. The data there is regularly updated and enriched with newly ingested data. Here we talk about huge amounts of data which is not supposed to be copied around and duplicated with every data scientist working on his own copy of the data by claiming a new and empty PV from a conventional storage class and then copying the data over. This delays time to insights and would mean a huge waste of storage capacity due to data duplication.
The new storage class for shared data access should provide the following options for provisioning ROX (read-only-many) and RWX (read-write-many) persistent volumes (PVs):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: training-sc
parameters:
  dataPath: "/mnt/fs1/data-science/training"
  readOnly: [true|false]
  labelSELinux: "[s0:c123,c456]"
  uid: "UID"
  gid: "GID"
  volBackendFs: "fs1"
  clusterId: "215057217487177715"
provisioner: spectrumscale.csi.ibm.com
reclaimPolicy: Delete

And instead of creating its own sub-directories, like "PVC-123-12345678" is will just create PVs which are backed by the given directory (like a statically provisioned PV).
Parameters could/should be:

dataPath: absolute path to the data in IBM Spectrum Scale on OpenShift (would even be nice if we can omit redundant parameters like volBackendFs and clusterId - but these are already there today)
readOnly: true: we need to have an option to enforce that all users can read the data, but not corrupt/modify it;  false: we also want to have an option that all users can actually write to the volume, for example, to share their calculated models (e.g. in /mnt/fs1/data-science/models).
labelSELinux: [s0:c123,c456]as a way to properly handle SELinux context with ROX/RWX volumes when sharing the same directory/files in IBM Spectrum Scale among OpenShift users in different namespaces with their pods enforcing different SELinux labels through OpenShift. Maybe even something like a generic "shared" SELinux label that can be used and would avoid access issues as seen otherwise with SELinux, see Considerations for mounting read-write many (RWX) volumes.

The storage class is created by an admin so all access to shared data is controlled by an admin. A user cannot simply request access to any path/data in IBM Spectrum Scale by herself/himself without an admin providing the proper storage class.
Even access to this storage class could be restricted to selected namespaces in OpenShift/Kubernetes, see Kubernetes Storage Resource Quotas.
Describe alternatives you've considered
Using hostPathwith the absolute path to the data in IBM Spectrum Scale is an alternative but it is a high security risk as pods using hostPath require to be run as privileged pods. See Persistent storage using hostPath.
It would be good to offer shared access to existing data/paths in IBM Spectrum Scale simply through dynamic provisioning which is easy to consume for OpenShift users. With a storage class a user can as easily claim access to a shared directory the same way as the users are used to claim new (empty) volumes in OpenShift/Kubernetes.
Other CSI projects like

Rancher - Local Path Provisioner

which are based on Kubernetes Local Persistent Volumes already try to achieve similar things today. But there should be no need to have multiple CSI drivers installed (Rancher Local Path provisioner and IBM Spectrum Scale CSI driver) to dynamically gain access to shared or pre-existing data in IBM Spectrum Scale. We need to add a feature to Scale CSI that conveniently provides dynamic provisioning through storage classes to a given path in IBM Spectrum Scale. Providing access to existing data and shared access to this data is a major use case for IBM Spectrum Scale.
Additional context
This example describes the use case and how it could be covered today using static provisioning which is quite cumbersome and requires additional effort like Kubernetes labels/selectors or claimRefs in order to guarantee the correct binding between the manually preprovisioned PVs (by the admin) and the users' PVCs:

Note that without dynamic provisioning the admin would need to manually create another two static PVs with the same parameters but different names for a second user in another namespace. The admin would also need to manually clean up the PVs once the user deletes the PVC.
Two storage classes, one for /gpfs/fs0/data (readOnly: true) and one for /gpfs/fs0/models (readOnly: false) could conveniently provide dynamic provisioning for the PVs without the admin manually pre-provisioning all the PVs. The users would simply claim PVs from the distinct storage classes as usual. No additional knowledge of labels, selectors or claimRefs needed. Furthermore, access to these distinct storage classes can also be restricted to specific namespaces exclusively used by the Data Scientist users.

Thanks @gfschmidt for the details. Any chance you had looked at feature we had with ubiquity(https://www.ibm.com/docs/en/stgenablercontainers/2.1.0?topic=scale-using-existing-fileset-volume-creation) ? Will similar solution with CSi serve your purpose ?

Hi @deeghuge, yes it might be similar to the feature in ubiquity that you pointed me to with your link above.
We would have a storage class backed by one existing directory (e.g. /gpfs/fs1/data/training) with existing data in Scale for all PVs created from this storage class and create a new PV object backed by this directory for each PVC request for this storage class on demand and bind it immediately to the PVC. The storage class would also need options like allowing "read-only" or "read-write" access so the admin can ensure in certain cases that the shared data is not deleted or modified by a user.
However, in OpenShift this would lead to additional required SELinux considerations when multiple users (from different namespaces) have shared access to the same data location in IBM Spectrum Scale. Each (non-privileged) user who starts a pod accessing this PVC would immediately initiate a SELinux relabeling with the user's (Pod's) SELinux context (which is normally different for each namespace). So if a second (non-privileged) user starts a Pod after that then the whole directory would be relabeled with the 2nd users SELinux label and the first user would lose access. So here SELinux requires special consideration in addition to uid/gid permissions. It can preferably be solved with SecurityContextConstraints (SCCs) granting additional securityContext permissions to the users so that they can run their Pods with the same securityContext and SELinux labels for Pods accessing the shared data (uid/gid/SELinux label). Or without diving into SCCs and service accounts the admin could set up the same SELinux label annotation in their namespaces - which, however, might compromise security. See my blog post for more information on this topic: Advanced Static Volume Provisioning with IBM Spectrum Scale on Red Hat OpenShift -  SELinux and uid/gid context
Unless we propose a concept with best practices for the user on how to create proper SCCs and have the users apply the correct securityContext in their pods when sharing access to the same data in the backend we might have to postpone this feature until we can manage SELinux on a CSI and PV level for ease of use. Managing the SELinux context on a PV level could mean, for example, having special PVs for shared data access which either drop all SELinux labels or ignore SELinux relabeling on Scale completely (like a privileged Pod), or enforcing a unique and common SELinux label on the backing directory for all PVs created from that specific storage class independent of the user's Pod securityContext and SELinux label. However, the kubelet initiates the SELinux relabeling once the Pod is started and accesses the PV. The PV itself is not initially associated with a SELinux label. So I am not sure if we can even manage this behavior on the CSI level alone.
The storage class might need options like

accesMode: readOnly
permissions: 777
uid
gid
ignoreSELinux: yes | no
enforceSELinuxLabel: "s0:c26,c0"

Also see Evan's Issue 3982 for this discussion.

Please also see the following link regarding SELinux and ongoing K8s enhancement proposals:
(1) https://sysdig.com/blog/kubernetes-1-25-whats-new/
[#1710](https://github.com/kubernetes/enhancements/issues/1710) SELinux relabeling using mount options
Stage: Graduating to Alpha
Feature group: storage
Feature gate: SELinuxMountReadWriteOncePod Default value: false

This feature is meant to speed up the mounting of PersistentVolumes using SELinux. By using the context option at mount time, Kubernetes will apply the security context on the whole volume instead of changing context on the files recursively. This implementation has some caveats and in the first phase will only be applied to volumes that are backed by PersistentVolumeClaims with ReadWriteOncePod.

(2) https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/1710-selinux-relabeling/README.md#proposal
When kubelet knows SELinux context of a pod (i.e. at least Pod.Spec.SecurityContext.SELinuxOptions.Level is set) AND kubelet knows that a volume supports mounting with -o context:

    kubelet passes -o context=XYZ to MountDevice() and SetUp() calls of the volume.
        A volume plugin / CSI driver will get these as regular mount options and use them to mount the volume.

Being able to have a option on Scale CSI Driver (also of high interest for static provisioning) to manage SELinux behavior is important for IBM Spectrum Scale as a data lake for multiple platforms and protocols in order to allow to share access to the data without the need to copy and create duplicates of the data on either platform. Options like the following

ignoreSELinux: yes | no (ignore SELinux relabeling completely like hostPath and  skip SELinux relabeling of volumes)
enforceSELinuxLabel: "s0:c26,c0" (recursive relabeling but with given SELinux label)
mountSELinuxLabel: "s0:c26,c0" (use SELinux label as mount option as planned with future K8s releases)
would
allow to share access to the same data in IBM Spectrum Scale (disable SELinux or enforce same SELinux MCS label)
speed up pod start if SELinux relabeling of backing directory could completely be skipped (important for directories with huge amounts of data and many nested directories)

@cloudbustinguk, thanks for supporting my request! I would also like to see this request or idea moving forward :-)
For now, and instead of using hostPath, I would like to point you to a blog post of mine where I tried to summarize all current options how to safely provide and share access to existing data in IBM Spectrum Scale with static provisioning (using the Scale CSI driver) while also dealing with a proper SELinux context across user namespaces:
Advanced Static Volume Provisioning with IBM Spectrum Scale on Red Hat OpenShift
In the last section Presentation and demo you can find a link to a presentation (including a demo video) that provides a brief summary of all these options. The chart deck and demo were presented at the Scale User Days in Cologne in Oct 2022.


WIP Enforce single controller via leader election

Description of change
Checklist

[ ] Tested in playground or other setup
[ ] Screenshot (Grafana) from playground added to PR for 15+ minute run
[ ] Documentation is changed or added
[ ] Tests and/or benchmarks are included
[ ] Breaking changes

Summary by CodeRabbit

New Feature: Introduced enforceSingleControllerModule to ensure only a single controller runs concurrently within a project, enhancing system stability and preventing data conflicts.
Refactor: Replaced standard sync.WaitGroup with custom panichandler.WaitGroup across multiple packages for better panic handling in goroutines.
Refactor: Updated the etcd-based leader election logic and removed unused imports and variables for cleaner code.
Refactor: Modified various components to use the new election package instead of ElectionTrackers, simplifying the leader election process.
Documentation: Added new sections in the configuration documentation for agent_info and AgentInfoConfig.

podscaler

rabbitmq


[Question]: Tried adding a new parser for The Independent: Problems with Article Summary Selection

Question
Hey,
I'm testing Fundus right now. I followed the tutorials (really cool work! :+1: ) and now I'm trying to add a new Publisher and Parser, namely for the UK newspaper The Independent. (I don't have permission to push my branch, so I'm just pasting the code.)
For the most part, I was successfull (thanks for the step-by-step tutorial :rocket:): I managed to get the article attributes and the Sections, but I'm having some issues when selecting the article summary in for the body attribute.
I'm not too familiar with html and parsing with the CSSSelector, but I think the problem is the uncommon usage of a p element inside the h2 element at most of the articles which seems to be a problem for my CSSSelector CSSSelector("header[id='articleHeader'] h2 > p"):
...

Powerball: Can the winner of $1.02bn jackpot remain anonymous

The winning $1.02bn Powerball ticket was claimed in California

I added a workaround which looks directly for p elements, and then chooses the right p on the condition of a h2 element directly before. This is of course not very elegant:
class TheIndependentParser(ParserProxy):
    class V1(BaseParser):
        _paragraph_selector = CSSSelector("article div[id='main'] > p")
        _summary_selector = CSSSelector("header[id='articleHeader'] h2 > p")
        #_summary_selector = CSSSelector("header[id='articleHeader'] h2")

        @attribute
        def body(self) -> ArticleBody:
            body = extract_article_body_with_selector(
                self.precomputed.doc,
                summary_selector=self._summary_selector,
                paragraph_selector=self._paragraph_selector)
            if len(body.summary) == 0:
                article_header_paragraphs = CSSSelector("header[id='articleHeader'] p")(self.precomputed.doc)
                for p in article_header_paragraphs:
                    if p.getprevious().tag == "h2":
                        body.summary = TextSequence([p.text])
            return body

        @attribute
        def publishing_date(self) -> Optional[datetime.datetime]:
            return generic_date_parsing(self.precomputed.ld.bf_search("datePublished"))

        @attribute
        def authors(self) -> List[str]:
            return generic_author_parsing(self.precomputed.ld.bf_search("author"))

        @attribute
        def title(self) -> Optional[str]:
            return self.precomputed.ld.bf_search("headline")

        @attribute
        def topics(self) -> List[str]:
            return generic_topic_parsing(self.precomputed.meta.get("keywords"))

Furthermore, there also exist some articles in which the summary is in fact directly the h2 element, e.g.looking like:

Lionesses captain Millie Bright will wear the ‘inclusion’, ‘Indigenous People’
    and ‘gender equality’ armbands during the group stage.

But, when I tried using the Selector like so: CSSSelector("header[id='articleHeader'] h2"), then suddenly the whole article text got placed into the body.summary for whatever reason.
Any ideas how I can do it better and covering both (maybe there are more...) article cases? :slightly_smiling_face:

Hey @susannaruecker,
thanks for testing and adding a parser :) That really helps a lot. I also gave you write access to the repository so you can share your state of work.
Regarding your question:
Nice workaround btw. I had a similar problem once but didn't think about this solution 👍.
As you already pointed out the problem here is the usage of a paragraph tag inside a heading tag, which, according to W3C isn't allowed. It seems that the lxml.html parser is able to include the paragraph in the _ElementTree but not in the right position due to lxml.html.HTMLParser's recover parameter.
import lxml.html

html = """

paragraph within heading

paragraph outside heading

"""

root = lxml.html.document_fromstring(html)
print(lxml.html.tostring(root, pretty_print=True).decode())

prints

paragraph within heading

paragraph outside heading

I can't think of a way to separate these two cases using XPath or CSSSelect. As soon as lxml pushes the paragraph out of the heading it losses all its context information. So thinking about that I realized even the workaround wouldn't work reliably. IMO the right thing to do here would be to drop the summary.
I hope I could help you with this.

Hey @MaxDall , thanks for the helpful comments and the write access! I will do so when I'm back from vacation, maybe with some more parsers. :)
Some (rather general) feedback for the tutorials/docs from my experience with them so far:

minor but: sometimes the next says we’ll crawl 5 articles but the code only crawls two

In Tutorial 2 about the Article class, maybe state more clearly your definitions  add of title, summary, section, subheadlineand so on. Makes it easier to follow and to try out the different parts. Also: What is DOM?

Tutorial 3 for filtering the articles, e. g. by author: As much as I like Donald Duck, maybe one could chose a different, more realistic, example so users actually get good results instead of waiting, maybe wondering if the system is still running or what 😅 Maybe filtering for a specific publishing time range, language or topic?

Tutorial on How to add Parsers: This is already really cool and user-friendly! However, it could benefit from a bit more examples/details, especially regarding

More info or examples on how to find the specific URLs to Sitemap, NewsMap, RSSFeed, as well as what their differences and purposes are, and how/why the need to differentiate them. At least for me, this was new and I found myself a bit puzzled at first.

Most importantly I would have liked more help for the basics of how to use the CSSSelect and XPath selectors, which is obviously the most work when adding a parser. I think that here, a small list of examples with html and some fitting example selectors, together with explanations what they do would be very helpful! Especially for keeping users interested that think about using your Iibrary (of course! 😉) but don’t have that much experience with html parsing yet. To keep the promise that it’s “easy to add a new parser”!

So far, hope this is somewhat helpful! :)

Thanks for the feedback 👍 @Weyaaron already opened issue #297 to address your comments.


Deal the warn of Raw use of parameterized class in BaseRichInputFormatBuilder

Deal the warn if Raw use of parameterized class in the class extend BaseRichInputFormatBuilder

PR merged.


Me sale un error!

Discussed in https://github.com/nitin27may/mean-docker/discussions/76

Originally posted by tacamine2 October 26, 2023
Quiero instalarlo en una máquina virtual con Ubuntu Desktop 22 y sale esto:
:~/Desktop/mean-docker$ sudo docker-compose up
Building express
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
Sending build context to Docker daemon  16.04MB
Step 1/13 : FROM node:16-alpine as builder
---> 2573171e0124
Step 2/13 : COPY frontend/package.json frontend/package-lock.json ./
---> Using cache
---> 13b8b9957c1c
Step 3/13 : RUN npm ci && mkdir /app && mv ./node_modules ./app
---> Running in a0bab11a5f6e
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/protractor
npm ERR!   dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peerOptional<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/@angular-devkit/build-angular
npm ERR!   dev<EMAIL_ADDRESS>from the root project
npm ERR!   peer<EMAIL_ADDRESS>|| ^16.1.0-next.0" from<EMAIL_ADDRESS>npm ERR!   node_modules/@nguniversal/builders
npm ERR!     dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Conflicting peer dependency<EMAIL_ADDRESS>npm ERR! node_modules/protractor
npm ERR!   peerOptional<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!   node_modules/@angular-devkit/build-angular
npm ERR!     dev<EMAIL_ADDRESS>from the root project
npm ERR!     peer<EMAIL_ADDRESS>|| ^16.1.0-next.0" from<EMAIL_ADDRESS>npm ERR!     node_modules/@nguniversal/builders
npm ERR!       dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /root/.npm/eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2023-10-26T13_23_37_050Z-debug-0.log
The command '/bin/sh -c npm ci && mkdir /app && mv ./node_modules ./app' returned a non-zero code: 1
ERROR: Service 'express' failed to build : Build failed

Fixed.


feat: 🎸 Add optional memo field to AddInstructionParams

Description
Add optional memo field to AddInstructionParams. This can be used with Settlements.addInstruction and Venue.addInstruction
Breaking Changes
🧨 Settlements.addInstruction and Venue.addInstruction now throw an error if any instruction contains a leg with zero amount
JIRA Link
DA-421
Checklist

[ ] Updated the Readme.md (if required) ?

:tada: This PR is included in version 18.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 18.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


error: no such file or directory

it says that right after the DHT bootstrap and exits

Did you provided a edgevpntoken? Can you show the full logs?

Certainly!
This is a throwaway token so I don't mind posting it here!
cross-server:/# edgevpn --address <IP_ADDRESS>/32 --token b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MDAwCiAgICBrZXk6IEt6NFV5b0N0V0I5TmtFYlhuSDEwbDdKdmRVTjZYVVZEODBVOTI3TmJXYjAKICAgIGxlbmd0aDogNDMKICBjcnlwdG86CiAgICBpbnRlcnZhbDogOTAwMAogICAga2V5OiBHSm1EMVc0blhNd045cXNIWms1TWpKb1JyZGp1ZnY1RUlJWmdsa29iaDRiCiAgICBsZW5ndGg6IDQzCnJvb206IEZJaFBXYjdKV0FuYjh2bGlaWm43ejdkU1NvN090WklXZ0hrMGVLaXNXcEgKcmVuZGV6dm91czogZ1hLelUzSkVYV3JzbE5zWFZ0NmFFUGR0ZzhEcWZzSlkwa1NsNDNDcmlsUwptZG5zOiBFbHpwNVllcWt4MTgzVXoxc3ZaUkUxNURqcXpVMXFDcjEyRnZWNmViZ0tkCm1heF9tZXNzYWdlX3NpemU6IDIwOTcxNTIwCg==
{"level":"INFO","time":"2022-12-25T02:58:47.362-0500","caller":"cmd/util.go:365","message":" \tedgevpn  Copyright (C) 2021-2022 Ettore Di Giacinto\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions."}
{"level":"INFO","time":"2022-12-25T02:58:47.362-0500","caller":"cmd/util.go:367","message":"Version: v0.19.1 commit: 4258ab524b5de2d2784f2829ce52d3208d8fce36\n"}
{"level":"INFO","time":"2022-12-25T02:58:47.362-0500","caller":"node/node.go:118","message":" Starting EdgeVPN network"}
2022/12/25 02:58:47 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
{"level":"INFO","time":"2022-12-25T02:58:47.382-0500","caller":"node/node.go:172","message":" Node ID: 12D3KooWM4NLQJ7WzxTruwcViGmXj4BKwGi2hNcTcJQinMkEkNN9"}
{"level":"INFO","time":"2022-12-25T02:58:47.382-0500","caller":"node/node.go:173","message":" Node Addresses: [/ip4/<IP_ADDRESS>/tcp/36425 /ip4/<IP_ADDRESS>/tcp/36425 /ip4/<IP_ADDRESS>/udp/47965/quic /ip4/<IP_ADDRESS>/udp/47965/quic /ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/tcp/39861 /ip6/::1/tcp/39861 /ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/udp/47326/quic /ip6/::1/udp/47326/quic]"}
{"level":"INFO","time":"2022-12-25T02:58:47.392-0500","caller":"discovery/dht.go:104","message":" Bootstrapping DHT"}
no such file or directory
cross-server:/#

oops, thanks for the report! I think I know what's going on and was a regression introduced in https://github.com/mudler/edgevpn/commit/4258ab524b5de2d2784f2829ce52d3208d8fce36#diff-0fd671385b9bdf6022604c94fdf8a1b5f08b6112c3cd029860b7ab3f37a572eaR492 L492
This shouldn't happen with 0.19.0 - will have a look! Thanks!

ok nope, I was wrong as can't reproduce here. can you give the output with ```--log-level debug```` ? can you tell if 0.19.0 fails in the same for you?

Ok this is with --log-level debug:
cross-server:/# edgevpn --address <IP_ADDRESS>/32 --token b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MDAwCiAgICBrZXk6IEt6NFV5b0N0V0I5TmtFYlhuSDEwbDdKdmRVTjZYVVZEODBVOTI3TmJXYjAKICAgIGxlbmd0aDogNDMKICBjcnlwdG86CiAgICBpbnRlcnZhbDogOTAwMAogICAga2V5OiBHSm1EMVc0blhNd045cXNIWms1TWpKb1JyZGp1ZnY1RUlJWmdsa29iaDRiCiAgICBsZW5ndGg6IDQzCnJvb206IEZJaFBXYjdKV0FuYjh2bGlaWm43ejdkU1NvN090WklXZ0hrMGVLaXNXcEgKcmVuZGV6dm91czogZ1hLelUzSkVYV3JzbE5zWFZ0NmFFUGR0ZzhEcWZzSlkwa1NsNDNDcmlsUwptZG5zOiBFbHpwNVllcWt4MTgzVXoxc3ZaUkUxNURqcXpVMXFDcjEyRnZWNmViZ0tkCm1heF9tZXNzYWdlX3NpemU6IDIwOTcxNTIwCg== --log-level debug
{"level":"INFO","time":"2022-12-25T19:04:54.263-0500","caller":"cmd/util.go:365","message":" \tedgevpn  Copyright (C) 2021-2022 Ettore Di Giacinto\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions."}
{"level":"INFO","time":"2022-12-25T19:04:54.263-0500","caller":"cmd/util.go:367","message":"Version: v0.19.1 commit: 4258ab524b5de2d2784f2829ce52d3208d8fce36\n"}
{"level":"INFO","time":"2022-12-25T19:04:54.263-0500","caller":"node/node.go:118","message":" Starting EdgeVPN network"}
{"level":"DEBUG","time":"2022-12-25T19:04:54.263-0500","caller":"node/node.go:154","message":" Generating host data"}
2022/12/25 19:04:54 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
{"level":"INFO","time":"2022-12-25T19:04:54.286-0500","caller":"node/node.go:172","message":" Node ID: 12D3KooWKf2NtEoZobCxr1mm7AkzbsLD4Sun6BcNpvLGSAo35AVa"}
{"level":"INFO","time":"2022-12-25T19:04:54.286-0500","caller":"node/node.go:173","message":" Node Addresses: [/ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/udp/32921/quic /ip6/::1/udp/32921/quic /ip4/<IP_ADDRESS>/tcp/45969 /ip4/<IP_ADDRESS>/tcp/45969 /ip4/<IP_ADDRESS>/udp/38439/quic /ip4/<IP_ADDRESS>/udp/38439/quic /ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/tcp/41685 /ip6/::1/tcp/41685]"}
{"level":"INFO","time":"2022-12-25T19:04:54.311-0500","caller":"discovery/dht.go:104","message":" Bootstrapping DHT"}
{"level":"DEBUG","time":"2022-12-25T19:04:54.311-0500","caller":"node/node.go:195","message":" Network started"}
no such file or directory
cross-server:/#

Here is the output with version 0.19.0:
cross-server:/# edgevpn --address <IP_ADDRESS>/32 --token b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MDAwCiAgICBrZXk6IEt6NFV5b0N0V0I5TmtFYlhuSDEwbDdKdmRVTjZYVVZEODBVOTI3TmJXYjAKICAgIGxlbmd0aDogNDMKICBjcnlwdG86CiAgICBpbnRlcnZhbDogOTAwMAogICAga2V5OiBHSm1EMVc0blhNd045cXNIWms1TWpKb1JyZGp1ZnY1RUlJWmdsa29iaDRiCiAgICBsZW5ndGg6IDQzCnJvb206IEZJaFBXYjdKV0FuYjh2bGlaWm43ejdkU1NvN090WklXZ0hrMGVLaXNXcEgKcmVuZGV6dm91czogZ1hLelUzSkVYV3JzbE5zWFZ0NmFFUGR0ZzhEcWZzSlkwa1NsNDNDcmlsUwptZG5zOiBFbHpwNVllcWt4MTgzVXoxc3ZaUkUxNURqcXpVMXFDcjEyRnZWNmViZ0tkCm1heF9tZXNzYWdlX3NpemU6IDIwOTcxNTIwCg== --log-level debug
{"level":"INFO","time":"2022-12-25T19:07:36.977-0500","caller":"cmd/util.go:333","message":" \tedgevpn  Copyright (C) 2021-2022 Ettore Di Giacinto\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions."}
{"level":"INFO","time":"2022-12-25T19:07:36.977-0500","caller":"cmd/util.go:335","message":"Version: v0.19.0 commit: 112e66dc40e3ed0b2ff2440e9ae4a5b8e3be7bb6\n"}
{"level":"INFO","time":"2022-12-25T19:07:36.977-0500","caller":"node/node.go:118","message":" Starting EdgeVPN network"}
{"level":"DEBUG","time":"2022-12-25T19:07:36.977-0500","caller":"node/node.go:154","message":" Generating host data"}
2022/12/25 19:07:36 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
{"level":"INFO","time":"2022-12-25T19:07:36.998-0500","caller":"node/node.go:172","message":" Node ID: 12D3KooWLvoMuReKbMCZnVvbZUzomqieaiyDST9d1839QoYUe7mx"}
{"level":"INFO","time":"2022-12-25T19:07:36.999-0500","caller":"node/node.go:173","message":" Node Addresses: [/ip4/<IP_ADDRESS>/udp/46972/quic /ip4/<IP_ADDRESS>/udp/46972/quic /ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/tcp/35167 /ip6/::1/tcp/35167 /ip6/2601:406:8400:9bd0:626c:66ff:feca:d73a/udp/56313/quic /ip6/::1/udp/56313/quic /ip4/<IP_ADDRESS>/tcp/39859 /ip4/<IP_ADDRESS>/tcp/39859]"}
{"level":"INFO","time":"2022-12-25T19:07:37.030-0500","caller":"discovery/dht.go:104","message":" Bootstrapping DHT"}
{"level":"DEBUG","time":"2022-12-25T19:07:37.031-0500","caller":"node/node.go:195","message":" Network started"}
no such file or directory
cross-server:/#

Its even doing it inside a docker container...

do other command fails the same? e.g. starting the API fails similarly?
Maybe has to do with the environment - do you have /dev/tun?

I thought it said it was self contained?

The api fails the same way.
I do not have /dev/tun. Is that a good thing?

Ok my misunderstanding. I had to run modprobe tun and now it doesnt throw the error.

Thank you for the help with trying to figure out this issue. I appreciate it.

Awesome, happy to hear that it's all good now !


Easily animate x and y range in a plot and crop NumberPlane

Description of proposed feature
I think it would be usefull to be able to something like:
        plane = always_redraw(lambda:
            NumberPlane(
                y_range = (0, 5),

        )
      self.play(plane.y_range(0,2))

to be able to animate a new axis. It's kinda like zooming in. Currently we must do something like:
class Test(Scene):
    def construct(self):
        x_max = ValueTracker(5)

        plane = always_redraw(lambda:
            NumberPlane(
                x_range = (0, 7),
                y_range = (0, x_max.get_value()),
                x_length = 7,
                y_length = 5,
                axis_config={"include_numbers": True},
            )
        )

        line_graph = always_redraw(lambda:
            NumberPlane(
                x_range = (0, 7),
                y_range = (0, x_max.get_value()),
                x_length = 7,
                y_length = 5,
                axis_config={"include_numbers": True},
            ).plot_line_graph(
                x_values = [0, 1.5, 2, 2.8, 4, 6.25],
                y_values = [1, 3, 2.25, 4, 2.5, 1.75],
                line_color=WHITE,
                vertex_dot_style=dict(stroke_width=3,  fill_color=WHITE),
                stroke_width = 4,
            )
        )
        self.add(plane)
        self.add(line_graph)
        self.wait()
        self.play(x_max.animate.set_value(2), run_time=1)
        self.wait()

This was made by the brilliant Uwezi on the discord forum here.
result:
https://github.com/ManimCommunity/manim/assets/40211569/624c5308-dd95-436c-9e83-46ef83a03325
I also think NumberPlane should crop the lines automatically, when going out of the numberPLane

Just to highlight part of the problem, the following code referencing the always_redrawn number plane in the updater for the plotted curve does not work - the number plane scales as expected, but the curve is not replotted according to the new scale.
class Test(Scene):
    def construct(self):
        x_max = ValueTracker(5)

        plane = always_redraw(lambda:
            NumberPlane(
                x_range = (0, 7),
                y_range = (0, x_max.get_value()),
                x_length = 7,
                y_length = 5,
                axis_config={"include_numbers": True},
            )
        )

        line_graph = always_redraw(lambda:
            plane.plot_line_graph(
                x_values = [0, 1.5, 2, 2.8, 4, 6.25],
                y_values = [1, 3, 2.25, 4, 2.5, 1.75],
                line_color=WHITE,
                vertex_dot_style=dict(stroke_width=3,  fill_color=WHITE),
                stroke_width = 4,
            )
        )
        self.add(plane)
        self.add(line_graph)
        self.wait()
        self.play(x_max.animate.set_value(2), run_time=1)
        self.wait()


refactor: use modern python development pardigm

I removed the files that are not making senss (empty)
I recoded some of the methods
I wrote down the documentation for every function

TODO
I already reviewed the helper.py file and I started to look at the layers.py one. There is a lot of duplicated code. As refactoring is a painful process I would like to make sure that this is needed. If not let me know and we'll try to get rid of the one that are done twice.
@rodrigo-ldc could you help me on this?

I guess by modern python development paradigm you mean using dataclasses. To be honest, I've never seen it before, looks cool but it's something I need to get used to. Getting rid of __init__ is a big step for me.

When I was about to finish reviewing helpers.py I realized that many of the functions there were replaced by methods in layers.VisParams. I'm sorry @12rambau if you find this confusing, this was a WIP and I put it in GitHub as it was 'cos I wanted the rest of the team to benefit from it, and use it in development. Should've clean it up before uploading, what I was in a hurry and decided to do it after

I guess by modern python development paradigm you mean using dataclasses. To be honest, I've never seen it before, looks cool but it's something I need to get used to. Getting rid of __init__ is a big step for me.

If you look at the PR I also changed numerous things that were not available prior to Python 3.7 one-liner extention of dict, no init files, dataclasses so that's a bit more than just replacing files.
Also note that my objective is to change nothing on how it is working

Yeah, don't worry, improvements in behavior are also welcome 😃 I even have a todo list, like .getBounds(), .setBounds, centerObject! In fact, I'm thinking in refactor (improve) the messaging behavior, 'cos now it's only working for adding layers to the map, but my general idea is that the message should contain the method that it'll call and the params that will use for that method, what do you think?

Yeah, don't worry, improvements in behavior are also welcome 😃 I even have a todo list, like .getBounds(), .setBounds, centerObject! In fact, I'm thinking in refactor (improve) the messaging behavior, 'cos now it's only working for adding layers to the map, but my general idea is that the message should contain the method that it'll call and the params that will use for that method, what do you think?

I think all these ideas are good ideas but they are out of scope for this PR. Could you open individual issues for each one of them so we can discuss implementation on case by case ?


chore: Test gRPC server is running in Docker image

Motivation
Ensure we know if we accidentally break the gRPC service for the hub.
Change Summary
Add a simple test to our build step that ensures the gRPC service is running.
Merge Checklist
Choose all relevant options below by adding an x now or at any time before submitting for review

[x] The title of this PR adheres to the conventional commits standard
[x] The PR has been tagged with the appropriate change type label(s) (i.e. documentation, feature, bugfix, or chore)

This isn't working because our hub implementation waits until it has performed an initial sync before starting the gRPC server. We should probably start the gRPC server right away.

@sds this still relevant to keep open?

@varunsrin I think so since it allows us to have a basic smoke test as part of every hub PR.
The ask I had of the team was to update the hubs to start the RPC server ASAP, rather than waiting for all ID registry events to be fetched.


selected rangle  issue

with the selected dates, for some reason the background is gray, although it should be blue, if you change the color of the selected dates, this strip may disappear, also on the screen you can see some gap and a strip near 1

if here is an example of my code
`
<DateTimePicker
		mode="range"
		startDate={startDateValue}
		endDate={endDateValue}
		onChange={({ startDate, endDate }) => {
		      console.log("picker params", startDate, endDate)
		      setStartDateValue(startDate)
		      setEndDateValue(endDate)
		}}
		todayContainerStyle={{ borderWidth: 0 }}
/>

I'm having this issue too, at least on Android.
I notice that when displayFullDays is set to true, the gap disappears.
But still, there are some bugs visible, such as the range stripe losing the effect of attaching to the start/end day and some weird behavior when the end date is on the next month of the preview.

Btw I'm using Expo 50.0.7, React 18.2.0 and React Native 0.73.4 with NativeBase and the latest version of this package.

I'll try to reproduce this bug and work on it thanks for reporting it

I am observing the current problem on iOS

+1


HealthCheck fix

After this change,
If context keys provided by the user(if not provided, it is set to the default ["Channel", "Direction", "Issue", "Group"]) are not present in dataframe we add these columns ourselves and fill them with "NA".
For example, when we run HC on a datamart without "Channel" and "Direction" columns. If the user leaves this section as is:

it should run without any problem, showing NA value for the Channel and Direction.
Hovewer, if the user removes for example Channel from the list above, since "Channel" is hardcoded in the HealthCheck.qmd, we will have an error. Making the script more robust by removing hard coded column names makes sense but it adds some if-else's, making the script more crowded
Lets discuss here if there is a better solution. @operdeck @StijnKas

Agree on the approach. I think that whatever we distill from pyName should
just be added, keeping it simple. Changing context used to be more common
than it is now but still, we have big accounts doing this. And in Process
AI use cases it happens a lot.
We need to make our plots more robust against variations in context keys.
Op ma 4 dec 2023 om 18:07 schreef Stijn Kas @.***>

Hey, I think we can be more clever in the datamart class itself. We should
infer the context keys from the class - if one of the context keys does not
exist in the dataframe, we remove it from dm.context_keys. Then it should
not show up in this list either, because it should display whatever is in
the context_keys list in the class.
Similarly, if we extract any more keys from the pyName column, those
context keys should (probably) be added to context_keys. Maybe that
should be a whitelist though, so pyTreatment would automatically be added
to the context keys, but random_context_key_1 would not. Although on the
other hand, I don't think it's very customary to just add random keys as
context keys, so maybe we should just add all of them there by default.
@operdeck https://github.com/operdeck , thoughts?
—
Reply to this email directly, view it on GitHub
https://github.com/pegasystems/pega-datascientist-tools/pull/171#issuecomment-1839092617,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEVTKCYOCSZ6QQZP53GZ4DYHX7NRAVCNFSM6AAAAABAGFM4WGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMZZGA4TENRRG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

In that case, we will need to revise the HealthCheck.qmd file to replace hardcoded context keys. Following the approach described by Stijn, an error will occur if the Channel column is not present in the data. I will update once it is done


Change ApplyDesignByGuid state source to Manual

Probably good enough temporary fix while you're working on alternative state tracking?

On a second thought, just this will not suffice as I'm also using regular IPC calls as well.
Could you tell me what's the preferred way here? Do you want additional ipc methods that will use Manual state source to be PRd, or do you want to finish your rework of state tracking first, or something else?


speed up and improve CI and update readme

Codecov Report

Merging #169 (9e3cbb4) into main (2e92ecb) will increase coverage by 56.61%.
The diff coverage is n/a.

env build time:

this pr: 3m
old: 3m 40s
test time:
this pr: 9m
old: 13m 20s

There is some buggy behavior in our tests (well not really but they are not deterministic so when we try and distribute the tests to different workers, we can get an error. I will fix this in a different PR but for now will turn off -n auto) in PR #172


Migration of multiple anime at the same time.

Describe your suggested feature
I wanted to migrate multiple of my anime from gogo to zoro but i have to individually click on the anime and then the three dots and migrate. I wish we could migrate multiple anime at the same time by selecting the one's we want to. This could help us save time and is overall more efficient.
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I will fill out all of the requested information in this form.

https://github.com/aniyomiorg/aniyomi/issues/777

@quickdesh I understand TachiyomiSY (or other forks) can be used for the migration, however that's only for manga. AFAIK there isn't such an alternative for anime


Tweak Attenuation

Hello,
Do you know if the attenuation can be tweaked:
I'm creating my spatial environment like so:
setSpatialEnvironment(1);
const setSpatialEnvironment = async (axis_scale) => {
    const scale = { x: axis_scale, y: axis_scale, z: axis_scale }
    const forward = { x: 0, y: -1, z: 0 };
    const up = { x: 0, y: 0, z: 1 };
    const right = { x: 1, y: 0, z: 0 };
    VoxeetSDKExt.privateZones.setSpatialEnvironment(scale, forward, up, right);

    await CreateZone(axis_scale);
};

Zone around participant:
const CreateZone = async (axis_scale) => {
     zone = {
        origin: {
            x: 0,
            y: 0,
            z: 0,
        },
        dimension: {
            x: 20,
            y: 20,
            z: 20 ,
        },
        scale: {
            x: axis_scale,
            y: axis_scale,
            z: axis_scale
        },
    };
    // Create a new private zone with the rules set above in the zone object
    zoneId = await VoxeetSDKExt.privateZones.createZone(zone);
}

My problem is that attenuation is way to intense:
If participant is in (0,0,0)  and speaker in (4,0,0) the speaker volume is really low.
Do you know what could be done to have control on attenuation ?

Hi @MaximeM,
With the scale set to 1, having the position (0, 0, 0) and (4, 0, 0) will be a big gap so the attenuation will be important.
What I usually do is to set the hearing zone as the scale, for example if you have a cube (or square) around you where you want someone to hear you, set the size of that cube as the scale. Here is an example: https://github.com/dolbyio-samples/dolbyio-spatial-audio-demo-web/blob/main/src/scripts/script.js#L140-L152

@MaximeM check out this guide on how to configure the scale based on the dimensions of your window: https://docs.dolby.io/communications-apis/docs/guides-integrating-individual-spatial-audio#configure-the-spatial-environment-scale
Where did you find those settings? Our SDK does not have anything like that:
audioSettings: { chromeCutOffVolume: 0.06, distanceModel: "linear", refDistance: 1, maxDistance: 15, rollOffFactor: 1, gain: 1 },

this.stereoPanner.coneOuterAngle = 360;
this.stereoPanner.coneInnerAngle = 360;

To run your tests, I highly recommend for you to use the demo() function. But also use the individual scene so you can move the other participants (bots) easily.

I'll close this ticket for now, if you have further questions, don't hesitate to reach out.


Emit fallback for decorator metadata for type only imports

This fixes our emit for decorator metadata when the referenced type comes from a type-only import.
Fixes #37672

Seems this problem still happens in typescript 4.1.3, when using a type which is nested inside a namespace.
For example:
// services.ts

export namespace Services {
  export class Service {}
}

// main.ts
import type { Services } from './services';

declare const decorator: any;
export class Main {
  @decorator()
  fieldTest: Services.Service;
}

JS output:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Main = void 0;
const tslib_1 = require("tslib");
class Main {
}
tslib_1.__decorate([
    decorator(),
    tslib_1.__metadata("design:type", Services.Service)
], Main.prototype, "fieldTest", void 0);
exports.Main = Main;

(Services is undefined)

Seems this problem still happens in typescript 4.1.3, when using a type which is nested inside a namespace.
For example:
// services.ts

export namespace Services {
  export class Service {}
}

// main.ts
import type { Services } from './services';

declare const decorator: any;
export class Main {
  @decorator()
  fieldTest: Services.Service;
}

JS output:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Main = void 0;
const tslib_1 = require("tslib");
class Main {
}
tslib_1.__decorate([
    decorator(),
    tslib_1.__metadata("design:type", Services.Service)
], Main.prototype, "fieldTest", void 0);
exports.Main = Main;

(Services is undefined)

@liorcode would you mind filing a new issue? Thanks!


python310Packages.python-bsblan: init at 0.5.6

Description of changes
Module to control and monitor an BSBLan device programmatically
https://github.com/liudger/python-bsblan

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

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

2 packages built:

python310Packages.python-bsblan
python39Packages.python-bsblan


working example

Hi
can you provide working example how to use that library with MAUI application. How to access logs?
Exist similar project https://github.com/jfversluis/MauiMetroLogSample but it another library. I would prefer to use Nlog

I was thinking that one would use the native LogViewer on the actual device.

Android would use LogCat
iOS would use OSLog Viewer

Thanks for reply, but I am looking for example how to use NLog.Targets.MauiLog with MAUI project. Do you have such basic guidance or sample project?

You just add the nuget-package to your project, and include the MauiLog-target in your NLog.config - file (As shown on the "front page" of this repository)
Sent from my Galaxy
-------- Original message --------
From: vovanb @.>
Date: 18/11/2022 09:26 (GMT+01:00)
To: "NLog/NLog.Targets.MauiLog" @.>
Cc: Rolf Kristensen @.>, Comment @.>
Subject: Re: [NLog/NLog.Targets.MauiLog] working example (Issue #5)
Thanks for reply, but I am looking for example how to use NLog.Targets.MauiLog with MAUI project. Do you have such basic guidance or sample project?
—
Reply to this email directly, view it on GitHubhttps://github.com/NLog/NLog.Targets.MauiLog/issues/5#issuecomment-1319689504, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACXZ7HGWDYNY5TU6P4U3AA3WI44TVANCNFSM6AAAAAASDI7VLE.
You are receiving this because you commented.Message ID: @.***>

Yes, if you have familiar usage and examples, I would appreciate it if you could share some basic usage and advanced skills.
It's better to help improve the ReadMe.md. People like me who have just met are in great need.
thank you

I agree please provide a sample that shows how to use this.

Created #13 with MAUI-Sample-Applications where NLog is setup as LoggingProvider.
Updated the docs - https://github.com/snakefoot/NLog.Targets.MauiLog/blob/master/README.md
Will be merged when NLog v5.2 has been released, that improves support for application trimming:
Preview: https://github.com/snakefoot/NLog.github.io/blob/master/_posts/2023-05-16-nlog-5-2-trim-warnings.md

NLog.Targets.MauiLog v5.2.0 has been released https://www.nuget.org/packages/NLog.Targets.MauiLog/5.2.0
Example MAUI application can be found here: https://github.com/NLog/NLog.Targets.MauiLog/tree/master/examples/MauiApp2
Have tried to improve the tutorial in README.md here: https://github.com/NLog/NLog.Targets.MauiLog/blob/master/README.md


Including "subset0" for LUNA16 processing

Unless there's a reason I haven't understood yet, I would expect to start processing with the luna_raw/subset0 directory rather than luna_raw/subset1.

in my description it was registered as a bug.
for reproducability sake I kept it in.


Hotfix: Removed own version in main class

Coverage remained the same at 100.0% when pulling 49c5b812c0c426f704c2c00338a081cfa7a7e0e7 on hotfix/remove-own-version-in-main-class into 84f727cf69503e7592aaa039d3a173b2eb734146 on develop.


extremly slidey movement and i cant jump... also WASD are inverted

Make sure you have the "What Is Ground" dropdown set to your Ground layer in the PlayerMovement script.

It might be because the Collision Detection is set to Interpolate, try using Discrete instead


Release notes for 0.9.1

@jrudolph Nitpick: It looks like you forgot to create a v0.9.1 tag.
Thanks again for this really nice release.

Good point, missed to push it. Will do later.

Done


Looking forward to extend different background color.

For example, red slider in the middle area,other gray

+1 , I need white in midle and other gray.

Hi!
@Rain-dew @henrique2601
There is property sliderLineBetweenHandles to set color between sliders.

Thank you！ I'll try.
| |
zhangyuluios
<EMAIL_ADDRESS>|
Signature is customized by Netease Mail Master
On 12/05/2018 03:38, Vladimir Samoylenko wrote:
Hi!
@Rain-dew@henrique2601
There is property sliderLineBetweenHandles to set color between sliders.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


possible wrong error in parser/interpreter for oracle sql

System information:

Operating system (distribution) and version: MACOSX 10.14.16
DBeaver version: <IP_ADDRESS>001191557
Java version: java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Connection specification:

Database name and version: oracle12
Driver name
Do you use tunnels or proxies (SSH, SOCKS, etc)?

Describe the problem you're observing:
when executing this (below) specific sql command on dbeaver against the oracle db it fails with a 'ORA-00933: SQL command not properly ended'
The same sql command executed on sql-developer or sql+ works ok.
The same command against postgresql db works ok
Steps to reproduce, if exist:
I'll put the script but you don't have the same packages so... maybe you can look at the structure and see if parsing it fails for a reasonable problem or is a bug in the interpreter.
SELECT ttx.usr_id
, avg(CASE WHEN ttx.type = 'FIXEXPENSE' THEN ttx.amount END ) AS "FIXEXPENSE"
, avg(CASE WHEN ttx.type = 'VAREXPENSE' THEN ttx.amount END ) AS "VAREXPENSE"
, avg(CASE WHEN ttx.type = 'INCOME' THEN ttx.amount END ) AS "INCOME"
FROM (SELECT tx.usr_id
, AVG(tx.amount) AS amount
, tx.type
FROM ( SELECT urp.usr_id
,       SUM(pop.pop_operamtmoneyfm94_adm.PKG_UTILS.getExchRate(pop.pop_currency, uspro.upr_currency, pop.pop_dtposted)) AS AMOUNT
,       CASE WHEN pop.pop_recurringmatched IS NOT NULL THEN 'FIXEXPENSE' ELSE 'VAREXPENSE' END AS TYPE
FROM    moneyfm94_adm.product_operations pop
,       moneyfm94_adm.products pro
,       moneyfm94_adm.user_role_products urp
,       moneyfm94_adm.user_profile uspro
WHERE   pop.pop_operamt < 0
AND     pop.pop_split = 0
AND     pop.pop_computable = 1
AND     pop.pop_dtposted BETWEEN TO_DATE('2020-01-01', 'yyyy-mm-dd') AND TO_DATE('2020-01-31', 'yyyy-mm-dd')
AND     pro.pro_delete = 0
AND     pop.pro_id = pro.pro_id
AND     urp.pro_id = pro.pro_id
AND     uspro.usr_id = urp.usr_id
GROUP BY pop.pop_recurringmatched, urp.usr_id
UNION
SELECT  urp.usr_id
,       SUM(pop.pop_operamtmoneyfm94_adm.PKG_UTILS.getExchRate(pop.pop_currency, uspro.upr_currency, pop.pop_dtposted)) AS AMOUNT
,       'INCOME' AS TYPE
FROM    moneyfm94_adm.product_operations pop
,       moneyfm94_adm.products pro
,       moneyfm94_adm.user_role_products urp
,       moneyfm94_adm.user_profile uspro
WHERE   pop.pop_operamt > 0
AND     pop.pop_split = 0
AND     pop.pop_computable = 1
AND     pop.pop_dtposted BETWEEN TO_DATE('2020-01-01', 'yyyy-mm-dd') AND TO_DATE('2020-01-31', 'yyyy-mm-dd')
AND     pro.pro_delete = 0
AND     pop.pro_id = pro.pro_id
AND     urp.pro_id = pro.pro_id
AND     uspro.usr_id = urp.usr_id
GROUP BY urp.usr_id) tx
GROUP BY tx.usr_id, tx.type) ttx
GROUP BY ttx.usr_id;

hi @JordiMontane ,
could you try to execute your script against 6.3.4?

Hi,
tried with version <IP_ADDRESS>002011957
and result is successful.
Thanks
Regards,

Jordi Montané
Software Engineer
<EMAIL_ADDRESS>Landline +34 932 241 694
Barcelona - Buenos Aires - Miami - Kuala Lumpur
www.strands.com
On Fri, Feb 7, 2020 at 12:23 PM uslss<EMAIL_ADDRESS>wrote:

hi @JordiMontane https://github.com/JordiMontane ,
could you try to execute your script against 6.3.4?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dbeaver/dbeaver/issues/7855?email_source=notifications&email_token=AGNM7FAI3AVQWRMDNEAV6PTRBVAC5A5CNFSM4KQZRQEKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELCTLYQ#issuecomment-583349730,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGNM7FCGNNGKIL6RQKFPEY3RBVAC5ANCNFSM4KQZRQEA
.

--
For us, your privacy and LSSICE are Priority. For more information: Legal
Notice https://finance.strands.com/legal-notice/


Remove MLFlow framework

We probably don't want MLFlow for distribution?
Easy to remove the entry point.
Harder to deal with the way datasets are currently saved and then re-opened.

For a first release it is suggested that we leave MLFlow within the code and this can be refactored later if required.

#85 and #95 are introducing a CLI for the data and training step, respectively. The inference step is still to be done, and the Jupyter notebooks have to also use those changes and don't yet (see #82).
The refactoring work is done/merged on the dev branch.

#97 removes MLflow integration.


Remove umc array

WIP (need functional validation before merge)

@dvrogozh could you please look at this PR again?


When loading collection entries, ignore non-markdown files

Currently every file in a folder based collection is expected to be an entry - even having a .keep file will break the app. Instead, the CMS should simply ignore files that are not markdown.
Requirements

Check the extensions of entries when loading files for a folder based collection
If the file extension is md, process as usual
If the file extension is not md, ignore it

Considerations

Some markdown files may also need to be ignored, as mentioned in #218
In lieu of formally accepting a list of files to ignore in the config, we could adopt the convention of ignoring markdown files prefixed with an underscore

We wouldn't to just ignore all markdown files that start with an underscore, because some CMS's such as Hugo use them (for example content\_index.md).

@tech4him1 thanks for that - somehow I wasn't considering that you'd want to edit the index file in the CMS 🙄

So the files view of the collection should only show files matching the extension defined in the collection or .md if none is defined?
What about .markdown files if I have the extension set to .md - is that something we should handle, or leave for now (see https://github.com/netlify/netlify-cms/issues/317)?

@josephearl we can keep the two issues separate, but fixing both on one shot is also welcome.

@erquhart one option then is we could allow an array of extensions for a collection (or a string if just a single value) - with the default changing from 'md' to ['md', 'markdown']. The first extension would be used when creating files; how does that sound?

@josephearl that works so long as we can still accept a string value (current behavior doesn't break).


Jumping cursor issue with Content-Editable two way data binding using Array of Objects

Version
2.5.17-beta.0
Reproduction link
https://codepen.io/priyashpatil/pen/PeyydQ
Steps to reproduce
Card Panel List is editable so try to typing to change content in "Using Objects" Panel.
What is expected?
Cursor should not jump to start position of content editable element having two way data binding.
What is actually happening?
Cursor jump to start position of element due to re rending of element.

The reason it doesn't jump is that you're not reactively setting the data (see reactivity caveats in docs). If you use splice you see the same behaviour.
contenteditable needs special treatment and it would bloat Vue code if it was supported out of the box. So instead we recommend using third party plugins.
See https://github.com/vuejs/vue/issues/4681#issuecomment-271450232 and https://github.com/vuejs/vue/issues/1670#issuecomment-153089559

Here is code for binding Content-Editable two way data binding using Array of Objects https://codepen.io/muthu32/pen/oNvGyQX

It's almost 2025, and nobody knows how to fix the cursor jumping to the beginning... I gotta ask the pro Michael Thiessen...  I'll report back.


typo: SpamFromHeader -> SpanFromHeader

corrects a typo in the descriptive commentary

I signed the CLA
--
Regards,
Colin M. Strickland, cms, "that guy"
(sent from my Wileyfox phone)
On 31 May 2017 4:41 pm, googlebot<EMAIL_ADDRESS>wrote:
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/ to sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.

If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check your existing CLA data and verify that your email is set on your git commits.
If you signed the CLA as a corporation, please let us know the company's name.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Hey! Great catch, thanks.
We don't actually accept PRs over here (this repo is just a mirror). If you'd please check out CONTRIBUTING.md in the project root, there are instructions for submitting code to our code-review system, Gerrit.
Thanks again!


Download Table: Look into why DB/* is not being updated at time of request (sometimes)

The Download Table currently refreshes the getServerSideProps after a file(s) download completes. Occasionally the database would not be updated by the time of the request and the vault would return the old data. The current fix is to add a small timeout before making the request.
Looking into why the delay is needed would be a better fix.

I was looking into this bug and here is a little more detail:
Download 1-file and getServerSideProps returns the correct data.
Download more than 1-file and getServerSideProps will have updated only the first file's status.


Is there a policy for Rustc's edition or minimum supported version?

Looking around our repos, there are lots of long-living repos some of which are written in 2015 edition style. I think we can improve them by adapting to the newer edition. Is there an edition or MSRV policy we must conform to?

Rule of thumb is to not break stuff that is working. However, there is no explicit policy against upgrading repos.
To be sure, we have to treat upgrading the edition as breaking change. I'm fine with this, as long we don't break existing code.


updates to duty calculator changes

Jira link

HOTT-3937

What?
I have added/removed/altered:

Updated the changes related to UKIMS in the dcTradeSchem spec file.
Refactored smokeTest-UK-M spec file and fixed regression failure.

Why?
I am doing this because:

To ensure that we have a green build on the staging environment.

Changes looks good

Changes look good


show error code as part of jshint error output

Is it possible to see the jshint rule related to the thrown error, either by default or as config option?
for example, if the error is
line 16 col 14 'cardPayment' is not defined.
it would also be helpful to see the error code as part of the output
jshint -W117
Thanks and keep up the great work!

Here are more details on what @obuckley-kenzan asked for: errors are currently listing the message, however not the message ID.
This happens in a unit test file where BardJS is used to inject values dynamically. This error message can be prevented by adding /* jshint -W117 */ at the top of the spec file.
The real issue here is that the error does not inform of what the error/message ID is, we have to know by heart what the textual message means, or go to the source code of JSHint to figure it out.
It would be nice if the ID could be provided in the logs, so that it is not so convoluted to figure out which one it is.

I know there is an option to enable this in jshint, not sure what it is right now. We could add support for that same option.

Looks like it's the verbose option, which is already supported. Just change your reporter to look like so: https://github.com/spalger/gulp-jshint#reporter-configuration

great, thank you @spalger !  Will give that a go


When the {value} is provided again, with the same value, the position returns to the beggining of the file.

I'm trying to MonacoEditor with redux. Which means that the text in the editor is stored in the redux store.
On each key, the new value of the text is presented to the MonacoEditor React componant. And it's working fine, but the "position" of the cursor keep beeing reseting the beggining of the file.
Is there a way to configure the component so the position doesn't change when presenting a new value (or at least the same value as the one already in the editor) ?

Use shouldComponentUpdate() to let React know if a component’s output is not affected by the current change in state or props.
@gissehel
shouldComponentUpdate(nextProps, nextState)

Thanks !
The docs says that it's optimisation only and I should not rely on that to render or not, so I've used that call to test if I should update or not:
    shouldComponentUpdate(nextProps) {
        if (this._editor) {
            const editorText = this._editor.editor.getValue();
            const nextPropsText = nextProps.text;

            if (nextPropsText === editorText) {
                this.shouldUpdate = false;
            } else {
                this.shouldUpdate = true;
            }
            return this.shouldUpdate;
        } else {
            return true;
        }
    }

But because I should not rely on this call to render or not, I've also added in the render section, the fact that value gets null if shouldUpdate is false.
    render() {
        const { text, onTextChanged } = this.props;
        const { shouldUpdate } = this;

        return <div className='Editor'>
            <MonacoEditor
                className='MonacoEditor'
                ref={(ref) => this._editor = ref}
                language="plaintext"
                onChange={onTextChanged}
                value={shouldUpdate ? text : null}
                options={{
                    theme: 'vs',
                    automaticLayout: false,
                }}
                height='700px'
            />
        </div>
    }

And with shouldUpdate being defined as:
    get shouldUpdate() {
        return this._shouldUpdate === undefined ? true : this._shouldUpdate
    }

    set shouldUpdate(value) {
        this._shouldUpdate = value;
    }

in order to be sure that if shouldUpdate has never been set, it should update.
I'm not really sure that it's the shortest, nicest or cleanest solution (as I'm mainly writing stateless react component, I'm almost only doing render stuff), but it's working.


Composer Try-It should support host binding and virtual hosts.

Description:
If a service is bound to a hostname or configured on a virtual host then try it service URL drop down should suggest the corresponding URLs.
Affected Versions:
0.975.0
** Possible Fix **
In the service URL drop-down we should suggest service names with the URL.

Composer is discontinued hence closing the issue.


Screenshots in reversed left/right orientation

Hi there,
Thanks again for this incredible tool! Working with the developmental version of qatools-python, I noticed that the screenshots generated are showing outputs in reversed orientation in the x axis (left/right). This happens for both screenshots and skullstrip modules.  We'll take a closer look and get back within the next few days. Cheers!

Hello, and thanks again for your message. I probably have to ask for a clarification: the above command will generate a number of sagittal, coronal, and axial views. The x axis will be present in the coronal and axial views. Are you referring to these views regarding the reversed orientation? And what specifically do you mean by "reversed": reversed with regard to the FreeView convention (in this sense, the axis is indeed reversed)?

Hi Kersten, thanks for the follow-up question. Yes, those are the views (axial and coronal), wherein what the screenshots module shows as the right side of the brain, it's shown as left side  in FreeView. See sample images below.
Thanks!

Hello, I have now added a --screenshots_orientation <neurological|radiological> argument. It allows to switch between left-is-left (neurological; default) and left-is-right (radiological; as in Freeview) orientation of the x axis in coronal and axial views. It is currently only included in the developmental (freesurfer-module-dev)[https://github.com/Deep-MI/qatools-python/tree/freesurfer-module-dev] branch, but I expect that it will be introduced into the main branch within the next weeks, together with a major update of the main branch.


initial command

docker-compose -p local.yml up --build
doesn't work
Could be dated

It was typo. My bad. Use -f instead of -p to specify the configuration file.


Derive Draft Misspelled

Describe the bug
Derive is spelled "Derrive"

(...when viewing an object. The menu at the top "Object Tools.")


feat: create templete email validator (#10)

Hi, @yazaldefilimonepinto
As said here: https://github.com/leal32b/webapi-nodejs/issues/10#issuecomment-1465020981, naming was a little confusing, sorry for that 😅
What I needed was implemented in this PR: https://github.com/leal32b/webapi-nodejs/pull/30
So I'm closing this one, thanks a lot for the contribution 👍🏻


Add support for Crimson Curse

Fix a bug where gwent.py would crash while processing Crimson Curse cards.
Mark Crimson Curse cards as collectible.
Add a card type of Strategem (currently only used with Tactical Advantage).

LGTM, thanks for your help!

Official card data update with images can be found here:
https://github.com/GwentCommunityDevelopers/gwent-data-release/releases/tag/v2.0.0


Set defaults

The config file (https://github.com/agnivade/funnel/blob/master/config.toml) sets defaults of 100,000 log entries, and 5MB rotation, with a maximum of 100 files.
In this case you then have at most 100 files (at most 500MB disk space, at most 10,000,000 log entries)
Without a config file, the default is 100 lines per file and at most 100 files. I think 100 lines per file is unreasonably small, especially since it means you can only store a maximum of 10,000 log entries over the 30 day max age.
This could catch someone out.
I think making sure that the example config file should match the defaults if you haven't set one up.

Current coverage is 64.65% (diff: 100%)

Merging #21 into master will not change coverage

@@             master        #21   diff @@
==========================================
  Files             5          5
  Lines           365        365
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            236        236
  Misses           90         90
  Partials         39         39

Powered by Codecov. Last update 600b7c4...25d821f

Oops, nice catch ! You are correct, they should be in sync.


Is mamba suitable for time-series classification task?

I am working on a time-series classification task.Does mamba work for my task?

Mamba satisfies the same sequence-to-sequence modeling interface as any other model such as RNNs or Transformers. It should be applicable to your task.


Switch to Azure Pipelines

AppVeyor is super flaky.
It looks like https://azure.microsoft.com/en-us/services/devops/pipelines/ supports all platforms and would be really fast:
"Get cloud-hosted pipelines for Linux, macOS, and Windows with unlimited minutes and 10 free parallel jobs for open source"
We could switch to one CI instead of maintaining multiple.

Yeah that also is the intention behind https://github.com/graphql-rust/juniper/pull/213.
Caveat is that Cirrus does not support Rust on Windows easily so I gave up there.
If Azure works well I'm all for it.

I'm a Program Manager on Azure Pipelines. Let me know if you have any questions or suggestions. I'm happy to help!

@kaylangan great, thanks! Do you know of any Rust projects currently using Azure Pipelines we could take a look at?

@kaylangan I want to have am N*M matrix of jobs, similar to what we have in Travis now (rust version * platform). It doesn't appear we can do that easily?
When I do something like:
strategy:
  matrix:
    stable:
      rustup_toolchain: stable
    beta:
      rustup_toolchain: beta
    nightly:
      rustup_install: nightly
    minimum_supported_version_plus_one:
      rustup_toolchain: 1.23.0
    minimum_supported_version:
      rustup_toolchain: 1.22.0

jobs:
- template: _build/job.yml
  parameters:
    name: macOS
    pool:
      vmImage: 'macOS-10.13'

- template: _build/job.yml
  parameters:
    name: Linux
    pool:
      vmImage: 'Ubuntu-16.04'

- template: _build/job.yml
  parameters:
    name: Windows
    pool:
      vmImage: 'vs2017-win2016'

I get an error azure-pipelines.yml (Line: 14, Col: 1): 'jobs' is not allowed. 'strategy' is already defined and is mutually exclusive.

@LegNeato The parcel-bindler/parcel project might be a good example for how to set this up. They have an azure-pipelines.yml file that lists the jobs across the three OS's. For each of those jobs, they run the azure-pipelines-template.yml template. In the template, they've specified the matrix strategy, and (bonus!) install Rust.

@kaylangan Thanks, very helpful!

A downside is crates.io does not support azure pipelines for the badge key:
https://github.com/rust-lang/crates.io/blob/33cf64951b3399093049f5331dc43fec24008bcb/src/models/badge.rs#L30

Bug with display when using azure pipelines:

("-1" minute)

I've landed this and made it required to merge PRs. I haven't removed any of the other CI systems yet though.

@LegNeato  that's awesome! few things...

coverage is not executed. i have a condition yhat by default in a ci flow its only available for travis and that can be changed easily but needs to be tested (never ran kocov on azure)
codecov do not seem to support azure yet so it fails to upload reports without providing a token
definitely going to use your experience to add to cargo-make documentation on how to support azure pipelines

@kaylangan any chance you can add friendly mobile ui view support for azure pipelines? I'm trying to see the build log via chrome mobile and it's driving me crazy (focus is jumping alot)
thabks!!!

@sagiegurari good to know! I'm leaving travis as-is until we can be at feature parity. I'm likely going to patch crates.io. Also, azure pipelines seems to support templates in their own repo, so I am going to add some that people can point to rather than copying and pasting!

@kaylangan Another feature request: jobs seem to be triggered in alphabetical order, which means our windows jobs aren't run until the other ones complete due to resource usage. It would be better to randomize the order in which they start.

Bug with display when using azure pipelines:

("-1" minute)

@LegNeato thanks for the report--I've filed the bug on our side.

any chance you can add friendly mobile ui view support for azure pipelines? I'm trying to  see the build log via chrome mobile and it's driving me crazy (focus is jumping alot)
thabks!!!

@sagiegurari We've heard asks for mobile views. It's not in the short-term (3-6 month plan), but is on our backlog. It sounds like at a bare minimum, you'd want a mobile view of the logs, yeah?

Another feature request: jobs seem to be triggered in alphabetical order, which means our windows jobs aren't run until the other ones complete due to resource usage. It would be better to randomize the order in which they start.

@LegNeato I'm not sure I fully understand the request. Even if the job order were randomized, the build wouldn't return status until all of the jobs finished. What's the benefit of randomizing the order?

@kaylangan sweet, thanks for filing! Re: order, every build triggers 10+ jobs due to the matrix. Because "Windows" is alphabetically last, it doesn't run until there is space in the queue. Usually jobs fail by platform, so we don't see if Windows fails until Mac or Linux jobs completely finish.

So the only thing not working on Azure now is code coverage, right?

Correct

in the next cargo-make release (its currently only in the dev branch) adding the CARGO_MAKE_RUN_CHECK_FORMAT env var to your makefile would trigger fmt check as part of the ci flow

I'm all for autoformatting / enforcing style.

@sagiegurari that's convenient, but I chose to add the check as an extra job on the CI.
That way you can see with one glance that the build failed due to formatting: https://dev.azure.com/graphql-rust/GraphQL Rust/_build/results?buildId=149

https://internals.rust-lang.org/t/which-ci-platform-should-rust-use/9322
Juniper just got a shoutout as (one of?) the first Rust projects using Pipelines. One of you might want to join the discussion and share your experience with using pipelines.


stable and dev channels

Currently, we have only one channel - master, which is deployed to https://book.rizin.re. I suggest:

Use the same branching scheme as other Rizin projects - stable and dev
Deploy stable on https://book.rizin.re/
Deploy dev on https://book-dev.rizin.re/ or a similar domain
See .github/workflow/mdbook.yml for branch settings (also update the base)
Update Rizin release checklist issue template to include the step of tagging the book too (optional?)
Point Rizin site to two version of the books - stable and dev

probably we should drop this, and embed the book into the main repo and then autogen the online website at each release (i.e. tag)

@wargio book embedded into main code? I don't like it too much, there's plenty of stuff here.

no, i mean embedded in the rizin repo.


Make ILProvider configurable

Refactoring to allow us having custom IL providers.

The immediate goal is to allow specifying an IL provider for ready to run compilations that doesn't do the CoreRT-specific IL intrinsic expansion.
The medium term goal is to allow IL scanner to provide IL based on the scanning results. This allows optimization that Project N dependency reducer does, such as replacing IL bodies of instance methods on types that were never seen as allocated with a throw method body.
The long term goal is to allow other IL level optimizations (based on the IL scanner or other inputs).

This pretty much implements https://github.com/dotnet/corert/pull/6345#discussion_r219696075, with some additions: I also got rid of McgInteropSupport (this is vestige of an old plan to do P/Invokes based on the MCG tool - we abandoned that plan), and I did a simplification in PrecomputedMetadataManager (we only want to read the ECMA IL - no need to use the full blown IL provider).

@jkotas could you have a look?
src/Common/src/TypeSystem/IL/CoreRTILProvider.cs is a git mv of ILProvider.cs, but git managed to mess that part up anyway so now it's a new file. Sigh. I didn't really touch that file, except for deleting lines here and there.