RFC: Site-to-site tunnels

Request for public comment: Site-to-site tunnels
Use case
I have a branch office with employees working on-prem that need access to protected resources in our cloud and other environments. It would be nice if they didn't have to all run Firezone on their workstations and instead the entire office subnet would have an always-on backhaul to the gateways in the cloud.
Implementation thoughts
Thinking a bit more about how we'd support this, there are two obvious approaches:

Add a site-to-site mode for our existing Gateways that allows two Gateways to establish a direct, peer-to-peer tunnel
Add a default-gateway mode for our Linux headless client to support routing packets for a given list of local subnets

Hmm why would we need additional functionality on the headless client to support this?

I suppose we wouldn't if they were only using it as a layer 3 client. But a site-to-site tunnel that's used to connect users in an office to a cloud VPC or some other protected network kind of defeats the purpose of using Firezone since a static WireGuard tunnel would do.

I see a need in that admins do not want to maintain two separate wireguard endpoints (or configs) for this specific case and an automated (managed) configuration would come in handy.
But this would require the gateway in the mentioned scenario to act as the gateway (or router) in the off-site network, please document this.
To expand the scenario:
What about a multi-site scenario of  >=3 different locations with >=1 gateways, where the network engineers want to rely on fire zone to ensure secure connection between each of them.
Reasons could be:

Multiple off-sites offices, but client-to-client communication required
Communication between different nodes of a service deployed in multiple location (cluster/HA-deployments)

Thanks for your input @Yasamato.

client-to-client communication required

Firezone 1.0 policies assume client -> gateway traffic currently. To support those scenarios we would probably want to simply add "gateway mode" to clients so that they could function as gateways as well. This would essentially be a mesh topology between those nodes.
It's not a trivial amount to support it -- we architected 1.0 with these types of use cases in mind.
Will track more comments in this issue and provide updates as we go.


How to play AAC audio stream using NAudio?

