Black CameraView in UNO / MAUI mobile project (Android)

Hi I tried many free and commercial barcode scanning libs in my UNO Platform project.
Scandit works great but I am revisiting free options.
All is done as MAUI components through MAUI embedding in UNO, as newer UNO versions don't have any directly supported barcode scanning libs
CameraView component is just black allways.
Any idea why ?
(camera permissions are ok)
There are no errors.
Mayne UNO is the problem or anything else.

I am using 1.5.2 version because of dll hell with UNO dependencies , so I can't use latest :

Any ide why ?
Or shoot questions for details.
Here is the log if it is any help :

am start -a "android.intent.action.MAIN" -c "android.intent.category.LAUNCHER" -n "hr.lauscc.webossa/crc6475981dcd67117422.MainActivity"
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=hr.lauscc.webossa/crc6475981dcd67117422.MainActivity }
[.lauscc.weboss] Late-enabling -Xcheck:jni
[.lauscc.weboss] Unquickening 21 vdex files!
[.lauscc.weboss] Unknown bits set in runtime_flags: 0x800000
[.lauscc.weboss] The ClassLoaderContext is a special shared library.
[100] Open /data/app/~~3QsBEPiM3PF6gD2Dj2Y69A==/hr.lauscc.webossa-j5N-nDG81kGusHxyrebToA==/base.apk took:1.411s
[Perf] Connecting to perf service.
[.lauscc.weboss] [GL_OOM] ClearGrowthLimit 536870912
[NetworkSecurityConfig] No Network Security Config specified, using platform default
[NetworkSecurityConfig] No Network Security Config specified, using platform default
[DOTNET] JNI_OnLoad: JNI_OnLoad in pal_jni.c
[DOTNET] GetOptionalClassGRef: optional class com/android/org/conscrypt/OpenSSLEngineImpl was not found
[monodroid] Creating public update directory: /data/user/0/hr.lauscc.webossa/files/.__override__
[.lauscc.weboss] Attempt to remove non-JNI local reference, dumping thread
[monodroid-debug] Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=<IP_ADDRESS>:8852,server=y,embedding=1,timeout=1723555276
Loaded assembly: System.Private.CoreLib.dll [External]
[monodroid-gc] GREF GC Threshold: 46080
Loaded assembly: Inventura.dll
Loaded assembly: Mono.Android.dll [External]
Loaded assembly: System.Runtime.dll [External]
Loaded assembly: Java.Interop.dll [External]
Loaded assembly: System.Runtime.InteropServices.dll [External]
Resolved pending breakpoint for 'Android.Runtime.JNIEnvInit.RegisterJniNatives(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.Int32)' to /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnvInit.cs:57 [0x00000].
Loaded assembly: System.Collections.dll [External]
Loaded assembly: Mono.Android.Runtime.dll [External]
Loaded assembly: System.Threading.dll [External]
Loaded assembly: System.Threading.Thread.dll [External]
Loaded assembly: System.Diagnostics.StackTrace.dll [External]
[.lauscc.weboss] Attempt to remove non-JNI local reference, dumping thread
Loaded assembly: data-0x7246fe9060 [External]
Loaded assembly: data-0x7246ff9070 [External]
Loaded assembly: data-0x72a7018030 [External]
Loaded assembly: netstandard.dll [External]
Loaded assembly: System.Linq.dll [External]
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
Loaded assembly: System.Collections.Concurrent.dll [External]
Resolved pending breakpoint for 'Xamarin.HotReload.HotReloadAgent.BreakpointSendToIde(System.String)' to D:\a_work\1\s\HotReload\Source\Xamarin.HotReload.Agent\HotReloadAgent.cs:423 [0x00000].
Loaded assembly: System.Text.Json.dll [External]
Loaded assembly: System.Text.Encodings.Web.dll [External]
Loaded assembly: System.ComponentModel.dll [External]
Loaded assembly: Uno.UI.RemoteControl.dll [External]
[chatty] uid=10147(hr.lauscc.webossa) identical 2 lines
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
Loaded assembly: Microsoft.Maui.Controls.dll [External]
Loaded assembly: System.ObjectModel.dll [External]
Loaded assembly: Microsoft.Maui.dll [External]
Loaded assembly: Microsoft.Maui.Graphics.dll [External]
Loaded assembly: Microsoft.Maui.Essentials.dll [External]
Loaded assembly: Microsoft.Extensions.Logging.Abstractions.dll [External]
Loaded assembly: System.Runtime.Loader.dll [External]
Resolved pending breakpoint for 'Xamarin.HotReload.HotReloadAgent.BreakpointCheckpoint()' to D:\a_work\1\s\HotReload\Source\Xamarin.HotReload.Agent\HotReloadAgent.cs:418 [0x00000].

Resolved pending breakpoint at 'App.xaml.cs:178,1' to void Inventura.App.d__18.MoveNext () [0x000ad].
Resolved pending breakpoint at 'App.xaml.cs:182,1' to void Inventura.App.d__18.MoveNext () [0x000d0].
Loaded assembly: Inventura.MauiControls.dll
Loaded assembly: Uno.Core.Extensions.Logging.Singleton.dll [External]
Loaded assembly: Uno.Core.Extensions.Logging.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.Abstractions.dll [External]
Loaded assembly: Microsoft.Extensions.Hosting.dll [External]
Loaded assembly: Microsoft.Extensions.FileProviders.Physical.dll [External]
Loaded assembly: Microsoft.Extensions.FileProviders.Abstractions.dll [External]
Loaded assembly: Microsoft.Extensions.DependencyInjection.dll [External]
Loaded assembly: Microsoft.Extensions.Logging.dll [External]
Loaded assembly: Uno.Extensions.Serialization.dll [External]
Loaded assembly: Uno.Extensions.Hosting.dll [External]
Loaded assembly: Uno.Extensions.Core.dll [External]
Loaded assembly: Uno.Extensions.Storage.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.dll [External]
Loaded assembly: Microsoft.Maui.Controls.Compatibility.dll [External]
Loaded assembly: Microsoft.Maui.Controls.Xaml.dll [External]
Loaded assembly: Xamarin.Google.Android.Material.dll [External]
Loaded assembly: System.ComponentModel.TypeConverter.dll [External]
Loaded assembly: Xamarin.AndroidX.Navigation.Runtime.dll [External]
Loaded assembly: BarcodeScanning.Native.Maui.dll [External]
Loaded assembly: Uno.Extensions.Localization.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.EnvironmentVariables.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.CommandLine.dll [External]
Loaded assembly: Microsoft.Extensions.Primitives.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.FileExtensions.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.Json.dll [External]
Loaded assembly: System.Text.Encoding.Extensions.dll [External]
Loaded assembly: Microsoft.Extensions.Options.dll [External]
Loaded assembly: Microsoft.Extensions.Logging.Configuration.dll [External]
Loaded assembly: Microsoft.Extensions.Options.ConfigurationExtensions.dll [External]
Loaded assembly: Microsoft.Extensions.Configuration.Binder.dll [External]
Loaded assembly: System.Threading.Tasks.Extensions.dll [External]
Loaded assembly: Microsoft.Extensions.Localization.Abstractions.dll [External]
Loaded assembly: Uno.Extensions.Serialization.Refit.dll [External]
Loaded assembly: Refit.dll [External]
Loaded assembly: Uno.Core.Extensions.Collections.dll [External]
Thread started:  #13
Thread started:  #14
Thread started:  #15
Loaded assembly: System.Runtime.Serialization.Json.dll [External]
Loaded assembly: System.Private.DataContractSerialization.dll [External]
Loaded assembly: System.Runtime.Serialization.Xml.dll [External]
Loaded assembly: System.Runtime.Serialization.Primitives.dll [External]
Loaded assembly: Xamarin.AndroidX.RecyclerView.dll [External]
Loaded assembly: Xamarin.AndroidX.CardView.dll [External]
Loaded assembly: Xamarin.AndroidX.CoordinatorLayout.dll [External]
Loaded assembly: System.ComponentModel.Primitives.dll [External]
[.lauscc.weboss] Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
[.lauscc.weboss] Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
Loaded assembly: CommunityToolkit.Mvvm.dll [External]
[memtrack] Couldn't load memtrack module
Loaded assembly: System.Linq.Expressions.dll [External]
Loaded assembly: CommonServiceLocator.dll [External]
[.lauscc.weboss] Accessing hidden method Landroid/view/View;->initializeScrollbars(Landroid/content/res/TypedArray;)V (greylist, JNI, allowed)
Loaded assembly: Newtonsoft.Json.dll [External]
[OPFD_Manager] Dark? false, OP Force ? false
[ViewRootImpl] The specified message queue synchronization  barrier token has not been posted or has already been removed
[ViewRootImpl] support adaptive color gamut feature!
[309] package:hr.lauscc.webossa took:15808 calssname:android.app.ActivityThread$H callback:null what:159
[SensorManager] registerListenerImpl sensorName:gravity  Non-wakeup,isWakeUpSensor:false,callingApp: hr.lauscc.webossa,callingPid:31968,callingUid:10147
[SensorManager] registerListenerImpl sensorName:gravity  Non-wakeup,isWakeUpSensor:false,callingApp: hr.lauscc.webossa,callingPid:31968,callingUid:10147
[ViewRootImpl] The specified message queue synchronization  barrier token has not been posted or has already been removed
[ViewRootImpl] The specified message queue synchronization  barrier token has not been posted or has already been removed
Loaded assembly: System.Runtime.Numerics.dll [External]
Thread started:  #16
[.lauscc.weboss] Accessing hidden field Landroid/widget/TextView;->mEditor:Landroid/widget/Editor; (greylist, reflection, allowed)
[.lauscc.weboss] Explicit concurrent copying GC freed 3550(328KB) AllocSpace objects, 3(60KB) LOS objects, 49% free, 4605KB/9210KB, paused 39us total 11.514ms
[AdrenoGLES-0] QUALCOMM build                   : 8e5405b, I57aaec3440
[AdrenoGLES-0] Build Date                       : 05/21/21
[AdrenoGLES-0] OpenGL ES Shader Compiler Version: EV<IP_ADDRESS>
[AdrenoGLES-0] Local Branch                     : mybranchebba1dbe-451b-f160-ac81-1458d0b52ae8
[AdrenoGLES-0] Remote Branch                    : quic/gfx-adreno.lnx.1.0.r135-rel
[AdrenoGLES-0] Remote Branch                    : NONE
[AdrenoGLES-0] Reconstruct Branch               : NOTHING
[AdrenoGLES-0] Build Config                     : S P 10.0.7 AArch64
[AdrenoGLES-0] Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
[AdrenoGLES-0] PFP: 0x016ee190, ME: 0x00000000
[View] requestLayout() improperly called by Microsoft.UI.Xaml.Shapes.Ellipse during layout: running second layout pass
[View] requestLayout() improperly called by Microsoft.UI.Xaml.Shapes.Ellipse during layout: running second layout pass
[Gralloc4] mapper 4.x is not supported
[Gralloc3] mapper 3.x is not supported
[OpenGLRenderer] Davey! duration=1738ms; Flags=1, IntendedVsync=77319836764721, Vsync=77319836764721, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=77319836841701, AnimationStart=77319837705451, PerformTraversalsStart=77319838352326, DrawStart=77321450882117, SyncQueued=77321504561127, SyncStart=77321504960815, IssueDrawCommandsStart=77321505183210, SwapBuffers=77321572069512, FrameCompleted=77321575795554, DequeueBufferDuration=127396, QueueBufferDuration=3272864, GpuCompleted=0,
[309] package:hr.lauscc.webossa took:1740 calssname:android.view.Choreographer$FrameHandler callback:null what:0
[Choreographer] Already have a pending vsync event.  There should only be one at a time.
[chatty] uid=10147(hr.lauscc.webossa) identical 1 line
[ViewRootImpl] support adaptive color gamut feature!
[Choreographer] Already have a pending vsync event.  There should only be one at a time.
Thread started:  #17
[DecorView] onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@16d2e13[MainActivity]
[ViewRootImpl[MainActivity]] windowFocusChanged hasFocus=true inTouchMode=true
Thread finished:  #17
The thread 17 has exited with code 0 (0x0).
Loaded assembly: ScanditCaptureCoreMaui.dll [External]
Resolved pending breakpoint at 'EmbeddedControl.xaml.cs:38,1' to void Inventura.MauiControls.CameraViewControl..ctor () [0x00008].
Resolved pending breakpoint at 'EmbeddedControl.xaml.cs:194,1' to void Inventura.MauiControls.CameraViewControl.CameraView_OnDetectionFinished (object sender, BarcodeScanning.OnDetectionFinishedEventArg e) [0x00001].
Resolved pending breakpoint at 'EmbeddedControl.xaml.cs:68,1' to void Inventura.MauiControls.CameraViewControl.d__6.MoveNext () [0x0001a].
Loaded assembly: Xamarin.AndroidX.Camera.Core.dll [External]
Loaded assembly: Xamarin.GooglePlayServices.MLKit.BarcodeScanning.dll [External]
Loaded assembly: Xamarin.GooglePlayServices.Base.dll [External]
Loaded assembly: Xamarin.Google.MLKit.Vision.Interfaces.dll [External]
Loaded assembly: Xamarin.AndroidX.Camera.View.dll [External]
Loaded assembly: Xamarin.AndroidX.Lifecycle.LiveData.Core.dll [External]
[CameraManagerGlobal] Connecting to camera service
[CamLifecycleController] Lifecycle is not set.
[CameraController] Use cases not attached to camera.
[CameraManagerGlobal] [soar.cts] ignore the status update of camera: 2
[CameraManagerGlobal] [soar.cts] ignore the status update of camera: 3
Loaded assembly: Xamarin.AndroidX.Lifecycle.LiveData.dll [External]
[CameraRepository] Added camera: 0
[SensorManager] registerListenerImpl sensorName:lsm6ds3c Accelerometer Non-wakeup,isWakeUpSensor:false,callingApp: hr.lauscc.webossa,callingPid:31968,callingUid:10147
[Camera2CameraInfo] Device Level: INFO_SUPPORTED_HARDWARE_LEVEL_FULL
[CameraRepository] Added camera: 1
[Camera2CameraInfo] Device Level: INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
[CameraValidator] Verifying camera lens facing on OnePlus6T, lensFacingInteger: null
Loaded assembly: System.Threading.Tasks.Parallel.dll [External]
[CamLifecycleController] Lifecycle is not set.
[CameraController] Use cases not attached to camera.
[sqlite3_android] [IKR-38846] ONEPLUS_NAME_PARTS_MATCH SQLITE_OK
[DynamiteModule] Considering local module com.google.mlkit.dynamite.barcode:10000 and remote module com.google.mlkit.dynamite.barcode:0
[DynamiteModule] Selected local version of com.google.mlkit.dynamite.barcode
Loaded assembly: Xamarin.Google.MLKit.Vision.Common.dll [External]
[TetheringManager] registerTetheringEventCallback:hr.lauscc.webossa
Loaded assembly: Xamarin.GooglePlayServices.Tasks.dll [External]
Loaded assembly: Xamarin.Google.MLKit.Common.dll [External]
Loaded assembly: Xamarin.Google.Android.ODML.Image.dll [External]
Loaded assembly: Xamarin.GooglePlayServices.Basement.dll [External]
Loaded assembly: Xamarin.Google.Guava.ListenableFuture.dll [External]
[SensorManager] registerListenerImpl sensorName:lsm6ds3c Accelerometer Non-wakeup,isWakeUpSensor:false,callingApp: hr.lauscc.webossa,callingPid:31968,callingUid:10147
[CamLifecycleController] Lifecycle is not set.
[CameraController] Use cases not attached to camera.
[CamLifecycleController] Lifecycle is not set.
[CameraController] Use cases not attached to camera.
[ProfileInstaller] Installing profile for hr.lauscc.webossa
Loaded assembly: System.Xml.XmlSerializer.dll [External]
Thread started:  #18
Thread started:  #19
[libc] Requested dump for tid 31968 (.lauscc.webossa)

