js8call: hamlib issues

Describe the bug
js8call unable to talk to FLRig built with different hamlib verisons due to patch applied for hamlib3 in build
"unknown mode requested: DIG"
Steps To Reproduce
Steps to reproduce the behavior:

Set radio in JS8Call to FLRig and configure to point to flrig server.
In JS8Call using CAT, Data/Pkt (radio has specific user-digital settings), Rig split mode.
When JS8Call tries to communicate with rig, errors produced unable to TX.
Instead of using DIG setting, will default to PKT instead, which will not work.
IF set to USB mode in JS8Call no output on TX  (settings on radio most likely for mic gain etc. as configured differently for digital modes vs traditional SSB)

Expected behavior
JS8 Should be able to communicate with latest hamlib4x versions to resolve issue. Built from source on raspi and also in vanilla debian without issue to communicate with other apps using latest hamlib version.
Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Same settings as WSJTX, same settings used on other installs of JS8Call. I know there's weird issues with hamlib and the wsjtx-data folder on other distros installed through apt or scripts like Jason's Build-a-pi, usually build from source on other installs because of those reasons.
Notify maintainers
@mattmelling

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.56, NixOS, 23.05 (Stoat), 23.05.4172.bd1cde45c778`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.5`
 - channels(root): `"nixos-23.05"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Just tested this in 2 configurations:

hamlib rigctl against rigctld 4.5.5
FLrig 2.0.04 directly connected to rig

Both working with an ICOM 7300.
What rig/interface are you using?
Does wsjtx from nixpkgs work with a similar configuration?

Also, js8call does not build with hamlib 4. That would need to be resolved upstream. However, I have not personally experienced issues using Hamlib NET rigctl from js8call to talk to hamlib 4.

FT-818ND, works with wsjtx from nixpkgs using same settings, just not in js8call. Haven't been able to get js8 working since switching from Debian for my ham radio OS.
Likely a profile discrepancy between versions?

Also, js8call does not build with hamlib 4. That would need to be resolved upstream. However, I have not personally experienced issues using Hamlib NET rigctl from js8call to talk to hamlib 4.

I'm not sure that's right... doesn't the source fetch the latest source from git for hamlib, and the hamlib-wsjtx patches they apply as well?
https://bitbucket.org/widefido/js8call/src/24677a00343c2f3cc53f6762466a4b11893094f8/INSTALL#lines-11
https://bitbucket.org/widefido/js8call/src/24677a00343c2f3cc53f6762466a4b11893094f8/INSTALL-WSJTX?at=js8call#lines-68

I'm not sure that's entirely accurate... doesn't the source fetch the latest source from git for hamlib, and the hamlib-wsjtx patches they apply as well?

You are correct, I was thinking in terms of swapping hamlib for hamlib_4 in the buildInputs which does not work.
The WSJT-X uses a super tarball which contains the hamlib fork source. It might be worth extracting the hamlib fork to another package that could be shared between WSJT-X and js8call.
Any thoughts @lasandell, @numinit ?

I definitely ran into something like this. hamlib compat issues were the bane of my existence messing with my Xiegu G90 (back when I had an antenna up). I think this package is worth unvendoring somehow if only to have a hamlib that is much more compatible.

So doing a little hacking, swapping to use hamlib_4 in the libs/buildInputs the build fails but not for hamlib releated issues.
The build failed on a qt related item. Added a patch to fix that:
`diff --git a/qt_helpers.hpp b/qt_helpers.hpp
index 1234567..89abcde 100644
--- a/qt_helpers.hpp
+++ b/qt_helpers.hpp
@@ -102,7 +102,7 @@
static QVariant asQVariant(T * ptr)
{

return qVariantFromValue (reinterpret_cast<void *> (ptr));

return QVariant::fromValue(reinterpret_cast<void *> (ptr));
}
};

// Register some useful Qt types with QMetaType
Q_DECLARE_METATYPE (QHostAddress);
#endif`
Then ran into a hamlib issue but only because the cmake.patch had defined to use hamlib3, error was due to multiple definitions from this file.
https://bitbucket.org/widefido/js8call/src/24677a00343c2f3cc53f6762466a4b11893094f8/HamlibTransceiver.hpp#lines-21
So I removed the definition from the patch:
add_definitions (-DJS8_USE_HAMLIB_THREE)
Updating that patch with those changes seems to build... something. Haven't had a chance to test it on my ham radio pc only a VM that fails with more QT issues which I hope are just because it's a virtualbox vm.
I think we can probably use hamlib_4 with the right patches to fix the issues from the qt libs and remove the detention to try and build against hamlib 3.

Also tried reversing the order, removing the first patch applied and only commenting out the USB_HAMLIB_THREE line, also seems to build with the same error as above when ran in VM. So may only need to solve the qtlib issues for this to work

Ok, this is all looking positive. Rolled up the  changes you described in to #265897. Not seeing any runtime issues with qt so it might be to do with the vm as suggested.
Let me know if it works for you. If not, we might need to use the wsjtx hamlib fork, which I am looking at.

Some good news and some bad.
Good news, built and launched fine on my ham radio desktop. Issue with QT was definitely from virtualbox, seems to be well documented issue so not super concerned about that.
More good news, once js8call was launched it didn't complain about the DIG mode.
However, the bad news, when trying to TX or test PTT from settings there is a very bad delay in communication to FLRig where it's unusable. For example a heartbeat or CQ would start it's procedure, stop the waterfall like it normally should when transmitting, however the transmit on the rig wouldn't start until 5-10 seconds later, and by that point the waterfall had already started running again while it was still transmitting due to the delay.
I only had time to try my two builds, I'll try your patch changes a little later today to see if there's any different result. But at first glance it looks nearly identical to my hacked patch I described so I don't see why it would be any different. I also confirmed FLRig was working normally for other applications (wsjtx, direwolf) and had no issues with the delay.
Not sure what would cause that delay in communication. Tried resetting all of the js8call radio settings to see if that might fix it but no change. Maybe the QT SerialPort patches are causing the issue, not super sure. All builds, including the original hamlib3 version throw warnings around qt calls.
I've been poking around js8call groups.io to see any other threads about build issues or hamlib issues but not finding much other than those referencing 2.2.1-dev but it's not a proper tag in bitbucket and I don't see any real changes in the source for that commit. Bitbucket public is odd... private it's great just frustrating to see how different it is for consumers vs private orgs.
Any ideas?

The key is definitely to use the wsjtx hamlib fork. I got the same delay with js8call+flrig. Packaged the wsjtx hamlib fork and the delay is gone. I've pushed the latest changes up to #265897, let me know if you see any difference.


Decide on quantizing RNG operations

In #1647, we decided to factor out this into a separate discussion topic. Let's get to the bottom of this.