In the application I am currently working on I would like to play AAC audio stream.
For example, this internet radio: http://stream.bauermedia.fi/iskelma/kem_64.aac. I would like to use NAudio framework as it is already used in this project.
To start with, I examined Mp3StreamingDemo in NAudioDemo. I created a class ADTSFrame where I processed ADTS frame header (https://wiki.multimedia.cx/index.php/ADTS). From ADTS frame header I got the next information: sampling frequency, number of channels, frame length. Then I created a separate class ADTSWaveFormat with one private field waveFormatTag and two properties Channels and SampleRate. WafeFormatTag is set to WaveFormatEncoding.MPEG_ADTS_AAC. As I have understood from here - https://docs.microsoft.com/en-us/windows/desktop/DirectShow/audio-subtypes, no more information is needed. However, when I wanted to get PCM format, AcmInterop.acmFormatSuggest() returned "NoDriver". So I am stuck here since I do not understand if I am moving in the right direction.
Then I searched in the Internet and found the information, that there is a class StreamMediaFoundationReader in NAudio. StreamMediaFoundationReader wants to get a stream in its constructor. First of all this stream is converted to ComStream and then to IMFByteStream. When ComStream is converted to IMFByteStream, Seek operation is performed. So ConnectStream that I get from response.GetResponseStream() does not suit to give to StreamMediaFoundationReader's constructor as it is not seekable. So I decided to use memory stream.
Until now the most successful code I had written was:
WebResponse response = WebRequest.Create(InputPath).GetResponse();
using (Stream rs = response.GetResponseStream())
{
  using (MemoryStream ms = new MemoryStream())
  {
    byte[] buffer = new byte[16384 * 4];
    int read = rs.Read(buffer, 0, buffer.Length);
    ms.Write(buffer, 0, read);
    using (var streamMfReader = new StreamMediaFoundationReader(rs))
    using (WaveOut waveOut = new WaveOut())
    {
      waveOut.Init(streamMfReader);
      waveOut.Play();
      while (waveOut.PlaybackState == PlaybackState.Playing)
        Thread.Sleep(100);
    }
  }
}

As you see, this code does not suit anywhere as it plays only for a moment.
I also have tried this:
MemoryStream memoryStream = new MemoryStream();
new Thread(delegate (object o)
{
  WebResponse response = WebRequest.Create(InputPath).GetResponse();
  using (Stream responseStream = response.GetResponseStream())
  {
    byte[] buffer = new byte[65536];
    int read;
    while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
    {
      long pos = memoryStream.Position;
      memoryStream.Position = memoryStream.Length;
      memoryStream.Write(buffer, 0, read);
      memoryStream.Position = pos;
    }
  }
}).Start();

while (memoryStream.Length < 65536 * 10)
  Thread.Sleep(1000);

memoryStream.Position = 0;
using (WaveStream streamMediaFoundationReader = new
                                StreamMediaFoundationReader(memoryStream))
{
  using (WaveOut waveOut = new
                             WaveOut(WaveCallbackInfo.FunctionCallback()))
  {
    waveOut.Init(streamMediaFoundationReader);
    waveOut.Play();
    while (waveOut.PlaybackState == PlaybackState.Playing)
    {
       Thread.Sleep(100);
    }
  }
}

But here I get ContextSwitchDeadlock as memoryStream is used in different threads.
By now I do not have much working experience in programming.
Could please anybody give me an advice how playing audio stream can be done using NAudio?
Today I have also tried to edit ReadFullyStream in the next way:
public class ReadFullyStream : Stream
    {
        private readonly Stream sourceStream;
        private long readPos;
        private long seekPos;
        private readonly byte[] readAheadBuffer;
        private int readAheadLength;
        private int readAheadOffset;

        public ReadFullyStream(Stream sourceStream)
        {
            this.sourceStream = sourceStream;
            readAheadBuffer = new byte[4096];
        }
        public override bool CanRead
        {
            get { return true; }
        }

        public override bool CanSeek
        {
            get { return true; }
        }

        public override bool CanWrite
        {
            get { return true; }
        }

        public override void Flush()
        {
            throw new InvalidOperationException();
        }

        public override long Length
        {
            get { return readPos; }
        }

        public override long Position
        {
            get => seekPos;
            set => seekPos = value;
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
            int bytesRead = 0;
            while (bytesRead < count)
            {
                int readAheadAvailableBytes = readAheadLength - readAheadOffset;
                int bytesRequired = count - bytesRead;
                if (readAheadAvailableBytes > 0)
                {
                    int toCopy = Math.Min(readAheadAvailableBytes, bytesRequired);
                    Array.Copy(readAheadBuffer, readAheadOffset, buffer, offset + bytesRead, toCopy);
                    bytesRead += toCopy;
                    readAheadOffset += toCopy;
                }
                else
                {
                    readAheadOffset = 0;
                    readAheadLength = sourceStream.Read(readAheadBuffer, 0, readAheadBuffer.Length);
                    //Debug.WriteLine(String.Format("Read {0} bytes (requested {1})", readAheadLength, readAheadBuffer.Length));
                    if (readAheadLength == 0)
                    {
                        break;
                    }
                }
            }
            readPos += bytesRead;
            Position = readPos;
            return bytesRead;
        }

        public override long Seek(long offset, SeekOrigin origin)
        {
            Position = offset;
            return Position;
        }

        public override void SetLength(long value)
        {
            throw new InvalidOperationException();
        }

        public override void Write(byte[] buffer, int offset, int count)
        {
            throw new InvalidOperationException();
        }
    }

My intention was to make ReadFullyStream seekable, but actually I understand that I do not understand something important. After I had made these changes in the ReadFullyStream class, I tried the following:
WebRequest request = WebRequest.Create(InputPath);
WebResponse response = request.GetResponse();

using (Stream responseStream = response.GetResponseStream())
{
  ReadFullyStream readFullyStream = new ReadFullyStream(responseStream);
  using (WaveStream streamMediaFoundationReader = new
                                 StreamMediaFoundationReader(readFullyStream))
  {
    using (WaveOut waveOut = new WaveOut())
    {
      waveOut.Init(streamMediaFoundationReader);
      waveOut.Play();
      while (waveOut.PlaybackState == PlaybackState.Playing)
      {
        Thread.Sleep(100);
      }
     }
   }
}

Now I get the following error in the MediaFoundationApi CreateSourceReaderFromByteStream(IMFByteStream byteStream):
System.Runtime.InteropServices.COMException: 'Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))'.

As you have discovered, playing streaming audio like this is very challenging, and I've not managed to implement it for AAC with Media Foundation myself.
Have you tried simply passing the URL to the MediaFoundationReader constructor. That sometimes works.

Yes, I have tried this, but it does not work.

Hi,
Any updates on this? I was thinking to use the "MediaFoundationReader" to open an audio stream for AAC using the rtsp protocol. From what i read probably is not implemented?

In the examples i found this...
var url = "http://media.ch9.ms/ch9/2876/fd36ef30-cfd2-4558-8412-3cf7a0852876/AzureWebJobs103.mp3";
using(var mf = new MediaFoundationReader(url))
using(var wo = new WaveOutEvent())
{
wo.Init(mf);
wo.Play();
while (wo.PlaybackState == PlaybackState.Playing)
{
Thread.Sleep(1000);
}
}

Hi @crtassos I've just found this looking to do the same as you, plaing AAC Audio (mp4a) frames from rtsp. What RTSP client are you using? Cheers, Ross

Hi @rossbuggins . From what i discovered i do not think it is possible to play AAC audio files or open a stream to play AAC audio with NAudio. To play the stream i ended up realising that i have to do it manually by opening a socket. Now my plan is to test the RtspClientSharp client which is basically a wrapper around Microsoft's TCP socket. I see that you already use or have used this client? Did it work?
Never the less, with NAudio you can convert the audio file from one format to another. Have you tried this with your stream?

Any solutions for this?

Hi,
I ended up using gstreamer instead.


Error: 'w3cwebsocket' is not exported by node_modules/websocket/index.js when using Rollup

Bug report
Describe the bug
When using a simple rollup configuration generated by the open-wc project, and installing the supabase-js dependency, building fails with a  Error: 'w3cwebsocket' is not exported by node_modules/websocket/index.js, error.
Here is a more complete stacktrace:
<EMAIL_ADDRESS>1: var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
                   ^
2:   function adopt(value) {
3:     return value instanceof P ? value : new P(function (resolve) {
...and 1 other occurrence

...and 10 other files
(!) Circular dependency
<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>[!] Error: 'w3cwebsocket' is not exported by node_modules/websocket/index.js, imported by<EMAIL_ADDRESS>https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
<EMAIL_ADDRESS>(1:9)
1: var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
            ^

To Reproduce
I have created a test repository to reproduce the issue here.
You can either clone the repo and then run $npm install && npm run build or directly click this link to fire a GitPod instance doing it for you :)
Expected behavior
I would expect the supabase-js dependency to not make my build fail
Screenshots
If applicable, add screenshots to help explain your problem.
System information

Version of supabase-js: [e.g. 1.35.4]
Version of Node.js: [e.g. 16.15.1]

Additional context
I have found this very similar issue and tried to upgrade the rollup plugin to the latest version as well as apply the rollup common js plugin but then the error changes to
(!) `this` has been rewritten to `undefined`
https://rollupjs.org/guide/en/#error-this-is-undefined
<EMAIL_ADDRESS>1: var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
                   ^
2:   function adopt(value) {
3:     return value instanceof P ? value : new P(function (resolve) {
...and 1 other occurrence
<EMAIL_ADDRESS>1: var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
                   ^
2:   function adopt(value) {
3:     return value instanceof P ? value : new P(function (resolve) {
...and 1 other occurrence
<EMAIL_ADDRESS>1: var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
                   ^
2:   function adopt(value) {
3:     return value instanceof P ? value : new P(function (resolve) {
...and 1 other occurrence

...and 8 other files
[!] (plugin commonjs--resolver) SyntaxError: Unexpected token (2:8)
node_modules/websocket/index.js (2:8)

To reproduce :
or run $git checkout test-common-js; npm install && npm run build
Could you please advise? At the moment I solved the issue by importing the script from a CDN but it's not ideal. Thanks!

@supabase/backend-team
Assigning the PIC of the team @Lakshmipathi to take care of this.

Was there ever a resolution to this? I'm running into the same issue


info missing about scaffolded Identity and areas

I had scaffolded Identity.
My add had an Admin area where the HomeController of the Admin area contains a [Authorize] attribute using a custom policy.
Each time I want to site.com/Admin I saw a redirection to /Identity/Account/Login?ReturnUrl=%2Fadmin
but the content of the scaffolded Identity page was empty.
When I tested with allowanonymousattribute instead of the autorize, my area routing was working.
Turns out you need to add "app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); });".
The endpoints.MapRazorPages() is required to get the authorization working, but documentation is not very clear on this.
There is also no info if scaffolded identity pages need updates or not.
It is also not clear if we need to use services.AddAuthorization or if we need to use services.AddAuthorizationCore  (difference?)

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

ID: 76f39eec-9dd1-6167-56ec-47b26e0b5063
Version Independent ID: f9f2b0f3-01eb-cf58-8767-194fe0fc0e44
Content: Migrate from ASP.NET Core 2.2 to 3.0
Content Source: aspnetcore/migration/22-to-30.md
Product: aspnet-core
Technology: aspnetcore-migration
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

There is also no info if scaffolded identity pages need updates or not.

We only provide a list of what has changed, not what has not changed.

It is also not clear if we need to use services.AddAuthorization or if we need to use services.AddAuthorizationCore (difference?)

See AddAuthorization moved to a different assembly


specific performance of gpt-4

Thanks for releasing this dataset and all the amazing work you have done! Do you have any data on the specific performance of gpt-4 on the test data set? If so, can you send me a copy?

@bowen92


How to inject existing db session?

Hi @johnbywater
First, thanks for promoting and supporting eventsourcing through your excellent work!
In my scenario, I have an existing Postgres session (see code snippet below). I would like to re-use this session in my application recorder, which is derived from SQLAlchemyApplicationRecorder. The reason for this is that I do CRUD operations in the database first (outside of the scope of the eventsourced application), and then change my eventsourced application; and I need to achieve atomicity for both my CRUD changes and the eventsourced changes together.
I looked at the infrastructure factory in eventsourcing_sqlalchemy/factory.py, and the SQLAlchemyDatastore, but could not find out how to inject my own session.
Can you help?
This is how I define SessionLocal, which I then use to create my session, outside of my eventsourced application:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(url) : Engine
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

I'd appreciate any hints on this!

Hi @Chris927! Thanks for your kind remarks, and for your interest in the library and this extension package.
Are you wanting to manage the transactions yourself, so that you begin the transaction, then do your CRUD operations, then call commands on the event-sourced application, and then commit?
with Session() as session:
    session.add(some_object)
    session.add(some_other_object)
    my_eventsourcing_app.some_command_method(arg1, arg2, session=session)
    session.commit()

If so, this isn't currently possible, because the SQLAlchemyApplicationRecorder.insert_events() does this. But we can change this.
    def insert_events(
        self, stored_events: List[StoredEvent], **kwargs: Any
    ) -> Optional[Sequence[int]]:
        with self.datastore.transaction(commit=True) as session:
            notification_ids = self._insert_events(session, stored_events, **kwargs)
        return notification_ids

Please note, the **kwargs on the insert_method(). These variable keyword arguments are controlled by (passed down the stack all the way from) the **kwargs on the Application.save() method. So it's possible to pass your session into the Application.save() method as one of the variable keyword arguments. Your application command methods would need to support this too, so that when calling the application command method you provide your session.
class MyEventSourcingApp(Application):
    def some_command_method(self, arg1, arg2, *, session=None):
        ...
        self.save(aggregate1, session=session)

The trouble is that, in the current version of this package, the insert_events() method will disregard the given session and start a new transaction. But, we could change the insert_events() method to use the given session.
    def insert_events(
        self, stored_events: List[StoredEvent], *, session=None, **kwargs: Any
    ) -> Optional[Sequence[int]]:
        if session is not None:
            notification_ids = self._insert_events(session, stored_events, **kwargs)
        else:
            with self.datastore.transaction(commit=True) as session:
                notification_ids = self._insert_events(session, stored_events, **kwargs)
        return notification_ids

Would it be useful to change this package to support this?
You can, currently, define a custom persistence module, that has recorders that override the insert_method() but then you also need to extend the Factory methods to use these recorders (use v0.5 and set them as class attributes), and configure your application to use your custom persistence module.
I just pushed v0.5 so that the Factory class specifies the recorder classes as class attributes, so it's easier to customise.
I'm just looking into adjusting the insert_events() method so that a session can be passed down the stack.... more later!

Hi @Chris927,
I just published v0.6 which supports the following passing an SQLAlchemy session into the save() method.
There's a test in the test suite that covers this:
def test_transactions_managed_outside_application(self) -> None:
    app = Application()
    assert isinstance(app.recorder, SQLAlchemyApplicationRecorder)  # for IDE/mypy
    with app.recorder.datastore.transaction(commit=True) as session:
        # Add CRUD objects to the session.
       ...
        # Save an event-sourced aggregate.
        aggregate = Aggregate()
        app.save(aggregate, session=session)

    # Get aggregate.
    self.assertIsInstance(app.repository.get(aggregate.id), Aggregate)

This would be exactly the same with a subclass of Application. You just need to pass in session to your command methods and then pass it on to save().
This isn't exactly what you asked for. It means this package is still creating the engine. However, by using the app.recorder.datastore, the stored events table will be created and also the select queries will run in the same database as your CRUD operations. Otherwise, you wouldn't be able to use SQLite :memory: database, perhaps finding an SQLite file database is locked under some circumstances, and you would also have to arrange for the stored events table to be created, and perhaps you would have two connection pools, etc.
Please note, in your snippet above you have autoflush=False. I know it can be important when working with a set of CRUD objects. This package has autoflush=True. I suppose we could add support for setting autoflush=False with an application configuration environment variable, perhaps with an environment variable "SQLALCHEMY_AUTOFLUSH". This isn't currently supported, however.
In the meantime, I think you can retrospectively set the "autoflush" option in kw of the session_cls on the Datastore, after constructing your Application object.
def test_transactions_managed_outside_application(self) -> None:
    app = Application()
    assert isinstance(app.recorder, SQLAlchemyApplicationRecorder)
    app.recorder.datastore.session_cls.kw["autoflush"] = False

    with app.recorder.datastore.transaction(commit=True) as session:
        # Add CRUD objects to the session.
       ...
        # Save an event-sourced aggregate.
        aggregate = Aggregate()
        app.save(aggregate, session=session)

    # Get aggregate.
    self.assertIsInstance(app.repository.get(aggregate.id), Aggregate)

Alternatively, I think you can use session.no_autoflush.
def test_transactions_managed_outside_application(self) -> None:
    app = Application()

    assert isinstance(app.recorder, SQLAlchemyApplicationRecorder)
    with app.recorder.datastore.transaction(commit=True) as session:
        with session.no_autoflush:
            # Add CRUD objects to the session.
            ...
        # Save an event-sourced aggregate.
        aggregate = Aggregate()
        app.save(aggregate, session=session)

    # Get aggregate.
    self.assertIsInstance(app.repository.get(aggregate.id), Aggregate)

Or just set autoflush on the session object.
def test_transactions_managed_outside_application(self) -> None:
    app = Application()

    assert isinstance(app.recorder, SQLAlchemyApplicationRecorder)
    with app.recorder.datastore.transaction(commit=True) as session:
        session.autoflush = False
        # Add CRUD objects to the session.
        ...
        # Save an event-sourced aggregate.
        aggregate = Aggregate()
        app.save(aggregate, session=session)

    # Get aggregate.
    self.assertIsInstance(app.repository.get(aggregate.id), Aggregate)

I haven't actually tested these alternatives for setting autoflush=False, to make sure the session is not actually autoflushed. Looking at the SQLAlchemy code I think it should work. And I have checked that setting it doesn't somehow break the recording of events.

Alternatively, I suppose you could set engine and session_cls on the database object.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(url) : Engine
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
app = Application()
assert isinstance(app.recorder, SQLAlchemyApplicationRecorder)
app.recorder.datastore.engine = engine
app.recorder.datastore.session_cls = SessionLocal
app.recorder.datastore.create_table()

with SessionLocal() as session:
    # Add CRUD objects to the session.
    ...
    # Save an event-sourced aggregate.
    aggregate = Aggregate()
    app.save(aggregate, session=session)

# Get aggregate.
app.repository.get(aggregate.id)

I haven't checked this. But it will probably work!
Please let us know what you find? :-)

Update regarding this:

I haven't actually tested these alternatives for setting autoflush=False, to make sure the session is not actually autoflushed

I now have extended the test, to check the session.autoflush is indeed False.
https://github.com/pyeventsourcing/eventsourcing-sqlalchemy/blob/9bc0600b5b36da349707692042cf577a14a2bafb/tests/test_application.py#L30

Just a quick update: although the above works when calling save(), an application command method that needs to reconstruct an aggregate from stored events will use a different session.
So, firstly I improved the code to have thread-scoped transactions, which means a command will use the same session. In this case, you don't need to pass anything in the the application. You just need to get a session from the application, use it in a with block as a context manger, and then use the application in the normal way. Within the same context, you can add other ORM objects to the session calling application command methods.
However this won't mix very well when using SQLAlchemy integrations with Web application servers that scope the sessions to something other than a standard thread, for example request-scoped sessions.
https://docs.sqlalchemy.org/en/20/orm/contextual.html
https://flask-sqlalchemy.palletsprojects.com/en/3.1.x/
So, secondly I've made it possible to set an SQLAlchemy "scoped session" object on the datastore, for example one created by Flask-SQLAlchemy. In this case, you don't need to use a with block but you do need to commit() or rollback() and then close() the session. If it's an integration with a Web application server that calls close() on the session after the request has completed, then you don't need to do that.

Thank you so much, @johnbywater, for diving so deep into this!
You pointed out concerns I didn't think about yet, e.g. my autoflush choice: I think using autoflush will be fine for my case.
To answer your question: I don't need to manage the transaction myself. It should work fine for me to use the transaction that the datastore can provide, as per your changes.
What I am not clear about:

... an application command method that needs to reconstruct an aggregate from stored events will use a different session.

Why is this a problem? In my understanding it becomes a problem if, due to concurrency, what the application reconstructs is outdated (or a "dirty read" in other ways). I need to understand atomicity and versioning better and I will re-read your documenation on this, which should give me enough clarity. What I am hoping for is that reading via a different session is not a problem, as versioning (and probably checking version numbers on save?) would ensure that the transaction rolls back if there was a concurrent write (or otherwise "dirty read"). Am I thinking in the right direction here?
Thanks again for your elaborate response! I cannot try out your changes immediately, but hope to do so in the next few days.

Hi @Chris927, thanks for your reply.
Great to hear your thoughts about this. You sometimes need autoflush=False if you have interdependent ORM models and some things need to be added so the queries can execute. But mostly I think we don't need that, hence the default value.
Regarding your question, it's a problem for a few reasons: firstly it's just wasteful to have one request using two sessions and so potentially two connections; secondly if there is a static pool it can't work because the second will block; thirdly in the way things are setup with the event-sourced application either committing or rolling back after a "write" transaction exits it's not possible to do anything afterwards because changes will have been committed; and also if the code is run in a Web server that isn't using the standard threading model then sessions could become confused.
I was looking at integrations between SQLAlchemy and various Web frameworks. They all work in slightly different ways, but many of them use SQLAlchemy scope_session objects. It's the same idiom, a with statement constructs a suitably scoped Session and it gets committed or rolled back and then closed at the end of the request. I got it working with Flask-SQLAlchemy and Fastapi-SQLAlchemy. Flask and Django have about 40% each of the "popularity" of Web frameworks, according to last year's Jetbrains survey. The others have much less. However FastAPI does seems to capture a lot of the interest in more recent years. Django has its own ORM so I don't think there's much point integrating Django and SQLAlchemy. But I thought it would be nice to demonstrate how to subordinate an event-sourced application to use SQLAlchemy sessions managed by these integration packages. Because if this package can support that, I think we've got this important aspect more or less covered.

I've added some sections to the docs about this issue:
https://github.com/pyeventsourcing/eventsourcing-sqlalchemy#managing-transactions-outside-the-application
https://github.com/pyeventsourcing/eventsourcing-sqlalchemy#using-sqlalchemy-scoped-sessions
https://github.com/pyeventsourcing/eventsourcing-sqlalchemy#managing-sessions-with-flask-sqlalchemy
https://github.com/pyeventsourcing/eventsourcing-sqlalchemy#managing-sessions-with-fastapi-sqlalchemy
Hope that helps! :-)

I just published v0.7 which has all these changes.
https://pypi.org/project/eventsourcing-sqlalchemy/

Excellent! As I am actually using FastAPI with SQLAlchemy, your instructions perfectly cover my scenario. This will be my path forward.
This resolves my issue, thanks for your amazing assistance!


Update to latest FCL + fmt and CI improvement

Review Error for xenoliss @ 2024-04-22 14:28:27 UTC
User failed mfa authentication, see go/mfa-help


IMPRO-278 - Single level output from wind downscaling.

Adds optional single level output to the wind-downscaling CLI. This makes use of the cube_extraction code found within improver utilities.
New acceptance tests added. No new plugin code written, so no further unit tests required.
IMPRO-278 / #241
Testing:

[x] Ran tests and they passed OK
[x] Added new tests for the new feature(s)

I've also renamed all the bats test files to a ##-<filename_format> as opposed to ##_<filename_format> (hyphen separating number, rather than underscore). This makes it fit with the majority of other bats tests.

Acceptance test data path added to Jira ticket.

I've also added a test for the unit conversion. As it's a float comparison, it does not like going from m to km (the division leading to precision error differences), but m to cm is fine. This float comparison issue is a part of the extract plugin, so not part of this work.


links to sections on github with emoji in the heading are broken

# ⭐ My Fancy 💅 Heading is assigned an anchor id of -my-fancy--heading but markdown-toc generates an id containing character escapes instead.

@chriseppstein if you're using markdown-toc through the api, you can pass an optional slugify function on options. This one works for this case, but I'm not sure if it'll work for other cases:
const slugify = (title) => {
  return [...toc.slugify(title)]
    .reduce((acc, ch) => {
      if (ch.charCodeAt(0) > 255) {
        return acc;
      }
      return acc + ch;
    }, '');
};

Since we're already doing replaceDiacritics, I wonder if we could do replaceUnicode (I think that's what would it would be called).

This also affect READMEs as displayed on npmjs.com - they follow the GitHub convention of stripping emoji from IDs.


Print message when no kube config provided

ExecuteMultiCluster silently returns if no kube configs were provided - print a message instead.
Fixes https://github.com/submariner-io/submariner-operator/issues/1944

The PR/Issue scrub is ambivalent about the need for this backport, low risk but low reward. Fine to backport if you want @tpantelis.

Do we still want this for 0.12.2?


add pcbs notebook benchmark

Signed-off-by: liyuan<EMAIL_ADDRESS>add PCBS notebook benchmark

we can ignore the link-checker error, they are not broken.

The instructions aren't clear after running jupyter notebook
It opens a web page with my home folder but doesn't tell me what to do next. Can we add instructions on what the user is supposed to do after running the notebook to run the benchmark?

The instructions aren't clear after running jupyter notebook
It opens a web page with my home folder but doesn't tell me what to do next. Can we add instructions on what the user is supposed to do after running the notebook to run the benchmark?

@razajafri thanks, add two charts to make it more clear

@razajafri from the guide I request customers to build the jar, this might cause problems for customers; but if I run the benchmark base on dist plugin jar, I have to import some class like this:
import spark311.org.apache.spark.sql.rapids.GpuInMemoryTableScanExec

if customers run on spark312, customers need to change the notebook code. I am not sure if there is a perfect approach to fix this.

@razajafri @sameerz  we should not request customers to build the plugin jar for an example, we should use the dist plugin jar, but if we use dist jar, ParquetCachedBatch cannot be access by the application code which means that we can not import spark3xx-common.com.nvidia.spark.rapids.ParquetCachedBatch, is it possible to expose this class?

@razajafri  is there anyway to test using our GA jar?

@razajafri is there anyway to test using our GA jar?

For now, we have no reason to expose ParquetCachedBatch. This is a benchmark that people can run and asking them to build is probably not a stretch IMHO.

@nvliyuan I ran the PCBS-benchmark.ipynb but I don't see any output or any mention of where to find the output of the script

@nvliyuan I ran the PCBS-benchmark.ipynb but I don't see any output or any mention of where to find the output of the script

The output can be found in the last output cell.

Add a comment in README.md to make it more clear.

For now, we have no reason to expose ParquetCachedBatch. This is a benchmark that people can run and asking them to build is probably not a stretch IMHO.

Is there a way we can import the ParquetCachedBatch class in notebook without building a jar?

close since it is not a benchmark


Updates tsp init to generate .gitignore file

Fixes https://github.com/microsoft/typespec/issues/3262
This adds a new confirmation prompt to tsp init to generate a .gitignore file. Defaults to yes (true).

All changed packages have been documented.

:white_check_mark: @typespec/compiler

Show changes
@typespec/compiler - feature ✏

Adds option to tsp init to generate .gitignore file

You can try these changes at https://cadlplayground.z22.web.core.windows.net/prs/3751/
Check the website changes at https://tspwebsitepr.z22.web.core.windows.net/prs/3751/


Dynamic access to classes

I would like to emulate the following in ReasonML but records can't be accessed dynamically like in JS
const expandedClass = expanded ? 'open' : 'closed'

Is there a way I can dynamically select one of the Style Class Records? Would they need to be Js.Dict.t instead?
I've resorted to inline styles for the dynamic styling I need.
Thanks

Hi, couldn't you just do:
let expandedClass = expanded ? classes.open : classes.closed;

I assume you mean the styles record coming from the ppx, correct?

Sorry I should have given a more complete example.
I was making composable helper functions like makePassClass(item)(score->getPassRate) to get a variety of different classnames that I was going to use to access the classes rowGreen, rowOrange, rowRed, cellGreen, cellOrange, cellRed, ....
After posting my question I starting moving in the direction you suggest as well. It's not quite as composable but it will do the trick. I need to pattern match per (row, cell). I suppose they could be combined using a tuple.
let getRowClass(classes, score->getPassRate) =>
  switch (rate) {
  | Fail => classes.rowRed
  | Pass => classes.rowOrange
 ...};

let getCellClass(classes, score->getPassRate) =>
  switch (rate) {
  | Fail => classes.rowRed
  | Pass => classes.rowOrange
 ...};

Anyway thanks for the response.

No worries, thanks for the explanation!


Could not find an option named "sourcemap".

When starting "gulp sass" or "gulp sass-minify" I get the following error. Which sass Version do I have to use to build those files correctly? Why is sass not installed with package.json?
npm install -g sass
/usr/local/bin/sass -> /usr/local/lib/node_modules/sass/sass.js
/usr/local/lib
└──<EMAIL_ADDRESS>
[21:00:51] Using gulpfile ~/Dev/gentelella/gulpfile.js
[21:00:51] Starting 'sass'...
[21:00:51] Could not find an option named "sourcemap".
[21:00:51] Usage: dart-sass <input>

    --[no-]stdin    Read the stylesheet from stdin.
-s, --style         Output style.
                    [expanded (default), compressed]

-c, --[no-]color    Whether to emit terminal colors.
    --[no-]trace    Print full Dart stack traces for exceptions.
-h, --help          Print this usage information.
    --version       Print the version of Dart Sass.
[21:00:51] Finished 'sass' after 424 ms

Strange I did not get such things @klein0r :thinking:  Can you test if it happens with my fork ?

Okay, I understand why it's happening ... I installed sass with gem globally ...

# sass -v
Sass 3.5.5 (Bleeding Edge)

Thanks a lot :) Should be added to documentation to do that 👍
[21:18:42] Using gulpfile ~/Dev/gentelella/gulpfile.js
[21:18:42] Starting 'sass'...
[21:18:42] directory ./
[21:18:43] write ./app.css
[21:18:43] Finished 'sass' after 1.7 s

Hello there ..
I have the same error for two weeks almost i'm trying to fix this error
I tried the same steps but can't be resolved

May I ask how did you installed sass ?

Hi,
I am getting the same issue, details are given below:
sass version: 1.5.1 compiled with dart2js 2.0.0-dev.59.0
could you please help me?
Thanks

Hi,
Had the same issue. I had installed npm sass globally for another project.
npm uninstall -g sass
Everything was working again as mention above.
Thanks.

I find simple step:
1.Run npm install gem command.
2.Run gem install sass command.
ok.

" gem install sass "  fixes all issue!


Incorrect training loss scaling factor in examples/run_classifier.py?

In examples/run_classifier.py, the overall 'loss' is produce as 'tr_loss/global_step' (instead of 'tr_loss/nb_tr_steps'). Is this behavior correct? @mprouveur made the change in this commit.
I'm wondering as 'global_step' is never reset after a training epoch, while tr_loss is reset every training epoch. So even if 'tr_loss' remains constant, 'loss' will decrease over more training iterations, given the increasingly large denominator ('global_step').
If this is correct, maybe the 'nb_tr_steps' variable should be removed? It looks unused throughout the code currently.
At any rate, it's only a 2-line fix, and it only affects the logging behavior I believe.

You are right Ethan.
I'm refactoring the examples which were a bit rotten, let's include this fix as well.

Great! Either way the examples are a great starting point :)
I'm also wondering if tensorboard is only logging the training loss for the last forward pass for a batch (if several are required / when using gradient accumulation)? A fix would be to maintain and log a variable tr_batch_loss (similar to tr_loss) for each full training batch (reset after each parameter update).


Issue with single line comments

What steps will reproduce the problem?
1. CSS with // Comments
2. Right Click and Minimize CSS
3. Output has anything after comment commented out

What is the expected output? What do you see instead?
Expected to remove comments and leave only minimized code.
Comments are left and comment out remaining code.

What version of the product are you using? On what operating system?
 2.0 in Netbeans 8.0 on Windows 8.1

Please provide any additional information below.
I know I could simply use /* Comment */ but my CSS is heavily commented and it
could be more efficient if it removed comments completely

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 11 Aug 2014 at 5:04

As mentioned, css doesn't have single line comment. It is not a correct syntax. Doesn't matter whether the IDE shows it correct as a comment. Just use a linter for this example // Test body {color:#fff;} http://csslint.net/ and you will see, that this is wrong.

As I said, please use supported CSS multi line comments /* ... */ but as a workaround you can use // blaaa {} so you need this brackets at the end. But with no guarantee what will break then. It is better to always use the correct syntax.


[docs] Improved first-app documentation.

Docs link: https://deploy-preview-3416--mui-toolpad-docs.netlify.app/toolpad/studio/getting-started/first-app/
I have kept the same info about building an interactive dog app, as I think it is easy to follow. Highlighted actions in the images and did some minor edits.

Not sure why Vale isn't flagging this, but let's remove all the "We"s and any other first-person plurals in the guide: https://github.com/mui/material-ui/blob/next/.vale.ini#L18

The point of improving it is to ensure users reach the end goal faster by helping them quickly see the desired actions. IMO, a simple app that touches on the basic and most used features of Toolpad should be good.

The point of improving it is to ensure users reach the end goal faster by helping them quickly see the desired actions. IMO, a simple app that touches on the basic and most used features of Toolpad should be good.

I think the app should probably try and at-least attempt to solve a real world use case. Would someone look at the dog app and be like, okay I can use this for my problems? We need to be able to demonstrate that investing the effort of downloading and running Toolpad locally is worth it, and for that the first app is our pitch, given that this is the page linked on from the landing page. Why not replace this with a PDF generator, or a basic admin app, or a simple dashboard?


Describe volume

Following are the changes

Added describe volume command
Lots of common code (between get volumes and describe volume) moved to pkg/portworx
Added UTs for the common code I added in pkg/portworx. As part of this added a json file for creating objects in the pkg/portworx. This is a large file but is mainly a data file, so can be ignored during review.
Added UTs for describe volume.
Added pkg/proto/time/prototime.go and pkg/sched/intervals.go. These 2 files are from libopenstorage.
Added github.com/dustin/go-humanize to vendor
Modified copyright to Portworx

So the main files that need review are

cmd/getVolumes.go
cmd/describe.go
cmd/describeVolume.go
cmd/volumeFormatter.go
pkg/portworx/pxVolumeOps.go
pkg/portworx/volumeCommon.go

UTs added are

cmd/describeVolume_test.go
pkg/portworx/pxVolumeOps_test.go
pkg/portworx/volumeCommon_test.go

Are some of the files copied from another project?

2 files

pkg/proto/time/prototime.go
pkg/sched/intervals.go

are copied from libopenstorage

Part of Issue #18


Add blurb copy

Following the invitation in Behind the Scenes newsletter, my try at a config.json blurb field.

It definitely sounds inviting!


CDS-79664-fg-ng-videos

https://harness.atlassian.net/browse/CDS-79664
Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ x] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

https://harness.atlassian.net/browse/CDS-79664

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


Updated README.md File

Added Basic Data Types Problem Link and Solution Link in README.md
Issue Number:
This submission will close the issue #10
Submissions Checklist:

[x] Have you followed the guidelines in CONTRIBUTING.md?
[x] Have you checked there aren't other open Pull Requests for the same hackerrank problem?

[x] Is your file name exactly same as the problem name of hackerrank, followed by the proper extension?
[x] Have you ensured that you have put the files in appropriate folders? (Folders are made according to the subdomain of hackerrank practice problems).

Hacktoberfest Contributor:

[x] Are you a hacktoberfest contributor?

Hackerrank Problem Link:
https://www.hackerrank.com/challenges/c-tutorial-basic-data-types/problem
Submitted Hackerrank Solution Link:
https://www.hackerrank.com/challenges/c-tutorial-basic-data-types/submissions/code/293555423
Any other changes you made or something you would like to mention?
NA

Hey, @Sowham-3098 This branch has conflicts. I'll update the README.md myself. No worries👍


(v14) pg_stat_database new fields

Beyond pretty graphs, I'm wondering if some of these new fields could be really useful.
Perhaps sessions, sessions_fatal and sessions_killed ?
 * session_time
 * active_time
 * idle_in_transaction_time
 * sessions
 * sessions_abandoned
 * sessions_fatal
 * sessions_killed

PR #308 added various stats from these fields.
There's no thresholds supported on them yet, because we couldn't find any important one (see #305 and #308). This is mostly a service providing some useful performance metrics.
If anyone want to argue here, please do before we close this issue.

Can we close this issue ?


[1.10.x] fix double click prevention when client validation

If you click on submit but the form is not submitted because of client validation, then you can't submit anymore.

Fixes https://github.com/OrchardCMS/Orchard/pull/6766

As i've tested, it releases the formSubmitted lock (implemented here) after 1 second.
So, if you click i.e Publish and you are still in the same edit form because of a client validation checking, the you can correct your input and retry a publish action.

Isn't there a way to not disable the button if the form is not submitted? Not sure if you are an expert at JAvascript, we might have to ask one's opinion ...

I agree

I am currently working on it getting some tips from gurus.

I am interested to know the final solution. Here i just fixed the current implementation, maybe we have better to use the submit event directly.

@sebastienros
Just tried with the submit event, seems to work by replacing this:
$("form button[type='submit'], form input[type='submit']").click(function (e) {

with:
$("form").submit(function (e) {

And now without the setTimeout() call.
Best.

Just by curiosity i've done additional tests, then i let you investigate.
So the solution to use the submit event (see below) without setTimeout() seems to work. But, if a submit is done i.e through jquery without refreshing the page, then the submit lock will persist. Or without hitting at all the submit event.
$("form").submit(function (e) {
    if (!!this.submitted) {
        e.preventDefault();
        return;
    }
    this.submitted = true;
});

So, maybe better to filter by using the click event of the submit button as before. And the only way i've found to fix the issue is by using setTimeout().
$("form button[type='submit'], form input[type='submit']").click(function (e) {
    var form = $(this).closest("form")[0];
    if (!!form.submitted) {
        e.preventDefault();
        return;
    }
    form.submitted = true;
    setTimeout(function () {
        form.submitted = false;
    }, 1000);
});

Best.


ResellerConfiguration API (Post) is not working for "Specific partners in the CSP program I select"

https://ingestionapi-swagger.azureedge.net/#/ResellerConfiguration/post_products__productID__resellerConfiguration
I want to configure the below using rest api provided in swagger:
I am not sure how to do this. However I am successfully able to do the rest 2 below options. Any partner in the CSP program
No partners in the CSP program
Please provide help for how to do "Specific partners in the CSP program I select" using rest api.
Thanks

My API Curl request is:
curl --location 'https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxxxxxxxxxxxxxx/resellerConfiguration'
--header 'Content-Type: application/json'
--header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
--data '{
"resourceType": "ResellerConfiguration",
"resellerChannelState": "Disabled",
"tenantIds": []
}'

Hi, Please find these:
https://arsenvlad.medium.com/using-partner-center-ingestion-api-for-managing-azure-application-offers-in-azure-marketplace-b47b290dd947
https://ingestionapi-swagger.azureedge.net/#/ResellerConfiguration/post_products__productID__resellerConfiguration

@g7crservice-harshita-gupta
Please Note, GitHub forum is dedicated for Microsoft documentation related issues. So kindly share Microsoft document link which you are following for these steps.

https://learn.microsoft.com/en-us/partner-center/marketplace/product-ingestion-api-saas

@varsha-sarah
Can you please check and add your comments on this doc update request as applicable.


Any way for links to open on a new tab?

Tried adding {:target=”_blank”} but didn't work

Personally I use this trick (I commented which is useless here):
// Place in header (do not use async or defer)
document.addEventListener('readystatechange', event => {
  switch (document.readyState) {
    /*
    case "loading":
    console.log("document.readyState: ", document.readyState,
      `- The document is still loading.`
    );
    break;
    */
    /*
    case "interactive":
      console.log("document.readyState: ", document.readyState,
        `- The document has finished loading DOM. `,
        `- "DOMContentLoaded" event`
      );
    break;
    */
    case "complete":
      /*console.log("document.readyState: ", document.readyState,
        `- The page DOM with Sub-resources are now fully loaded. `,
        `- "load" event`
      );*/
      links = document.links;
      Array.from(links)
        .filter(link => link.hostname != window.location.hostname)
        .forEach(a => Object.assign(a, { target: "_blank", rel: "noreferrer" }));
      /* All current versions of major browsers now automatically use the behavior of rel="noopener" https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer */
      break;
  }
});


Why do we need to set undefined on the properties for the mapper to work?

And could we have it so we don't have to do this?
That would be nice(r) 😃

You can assign any value you'd like. It can be null, the initial value or undefined.
It is only possible to drop the initial assignment if we worked with reflection methods (see pull request). We did not implement this yet; one of the reasons is that we like the fact that no dependencies are needed as of now.

What pull request is it.
Not having to manually assign value to the variable for all properties of all objects against having one dependency I personally would prefer to have the dependency :)
Thanks for your answer. I hope this PR will be merge soon :+1:

I understand - it depends on your structure.
In general, I suppose typing the decorators already needs some work, so it does not hurt much more to initialize the properties.
I will look at the PR for sure, but there are other priorities at the moment unfortunately. And we don't wanna break anything for the hundreds of users our library already has!
FYI, I'll go ahead and close this issue as it is already covered by the PR.


Update Blog “die-gute-nachricht”

Automatically generated by Netlify CMS

👷 Deploy Preview for famous-kulfi-ae21db processing.

Name
Link

🔨 Latest commit
66695d99aec6ee3a9a3115cd19e02b271a3e6871

🔍 Latest deploy log
https://app.netlify.com/sites/famous-kulfi-ae21db/deploys/65841cdee1cbb60008f7b999


Install on Debian(ARM64)

I'm following the steps on my Debian ARM64 board:
sudo apt install software-properties-common
sudo add-apt-repository ppa:armnn/ppa
sudo apt update

always failed with

E: The repository 'http://ppa.launchpad.net/armnn/ppa/ubuntu impish Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

is this the reason that armnn does not support Debian ARM64? or other suggestion?

this is my system info:

cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Hi @shaojun,
If you want to crosscompile for Debian ARM64 you can follow:
https://github.com/ARM-software/armnn/blob/branches/armnn_21_08/BuildGuideCrossCompilation.md
The 20.08 release of ArmNN is in the Debian Archive for Bullseye, we are planning to upload the latest release to Debian Testing/Bookworm soon but it will take some time for it to be accepted.
https://packages.debian.org/source/bullseye/armnn
You could also add-apt-repository ppa:armnn/ppa to the Debian 11 Bullseye board and then edit the /etc/apt/sources.list of the board so that the suite for the armnn ppa is focal. That should workaround your error:
"E: The repository 'http://ppa.launchpad.net/armnn/ppa/ubuntu impish Release' does not have a Release file."
Also having deb [trusted=yes] at the start of that line will stop the ppa from being disabled:
"N: Updating from such a repository can't be done securely, and is therefore disabled by default."
So your /etc/apt/sources.list file should have a line like this:
deb [trusted=yes] http://ppa.launchpad.net/armnn/ppa/ubuntu focal main
This might also be in a file called something like this instead, depending on your distro:
/etc/apt/sources.list.d/armnn-ubuntu-ppa-focal.list
This is a workaround however so be sure to backup or be able to re-flash your board if necessary.
Thanks,
Francis.

Hi @shaojun
I believe this issue has been resolved so I'm going to close the ticket now if you have any further questions then please open a new issue. Thanks!
Best regards,
Mike


URI of epidoc schema

Not urgent.
In our templates and existing files, the link to the EpiDoc schema is given as http://www.stoa.org/epidoc/schema/latest/tei-epidoc.rng, which has for some time been causing errors, as nothing can be found at this URI. I know that some of us have commented out the instruction to invoke the EpiDoc schema to get rid of the error messages.
But actually, it seems that the new location of the schema is https://epidoc.stoa.org/schema/latest/tei-epidoc.rng and the errors were not because the epidoc server was down, but because the old address is deprecated.
So I suggest changing the URI in the templates and in all existing files. (I have done this in the VengiCalukya, BadamiCalukya and Siddham subcorpora)

I have updated the uri

It would be useful to set up a URL that redirects to the EpiDoc schema and to use this new URL instead of https://epidoc.stoa.org/schema/latest/tei-epidoc.rng. The extra indirection makes it possible to change the schema to be validated against by editing a single record instead of ~2000 files.
We don't have a server for now, but I can use the services from archive.org and create URLs of the form https://purl.archive.org/foo/bar.

Thanks, Axelle.
Michaël, I don't think the EpiDoc team is going to make a habit of changing the URI. To be honest, I'm not even sure they changed it this time; my impression (which may be wrong) is that  https://epidoc.stoa.org/schema/latest/tei-epidoc.rng has always, or for a very long time, been the URI, and http://www.stoa.org/epidoc/schema/latest/tei-epidoc.rng was rather an alias that is now discontinued. But even if that's not so, I think for the sake of posterity it's better (more transparent) if we use the address at stoa.org.


fully incorporate id(this) into JDQL

A proposal, in case we want this in 1.0.

@gavinking could you rebase this one?

I will, but we have not decided to do it yet.

@gavinking can you rebase this one, please?

@gavinking can you rebase this one, please?

Yep, done.


Added SEO & Metadata Tab

What is this PR?
Added the SEO & Metadata tab to the Page page type as is created by default in new Slice Machine projects.
Changes Made
Dependent on #6
Have updated the repository, templated the fields and added the updated documents to the documents folder.
Testing Done
I have tested this in localhost and by installing as a new starter project.

Merged in https://github.com/prismicio-community/nextjs-starter-prismic-minimal-ts/commit/148f7f7d155e12298efe48b3f1f9f08f8dd4a320


Add substitute_node_with_subgraph method to PyDiGraph

This commit adds a new method substitute_node_with_subgraph that takes
in a node id and a PyDiGraph object and then procedes to replace the
specified node with the subgraph.
TODO:

[x] Add tests
[x] Add release notes
[x] Verify functionality for use with qiskit-terra's substitute_node_with_dag

Pull Request Test Coverage Report for Build 786893847

1 of 225 (0.44%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-3.2%) to 92.898%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/digraph.rs
0
79
0.0%

src/iterators.rs
1
146
0.68%

Totals

Change from base Build 786893432:
-3.2%

Covered Lines:
6331

Relevant Lines:
6815

💛  - Coveralls

Ok, I've updated this and I think it's ready for review now. There is a matching terra PR which shows this in use: https://github.com/Qiskit/qiskit-terra/pull/6302

I think that the node index ordering of the substituted graph needs to be explicit in the documentation.
For instance, I have the original_graph being

and the other_graph being

using substitute_node_with_subgraph on node 2, we get

All new nodes start at the max value of the 'original_graph` node index, but this is not explicit in the documentation. Or maybe it could be useful to reindexing all nodes or even giving the choice for the user to choose the index of the added nodes.
Here is the code to reproduce what I said:
import retworkx
from retworkx.visualization import mpl_draw
original_graph = retworkx.generators.directed_path_graph(5)
other_graph = retworkx.generators.directed_path_graph(2)
original_graph.substitute_node_with_subgraph(2, other_graph, lambda _, __, ___: 0)
mpl_draw(original_graph, with_labels=True)

This is unavoidable because we can't preserve the indices between the 2 graphs as there might be overlap and we're essentially just calling add_node() for each node in the graph. But this is why the return from the function is a custom mapping class of old node indices in other_graph to it's new index in original_graph so you can run this and then use that dictionary I will try to improve the documentation around this to make this clear.

Sure, that makes sense. I forgot about the return, sorry about that.


preload_models.py downloads gfpgan model even if it exists

Thanks so much for what y'all are doing! Really loving this fork.
Describe your environment

GPU: mps
CPU arch: arm
OS: macOS
Branch: development

Describe the bug
Starting with this pull request: https://github.com/lstein/stable-diffusion/commit/31daf1f0d794cac1eba526d2e4c17fc8ea1f4867
preload_models.py downloads GFPGANv1.3.pth even if the file already exists. If the file already exists, can we skip that step? Pulling 350MB is a little painful over airplane wifi, heh.
To Reproduce
Steps to reproduce the behavior:

Run preload_models.py, which causes the file to download. Note the date/time on the file.
Exit the terminal, go back in.
Run preload_models.py, note that the download is kicked off again with a new date/time on the file.

Expected behavior
Skip the download if the file already exists.

Right. I'll fix that.

Just committed a fix. Should go into development soon.

You rock! Thanks!


[5.0.0 beta.51] Closing the application entirely on pressing back button of device.

Description of  the bug
I am using get: 5.0.0 beta.51 version and it is overriding my WillPopScope widget commands and also when user presses the device back button it simply closes the application instead of closing the current screen.
Flutter Version:
2.10.3
Getx Version:
5.0.0 beta.51
Describe on which device you found the bug:
ex: Infinix - Android, Vivo-Andriod

@AyeshaIftikhar did you found a solution yet?

@thailocnexle
No, I did not find any solution. I just downgraded to the last stable version of the package.

same behavior with Flutter 3 and Getx beta version 5.0.0.beta.51... willpopscope is not getting called when device back button is clicked

Hi, I had the same problem as you reported. But I realized that it was an error when implementing the routes in the application
Example: I have this code in my application
    GetPage(
      name: /home,
      page: () => const HomePage(),
    ),
  GetPage(
      name: /homedetails,
      page: () => const HomeDetails(),
    ),

Se voce tentar navegar apartir da home  para homedetails, na hora de voltar com o botao fisico ele voltaria para sua rota inicial '/'
Get.rootDelegate.toNamed( '/homedetails');

For your app to work, you need to tweak a few things that worked for me. So I believe it must be correct.
    GetPage(
      name: /home,
      page: () => const HomePage(),
    children:[
     GetPage(
      name: /homedetails,
      page: () => const HomeDetails(),
    ),
    ] ),

For navigation:
Get.rootDelegate.toNamed( '/home/homedetails');

same issue😭

same issue in 5.0.0-beta.52

Since navigator v2 is not documented it's pertubating for a lot of poeple
But history does not work as you may expect.
Default history mode will go back a slash. So if your route is /home for example and you hit the back button there is no more slash to go back then the application closes.
Did you use something like:
await Get.rootController.rootDelegate.popRoute(popMode: PopMode.history);

You can still try to downgrade to 4.6.5 or 4.6.1 which is the most stable version.
Be aware that without a minimal reproduction code nobody can help you...

Duplicate #2554 #2542
It was a simple logic error, you must return false to "discard" willpop and use Get.back() to navigate backwards, it will not navigate to previous route if there is no previous route.
So your app can now go forward in the route stack and back as long as there is some route for it to come back.
/// DR.Ahmed_Ragab debugging project
/// edit Kauê Murakami
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  ///This is working
  // runApp(const MainApp());

  ///This is not working
  runApp(const GetMainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Screen1(),
    );
  }
}

class Screen1 extends StatelessWidget {
  const Screen1({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        print(Get.routeTree.routes.length);

        print("MoveToBackground 1");
        return true;
      },
      child: Scaffold(
        body: Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('Screen1'),
            ElevatedButton(
              child: const Text('Screen2'),
              onPressed: () {
                Navigator.of(context)
                    .push(MaterialPageRoute(builder: (_) => const Screen2()));
              },
            ),
          ],
        )),
      ),
    );
  }
}

class Screen2 extends StatelessWidget {
  const Screen2({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        print(Get.routeTree.routes.length);
        Get.back();
        print("MoveToBackground 2");
        return false;
      },
      child: Scaffold(
        body: Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('Screen2'),
            ElevatedButton(
              child: const Text('Screen1'),
              onPressed: () {
                Navigator.of(context)
                    .push(MaterialPageRoute(builder: (_) => const Screen1()));
              },
            ),
          ],
        )),
      ),
    );
  }
}

