Serialize & Deserialize

There was a straightforward PR thrown up for discussion over at #65, effectively looking for a Serialize and Deserialize implementation for this library. The requests from @epage:

I think more of a case is needed for why a CLI flag needs serialization, particularly the fact that this was done in a raw way (separate verbose, quiet as u8s) - https://github.com/clap-rs/clap-verbosity-flag/pull/65#issuecomment-1545361588

More design discussion is needed on this because exposing separate verbose and quiet fields that are u8 does not make sense. - https://github.com/clap-rs/clap-verbosity-flag/pull/65#issuecomment-1675586423

Use Cases
Instrumentation
If an entire args object is being passed into tracing it is quite nice to have a Serialize so that derive works. I don't want to have to impl Serialize for Args for this reason. If I don't do some serialization then I end up with Debugand that is super-verbose.
use clap::Parser;
use serde::Serialize;
use svix_ksuid::{Ksuid, KsuidLike};
use tracing::instrument;

mod telemetry;

#[derive(Serialize, Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
    // #[command(flatten)]
    // verbose: clap_verbosity_flag::Verbosity,
    #[arg(short, long, default_value_t = 1)]
    count: u8,
}

impl Args {
    fn to_json(&self) -> String {
        return serde_json::to_string(&self).expect("");
    }
}

// Main is a very small setup shim, and then gets out of the way.
fn main() -> proc_exit::ExitResult {
    let id = Ksuid::new(None, None);

    telemetry::init(id);
    let args = Args::parse();

    let result = run(id, args);
    proc_exit::exit(result);
}

#[instrument(name = "run()", fields(args = args.to_json(), id = id.to_string()) ret, err)]
fn run(id: Ksuid, args: Args) -> proc_exit::ExitResult {
    proc_exit::Code::SUCCESS.ok()
}

Args From <Elsewhere>
This some-cli gui command spins up a server and opens a browser to an HTML page. Eventually that HTML page makes a network request back to the server, which contains a serialized form of the arguments that would have been passed in. That's going to be JSON (cause it's coming from the web), deserializing into Args (from the above example).
Starts the server:
$ some-cli gui

(Complicated configuration happens in a browser.)
Data from a "configuration finished!" network request passed back in to the CLI entry point:
let args: Args = serde_json::from_str(args)?;
let result = run(id, args);

Design Space
There are basically only two reasonable options here to represent configuration since it is a count.
As Separate u8s

exposing separate verbose and quiet fields that are u8 does not make sense

Given that we have -q and -v[vvv] exposed as separate args this separation doesn't seem particularly egregious. Further, since the struct can be constructed with clap_verbosity_flag::Verbosity::new(2, 4), any serialization that doesn't give you both of those values is lossy.
Being able to represent the error conditions (error: the argument '--quiet...' cannot be used with '--verbose...') that can be triggered by command line usage is reasonable—even though typically it would never get through ::parse().
As A Single i16
Since we have the conflicts_with lockout from the primary clap use case, we could choose to serialize them into a single value, in spite of it being lossy. Take a page from the log mapping, and do quiet as -(count).
An i16 gives us way more bits than we need, but there isn't an i9.
...
-4 => -qqqq
-3 => -qqq
-2 => -qq
-1 => -q
0 => None
1 => -v
2 => -vv
3 => -vvv
4 => -vvvv
...

This approach can't support { quiet: 4, verbosity: 4 } like a manually constructed struct can.

I'm in favor of the separate u8s for representation fidelity reasons and nominate reopening and accepting #65.

Here is what a remote derive implementation looks like, a lot of hassle and hackery:
[derive(Serialize, Deserialize)]
#[serde(remote = "clap_verbosity_flag::Verbosity")]
struct VerbosityDef {
    #[serde(getter = "clap_verbosity_flag::Verbosity::verbose")]
    pub verbose: u8,
    #[serde(getter = "clap_verbosity_flag::Verbosity::quiet")]
    pub quiet: u8,
}

pub trait VerbosityRemoteGetters {
    fn verbose(&self) -> u8;
    fn quiet(&self) -> u8;
}

impl VerbosityRemoteGetters for clap_verbosity_flag::Verbosity {
    fn verbose(&self) -> u8 {
        let debug_string = format!("{:#?}", self);
        let re = Regex::new(r"verbose: (?<verbose>[\d]+)").unwrap();
        let output = re.captures(&debug_string).unwrap();
        let string_value = output.name("verbose").unwrap().as_str();
        let calc = string_value.parse::<u8>().unwrap();
        calc
    }
    fn quiet(&self) -> u8 {
        let debug_string = format!("{:#?}", self);
        let re = Regex::new(r"quiet: (?<quiet>[\d]+)").unwrap();
        let output = re.captures(&debug_string).unwrap();
        let string_value = output.name("quiet").unwrap().as_str();
        let calc = string_value.parse::<u8>().unwrap();
        calc
    }
}

impl From<VerbosityDef> for clap_verbosity_flag::Verbosity {
    fn from(def: VerbosityDef) -> clap_verbosity_flag::Verbosity {
        clap_verbosity_flag::Verbosity::new(def.verbose, def.quiet)
    }
}

#[derive(Serialize, Deserialize, Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
    #[serde(with = "VerbosityDef")]
    #[command(flatten)]
    verbose: clap_verbosity_flag::Verbosity,
}

Or, I could just copy/paste out the core of the implementation in fewer lines:
https://github.com/clap-rs/clap-verbosity-flag/blob/f44eadcbb59a99e25898997e0c9671f65f232ad9/src/lib.rs#L64-L90

To be clear, are those your use cases or theoretical use cases?
As for the serialization format, I consider any non-textual serialization format to be a non-starter.  As a user, entering random numbers in two fields and dealing with how those fields interact makes no sense and I would expect to just say "trace" or similar.  The CLI is designed for user convenience / following convention and we hide the individual fields because that is the level of abstraction people should be working with.

I don't have super-strong opinions here, but I feel like there is a lot of value in standardizing the underlying tooling layer for the CLI hello world because it creates consistent UX outcomes for users.
Right now a lack of Serialize and Deserialize caused me to eject from that vision.

Not exposing the numerics means that displaying the outcome as a range slider in the HTML GUI still requires mapping it myself from string, making the i16 approach more attractive. But that's not super-materially different since I need the labels anyway.

@joshka to clarify, what you are looking for is the names of the levels to be serialized?

@joshka to clarify, what you are looking for is the names of the levels to be serialized?

Yes, I phrased it poorly, but what I meant to ask was given that you "consider any non-textual serialization format to be a non-starter.", would a PR that (de)serializes Verbosity<InfoLevel> into a string representation of the log level name ("trace", "debug", etc.) be worth investing time into?

@joshka the use cases for that kind of solution are much clearer, as demonstrated by the one you listed.  If its behind a serde feature, I'm good with it.

#114 works to adopt words for the serialization format.
It started by delegating to LogLevels serde support but there wasn't a way to distinguish "off" from "unset" / "default".
We tried switching to LevelFilter but all values are serialized in SCREMAING_CASE (though snake_case is accepted for deserialization apparently).  We are stuck between being consistent with LevelFilter and being consistent with the style of most serialized values.

We tried switching to LevelFilter but all values are serialized in SCREMAING_CASE (though snake_case is accepted for deserialization apparently). We are stuck between being consistent with LevelFilter and being consistent with the style of most serialized values.

I think this is a reasonable tradeoff to make rather than manually implementing serialize. My thinking is that it's consistent with how log::Level or log::LevelFilter would be serialized if that was directly used instead of the verbosity flag being interjected. It's a two way door if that's a wrong assumption, as it's compatible to change the serialization format in the future, so long as deserialization still works.
I'm also fine with changing this to lowercase, but I'm 90/10 that uppercase is the right choice though.


Problem Generating Token

Hi,
I installed your library, but there was a problem in "Providers\JWT\Lcobucci.php" in function encode(array $payload). Problem was this line:
$this->builder->withClaim($key, $value);
since "Lcobucci\JWT\Builder" class has no function with that name (withClaim). PHP error below:

"Call to undefined method Lcobucci\JWT\Builder::withClaim()",

I think I got it working by  doing the following:
     foreach ($payload as $key => $value) {
            $this->builder->set($key, $value);
        }

        $this->builder->sign($this->signer, $this->getSigningKey());

        $tok_return = $this->builder->getToken()->__toString();

        return $tok_return;

Hello Martin,
This library need "lcobucci/jwt": "<3.4"

