Show warning in cli in case of multiple configs

Summary
Helps the user have correct and consistent configuration and helps when trying to debug why config is not applied.
As mentioned in https://github.com/facebook/jest/issues/10124 and https://github.com/facebook/jest/issues/10123.
Warns in case of multiple configs, however the warning is overriden in case of the usage of --config.
Test plan
Tested it locally by trying a development build of jest in another package.
However, I'm unsure of writing the tests with respect to this functionality.
If someone could point me in the right direction (in case tests are necessary for this use case), it would be really helpful.

Hey @SimenB,
I made an empty jest-config.js in the tests directory and then added snapshot tests.
I am not quite sure if this is the correct way to do it.
Could you please let me know if this is fine, so that it can be either merged/ I can edit it accordingly.
Thanks,
Mansehej.

Hey @SimenB
Did you get a chance to take a look at this?
Thanks,
Mansehej.

@Mansehej sorry about the slow response! I've been away on holiday. I'll take a look at this next week when I'm back at work 🙂

@SimenB Oh no issues, have fun!

I completely forgot about this, sorry about that @Mansehej! Should have created a reminder for myself 😬
What I would do is create some temporary directories and write config into them, sorta like https://github.com/facebook/jest/blob/a94730c685a40055fe1694d7e4833061d0055f79/e2e/tests/dependencyClash.test.ts#L40-L45
So something like
/**
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

import * as path from 'path';
import {tmpdir} from 'os';
import {cleanup, createEmptyPackage, writeFiles} from '../Utils';
import runJest from '../runJest';

const tempDir = path.resolve(tmpdir(), 'multiple-jest-configs');

beforeEach(() => {
  cleanup(tempDir);
});

test('throws when jest.config.js and package.json config exist', () => {
  createEmptyPackage(tempDir);
  writeFiles(tempDir, {
    '__tests__/test.js': `
      test('dummy test', () => expect(1).toBe(1));
    `,
    'jest.config.js': `module.exports = {
    };`,
  });
  const {stderr, exitCode} = runJest(tempDir);

  expect(exitCode).toBe(1);
  expect(stderr); // something - probably a `toContain` on the error text
});

test('does not throw when jest.config.js exist, but no config in package.json', () => {
  createEmptyPackage(tempDir, {
    description: 'THIS IS AN AUTOGENERATED FILE AND SHOULD NOT BE ADDED TO GIT',
  });
  writeFiles(tempDir, {
    '__tests__/test.js': `
      test('dummy test', () => expect(1).toBe(1));
    `,
    'jest.config.js': `module.exports = {
    };`,
  });
  const {stderr, exitCode} = runJest(tempDir);

  expect(exitCode).toBe(0);
});

Then I would write tests for all the different config files we have.


Fix coordinates for MAP 3.1 JSON Crosswalk

The 3.1 crosswalk mistakenly mapped arrays of lats & long into a string, resulting in coordinates like "[\"12.34\"], [\"56.78\"]". This patch grabs the first value of each, resulting in the correct value.

:100:


PipelineFactory & Dependency Injection

Please consider adding an interface to the PipelineFactory of IPipelineFactory so developers can use Dependency injection to easily swap in/out PipelineFactory implementations when using Libuv/Sockets/RIO or other.

We moved away from factories. There's a concrete Pipe implementation now


AWS MachinePool: Allow public and/or private subnets

Previously, via HIVE-1224 / #1234 / a27ef2e, we started filtering out public subnets if they were provided in an AWS MachinePool. This led to two issues:

Users could not create machines in public subnets at all (HIVE-2196).
In PrivateLink, subnets are always private, even though they may appear public based on their attributes (HIVE-1805).

With this commit, we relax the restrictions such that, if the number of subnets matches the number of availability zones, we allow them whether they're public or private.
Here's a complete description of the new behavior:

We still accept an empty Subnets list, as before.
If the number of subnets matches the number of availability zones, we allow them, whether they're public or private. (We still validate that we were given exactly one subnet per AZ.)
If the number of subnets is double the number of availability zones, we follow the existing behavior: filter out the ones we detect are public and pass through only the private ones.
Any other number of subnets is an error.

HIVE-1805
HIVE-2196

@abutcher made a start on the code side. PTAL if you get a chance before I get too much deeper :)
@suhanime this touched a fair bit of your code from #1234, would welcome your eyes as well.

/test coverage

/assign @abutcher
@abutcher I would love some tips on how to test this live, when you get a chance.

/test e2e-pool

@abutcher I would love some tips on how to test this live, when you get a chance.

https://redhat-internal.slack.com/archives/CE3ETN3J8/p1680638351592089

This tested clean. I tested permutations of:
zones: a subset, none, or all
subnets: all (corresponding to the zones) public, all (same) private, all (same) of both, and a couple of mismatches (wrong subnets for zones, one too many or one too few)
Things that seemed odd to me, given this was the first time I really played in this space:

If you don't specify subnets, the spoke MachineSet filters them by name; but the MachinePool expects them to be specified by ID (whereupon the MachineSet filters them by ID).
If you don't specify any subnets, hive (actually the installer code) generates a MachineSet per zone. If zones are not specified in this scenario, it defaults to "all of them", but you can enumerate zones and you get the matching private subnet for each. However, if you omit zones but specify subnets -- even all of them -- it bounces. Not sure if we should fix this.

Ready for review @abutcher.

(just a rebase)

/test e2e
Seeing this flake a lot lately:
admission_test.go:91: Unexpected create error: dnszonevalidators.admission.hive.openshift.io is forbidden: User "system:anonymous" cannot create resource "dnszonevalidators" in API group "admission.hive.openshift.io" at the cluster scope

Seems like it could be a timing problem getting RBAC deployed.

If you don't specify any subnets, hive (actually the installer code) generates a MachineSet per zone. If zones are not specified in this scenario, it defaults to "all of them", but you can enumerate zones and you get the matching private subnet for each. However, if you omit zones but specify subnets -- even all of them -- it bounces. Not sure if we should fix this.

We should make a card to at least bump a MachinePool with from validating webhook if we know its an invalid starting point or at most look into fixing in some way.

Aforementioned card https://issues.redhat.com/browse/HIVE-2227 for subnets but no zones.

/lgtm

/test e2e


What could explain that MultiWorkerMirroredStrategy is very slow ?

We are trying to use a multi-worker strategy with Keras and tensorflow 2.5. We have 2 hosts with 8 A100 GPU on each host.
Our code looks like the following
strategy = tf.distribute.MultiWorkerMirroredStrategy()

with strategy.scope():
    model = build_model()
    model.compile(...)

train_data = build_train_data()
train_data = train_data.take(1).cache().repeat()

model.fit(train_data)

As you notice in this pseudo code, we cache one batch of our dataset to reduce the I/O bound and to measure precisely the training time.
The code where run on two nodes is very slow. All GPUs are almost idle every time.
When we run the same code on a single node (8 GPUs) with MirroredStrategy we get a very high speed.
So, what can be the bottleneck here ?

Another issue related to this one is that when we force the strategy to use NCCL with
communication_options = tf.distribute.experimental.CommunicationOptions(
        implementation=tf.distribute.experimental.CommunicationImplementation.NCCL
)

strategy = tf.distribute.MultiWorkerMirroredStrategy(
    communication_options=communication_options
)

The code fails with segmentation fault.
We don't know whether it is related to Tensorflow or NCCL.

Inter-node GPU communication is usually much slower than intra-node, so the bottleneck might be on network bandwidth, especially if your model's computation is very cheap.
Perhaps you can set environment NCCL_DEBUG=INFO to verify if NCCL is used (in theory strategy should automatically choose NCCL if there are GPUs). It would also help debug the seg fault when you force the strategy to use NCCL.

@jrabary. I am trying to run a similar scenario . multiple nodes , each node with multiple gpus. In this case do we run multiple workers(==no of gpus on that node) on each node, or just one worker on each node? From the documentation and examples, its not clear what happens when 1 worker has multiple gpus, or should we run multiple process in that case.

Hi,
Thank you for opening this issue. Since this issue has been open for a long time, the code/debug information for this issue may not be relevant with the current state of the code base.
The Tensorflow team is constantly improving the framework by fixing bugs and adding new features. We suggest you try the latest TensorFlow version with the latest compatible hardware configuration which could potentially resolve the issue. If you are still facing the issue, please create a new GitHub issue with your latest findings, with all the debugging information which could help us investigate.
Please follow the release notes to stay up to date with the latest developments which are happening in the Tensorflow space.


Bug in Beta player where you can scroll through the last lecture that was in the room

All environments affected, but only in the beta player
https://github.com/TUM-Dev/gocast/assets/79611093/3623f08d-a201-49ef-85f0-086f5ca5704d
This information is for example not saved in the hls link only in the player it seems

That is not a bug, as the source is grabbed from a shared ring buffer.

This is known and unfortunately the reason, that player is still in beta.

@hmelder bug or not, this is not how it should work. That is for sure not a feature

Never said that this is a feature @Wladefant  ;)


Errors with the CPL

When I upload the cherry BOM and CPL files to JLCPCB, there is an error message that they don't match. There are some differences with the hot swap sockets between the two files but even after removing those I'm still getting the error messages.

If you go to the next screen a number of the components are either in the wrong place or have the wrong orientation. For example the USB and TRS jacks are not connected to the PCB.  The components at U2, U3 and U4 are obviously not oriented correctly. I'm not sure if the remaining components are oriented correctly or not.

Same here

I found the cause.
It seems that JLCPCB returns an error if lowercase letters are used in Designator.
For example, if I change rU1 to RU1, no error occurs.
However, even if an error occurs, JLCPCB seems to process it correctly, so it looks like a warning is just being issued. It just seems like a bug.

When you tried it on your end @foostan did the components get placed on the footprints correctly?

Yes, of course.

Changing the designators to uppercase resolves the error message. The orientation of some parts still needs to be corrected in JLCPCB


Show "bad" config on sync page

In Habitat/Helix solutions, there are often a LOT of configs to be synced. Luckily, the checkboxes make quick work of this.
Unless, of course, there's a bad config in there.
However, trying to figure out the culprit that is causing the checkboxes to go away is difficult because you have to manually sync each project until you get to the offender.
It would be awesome if a config that's failing validation would be somehow noted on the main sync page instead of only making the checkboxes go away. Sadly, Mr. Yuk is trademarked, but I'm sure you'll come up with something fun.

This was - at least theoretically - fixed several releases ago. Give it a shot with the latest RC version and see if you're still seeing the issue. If you are, I'll need specific details about what was wrong and how to reproduce it because yes, any errors are supposed to trigger global banners not just the removal of checkboxes.

Cool, I'll check it out. I'm still using 3.11.
On Tue, Oct 4, 2016, 10:44 AM Kam Figy<EMAIL_ADDRESS>wrote:

This was - at least theoretically - fixed several releases ago. Give it a
shot with the latest RC version and see if you're still seeing the issue.
If you are, I'll need specific details about what was wrong and how to
reproduce it because yes, any errors are supposed to trigger global banners
not just the removal of checkboxes.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kamsar/Unicorn/issues/178#issuecomment-251409368, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABZStA_WCy5VsK6MgHGzDi3c7bD5b74zks5qwmZagaJpZM4KNois
.

Closing this one. Feel free to reopen if upgrading does not solve your problem.


Point Cloud Painting

Thank you for your very interesting work! How should One-shot Part Segmentation and Point Cloud Painting be used?

Hi,
Thanks for your interest on our work! We are planning to release the code for more downstream tasks (e.g. part segmentation, painting), but there is no strict time plan.


Whisper inference support in cpp runtime

We were trying to reproduce the steps to load whisper in wenet and finetune it for streaming on libsrispeech, following the steps in https://github.com/wenet-e2e/wenet/tree/main/examples/aishell/whisper. Finetuning did seem to work, but when we tried to load it in the cpp runtime, it only produced empty results. After further inspection, it looks like the feature extraction of whisper is very different than the one implemented in wenet runtime, mainly regarding:

Window for STFT (Povey window versus Hanning window)
Mel scale is different, there are two commonly used versions 1. one derived from htk, which wenet and kaldi use as well, 2. the other one from matlab slaney toolbox, which is implemented by librosa and used to train whisper
Mel weight are different, kaldi was computing the weight based on the frequencies on the mel scale, but whisper training uses the weight computed in the original frequency scale
Normalization after computing the PSD is different, mainly the base of the log operation and how it scales the output are different

examples show it's working
decoder main using whisper

cli is still compatible with the original code, default behavior doesnt change

There are still a couple places that are not perfect

token list in the above example is directly exported from whisper tokenizer, so the output contains things like <|notimestamp|> and <|space|>, which doesnt look nice. Maybe it can be purely solved by cleanup the token list, but it's also possible that we might need some runtime code change to make this look good. If we do need to do that, i think that's a separate problem and deserves a separate PR. However, if there are simple fixes, i am happy to do it in this PR.
The feature computed is still a bit different from that directly computed using python directly calling the whisper related code, i suspect the difference mainly comes from FFT computation, will show more details in the following comments.

I know these are a lot of changes, so I am more than happy to change the structure into the style you guys prefer if you think there is a better way

hanning window generated in runtime versus the one from torch, difference are very small

Mel fitlers generated from cpp runtime is also very close to the one from librosa

computed feature is pretty similar, but NOT THE SAME! now

I dumped the PSD after STFT as well and compared it with the one computed using torch, I think this might be the source of difference

Great job, it's clear.

Great job!
I think kaldifeat's impl for computing features of whisper could be beneficial for our work:

https://github.com/csukuangfj/kaldifeat/pull/82
https://github.com/csukuangfj/kaldifeat/pull/84

BTW, Why does the CTC result contain <|notimestamp|>? The label provided to the CTC loss function doesn't include this tag (only the label given to the CE loss has it), so <|notimestamp|> shouldn't appear during CTC decoding.

Support computing features for whisper csukuangfj/kaldifeat#82

Thanks for referencing this implementation, those are really helpful! Ya,  they are doing basically the same thing that we want to do. I think we have two ways to support whisper inference in wenet.

Create another FBank implementation, just like what kaldifeat did, and copy over their code, implementing a interface with Compute so we can integrate it into the feature pipeline in wenet.

Update Fbank with more options like what we are doing in this PR.

For 1, since Fbank computation is not a lot of code, i think it makes sense to have a separate WhisperFbankComputer even without reusing the current FBank code. However for 1. I don't like the fact that they hard coded the weight there, so it's less flexible https://github.com/csukuangfj/kaldifeat/blob/master/kaldifeat/csrc/whisper-mel-bank.h. and b. It's computing STFT using torch. Since wenet can support runtimes other than torch, we probably don't want to depend on torch in the feature extraction part. However, if we do think 1 is a preferred structure, we can reuse the current wenet FFT so b is not a problem, and we can reuse the code in this PR to generate the filters so a is not a problem as well.
Based on above, i think it's more of a style thing, basically we need to decide if we want to reuse FBank or create another WhisperFbank

BTW, Why does the CTC result contain <|notimestamp|>? The label provided to the CTC loss function doesn't include this tag (only the label given to the CE loss has it), so <|notimestamp|> shouldn't appear during CTC decoding.

Very good question, i am curious as well, because it shouldn't be possible. Maybe something wrong with my training setup? Can you help checking if it does the samething on your whisper finetuned on AISHELL?

Support computing features for whisper Support computing features for whisper csukuangfj/kaldifeat#82

Thanks for referencing this implementation, those are really helpful! Ya, they are doing basically the same thing that we want to do. I think we have two ways to support whisper inference in wenet.

Create another FBank implementation, just like what kaldifeat did, and copy over their code, implementing a interface with Compute so we can integrate it into the feature pipeline in wenet.
Update Fbank with more options like what we are doing in this PR.

For 1, since Fbank computation is not a lot of code, i think it makes sense to have a separate WhisperFbankComputer even without reusing the current FBank code. However for 1. I don't like the fact that they hard coded the weight there, so it's less flexible https://github.com/csukuangfj/kaldifeat/blob/master/kaldifeat/csrc/whisper-mel-bank.h. and b. It's computing STFT using torch. Since wenet can support runtimes other than torch, we probably don't want to depend on torch in the feature extraction part. However, if we do think 1 is a preferred structure, we can reuse the current wenet FFT so b is not a problem, and we can reuse the code in this PR to generate the filters so a is not a problem as well.
Based on above, i think it's more of a style thing, basically we need to decide if we want to reuse FBank or create another WhisperFbank

Yes, I think current implemenation is okay. There is a lot of hard code about mel weights for whisper fbank in kaldifeat, which is not preferred.

Regarding the STFT difference, I think there is no way to make them match exactly. Reason is because if fft_length != window_length, torch STFT will pad the window on both the left side and the right side: https://github.com/pytorch/pytorch/blob/2d7a360911fb7b27be82c51ca86b4b34b6f1b087/aten/src/ATen/native/SpectralOps.cpp#L936, normally FFT energy doesn't depend on how you pad the input, however this is how torch separate audio into different frames https://github.com/pytorch/pytorch/blob/2d7a360911fb7b27be82c51ca86b4b34b6f1b087/aten/src/ATen/native/SpectralOps.cpp#L949 ,  because of this,  padding the window in different places will result in different part of the raw signal multiplied by different part of the window, resulting in a different PSD result.
But I think it's probably fine, result will be the same if we shift the sequence by (fft_length - window_length) / 2,
padded_wav = F.pad(wav, (56, 56), "constant", 0) # pad the input so window will match the audio the same way wenet does
stft = torch.stft(padded_wav,
                  512,
                  160,
                  window=window,
                  center=False,  # this is another trivial source of differece
                  win_length=400,
                  return_complex=True)
magnitudes = stft[..., :-1].abs()**2
mel_spec_512 = filters_512 @ magnitudes
log_spec_before_norm_512 = torch.clamp(mel_spec_512, min=1e-10).log10()
log_spec_before_norm_512 = torch.maximum(log_spec_before_norm_512, log_spec_before_norm_512.max() - 8.0)
log_spec_after_norm_512 = (log_spec_before_norm_512 + 4.0) / 4.0

and we will get almost the same result

I think this is a feature, not a bug, as ASR result should change even if we shift the input by some number of sampling points.

感谢各位大佬review 和 approve，愿wenet越来越强大，用户越来越多！

开源靠大家，感谢贡献！

Just for people who are confused about <|notimestamps|>, it's because the token list that i used is wrong, it actually corresponds to blank tokens in CTC, which won't appear in the final transcript.
Related issue: https://github.com/wenet-e2e/wenet/issues/2329

torch.stft(,n_fft=512 ,**) 与c++ 能够对齐， whisper 默认的 torch.stft(,n_fft=400 ,**) 好像c++ 不正常，是否是一个BUG

AITDASR
是的， 这是另外一个区别，这个会造成一些影响，但是不太会影响识别结果。
原因在于STFT目的是对功率谱密度进行估计，选择不同的window size会有一些影响，但是补偿了一个固定的常数之后（取决于用的FFT的定义），结果应该很接近。


bug: template-click-events-have-key-events: Exclude interactive elements

Make sure that interactive elements like button are excluded

@mohammedzamakhan would you want to push a fix?

Yes I am currently working on it @mgechev


Add a CI job to check the minimal version constraints of direct dependencies

I'm seeing a few issues that I will fix in a minute, but I want to make sure this test would catch them in CI (if CI is allowed to run on my PR) Ok that has to be approved, but it turns out CI as-is wouldn't have caught my issue anyway, but I'm including it here because it caught a different issue... keep reading for more explanation but I'm happy to take out whatever commits you'd like me to.
What happened
I upgraded a project I work on that uses croaring to move off of the yanked version 1.0.0. I did this by running cargo update -p croaring, forgetting that croaring-sys would need an update too (and also forgetting to pass --aggressive).
The project's build started failing with these errors:
   Compiling croaring v1.0.1
error[E0425]: cannot find function `roaring_bitmap_internal_validate` in crate `ffi`
    --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/croaring-1.0.1/src/bitmap/imp.rs:1495:35
     |
1495 |         let valid = unsafe { ffi::roaring_bitmap_internal_validate(&self.bitmap, &mut error_str) };
     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in `ffi`

error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
    --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/croaring-1.0.1/src/bitmap/imp.rs:1499:26
     |
1499 |             if error_str.is_null() {
     |                          ^^^^^^^

So really, croaring v1.0.1 depends on at least v1.1.0 of croaring-sys, but cargo update -p croaring didn't take care of that because croaring specifies croaring-sys version = "1.0.0" so the existing croaring-sys v1.0.0 in my project's lockfile was compatible.
I've corrected this problem by updating the version specified in croaring's Cargo.toml to be croaring-sys version = "1.1.0".
I was hoping that building with cargo's unstable minimal versions flag would prevent this from reoccurring in the future, but it looks like because of the path dependency for croaring-sys that's used when building in this repo, cargo uses whatever version is at the path and not the minimal version someone using the crates from crates.io would experience :( I'm going to make sure this issue was raised somewhere in the discussions of the cargo feature.
But when I ran with cargo +nightly check -Zdirect-minimal-versions, it did report a problem with byteorder, so I have included in this PR a commit to enable this check in CI and a commit to properly specify the minimum required byteorder version.
I'm happy to make any changes you'd like, please let me know!

So really, croaring v1.0.1 depends on at least v1.1.0 of croaring-sys, but cargo update -p croaring didn't take care of that because croaring specifies croaring-sys version = "1.0.0" so the existing croaring-sys v1.0.0 in my project's lockfile was compatible.

Sorry about this, version bumps for both usually went together.

Thanks for making croaring-rs better! :)


Some crate docs are broken

https://docs.rs/futures/0.1.0/futures/ looks pretty broken. 0.1.1 is fine.

Huh. It looks like we don't have the static files for that version of rustdoc. I wonder if we lost them in the server migration... @onur
I was able to pull the main.js, main.css, rustdoc.css, and jquery.js for that version and manually add them to the server. Those docs should load now.


typo update default value of compaction_promotion_min_size_mbytes

Proposed changes
since 2.0 version, default value of compaction_promotion_min_size_mbytes is changed to 128, update doc
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall


Unable to get debug information from Laravel server

I have been working on using this library for the last four hours and I can't seem to get past this point. I have alternated between using Blobs and now I'm using the FileEntry File object as prescribed in your documentation. My client is the tus-js-client official.
My code is as follows for the client side:
async uploadTus(webPath: string): Promise<void> {
    this.loading = await this.loadingCtrl.create({
      message: 'Uploading...'
    });
    await this.loading.present();
    const token = await Storage.get({ key: 'user_token' });
    const parsed_token = JSON.parse(token.value);
    const filename = nanoid(10);
    const url = 'https://private-url.com.au/auth/api/tus';
    const blob = this.videoBlob;
    const upload = new Upload(blob, {
      endpoint: url,
      retryDelays: [0, 1000, 2000, 4000, 8000],
      headers: {
        Authorization: 'Bearer ' + parsed_token.access_token
      },
      chunkSize: 1024,
      addRequestId: true,
      overridePatchMethod: true,
      metadata: {
        name: `${filename}.mov`,
        type: `video/quicktime`
      },
      // uploadLengthDeferred: true,
      onError: function(error) {
          console.log("Failed because: " + error)
          this.loading?.dismiss();
      },
      onProgress: function(bytesUploaded, bytesTotal) {
          var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2)
          console.log(bytesUploaded, bytesTotal, percentage + "%")
      },
      onSuccess: function() {
          this.loading?.dismiss();
      }
    });
    upload.start();
  }

Prior to uploading, I retrieve the File object like so:
          this.file.resolveLocalFilesystemUrl(resolvedPath)
          .then(entry => {
            (<FileEntry>entry).file(file => {
              // this is the actual file as File object
              // const photo = this.imageService.readFile(file);
              // console.log(photo);
              this.videoBlob = file;
            }
            );
          })
          .catch(err => {
            console.log('Error while reading file.');
          });

Finally... my Laravel serverside is:
namespace App\Providers;

use Aws\S3\S3Client;
use TusPhp\Tus\Server as TusServer;
use Aws\Credentials\Credentials;
use Illuminate\Support\ServiceProvider;
use Log;

class TusServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton('tus-server', function ($app) {
            $awsAccessKey = 'AKIAXXX'; // YOUR AWS ACCESS KEY
            $awsSecretKey = 'XXX'; // YOUR AWS SECRET KEY
            $awsRegion    = 'ap-southeast-2';      // YOUR AWS BUCKET REGION
            $basePath     = 's3://privatebucket';
            $s3Client = new S3Client([
                'version' => 'latest',
                'region' => $awsRegion,
                'credentials' => new Credentials($awsAccessKey, $awsSecretKey)
            ]);
            Log::info('Are we uploading?');
            $s3Client->registerStreamWrapper();
            $server = new TusServer('file');
            $server->setUploadDir($basePath);
            return $server;
        });
    }
}

So XCode just hangs on this:
To Native Cordova ->  File readAsArrayBuffer File1251655279 ["options": [cdvfile://localhost/temporary/63568122505__E3E5E323-AB0F-41E9-8316-59E1F7B8BDAB.MOV, 0, 1024]]

And my Laravel log file just shows:
[2021-02-22 20:07:10] local.INFO: Are we uploading?

But there's never any finalisation / update / response / error etc. That's where it all just stops. If anyone can help I'd be extremely grateful.

Current issue is this:
Argument 2 passed to TusPhp\File::setMeta() must be of the type int, null given, called in /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/Tus/Server.php on line 643

{"userId":2,"exception":"[object] (TypeError(code: 0): Argument 2 passed to TusPhp\\File::setMeta() must be of the type int, null given,
called in /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/Tus/Server.php on line 643 at /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/File.php:74)

I put a catch on the route to see if anything is being posted and the response is empty, is this normal?
        Route::any('/tus/{any?}', function (Request $request) {
            Log::debug(print_r($request->all(), true));
            $resp = app('tus-server')->serve();
            $resp->send();
            exit(0);
        })->where('any', '.*');

As seen here:
[2021-02-23 00:46:44] local.DEBUG: Array
(
)

[2021-02-23 00:46:44] local.INFO: Are we uploading?
[2021-02-23 00:46:44] local.ERROR: Argument 2 passed to TusPhp\File::setMeta() must be of the type int, null given, called in /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/Tus/Server.php on line 643 {"userId":2,"exception":"[object] (TypeError(code: 0): Argument 2 passed to TusPhp\\File::setMeta() must be of the type int, null given, called in /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/Tus/Server.php on line 643 at /home/forge/privateurl.com.au/vendor/ankitpokhrel/tus-php/src/File.php:74)

When I remove my authorisation header I get a different error:
[log] - Failed because: Error: tus: failed to resume upload, caused by [object XMLHttpRequestProgressEvent], originated from request (method: HEAD, url: https://privateurl.com.au/auth/api/tus, response code: n/a, response text: n/a, request id: n/a)

Tried implementing middleware - local.ERROR: Undefined property: App\Http\Middleware\TusPass::$user

Are these supposed to be empty?
[2021-02-23 03:51:29] local.INFO: TusPhp\Request Object
(
    [request:protected] => Symfony\Component\HttpFoundation\Request Object
        (
            [attributes] => Symfony\Component\HttpFoundation\ParameterBag Object
                (
                    [parameters:protected] => Array
                        (
                        )

                )

            [request] => Symfony\Component\HttpFoundation\ParameterBag Object
                (
                    [parameters:protected] => Array
                        (
                        )

                )

            [query] => Symfony\Component\HttpFoundation\InputBag Object
                (
                    [parameters:protected] => Array
                        (
                        )

                )

I've drawn the conclusion that my frontend is still not sending the upload data correctly, due to using Ionic / Capacitor / FileEntry File type etc.

In case some good Samaritan comes across this post, my frontend (Ionic / Capacitor) flow is as follows:
async submitAudit() {
const options: VideoCapturePlusOptions = { limit: 1, highquality: true }
this.recording = true;
this.videoCapturePlus.captureVideo(options).then(
  async (mediaSheet: MediaFile[]) => {
    let media = mediaSheet[0];
    console.log('Media Sheet', media);

    let resolvedPath: DirectoryEntry;
    let path = media.fullPath.substring(0, media.fullPath.lastIndexOf("/"));

    if (Capacitor.getPlatform() === "ios") {
      resolvedPath = await this.file.resolveDirectoryUrl("file://" + path);
    } else {
      resolvedPath = await this.file.resolveDirectoryUrl(path);
    }

    this.selectedVideo = resolvedPath;
    console.log('Providing to Filesystem - PATH: ',this.selectedVideo);

    const contents = await Filesystem.readFile({ path: this.selectedVideo.nativeURL + media.name });
    const base64Response = await fetch(`data:video/quicktime;base64,${contents.data}`);
    const blob = await base64Response.blob();

    this.videoBlob = blob;
    this.uploadTus(this.selectedVideo);
  },
  (error) => console.log('Error', error)
);
}

And my uploading function is
async uploadTus(webPath: string): Promise<void> {
if(!this.loading) {
  this.loading = await this.loadingCtrl.create({
    message: 'Uploading...'
  });
  await this.loading.present();
}
const token = await Storage.get({ key: 'private_user_token' });
const parsed_token = JSON.parse(token.value);
const filename = nanoid(10);
const url = 'https://privateurl.com.au/auth/api/tus';
const blob = this.videoBlob;
if(blob.size && blob.type) {
  const uploader = new Upload(
    blob,
    {
    endpoint: url,
    retryDelays: [0, 1000, 2000],
    metadata: {
      name: `${filename}.mov`,
      type: blob.type,
      access_token: `${parsed_token.access_token}`
    },
    headers: {
      'Authorization': `Bearer ${parsed_token.access_token}`
    },
    onError: function(error) {
        console.log("Failed because: " + error)
        this.loading?.dismiss();
    },
    onProgress: function(bytesUploaded, bytesTotal) {
        var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2)
        console.log(bytesUploaded, bytesTotal, percentage + "%")
    },
    onSuccess: function() {
        this.loading?.dismiss();
    }
  });
  uploader.start();
}
}

And my understanding of things is pretty rudimentary, but I think it's a warning sign that both the InputBag & the ParameterBag is empty on Laravel's end, via the middleware

Stuck here now:
[log] - Failed because: Error: tus: failed to create upload, caused by [object XMLHttpRequestProgressEvent], originated from request (method: POST, url: https://privateurl.com.au/files, response code: n/a, response text: n/a, request id: n/a)

In the end I decided to use AWS SDK, skipped PHP & chunking altogether and just upload directly to Mr Bezos' cloud, 1GB limit uploads & all :) Hopefully someone will benefit from my random scrawls.

@gbrits I think It would make it easier to isolate the problem first whether it lies on frontend or server side.
I would also suggest to try to use other alternative client to ensure that tus-php server was configured fine.
From the PHP error log it definitely looks like data is not being passed to it correctly.

Ensure sure that Tus-php is configured properly
Once confident that Tus-php is configured as expected. Then debug on frontend side and check why it's not sending the data as expected by server.

Remove   uploadLengthDeferred: true, it should work


Are pinned columns resizable?

I have a grid where the first column in pinned. All columns have moving and resizing suppressed, except the first column which has supressResize set to false in it's colDef. All headers are custom rendered. Grid options has enableColResize set to true.
Should I be able to resize the first column using the mouse?

yes pinned cols are resizable


Windows Scaling

On Windows, with a high resolution screen that is scaled at greater than 100%, PhotonFileValidator (java installer) ignores the Windows display scaling, making it too small to be usable. See attached screenshot of the PhotonFileValidator in front of this bug report. The Windows display scaling is set at 200% in the screenshot.

When launched from launch4j launcher java process inherits DPI awareness of it. It looks like launch4j doesn't have an option to change this. I tried to mess with .matifest files, but it didn't help. I'll keep looking probably...


Templates: Update Travel template to 9:16

Use this Figma doc to apply 9:16 updates to the existing Travel template:
https://www.figma.com/file/RTzSw47oi6pEZXEfP2JoBo/Templates?node-id=766%3A61

Verified in QA

Verified in UAT but with following issue:
@o-fernandez My bad here but I forgot to move the "No. 3" label from the top (the system nav will definitely obscure that. Don't think this is a blocker but it reflects poorly on us (mainly ux design) since we want to set a good example. So not a blocker but fix quickly.

Should look like this instead:

Let's create a new issue for that then.

Filed this issue for Sam's new update. https://github.com/google/web-stories-wp/issues/2873


SDK Generator should depend on the latest SDK Service

Tech Debt
In the latest <IP_ADDRESS> release, the generator package <IP_ADDRESS> is currently depending on service version <IP_ADDRESS>. It should be updated to <IP_ADDRESS>, as some dependencies for the client generator have been included in the <IP_ADDRESS> service that were not available in the <IP_ADDRESS> service.
cc: @dixonjoel
AB#2906677

Validated with the latest <IP_ADDRESS> release, and the issue has been fixed.


feat: explicit layout apply via Hanging Protocol

PR Checklist

[ ] Brief description of changes
[ ] Links to any relevant issues
[ ] Required status checks are passing
[ ] User cases if changes impact the user's experience
[ ] @mention a maintainer to request a review

@wayfarer3130

Changed the HP Service to be able to register both Object and Protocol Generator (dynamic) protocols via id
Changed the protocol registration to happen at the extension registration, previously it was done by the modes which was wrong, now a mode can define which protocol it should run with, if undefined we will run protocol Matching rules.
Recent PR added inheritance to ViewportGrid which should not happen, as we cannot assume the next displaySets and previous displaySets on the same viewport share the same options.

I need to change docs as well, after we settle on the changes @sedghi

LGTM after the docs and couple of small changes are applied.


Run tests on Windows

There are issues such as https://github.com/pydata/pandas-gbq/issues/119 which only appear on Windows. Maybe https://www.appveyor.com/ would be useful for this?

Closing as a duplicate of https://github.com/googleapis/google-cloud-python/issues/10511


getVirtualItems returns 0 elements when table rows has one data entry

Describe the bug
Using the latest Tanstack Table along with Tanstack Virtual v3 (beta), I have followed this example Tanstack Codesandbox Example on how to virtualise rows and make headers sticky.
After much testing, I have concluded that everything works as expected. However, if I apply some filters to my table and the result set includes only one row (data row, not headers), the table will only render the headers and the
 element will have no children. In terms of code, see the comments to better understand my issue.
  // rows will contain one entry with the key `original` that contains the row returned by the filter ✅
  const { rows } = table.getRowModel()

  const rowVirtualizer = useVirtualizer({
    count: rows.length,
    overscan: 20,
    estimateSize: () => 170,
    getScrollElement: () => tableContainerRef.current,
  })

  // correctly says totalSize is 170px ✅
  const totalSize = rowVirtualizer.getTotalSize()
  // **incorrectly** says virtualRows has length 0 ❌
  const virtualRows = rowVirtualizer.getVirtualItems()

  const [paddingTop, paddingBottom] = computeVirtualRowPaddings(totalSize, virtualRows)

  return (

...

       {paddingTop > 0 && (

           <td style={{ height: `${paddingTop}px` }} />

        )}
        {virtualRows.map((virtualRow) => {
          // does not execute because virtualRows is empty ❌
          // however if original data has 3
2 entries and `const { rows } = table.getRowModel()` is 3, virtualRows renders 3 items 😵
          const row = rows[virtualRow.index]

          return (

              {row.getVisibleCells().map((cell) => (

                  {flexRender(cell.column.columnDef.cell, cell.getContext())}

               ))}

           )
        })}
        {paddingBottom > 0 && (

             <td style={{ height: `${paddingBottom}px` }} />

         )}

  )

When rendering multiple rows, virtualisation works as expected. However, when I apply filters to my table and only one row, appears, virtualisation breaks and does not render that item.
Your minimal, reproducible example
https://codesandbox.io/p/github/FranciscoKloganB/tanstack-virtual-v3-bug-reproduction
Steps to reproduce

Go to the minimum reproduction example on codesandbox
Watch te code working as intended with makeData(N) where N is >= 2
Change makeData(N) to have N = 1
Watch the table not rendering any data row

I was also to reproduce this on the original example (after changing to tanstack-virtual v3 beta) provided by TanStack, but in this shared version I removed even more code that it existed on that example (related to sorting results - not relevant for this bug)
Expected behavior
As a user, I expect virtualised rows to render even the original data only contains one row.
How often does this bug happen?
Every time
Screenshots or Videos
I can't share the original video nor screenshots because the table where I would show the bug happening contains classified information protected under GDPR. So I will post a video of the reproduction I made on the codesandbox instead.
https://jam.dev/c/a07de64b-64ac-416b-9be7-9a73aa670538
Platform

Apple macOS
Node v16.20.1

tanstack-virtual version
3.0.0-beta.63
TypeScript version
Vanilla JS
Additional context
Using the following combination of packages:

"@tanstack/react-table": "^8.9.3",
"@tanstack/react-virtual": "3.0.0-beta.63",

Terms & Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.

@FranciscoKloganB latest beta 65 fix exact this issue.

I can confirm the released fixed it. 🚀

this is happening to us on<EMAIL_ADDRESS>and on<EMAIL_ADDRESS>

We are also getting this issue on the latest release. It works in our electron version, but not in the web?

We are also getting this issue on the latest release. It works in our electron process, but not in the web?

@bfan1256 hmm hard to say why, we are using latest version in few projects and works just fine. If you can create codesandbox example then more than happy to check it out, thanks.


Package Tombstones

Description of the new feature / enhancement
Sometimes a package is temporarily not available, or the publisher has chosen not to be included in the Windows Package Manager Community App Repository.
A new Tombstone.YAML file would be used to support this behavior.
If the file is in the package directory, it could be used to hold identifiers to help prevent future submission rather than what would likely happen if there was no manifest for the package. It may contain SHA256 values for known versions to help inform users when they try to submit a manifest that the package has been tombstoned and cannot be submitted.
If the file is in a version directory, that version would no longer be available for search, install, or upgrade, but it would still allow users who have the package (as a dependency) so they could still install software that depended on that no longer available version of a package.
If a user were to try to install a package and the specific required version of the dependency had been tombstoned, the user would be informed that the dependency is no longer available.
Proposed technical implementation details
No response

Here is a list of some use cases for Tombstones, as well as their associated issues/pr's

Issue #
Use Case

microsoft/winget-pkgs#42432
This package has a Dynamic CDN which means that the Sha256 of the installer is different depending on who is downloading it and when. Tombstoning this package with no version available would allow for anyone opening a PR for this package to be informed as to why the package will not be added, and to save resource time by not running the full set of pipeline scans on the manifest.

microsoft/winget-pkgs#41777
This package has versions existing in the repository. However, newer versions of the package are unable to pass the AntiVirus scans. Tombstoning this package for specific versions would allow anyone submitting a version that is known to fail the AVScan to be informed, and to save resource time. This would still allow for new versions, which are not tombstoned, to be submitted and scanned, at which point a tombstone can be added for the new versions if necessary.

microsoft/winget-pkgs#16896
Several different versions of this package have been submitted to the community repository, and all fail due to being blocked by dependencies. This may be due to a number of factors such as users not searching for closed PR's, thinking newer versions have no dependency requirement, or some other line of reasoning. Having the ability to tombstone packages would allow for the ability to avoid duplicate PR's and would create a better experience for the user by keeping them informed.

microsoft/winget-pkgs#45359
When packages are no longer available, their manifests are removed. However, it is possible in the case that a lapsed domain or other error may be transient. Having a tombstone would allow for the package metadata to be retained while removing the package from search results. This would allow for a package version to be restored more easily if a transient error is resolved.

microsoft/winget-pkgs#45299
Some packages use vanity url's for their latest version. This means that the version history and associated metadata (such as release notes) are not retained when the package is updated. Implementing tombstones would allow the previous metadata to be retained while keeping the previous version in the repository. This would also allow for more manifests to have a vanity URL by allowing community members to update older versions with static version links and removing the tombstone after the manifest has been automatically updated.

Some publishers use installers that supports silent installation but disable this feature for some reasons. This happened to

https://github.com/microsoft/winget-pkgs/issues/50783
Fraps (They put a SetSilent normal in the script to turn silent installation to interactive installation at startup)
FreeFileSync (Silent installation is disabled for free versions)
Huorong Internet Security (The installer will exit immediately when it detected it is running in silent mode. They do this for reputation reasons, although they publish one that supports silent installation to msstore, whose link can be easily got by WinGet)

Some publishers use installers that doesn't support silent installation, for example:

https://github.com/PeterStrick/ViVeTool-GUI (Using InstallForge, which doesn't support silent installation: https://installforge.net/support1/docs/running-your-setup-package-in-silent-mode/)

Some publishers use installers that supports silent installation but disable this feature for some reasons. This happened to

I believe this is more related to https://github.com/microsoft/winget-cli/issues/823 than to tombstones

Additionally, some are removed due to malware or publisher request such as FileZilla, which do not need to have been submitted before, but have a tombstone. Especially publisher request. The publisher request should ask you to get it from their website if they have the package available.


WIP: refactor(Modal): update shorthand functionality

Blocking #1542
WIP
This PR will:

[ ] make all shorthand actions close the modal
[ ] fix prop types / typings
...

Codecov Report

Merging #1599 into master will decrease coverage by 0.09%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master    #1599     +/-   ##
=========================================
- Coverage   99.75%   99.66%   -0.1%
=========================================
  Files         142      141      -1
  Lines        2468     2396     -72
=========================================
- Hits         2462     2388     -74
- Misses          6        8      +2

Impacted Files
Coverage Δ

src/modules/Modal/ModalActions.js
100% <ø> (ø)
:arrow_up:

src/modules/Modal/Modal.js
97.14% <0%> (-2.86%)
:arrow_down:

src/collections/Grid/Grid.js
100% <0%> (ø)
:arrow_up:

src/collections/Form/FormField.js
100% <0%> (ø)
:arrow_up:

src/modules/Dropdown/Dropdown.js
100% <0%> (ø)
:arrow_up:

src/elements/Input/Input.js
100% <0%> (ø)
:arrow_up:

src/modules/Search/Search.js
100% <0%> (ø)
:arrow_up:

src/modules/Checkbox/Checkbox.js
100% <0%> (ø)
:arrow_up:

src/modules/Dropdown/DropdownItem.js
100% <0%> (ø)
:arrow_up:

src/elements/Button/Button.js
100% <0%> (ø)
:arrow_up:

... and 3 more

Continue to review full report at Codecov.

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

I've pushed some changes there:

updated to latest master;
reverted change of type in typings;
changed actions to collection shorthand;
added onActionClick prop;
fixed broken tests.

TODO

[ ] make a decision about closeIcon prop, it will be breaking change if we'll left it as customPropTypes.itemShorthand;
[ ] solve warnings with implementsCreateMethod test on ModalActions, I think we to update it with new option, that will skip non array inputs.

ping

I've rebased to the latest master and resolved all issues:
closeIcon - Leaving this as is for minimal churn, allowing with children.
Updated actions propType to itemShorthand since it is not an array of buttons but the props to Modal.Actions.  You can pass an array of buttons because mapValueToProps for ModalActions maps the array to the Modal.Actions actions prop, which is an array of buttons.

Released in<EMAIL_ADDRESS>


Leftover copy-paste sentences

In the section "Create the CloudSyncCustomExtensionApp and service principal", steps 8 and 9 both end with a leftover sentence fragment "If you just created the app"

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

ID: bc45cfd9-188f-fdbf-207f-b9d8e11bc5ab
Version Independent ID: bc45cfd9-188f-fdbf-207f-b9d8e11bc5ab
Content: Scenario - Using directory extensions with group provisioning to Active Directory - Microsoft Entra ID
Content Source: docs/identity/hybrid/cloud-sync/tutorial-directory-extension-group-provisioning.md
Service: entra-id
Sub-service: hybrid-cloud-sync
GitHub Login: @billmath
Microsoft Alias: billmath

@dloder0
Thanks for your feedback! We will investigate and update as appropriate.

@dloder0
Thanks for reporting this! We have created a PR for this issue and the changes should go live soon.


Couple of minor changes

adding stack size detection on Windows
specialize cache_line_data for items that don't require padding
fixing HPX_WITH_SWAP_CONTEXT_EMULATION on Windows

@hkaiser are #4254 and this the last changes you wanted to have in for 1.4.0?

are #4254 and this the last changes you wanted to have in for 1.4.0?

Yes, indeed. Thanks!


Pass host and channel to fconf

See https://github.com/radiasoft/pykern/issues/229
There are two passes reading the input files. First pass reads all the hosts so this would have a channel and host of empty. However, the second passes can have channel and host set. This will allow more programmatic control with fconf. The values can be in rsconf_db.

Dup #102


Dialog theme is not updated when it has been created from a widget where the theme is overridden

Steps to Reproduce

Execute flutter run on the code sample (see "Code sample" section below) or on the code on https://github.com/ValentinVignal/flutter_app_stable/tree/update-dialog-theme
Click on the button "Show dialog" and update the theme (it works)
Close the dialog
Click on the button "Show dialog with overridden theme" and update the theme
Notice the dialog theme is not updated.

Expected results:
The dialog's theme should updated as well as the rest of the app.
Actual results:
The dialog's theme is not updated.

Code sample

You can find this code at https://github.com/ValentinVignal/flutter_app_stable/tree/update-dialog-theme
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

final themeNotifier = ValueNotifier<ThemeMode>(ThemeMode.system);

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

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      animation: themeNotifier,
      builder: (context, child) {
        return MaterialApp(
          title: 'Flutter Demo',
          home: child,
          darkTheme: ThemeData.dark(),
          themeMode: themeNotifier.value,
        );
      },
      child: const MyHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Theme(
              data: Theme.of(context).copyWith(
                primaryColor: Colors.red,
              ),
              child: Builder(
                builder: (context) {
                  return ElevatedButton(
                    onPressed: () {
                      showDialog(
                        context: context,
                        builder: (context) => const Dialog(),
                      );
                    },
                    child: const Text('Show dialog with overridden theme'),
                  );
                },
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                showDialog(
                  context: context,
                  builder: (context) => const Dialog(),
                );
              },
              child: const Text('Show dialog'),
            ),
          ],
        ),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      content: AnimatedBuilder(
        animation: themeNotifier,
        builder: (context, _) {
          return ToggleButtons(
            children:
                ThemeMode.values.map((value) => Text(value.name)).toList(),
            isSelected: ThemeMode.values
                .map((value) => value == themeNotifier.value)
                .toList(),
            onPressed: (index) {
              themeNotifier.value = ThemeMode.values[index];
            },
          );
        },
      ),
    );
  }
}

Logs

With --verbose I was hitting the limit of 65536 characters of Github's issues.
You can find the logs here
https://github.com/ValentinVignal/flutter_app_stable/blob/cdf3ff7aca6d84dc9a563d065222cb9d972bee83/logs.txt
Multiple devices found:
macOS (desktop) • macos  • darwin-x64     • macOS 11.5.1 20G80 darwin-x64
Chrome (web)    • chrome • web-javascript • Google Chrome 102.0.5005.115
[1]: macOS (macos)
[2]: Chrome (chrome)
Please choose one (To quit, press "q/Q"): 1
Launching lib/main.dart on macOS in debug mode...
Building macOS application...
Syncing files to device macOS...                                    89ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

💪 Running with sound null safety 💪

An Observatory debugger and profiler on macOS is available at: http://<IP_ADDRESS>:53117/Ou_hEEleBKQ=/
The Flutter DevTools debugger and profiler on macOS is available at:
http://<IP_ADDRESS>:9101?uri=http://<IP_ADDRESS>:53117/Ou_hEEleBKQ=/

Analyzing flutter_app_stable...
No issues found! (ran in 5.5s)

[✓] Flutter (Channel stable, 3.0.3, on macOS 11.5.1 20G80 darwin-x64, locale en-GB)
    • Flutter version 3.0.3 at /Users/valentin/flutter/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 676cefaaff (4 days ago), 2022-06-22 11:34:49 -0700
    • Engine revision ffe7b86a1e
    • Dart version 2.17.5
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /usr/local/Caskroom/android-sdk/4333796
    • Platform android-31, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)

[✓] VS Code (version 1.68.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.42.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.5.1 20G80 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 102.0.5005.115

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

https://user-images.githubusercontent.com/32538273/175849691-e94f8039-41e9-4192-af88-de0eb74ffca2.mov

Hey @ValentinVignal
Sorry for the delay, I looked at this yesterday and it seems Dialog doesn't when under Builder even tho the theme is providing the correct color, dialog needs to rebuild to reflect changes.
Thanks for all the details!

Is there any update on this issue? I have the same problem with a BottomSheet that's wrapped in a theme.

I have the same problem too


[KYUUBI #2664] Kyuubi Spark TPC-H Connector - SupportsReportStatistics

Why are the changes needed?

fix #2664
How was this patch tested?

[x] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[x] Run test locally before make a pull request

cc @pan3793

Thanks, merging to master


recognize http::status::Statuscode paths in status

i have pasted the mapping verbatim from the http crate (i don't think they are bound to change), and added support for idents or paths in the status field. this allows for the following patterns:
    responses(
        (status = OK),
        (status = StatusCode::BAD_REQUEST),
        (status = http::StatusCode::INTERNAL_SERVER_ERROR),
    ),

note that this does not vaildate the presence of the http crate, so above are valid patterns even if those paths are not in scope.

couple of questions:

would you want this behind a feature flag?
where should this be documented?

i have pasted the mapping verbatim from the http crate (i don't think they are bound to change)

Yeah they are quite static in form thus I reckon its fine. At first I thought that maybe changing the status_code field to TokenStream would be sufficient which would allow us to define the status code like so quote! { http::HttpStatus::ACCEPTED.as_str() }. But this approach does not validate the status codes which makes this approach not smart enough.

would you want this behind a feature flag?

Maybe it is not necessary after thinking this again.

where should this be documented?

It should be documented here: https://github.com/juhaku/utoipa/blob/ab555d6cc272baaa49bb5d816ed718aa92a2ce71/utoipa-gen/src/lib.rs#L505
And possibly an example could  be added below as well.
And perhaps here and in README could mention something like "Utoipa has a builtin support for http crate's StatusCode" https://github.com/juhaku/utoipa/blob/3920a7494021316c84aaa14479ab912fa30f0905/utoipa/src/lib.rs#L80


Build(deps-dev): Bump typescript from 4.8.2 to 4.8.3 (#4009)

Pull request opened by the merge tool on behalf of #4009

Merged in 375cdb462c2fda3c1b501ef0461b39dbd974160b


PLEASE PUT HUGE WARNING ON HOW EXPENSIVE RUNNING THIS IS!!!!

I just checked my AWS balance after running this for just 800 videos. OMFG.

40 cents/minute to convert 4k video, this is insane!

Hi @Kurry,
We are really sorry for the bad experience and thank you for the feedback and bringing this to our attention. Both this repository and the documentation on the solution home page are not very clear about costs, and this is something we will review. If you would like to discuss the bill issue you have raised please reach out to our support team who will be happy to assist you (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-get-answers.html). You can reference this issue on the support ticket.
The best way to estimate how much running the solution costs is to look at the examples on the MediaConvert pricing page (https://aws.amazon.com/mediaconvert/pricing/), which is the main cost component of the solution.
The encoding templates used by the solution are configured to give the best quality for the size of the media outputs but there are a number of options available to you to reduce the overall cost. For reference:

Use Reserved Pricing in MediaConvert (https://aws.amazon.com/blogs/media/reserved-pricing-in-aws-elemental-mediaconvert-part-1-intro-and-how-to-use-it/) or switch to the basic tier. The solution is configured to use the Professional Tier by default for some codecs.
Use custom encoding templates (https://github.com/awslabs/video-on-demand-on-aws#encoding-templates). The default media outputs include 4 formats and 7 bitrate versions including HLS, DASH, CMAF and MSS. If not all of these formats are required then you can reduce the cost of the encoding by removing the presets you don’t need.
If you are not using the latest version (v5), which leverages MediaPackage VOD (https://docs.aws.amazon.com/mediapackage/latest/ug/vod-content.html), evaluate if that is possible. With this option the encoding cost will be greatly reduced as the solution will create a single set of HLS content in S3. MediaPackage VOD is configured to serve the other formats using just-in-time packaging based on demand.

If you haven't done so, we would also recommend either:

Creating a budget in Cost Explorer (https://aws.amazon.com/aws-cost-management/aws-budgets/); or
Creating a Billing Alarm in CloudWatch (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html)

Again, we apologize for the bad experience.

@dscpinheiro Thank you for the response, I did reach out to billing yesterday and they said they would see what they could do. Thanks for the code and great project overall! I wish it did have a pre-built in template to support 5k, 4k video, because you'd think people would want the at least the same resolution they put in. The one thing I am having trouble with is embedding it into a web page to support both Safari and Chrome. If you could create a sample html website to display all the endpoints, that would be helpful. I do see an issue where the HLS index file doesn't load the movie automatically. It launches in a new browser, but it just plays audio, I have to refresh the page to see the whole video. Any ideas why?

Hi @Kurry,
I'm glad you like the solution!
For a future version, we are looking at adding a demo UI so that you can test the outputs of the workflow.
We'll also look at the latest MediaConvert features, such as 8K (https://aws.amazon.com/about-aws/whats-new/2019/11/8k-resolution-encoding-now-available-with-aws-elemental-media-convert/).

@dscpinheiro I had a happy ending! Luckily the AWS billing department approved a billing adjustment of $7,745.46. Now I have a great library of streaming videos for free!
With respect to the project, a couple feature requests:

Some sort of pre-processing to check to see if the file will be successfully converted. I had a couple of jobs that failed because of an audio issue and was still charged for the job.  If you're converting a 60 or 120 minute video, that could be a $23 - $45 mistake.

A default index to allow for easier sorting/paging within dynamo db.

Use machine learning to pick a better thumbnail image. I had some thumbnails there were just blank or just a black screen, so either use a key frame or some heuristic to pick the image.

A REST API using AWS Lambda which uses a template to generate the sample website.

Hi @Kurry,
I'm glad you were able to solve the billing issue.
I've also added the features to our backlog.

Closing this issue for now, but please let us know if you need anything else.


Logging system

I think we should add a good logging system to better visualize the behaviour of the program, especially given its multithreaded scope which is difficult to debug.
I don't think we should write our own implementation, instead I propose one of the following:

spdlog
loguru
plog

In the past I have already used spdlog and it was very good, let me know what you think.

I'd say spdlog looks easy enough to integrate and use but feel free to include whichever you prefer!

I  approve the idea so use the more confortable, spdlog and plog seems very easy to use.


Update docs/defaults on port 8080 usage - zookeeper uses by default at 3.5+I

In zookeeper 3.5.0 and above, an admin server is deployed by default on port 8080.
This is, for example, installed by homebrew on MacOS
The docs state:
The AdminServer
New in 3.5.0: The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL "/commands/[command name]", e.g., http://localhost:8080/commands/stat. The command response is returned as JSON. Unlike the original protocol, commands are not restricted to four-letter names, and commands can have multiple names; for instance, "stmk" can also be referred to as "set_trace_mask". To view a list of all available commands, point a browser to the URL /commands (e.g., http://localhost:8080/commands). See the AdminServer configuration options for how to change the port and URLs.

The AdminServer is enabled by default, but can be disabled by either:

Setting the zookeeper.admin.enableServer system property to false.
Removing Jetty from the classpath. (This option is useful if you would like to override ZooKeeper's jetty dependency.)
Note that the TCP four letter word interface is still available if the AdminServer is disabled.

See more at https://zookeeper.apache.org/doc/r3.5.7/zookeeperAdmin.html
The IMPACT of this is that if the user follows instructions for running tutorials locally, or indeed just launches egeria with defaults, the server will fail due to a port clash.
At a minimum the docs should be updated to remind the user that zookeeper may be a common cause. We should probably also consider whether to keep the default coco pharma environment to using 8080. Or an easier option may be to recommend zookeeper admin server is disabled or moved to another port
The problem is most acute in a standalone developer environment where kafka, zookeeper, egeria are likely colocated. It's not an issue in containers, nor if, for example, kafka is remote.

For example to keep the function enabled one could use:
adminPort=9990
zookeeper.admin.enableServer=true

( /usr/local/etc/zookeeper/zoo.cfg on MacOS homebrew )

Should we consider registering an 'egeria' port with IANA?

Well caught @planetf1

Thankfully ( #2519 ) we now at least allow the error message to explain the clash (in general terms, not specific to zookeeper)
My inclination is to leave the ports as-is, and to just update the docs for 'running locally' .


New NR tracking*

Update to change the way natural repair works. A single number ('NRd') representing days to natural repair is assigned to each leak when it begins leaking.
Interim solution For now, operator_agent.py is defunct and 'consider_operator' should be False for all programs. Future work is actively ongoing to continue improving on NR.

@KeeganShaw-GIS can you please provide a review?


use CidHashMap in the ForestCAR.zst encoder

Issue summary
The .forest.car.zst encoder uses a HashMap<Cid, u64>. This map should be replaced with CidHashMap, which uses less memory. Memory usage when compressing a snapshot should be measured before and after the change.
Acceptance criteria:

[ ] Add missing methods (if any) to CidHashMap
[ ] Replace HashMap<Cid, V> with CidHashMap<V> in car/plain.rs
[ ] Measure change in peak memory use when validating an uncompressed calibnet and mainnet snapshot. See /usr/bin/time -v forest-cli snapshot compress {snapshot}.car.zst

Other information and links
https://github.com/ChainSafe/forest/blob/6dbd776c2e9f17323e2327a2523760e7f2130518/src/db/car/forest.rs#L214

Closing per comment in PR #3304


Sum time from sub-actvitites to main activity

User story
As a user I want the times from sub-activities to be aggregated to the main activity so that I can get better overview of the total time
Dependency
Dependent on solution for #163

Not to hard, can be done in frontend. But might be crashing with #161 .
Discuss and maybe design -> Do we want a fancy summary like a duration per role etc...

Needs some discussion on warning before developement. Otherwise design is ready for developement.
Figma design

Is this the design you had in mind when there are multiple time units @VetleW ?

@QiJin-Bouvet Ready for test

As discussed in the meeting, we are changing this to have a minimum and a maximum amount of time since choices can create subtrees with different duration.

We will call the total durations for low estimate and high estimate, as discussed in the meeting

As discussed in today's meeting we want to emphasize the important difference between working time and waiting time. There may also be a need to cutoff time units in some cases. For example if a process takes years, displaying minutes can be unnecessary. These points should be discussed on the meeting 19.08.
We will calculate the minimum and maximum time by assuming that there is 7 days a week and 30 days a month.

Calculation of min and max time is done. Blocked until the previous comment has been discussed.

As discussed in the meeting we will not round up/down durations. We will also have the text "Low estimate" and "High estimate" in the tooltip and sidebar.

@QiJin-Bouvet This is ready for test. When the low and high estimate is the same and when there is only one path of cards that has  duration then we display "Estimate: " + duration.

Tested with commit c864e56 in TEST env.
Process is 'destroyed' when having a choice card with loop.

@QiJin-Bouvet This is ready for test again

Tested with commit 47aa895 in TEST env.
Low and high estimate time is calculated correctly.
We will discuss how to calculate sum time in the scenario 'choice card with loop' in the status meeting tomorrow.
Currently the loop is been ignored.


Adopt a strategy and set of libraries for handling the QR Code

Let use consider the case of using OIDC SIOP QR Codes, separate from potential DIDComm QR Codes.
OIDC SIOP does not have a concrete implementation yet: https://github.com/decentralized-identity/interop-project/issues/14
In order to complete one, we need to commit to the QR Codes and share enough information about the implementation to support Identity Wallet providers.

I have previously used:
https://github.com/moaazsidat/react-native-qrcode-scanner
https://www.npmjs.com/package/qrcode.react

We may consider this ticket resolved once we have some comments of the feasibility of QR Code support for OIDC SIOP from some wallet implementers.

https://github.com/hellobloom/share-kit-react
^ Bloom library for handling QR Codes.

We're also looking for ways to make the QR less dense so it works on lower res displays. See PR here: https://github.com/hellobloom/share-kit/pull/60
basically the request data would be at a payload URL within the QR. this will allow us to get super granular about when claims were issue and by whom (whitelist, blacklist)

@ipatka I think there's merits to this approach. There's also been some attempts to handle this via a rotating QR code to make the QR like a stream of data. Here's an example: https://github.com/digitalbazaar/qram
One of the considerations of using a link in a QR code is that it has potential analytics concerns. For example, when using bit.ly links bit.ly provides analytics data around the usage of the link to the creator. Do we want to try to prevent the url used from being able to analyze usage in order to account for privacy considerations or should we address these aspects at a later time?

Streaming QRs are a cool solution. Regarding analytics I had imagined that the recipient requesting the data would also host the endpoint with the payload. But I suppose if they were using a standard request they might use a link someone else created. Definitely worth considering.

See also: https://github.com/uport-project/uport-transports/blob/develop/src/transport/qr.js

qram is interesting, but I'd like us to focus on simple static QR Codes for first phase.

A few years ago we had a discussion on streaming QR codes in one of the ISO groups I was participating. There are some patents that need to be considered there.

I think this is essentially blocked by Hubs / EDV / DIDComm... Credential size limits will prevent direct transfer by QR Codes.


Need to be able to develop a DPUL site while Figgy items are still incomplete

The SAE project has used their unpublished DPUL exhibit to demonstrate their project while it is still in development and Figgy items are not yet complete.
There may be ongoing use cases here which would necessitate rethinking https://github.com/pulibrary/pomegranate/issues/684. I'm following up with Ellen.
As a curator I want to build a dpul exhibit before the metadata is complete in figgy so that I can demo it to stakeholders and get feedback.

We have demoed an unpublished site for ephemera, with completed ephemera items that only display in the unpublished DPUL site for review (since it is not linked to catalog records). Emma was happy with this way forward. Closing ticket.

We have demoed an unpublished site for ephemera, with completed ephemera items that only display in the unpublished DPUL site for review (since it is not linked to catalog records). Emma was happy with this way forward. Closing ticket.


Coordinate rotation/translation does not have effect when creating objects

Hello,
I was testing how the coordinate system works, and noticed, that after rotating a coordinate system, it does work on the .Xaxis, .Yaxis and .Zaxis of this coordinate system, but after that, it seem that the rotation is somehow "forgotten" when i create for instance a Point3d object.
example test code below :
//  Coord Test
         Point3d Origin1 = new Point3d(1, 1, 0);
         Vector3d x1 = new Vector3d(0,1, 0);
         Vector3d y1 = new Vector3d(-1, 0, 0);

         Coord3d coord1 = new Coord3d(Origin1, x1, y1, "Coord1");
         coord1.Rotate(coord1.Zaxis, Math.PI/2);
         Point3d p_test = new Point3d(1, 0, 0, coord1); // ISSUE : does not apply the rotated coordinate system (expect (0,-1,0) instead of (0,1,0) in the global coord system)
         Point3d p_test2 = p_test.ConvertToGlobal();

Thank you for your feedback !
PS (a bit out of topic): Lets say we previously created a Point3d according to a custom coordinate system. How does it behave after rotating/translating this custom coordinate system ?
I think that it does not change any coordinate value X,Y,Z, of the Point3d, but this point still refers to the same coordinate system that has been changed ... seems pretty dangerous to me :).

Hi!
It seems that everything working correctly: origin of your local coordinate system is in point (1,1,0), and after rotation the X axis is oriented in opposite direction of global X axis. Therefore the point (1,0,0) in local CS will have coordinates (0,1,0) in global CS.
Rotation of the CS changes only the axes orientation, the origin does not move.
P.S. If some point has local reference CS and this CS is rotated, the point will move with this local CS. Seems quite logical. And dangerous, yes :) I would not change local CS after it is referenced by some other objects, this may have unwanted side effects. Unless you really want to do this.

You are right !! I do not know how I messed myself with my testing.
Sorry for the disturbance ...


[Bug]: dep isBot@^4 needs node >= 18

Version
-

Details
Ref: https://github.com/web-infra-dev/modern.js/pull/5186
Maybe we need to downgrade it to ^3.
Reproduce link

Reproduce Steps

cc @GiveMe-A-Name

Yes,it's my mistake. We need downgrade it to ^3

It fixed by https://github.com/web-infra-dev/modern.js/pull/5206


Ability to retreive the index of a neighborg instead of its value

Hello.
As the search results consists of values instead of indices, I have tried to use such kind of wrapper to access to the indice:
        struct IndexedCoordinates {
            index: usize,
            coords: Vec<f64> // already implment all the necessary traits
        }

and implement the appropriate traits to make it useable.
Although here is no issue to implement the Coordinates trait:
        impl Coordinates for IndexedCoordinates {
            type Value = f64;

            fn dims(&self) -> usize {
                self.coords.dims()
            }

            fn coord(&self, i: usize) -> Self::Value {
                self.coords.coord(i)
            }
        }

I am unable to implement the traits that allow to search a neighbors.
If I am right, I have to implement Proximity for Euclidean<IndexedCoordinates> which is not possible.
Am I wrong in the design of my indexed coordinates ? If so, could you guide me ? If no, is there a possibility to add such ability to the library ?
Thanks

This works:
use acap::coords::Coordinates;
use acap::distance::Proximity;
use acap::euclid::{Euclidean, EuclideanDistance};
use acap::kd::KdTree;
use acap::NearestNeighbors;

struct IndexedCoordinates {
    index: usize,
    coords: Vec<f64>,
}

impl Coordinates for IndexedCoordinates {
    type Value = f64;

    fn dims(&self) -> usize {
        self.coords.dims()
    }

    fn coord(&self, i: usize) -> f64 {
        self.coords.coord(i)
    }
}

impl Proximity<IndexedCoordinates> for Euclidean<Vec<f64>> {
    type Distance = EuclideanDistance<f64>;

    fn distance(&self, other: &IndexedCoordinates) -> Self::Distance {
        self.distance(&other.coords)
    }
}

#[test]
fn test_indexed_coordinates() {
    let tree = KdTree::balanced(vec![
        IndexedCoordinates { index: 0, coords: vec![3.0, 4.0] },
        IndexedCoordinates { index: 0, coords: vec![4.0, 3.0] },
    ]);
    let target = Euclidean(vec![1.0, -1.0]);
    let neighbor = tree.nearest(&target).unwrap();
    assert_eq!(neighbor.distance, 5.0);
}

To use a VP tree you can do
impl Proximity for IndexedCoordinates {
    type Distance = EuclideanDistance<f64>;

    fn distance(&self, other: &Self) -> Self::Distance {
        euclidean_distance(&self.coords, &other.coords)
    }
}

Does that help?

Perfect it compiles !
Thanks a lot.


ACM-13527-Application-list-CSV-export-only-includes-current-page

Thank you for taking on this issue @jeswanke!! You're awesome.

/lgtm


Can you add my Simplified Chinese translation to the mod?

Thanks to your hard work, I have created a simplified Chinese translation that I hope will be adopted. :)
zh_cn.txt

sure, thanks


Remove protobuf maps from serving messages [phab:D592]

Created by schroederc at 2015-11-03 18:39:56:
The wire serialization of proto3 maps are non-deterministic (due to
performance concerns), causing consistency issues in the serving data.
This just removes them to simplify our output.

fromberger commented inline (context lost during migration) at 2015-11-03 18:45:06:
Please comment.

fromberger wrote at 2015-11-03 18:45:06:
Just one documentation-related comment; otherwise looks good, thanks.

fromberger accepted this revision at 2015-11-03 18:45:06

schroederc wrote at 2015-11-03 18:49:20:
Comment

shahms commented inline (context lost during migration) at 2015-11-03 18:49:35:
Since we cannot rely on the protocol buffer to de-duplicate facts, we should likely do so manually rather than blindly copying them.  I'd also argue for sorting them here if the purpose of the change is to make them deterministic.

schroederc commented inline (context lost during migration) at 2015-11-03 18:49:47:
Done

schroederc closed via commit db33580a15e28956da16f3e41588fb67f283d5d6 at 2015-11-03 18:49:58


Fixed an issue where Dataset.to_zarr raised a ReadOnlyError

Fixed an issue where Dataset.to_zarr with both consolidated and write_empty_chunks failed with a ReadOnlyError

[x] Closes #8323
[x] Tests added
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst
[ ] New functions/methods are listed in api.rst

This looks good @Metamess . Thank you!
I'll merge it soon unless anyone knows it better (I don't know this code that well, though the tests look good)

Excellent work @Metamess . Thank you!


Test ci

Propagate test fixes merged to testCI branch

Ok, after resolving merge conflicts there no no new changes here, closing this


Added a "cacheable" lazy check of the debug mode

Added a "cacheable" lazy check of the debug mode check

Can you explain the reason? What issue is it fixing?

 I'm not convinced the ResettableLazy<TValue>.Reset() method is threadsafe either.

 I need to stop coding crazy ideas at 3am, or at least give them more thought! 😂

Gonna close this PR then, thanks anyways :)

No worries, I saw Lee's TODO whilst I had the solution open anyway, and thought i'd try help out.

@tompipe your help is always welcome :)

Me and my TODO notes eh? (it'll be my downfall)
I think I added the note as we were calling AppSettings["Ditto:DebugEnabled"] twice, but I wasn't sure if that could be optimised on our side? (But going from @JimBobSquarePants's comment above, I've read up about it now and .NET does cache it already).
I'll remove the TODO note 😉


Add support to restrict to('best') to input measurement system

Thanks for your consideration...
Currently
convert(16, 'tablespoon').to('best')
results in<PHONE_NUMBER> mL, which is accurate but perhaps not the best option as 16 tablespoons = 1 cup.
It would great if the best option could be restricted to the measurement system of the input.
Or perhaps I have missed how to do that today?

That would be a good feature to add. The reason this doesn't happen currently is because internally tablespoons and milliliters are treated as the same unit family (volume).
Would changing the function like this be good?
// Automatic
convert(16, 'tablespoon').to('best'); // 1 cup
convert(500, 'liters').to('best'); // 500 mL

// Choose
convert(16, 'tablespoon').to('best', 'metric'); // 236 mL
convert(16, 'tablespoon').to('best', 'imperial'); // 1 cup

That implementation looks great to me!

@jonahsnider thanks for considering this new feature...for my planning, would this be something coming soon, or more like weeks away?

I can probably release a working version of this in the next few days. The reason it's taken this long is because of difficulties I had in (premature) optimizations for bundle size & speed.

Unfortunately I still haven't had a chance to make much progress on this feature, I'm not sure when I'll be able to get it in a usable state ready for release. If it's very important for you to have this functionality I'd suggest switching to a different library until I can get this finished (and I will get it finished eventually, I promise!).

Thanks for the update Jonah.  I'm waiting for yours for now.  I haven't found the right combination in other libraries that handles the "best" uom, and is available as UMD...which is likely more due to my skills than availability. 😄

Finally got to finishing this and it's been released in v4.1.0 (the CI/CD bot should have announced that here but it got ratelimited).
The only limitation is that the input measurement system can't be inferred, instead it will default to metric. See the readme for usage examples.

Hello, is there a way to differentiate between US imperial and UK imperial here?

Hello, is there a way to differentiate between US imperial and UK imperial here?

Please use #676 or create a new issue


Cryptic error message

Hi Tim,
I'm trying to upload data to the Cederberg AWS on the database but I'm getting an error message I have never seen before.
The message says:
Can't save: Issues exceeds the maximum length of 1000 in line 1
Github is not letting me paste a screenshot for some reason.

Hi Abri
For some reason the sensor has an end date of 25/Apr/2016. In the last update I included such errors in Issues, however there seems to bee too many of them.
For now removing the end date will fix the problem.
I will have to come up with a better way of handling them in Issues.

It's only the HMP50 air temp and humidity sensor that has an end date of 25 April 2016. That's because at that date it was replaced by the CS215 measuring the same variables. That's not an error and it wasn't a problem last time I did uploads.

Ok, I will remove it from Issues. Will let you know when the new version is uploaded

Thanks

Try now and close the issue if you are happy

Hi Tim,
It's now giving me a different error message.  "Object reference not set to an instance of an object" in "line 1".
Abri

Ok, will check
Tim Parker-Nance
Senior Developer (Coastal)
Elwandle Coastal Node
South African Environmental Observation Network (SAEON)
Room A27, NMU Ocean Sciences Campus, 4 Gomery Avenue, Port Elizabeth
Tel: +27 41 504 4750 Cell: +27 72 141 7953
<EMAIL_ADDRESS>www.saeon.ac.za
On 21 September 2017 at 08:16, Abrisaeon<EMAIL_ADDRESS>wrote:

Hi Tim,
It's now giving me a different error message. "Object reference not set to
an instance of an object" in "line 1".
Abri
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/SAEONData/SAEON-Observations-Database/issues/91#issuecomment-331061896,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ab5h7llXvAhqJ-lxhjJT3ed-mjvsKxh8ks5skf8vgaJpZM4Pdkuz
.

Try now and close if you are happy

Hi Abri
Its not an error, just a warning. Its finding data with dates that are too late for the old sensor but ok for the new sensor.
If its too confusing I can just remove it.

Ok Tim, thanks for explaining. Since it's not specific about which sensor or date it refers to, it's probably not of much use for our applications. Unless someone else needs it, I think we can eliminate it to prevent confusion.
What would be more useful is a notification if there is a date (or rather a time stamp in the case of hourly data) missing. This will notify users that they might be artificially creating a gap in the record (if they haven't carefully checked where a new upload should start) or that a gap exists in a data set that they are uploading (which could help point out errors).
Abri


Roughly how much time does the zero-shot retrieval evaluation take?

Hi,
Many thanks for the great work and releasing the code. How much time does the inference of zero-shot retrieval take? On 2 V100s, it takes around 2 hours for me on MS-COCO. Is that normal or something is potentially wrong with my setup?
Many thanks in advance.

Thanks for your interest in our work. I remember that it takes about 30mins on MS-COCO. Our machine is A100 with GPU memory size=40GB. Are you using the default batch size?

Yes, default batch size from the config retrieval_coco config.

How many A100s do you use for the evaluation?

As you can see here https://github.com/uta-smile/TCL#image-text-retrieval, we are using 8 GPUs.

Thanks.


cannot access https URLS with custom ports

here's a test script, but not that we might turn off the port soon
var url = 'https://minutes.io:8081';
var page = require('webpage').create();

page.open(url, function (status) {
  console.log(url + ' loaded.');
  console.log(status);

  phantom.exit();
});

It works perfectly fine without the :8081

Bumping old issue but I have also been having this issue using port 8001


einfo: fix vewend applet args

Fix typo preventing the args for the vewend applet from being handled.

nice catch, thx


Issue when ending call, Thread EXC_BAD_ACCESS (Mainly in OnFrame)

Hey, I'm somewhat new to iOS development but have been using Xcode and an iPhone to debug my app, which uses this plugin. Sometimes when ending a call I get the following error in Xcode (screenshots attached). I'm assuming this is an issue with iosrtc?

I wonder if ada858218b5e89dc29d614feed48742cee8170b2 would help you.  Can you test latest version from master?

Hello, I am having same issue running on the latest 3.2.2., could you please advise?
Thanks, Andrej


Using Inkscape SVGs

Hi there and many thanks for making this project!
I was injecting an Inkscape SVG to the SVG node and noticed that I had to trim the first few lines of the SVG file as it starts with:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

instead of just <svg. This is an easy fix on the client side but then I noticed that Inkscape has the nasty feature of putting any text in spans which would be removed in the current version. Can I propose to change the setText function to something like the following? I am pretty sure there are some better ways to do it but this seems to work:
function setTextt(svgElement, payload) {
    _checkRequiredFields(payload, ['selector', 'text'])

// TODO in de oude node stond code om de unicode van een fontawesome icoon op te halen
// Misschien best met de nieuwe iconen werken!!!!!!!!!!!!!!!!!
// Wel niet zeker hoe we dat op de server side moeten doen, want daar bestaan die icons niet
    let elements = svgElement.querySelectorAll(payload.selector)
    if (!elements || !elements.length) {
        throw new Error(`No svg elements found for the specified 'selector' (${payload.selector})`)
    }

    elements.forEach(function(element){
        if (!element.innerHTML.startsWith('<tspan')) {
            element.textContent = payload.text
        } else {
            let text_start = element.innerHTML.indexOf(">")
            let text_end = element.innerHTML.indexOf("</tspan>")
            element.innerHTML = element.innerHTML.substring(0, text_start+1) + payload.text + element.innerHTML.substring(text_end, element.innerHTML.length+1)
        }
    })
}

What do you think?
Thanks!

Hi @l-althueser

I had to trim the first few lines of the SVG file as it starts with

Ah ok.  Good that you mention this.  In my set_svg I should remove the xml and comment tags automatically, because it is indeed ok that the injected svg contains it.

Inkscape has the nasty feature of putting any text in spans

Could you share with me a piece of your svg that shows how something like that looks like?
Just to make sure I understand your problem correctly...
Thanks!

Hi!
I attached the full test file that I use at the moment. This is just plain Inkscape and adding some text components with no extra styling or conversion. A typical text component would be:
    <text
       xml:space="preserve"
       id="LS1_InB"
       style="white-space:pre;shape-inside:url(#rect2-6-7);display:inline;fill:#000000"
       transform="translate(-169.91543,-33.586677)"><tspan
         x="255"
         y="214.94796"
         id="tspan4">000.00</tspan></text>

Inkscape uses some transform and span logic to place the text field in the correct position - removing either screws up the format. Therefore, I want to avoid deleting the html components inside the text content of the text field :)
This is the full svg file:

So you want to set the content of the text element with id "LS1_InB", but that contains a tspan element with id "tspan4".  I would think that you change the "tpsan4" to e.g. "LS1_InB_tspan"?  Or perhaps the tspan is nowhere visible in Inkscape, and generated automatically.  In the latter case I understand your fix in my code and I will adopt it...

Right! The naming and placement are automatically performed by Inkscape itself and not visible to the user. There is also no option in Inkscape to avoid the span elements. Unfortunately, I have to rely on Inkscape for these special cases as the future maintainers of the SVG files have no other paid software that handles the files better.
Now that you saying it, we might be able to query for any tspan object inside the innerHTML and go recursively to the text element and just change that - no need for the html parsing. But you are the expert in that field and I would love to see a solution implemented in your node.
Thanks!

@l-althueser,
I started implementing a solution for your problem, but I wanted to have something reusable for other use cases.  Because in the past I added some workarounds for very specific use cases in the old svg node, which I regretted a lot later on.
There are various SVG editors around, each with their own dialects.  And these dialects can change over time, in new versions of these tools.  I can not support all these weird combinations unfortunately...
Then I suddenly realized that I don't need to change anything to solve this, because you can easily use a dedicated css selector!

For a simple text element (with id "my_text") containing text:
     "command": "set_text",
     "selector": "#my_text",
     "text": "Tspan content updated"

For a text element (with id "my_text"), which has a single tspan child element (which contains the text):
     "command": "set_text",
     "selector": "#my_text > tspan",
     "text": "Tspan content updated"

This is how you can use it for Inkscape drawings.

For a text element (with id "my_text"), which has multiple tspan child elements (from which the first one contains the text):
     "command": "set_text",
     "selector": "#my_text > tspan:first-child",
     "text": "Tspan content updated"

And so on...

This way we can keep the code simple, and still support numerous use cases.
And if you don't know how to write a custom css selector for some use case, just ask ChatGpt ;-)
Here is an example flow for Inkscape:
[{"id":"51b14b784794954b","type":"inject","z":"f624e6564f974a57","name":"Add text element with tspan child","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"command\":\"add_element\",\"type\":\"text\",\"id\":\"my_text\",\"attributes\":{\"x\":\"250\",\"y\":\"50\"}},{\"command\":\"add_element\",\"type\":\"tspan\",\"parentSelector\":\"#my_text\",\"style\":{\"fill\":\"red\",\"text-anchor\":\"middle\",\"dominant-baseline\":\"middle\",\"font-size\":\"30px\",\"font-style\":\"italic\",\"font-family\":\"serif\"},\"text\":\"A tspan child for a text element\"}]","payloadType":"json","x":950,"y":1420,"wires":[["9a338535ec8313b6"]]},{"id":"9a338535ec8313b6","type":"ui-svg","z":"f624e6564f974a57","name":"","group":"65805ec358e05ea4","width":0,"height":0,"x":1170,"y":1420,"wires":[["1a204e0ea61e1371"]]},{"id":"86f29f3f65dc2ff2","type":"inject","z":"f624e6564f974a57","name":"Get text","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"command\":\"get_text\",\"selector\":\"#my_text > tspan\"}]","payloadType":"json","x":1030,"y":1460,"wires":[["9a338535ec8313b6"]]},{"id":"918b284798103b7d","type":"inject","z":"f624e6564f974a57","name":"Set text","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"command\":\"set_text\",\"selector\":\"#my_text > tspan\",\"text\":\"Tspan content updated\"}]","payloadType":"json","x":1030,"y":1500,"wires":[["9a338535ec8313b6"]]},{"id":"1a204e0ea61e1371","type":"debug","z":"f624e6564f974a57","name":"Text content","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1330,"y":1420,"wires":[]},{"id":"5409476d82196839","type":"comment","z":"f624e6564f974a57","name":"Inkscape text with tspan demo","info":"","x":960,"y":1380,"wires":[]},{"id":"65805ec358e05ea4","type":"ui-group","name":"SVG demos","page":"0a90f52e8742b298","width":"10","height":"10","order":-1,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"0a90f52e8742b298","type":"ui-page","name":"SVG","ui":"be29745a6e568f30","path":"/page2","icon":"home","layout":"grid","theme":"092547d34959327c","order":-1,"className":"","visible":"true","disabled":"false"},{"id":"be29745a6e568f30","type":"ui-base","name":"UI Name","path":"/dashboard","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false},{"id":"092547d34959327c","type":"ui-theme","name":"Theme Name","colors":{"surface":"#ffffff","primary":"#0094ce","bgPage":"#eeeeee","groupBg":"#ffffff","groupOutline":"#cccccc"}}]

By inspecting the svg - using your browser's developer tools - you can easily see that this way the content of the nested tspan element has been updated:

I will create later on a wiki page about this, to assist others with a similar issue.

Thanks again! Works perfectly!


issue-3034 : fixing byteSize computation for clear() operation

this is daggy fix over - db0a4952
the actual PR for this fix from the current master - https://github.com/ehcache/ehcache3/pull/3062

open another PR for this