class GetMainApp extends StatelessWidget {
  const GetMainApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      initialRoute: '/s1', popGesture: false,
      defaultTransition: Transition.fade,
      getPages: [
        GetPage(name: '/s1', page: () => const GetScreen1()),
        GetPage(name: '/s2', page: () => const GetScreen2()),
      ],
      // home: Screen1(),
    );
  }
}

class GetScreen1 extends StatelessWidget {
  const GetScreen1({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        Get.back();
        print("MoveToBackground 1");
        return false;
      },
      child: Scaffold(
        body: Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('Screen1'),
            ElevatedButton(
              child: const Text('Screen2'),
              onPressed: () {
                Get.toNamed('/s2');
              },
            ),
          ],
        )),
      ),
    );
  }
}

class GetScreen2 extends StatelessWidget {
  const GetScreen2({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        print("MoveToBackground 2");
        return true;
      },
      child: Scaffold(
        body: Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('Screen2'),
            ElevatedButton(
              child: const Text('Screen1'),
              onPressed: () {
                Get.toNamed('/s1');
              },
            ),
          ],
        )),
      ),
    );
  }
}

same behavior with Flutter 3 and Getx beta version 5.0.0.beta.51... willpopscope is not getting called when device back button is clicked

try BackButtonListener


Faked function of mocked contract not working when called by other function