Oh, ok, maybe it was related to "lcobucci/jwt" version.
However, I installed your library with composer according to readme.md and it installed "lcobucci/jwt"->"version": "3.2.5",
my composer.lock:
  "name": "agungsugiarto/codeigniter4-authentication-jwt",
        "version": "dev-master",
        (...)
        "require": {
            "agungsugiarto/codeigniter4-authentication": "^1.0",
            "codeigniter4/framework": "^4.1",
            "lcobucci/jwt": "<3.4",
        (...)
        "name": "lcobucci/jwt",
        "version": "3.2.5",

Now I confirmed "lcobucci/jwt" v3.3 has this method withClaim, so i guess i should update to v3.3.
Thanks!


Add pytest-sugar

What do these changes do?

Makes looking at the CI a little nicer.
Are there changes in behavior for the user?
Nope

Related issue number
None

Checklist

[X] I think the code is well written
[ ] Unit tests for the changes exist
[ ] Documentation reflects the changes
[X] If you provide code modification, please add yourself to CONTRIBUTORS.txt

The format is <Name> <Surname>.
Please keep alphabetical order, the file is sorted by names.

[ ] Add a new news fragment into the CHANGES/ folder

name it <issue_id>.<type> (e.g. 588.bugfix)
if you don't have an issue_id change it to the pr id after creating the PR
ensure type is one of the following:

.feature: Signifying a new feature.
.bugfix: Signifying a bug fix.
.doc: Signifying a documentation improvement.
.removal: Signifying a deprecation or removal of public API.
.misc: A ticket has been closed, but it is not of interest to users.

Make sure to use full sentences with correct case and punctuation, for example:
Fix issue with non-ascii contents in doctest text files.

To others, aioredis is just not stable anymore. There are several different test cases that're failing.

To others, aioredis is just not stable anymore. There are several different test cases that're failing.

To others, aioredis is just not stable anymore. There are several different test cases that're failing.

I actually think it’s pretty much always the same subset of tests, which are time-based and inherently flaky. We’d likely be better served ignoring failures for now until we can refactor those tests specifically.

To others, aioredis is just not stable anymore. There are several different test cases that're failing.

I actually think it’s pretty much always the same subset of tests, which are time-based and inherently flaky. We’d likely be better served ignoring failures for now until we can refactor those tests specifically.


Sign in with Twitter: Everytime authorization

Hi,
currently I am testing the twitter-redirect.html example, but I have a problem.
Compared to the google login, everytime when I want to sign in with twitter, twitter asks me to authorize the app, is this normal? Google asks me just one time ...
Jan

Hey Jan, it's quite normal for that to happen.

Ok thanks.
do we have the opportunity to change this, because I think it's quite annoying for the user ....
Jan

That's weird because Twitter's docs say specifically that the behavior should be like Google's:

In the case where the user is already signed in to twitter.com and has granted access to the website, this redirect happens immediately.

From: https://dev.twitter.com/web/sign-in/desktop-browser
@Jan-M-B Could you upload a version of your app online (using firebase deploy) so we could replicate this behavior?

Hi,
I have sent you the link to the App via mail to<EMAIL_ADDRESS>Jan

Thanks @Jan-M-B
I can confirm the behavior that user are being re-asked to authrotize every time.
I think I've found what the issue is:
When asking for auth we're using the URL https://api.twitter.com/oauth/authorize?oauth_token=... and with this URL the user is asked to click through every time.
There is another URL for authentication only: https://api.twitter.com/oauth/authenticate?oauth_token=... and this one will automatically redirect on subsequent auth.
We'll investigate internally if we can use the latter instead of .../authorize it may depends if it supports adding additional scopes for instance.
@bojeil-google I'll file a bug internally about this.

Hello. Are there any progress on this yet?

Not yet, I'm asking the team in charge of this change for news.

This is now fixed. Please make sure you enable the option:

In your Twitter app Settings for this to work!


Inline Picker Update

I've updated the code so that when pickerItems array is updated, the user can call update() on the cell and it will properly update the picker with the new items.
I've also have it so it sets the selected picker item index to 0 when the pickerItems array is updated in case the updated array contains less items, which results in an 'Index out of range' error.

@ra1028 for some reason this PR is integrated in the latest pod. Can you release an updated pod that includes all merged PR's?

@ZacharyKhan
Sorry for the late reply 🙇
I just released Former version1.6.1.


Using the library only for parsing

Hello @maarten-boot, thanks for continuing with the development of this library.
With a previous version, I was able to parse a raw WHOIS string without necessarily passing through the query function. Is it still the case now?

https://github.com/mboot-github/WhoisDomain/blob/master/whoisdomain/_1_query.py#L48
You probabely mean the test function i use to compare exiting file data
The library code is identical currently for whois an whoisdomain so i would
e pect you can still use the same logic
How are you using it currently ?
On Thu, Jul 20, 2023, 17:19 Andrea Guidi @.***> wrote:

Hello @maarten-boot https://github.com/maarten-boot, thanks for
continuing with the development of this library.
With a previous version, I was able to parse a raw WHOIS string without
necessarily passing through the query function. Is it still the case now?
—
Reply to this email directly, view it on GitHub
https://github.com/mboot-github/WhoisDomain/issues/9, or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7CCKLDNJHVB4QKVXM3USKDXRFD7BANCNFSM6AAAAAA2RS6FNE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

it my suggestion clear ?
can we close this issue or would you prefer more feedback ?

i will close the issue for now, feel free to re-open if needed


Build WebPage

Create webpage for this project.

Working branch is gh-pages-main

Webpage is good for me :3


Utilizing Legacy Data Registration Provided by Sponge Throws IllegalArgumentException

I am currently running...

SpongeForge version: 1.11.2-2282-6.0.0-BETA-2297
SpongeVanilla version: --
Java version: 1.8.0_45
Operating System:

[ ] Linux (Ubuntu, Debian, Fedora, etc)
[ ] macOS
[x] Windows

What is the expected result?
Sponge should give a warning that ID's need to be transferred over to the new system, but the plugin should still function.
What is the current result?
Currently an IllegalArgumentException is thrown with the message "Data ID must be formatted correctly!"

Server Log

This was fixed a while ago. Go ahead and bump to the latest stable versions (SpongeForge wasn't building stable-6, but it finally built one now).


Functional tests unflaking

I'm at the 10th run in a row locally without failure

ACK 85690ff -- ran the test suite 32 times in a row without anymore reorg tests flakiness

Pushed a few more fixes, this is ready to go!


Missing Groups in group templating

I'm submitting a ...

[X] Bug report
[ ] Feature request
[ ] Question / Support request

For bug report please include this information:

What Grafana version are you using?  4.02
What Zabbix version are you using? 3.0.4
What zabbix plugin version are you using? 3.1.2
What OS are you running grafana on? Centos 6
What did you do? Create a template variable and just put a (*) in the query field
What was the expected result? It should disply all the groups in the drop down list
What happened instead? I'm only having a few groups displayed

IMPORTANT If it relates to metric data visualization would be great to get:

An image or text representation of your metric query
The raw query and response for the network request (check this in chrome dev tools network tab, here you can see metric requests and other request, please include the request body and request response)

Try to check access rights for your Zabbix api account (set in datasource config).


Documentation for extending ramda with plugins

I have some functionality that isn't in the spirit of ramda, could you write documentation how add my  functionality in a plugin for ramda.

It's really never come up as an issue, perhaps because it's easier than you might think.
Just think of the exposed Ramda R variable as a namespace you can attach functions to, and you'll be fine:
R.myNewFunction = function( /* params */ ) { /* ... */ };

There is no current mechanism by which your code can be bundled with Ramda except by downloading the source, adding your functions, and rebuilding.  That's not hard, but it would probably make it confusing for others looking at your source.
But in general, is there a compelling need to hook your custom code to Ramda's namespace?  You could just as easily attach this as
myApp.myNewFunction = function( /* params */ ) { /* ... */ };

It's not that I object; if you want to attach your function to Ramda, that's fine.  I'm just not sure I understand why.

I have some utilities that I use over several projects, and when I prototype or write throwaway projects I just want one file to download for quick start. Probably you're right about R, I'll manually merge my functions with ramdas into different namespace.

@CrossEye  Here is the documentation of the functionality that I've added into ramda https://github.com/bobiblazeski/Q and here's example of using it  in my latest project https://github.com/bobiblazeski/cristobal

Ok, let's see how tired my fingers get on this tablet.  (I'm a ten-finger typist.    I may stop part-way through.)
While there's some interesting stuff in there, there are only two functions that I find compellingly different from Ramda equivalents, assembler and innerJoin.  Below I detail Ramda equivalents for almost all of them.  But they are often not exact equivalents, as Ramda's philosophy avoids overloading parameters with different types and avoids optional parameters.  Many of these functions are conceptually much closer to Underscore/lodash in feel.  Those libraries are fine with the overloading and optional parameters.
The only ones I didn't try to write an equivalent for were amend and innerJoin.  They're not so easy to do in the Ramda points-free style I adopted for the others.  I also skipped lay and taper for philosophical reasons.  Many of the remaining ones are trivial.  But some are fairly interesting, especially the points-free implementation of assembler.
var abate = R.useWith(R.map, R.I, R.values);
abate(function(d){ return [-d,d];},{ a:4,b:9,c:16}); //=> [[-4, 4], [9, 9], [16, 16]]
var abate = R.pipe(R.useWith(R.map, R.I, R.values), R.flatten);
abate(function(d){ return [-d,d];},{ a:4,b:9,c:16}); //=> [-4, 4, 9, 9, 16, 16]

// amend probably not easily points-free in Ramda; optional parameters difficult to do.

var assembler = R.curryN(2, R.pipe(R.unapply(R.I), R.converge(R.zip, R.head, R.tail), R.fromPairs));
var trend = assembler(["year", "amount", "name"]);
trend(1937,100, 'foo'); //=> { year: 1937, amount: 100, name: "foo" }
assembler(["year", "amount", "name"], 1937, 100, 'foo'); //=> { year: 1937, amount: 100, name: "foo" }

var collect = R.pipe(R.mapObj, R.values);
collect(Math.sqrt, {a: 1, b: 4, c: 9}); //=> [1, 2, 3]

//curtail == abate?

var division = R.flip(R.divide);
division(100, 71) //=> 0.71
R.map(division(16),[1,2,4,8,16]); //=> [0.0625, 0.125, 0.25, 0.5, 1]
// Does not match Q.division documentation which reads [16,8,4,2,1], but probably shouldn't

var group = R.groupBy;
// Not quite the same as Q.group does parameter magic and turns a string parameter into `prop(str)`;
// Ramda never does that, preferring to be explicit in such matters.
R.groupBy(function(num) { return Math.floor(num); },[4.2, 6.1, 6.4]);
//=>( { '4': [4.2], '6': [6.1, 6.4] })

// innerJoin: optional parameters, multiple types, certainly not within Ramda philosophy.

// very similar to `propOr`, but with different parameter order and hand-holding on null/undefined objects
var isNull = R.curryN(3, function(obj, name, defaultVal) {return R.propOr(defaultVal, name, obj || {});});
isNull({a:1},"a",2) // => 1
isNull({b:1},"a",2) // => 2
isNull(null,"a",3) // => 3

// lay:  see http://fr.umio.us/ranging-near-and-far/ for my argument against this version of `range`

var least = R.minBy;
// Not quite the same as Q.least does parameter magic and turns a string parameter into `prop(str)`;
function cmp(obj) { return obj.x; } var a = {x: 1}, b = {x: 2}, c = {x: 3}; least(cmp, [a, b, c]); //=> {x: 1}
// could also be written:
least(prop('x'), [a, b, c]); //=> {x: 1}

var minus = R.flip(R.subtract);
minus(8, 10); //=> 2
R.map(minus(10), [10,20,30]); //=> [0,10,20]

var most = R.maxBy;
// Not quite the same as Q.most does parameter magic and turns a string parameter into `prop(str)`;
function cmp(obj) { return obj.x; } var a = {x: 1}, b = {x: 2}, c = {x: 3}; most(cmp, [a, b, c]); //=> {x: 3}
// could also be written:
most(prop('x'), [a, b, c]); //=> {x: 3}

var order = Q.sortBy;
// Not quite the same as Q.order does parameter magic and turns a string parameter into `prop(str)`;

var remainder = R.flip(R.modulus);
remainder(3,17); //=> 2 // JS behavior:
remainder(3,-17); //=> -2
remainder(17, -3); //=> 2

// docs say list or object, but code seems only list.
var sift = R.filter
var isEven = function(n) { return n % 2 === 0; };
sift(isEven, [1, 2, 3, 4]); //=> [2, 4]

var single = R.find;
// Not quite the same as Q.single does parameter magic and turns an object parameter into `where(obj)`;
var xs = [{a: 1}, {a: 2}, {a: 3}];
single(function(d){ return d.a == 2;}, xs); //=> {a: 2}
single(R.where({a: 2}), xs); //=> {a: 2}
single(R.where({a: 4}), xs); //=> undefined

var sumBy = R.pipe(R.map, R.sum);
// Not quite the same as Q.sumBy does parameter magic and turns a string parameter into `prop(str)`;
sumBy(R.prop("a"),[{a:2},{a:4},{a:6},{a:8},{a:100},{a:1}]); //=> 121
sumBy(function(d){ return 2* d.a;},[{a:2},{a:4},{a:6},{a:8},{a:100},{a:1}]); //=>242
sumBy(R.I,[2,4,6,8,100,100]); //=> 220

// taper: See any of these links for discussions on folding objects:

// https://github.com/ramda/ramda/issues/180
// https://github.com/ramda/ramda/pull/257, especially
// https://github.com/ramda/ramda/pull/257#issuecomment-52532396
// https://github.com/ramda/ramda/pull/364
// https://github.com/ramda/ramda/issues/546
// https://github.com/ramda/ramda/pull/625

Very nice post, point free style is great I enjoyed doing it in APL family,  http://archive.vector.org.uk/art10500180 in JavaScript I'm mostly working with flat arrays of objects so parameter dispatch is very important to me.

@bobiblazeski:

I'm mostly working with flat arrays of objects so parameter dispatch is very important to me.

Flat arrays of object is what we consider Ramda's strong suit.  :smile:
But I'm curious as to which of two possible meanings you attach to "parameter dispatch".  Ramda has some objections to both, but for very different reasons.

One possibility is dispatching on function arity, that is, the number of parameters passed to the function.  This one is common in Javascript, and I personally don't have any major philosophical objections to it.  But there is an overwhelming practical problem with it for Ramda.  One of Ramda's key selling points is the auto-curried functions.  But to automatically curry a function, it's length property must be accurate.  This won't work if you want to be able to call it with various different numbers of parameters.

The other possibility is dispatching on argument types.  There is no practical issue with this, and, in fact, Ramda does have a dynamic dispatch mechanism for some key functions.  But for a more general type-checking, I hold strong objections.  Ramda was meant to be a simple library, in the sense described by the now classic talk by Rich Hickey, meaning that distinct concerns are never allowed to become intertwined.  A function should do one thing, and if we find ourselves branching on the types of the parameters, our function must be trying to do more than one thing; it's intertwining what should be the work of two separate functions.

So Ramda objects to both, for very different reasons.  Is one of these what you meant, and if so, can you explain why working with flat arrays of objects makes parameter dispatch so important to you?
The chief distinction I see between your functions and the Ramda style can be described by
var stooges = [{name: 'moe', age: 41}, {name: 'larry', age: 53}, {name: 'curly', age: 39}];
var decade = function(stooge) {return Math.round(stooge.age / 10, 0);}
// Work the same
Q.order(decade, stooges);
R.sortBy(decade, stooges);
// Different here
Q.order('name', stooges); // shortcut available
R.sortBy(R.prop('name'), stooges); // no shortcut offered

Is that sort of short-cut significant to your work?    The answer for Ramda has been no.  Obviously you have to make your own choice, but I would argue strongly that simplicity trumps easiness here.

Flat arrays of object is what we consider Ramda's strong suit.  :smile:

:smile:

So Ramda objects to both, for very different reasons. Is one of these what you meant, and if so, can you explain why working with flat arrays of objects makes parameter dispatch so important to you?

From what I see from my code lack of dispatching on function arity is the right choice, the only function is lay and from my use it seems that is rarely used, so range works well.
Dispatching on argument type unfortunately is deal breaker.In 98% of cases I have some array of objects that are one level deep and I want to do some transformations on it.  Its very convenient for me express what I want as fields.  It feels like SQL working with tables.

Is that sort of short-cut significant to your work?

Its very convenient, http://dilbert.com/strip/2004-11-22 passing strings and objects represent the majority of  my use , functions are rare fallback. My number one feature in my wishlist is to extract full mongodb filtering syntax from   https://github.com/crcn/sift.js or https://github.com/kofrasa/mingo and add it.  If you grep over https://github.com/bobiblazeski/cristobal you'll see that.
Loved that talk about Rich Hickey, he's a genious but unfortunately from talking with my lisper friends it seems that  Scala won and Clojure lost.  I've seen too many failed geniuses to know that understanding target market is very important.  Mark Tarver comes to mind first http://www.shenlanguage.org/ its not enough make something great in order to cross the chasm and go mainstream you need pragmatist who will adopt it.
If you want mainstream adoption for ramda you have to understand what market wants. If you think I represent   small niche ignore my suggestions and continue with your path. On the other hand if my needs represent large chunk of people  who might be interested to switch to more functional style, then somebody else will win and ramda will vanish into obscurity. I believe there is a nice opening for ramda in the d3 visualization market.    http://slobodanblazeski.blogspot.com/2010/05/becoming-popular.html
In the end time will tell.  Whether ramda, lodash-fp or something else something will fill the void.

If you want mainstream adoption for ramda you have to understand what market wants.

This lib started as a personal project to study a particular style of coding and pursue it as far as we could. Somewhere along the way, other people got interested in the project too. That has certainly been fun, but "going mainstream" has never been a goal of mine.
Ramda is something I do in my free time for my own pleasure and edification. I can't speak for my collaborators, but "what the market wants" is way down my list of priorities. To use your terms, I prefer the Clojure path to the Scala path.

I have some array of objects that are one level deep and I want to do some transformations on it. Its very convenient for me express what I want as fields. It feels like SQL working with tables.

But that doesn't imply dispatching on type.  It would be very easy to write a function
// sortByField:: String -> [a] -> [a]
var sortByField = R.useWith(R.sortBy, R.prop, R.I);
sortByField('name', stooges);

and only use
R.sortBy(decade, stooges);
when you needed the broader power of a full function.  This doesn't dispatch on the type or run afoul the Ramda philosophy of simplicity.

Loved that talk about Rich Hickey, he's a genious but unfortunately from talking with my lisper friends it seems that Scala won and Clojure lost.

I haven't seen it that way.  Scala is older, and has slightly more job postings, but both are small players in the overall community.  Clojure, like all LISPs is not a purely functional language, but it can be used for truly functional programming; that's it's main mode, perhaps.  Scala is more promiscuous in its choice of paradigms.  But I see no signs that either is winning or losing at the expense of the other.  (I'm personally more interested in Haskell, but that's a different story.)

If you want mainstream adoption for ramda you have to understand what market wants.

You've got the cart and the horse mixed up here.  I'm working on this, as @buzzdecafe said, for "my own pleasure and edification."  I found that I wanted to work in a certain manner, and the libraries that were available did not cater to manner.  So I started to write one.  @buzzdecafe and I, and eventually a large number of other contributors, have built this up in order to be able to use it.  I can't deny that I've been gratified to find that it's filled the needs of many others, too.  But it's the ability to work in that manner that's of paramount importance; whatever popularity it has must flow from that.  The founder of lodash has described his goals in terms of popularity.  I'd prefer to leave that to lodash and stick to our underlying principles.


False Positives When Sourcing Github Hash

The github regex is currently producing a lot of false positives when there exists something like this in the source code "    { url : "https://github.com/KenanY/node-uuid", branch : "7a018f2d075b03a73409e8356f9b29c9ad4ea2c5" }"
It happens when we are referencing a git URL with a hash.  We should exclude any hits that have "github.com/" in the results.

Couple a things you can do:

write custom rules for whitelisting regexes
enable entropy
filter entropy hits with additional regexes


Would like to have receiver, serialize and deserialize functions on RoomInvitation

Is your feature request related to a problem? Please describe.
Trying to implementing a feature that user could accept room invitation and view room invitation in web page. So I need two more functions:

One function enables the ability to retrieve/regenerate the room invitation, and accept when the user triggered the accept action.
The other one could return back the invitation's receiver, for invitation that is not sent by bot, it is clear that the sender and the receiver, but if the invitation is sent by myself, it is impossible currently to know whom the invitation is sent to. So I want to have this function that tells me who is the receiver.

Describe the solution you'd like
I would like to have two or three more functions provide by RoomInvitation class.

to(): Promise<Contact> to retrieve the receiver info
stringify(): Promise<string> to serialize the RoomInvitation
static parse(): Promise<RoomInvitation> to deserialize the string and generate the room invitation object again, so we can call accept on it to accept the invitation.

Describe alternatives you've considered
No alternatives yet considered.

Kindly ping @huan

Sorry for the late reply, and thanks for the reminding.
The basic concept looks good in your proposal.
Please go-ahead to submit a PR to show your code so that we could be able to discuss the design patterns for it.

I've created a draft PR in wechaty, wechaty-puppet and wechaty-puppet-padpro. I added two class methods and two instance methods:
Class Method

serialize (invitation: RoomInvitation): Promise<string>
deserialize<T extends typeof RoomInvitation> (payloadString: string): Promise<T['prototype']>

Instance Method

to (): Promise<Contact>
avatar (): Promise<FileBox>

The class methods used to serialize the object back and forth so we can persist it in other storage, and load it, accept it anytime we want.
The instance methods used to get two more attributes for room invitation, which is the to, whom the invitation is sent to, and the avatar for the room that the invitation is for.
With the current functions, we are able to construct the invitation card with the functions on RoomInvitation.
But this is just a draft api, please let me know your idea about this, and any suggestion is welcome.

Great to hear from you and see the API drafts!
I will look into it and get back to you later.

Kindly ping @huan

Got it. Cloud you please also create the PR for #1829 so that I could review all the code at once? Because that would greatly increase the efficiency and save a lot of time for me.

Will do later.

Thanks for the Pull Request and the improvements for Wechaty.
This feature is quite the same as we did the Friendship before, and we have already had the design pattern with the merged code before.
Please follow my reviews of those PRs, and make sure we are keeping consistent with the design pattern.
We will be able to merge them once they confirmed the design pattern of the toJSON, fromJSON, and the roomInvitationPayload()

There has one bug in RoomInvitation, if we named this method toJSON, when the RoomInvitation constructor, this method will be called by some one which I do not know.
Do you know who call the method toJSON ?
P.S. if I change the name toJSON to toJson, everything work well.

I believe that's because somewhere called JSON.stringify(roomInvitation), which will call toJSON on roomInvitation automatically defined by the specification at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

toJSON() behavior
If an object being stringified has a property named toJSON whose value is a function, then the toJSON() method customizes JSON stringification behavior: instead of the object being serialized, the value returned by the toJSON() method when called will be serialized. JSON.stringify() calls toJSON with one parameter:

if this object is a property value, the property name
if it is in an array, the index in the array, as a string
an empty string if JSON.stringify() was directly called on this object

Yes, thank you very much for point out this problem.
Code:
public async toJSON (id: string): Promise<string> {
    log.verbose('RoomInvitation', `toJSON(${id})`)
    const payload = await this.puppet.roomInvitationPayload(id)
    return JSON.stringify(payload)
}

So we should change the method name ? Or return RoomInvitationPayload object, and let user to stringified by themselves.

In this case, JSON.stringify() will worked at RoomInvitationPayload but not RoomInvitation.
It seems that RoomInvitation could have a method named toJSON, but bug happened. :(

Does this block your work? If not, I suggest that you can feel free to ignore it because it's just a toJSON() call, nothing matters?

Of course, if we call JSON.stringify() in room-invite event, it will block.
The type of params in room-invite event is RoomInvitaion.
I think this bug will be happened in friendship event too.
So maybe we could change all toJSON() to serialize(), and all fromJSON() to deserialize().

Why it will block? I can not understand, please explain in details.
Can you provide a reproduce-able description, which can demonstrate this problem?

bot.on('room-invite', async (roomInvitation: RoomInvitation) => {
    console.log(`room invitation : ${JSON.stringify(roomInvitation)}`)

    const roomInvitationObject = bot.RoomInvitation.load(roomInvitation.id)

    const jsonData = await roomInvitationObject.toJSON(roomInvitation.id)
    console.log(`jsonData : ${jsonData}`)
})
.start()

If we use JSON.stringify() here in room-invite event for , it will call toJSON() method in RoomInvitation class without params.
If we remove the first console.log(), everything ok.

So you get to know why your toJSON get called, am I right? You can fix this by comment out your console.log line.
The reason is the console.log will call JSON.stringify(roomInvitation) which will invoke the roomInvitation.toJSON() method. (this behavior is defined by specification)
I have two questions about your code:

why are you using bot.RoomInvitation.load(roomInvitation.id) ? I believe you will get a roomInvitationObject === roomInvitation at last.
why you call toJSON with argument roomInvitation.id like this: roomInvitationObject.toJSON(roomInvitatoini.id) ? Instead of your way, I will prefer to use JSON.stringify(roomnvitation). Does that can archive your goal? If not, why?

You are right for there two questions.
Code:
bot.on('room-invite', async (roomInvitation: RoomInvitation) => {
    const jsonData = await roomInvitation.toJSON()
    console.log(`jsonData : ${jsonData}`)
})
.start()

Great. I hope we are good now.
Cheers!

Please close this issue if there's no more questions, thank you very much!

One more thing to discuss, shall we add an id to the payload, so we can distinct these payloads whether they are duplicates or not?

Do you mean to add id in RoomInvitatoinPayload?
If so, I believe we have it already:
https://github.com/wechaty/wechaty-puppet/blob/725138b01cdf2553560912713047b842d49b8a36/src/schemas/room-invitation.ts#L2

Yep, it's already there, and everything looks marvelous! Close this issue!
Thanks everyone for the help!

We missed the receiver property on this payload.
:(
So let's open this issue and add the receiver to the payload.
Without the receiver, it is impossible for user to know whom an invitation sent by the bot itself sent to. Because the invitation sent by the bot will have the inviter as the bot, and no other information to tell who is the receiver.


WIP: Testing CI

Please ignore.

Closing, since this was not intended to be merged (and it's after feature freeze now anyway).


remove limiter from walkShards

Fixes artificially limiting walkShards.  Bug was introduced in #7015.  We are always IO bound in thes operations so we should let the scheduler do the work for us.

[x] Rebased/mergable
[ ] Tests pass
[x] CHANGELOG.md updated

👍

Can you update desc with issues this fixes?

👍


Delete NTLS unused code, supported_versions and extended_master_secret

Fix #198

Merged to master, please cherry-pick this into branch-8.3 manually


please add unicode version for each emoji

for example, if i know that the target os is windows 10, which had it's last emoji update of emoji 12.0 in 2019, i could filter out all newer emoji.
this would be very useful.

i want to use this in an obsidian plugin, so i would check for the os and then filter out unsupported emoji. (using an older version is not an option, some systems might support it).
if there is a reliable mechanism to filter out emojis that cannot be displayed in js, please let me know. your point about a custom font is valid, i'd rather check against the font directly. i'll do some further research

obsidian plugin

Doesn’t obsidian run in a browser?
The OS is not what you are looking for. The version when it was added to unicode is not what you are looking for.
People might support it. Or not. Relating to fonts. Not OS/Unicode.

i found this - looks kind of hacky,

Right. You can detect if something is rendered, currently.
But emoji are bytes sent over the internet. Just like an a or whatever else.
There is nothing guaranteeing that viewers on the other side of the wire can or cannot see them.

i could also possibly add an emoji-only font to fill in the missing native emojis

Yes, you could.

Closing is wontfix for this use case!


Remove version: CrystalDewWorld.CrystalDiskInfo.AoiEdition version 9.4.4

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: Duplicate;


Update Finance learning catalog for FC

:x: Organization membership check failed
Members of the MicrosoftDocs organization should use the private repo. Please move your changes to https://github.com/MicrosoftDocs/Dynamics-365-Operations, and close this pull request.


Logical folders in Project List

Hello guys,
in a past weeks I collected a lot of demos and example projects for Godot and I have them all loaded to Project List. But having 50+ projects in the list became confusing and harder to browse (even though ability to favourite is useful). So I ask if it is possible to add logical folders to Project List so me and some other hoarders could better organize their projects.

Good question, I was thinking of maybe having categories or tags, or having
a project come with a default category but then allowing you to change the
tag to something you like?, I'm not sure.
On Wed, Aug 10, 2016 at 1:01 PM, Martin Novák<EMAIL_ADDRESS>wrote:

Hello guys,
in a past weeks I collected a lot of demos and example projects for Godot
and I have them all loaded to Project List. But having 50+ projects in the
list became confusing and harder to browse (even though ability to
favourite is useful). So I ask if it is possible to add logical folders to
Project List so me and some other hoarders could better organize their
projects.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/6105, or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z2wulrPBUtk68FLndyY7PFQJDmHG4ks5qefXYgaJpZM4JhTY3
.

Custom tags could be nice aswell. :)
This arrangement of tags is what came to my mind right now so they could be used for searching in Templates library:

primary: 3D, 2D, 2D&3D, ...
secondary: demo, example, project, ...
third level (user editable tags): platformer, RPG, controls, FPS, ...
First two levels of tags might be selectable from predefined list of tags and the third could just have suggestions (maybe from tags already used in project uploaded to Templates).

Pretty bump, any updates here? (tagging as pr-welcome for all free contributors :wink: )

just to leave my (irrelevant) 2cents here:
for me this is totally a non-issue, I never felt the need to organize a projects list. Because you usually work in one (or very few) projects at a time. Its not like a photo album. I even remove projects which I consider finished, if I need them later I'll import again, but its so rare. I prefer a clean and usable projects list than a complex one full of hierarchies.
there's also a searchbox, which will probably filter faster what you need than (de)selecting categories or folders

Do you think that bundling all official examples projects into one, or a few projects, could be relevant ?

@DriNeo as far as I know, the official demos will be moved to the asset lib and users can download them on-demand

I'm facing this problem, my solution is a different self contained Godot for different purposes, I can't test issues, do experiments and other things and work on my serious projects on the same place, is a mess.
Also without project descriptions you are limited to search by project name and there is a point everything turns into trial and error :sweat_smile:

@eon-s I have 1 or 2 junk projects where I just go to test stuff out, there's no need to create yet another project just for testing something. That's why we have scenes which can run independently :)
Just spend 5seconds writing a good project name and it works wonderfully :)

@nunodonato yes, I do that too but I can't do it for everything (because settings and other specific mess I do xD ).
I have mentioned description and project "tags" on another issue, that could help on the organization.

My projects are named "xxx xxx xxx prototype" and then after I create copies of it for whatever reason, I end up with several project with the same name (as far as the project list is concerned) but in different folders.

Of course, different people have different workflows. It just needs to be non-obstructive for the people who won't use it.

Folders/tags/renaming, either of the three would help massively.

@Zireael07 you can rename a project in its own project settings

Imagine using Godot for a course, having class material and student projects = hellish project manager

create a "students" folder, then filter by path ;)