I have the same problem. According to the log, the camera is restarted continuously because the dimensions have been adjusted.
I/EmulatedCamera3_QemuSensor( 1431): captureNV21: Dimensions for the current request (1280x720) differ from the previous request (1280x960). Restarting camera

I have the same problem too. I tried it with the CameraView of the community toolkit. This works..

Sorry, i don't have any experience with UNO...

I found a Solution for me. It sounds weird, but it looks like a render issue. I had the camera view in a . It worked after replacing with a

Any chance of some more hint on the fix. Camera doesn't render on the screen. Not sure what is happening when i navigates to the page second time @afriscic . First time the page loads correctly and the second load the page doesn't load the camera. I checked the handler it is initialized. Not sure why the rendering is not happening @rockit666  Can you please help if you have any finding. Stackpanel didn't fix it. Thanks in advance.

This looks to me like a Handler issue. Try not to call DisconnectHandler()
The thing is if a page is transient (new page gets created on each navigation) then you need to call DisconnectHandler() to prevent memory leaks. But if you previous instance of a page gets reused on navigation, than calling DisconnectHandler() would dispose the Handler instance and you wont have anything to connect to on second page navigation.

Thanks when reading through your issues I also read a comment very similar to this. I had to comment few lines in lib to make it working the Android CameraManager Dispose was causing these issues. I suppose whenever we are removing those camerapages it was calling disconnect handler and that dispose call caused the issue when it reinitialises second time. So I just commented the Executor and scanner interface dispose methods temporarily to see that fixes the issue. Creating a singleton Page and reusing it will solve the problem - But then if i disconnect it once i move back why doesn't it initialises second time - what stops it to do this? I need to use page on need basis only and I just don't want this page to exist as singleton. Can you tell me a better solution if it can work as scoped instance?


useClass configuration

As title suggest, configuration via a class would be a great addition

@bohemima I've just released v0.4.0.
Thanks for the suggestion!


python311Packages.weatherflow4py: 0.2.20 -> 0.2.21

Diff: https://github.com/jeeftor/weatherflow4py/compare/refs/tags/v0.2.20...v0.2.21
Changelog: https://github.com/jeeftor/weatherflow4py/releases/tag/v0.2.21
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

5 packages built:

home-assistant-component-tests.weatherflow_cloud
python311Packages.weatherflow4py
python311Packages.weatherflow4py.dist
python312Packages.weatherflow4py
python312Packages.weatherflow4py.dist


Dependency not being resolved in terraform block with run-all but works without run-all

Describe the bug
dependency outputs not resolved in the terraform block when using terragrunt run-all plan but works with a terragrunt plan
To Reproduce

Run terragrunt plan
Run terragrunt run-all plan

dependency "eks" {
  config_path = "../eks"

  mock_outputs = {
    cluster_name = "placeholder"
    cluster_endpoint = "https://example.com"
    cluster_certificate_authority_data = dGVzdAo="
  }
}

generate "provider" {
  path = "provider.tf"
  if_exists = "overwrite_terragrunt"
  disable = true
  contents = <<EOF
provider "sops" {}
EOF
}

include {
  path = find_in_parent_folders()
}

terraform {
  source = dependency.eks.outputs.cluster_name != "placeholder" ? "../../../modules//argocd" : "git::https://github.com/vancluever/terraform-null-module.git?ref=44b7a3b"
}

inputs = {
  valuesFiles = ["values.yaml", "values-qa.yaml"]
}

Expected behavior
Both terragrunt run-all plan and terragrunt plan should resolve dependency in the terraform block
Nice to have

[x] Terminal output
[ ] Screenshots

Versions

Terragrunt version:
Terraform version:
Environment details (Ubuntu 20.04, Windows 10, etc.):

Additional context
terragrunt run-all plan
terragrunt run-all plan --terragrunt-working-dir=infrastructure/envs/qa/argocd
ERRO[0000] Error processing module at '/Users/benjefferies/source/github/VEV-platform-services/vev-infrastructure/infrastructure/envs/qa/argocd/terragrunt.hcl'. How this module was found: Terragrunt config file found in a subdirectory of infrastructure/envs/qa/argocd. Underlying error: /Users/benjefferies/source/github/VEV-platform-services/vev-infrastructure/infrastructure/envs/qa/argocd/terragrunt.hcl:51,12-22: Unknown variable; There is no variable named "dependency"., and 1 other diagnostic(s)
ERRO[0000] Unable to determine underlying exit code, so Terragrunt will exit with error code 1