Describe the bug
Faked function of mocked contract not working when called by other function
Reproduction steps
Let suppose we have a contract C, which has two functions, F1 and F2, where F1 returns the value of the passed parameter, and F2 calls to F1 and returns the corresponding result:
contract C{
  function F1(uint 256 x) public pure returns (uint256 r){
    r = x;
  }
  function F2(uint 256 x) public pure returns (uint256 r){
    r = F1(x);
  }
}

Then we create a mocked instance cM of contract C, and we set F1 to return always 0:
const C = await smock.mock('C');
const cM= await C.deploy();
cM.F1.returns(0)

Then if we call function F2 with any x value, it should return 0:
assert(await cm.F2(10)).eq(0)

But the test above fails and it is returned 10 instead of 0.
Note that the following works as expected:
assert(await cm.F1(10)).eq(0)

Expected behavior
In the explained scenario above: the call to the function F2 with any value as a parameter, should return 0.
Screenshots
NA
System Specs:

OS: Ubuntu 20.04
Package Version (or commit hash): 2.2.0

Additional context
NA

I am facing the same issue, can we expect a fix? This has been open for a long time now.


Replace No Clip with Collision Mode, adding "opaque" mode

Adds a new "Opaque" collision mode, requested in #55. This mode allows FreeCamera to clip through any material that doesn't block light (Material.blocksLight() == false).
Replaces No Clip with the "None" mode. The "All" mode functions the same as disabling No Clip.
If Material.blocksLight() leads to false-positives we could manually curate a transparent block list or find some alternative method of deciding. In my testing it worked intuitively. EDIT: some light emitting blocks seem to be false positives...
I've removed the No Clip translation strings, but I've only added English strings for Collision Mode as I don't speak Italian or Chinese.
This PR will likely have merge conflicts with my other recent PRs, so I'll have to rebase whichever stays open longer.
Closes #55