https://github.com/openxla/stablehlo/pull/1647#issuecomment-1607857449 proposed to exclude rng  and rng_bit_generator  from quantization speccing.
rng op :  from conversations with many stakeholders, this op has come up as effectively deprecated, so in the future we are planning to explore removing it (https://github.com/openxla/stablehlo/issues/597).
rng_bit_generator  :  This op generates a randomized output tensor based on a rng_algorithm algorithm (DEFAULT, THREE_FRY, and PHILOX). It is not clear how there algorithm should handle generating quantized output.  proposal here is to skip quantization of this op unless we have a use case for it
we propose to close this ticket for now, and will be open to revisit on need basis.


Modal with inverted dimmer hides close icon on desktop

Steps
Open modal with inverted dimmer on desktop.
Expected Result
The close icon is grey on inverted dimmer mode.
Actual Result
The close icon is white and invisible.
Version
0.75.0
Testcase
https://codesandbox.io/s/4mm54nm7w

This issue is valid, but it's a CSS only, please post in on main repo: https://github.com/Semantic-Org/Semantic-UI Don't forget, to port your markup to HTML when you will create an issue.


Drop any tags from h1

Coverage decreased (-0.1%) to 97.309% when pulling 9672a556aaa512abb5c75b5e28003c72258081e8 on IvanPakhomov:master into 23f21756562adbd04c172d14995802030bf81595 on andreskrey:master.

Hi!
Sometimes I have to parse the site with this html. There, for some reason, the first letter of the title is duplicated (see screenshot). I think that the useful part of the header (inside h1) should not be inside nested tags like span. Correct me if I am wrong.

Can you submit a test case for this and share a real website where this happens? I'd like to see how the js version processes it.


Support default literals

#[serde(default="0.1")]
pub n: f32

There is an ambiguity when the field is of function type so we need to figure that out.

This needs to be fleshed out a lot more before it can be implemented so please chime in if you have ideas for how this should work.
I am glad we implemented #[serde(default="...")] and it has been widely useful but backward compatibility is going to be tricky. To start brainstorming, here are a few possible alternatives:

Another level of nesting

#[serde(default(expr="0.1"))] - we insert the expression verbatim into the generated code
This is flexible but clunky.

Look for parentheses to denote an expression

#[serde(default="(0.1)")]
This is hacky and doesn't provide a path forward for deprecating the current syntax.

Use a different attribute name

#[serde(missing="0.1")], #[serde(default_expr="0.1")]
But default is such a perfect fit.

Treat as an expression if it fails to parse as a path

#[serde(default="0.1")]
This is ambiguous in many cases, for example enums: #[serde(default="Color::Yellow")]

Seems like an easy route would be #[serde(default_value = "0.1")]. It's a bit more wordy but would allow us to get the functionality out there, and we can always deprecate default_value if a better approach comes around.

Would it be possible to support closures? Something like:
#[serde(default="||{ 0.1 }")]
pub n: f32

The closure route would be the most logical for me (and the first thing I tried when exploring how to do what I wanted). However, I think default_expr would be by far the clearest.
I would have preferred default=3 to be the literal mode and default_func the function-based approach, but eh, can't do much about that now.

As reported in #1031, unit variants would be nice to support as well. Rust no longer enforces that the value in an attribute is a literal.

Any progress on that? Right now I am forced to write functions like
'''
fn one() -> u32 { return 1}
'''
and it really looks silly

I agree with @sfackler and think #[serde(default_value = "0.1")] is a way to go

Just being bitten by this, currently writing a lot of
fn one() -> u32 { 1 }
which is very clunky.

I don't know how to drive this forward, but I think a very small change to the compiler (or some other trick I have yet to find) could enable the existing attribute to work with values too: https://internals.rust-lang.org/t/implementing-traits-for-function-types/5888
(the playground code linked in that thread uses specialization but IIRC there was a way around that)

@dtolnay Would a PR be accepted that resolves this? I asked a few weeks ago and received no answer. I don't think there's any question people want this.

This crate could also give inspiration: https://github.com/idanarye/rust-smart-default
It allows specifying literals as well as code for the default value.

How about using closure notation? Eg just like you’d unwrap_or_else(some_void_func) or unwrap_or_else(||1.0f64)
This would be backwards compatible, consistent with existing Rust syntax, and even similar to the syntax you’d use for providing a “default” value to an option-wrapped-type.
I’d also consider dropping the quotes, that has always confused me, but I don’t know if there’s some parse thing that makes them necessary.
Considering how closures are generally used, it’s expected that the compiler will be good at optimizing them so you might actually be able to drop it in as an actual closure (so it could capture variables from the enclosing scope)

There is now a PR open: #1490

I'd love to help get this feature completed; though I don't have much experience developing proc macros I've started studying the relevant parts of serde_derive and it doesn't seem too bad.
Regarding the concerns made in https://github.com/serde-rs/serde/pull/1490#pullrequestreview-288464564, while I agree that it may be nicer to use paths and expressions, that shouldn't be a blocker for this particular feature. A MVP just with support for literals would still be incredibly useful.

What is the status on this issue - its been open for a long time, is it likely to be implemented anytime soon? It feels like an rough edge on an otherwise brilliant crate and ecosystem.
I can offer my help, although I'm not particularly knowlegable about derive macros. Is there currently any minimum design / idea for how this should be implemented, that you would accept PRs for?

@jacob-pro See https://github.com/serde-rs/serde/pull/1490#pullrequestreview-288464564.
However, this is a big refactoring and I have seen many PRs to serde be ignored entirely by @dtolnay, who seems to be the only person willing to maintain serde at the same time. I would be happy to implement the plan outlines in that comment myself, but only after having some reassurance that it would actually get looked at (preferably in the form of getting my existing PRs reviewed).

Just a little thought (in case it's useful).  The wonderful clap crate offers a default_value and default_value_t where default_value_t is a typed value.
e.g.
...
#[derive(Clone, Debug, ValueEnum)]
pub enum Platform {
    All,
    PC,
    Mac,
}

...
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
pub struct Cli {
    #[clap(short, long, value_enum, default_value_t = Platform::from_current_os())]
    pub platform: Platform,
...

I'm still new to Rust, but after using clap to build my CLI, my natural inclination was to try default_t in Serde 😄

Just a little thought (in case it's useful). The wonderful clap crate offers a default_value and default_value_t where default_value_t is a typed value.
...
I'm still new to Rust, but after using clap to build my CLI, my natural inclination was to try default_t in Serde 😄

I was just doing the exact same thing! I was searching the Serde docs, feeling sure that I had written some Serde code a couple weeks ago that used default_value_t. I felt like I must be losing my mind, when your comment reminded me that it was Clap, not Serde, I had written that code for!

A const generic struct can be used as a partial workaround if you can express the 'literal' with min const generics
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=da7e2027b942882165fc4e781a94d290
It took me quite a bit of playing around with this to get the syntax to work so might be worth adding to the docs if this issue is going to be open for a long time?

Using @Skeletonxf's solution, I managed to make a smaller workaround using const generics on functions. This supports all integers and types that can be converted from integers (floats, for example, but limited to only integers): https://github.com/JohnTheCoolingFan/factorio-lib-rs/blob/02137bb3f231f63a3cdef32add5511d92352e062/src/util/defaults.rs

Is there some updates on that ?

FYI I made a solution with const generics a crate

@alekspickle awesome! Would be nice to add string and array support 🕺

I also made a tiny crate for this issue a while ago. It works a bit different than the implementation of @alekspickle; tldr you can specify any expression as default and it will be expanded to a regular function which just returns the expression

This seems to be a wildly requested feature, is there any update on whether or not it's on the roadmap or if a PR would be accepted?

Changes needed to make this happen: https://github.com/serde-rs/serde/pull/1490#pullrequestreview-288464564
Progress AFAIK (2024-03-22):

[x] 1. Parse attribute values not only as string literals.

Done! PR: #2406
Related (should be rejected probably): #1704

[ ] 2. Add non string literal support for existing attributes where it makes sense.

No progress or PRs yet. (Assuming serde.rs web docs are up to date)
Related: #2525
Related: #2209
Candidate for related: #2161

[ ] 3. Add new default_value attribute that accepts expression as value.

No progress or PRs yet.

https://github.com/rust-lang/rfcs/pull/3681 would solve this nicely

rust-lang/rfcs#3681 would solve this nicely

Before that RFC landed, one can use educe


[WIP] Avoid misfiring 'sortupdate'

That's a first time I work with TypeScript - so no idea how it transcodes into actual JS.
 It brings some changes to filter.ts - where two modes are introduced instead of just calling it a filter and pass a boolean for either finding an intersection or a complement (differences) of a two sets.
I also changed a generic variable index into something more descriptive itemStartIndex.
Also have doubts about names of detail object keys that is returned on sortupdate - took me a while to understand what these are. I would suggest:

startIndex
endIndex
startSortableIndex (only sortable items)
endSortableIndex (only sortable items)

Though you probably have some people depending on the current setup, so it would need to be gracefully deprecated.
Anyway - thanks for the code, I am prototyping something for my team your code what the closest one to what I needed! Super helpful. If we stick with it, I would be happy to give you a hand (to the extend I can) in my free time.

Coverage decreased (-1.1%) to 83.463% when pulling 7f0b7816cc0a02103d7c680370c0c7b766cdc4a5 on mfeherpataky:bug/368-index-off-by-one into 9af66bf0fe735a2b517d01460e3f15afd375ae85 on lukasoppermann:master.

Hey, thank you for the PR 👍. However I think it would be more optimal to do it like I outlined below, as it is less change and less added code. Please let me know what you think about it.
Instead of creating a whole getDiff & getIntersect function I would like to just do a .filter on the array returned from the _filter function, using the actual placeholder from the placeholderMap to compare against. The benefits are: We don't need to have two functions and can stick with just _filter which make it easier and we don't rely on placeholder having a class (What if the user uses null or an empty string as a placeholderClass).
The naming of the properties in the event is awful (I totally agree with you) and I appreciate the change in naming. I am planning to refactor the events and maybe I can improve it even more, but your names are already a definite improvement. I will eventually push this as a minor version update, so this "break" will be okay.

Is this what you had in mind?
I also took a liberty and updated the attribute names in the detail object coming out of sortupdate event, per the exchange we had.

Hey @mfeherpataky that looks really good. Could you please update the readme with the new names of the items in the event details and remove the compiled files (Js files) from the pull request?
I will do some testing and merge it after those minor updates. Also do you know why the test coverage dropped so much?
Thanks for the nice work.

@lukasoppermann OK, Done.
I also updated docs/index.html to refer to new values in console.log().
I have one problem with the PR, though, that I could not fix. I did not rename the details.startparent to details.startParent (to follow camelCase naming used elsewhere) for sortstart event output. Test in events.test.ts - should correctly run dragstart event was failing no matter how I reassigned the value and just kept on insisting it the value was undefined. Did not have more time to dive into the full test setup - sorry.
So - it works, with that inconsistency where sortstart returns detail.parentstart, and other events return detail.parentStart.

Hmm, actually the event is still wrong. When you sort item 1 to position two and afterwards item 1 (from pos 2) to pos 1 again you get 0 as sortableStartIndex and sortableEndIndex. 🤔


Support ANSI color ???

like this https://github.com/drudru/ansi_up

You could write an addon that does this with an overlay or markRange, but the core library isn't going to include support for it.

If anyone is looking for a V6 extension: @cookshack/codemirror-ansi


LUA error when opening profession window

(using version <IP_ADDRESS>)
I'm still getting this LUA error (https://github.com/derfloh205/CraftSim/issues/491) when opening a profession window.
Today I got it by opening JC crafting orders, doing nothing, then going to the Scribes' table and upon opening Inscription skill window, I got this error:
65x Auctionator/Source/API/Internal.lua:2: Contact the maintainer of CraftSim to resolve this problem. Details: Usage Auctionator.API.v1.GetVendorPriceByItemLink(string, string)
[string "=[C]"]: in function error' [string "@Auctionator/Source/API/Internal.lua"]:2: in function ComposeError'
[string "@Auctionator/Source/API/v1/GetVendorPrice.lua"]:18: in function GetVendorPriceByItemLink' [string "@CraftSim/Pricing/PriceAPIs.lua"]:214: in function GetMinBuyoutByItemLink'
[string "@CraftSim/Pricing/PriceSource.lua"]:103: in function GetMinBuyoutByItemLink' [string "@CraftSim/Classes/PriceData.lua"]:145: in function Update'
[string "@CraftSim/Classes/RecipeData.lua"]:252: in function new' [string "@CraftSim/Libs/classic.lua"]:64: in function RecipeData'
[string "@CraftSim/Init/Init.lua"]:528: in function TriggerModulesByRecipeType' [string "@CraftSim/Init/Init.lua"]:85: in function <CraftSim/Init/Init.lua:83> [string "@CraftSim/Libs/GUTIL/GUTIL.lua"]:564: in function checkCondition'
[string "@CraftSim/Libs/GUTIL/GUTIL.lua"]:570: in function WaitFor' ... [string "@Blizzard_SharedXML/Shared/Scroll/ScrollUtil.lua"]:490: in function SelectElementDataByPredicate'
[string "@Blizzard_ProfessionsTemplates/Blizzard_ProfessionsRecipeList.lua"]:159: in function SelectRecipe' [string "@Blizzard_Professions/Blizzard_ProfessionsCrafting.lua"]:887: in function Init'
[string "@Blizzard_Professions/Blizzard_ProfessionsCrafting.lua"]:358: in function <...lizzard_Professions/Blizzard_ProfessionsCrafting.lua:357>
[string "=[C]"]: ?
[string "@Blizzard_SharedXMLBase/CallbackRegistry.lua"]:144: in function <...eBlizzard_SharedXMLBase/CallbackRegistry.lua:143>
[string "=[C]"]: ?
[string "@Blizzard_SharedXMLBase/CallbackRegistry.lua"]:147: in function TriggerEvent' [string "@Blizzard_Professions/Blizzard_ProfessionsFrame.lua"]:207: in function SetProfessionInfo'
[string "@Blizzard_Professions/Blizzard_ProfessionsFrame.lua"]:139: in function <...s/Blizzard_Professions/Blizzard_ProfessionsFrame.lua:102>
Locals:
(*temporary) = "Contact the maintainer of CraftSim to resolve this problem. Details: Usage Auctionator.API.v1.GetVendorPriceByItemLink(string, string)"

on what recipe did the error occur?

This particular case was Inscription which opens with Fae Revel Masque (because it's the first in the order of favorited recipes), but it also occurs with Enchanting followed by Tailoring (Tailoring window opens with Cindercloth Cloak for the same reason).

are those current or old world recipes?

try a full scan with auctionator and then open again
for me its working fine

Old world recipes.
This doesn't seem to happen when you open only that one skill, at least I used to get it when I open one and then the other.

I'm also getting the following LUA error when first opening Alchemy window near a lab bench:
2x ...rfaceCraftSim/Classes/SalvageReagentSlot.lua:32: Error CraftSim.SalvageReagentSlot: Trying to set item which is not in possible salvage item list
[string "=[C]"]: in function error' [string "@CraftSim/Classes/SalvageReagentSlot.lua"]:32: in function SetItem'
[string "@CraftSim/Classes/RecipeData.lua"]:366: in function SetAllReagentsBySchematicForm' [string "@CraftSim/Init/Init.lua"]:576: in function TriggerModulesByRecipeType'
[string "@CraftSim/Init/Init.lua"]:85: in function <CraftSim/Init/Init.lua:83>
[string "@CraftSim/Libs/GUTIL/GUTIL.lua"]:606: in function checkCondition' [string "@CraftSim/Libs/GUTIL/GUTIL.lua"]:612: in function WaitFor'
[string "@CraftSim/Init/Init.lua"]:74: in function TriggerModuleUpdate' [string "@CraftSim/Init/Init.lua"]:126: in function <CraftSim/Init/Init.lua:106> [string "=[C]"]: ? [string "=[C]"]: in function Init'
[string "@Blizzard_ProfessionsTemplates/Blizzard_ProfessionsRecipeSchematicForm.lua"]:192: in function <...emplates/Blizzard_ProfessionsRecipeSchematicForm.lua:186>
...
[string "@Blizzard_FrameXML/Mainline/SecureTemplates.lua"]:667: in function <...ddOns/Blizzard_FrameXML/Mainline/SecureTemplates.lua:649>
[string "@Blizzard_FrameXML/Mainline/SecureTemplates.lua"]:681: in function <...ddOns/Blizzard_FrameXML/Mainline/SecureTemplates.lua:674>
[string "@Blizzard_FrameXML/Mainline/SecureTemplates.lua"]:723: in function `SecureActionButton_OnClick'
[string "@Blizzard_ActionBar/Mainline/ActionButton.lua"]:1438: in function <Blizzard_ActionBar/Mainline/ActionButton.lua:1408>
[string "=[C]"]: ?
[string "=[C]"]: ?
[string "@Blizzard_FrameXML/SecureHandlers.lua"]:266: in function <Blizzard_FrameXML/SecureHandlers.lua:263>
[string "=[C]"]: ?
[string "@Blizzard_FrameXML/SecureHandlers.lua"]:296: in function <Blizzard_FrameXML/SecureHandlers.lua:279>
[string "=(tail call)"]: ?
Locals:
(*temporary) = "Error CraftSim.SalvageReagentSlot: Trying to set item which is not in possible salvage item list"
First recipe in the window is: Transmute: Meat to Pet
And I have done Auctionator search for everything, including the above and this one.

And I just got the same error (the original I have reported) when opening LW window. I opened Skinning about 15 minutes earlier but killed a lot of things inbetween and teleported too. It also defaults to an old world recipe.

Got the same error when opening JC window that doesn't even have any favorites so it opens at Algari Crushing.

#619


Add a Couple of Features and Fixes

I'm looking to use this player as a base for another library.
I've added a couple of methods that were necessary for my project but also I think will be beneficial for anyone using this library 👍
Great job on this library! It's very well written.
I'll hope to be able to collaborate with you on adding some other functionality I'll need (i.e. caching) so please give me any feedback so I can figure out how to best contribute to this project 💃
What does it change?

allows you to set rate and not only fetch it
fixes bug where you can't seek shortly after starting playback
adds ability to set pitch algorithm for tracks (allows you to play at faster speeds)
adds ability to add tracks at a certain index
allows you to remove all upcoming items (those returned by nextItems)
allows you to clear the whole queue (useful internally to properly reset)
fixes https://github.com/jorgenhenrichsen/SwiftAudio/issues/27

Thanks, nice that you want to contribute!
I'll look into your changes 🎉

Thanks for the comments. I'll update the branch later today 👍

updated. wanna take a look @jorgenhenrichsen ?

updated. example works and tests pass 👍

Good job 👍🎉


example of events onComplete, onEnd

can you please add the example how to detect onComplete, onEnd event of animation?

You ca now check the spineboy example for this: https://github.com/orange-games/phaser-spine/blob/master/example/spineboy.html

@AleBles let me know please how to get the current animation name?
I do it via dodik.state.tracks[0].animation.name
but may be are there better way to get it?

Not afaik, but I could write a simple getter like:
mySpine.getCurrentAnimationForTrack(0).name

But you'd still have a lot to type then :P

I thought about like that:
mySpine.animations.current.name :)
track is 0 always, right?

Nah, that's a bad assumption (imho). You can specificly set animations on different track, there's nothing stopping you from using track 1 (or 99) allowing you to play different animations at the same time. The fact that you (and I :P ) don't use it doesn't mean there is a valid use-case.
To quote a guy from spine:

A "track" is a numbered placeholder for a track entry. A track entry stores information about an animation, such as which animation, if it should loop, what track entry to play when it is done, etc. Every frame, the animation for each track is applied one after another, lowest track number to highest. By applying multiple animations each frame, you can eg have a shoot animation that is played on top of idle, walk, run, swim, etc.

So I'd like to keep track support in. (I'd like all spine features to work as much as possible)

@AleBles Thanks for your reply! you are right.


Distinguish triple quote and single quote excerpts

Excerpts are an umbrella for comment/quote literal. We need to allow the following:
"""
Hello "quoted" world!
"""

some ... [ code ! ]

'''
Here we go, 'quoted nicely.'
'''

Also I guess they should dedent their content automatically (ignoring the first line when it's not empty, that is, immediately following ''' or """ like so '''hello world or """hello world)?


os-prober: 1.81 -> 1.83

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/os-prober/versions.
meta.description for os-prober is: Utility to detect other OSs on a set of drives
meta.homepage for os-prober is: http://packages.debian.org/source/sid/os-prober
Updates performed

Version update

To inspect upstream changes
Impact
Checks done

built on NixOS

[!CAUTION]
A test defined in passthru.tests did not pass.

found 1.83 in filename of file in /nix/store/qrqsbff8rwp588cdp2m3vnwrn4sawniy-os-prober-1.83

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

os-prober

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/qrqsbff8rwp588cdp2m3vnwrn4sawniy-os-prober-1.83 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A os-prober https://github.com/r-ryantm/nixpkgs/archive/4e063a0511ad910b7c1a6bcba324ffce9efe3047.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/4e063a0511ad910b7c1a6bcba324ffce9efe3047#os-prober

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/qrqsbff8rwp588cdp2m3vnwrn4sawniy-os-prober-1.83
ls -la /nix/store/qrqsbff8rwp588cdp2m3vnwrn4sawniy-os-prober-1.83/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 1 package built:

os-prober

Maintainer pings
cc @symphorien for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

the nixos test is broken, fix in https://github.com/NixOS/nixpkgs/pull/349423


Rewrite Homebrew in Crystal?

NB: Although you very likely to find this suggestion outrageous, please bear with me, and consider it seriously. Please do not instantly close this issue, on behalf of the community, let it be open for people to share their thoughts on this.

We will close this issue or ask you to create a pull-request if it's something the maintainers are not actively planning to work on.

Surely, improving Homebrew's speed is something planned, or at least hoped for. And multiplying it tenfolds of times should be strived for.
Motivation
Edit: This first statement is mostly wrong apparently
Homebrew is slow, that is because Ruby is slow, there are no arguments against this.
You might have heard about Crystal, its syntax is heavily inspired by ruby. Ruby's syntax is slick, and so is Crystals'. Crystal goes by the catchphrase

Fast as C, slick as Ruby

If you are skeptical, know that it is very understandable, unless you are familiar with crystal of course, in which you certainly would find the results tempting.
Relevance
This would greatly boost the Homebrews performance. This repository's issue-guidelines says

Explain how the feature would be relevant to at least 90% of Homebrew users.

This would be relevant to 100% of Homebrew users, no doubt about it.
If you are now thinking: I am not going to learn a new language for this! Do not do so. Because if you're reading this, chances are you'll know Ruby; read through this little wiki-page; Crystal for Rubyists, and you'll be pretty much ready to go.
Tl;Dr

Rewrite Homebrew in the language Crystal, which has syntax almost identical, and at least a 100 times faster.
Do so in a way, that keeps the current Formulas working.

What exactly
These are my points positive of crystal:

It is at least a 100 times faster than Ruby (Take a look at the benchmarks).
The syntax is extremely similar to ruby - Therefore the front-end Homebrew (Formulas) will require no alterations.
Most Ruby code is valid Crystal code, the transition from Ruby to Crystal will be mainly small changes.

Against this:

Code can not be dynamically loaded in Crystal. Hence the formulas will be a bit of trouble.
This will require some work.
Unlike Ruby, Crystal is not pre-installed on macOS

Do you want to get started, but don't know what to do? Or are you just very doubtful about this? First take a look at Crystal and Crystal for Rubyists

Sounds like an interesting proposal, does MacOS always comes with Ruby installed at all versions ?

This sounds like a better idea to propose as a parallel project instead of as a rewrite under the same name. I doubt any of the current homebrew maintainers know or would be willing to put in the effort to learn Crystal.
Personally i'd benchmark how much time that homebrew actually spends in ruby code before making a proposal like this. I think you'd be surprised. Any performance benefits are more likely to come from rearchitecturing, not the new language itself.

Explain how the feature would be relevant to at least 90% of Homebrew users.

This would be relevant to 100% of Homebrew users, no doubt about it.

[emphasis added]
Do doubt. I use Homebrew and this would be irrelevant to me. I also don’t see slowness as a common complaint. The only noticeably slow parts in Homebrew are the parts out of its control, such as downloading packages.

Unlike Ruby, Crystal is not pre-installed on macOS

Which is huge.

This sounds like a better idea to propose as a parallel project instead of as a rewrite under the same name.

Agreed.
Homebrew isn’t done. I see only disadvantages in having the core team spend time porting the large codebase to a different language, rather than continue to improve the current one.
I’d see it more of a challenge to a third-party. If it’s true the languages are so similar and little code changes would be required to reap the alleged monumental benefits, then it should be easy for a third-party already familiar with the language to build the proof.

does MacOS always comes with Ruby installed at all versions ?

Every macOS versions comes with a specific ruby version, that is higher than the one bundled with the previous version.

To be fair to the proposal, there's no need to have crystal be installed because it compiles to native executables. However, you'd have to build that executable from scratch every time you changed a formula because the formulas would be written in crystal, which in practical terms, means crystal installed on every machine (If I started a homebrew-alike in crystal I'd have the formulas be in shell script).

The only noticeably slow parts in Homebrew are the parts out of its control, such as downloading packages.

That's what I would suspect too: ruby vs crystal makes little difference since most of the time should be IO.

Homebrew is slow, that is because Ruby is slow, there are no arguments against this.

Homebrew's performance is dominated by networking and housekeeping operations, not the Ruby runtime. Fetching large archives over HTTP and exploding them is a fundamental constraint on every package manager's performance.
I like Crystal a lot (I've made a few contributions to the main language repository, and written some libraries in it), but I don't think this is going to happen for a two different reasons (off the top of my head, there are probably others):

Homebrew's codebase is large, and makes liberal use of Ruby's metaprogramming and DSL facilities. Crystal's macros are great, but would probably require a fundamental redesign of the Formula DSL.

Crystal is still in an alpha stage of development, with frequent standard library and compiler changes. Maintaining Homebrew is already a huge task, and mixing that with a steady stream of language changes would require us to take time away from feature development and package maintenance.

Ok. I realize I am wrong about this.

Homebrew is slow, that is because Ruby is slow.

Crystal is not production ready (and who knows what will happen with Crystal in the future, but Ruby is here and it's production ready).
When a formula changes you'd need to recompile that formula, or the entire homebrew. Either will take much more time than Ruby.
Homebrew is not slow. It takes about 0.6s on my machine to start up, but then most of the time will be spent in IO and disk, not CPU computations.

The only noticeably slow parts in Homebrew are the parts out of its control, such as downloading packages.

ruby vs crystal makes little difference since most of the time would be IO.

Homebrew's performance is dominated by networking and housekeeping operations, not the Ruby runtime. Fetching large archives over the network and exploding them is a fundamental constraint on every package manager's performance.

Homebrew is not slow. It takes about 0.6s on my machine to start up, but then most of the time will be spent in IO and disk, not CPU computations.

Thanks for the write up and cool idea but passing on this due to the above. Sorry!

Don't be, I knew was fully aware that it was crazy, but I wanted to give it a go.

Rust-rewrite, anyone? 😛

Haha, I hope the crystal community doesn't get that reputation!

Sorry 😅


Airport Zip Codes Missing

Airport Zip Codes don't show up.  Examples I've found are:
20041
30320
60666
30320
75261
55111
21240
20229
55605
96913
15231
Is there any way to get an updated list of zip codes?

I haven't had time to update this package, but will take a look at it this weekend or so, if you need an updated list, here is the US Census site including a list of files with updated data. https://www.census.gov/geographies/reference-files/time-series/geo/relationship-files.html,    alternatively you could PR any updates and I'll gladly accept them.

It looks like the ZCTA's that are used by the US census are slightly different than actual Zip Codes and only include locations where people live (which makes sense since why would they do a census of Airports where people don't actually have a residence).
So other places like Airports won't be included in the ZCTA data.  I did find another datasource at http://download.geonames.org/export/zip/ which has data focused more on actual zip codes.  Of course it's in a different format and would require more changes.

Also the latest ZCTA data is available here: https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2022_Gazetteer/


Refactor/auth service

https://www.notion.so/Code-refactoring-08fac5c30de64bd687f4a316942c55fd?pvs=4
Removed coupling between auth service and user service.
Added interface for input body and params.


Potential memory leak in AsyncTransformProcedure, AsyncResultProcedure

There is a case to get memory leak while using mentioned classes because of their internal structure.
open class AsyncTransformProcedure<Input, Output>: Procedure, InputProcedure, OutputProcedure {
     //...
    open override func execute() {
        //...
        transform(inputValue) { self.finish(withResult: $0) }
    }
}

As you can see  execution of transform block is built in such way, that captures self  with strong reference. And if that block that is sent as second parameter is saved in subclass of AsyncTransformProcedure that would lead to retain cycle, which I exactly run into.
It can be fixed by nullifying saved block in subclass after calling it with ProcedureResult, but I'd rather change that passed block to  something like following
transform(inputValue) {[weak self] in self.finish(withResult: $0) }

What do you think?

Hmm, yeah this is a good spot. Will look into it!


Corrected description

closes https://github.com/MicrosoftDocs/office-docs-powershell/issues/5964
Removing the sample output as that is not included in Get- articles.
Replaced with a sample listing of the properties received.

Docs Build status updates of commit 52683d5:
:clock10: Full build: the average full build time is 17 min(s) 41 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 52683d5:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

skype/skype-ps/skype/Get-CsOnlineDirectoryTenant.md
:white_check_mark:Succeeded
View (skype-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

@chrisda Please merge this PR. Thanks.

Docs Build status updates of commit 4a31183:
:clock10: Full build: the average full build time is 17 min(s) 33 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 4a31183:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

skype/skype-ps/skype/Get-CsOnlineDirectoryTenant.md
:white_check_mark:Succeeded
View (skype-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


TestLaunchDuplicateMemberShouldFail: raft log corruption?

From https://github.com/coreos/etcd/pull/7234
=== RUN   TestLaunchDuplicateMemberShouldFail
2017-01-26 03:41:04.797180 C | raft: tocommit(8) is out of range [lastIndex(3)]. Was the raft log corrupted, truncated, or lost?
panic: tocommit(8) is out of range [lastIndex(3)]. Was the raft log corrupted, truncated, or lost?

goroutine 17008 [running]:
panic(0x1077e80, 0xc42adec340)
	/usr/lib/go-1.7/src/runtime/panic.go:500 +0x1ae
github.com/coreos/pkg/capnslog.(*PackageLogger).Panicf(0xc4201a57a0, 0x122a732, 0x5d, 0xc42e94f2e0, 0x2, 0x2)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/pkg/capnslog/pkg_logger.go:75 +0x1ae
github.com/coreos/etcd/raft.(*raftLog).commitTo(0xc424482af0, 0x8)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/log.go:191 +0x208
github.com/coreos/etcd/raft.(*raft).handleHeartbeat(0xc4200c6ff0, 0x8, 0xe52a448599cfeaf4, 0x2672a310b242e497, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/raft.go:1095 +0x7a
github.com/coreos/etcd/raft.stepCandidate(0xc4200c6ff0, 0x8, 0xe52a448599cfeaf4, 0x2672a310b242e497, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/raft.go:1002 +0xd4e
github.com/coreos/etcd/raft.(*raft).Step(0xc4200c6ff0, 0x8, 0xe52a448599cfeaf4, 0x2672a310b242e497, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/raft.go:778 +0x1187
github.com/coreos/etcd/raft.(*node).run(0xc42c04a4e0, 0xc4200c6ff0)
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/node.go:319 +0x61d
created by github.com/coreos/etcd/raft.StartNode
	/home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/raft/node.go:206 +0x800
exit status 2
FAIL	github.com/coreos/etcd/integration	73.372s
Build step 'Execute shell' marked build as failure
Setting status of fa1cbd5890659e361c71b5979f4ed6a4408f82c9 to FAILURE with url https://jenkins-etcd-public.prod.coreos.systems/job/etcd-proxy/566 and message: 'Build finished. '
Using context: jenkins-proxy-ci
Finished: FAILURE

The detailed log can be found here: https://jenkins-etcd-public.prod.coreos.systems/job/etcd-proxy/566/console

@gyuho can you take a look at this one?

Yeah let me try to reproduce this.

It happened in the CI of my recent PR: https://github.com/coreos/etcd/pull/7260
https://jenkins-etcd-public.prod.coreos.systems/job/etcd-proxy/641/console
It seems that the failures are identical, though.

Haven't seen it for 6 months. Will revisit if it happens again.


t.throws should return the error (or a promise that resolves with the rejection)

From #492

test(t => {
  t.plan(2);
  return shouldRejectWithFoo().catch(reason => {
    t.is(reason.message, 'HelloMessage') // Prefer t.throws if all you care about is the message
    t.is(reason.foo, 'bar');
  });
});

> test(t => {
  t.plan(2);
  try {
    shouldThrow();
  } catch (err) {
    t.is(err.message, 'HelloMessage') // Prefer t.throws if all you care about is the message
    t.is(err.foo, 'bar');
  }
});

In most cases, you should prefer the t.throws() assertion, but this is an acceptable use since t.throws() only allows you to assert against the error's message property.

We could make that recommendation obsolete:
test(async t => {
  var err = await t.throws(shouldRejectWithFoo, 'HelloMessage');
  t.is(err.foo, 'bar');
});

test(t => {
  var err = t.throws(shouldThrow, 'HelloMessage');
  t.is(err.foo, 'bar');
});

See also: https://github.com/sindresorhus/ava/issues/468 (it also changes the behavior of t.throws).

Been putting in a little bit of work into this, and I just wanted to get some clarification on the intent before finishing up and posting a PR;
test(t => {
  const err = t.throws(function () { throw new Error('foo'); });
  t.is(err.message, 'foo');
});

test(t => {
  const err = await t.throws(function () { return Promise.reject(new Error('foo')); });
  t.is(err.message, 'foo');
});

Regardless of what one passes as the second/third argument to t.throws, you always want to get back the (or in the case of string, an) Error with the expected message. Is that a correct assessment or am I (miles) off?
I must admit, I'm a little confused by your example - are you expecting a property on the given Error object of foo that should equal the expected message?

I haven't taken #468 into consideration just yet - but I'd like to get cracking on that soon-ish as well. Babysteps.

@kasperisager does this help?
test(t => {
  const expected = new Error()
  const actual = t.throws(() => { throw expected })
  t.is(actual, expected)
})

test(t => {
  const expected = new Error()
  const actual = t.throws(() => Promise.reject(expected)
  t.is(actual, expected)
})

In other words t.throws() should return whatever was thrown (or, if a rejected promise was returned, the rejection reason).

Sorry @novemberborn - if your poke was meant for me, I'm afraid you mistyped ever so slightly. Didn't get any notification(s).
In my feature branch - t.throws returns whatever was thrown in synchronous assertions, so that's pretty much covered.
In the case of Promise.reject I've got something somewhat working. I say somewhat, because it doesn't actually become the rejection reason - the result of Test.prototype.exit is decorated with a message property (the message of the rejection, defaults to '' as per Error). This "had" to be done in order to not break the entire promise test suite, what with the expectations on result.
Haven't posted it for review just yet as I know that isn't what the issue description calls for - but if one were to resolve in exit with the plain rejection of the Promise, we'd lose out on all of the default result properties from my (so far) limited findings.
Sidenote; First attempt(s) at handling this solely in .throws were futile :smile:

tl;dr; I'm handling rejected promises by returning the result of t.throws to Test.prototype.exit, conditionally assigning RejectionError.message to the result of the assertion, if that makes any sense. I'll gladly post what I have so as to give a clearer picture of what's going on.

On that note; If we're fine with dropping the properties received from executing _result() (that would be 'passed', 'result' and 'reason') - I can sort that out by switching some of my code around & removing some assertions out of test/promise.

Q: Do you reckon this behaviour should apply to an Observable as well? I made some changes in my branch to return the full Promise rejection which caused a bunch of failures in test/observable.
test(t => {
  const expected = 'foo';
  const actual = t.throws(() => new Observable(function (o) { o.error(new Error('foo'); }));
  t.is(actual.message, 'foo');
});

@kasperlewau,

Sorry @novemberborn - if your poke was meant for me, I'm afraid you mistyped ever so slightly. Didn't get any notification(s). Regardless, you did make it clearer - tyvm!

Too many Kaspers already! :stuck_out_tongue_winking_eye:

Looking at @jamestalmage's original example again I believe the intent is that if t.throws() passes, then the error should be returned. This then allows you to apply further assertions to the error. If it fails then your test has already failed. There's no more need to access the error object.
That would imply wrapping the call to fn in https://github.com/sindresorhus/ava/blob/f77ded959a0e7de6e9bf65d8c2fd6625bc59ba47/lib/assert.js#L99 to capture the thrown error and returning it after the assert.throws() call. If assert.throws() itself throws then the assertion has failed and no error is returned (because an AssertionError is thrown). There may not even be an error in case fn didn't throw one.
You'd need to return x.throws in the promise-handling code as well for it to bubble up correctly.
No changes should be needed to Test.prototype.exit.
#468 is related but should not have any bearing on this issue.

@novemberborn One can never have too many Kaspers! : )

Your suggestion sounds close to what I've done so far.
This commit handles the wrapping of fn to return the thrown Error. Simple enough, but it could probably be cleaned up ever so slightly.
This other commit handles Promise bubbling out of assert.throws to the caller. I've tried to keep changes to .exit to a minimum, but I have yet to figure out how to avoid it entirely.

I can go ahead and post a [WIP] PR, perhaps that is a better way to go about this rather than referring to individual commits living in my fork?

Yea please open a PR.


GH-1484 rdfstar api proposal

What
This is a proposal for some changes in the Java API to accommodate future full-blown support for RDF* and SPARQL* (issue #1484). My idea was minimal disruptive changes and yet a natural view of RDF* data.
It also adds parsers and writers for Turtle* and TriG*. Turtle* extends Turtle to allow for RDF* triples and is the only format mentioned in the RDF* definition document. TriG* extends TriG in a similar manner to allow for RDF* and named graphs.
Changes in the basic model
RDF* extends RDF by allowing triples in the subject and object position. This can be achieved by:

Adding a new type of Value Resource called Triple

Triple has a Resource subject, IRI predicate and Value object.

Adding a new type of Value called SubjectValue (essentially this could be called NonLiteral too)

Triple extends SubjectValue
Resource extends SubjectValue

Statement's subject's type changes from Resource to SubjectValue

Note that Triple is quite different from Statement. A Triple never has a context and it is a Value Resource.
Changes in some APIs
All API methods that take a Statement provided by its constituent objects (Resource subject, IRI predicate, Value object, Resource... context) change their subject argument to SubjectValue: SubjectValue subject, IRI predicate, Value object, Resource... context.
All API methods that return a subject change their return type from Resource to SubjectValue.
Existing RDF-only code
A lot of the existing code expects subjects to be a Resource so I've added SubjectValue.asResource() which will cast its argument to a Resource if it is indeed a Resource. If it's not a Resource (then it must be a Triple) it will throw an exception about trying to handle RDF* data from within an RDF context. This allows existing code to stay RDF-only as long as needed.
Notes on tests
All unit tests (mvn clean install) passed.
LocalRepositoryManagerTest relies on rdf4j 2.5.2 to satisfy a circular dependency and since the API changed it no longer works. I was able to run it locally by substituting 2.5.2 with a local bootstrap version.

Thanks @avataar , looks very good to me.
I'd like this merged, but I'm not quite ready to merge it into the main develop branch, so I'm going to be creating a new branch in the main RDF4J repo on which we can continue further development of RDF* integration, and will merge this PR into that branch.

Thanks @avataar , looks very good to me.
I'd like this merged, but I'm not quite ready to merge it into the main develop branch, so I'm going to be creating a new branch in the main RDF4J repo on which we can continue further development of RDF* integration, and will merge this PR into that branch. Let me know if you're ready for me to merge that (the PR is currrently still in draft mode).

I'm all for it, go ahead!

@jeenbroekstra, can you merge this so I can continue opening more PRs? I could push here but want to avoid making this too big.


Redirect response history

The Python requests library has a "redirect history" feature. That can be useful to get access to previous headers, or other response data that was sent along with a 30x status code. Here are the Python docs: https://requests.readthedocs.io/en/latest/user/quickstart/#redirection-and-history
Would you be open such a feature in reqwest?
Thanks for this wonderful library, by the way!

I think reqwest already supported it, ref: https://docs.rs/reqwest/latest/reqwest/redirect/struct.Policy.html
You can check redirect tests https://github.com/seanmonstar/reqwest/blob/master/src/redirect.rs#L259

It seems like it wouldn't be too hard to add. It it worth the additional storage?

Maybe it's something that could be enabled / disabled on the client or request level? I think the storage cost is negligible for 99% of 30x redirects (just a few headers, maybe a bit of content).


Why Button.color means Button.font.color in (only) Kivy?

Windows introduced 3D widgets in Windows'95. Since then all IDE's have defined "Button.color" as  'tinting' of the button, NOT the color of the text as in Kivy.
This is unintuitive.  Why make it difficult for  the users/developers/designers ?
In RadioButton and CheckBox, CheckBox.color means "tinting", then why not in Button?
If you can offer background color/image for CheckBox, then why not for Labels?
With a CheckBox, the user must be concerned with the event "on_click" only, Why must he write a special class "on_active" and then bind ?
Please make Kivy like what FLASH used to be for all of us. Flash had Action Script, Kivy has Python. Make Kivy naturally user friendly and it will grab the space vacated by FLASH.

Button is derived from Label, so the color property should be the same as Label's

I agree that it can be confusing, however, we cannot change this as it would break backward compat. The reason why color is the font color, is that it inherits from Label.


errors-only output mode should communicate that only errors will be shown so it doesn't look like turborepo is hanging

Which project is this feature idea for?

Describe the solution you'd like
A really simple progress bar or just a banner letting folks know that's what's going on. This is a pretty silly feature request I'm aware but I think other folks will also ask the same question.
Describe alternatives you've considered
😆 explaining to 100+ developers who have been using turbo for ~2 years why turbo looks like its doing nothing

This is a change I’d happily have a stab at myself if people think it’s a good idea.

I like this idea! Something like the following would be cool to show the current status.
$ turbo build --output-logs=errors-only
Packages in scope: my-app, my-lib
Running build in 2 packages

my-lib#build started
my-lib#build success
my-app#build started
my-app#build success

Tasks:    1 successful, 1 total
Cached:    0 cached, 1 total

@arlyon one other thing I noticed is that errors-only seems to still print these:

Skipping cache check for @blah/blah, outputs have not changed since previous run.

@arlyon one other thing I noticed is that errors-only seems to still print these:

Skipping cache check for @blah/blah, outputs have not changed since previous run.

At least in 1.7.4

Still true in 1.9.1. It would be great to be able to turn these off.

Yes! Honestly I'd be happy with any of these

errors-only gives you a little progress indicator, like @maschwenk suggested
errors-only is actually hash-only but spits out errors if they happen
hash-only spits out errors if it encounters one

cc/ @anthonyshew who's doing awesome work re: the CLI

The UI released in 2.0 has some overlap here. Do the folks communicating on this issue think that it covers the concerns here?
This same behavior still exists when using streamed logs still, but interested to see if there's satisfaction from you all on this with the new TUI.


Fix failing SLP integration test

The SLP address being used in an integration tests lost its funds somehow which caused the integration test to fail. A new address was created with new tokens and that address is being used now. This fixes the test.

Pull Request Test Coverage Report for Build 2628

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 64.035%

Totals

Change from base Build 2623:
0.0%

Covered Lines:
2219

Relevant Lines:
3288

💛  - Coveralls


fix(import): inline elements handling (em and strong)

Fix #29

PR fixes all issues in https://blog.adobe.com/en/drafts/migrated/2020/04/30/protect-your-most-sensitive-digital-assets-while-working-from-home.html
But nothing I can do for: https://theblog-adobe.hlx.page/en/drafts/migrated/2016/01/07/embed-adobe-esign-services-agreements-to-sign-into-adobe-muse-projects.html
After "Embed into Adobe Muse Project" the DOM is completely wrong. Our parser (jquery) is not as smart as the Chrome's one to fix it...

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

v1.10.1
GitHub release

Your semantic-release bot :package::rocket:


Wasm and duckdb dream

For my use case, sql computations, dream is:

having for free the wasm version,
having duckdb
having the cloud version with multi-thread 8x or more AI

That would make:

faster popularity and less electricity
2x speed-up and less electricity
10x speed-up and less electricity and reactivity and a joy for business

Thanks for the suggestion. We don't have any immediate plans for WASM, and we would recommend use PowerQuery in Excel to connect to the SQL data sources: https://support.microsoft.com/en-us/office/use-power-query-to-import-data-for-python-in-excel-028dbcd4-76c5-4aa4-831d-0e211fefc0a2.
We don't have any plans to support duckdb either, given network access is disallowed for security. We'd also be concerned about users putting authentication information and connection information in their python code in the workbook.


Failing Pre-TTD ForkchoiceUpdated After PoS Switch test

Describe the bug
This test verifies that a forkchoiceUpdated fails on hash being set to a pre-TTD block after PoS change and simply sends an FCU with the genesis block
reth's supposed to send
{"payloadStatus":{"status":"INVALID","latestValidHash":"0x0000000000000000000000000000000000000000000000000000000000000000","validationError":null}
Steps to reproduce
./hive --client reth --sim ethereum/engine --sim.limit "/Failing Pre-TTD ForkchoiceUpdated After PoS Switch"
Node logs
No response
Platform(s)
No response
What version/commit are you on?
No response
Code of Conduct

[X] I agree to follow the Code of Conduct

This is failing due to pre-merge checks in the tree, caused by auto-seal forkchoice updates.
On the first FCU, for the second block, the pipeline runs.
On the third block:

the auto seal client issues a forkchoice update
then, reth attempts to download the block. this uses the auto seal download clients
when reth receives the block, it tries to insert it into the tree.

TTD is 196610
genesis block has a difficulty of 196608
the second block has a difficulty of 1 (196609 TD)
the third block has a difficulty of 1 (196610 TD)

The insert happens on the third block, but its parent total difficulty is passed here:
https://github.com/paradigmxyz/reth/blob/171166e84ae75f2129d9c3a9abe504d574d2c587/crates/blockchain-tree/src/blockchain_tree.rs#L377-L384
this check fails, causing the chain to stall before it reaches "The merge", and the test does not start
I forget exactly why passing the parent total difficulty here is the right thing to do. If it is the correct check, then we could solve this by changing the default difficulty for auto seal blocks from 1 to 2, so the total difficulty is reached by the pipeline run on the first FCU


Lab test case result view UI improvement

I witnessed the following with a student:

The red arrows point to clickable areas that expand when clicked on, explaining to the student what went wrong (if anything) in each test case.
It seems that some people do not realize that the + is a thing they can click on.
The situation is better than in issue 1101, since there is a mouseover visual effect.
But it could be that replacing + with "click to see details +" and - with "click to hide -" or something would be more obvious.
Also, the text Lab failed. could be changed to say something like Lab failed. Click test cases below to see details.

I agree: despite the mouseover effect, it's not obvious that clicking on specific test cases will display more information. We will come up with improvements to the UI that make this behavior clear.
Thanks for reporting the issue and for the suggestions!

We're now using a more visible sign (triangle) with a more prominent color for the accordion element:

The error message has been updated:

Note: these changes will be deployed to the learn website at the end of October.


Invalid main in package.json

Error: Cannot find module '/Users/zachleat/Code/eleventy/node_modules/urlpattern-polyfill/dist/index.cjs'. Please verify that the package.json has a valid "main" entry

I don’t see an index.cjs in the dist folder locally on rc1—did I miss something?

I think that the reference to a .cjs file comes from the instructions at https://github.com/developit/microbundle#-installation--setup--, but that info is out of date.
The main field should probably be set to the .umd.js file, as shown in the example a little bit further down the page.

A quick work around is to import the specific file manually.
eg. import { URLPattern } from 'urlpattern-polyfill/dist/index.umd';


YJDH-687 | feat: upgrade django to 3.2.23 (i.e. latest 3.2.x) in all backends

Description :sparkles:
feat: upgrade django to 3.2.23 (i.e. latest 3.2.x) in all backends
refs YJDH-687
Issues :bug:
YJDH-687
Testing :alembic:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

Please could one of Helsinki benefit team code review your part (i.e. @rikuke, @sirtawast or @mjturt)?
Please could one of TET team code review your part (i.e. @arpargo or @tuomas777)?
Thank you!

API branch is deployed to platta: https://tet-pr2520.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

API branch is deployed to platta: https://helsinkilisa-pr2520.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

APPLICANT branch is deployed to platta: https://helsinkilisa-ui-pr2520.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://tet-admin-ui-pr2520.dev.hel.ninja :laughing::tada::tada::tada:

TestCafe result is success for https://helsinkilisa-ui-pr2520.dev.hel.ninja :laughing::tada::tada::tada:

HANDLER branch is deployed to platta: https://helsinkilisa-ui-handler-pr2520.dev.hel.ninja :rocket::rocket::rocket:

YOUTH branch is deployed to platta: https://tet-youth-ui-pr2520.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://helsinkilisa-ui-handler-pr2520.dev.hel.ninja :laughing::tada::tada::tada:

API branch is deployed to platta: https://kesaseteli-pr2520.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

@arpargo & @tuomas777 About the TET's failing test in CI:
The failing test is a frontend test and should probably not be affected by a minor version upgrade of django.
Tried out with the current main branch & this PR's branch both:
docker compose -f compose.tet.yml up --build
docker exec -it te-admin bash
yarn te-admin:test

and both passed the test which is failing in CI for TET when run locally in docker:
 PASS  src/components/editor/__tests__/Editor.test.tsx
  frontend/tet/admin/src/components/editor/Editor
    ✓ should show field values in form components (1031 ms)
    when submiting form
      ○ skipped shows errors if empty values on required fields
      ○ skipped shows error notification if form is not valid

Here's the error in CI for TET for the same test:
FAIL src/components/editor/__tests__/Editor.test.tsx
  frontend/tet/admin/src/components/editor/Editor
    ✕ should show field values in form components (1398 ms)
    when submiting form
      ○ skipped shows errors if empty values on required fields
      ○ skipped shows error notification if form is not valid

  ● frontend/tet/admin/src/components/editor/Editor › should show field values in form components

    TypeError: router[operation] is not a function

      18 |       // use shallow route when we are already on the same path (ignoring query params)
      19 |       const shallow = pagePath === router.pathname;
    > 20 |       void router[operation](path, undefined, { shallow });
         |                             ^
      21 |     },
      22 |     [locale, router, isAlreadyRouting]
      23 |   );

      at goToPage (../../shared/src/hooks/useGoToPage.ts:20:29)
      at onServerError (src/hooks/backend/useUserQuery.ts:14:28)
      at handleError (../../shared/src/error-handler/error-handler.ts:36:7)
      at ../../shared/src/hooks/useErrorHandler.ts:20:16
      at ../../node_modules/react-query/lib/core/notifyManager.js:67:18
      at NotifyManager.notifyFn (../../node_modules/react-query/lib/core/notifyManager.js:15:7)
      at ../../node_modules/react-query/lib/core/notifyManager.js:82:20
          at Array.forEach (<anonymous>)
      at ../../node_modules/react-query/lib/core/notifyManager.js:81:17
      at NotifyManager.batchedUpdates$1 [as batchNotifyFn] (../../node_modules/react-dom/cjs/react-dom.development.js:25979:12)
      at ../../node_modules/react-query/lib/core/notifyManager.js:80:16

EMPLOYER branch is deployed to platta: https://kesaseteli-employer-pr2520.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://kesaseteli-employer-pr2520.dev.hel.ninja :laughing::tada::tada::tada:

HANDLER branch is deployed to platta: https://kesaseteli-handler-pr2520.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://kesaseteli-handler-pr2520.dev.hel.ninja :laughing::tada::tada::tada:

YOUTH branch is deployed to platta: https://kesaseteli-youth-pr2520.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://kesaseteli-youth-pr2520.dev.hel.ninja :laughing::tada::tada::tada:


Mergetree read block parts

Allows reading from MergeTree by blocks less than index_granularity rows.
Speed comparison with previous version: compare.txt
Speed comparison with previous version for queries with urls : compare_q.txt

Is it worth to add a logic to round block size to a number, that divide or divides to granule?
For example, if we have index_granularity = 8192 and block size is calculated to 8000, we could round up it to 8192 or round down to 4096.


change cookies from block all to allow 1st party

see https://github.com/ghacksuserjs/ghacks-user.js/issues/439

I'll have to update the wiki as well, but yeah, I'm OK with this .. just let me get the timing right. I think a FYI one off issue might be handy as well


Missing pieces for React compatibility

What is the feature you are proposing?
version
In React we can get the version string as follows, but not in hono/jsx
import { version } from 'react';

https://github.com/facebook/react/blob/main/packages/shared/ReactVersion.js#L15
react/dom/client
The createRoot and hydrateRoot APIs are not implemented in hono.
import { createRoot, hydrateRoot } from 'react-dom/client';

This was fixed by #2795.


Fixes leading/trailing widgets not centered in listTile

This PR fixes the leading/trailing widgets alignment on cross axis. As of now, it was aligning items on CrossAxisAlignment.start. Hence, the PR addresses that and introduces 2 new parameters named itemsAlignment & itemsPadding. The first defaults to CrossAxisAlignment.center and second defaults to kDefaultListTilePadding.
Closes https://github.com/bdlukaa/fluent_ui/issues/939
Pre-launch Checklist

[X] I have updated CHANGELOG.md with my changes
[X] I have run "dart format ." on the project
[X] I have added/updated relevant documentation

Thanks for the PR! I'd rename both properties to contentAlignment and contentPadding. What do you think?

Yep, sounds better.
Will do in a minute.


Reword rc

I like what you have written, but I feel that we have lost the direct reference to the research cycle. I think this is important  to know that software can be a part in different stages, and also other people can utilize a specific software in different stages of their cycle, and hence have different requirements. As a side-note, I don't quite like that in the competency section we already strongly refer to people being fully-qualified researchers.

I like what you have written, but I feel that we have lost the direct reference to the research cycle.

Likewise, I like the text here but I feel something is missing. If I understand correctly, this section is about highlighting why knowledge of the research lifecycle is an important competency for an RSE?
In this context, I feel we should perhaps be covering some of the following points:

Knowledge of the research process - come up with an idea or hypothesis, likely linked to some existing work, outputs, findings, etc., understand how that is developed, literature reviews, how funding may be obtained, the iterative process of finding a route to a solution (proving/disproving the hypothesis, developing some new knowledge or outcome, etc.).
Why understanding the above is important as an RSE.
Understanding how/where software fits into the lifecycle.
What an RSE gains from having this knowledge/understanding - how to work effectively with researchers, etc.
...

An update, here?

See #70


azurerm_virtual_desktop_host_pool error

When using the resource type "azurerm_virtual_desktop_host_pool"
the abbreviation outputs to hpool  however I believe this should be vdpool according to the table @ https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations

just noticed I'm using the version listed on the Terraform registry (outdated) and not the one listed on this repo


Fix/implement Copy Table to Clipboard

The "copy table" button beside the table on module 3 currently does nothing. It should instead copy the table to clipboard such that it can be pasted into Excel (or perhaps Google Sheets).

Documentation specifies that this button was originally only meant to be able to copy a single row at a time, making this a new feature.

I don't think it works with Google Sheets but I'm not sure and I don't think its important.


feat(ci): validate OpenAPI spec

Reference: #15778
We should know when we're breaking the OpenAPI spec :smile:

[ ] CHANGELOG.md updated with a link to the PR (not the Issue)
[x] Well-formatted commit messages
[ ] Rebased/mergeable
[ ] Tests pass
[ ] http/swagger.yml updated (if modified Go structs or API)
[ ] Documentation updated or issue created (provide link to issue/pr)
[x] Signed CLA (if not already signed)

The current changes to the Circle config are fine by me, but I'm not sure who is best to validate the new .validaterc file.

Is this blocked on anything?

@jademcgough I'm working through the errors today :+1:

@jademcgough I can't find any rules that really fit our style. I'm going to close this for now, but if you have 30 minutes this week - can we pair and put something together?


Trafico seems not working

Summary
I installed Trafico bot and add the file .github/trafico.yml  in the main branch (default)
When I open a pull request, there's no labels set by Trafico bot.
Steps to reproduce

Install Trafico for your user or organization and define repositories
Add a file .github/trafico.yml following the documentation on the default branch
Open a pull request

What is the current bug behavior?
The pull request is not labeled by Trafico bot.
What is the expected correct behavior?
The Pull request should be labeled with  Needs Review label.
Screenshots
Org or User Settings

Trafico config

Pull request

I echo @nhuray i have trafico configured for https://github.com/buildtesters/buildtest and it was working in the past some time back for instance see this PR: https://github.com/buildtesters/buildtest/pull/225 it has the Merged label. Now if you see my latest PRs https://github.com/buildtesters/buildtest/pulls i dont see any labels as i move PRs from state. I have a trafico configuration file https://github.com/buildtesters/buildtest/blob/devel/.github/trafico.yml which is based of sample file. I take it this is not required only if we need to configure it.
I tried reinstalling the app several times and reopen a PR a few times and it didnt work. You can look at https://github.com/buildtesters/buildtest/pull/687 and see the behavior.

@orhan Are you still maintaining trafico ?

@nhuray
To be honest I haven't worked on this project in a long time and it was never finished, as I couldn't even convince my team back then to actually use it.
But I'll actually try to look into this issue sometime during the week!

Thanks @orhan this looks pretty cool, it would be nice to get this up and running.

hi @nhuray our team at @wecraftapps use it and love it, thanks for your work ❤

Hi @rlataguerra, thanks for the support but actually I'm not the author of this project. @orhan is the author !
Are you saying you setup Trafico for your team and the app is working for you ?

@nhuray nope, not working anymore.
Sorry for the ping, I meant to ping @orhan


"Fix Lightbulb" shown over the problem instead of at the begining of the line

Hope this is the right place, I only use VS Code for my Powershell code.
Is it possible to get the "Fix Lightbulb" to be shown above the "problem" instead of at the beginning of the line.
If I click on the Lightbulb the fix is shown below the Lightbulb
If i click (ctrl + . ) then the fix is shown below the problem, the Lightbulb should be at this position also.
VS Code info:
Version: 1.26.1
Commit: 493869ee8e8a846b0855873886fc79d480d342de
Date: 2018-08-16T18:38:57.434Z
Electron: 2.0.5
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
Architecture: x64

/Duplicate of #33895


Props with hyphens incorrectly transpiled during JSX transformation

This is from Inferno 0.5.22 from NPM. My environment setup is explained in #131.
This simple component writes an HTML data attribute:
import Inferno from 'inferno'; // eslint-disable-line
import InfernoDOM from 'inferno-dom';
import { Component } from 'inferno-component';

class Item extends Component {
  render() {
    return
Hello world
;
  }
}

InfernoDOM.render(
  <Item attribute="foobar" />,
  document.body
);

Causes a parse error, see the unquoted data-id: attr value:
ERROR in ./src/index.js
Module parse failed: /Volumes/Files/Personal/Development/sandbox/lists-inferno/node_modules/babel-loader/index.js!/Volumes/Files/Personal/Development/sandbox/lists-inferno/src/index.js Line 216: Unexpected token -
You may need an appropriate loader to handle this file type.
|     tag: 'div',
|     attrs: {
|       data-attribute: v0
|     },
|     children: 'Hello world'

Stashing props in a data attribute is an anti-pattern for certain. Although it would be kind to handle it more gracefully. Exposing data attributes is useful for integration with third-party libs or legacy code requiring DOM state.
This popped up during testing trying to mimic a data-reactid attribute to track reconciliation.
Thanks a lot!

Hey @mseeley, hyphened JSX attributes are a very common request. I'll look at adding it to the spike branch, which will require the spike branch of Inferno (it's a large rewrite of the code base). I'll get back to you once this functionality is in!

There are 2 enhancements being addressed here and here that should cover this request.

I believe the spike branch for the JSX plugin and Inferno should resolve these issues now!

Hi @trueadm the spike branch at b5905384 definitely handles the hyphen separated attribute.
class Item extends Component {
  render() {
    return
Hello world
;
  }
}

renders:

Hello world

Thanks!

@mseeley awesome :)


Clarify that static_folder must be a relative path

Also hint at root_path parameter rather than mentioning in plain text.

Thanks! Changed base to 1.1.x, updated to mention it could also be an absolute path, and to fix some formatting.


Example nginx-dns-routing.conf not working after njs deprecation

Hi. Using master, downloaded today 04/01/2022 13:34
I'm trying to setup one of the examples before making my configuration changes, but I'm struggling with the changes to njs deprecating js_include for js_import. Vanilla install of nginx-full on Ubuntu 20.04. Nginx installed from nginx repo, not Ubuntu's. I also installed from nginx:
http://nginx.org/packages/mainline/ubuntu focal/nginx amd64 nginx-module-njs amd64 1.21.5+0.7.1-1~focal.
Also from this repo I dowloaded the master as zip, unzipped on the server and as per instructions, copied the njs.d directory to /etc/nginx. That's the setup.
Then to start from a working baseline I backed up /etc/nginx/nginx.conf and used the example /nginx-dns-master/examples/nginx-dns-routing.conf
However:
root@webserv2:/etc/nginx# service nginx configtest
nginx: [emerg] invalid number of arguments in "js_import" directive in /etc/nginx/nginx.conf:26
nginx: configuration file /etc/nginx/nginx.conf test failed
From the conversation here #14   I've ended up with this nginx.conf
user  nginx;
worker_processes  auto;

load_module modules/ngx_stream_js_module.so;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

stream {

  # logging
  log_format  dns   '$remote_addr [$time_local] $protocol "$dns_qname" "$upstream_pool"';
  access_log /var/log/nginx/dns-access.log dns;

  # import NJS module
  #js_import /etc/nginx/njs.d/nginx_stream.js;
  js_import /etc/nginx/njs.d/dns/dns.js

  # NJS function to get the dns_qname, requires a js_preread in the server to populate the variable from the DNS packet
 # js_set $dns_qname dns_get_qname;
  js_set $dns.qname dns.get_qname;

  # This maps the qname domain to the DNS server for routing
  map $dns_qname $upstream_pool {
    hostnames;
    *.nginx dnsmasq;
    *.k8s dnsmasq;
    default google;
  }

  # Google upstream
  upstream google {
    zone dns 64k;
    server <IP_ADDRESS>:53;
  }

  # dnsmasq local upstream
  upstream dnsmasq {
    zone dns 64k;
    server <IP_ADDRESS>:53;
  }

  # DNS(TCP) Serverr
  server {
    listen 53;
    js_preread dns_preread_dns_request;
    proxy_pass $upstream_pool;
  }

  # DNS(UDP) Server
  server {
    listen 53 udp;
    js_preread dns_preread_dns_request;
    proxy_responses 1;
    proxy_pass $upstream_pool;
  }

}

What other changes I need to make to get this example working again please?

@TuxInvader  for when you can spare a moment please.

Spotted the errors I made. I missed a semicolon at the end of line 25 and made a typo missing a letter.
With those I got the error after adding the semicolon  nginx: [emerg] unknown "dns_qname" variable
With the line now reading:
  js_set $dns.qname dns.get_qname;
Now the config test if happy.
Now I can start testing.

I was too early to close.
First I had to change from worker_process auto; to 2 . I was getting failed to spawn messages.
Then I got
2022/01/04 21:03:23 [error] 91486#91486: *1 js function "dns_preread_dns_request" not found while prereading client data, udp client: <IP_ADDRESS>, server: <IP_ADDRESS>:53
when sending a dns dig request to nginx. Call is dig www.example.com @<IP_ADDRESS>
So I thought I needed to look at what changes might be needed in that function and made some (see below) but I end up with gobs of errors
2022/01/04 21:09:06 [alert] 91486#91486: recvmsg() truncated data
I am most confused how we're to use the example configs now. To reiterate I'm just using nginx-dns-routing.conf example file.
I've tried both ways, putting at the top
#load_module modules/ngx_stream_js_module.so;
load_module njs.d/dns/dns.js;

and
load_module modules/ngx_stream_js_module.so;
#load_module njs.d/dns/dns.js;

and changing in the DNS TCP and UDP server blocks
js_preread dns.dns_preread_dns_request;
In all cases I get those truncated data errors, both with dns. in front of dns_preread_dns_request and without. Also both cases of loading modules at the top.
Clearly I'm misunderstanding the instruction, could you please point out my error?

I think you want
user  nginx;
worker_processes  auto;

load_module modules/ngx_stream_js_module.so;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

stream {

  # logging
  log_format  dns   '$remote_addr [$time_local] $protocol "$dns_qname" "$upstream_pool"';
  access_log /var/log/nginx/dns-access.log dns;

  # import NJS module
  js_import /etc/nginx/njs.d/dns/dns.js

  # NJS function to get the dns_qname, requires a js_preread in the server to populate the variable from the DNS packet
  js_set $dns_qname dns.get_qname;

  # This maps the qname domain to the DNS server for routing
  map $dns_qname $upstream_pool {
    hostnames;
    *.nginx dnsmasq;
    *.k8s dnsmasq;
    default google;
  }

  # Google upstream
  upstream google {
    zone dns 64k;
    server <IP_ADDRESS>:53;
  }

  # dnsmasq local upstream
  upstream dnsmasq {
    zone dns 64k;
    server <IP_ADDRESS>:53;
  }

  # DNS(TCP) Serverr
  server {
    listen 53;
    js_preread dns.preread_dns_request;
    proxy_pass $upstream_pool;
  }

  # DNS(UDP) Server
  server {
    listen 53 udp;
    js_preread dns.preread_dns_request;
    proxy_responses 1;
    proxy_pass $upstream_pool;
  }

}

Thank you for taking the time to put it together. I'll be tryng this setup asap.

Thanks @TuxInvader for your help. My setup is working again.
stream section:
stream {
    # DNS logging

    # Disable DNS logging
    access_log off;

    log_format  dns   '$remote_addr [$time_local] $protocol "$dns_qname"';
    access_log /var/log/nginx/dns-access.log dns;

    # import NJS module
    js_import /etc/nginx/njs.d/dns/dns.js;

    # NJS function to get the dns_qname, requires a js_preread in the server to populate the variable from the DNS packet
    js_set $dns_qname dns.get_qname;

    # DNS upstream pool.
    upstream dns {
        zone dns 64k;
        server <IP_ADDRESS>:53;
    }

    # DNS(TCP) and DNS over TLS (DoT) Server
    # Terminate DoT and DNS TCP, and proxy onto standard DNS
    server {
        listen 853 ssl;
        listen [::]:853 ssl;
        include global/dot-ssl.conf;
        include global/cert.conf;
        js_preread dns.preread_dns_request;
        proxy_pass dns;
    }

    # DNS over HTTPS (gateway) Service
    # Upstream can be either DNS(TCP) or DoT. If upstream is DNS, proxy_ssl should be off.
    server {
        listen <IP_ADDRESS>:8853;
        js_filter dns.filter_doh_request;
        proxy_pass dns;
    }
}

Yes @TuxInvader the config you provided has made the testconfig pass now. Much obliged.


Support stack

I don't use stack, so figuring out how to support it is enough work to warrant its own issue.
Should build with stack build, first time every time.

Neil Mitchell has an interesting approach to stack.yaml files. Since the current stack.yaml would be identical to that generated by stack init, maybe you could remove it entirely and test that stack init && stack build works with each new release?

What's next to do on this ticket? As of #26, stack build works fine for me.
~/misc/hgrep
η stack exec hgrep -- main main/hgrep.hs
main/hgrep.hs:16:1-13

main :: IO ()
main/hgrep.hs:(17,1)-(31,31)

main = do
  IO.hSetBuffering IO.stdout IO.LineBuffering
  IO.hSetBuffering IO.stderr IO.LineBuffering
  opts <- parseOpts
  colour <- detectColour
  case parseQuery (cmdQuery opts) (cmdRegex opts) of
    Left er -> do
      IO.hPutStrLn IO.stderr er
      exitWith (ExitFailure 2)
    Right q -> do
      found <-
        fmap sum $
          for (cmdFiles opts) $ \fp ->
            hgrep (HGrep.PrintOpts colour) q fp
      exitWith (exitCode found)

Looks like we'll be able to just remove the stack.yaml, so the only thing left to do is ensure Travis does stack builds in #5 .

Do you want this in bin/travis_script or tucked directly into the .travis.yml?

I think we can close this. Head over to #5.


[AVM Module Issue]: Usage of a var instead of a local

Check for previous/existing GitHub issues

[X] I have checked for previous/existing GitHub issues

Module specific issue

[X] I confirm that this issue is about this AVM module and not about the resource itself, or how to use Terraform.

Issue Type?
I'm not sure
(Optional) Module Version
0.1.4
(Optional) Correlation Id
No response
Description
main.telemetry.tf uses the local enable_telemetry on line 2 and then uses the var with same name on line 10. This seems like a typo (something forgotten) and it is confusing. Is that the desired state or should it really be a reference to the local on line 10 as well?

@ross-bohr ,
Thanks for the checking! I replaced it to use the var instead and will be available on this PR #62

this has been resolved and will be available on the next PR


Not show result UK

Hi, use select2 for country list. But results not showing UK or Ukraine or if I type another word with "Uk..." .What's wrong ?

This appears to be more of a usage question than a bug report or common feature request.  As we continue to keep the Select2 issue tracker geared towards these two areas, bug reports and common feature requests, we are redirecting usage questions to other communities such as the mailing list, IRC, or Stack Overflow.


exception trying to renew cert

With a fresh install of

win-acme.v<IP_ADDRESS>5.x64.pluggable.zip
plugin.validation.dns.route53.v<IP_ADDRESS>5.zip

I am getting this exception trying to renew a certificate:
(ComponentNotRegisteredException): The requested service
'PKISharp.WACS.Plugins.Interfaces.ICsrPlugin' has not been registered.

Below is the full verbose output.
$ ./wacs.exe --verbose
 [VERB] Verbose mode logging enabled
 [VERB] ExePath: C:\Program Files (x86)\Win-ACME\wacs.exe
 [VERB] ResourcePath: C:\Program Files (x86)\Win-ACME\
 [VERB] PluginPath: C:\Program Files (x86)\Win-ACME\
 [VERB] Loaded validation plugin Route53 from C:\Program Files (x86)\Win-ACME\PKISharp.WACS.Plugins.ValidationPlugins.Route53.dll
 [VERB] Looking for settings.json in C:\Program Files (x86)\Win-ACME\
 [DBUG] Config folder: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org
 [DBUG] Log path: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Log
 [DBUG] Cache path: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates
 [VERB] W3SVC service not detected
 [DBUG] secrets.json not found
 [VERB] Arguments: --verbose
 [DBUG] Renewal period: 55 days
 [VERB] Sending e-mails True

 [INFO] A simple Windows ACMEv2 client (WACS)
 [INFO] Software version <IP_ADDRESS>5 (release, pluggable, standalone, 64-bit)
 [INFO] Connecting to https://acme-v02.api.letsencrypt.org/...
 [VERB] SecurityProtocol setting: SystemDefault
 [DBUG] Send GET to https://acme-v02.api.letsencrypt.org/directory
 [VERB] Request completed with status OK
 [DBUG] Connection OK!
 [DBUG] IIS not detected
 [DBUG] Running with administrator credentials
 [INFO] Scheduled task looks healthy
 [INFO] Please report issues at https://github.com/win-acme/win-acme
 [VERB] Unicode display test: Chinese/語言 Russian/язык Arab/لغة

 N: Create certificate (default settings)
 M: Create certificate (full options)
 R: Run renewals (1 currently due)
 A: Manage renewals (1 total, 1 in error)
 O: More options...
 Q: Quit

 Please choose from the menu: R

 [VERB] Checking renewals

 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Adding <IP_ADDRESS> as DNS server
 [VERB] Targeted convert into 1 order(s)
 [VERB] Checking [Csr] C:\Users\Administrator\Desktop\ssl-certs\<redaced>.csr
 [INFO] Renewing certificate [Csr] C:\Users\Administrator\Desktop\ssl-certs\<redacted>.csr
 [VERB] Handle order 1/1: Main
 [DBUG] Refreshing cached order
 [DBUG] Refreshing order...
 [VERB] Constructing ACME protocol client...
 [VERB] Getting service directory...
 [DBUG] Send GET to https://acme-v02.api.letsencrypt.org/directory
 [VERB] Request completed with status OK
 [DBUG] Loading signer from C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Signer_v2
 [DBUG] Loading account from C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Registration_v2
 [VERB] Using existing ACME account
 [VERB] ACME client initialized
 [DBUG] Send HEAD to https://acme-v02.api.letsencrypt.org/acme/new-nonce
 [VERB] Request completed with status OK
 [DBUG] Send POST to https://acme-v02.api.letsencrypt.org/acme/order/219819660/72867299160
 [VERB] Request completed with status OK
 [WARN] Cached order has status pending, discarding
 [VERB] Creating order for hosts: ["DnsName: <redacted>"]
 [DBUG] Send POST to https://acme-v02.api.letsencrypt.org/acme/new-order
 [VERB] Request completed with status Created
 [VERB] Order https://acme-v02.api.letsencrypt.org/acme/order/219819660/72867299160 created
 [EROR] (ComponentNotRegisteredException): The requested service 'PKISharp.WACS.Plugins.Interfaces.ICsrPlugin' has not been registered. To avoid this exception, eithe
r register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional depende
ncy.
 [DBUG] Exception details: ComponentNotRegisteredException {TargetSite=System.Object ResolveService(Autofac.IComponentContext, Autofac.Core.Service, System.Collection
s.Generic.IEnumerable`1[Autofac.Core.Parameter]), StackTrace="   at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerabl
e`1 parameters)\r\n   at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters)\r\n   at Autofac.ResolutionExtens
ions.Resolve[TService](IComponentContext context, IEnumerable`1 parameters)\r\n   at Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context)\r\n   a
t PKISharp.WACS.RenewalExecutor.GetFromServer(ExecutionContext context, RunLevel runLevel)\r\n   at PKISharp.WACS.RenewalExecutor.ExecuteOrder(ExecutionContext contex
t, RunLevel runLevel)", Message="The requested service 'PKISharp.WACS.Plugins.Interfaces.ICsrPlugin' has not been registered. To avoid this exception, either register
 a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.", Dat
a=[], InnerException=null, HelpLink=null, Source="Autofac", HResult=-2146233088}
 [EROR] Renewal for [Csr] C:\Users\Administrator\Desktop\ssl-certs\<redacted>.csr failed, will retry on next run

That bug should be fixed in this build: https://ci.appveyor.com/project/WouterTinus/win-acme-s8t9q/builds/42957235

Released in 2.1.22


login is required to use the 'clickhouse' driver

I am trying to run a migration on a clickhouse server, however I cannot get the driver to work.
data "atlas_schema" "schema" {
  src = file("${path.module}/schemas/schema.hcl")
  dev_url = "clickhouse://localhost:9000/demo"
}

The following code produces an error
╷
│ Error: Inspect Error
│
│   with module.schema-definitions.data.atlas_schema.schema,
│   on schema-definitions/schema.tf line 1, in data "atlas_schema" "schema":
│    1: data "atlas_schema" "schema" {
│
│ Unable to inspect given source, got error: Error: login is required to use
│ the 'clickhouse' driver
│
╵

Does not matter if I provide username/password or if the server is running on localhost or not. Nothing seems to have an impact on the error. Any ideas what might cause this?

https://atlasgo.io/guides/clickhouse#logging-in-to-atlas
To use ClickHouse with Atlas, you'll need to [log in to Atlas](https://auth.atlasgo.cloud/signup?utm_source=atlasgo&utm_medium=website&utm_term=guides_clickhouse). If it's your first time, you will be prompted to create both an account and a workspace (organization):

Would be nice to add this to all documentations, because this is the only place where I found this reference.