@nunodonato path filtering is useless if does not accept multiple words, there is where tags are stronger.

I didn't find a way to clear the project list. If it is possible easily this could help to keep a clean project manager.

Just wanted to mention this. Sometimes the list of projects randomly gets reordered for me. Don't know why.

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.
The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.
If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!


If items don't have the key attribute, rowMap is useless

Hello, if the items in the list don't have the key attrubute, rowMap becomes one big merged row. I tried to use keyExtractor, but SwipeList seems to ignore it and still needs the key attr in the data prop.
The problem in my case is that I had to explicitly add the key attribute to the data prop to use .closeRow().
Is this a bug or am I doing something wrong? For me the expected behavior would be to use any data shape, a proper keyExtractor and still have the rowMap working correctly. Please correct me if I'm wrong.

+1

Hey @michaelkowalski @elioncho I'm trying to repro this but I'm just not seeing the same issues. I'm going to lay out everything I'm looking at and you tell me what I'm missing.
Here is my example code. I do not have keys in my data array. Instead I'm using a keyExtractor and using data.text as the key since it is unique.
Note that the log in onRowDidOpen is showing the correct key, and the rowMap which is an object where the keys are the keys from keyExtractor and the values are the SwipeRows. The row is closing on scroll and when I click "close".
Also note when I invoke closeRow I'm passing the data.item.text as the second arg since that is what I use as my unique keys.
class App extends Component {
    constructor(props) {
        super(props);
        this.state = {
            listViewData: Array(20)
                .fill('')
                .map((_, i) => ({ text: `item #${i}` })),
        };
    }