Not sure if it's best to have "Collision Mode" configuring which blocks are collided with, or "Clipping Mode" configuring which blocks aren't... Or maybe there's another alternative name?
If inverted to "Clipping Mode" then "Opaque" would be renamed to "Transparent", which might be more intuitive... Maybe?

I'll try and rebase this later. I think I'll have to rethink some things so this doesn't interfere with initial perspective's collision checks.

Rebased, still need to investigate Initial Perspective compatibility...

@hashalite ready for review.

Fixed compatibility with "Initial Perspective", made it so that "Always Check Collision" only overrides "ignore all", rather than also overriding "ignore transparent"... thoughts?
Replaced the Material.blocksLight() check with CollisionWhitelist.isTransparent(Block) since I was getting false-positives with light-emitting blocks, etc.
Added an additional mode "Doors, etc" (IGNORE_OPENABLE) which ignores collision of all doors, trapdoors and fencegates.

Tempted to add an IGNORE_TRANSPARENT_OR_OPENABLE but worried that'd start to clutter the config menu... thought?

Decided it makes more sense to separate each "mode" into its own boolean option, that way they can be used simultaneously. Additionally it means each option can have its own tooltip. There's also less clutter at the top of the config menu.
Considering whether ignoreAllCollision and checkCollision should be combined into an enum? e.g. {INIT,  NEVER, OFF}?

