Colored test output

See https://github.com/phil-opp/blog_os/issues/591#issuecomment-490126223

Inspired by your comment in the OP, but I'm using both green and red:
use core::fmt;

pub enum ExtendedColor<'a> {
    Green(&'a str),
    Red(&'a str)
}

impl<'a> fmt::Display for ExtendedColor<'a> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        let prefix = match &self {
            ExtendedColor::Green(_) => "\x1B[32m", // 32 is green
            ExtendedColor::Red(_) => "\x1B[31m" // 31 is red
        };
        write!(f, "{}", prefix).unwrap();
        let s = match &self {
            ExtendedColor::Green(s) => s,
            ExtendedColor::Red(s) => s
        };
        write!(f, "{}", s).unwrap();
        write!(f, "\x1B[0m").unwrap();
        Ok(())
    }
}

Usage:
serial_println!("{}", ExtendedColor::Green("[ok]"));

More colors here: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
I don't want to make a PR because I doubt this code is ready for prime time, but wanted others to have something to copy-paste in a pinch if they find themselves here.
Some issues I see with my code:

I can't remember if you've explained lifetimes yet by this point in your blog posts? Just make the code less pointy (and use &'static str instead) if you don't want to think about them
I'm just .unwrap()ing all the Results of write! (which panics if not Ok)
This isn't very Open to adding colors / Closed to modification

Here's Version Two. Feels a little more Rusty to me (but what do I know?)
use core::convert;
use core::fmt;

pub struct Rgb {
    pub r: u8,
    pub g: u8,
    pub b: u8
}

impl Rgb {
    pub const fn default() -> Self {
        // This instead of #[derive(Default)] so we can have a const fn
        Self {
            r: 0,
            g: 0,
            b: 0
        }
    }

    pub const fn new(r: u8, g: u8, b: u8) -> Self {
        Self {
            r,
            g,
            b
        }
    }
}

struct ExtendedFormatRgb<'a>(&'a Rgb);

impl<'a> convert::From<&'a Rgb> for ExtendedFormatRgb<'a> {
    fn from(rgb: &'a Rgb) -> Self {
        Self(rgb)
    }
}

impl<'a> fmt::Display for ExtendedFormatRgb<'a> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{};", self.0.r)
            .and_then(|_| write!(f, "{};", self.0.g))
            .and_then(|_| write!(f, "{}", self.0.b))
    }
}

pub struct ColoredStr<'a> {
    pub background: Option<Rgb>,
    pub foreground: Option<Rgb>,
    pub s: &'a str
}

impl<'a> ColoredStr<'a> {
    pub const fn green(s: &'a str) -> Self {
        ColoredStr {
            background: None,
            foreground: Some(Rgb { r: 0, g: 255, b: 0 }),
            s
        }
    }

    pub const fn new(
        background: Option<Rgb>,
        foreground: Option<Rgb>,
        s: &'a str
    ) -> Self {
        ColoredStr {
            background,
            foreground,
            s
        }
    }

    pub const fn red(s: &'a str) -> Self {
        ColoredStr {
            background: None,
            foreground: Some(Rgb { r: 255, g: 0, b: 0 }),
            s
        }
    }
}

impl<'a> fmt::Display for ColoredStr<'a> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        // https://en.wikipedia.org/wiki/ANSI_escape_code#SGR
        match &self.foreground {
            Some(foreground) => write!(f, "\x1B[38;2;{}m", &ExtendedFormatRgb::from(foreground)), // Set RGB foreground color
            None => Ok(())
        }
        .and_then(|_| match &self.background {
            Some(background) => write!(f, "\x1B[48;2;{}m", &ExtendedFormatRgb::from(background)), // Set RGB background color
            None => Ok(())
        })
        .and_then(|_| write!(f, "{}", self.s)) // The string
        .and_then(|_| write!(f, "\x1B[0m")) // Reset
    }
}

Simple usage:
println!("{}", ColoredStr::green("[ok]"));

Advanced usage:
let foo = ColoredStr::new(
    Some(Rgb::new(128, 128, 255)),
    Some(Rgb::new(255, 255, 128)),
    "WOOHOO!");
println!("{}", foo);

Here's my final product for very flexible colored output:
use core::fmt;

#[derive(Clone)]
#[derive(Copy)]
pub struct Rgb {
    pub r: u8,
    pub g: u8,
    pub b: u8
}

impl Rgb {
    pub const fn default() -> Self {
        Self {
            r: 0,
            g: 0,
            b: 0
        }
    }

    pub const fn new(r: u8, g: u8, b: u8) -> Self {
        Self {
            r,
            g,
            b
        }
    }
}

struct ExtendedFormatRgb(Rgb);

impl ExtendedFormatRgb {
    fn from(rgb: Rgb) -> Self {
        Self(rgb)
    }
}

impl fmt::Display for ExtendedFormatRgb {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{};", self.0.r)
        .and_then(|_| write!(f, "{};", self.0.g))
        .and_then(|_| write!(f, "{}", self.0.b))
    }
}

pub struct Commands<'a, 'b> {
    f: &'a mut fmt::Formatter<'b>
}

impl<'a, 'b> Commands<'a, 'b> {
    // https://en.wikipedia.org/wiki/ANSI_escape_code#SGR

    pub fn background(&mut self, rgb: Rgb) -> fmt::Result {
        write!(self.f, "\x1B[48;2;{}m", ExtendedFormatRgb::from(rgb))
    }

    pub fn foreground(&mut self, rgb: Rgb) -> fmt::Result {
        write!(self.f, "\x1B[38;2;{}m", ExtendedFormatRgb::from(rgb))
    }

    pub fn print(&mut self, s: &str) -> fmt::Result {
        write!(self.f, "{}", s)
    }

    pub fn reset(&mut self) -> fmt::Result {
        write!(self.f, "\x1B[0m")
    }
}

struct FunctionBox<F: Fn(&mut Commands<'_, '_>) -> fmt::Result>(F);

impl<F: Fn(&mut Commands<'_, '_>) -> fmt::Result> fmt::Display for FunctionBox<F> {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let mut command_acceptor = Commands { f };
        (self.0)(&mut command_acceptor)
    }
}

pub fn extended_format<F: Fn(&mut Commands<'_, '_>) -> fmt::Result>(f: F) -> impl fmt::Display {
    FunctionBox(f)
}

Usage:
fn main() {
    serial_print!("{}", extended_format(|commands|
        commands.foreground(Rgb::new(0, 0, 255))
        .and_then(|_| commands.print("W"))
        .and_then(|_| commands.foreground(Rgb::new(0, 255, 0)))
        .and_then(|_| commands.print("o"))
        .and_then(|_| commands.foreground(Rgb::new(0, 255, 255)))
        .and_then(|_| commands.print("o"))
        .and_then(|_| commands.foreground(Rgb::new(255, 0, 0)))
        .and_then(|_| commands.print("h"))
        .and_then(|_| commands.foreground(Rgb::new(255, 0, 255)))
        .and_then(|_| commands.print("o"))
        .and_then(|_| commands.foreground(Rgb::new(255, 255, 0)))
        .and_then(|_| commands.print("o"))
        .and_then(|_| commands.foreground(Rgb::new(255, 255, 255)))
        .and_then(|_| commands.print("!"))
        .and_then(|_| commands.reset())
    ));
}

Output:

@matthew-a-thomas Looks great, thanks for creating this!
I think this is a bit too complex for adding it to the blog, but how about including it as an external crate? This also has the advantage that people can use it for their own projects without needing to copy the whole code. If you want, we can create the crate under the rust-osdev organization, or you can just create your own repository. What do you think?
Regarding your code:

I like the flexibility that the extended_format function gives, but it introduces quite a bit boilerplate and uses a uncommon interface. I think it would be worth to add a few convenience functions for common colors, such as your red_string function above. Perhaps just simple red, blue, green, yellow, etc. functions that allow colored printing with minimal boilerplate.

Your Commands::print function could be generalized to all types that implement Display, not just strings. Also, we probably also want print_debug or print_hex methods for using the fmt::Debug or fmt::LowerHex traits.

Expanding on the previous point, maybe a different design would work better and allow to keep using the normal formatting traits instead of needing to call print methods. I was thinking of something like this:
serial_print!("{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
    Foreground(Rgb::new(0, 0, 255)), "W",
    Foreground(Rgb::new(0, 255, 0)), "o",
    Foreground(Rgb::new(0, 255, 255)), "o",
    Foreground(Rgb::new(255, 0, 0)), "h"
    Foreground(Rgb::new(255, 0, 255)), "o"
    Foreground(Rgb::new(255, 255, 0))), "o"
    Foreground(Rgb::new(255, 255, 255)), "!"
    Reset()
);

The Foreground type would be a struct that implements Display by writing "\x1B[38;2;{}m", ExtendedFormatRgb::from(rgb) and Reset would a struct that implements Display by writing "\x1B[0m". This way, the individual string/number components can still use the formatting traits like {}, {:?}, {:x}, etc.

As another alternative, I could imagine a design like this:
struct Colored<T> {
    foreground: Foreground,
    background: Background,
    inner: T,
}

impl<T> fmt::Display for Colored<T> where T: fmt::Display {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(self.f, "\x1B[38;2;{}m\x1B[48;2;{}m{}\x1B[0m",
        self.foreground, self.background, self.inner)
      }
}

impl<T> fmt::Debug for Colored<T> where T: fmt::Debug {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(self.f, "\x1B[38;2;{}m\x1B[48;2;{}m{:?}\x1B[0m",
        self.foreground, self.background, self.inner)
      }
}

// […] equivalent implementations for the other formatting traits

println!("{}{:?}", Colored::red("hello"), Colored::green(Foo("world")));

The Colored struct wraps an arbitrary type and implements all formatting traits that the wrapped type implements, prepending the formatting commands and appending the reset command. This way, the type is very easy to use, but it might issue more commands than needed. So maybe it's a good idea to add this type on top of other abstractions, so that the user can decide whether they want to use the simple and easy way or the most performant way.

These are just some ideas from the top of my head, so feel free to dismiss them if you don't like them.

@phil-opp Awesome feedback. Perfect for a beginner Rustacean like me—thanks!
I see your point about the uncommon interface, and the lack of support for fmt::Debug and fmt::LowerHex.
I like the idea of decorating things that already implement fmt::Display. What would you think about the following syntax?
use core::fmt;

struct Rgb {
    r: u8,
    g: u8,
    b: u8
}

impl Rgb {
    fn new(r: u8, g: u8, b: u8) -> Self {
        Self {
            r,
            g,
            b
        }
    }
}

trait SetForeground: Sized {
    fn foreground(self, rgb: Rgb) -> Foreground<Self>;
}

trait SetBackground: Sized {
    fn background(self, rgb: Rgb) -> Background<Self>;
}

struct Foreground<T> {
    t: T,
    rgb: Rgb
}

struct Background<T> {
    t: T,
    rgb: Rgb
}

impl<T> SetForeground for &T
where T: fmt::Display {
    fn foreground(self, rgb: Rgb) -> Foreground<Self> {
        Foreground {
            t: self,
            rgb
        }
    }
}