terragrunt plan
terragrunt plan --terragrunt-working-dir=infrastructure/envs/qa/argocd

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of hashicorp/null from the dependency lock file
- Using previously-installed hashicorp/null v3.2.1

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # null_resource.resource will be created
  + resource "null_resource" "resource" {
      + id       = (known after apply)
      + triggers = {
          + "number" = "one"
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + null_resource_id = (known after apply)

─────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.

It looks like it was previously fixed here #1257 and this is possibly related #2298

Also see this comment https://github.com/gruntwork-io/terragrunt/pull/1276#issuecomment-1325032273


AIGOpayment

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:

[x] Filename in the lowercase format
[x] Image format: png
[x] Image size: 256 by 256 px

@aigodev Please read guidelines for next RP https://developer.trustwallet.com/add_new_token_image#image-requirements


Link broken

Hi, the download link to osx x86 is broken on the page https://geppetto.js.org/ .
it currently links to:
https://github.com/matthijsgroen/geppetto/releases/download/1.2.0/Geppetto-1.2.0-mac.dmg
correct would be:
https://github.com/matthijsgroen/geppetto/releases/download/1.2.0/Geppetto-1.2.0.dmg
best

Thanks for reporting!


Refactoring CaseBar

Type of Change

[ ] Name variables and functions well
[ ] Remove magic numbers
[ ] Extract each step of logic into a function
[X] Extract React/JavaScript/TypeScript component
[ ] Remove duplicate code

Description
Refactor the CaseBar into an own file called CaseBar.ts.
Code Before
const CaseBar = styled.div`
  border-bottom: ${props =>
    props.theme.main === 'dark'
      ? '1px solid rgba(229, 229, 229, 0.2)'
      : '1px solid rgba(20, 33, 61, 0.2)'};
  display: flex;
  @media (max-width: 576px) {
    flex-direction: column;
  }
`;

Code Expected after Refactoring
export const CaseBar = styled.div`
  border-bottom: ${props =>
    props.theme.main === 'dark'
      ? '1px solid rgba(229, 229, 229, 0.2)'
      : '1px solid rgba(20, 33, 61, 0.2)'};
  display: flex;
  @media (max-width: 576px) {
    flex-direction: column;
  }
`;

Files involved

./src/index.tsx
./src/CaseBar.ts (need to be created)

🍰 I'll take it!

Thanks a lot 👍 Feel free to create a Pull Request. If you have any trouble, feel free to contact me.


Unable to download the python script

https://raw.githubusercontent.com/ansible-collections/community.general/master/scripts/inventory/azure_rm.py seems to be invalid and wget is failing.
Tried accessing the azure_rm.py link placed above the wget section and that returns a 404.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 059a1972-09ee-02a7-8159-07ba04a2c763
Version Independent ID: 4323aa16-062c-1b11-fb73-11777c34f88e
Content: Tutorial - Configure dynamic inventories of your Azure resources using Ansible
Content Source: articles/ansible/dynamic-inventory-configure.md
Service: ansible
GitHub Login: @TomArcherMsft
Microsoft Alias: tarcher

@samanthpulluru The new URL is https://github.com/ansible-collections/community.general/blob/main/scripts/inventory/azure_rm.py
The article has been updated and will publish today.

Hi Tom,
Thanks for the update. Appreciate it.
Have a good day!
Regards
Samanth
On Thu, Jul 16, 2020, 6:51 PM Tom Archer<EMAIL_ADDRESS>wrote:

@samanthpulluru https://github.com/samanthpulluru The new URL is
https://github.com/ansible-collections/community.general/blob/main/scripts/inventory/azure_rm.py
The article has been updated and will publish today.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-dev-docs/issues/227#issuecomment-659407357,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL7QZAJTYEAVQPVGYD3H6TLR335F5ANCNFSM4OZT3GBQ
.


Please update the version to v2.0

Hi
 def _load_openid_config(self):         config_url = "https://{}/{}/.well-known/openid-configuration?appid={}".format(             settings.SERVER, settings.TENANT_ID, settings.CLIENT_ID         )
 def _load_openid_config(self):         config_url = "https://{}/{}/v2.0/.well-known/openid-configuration?appid={}".format(             settings.SERVER, settings.TENANT_ID, settings.CLIENT_ID         )
Please update the version here or provide the version in settings if possible
Thanks

@JonasKs Please take of this too

@JonasKs I have submitted the pull request. Please let me know if anything else is needed

Seems like this was resolved in release 1.7.0 🙂


array_slice panicked when called with empty args

Describe the bug
thread 'main' panicked at datafusion/functions-array/src/extract.rs:255:39:
index out of bounds: the len is 0 but the index is 0
To Reproduce
Run the query in CLI
DataFusion CLI v38.0.0
> select array_slice();

thread 'main' panicked at datafusion/functions-array/src/extract.rs:255:39:
index out of bounds: the len is 0 but the index is 0

Expected behavior
Return an error instead of panic.
Additional context
No response

This should be handled by signature

This should be handled by signature

It panicked at display_name, happened before checking the signature.
Maybe we can check the signature earlier, but for now, I plan to fix the display_name directly.


Update datasets to >= 2.3

Would it be possible to update the datasets dependency to >= 2.3?
In that version a bug was fixed which prevents re-using cached dataset transforms: https://github.com/huggingface/datasets/commit/ffbb21e6b2914632075aee11098f4310b3de82a8

Thank you.  We will test and update.
@seirasto This may address the caching issues https://github.com/primeqa/primeqa/issues/259

Maybe directly update to >= 2.4 since this version also fixes a hashing bug with Python 3.9 still occurring in datasets 2.3.1: https://github.com/huggingface/datasets/commit/6f03d2256c1caa6a3c551cb21ac760db35775361
(This is the bug addressed: https://github.com/huggingface/datasets/issues/4506)
It's also quite severe if you set a global random seed which leads to cached transforms being reused wrongly as the same hash might refer to different processings.

PR merged.


Feature/#194 add json writer

Description
Linked issue: #194
Definition of Done

[x] There are no TODOs left in the code
[x] Code style follows the tinylog standard
[x] All classes and methods have Javadoc
[ ] Changes are covered by JUnit tests including corner cases, errors, and exception handling
[x] Maven build works including compiling, tests, and checks (mvn verify)
[x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

Documentation
Additions or amendments for the public documentation:
Writer                                      | Property Value | Description
:------------------------------------------ |:-------------- |:------------
...
[JSON Writer](#json-writer)                 | json           | Writes log entries to a json file

...
### JSON Writer

The JSON writer writes log entries to a defined json file.

Example:

```properties
writer         = json
writer.file    = log.json
writer.charset = UTF-8
writer.append  = true
``

Agreements

[x] I agree that my changes will be published under the terms of the Apache License 2.0
[x] I agree that my GitHub user name will be published in the release notes

Whoaw. I updated the wiki page and thought it would add it to the PR but it instantly saved it. Sorry for that, maybe we can rollback the page until this PR is merged.

I discovered some problems with the initial appending logic, thus I converted this PR to draft.
Maybe someone has an idea? The current solution expects the "]" to be the last character (including newlines). Truncating the bytes of "]" may or may not delete the "]" character depending on whether it's the last character or not.
I wanted to read the stream until I find bytes that match those of "]" and truncate all bytes after it but the stream we use is an OutputStream, so it has no API to read bytes. This needs further investigation

Thank your for your awesome, pull request! Your implementation looks very solid and promising :) According to your commits, I see that you found out all tinylog's build specifics by yourself. I know that it isn't such easy on the first attempt as tinylog 2 still supports old Java versions including Android 1. Thank you very much that you also wrote good Javadoc documentation and JUnit tests.

Whoaw. I updated the wiki page and thought it would add it to the PR but it instantly saved it. Sorry for that, maybe we can rollback the page until this PR is merged.

Unfortunately, GitHub doesn't support pull requests for the Wiki repo. It was also surprised when I initially set the Wiki up. However, it is very easy to revert a commit via Git.

Hi, no probs there as I use this logger in one of my projects :). If you're curious, here's a link: DirisSlave discord bot
I figured out most things like checkstyle, spotbugs etc with your requirement on mvn verify. I think we should definitely add a CONTRIBUTING.md guideline. I had some problems with other packages like tinylog-api, but I ignored them as I didn't change anything there.
Also I didn't write many tests. I'm not that familiar with JUnit.
By the way, I found another bug regarding exceptions inside { message }. To enable them, I removed the hasMessage flag and instead always add messages (seems like the token includes them automagically). Line breaks aren't escaped for JSON, we have to do this ourselves. But I think we can replace all \n with \\n after building the JSON object string. Gonna give it a try today.

I figured out most things like checkstyle, spotbugs etc with your requirement on mvn verify. I think we should definitely add a CONTRIBUTING.md guideline. I had some problems with other packages like tinylog-api, but I ignored them as I didn't change anything there.

I totally I agree with you. I have just created an issue for creating a CONTRIBUTING.md guideline.

After my code review, I got an idea to make the JSON writer more flexible. Currently, the output JSON field names and values are hard coded. Instead, they could be configurable in the tinylog.properties like for the JDBC writer (documentation, source code).
An example configuration could look like this:
writer                 = json
writer.level           = debug              # optional
writer.file            = log.txt            # required, absolute or relative path
writer.charset         = UTF-8              # optional
writer.append          = true               # optional, default: false
writer.buffered        = true               # optional, default: false
writer.field.timestamp = date               # short for {date}
writer.field.message   = message            # short for {message}

If you take a look into JdbcWriter.createTokens(), you will see that it took for me less than 10 lines to build tokens from the configuration dynamically.
Please let me know what you think :)

Thanks for your awesome review. I'm working on your changes rn.
I really didn't use tools you already provided ;). The tokens do take away a lot of work!
Please take a look in the changes and review if it matches your expectations.

I figured out how to handle the line breaks in exception messages. Now, when there is a line seperator, it gets escaped correctly :)
{
    "message": "Hello World!: java.lang.Exception: error message\nat org.tinylog.writers.JsonWriterTest.unappendingWriting(JsonWriterTest.java:57)\nat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\nat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\nat java.base/java.lang.reflect.Method.invoke(Method.java:564)\nat...",
    "level": "TRACE"
}

Thank you for your changes! The code looks really clear :) I will review it tomorrow.

Just finished the code review. I think the JSON writer is very close to be ready for merging :) I'm going to test the writer in my example project now.

While testing on my local Windows laptop, I found some issues:

Only the first byte of NEW_LINE is written in postprocessFile()
An IOException is thrown when calling inputChannel.map() in preprocessFile()
Invalid trailing comma for the last log entry
JSON is not formatted with indention and new lines
The writer is not thread-safe

I have fixed all issues but the last one. Especially, fixing the IOException was a bit tricky. Finally, I have created a new ByteArrayWriter for RandomAccessFiles and removed the FileChannel.
My updated version of the JsonWriter works on my local Windows laptop, but needs a critical review and is still not thread-safe. However, it is already 1am here and have to continue tomorrow. Nevertheless, I wanted to share my current version.
/*
 * Copyright 2021 Martin Winandy
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

package org.tinylog.writers.raw;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * Wrapper for using any {@link RandomAccessFile} as writer.
 */
public final class RandomAccessFileWriter implements ByteArrayWriter {

	private final RandomAccessFile file;

	/**
	 * @param file
	 *            Underlying random access file
	 */
	public RandomAccessFileWriter(final RandomAccessFile file) {
		this.file = file;
	}

	@Override
	public void write(final byte[] data, final int length) throws IOException {
		file.write(data, 0, length);
	}

	@Override
	public void flush() {
	}

	@Override
	public void close() throws IOException {
		file.close();
	}

}

/*
 * Copyright 2021 Direnc Timur
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

package org.tinylog.writers;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;

import org.tinylog.Level;
import org.tinylog.core.LogEntry;
import org.tinylog.core.LogEntryValue;
import org.tinylog.pattern.FormatPatternParser;
import org.tinylog.pattern.Token;
import org.tinylog.provider.InternalLogger;
import org.tinylog.writers.raw.BufferedWriterDecorator;
import org.tinylog.writers.raw.ByteArrayWriter;
import org.tinylog.writers.raw.RandomAccessFileWriter;
import org.tinylog.writers.raw.SynchronizedWriterDecorator;

/**
 * Writer for outputting log entries to a log file in JSON format. Already
 * existing files can be continued.
 */
public final class JsonWriter implements Writer {

	private static final String NEW_LINE = System.getProperty("line.separator");
	private static final int BUFFER_SIZE = 1024;
	private static final String FIELD_PREFIX = "field.";

	private final Charset charset;
	private ByteArrayWriter writer;
	private boolean firstEntry;

	private StringBuilder builder;
	private final Map<String, Token> jsonProperties;

	private final byte[] newLineBytes;
	private final byte[] bracketOpenBytes;
	private final byte[] bracketCloseBytes;

	/**
	 * @throws IOException              File not found or couldn't access file
	 * @throws IllegalArgumentException Log file is not defined in configuration
	 */
	public JsonWriter() throws IOException {
		this(Collections.<String, String>emptyMap());
	}

	/**
	 * @param properties Configuration for writer
	 * @throws IOException              File not found or couldn't access file
	 * @throws IllegalArgumentException Log file is not defined in configuration
	 */
	public JsonWriter(final Map<String, String> properties) throws IOException {
		jsonProperties = createTokens(properties);
		charset = getCharset(properties);
		newLineBytes = NEW_LINE.getBytes(charset);
		bracketOpenBytes = "[".getBytes(charset);
		bracketCloseBytes = "]".getBytes(charset);

		String fileName = getFileName(properties);
		File file = new File(fileName).getAbsoluteFile();
		file.getParentFile().mkdirs();

		boolean append = Boolean.parseBoolean(properties.get("append"));

		RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");

		if (append) {
			randomAccessFile.seek(randomAccessFile.length());
		} else {
			randomAccessFile.setLength(0);
		}

		writer = new RandomAccessFileWriter(randomAccessFile);

		boolean buffered = Boolean.parseBoolean(properties.get("buffered"));
		if (buffered) {
			writer = new BufferedWriterDecorator(writer);
		}

		boolean writingThread = Boolean.parseBoolean(properties.get("writingthread"));
		if (!writingThread) {
			writer = new SynchronizedWriterDecorator(writer, randomAccessFile);
		}

		preprocessFile(randomAccessFile, append);
	}

	@Override
	public void write(final LogEntry logEntry) throws IOException {
		if (builder == null) {
			builder = new StringBuilder();
		} else {
			builder.setLength(0);
		}
		addJsonObject(logEntry);
		writer.write(builder.toString().getBytes(charset), builder.length());
	}

	@Override
	public void flush() throws IOException {
		writer.flush();
	}

	@Override
	public void close() throws IOException {
		postprocessFile();
		writer.close();
	}

	@Override
	public Collection<LogEntryValue> getRequiredLogEntryValues() {
		Collection<LogEntryValue> values = EnumSet.noneOf(LogEntryValue.class);
		for (Token token : jsonProperties.values()) {
			values.addAll(token.getRequiredLogEntryValues());
		}
		return values;
	}

	/**
	 * Prepares and adds a Json Object. Also escapes special characters.
	 *
	 * @param logEntry LogEntry with information for token
	 */
	private void addJsonObject(final LogEntry logEntry) {
		if (!firstEntry) {
			builder.append(',');
		}

		builder.append(NEW_LINE);
		builder.append('\t');
		builder.append("{");

		Token[] tokenEntries = jsonProperties.values().toArray(new Token[0]);
		String[] fields = jsonProperties.keySet().toArray(new String[0]);

		StringBuilder tokenStringBuilder = new StringBuilder();
		for (int i = 0; i < tokenEntries.length; i++) {
			builder.append("\"").append(fields[i]).append("\":\"");

			Token token = tokenEntries[i];
			tokenStringBuilder.setLength(0);
			token.render(logEntry, tokenStringBuilder);

			escapeCharacter("\\", "\\\\", tokenStringBuilder);
			escapeCharacter("\"", "\\\"", tokenStringBuilder);
			escapeCharacter(NEW_LINE, "\\n", tokenStringBuilder);
			escapeCharacter("\t", "\\t", tokenStringBuilder);
			escapeCharacter("\b", "\\b", tokenStringBuilder);
			escapeCharacter("\f", "\\f", tokenStringBuilder);
			escapeCharacter("\n", "\\n", tokenStringBuilder);
			escapeCharacter("\r", "\\r", tokenStringBuilder);

			builder.append(tokenStringBuilder.toString()).append("\"");

			if (i + 1 < jsonProperties.size()) {
				builder.append(", ");
			}
		}
		builder.append("}");

		if (firstEntry) {
			firstEntry = false;
		}
	}

	private void escapeCharacter(final String character, final String escapeWith, final StringBuilder stringBuilder) {
		int index = stringBuilder.indexOf(character);
		while (index != -1) {
			stringBuilder.replace(index, index + character.length(), escapeWith);
			index += escapeWith.length();
			index = stringBuilder.indexOf(character, index);
		}
	}

	private Charset getCharset(final Map<String, String> properties) {
		String charsetName = properties.get("charset");
		try {
			return charsetName == null ? Charset.defaultCharset() : Charset.forName(charsetName);
		} catch (IllegalArgumentException ex) {
			InternalLogger.log(Level.ERROR, "Invalid charset: " + charsetName);
			return Charset.defaultCharset();
		}
	}

	private String getFileName(final Map<String, String> properties) {
		String fileName = properties.get("file");
		if (fileName == null) {
			throw new IllegalArgumentException("File name is missing for file writer");
		}
		return fileName;
	}

	/**
	 * Preprocesses the JSON file. If append mode is on, deletes the closing bracket
	 * and adds a comma instead. If it's a new file, appends an opening bracket.
	 *
	 *
	 * @param file   Log file
	 * @param append Append Mode on or off
	 * @throws IOException              Error reading or writing file
	 * @throws IllegalArgumentException Invalid file format
	 */
	private void preprocessFile(RandomAccessFile file, final boolean append) throws IOException, IllegalArgumentException {
		if (append && file.length() > 0) {
			long sizeToTruncate = 0;
			long currentPosition = file.getFilePointer();
			boolean foundClosingBracket = false;

			int numberOfBytes = (int) Math.min(currentPosition, BUFFER_SIZE);
			byte[] bytes = new byte[numberOfBytes];
			file.seek(currentPosition - numberOfBytes);
			file.read(bytes);

			for (int i = bytes.length - 1; i >= 0; i--, currentPosition--) {
				sizeToTruncate += 1;
				if (!foundClosingBracket && bytes[i] == ']') {
					foundClosingBracket = true;
				} else if (foundClosingBracket && bytes[i] != '\n' && bytes[i] != '\r') {
					sizeToTruncate -= 1;
					break;
				}
			}

			if (!foundClosingBracket) {
				throw new IllegalArgumentException(
						"Invalid JSON file. The file is missing a closing bracket for the array.");
			}

			long newFileSize = file.length() - sizeToTruncate;
			file.setLength(newFileSize);
			file.seek(newFileSize);
		}

		if (file.length() == 0) {
			writer.write(bracketOpenBytes, bracketOpenBytes.length);
		}

		file.seek(file.length() - 1);
		firstEntry = file.read() == '[';
	}

	/**
	 * Postprocesses the JSON file. Attempts to delete the trailing comma and
	 * appends closing bracket which were handled in
	 * {@link #preprocessFile(RandomAccessFile, boolean)}
	 *
	 * @throws IOException Error writing to file
	 */
	private void postprocessFile() throws IOException {
		writer.write(newLineBytes, newLineBytes.length);
		writer.write(bracketCloseBytes, bracketCloseBytes.length);
	}

	private static Map<String, Token> createTokens(final Map<String, String> properties) {
		FormatPatternParser parser = new FormatPatternParser(properties.get("exception"));

		Map<String, Token> tokens = new HashMap<String, Token>();
		for (Entry<String, String> entry : properties.entrySet()) {
			if (entry.getKey().toLowerCase(Locale.ROOT).startsWith(FIELD_PREFIX)) {
				tokens.put(entry.getKey().substring(FIELD_PREFIX.length()), parser.parse(entry.getValue()));
			}
		}
		return tokens;
	}

}

Thanks for your changes!
Could you maybe clarify what exception was thrown with map?
Hmm, after some quick research, many people suggest to map the data into memory and managing thread safety from there. According to https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html , there is a rws (read/write synchronized) access mode on RandomAccessFile, maybe we use it.

Could you maybe clarify what exception was thrown with map?
I have received an IOException with a German message: java.io.IOException: Der Vorgang ist bei einer Datei mit einem geöffneten Bereich, der einem Benutzer zugeordnet ist, nicht anwendbar. It means something like "The operation is not applicable to a file with an open area assigned to a user". I assume that Windows has issues with using the same file by multiple streams. Therefore, I switched to RandomAccessFile.

Hmm, after some quick research, many people suggest to map the data into memory and managing thread safety from there. According to https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html , there is a rws (read/write synchronized) access mode on RandomAccessFile, maybe we use it.

According to the Javadoc, "rws" requires at least one more low-level I/O operation in opposite to "rw". Therefore, I think that using the SynchronizedWriterDecorator is sufficient for our use case.

I hope that I could fix all thread-safety issues. About the trailing comma, I switched back to your solution.
Please review my code critically and feel free to change, rearrange, and improve it.
/*
 * Copyright 2021 Direnc Timur
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

package org.tinylog.writers;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;

import org.tinylog.Level;
import org.tinylog.core.LogEntry;
import org.tinylog.core.LogEntryValue;
import org.tinylog.pattern.FormatPatternParser;
import org.tinylog.pattern.Token;
import org.tinylog.provider.InternalLogger;
import org.tinylog.writers.raw.BufferedWriterDecorator;
import org.tinylog.writers.raw.ByteArrayWriter;
import org.tinylog.writers.raw.RandomAccessFileWriter;
import org.tinylog.writers.raw.SynchronizedWriterDecorator;

/**
 * Writer for outputting log entries to a log file in JSON format. Already
 * existing files can be continued.
 */
public final class JsonWriter implements Writer {

	private static final String NEW_LINE = System.getProperty("line.separator");
	private static final int BUFFER_SIZE = 1024;
	private static final String FIELD_PREFIX = "field.";

	private final Charset charset;
	private final RandomAccessFile randomAccessFile;
	private ByteArrayWriter writer;

	private StringBuilder builder;
	private final Map<String, Token> jsonProperties;

	private final byte[] newLineBytes;
	private final byte[] commaBytes;
	private final byte[] bracketOpenBytes;
	private final byte[] bracketCloseBytes;

	/**
	 * @throws IOException              File not found or couldn't access file
	 * @throws IllegalArgumentException Log file is not defined in configuration
	 */
	public JsonWriter() throws IOException {
		this(Collections.<String, String>emptyMap());
	}

	/**
	 * @param properties Configuration for writer
	 * @throws IOException              File not found or couldn't access file
	 * @throws IllegalArgumentException Log file is not defined in configuration
	 */
	public JsonWriter(final Map<String, String> properties) throws IOException {
		jsonProperties = createTokens(properties);
		charset = getCharset(properties);
		newLineBytes = NEW_LINE.getBytes(charset);
		commaBytes = ",".getBytes(charset);
		bracketOpenBytes = "[".getBytes(charset);
		bracketCloseBytes = "]".getBytes(charset);

		String fileName = getFileName(properties);
		File file = new File(fileName).getAbsoluteFile();
		file.getParentFile().mkdirs();

		boolean append = Boolean.parseBoolean(properties.get("append"));

		randomAccessFile = new RandomAccessFile(file, "rw");
		writer = new RandomAccessFileWriter(randomAccessFile);

		boolean buffered = Boolean.parseBoolean(properties.get("buffered"));
		if (buffered) {
			writer = new BufferedWriterDecorator(writer);
		}

		boolean writingThread = Boolean.parseBoolean(properties.get("writingthread"));
		if (writingThread) {
			builder = new StringBuilder();
		} else {
			writer = new SynchronizedWriterDecorator(writer, randomAccessFile);
		}

		preProcessFile(append);
	}

	@Override
	public void write(final LogEntry logEntry) throws IOException {
		StringBuilder builder;
		if (this.builder == null) {
			builder = new StringBuilder();
		} else {
			builder = this.builder;
			builder.setLength(0);
		}

		addJsonObject(logEntry, builder);
		writer.write(builder.toString().getBytes(charset), builder.length());
	}

	@Override
	public void flush() throws IOException {
		writer.flush();
	}

	@Override
	public void close() throws IOException {
		writer.flush();
		postProcessFile();
		writer.close();
	}

	@Override
	public Collection<LogEntryValue> getRequiredLogEntryValues() {
		Collection<LogEntryValue> values = EnumSet.noneOf(LogEntryValue.class);
		for (Token token : jsonProperties.values()) {
			values.addAll(token.getRequiredLogEntryValues());
		}
		return values;
	}

	/**
	 * Prepares and adds a Json Object. Also escapes special characters.
	 *
	 * @param logEntry LogEntry with information for token
	 * @param builder  Target for the created the JSON object
	 */
	private void addJsonObject(final LogEntry logEntry, final StringBuilder builder) {
		builder.append(NEW_LINE);
		builder.append('\t');
		builder.append("{");

		Token[] tokenEntries = jsonProperties.values().toArray(new Token[0]);
		String[] fields = jsonProperties.keySet().toArray(new String[0]);

		StringBuilder tokenStringBuilder = new StringBuilder();
		for (int i = 0; i < tokenEntries.length; i++) {
			builder.append("\"").append(fields[i]).append("\":\"");

			Token token = tokenEntries[i];
			tokenStringBuilder.setLength(0);
			token.render(logEntry, tokenStringBuilder);

			escapeCharacter("\\", "\\\\", tokenStringBuilder);
			escapeCharacter("\"", "\\\"", tokenStringBuilder);
			escapeCharacter(NEW_LINE, "\\n", tokenStringBuilder);
			escapeCharacter("\t", "\\t", tokenStringBuilder);
			escapeCharacter("\b", "\\b", tokenStringBuilder);
			escapeCharacter("\f", "\\f", tokenStringBuilder);
			escapeCharacter("\n", "\\n", tokenStringBuilder);
			escapeCharacter("\r", "\\r", tokenStringBuilder);

			builder.append(tokenStringBuilder.toString()).append("\"");

			if (i + 1 < jsonProperties.size()) {
				builder.append(", ");
			}
		}
		builder.append("},");
	}

	private void escapeCharacter(final String character, final String escapeWith, final StringBuilder stringBuilder) {
		int index = stringBuilder.indexOf(character);
		while (index != -1) {
			stringBuilder.replace(index, index + character.length(), escapeWith);
			index += escapeWith.length();
			index = stringBuilder.indexOf(character, index);
		}
	}

	private Charset getCharset(final Map<String, String> properties) {
		String charsetName = properties.get("charset");
		try {
			return charsetName == null ? Charset.defaultCharset() : Charset.forName(charsetName);
		} catch (IllegalArgumentException ex) {
			InternalLogger.log(Level.ERROR, "Invalid charset: " + charsetName);
			return Charset.defaultCharset();
		}
	}

	private String getFileName(final Map<String, String> properties) {
		String fileName = properties.get("file");
		if (fileName == null) {
			throw new IllegalArgumentException("File name is missing for file writer");
		}
		return fileName;
	}

	/**
	 * Pre-processes the JSON file. If append mode is on, deletes the closing bracket
	 * and adds a comma instead. If it's a new file, appends an opening bracket.
	 *
	 *
	 * @param append Append Mode on or off
	 * @throws IOException              Error reading or writing file
	 * @throws IllegalArgumentException Invalid file format
	 */
	private void preProcessFile(final boolean append) throws IOException, IllegalArgumentException {
		if (append && randomAccessFile.length() > 0) {
			long sizeToTruncate = 0;
			boolean foundClosingBracket = false;

			byte[] bytes = new byte[BUFFER_SIZE];
			randomAccessFile.seek(Math.max(0, randomAccessFile.length() - BUFFER_SIZE));
			int numberOfBytes = randomAccessFile.read(bytes);

			for (int i = numberOfBytes - 1; i >= 0; i--) {
				byte letter = bytes[i];
				sizeToTruncate += 1;

				if (!foundClosingBracket && letter == ']') {
					foundClosingBracket = true;
				} else if (foundClosingBracket && letter != '\n' && letter != '\r') {
					sizeToTruncate -= 1;
					break;
				}
			}

			if (!foundClosingBracket) {
				throw new IllegalArgumentException(
						"Invalid JSON file. The file is missing a closing bracket for the array.");
			}

			long newFileSize = randomAccessFile.length() - sizeToTruncate;
			randomAccessFile.setLength(newFileSize);
			randomAccessFile.seek(newFileSize);
		} else {
			randomAccessFile.setLength(0);
		}

		if (randomAccessFile.length() == 0) {
			writer.write(bracketOpenBytes, bracketOpenBytes.length);
		} else {
			randomAccessFile.seek(randomAccessFile.length() - 1);
			if (randomAccessFile.read() == '}') {
				writer.write(commaBytes, commaBytes.length);
			}
		}
	}

	/**
	 * Post-processes the JSON file. Attempts to delete the trailing comma and
	 * appends closing bracket which were handled in {@link #preProcessFile(boolean)}.
	 *
	 * @throws IOException Error writing to file
	 */
	private void postProcessFile() throws IOException {
		if (randomAccessFile.length() > 0) {
			randomAccessFile.seek(randomAccessFile.length() - 1);
			if (randomAccessFile.read() == ',') {
				randomAccessFile.setLength(randomAccessFile.length() - 1);
			}
		}

		writer.write(newLineBytes, newLineBytes.length);
		writer.write(bracketCloseBytes, bracketCloseBytes.length);
	}

	private static Map<String, Token> createTokens(final Map<String, String> properties) {
		FormatPatternParser parser = new FormatPatternParser(properties.get("exception"));

		Map<String, Token> tokens = new HashMap<String, Token>();
		for (Entry<String, String> entry : properties.entrySet()) {
			if (entry.getKey().toLowerCase(Locale.ROOT).startsWith(FIELD_PREFIX)) {
				tokens.put(entry.getKey().substring(FIELD_PREFIX.length()), parser.parse(entry.getValue()));
			}
		}
		return tokens;
	}

}

Hi, I added your changes and made some refactoring. I also added a test to the RandomAccessFileWriter.
I included JSON formatting with tabs and line breaks, although I think that JSON is format-less and we could omit formatting. That's just my opinion though. Please have a look at the changes!

@proohit: Thank you very much for your changes! The code looks perfect :) I only miss a test for getRequiredLogEntryValues(). Could you add a test case? Afterwards I'm going to merge your pull request.

Hey, I've  added the test.
Looking forward to see the JsonWriter in production :)

@proohit: I'm happy to merge your pull request! It is always interesting how many edge cases have to be considered. Thank you for bringing the original concept into a solid and flexible solution with good test coverage.


Installation Instructions Do Not Work as Written

Please provide a set of steps on how to reproduce the issue

Run the install command on recent Kali Linux

curl -sSfL https://raw.githubusercontent.com/anchore/grype-db/main/install.sh | sh -s -- -b /usr/local/bin

Run grype-db -g, fails

└─# grype-db -g
[0000]  INFO grype-db version: 0.24.0
[0000] ERROR 1 error occurred:
* unable to generate vunnel providers: unable to execute vunnel list: exec: "docker": executable file not found in $PATH
error: 1 error occurred:
* unable to generate vunnel providers: unable to execute vunnel list: exec: "docker": executable file not found in $PATH
What happened:
grype-db -g fails to generate a list of providers, throws an error asking for docker in $PATH
What you expected to happen:
grype-db to create a list of providers
Anything else we need to know?:
Please update instructions for other necessary pre-reqs (does this require docker in some form?)
Environment:

Output of grype-db version:
grype-db version
Application:        grype-db
Version:            0.24.0
BuildDate:          2024-09-26T11:38:18Z
GitCommit:          d8d1497bd5300438ab92b42d94cb064848b2a5f8
GitDescription:     v0.24.0
Platform:           linux/amd64
GoVersion:          go1.23.1
Compiler:           gc

OS (e.g: cat /etc/os-release or similar):

No LSB modules are available.
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:        2023.4
Codename:       kali-rolling

Hi @wits-zach - thanks for the issue. You're right, it's not completely clear to a new user what steps are required to bootstrap things.
You're right, you may need docker, podman, or a locally installed copy of vunnel. I went for the latter and did the following on my laptop, which already has uv installed.
$ mkdir -p ./temp/data
$ cd ./temp
$ uv venv
Using CPython 3.10.15
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ source .venv/bin/activate
(temp) $ uv pip install vunnel
Resolved 39 packages in 1.71s
   Built untokenize==0.1.1
   Built ijson==2.6.1
   Built sqlalchemy==1.4.54
Prepared 30 packages in 3.64s
Installed 39 packages in 83ms
 + certifi==2024.8.30
 + charset-normalizer==3.3.2
 + click==8.1.7
 + click-default-group==1.2.4
 + colorlog==6.8.2
 + cvss==3.2
 + defusedxml==0.7.1
 + docformatter==1.5.0
 + exceptiongroup==1.2.2
 + idna==3.10
 + ijson==2.6.1
 + importlib-metadata==7.2.1
 + iniconfig==2.0.0
 + iso8601==2.1.0
 + jinja2==3.1.4
 + lxml==5.3.0
 + markupsafe==2.1.5
 + mashumaro==3.13.1
 + mergedeep==1.3.4
 + orjson==3.10.7
 + packaging==24.1
 + pluggy==1.5.0
 + pytest==8.3.3
 + pytest-snapshot==0.9.0
 + python-dateutil==2.9.0.post0
 + pyyaml==6.0.2
 + requests==2.32.3
 + six==1.16.0
 + sqlalchemy==1.4.54
 + tomli==2.0.1
 + toposort==1.10
 + typing-extensions==4.12.2
 + untokenize==0.1.1
 + urllib3==2.2.3
 + vunnel==0.27.0
 + xsdata==22.12
 + xxhash==3.5.0
 + zipp==3.20.2
 + zstandard==0.23.0
(temp) $ curl -sSfL https://raw.githubusercontent.com/anchore/grype-db/main/install.sh | sh -s -- -b .
[info] fetching release script for tag='v0.24.0'
[info] using release tag='v0.24.0' version='0.24.0' os='darwin' arch='arm64'
[info] installed ./grype-db
(temp) $  cat >.grype-db.yaml <<'EOT'
provider:
  vunnel:
    executor: local
EOT
(temp) $ ./grype-db -g
[0000]  INFO grype-db version: 0.24.0
[0002]  INFO aggregating vulnerability data providers=[nvd alpine amazon chainguard debian github mariner oracle rhel sles ubuntu wolfi]
[0002]  INFO running vulnerability provider provider=chainguard
[0002]  INFO running vulnerability provider provider=nvd
[0002]  INFO running vulnerability provider provider=amazon
[0002]  INFO running vulnerability provider provider=alpine
[0002]  INFO chainguard: running chainguard provider
[0002]  INFO nvd: running nvd provider
[0002]  INFO chainguard: downloading chainguard secdb https://packages.cgr.dev/chainguard/security.json
[0002]  INFO nvd: downloading all CVEs
[0002]  INFO amazon: running amazon provider
[0002]  INFO alpine: running alpine provider
[0002]  INFO amazon: downloading amazon security advisory from https://alas.aws.amazon.com/AL2/alas.rss
[0002]  INFO alpine: downloading alpine secdb metadata from: https://secdb.alpinelinux.org
[0002]  INFO alpine: Downloading secdb edge main

etc.
Just thought I'd provide that to get you going, in case you don't want to install docker or podman. You don't need uv, but could use plain old pip install but this keeps it all nicely isolated.
Hope that helps, and we'll get the documentation updated accordingly.
Thanks again for the issue.

The action here is to update https://github.com/anchore/grype-db?tab=readme-ov-file#recommended to mention that grype-db doesn't do much without Vunnel, and explain that vunnel is run either in docker (which requires docker) directly as a python package, which requires that the python package be available and on PATH.

@smythp You're right, there's some API key requirements here, I suspect. A fresh pair of eyes on it would be very helpful,. Thank you.

I've got a blog post coming out on this on dev.to on Tuesday, once that comes out I'll crib commands from it to update the README.

@smythp awesome! I love reading blog posts from users. Do feel free to post the link here - or share it in the General category on the Anchore Community Discourse to start a conversation. :)

Thanks for the suggestion, @popey. The blog post is up and I posted in the general topic. Thanks for any feedback and hope it's a useful post for those digging into Grype's upstream provider utilities.
I'll look into doing a PR for the README using this material before the end of the week. :+1:


Using Hive from Scratch

Issue on page:        https://github.com/opentelekomcloud-docs/mapreduce-service/blob/main/doc/component-operation-guide-lts/source/using_hive/using_hive_from_scratch.rst
The hyperlink does not work

Hi @vladimirhasko Need your help to fix this link mapping on the below page -
https://docs.otc.t-systems.com/mapreduce-service/operation-guide-lts/using_hive/using_hive_from_scratch.html#mrs-01-0442


[FEATURE REQUEST] - Options in $gtm.init()

We would like to be able to add options on the fly, such as determining the id at the client-side execution time.
  ctx.$gtm = {
    init(options) {
      if (!initalized && window.$initGTM) {
        window.$initGTM(options)
      }
      initalized = true
    },
  // ...
  };

#5


Added Calendar to the Events Page

Using Styled Calendar, I added an embed using Iframe for the specifc sub calendar "Our Events" from the alborz gmail account.

Also added a favicon to the website, cuz why not :)

as requested by @amirdeljouyi, moved the celander to it's own page. removed it from the events page.


Wasted screen real estate in bottom panel if "Test: Python" tab is added

Issue Type: Bug
When I drag the "Test: Python" tab into the bottom panel, not all tabs are shown anymore. There is plenty of space though and I'd like to have all tabs displayed.

When I remove the tab again, everything is back to normal:

VS Code version: Code 1.54.3 (2b9aebd5354a3629c3aba0a5f5df49f43d6689f8, 2021-03-15T10:55:24.277Z)
OS version: Linux x64 5.8.0-48-generic snap
Remote OS version: Linux x64 5.8.0-48-generic

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz (8 x 2357)

GPU Status
2d_canvas: unavailable_softwaregpu_compositing: disabled_softwaremultiple_raster_threads: enabled_onoop_rasterization: disabled_offopengl: disabled_offprotected_video_decode: disabled_offrasterization: disabled_softwareskia_renderer: enabled_onvideo_decode: disabled_softwarevulkan: disabled_offwebgl: unavailable_softwarewebgl2: unavailable_software

Load (avg)
1, 1, 1

Memory (System)
15.30GB (0.74GB free)

Process Argv
--force-user-env --no-sandbox --unity-launch --no-sandbox --crash-reporter-id 9f44f085-df3c-48bc-ac0c-65e0090f6a3e

Screen Reader
no

VM
0%

DESKTOP_SESSION
ubuntu

XDG_CURRENT_DESKTOP
Unity

XDG_SESSION_DESKTOP
ubuntu

XDG_SESSION_TYPE
x11

Item
Value

Remote
Dev Container:

OS
Linux x64 5.8.0-48-generic

CPUs
Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz (8 x 2357)

Memory (System)
15.30GB (0.74GB free)

VM
0%

Extensions (8)

Extension
Author (truncated)
Version

remote-containers
ms-
0.163.2

vscode-pytest
Cam
0.1.1

gitlens
eam
11.3.0

goto-next-previous-member
mis
0.0.5

python
ms-
2021.3.680753044

vscode-pylance
ms-
2021.3.3

jupyter
ms-
2021.3.684299474

vscode-status-bar-format-toggle
tom
2.0.0

(1 theme extensions excluded)

@StefanBrand, we have pushed a fix around this behavior in the latest insiders. Can you confirm if it still exists https://code.visualstudio.com/insiders/?
cc @sandy081 as I believe you pushed the recent fix.

My recent change was about fixing missing ... action. I was looking for steps to repro this issue so that I can fix it
https://github.com/microsoft/vscode/issues/116423

/duplicate

Just tried it out and looks good in insider build! :)


Update climacommon to 2024_03_18

🤖 Beep boop. I am GabrieleBOT. 🤖 Please, check the release notes before merging this PR. Modifications might be required.

Failure looks unrelated


Panic in controller

@janeczku encountered the following panic

Validated on master 11/29
Steps:

ran Rancher server rancher: master
added a DO cluster
created notifier
created several different types of alters
deployed some workloads and catalog apps

Results:
alters were being fired and no panic in logs
Fix validated.


fix css import with webpack

Hello,
Actually, when i try to import the css with webpack encore, i got the error :
Module not found: Error: Package path ./css/datepicker.css is not exported from package node_modules/stimulus-datepicker (see exports field in node_modules/stimulus-datepicker/package.json)
Change
"exports": "./src/datepicker.js",
to
"files": [
    "css/",
    "src/"
  ],

Fix this issue for me but i don't know how i can run your tests :/
So i open this pr if it can help someone :)
Thx Calunia

Thanks for this.
I really have no idea what I'm doing with package.json!  There's plenty of documentation online but somehow it never quite explains anything.
I'll try this on my own app (which use import-maps) to check it keeps working.

@airblade Any chance you've had time to try this out with import-maps? I've also run into this issue, and would love to be able to just import the CSS. I'm also not super familiar with how package.json should be structured, so I don't know what migrating from exports to files affects.
Other libraries we use seem to use the files declaration in their package.json (trix comes to mind).

Given that import maps are a Javascript feature rather than CSS, how do you plan to use/reference the datepicker's CSS?

The project I'm working on isn't using import maps. We're using jsbundling-rails, and use css-loader to allow us load CSS.
I was asking about import maps since it sounded like you used them and were waiting to see how this PR would affect projects that use it!

Oh, I see.  I do use import-maps but I don't use any kind of CSS bundling; I copy-paste the CSS from any client-side packages I install (usually only this one) into my Rails app.  Which is a bit hacky but better than the complexity of CSS bundling.


Regression in hotReloadMillisecondsToFrame benchmark due to #17812

https://github.com/flutter/flutter/pull/17812 introduced a ~500ms regression in the hotReloadMillisecondsToFrame benchmark.
We were initially guessing that the regression was due to serial eviction of assets coming from the Flutter tool.  When trying to reproduce the regression locally, however, I'm seeing much stranger behavior:

There's only one service extension method being serviced during the hot reload benchmark, and that's ext.flutter.reassemble({isolateId: isolates/<isolateId>}).

If I set a Stopwatch immediately before and after the Timer await, it reports that when the service extension method is being serviced, that one await statement is taking 600ms!

I can reliably reproduce the regression locally, but it reliably reproduces a 200ms regression for me, which doesn't match the delay found in the previous bullet.

/cc @Hixie

Seen on a device lab run with the instrumentation added in #17977:
stdout: [        ] Updating files
stdout: [  +32 ms] DevFS: Sync finished
stdout: [        ] Synced 0.0MB.
stdout: [   +2 ms] _reloadSources: {pause: false, rootLibUri: /data/user/0/io.flutter.demo.gallery/cache/edited_flutter_galleryNXNIGZ/edited_flutter_gallery/lib/main.dart.dill, packagesUri: /data/user/0/io.flutter.demo.gallery/cache/edited_flutter_galleryNXNIGZ/edited_flutter_gallery/.packages, isolateId: isolates/237392788}
stdout: [  +11 ms] reloaded 0 of 510 libraries
stdout: [        ] Sending reload events to Moto G 4
stdout: [        ] Sending reload event to "main.dart:main()"
stdout: [        ] getIsolate: {isolateId: isolates/237392788}
stdout: [  +47 ms] _flutter.listViews: {isolateId: isolates/237392788}
stdout: [   +8 ms] Evicting dirty assets
stdout: [        ] Reassembling application
stdout: [   +1 ms] ext.flutter.reassemble: {isolateId: isolates/237392788}
stdout: [  +23 ms] I/flutter (25038): service extension method received: ext.flutter.reassemble({isolateId: isolates/237392788})
stdout: [ +509 ms] I/flutter (25038): Action "Wait for outer event loop" took 0:00:00.505580
stdout: [+1485 ms] ext.ui.window.scheduleFrame: {isolateId: isolates/237392788}
stdout: [  +34 ms] Hot reload performed in 2,789ms.
stdout: [        ] Reloaded 0 of 510 libraries in 2,801ms.

Sure enough, the following line is taking half a second:
await new Future<void>.delayed(Duration.zero);

That probably means we are scheduling another microtask before that one, and it's taking a long time (500ms) to run.

Yep.  Or several microtasks.
While #17812 did expose this, it shouldn't be reverted because it's correct.  The bigger question is what we're doing in a microtask loop that's taking 30 frames...
Note also that if we don't trigger hot reload immediately (as --benchmark is coded to do), it's much faster (~60-70% faster) in my anecdotal testing.  So it would seem that we're measuring the hot reload time when there's still a lot of stuff being scheduled in the app.

should we make --benchmark ask the app when it's ready?

Per discussion in #17888, these regressions appear to be a problem with the benchmark reporting, so I'm closing this bug as a dup of #17888


add lastrowid to database object

Seriously, how one is supposed to get last inserted rowid in asynchronous environment?
via timestamps ?
via additional flags ?
via sqlite3_last_insert_rowid() ? (it won't work as the required callback might happen later than last insertion)

I am terribly sorry. I found out this kind of feauture in the api.


IT-3318: Update version

This PR adds version 1.2.13 to test if *.6a instance types work.

It looks like the problem is on the strides account. We should push to that only.


VEC-399: Add typehints

Codecov Report
Attention: Patch coverage is 89.55224% with 7 lines in your changes missing coverage. Please review.

Project coverage is 71.50%. Comparing base (11fe217) to head (b474b33).

Files with missing lines
Patch %
Lines

src/aerospike_vector_search/shared/conversions.py
65.00%
7 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #63      +/-   ##
==========================================
+ Coverage   71.47%   71.50%   +0.03%
==========================================
  Files          25       25
  Lines        2286     2285       -1
==========================================
  Hits         1634     1634
+ Misses        652      651       -1

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

Also I see there are some broken tests


Feasibility study - PostGIS & QGIS

Feasibility study about the following things:

a table that has 5D data (x,y,z,time,alternative)
project that data onto a 2D map
open QGIS and visualize that data
is rasterization possible?

which boxes are hatched

use Rust Diesel library to make spatial sql queries for PostGIS database

Please use - [ ] and indicate which parts were already done? (E.g. did you already open QGIS? Did you already work with postGIS?)
The main goal of the feasibility study is that we have a working PostGIS implementation that can give a 2D representation of a 5D data.


npm run serve error: You must pass the "decoratorsLegacy": true option to @babel/preset-stage-2

Version
3.0.0-beta.6
Reproduction link
https://codepen.io/
Steps to reproduce

Vue CLI v3.0.0-beta.6
? Please pick a preset: Manually select features
? Check the features needed for your project: TS, Router, Vuex, CSS Pre-processors, Linter
? Use class-style component syntax? Yes
? Use Babel alongside TypeScript for auto-detected polyfills? Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): LESS
? Pick a linter / formatter config: Airbnb
? Pick additional lint features:
? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No

vue-cli will install<EMAIL_ADDRESS>and npm run serve will throw error:
The new decorators proposal is not supported yet. You must pass the "decoratorsLegacy": true option to @babel/preset-stage-2
see:  https://github.com/babel/babel/blob/master/packages/babel-preset-stage-2/src/index.js#L29
forgive my poor English
What is expected?
server success
What is actually happening?
The new decorators proposal is not supported yet. You must pass the "decoratorsLegacy": true option to @babel/preset-stage-2

Same. On a fresh install:
>yarn serve
yarn run v1.5.1
$ vue-cli-service serve --open
 INFO  Starting development server...
 94% asset optimization

 ERROR  Failed to compile with 1 errors                                                                                23:59:26

 error  in ./src/main.js

Module build failed: Error: [BABEL] /Users/dzza/multiselect/src/main.js: The new decorators proposal is not supported yet. You must pass the `"decoratorsLegacy": true` option to @babel/preset-stage-2 (While processing<EMAIL_ADDRESS>    at /Users/dzza/multiselect/node_modules/@babel/preset-stage-2/lib/index.js:107:11
    at /Users/dzza/multiselect/node_modules/@babel/helper-plugin-utils/lib/index.js:18:12
    at /Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:172:14
    at cachedFunction (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/caching.js:42:17)
    at loadPresetDescriptor (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:243:63)
    at /Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:68:19
    at Array.map (<anonymous>)
    at recurseDescriptors (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:66:36)
    at recurseDescriptors (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:97:26)
    at loadFullConfig (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:112:6)

 @ multi (webpack)-dev-server/client/index.js (webpack)/hot/dev-server.js ./src/main.js

package.json
{
  "name": "servicevue",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "d3-hierarchy": "^1.1.5",
    "es6-tween": "^5.1.0",
    "faker": "^4.1.0",
    "panzoom": "^4.4.0",
    "svg-pan-zoom": "^3.5.3",
    "validator": "^9.4.1",
    "vue": "^2.5.13",
    "vue-resource": "^1.3.6",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.0-beta.6",
    "@vue/cli-service": "^3.0.0-beta.6",
    "node-sass": "^4.7.2",
    "sass-loader": "^6.0.6",
    "sass-resources-loader": "^1.3.3",
    "vue-template-compiler": "^2.5.13"
  },
  "babel": {
    "presets": [
      "@vue/app"
    ]
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

Same. On a fresh install:
>yarn serve
yarn run v1.5.1
$ vue-cli-service serve --open
 INFO  Starting development server...
 94% asset optimization

 ERROR  Failed to compile with 1 errors                                                                                23:59:26

 error  in ./src/main.js

Module build failed: Error: [BABEL] /Users/dzza/multiselect/src/main.js: The new decorators proposal is not supported yet. You must pass the `"decoratorsLegacy": true` option to @babel/preset-stage-2 (While processing<EMAIL_ADDRESS>    at /Users/dzza/multiselect/node_modules/@babel/preset-stage-2/lib/index.js:107:11
    at /Users/dzza/multiselect/node_modules/@babel/helper-plugin-utils/lib/index.js:18:12
    at /Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:172:14
    at cachedFunction (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/caching.js:42:17)
    at loadPresetDescriptor (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:243:63)
    at /Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:68:19
    at Array.map (<anonymous>)
    at recurseDescriptors (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:66:36)
    at recurseDescriptors (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:97:26)
    at loadFullConfig (/Users/dzza/multiselect/node_modules/@babel/core/lib/config/full.js:112:6)

 @ multi (webpack)-dev-server/client/index.js (webpack)/hot/dev-server.js ./src/main.js

package.json
{
  "name": "multiselect",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "vue": "^2.5.13"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.0-beta.6",
    "@vue/cli-plugin-eslint": "^3.0.0-beta.6",
    "@vue/cli-service": "^3.0.0-beta.6",
    "@vue/eslint-config-prettier": "^3.0.0-beta.6",
    "node-sass": "^4.7.2",
    "sass-loader": "^6.0.6",
    "vue-template-compiler": "^2.5.13"
  },
  "babel": {
    "presets": [
      "@vue/app"
    ]
  },
  "eslintConfig": {
    "root": true,
    "extends": [
      "plugin:vue/essential",
      "@vue/prettier"
    ]
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

I get the same error, is there any solution?

me to

As babel added "decoratorsLegacy" to presets few days ago
https://github.com/babel/babel/commit/2679d6775cc957e6cc77f23da0e31cd24bbfd18f
I changed vue/babel-preset-app/index.js
  const envOptions = {     modules: options.modules || false,     targets: options.targets,     useBuiltIns: typeof options.useBuiltIns === 'undefined' ? 'usage' : options.useBuiltIns,   }
added decoratorsLegacy
  const envOptions = {     modules: options.modules || false,     targets: options.targets,     useBuiltIns: typeof options.useBuiltIns === 'undefined' ? 'usage' : options.useBuiltIns,     decoratorsLegacy: options.decoratorsLegacy || false   }
It works, not sure whether it is best way though

missed another part need to change
line number : 40
set decoratorsLegacy to true
 presets.push([require('@babel/preset-stage-2'), {
    useBuiltIns: true,
    decoratorsLegacy: true
  }])

I used the vue-cli, and I don't have the file locally, the sample code of in the package-lock.json is as following:
"dependencies": {     "@babel/code-frame": {       "version": "7.0.0-beta.42",       "resolved"<EMAIL_ADDRESS>      "integrity": "sha512-L8i94FLSyaLQpRfDo/qqSm8Ndb44zMtXParXo0MebJICG1zoCCL4+GkzUOlB4BNTRSXXQdb3feam/qw7bKPipQ==",       "dev": true,       "requires": {         "@babel/highlight": "7.0.0-beta.42"       }     },     "@babel/core": {       "version": "7.0.0-beta.42",       "resolved"<EMAIL_ADDRESS>      "integrity": "sha512-jcjZRewF/xqROfbk8EGyWlykaIR3IwrcefjWHu8xh4QnULSv3nfkjPM35v1itDgAT4/Jj5b4mPf4eZSC2HoRQA==",       "dev": true,       "requires": {         "@babel/code-frame": "7.0.0-beta.42",         "@babel/generator": "7.0.0-beta.42",         "@babel/helpers": "7.0.0-beta.42",         "@babel/template": "7.0.0-beta.42",         "@babel/traverse": "7.0.0-beta.42",         "@babel/types": "7.0.0-beta.42",         "babylon": "7.0.0-beta.42",         "convert-source-map": "1.5.1",         "debug": "3.1.0",         "json5": "0.5.1",         "lodash": "4.17.5",         "micromatch": "2.3.11",         "resolve": "1.5.0",         "semver": "5.5.0",         "source-map": "0.5.7"       }     },     "@babel/generator": {       "version": "7.0.0-beta.42",       "resolved"<EMAIL_ADDRESS>      "integrity": "sha512-9x3zS4nG/6GAvJWB8fAK+5g/Di36xdubB43dMNSucNJTwPvmyfCippir/0I8zyG+ID66hLCLi8V9bomlWRYaHA==",       "dev": true,       "requires": {         "@babel/types": "7.0.0-beta.42",         "jsesc": "2.5.1",         "lodash": "4.17.5",         "source-map": "0.5.7",         "trim-right": "1.0.1"       }     },     "@babel/helper-annotate-as-pure": {       "version": "7.0.0-beta.42",       "resolved"<EMAIL_ADDRESS>      "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==",       "dev": true,       "requires": {         "@babel/types": "7.0.0-beta.42"       }     },
Could you tell me what is the reason that I can run the command yarn build  --mode production on some computer, but at the serve it show
Module build failed: Error:[BABEL] : The new decorators proposal is not supported yet. You must pass the "decoratorsLegacy": true option to

got the same error！

My working file of<EMAIL_ADDRESS>
module.exports = (context, options = {}) => {
  const presets = []
  const plugins = []

  // JSX
  if (options.jsx !== false) {
    plugins.push(
      require('@babel/plugin-syntax-jsx'),
      require('babel-plugin-transform-vue-jsx')
      // require('babel-plugin-jsx-event-modifiers'),
      // require('babel-plugin-jsx-v-model')
    )
  }

  const envOptions = {
    modules: options.modules || false,
    targets: options.targets,
    useBuiltIns: typeof options.useBuiltIns === 'undefined' ? 'usage' : options.useBuiltIns,
    decoratorsLegacy: options.decoratorsLegacy || false
  }
  delete envOptions.jsx
  // target running node version (this is set by unit testing plugins)
  if (process.env.VUE_CLI_BABEL_TARGET_NODE) {
    envOptions.targets = { node: 'current' }
  }
  // cli-plugin-jest sets this to true because Jest runs without bundling
  if (process.env.VUE_CLI_BABEL_TRANSPILE_MODULES) {
    envOptions.modules = 'commonjs'
    // necessary for dynamic import to work in tests
    plugins.push(require('babel-plugin-dynamic-import-node'))
  }

  // pass options along to babel-preset-env
  presets.push([require('@babel/preset-env'), envOptions])

  // stage 2. This includes some important transforms, e.g. dynamic import
  // and rest object spread.
  presets.push([require('@babel/preset-stage-2'), {
    useBuiltIns: true,
    decoratorsLegacy: true
  }])

  // transform runtime, but only for helpers
  plugins.push([require('@babel/plugin-transform-runtime'), {
    polyfill: false,
    regenerator: false,
    moduleName: path.dirname(require.resolve('@babel/runtime/package.json'))
  }])

  return {
    presets,
    plugins
  }
}

added line 21:
decoratorsLegacy: options.decoratorsLegacy || false
and line 42 :
decoratorsLegacy: true

same error

me too

Me too. Needs urgent fix!

坐等修复

the same problem

While those PR changes are discussed vue create is broken for the entire community, and I'd expect some existing projects are broken if they lose their lockfile as well.
Maybe there should a hard lock onto the previous beta version of babel rather than a ^ to prevent this from happening again

Confirmed, just talked to the babel maintainers who say that you should absolutely version lock your babel betas.
https://github.com/babel/babel/commit/2679d6775cc957e6cc77f23da0e31cd24bbfd18f

@light24bulbs Since Babel 7 is still a prerelease beta, we're free to make breaking changes between versions. If you're using 7.x, you should be using one specific version of it.

Really sorry this happened!
We aren't in RC yet and there has been a few things we wanted to change before doing so. Unfortunately, this means that a project that is using ^ would pick up the latest beta. And this isn't specific to this release or even this project since at some point you might hit an intentional breaking change. The internal packages are also exact versions as well; this can be an issue in a monorepo.
Not really sure a better way to be able to talk/enforce this on our side. I think we've said this per release, but it hasn't broken in such an obvious way for people before?
Here's Babel's own deps for Babel https://github.com/babel/babel/blob/3a2aa9b86284957533d01105754044fb6b235d41/package.json#L13-L15.

wish u guys fix it

I had solved the problem by using a custom config by @babel/preset-env in file .babelrc. Working well, like this:
{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": [
          "> 5%",
          "last 2 versions",
          "not ie <= 8"
        ]
      },
      "modules": false,
      "exclude": [
        "transform-regenerator"
      ]
    }],
    ["@babel/preset-stage-2", {
      "useBuiltIns": true,
      "decoratorsLegacy": true
    }]
  ],
  "plugins": [
  ]
}

Guys while this issue is not fixed, simply use this temporary solution:
Specify the old version of @babel/preset-stage-2 in devDependencies
"devDependencies": {
  "@babel/preset-stage-2": "7.0.0-beta.44",
  ...
}

Waiting!

Waiting for what ? It's a beta of vue-cli, and multiple way to fix the issue has been given, just use them ?

No one works for me @Pymous .

  "devDependencies": {       "@babel/preset-stage-2": "7.0.0-beta.44",     "@vue/cli-plugin-babel": "^3.0.0-beta.6",     "@vue/cli-plugin-eslint": "^3.0.0-beta.6",     "@vue/cli-plugin-pwa": "^3.0.0-beta.6",     "@vue/cli-plugin-unit-jest": "^3.0.0-beta.6",     "@vue/cli-service": "latest",     "@vue/eslint-config-airbnb": "^3.0.0-beta.6",     "@vue/test-utils": "^1.0.0-beta.14",     "autoprefixer": "^8.3.0",     "babel-core": "^7.0.0-0",     "babel-eslint": "^8.2.3",     "babel-jest": "^22.0.4",     "babel-plugin-transform-class-properties": "^6.24.1",     "babel-plugin-transform-decorators-legacy": "^1.3.4",     "eslint": "^4.19.1",     "less": "^2.7.3",     "less-loader": "^4.0.5",     "lint-staged": "^6.0.0",     "postcss-import": "^11.1.0",     "postcss-preset-env": "^3.2.2",     "vue-svgicon": "^2.1.3",     "vue-template-compiler": "^2.5.13"  I have that for the moment maybe change another thing ?

I don't have any error with your dependancies on a clean folder. Try clearing your node_modules folder ? You might have installed a package which is conflicting with the script and not saved it to your package.json

You can slove this problem by configuring .babelrc like this.
PS: @babel/preset-stage-2 must be configured before @vue/app
{
  "presets": [
    [
      "@babel/preset-stage-2",
      {
        "decoratorsLegacy": true
      }
    ],
    "@vue/app"
  ]
}

adding to .babelrc is not helping. The same is for just using the fixed version of preset-stage-2, and both in combination. Hopefully the next beta will be out soon and this issue addressed as well. Hacking the code in node_modules/ is no solution.
Waiting for https://github.com/vuejs/vue-cli/pull/1163 to merged.

One of my colleague have this error ... Mine is resolve
error  in ./src/App.vue Module build failed: TypeError: Property right of AssignmentExpression expected node to be of a type ["Expression"] but instead got null

https://github.com/vuejs/vue-cli/issues/1162#issuecomment-383797149 worked for me.
Just to clarify, you'll want to add this the @babel/preset-stage-2 line in your package.json sitting in the root of your project. There is not currently an entry for that package in there and that threw me off. Don't forget to run npm install after you update package.json

I solved this problem.
npm install --save-dev babel-preset-stage-2

Installing<EMAIL_ADDRESS>per https://github.com/vuejs/vue-cli/issues/1162#issuecomment-383797149 did not resolve the error for me. The suggestion in https://github.com/vuejs/vue-cli/issues/1162#issuecomment-383796325 actually worked, but I discovered a different solution that modifies the @vue/app preset to include the required decoratorsLegacy setting:

Delete .babelrc (which only contains a config to use the @vue/app preset).
Create .babelrc.js with the following code:

const vueBabelPreset = require('@vue/babel-preset-app');

module.exports = (context, options = {}) => {
  // Cache the returned value forever and don't call this function again.
  context.cache(true);

  const {presets, plugins} = vueBabelPreset(context, options);

  // Find @babel/preset-stage-2, and update its config to enable `decoratorsLegacy`.
  const presetStage2 = require('@babel/preset-stage-2');
  const preset = presets.find(p => p[0] === presetStage2);
  if (preset) {
    preset[1].decoratorsLegacy = true;
  }

  return {
    presets,
    plugins
  };
}

I think I tried most if not all of the suggestions thus far. Only thing that worked for me was this comment. Thanks @nitta-honoka

i just found out that removing the babel entry in package.json also solves the issue.

"@babel/preset-stage-2": "7.0.0-beta.44"

didn't work for me

there is a new cli version published (beta7) that fixes this issue. This issue can be closed now.

I'm using beta7 and still had the issue, until I reinstalled node mods


Add async support

Codecov Report

Merging #8 (12c22f8) into main (44cc5eb) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main       #8   +/-   ##
=======================================
  Coverage   99.68%   99.68%
=======================================
  Files          19       19
  Lines        1255     1262    +7
=======================================
+ Hits         1251     1258    +7
  Misses          4        4

Impacted Files
Coverage Δ

src/Common/Mathematics/Maths.cs
100.00% <ø> (ø)

src/Common/Pipelines/Pipeline.cs
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Enum properties with no JmixProperty annotation are not detected as entitiy property

Test case

Create entity (dto NewEntity for example)
Create enumeration
Add this enum as property in your entitity(NewEntity)
Go to the entity definition and check that enum prorety has no JmixProperty annotation
Create screens for this entity
Run application and go to the browser screen
Try create new entity
Here IllegalStateException: Could not resolve property path 'newenum' in 'NewEntity'
Stop application
Force add @JmixProperty to the enum property
Studio will say Jmix: Field 'newenum' has redundant @JmixProperty annotation, ignore it
Run application and again try create NewEntity
All fine

can't reproduce


Update to 0.9.3

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


chore(release): 29.0.0-next.0

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 96.508%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
3971

Relevant Lines:
4062

💛  - Coveralls

why no release of ts-jest@^29 on npm yet?


Does this program still work?

I understand the last commit was 5 months ago, but valve hasnt really changed anything worthwhile in the recent months. Is anyone currently using this? Is it still undetected by VAC?
Id love to use this since it looks very lightweight and sleek
Thanks for any responses

Same problem.After the last update, this generated executable program cannot be launched :(

The main reason why the executable program cannot work is that the GetModuleBaseAddress() function cannot jump out of the loop


Deprecation errors using categories and category

Every time I specify a category in paginate I run across this error during building.
document#categories is now a key in the #data hash
octopress-paginate.rb:148 in 'block in collection'
Using following settings:
layout: post
paginate:
  collection: posts
  category: general

After spending the last hour changing settings it seems to error out on both categories and category.

I have migrated from jekyll-paginate to octopress-paginate and I seem to be running into this issue as well. I don't know ruby well enough to submit a PR so any help would be great!

I managed to apply one of the pull requests changes to categories and tags to my own fork then use that in the gem file.  I can finally see the errors im getting.  Noticed this plugin does not function from a page that is generated from another generator....

Same for using the tag key: Document#tags is now a key in the #data hash.

It's happening to us too, after applying pagination to blog posts with categorization.

The same happens for me with in github-pages. Neither Tags, nor Categories (or their singular) work. octopress-paginate is the only plugin I am using. I am building the site locally with Ruby and pushing the _site/ folder to github pages.
In its current form, octopress-paginate basically cannot do more for me than the basic Jekyll functionality.
I might try to use collections instead and report back whether or not that worked.

Update: The deprecation issue does not seem to appear when using collections. However, while the locally generated site paginates collections, the live github version will simply not accept any collection pagination. The interaction between github pages and octopress-paginate is definitely a strange one.

I just used this paginate plugin and I am encountering the same warning saying:
Deprecation: Document#categories is now a key in the #data hash.
Deprecation: Called by ["C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/jekyll-3.5.1/lib/jekyll/document.rb:374:in `method_missing'"].

My code:
---
layout: default
page_title: how-tos
paginate: true
paginate:
  categories: [how-tos]
  collection: posts
  per_page: 1
  limit: false
  permalink: /:num/
---

  {% for post in paginator.posts %}

{{ post.title }}

Date posted: {{ post.date_posted | date: '%B, %d, %Y' }}

Category: {{ post.category }}

{{ post.description }}

Read more

  {% endfor %}

    {% for i in (1..paginator.total_pages) %}
      {% if i == 1 %}
        {% if i == paginator.page %}
          {{ i }}
        {% else %}
          {{ i }}
        {% endif %}
      {% else %}
        {% if i == paginator.page %}
          {{ i }}
        {% else %}
          {{ i }}
        {% endif %}
      {% endif %}
    {% endfor %}

Any updates about this?

Update: I just pushed my jekyll project on github, I think it was affected by the deprecation warning and now it doesn't show any post at all. In short, pagination does not work.
https://aprilmintacpineda.github.io/blog/category/all/

For those looking to paginate their posts based on category, I suggest using the collection for now while the pagination by category is still encountering the error.

Running into this same deprecation warning on paginating tags. It does finish the build, it's just a lot of terminal spam.

I had the same problem and seem to have fixed it. Here is my usage before that presented the same problem as others describe here ("Document#categories is now a key in the #data hash.").
A sample collection item, before the fix:
---
index: 0
image_url: IMG_0045.jpg
description: "The drive to Big Bend."
thumbnail_url: IMG_0045-thumbnail.jpg
thumbnail_width: 150
date: October 24, 2017
album: 2017-10-24-big-bend-national-park
category: 2017-10-24-big-bend-national-park # <-- offending line
---

and after:
---
index: 0
image_url: IMG_0045.jpg
description: "The drive to Big Bend."
thumbnail_url: IMG_0045-thumbnail.jpg
thumbnail_width: 150
date: October 24, 2017
album: 2017-10-24-big-bend-national-park
# ↓ the proper usage
data:
  category: 2017-10-24-big-bend-national-park
---

And the page that was paginating items of this collection, before:
---
paginate:
  collection: photos
  category: 2017-10-24-big-bend-national-park # <-- offending line
  per_page: 1
  limit: false
  permalink: /:num/
---

and after:
---
paginate:
  collection: photos
  # ↓ start fix
  data:
    category: 201 2017-10-24-big-bend-national-park
  # ↑ end fix
  per_page: 1
  limit: false
  permalink: /:num/
---

Sorry, but what I just posted doesn't actually work. It just caused a silent failure. At least it didn't show the deprecation warnings ;P
What I'd done prior to this is to separate out the deprecation warnings from console output to a file, which I checked in and then can at least see if there are changes in the deprecation messages if it gets dirtied in the git index: jekyll build 2>deprecations


Add HTTP client/server example

[ ] 📖 Add documentation

Maybe we can poke this to completion @slashmo ?

Superseded by #76.


Lazyload fixes

Purpose
Fix issue with lazy loading either not functioning or causing the page to jump
When Testing
Please try all different combinations of using your mouse, trackpad, and multiple different screen zoom sizes
Also when using the trackpad, please make sure the mouse is unplugged and refresh the page

Coverage decreased (-0.02%) to 26.373% when pulling<PHONE_NUMBER>59310735dde110baf96d9216c1ecee on martinmckenna:lazyload-fixes into 1d65a4984fa96d1ab36df55ef54f64428dcb93cf on linode:develop.