    closeRow(rowMap, rowKey) {
        if (rowMap[rowKey]) {
            rowMap[rowKey].closeRow();
        }
    }

    onRowDidOpen = (rowKey, rowMap) => {
        console.log('Row key: ', rowKey);
        console.log('Row map: ', rowMap);
    };

    render() {
        return (
            <View style={styles.container}>
                <SwipeListView
                    data={this.state.listViewData}
                    keyExtractor={item => item.text}
                    renderItem={data => (
                        <TouchableHighlight
                            onPress={() => console.log('You touched me')}
                            style={styles.rowFront}
                            underlayColor={'#AAA'}
                        >
                            <View>
                                <Text>
                                    I am {data.item.text} in a SwipeListView
                                </Text>
                            </View>
                        </TouchableHighlight>
                    )}
                    renderHiddenItem={(data, rowMap) => (
                        <View style={styles.rowBack}>
                            <Text>Left</Text>
                            <TouchableOpacity
                                style={[
                                    styles.backRightBtn,
                                    styles.backRightBtnLeft,
                                ]}
                                onPress={() =>
                                    this.closeRow(rowMap, data.item.text)
                                }
                            >
                                <Text style={styles.backTextWhite}>Close</Text>
                            </TouchableOpacity>
                            <TouchableOpacity
                                style={[
                                    styles.backRightBtn,
                                    styles.backRightBtnRight,
                                ]}
                            >

I don't see anything wrong. This is what I'm personally doing.
I am trying to display an array of basic array of objects:
[{"id":20,"name":"Item 1"},{"id":2,"name":"item 2"},{"id":3,"name": "item 3"}]
    <SwipeListView       keyExtractor={item => String(item.id)}       data={lists}       renderItem={data => (         <ListItem           title={data.item.name}           onPress={() => {             navigate('ListDetails', {                listId: data.item.id,               listName: data.item.name             })           }}         />       )}
If I remove the keyExtractor prop and add the key property to every element of the array it works. I'm not sure what I'm doing wrong then.

Hey @elioncho I'm not seeing any closeRow function here, what exactly is the issue you're trying to fix?

Sorry, I copied the whole component and the closeRow and deleteRow functions in the following example. The only thing I'm not copying are the styles.
  useEffect(() => {
    Client.lists.index()
      .then(result => {
        **result.forEach(item => item['key'] = item.id); // adding key to make it work**
        setIsLoading(false);
        setLists(result);
      })
  }, [])

  closeRow = (rowMap, rowKey) => {
    console.log('rowKey', rowKey);
    if (rowMap[rowKey]) {
        rowMap[rowKey].closeRow();
    }
  }

  deleteRow = (rowMap, rowKey) => {
    closeRow(rowMap, rowKey);
    const newList = [...lists];
    const prevIndex = lists.findIndex(item => item.key === rowKey);
    newList.splice(prevIndex, 1);
    setLists(newList)
    Client.lists.destroy(rowKey);
  }

<SwipeListView
      keyExtractor={item => String(item.id)}
      data={lists}
      renderItem={data => (
        <ListItem
          title={data.item.name}
          onPress={() => {
            navigate('ListDetails', {
              listId: data.item.id,
              listName: data.item.name
            })
          }}
          bottomDivider
          chevron
        />
      )}
      renderHiddenItem={({ item }, rowMap) => (
        <View style={{
            alignItems: 'center',
            flex: 1,
            flexDirection: 'row-reverse',
            // justifyContent: 'center',
        }}>
          <TouchableOpacity
            onPress={() => {
              closeRow(rowMap, item.key);
              navigate('EditList', { list: item })
            }}
          >
            <Text>
              Edit
            </Text>
          </TouchableOpacity>
          <TouchableOpacity
            onPress={() =>
              deleteRow(rowMap, item.key)
            }
          >
            <Text>
              Delete
            </Text>
          </TouchableOpacity>
        </View>
      )}
      rightOpenValue={-150}
      style={{ marginBottom: 60 }}
      keyExtractor={(item) => String(item.id) }
      ListEmptyComponent={
        <EmptyComponent message="You haven't created any lists yet." />
      }
    />

If I remove the line in bold that adds the key property to the array I will get a:
rowKey undefined

on the console.log on the closeRow function.

Hey @elioncho thanks for the detailed example and sorry for the delay in responding.
So in your example if you don't have a key set on every object in your data than indeed item.key will be undefined as you pass it to your closeRow function. In that case you'll have to  pass the same "key" that your keyExtractor function is creating for each object. So in your example you should change this line:
<TouchableOpacity
  onPress={() => {
    closeRow(rowMap, item.key);

to this:
<TouchableOpacity
  onPress={() => {
    closeRow(rowMap, String(item.id));

And all should work as intended :) let me know if that's not the case, thanks!

Worked perfectly, thanks!

Going to close this, please reopen if anyone else has issues, thanks

Jessie @jemise111 I'm wondering, why does the key (see the item.key I quote here) need to be a String, presently?
My keys are all integers, everywhere.  Coming at this straight and clean, no legacy to worry about, this machination is a source of cognitive loading, and code complexity.   So I'm fascinated, why a string, strictly?
<TouchableOpacity
  onPress={() => {
    closeRow(rowMap, item.key);

Hey @StevenBlack in this case above I was simply using the key provided by the OP's keyExtractor function above. i.e.
keyExtractor={item => String(item.id)}

You could, in theory, use integers for your keys. This component will function properly. However you will get a warning from react-native. See this discussion for more:
https://github.com/facebook/react-native/issues/18291

ah!  So ignore the warning.  Cool!  That's valuable input.  Thank you, Jessie @jemise111.


Dokku installation in vagrant stuck at importing herokuish into docker

I have ubuntu 14.04 fresh install Vagrant VM, and tried to install dokku v0.4.3 using bootstrap.sh. I set up the VM with 1GB memory. The problem is that the installation always stuck at "Importing herokuish into docker". Although it says that it will take about 5 minutes, but i have waited for about 30 minutes and still, the installation doesn't continue. Is it normal?
Setting up python3-pycurl (7.19.3-0ubuntu3) ...
Setting up python3-software-properties (<IP_ADDRESS>) ...
Setting up software-properties-common (<IP_ADDRESS>) ...
Setting up python-pycurl (7.19.3-0ubuntu3) ...
Setting up python-software-properties (<IP_ADDRESS>) ...
Setting up herokuish (0.3.4) ...
Importing herokuish into docker (around 5 minutes)

That isn't normal. Can you try using the VM that comes with the dokku repository and see if that works?

Could be a transient issue with the docker hub or a networking issue on the client. Definitely not normal. Try destroying the vagrant machine (vagrant destroy) and bringing it up again (vagrant up).

Ah @josegonzalez is on it. I thought this was from our Vagrantfile. My bad.

The bootstrap method should also work but I think thats a transient issue. Just want to make sure our vm works for you as well.
Are you perhaps behind a firewall or a "bad" internet connection? It's a fairly large file that needs to be downloaded/compiled.

Thank you for your answers.
Actually I tried to run this command manually sudo docker build -t gliderlabs/herokuish /var/lib/herokuish, since this code is in deb.mk. Now i can see logs that display download progress of docker.io/heroku/cedar repository. I don't know the total size of heroku cedar stack repository that need to be downloaded, but it seems the download process is quite slow. I tried to download file from another site just to test the connection, and the speed is fast enough. By the way, where i can find VM you mentioned @josegonzalez?

@dianseptiana the vm is included with the dokku repository. Simply clone this repo and vagrant up in it.

The file is about 500mb, so maybe you are being throttled on connecting to docker.io. Try downloading another large image from there. Are you on a local connection or on a VPS somewhere?

I'm on local connection. I tried to create instance in amazon EC2, and install using bootstrap.sh. The installation completed successfully without any issues. I guess there is connection problem on my network when pull from docker.io.
I also tried the VM that come with dokku repository.  Meanwhile when install using bootstrap.sh it just display Importing herokuish into docker (around 5 minutes).

Although i tried using VM that come with dokku and it's display download process log, it still slow in my local machine. Then i found this https://github.com/docker/docker/issues/13309, i think it's related because when download smaller layers, the connection is fast. But when download the large layer with 448.2 MB size, the connection become very slow.

Welp, this is an upstream issue, so not much we can do about it.


Add Profile API

Add Profile API
Checklist

[x] By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and subject to the Developers Certificate of Origin.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@ticheng-aws Thank you for reviewing! I implemented your comments. Could you take a look again?

@ticheng-aws Thank you for reviewing! I implemented your comments. Could you take a look again?

Hi @kolchfa-aws, thank you for adding this. LGTM now.


Internal proxy resets connection from layer when running shell with mirrord and piping input

Bug Description
When running a shell (was observed with both sh and zsh) that reads some commands from stdin with mirrord the internal proxy sometimes resets an incoming connection from a layer and an error is displayed.
Steps to Reproduce
echo "nvm use" | MIRRORD_PROGRESS_MODE=off mirrord exec -f .mirrord/mirrord.json zsh -- -is

where .mirrord/mirrord.json is:
{
    "accept_invalid_certificates": true,
    "target": {
        "path": {
            "deployment": "dotenv"
        }
    },
    "feature": {
        "network": {
            "incoming": "mirror",
            "outgoing": true
        },
        "fs": {
            "mode": "localwithoverrides",
            "read_only": ".*/.env"
        },
        "env": true
    }
}

Also reproduced with just echo "nvm use" | MIRRORD_PROGRESS_MODE=off mirrord exec zsh -- -is, but less often.
Backtrace
No response
Relevant Logs
2023-07-24T20:16:49.964783Z ERROR ThreadId(09) mirrord_layer::connection: Couldn't connect to internal proxy: Os { code: 54, kind: ConnectionReset, message: "Connection reset by peer" }, <IP_ADDRESS>:51068

Your operating system and version
macOS 13.4
Local process
zsh
Local process version
No response
Additional Info
The error never reproduced with trace level logs.
Running zsh with that stdin results in hundreds of execves, each of them results in the initialization of a new layer, each of those layers connects to the internal proxy (most of them soon disconnect as their process is replaced by the next executed process).
So one thing I'm looking into is whether the internal proxy is somehow overwhelmed by that crazy chain of process execusions.

Now getting connectionrefused from internal proxy

#1724 did not fix this. It seems like the intproxy does not die, but sends a RST to one request, but then keeps accepting other requests, after some connections close, so we think maybe it reaches some limit of connections (and running a shell with mirrord triggers it because it executes hundreds of processes). It seems like setting ulimit -n 1024 makes the issue happen less often, but maybe it was random.
There is also https://github.com/rust-lang/rust/issues/55614
As a solution to this kind of problem, regardless of where the bottleneck is exactly, we want to make the connection to the intproxy lazy, so that we only create a connection once we actually want to send a message. That way the hundreds of processes that don't trigger any hook, and don't need to send any message won't connect to the intproxy. @aviramha will take the issue from here.


[Bug]  A problem in ProbeTool affects the normal use of EraserTool.

Describe the Bug
When using EraserTool, it does not correctly clear the markers generated by ProbeTool。
Steps to Reproduce

using ProbeTool
using EraserTool
trying to delete probe markers

The current behavior
EraserTool not working,it does not correctly clear the markers
The expected behavior
EraserTool can correctly remove the markers.
Looking at the source code for ProbeTool I noticed a comment on lines 128-129, I'm wondering if there's a specific reason for this, if it doesn't have an effect I'll remove this code on the version I'm using
isPointNearTool is used in EraserTool, which needs to return a correct result, not like this
in ProbeTool
  // Not necessary for this tool but needs to be defined since it's an abstract   // method from the parent class.   isPointNearTool(): boolean {     return false;   }
in EraserTool
      for (const annotation of interactableAnnotations) {         if (           toolInstance.isPointNearTool(             element,             annotation,             currentPoints.canvas,             10,             interactionType           )         ) {           annotationsToRemove.push(annotation.annotationUID);         }       }     }
AnnotationEraserTool
ProbeTool.ts
OS
Windows 11
Node version
18
Browser
edge

I think i know what is going on

Is there a solution now


Constant for contract type

Pull Request Test Coverage Report for Build 233

8 of 8 (100.0%)  changed or added relevant lines in 3 files are covered.
22 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.7%) to 95.879%

Files with Coverage Reduction
New Missed Lines
%

openregistry/lots/loki/tests/base.py
1
98.73%

openregistry/lots/loki/models.py
1
97.08%

openregistry/lots/loki/tests/blanks/auction_blanks.py
20
95.07%

Totals

Change from base Build 232:
-0.7%

Covered Lines:
2955

Relevant Lines:
3082

💛  - Coveralls


OServerMain.server().shutdown() throws org.apache.lucene.store.AlreadyClosedException

2.2.0-beta
org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:719)
at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:733)
at org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:2943)
at com.orientechnologies.lucene.engine.OLuceneIndexEngineAbstract.closeIndex(OLuceneIndexEngineAbstract.java:400)
at com.orientechnologies.lucene.engine.OLuceneIndexEngineAbstract.close(OLuceneIndexEngineAbstract.java:251)
at com.orientechnologies.lucene.engine.OLuceneIndexEngineAbstract.onShutdown(OLuceneIndexEngineAbstract.java:521)
at com.orientechnologies.orient.core.Orient.shutdown(Orient.java:326)
at com.orientechnologies.orient.server.OServer.shutdown(OServer.java:458)

Hi, could you add the code?

Hmmm... I have test, which creates & deletes vertices etc and calls shutdown() in @After. I dont think the exact test code does matter
Most probably I close index twice, but anyway - server should have graceful shutdown

Yes, I agree on graceful shutdown.
It seems that the close on the underlying LUCENE index it is called twice.
Having code, even so simple as a test case, could help me understand what is going wrong.

Ah, it seems I just called shudown() twice
Really, I got stucked with lucene indexes (
https://groups.google.com/forum/#!topic/orient-database/MMVQAj3FlvE), so
stopped testing
On Wed, Dec 16, 2015 at 3:31 PM, Roberto Franchini<EMAIL_ADDRESS>
wrote:

Yes, I agree on graceful shutdown.
It seems that the close on the underlying LUCENE index it is called twice.
Having code, even so simple as a test case, could help me understand what
is going wrong.
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/5466#issuecomment-165092253
.

--
Valeri.


Hard Truck: Road to Victory

The game is very fussy and practically doesn't work for modern operating systems (including Windows XP SP2~SP3), constantly pop-up window errors related vehicle physics, render, events and legacy extension Windows 9x. For a long time there were no any solutions. Even "dgVoodoo2" and early "cnc-ddraw".
Recent update "cnc-ddraw" started working pretty well without any crash, only "Screen" mode and "Large" (800x600) &  "Medium" (640x480) resolution.  No "Window" mode and "Small" (320x200).
Here are the settings created for ".ini":

; Hard Truck: Road to Victory
[htruck]
maxgameticks=25
renderer=opengl
noactivateapp=true

Vehicle physics is strongly tied to 25 FPS, like "Interstate '76". Beyond the limit ~50 FPS starts to break falling trajectory of raindrops for windshield only horizontally - left and right, should be fall 5~45 degrees to below hood.
renderer=direct3d9 - launches without application to taskbar, first encounter such executable file.  noactivateapp=false -
the application may be lost, if you press alt+tab, alt-win, shift+esc.
The later version of the game added support for 3D accelerators - "Accelerator" mode. Before running only software mode. It cannot start as "cnc-ddraw" it requires 16mb vram, although it can work with 12mb vram in real hardware. Could there be any way out?

I just added the preset, thanks for sharing! Will have a look into the game soon, maybe I can do a few more improvements.
About the 3D accelerators: cnc-ddraw doesn't support these at all, it only has a few dummy interfaces for logging but there's actually no code behind it to handle anything. It only works for DirectDraw games right now, not sure if that will change in the future

I just added the preset, thanks for sharing! Will have a look into the game soon, maybe I can do a few more improvements.
About the 3D accelerators: cnc-ddraw doesn't support these at all, it only has a few dummy interfaces for logging but there's actually no code behind it to handle anything. It only works for DirectDraw games right now, not sure if that will change in the future

Thanks for response. I understand that "cnc-draw" can't fully display Direct3D. Perhaps, this situation to beginning research the issue, because this engine created quite strange, old DDraw wrappers (without D3D) managed to launch the game with obvious graphical artifacts - some textures blank, no bilinear textures, problem transparent textures. Main difference is 3D cabin interior, geometry rendering (vertex lighting) and bilinear texture.
Shows this error when running "cnc-draw":
warning :
Internal error, please contact<EMAIL_ADDRESS>(can not find device One or more of the parameters passed to the method are incorrect. )
 0
The engine itself has some kind counter performance of your hardware in first start, check out in file "TRUCK.INI".

vpss=0
pf=2
vpsm=0
vpsl=0
vpas=0
vpam=0
vpal=0
video=65842

This setting is at the end of ini file "TRUCK.INI", enable support for all render modes, included "Accelerator" mode.


Black Empire Tech tree and roster

Things to do:

[ ] pit of torment icon
[ ] add new building
[ ] move forgotten one to newbuilding
[ ] add the Akir to new building
[ ] delete the oldhero
[ ] create herald unit at the wizard building
[ ] move stygian hulk to third building
[ ] move gladiator to barrack
[ ] make gladiator limited
[ ] forgotten one spawn tentacle is not passive
[ ] fateweaver Q doesnt have attack
[ ] caster upgrades
[ ] add third hero to altar
[ ] spawn flying horror icon is not passive
[ ] stygian hulk slower walk speed
[ ]


Partial answer responses

I checked the code for this and it doesn't seem to exist at a quick glance. This is very convenient to have IMO, especially for quickly-written puzzles which might often end up with alternate plausible-seeming answers, or for puzzles for newer solvers where clue phrases might be good to have as partials to confirm that the solver is on the right track.

Part of this is in the codebase at https://github.com/PuzzleTechHub/myus/blob/main/myus/myus/models.py#L100
I don't know if it connects anywhere/where it connects to though. Definitely doable with a single UI update


Can Cancelled be added as a terminal state?

This is related to https://github.com/Azure/azure-resource-manager-rpc/issues/144 where Cancelled is used in a large percentage of specifications instead of Canceled. You can see it is used a lot in this repository https://github.com/Azure/azure-sdk-for-go/search?q=cancelled .
Rather than adding Canceled to the specifications that already use Cancelled, would it not be a better user experience to update the IsTerminalState to support the alternative spelling?
https://github.com/Azure/azure-sdk-for-go/blob/b386adc15c2e60e3812956f68d244b608330c479/sdk/azcore/internal/pollers/util.go#L24-L40

Fix will be included in the next update of azcore post v1.4.0.


Lesson 3 (Props) canonical answer does not pass tests

Lesson 3 is fairly confusing all the way around, but one egregious issue is that the canonical answer won't pass tests:
https://github.com/workshopper/learnyoureact/blob/fa578ba8ae498b297b9b532336fad5677c07b5c3/exercises/props/solution/views/index.jsx#L19
5.  ACTUAL:    "
"
5.  EXPECTED:  "
"

@entendu This is an error caused by the difference between the version of react being used by learnyoureact to evaluate the solution and the version you have installed. In general, the whole workshop should be updated to be consistent with the latest version of react

so what is the solution ?

you can just escape it in .jsx

I changed the code by


Fix resolving property files

I have another PR incoming, but the tests ran (I by default skip tests during builds not related to testing) and this failed.


Add function that takes a foldable of requests and batches them immediately (no delay)

This won't work because there are multiple responses.


FileSystemProvider: workbench load hangs on remote files

VSCode Version: 1.20.0-insider (f9115349ef09cfef2bed669680d10ac58b490dce, 8697a5e4ec152832a2612929c87d56302dbb2e79)
OS Version: Mac 10.13.1

Steps to Reproduce:

Register an extension with a file system provider
Launch the extension
Open a saved workspace
Open some remote files
Close the launched instance (not sure if the issue is caused by a particular way I closed the instance.... kind of a pain to test this when I don't know how to reset the workspace state.)
Relaunch vscode
Observe:

vscode shows tabs for the remote files, but displays a progress bar in the editor and explorer areas.
dev tools console: "WARN Workbench did not finish loading in 10 seconds, that might be a problem that should be reported."
after several minutes, no extensions have been activated yet; nothing loads.

There doesn't seem to be any way to get vscode to load the workspace without recreating the workspace file. (Is there a way to reset the state of a workspace so vscode doesn't try to reopen the remote files?).

Does this issue occur when all extensions are disabled?: Yes

Verified with a local ftp server.


Add column status_reason_code to table aws_securityhub_standards_subscription

The GetEnabledStandards API now outputs a StatusReasonCode with valid values NO_AVAILABLE_CONFIGURATION_RECORDER | INTERNAL_ERROR.
It would help to diagnose subscriptions that are not in a ready state.

@iainelder Thanks for using Steampipe!!
We are actively working on it, will keep you posted. Thank you

@iainelder We've added the standards_status_reason_code column to the aws_securityhub_standards_subscription table in v0.51.0. If you run into any issues, please let us know, thanks!

Works for me!
Can we include the new column in the example query "list standards whose status is not ready?
select
  name,
  standards_arn,
  standards_subscription_arn,
  standards_status,
  standards_status_reason_code
from
  aws_securityhub_standards_subscription
where
  standards_status <> 'READY';

@iainelder Thanks for the suggestion, I just updated the doc, so in our next release the Hub doc will be updated.


Connect to vehicle with high priority audio playback

I'd like to connect to my vehicle in a higher priority way than a media player, for audio playback (not capture). I've noticed that, for example, with my phone connected to the car, if a phone call comes in, the audio switches to the phone call, rather than whatever else the phone might have been playing. This seemed to be more than just the phone prioritizing the audio, because if I was even just listening to the radio, the car would switch over to Bluetooth.
Currently, I'm using A2DP, which doesn't perform that auto-switching behavior when audio is played. From what I can tell, there is a chance that maybe one or both of HSP or HFP might be able to trigger the switchover (although I'm hoping HSP can handle it rather than the complexity of HFP).

Which is the minimal correct profile for this? hsp-ag or hfp-ag?
For hfp-ag, I saw it mentioned that internal hfp was buggy in the past, has it been fixed?
From what I can tell, in order to play over either hsp-ag or hfp-ag I need to use sco. No matter which profile I use (-p hsp-ag, -p hgp-ag, or even when I don't give -p), I hear a click on and click off, but I don't hear any audio. There are no error messages in the log. If I use a2dp without -p, the audio plays, but a2dp doesn't seem to be allowed for hsp-ag or hfp-ag.

Example hfp-ag playback:
aplay -D bluealsa:DEV=6B:F4:54:06:AC:D1,PROFILE=sco test.wav
bluealsa-pcm.c:589: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Setting constraints
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
bluealsa-pcm.c:319: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing HW
bluealsa-pcm.c:346: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: FIFO buffer size: 4096
bluealsa-pcm.c:352: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Selected HW buffer: 4 periods x 2000 bytes == 8000 bytes
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:389: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Prepared
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:240: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Starting
bluealsa-pcm.c:134: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Starting IO loop: 8
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:367: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Initializing SW
bluealsa-pcm.c:280: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Stopping
bluealsa-pcm.c:104: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: IO thread cleanup
bluealsa-pcm.c:280: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Stopping
bluealsa-pcm.c:359: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Freeing HW
bluealsa-pcm.c:309: /org/bluealsa/hci0/dev_6B_F4_54_06_AC_D1/sco: Closing

bluealsa output:
bluealsa: bluealsa-dbus.c:134: Called: org.bluealsa.Manager1.GetPCMs()
bluealsa: bluealsa-dbus.c:328: Called: org.bluealsa.PCM1.Open()
bluealsa: ba-transport.c:601: State transition: 2 -> 2
bluealsa: ba-transport.c:848: New SCO link: 17 (MTU: R:48 W:48)
bluealsa: ba-transport.c:678: PCM drained
bluealsa: ba-transport.c:882: Closing PCM: 8
bluealsa: io.c:126: PCM read buffer flushed: -1
bluealsa: io.c:126: PCM read buffer flushed: -1
bluealsa: ba-transport.c:858: Closing SCO: 17

I saw in #214 that sbc was crashing on ARM. However, I guess that's not it, because I'm not enabling the configure option that was causing the crash, and also, I'm using 1.4 where they'd already fixed it.

This bug report is too complicated. I'm going to close it and open one that focuses on SCO not playing.


add replace

[ ] Added an entry to CHANGELOG.md if this change could be valuable to users

Fixes #1223


Custom response types for client query

This merge request should address #56
Added a responseType property to the Action allowing to resolve a response to a specific data type, .i.e. 'arrayBuffer' | 'blob' | 'json' | 'text' | 'formData'. I included a test for resolving a response to a blob.
Furthermore, I also update the documentation on useQuery hook to included the loaded boolean value as part of the returned object and created a type for the useQuery return value (UseQueryResponse<T>).

Codecov Report

Merging #57 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #57      +/-   ##
==========================================
+ Coverage   99.59%   99.59%   +<.01%
==========================================
  Files          16       16
  Lines         245      248       +3
  Branches       46       46
==========================================
+ Hits          244      247       +3
  Misses          1        1

Impacted Files
Coverage Δ

src/hooks/useQuery/useQuery.ts
100% <100%> (ø)
:arrow_up:

src/client/client.ts
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Image problem: drawable-nodpi\pugnotification_ic_placeholder.png

AAPT err(Facade for<PHONE_NUMBER>): D:\Test\app\build\intermediates\exploded-aar\com.github.halysongoncalves\pugnotification\1.8.0\res\drawable-nodpi\pugnotification_ic_placeholder.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited.

it's the first time I use github.
How can I get the project, fix the problem and push it here ?

@hateum Not quite understand your question. Would you like to submit a pull request?

I have saved the image with sRGB profile using photoshop and I asked you haw can I pull this

Hi @hateum ,
He could fix the problem?

@halysongoncalves  yes, photoshop can do it.


Token error

Hi,
I am trying to get the Eufy Security Add-on working and I get the following log:
2021-11-19 20:39:27.076 INFO Authentication properties changed, invalidate saved cloud token.
2021-11-19 20:39:27.090 INFO Eufy Security server listening on port 3000
2021-11-19 20:39:27.846 INFO Switching to another API_BASE (https://security-app-eu.eufylife.com/v1) and get new token.
2021-11-19 20:39:27.901 ERROR Status return code not 200
{
status: 204,
statusText: 'No Content'
}
2021-11-19 20:39:27.904 ERROR Token error
Any idea what to do?

I have the same issue. My guess is that the url is wrong. I tried to run some http requests to the eufy api a coupe of months ago, and I had to change the url for it to work. I cant find the script i made, and dont remember what the new url was. I guess by your username that you have set he country to NO aswell.

seems the error is with bropat/eufy-security-client
https://github.com/bropat/eufy-security-client/issues/67

I had this error (Running in Docker) and changed my COUNTRY env var from GB to gb which enabled it to get past this inital step, getting different errors now but at least got past that one.

Hey, I've just updated eufy-security-ws (v. 0.6.0) (and eufy-security-client (v. 1.4.0)) and I'm still facing this issue. I've tried removing my persistent.json file but it didn't helped either. Is there anything else I should do?


iconfactory.splash can't be called directly unless options are passed.

When splash is called via other methods i.e Electron, Cordova it passes options but doesn't set any defaults.

The defaults are in the options file...


Simplification of SDK

This PR simplifies the SDK, by using the context.Context to pass
data between Endpoints in the chain.
By doing this, and a few other minor changes, the Endpoints used
in CompositeEndpoint just need to be normal implementers of
networkservice.NetworkServiceServer
Among other things, this means that CompositeEndpoints can be nested
within each other.
Note: Updates to sdk/README.md will be forthcoming.
Signed-off-by: Ed Warnicke<EMAIL_ADDRESS>
Description

Motivation and Context

How Has This Been Tested?

[ ] Covered by existing integration testing
[ ] Added integration testing to cover
[ ] Tested locally
[ ] Have not tested

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

I like that child endpoints of a composite endpoint are called in direct order now, it looks more clear and seems it is exactly what you asking about in #1282

@onobrod Yes, but what you wrote was congruent with the SDK as it was at the time.  You did well.  It just brought a bunch of other things to my attention which I'm hacking at :)

Work is moved into #1524


Clang 3.7 fixes

Some fixes for clang (3.7).
Note: Tests must be disabled to get cpputest compiled with Clang, since they fail to build (#807).

I think I've made all the same changes (plus more) for clang3.7.
Could you check the current trunk and let me know if it works?

Great!
Build & Test work on latest GCC and Clang, each with and without C++11 enabled (tested on Linux).


mrwebrtc.dll crash with more than one Webcamsources (eg. 2)

If the project has more than one webcamsource it crashes on play.

I can very well believe that, this sounds like a bug in that we shouldn't crash. That being said, I also don't expect that opening multiple times the same webcam will work.

Sounds about right.
I was trying to get in images from 2 different webcams. Though right now it appears that I've to do that with an 'externalvideosource'
Do you have more documentation on how to do that available?

Ah. I would still have expected that forcing 2 instances of WebcamSource to use 2 different physical devices would work. Do you have more info about that crash? Is that in the Unity editor, or in a standalone build? Which platform/arch? Do you have a callstack? It feels like that feature should work. I was talking about opening the same physical device twice, which is more complicated.
For ExternalVideoSource, you have to feed video frames via a callback. So you need to manage capturing those frames from the 2 webcams by yourself, and converting to I420 or ARGB if needed. The approach depends on what API you use (Unity, Win32, UWP, other...) and will likely be platform-dependent (except Unity) but I have never tried it.

The editor crashes on play when I duplicate a webcamsource.
I have not tried much further yet - currently I'm using 2 Basler cameras via a genicam interface (an area im quite new to).
Does the mrwebrtc provide a way to give them more information? I have not found any documentation on this, but in OBS i can configure the video on the 'webcam' and select there the specific camera.
That said I'd like to do a screenshare too - my understanding is that there the ExternalVideoSource is again the way to go?


Add classes to wizard component

I've had the need to target specific HTML elements in the wizard component, so I've added some filament classes to several elements. I'm not too sure about the class names though. Any suggestions for different names are welcome.

Thanks


Update multiple-output.js

await fs.promises.writeFile(p, ffmpeg.FS('readFile', p)); is writing 0-byte files (as mentioned in #170). Using fs.WriteFileSync exports files properly. If there is a better way, by all means, reject these changes. But this change fixes #170 for me.

Thanks for the PR, looks good to me!


feat: add utils section to storybook

Closes #6416
Initial PR to include a section in storybook for utils. includes moving some components to this new section.

awaiting review from @aubrey-oneal and anyone else who wants to weigh in with IA opinions, etc


Reset

Home page when you log in, reset password page to change password (no requirements for password set), updated style sheet

Dont commit this comments are all deleted

Logic looks good please save and re-pull main and redo it then push again with the comments

Order go and readd comments and make new pull request

lgtm


Y2K-383 normalize emails

This doesn't do much. We are already normalizing e-mails manually in both processing contacts and user search. I was initially going for a rework of how some types work and introduce a NormalizedEmail type so it's obvious what's going on. Ideally I'd like to be consistent with stuff like go/externals/proof_service_*.go NormalizeUsername functions. But I ran into some issues with mixed casing names w.r.t display names and SBS handling and didn't get to this in time.

I'll merge this and a made a new ticket to figure out hackernews and where to downcase it.
It already works correctly in GUI because search always gets downcased assertions.


Bayesian Optimization for parameter tuning

Hi,
Even though GluonTS models provide competitive forecasts with default parameters, it would be great to have Bayesian Optimization to tune the model parameters. That would enhance the usability  and power of GluonTS even more. Grid Search and Random Search shouldn't be used, as Bayesian Optimization provides a more efficient way of finding an optimal set of parameters. Are there any plans to add Bayesian Optimization any time soon?

Hi @StatMixedML,
we do not have any plans for Bayesian Optimization for HPO in GluonTS.
Generally, we find that HPO does not make a lot of difference for many of our models (this might not apply to all models, of course). Especially DeepAR, which works quite well with default parameters and additional HPO often provides little gain (if any).

By the way, we often just use grid search in our studies (see here and https://arxiv.org/abs/1910.03002). In our experience, it works just fine.

Hi @mbohlkeschneider,
thanks for your fast response! I was asking as SageMaker provides hyperparameter tuning jobs here.
Also thanks for the Paper links. Is there any chance you can share the code you used for grid search? That would be great! Despite HPO, are there plans to add early_stopping to the framework. For my applications, I do see some dependence of the accuracy on the number of epochs?

@StatMixedML this may be related to #617 I guess?

Yes. Sorry, didn`t see the other issue. I close this one.
Thanks


Flickering tip

I recently built a page that has some charts using tips as chart annotations controlled by a range slider, and noticed that the tooltips sometimes "flicker" before being rendered at their final position. I was following along with tip development a while back and if I remember, there's some layout computation that happens post-initial render, so I wonder if it might have to do with that.
I created a mini test case here. It's hard to get a screenshot, but in Chrome & Safari on macOS I see the tip text appear at the bottom right of the annotated datum for just a moment while I slide the slider, before re-appearing at the top left as requested by the anchor option, along with the rest of the tip.

Thanks for the test case. Yes, this is because the tip renders asynchronously — we need the tip to be attached to the DOM in order to compute exact text metrics as described here:
https://github.com/observablehq/plot/blob/63415aa43c1fafb2b18c1cb7f73a3bea9066504f/src/marks/tip.js#L217-L218
We can probably find a way to hide the tip text so that it’s not briefly visible before the tip finishes rendering.

please paste this in your notebook to test #1826:
Plot = import("https://esm.sh/gh/observablehq/plot@834810e5e05193191a97ab6d750c4f329a97bd55")

It's not perfect in the sense that the tip doesn't have time to show, but at least it's not showing in the wrong place.

Thank you @fil and @mbostock! This is much better – and yeah, I suspect with SVG layout there may always be tradeoffs to make. And cool, I didn't know you could import specific hashes with esm.sh; I've been cloning the repository and rebuilding locally to try out Plot branches. Thanks for the tip.

I recently learned this trick from @mootari; the documentation at https://esm.sh is worth a read!


Solr highlight

@afred: The issue earlier was the UI. How do you feel about this approach? Only appears on hover:

(Also, added some kind of ugly logic in the view to prevent redundancy if someone is doing a title search.)

@mccalluc: This is great!

@mccalluc 👍  this looks great! How does the :hover work on mobile?

rebasing.. stand by.

404s are swallowing all errors, which makes debugging hard. I'll make a separate PR for that.
Note that since this requires the text field to be stored, we'll need to do a full index.
An alternative to the complicated in-view logic would be a new text_but_not_titles field.

@mccalluc hmm.. I thought we had tweaked it to only throw 404 when files could not be found.

(Thought about having a different styling on smaller screens, but not seeing an easy way to get what I want, since it's inside the fixed div around the image. I'm sure there's other ways to do it, but for the negligible gains, I'd prefer not to make it more complicated.)

@afred: merge #577, rebase this, and then we'll be in a better place to diagnose the problem.

(Also note that since this requires putting the transcript in a stored field, it will need a reingest, and the new index will use substantially more room.)

@mccalluc rebased. Waiting for travis.

I don't really understand what's going on with the git branches, but I understand some of the test failures, I think: The same grid which assumes a solr response is also used where solr is not involved, and that causes NoMethodError. Working on it...

re: git branching weirdness... it's because of the rebase. Rebasing rewrites git history, which changes the commit hashes.
So say you changed line 100 in commit abc123, and pushed your changes. Then somebody else (like me) rebased, so now the change to line 100 is in commit def345. Then, if you try to do a git pull it will try to do a merge (by default), and see that two separate commits, abc123 and def345 are both trying to change line 100. Git does not parse the line to figure out whether it's the same change or not, it just flags it as a conflict and asks you to fix it.

@afred, is this better?


SQLite Migrations: Support more operations using PRAGMA writable_schema

PRAGMA writable_schema = 1; can be used for changes that don't affect the on-disk content:

AlterColumn (when defaultValue or defaultValueSql change or nullable changes to false)
DropForeignKey
RenameColumn

⚠ Warning: Misuse corrupts the database.
This could be a cheaper alternative to implementing full table rebuilds.

It would be worth investing a day or so investigating whether we can safely get some cheap wins doing this.

I don't think we should do this. It would require parsing and updating the full CREATE TABLE statement. Rebuilding the table is easier from a Migrations perspective.


say() method in slack primary messages without avatar and valid username

Hello, I have this in primary messages:
http://rgho.st/7kmfvWzLl/thumb.png
So I have primary message from default slackbot without valid avatar and username.
The code is here:
$msg = 'Hello user';
$botman->say($msg, $userid);

How I can solve the problem?
It is in slack.

Which Slack implementation did you choose?
If you're using the rtm API in general, i think you have to adjust the appearance of your bot using the "additionalParameters" configure array.

I use this:
$loop = Factory::create();
$botman = BotManFactory::createForRTM([
    'slack_token' => $config['slack_token'],
], $loop);

For example, if I will have array of params:
$params = [
                    'username' => 'somename',
                    'icon_url' => 'https://way_to_this_image.png',
                ];

How can I use them?
$botman->say($msg, $userid, $params); or $botman->say($msg, $userid, null, $params); don't work
Can you give any advice to me?

I've solved the problem with wrapi\slack again:
I've created another method:
   public function justsay($message, $channel) {
        $client = new slack($config['slack_token']); // wrapi slack class

        $response = $client->chat->postMessage(array(
            "channel" => $channel,
            "text" => $message,
            "username" => "username",
            'icon_url' => 'https://url_to_image.png',
            "as_user" => true,
            "parse" => "full",
            "link_names" => 1,
            "unfurl_links" => true,
            "unfurl_media" => false
          )
        );
    }

You could just do this, right?
$botman->say($message, $userId, 'Slack', [
    'as_user' => true,
]);

That would post as the user created for your bot.
And if you want to use the icon url, you could use this, which is posted in the Slackbot channel
$botman->say($message, $userId, 'Slack', [
    'as_user' => false,
    'icon_url' => 'http://mydomain/logo.png',
    "username" => "My Bot",
]);


Fail noisily if WAB can't find the needed css link

Throws an error if _WABMixin can't find a css link with id='theme_cmv_style_common'
Without this css link WAB widgets with their own css files will never load.

+1 thanks @duckblaster


ModuleNotFoundError - "model" directory is missed in setup.py

Bug description
"model" directory is missed in "packages" argument in setup.py script. That issue raised ModuleNotFoundError: No module named 'esm.model' exception.
Reproduction steps
Try to install esm package from PyPI or from the GitHub repository.
Expected behavior
I was expected successful installation.
Logs
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [1], in <cell line: 2>()
      1 import torch
----> 2 import esm

File ~/protein_embeddings/env/lib/python3.8/site-packages/esm/__init__.py:9, in <module>
      6 from .version import version as __version__  # noqa
      8 from .data import Alphabet, BatchConverter, FastaBatchedDataset  # noqa
----> 9 from .model.esm1 import ProteinBertModel  # noqa
     10 from .model.esm2 import ESM2  # noqa
     11 from .model.msa_transformer import MSATransformer  #noqa

ModuleNotFoundError: No module named 'esm.model'

having the same issue right now looking for a solution.

@brycejoh16
PR is waiting:
https://github.com/facebookresearch/esm/pull/254

@ptynecki thank you!

@tomsercu PR #254 is resolving the issue problem but there is another during the installation.
The fairscale package is required (not added to setup.py as well).

Hi @ptynecki @brycejoh16 thanks for spotting that! It's fixed now in https://github.com/facebookresearch/esm/pull/254, the fairscale dependency will be fixed soon.

Thanks yes much about our build/release process could be improved.
#256 addressed the fairscale dependency.
@ptynecki let us know if your issues are resolved now. Thanks all for your input!