impl<T> SetBackground for &T
where T: fmt::Display {
    fn background(self, rgb: Rgb) -> Background<Self> {
        Background {
            t: self,
            rgb
        }
    }
}

impl<T> fmt::Display for Foreground<T>
where T: fmt::Display {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "\x1B[38;2;{};{};{}m{}\x1B[0m", self.rgb.r, self.rgb.g, self.rgb.b, self.t)
    }
}

impl<T> fmt::Display for Background<T>
where T: fmt::Display {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "\x1B[48;2;{};{};{}m{}\x1B[0m", self.rgb.r, self.rgb.g, self.rgb.b, self.t)
    }
}

fn main() {
    let red = Rgb::new(255, 0, 0);
    let blue = Rgb::new(0, 0, 255);
    println!("{}", "Red with a blue background".foreground(red).background(blue));
}

(and of course this could be extended to work for fmt::Debug, could have convenience functions for common colors, etc)

What do you think about this?

Looks good!

To me this feels more expressive without being verbose, but I don't know how idiomatic it is. There are still some wasted characters like a redundant "\x1B[0m" string when you use both foreground and background.

If it's still correct (i.e. no invalid control sequences), I think that's fine for now.

Taking a step back to survey for a moment, I see that we're reinventing the wheel.

I looked through a few existing crates. Your approach seems most similar to https://github.com/mackwic/colored. However, that crate (and most others) depend on the standard library, so I think it's still worth to create a simple no_std crate. Also, I like that your code works with all formatting traits and isn't hardcoded to &str/String.

If so I think it would be neat to have the crate live under rust-osdev.

Cool! I sent you an invite to the organization. You should then be able to move your repository if you like or create a new one. You will still have admin permissions on the repository of course.

Note that we probably need a different name for the crate in order to publish it to crates.io, given that colored is already taken. Do you have any ideas?

I sent you an invite to the organization. You should then be able to move your repository if you like or create a new one.

Awesome, thanks! I'll work on that next chance I get.

Note that we probably need a different name for the crate in order to publish it to crates.io, given that colored is already taken. Do you have any ideas?

Hmm. I'm brainstorming. It will have these advantages over other ANSI color crates I'm seeing:

Works in no_std
Very simple (just colors)
Colors all the formatting traits
Supports all RGB colors

Maybe its name can reflect these things.
I don't think it should be named something like ansi or color (even if those names were free) because this does only a couple of ANSI control strings, neither does it do much at all with color (only RGB).
Here are some names that aren't listed in crates.io:

simple_color
ansi_color (this name would be easily confused with ansi_colours)
simple_ansi
easy_color
rgb_ansi

I guess American English is okay? I naturally write "color" not "colour", and there's a 7.6:1 ratio of "color" to "colour" on crates.io.
I think I like "rgb_ansi" but I'm not dead set on it. What are your preferences, @phil-opp?

I prefer American English too. I don't have any strong preferences about the name, but I think ansi in the name makes sense to differentiate it from other color crates (e.g. for RGB-HSV conversion or for image manipulation). I agree that ansi_color is too similar to ansi_colours.

@phil-opp I've never moved a repository in GitHub before, nor have I done anything with Teams. I think it's showing: I renamed my repo to ansi_rgb and transferred ownership to rust-osdev, then created the ansi_rgb team, then noticed that I should have done those two things in the reverse order because now I don't have admin privileges on the repo to give it to the team 🤦♂

No worries! I added the repository to the team, giving it write access. You personally have full admin access now, so feel free to change the repository and permission settings however you like.
I think we should push an initial release to crates.io soon to reserve the name.

Also, we should include the project in https://github.com/rust-osdev/about. Feel free to add yourself to the members list too.

@phil-opp Boom! https://crates.io/crates/ansi_rgb
Will update documentation, package better, etc later

Awesome! I try to include it on the blog soon.

Awesome! I try to include it on the blog soon.

@phil-opp There are a few things I need to tidy up. Would it be okay to wait until 0.2 is released? In the meantime feel free to add issues for things I've missed

Sure, this can wait until you feel that it's ready for public consumption. At the moment, I'm quite short on time anyway, so no need to hurry. Thanks for all your work!

@phil-opp 0.2.0 came faster than I expected: https://crates.io/crates/ansi_rgb/0.2.0 🎉

Awesome!

FWIW I have a basic ANSI escape sequence parser in my kernel which processes the output of println and determines the correct color to write to the framebuffer. Mostly it is just a simple way of controlling text color without needing any color setting APIs in the kernel. It could be a good fit for this crate if there’s a demand?

@64 Consuming ANSI escape sequences definitely sounds useful. However, consumption of ANSI escape sequences is a separate concern than producing them, and I suspect very little code would be common between the two. Is there a compelling reason to bundle both concerns up into the same crate?
If we decide the reason we want to begin consuming escape sequences is because this crate produces them, I foresee the following pressures being applied:

When we produce another escape sequence, people will expect consumption to work, too
When we consume another escape sequence, people will expect to be able to produce it, too

Those pressures applied over time will tend to push scope boundaries, so at some point we'd limit the crate's scope sufficiently to prevent that from happening "too much". So why not limit the scope now?
What do you think: what are some advantages of expanding the functionality of this crate versus just having two crates?

There’s only so many escape sequences you can actually implement with VGA text mode, at least, so I don’t see the ‘pressure over time’ being a particular concern.
I guess there’s not much reason to have it together other than the fact that it’s a nice logical unit to have all color handling in one crate. I’m generally not a fan of micro crates but it’s down to personal preference at the end of the day; I won’t strongly object. It’s just a little bit extra maintenance overhead for everyone involved when there’s a new crate.

There’s only so many escape sequences you can actually implement with VGA text mode, at least, so I don’t see the ‘pressure over time’ being a particular concern.

@64 I'm not trying to be difficult, but this suggests to me another reason to hesitate in putting them together: ansi_rgb is intended to work in all environments (that have a terminal); your proposal presumably is for environments having a framebuffer, VGA text mode, or something like that: those are often not the same environment.
I feel like I'm thinking too subjectively about this. What concrete information would help us make this decision? For example, if we knew what percent of people who produce RGB escape sequences also need to interpret them then we wouldn't have to make a subjective decision.
But I see your point about producing and consuming being logically connected.
I would be interested in seeing your code. If you haven't already I'm sure it'd be possible to abstract it out so that the concept of e.g. a framebuffer isn't necessary in the crate. For example, there could just be a function in the crate that tokenizes a string, and elsewhere (outside the crate where the framebuffer concept is necessary) the tokens could be translated into commands against the framebuffer.

Well, everyone who consumes them is also going to need to produce them (otherwise what’s the point). As for the number of people who actually want to consume them, it’s probably quite low but I’d wager that more people would use it if it was available because it’s an easy way to control color through println alone.
At the moment it just produces bytes which control color in the VGA text mode, i.e the upper byte at each position. But as you say it could be abstracted into something more general then converted into that representation later, depending on video mode.
The code itself is pretty rough and ready with magic numbers scattered around the place because I ported it from a C version I wrote a while back and have been meaning to refactor it properly for a while (and moving it into a crate others could use is a good chance for that).
https://github.com/64/solstice/blob/master/src/drivers/vga/ransid.rs
IDK, maybe it’s unnecessary to make a crate for it, it’s just hard to gauge demand


fix valid_time vs time dimension name for plot_region_all()

See #23

this works - now need a solution for plot_region_year()

Summary of changes, closes #23. Tests passed (some warnings on pkg deprecations but not branch-specific) and no changes to /docs.
Losing date values
All date values were being dropped when converting self.raw_msl_data to self.masked_msl_data, when filtered against the lsm MASK_THRESHOLD.
Changing:
self.land_sea_mask < MASK_THRESHOLD

to
self.land_sea_mask.values < MASK_THRESHOLD

Retains date values [(20240101, 20240202)] instead of [(0, 1)] etc
Error plotting calculation dataframe
self.asl_df failed to plot as the number of header lines was incorrect, so column names were not read in. Changed from 27 to 28. I wonder what caused that change and I wonder if this merits more investigating.
variable names 'time', 'valid_time', 'date'
Several instances where plotting functions where looking for 'time' when this should have been 'valid_time' (I suspect divergence introduced after ERA5T filtering). Another instance where get_lows() was expecting 'date' but should have been 'time'.
hard-coded indexing
In plot.py there was hard-coded indexing which I've removed in favour of matching the index to the date that is being iterated on.

No worries - I only just finished it so was certainly not waiting!
I think probably all data restructuring from CDS, haha!
I'm happy to merge :100:


Changing base layout for web views

Base layout of the application stay same for web and platform views. In some cases, we are required to change the way user see things rather than showing actual view. Consider an example like running a blog.
Describe the solution you'd like
I would like, if there is setting that we can change base of the application by giving a particular resource file
Thank you.

Hi @tabuna,
this is to hide menu item. What i want, to hide side menu completely and show only body-right part in the view

Hey @anushkamds .
The goal of the project is to solve non-public things.
Therefore, there is no setting to hide the menu.
But you can do this in several ways:
Add custom css code and add a rule in which the menu will be hidden;
In config/platform.php
'resource' => [
    'stylesheets' => [ '/path/for/your/file.css' ],
    'scripts'     => [],
],

It is also possible to specify resources through the Dashboard object, for example, in a service provider:
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Orchid\Platform\Dashboard;

class AppServiceProvider extends ServiceProvider
{
    public function boot(Dashboard $dashboard)
    {
        $dashboard->registerResource('stylesheets', '/path/for/your/file.css' );
    }
}

Publish resources to the application
You can use the artisan command to publish all resources in the html/blade view.
php artisan vendor:publish

They will be in the directory view/vendor/platform and package updates will not affect these files.
You can explicitly make changes, for example by deleting or adding your own rule to show/hide this


GH-40855: [C++][ORC] Don't use std::filesystem with ORC 2.0.0 or later

Rationale for this change
If we use std::filesystem, we need -lstdc++fs with GCC 8 and -lc++fs for clang 7. We don't want to maintain CMake code for GCC 8/clang 7.
What changes are included in this PR?
Don't use std::filesystem with ORC 2.0.0 or later.
Are these changes tested?
Yes.
Are there any user-facing changes?
No.

GitHub Issue: #40855

@github-actions crossbow submit almalinux-8-amd64

My guess was wrong...
ORC 2.0.0 or later uses std::filesystem. So we need to specify -lstdc++fs or -lc++fs to use liborc.a.

My guess was wrong... ORC 2.0.0 or later uses std::filesystem. So we need to specify -lstdc++fs or -lc++fs to use liborc.a.

Is any other module doing the same thing, or ORC is the only one that requires std::filesystem?

@github-actions crossbow submit almalinux-8-amd64

Is any other module doing the same thing, or ORC is the only one that requires std::filesystem?

The latter.

Is any other module doing the same thing, or ORC is the only one that requires std::filesystem?

The latter.

I can fix that on the ORC side by removing std::filesystem dependency in 2.0.1 if you think appropriate and revert ORC 2.0.0 to 1.9.3.

I can fix that on the ORC side by removing std::filesystem dependency in 2.0.1 if you think appropriate and revert ORC 2.0.0 to 1.9.3.

