Problems with .NET Core 1.1 projects

Environment data
dotnet --info output:
A:\Programming\ASP.NET\Test>dotnet --info
.NET Command Line Tools (1.0.0-preview3-004056)

Product Information:
 Version:            1.0.0-preview3-004056
 Commit SHA-1 hash:  ccc4968bc3

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.14393
 OS Platform: Windows
 RID:         win10-x64

VS Code version:
Version 1.7.2
Commit 7ba55c5860b152d999dda59393ca3ebeb1b5c85f
Date 2016-11-21T22:06:37.428Z
Shell 1.3.8
Renderer 52.0.2743.82
Node 6.5.0

C# Extension version: 1.5.3
OmniSharp Log:
Starting OmniSharp server at 12/10/2016, 11:47:20 PM
    Target: a:\Programming\ASP.NET\Test

OmniSharp server started
    Path: C:\Users\xxxxx\.vscode\extensions\ms-vscode.csharp-1.5.3\bin\omnisharp\OmniSharp.exe
    PID: 7064

OmniSharp: -s a:\Programming\ASP.NET\Test --hostPID 6972 --stdio DotNet:enablePackageRestore=false --encoding utf-8
[INFORMATION:OmniSharp.Startup] Omnisharp server running using Stdio at location 'a:\Programming\ASP.NET\Test' on host 6972.
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Initializing in a:\Programming\ASP.NET\Test
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Auto package restore: False
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Update workspace context
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Resolving projects references
[INFORMATION:OmniSharp#MSBuild] No solution files found in 'a:\Programming\ASP.NET\Test'
[INFORMATION:OmniSharp#ProjectFileInfo] Using tools version: 15.0
[INFORMATION:OmniSharp#MSBuild] Add project: a:\Programming\ASP.NET\Test\Test.csproj
[INFORMATION:OmniSharp#MSBuild] Update project: Test
[INFORMATION:OmniSharp.Startup] Configuration finished.
Starting OmniSharp server at 12/10/2016, 11:48:46 PM
    Target: a:\Programming\ASP.NET\Test

OmniSharp server started
    Path: C:\Users\gggki\.vscode\extensions\ms-vscode.csharp-1.5.3\bin\omnisharp\OmniSharp.exe
    PID: 10928

OmniSharp: -s a:\Programming\ASP.NET\Test --hostPID 6972 --stdio DotNet:enablePackageRestore=false --encoding utf-8
[INFORMATION:OmniSharp.Startup] Omnisharp server running using Stdio at location 'a:\Programming\ASP.NET\Test' on host 6972.
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Initializing in a:\Programming\ASP.NET\Test
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Auto package restore: False
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Update workspace context
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Resolving projects references
[INFORMATION:OmniSharp#MSBuild] No solution files found in 'a:\Programming\ASP.NET\Test'
[INFORMATION:OmniSharp#ProjectFileInfo] Using tools version: 15.0
[INFORMATION:OmniSharp#MSBuild] Add project: a:\Programming\ASP.NET\Test\Test.csproj
[INFORMATION:OmniSharp#MSBuild] Update project: Test
[INFORMATION:OmniSharp.Startup] Configuration finished.

Steps to reproduce

Create new project dotnet new -t Web
Open containing folder with VS Code

Expected  behavior

Extension generates appropriate .launch.json/tasks.json files;
Extension offers to restore packages;
Debugging configuration is set to C#.

Actual behavior

No launch.json/tasks.json files are created;
Extension does not offer to restore packages;
Debugging configuration says No Configurations;
Projects icon says 0 projects;
Opening Program.cs shows errors that the namespace Microsoft.AspNetCore does not exists;
Only way to partially enable Debugging is to select the Configure or Fix 'launch.json' option in the debugging menu and select .NET Core as the option.
When trying to use the OmniSharp: Select Project command, it throws the following error:
command 'o.pickProjectAndStart' not found

According to https://github.com/OmniSharp/omnisharp-vscode#initial-support-for-csproj-net-core-projects there should be at least a minimal support for .csproj files, or have I interpreted that wrong?
Possibly related issues
#283 and #767

@GGG-KILLER you look at https://github.com/OmniSharp/omnisharp-vscode/projects/2 to track the various work items related to support for .NET Core csproj.
To get dependencies to resolve, try doing a dotnet restore on the command line.

@gregg-miskelly Oh, thank you! Since the description on the readme was a bit ambiguous I had no idea of what was actually available or not.
I suppose I'll just close this as a duplicate of #767 then.


dealing with "docstrings and formatting

These are some of the unique formatting and docstring errors that I get when I try to add the ruff linter support to alab_management package. We can safely ignore them as of now since they probably wouldn't affect the working of the code, but we should look into it to ensure that the code becomes even more readable.
@idocx, what are your thoughts on this?
It appears to me that adding docstrings and getting the formatting as per the standard PEP guidelines should be a straightforward task, given the fact that we have tools like Github Copilot readily available. I can work on this PR if you are fine with adding docstrings to classes, methods, and functions, and formatting the code as per the PEP guidelines.
alab_management/device_view/device_view.py:67:13: E722 Do not use bare `except`
alab_management/device_view/device_view.py:68:17: B904 Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling
alab_management/device_view/device_view.py:76:13: E722 Do not use bare `except`
alab_management/device_view/device_view.py:77:17: B904 Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling
alab_management/task_manager/task_manager.py:34:5: F811 Redefinition of unused `RequestStatus` from line 31
alab_management/task_manager/task_manager.py:89:25: PLW2901 `for` loop variable `position` overwritten by assignment target
alab_management/task_manager/task_manager.py:194:9: D401 First line of docstring should be in imperative mood: "Checking if there are any tasks that are ready to be submitted. (STATUS = READY)"
alab_management/task_manager/task_manager.py:254:9: D205 1 blank line required between summary line and description
alab_management/task_manager/task_manager.py:498:89: E501 Line too long (150 > 88 characters)
docs/source/conf.py:33:1: E402 Module level import not at top of file
docs/source/conf.py:99:5: D103 Missing docstring in public function
examples/simple_example/devices/furnace.py:24:89: E501 Line too long (92 > 88 characters)
examples/simple_example/tasks/moving.py:8:19: RUF012 Mutable class attributes should be annotated with `typing.ClassVar`
examples/simple_example/tasks/weighing.py:1:1: D100 Missing docstring in public module
examples/simple_example/tasks/weighing.py:11:7: D101 Missing docstring in public class
examples/simple_example/tasks/weighing.py:16:9: D102 Missing docstring in public method
tests/fake_lab/tasks/heating.py:20:43: B026 Star-arg unpacking after a keyword argument is strongly discouraged
Found 137 errors.

Kindly ignore this duplicate issue for #39


Json Serialization finally!

I think everything works, but the itemproperties and applianceproperties will need more testing, that I don't think I can do.
Atm, this only supports Custom Items, Custom ItemGroups, Custom Dishes, and Custom Appliances.

Close for the time being while I work on further testing and documentation.


Incomplete Zephyr bindings search path

When no bindings directories are specified, but the ZEPHYR_BASE environment variable is set, dtsh will default to the bindings defined and provided by the Zephyr project.
The bindings search path then includes $ZEPHYR_BASE/dts/bindings and $ZEPHYR_BASE/boards.
We should try to default to a bigger subset of the paths mentioned in Where bindings are located.
Note that the Zephyr documentation may be confusing: it seems to state that only subdirectories of <prefix>/dts/bindings are considered, which would exclude the common form <prefix>/boards/<arch>/<board> (see also Custom Board, Devicetree and SOC Definitions).
[EDIT: no, the Zephyr documentation is not confusing, if a board defines custom bindings, there will actually be located in a directory like <prefix>/boards/<arch>/<board>/dts/bindings, not to confuse with the <board.yaml> file in <prefix>/boards/<arch>/<board>]

We now rely on CMake cached variables, when possible, to get closer to the bindings search path specified by Where bindings are located:

the zephyr repository: $ZEPHYR_BASE/dts/bindings, as usual
the application source directory: APPLICATION_SOURCE_DIR/dts/bindings if the CMake variable APPLICATION_SOURCE_DIR is available,  $PWD/dts/bindings otherwise
the board directory: BOARD_DIR/dts/bindings if the CMake variable BOARD_DIR is available, both $ZEPHYR_BASE/boards and $PWD/boards otherwise (in this case we don't know whether it's a Zephyr board or a custom board)
any directories in DTS_ROOT: all DTS_ROOT/**/dts/bindings directories we found if the CMake variable DTS_ROOT is available
any module that defines a dts_root in its build: we still me this part, walking through the modules' build settings seems a lot of work (needs investigation, and confirmation that it's worth the effort)

Only directories that actually exist are included.
Including the whole $ZEPHYR_BASE directory may be incorrect: may we have multiple YAML binding files
with the same name, but for different boards (in different directories) ?
Let's try to find such duplicates:
$ find $ZEPHYR_BASE/boards -type f -name "*.yaml" -printf '%p/ %f\n' | sort -k2 | uniq -f1 --all-repeated=separate
zephyr/boards/arm/actinius_icarus_bee/dts/bindings/actinius-sim-select.yaml/ actinius-sim-select.yaml
zephyr/boards/arm/actinius_icarus/dts/bindings/actinius-sim-select.yaml/ actinius-sim-select.yaml
zephyr/boards/arm/actinius_icarus_som/dts/bindings/actinius-sim-select.yaml/ actinius-sim-select.yaml

zephyr/boards/arm/nrf9160dk_nrf52840/dts/bindings/nordic,nrf9160dk-nrf52840-interface.yaml/ nordic,nrf9160dk-nrf52840-interface.yaml
zephyr/boards/arm/nrf9160dk_nrf9160/dts/bindings/nordic,nrf9160dk-nrf52840-interface.yaml/ nordic,nrf9160dk-nrf52840-interface.yaml

zephyr/boards/arm/nrf9160dk_nrf52840/dts/bindings/nordic,nrf9160dk-nrf52840-reset.yaml/ nordic,nrf9160dk-nrf52840-reset.yaml
zephyr/boards/arm/nrf9160dk_nrf9160/dts/bindings/nordic,nrf9160dk-nrf52840-reset.yaml/ nordic,nrf9160dk-nrf52840-reset.yaml

The Nordic ones (nordic,nrf9160dk-nrf52840-interface.yaml and nordic,nrf9160dk-nrf52840-reset.yaml) are actual duplicates (identical files).
The actinius-sim-select.yaml files differ only by their description strings:
====2
1:8c
3:8c
    of the `sim_select` dt node to `esim` or `external`.
2:8c
    of the associated dt node to `esim` or `external`.

Thus, while including the whole $ZEPHYR_BASE directory is incorrect, this seems currently harmless.

Not really a bug since f177a15, dropping the Bug label and closing.
Feel free to re-open.
Thanks.
--
chris


Allow registration of types where ctor have parameters

I'm using the latest version of SpecFlow (which in turn has the latest version of BoDi =. 1.4.1).
I would like to utulise the 'RegisterTypeAs' way of registering but the problem is the type I am registering has a ctor with parameters.
e.g. I have the following sample
_container.RegisterTypeAs<WebDriver, ICustomWebDriver>();
But the type WebDriver has a ctor that needs parameters.
The use case of doing it this way is so if I register multiple custom drivers they only get resolved (via constructor) for the binding classes that use them for a particular test. (i.e. not all tests need both drivers but some may).
Essentially something similar to Autofac (taken from their site):
// Using a NAMED parameter:
builder.RegisterType()
.As()
.WithParameter("configSectionName", "sectionName");
// Using a TYPED parameter:
builder.RegisterType()
.As()
.WithParameter(new TypedParameter(typeof(string), "sectionName"));

BoDi is a simple DI framework, so definitely it will have a smaller feature set than tools, like Autofac. SpecFlow can be configured to use Autofac (see SpecFlow.Autofac NuGet package) for complex cases.
In you case, you can still use the RegisterFactoryAs<TInterface>(Func<IObjectContainer, TInterface> factoryDelegate, string name = null) to register classes with special constructor parameters, like _container.RegisterFactoryAs<ICustomWebDriver>((cont) => new WebDriver("sectionName"));.
I hope this helps. Please reopen the issue if the solution does not work.


limit the pdf trigger branch to release branch

To avoid a release-*-like branch triggering pdf build.

@purelind PTAL

@purelind PTAL


null.gif and file.gif throw 404 errors

The docs for tracking users with disabled JS (https://nullitics.com/docs/#/script?id=disabled-javascript) use this URL: https://nullitics.com/file.gif. That gives me a 404 error, is this intentional? Thanks!

Exactly, 404 is returned to stop bots and crawlers, as long as the request parameters are missing or invalid. This is the expected behaviour:

Tracking pixel itself, with no query parameters and no Referer headers would result in 404 (there is not enough information to handle this request, and 404 is chosen vs other 4xx status codes to stop the bots from trying)
Tracking pixel with Referer header would result in 200 OK
Tracking pixel with no Referer header but with ?u= query parameter with a valid website URL would also result in 200 OK.


Add xmlns:com -> desktop-to-uwp-extensions.md

How can you miss out that information?

Learn Build status updates of commit 450289b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

hub/apps/desktop/modernize/desktop-to-uwp-extensions.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


Task - Use AWS SDK in NodeJS

Content: I have to use SDK to build a cloud application. Node JS will send the image to S3, if the result is true or not.
In local and EC2 environments.

Result
Có thể tải được image lên S3 trong môi trường production


Remove heartbeats for eventing

/hold
need to confirm with eventing team.

@houshengbo while you are at it, can you also exclude recordevents? thanks

/lgtm

/cherry-pick release-0.26


GL_INVALID_OPERATION : glBlitFramebufferCHROMIUM: src and dst formats differ for depth/stencil

Description
On very specific Mac devices this WebGL error shows when using fog effects. Visually, it causes the fog effect to show in front of objects that are closer to the camera when it should be behind them. So far only seen this on a device running OS X 10.13. However, the issue was reproduced on both Safari and Chrome, so it looks like a hardware support issue.
Error in Chrome on OS X 10.13:
[.WebGL-0x7fba65070000]GL ERROR :GL_INVALID_OPERATION : glBlitFramebufferCHROMIUM: src and dst formats differ for depth/stencil
I'll update this issue with a minimally reproducible project if I get the chance, currently I'm having trouble finding devices to test on since most Mac devices seem to be unaffected.
A device that did show the artifact + error:

WebGL Report of the device above that shows the artifact + error:

A Mac device that did not show the artifact + error:

I could be interested to see log from Firefox as well, they tend to have more details in what is actual problem in their error messages.

@Christopher-Hayes This issue seems to have gone stale, having not been updated in over a year. @mvaligursky made a request about how the issue manifests in Firefox. If you'd like to follow up still, be my guest. But macOS has moved on in the interim so perhaps this is no longer a problem? Anyway, due to the age of the issue, I'll close for now (although happy to reopen).


Added an execution state tracker and corresponding listener class to …

This is the first commit to build a comprehensive and organized test suite for parallelization. The test plan is here: https://github.com/cbeust/testng/wiki/Test-Plans.
This commit consists of:
1> Execution state tracker class which is an interface to a synchronized data structure that stores detailed bookkeeping information for the execution state of a TestNG test run
2> Corresponding test listener implementation to accompany state tracker. I used the listener events to capture much of the bookkeeping information
3> Sample test class with no dependencies as a helper for the test scenarios where parallelization is used for tests that have no dependencies
4> Initial test class to cover the simplest test scenario for the parallel by methods mode

@cbeust Selena contacted me by email a few weeks ago because she wants to fix https://github.com/cbeust/testng/issues/751. I helped her to be able to hack TestNG and I proposed her to start with a test.
She proposed to rewrite all parallelization tests and started by an awesome test plan: https://github.com/cbeust/testng/wiki/Test-Plans
As I understood, this PR is the first of a serie :)
@selenareneephillips Don't forget to add the new test in the testng.xml suite file.

LGTM! :+1:
Ping @cbeust

This looks awesome, @selenareneephillips, very impressive. Thanks!


Pass correct permanent arg to team leave RPC

cc @keybase/react-hackers @keybase/y2ksquad

what does permanent mean

it adds a row on the server so you can't be added to the team anymore unless you request access.
it was added back in the day but never exposed in GUI
https://github.com/keybase/keybase/blob/master/helpers/team.iced#L109-L110


Document exceptions

📚 Documentation
This is only a suggestion, but I find it useful to have what exceptions functions/classes can raise in the docs, so I'd like to suggest adding the Raises: section to public functions/classes.
Progress
dirname $(grep -rl "raise " pytorch_lightning)|sort|uniq|awk '{print "- [ ] "$1}'

[ ] pytorch_lightning/accelerators (#9558)
[ ] pytorch_lightning/callbacks
[ ] pytorch_lightning/callbacks/progress
[ ] pytorch_lightning/core
[ ] pytorch_lightning/core/mixins
[ ] pytorch_lightning/loggers
[ ] pytorch_lightning/loops
[ ] pytorch_lightning/loops/dataloader
[ ] pytorch_lightning/loops/epoch
[ ] pytorch_lightning/loops/optimization
[ ] pytorch_lightning/overrides
[ ] pytorch_lightning/plugins
[ ] pytorch_lightning/plugins/environments
[ ] pytorch_lightning/plugins/io
[ ] pytorch_lightning/plugins/precision
[ ] pytorch_lightning/plugins/training_type
[ ] pytorch_lightning/profiler
[ ] pytorch_lightning/trainer
[ ] pytorch_lightning/trainer/connectors
[ ] pytorch_lightning/trainer/connectors/logger_connector
[ ] pytorch_lightning/tuner
[ ] pytorch_lightning/utilities

The following docstring will look like the below image:
    """
    Raises:
        MisconfigurationException:
            If ``logging_interval`` is none of ``"step"``, ``"epoch"``, and ``None``.
    """

The following docstring will look like the below image:
    """
    Raises:
        MisconfigurationException:
            If ``logging_interval`` is none of ``"step"``, ``"epoch"``, and ``None``.
    """

Hey @akihironitta,
Great idea. Let's start adding them.
Best,
T.C

Hey @akihironitta,
Great idea. Let's start adding them.
Best,
T.C

Could you add "good first issue" label to this issue so that new contributors can work on this issue?

@akihironitta Done! :)

I am new to PyTorch lightning and I can work on this issue!

@dipam7 Hi, thank you for your contribution! To avoid conflicts with other contributors, could I ask which submodule you'd like to work on?

@akihironitta Please have a look at my PR #6171, and if there are any exceptions I have missed.

@akihironitta Hey, I'm currently looking at metrics/classification. I think that would be the easiest for me to do. I'll comment here when I move on to other submodules.

@akihironitta Just submitted a PR #6190 if you can take a look

@akihironitta @dipam7 I am submitting a PR for metrics/regression

@akihironitta  There doesn't seem to be any errors or exceptions in overrides folder

@akihironitta I'm doing metrics/functional as well

@akihironitta There are no changes required for pytorch_lightning/distributed/*. And if cluster_environments is the file pytorch_lightning/plugins/environments/cluster_environment.py, then if that doesn't require any changes. I couldn't find any folder named cluster_environments

@AlKun25 Thank you for letting me know!

@akihironitta Just submitted the PR for functional. #6273

If it is not conflicting with someone else, I could work on /utilities*

Hi @djthegr8, that would be great!

@Borda should we also add this (and type hints) to the new contributor guide for what to do when submitting PRs?

I can do this for pytorch_lightning/trainer if no one is already working on this.

hi @akihironitta, could you please check my PR #16684


Test CI with OS X

Add Mac OS X to travis CI builds

Awesome, having Mac OS supported by Travis CI will be great.
A few comments:

If you want to test CI config changes, just pushing the branch itself is enough and will trigger the CI hooks. You don't need a PR.
Some elements in the build matrix have addons: &valgrind and some don't. What is the purpose of the & ?
It is unfortunate that we need to expand the build matrix manually. When we re-enable the single-threaded build configuration, this will double the number of entries. But given my understanding of the Travis CI config file and the need for the MACOSX_DEPLOYMENT_TARGET environment variable, I couldn't think of a cleaner way :-/

Thanks for working on this!

Oh, and the Linux Clang configurations are not supported on Ubuntu Trusty. Clang just doesn't play well with libstdc++ from gcc with C++11 enabled, so I suggest to just remove these entries from the build matrix.

I noticed the push/branch CI nodes but never made the connection.
(&) is used to create anchor nodes in YAML. The same nodes can be later referenced using a (*). The anchor and reference nodes can be used to remove redundancy in the file. I haven't yet figured how to do it right in our yml file

@CppMicroServices/developers let me know if you are OK with merging this PR.

+1 for merging
This is really nice to have!


Requesting a cube with same start and end date leads to ignoring end date

When using the xcube-cci plugin to request a cube, which has the same start and end date, the end date seems to be ignored and all time stamps post the start date are included. I would expect the cube to include only time stamps which have the particular date.
To reproduce:

import nest_asyncio
nest_asyncio.apply()

from xcube.core.store import find_data_store_extensions
from xcube.core.store import new_data_store

store = new_data_store('cciodp')
store

cube = store.open_data(data_id='esacci.OC.5-days.L3S.RRS.multi-sensor.multi-platform.MERGED.3-1.geographic',
                       variable_names=['Rrs_412_rmsd', 'Rrs_670', 'water_class10'],
                       time_range=['1997-09-03', '1997-09-03'])

Update:
When trying to reproduce the above behavior for a different dataset id, a Value error appears: ValueError: Could not determine any valid time stamps
dataset = store.open_data('esacci.SST.day.L4.SSTdepth.multi-sensor.multi-platform.OSTIA.1-1.r1',
                          opener_id='dataset[cube]:zarr:cciodp',
                          variable_names=['analysed_sst'],
                          bbox=[-30, 20, -29, 21],
                          time_range=['2008-07-01','2008-07-01'])

When increasing the date by one day, the result is a cube with one time stamp, which is 2008-07-01, I would expect this result for the above request and for a time range of two days of a daily dataset a data cube which includes time stamps for both days:

Update:
When trying to reproduce the above behavior for a different dataset id, a Value error appears: ValueError: Could not determine any valid time stamps
dataset = store.open_data('esacci.SST.day.L4.SSTdepth.multi-sensor.multi-platform.OSTIA.1-1.r1',
                          opener_id='dataset[cube]:zarr:cciodp',
                          variable_names=['analysed_sst'],
                          bbox=[-30, 20, -29, 21],
                          time_range=['2008-07-01','2008-07-01'])

When increasing the date by one day, the result is a cube with one time stamp, which is 2008-07-01, I would expect this result for the above request and for a time range of two days of a daily dataset a data cube which includes time stamps for both days:


Bug bounty test - PLEASE DO NOT APPROVE. xnubyq

Bug bounty test - PLEASE DO NOT APPROVE. xnubyq

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Support for NodeRT?

Hello, I can't find anywhere, but it doesn't look like modules are supported. Here's the link to it: https://github.com/NodeRT/NodeRT
Is there any solution to my problem?
In my config, I have:
{
    target: 'node',
    mode: 'development',
    entry: './src/test.js',
    output: {
        path: path.resolve(__dirname),
        filename: 'test.js'
    }
}

my test.js
const { MediaPlaybackStatus, MediaPlaybackType, SystemMediaTransportControlsButton } = require('windows.media');
const { BackgroundMediaPlayer, MediaPlayer } = require('windows.media.playback');

my error:
Child
    Hash: b953aca580b4ac0bc19f
    Time: 267ms
    Built at: 2018-4-10 03:37:38
      Asset    Size  Chunks             Chunk Names
    test.js  14 KiB    main  [emitted]  main
    Entrypoint main = test.js
    [./node_modules/windows.media.playback/lib sync recursive] ./node_modules/windows.media.playback/lib sync 160 bytes {main} [built]
    [./node_modules/windows.media/lib sync recursive] ./node_modules/windows.media/lib sync 160 bytes {main} [built]
    [./src/test.js] 866 bytes {main} [built]
    [fs] external "fs" 42 bytes {main} [built]
    [path] external "path" 42 bytes {main} [built]
        + 4 hidden modules

    WARNING in ./node_modules/windows.media/lib/main.js
    47:16-35 Critical dependency: the request of a dependency is an expression
     @ ./node_modules/windows.media/lib/main.js
     @ ./src/test.js

    WARNING in ./node_modules/windows.media.playback/lib/main.js
    47:16-35 Critical dependency: the request of a dependency is an expression
     @ ./node_modules/windows.media.playback/lib/main.js
     @ ./src/test.js

    WARNING in ./node_modules/windows.media/lib/main.js
    Module not found: Error: Can't resolve './NodeRT_Windows_Media.d.js' in 'C:\Users\errat\Documents\Code\soundflask\node_modules\windows.media\lib'
     @ ./node_modules/windows.media/lib/main.js 17:21-59
     @ ./src/test.js

    WARNING in ./node_modules/windows.media.playback/lib/main.js
    Module not found: Error: Can't resolve './NodeRT_Windows_Media_Playback.d.js' in 'C:\Users\errat\Documents\Code\soundflask\node_modules\windows.media.playback\lib'
     @ ./node_modules/windows.media.playback/lib/main.js 17:21-68
     @ ./src/test.js

    WARNING in ./node_modules/windows.media/build/Release/binding.node
    Module parse failed: Unexpected character '�' (1:2)
    You may need an appropriate loader to handle this file type.
    (Source code omitted for this binary file)
     @ ./node_modules/windows.media/lib/main.js 19:19-59
     @ ./src/test.js

    WARNING in ./node_modules/windows.media.playback/build/Release/binding.node
    Module parse failed: Unexpected character '�' (1:2)
    You may need an appropriate loader to handle this file type.
    (Source code omitted for this binary file)
     @ ./node_modules/windows.media.playback/lib/main.js 19:19-59
     @ ./src/test.js

It looks like you just deleted our lovely crafted issue template. It was there for good reasons. Please help us solving your issue by answering the questions asked in this template. I'm closing this. Please either update the issue with the template and reopen, or open a new issue.


Plugin slows down Sublime Text

Typescript plugin extremely slows down text typing and selection performance on large files like tsserver.js. Slowing down appears even after renaming that file to .txt and opening as Plain Text. This is very annoying when you need to view large logs or csv files.
This behavior is reproducible in clean portable installation of Sublime Text with only TypeScript plugin installed even without opened project and tsconfig.json.
Disabling plugin via Package Control makes Sublime smooth again. Can using *_async api help here? Or is there any setting to disable processing non-js/ts files?

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz (4 x 3000)

Memory (System)
15.93GB (9.38GB free)

System
Windows 10.0.17763.475 (x64)

Sublime
v3.2.1 build 3207 x64 stable channel

Typescript plugin
v3.4.1

Plugin Event Profile
This list shows how much time each plugin has taken to respond to each event:

on_activated:
    Default.pane: 0.001s total, mean: 0.000s, max: 0.001s
    TypeScript.typescript.listeners.listeners: 1.334s total, mean: 0.056s, max: 0.265s

on_close:
    Default.pane: 0.000s total, mean: 0.000s, max: 0.000s
    TypeScript.typescript.listeners.listeners: 0.164s total, mean: 0.055s, max: 0.163s

on_deactivated:
    Default.history_list: 0.011s total, mean: 0.000s, max: 0.002s

on_hover:
    Default.symbol: 0.004s total, mean: 0.000s, max: 0.001s
    TypeScript.typescript.listeners.listeners: 3.556s total, mean: 0.155s, max: 0.691s

on_load:
    Default.detect_indentation: 0.003s total, mean: 0.002s, max: 0.003s
    TypeScript.typescript.listeners.listeners: 0.000s total, mean: 0.000s, max: 0.000s
    Default.exec: 0.003s total, mean: 0.001s, max: 0.002s

on_modified:
    TypeScript.typescript.listeners.listeners: 36.134s total, mean: 0.317s, max: 1.174s

on_pre_close:
    Default.history_list: 0.000s total, mean: 0.000s, max: 0.000s

on_selection_modified:
    TypeScript.typescript.listeners.listeners: 88.955s total, mean: 0.217s, max: 1.569s

I am experiencing the same issue and am also looking for an ability to disable processing of js files.

I found out how to disable processing of js files. Add this line to this package's Preferences.sublime-settings:
"enable_language_service_for_javascript": true

On my case, run yarn install or yarn build command will trigger a hight cpu usage issue, every time.
I have to quit Sublime Text before run that commands


Feature/26 support drs and irs

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 90.28%. Comparing base (e64ea3e) to head (7ee3dc0).
Report is 17 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
+ Coverage   82.70%   90.28%   +7.58%
==========================================
  Files          16       18       +2
  Lines         451      525      +74
==========================================
+ Hits          373      474     +101
+ Misses         78       51      -27

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


positions not updating fast enough

I am using the ib.positions() function in order to get the positions for my account. When I send an order and it fills I call ib.positions() but it doesn't update even though  I can see on the TWS that the position updated. Has anyone else faced this issue or has any work around to get the positions faster.

@advaithhari are you trying to immediately pull ib.positions() after the order is filled?  If so, ib.positions() may have a delay in updating position quantities.  Some people go around this by maintaining their own register of fills and using cumulative totals to see your open positions.  I personally do that, but I also use ib.positions() to compare what I have in my register to what ib.positions() shows but my bot "trusts" my tally based on fills and I only do ib.positions() comparison to double check.

Yeah, this is an IBKR artifact because their API sends all data updates asynchronously.
For my own usage, I add a 1 to 5 second sleep after a trade before printing position updates (and even then sometimes the positions are empty for another couple seconds). For faster updates, I also always listen for commission events which have the actual trade details as soon as possible:
self.ib.commissionReportEvent += self.commissionHandler

where it looks something like:
    def commissionHandler(self, trade, fill, report):
        # Only report commissions if connected (not when loading startup orders)
        if not self.connected:
            logger.warning("Ignoring commission because not connected...")
            return

        logger.warning(
            "[{} :: {} :: {}] Order {} commission: {} {} {} at ${:,.2f} (total {} of {}) (commission {} ({} each)){}",
            trade.orderStatus.orderId,
            trade.orderStatus.status,
            trade.contract.localSymbol,
            fill.execution.orderId,
            fill.execution.side,
            fill.execution.shares,
            fill.contract.localSymbol,
            fill.execution.price,
            fill.execution.cumQty,
            trade.order.totalQuantity,
            locale.currency(fill.commissionReport.commission),
            locale.currency(fill.commissionReport.commission / fill.execution.shares),
            f" (pnl {fill.commissionReport.realizedPNL:,.2f})"
            if fill.commissionReport.realizedPNL
            else "",
        )

The print format gives output like:
2024-03-08 06:30:00.628 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Submitted :: NVDA  240308C01000000] Order 37540 commission: BOT 1.0 NVDA  240308C01000000 at $1.00 (total 1.0 of 100.0) (commission $1.05 ($1.05 each))
2024-03-08 06:30:01.478 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Submitted :: NVDA  240308C01000000] Order 37540 commission: BOT 1.0 NVDA  240308C01000000 at $1.00 (total 2.0 of 100.0) (commission $0.35 ($0.35 each))
2024-03-08 06:30:01.480 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Submitted :: NVDA  240308C01000000] Order 37540 commission: BOT 1.0 NVDA  240308C01000000 at $1.00 (total 3.0 of 100.0) (commission $0.70 ($0.70 each))
2024-03-08 06:30:02.943 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Filled :: NVDA  240308C01000000] Order 37540 commission: BOT 24.0 NVDA  240308C01000000 at $1.21 (total 27.0 of 100.0) (commission $16.72 ($0.70 each))
2024-03-08 06:30:02.984 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Filled :: NVDA  240308C01000000] Order 37540 commission: BOT 70.0 NVDA  240308C01000000 at $1.21 (total 97.0 of 100.0) (commission $48.78 ($0.70 each))
2024-03-08 06:30:02.986 | WARNING  | icli.cli:commissionHandler:1410 - [37540 :: Filled :: NVDA  240308C01000000] Order 37540 commission: BOT 3.0 NVDA  240308C01000000 at $1.21 (total 100.0 of 100.0) (commission $2.09 ($0.70 each))
2024-03-08 06:35:45.942 | WARNING  | icli.cli:commissionHandler:1410 - [37549 :: Submitted :: NVDA  240308C01000000] Order 37549 commission: SLD 11.0 NVDA  240308C01000000 at $1.50 (total 11.0 of 100.0) (commission $7.71 ($0.70 each)) (pnl 310.56)
2024-03-08 06:35:46.046 | WARNING  | icli.cli:commissionHandler:1410 - [37549 :: Filled :: NVDA  240308C01000000] Order 37549 commission: SLD 4.0 NVDA  240308C01000000 at $1.50 (total 15.0 of 100.0) (commission $2.80 ($0.70 each)) (pnl 112.93)
2024-03-08 06:35:46.046 | WARNING  | icli.cli:commissionHandler:1410 - [37549 :: Filled :: NVDA  240308C01000000] Order 37549 commission: SLD 85.0 NVDA  240308C01000000 at $1.50 (total 100.0 of 100.0) (commission $59.57 ($0.70 each)) (pnl 2,399.75)
2024-04-15 14:45:32.972 | WARNING  | icli.cli:commissionHandler:1491 - [0 :: Filled :: 28812380] Order 23311 commission: SLD 2.0 SPY   240419P00515000 at $11.06 (total 2.0 of 0.0) (commission $1.42 ($0.71 each))
2024-04-15 14:45:32.973 | WARNING  | icli.cli:commissionHandler:1491 - [0 :: Filled :: 28812380] Order 23311 commission: BOT 22.0 SPY   240419C00515000 at $0.77 (total 22.0 of 0.0) (commission $15.33 ($0.70 each))
2024-04-15 14:45:32.974 | WARNING  | icli.cli:commissionHandler:1491 - [0 :: Filled :: 28812380] Order 23311 commission: BOT 8.0 SPY   240419C00515000 at $0.76 (total 30.0 of 0.0) (commission $5.57 ($0.70 each))
2024-04-15 14:45:32.980 | WARNING  | icli.cli:commissionHandler:1491 - [0 :: Filled :: SPY   240419P00515000] Order 23314 commission: BOT 2.0 SPY   240419P00515000 at $10.55 (total 2.0 of 0.0) (commission $0.55 ($0.28 each)) (pnl 100.03)
2024-04-15 14:45:32.980 | WARNING  | icli.cli:commissionHandler:1491 - [0 :: Filled :: SPY   240419C00515000] Order 23313 commission: SLD 30.0 SPY   240419C00515000 at $0.86 (total 30.0 of 0.0) (commission $8.41 ($0.28 each)) (pnl 248.68)
2024-04-17 13:10:43.265 | WARNING  | icli.cli:commissionHandler:1491 - [23675 :: Filled :: SPY   240419P00490000] Order 23675 commission: SLD 1.0 SPY   240419P00490000 at $0.28 (total 1.0 of 1.0) (commission $0.63 ($0.63 each)) (pnl 4.74)
2024-04-18 08:15:08.223 | WARNING  | icli.cli:commissionHandler:1491 - [23752 :: Filled :: ASML] Order 23752 commission: SLD 6.0 ASML at $892.00 (total 6.0 of 100.0) (commission $0.38 ($0.06 each)) (pnl -138.40)
2024-04-18 08:15:08.225 | WARNING  | icli.cli:commissionHandler:1491 - [23752 :: Filled :: ASML] Order 23752 commission: SLD 94.0 ASML at $892.00 (total 100.0 of 100.0) (commission $0.46 ($0.00 each)) (pnl -2,162.71)

(sample extracted from https://github.com/mattsta/icli/blob/fe46fef75d7f771043113c1d3dd46683074745d9/icli/cli.py#L1409-L1469C10)


Corrected test error.

Rearranged data to be reachable without specializing linklist.
Modified testprogram accordingly.
LinkList_Length() now returns an int also when list==NULL.

But when be used in bottom lib of C/C++, the Value data is unreachble and we has to use new linklist for security.


Different hosts as rules of instead of different ALBs

Right now if I have two hosts on the specs of my ingress resource, one ALB is created for each one.
Could we have an option so that different hosts are configured as different rules of just one ALB?

@y86 - what version of the controller are you using?

I am using this one:
quay.io/coreos/alb-ingress-controller:0.8

@y86 makes sense, that version does not support host-based-routing.
We just recently cut a version 1.0-alpha.3. Would you be willing to give this a try? It includes the host-based-routing support you're looking for.
Do note it no longer syncs route53 natively.
I'd recommend you checkout the walkthrough here: https://github.com/coreos/alb-ingress-controller/blob/master/docs/walkthrough.md
Please re-open this ticket or create a new one if this issue were to persist in the controller version that supports this feature.

I'll give it a try and let you know.
Thanks @joshrosso!


Update register-devices-partner.md

Both the scripts are similar and it works for partners as well - So removed the part "he Windows PowerShell script is different from the one used for the Microsoft Managed Desktop Admin portal." from not.
Also added a note about editing the file in excel and saving as a CSV will not generate a usable file -Extra columns are not supported. Quotes are not supported. Only ANSI-format text files can be used (not Unicode). Headers are case-sensitive. Editing the file in Excel and saving as a CSV file will not generate a usable file due to these requirements.

@JohanFreelancer9 Please copy review

Issue#https://github.com/MicrosoftDocs/microsoft-365-docs/issues/5506

@jaimeo Please merge this PR. Thanks

@msbemba @JohanFreelancer9 : we do not use "please."

@jwmurraycmu are you OK with these edits w/r/t technical accuracy?

@AlexBlain are you OK with these edits w/r/t technical accuracy?

@jaimeo fine with that


Exploit to refund more that was invested

A Sid Meier exploit similar to #62 can be performed Jack Tramiel, that allows you to get a refund that surpasses the initial value at which you bought a chip (up to 140% of its initial value).
This means you can repeatedly buy and sell a chip for a free return in bits, without actualy playing the game !
Profit 🤑

Yes, true. But unlike the Bruce Schneier exploit I was aware of that ;)
I think it's not so much a problem. If you can make some cash that way, why not ... but it's rather tedious, and you can't gain very much this way. Economically it's much more advantageous to level up Benoît Mandelbrot. Or even Hollerith.

Have had a second thought about this. You are right, this is a problem. Or it has become one in the latest version, because it is now possible to buy and sell chips in PAUSED mode, without un-pausing the game. That will actually allow to gain an arbitrary amout of cash at the start of each level.
Better limit Tramiel to 100% efficiency.

in version 1.27, Tramiel is limited to level 6. (This still gives a refund of 110%.)


texlive: 2020 -> 2021

Motivation for this change
Update to the latest texlive snapshot. Provide minor fixes for some items in texlive.bin.
I have built all packages in texlive and tested the updated binaries on some of my personal LaTeX projects.
Additional changes
Also changed texlive.bin.dvisvgm to again use the version provided by TeXLive instead of relying on upstream.
This PR also changes the texlive.bin.core package to use the xpdf provided by TeXLive. This might be controversial, but to me, it seems like the best option as the version provided by Nixpkgs is marked as insecure. Of course, the version provided by TeXLive is equally insecure but should probably be fine to use within the context of TeX.
Things done

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

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

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

I'm also aware that this is an update with potentially complex ramifications. If one of the existing "TeXLive in Nixpkgs" maintainers would like to integrate my changes into their own PR or discard my work and do it themselves that is just fine by me.


Capitalize titles appropriately

I left them uncapitalized intentionally. That's just the style of this website.


[Task]: PoC: Micrometer + NewRelic

SubTasks

Another attempt because we are able to get span to show up on NewRelic now.

This PoC was successful.


Print options of OPTGEOM added

@bcamino That should fix the missing ONELOG keyword

@Spica-Vir , thank you very much for this!


"Go to Implementation" LSP feature

Change brings a "Go to implementation" feature for the Sorbet LSP. There are four main scenarios how the feature can be called:

From the definition of the abstract function
From the call of the abstract function
From the reference of the abstract class
From the definition of the abstract class

The algorithm behind the feature is trivial: if a request was called on the method node, I go up to the owner class node of the function. If the owner class is abstract, I go over all of the defined classes and pick ones, which derive from owner class. Then find a method, which overrides the originally requested one. Logic for the other cases is similar.

Motivation

https://github.com/sorbet/sorbet/issues/3435
Test plan

I've update an existing tests to pass. Change requires a proper testing like it's done for the "Find Definition" andthe "Find All References" feature. It will be implemented in the further PRs for the sake of easy and small reviews. Postponing tests shouldn't be a problem, because all new functionality is hidden behind a flag.

@jvilk-stripe I've added new changes with an input form your comments. Can you take a look please?

I want tests to be running automatically on push, so I'm going to close this PR and open a new one based on the branch in sorbet repo, not in my fork.


Limit shape under Plancherel's law

Hello,
I think it would be nice to add a plot of the shape of the rescaled Young diagramme in Russian notations and the limit function $\Omega$.
I think that it would help to illustrate the Vershik-Kerov-Logan-Shepp limit shape theorem.
See for example https://arxiv.org/pdf/1212.3351.pdf  page 32

That would be lovely indeed.
Do you have time to think about it @SlimKammoun ?
That could be useful to generate your figures to be used in articles :)

I will try  :)
( I am not really in ease with graphics. But it's to time to learn :p)

Hey @SlimKammoun,
Would the following kind of display be satisfactory enough ?

I am planning to commit soon, so that you can play with it and give some feedback ;)
Btw, to get the limit shape, I am actually rescaling by $\sqrt(theta)$ (see s.12) and not $theta$ (see p.32).
Don't know if that's the right thing to do, I am a bit rusty ...

I obtained this graph
diag.pdf
in this commit : https://github.com/SlimKammoun/DPPy/commit/ff4d9439dc407fe54f24876fce7366e98e1fca23;
But yours is much more better thank you very much

None of them is better, they're the same 👍
The link to the commit doesn't work, can you update it please ?
Do you know what is the right rescaling to apply ?

Btw, to get the limit shape, I am actually rescaling by $\sqrt(theta)$ (see s.12) and not $theta$ (see p.32).
Don't know if that's the right thing to do, I am a bit rusty ...

I think it is more commun to rescale by $\sqrt(theta)$  (so that the ecpectation of  the area of the function is equal to 1) and for another link to the semi circular law   (see   [http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=BDAAD0066A3EBA3227E775570E455992?doi=<IP_ADDRESS>.7744&rep=rep1&type=pdf](page 13)  ) .  But I have already seen both scalings (like for the semi circular law).

I think it is more commun to rescale by $\sqrt(theta)$ (so that the ecpectation of the area of the function is equal to 1) and for another link to the semi circular law (see  page 13 ) . But I have already seen both scalings (like for the semi circular law).

for the rescaling it depends on how to define the posonized Plancherel measure. The rescaling parameter is the average size of the Young diagram.
So I think you chose the good scaling adequate to the definition you used before.
For the link of the commit (here

Hi @SlimKammoun,
Can you play with the PoissonizedPlancherel object or simply visualize the output and give me some feedback with a comment or pull request ?
If the current proposal suits you, you can close the issue 🤞


Error in post data

Hello,
I try to post data to my server script. But I get a error..
{
"error": "MongoError: insert raw message size does not match message header size [11] != [1702127988] [409]"
}
Please help me out

I simply cannot get post to work using Postman or Curl:
curl -X POST --data '{"title":"Bacon"}' http://localhost:3000/api/list
curl: (3) [globbing] unmatched close brace/bracket in column 12
{"error":"MongoError: insert raw message size does not match message header size [1] != [123] [409]"}
curl -X POST --data "{'title':'Bacon'}" http://localhost:3000/api/list
{"error":"MongoError: insert raw message size does not match message header size [17] != [1769219963] [409]"}
Any suggestions?

UPDATE: The above effort was attempted using Windows, but I tried again on my MBP and posted from cURL successfully.
For anyone else using Windows, the quotes need to be escaped - either format below will work, but I prefer the second option:
curl -X POST --data '{"""title""":"""Bacon"""}' http://localhost:3000/api/list

curl -X POST --data '{\"title\":\"Bacon\"}' http://localhost:3000/api/list


recordLogs cheatcode reverts with Invalid data

Component
Forge
Have you ensured that all of these are up to date?

[ ] Foundry
[ ] Foundryup

What version of Foundry are you on?
forge 0.2.0 (0e6c8fb 2022-05-21T03:23:31.545158869Z)
What command(s) is the bug in?
forge test
Operating System
Linux
Describe the bug
Tried to record logs in a test, got this:
  [3008] ContractTest::testApprove()
    ├─ [0] VM::41af2f52()
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c496e76616c696420646174610000000000000000000000000000000000000000
    └─ ← "Invalid data"

forge 0.2.0 (https://github.com/foundry-rs/foundry/commit/0e6c8fb0154b67e192bc5a358a9aef66a0846f33 2022-05-21T03:23:31.545158869Z)

could you please try with current nightly after running foundryup

Yep, that was the problem.


Row value update on Firebase removes filtered data on table

I'm submitting a ...  (check one with "x")
[ X] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
I'm using ngx-datatable 12.0.0 on Angular CLI 6.0.2 with table rows being populated by Firebase Real-Time Database (firebase 5.0.3).
When I filter the table data and edit some row values stored in Firebase, ngx-datatable removes filtered data and redirects to the first page of the table.
Expected behavior
I would expect ngx-datatable to  keep the data filtered after a row value is changed on Firebase.
Reproduction of the problem
You can see the behaviour reproduced in Stackblitz : https://stackblitz.com/edit/angular-nyqcuk
The steps to reproduce are as below:

Click Reset Data to set the baseline data in Firebase
Filter by name John
Click Edit Data
You're redirected to the first page of the table with unfiltered data.

Repeat the same steps to reproduce again.
Please tell us about your environment:
Issue is reproduced using Webstorm and Stackblitz.
Extract from package.json:
"dependencies": {     "@angular/animations": "^6.0.2",     "@angular/cdk": "^6.0.2",     "@angular/common": "^6.0.0",     "@angular/compiler": "^6.0.0",     "@angular/core": "^6.0.0",     "@angular/forms": "^6.0.0",     "@angular/http": "^6.0.0",     "@angular/material": "^6.0.2",     "@angular/platform-browser": "^6.0.0",     "@angular/platform-browser-dynamic": "^6.0.0",     "@angular/router": "^6.0.0",     "@firebase/app": "^0.3.2",     "@firebase/app-types": "^0.3.1",     "@firebase/database": "^0.3.2",     "@swimlane/ngx-datatable": "^12.0.0",     "angularfire2": "^5.0.0-rc.9",     "core-js": "^2.5.4",     "firebase": "^5.0.3",     "rxjs": "^6.0.0",     "rxjs-compat": "^6.1.0",     "zone.js": "^0.8.26"   }

Table version: 0.8.x
12.0.0

Angular version: 2.0.x
6.0.2

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

All Browsers

Language: [all | TypeScript X.X | ES6/7 | ES5]
TypeScript 2.7.2

Filtering on the observable directly solved the issue.


A suggestion

Hi, thank you for your vue component, I use it in my project, it really did me a favor.
During my using your component, a suggestion comes into my mind: the component should not create the scroller element(div) by itself, just let the user do it. The reasons are as follows:

if scroller element is a div, it isn't semantic enough. When I used Iscroll plugin in a Jquery project years ago, I usually used a 'ul' element as scroller element, it is more semantic.
Although vue-iscroll-view provides scrollerClass for users to add class to scroller element, the css class selector doesn't work for scroller element when we add a 'scoped' attribute to style tag.  As you know, when we set a scoped attribute to style tag, Vue will add a hash attribute just like 'data-v-xxxxx' to html tag, and also add an attribute selector to css code, just like '.scroller[data-v-xxxxx]{display:flex}'. When the vue-iscroll-view add a div as scroller element, Vue is fail to  add an atrribute to it. So the css code changed by Vue which is used for decorating the scroller element that has not a hash attribute will not work for the scroller element.

I'm looking forward your reply.

Glad to hear those suggestions 😄

I think the scroller just should be a wrapper with semantics, you can put an ul element inside, it's semantic enough. If you have some solid reason to prove it is totally necessary, I will consider adding an property tag just like TransitionGroup component.
That's really a problem, you can try to resolve it with a CSS selector ISCROLL_COMPONENT>div this time. However, I have no good idea about supporting scoped CSS. Do you have some?

Hello, is somebody here?

Hello, is somebody here? @momopig

@Dafrok
My implementation ideas is: As you know, the scrollView element is the parent node of scroller element, and they are in the same css scope. We can get the hash attribute just like 'data-v-xxxx' from the scrollView element, and create a new one the scoller element.
The concrete implementation will show in my code, and I have sent a pull request.

1.0.3 with #14 has been released.

加个好友？这是我的qq:121978614


I can't install extension by --install-extension

I try to move code-server to /usr/bin , when I install extension by --install-extension,the output show extension install success,but I can't find it in extension list of code-server,and extension is not activited.PS:I changed the data-dir and extension-dir.

the same for me

my docker-compose file
  ide:
    image: registry.gitlab.com/demodesk/vscode
    container_name: deaddesk-ide
    hostname: demodesk-ide
    command: --allow-http --disable-telemetry --password 'HuL1PALIsH'
    user: 0:0
    volumes:
      - ./:/home/coder/deaddesk
      - /root/.gitconfig:/root/.gitconfig
      - /root/.ssh:/root/.ssh
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      development:

@Vorob-Astronaut Are you sure about that password exposure?

@leeli73 is extension-dir a typo? It should be extensions-dir.
You'll also need to pass extensions-dir to both commands if you
aren't already (both when installing the extension and when
running main code-server).

@Vorob-Astronaut Are you sure about that password exposure?

it has been already changed, translated from russian it says f*ck off or something like that :)

Requesting further information. Failure to reply means it was fixed in your end and I'll close this automatically after 3 days.


Decide Istio module scope

Is your feature request related to a problem? Please describe.
Right now we don't have scenarios and haven't agreed scope for Istio module.
Describe the solution you'd like
Based on spike 1821 we need to agree clear scope for Istio module initial development.
Describe alternatives you've considered
None.
Additional context
No.

In this task we should decide scope of Istio module. We have to do basic research what are use cases and identify order of work. Similarly as in #1819 but in that other task, we know scenarios because we already use Kubernetes heavily, and with Istio we're not that skilled.

Create an Istio module that will:

Install Istio on Managed and unmanaged K8s - Must Have
1.1 Istio by default will use Third party tokens for authentication - which is not enabled on all platform, using istioctl this will be detected automatically (https://istio.io/latest/docs/ops/best-practices/security/#configure-third-party-service-account-tokens) or we may "ask K8s" if it is supported before installing Istio
1.2 Istio Operator should be a better option to manage Istio (CR should be well supported by ArgoCD)

Support Observability - configure Prometheus to scrape metrics from "Istio Prometheus" - Should Have

Default route - configure default route which is recommended security practice "VirtualService with a default route for every service should be set by installer."

@mkyc @rpudlowski93 @seriva please comment if you have any suggestions.

I've read what was done in #1821. There is just a few steps to install/update/uninstall Istio with operator, but we plan to wrap even that with modules. We are going to create an additional level of complexity, when it's not necessary.

Install Istio on Managed and unmanaged K8s:

👍

Support Observability

That I would plan when we reach observability modules.

Default route

👍

I've just updated #1821 about upgrade process and I can confirm once again that installing Istio using operator and upgrading/uninstalling is super easy.

Using Istioctl and operator looks like the best connection for us 👍
I'm really curious of opinion from @atsikham that maybe we don't need to wrap it to module, @mkyc can You comment it?
Support Observability - it can be done using Mixer component from control plane. "Sidecar agents collect metrics on requests and services and send them to Mixer. Mixer is where Istio aggregates all metrics for telemetry and makes them available to external tools for further analysis."

I've read what was done in #1821. There is just a few steps to install/update/uninstall Istio with operator, but we plan to wrap even that with modules. We are going to create an additional level of complexity, when it's not necessary.

In general modules approach is designed to remove different ways to operate different components.
As far as I can imagine now, we would enclose Istio installation steps into some Ansible script. As I just found during this PR terraform modules will be very similar to each other and will be easy to abstract, but still test separately and apply "case by case" modifications where required. I assume very similar situation with "ansible modules" - after some initial struggle one pattern will emerge.
Istioctl itself is additional level of complexity, ansible is additional layer of complexity, and so on. Those levels are created to achieve different goals: Istioctl goal is to hold tight grip on all what is related to Istio related operations on kubernetes, Ansible goal is to provide unified Python'ish framework to operate OS level, and epiphany modules goal is to provide our users with nice LEGO-like bricks they can put together to build something useful in couple simple steps.

Istioctl itself is additional level of complexity - It's not true, as it's created to simplify Istio management and actually It does that.
Ok, let's see how things will go with that module.

@mkyc @atsikham is this conversation enough to start working on Istio Module?
To sum up:

Install Istio on managed and unmanaged K8s. <- that is where we start
It means - create a module that will install Istio Operator which will allow us to maintain Istio config (routing, ingresses, certs) using CR's.

For unmanaged K8s we want to use the module to just deploy it on top of our current old stack EpiCLI cluster correct?

Added some comments in #1821.

Yeah, we should also have decision here if we are required to provide offline mode in first version.

So as discussed, we are moving forward like so:

Use Istio operator
For managed clusters for now Istio will be implemented in classic Epicli/Epiphany as an additional application deployment. Offline mode should work like other components: #1911
For EKS and AKS we will create an additional module doing the same. Offline mode will be semi supported by using the flag --hub . Users will be required to setup there own docker repo for usage with the flag. #1910

I believe we have decisions and we can proceed to DoD.


allowing variables in constraints

Right now the values used in contraints are statically defined in the rule or caveat, but it could be useful to make them more dynamic.
As an example, if we wanted to define that the owner of a folder has all rights on any file in that folder or its subfolders, we would be able to write the following rule (with variable names instead of numbers for readability):
right($path, $operation) <- user($user_id), owner($user_id, $folder), operation($operation),
  resource($path) @ path matches $folder*

With that rule, we can define a path prefix constraint using the folder defined in the owner fact.
With this we could also compare integer variables between facts, and I think there could be some applications with set constraints too.
This would be a breaking change in the binary format.

@daeMOn63 any opinion on this?

Looks cool! It opens lots of new options for rule and caveat definitions. I already have few spot in the signature flow where it could be helpful.
I'm still wondering if this won't make rules too complex or abstract, making it hard to see what it would produce and when it would apply, which could end being a bit dangerous in authorization flow.
Also a bit afraid of potential injection / type confusion that can happen, if the user get some control over $path and $folder... Would need to experiment with it a bit!

yup, I'm planning to make a branch to test it out. There might be issues around typing too, I'd have to be careful

I'm currently working on integrating expressions, and I think I got a good design. First, it stays compatible with constraints, as constraints are a subset of the expressions. It will be serialized and executed as a serie of opcodes on a stack machine. As an example:
-1 < $var1

Would be serialized as:
Int(1), Negate, Variable(10), LessThan

Execution would work as follows:
// opcode, stack
Int(1)       []                // a raw value is pushed onto the stack
Negate       [Int(1)]          // a unary operation pops from the stack, applies the operation then pushes the result
Variable(10) [Int(-1)]         // we replace Variable(10) with the value we got from other facts, and push it on the stack
LessThan     [Int(-1), Int(0)] // a binary operation pops two values, applies the operation then pushes the result

When successful, the stack would contain only one value, a boolean. I also have the design for a pretty printer, than can generate a human readable expression from the opcodes.
To support it, we'll need new types:

boolean, so they can be returned as value (also they might be used as flags in facts)
sets, as proposed in #51, so they can be in integer, string, symbol and byte array constraints

We'll need some precise restriction on typing, like making sure that the < operator requires the same type on both sides (integer or date). There would still be a case where depending on the set of facts considered, the operator get ints on both sides, or dates on both sides.
If an operator gets an unexpected type (example: prefix operation with an integer), we stop execution and do not return a value.
For sets, I think we'll use a "set of IDs" as proposed in #51, but with some restrictions:

all elements must have the same type
if it contains variables, we fill all of them in when pushing the set onto the stack
sets of sets are forbidden

For now, I'll work on reproducing all of the constraints, then I'll see how it can be extended.
I'm excited about this feature, because it will open up nice patterns, while keeping the code simple (right now I'm at about 130 lines of code for expression, each new operation adding 3 lines).

I'm currently working on integrating expressions, and I think I got a good design. First, it stays compatible with constraints, as constraints are a subset of the expressions. It will be serialized and executed as a serie of opcodes on a stack machine. As an example:
-1 < $var1

Would be serialized as:
Int(1), Negate, Variable(10), LessThan

Execution would work as follows:
// opcode, stack
Int(1)       []                // a raw value is pushed onto the stack
Negate       [Int(1)]          // a unary operation pops from the stack, applies the operation then pushes the result
Variable(10) [Int(-1)]         // we replace Variable(10) with the value we got from other facts, and push it on the stack
LessThan     [Int(-1), Int(0)] // a binary operation pops two values, applies the operation then pushes the result

When successful, the stack would contain only one value, a boolean. I also have the design for a pretty printer, than can generate a human readable expression from the opcodes.
To support it, we'll need new types:

boolean, so they can be returned as value (also they might be used as flags in facts)
sets, as proposed in #51, so they can be in integer, string, symbol and byte array constraints

We'll need some precise restriction on typing, like making sure that the < operator requires the same type on both sides (integer or date). There would still be a case where depending on the set of facts considered, the operator get ints on both sides, or dates on both sides.
If an operator gets an unexpected type (example: prefix operation with an integer), we stop execution and do not return a value.
For sets, I think we'll use a "set of IDs" as proposed in #51, but with some restrictions:

all elements must have the same type
if it contains variables, we fill all of them in when pushing the set onto the stack
sets of sets are forbidden

For now, I'll work on reproducing all of the constraints, then I'll see how it can be extended.
I'm excited about this feature, because it will open up nice patterns, while keeping the code simple (right now I'm at about 130 lines of code for expression, each new operation adding 3 lines).

So, after a few more tests, I'll forbid sets containing variables too. There are a lot of pitfalls.
Example: we look up a fact containing a set with variables, so we need to find values for its variables. If there are multiple variables, we'll need to try all of their permutations (we don't know the correct mapping, only that they match some values in the real fact's set).
I'd rather have static sets for now, containing only ints, symbols, strings or byte arrays. They're much easier to work with, and they can be checked once during deserialization.
We can always figure out a better way to accept variable sets later.

So, after a few more tests, I'll forbid sets containing variables too. There are a lot of pitfalls.
Example: we look up a fact containing a set with variables, so we need to find values for its variables. If there are multiple variables, we'll need to try all of their permutations (we don't know the correct mapping, only that they match some values in the real fact's set).
I'd rather have static sets for now, containing only ints, symbols, strings or byte arrays. They're much easier to work with, and they can be checked once during deserialization.
We can always figure out a better way to accept variable sets later.

current tests in https://github.com/Geal/biscuit-datalog-test
It can easily replace constraints: https://github.com/Geal/biscuit-datalog-test/blob/main/src/lib.rs#L861-L889

current tests in https://github.com/Geal/biscuit-datalog-test
It can easily replace constraints: https://github.com/Geal/biscuit-datalog-test/blob/main/src/lib.rs#L861-L889


PatchElementEvent

Refactor existing patch element event.

[x] Add type definition.
[x] Add unit test.
[x] Add feature test.
[x] Add documentation.

References upstream API issue HTTP PATCH /<uuid> - PatchElementController #75.

Additional documentation will be postponed until the new documentation system is up and running - likely end of 2024.


restructure plugin infrastructure

The current plugin structure makes it hard to actually write and use external plugins.
This should be restructured.

It can always be improved, of course. But did you check this https://github.com/GIScience/ors-map-client/blob/master/docs/plugins.md ?
What is the difficulty you are facing?


Floor list does not include same level variants

When one amenity has addr:floor=3 + level=2 and many other have just level=2, I see only "3" in the floor list, and not "/2" as one might expect.
Can be tested here: https://www.openstreetmap.org/node/9641423132

done in 0.1.4.


Create Create Time Intelligence Measures Using Calculation Groups.csx

create time intelligence measure based on the calculation group.

Thanks for your contribution!


Add sizeless/typeless compile-time integers

Currently all integers must be suffixed with their type (123u16, -5s32 100u, etc.). Allow integers with no suffix to be treated as abstract integers that assume the appropriate type for context in which they are used:
var myarray: [256] = ... # 256 assumes the type usize
myarray[123]; # 123 assumes the type usize
myarray[3:5]; # 3 and 5 assume the type usize

3 + 5s32; # 3 assumes the type s32
3s32 + 5; # 5 assumes the type s32
123y & 0xFF; # 0xFF assumes the type byte

123 + 456 + 10u; # 123 + 456 is kept typeless, but the 579 + 10u assumes the type usize.
123 & 456; # Should cause a compile-time error because the size (and therefore number of bits) is unknown.

func foo(x: usize) void {
    # ...
}
foo(123); # 123 assumes the type usize

dump 123; # Should cause a compile-time error because the size (and therefore number of bits) is unknown.

Tests:

[x] 123u8 + 1 works
[x] 1 + 123u8 works
[x] 123u8 & 1 works
[x] 1 & 123u8 works
[x] 123u8 | 1 works
[x] 1 | 123u8 works
[x] 123u8 ^ 1 works
[x] 1 ^ 123u8 works
[x] 1 < 123u8 works (for all cmp operators)
[x] 1 > 123u8 works (for all cmp operators)
[x] sizeof(:typeof(123)) produces a compile-time error
[x] dump 123 produces a compile-time error
[x] 123 + 456 works
[x] 0xAA & 0xBB produces a compile-time error
[x] 0xAA | 0xBB produces a compile-time error
[x] 0xAA ^ 0xBB produces a compile-time error
[x] variable declaration of type integer produces compile-time error
[x] constant declaration of type integer produces compile-time error
[x] function parameter of type integer produces compile-time error
[x] function return typespec of type integer produces compile-time error
[x] extern variable declaration of type integer produces compile-time error
[x] array typespec constant
[x] array elements
[x] slice literal count
[x] right hand side of assignment
[x] 123; bare expression should be a compile time error
[x] syscall argument of type integer produces compile-time error

Resources:
https://go.dev/blog/constants

Added in aea72db17aa3adf6bc277644e7ac0bc3d3ebb051. There were a lot of special cases to account for, so I imagine there may still be some lingering bugs, but the core of idea is there.


Move rpc-support roles to rpc-extras

rpc_support roles were removed from os-ansible-deployment.
Add a role for this, with tags.
Convert to a galaxy role.
Set variables appropriately.

@andymcc is this ready to go? I just merged my horizon stuff, and as part of that added a site.xml playbook that includes all others. I put maas and horizon-extensions in it, we should get this one added there as well.

I'll merge this in and adjust the site.xml. Thanks @miguelgrinberg


Several minor corrections. UserAgent text.

Just a proposal for the UserAgent text, feel free to complete it at
will.

It's already in master. Maybe it was integrated somehow :-?


Jc/add view mentor placements

Context
Add show pages for mentors.
Changes proposed in this pull request
Placements

Views/Controllers/Routes/etc. for Support Users to view School Mentors
Views/Controllers/Routes/etc. for School Users to view Mentors

Guidance to review
Placements

Sign in as Anne

visit http://placements.localhost:3000/schools/:school_id/mentors/:id

Check mentors first_name, last_name, trn are displayed

Sign in as Colin

visit http://placements.localhost:3000/support/schools/:school_id/mentors/:id

Check mentors first_name, last_name, trn are displayed

Link to Trello card
https://trello.com/c/z6xJxOoz/196-as-a-support-user-i-want-to-view-the-details-of-a-mentor
https://trello.com/c/oPOYv499/215-as-a-user-i-want-to-view-the-details-of-a-mentor
Screenshots
School User (Anne)

Support User (Colin)

 As a Support User, I want to view the details of a Mentor

 As a User, I want to view the details of a Mentor


fixed Typos in challenges description. Removed double quotes from mentioned words in code block of 2 files. Added 'to' as the missing word in one file as mentioned.

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #XXXXX

Thank you for opening this pull request.
We’ve reviewed your pull request and decided not to merge it; However, We would welcome future pull requests from you.
You are welcome to read these guidelines to learn more about contributing to this project.
Happy contributing.

Thank you.


Several fixes/improvments

Codecov Report
Patch coverage: 72.72% and project coverage change: -7.06 :warning:

Comparison is base (1e4900d) 84.32% compared to head (fd42a33) 77.26%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #73      +/-   ##
==========================================
- Coverage   84.32%   77.26%   -7.06%
==========================================
  Files          51       24      -27
  Lines        1869     1148     -721
  Branches      219      141      -78
==========================================
- Hits         1576      887     -689
+ Misses        231      223       -8
+ Partials       62       38      -24

Flag
Coverage Δ

Linux
77.26% <72.72%> (-5.81%)
:arrow_down:

core
75.96% <72.72%> (-8.02%)
:arrow_down:

examples
58.06% <85.71%> (-9.29%)
:arrow_down:

macOS
?

src
76.38% <72.72%> (-2.57%)
:arrow_down:

tests
84.87% <ø> (-6.19%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/saf/pipeline.py
82.40% <50.00%> (-2.28%)
:arrow_down:

src/saf/process/jupyter_notebook.py
54.54% <75.00%> (-1.27%)
:arrow_down:

src/saf/collect/salt_exec.py
68.75% <100.00%> (-31.25%)
:arrow_down:

... and 35 files with indirect coverage changes

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


disallows

Do you have problems with value gap processing? I think it's wrong to exclude spaces in the names of brands or music directions or any other values. Am I wrong? Please correct me. LINK

It's just a design choice. For this use case I don't think it's very useful to have spaces and separators. Say I'm naming bug reports using qual IDs rather than just IDs, I don't think having one as michigan-strawberry, and then another as new york-raspberry. I feel like it is simpler to just stick to single words 🙂

@gabrielbarker I think you right. Close this issue please :)


Release/stable 0704

[plugin-component] React docgen multiple pages
[plugin-component] fix: 🐛 disable minimize sass output by default

Codecov Report

Merging #362 (fa78982) into stable/0.x (d81afd8) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           stable/0.x     #362   +/-   ##
===========================================
  Coverage       78.81%   78.81%
===========================================
  Files              20       20
  Lines             812      812
  Branches          164      164
===========================================
  Hits              640      640
  Misses            172      172

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 d81afd8...fa78982. Read the comment docs.


Always sync submodules before updating them

This ensures the origin in .git/config matches the one in
.gitmodules.  Git will quite appropriately refrain from doing this
automatically, because it never allows remote repositories to update
local config.  You have to ask.
(See: https://stackoverflow.com/a/45679261)
In Vundle's case, it is always correct to sync.  These aren't repos that
a developer maintains; they are effectively read-only copies of remote
state.  Since syncing is always correct, and git won't sync unless we
ask, then we should always sync.
Fixes #911.
Test plan
This is an obscure but important issue.  It's only a matter of time before a
plugin which actually has significant numbers of users feels the need to fix
a submodule origin URL.
I realize Vundle is staffed by volunteers, and I realize very few people are up
to date on this issue.  So, to help out the reviewer, I'm providing fully
detailed reproduction instructions.  It should take less than 5 minutes to
confirm the bug and the fix, even if you have no idea what it's doing.  I hope
that this detailed reproduction plan, combined with:

the simplicity of the change itself,
and the provided link for background (https://stackoverflow.com/a/45679261),

will be enough to make this a pretty painless merge.  And thanks again to those
same volunteers for their hard work on vundle!
Step 1: setup state
The goal here will be to get the vim-vtd folder in a similar state to how it
would be for pre-existing users (who are the only people impacted by this
change).  Specifically, its submodule remotes need to be set to the old
upstream.
We can't do this within vundle, because the first thing vundle does is to pull
the latest version!  So we'll need to use bare git.  We also need to begin by
blowing away anything that might be there, because the git config settings can
get buried kinda deep.
The breaking change was chiphogg/vim-vtd@55771bc, which is why we'll be checking
out the parent.
  (That's the bug.)
Open up vim, and run:
:PluginUpdate vim-vtd

Press l to view the log, and observe that we get the error mentioned in #911.
Step 3: patch
Patch in this new version of Vundle.vim in your bundle directory in whatever
manner you choose.
Step 4: confirm fix
Repeat Steps 1 and 2 above.  (Actually, you can omit the "clean state", Step 1,
if you want to.  The only truly necessary step is Step 2, reproduced here:)
:PluginUpdate vim-vtd

This is the exact same command as before, except now, it works!

This looks good to me. Thank you for identifying a problem and then fixing it (especially since the fix is not so hard).

Thanks for the kind words!  I don't suppose you have write access to this repo?  :wink:
@ryanoasis @gmarik ---anybody have time to check this over?  (Could also tag with 0.10.3 if you want to pad its statistics... :slightly_smiling_face:)


adding info on Databricks notebooks vs IDEs and content writing and u…

Making some changes to:

Update image for amending methodologies on EES as it was out of date
Add links to Gov.UK style guides and content writing information
Include a link to NHS-R guidance about notebooks vs IDEs

 Analysts Guide changes


Our company use iosRTC

Our company use iosRTC see https://assistance.free.fr/facetofree/
We've credited iosrtc in the app and linked to the licence.

Please fix this line:

Please fix this:
![apirtc-logo](http://gallery.iliad.fr/d/1103-3/logo_free.jpg)

It should be "free-logo".
Please point to a smaller logo/image. That is too big.

And then please rebase all your commits into a single one and run git push --force so a single commit will be added to the project.


Make it possible to customize CRC polynomial and order

This is part feature request, part "I don't really know what I'm doing" :)
I'm playing around with some code to port parts of bzip2 to Rust.  Its hand-written crc32 code looks like this: https://gitlab.com/federicomenaquintero/bzip2/blob/e4cdd603608e8dc87a526d287369775601c63df9/crc32.c
Here is a test with a few computed checksums: https://gitlab.com/federicomenaquintero/bzip2/blob/e4cdd603608e8dc87a526d287369775601c63df9/crc32test.c
I think this is a different CRC order than what crc32fast uses.  After getting help, someone kindly suggested using the custom constructor from the crc crate: https://gitlab.com/federicomenaquintero/bzip2/blob/6ef10026a74af85437a4deca6957889d9e8bdbf8/bzlib_rust/src/lib.rs
That last link has Rust code that computes the same CRC32 values as the original C code.  I would rather use crc32fast for this, of course, and maybe speed up bzip2 as a result :)
Would it be possible for crc32fast to provide enough machinery to replace this kind of C code which has any random variant of CRC32?

I found a very interesting document that explained how your "crc32a" / crc::CalcType::Normal calculation is different: it does not reverse the order of bits, while the "crc32b" calculation used in most places does.
I'm not familiar with @srijs's amd64 SSE implementation, it's probably possible to directly use a different thing there, but on aarch64 (ARMv8-A), the reversed calculation is implemented directly in hardware, so the only option is to do the obvious thing of reversing the input and output data :)
#![feature(asm, stdsimd, core_intrinsics, aarch64_target_feature)]
use std::arch::aarch64 as arch;
use std::intrinsics::bitreverse;

#[inline(always)]
unsafe fn reverse8x8(x: u64) -> u64 {
    // do not use llvm.bitreverse on a u8x8, that does not emit rbit
    let result: u64;
    asm!("rbit $1.8b, $0.8b" : "=w"(result) : "w"(x));
    result
}

#[target_feature(enable = "crc")]
pub unsafe fn calculate(crc: u32, data: &[u8]) -> u32 {
    let mut c32 = !crc; // XXX: here too?

    let (pre_quad, quads, post_quad) = data.align_to::<u64>();

    c32 = pre_quad.iter().fold(c32, |acc, &b| arch::__crc32b(acc, bitreverse(b)));

    // unrolling increases performance by ~~a lot~~ not THAT much with the reverses in there
    let mut quad_iter = quads.chunks_exact(8);
    for chunk in &mut quad_iter {
        c32 = arch::__crc32d(c32, reverse8x8(chunk[0]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[1]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[2]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[3]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[4]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[5]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[6]));
        c32 = arch::__crc32d(c32, reverse8x8(chunk[7]));
    }
    c32 = quad_iter
        .remainder()
        .iter()
        .fold(c32, |acc, &q| arch::__crc32d(acc, reverse8x8(q)));

    c32 = post_quad.iter().fold(c32, |acc, &b| arch::__crc32b(acc, bitreverse(b)));

    bitreverse(!c32)
}

fn main() {
    println!("{:x}", unsafe { calculate(0, b"123456789") }); // fc891918
    println!("{:x}", unsafe { calculate(0, b"") }); // 0
    println!("{:x}", unsafe { calculate(0, b" ") }); // 29d4f6ab
    println!("{:x}", unsafe { calculate(0, b"hello world") }); // 44f71378
    let buf4 =
        concat!("Lorem ipsum dolor sit amet, consectetur adipiscing elit, ",
                "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
                "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ",
                "ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit ",
                "in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur ",
                "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt ",
                "mollit anim id est laborum.");
    println!("{:x}", unsafe { calculate(0, buf4.as_bytes()) }); // d31de6c9
}

On a Cortex-A72:
test bench_kilobyte_specialized ... bench:         186 ns/iter (+/- 0) = 5505 MB/s
test bench_megabyte_specialized ... bench:     246,951 ns/iter (+/- 91,406) = 4246 MB/s

Unfortunately not as fast as the original version without the reverses:
test bench_kilobyte_specialized ... bench:          88 ns/iter (+/- 0) = 11636 MB/s
test bench_megabyte_specialized ... bench:     154,795 ns/iter (+/- 54,328) = 6773 MB/s

(but still, baseline (table) version is only <800 MB/s!!)
The slowdown is because we need to reverse bits on each byte (not a whole 64-bit word), which requires the vector version of the RBIT instruction, which operates on vector registers, while CRC32 operates on general purpose ones :(

It's also possible to implement CRC32 using the polynomial multiplication instructions and that would allow using the non-reversed thing directly I guess. No idea about the performance of that though :)

This problem also took some time for me to figure out, and for some reason I didn't see this issue while I was researching it. Since the last answer was from almost 2 years ago, here's my updated solution for wrapping crc32fast to make it calculate the crc32a instead of the crc32b.
https://github.com/paolobarbolini/bzip2-rs/blob/59073eeb1b58f95a6d7809c4d2889ef297291a06/src/crc.rs#L1-L56

So the funny thing here is the Intel paper describing this optimization actually answers this.  You can read it here:
https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
The main section of the paper talks about 802.3 (Ethernet, FDDI, etc.) checksums, which are the same as BZIP2.  If you use the details from that section, you should get a BZIP2 compatible version.  It's only on page 18, in the section titled "Bit-Reflection", where they talk about ZIP (specifically mentioning gzip) checksums, and how to permute the algorithm to work for it.  The coefficients here are identical to the ones in the crate implementation (answering some confusion in the source code).
To understand why this works, it might help to understand how a CRC works in general.  It's often described as "polynomial" division, but this isn't the math you learned in algebra class.  if you think of it as a bit-wise long division, you're actually xoring the "polynomial" instead of subtracting it as you expect.  Technically this is subtraction in GF(2), but you can forget you ever heard that.
Because of the peculator math of CRCs, we can actually shift in input bits in all sorts of ways and orders.  Tacking another input bit on the end and doing another step of our long division is exactly what the canonical 1-bit CRC loop does:
	for (j = 0; j < 8; j++) {
		carry = ((crc & 0x01) ? 1 : 0) ^ (c & 0x01);
		crc >>= 1;
		c >>= 1;
		if (carry)
			crc = (crc ^ ETHER_CRC_POLY_LE);

But ho!  It turns out if we xor in 8 bits at a time, that works just fine too.  The next 8 steps of our long division depend only on the "top" 8 bits of the accumulator (here actually in the LSBs; see below), so rather than convoluting 8 bites, we can build a lookup table.  And thus we get by far the most common software CRC implementation in the universe.  It often looks something like this (example taken from zlib):
        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];

But ho!  For some reason people can't make up their mind whether they want data bytes to go in LSB first or MSB first.  And thus we have so-called "reflection".  Like "polynomials", it's a silly name and doesn't really correspond with how we calculate things.  But the main thrust is that, because our table-driven algorithm can work equally well shifting the accumulator either direction, we generally choose the direction that makes the input data line up nicely to xor it into the accumulator directly without bit-reversing.
This is why a typical BZIP2  byte-wide implementation will shift the accumulator to the left and (effectively) insert data at the top (example taken from bzip2):
{
crcVar = (crcVar << 8) ^
crc32Table[(crcVar >> 24) ^
((UChar)cha)];
}
But a similar ZIP CRC computation will shift to the right and insert data at the bottom (where have I seen this before):
        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];

The table computation of course has to be adjusted depending on the direction.as well.  But the thrust is that, as long as "reflectin==reflectout" (spoiler: it is for any CRC you care about), you don't ever have to reverse bits.
If you're shifting in a value the size of your accumulator (say, 32 bits at a time if you're doing the common 4-table version or just unrolling the one-table version), you can even leave your accumulator and table in whatever byte order you're reading data from memory and it still works just fine.  So you don't have to reverse bytes either!
[I gotta sleep.  I'll write part 2 of this later.]

Still working on the next part, but I realized an example might be useful here, to clarify why CRC algorithms are written the way they are.
Here's an example of the long division written out verbosely, that I pulled from a an old CRC tutorial that actually doesn't explain it well:
<PHONE_NUMBER> = Quotient (nobody cares about the quotient)
       _______________
10011 )<PHONE_NUMBER>0000 = Augmented message<PHONE_NUMBER> + 0000)
=Poly   10011,,.,,....
        -----,,.,,....
         10011,.,,....
         10011,.,,....
         -----,.,,....
          00001.,,....
          00000.,,....
          -----.,,....
           00010,,....
           00000,,....
           -----,,....
            00101,....
            00000,....
            -----,....
             01011....
             00000....
             -----....
              10110...
              10011...
              -----...
               01010..
               00000..
               -----..
                10100.
                10011.
                -----.
                 01110
                 00000
                 -----
                  1110 = Remainder = THE CHECKSUM!!!!

There are a couple of things I want to draw attention to here.  One is that, due to the weird mathematics going on, whether we generate a 0 or 1 at any given moment depends ONLY on the topmost bit of the remainder at the time.
Notice how, at each step, another bit is getting sucked into the LSB of our remainder.  So why is it that our condition in this code seems to use the next input bit as well?
			carry = ((crc & 0x01) ? 1 : 0);
			crc >>= 1;
			if (carry)
				crc ^= ETHER_CRC_POLY_LE;

This is exactly like when you did long division in grade school, except it's binary and you're using xor instead of subtraction.  (So really not much like that at all, but bear with me.)  Here's the rub: that bit just sits there passively, maybe getting xored with some other bits it has no control over, until it becomes the MSB.  Further, we don't want to overread past the end of the data, or have to pad it in memory.
So we lazily xor it only when we need it, yielding the above algorithm.  The byte-wide and word-wide algorithms work because we can really xor this value in any time, as long as it's not past the end of the accumulator, and so we do the more efficient thing of adding (whoops, I mean xoring) a bunch of bits at once.
This has a couple of indirect implications.  One is that the final state has the accumulator effectively thinking it saw a bunch of 0s past the end of the message.  Some CRC variants (like ZIP) want this to be all 1s instead--so we just xor it in.  This is why crc-catalog has an "xorout" field.
The other is that we're assuming the state of the remainder/accumulator was 0s at the beginning.  Remember we might be continuing a previous computation.  Also, again some CRC algorithms was whatever reason think this state should start with all 1s.  This is why crc-catalog has an "init" field.

Now that we (hopefully) understand the basic building blocks of a CRC, we can talk about the "folding" algorithm and try to clarify the mathematics a bit.  From the Intel paper, you'll see they define a CRC this way:
CRC (M(x)) = x^deg(P(x)) • M(x) mod P(x)
Now if you recall from our long division example, we imagined some 0 bits stuffed in at the bottom:
10011 )<PHONE_NUMBER>0000 = Augmented message<PHONE_NUMBER> + 0000)
Well it turns out the scary algebra is exactly that padding... for our 4-bit CRC, we're left-shifting 4 bits and stuffing 4 bits in at the bottom.  For a 32-bit CRC, "x^deg(P(x)) • M(x)" means what as a programmer you might more naturally think of as "M(x) << 32".  Let's not think about this padding too much right now, and just call our extended message M(x).
Now carry-less modular multiplication has a funky rule:
A(x) • x^n xor B(x) = (A(x) • (x^n mod P(x))) xor B(x)) mod P(x)
To put this in more programmer friendly terms, say we wanted to compute a 32-bit CRC of a 64-bit input, we can break it down into 2 32-bit chunks and calculate it like this:
CRC(M) = M mod P == (A<<32 xor B) mod P == (A * (1<<32 mod P) xor B) mod P
Now if we precompute (1<<32 mod P) our equation comes out to:
K = 1<<32 mod P
CRC(M) = ... = ((A * K) xor B) mod P

In fact this is one approach for implementing a fast CRC calculation in hardware.  However, in software, traditionally there was been no carry-less multiply instruction, so the table-based approach has almost always been preferred for speed.  I will just include by reference one software implementation to give you an idea:

But if we just happen to find a carry-less multiple instruction in our back pocket, we can "fold" 32 bits of our message with two instructions... a multiply and an xor.  Pretty cool, eh?
Well it turns out you can fold values that are even further apart, just remember that our "x^n" factor increases accordingly.  And we can also fold chunks that are wider than our polynomial, it doesn't matter.  So for example, say we want to fold two 64-bitchunks that are 512 bits apart:
K = 1<<512 mod P
F mod P == (A<<512 xor B) mod P == (A*K xor B) mod P`

Now why would we want to do this?  If we're only folding adjacent chunks, we have linear dependencies which might limit our performance on a pipelined CPU.  By interleaving multiple operations, we avoid these pipeline limits.  All we have to do is clean up at the end by folding all these chunks together.  This gives us several K values, which are what you see in the paper.

For extra credit, I guess we can talk about how this allows us to parallelize CRC computations.
Imagine you have a large data set split up into blocks, and we have folded each block into just a single value at the end.  We could in principle fold these blocks together as well, using;
const K = 1<<blocksize*8 mod P
And thus we would have truly the fastest CRC generator in the world.  Problem is there is no I/O subsystem that could feed it.

Ah, heck.  Here's a proof of concept that calculates both the reflected and non-reflected CRCs in the paper.
fn multiple(a: u64, b: u64) -> u64 {
  (0..32).fold(0, |num, bit| ((((a >> bit) & 1) * b) << bit) ^ num)
}

fn remainder(a: u64, p: u64) -> u64 {
  let mut r = a;
  for _ in 0..32 {
    r = (r << 1) ^ if r & (1<<63) != 0 {
                     p << 32
                   } else {
                     0
                   }
  }
  r >> 32
}

fn quotient(a: u64, p: u64) -> u64 {
  let mut q = 0;
  let mut r = a;
  for _ in 0..32 {
    if r & (1<<63) != 0 {
      q = (q << 1) ^ 1;
      r = (r << 1) ^ (p << 32);
    } else {
      q = (q << 1) ^ 0;
      r = (r << 1) ^ 0;
    }
  }
  q
}

fn calc_non_reflected(p: u64) {
  let x32 = remainder(0x100000000, p);			//
  let x64 = remainder(multiple(x32, x32), p);
  let x96 = remainder(multiple(x64, x32), p);
  let x128 = remainder(multiple(x64, x64), p);
  let x192 = remainder(multiple(x128, x64), p);
  let x256 = remainder(multiple(x128, x128), p);	//
  let x512 = remainder(multiple(x256, x256), p);
  let x576 = remainder(multiple(x512, x64), p);

  println!("p = {:X} (non-reflected)", p);
  println!("k1 = {:X}", x576);
  println!("k2 = {:X}", x512);
  println!("k3 = {:X}", x192);
  println!("k4 = {:X}", x128);
  println!("k5 = {:X}", x96);
  println!("k6 = {:X}", x64);
  // 1<<64 is one bit too large, so we hand code one iteration of division and add the bit
  println!("u = {:X}", 0x100000000 | quotient(p << 32, p));
}

fn rev(p: u64) -> u64 {
  let mut p = p;
  let mut r = 0;
  for _ in 0..33 {
    r = (r << 1) ^ (p & 1);
    p >>= 1;
  }
  r
}

fn calc_reflected(p: u64) {
  let x32 = remainder(0x100000000, p);
  let x64 = remainder(multiple(x32, x32), p);
  let x96 = remainder(multiple(x64, x32), p);
  let x128 = remainder(multiple(x64, x64), p);		//
  let x160 = remainder(multiple(x96, x64), p);
  let x224 = remainder(multiple(x128, x96), p);		//
  let x256 = remainder(multiple(x128, x128), p);	//
  let x480 = remainder(multiple(x256, x224), p);
  let x544 = remainder(multiple(x480, x64), p);

  println!("p' = {:X} (reflected)", rev(p));
  println!("k1' = {:X}", rev(x544));
  println!("k2' = {:X}", rev(x480));
  println!("k3' = {:X}", rev(x160));
  println!("k4' = {:X}", rev(x96));
  println!("k5' = {:X}", rev(x64));
  println!("k6' = {:X}", rev(x32));
  // 1<<64 is one bit too large, so we hand code one iteration of division and add the bit
  println!("u' = {:X}", rev(0x100000000 | quotient(p << 32, p)));
}

fn main() {
  calc_non_reflected(0x104C11DB7);
  calc_reflected(0x104C11DB7);
}

BTW the iSCSI coefficients I generated match IBM's implementation:
s390 crypto acceleration

One last thing.  If the leading bit (1<<32) of our reversed K values is 1, re can fold it into the lower 32 bits using a single division step, limiting them to 32 bits.  This is alluded to in the paper.  Mathematically it's equivalent to dividing by x, and corresponds to the -1 in their exponents.
The net result is that these K values are exactly equivalent in function:
-const K1: i64 = 0x154442bd4;
-const K2: i64 = 0x1c6e41596;
-const K3: i64 = 0x1751997d0;
-const K4: i64 = 0x0ccaa009e;
-const K5: i64 = 0x163cd6124;
-const K6: i64 = 0x1db710640;
+const K1: i64 = 0x8f352d95;
+const K2: i64 = 0x1d9513d7;
+const K3: i64 = 0xae689191;
+const K4: i64 = 0xccaa009e;
+const K5: i64 = 0xb8bc6765;
+const K6: i64 = 0x00000001;

Hi @srijs I see this crate targets 'Fast, SIMD-accelerated CRC32 (IEEE) checksum computation'. Would this feature and potential pull request be considered? For example, support CRC-32C.


DismissAfter should be tied to a specific popup

I am setting dismiss after 4 seconds for example. if the user manually dismisses the first notification and a second one is triggered, the first dismiss after 4 that was set on a previous notification seems to dismiss the current notification

hey @dejiphonebox,
A branch named "patch-2.3.1" should fix the issue above. Could you please check and confirm this?
Thanks and have a great evening! 😉

Sure! Taking a look now

Works as expected now 👌🏼

Reopened because I think I shouldn't mark this as closed. Bug is fixed however :)

glad to hear it! I'll clean up the solution a bit and merge with the main bit later.
thanks for help and don't hesitate to share any other bugs you notice! 😉