Screenshots

The original version, for comparison:

Finally come up with a config that makes some sense to me. Used @CollapsibleObject to make a "Collision Settings" sub-menu:
https://user-images.githubusercontent.com/5046562/222915642-dc428991-8cc9-4e3d-b7bf-74b9c53c56fe.mp4
Also squashed everything down, went over the option names and tooltips and updated the commit message.
Ideally, we'd have some collision options disabled automatically when they are redundant, but without https://github.com/shedaniel/cloth-config/issues/26 there isn't a simple way to achieve that.

This looks great, however I am kind of reluctant to merge right now because of the changes I would have to make to the Modrinth branch. In order to comply with Modrinth's rules, it disables NoClip whilst in multiplayer, and I'm not yet sure how I would handle these new settings when merging. I could just disable all of them when in multiplayer, but there is a chance that clipping through transparent blocks fits within the rules. I would have to check with Modrinth's team to be sure.

In order to comply with Modrinth's rules, it disables NoClip whilst in multiplayer, and I'm not yet sure how I would handle these new settings when merging.

Disabling all of the ignore collision option would be the safe option.

There is a chance that clipping through transparent blocks fits within the rules. I would have to check with Modrinth's team to be sure.

👍 Sounds good. Can always enable specific options later on if they're ok with them.

Is integration with the modrinth branch the only thing blocking this PR?
I don't see the issue with maintaining the current behaviour in the modrinth/multiplayer scenario. As per this suggestion.
We won't have lost anything by also disabling the new modes if we're unsure of their compliance.
If we later discover that some modes do comply, that would be a simple PR to enable them.
Let me know if you have any other concerns 🙂