It'll be helpful. Could you do it? But we don't need to revert bundled ORC to 1.9.3. Time zone DB path check in ORC 2.0.0 will be useful. And this PR will fix this std::filesystem problem.

I can fix that on the ORC side by removing std::filesystem dependency in 2.0.1 if you think appropriate and revert ORC 2.0.0 to 1.9.3.

It'll be helpful. Could you do it? But we don't need to revert bundled ORC to 1.9.3. Time zone DB path check in ORC 2.0.0 will be useful. And this PR will fix this std::filesystem problem.

OK, I will remove std::filesystem dependency but keep the TZDB check on the ORC side.

@github-actions crossbow submit -g cpp


getSiteProps function disappeared

getSiteProps function suddenly throw not found error

and its from example app for styled-component 's Home.js
import { getSiteProps } from 'react-static'
What is going on? and I do not see that on doc anywhere, seems its a breaking change somehow?

can we have more detailed document where there is breaking change? Its really a time costing task to debug

What version of react-static are you running?
getSiteProps was changed to withSiteProps in v5: https://github.com/nozzle/react-static/blob/master/CHANGELOG.md#500

@lottamus thanks for the info! that's helpful to know that its already indicated in change log.

What version of react-static are you running?
getSiteProps was changed to withSiteProps in v5: https://github.com/nozzle/react-static/blob/master/CHANGELOG.md#500

But the link you are quoting doesn't mention anything about this..
It really sucks, I'm having had a running environment on macOS with 5.9.12. Switching to Ubuntu, having the same 5.9.12 I cannot even create or compile the simplest basic app anymore...

@neilyoung React Static is at version 7 right now (and has been for the past year); it will be very hard to go back to version 5 and see what's failing.

Sure. Some projects live longer :)
Never mind.

Absolutely! Its just technically hard for me to help out even though I'd like to.

Don't worry. Thanks for your empathy :)


C++ Guidelines - Add an order of preference list for private member initialization in the implementation section

This suggests direct initialization in fields takes precedence over ctor initialization list:
https://rules.sonarsource.com/cpp/RSPEC-3230

There are three ways to initialize a non-static data member in a class:

With an in-class initializer
In the initialization list of a constructor
In the constructor body

You should use those methods in that order of preference.

And here's the ISO C++ guideline which iterates the same thing, and call out caveats to help understand when to use which approach:
https://github.com/isocpp/CppCoreGuidelines/blob/036324/CppCoreGuidelines.md#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers
Brought up in https://github.com/Azure/azure-sdk-for-cpp/pull/1172
cc @vhvb1989, @CaseyCarter, @RickWinter

FYI, @antkmsft


Implement Default for Sequence and FrameInvariants

EncoderConfig has a Default implementation to support tests, so this simply propagates its implementation to allow initializing a test Sequence or FrameInvariants in one line.
Since tests seem to use non-default resolutions, I have not changed them.

Coverage decreased (-0.02%) to 81.206% when pulling 312ad568ccdb66d9bd021dea1c1c41cae446752d on rzumer:default_seq_and_fi into cced3ac3626e281b221155c0542b65f6e4e41ed3 on xiph:master.


Legend: demonstrate how to toggle visibility when items are clicked

Suggestion: (Add functionality to show/hide a plottable with clicking the corresponding legend)
There are similar closed issues to this but there is nothing in SP 5.
Feature: click legend items to toggle visibility #1326
Legend: how to toggle visibility for each plottable #1482
Preferred way to plot numerous SignalPlot #1573
Legend: detach and toggle visibility of plottables (WinForms) #1589
In SP4 winforms there was a possibility to detach the legend from the plot and get the functionality to toggle the visibility of each plottable. It's best described in #1589.
I'm looking for a feature where you can click the legend within the plot to toggle it.
There is a way to do this in matlab showed below

@nilsakesson Yes, it was a super nice addition, I thought it was already ported in SP5 but I'm missing it there too !
@swharden  If you want some help, I might have a bit of time there.

I took a look at this tonight with the goal of implementing a solution, but called it off because it will take more time than I'm interested in investing at this time.
I'd be happy to review a pull request if someone decides to give this a go though!
I think the best implementation strategy would be as follows:
Edit somewhere around here:
https://github.com/ScottPlot/ScottPlot/blob/f84ee27e0956cf3dc17f8b8bab807faadcc25a57/src/ScottPlot5/ScottPlot5/Primitives/Legend.cs#L272-L280
...and save a list of PixelRect objects, one per rendered legend item.
Then add a method to this class like GetItemIndexUnderMouse() so users can add code to their OnClick events like:
int legendItemIndex = formsPlot1.Plot.Legend.GetItemIndexUnderMouse(pixel);

Perhaps return -1 if no item is under the mouse?
Yeah, this doesn't return the plottable under the mouse, but many legend items are not tied to plottables and manual legends exist too, so I'm thinking this is the closest we're going to get without modifying a lot of code to add a nullable plottable to the LegendItem class then editing every plottable to tie itself to all the legend items it creates

@swharden I'll try and take a shot at this. One question though, is there any obvious link between the legend item and the plottable when a legend is built this way ?
I think the list of items linked to plottables in terms of indices due to the way the legend items list is built: first plottable linked ones, then manual ones given
https://github.com/ScottPlot/ScottPlot/blob/f84ee27e0956cf3dc17f8b8bab807faadcc25a57/src/ScottPlot5/ScottPlot5/Primitives/Legend.cs#L123-L133
Just wanted to have your opinion to see if this is reliable or not.
I'll try to revive the detacheable legend as well.

is there any obvious link between the legend item and the plottable when a legend is built this way ?

I don't think so. A new IPlottable? property would have to get added to LegendItem, and every plottable modified to construct legend items with this assigned to it. It's feasible, but a lot of busy work.

I think the list of items linked to plottables in terms of indices due to the way the legend items list is built: first plottable linked ones, then manual ones given

Yeah, it's not the best option... but it's probably the simplest in a pinch and could do the trick for basic use cases


3.x

Fixes #2927

@andfoy, good job! I left only a minor comment :-)
For next time please use a branch for your PRs instead of pushing directly to 3.x.

Closing because you didnt't create a branch for this.


cpw_gap bug in rendering qiskit-metal design to GDS file.

Information

Qiskit Metal version: 0.0.4
Python version: 3.9.12
Operating system: Windows 11

What is the current behavior?
The cpw_gap does not render correctly when exported to GDS. Specifically, although the fillet of the trace is there, cpw_gap has no fillet and has square edges. Furthermore, the width of cpw_gap seems to have doubled when rendered on GDS.
Steps to reproduce the problem
Make any circuits with cpw or any elements with etched gap, then export the qiskit-metal design to a GDS file.
What is the expected behavior?
It is expected to see the fillet and correct width on etched gap of design elements like cpw.
EDIT:
I have tried using the updated version of qiskit-metal(0.1.2) to see if the above issue is resolved. The code I used to replicate the issue was taken from a "Simple CPW Meander" example given in the link: https://qiskit.org/documentation/metal/circuit-examples/B.Resonators/11-Resonator_Meander.html
code:

The code gives me the following rendered image on GUI:

When I exported this design to GDS, I used set of default options:

But after exporting to GDS, the design looks like:

The grey cpw_gap of cpw_meander still renders as sharp edged box on GDS. Updating the qiskit-metal module does not seem to resolve this issue
Suggested solutions

If that doesn't work, can you copy/paste the code you used?   To duplicate your situation. I don't want to re-type your code.

Changing the view_in_file to False in the no_cheese options worked!! Thank you!

Super.  I will close this issue.


Fix issue 600

fixes #600

Removes the inputs length from the NULLIFIER_COMMITMENT, since now it is available in the INPUTS_HASH
Removes the difference among consumed/created notes' inputs, now both encode the inputs prefixed by its length and padded to an even number of words
Add the length as the first element to the INPUTS_HASH
Update some of the documentation which was out of date

Oh - and let's update changelog.

Oh - and let's update changelog.

Added


move

[ ] moving via context menu
[ ] move via copy / paste
[ ] show copy in context menu

With https://github.com/lockbook/lockbook/pull/1057, we use the system clipboard to facilitate the cutting and pasting of Lockbook files, as well as the pasting of files and images into the filetree.


read C:\Users\ABC/.chia/mainnet: The handle is invalid

Command Prompt is started with Admin User.
Chia version 1.3.3
OS: Windows 10
Following data is copied from Command line
C:\Users\ABC\Downloads\chia-exporter-windows-amd64>chia-exporter serve
2022/04/19 13:52:01 read C:\Users\ABC/.chia/mainnet: **The handle is invalid.**

Please Note slash in path before .chia folder: C:\Users\ABC/.chia/mainnet
Running OK on one PC while problem in 2nd PC.

I have the 'same' problem with 0.0.7, 0.0.5 was working fine.
Docker / debian 10
Error '... read /home/chia/.chia/mainnet: is a directory'
I played with the CHIA_ROOT env var to get this fixed (added trailing slash etc.), but it doesn't work.

By 'config files' do you mean the config.yaml? If so on my side it is
/home/chia/.chia/mainnet/config/config.yaml
I don't have any custom config file for the exporter
echo $CHIA_ROOT
/home/chia/.chia/mainnet

Thanks. Are you using the official chia docker image, or another variant?

100% custom image

I think these are failing (with admittedly pretty bad error messages, improvements to those on the way) because your config files are missing a new section for the seeder https://github.com/Chia-Network/chia-blockchain/blob/main/chia/util/initial-config.yaml#L134
I'm working on improving the error message for this case so its obvious what the problem is, as well as making the client that is failing to start optional for now, since its just used for the ip/country data if scraping w/ a crawler

Published https://github.com/Chia-Network/chia-exporter/releases/tag/0.0.8
Let me know if that doesn't solve your issues

0.0.8 works for me, thx!


Polishing Road Network Distance Matrix node

（1）Apply smaller tolerance in graph rebuilding
（2）Revise the projection method

The shapely 2.0.1 has a different behavior on split() function from the 1.7.3 version.
The following code will throw out 'GeometryCollection' object is not iterable'
new_lines = list(split(line, pps))  # split into segments
it should be    list(split(line, pps).geoms)
This version difference takes me more than 24 hours to figure out:(


Use a common 3rd party CDN

Problem
Our current CDN deployment is not really a CDN and we dunno how long the site will stay up. And we have to manage it ourselves.
I did some investigation and it is slow.
https://techne.yaas.io/libs/techne/2.0.0-alpha-6/techne.min.css - more than 200ms to load
There are services that CDN the NPM packages automatically without any work on our side. Just push the new NPM packages.
<EMAIL_ADDRESS>- less than 30ms
<EMAIL_ADDRESS>- less than 30ms
The question: Should we link to one of these or take care of our CDN ourselves?
I think few teams/products will consume the lib via CDN, that's why if we don't have to take care of that part it will be a gain.

I'm fine with this. I prefer the latter only because the name is less JS specific but they both seem about the same.
My only reservation is whether these services collect any data but neither have any kind of terms on their sites. I understand that the service is "available" and usable regardless of our consent so it probably doesn't matter much at the end of the day.
If @saadmhybris is on board, we should create a ticket to update CDN references.

Like it! the second option for sure. one less thing to worry about.

@xak jsDelivr does have a privacy policy here: https://github.com/jsdelivr/jsdelivr#privacy-policy (I'm on the core team). We are also more focused on stability and production usage, compared to unpkg.com. Happy to answer any other questions you might have.

@MartinKolarik
Thanks for chiming it.
Any plans to make the final CDN urls a little more "friendly" like unpkg.com?
@xak @saadmhybris
I like unpkg.com as well, shorter and simple URL, can be type by hand.

@joseegm our npm URLs have exactly the same format, except there's npm at the beginning, since we also support other registries than npm. That said, if you set jsdelivr field in package.json to dist/techne.min.css, you'll be able to use this shorter link: https://cdn.jsdelivr.net/npm/techne

@joseegm This is all done, right?

yep


Search bar

As a user, I want to see a search bar on the front page so that I can use it immediately after opening the application.

Things to do:

add search-form to front page (modify the html.erb file)
route the forms post-response to a controller


Error links hash is formatted incorrectly

Describe the bug
When a user gets an error, as part of the error object Meilisearch returns a link to the docs (e.g. "link": "https://docs.meilisearch.com/errors#index_not_found"). The problem is that the hash does not take the user to the correct section of the errors page. This is because VuePress's slugification changes _ to -.
(Actually, the hash is formatted correctly, and it's VuePress that works strangely.)
To Reproduce

Open Meilisearch and cause an error
Try to follow the link to the docs
Observe that it takes you to the error page, but not to the correct section corresponding to the specific error code
Change the _ characters in the link hash to -
...?
Profit

Expected behavior
Errors page should scroll automatically to the correct hash. Should be achievable by transforming the _ character to - before concatenating the error_code to the link.
Screenshots
If applicable, add screenshots to help explain your problem.
Meilisearch version: any
Additional context
Thank you engine team 🙏🏻 🚂

Thanks @dichotommy for the report. Will be fixed in v1

Also, by making the engine following the documentation instead of the opposite, it brokes all the links for the current and older version :pensive:

I agree with you @gmourier .
Especially now that we know that basement will be working on the new documentation site soon, there's no good reason to change the engine's behavior to match Vuepress's particularities.
I haven't looked into transforming the slugification. I imagine that it is doable but not sure if it's worth devoting time to with so many other things we need accomplish before v1.
On the other hand, being taken directly to the correct error code is a big quality of life improvement, especially for new users who are seeing an error for the first time. It may be worth fixing even if just for the weeks between the launch of v1 and the release of the new docs site.
@maryamsulemani97 Would you be able to have a look at Vuepress's docs and see if there is an easy solution for this? Ideally, it would affect only the error codes page as we don't want to have to redo all of our links. Thanks, and let me know if anything is unclear 🙏🏻
Since this issue will not be fixed on the engine side, could someone transfer it to the docs repo, please?

Seen it with the engine team @dichotommy! You have nothing to do on your side, we will keep the - character in the error link field. We just have to be more careful about that in the future.
Thank you for the follow-up!


Typo

Fixed a small typo.

Fixed with https://github.com/kreait/firebase-php/commit/06049c2945c58963b9e4330130de4967ef4e6fa5, thanks @TimZ99!


Improve UI look-and-feel

The full workflow is now supported and tested:

Register project
Register and submit dataset

It now configures logging and so you can see progress in the notebook. However, it gets cluttered and that needs work in a future PR.

The GUI doesn't appear to allow interaction to prompt. When there's a lock file in the registry, it would just err out. Can we fix that?

The GUI doesn't appear to allow interaction to prompt. When there's a lock file in the registry, it would just err out. Can we fix that?

When you click a button I'm pretty sure IPython runs the code in a background thread and so input() does not work. We would somehow have to rewire that function or decide how to handle locks globally in the UI. For example, we could catch lock exceptions specifically. Or we could add a widget option that allows overriding locks.


Nuget dependency on .Net framework 4.7

Hello,
The target frameworks page of the nuget documentation does not mention reference to the TFM to use for a package that references .net 4.7 or 4.7.1 framework. Is that supported? Can I just use "net47"?
Thanks,
Brett

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

ID: 0a0f5267-208d-8af2-ef18-dae7407eefad
Version Independent ID: 19b00f91-5d31-0d4d-388b-30b1bd4e7c0f
Content: Target Frameworks Reference for NuGet
Content Source: docs/reference/target-frameworks.md
Product: nuget
GitHub Login: @karann-msft
Microsoft Alias: karann

https://docs.microsoft.com/en-us/dotnet/standard/frameworks lists that, but this page doesn't.

@Brett57Heinz @tg2k thanks for the feedback. This has been fixed.


iottymux: Store logs for kubelet in the appropriate location

This is the change made for rktlet. Kubelet expect the CRI-formatted
logs to be in specific directory and it provides that information with
CRI.
CRI-compatible logs are generated by iottymux. That specific directory
which kubelet is looking at, exists in the host filesystem. In order to
make it available for iottymux, we need to mount it into the stage1
container. That's why this commit introduces the new annotation called
coreos.com/rkt/experiment/kubernetes-log-dir. This annotation is read
by stage1 init and the directory by it is bind mounted to the stage1
nspawn container (the mountpoint inside container is /rkt/kubernetes/log).
Kubelet provides the name of a logfile of a container via CRI. Since the
container concept in Kubernetes refers to an app in rkt, we use the
annotation named coreos.com/rkt/experiment/kubernetes-log-path to pass it
from rktlet. Then stage1 init redirects that value in KUBERNETES_LOG_PATH
environment variable for iottymux.
Then finally, iottymux saves the logs to /rkt/kubernetes/log/$KUBERNETES_LOG_PATH
file, i.e. /rkt/kubernetes/log/0a8f619b-df34-4c57-86e5-84a551452db1/etcd_0.log.
Fixes #3795

Way to test that change:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app sandbox --kubelet-log-dir=/home/vador/playground/rkt --stage1-path=/home/vador/go/src/github.com/rkt/rkt/build-rkt/target/bin/stage1-coreos.aci --insecure-options=image --user-annotation=coreos.com/rkt/experiment/logmode=k8s-plain
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt list
UUID		APP	IMAGE NAME	STATE	CREATED		STARTED		NETWORKS
5a878340	-	-		running	27 seconds ago	27 seconds ago	default:ip4=<IP_ADDRESS>
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 5a878340 coreos.com/etcd:v2.0.0 --name=etcd --user-annotation=coreos.com/rkt/experiment/kubelet-log-path=etcd_0.log --stdin stream --stdout stream --stderr stream
$ cat /home/vador/playground/rkt/etcd_0.log
2017-09-21T19:35:55.730366351+02:00 stderr 2017/09/21 17:35:55 no data-dir provided, using default data-dir ./default.etcd
2017-09-21T19:35:55.730747783+02:00 stderr 2017/09/21 17:35:55 etcd: listening for peers on http://localhost:2380
2017-09-21T19:35:55.730767547+02:00 stderr 2017/09/21 17:35:55 etcd: listening for peers on http://localhost:7001
2017-09-21T19:35:55.730839161+02:00 stderr 2017/09/21 17:35:55 etcd: listening for client requests on http://localhost:2379
2017-09-21T19:35:55.730842466+02:00 stderr 2017/09/21 17:35:55 etcd: listening for client requests on http://localhost:4001
2017-09-21T19:35:55.730924571+02:00 stderr 2017/09/21 17:35:55 etcdserver: name = default
2017-09-21T19:35:55.730929816+02:00 stderr 2017/09/21 17:35:55 etcdserver: data dir = default.etcd
2017-09-21T19:35:55.73093377+02:00 stderr 2017/09/21 17:35:55 etcdserver: heartbeat = 100ms
2017-09-21T19:35:55.730936372+02:00 stderr 2017/09/21 17:35:55 etcdserver: election = 1000ms
2017-09-21T19:35:55.73093996+02:00 stderr 2017/09/21 17:35:55 etcdserver: snapshot count = 10000
2017-09-21T19:35:55.730942201+02:00 stderr 2017/09/21 17:35:55 etcdserver: advertise client URLs = http://localhost:2379,http://localhost:4001
2017-09-21T19:35:55.730949459+02:00 stderr 2017/09/21 17:35:55 etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
2017-09-21T19:35:55.730954968+02:00 stderr 2017/09/21 17:35:55 etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
2017-09-21T19:35:55.736569397+02:00 stderr 2017/09/21 17:35:55 etcdserver: start member ce2a822cea30bfca in cluster 7e27652122e8b2ae
2017-09-21T19:35:55.736597943+02:00 stderr 2017/09/21 17:35:55 raft: ce2a822cea30bfca became follower at term 0
2017-09-21T19:35:55.736610637+02:00 stderr 2017/09/21 17:35:55 raft: newRaft ce2a822cea30bfca [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-09-21T19:35:55.736621077+02:00 stderr 2017/09/21 17:35:55 raft: ce2a822cea30bfca became follower at term 1
2017-09-21T19:35:55.741344981+02:00 stderr 2017/09/21 17:35:55 etcdserver: added local member ce2a822cea30bfca [http://localhost:2380 http://localhost:7001] to cluster 7e27652122e8b2ae
2017-09-21T19:35:57.037299019+02:00 stderr 2017/09/21 17:35:57 raft: ce2a822cea30bfca is starting a new election at term 1
2017-09-21T19:35:57.03762314+02:00 stderr 2017/09/21 17:35:57 raft: ce2a822cea30bfca became candidate at term 2
2017-09-21T19:35:57.037784912+02:00 stderr 2017/09/21 17:35:57 raft: ce2a822cea30bfca received vote from ce2a822cea30bfca at term 2
2017-09-21T19:35:57.037975485+02:00 stderr 2017/09/21 17:35:57 raft: ce2a822cea30bfca became leader at term 2
2017-09-21T19:35:57.038018404+02:00 stderr 2017/09/21 17:35:57 raft.node: ce2a822cea30bfca elected leader ce2a822cea30bfca at term 2
2017-09-21T19:35:57.04330613+02:00 stderr 2017/09/21 17:35:57 etcdserver: published {Name:default ClientURLs:[http://localhost:2379 http://localhost:4001]} to cluster 7e27652122e8b2ae

@alban @iaguis @lucab PTAL

This works:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app sandbox --kubernetes-log-dir=/home/iaguis/temp/rkt --user-annotation=coreos.com/rkt/experiment/logmode=k8s-plain
...
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 7d9a73d9 coreos.com/etcd:v2.0.10 --name=etcd --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_0.log --stdin stream --stdout stream --stderr stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 7d9a73d9 --app=etcd

Now if I do:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 7d9a73d9 coreos.com/etcd:v2.0.0 --name=etcd20 --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_0.log --stdin stream --stdout stream --stderr stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 7d9a73d9 --app=etcd20

I get this on the sandbox:
[16720.759217] etcd20[30]: panic: send on closed channel
[16720.760165] etcd20[30]: goroutine 11 [running]:
[16720.761325] etcd20[30]: main.bufferLine(0xa087c0, 0xc42000e0b8, 0xc42006a9c0, 0xc42006a720)
[16720.761985] etcd20[30]: 	/home/iaguis/work/go/src/github.com/rkt/rkt/build-rkt/gopath/src/github.com/rkt/rkt/stage1/iottymux/iottymux.go:491 +0x10d
[16720.762308] etcd20[30]: created by main.actionIOMux
[16720.762552] etcd20[30]: 	/home/iaguis/work/go/src/github.com/rkt/rkt/build-rkt/gopath/src/github.com/rkt/rkt/stage1/iottymux/iottymux.go:447 +0x1014
[16720.767100] etcd20[30]: panic: send on closed channel
[16720.767792] etcd20[30]: goroutine 8 [running]:
[16720.767992] etcd20[30]: main.bufferLine(0xa087c0, 0xc42000e0b0, 0xc42006a8a0, 0xc42006a720)
[16720.768152] etcd20[30]: 	/home/iaguis/work/go/src/github.com/rkt/rkt/build-rkt/gopath/src/github.com/rkt/rkt/stage1/iottymux/iottymux.go:491 +0x10d
[16720.768440] etcd20[30]: created by main.actionIOMux
[16720.768607] etcd20[30]: 	/home/iaguis/work/go/src/github.com/rkt/rkt/build-rkt/gopath/src/github.com/rkt/rkt/stage1/iottymux/iottymux.go:434 +0x11c9

Maybe because the log file has the same name? If I remove the app and add it again with a different log file:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app rm 7d9a73d9 --app=etcd20
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 7d9a73d9 coreos.com/etcd:v2.0.0 --name=etcd20 --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_1.log --stdin stream --stdout stream --stderr stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 7d9a73d9 --app=etcd20

I see this now:
[16828.630846] etcd20[54]: iottymux: runtime failure: unable to open stdin listener: listen unix /rkt/iottymux/etcd20/sock-stdin: bind: address already in use

Doing the same but with different log files seems to work :+1:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app sandbox --kubernetes-log-dir=/home/iaguis/temp/rkt --user-annotation=coreos.com/rkt/experiment/logmode=k8s-plain
...
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 4bb103be coreos.com/etcd:v2.0.10 --name=etcd --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_0.log --stdin stream --stdout stream --stderr stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 4bb103be --app=etcd
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 4bb103be coreos.com/etcd:v2.0.0 --name=etcd20 --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_1.log --stdin stream --stdout stream --stderr stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 4bb103be --app=etcd20
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add 4bb103be kinvolk.io/aci/busybox --name=busybox --user-annotation=coreos.com/rkt/experiment/kubernetes-log-path=busybox_0.log --stdin stream --stdout stream --stderr stream -- -c 'while true; do date; sleep 1; done'
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start 4bb103be --app=busybox

$ ls ~/temp/rkt
busybox_0.log  etcd_0.log     etcd_1.log
$ cat ~/temp/rkt/busybox_0.log
2017-09-22T15:27:47.281125037+02:00 stdout Fri Sep 22 13:27:47 UTC 2017
2017-09-22T15:27:48.283188723+02:00 stdout Fri Sep 22 13:27:48 UTC 2017
2017-09-22T15:27:49.285577388+02:00 stdout Fri Sep 22 13:27:49 UTC 2017
2017-09-22T15:27:50.287567238+02:00 stdout Fri Sep 22 13:27:50 UTC 2017
2017-09-22T15:27:51.290272537+02:00 stdout Fri Sep 22 13:27:51 UTC 2017
2017-09-22T15:27:52.292623861+02:00 stdout Fri Sep 22 13:27:52 UTC 2017
2017-09-22T15:27:53.294853812+02:00 stdout Fri Sep 22 13:27:53 UTC 2017

@iaguis This is expected, you cannot log to the same file from two apps. And kubelet generates the another filename for each container, so that's totally fine. Or you mean that we should check whether the file isn't used already before doing anything? That could be cool in terms of UX.

Or you mean that we should check whether the file isn't used already before doing anything? That could be cool in terms of UX.

If it's not too difficult to implement I rather see errors than panics :)

Yeah, can do that. I will just check whether the file exists in the dir we mount from host.

#3814 adds the --annotation flag to be able to pass annotations to stage1. This PR needs to be updated when that's merged.

Since we changed the implementation a little bit and now everything relies on annotations (instead of user annotations or new CLI arguments), the current way of testing that branch is:
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app sandbox --annotation=coreos.com/rkt/experiment/logmode=k8s-plain --annotation=coreos.com/rkt/experiment/kubernetes-log-dir=/home/vador/playground/rkt
$ sudo rkt list
UUID		APP	IMAGE NAME	STATE	CREATED		STARTED		NETWORKS
fc392781	-	-		running	3 seconds ago	3 seconds ago	default:ip4=<IP_ADDRESS>
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app add fc392781 coreos.com/etcd:v2.0.0 --name=etcd --annotation=coreos.com/rkt/experiment/kubernetes-log-path=etcd_0.log --stdin=stream --stdout=stream --stderr=stream
$ sudo RKT_EXPERIMENT_APP=true RKT_EXPERIMENT_ATTACH=true rkt app start fc392781 --app=etcd
$ cat /home/vador/playground/rkt/etcd_0.log
2017-10-05T15:29:44.556024467+02:00 stderr 2017/10/05 13:29:44 no data-dir provided, using default data-dir ./default.etcd
2017-10-05T15:29:44.558498474+02:00 stderr 2017/10/05 13:29:44 etcd: listening for peers on http://localhost:2380
2017-10-05T15:29:44.558641344+02:00 stderr 2017/10/05 13:29:44 etcd: listening for peers on http://localhost:7001
2017-10-05T15:29:44.55866307+02:00 stderr 2017/10/05 13:29:44 etcd: listening for client requests on http://localhost:2379
2017-10-05T15:29:44.55883772+02:00 stderr 2017/10/05 13:29:44 etcd: listening for client requests on http://localhost:4001
2017-10-05T15:29:44.558884614+02:00 stderr 2017/10/05 13:29:44 etcdserver: name = default
2017-10-05T15:29:44.558889978+02:00 stderr 2017/10/05 13:29:44 etcdserver: data dir = default.etcd
2017-10-05T15:29:44.558902749+02:00 stderr 2017/10/05 13:29:44 etcdserver: heartbeat = 100ms
2017-10-05T15:29:44.558905701+02:00 stderr 2017/10/05 13:29:44 etcdserver: election = 1000ms
2017-10-05T15:29:44.558914016+02:00 stderr 2017/10/05 13:29:44 etcdserver: snapshot count = 10000
2017-10-05T15:29:44.558917099+02:00 stderr 2017/10/05 13:29:44 etcdserver: advertise client URLs = http://localhost:2379,http://localhost:4001
2017-10-05T15:29:44.558925815+02:00 stderr 2017/10/05 13:29:44 etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
2017-10-05T15:29:44.558933524+02:00 stderr 2017/10/05 13:29:44 etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
2017-10-05T15:29:44.564150576+02:00 stderr 2017/10/05 13:29:44 etcdserver: start member ce2a822cea30bfca in cluster 7e27652122e8b2ae
2017-10-05T15:29:44.564364362+02:00 stderr 2017/10/05 13:29:44 raft: ce2a822cea30bfca became follower at term 0
2017-10-05T15:29:44.564378005+02:00 stderr 2017/10/05 13:29:44 raft: newRaft ce2a822cea30bfca [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-10-05T15:29:44.564496681+02:00 stderr 2017/10/05 13:29:44 raft: ce2a822cea30bfca became follower at term 1
2017-10-05T15:29:44.57064913+02:00 stderr 2017/10/05 13:29:44 etcdserver: added local member ce2a822cea30bfca [http://localhost:2380 http://localhost:7001] to cluster 7e27652122e8b2ae
2017-10-05T15:29:45.864876947+02:00 stderr 2017/10/05 13:29:45 raft: ce2a822cea30bfca is starting a new election at term 1
2017-10-05T15:29:45.864963867+02:00 stderr 2017/10/05 13:29:45 raft: ce2a822cea30bfca became candidate at term 2
2017-10-05T15:29:45.865349694+02:00 stderr 2017/10/05 13:29:45 raft: ce2a822cea30bfca received vote from ce2a822cea30bfca at term 2
2017-10-05T15:29:45.865415126+02:00 stderr 2017/10/05 13:29:45 raft: ce2a822cea30bfca became leader at term 2
2017-10-05T15:29:45.865547038+02:00 stderr 2017/10/05 13:29:45 raft.node: ce2a822cea30bfca elected leader ce2a822cea30bfca at term 2
2017-10-05T15:29:45.870924952+02:00 stderr 2017/10/05 13:29:45 etcdserver: published {Name:default ClientURLs:[http://localhost:2379 http://localhost:4001]} to cluster 7e27652122e8b2ae

@lucab @iaguis PTAL

@iaguis OK, everything else that confusing log path/directory names is done

@iaguis done

Thanks!

Tests are failing, probably because in the test ioutil.ReadFile() succeeds but returns nothing. You could continue in the loop if the content is empty.

@iaguis checking whether the log file contains the actual output is important, we cannot just accept empty logs.
I assume that rkt is just working slightly slower in semaphoreci and we need to add some recheks and timeouts.

Yes, I mean doing that in the test so we give some more time for the logs
to appear
On Oct 6, 2017 15:08, "Michal Rostecki"<EMAIL_ADDRESS>wrote:

@iaguis https://github.com/iaguis checking whether the log file
contains the actual output is important, we cannot just accept empty logs.
I assume that rkt is just working slightly slower in semaphoreci and we
need to add some recheks and timeouts.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rkt/rkt/pull/3798#issuecomment-334749700, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAe92gT8Cjpw_sY_xzyxwFOJOAXLIzJBks5spiZWgaJpZM4PbESX
.


Proposal: Remove strong dependency on deep storage for RT tables

Currently the Pinot real time tables have a strong dependency on some type of deep storage system (either POSIX compliant FS, HDFS or other types) when ingesting data using Low Level Consumers. In the current design, the Pinot controller makes a synchronous copy of the segment being committed to the deep storage (which can then be used for synchronizing data between replicas or for backing up old data).
This is a problem since any availability issues on the deep storage system will directly affect Pinot's real-time ingestion (eg: HDFS going down for a few hours). It would be nice to remove this strong dependency and make Pinot self sufficient for real-time ingestion.

@icefury71 you had mentioned that you have a preliminary design on this feature. Can we start a discussion?

Here is a step one proposal to remove the storage dependency in the checksum path
https://cwiki.apache.org/confluence/display/PINOT/Segment+Completion+Protocol+enhancements+for+Deep+Store+support
@chenboat  is working on coding this up

@mcvsubbu Thank you for writing this up. However, I think this belongs in the other ticket: https://github.com/apache/incubator-pinot/issues/3420
I feel for this particular ticket, we need to rethink the way replication works. Ting and I are refining our initial proposal and will be putting up something to review soon. Gist of our proposal:

Avoid a complex segment leader election phase.
Add ability to register multiple segment locations within the segment store.
Use any one of these locations to download segments as and when needed.

More coming soon.

@icefury71 thanks for clarification. It will be great if you can write up a design doc and post it in our cwiki, so we have something to throw darts on.
@chenboat please add the design doc to appropriate Issue and submit a PR so that we can review it, thanks

@mcvsubbu The cwiki is linkedin to Jennifer's original proposal

@mcvsubbu  The cwiki has user restriction on who can add/edit page on the space. Right now neither Chinmay nor I can add a page to that cwiki space. Can you open the edit access right to us?

@chenboat please create a user account for yourself and let me know the ID. I can add in that case. The confluence space in apache does not recommend opening up the pages to anonymous users

@chenboat, @icefury71 it is also easier to communicate on apache pinot slack channel for urgent issues. Please create an account for yourselves there as well. https://apache-pinot.slack.com

Hey Subbu, looks like you might have to send us an invitation for
apache-pinot slack :
Contact the workspace administrator for an invitation
On Mon, Feb 11, 2019 at 2:28 PM Subbu Subramaniam<EMAIL_ADDRESS>wrote:

@chenboat https://github.com/chenboat, @icefury71
https://github.com/icefury71 it is also easier to communicate on apache
pinot slack channel for urgent issues. Please create an account for
yourselves there as well. https://apache-pinot.slack.com
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/incubator-pinot/issues/3592#issuecomment-462520457,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAsb1_CrjV2RmTe3fkdcVoN0hECS9DAjks5vMe50gaJpZM4ZJV1o
.

--
Thanks and regards
Chinmay Soman

@icefury71  Can you try the following?
https://join.slack.com/t/apache-pinot/shared_invite/enQtNDY4NDczOTYyNjk1LTExODVjY2QxYzBkMzJjNTk0ZGQ3NThiYTU2YzdlNjE0MWI5ZjUwYjI2ZTgxNjNiYWJiNmEzYjkxMTIzMzUxNTQ


Native spell checker needs reboot before loading new learned words

I am having issues with some apps reading from my LocalDictionary in High Sierra. Specifically, iA Writer and Atom don't seem to accept 'journalled' as a correct spelling, although it is in my local dictionary.
I'm curious if others are having this problem. I'm logging this here because I'm wondering if the name of the file has changed since the upgrade, and I think that you're the most likely to know.

I've spent some time tinkering on this. I think the issue is not that it doesn't read from the file, but rather that adding to the file doesn't automatically refresh the system's spellchecker anymore immediately. A full restart did the trick, for me (putting the computer to sleep didn't).
So, what would be great is if we could find a way to automatically refresh the spell checker after adding the word.

The offending culprit is /System/Library/Services/AppleSpell.service/Contents/MacOS/AppleSpell. @wooorm Do you know an easy way to restart this service using a Node package? If so, we should add a subroutine to restart this service after adding words in. That should solve the problem I'm having.

Ugh. Restarting the process works:
launchctl stop com.apple.applespell
launchctl start com.apple.applespell

But then Atom or iA Writer needs to be reopened for it to take effect, too. What a hassle.

Ahh thanks for checking this out Richard!
The script restarts applespell on L81:
https://github.com/wooorm/osx-learn/blob/53e005f19d56591400b5a2120886efd2797ff550/osx-learn.sh#L81
So I guess we can add the lines you posted there. I’m apparently still on the old macOS, so I can check it if that’ll keep working with your additions!
For Atom / iA Writer: did that use to work? 🤔

So, that line should restart AppleSpell, but it doesn't work on it's own. I just tested by using learn, and then restarting Atom. The offending word was still misspelled. However, when I used launchctl as above, and then restarted Atom, the word was now registered as spelled correctly.
This means a couple of things: First, that killall -e AppleSpell is unnecessary. Secondly, that OSX High Sierra may be doing things differently. And thirdly, that we need to find some way to refresh our app's spellchecker files, too. I suspect that they're using a process and not locally loading the spell checker - I may be wrong, though. I have a feeling that there should be a programmatic way to force refresh without rebooting each program that uses LocalDictionary.

Ah, I can confirm that killall -e AppleSpell &> /dev/null did not fix a lot.
Hmm, I’m noticing also the putting those lines in the bash script doesn’t make it work for me and textedit...
What I’m doing:

write fooo, see it get a red underline
do learn fooo in terminal, and in textedit add a blank line and then fooo, also gets a red underline
run launchctl stop com.apple.applespell; launchctl start com.apple.applespell in terminal, and in textedit add a blank line and then fooo, does not get a red underline

...

Update: with the lines added above, you do not need to restart Atom. You simply need to refresh the spell checker for the current file. You can do this by closing and reopening the particular document you're working on - or, by writing another word. Simply saving the file is not enough to actually refresh the spell checker, which may have been an error I've been making in my tests above.
I think you say the same thing above?
Shall we simply add that line to the script? I think that should solve this issue for me.

Or perhaps we should include both? This may just be an issue for fixing Spellchecker on High Sierra.

Alright, so I tested with your two lines instead of killall, plus the uniq one, and now it seems to work, in textedit.

write fooo, see it get a red underline
do learn fooo in terminal, and in textedit add a blank line and then fooo, no red underline

So: new changes work in future text. But red underlines don’t disappear. They are still red, but not seen my apple spell anymore (CMD+: or CMD+; don’t work anymore).
However, CMD+A, CMD+X and CMD+:V does remove underlines!

wow:

Whoa, what are those commands?

it’s nested kbd’s!


Easy to use?

@gulliverbms, Hi!  Maybe django_grapesjs is too easy to use.  I am trying right now.  Let me know if there is something I can help.

fixed in 00d7be4979e2e42e26c950a918e8fe03a67e2065

@abnerh69, i can not give an unambiguous answer. But if you check and identify errors, and also report them - I'll be happy. Thank you


(fix) NPM install crashes with peer dependency related error

Asana task:
https://github.com/bitfinexcom/bfx-hf-ui-core/issues/554
Description:
v0.45.0 version of react-monaco-editor (which is the latest version that works with webpack 4) is set to react ^17 as a peer dependency.
Later versions of this package support react ^18, but they require webpack 5.
Until we update to webpack 5 or start using regular react-scripts, @blaumaus/react-monaco-editor can be used as an alternative (it provides same version as the original package, but with the support of react ^18 as a peer dependency).

@Blaumaus could you pls check above build failure ?


[T3A2][T17-A3]Chia Zhe Min

Ready for review

Well done, for the tutorial activity as well as the indentations!


fix: delete tekton pipelineruns when pas are gc'ed

Signed-off-by: ankitm123<EMAIL_ADDRESS>

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign jstrachan
You can assign the PR to them by writing /assign @jstrachan in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

There are cases where pipeline activities are being recreated because pipeline runs are not cleared. I dont think just deleting the lighthouse jobs solves the issues, there may be cases where the lighthouse jobs may have been removed, and only the pipeline runs and pipeline activities exist. This causes some spam when using the jx-slack plugin.

/cc @rawlingsj

/hold

/hold cancel

/test pr

/test pr

@rawlingsj any ideas why this is failing? Cant reproduce it locally ...

/test pr

/retest

/approve


[BEAM-2433] unify SQL/Sql words in class name

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify.
[ ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

R: @lukecwik  @xumingming

Changes Unknown when pulling 3aec8a9bc460084c23a27dcc4495163e7e749eca on XuMingmin:BEAM-2433 into ** on apache:DSL_SQL**.

Changes Unknown when pulling 3aec8a9bc460084c23a27dcc4495163e7e749eca on XuMingmin:BEAM-2433 into ** on apache:DSL_SQL**.

retest this please

Changes Unknown when pulling 3aec8a9bc460084c23a27dcc4495163e7e749eca on XuMingmin:BEAM-2433 into ** on apache:DSL_SQL**.

Changes Unknown when pulling bfc7827548859804f62daf071f5b802d7f05a1c6 on XuMingmin:BEAM-2433 into ** on apache:DSL_SQL**.

Only method that I could find that still used "SQL" instead of "Sql":
org.apache.beam.dsls.sql.schema.BeamTableUtils.beamSQLRow2CsvLine

I also noticed that "CSV" was used instead of "Csv" but this could be fixed at another time.

Changes Unknown when pulling 623800d2e7d6a636ebbe240c3f47b3e7394c67f6 on XuMingmin:BEAM-2433 into ** on apache:DSL_SQL**.

LGTM
Merging


Error when navigating to URL

Hi,
Sometimes when I run the navigate_to(url) command I get the following error:
** (MatchError) no match of right hand side value: {:error, %HTTPoison.Error{id: nil, reason: :timeout}}
    (hound) lib/hound/request_utils.ex:40: Hound.RequestUtils.send_req/4
    (arbiter) lib/runner.ex:55: anonymous fn/3 in Runner.run/1
    (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
    (arbiter) lib/runner.ex:54: Runner.run/1
    (arbiter) lib/runner.ex:26: Runner.handle_cast/2
    (stdlib) gen_server.erl:615: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:681: :gen_server.handle_msg/5
    (stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3

@nathanjohnson320 Can you paste the url if possible? Or can you check if the webserver that serves the request has a low speed or timeout?

I too am having this issue intermittently. I can't provide an URL for the page in question as it requires login, but it is a forum page with quite a lot of YouTube iframe embeds, so I guess it is timing out waiting for the iframes to load - this is what it looks like from watching the browser (the browser is "Waiting for www.youtube.com" when the timeout occurs).
I've added config :hound, http: [recv_timeout: :infinity] to my config.exs but it doesn't fix the issue. I'm a total newcomer to Elixir so any help appreciated :) Seems like a great library otherwise!

@tomduncalf Looks like this is something to do with HTTPoison (a dependency). I'll talk to the author about it.
@nathanjohnson320 Sorry forgot about this. Just looking into it.

@nathanjohnson320 @tomduncalf Can you guys try with the latest version of HTTPoison (0.7.4) and hound (0.7.4)?

Sure thing, I'll give it a shot after work :)

Looks like HTTPoison or hackney might be having a problem. #48 also looks related. I've filed an issue on the HTTPoison repo.

Thanks @HashNuke (I assume you meant to reference #49?)!

@tomduncalf ah yes. It is #49. I just incremented the number and didnt realize PRs are counted too. Lazy me :)

There's a new version of hackney released yesterday. If HTTPoison is updated to use that I'm guessing this bug would go away (the changelog says body parsing is fixed).

Header handling was fixed in hackney. In v0.7.6, I've updated the dependency to the latest httpoison. The new release should fix this issue.
If you still have problems please do re-open this issue and let me know.


Added methods for adding to cart and checkout. Also fixed error in one method that may be causing test failure.

Issue still not fixed. Tests are still not passing.


Routequery succeeds, payinvoice fails...timeout.

Background
With 2 nodes running LND v0.4.1-beta on a raspberry pi (Courtesy to Stadicus) and both with active channels to the network it fails to pay an invoice or route a payment via public internet.
When adding a direct channel between the nodes, the payment succeeds.
Your environment
Node A:
$ lncli getinfo
{
"identity_pubkey": "035716176a55c5093c22d4199c811754313539a7149932cb07eb88a2419cb74ef2",
"alias": "Amazing_Droopy_2 [LND]",
"num_pending_channels": 0,
"num_active_channels": 1,
"num_peers": 6,
"block_height": 517515,
"block_hash": "000000000000000000008952fc103538d7d4050f0245f2e64ae0260914fa7e2d",
"synced_to_chain": true,
"testnet": false,
"chains": [
"bitcoin"
],
"uris": [
"035716176a55c5093c22d4199c811754313539a7149932cb07eb88a2419cb74ef2@<IP_ADDRESS>:9735"
],
"best_header_timestamp": "1523352867"
}
Node B:
$ lncli getinfo
{
"identity_pubkey": "03c992c210b08ebb7ccbb2ba26e09bb4a8d536daa6f8702e8b14627a338c35446a",
"alias": "Amazing_Droopy [LND]",
"num_pending_channels": 2,
"num_active_channels": 4,
"num_peers": 13,
"block_height": 517515,
"block_hash": "000000000000000000008952fc103538d7d4050f0245f2e64ae0260914fa7e2d",
"synced_to_chain": true,
"testnet": false,
"chains": [
"bitcoin"
],
"uris": [
"03c992c210b08ebb7ccbb2ba26e09bb4a8d536daa6f8702e8b14627a338c35446a@<IP_ADDRESS>:9735"
],
"best_header_timestamp": "1523352867"
}
Steps to reproduce
Check route from Node A to Node B:
$ lncli queryroutes "03c992c210b08ebb7ccbb2ba26e09bb4a8d536daa6f8702e8b14627a338c35446a" --amt 250
-> Multiple routes listed, all showing the channel IDs in open channel list of receiving node.
"total_time_lock": 517969,
"total_fees": "2",
"total_amt": "252",
"hops": [
{
"chan_id": "568925799164674049",
"chan_capacity": "22431",
"amt_to_forward": "251",
"fee": "1",
"expiry": 517825
},
{
"chan_id": "567168779613241345",
"chan_capacity": "250000",
"amt_to_forward": "251",
"fee": "0",
"expiry": 517681
},
{
"chan_id": "566334250287366144",
"chan_capacity": "175000",
"amt_to_forward": "251",
"fee": "0",
"expiry": 517667
},
{
"chan_id": "567669057419476993",
"chan_capacity": "55000",
"amt_to_forward": "250",
"fee": "1",
"expiry": 517523
},
{
"chan_id": "568075876720443393",
"chan_capacity": "40214",
"amt_to_forward": "250",
"fee": "0",
"expiry": 517523
}
Requesting the payment from node B:
$ lncli addinvoice --memo "Pay me 250 via public nodes" --amt 250
{
"r_hash": "abf85e602037a71803a8b320b28bf2c6cfdad91db7a758b64cb801d96eadfe4b",
"pay_req": "lnbc2500n1pdvepxupp540u9ucpqx7n3sqagkvst9zljcm8a4kgak7n43djvhqqajm4dle9sdpv2pshjgrdv5srydfsypmxjcfqwp6kymrfvvsxummyv4escqzys43rs3h7ummyrx9yrgr5h4sel9xew0pttta5yjnjn9lxc8sf3fe2rvmtzv9xveu096gw88vn6z9cqx8f30gqpnd5tjgq9usanq69uvhgqnc2f4e"
}
Issuing the payment on node A:
$ lncli payinvoice "lnbc2500n1pdvepxupp540u9ucpqx7n3sqagkvst9zljcm8a4kgak7n43djvhqqajm4dle9sdpv2pshjgrdv5srydfsypmxjcfqwp6kymrfvvsxummyv4escqzys43rs3h7ummyrx9yrgr5h4sel9xew0pttta5yjnjn9lxc8sf3fe2rvmtzv9xveu096gw88vn6z9cqx8f30gqpnd5tjgq9usanq69uvhgqnc2f4e"
{
"payment_error": "payment attempt not completed before timeout of 1m0s",
"payment_preimage": "",
"payment_route": null

If you run master, the timeout issue should be resolved.
Also it's important to note that queryroutes simply looks at the graph for reachability. For example it may show a route, but if all the nodes are offline, or all their channels are worst-case unbalanced, then you won't actually be able to establish a payment.

It's also important to understand that if you don't have any available inbound capacity, then you won't actually be able to receive payments.

is their an easy way to query inbound capacity?

lncli channelbalance.


NextJS Configuration

Overview
Issue Type

[ ] Bug
[x] Feature
[ ] Tech Debt

Description

Completed NextJS app setup and boilerplate.
Updated global ESLint and Prettier configuration to cover NextJS app.
Added separate Typescript configuration for NextJS app.
Added template for Github PR.

Steps to Reproduce Bug / Validate Feature / Confirm Tech Debt Fix

Run npm install in root directory to install dependencies for global ESLint and Prettier.
Go to client directory, and run npm install to install dependencies for NextJS app.
In client directory, run npm run dev to start the dev server.
Go to localhost:3000 to view the app.

Closed without merge, since this PR includes experimental OTEL metrics features that are not ready to merge to dev.


Upgrade GH Actions

Upgraded relevant GH Actions in respective files.
Set node version properly.

Can this be merged into #287 @D-DePablos ?

Can this be merged into #287 @D-DePablos ?

ok!

Closed and merged with #287


Players see 2 Close windows on Inline Webviewer windows

I also noticed the window name doesn't seem to use the "name" argument from the macro.

what other modules/system are you running? I'm not able to replicate

I'm running this. The above screenshot in my most was me running only Inline Webviewer and dependencies. It only seemed to affect player accounts, and it only happened on windows opened from the Webview sidebar...


Nextjs + React + typescript -> Error on Save in editor

Hello :)
I am trying to use NextJS + Typescript + React.
When I press Save or Publish on the story in editor:

On first save this error just flashes and the content is reloaded
on next save it stays open:

Am I doing something wrong? It is a simple setup from tutorial and the only difference is that I have created a NextJS Typescript project.

Hey @marekrozmus can you share the code of your project, and show how your content is structured in Storyblok?

Hi @fgiuliani :)
Nothing fancy here: https://github.com/marekrozmus/storyblok-ts
And the setup in storyblok is simple page with components from tutorials. Most of the code (if not all ;)) is also from tutorials.

@marekrozmus were you able to identify which line is giving you the error?
Is this happening to you every time you save or publish any page? Because you have an index.tsx and a [...slug].tsx pages. Or is it happening sometimes?
Did you try re-installing your NPM packages?
I'm not seeing anything wrong 🤔

One more thing.
If you see in this line:
https://github.com/marekrozmus/storyblok-ts/blob/main/pages/[...slug].tsx#L49
The links the project is checking are the ones that have been already published, at least once. Are your stories in Storyblok published?

Yes, all is published - I got error for both index page and others. I have even tried to remove the [...slug].tsx but still same issue.
I have checked same code with JS and same space and everything was OK.
I have reinstalled dependencies, updated to latest and still same issue :(

It looks like for the Nextjs + JS also doesn't work - same error.
Whenever I use story = useStoryblokState(story);
Not sure what the problem could be - tested in Brave, Chrome and Edge (although they all have the same base).

It looks like the story comes in the event only for input action. For the change and published it is undefined.

Hey @marekrozmus let me contact the Storyblok product team to see if someone else experienced this same issue, or if they know what the reason could be

I think this error may be related to this commit https://github.com/storyblok/storyblok-js/commit/5df12d46b7e47242b167c338d0573bb241ba5ed9#diff-d5a4b3a0309f2337144861084c1014523cced561eb722cb9684c63f5e41e0567L43

Same error here, seems to be happening from version 1.1.5 and up.

Hey @marekrozmus and all! Great work on spotting this issue. Indeed it was related to the fact that input event has a different data structure to the change and published.
It's been fixed on this PR so as long as it's merged and a new version of this lib released, should be fixed ;)
Thanks for making our SDKs better!

@alexjoverm Thanks :) So in that case please close my PR https://github.com/storyblok/storyblok-js/pull/136
When the release is usually made? Just wondering if I should wait or make my own forks and packages until the release comes out :)

@marekrozmus the new version was just released! Could you try if it's working for you now?

@fgiuliani Thank you :) It works now - no more errors 🚀

That's good to know @marekrozmus 🙌
Closing the issue


On main window four sub windows are available. How to find control identifiers of each window?

Expected Behavior
Actual Behavior
Steps to Reproduce the Problem

Short Example of Code to Demonstrate the Problem
Specifications

Pywinauto version:
Python version and bitness:
Platform and OS:

@indrajeet7, please try to provide more info about your problem. The issue template should guide you about what kind of information we would expect to see in an issue description. Otherwise you are risking to get just a common answer, like: "read the doc", use "print_control_identifiers"...

If you have 4 wrapper objects, the answer is no for the moment. We're planning to implement this later after some re-factoring.
But you can create window specification for each child window based on dump_tree(depth=2) output for the main window. Then add .child_window(...) from the previous output and call .dump_tree() for the child specifications.
Anyway app.MainWindowTitle.dump_tree() prints the whole tree including children of every child and so on. So you don't have to call .dump_tree() for children, because it's already here.


Basic flow control on custom verbs

It seems useful for custom verbs to be able to check if certain conditions meet (like the presence of an item in the room) and act differently on each case.
Loops seem not necessary at the moment.

I am going to write three new verbs. Each of them checks for a condition and then for two blocks of actions. One to be performed if the comdition is true, other to perform when it is false.

checkitematroom: checks if the item is at the room
checkitem: cheks if the item is at the room or at a concrete player's inventory
checkinventory: checks if the item is at a players inventory


Date Picker Flicker and Position

Bug type
Component
Component name
MudDatePicker
What happened?
@just-the-benno @Garderoben
Date picker on mudblazor.com flickers with a date picker that renders in the top left and then disappears. In my app it renders like so:

I'm using MudBlazor 6.02 and I'm on .NET 6.
Expected behavior
The date picker should render once in the proper location.
Reproduction link
https://mudblazor.com/components/datepicker
Reproduction steps

Go to the mudblazor.com date picker examples page.
Click on any of the date pickers.
...

Relevant log output
No response
Version (bug)
6.02
Version (working)
No response
What browsers are you seeing the problem on?
Chrome, Microsoft Edge
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

The issue on my own app appears to be from an extra ThemProvider tag I had in the MainLayout. The issue on mudblazor.com is still there though. Please disregard the screenshot of my app I posted.

The issue on my own app appears to be from an extra ThemeProvider tag I had in the MainLayout. The issue on mudblazor.com is still there though. Please disregard the screenshot of my app I posted.

I dont get that problem on mudblazor.com?
Can you provide some more info, is it main site, dev, wasm or server?

It's when I go to https://mudblazor.com/components/datepicker#basic-usage and click on one of the date pickers.
https://user-images.githubusercontent.com/24277209/143469167-c58aa0ce-691d-4a94-bc22-6da6a28c60b9.mp4
Please see the video of the behavior @Garderoben

You can observe the effect of latency in Blazor Server Side (Switch to WASM and the effect disappear) in this example.
In the first "cycle," the popover content (the date picker) is rendered. This is the time between the button and click and the appearance at the top of the page. The second cycle will place the popover. Most other components are relatively small or rely on other mechanisms to prevent this "flickering". The picker don't.
There are a couple of options we have here. I'll try it, and if I find a suitable solution, I'll create a PR.

@just-the-benno Please any workaround for this issue?


Update main README.md

Please update main README.md to list new projects and tutorials.

Hi,
I can do this. Please assign me this @Pritish-Sinha

I would like to contribute. Please assign it to me @Pritish-Sinha

@Pritish-Sinha Kindly Check #22

can i upload my ml project. learned and made from youtube

not great at ml
followed a tutorial a while back, may still have the file
can the file be .py?

Yeah anything that contributes in ml field.


update: Change ACK lab to use DynamoDB instead of RDS

What this PR does / why we need it: This PR adds functionality to provision a DynamoDB table in AWS using AWS Controllers for Kubernetes (ACK) instead of an RDS instance, uses the Carts component of the Sample application, updates workshop/lab steps and adds new screenshots.
Which issue(s) this PR fixes:
Fixes #625
Quality checks

[x] My content adheres to the style guidelines
[ ] I ran make test module="<module>" it was successful (see https://github.com/aws-samples/eks-workshop-v2/blob/main/docs/automated_tests.md)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@candonov could you review and test this PR?

@candonov could you review and test this PR?

Per our sync this morning, @thiru85 demoed it and it looks good, @ybezsonov will run a test and review.

Made the changes as discussed

Let me know if there are other changes needed

Looks like theres an issue with a link in the content? Website is failing to build https://github.com/aws-samples/eks-workshop-v2/actions/runs/6694950228/job/18192668662?pr=712#step:5:48

I pushed some minor changes to make sure the Dynamo table and IRSA role name are unique to the cluster name.


Add support for multiple clusters in custom runners

With this PR we add support for specifying multiple clusters using target-hosts and client-options.
The existing way of specifying target-hosts, as a csv host:port string and client-options as csv key:value pairs in a string is preserved. Additionally, we now allow passing parameters for target-hosts and client-options using a json filename as well as an in-line json string, which is already possible for other cli arguments. The documentation now reflects how to use this and we back this with a number of rigorous test cases.
All core runners and custom runners, by default, still receive an es client object pointing to the "default" cluster (for compatibility with the regular use case of Rally benchmarking one ES cluster) but it is now possible to specify multi_cluster = True as a class attribute in a custom runner. This results in an es dictionary instead where the user can freely choose which cluster to target inside the custom runner code.
Additionally we now wrap context-manager enabled runners and add a test case to ensure that wrapping  it in this way really works as expected. The documentation for custom runners has also been fixed to not show a half complete example of a context-manager enabled Class.

Thank you for the thorough review and insightful comments. With this foundation in, adding telemetry devices for additional clusters should be a simpler task.
I'll squash and merge this in.


Passing a Switch key is ignored if the Switch contains a flag

Imagine the following scenario:
Switch(flag: "f", key: "force", usage: "Whether to force")
Surprisingly, calling my-tool do something -f has a different than my-tool do something --force. The former one works, while the latter fails.
However, if the switch is initialized with: Switch(flag: nil, key: "force", usage: "Whether to force"), without a flag, --force works.
This is due to a (what I understand as a) bug in the Switch <| function:
case let .arguments(arguments):
    var enabled = arguments.consume(key: option.key)

    if let flag = option.flag {
        enabled = arguments.consumeBoolean(flag: flag)
    }
    return .success(enabled)

You can see that, when a flag exists, it will always read try to read if the flag was passed, and this will override the value if the key was passed.
I've opened a PR with tests and the fix for them.

Fixed by #96.


@opentelemetry/instrumentation-express middlewares registered on routers do not record spans unless middlewares applied to router in a chain

What version of OpenTelemetry are you using?
v.1.17.0
@opentelemetry/instrumentation-express version is 0.33.1
What version of Node are you using?
v16.18.1
What did you do?
I applied middlewares to express.Router via variadic arguments and array, and instrumentation only seems to record spans for the latter of registered middlewares.
I will provide as much details as I possibly can in the "Additional context" section.
What did you expect to see?
span for MiddlewareA, ...B, ...C, ...D.
What did you see instead?
span for MiddlewareD
Additional context
Case # 1
const apiRouter = express.Router()

const middlewareA0 = async (req, res, next) => {
  await wait(35)
  next()
}

const middlewareA = async (req, res, next) => {
  await wait(50)
  next()
}
const middlewareB = async (req, res, next) => {
  await wait(25)
  next()
}
const middlewareC = async (req, res, next) => {
  await wait(100)
  next()
}
const middlewareD = async (req, res, next) => {
  await wait(70)
  next()
}

/* any of the following ways of registering middlewares yields
same result - span is recorded only for "middlewareD" */
apiRouter.use(middlewareA0, [middlewareA, middlewareB, middlewareC, middlewareD])
// or
apiRouter.use([middlewareA, middlewareB, middlewareC, middlewareD])
// or
apiRouter.use(...[middlewareA, middlewareB, middlewareC, middlewareD])

Result:

Case # 2
// ...

const apiOrdersRouter = express.Router()

const middlewareE1 = async (req, res, next) => {
  await wait(40)
  next()
}
const middlewareE2 = async (req, res, next) => {
  await wait(80)
  next()
}
const middlewareE3 = async (req, res, next) => {
  await wait(70)
  next()
}

apiOrdersRouter.use(middlewareE1, middlewareE2, middlewareE3)

Potential workaround
// replace
apiRouter.use([middlewareA, middlewareB, middlewareC, middlewareD])
apiOrdersRouter.use(middlewareE1, middlewareE2, middlewareE3)
// with
for (const m of [middlewareE1, middlewareE2, middlewareE3]) {
  apiOrdersRouter.use(m)
}
for (const m of [middlewareA, middlewareB, middlewareC, middlewareD]) {
  apiRouter.use(m)
}

The result is behavior, expected to be with other ways of registering middleware too:

@JamieDanielson @pkanal can you please look into this?

... so?


Scene Transition

Add methods to set in and out transitions. They must be used before calling change_scene_* method. I need suggestions for names:
func setInTransition(transition: TransitionEnum, options := {}) # Transition to black screen

func setOutTransition(transition: TransitionEnum, options := {}) # Transition from black screen

func clear_options() # Remove transitions and other options

I don't want this spends too resources, so I think SceneManager can save a screenshot from previous scene, and unloads it before next scene loading.
Also first argument can be custom classes extending a base transition class, which can allow custom transitions. What do you think?
This will be the main feature of version 2.0.

I am finding the issue of introducing transitions without calling the function from a node complicated.
I think it would be better to use a Control node that extends a custom class and adds methods to set transitions such as changing the screen to a solid color or vice versa.
Taking advantage of the fact that variables can be passed from one scene to another, if you want to change the transition with which a scene normally appears, you can place a variable that is the type of transition.
# Your control root (it can be CanvasLayer child)
extends SceneManagerControl

var transition

func _ready() -> void:
    start_transition(transition if transition else default_transition)

# SceneManagerControl from Scene Manager plugin.
class_name SceneManagerControl extends Container

func start_transition(transition):
    print("apply transition")

While SceneManagerControl is useful to other purposes, SceneManager autoload can be a CanvasLayer to set a texture above the scene that allows adding transitions to solid colors and vice versa. There are problems on Android devices with using shaders on Control nodes, but with the root/CanvasLayer/ColorRect structure it seems to work fine.

Now there are preview support to start transition with SceneManager.transition_start.

I close this issue because there is simple transition support. Other methods are coming soon.


Missing instructions for SSE?

Hi,
It looks like simde has _mm_loadu_si128 implemented in x86/sse2.h, but it looks like the following are still missing, even though they are part of SSE/SSE2:

_mm_loadu_si16
_mm_loadu_si32
_mm_loadu_si64

Thanks :)
It looks like they're new functions… clang added them in 8.0, GCC in 11 (i.e., not yet in a release). PGI doesn't have them at all. MSVC has had them since at least 2017 (the oldest version I have installed in my Windows VM), so that's probably where they came from.
I'll add them to SIMDe in a bit.


installing

very new to git repositories . after i clone to directory in kali how do i install and run program ?

Clone the repository

git clone https://github.com/TryCatchHCF/PacketWhisper

Make sure you have python installed version 2. This is not written with version 3

$ python --version
Python 2.7.18

Go inside the cloned directory and then execute the file packetWhisper.py

$ cd PacketWhisper
$ python packetWhisper.py


Is Text Mesh Pro supported in Version 4.0.0-preview.9 release?

My apologies if this is already obvious, but I can't seem to find a clear answer here.  I've browsed around a bit, and searched through various issues. It seems it may have been moved to a different package? but I can't find any other info on that (lots of mixed results with old info).
I'm on the currently latest release: Version 4.0.0-preview.9 in Unity 2021.1.24 using universal render pipeline.
I'm trying to add any sort of UIEffect to my TextMeshPro object, and getting a busted shader:

So, I'm thinking it's not currently supported? Please let me know!

这是来自QQ邮箱的假期自动回复邮件。你好，我最近正在休假中，无法亲自回复你的邮件。我将在假期结束后，尽快给你回复。

it's been over a year and a half. Any updates?

Any updates?

Still not working. I just tried.
Anyone knows if it's easy to fix?

I can't find the new package that supports TMP, help!

Sorry for my late reply.
UIEffect v5 is now released.
Please try it. :+1:
🔄 Upgrading from v4 to v5


MultiTenantDbContext and other global query filters

I like the fact that deriving from MultiTenantDbContext automatically applies a global query filter for TenantId without me thinking about it. However, there is currently no way to support additional query filters.
I have a multitenant app that also uses the "soft delete" pattern (the other classic example of a global query filter). What do you think would be a good way to allow additional query filters plus the default TenantId filter?
I'm happy to contribute a PR, just want to get your thoughts first.

What I'm currently doing is:
Adding a virtual method to MultiTenantDbContext:
        protected virtual BinaryExpression GetAdditionalFilter(Type entityType, ParameterExpression entityParameter)
        {
            // A derived class may override this
            return null;
        }

Overriding it in my application's DbContext:
        protected override BinaryExpression GetAdditionalFilter(Type entityType, ParameterExpression entityParameter)
        {
            if (!DeletableTypes.Contains(entityType))
            {
                return null;
            }

            // build expression tree for e.Deleted == false
            // e.Deleted
            var propertyExp = Expression.Property(entityParameter, nameof(IDeletable.Deleted));

            // e.Deleted == false
            var equalsFalseExp = Expression.Equal(propertyExp, Expression.Constant(false));

            return equalsFalseExp;
        }

And doing some expression stuff in Shared to combine the result of GetAdditionalFilter (if it's not null) with the TenantId filter Finbuckle is already building.

Hi @nbarbettini I agree that there needs to be better support for multiple query filters. I'm going to take a closer look at it (and your approach) this week.
Without the code in front of me my first thought would be to see if a desrived could add a global query filter in the OnModelCreating method before calling base.OnModelCreating then Finbmuckle.MultiTenant could somehow detect the existing query and wrap its tenant id query around the existing one.

Hi @nbarbettini , I put together something quick based on my thoughts above. What do you think of PR #153
Now all you have to do is add your global query as usual, but make sure it is before you call base.OnModelCreating. I plan to update the documentation to mention that as well later this week.

Thanks, looks awesome! 🎉