I was a bit concerned with how cluttered the config screen is getting, but on second thought I think the collapsible category looks good enough. I will go ahead and merge. Thanks again!

As mentioned in this comment, the config screen is starting to get a little busy and if we're not careful it could soon be overcrowded and confusing.
This inspired me to begin work on https://github.com/shedaniel/cloth-config/pull/195, but in the meantime it might be a good idea to consider how the current config could be improved.
Perhaps we could make use of tabbed category pages, collapsible sub-categoried (either expanded or collapsed by default) and other config entry types?
In the future we could also make use of dependencies to hide/disable some options when relevant.


Ratelimit

Add a ratelimit to commands to prevent spam. Will most likely be ~2-3 seconds

Fixed by 755afc1.


about window.Vue

Read your src, you usewindow.Vue as a basis for deciding whether to use vue.js，
But...my project usual not mount Vue on window.
I hope you can write this into ReadMe as tips.

Hi @Hilbertangers, our Vue.js documentation lives here:
https://docs.bugsnag.com/platforms/browsers/vue/
With regard to your question, Vue should be passed in, but if it isn't we check to see if it exists on the window as a fallback. Hope this helps!


FIX / Config

Fix config panel in the English version, also replace the word "not enable" to disabled for more localized experience

LGTM, ty!


unreadModel: Handle moving messages between topics/streams.

Fixes #4840.

FYI I've just sent #5155; it might be convenient for that to be reviewed/merged before this.

I've just pushed a revision of this PR, rebasing atop the API types from #5155 and applying my comments above. @chrisbobbe please take a look!

Thanks for the review!
I applied some of the test-name suggestions, but left out the "(and not stream)" ones; I think it's generally fine for the test names to highlight the thing that does happen and leave implicit that other things that would be interesting don't happen.
The revision is only in comments and test names, so going ahead and merging.


Is there any way to extend from GridItem?

We have some fairly deeply-nested component sets, and it would be nice to just be able to extend from GridItem.
I see there is a LOT of functionality in there, along with large data and props lists.
Not sure if this data and logic could be moved to a service instance which would allow the main component to be less cluttered?
<!-- view -->
<card :grid-layout="{x:1, y:2, ... }"> ... </card>

// Card.vue
import { GridItem } from 'vue-grid-layout'
export default {
  extends: GridItem
  ...
}

// GridItem
export default {
  props: {
    gridLayout: Object
  },
  data () {
    return {
      gridService: new GridItemService(this.gridLayout)
    }
  },
  mounted () {
    this.gridService.start()
  }
  ...
}

If the "doing" code was a separate component, then maybe you could use it as a directive to make any component useable in a grid without wrapping it?
<widget v-grid-item="{x:1, y:2, ... }" />

Just a suggestion to decouple the extra component from the stack.

Not sure I understand your problem...doesn't using dynamic components fixes that problem for you?


Let's choose a logo

Snabbdom is very fortunate that several potential logos have been designed and proposed. The goal of this thread is to figure out which logo the community prefers through a vote.
How to vote
If you prefer the first logo please react to this post with a ❤
If you prefer the second logo please react with a 🎉
If you like both logos feel free to vote for both of them.
The first logo was designed by @grimalschi. The shape contains an "S" surrounded by two brackets. The brackets aptly symbolize HTML/DOM which Snabbdom manipulates. The overall shape looks like a diamond that slightly resembles a Superman-like shield in a very cool way. The logo is flat but has a subtle gradient that adds a bit of depth.

The second logo is by @acstll. Through a combination of soft curves and a few hard edges an "S" is formed in a mesmerising way. The two pieces of the logo may represent the two structures that Snabbdom works on in the patch process: an old vnode tree and a new vnode tree. The circulair shape can be seen as symbolising the iterative process of virtual DOM library where one patch is continously applied on top of an earlier patch.

I think both logos are really nice and have some great qualities. A huge thank to both @grimalschi and @acstll for contributing their designs 👍 .

Note that both logos as presented above are not of a resolution optimal for HiDPI screens. Once a logo is chosen we will use high-resolution

It looks like I have a majority (17 vs 5).
So I continue to work with logo.
I offer to use Quicksand font. It's a beautiful modern font with Open Font License.
https://fonts.google.com/specimen/Quicksand?selection.family=Quicksand
Here is all geometry, colors and proportions:

Hight resolution:

Sketch file:
logo.sketch.zip
SVG:
https://gist.github.com/grimalschi/cabe7e3c506aa08ec66fdac0d53b0974

I would have waited a bit to get a major total number of votes, but the majority is very clear anyways, so congrats, great work :^)

@acstll thank you!
Correct SVG: (curves isntead of text):
https://gist.github.com/grimalschi/51f989c7a5103f25bea0cebfdadf9e45

Or we can use logo without shape.

This is another choice we should make :)
Thoughts?

Last one looks more clear and more pleasant for me.

I prefer the original https://github.com/snabbdom/snabbdom/issues/317#issuecomment-314288259
On this last one, the "squared" purple S is more clear and visible so the contrast with the all rounded black S right next to it is too heavy, almost disturbing IMHO.

It looks like we have two variants again ;D
I think @paldepind can choose one, as an creator of snabbdom.

:heart:, the smaller variant.

I like https://github.com/snabbdom/snabbdom/issues/317#issuecomment-315126754 it looks fab!

So what we do?

Let's choose a logo before 2018 will come!

I think we should go with the one without the shape around.
Really good work on the logo @grimalschi. Now we need to figure out where to use it!

In the GitHub repo image (obviously)
Centered in the top of the readme?

Could be nice to have it it some of the examples in this repo somehow.
For example, the react-create-app makes a dummy webpage with a spinning react logo.

Closed in #433 .


Info about health impacts of climate change and extreme weather

As a [description of user]?
member of the general public in BC,
I want to [functionality]
access information about climate change & extreme weather negative impacts on health
So that [benefit]
understand the impacts and how I might be personally affected; gain empathy for those impacted by it.
Additional context
Add any other context, attachments or screenshots
Acceptance Criteria
Agreed-upon confirmation of the requirements when done can be deemed as complete

This "so i can" statement is speculative so combining with issue #65 and closing #65


@alloy => Use root url if we cannot generate a public artsy url

When I looked through our crashes
https://rink.hockeyapp.net/manage/apps/37029/app_versions/44/crash_reasons/54275149?type=crashes
I kept seeing the same thing, this always happens after onboarding, not sure the exact cause of it, but this should deal with the key issue of "it crashes."

Alright, so digging into this further, there is no way that the result of a publicArtsyPath could be nil

All of the models that conform do something like:
- (NSString *)publicArtsyPath
{
    return [NSString stringWithFormat:@"/show/%@", self.showID];
}

Must be a nil getting in to the process somewhere.

Looks like it's something related to genes, it's also very specifically on iPhone-y devices. Could be something to do with the genes we present in the list.

Alright, so, they all exhibit an issue with networking at the start of their session. This means that this call could fail. So, when it does fail, we fall back to these gene:
            NSArray *fallbackGenes = @[ @"Photography", @"Bauhaus", @"Dada", @"Glitch Aesthetic", @"Computer Art", @"Op Art", @"Minimalism" ];

Problem is:

So the fix is re-naming the gene.

Doh.
That all sounds very logical indeed. Knowing this, have you been able to reproduce the exact crash we were receiving?

Yep

Ace


It sounds unfair to use different Training set like EDSR or ther methods.

Need apple to apple training set to show the much better method or not better method .

Please see Table 2 for detailed results. We provide two settings for comparison. Setting 1 is identical to EDSR (a common setting for research paper), while Setting 2 is the same as RRDB (a common setting for SR challenges).

Feel free to open it if you have more questions.


Create table to hold permission levels and user accounts

This table is to be used to lookup the user from the web and check/assign the rights to

The user should be stored with the domain/computer detail.


New version: defi.defi version 4.1.0

Pull request has been created with komac v2.2.1 :rocket:
Microsoft Reviewers: Open in CodeFlow

/azp run

/azp run


Causes regen of other packages using build_runner

Returning to an older project, and running
flutter pub run build_runner build
And running into an issue with other files that get regenerated by this command too. I was wondering if this package could be specifically passed as argument so that it only this package was rebuilt with build_runner?
eg
flutter pub run build_runner build envied
Or similar?
Apologies if that's not feasible or how build_runner should be used, but I hope you see the issue - it would be ideal to be able to specifically regenerate the env, and not affect anything else.

I think you can use filtering to achieve what you want as explained here https://github.com/dart-lang/build/issues/2815


Adding banner for Premium plan for GA

I added a banner for a while to make people notice that Premium Plan is GA not for consumption.

Image banner with Top page of this repo
NuGet official site banner (adding letter with Description) on csproj file.

Sample view - Repository
https://github.com/Azure/azure-functions-kafka-extension/tree/tsushi/banner
Sample

will change into
Microsoft Azure WebJobs SDK Kafka Extension - GA for Premium Plan

https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Kafka/
Any comment is welcome.

I think grammatically "Kafka extension officially supports Premium Plan..." make more sense to me. So an "s" after support instead of extension.

@anirudhgarg @apawast  Done the update. Could  you review it?


Wireframe - Feedback for Dashboard

Apply feedback from #77

I believe this feedback has been applied and decision to go down the path of a list view and updated to start the figma prototype start page as the list view
https://www.figma.com/proto/RRtoRLyr5Spf0KiyRfEclt/DMP-Explain?node-id=886-846&node-type=frame&t=BiWgczUzRbAzAdyQ-0&scaling=min-zoom&content-scaling=fixed&page-id=177%3A504&starting-point-node-id=886%3A846&show-proto-sidebar=1

@bofstein can we close this issue?

Yeah I think we're good, looks great.  Could have minor changes down the line we can figure out with new tickets


Timed out searching for CWWKZ0001I.

CWWKM2010I: Searching for CWWKZ0001I.*vs10-swd-pm-0.0.1-SNAPSHOT in C:\openliberty-<IP_ADDRESS>\wlp\usr\servers\SwdProgramMaintenance\logs\messages.log. This search will timeout after 40 seconds.
[INFO] CWWKM2011E: Timed out searching for CWWKZ0001I.*vs10-swd-pm-0.0.1-SNAPSHOT in C:\openliberty-<IP_ADDRESS>\wlp\usr\servers\SwdProgramMaintenance\logs\messages.log.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  47.886 s
[INFO] Finished at: 2021-06-10T17:59:31+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.openliberty.tools:liberty-maven-plugin:3.2.3:deploy (default-cli) on project vs10-swd-pm: CWWKM2187E: Failed to deploy the vs10-swd-pm-0.0.1-SNAPSHOT application. The application start message was not found in the log file. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

@anksomathur Can you please provide some steps to recreate your issue (including the command that you ran) and your pom.xml configuration? Also, there are some timeout configurations you could try in case the servers in your environment are slow. See this documentation: https://github.com/OpenLiberty/ci.maven/blob/main/docs/deploy.md#deploy

Also check C:\openliberty-<IP_ADDRESS>\wlp\usr\servers\SwdProgramMaintenance\logs\messages.log. for any error messages.

@anksomathur Were you able to collect the additional information I mentioned above, or check the messages.log file? If this is still an issue for you, please provide the information so we can look into it further. Thanks.

I'm closing this issue since we've had no response. Feel free to reopen and provide the additional information requested. Hopefully you already got past the issue.


Dynamically fetch known bucket list

...instead of having it hardcoded.
https://github.com/lukesampson/scoop/blob/master/buckets.json

Might cause us to add buckets with unsupported licences, see Readme


i can`t see the info in the rows

When i used the example i just see the rows empty, it appeared the all the rows but nothing inside, what do i do wrong?  I Put a json var but it doesn´t complete me the grid

Which example did you use?
I used the following example, and it seems to work:

      Name
      Latin name

this is my code:
and the data isn´t display

Nro
MAQUINA

Date: Sun, 12 Apr 2015 23:50:22 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [simple-data-grid] i can`t see the info in the rows (#14)
Which example did you use?
I used the following example, and it seems to work:

Name
Latin name

—
Reply to this email directly or view it on GitHub.

I think you can fix this by setting the data-key property on the th elements:
      Nro
      MAQUINA

thanks!!!! that wprks!!!!!!!!!!!!! the last thing that i need to ask (... i hope...) is if there is a way that it could work on ie9?
Date: Mon, 13 Apr 2015 05:22:17 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [simple-data-grid] i can`t see the info in the rows (#14)
I think you can fix this by setting the data-key property on the th elements:
  Nro
  MAQUINA

—
Reply to this email directly or view it on GitHub.

Simple-data-grid should work in ie9. I tried the docs in ie9, and it seems to work.

I need to pass the json array from a php file, but it says: no rows. the name of the file is: grid.php and the json is in $dato, how do i do it?
my code:

Nro
MAQUINA

What does $dato look like. Is it a php array?

It´s a json array:
while ($row = mssql_fetch_assoc($result)) {
$orders[] = array(
'IdMaquina' => $row['IdMaquina'],
'MaquinaModelo' => $row['MaquinaModelo'],
'Articulo' => $row['Articulo'],
);
}
$dato = json_encode($orders);

I put it that way so i can use it at the data of  the grid
Date: Mon, 13 Apr 2015 10:25:33 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [simple-data-grid] i can`t see the info in the rows (#14)
What does $dato look like. Is it a php array?
—
Reply to this email directly or view it on GitHub.

I think you should remove the quotation marks around $dato in grid.pp:
var data = <?php echo $dato; ?>;

if i do that it cause error, because with quotation marks, js gets the sentences in php, so it doesn´t work, i just tried that since you said it but it didn´t work
Date: Mon, 13 Apr 2015 12:01:34 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [simple-data-grid] i can`t see the info in the rows (#14)
I think you should remove the quotation marks around $dato in grid.pp:
var data = ;
—
Reply to this email directly or view it on GitHub.

Unfortunately I don't know much php.
The data in the resulting html should have this structure:
var data = [
  {"latin_name": "Persea americana"},
  {"latin_name": "Capsicum annuum", "name": "Bell pepper"}
];


'false' when hovering over the address field

What is it?
When hovering over the address field which is filled in, there is "false".

What is your browser? It appears to be not present in Firefox 84.0.1 (64-bit) - and many places where tooltip would be useful have nothing.

What is your browser? It appears to be not present in Firefox 84.0.1 (64-bit) - and many places where tooltip would be useful have nothing.


[iOS build warnings] JavaScriptLoader BCBundle version check

Currently a build warning is thrown by if (header.BCVersion != runtimeBCVersion) ... because runtimeBCVersion is signed, apparently because -1 is used to mean that the runtime has no support for bytecode bundles.
This PR splits out the error case of the runtime not supporting BC bundles from the case of a version mismatch.
Tested as much as I could by building and running UIExplorer - I haven't attempted to use real bytecode bundles.

@adamjernst can you take a look at this? The logic looks right to me but you understand the intent better than I do.

@ide looks fine to me, apart from quibbles about comparing signed and unsigned numbers via casting.

I don't have permissions, but I'd just go ahead and merge it (y)

@adamjernst Thanks for having a look
@facebook-github-bot shipit


Updates to copy-i18n-tags after first run

Key changes:

Fix file formats on locale files that had large blocks of deleted tranlsations
Bug fixes in copy-i18n-tags logic
Fix npm install to not update package.json

Updated comments to explain more - let me know how that works and I'll update again if there are additional points of clarification necessary.


CBL-2190 : Implement Database_GetBlob and SaveBlob

Implemented Database_GetBlob() and Database_SaveBlob() and added tests.

What is expected to happen in the case where a user saves the blob and then adds the blob (as opposed to the properties) to a document? I think this needs a test.

This shouldn't be the problem. Internally,  down in LiteCore, the already installed blob will not be installed again.


Add file creation to file/newFile

What problem did you solve?
VSCode-R currently doesn't have any menu items contributed to VSCode's native file dialog Create: new file. This adds RMD files and R files to the dialog box.
(If you have)Screenshot

(If you do not have screenshot) How can I check this pull request?
Access the file dialog via Create: new file dialog

I'm wondering why Python and Jupyter notebook still appear even when the Python extension is not activated?

I think ipynb is a feature of vscode (was it in the news a few months ago?).


Which released installer to use for Windows 10 (64-bit)? Both "Stretchly-Web-Setup-1.0.0.exe" and "Stretchly-Setup-1.0.0.exe" didn't work

Prerequisites

[v] I'm using latest version: v 1.0.0
[v] I've checked Known issues
[v] I've checked Open issues

Description
[Description of the issue]
Operating system: Windows 10 (64-bit)
Hello, I have maybe a beginner question. Which installer can I use to install Stretchly v1.0.0 onto my Windows 10 (64-bit) computer? I tried both of the following, but they didn't work:
(I previously had the v0.21.1 installed. I un-installed it in order to upgrade it to v1.0.0 as it didn't seem to have an internal update method?)

"Stretchly-Web-Setup-1.0.0.exe":
Installation was not able to be complete, I think during the process it was not able to install the uninstaller.exe for some reason. The files were installed into the Users\me\AppData\Roaming\stretchly folder. Without the uninstaller I cannot uninstall, and the Windows Control Panel marks this program as installed and cannot remove. Issue similar to #534.
I'll delete the folder manually that's in the AppData\Roaming\stretchly folder. Any tips to removing it from the list in the Control Panel is greatly appreciated.

"Stretchly-Setup-1.0.0.exe"
Doesn't work as about 30% during installation the installer just says (Translated from Mandarin) "Installation stopped - Installation is not complete" on the screen, without aborting or anything. Just stands still with the progress not advancing.

Thanks for the help!

Hi @thirdjean , both installers are the right ones to install on Windows 10 64bit. Maybe try installing with administrator rights?

Btw there is no need to manually uninstall previous version, new installer uninstalls previous version by itself.

Hi @hovancik, thanks for the response. Unfortunately nothing changes when I install with administrator rights. The installer stops at the point below, with the text saying (Translated from Mandarin) "Installation stopped - Installation is not complete." Situation doesn't change if I just install for myself or install for everyone on the same computer.

Just wanting to add that now this happens as well when I try to install the older version of stretchly v0.21.1.
I'm assuming that maybe something went wrong during the uninstallation.

Looks like the problem is with not correctly uninstalled version of Stretchly v0.21.1, similar to the #636 . But to be honest, I don't know how to fix this.
Which version do you see as installed in Control Panel ?

Stretchly v1.0.0 is seen as installed in the Control Panel. Maybe the first installation left something wrong behind...
Could you tell me which one is the portable version on the Released page? I'd like to resort to that in the meantime to bypass the installation issue.

So 1.0.0. seems to be installed, but you can't run it?
Potable version should be the file called Stretchly-1.0.0-win.zip

Interestingly, the Stretchly v1.0.0 shortcut created by the installer points me to :
"C:\Program Files (x86)\Common Files\Wondershare\Wondershare Helper Compact\Wondershare Helper Compact.exe"
I recall searching about this Wondershare which is a malware that I still have to try to remove. Was this installation hijacked by this malware?

If you downloaded from Github, the files should not be infected. I am not even using real computer to build those installers, but virtual ones, so they should be clean.
Do you have antivirus?

Having the same problem. My installation seemed to run and I just assumed it worked (no error message or anything). After installation I still got update pop-ups, so I checked the version number, which is still 0.21.1.

@JEVos can you try closing Stretchly and running it again? What version do you see in Installed apps?

@JEVos can you try closing Stretchly and running it again? What version do you see in Installed apps?

Sure, in the app list it says 0.21.1 installed on 3/3/2020

I would try closing and then uninstalling all instances of Stretchly running and then try installing 1.0. The name of the app has changed from stretchly to Stretchly so it might be confusing the OS.

I would try closing and then uninstalling all instances of Stretchly running and then try installing 1.0. The name of the app has changed from stretchly to Stretchly so it might be confusing the OS.

Thank you, that did the trick!

Awesome, glad to hear it worked :)