Tuple comparison

Is your feature request related to a problem? Please describe.
At Least MySQL allow "tuple" comparison, this allow write complex where clause in a much simpler way.
Describe the solution you'd like
I would like to be able to perform a query with a syntax similar to:
entityRepository.find({ [expr(["created", "id"])]: { $le: [cursor.created, cursor.id] } });

So that generates a query like
select `e0`.* from `entity` as `e0` where (`e0`.`created`, `e0`.`id`) < ('2020-06-22 12:30:30.000', 44)

Describe alternatives you've considered
Use the same query expressed in a much more complex way:
entityRepository.find(
    {
        $or: [
            { created: { $lt: cursor.created } },
            { $and: [{ created: { $eq: cursor.created } }, { id: { $lt: cursor.id } }] },
        ],
    },
);

Which generates the following query:
select `e0`.* from `entity` as `e0` where (`e0`.`created` < '2020-06-22 12:30:30.000' or (`e0`.`created` = '2020-06-22 12:30:30.000' and `e0`.`id` < 44))

Additional context
From MySql documentation:

For row comparisons, (a, b) < (x, y) is equivalent to:
(a < x) OR ((a = x) AND (b < y))

The API would probably need to look differently. expr is just an identity function to get around TS strict types, and object key needs to be a string, can't be array.
Tuple comparison itself should already work internally, it is currently used for composite keys (e.g. in where in queries for composite PKs). Btw it works for all supported SQL drivers (sqlite is a bit more verbose as you need values() in the mix).
Btw this might already work:
entityRepository.find({ [expr('(e1.created, e1.id)')]: { $lte: [cursor.created, cursor.id] } });

Yeah, the second approach it's working. Something as entityRepository.find({ [row('created', 'id')]: { $lte: [cursor.created, cursor.id] } }); with TS auto completed for the rows names it would be better :wink:, but this is enough for me.
What is ~~~?
Thanks you.

We can support what you suggested, this can happen behind the scenes. The tripple tilde is how composite keys are handled internally, so we have a single key in queries, so exactly this use case.

with TS auto completed for the rows names it would be better 😉, but this is enough for me.

That probably won't fly, there is no context inside the expr method, you'd have to pass the generic type argument explicitly like expr<User>(['name', 'email']) (we can definitely have such type arg, optional).


Single channel floating point imagery

Question about an existing feature
When loading a single channel float32 image into sharp and then dumping it back out using .raw() it gets converted into three channels, other than using extractChannel(0) is there anyway to stop sharp from making the extra channels?
What are you trying to achieve?
I realise this may be well outside the scope of libvips, But I have been exploring how vips handle Digitial Elevation Models (DEMS) these are generally 1 channel float32 images (tiffs) where each pixel is the height in meters. Surprisingly vips seems to work with these images fine :D
When you searched for similar issues, what did you find that might be related?
I couldn't find anything related to channel expansion on 1 channel imagery
Please provide a minimal, standalone code sample, without other dependencies, that demonstrates this question
// Create a 1x1 float32 image buffer
const buf = new Float32Array(1);
buf[0] = 3.14;
// load into vips and convert it back to a buffer
const ret = await sharp(buf, { raw: { width: 1, height: 1, channels: 1, depth: 'float' } })
  .raw({ depth: 'float' })
  .toBuffer();

console.log(new Float32Array(ret.buffer)); // [3.14, 3.14, 3.14]

Please provide sample image(s) that help explain this question
N/A any float32 array demonstrates this

You should be able to use .toColourspace('b-w') to switch from the default sRGB colourspace to single-band.
https://sharp.pixelplumbing.com/api-colour#tocolourspace
https://www.libvips.org/API/current/VipsImage.html#VipsInterpretation

Thanks soo much for the quick answer! You are 100% correct, When the raw image is created it is set as colourspace: 'srgb' and adding .toColourspace('b-w') drops it back down to 1 band output!


Docs are built with an old pinned version of mdbook

This is causing rendering differences, as discussed in this book issue

I think there's some further discussion to be had here, about a couple of topics:

How do we keep this consistent in the future? The CI scripts here are a source of duplication across all the rust-embedded books (and likely, to a greater or lesser extent, other documentation). This affects not just mdbook version, but other tools as well

The fact that mdbook got pinned to a specific version a while ago and only unpinned in a single place is testament to how easily these things can get out of sync
https://github.com/rust-embedded/book/blob/master/ci/install.sh always uses the latest, and has since before I started poking my nose in this particular area
https://github.com/rust-embedded/embedonomicon/blob/master/ci/install.sh does as well, though that change was merged recently
https://github.com/rust-embedded/debugonomicon/blob/master/ci/install.sh pins to the latest 0.x.y version, per feedback from @therealprof

What should the mdbook pinning strategy be? Right now it's inconsistent. As I see it, we could:

Always take the latest
Pin to 0.x.y (does not protect from breaking mdbook changes, e.g. in a 0.4 series)
Pin to 0.3.x (does protect from breaking changes, but will require more frequent attention)

The first reasonable idea which occurs to me would be to have each book repo download a stub install.sh script from this repo. Books that need more tools to be installed (i.e. the embedonomicon) can wrap that stub to do that.
Whatever the decision, I'm happy to open a series of PRs to at minimum normalize this behavior. If there's consensus on a good way to keep this synchronized across multiple projects, I'm also happy to implement that.
CC @adamgreig, since you chimed in on one of the original issues here

@austinglaser
Thanks for writing this up!
I'm not sure how the original mdbook decision came to be, maybe @japaric or @jamesmunns have more information about that.
Originally the mdbook version was freewheeling, we pinned v0.2.1 exactly for that reason and put reminders in place to undo it as soon as we can.
IMHO the most relevant questions are:

Is the actually used version of mdbook relevant?
Is it also relevant that all books are on the same version of mdbook? (And if so, how can we ensure that they're actually rebuilt when the version changes?)

Since the embedded book is linked on the rust-lang homepage, do we need to use the same version of mdbook they do for the rest of the documentation?

Is it also relevant that all books are on the same version of mdbook? (And if so, how can we ensure that they're actually rebuilt when the version changes?)

I believe so. Some of the confusion surrounding https://github.com/rust-embedded/book/pull/212 resulted from two different versions (0.2.1 and 0.3.4) being used to render the book when hosted in two different places

Is it also relevant that all books are on the same version of mdbook? (And if so, how can we ensure that they're actually rebuilt when the version changes?)

I think enforcing this would at least simplify the above.

Regarding the original decision:

We used to use freewheeling, probably for no particularly good reason
At some point, mdbook wasn't posting the build artifacts as part of their release. This caused the trust tool to get confused, as it expected the "latest published on crates.io" to == "latest artifacts published on github". This caused CI failures.
Due to this, we then began pinning versions

Regarding harmony with the upstream Rust docs:

Originally, we were the only users of mdbook 0.2.x, while older books were still on 0.1.x. I implemented a workaround to allow the upstream docs to build on EITHER 0.1 or 0.2 on a per-book basis
Since then, I believe all books have been updated, and all are using a current version of mdbook, which is currently based on 0.3.x, currently 0.3.5 as of the time of this writing.

We should probably use whatever the upstream Rust project uses, unless we have a good reason, but I can't think of a good way to enforce this outside of curl | grep to get the version from this cargo.toml file, which seems... fragile.

I also would not mind converging all of the books to a single git repo, to avoid duplication. This would have negative impact to our use of github pages as the base URL though.

The pinning has been removed via #24.


fix(how-to-play page): implement how to play page

Fixes #198
Implement how to play page based on the following desings

Add two UI components:

BulletPoint (because the font is missing the bullet symbol)
NumberedSection (number and title on top of content)

Add three page section components:

GameRules
PointsAndPenalties
PlayerProfile

Refactor HowtoPlay page using the components above

src/components/main-menu/menu-options.tsx
      <MenuOptionsButton onClick={() => handleNavigation(pages.howToPlay)}>
        {text.general.howToPlay}
      </MenuOptionsButton>


Delete default VPCs from new accounts

When a new account is created using org accounts create we should delete the default VPCs.
We could introduce a new extension point to organization management and let users create their own actions (or hooks) that are executed when a certain event occurs (e.g. an account is created).

Organization management will be removed in v4.0.0 and therefore this feature is no longer needed.


Adding in bootstrap UI

Adding in bootstrap UI

Added boostrap CSS & JS ref
Added further html/head tags
Rejigged the template, added a 2 column holder
Added blocks for image and input fields for letters of word

closing the issue as its already incorporated into staging


[Incremental Swift Driver] Generalize Driver/Dependencies tests

Modify the legacy lit tests to support the swift-driver (given some pending PRs). See the individual commits.
To summarize:

swift-driver removes "./" from start of paths written to build record
swift-driver uses different white space in JSON output, and reorders entries within a map
swift-driver uses a different architecture, so cannot reasonably include job conditions when printing bindings
swift-driver checks every output for existence before deciding to skip a compilation
swift-driver does not even start compiling a file that has been modified during the build

@swift-ci please smoke test

rdar://72508507


bauble/card sprite

We need high resolution version of bauble
Also consider maybe updating the sprites as well
Here are current sprite files

I assigned @Wish-Star if she has any input to assist Neweegee with ideas.

moved to meistertask


Login / forgot password view

I'm working on the login flow for a user, including what they would see if they forget their password. Below is a screencap of the potential workflow. Note: there would be an email in the middle of it for password reset.

@bengolder I know we talked about getting rid of the need for logging in again once you've reset your password. I can include that in the next version once we establish a landing page after a successful login.

awesome! looks great!

Consider using Mozilla Person for this, so you don’t need to build it?

https://login.persona.org/about
http://www.codeforamerica.org/blog/2013/11/21/securing-the-louisville-app/

Hmm, sounds compelling. Before I thought it was browser specific, but it looks like it's mainly implemented as a Javascript API.

@migurski do you know if Persona can be integrated into the page or does it require the popup? This app has to be mobile-friendly and popups start to ruin that experience.
I think @bsmithgall has been using this as well?

It does require the pop-up; I believe the pop-ups work reasonably well on mobile. Maybe try logging into http://engine-light.codeforamerica.org which uses it?
I’ve stubbed out a how-to guide: https://github.com/codeforamerica/howto/blob/06ac1d0399df704a54e07dc6a40a2d11518d9633/BrowserID.md

(just tried on iOS, works fine)

"but you should have a great reason not to"
Thanks, @migurski!

@svmatthews here's the only decent anti-persona thing I could find (from 2012), would be curious what @migurski thinks about it: http://opine.me/mozilla-persona-browserid-is-a-step-in-the-wrong-direction/

Reading the thing, thanks! They seem to be a little confused about the role Persona plays in the login process. The idea that your session is still valid with Persona is analogous to the way you stay logged-in to Facebook or Twitter if you use those services as 3rd-party auth. The other criticisms are definitely valid.
My feeling is that Persona remains the least-bad option for fellowship app logins, and the amount of time & energy saved developing login flows, remembering to salt passwords, and connecting to email providers for password reminders is worth the cost. There’s so much to get wrong with security and Persona is an adequate-enough approach for alpha-level applications.

Wrote more; would love input/comments/feedback before I merge this: https://github.com/codeforamerica/howto/blob/1793b0d/BrowserID.md

Left a few comments, otherwise :+1: LGTM

Diddly-done: https://github.com/codeforamerica/howto/blob/master/Persona.md

@migurski also curious what your opinions are around some of these sso-as-a-service type things (https://stormpath.com/, for example)


Is A-B Loop possible?

you must do it youselft ， like ListGSYVideoPlayer

but it involves accurate time seeking.

i m not sure what you mean😂

就是你设置ab循环一句话，结果循环了一句半的话。。而且时间a还不准确😂

fix like https://github.com/CarGuo/GSYVideoPlayer/tree/master/app/src/main/java/com/example/gsyvideoplayer/exo
use
ConcatenatingMediaSource and LoopingMediaSource


Previews are broken

I'm trying to use Xcode previews and they are not functioning in the toolkit. I'm getting errors like this:

I'm using a local source package for ArcGIS.
It would be good to look into why the previews are broken and if there is some way to fix them.

Did some experimentation, and previews seem to work okay with the following ArcGIS consumption methods:

The public SPM package
The swift-daily package
Downloaded daily archives

Awesome! Thanks @dfeinzimer
FYI @des12437 @yo1995


True up the documentation with the code.

Documentation only change, verified these flags are both false by default.

This was documented as true back to v1.0. Should this change be backported? or is this a recent code change?

I think this has always been default to false, even node_exporter the underlying library sets it to false.


Create morse code example.

Create an example that will:

use the huzzah and oled feather.
read morse code off of one of the buttons.
preview message on screen
allow user to send message to firebase
pull other user messages from firebase and display.
allow user to send pre-canned messages

I started writing part of it while bored in the hotel the other day I will post it when I have it working to at least interpret the code and print to Serial.


scipy.stats.combine_pvalues produces wrong results with method='mudholkar_george'

scipy.stats.combine_pvalues seems to work incorrectly with method=‘mudholkar_george’. In file scipy/scipy/stats/stats.py lines 7528-7533:
    elif method == 'mudholkar_george':
        statistic = -np.sum(np.log(pvalues)) + np.sum(np.log1p(-pvalues))
        nu = 5 * len(pvalues) + 4
        approx_factor = np.sqrt(nu / (nu - 2))
        pval = distributions.t.sf(statistic * approx_factor, nu)

According to the original article approx_factor should be equal to np.sqrt(nu / (nu - 2)) / scipy.pi * np.sqrt(3 / len(pvalues)), not np.sqrt(nu / (nu - 2))
Reproducing code example:

from scipy import stats
stats.combine_pvalues([0.1, 0.1, 0.1], method='mudholkar_george')

The resulting p-value is 6.1e-07, however, the result should be 0.019, that can be achieved for example using R package metap.
Scipy/Numpy/Python version information:
1.5.2 1.19.0 sys.version_info(major=3, minor=8, micro=5, releaselevel='final', serial=0)

Thanks for reporting the issue @M1kss
During the PR I believe @chrisb83 had a similar question.
When I implemented the Mudholker George method I looked at both methods:
https://gist.github.com/rlucas7/53ceae3b0ebbb1662892246d58f6a70a
and given the data in the paper:
https://apps.dtic.mil/dtic/tr/fulltext/u2/a049996.pdf
it seemed like the method used had better numerical precision than the method used in:
https://apps.dtic.mil/dtic/tr/fulltext/u2/a049993.pdf

The resulting p-value is 6.1e-07, however, the result should be 0.019,

How is the the conclusion

the result should be 0.019

arrived at, is this purely a comparison against the results from the R-package?

Thanks for the quick response!

"The result should be 0.019" is purely from the R-package. However, this corresponds to the fact, that the p-values from other methods applied to this data are of the same order of magnitude (0.032 for fisher, 0.013 for stouffer), while the result here is ~10^-7.

Following your gist, column x in table 1 of the https://doi.org/10.1007/BF02056895 represents the standardized statisic, that is denoted by the formula (3.1) in this article. So the both formulae, that you mention, (3.7) of this article and (2.5) of the original article are exactly the same.

Also in the gist provided there are two typos:

line 10: >>> nu=5k + 5 should be nu=5k + 4
in the comment, last line: F - ss.t.cdf(approx_factor * x, nu) should be F - ss.t.cdf(x/approx_factor, nu) to match the method, however, once again, this would not reproduce the results of table1, because the statistic x in the last article is already assumed to be standardized (scaled by sqrt(3/k)/pi).

Ok. I haven’t checked to see how this changes the numerical calculations (and if they give the same result as r package in this case) but I think I agree with conclusion of code misses the normalizing factor of sqrt((pi*3)/len(pvalues))
I think a line can be added before this one:
https://github.com/scipy/scipy/blob/f7f31b4574c9665afd87068fb466f78a7bc37dd6/scipy/stats/stats.py#L7555
To add the normalizing factor which can then go into the calculation at this line:
https://github.com/scipy/scipy/blob/f7f31b4574c9665afd87068fb466f78a7bc37dd6/scipy/stats/stats.py#L7558
And IIUC this second line also needs to have:
Statistic/approx_factor
Rather than
Statistic * approx_factor
So that end result would be:
Statistic * normalizing_factor /approx_factor
Do you agree @M1kss ?
-Lucas Roberts

On Aug 2, 2020, at 6:48 AM, M1kss<EMAIL_ADDRESS>wrote:

Thanks for the quick response!
"The result should be 0.019" is purely from the R-package. However, this corresponds to the fact, that the p-values from other methods applied to this data are of the same order of magnitude (0.032 for fisher, 0.013 for stouffer), while the result here is ~10^-7.
Following your gist, column x in table 1 of the https://doi.org/10.1007/BF02056895 represents the standardized statisic, that is denoted by the formula (3.1) in this article. So the both formulae, that you mention, (3.7) of this article and (2.5) of the original article are exactly the same.
Also in the gist provided there are two typos:
line 10: >>> nu=5k + 5 should be nu=5k + 4
in the comment, last line: F - ss.t.cdf(approx_factor * x, nu) should be F - ss.t.cdf(x/approx_factor, nu) to match the method, however, once again, this would not reproduce the results of table1, because the statistic x in the last article is already assumed to be standardized (scaled by sqrt(3/k)/pi).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

@rlucas7
Yes, adding the normalization factor yields the same result as the r package in the case discussed above ([0.1, 0.1, 0.1]) and a few of other test cases, but I haven't performed a detailed comparison.
As for the code suggestions,

Normalizing factor should be sqrt(3/len(pvalues))/pi, not sqrt((pi*3)/len(pvalues))
The statistic should be multiplied by the approx factor, as it is sqrt(nu/(nu-2)) here, not sqrt((nu-2)/nu), that was in the gist.

So, considering these notes, I see the code as follows:
elif method == 'mudholkar_george':
        normalizing_factor = np.sqrt(3/len(pvalues))/np.pi
        statistic = -np.sum(np.log(pvalues)) + np.sum(np.log1p(-pvalues))
        nu = 5 * len(pvalues) + 4
        approx_factor = np.sqrt(nu / (nu - 2))
        pval = distributions.t.sf(statistic * normalizing_factor * approx_factor, nu)

Ok. I haven’t checked to see how this changes the numerical calculations (and if they give the same result as r package in this case) but I think I agree with conclusion of code misses the normalizing factor of sqrt((pi3)/len(pvalues)) I think a line can be added before this one: https://github.com/scipy/scipy/blob/f7f31b4574c9665afd87068fb466f78a7bc37dd6/scipy/stats/stats.py#L7555 To add the normalizing factor which can then go into the calculation at this line: https://github.com/scipy/scipy/blob/f7f31b4574c9665afd87068fb466f78a7bc37dd6/scipy/stats/stats.py#L7558 And IIUC this second line also needs to have: Statistic/approx_factor Rather than Statistic * approx_factor So that end result would be: Statistic * normalizing_factor /approx_factor Do you agree @M1kss ?
…
-Lucas Roberts
On Aug 2, 2020, at 6:48 AM, M1kss @.**> wrote:  Thanks for the quick response! "The result should be 0.019" is purely from the R-package. However, this corresponds to the fact, that the p-values from other methods applied to this data are of the same order of magnitude (0.032 for fisher, 0.013 for stouffer), while the result here is ~10^-7. Following your gist, column x in table 1 of the https://doi.org/10.1007/BF02056895 represents the standardized statisic, that is denoted by the formula (3.1) in this article. So the both formulae, that you mention, (3.7) of this article and (2.5) of the original article are exactly the same. Also in the gist provided there are two typos: line 10: >>> nu=5k + 5 should be nu=5k + 4 in the comment, last line: F - ss.t.cdf(approx_factor * x, nu) should be F - ss.t.cdf(x/approx_factor, nu) to match the method, however, once again, this would not reproduce the results of table1, because the statistic x in the last article is already assumed to be standardized (scaled by sqrt(3/k)/pi). — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

@M1kss @rlucas7 I'm new to SciPy but I'd like to help if this is a good first issue. It seems like the change should be as follows from above; any thoughts on if it would be any different than just making the below change / testing / PR?
elif method == 'mudholkar_george':
        normalizing_factor = np.sqrt(3/len(pvalues))/np.pi
        statistic = -np.sum(np.log(pvalues)) + np.sum(np.log1p(-pvalues))
        nu = 5 * len(pvalues) + 4
        approx_factor = np.sqrt(nu / (nu - 2))
        pval = distributions.t.sf(statistic * normalizing_factor * approx_factor, nu)

@WillTirone, I've started looking into it but need a bit more time to understand things. Hoping to have some time tomorrow to look into this to make sure I agree with the changes. It also should involve some additional testing against the R package metap too. I haven't looked into that R package extensively but would like to do so before moving forward.
There may be other discrepancies as well. If you are familiar with R you could start with setting up a bunch of (random) experiments comparing 'mudholkar_george' and other methods for agreement/disagreement and document your findings here.

@rlucas7 ah I see, that makes sense. Unfortunately I've never used R, probably an issue better suited to someone with more experience in that area. Thanks!

On Aug 11, 2020, at 12:29 AM, WillTirone<EMAIL_ADDRESS>wrote:

@rlucas7 ah I see, that makes sense. Unfortunately I've never used R, probably an issue better suited to someone with more experience in that area. Thanks!

Sure no problem.
Thanks for inquiring. As I look into this a bit more I’ll keep my eyes posted for isolated increments.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

If this in any way helps, here is the metap R source code, that can be found here https://cran.r-project.org/web/packages/metap/index.html:
logitp <-
function(p)  {
   keep <- (p > 0) & (p < 1)
   invalid <- sum(1L * keep) < 2
   if(invalid) {
      warning("Must have at least two valid p values")
      res <- list(t = NA_real_, df = NA_integer_, p = NA_real_,
         validp = p[keep])
   } else {
      psum <- sum(log(p[keep] / (1 - p[keep])))
      k <- length(p[keep])
      mult <- -1 / sqrt(k * pi ^ 2 * (5 * k + 2) / (3 * (5 * k + 4)))
      if(k != length(p)) {
         warning("Some studies omitted")
      }
      t <- mult * psum
      df <- (5 * k + 4)
      res <- list(t = t, df = df, p = pt(t, df, lower.tail = FALSE),
         validp = p[keep])
   }
   class(res) <- c("logitp", "metap")
   res
}
print.logitp <- function(x, ...) {
   cat("t = ", x$t, " with df = ", x$df, " p = ", x$p, "\n")
   invisible(x)
}

The algorithm seems to be exactly the same as discussed earlier, however 'metap' solution filters out p=0 and p=1 as they're leading to the logit statistic of positive infinity or negative infinity. Following 'stouffer' method in 'stats.combine_pvalues', these p-values are not filtered out, but lead to the aggregated p-values of 0 and 1 respectively. So, it might be logical not to filter out 0-s and 1-s here too.
Except for this filtering, the algorithm is identical to the one discussed [above].(https://github.com/scipy/scipy/issues/12654#issuecomment-669242874.)

@M1kss
Thanks for the pointer (and code).
Hmm, I can see the value with some logic for handling edge cases (p=0,1, etc) but that would impact all methods so I think that should be handled as a separate issue.
@WillTirone are you interested in giving this a shot then? I’d be happy to review a PR with the fix.
Sincerely,
-Lucas Roberts

On Aug 12, 2020, at 12:06 PM, Alexandr Boytsov<EMAIL_ADDRESS>wrote:

If this in any way helps, here is the metap R source code, that can be found here https://cran.r-project.org/web/packages/metap/index.html:

logitp <-
function(p)  {
keep <- (p > 0) & (p < 1)
invalid <- sum(1L * keep) < 2
if(invalid) {
warning("Must have at least two valid p values")
res <- list(t = NA_real_, df = NA_integer_, p = NA_real_,
validp = p[keep])
} else {
psum <- sum(log(p[keep] / (1 - p[keep])))
k <- length(p[keep])
mult <- -1 / sqrt(k * pi ^ 2 * (5 * k + 2) / (3 * (5 * k + 4)))
if(k != length(p)) {
warning("Some studies omitted")
}
t <- mult * psum
df <- (5 * k + 4)
res <- list(t = t, df = df, p = pt(t, df, lower.tail = FALSE),
validp = p[keep])
}
class(res) <- c("logitp", "metap")
res
}
print.logitp <- function(x, ...) {
cat("t = ", x$t, " with df = ", x$df, " p = ", x$p, "\n")
invisible(x)
}
The algorithm seems to be exactly the same as discussed earlier, however 'metap' solution filters out p=0 and p=1 as they're leading to the logit statistic of positive infinity or negative infinity. Following 'stouffer' method in 'stats.combine_pvalues', these p-values are not filtered out, but lead to the aggregated p-values of 0 and 1 respectively. So, it might be logical not to filter out 0-s and 1-s here too.
Except for this filtering, the algorithm is identical to the one discussed [above].(#12654 (comment).)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Response got truncated (email on phone is finicky)
@WillTirone I’d be happy to review a PR with the changes discussed here.
-Lucas Roberts

On Aug 14, 2020, at 8:10 AM<EMAIL_ADDRESS>wrote:
@M1kss
Thanks for the pointer (and code).
Hmm, I can see the value with some logic for handling edge cases (p=0,1, etc) but that would impact all methods so I think that should be handled as a separate issue.
@Will
Sincerely,
-Lucas Roberts

On Aug 12, 2020, at 12:06 PM, Alexandr Boytsov<EMAIL_ADDRESS>wrote:

If this in any way helps, here is the metap R source code, that can be found here https://cran.r-project.org/web/packages/metap/index.html:
logitp <-
function(p)  {
keep <- (p > 0) & (p < 1)
invalid <- sum(1L * keep) < 2
if(invalid) {
warning("Must have at least two valid p values")
res <- list(t = NA_real_, df = NA_integer_, p = NA_real_,
validp = p[keep])
} else {
psum <- sum(log(p[keep] / (1 - p[keep])))
k <- length(p[keep])
mult <- -1 / sqrt(k * pi ^ 2 * (5 * k + 2) / (3 * (5 * k + 4)))
if(k != length(p)) {
warning("Some studies omitted")
}
t <- mult * psum
df <- (5 * k + 4)
res <- list(t = t, df = df, p = pt(t, df, lower.tail = FALSE),
validp = p[keep])
}
class(res) <- c("logitp", "metap")
res
}
print.logitp <- function(x, ...) {
cat("t = ", x$t, " with df = ", x$df, " p = ", x$p, "\n")
invisible(x)
}
The algorithm seems to be exactly the same as discussed earlier, however 'metap' solution filters out p=0 and p=1 as they're leading to the logit statistic of positive infinity or negative infinity. Following 'stouffer' method in 'stats.combine_pvalues', these p-values are not filtered out, but lead to the aggregated p-values of 0 and 1 respectively. So, it might be logical not to filter out 0-s and 1-s here too.
Except for this filtering, the algorithm is identical to the one discussed [above].(#12654 (comment).)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@rlucas7 sure I'd be happy to take a shot! I'll just incorporate the changes listed above and send in a PR. Thanks!


remove 'next step' nav from challenges because it doesn't work

Currently the challenges both show a "Go to Step 1" button which 404s. Not familiar enough with Jekyll to fix it, so removed it instead. Feel free to close this if it's an easy enough fix.

Opps.  I saw the comment in my email notifications and thought that meant it was an issue & not a PR & went and fixed it.  I did exactly the  same thing, removing the buttons. should never have been there because the challenges are not intended to be sequential.   Thanks.


ISPN-12496 Support port offset for JGroups ports in the server

https://issues.redhat.com/browse/ISPN-12496

It should mimic the behaviour of the legacy server which applies the offset to all ports, except multicast ports (I've just checked).

Repushed without the MCAST_PORT changes

integrated! thanks @tristantarrant !


ERROR NPM

I follow these commands:
composer require laravel-frontend-presets/tailwindcss --dev
php artisan ui tailwindcss --auth
npm install && npm run dev
but it isn't work
it generate this error
The Mix manifest does not exist. (View: C:\xampp\htdocs\site\resources\views\welcome.blade.php)
How fix it?

I am getting the same error as well

I'm not able to reproduce this. The mix manifest error indicates that the npm run dev step failed to complete properly. Did you get any errors from npm?

Hi @michaeldyrynda i just have a fresh install of laravel with the preset and got this:
14% building 36/37 modules 1 active ...er/src/index.js??postcss0!/home/vagrant/code/townhouse/resources/css/app.cssnpm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @ development: cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!  Exit status 1
npm ERR!
npm ERR! Failed at the @ dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!


BIGSERIAL typechecks as i64 instead of u64

Bug Description
PostgreSQL BIGSERIAL types seem to not be supported. I'd expect SERIAL and SMALLSERIAL to suffer from similar issues.
Minimal Reproduction
Have a table with a column like:
last_active BIGSERIAL NOT NULL

Run a query like:
            sqlx::query!("DELETE FROM sessions WHERE last_active < $1", 1u64)

Observe the following type error:
expected `i64`, found `u64`

My guess would be, this is actually not a problem and doing as i64 would probably yield the proper result in the database. But this would be going around the sqlx strong typechecking, which would be sad :'(
Info

SQLx version: 0.7.3
SQLx features enabled: json, postgres, tokio, uuid
Database server and version:  Postgres 14.10
Operating system: NixOS 23.11
rustc --version: rustc 1.77.0-nightly (2d7be7393 2023-12-23)

Anyway, thank you for sqlx, it's very pleasant to use! :D

Not a bug. bigserial is just a bigint with an auto-incrementing property. Postgres does not support unsigned integers without an extension.
https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL

Good point, I had been tricked by this table that showed the serial types as being only positive… without having noticed that the upper bound was still the same as the one of the signed types. Sorry for the noise!


Use NUMERIC instead of FLOAT for NUMBER

This is a case where the commit message should probably have a detailed explanation of why we're actually making the change.


Pointer arithmetic

Add pointer arithmetic to the LD and ST instructions.
For example, "LD num1 + 1", would take the address of num1 and add 1 to it.
Additional support might be, "LD num1 + offset", where both are memory references.
For the moment, a single arithmetic operator would be permitted, and constants and labels would be usable.

Defined memory 0 as "index", and the new instructions operate using this value automatically. The default value is 0.
4 new instructions were added:

LDI - Same as LD, but the parameter address is offset by the Index (memory 0, default value 0)
STI - Same as ST, but the parameter address is offset by the Index (memory 0, default value 0)
INCI - Increments the Index by 1
DECI - Decrements the Index by 1

The assembler also automatically define a symbol, "index", which is the memory location of 0. So while INCI and DECI will increment and decrement the index, but it can also be set using the standard ST instruction and "index" as the parameter.


Add support for Svelte 4

Svelte 4 was announced back in June 2023
https://svelte.dev/blog/svelte-4
But Tanstack table doesn't allow version 4.x.x which is preventing all of us Svelte table users to use Svelte 4 which has been out for a month now. Svelte 4 doesn't have any breaking changes (very minor ones related to custom elements), so I don't expect anything to break for Tanstack, and it should unblock people from using Svelte 4.
There is no bug for this, but there is a discussion thread
https://github.com/TanStack/table/discussions/4944

+1 please update

+1 please update

Hi, can any maintainer merge this change ? Its been sitting for 2 weeks 🙏  cc @tannerlinsley

Done :)

I came across this when following one of the examples, is it related to the version bump? Seems to work just fine, but my TS is yelling at me:

Previously I wasn't using @tanstack/svelte-table, but I noticed this was merged and wanted to try it out.


chore: build avm transpiler if we are on mac

We don't cache avm transpiler builds for mac. so we cannot use the cache.

Benchmark results
No metrics with a significant change found.

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit df089def and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
5,700
18,884
36,452

l1_rollup_calldata_gas
66,516
239,444
470,228

l1_rollup_execution_gas
194,464
500,750
909,486

l2_block_processing_time_in_ms
1,195
4,462 (-1%)
8,884 (+1%)

note_successful_decrypting_time_in_ms
205
545
993 (+1%)

note_trial_decrypting_time_in_ms
10.3 (+13%)
63.4 (-10%)
129 (+9%)

l2_block_building_time_in_ms
11,319
44,781 (-1%)
88,783 (+1%)

l2_block_rollup_simulation_time_in_ms
7,358
29,330 (-1%)
58,099 (+1%)

l2_block_public_tx_process_time_in_ms
3,928
15,386 (-1%)
30,573 (+2%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,666 (+1%)
28,098 (+2%)

note_history_successful_decrypting_time_in_ms
1,277 (-3%)
2,488 (+4%)

note_history_trial_decrypting_time_in_ms
103 (-17%)
160 (+24%)

node_database_size_in_bytes
18,792,528
35,266,640

pxe_database_size_in_bytes
29,923
59,478

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
254
44,736
28,001

private-kernel-ordering
196 (+1%)
52,625
14,627

base-rollup
657
177,932
997

root-rollup
69.4 (+1%)
4,320
825

private-kernel-inner
320
73,715
28,001

public-kernel-app-logic
171 (-1%)
32,254
25,379

merge-rollup
8.69 (+1%)
2,840
997

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
2 leaves
8 leaves
16 leaves
32 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves

batch_insert_into_append_only_tree_16_depth_ms
9.80
10.6 (-3%)
13.9 (+10%)
16.3
21.9 (-2%)
35.2 (-5%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.9
17.5
23.0
31.6
47.0
79.0
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.569
0.588 (-3%)
0.586 (+9%)
0.504
0.459 (-2%)
0.440 (-5%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
N/A
N/A
N/A
45.8
72.1 (-2%)
231 (-1%)
447 (-2%)
865 (-2%)
1,714

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
N/A
N/A
N/A
96.0
159
543
1,055
2,079
4,127

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.470
0.445 (-2%)
0.421 (-1%)
0.418 (-2%)
0.413 (-2%)
0.412

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
N/A
N/A
N/A
53.8 (+1%)
107
338 (+1%)
663
1,307
2,603 (+2%)

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
N/A
N/A
N/A
104
207
691
1,363
2,707
5,395

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.478
0.480
0.458
0.455
0.455
0.454 (+2%)

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
61.5 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
109
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
0.537 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contracts are deployed in the tx.

Metric
0 deployed contracts

tx_size_in_bytes
19,179

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes

tx_pxe_processing_time_ms
2,701
1,388 (+1%)

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
0.0356 (+20%)
476


Option 'previewwindow' in the ddu-ff preview-window is not set

Hi Shougo.
Thx a lot for the ddu series of plugins of course. (And a late 'thx-a-lot' for the denite.nvim, unite.vim... plugins as well). Still can't figure out what your avatar on github is meant to be (its not a zebra-dragon is it? 😉)
Problems summary
When invoking the preview action on a file kind/source the emerging preview window has its previewwindow option set to nopreviewwindow.
As of now there is only on big problem I have with this fact. I really like to use the vim-preview plugin to scroll the preview window while leaving the cursor in the denite-window and I am missing this functionality in ddu.
Expected
I would expect the ddu-ff preview window to have its previewwindow option set to previewwindow
Environment Information

ddu-ui-ff version (SHA1): c5958937bd73b262642aec93f9ff0623c4250e67

denops.vim version (SHA1): d7db28587bb281f9fcf56d4986e313025e250295

deno version(deno -V output): deno 1.21.1

OS: GNU/Linux

neovim/Vim :version output:

NVIM v0.8.0-dev-1071-gf98cff957
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by lorenz@chicken

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

Provide a minimal init.vim/vimrc without plugin managers (Required!)
" Your minimal init.vim/vimrc
set nocompatible

set runtimepath+=/usr/local/src/neovim_minimal_stuff/denops.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-source-file
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-kind-file
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-ui-ff
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-commands.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/vim-preview

filetype plugin indent on

" ddu#custom#patch_global ui: ff --- {{{
call ddu#custom#patch_global({
    \ 'ui': 'ff',
    \ })
" }}}

" ddu_ff_my_settings --- {{{
autocmd FileType ddu-ff call s:ddu_ff_my_settings()
function! s:ddu_ff_my_settings() abort
  nnoremap <buffer><silent> p
        \ <Cmd>call ddu#ui#ff#do_action('preview')<CR>
endfunction
" }}}

" vim-preview --- {{{
noremap <silent> <A-k> :PreviewScroll -1<cr>
noremap <silent> <A-j> :PreviewScroll +1<cr>
inoremap <silent> <A-k> <c-\><c-o>:PreviewScroll -1<cr>
inoremap <silent> <A-j> <c-\><c-o>:PreviewScroll +1<cr>
" }}}

How to reproduce the problem from neovim/Vim startup (Required!)

start a minimal neovim with the command: VIMRUNTIME=/usr/local/src/neovim/runtime /usr/local/src/neovim/build/bin/nvim --clean -u /usr/local/src/neovim_minimal_stuff/minimal_init.vim
execute Ddu file
move the cursor to a file entry
press the the p-key (mapping for the preview action) to open the
preview window
execute the command wincmd k to focus the preview window
query the 'previewwindow'-option by executing the command set previewwindow?

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)
Further remarks:
If this is by design, would it be possible to add the feature of scrolling the preview window while keeping the cursor-focus on the ddu-ff window?
Thx a lot and have a good one ^^

Fixed.

Thx a lot for the ddu series of plugins of course. (And a late 'thx-a-lot' for the denite.nvim, unite.vim... plugins as well). Still can't figure out what your avatar on github is meant to be (its not a zebra-dragon is it? wink)

The icon is the dragon knight head instead of zebra.

Fixed.

Nice... thank you :)

The icon is the dragon knight head instead of zebra.

Got it...


use "final" if available

I might be so bold, as to suggest this...
   #ifdef __cpp_lib_is_final
        #define FLUENT_FINAL final
 #else
       #define FLUENT_FINAL
 #endif

Little optimization and big, clear message from interface author:
         template <
                       typename T,
                       typename Parameter,
                       template<typename> class... Skills
                   >
      class FLUENT_EBCO NamedType FLUENT_FINAL
            : public Skills<NamedType<T, Parameter, Skills...>>...
       {
       } ;

Regards ...

I disagree. Declaring your named type like this seems like a valid strategy to me:
struct MyType : NamedType<int, Addable, Comparable> {
  using NamedType<int, Addable, Comparable>::NamedType;
  // Potentially add other, special capabilities
};

It also has the bonus of shortening your compiler's error messages if you used a lot of "skills".

Huh? What is the connection with having or not having final?

I'm not quite sure what you're asking, but marking the NamedType class as final would mean that the above example code fails to compile.


Add a received field for assets returned by the rpc

A received: true|false in the asset field that tells whether the NFT has been received or is still pending, in RPC calls like get owned assets, get asset history etc. (Or a field with the block hash of the nft send block for that account)

added received: 'true'|'false' to

get_nft_asset_owner
get_nft_owner_assets
get_nft_template_owner


Allow null in registered constructor

Hello,
We recently started using this library, and encountered the following issue.
Suppose we have a value object that accept string or null as its value:
final class NullableValueObject
{
    private function __construct(private readonly ?string $value)
    {
    }

    public static function create(?string $value): self
    {
        return new self($value);
    }
}

And that with have some other object that has an attribute of that Value Object within:
final class SomeDTO
{
    public function __construct(
        public readonly NullableValueObject $nullableValueObject
    ) {
    }
}

When we try to map the object with a null value, the library gives us an error:
$mapper = (new \CuyZ\Valinor\MapperBuilder())
            ->registerConstructor([NullableValueObject::class, 'create'])
            ->flexible()
            ->mapper();

$source = [
    'nullableValueObject' => null,
];

$mapper->map(SomeDTO::class, Source::array($source));

CuyZ\Valinor\Mapper\MappingError : Could not map type `SomeDTO`. An error occurred at path nullableValueObject: Cannot be empty and must be filled with a value matching type `string|null`.

Disabling flexible mode gives us the same error. However, when the value of source is not null, the mapping works fine.
We are using a workaround: we build the object within the constructor of the DTO. Nonetheless, we would like to know if it would be possible to allow passing null values to registered constructors.
Thank you!

I tested using the just released 0.17.0 version. It works perfectly when using the new enableFlexibleCasting.
For reference, the mapper should be configured like so:
$mapper = (new \CuyZ\Valinor\MapperBuilder())
            ->registerConstructor([NullableValueObject::class, 'create'])
            ->enableFlexibleCasting()
            ->mapper();

$source = [
    'nullableValueObject' => null,
];

$mapper->map(SomeDTO::class, Source::array($source));

Thank you!

Hi @rubenrubiob, I'm glad the last release fixes your issue, however your use case is an actual bug; your example should work even without the flexible mode.
I'll reopen the issue and wait to have some time to take a further look.
Thanks for the report anyway!

I am somehow glad that we found a bug, then 😅
We are heavily using Valinor, so if we find other edge cases we will let you know!

Hi @rubenrubiob, this issue should be fixed with #250. When it is released, I recommend you do not use enableFlexibleCasting unless you really need it for something else. 😉

Great, thank you! We will update as soon as there is a new version available :)


CII Best Practices Updates

This issue was been locked to prevent additional noise to the subscribers. Subscribe to updates in this issues to get updated regarding any changes to our report card on CIi Best Practices.
Where's your CII Best Practices report card?
https://bestpractices.coreinfrastructure.org/projects/4982
Current status:

Eariler tonight, I just self-tested the project against Linux Foundation's CII Best Practices, and we're now 93% compliant towards the passing status. There are some things need to fix, such as contributing guides, security policies and more.


fix misaligned login

Fixed the issue #3456
The 'Log In' sentence is now correctly centered in its place.

The problem with this solution is that it also affects the layout of 'Log In' and 'Create Account' buttons:
from

to

Maybe you could add 'margin-left: 10px' to the id 'create-account-btn'.

Okay, thx. I'll try to fix the problem :)

Looks good! Thanks for fixing this @jessicaly and thanks for reviewing it @Imperadeiro98
FYI, a little hidden, experimental feature in the testing system is a way to see all these pages together:

Go to [[http://localhost:3000/test/views/core/CocoView.spec]]
Click "Show Demos" button in the upper right.


relocation of mk_restarts and Raster

There is consensus among land group that mk_restarts should not be under GEOScatch_GridComp because many programs in it have nothing to do with cathment. Since those programs are all related to surface, a better choice is to relocate them under GEOSsurface_GridComp. The Shared directory is not a good place to host mk_restarts due to circular dependency. So a new directory GEOSsurface_GridComp/Utils is created to host mk_restarts. Also Raster is moved from Shared because it is more related to mk_restarts.  This PR addressed part of isse #232

Would you mind bringing mk_GEOSresatsrt.F90 here too? If you do so, this directory does not have to be a library anymore. Also, I can use that program for other planned development work on the AGCM side.
Raster - we can rename to mk_surface_bcs, or just surface_bcs or something.
Take or leave above comments.

Would you mind bringing mk_GEOSresatsrt.F90 here too? If you do so, this directory does not have to be a library anymore. Also, I can use that program for other planned development work on the AGCM side.
Raster - we can rename to mk_surface_bcs, or just surface_bcs or something.
Take or leave above comments.

@smahanam Why this is important? My understanding is in the future we don't need mk_GEOSldasRestarts.F90.  We only need a script that calls mk_CatchRestarts.x or mk_CatchCNResarts.x built here.

@smahanam Why this is important? My understanding is in the future we don't need mk_GEOSldasRestarts.F90.  We only need a script that calls mk_CatchRestarts.x or mk_CatchCNResarts.x built here.

No debate here :
mk_CatchRestarts.F90 is just fine, so are ScaleCatch.F90, and ScaleCatchCN.F90 as they are. mk_CatchCNRestarts.F90 needs some work to add CLM45 pre-processing for Jana's work.
Now your question about why we need it back. In the other thread, we expressed our desire to keep all codes together while GEOSldas had already left mk_restarts - keep all codes together is always my personal preference - no debate here.
I also had a plan, which was postponed or just forgotten since GEOSldas left.
mk_CatchCNRestarts.F90:
Right now, what it does is similar to the RESTART: 0 option in ldas_setup
Then,  we added RESTART: 2 option which is the culmination of few years of interactions with people that run CATCHCN -
I thought we could upgrade AGCM side and add RESTART: 2 equivalent option to the AGCM too - I was thinking to use mk_GEOSldasRestarts.F90 as part of the process.
Again, take or leave - if Shantha sees that land has already broken the mk_restarts directory, I am signing off from that debate - I didn't break it, anyway.

No debate here :
mk_CatchRestarts.F90 is just fine, so are ScaleCatch.F90, and ScaleCatchCN.F90 as they are. mk_CatchCNRestarts.F90 needs some work to add CLM45 pre-processing for Jana's work.
Now your question about why we need it back. In the other thread, we expressed our desire to keep all codes together while GEOSldas had already left mk_restarts - keep all codes together is always my personal preference - no debate here.
I also had a plan, which was postponed or just forgotten since GEOSldas left.
mk_CatchCNRestarts.F90:
Right now, what it does is similar to the RESTART: 0 option in ldas_setup
Then,  we added RESTART: 2 option which is the culmination of few years of interactions with people that run CATCHCN -
I thought we could upgrade AGCM side and add RESTART: 2 equivalent option to the AGCM too - I was thinking to use mk_GEOSldasRestarts.F90 as part of the process.
Again, take or leave - if Shantha sees that land has already broken the mk_restarts directory, I am signing off from that debate - I didn't break it, anyway.

@sdrabenh I tested PR for AGCM one day run to confirm its zero diff, and it is for scratch and history.

@sdrabenh I tested PR for AGCM one day run to confirm its zero diff, and it is for scratch and history.


Webpack 4 support

Hi.
I'm following Sean Larkin's Webpack course now on Frontend Masters and he showed us this plugin when I asked a question about how to handle multiple HTML files better than having 30 new HtmlWebpackPlugins,
I was wondering if this plugin will be ported to Webpack 4 or not. I'm willing to help but as of right now I know nothing about how to port plugins to Webpack 4.

Hi Eddy, thanks for reaching out.
At this time, our team is not actively working on this plugin, and we do not have a plan to bring this to Webpack 4.
You’re more than welcome to try and update it yourself. We’d love to see a PR if you get things to a place you’re happy with.

Hello,
I also followed the webpack course of Sean Larkin on Frontend Masters, and i made an attempt to migrate the multipage webpack plugin (it's the same code, juste changed how the htmlwebpackplugin was called), here it is : https://gist.github.com/yassmii/2a6f957b20e553c89c42b4316eea994f .
It's working, and i'm currently testing it on a project, but there's lot more to do on it, especially on the chunk side since CommonChunksPlugin has been deleted, i'm searching how to replace it, and maybe some cleaning, so let me know what you think of it :).


tool: upgrade to go 1.20

As a pre-req to https://github.com/Kuadrant/kuadrant-operator/issues/203, we should upgrade to Go 1.20
Things to consider on this upgrade:

Workflows should be updated to this version
Consider any functions that can be simplified from new functions natively provided by Go 1.20
Any go.mod / go.sum changes

@guicassolato do you have any thoughts on whether we want to use the experimental slices package<EMAIL_ADDRESS>to remove / simplify https://github.com/Kuadrant/kuadrant-operator/blob/main/pkg/common/common.go#L92-L189
This slice package is provided as part of Go 1.21 standard library<EMAIL_ADDRESS>but is not available in Go 1.20

@guicassolato do you have any thoughts on whether we want to use the experimental slices package

It's a shame it doesn't include a few generic functions we depend on (e.g. common.Map, common.Filter, common.Intersect, common.Intersection), but many others are there. So let's use it!


05/31/2018 17:37 : Create Pull Request for branch master -> prTesting1_2018053117

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


chore(main): release 0.2.5

Auto generated release
0.2.5 (2024-09-25)
Miscellaneous Chores

deps: bump clap from 4.5.17 to 4.5.18 (#60) (91c47ee)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v0.2.5
:sunflower:


Imports, spaces or not around keys

So the idea is:
import { Component } from 'angular2/core';

vs
import {Component} from 'angular2/core';

I see you prefer the first one, but could be good to say a few words about it.

spaces :)
mostly for clarity
thanks for the issue

Angular 2 issues will now go to the A2 style guide in the angular.io repo


too much downloading

Module are download and/or checked out of git too often.  Look at system-wide caching for the modules and at improving git-foo for fixtures based modules

great idea from angus - map a shared folder from host to cache RPMs for yum installing - boom!

using a shared directory for librarian puppet modules now - this means cache is shared between modules which means initial compiles times will be smaller on 'real' computers - CI servers probably don't keep the homedir in general so are SOL -- released in 0.6.0


Is there a way to list the resources identified?

Hi,
I stumbled upon this tool recently and found it to be very useful..! Thank you..!
The stats command is useful to count the number of AWS resources and it also generates a beautiful graph. But it would be really useful if it can have a table to all the AWS resources identified in the recent collect run. Alternatively, a command option to list the resources would be useful.
python cloudmapper.py list ec2 -accounts
With regards,
Varun

There is not a way to to that built into the tool.  You would have to look at the stats code and find the count that interests you: https://github.com/duo-labs/cloudmapper/blob/3afb111d39e7db4b60e84e7816dd08a34e673df9/commands/stats.py#L25
Then you could run jq on the account-data directory with something like:
jq '.Reservations[].Instances' account-data/*/*/ec2-describe-instances.json

It's hard to know what info people would want to see in a table for the different resources.  For example instance id?  The name as identified from a tag?
I've stayed away from trying to identify that, and instead just leave it up to people to query the account-data directory as needed.


Documentation:  Update ADLB script for ADLB grading (ATOXGRL, ATOXGRH, ATOXGR)

Please select a category the issue is focused on?
User Guides
Let us know where something needs a refresh or put your idea here!
Update ADLB script to add in functoins that create ADLB grading - new functions derive_var_atoxgr_dir and derive_var_atoxgr.

Close as part of version 8 release


No way to edit Product Manufacturer

Does this come from AssemblyInfo?

Yes, and assembly information is not part of the project configuration.
This tool only supports editing information that is stored in the project files (e.g. *.csproj)


.svn file is submitted into svn

cannot checkout source code because .svn file is submitted into svn.

the problem has been solved
you can always check out via git


Add CRC local testing

So I got this running, however it turns out that OpenShift Local needs 9+ GB of RAM free and the provided github runners only have 7GB of RAM.

Closing this, going to take another angle at this.


Better typings Support for the webdriver api

Feature Request
Better typings Support for the webdriver api
Currently many of the webdriver functions specified in the selenium api are not possible to use with the new protractor typings. I see why you might want to hide some of the api, however a lot is missing right now.
We upgraded to 4.0.2 and want to use the new typings however we are unable to as long as parts of the api is missing. (at least in a easy and clean way)
We specifically use
  executeScript: (script: string) => webdriver.promise.Promise<any[]>;
  manage: () => Options;

But more can be found her: http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebDriver.html
As a small note shouldn't
export class Webdriver {

}

be an interface instead? I believe an interface would be possible to extend without changes code in the protractor module.
Let me know if you are interested in a pull request

I thought I had this as an opened issue...I probably wrote my plan in a Google Doc. Anyway, I am trying to upgrade the DefinitelyTyped selenium-webdriver ambient typings. Using an up-to-date selenium-webdriver ambient typings will fix some of the weird things we are doing in TypeScript to fake in types for webdriver.
So as part of the task list is to clean up the Protractor codebase. This would mean that export class Webdriver would disappear from the codebase.
So your items:

executeScript could be accessed from browser.driver.executeScript; however, driver is of type any and executeScript does not have an interface or a return type. Does this prevent you from using this method?
export interface Driver {
  executeScript: (script: string) => webdriver.promise.Promise<any[]>;
  manage: () => Options;
}

(browser.driver as Driver).executeScript(<your script>).then(() => ...

export class Webdriver could be written as either a class or an interface. This will eventually be removed from the code base since this was used to fake in types for selenium-webdriver.

No it does not prevent me
(<any> browser).executeScript(...)

Works in both cases, however it always nice to have the issue fixed at the root instead of using workarounds. :smirk:
I actually ended up having to add a different workaround to my codebase that hides the above issue.
declare const browser: any;

The above typing is needed since importing 'protractor/globals' before the configuration has been fully loaded throws an exception, because the global variables are not defined before then.
globals.ts:21 throws an exception: TypeError: Cannot read property 'browser' of undefined.
export var browser: Browser = global['protractor']['browser'];

However I need to be able to call execute script from the onPrepare hook.
Hence the typings workaround.
However I see you already made changes related to this, I haven't test it though.

Workarounds! Win! I agree that fixing the root problem (selenium-webdriver DefinitelyTyped) will solve some of TypeScript issues.
I'll come back to comment on this issue on 'protractor/globals'. I hope to put to rest some of these issues with missing tests.

Related issue to clean up typings: https://github.com/angular/protractor/issues/3500

Related issue to not having manage on browser: https://github.com/angular/protractor/issues/3477

Will need to be resolved when requiring selenium-webdriver ambient typings with protractor typings: https://github.com/angular/protractor/issues/3423

DefinitelyTyped selenium-webdriver typings PR https://github.com/DefinitelyTyped/DefinitelyTyped/pull/10852.

To keep track of progress:

https://github.com/angular/protractor/pull/3507 locators with webdriver ambient types
https://github.com/angular/protractor/pull/3513 elements with webdriver ambient types

Also, we should think about how we are importing promise from selenium-webdriver. Currently we are using import {promise} from 'selenium-webdriver; and we are using promise.Promise<T>. Maybe we could do one of the following:

bring in the namespace and rename Promise to differentiate from es6 Promises: import {Promise as WebDriverPromise} from 'selenium-webdriver/promise';
change the namespace: import {promise as webdriverpromise} from 'selenium-webdriver';

Option 1 does not take into account for using promise.all. Option 2 might work better with webdriverpromise.all. @mgiambalvo What are your thoughts on this?


Update to Bootstrap 3.4.1

Fixes N/A

[x] Tested Changes using phpunit
[x] Have read and followed the Contribution Guidelines

This updates from Bootstrap 3.2.0 to 3.4.1 (the latest 3.x version). At some point, there should be an update to Bootstrap 4/5 but that would require a lot of work unless you can find an updated version of the sb-admin release that the UI is based upon.

Thank you for the PR!


type 'FixedScrollMetrics' is not a subtype of type 'PageMetrics' (Listview inside PageView)

I trying put one ListView inside a PageView but i having this error when I sweep scroll up/down, dont when change horizontal on PageView, only when I scroll ListView, I tried change it to SingleScrollView but it has same error:
type 'FixedScrollMetrics' is not a subtype of type 'PageMetrics'

When the exception was thrown, this was the stack:
#0      PageContainerState._onScroll (package:page_indicator/src/container.dart:114:25)
#1      NotificationListener._dispatch (package:flutter/src/widgets/notification_listener.dart:127:27)
#2      Notification.visitAncestor (package:flutter/src/widgets/notification_listener.dart:45:20)
#3      ViewportNotificationMixin.visitAncestor (package:flutter/src/widgets/scroll_notification.dart:31:18)
#4      Element.visitAncestorElements (package:flutter/src/widgets/framework.dart:3509:39)

...
Handler: "onUpdate"
Recognizer: VerticalDragGestureRecognizer#53e29
  start behavior: down

Code:
PageView(
  controller: _pageController,
  children: <Widget>[
    JFragMed(
      count: 0,
      data: data,
      path: path,
      def: def,
      gen: Generation.one,
      stream: _bloc.outStreamResult,
    ),
    JFragMed(
      count: 1,
      data: data,
      path: path,
      def: def,
      gen: Generation.two,
      stream: _bloc.outStreamResult,
    ),
    JFragMed(
      count: 2,
      data: data,
      path: path,
      def: def,
      gen: Generation.three,
      stream: _bloc.outStreamResult,
    ),
    JFragMed(
      count: 3,
      data: data,
      path: path,
      def: def,
      gen: Generation.four,
      stream: _bloc.outStreamResult,
    ),
  ],
)

JFragMed widget:
@override
  Widget build(BuildContext context) {
    return ListView(
      children: <Widget>[
        ...
      ],
    );
  }

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.2, on Mac OS X 10.13.6 17G8030, locale pt-BR)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 10.1)
[✓] Android Studio (version 3.5)
[✓] IntelliJ IDEA Community Edition (version 2019.2.2)
[✓] VS Code (version 1.38.1)
[✓] Connected device (1 available)

hi @Bestfastfire! how did you fix it?

hi @Bestfastfire! how did you fix it?

@Bestfastfire @varpa89  @Juliano-SantAna
I am having the same issue ... can anybody please tell me if there is a solution?

This is due to a bug in a package, not in flutter itself.
From the stack trace the problem is in this package:page_indicator/src/container.dart:114:25
The code is https://github.com/CaiJingLong/flutter_page_indicator/blob/master/lib/src/container.dart#L114
So it looks like a buggy type cast which fails at runtime

I was experiencing this error using https://pub.dev/packages?q=flutter+page+indicator package. It has since been fixed


types: failable conversions to/from sdk and core types

Description
Describe the changes or additions included in this PR.
Test plan
How did you test the new or updated feature?

Release notes
Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.
For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.

[ ] Protocol:
[ ] Nodes (Validators and Full nodes):
[ ] Indexer:
[ ] JSON-RPC:
[ ] GraphQL:
[ ] CLI:
[ ] Rust SDK:
[ ] REST API:

@amnn ah sorry the PR was set to auto merge, i've opened https://github.com/MystenLabs/sui/pull/19431 to address your feedback

No worries, stamped!


[docs/ffi] .address position should mention .cast()

TODO

[ ] The dartdoc comment of .address should mention or show an example of using .cast().
[ ] The published ADDRESS_POSITION documentation should mention .cast().

Original bug report:
While trying to fix this,
I found the below code is
@Native<Void Function(Pointer<Void>)>(isLeaf: true)
external void myNative(Pointer<Void> buff);

void main() {
  final buff = Int8List.fromList([2]);
  myNative(buff.address.cc);
}

throws 2 errors by the analyzer
1. ERROR|COMPILE_TIME_ERROR|ADDRESS_POSITION|9|17|7|The '.address' expression can only be used as argument to a leaf native external call.
2. ERROR|COMPILE_TIME_ERROR|UNDEFINED_GETTER|9|25|2|The getter 'cc' isn't defined for the type 'Pointer<Int8>'.

But expected is only one error
1. ERROR|COMPILE_TIME_ERROR|UNDEFINED_GETTER|9|25|2|The getter 'cc' isn't defined for the type 'Pointer<Int8>'.

FYI @dcharkes

I had a thought while reasoning about this issue, we recently "supported" .cast() on Pointers.
But i think thats a existing "bug" which we fixed (i.e its not something we added to support, it should have worked before)
Because as far as i understand "Address Position" Error, We are only allowing .address on leaf native call.
From the above statement, .address.cast()  should have worked before since still the .address is called on native leaf call.
But we should allow .address.a.b.c these right on native leaf call.
If we dont allow such these, then the definition of error should be different from what we have already "Address Position", it should be more like "Address member access is prohibited except cast"
But i dont think this is what we intended to.
Feel free to correct me. @dcharkes

https://dart-review.googlesource.com/c/sdk/+/383080 Requested CL here,
based on this

Also we should allow .address.a.b.c these on native leaf call.

If we dont allow such these expression address.a.b.c, then the definition of error should be different from what we have already "Address Position", it should be more like "Address member access is prohibited except cast"

It should be like this. .address is not a real expression, it changes how the FFI call works.

throws 2 errors by the analyzer
1. ERROR|COMPILE_TIME_ERROR|ADDRESS_POSITION|9|17|7|The '.address' expression can only be used as argument to a leaf native external call.
2. ERROR|COMPILE_TIME_ERROR|UNDEFINED_GETTER|9|25|2|The getter 'cc' isn't defined for the type 'Pointer<Int8>'.

But expected is only one error
1. ERROR|COMPILE_TIME_ERROR|UNDEFINED_GETTER|9|25|2|The getter 'cc' isn't defined for the type 'Pointer<Int8>'.

I think we would expect two errors here. They are separate errors, not one error causing the next error. Pointer doesn't have a .cc field.
You could compare it for example to trying to call a private method in Java or C++ and passing the wrong argument type to that method. You'd get an error that the method is private, and that the argument type is wrong.

Well, now it makes sense. Then analyzer is doing the right job, but cfe is the one still buggy. We can close this and track the cfe issue in new issue ticket?
@dcharkes

Thanks @dcharkes for clearing this, i think updating this error message would clearly indicate its purpose.

Well, now it makes sense. Then analyzer is doing the right job, but cfe is the one still buggy.

You can just make a PR without a bug report if you want to work on it right away. It saves who follow the bug reports on this repository an email. 😉

We can close this and track the cfe issue in new issue ticket?

We can update this issue to make it track updating the docs.

Btw, am just trying to understand the issue,
If we really dont want anyone to access Pointer's address (which is int), or any members (except cast), why cant we just make them as private or if not used internally we can remove them.
I understand it somehow used, but am not sure how.

Btw, am just trying to understand the issue, If we really dont want anyone to access Pointer's address (which is int), or any members (except cast), why cant we just make them as private or if not used internally we can remove them. I understand it somehow used, but am not sure how.
Any previous references or issue regarding this also helps me to understand.

You can find references in the following way:

Use git blame on the relevant lines of code in the analyzer and CFE (you can see this on GitHub).
Go the commits, look at the PR/CL link in the commit.
Read the documentation on those PRs/CLs.
Read the GitHub issues linked from those PRs/CLs.

@dcharkes does Arguments(listOfExpressions), where every expression's location is being set to null after the construction of Arguments, is there any way to hold the location of every expression even if its constructed for a new Arguments

@dcharkes
When constructing new Arguments(listOfExpressions), where every expression's location in listOfExpression is being set to null after the construction of Arguments, is there any way to hold the location of every expression even if its constructed for a new Arguments

Where is it being set to null? Why is it being set to null? Please add a reference to the code that does it.

Here https://github.com/dart-lang/sdk/blob/main/pkg%2Fvm%2Flib%2Fmodular%2Ftransformations%2Fffi%2Fuse_sites.dart#L1485-L1488
newArguments's every element (Expression) has location, but after it passed to construct Arguments its been just set to null, and i see that Arguments constructor is re-assigning parent of every argument initially in its implementation, i just dived this much. Just in case if it helps.

newArguments's every element (Expression) has location, but after it passed to construct Arguments its been just set to null, and i see that Arguments constructor is re-assigning parent of every argument initially in its implementation, i just dived this much. Just in case if it helps.

Maybe @jensjoha or @chloestefantsova knows the answer to this.

Seems location is not intentionally set to "null", but it is a getter which will get its location based on its parent, but Arguments constructor is resetting its parent and then it  might considered to be a orphan node, hence no location can be derived?

Yes, here https://github.com/dart-lang/sdk/blob/main/pkg%2Fvm%2Flib%2Fmodular%2Ftransformations%2Fffi%2Fuse_sites.dart#L1485-L1488
The constructed StaticInvocation is orphan while walking here
https://github.com/dart-lang/sdk/blob/main/pkg%2Fvm%2Flib%2Fmodular%2Ftransformations%2Fffi%2Fuse_sites.dart#L538-L539 which makes sense.

https://dart-review.googlesource.com/c/sdk/+/384080 @dcharkes

Hi @dcharkes, Any update on updating docs?


Plebe Daz rig alignment fails

I'm trying to use mGear to auto-rig a Gen8 character exported from Daz, but the controls for the knees are consistently coming in backwards and behind the opposite legs to where they should be; the right knee control is behind the left knee and vice versa. I'm new to mGear in general and I'm not sure if this is user error or not; the rest of the rig seems like it's properly aligned but I'm not sure how to fix this if it isn't a bug.

@toadstorm  I think is not a plebe issue but just the default pose of the Daz character that has the leg pose with the knee flexed in the inverse direction, so the solver understands wrong the knee direction for the rig. Can you try to flex just a little the legs, so the builder understands better the knee direction?
@ragtag do you mind checking and commenting on this?

@toadstorm mGear figures out the direction of the elbows and knees based on the position of the guides, and plebes aligns the guides to the skeleton from the character maker, in this case Daz. So if the Daz skeleton has the knee either completely straight, or pointing in the wrong direction, there is now way for mGear to figure out which way it should point.
There are two workarounds for this:

Rotate the joints that come with the Daz character slightly so the knees are pointing forward, before running the align guides. The downside of this is that the character is no longer being rigged in the bind pose.
Move the knee guides slightly forward, before you build the rig. The mGear knee will not be in the exact same position as the Daz one, but when the Daz joints are constrained to the rig, you won't really notice it much.

Also note that you will need to align the heel and side of feet guides, as there are no joints there in the Daz rig for matching these to.
Finally, I've got a pull request pending with a bunch of updates to Plebes that will hopefully make it into future mGear releases. This update includes a short How To guide in the Plebes dialog that covers this, plus an option to transfer the skin weights from Daz or other character generators characters to the mGear joints, instead of constraining them.  If you're feeling adventurous you can pick this version up from here https://github.com/ragtag/mgear4/tree/plebes  but be aware that it's based on code that's in development, so there may be issues.

Thanks @ragtag  for the heads up!
I will merge the PR before the next hotfix release that should be before Xmas :D


How to send a JSON array or object as a parameter in a POST request?

Description
I want to call this API through airnode: eth_getBlockByNumber, it needs a Json array parameter like "params":["finalized",false], I want to know how to set it in the config.json ois.endpoints.fixedOperationParameters
I tried to set it in fixedOperationParameters
{
                            "operationParameter": {
                                "in": "query",
                                "name": "params"
                            },
                            "value": ["finalized",false]
 }

The error message is:
Error: Invalid Airnode configuration file: [
  {
    "code": "invalid_type",
    "expected": "string",
    "received": "array",
    "path": [
      "ois",
      0,
      "endpoints",
      0,
      "fixedOperationParameters",
      4,
      "value"
    ],
    "message": "Expected string, received array"
  }
]

I also tried to leave it in parameters without the value, and fill it in postman when sending the request, the error message is "Invalid request body"
[2023-05-31 10:33:38.294] INFO API gateway server running on "http://localhost:3000"
[2023-05-31 10:34:01.232] DEBUG HTTP gateway request received                                                    requestId:724f5b1b-9cb5-4af5-8930-88c98ab1e1df
[2023-05-31 10:34:01.232] DEBUG HTTP gateway request passed origin verification                                  requestId:724f5b1b-9cb5-4af5-8930-88c98ab1e1df
[2023-05-31 10:34:01.232] DEBUG HTTP gateway request passed request body parsing                                 requestId:724f5b1b-9cb5-4af5-8930-88c98ab1e1df
[2023-05-31 10:34:01.233] ERROR HTTP gateway request verification error                                          requestId:724f5b1b-9cb5-4af5-8930-88c98ab1e1df
[2023-05-31 10:34:01.296] INFO Created initial coordinator state                                                Coordinator-ID:af35db446c6ced1f

Version
node: v18.16.0
yarn: 1.22.19
airnode: api3/airnode-client:latest
Present Behaviour
no
Expected Behaviour
Should accept the parameter and send it to the server.
Steps to reproduce

Copy my config.json

{
    "chains": [
        {
            "authorizers": {
                "requesterEndpointAuthorizers": [],
                "crossChainRequesterAuthorizers": [],
                "requesterAuthorizersWithErc721": [],
                "crossChainRequesterAuthorizersWithErc721": []
            },
            "authorizations": {
                "requesterEndpointAuthorizations": {}
            },
            "contracts": {
                "AirnodeRrp": "0x2ab9f26E18B64848cd349582ca3B55c2d06f507d"
            },
            "id": "11155111",
            "providers": {
                "myChainProvider": {
                    "url": "${LOCAL_PROVIDER_URL}"
                }
            },
            "type": "evm",
            "options": {
                "fulfillmentGasLimit": 500000,
                "gasPriceOracle": [
                    {
                        "gasPriceStrategy": "latestBlockPercentileGasPrice",
                        "percentile": 60,
                        "minTransactionCount": 20,
                        "pastToCompareInBlocks": 20,
                        "maxDeviationMultiplier": 2
                    },
                    {
                        "gasPriceStrategy": "providerRecommendedGasPrice",
                        "recommendedGasPriceMultiplier": 1.2
                    },
                    {
                        "gasPriceStrategy": "providerRecommendedEip1559GasPrice",
                        "baseFeeMultiplier": 2,
                        "priorityFee": {
                            "value": 3.12,
                            "unit": "gwei"
                        }
                    },
                    {
                        "gasPriceStrategy": "constantGasPrice",
                        "gasPrice": {
                            "value": 10,
                            "unit": "gwei"
                        }
                    }
                ]
            },
            "maxConcurrency": 100
        }
    ],
    "nodeSettings": {
        "cloudProvider": {
            "type": "local"
        },
        "airnodeWalletMnemonic": "${AIRNODE_WALLET_MNEMONIC}",
        "heartbeat": {
            "enabled": false
        },
        "httpGateway": {
            "enabled": true,
            "maxConcurrency": 20,
            "corsOrigins": []
        },
        "httpSignedDataGateway": {
            "enabled": false
        },
        "oevGateway": {
            "enabled": false
        },
        "logFormat": "plain",
        "logLevel": "DEBUG",
        "nodeVersion": "0.11.1",
        "stage": "quick-container"
    },
    "triggers": {
        "rrp": [
            {
                "endpointId": "0x6db9e3e3d073ad12b66d28dd85bcf49f58577270b1cc2d48a43c7025f5c27af6",
                "oisTitle": "CoinGecko Basic Request",
                "endpointName": "coinMarketData",
                "cacheResponses": false
            }
        ],
        "http": [
            {
                "endpointId": "0x6db9e3e3d073ad12b66d28dd85bcf49f58577270b1cc2d48a43c7025f5c27af6",
                "oisTitle": "CoinGecko Basic Request",
                "endpointName": "coinMarketData"
            }
        ],
        "httpSignedData": []
    },
    "templates": [],
    "ois": [
        {
            "oisFormat": "2.0.0",
            "title": "CoinGecko Basic Request",
            "version": "1.0.0",
            "apiSpecifications": {
                "servers": [
                    {
                        "url": "https://arbitrum-mainnet.infura.io/v3"
                    }
                ],
                "paths": {
                    "/${MyInfuraKey}": {
                        "post": {
                            "parameters": [
                                {
                                    "in": "header",
                                    "name": "Content-Type"
                                },
                                {
                                    "in": "query",
                                    "name": "method"
                                },
                                {
                                    "in": "query",
                                    "name": "id"
                                },
                                {
                                    "in": "query",
                                    "name": "jsonrpc"
                                },
                                {
                                    "in": "query",
                                    "name": "params"
                                }
                            ]
                        }
                    }
                },
                "components": {
                    "securitySchemes": {}
                },
                "security": {}
            },
            "endpoints": [
                {
                    "name": "coinMarketData",
                    "operation": {
                        "method": "post",
                        "path": "/${MyInfuraKey}"
                    },
                    "fixedOperationParameters": [
                        {
                            "operationParameter": {
                                "in": "header",
                                "name": "Content-Type"
                            },
                            "value": "application/json"
                        },
                        {
                            "operationParameter": {
                                "in": "query",
                                "name": "method"
                            },
                            "value": "eth_getBlockByNumber"
                        },
                        {
                            "operationParameter": {
                                "in": "query",
                                "name": "id"
                            },
                            "value": "1"
                        },
                        {
                            "operationParameter": {
                                "in": "query",
                                "name": "jsonrpc"
                            },
                            "value": "2.0"
                        },
                        {
                            "operationParameter": {
                                "in": "query",
                                "name": "params"
                            },
                            "value": ["finalized",false]
                        }
                    ],
                    "reservedParameters": [
                        {
                            "name": "_type",
                            "fixed": "string"
                        },
                        {
                            "name": "_path",
                            "fixed": "result"
                        }
                    ],
                    "parameters": [
                    ]
                }
            ]
        }
    ],
    "apiCredentials": []
}

Copy my secrets.env

AIRNODE_WALLET_MNEMONIC=""
LOCAL_PROVIDER_URL=""

Run this command

docker run \
  --volume "$(pwd):/app/config" \
  --name quick-start-container-airnode \
  --network host \
  api3/airnode-client:latest

Hey @jiguantong As the error says, value expects a string, so you'll need to enclose its value with quotation marks. Also note that JSON requires you to escape your " characters. I believe this should work:
{
                            "operationParameter": {
                                "in": "query",
                                "name": "params"
                            },
                            "value": "[\"finalized\",false]"
 }

Hey @jiguantong As the error says, value expects a string, so you'll need to enclose its value with quotation marks. Also note that JSON requires you to escape your " characters. I believe this should work:
{
                            "operationParameter": {
                                "in": "query",
                                "name": "params"
                            },
                            "value": "[\"finalized\",false]"
 }

Thanks for your help! I have tried it and it returned error code 400. This is the log.
[2023-06-01 07:49:25.360] ERROR Failed to call Endpoint:coinMarketData                                           requestId:10739fc2-d150-463f-8846-5b98e30b5bae, Endpoint-ID:0x6db9e3e3d073ad12b66d28dd85bcf49f58577270b1cc2d48a43c7025f5c27af6
[2023-06-01 07:49:25.362] ERROR AxiosError: Request failed with status code 400
    at settle (/usr/local/share/.config/yarn/global/node_modules/axios/dist/node/axios.cjs:1909:12)
    at IncomingMessage.handleStreamEnd (/usr/local/share/.config/yarn/global/node_modules/axios/dist/node/axios.cjs:2989:11)
    at IncomingMessage.emit (node:events:525:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) requestId:10739fc2-d150-463f-8846-5b98e30b5bae, Endpoint-ID:0x6db9e3e3d073ad12b66d28dd85bcf49f58577270b1cc2d48a43c7025f5c27af6
[2023-06-01 07:49:25.363] ERROR HTTP gateway request processing error

I also tried send it to api directly in postman, it returned invalid json request. So I think the API needs Json array, rather than string.

Alright, let us investigate and get back to you

@jiguantong - PRs by @aquarat to address this issue have been merged. We'll let you know when a release is available that incorporates the changes.
Cool! Thanks!

@jiguantong - @aquarat had a good idea in that you can test the changes now using the API3 docker images that are built during CI.
0b7d89eb582d63aa299216f3cc28d82cf7071981 is the latest master commit. To get the deployer docker image (e.g. for AWS deployment) corresponding to this commit you can use:
docker pull api3/airnode-deployer-dev:0b7d89eb582d63aa299216f3cc28d82cf7071981

Similarly, for the local client image:
docker pull api3/airnode-client-dev:0b7d89eb582d63aa299216f3cc28d82cf7071981

@jiguantong - @aquarat had a good idea in that you can test the changes now using the API3 docker images that are built during CI.
0b7d89eb582d63aa299216f3cc28d82cf7071981 is the latest master commit. To get the deployer docker image (e.g. for AWS deployment) corresponding to this commit you can use:
docker pull api3/airnode-deployer-dev:0b7d89eb582d63aa299216f3cc28d82cf7071981

Similarly, for the local client image:
docker pull api3/airnode-client-dev:0b7d89eb582d63aa299216f3cc28d82cf7071981

Awesome! It works.

@jiguantong - this feature is now available in the recently released v0.11.2.


How to set options attribute of chartjs

Thank you for this great package. I tried to hide the legend or call a callback function to format the label of yaxis. I did follow the instruction in Chartjs document, something like that:
(new BarChart())
    ->title('Expense')
    ->animations([
        'enabled' => true,
        'easing'  => 'easeinout',
    ])
    ->series(array([
        //'barPercentage'   => 1,
        'label'           => 'Average Sales 2',
        'backgroundColor' => '#F87900',
        'data'            => $chartData,
    ]))
    ->options([
        'xaxis'  => [
            'categories' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        ],
        'legend' => [
            'display' => false
        ]
    ])
    ->width('2/3'),

But it didn't hide the legend. So does this great package follow the chartjs document or it has a different way to pass value to option attribute?

I also would like to know this

Hi @phuclh & @mrpritchett, thank you for your feedback for this package. Unfortunately, we cannot set legend for now, but we will try to make sure you can configure the legend asap. Sorry for the inconvenience, will update this issue again soon.

@coroo Thank you :D. If you can add a way to format number on the axis, that would be great too!!!!

Hi @phuclh & @mrpritchett , sorry for the inconvenience before. I already update the options behavior in nova-chartjs, so please use the latest update v0.1.1 for this issue. Also, please see this documentation on how to hide legend: https://coroo.github.io/nova-chartjs/#/?id=legend

Great support!!!

@coroo I'm trying to use beginAtZero of chartjs, do you mean ->options(...) is not passed into chartjs? Why not just pass it on as is, instead of having to write code for each option?


Add the option to copy the reminder to the clipboard

Didn't add a test because it's not technically part of the answer :slightly_smiling_face:

Fixed the issue @skanehira please check again :slightly_smiling_face:

LGTM 👍

Also, how do we create a new release?

When I push new git tag, then GitHub Actions will create new release :)
Please wait a lille, I'll do it.


SMIRNOFF: LJPME not allowed

It probably should be; it's supported in the biggest simulation engines, has valid scientific basis, and sees use in force fields elsewhere.

Blocked by #15

Re LJ-PME, we definitely want it, as there is a very strong argument for using it e.g. in binding free energy calculations. We probably want this to be called something like "lattice-sum LJ" or similar, again not specifying the exact algorithm (so avoiding the term "PME").

Yes, P3M from LAMMPS is essentially equivalent to PME LJ.

This is probably resolved, but it'd be nice for the prose to be updated to literally include "LJPME" somewhere. When I open up the page and search for just that keyword, there are no hits.

Yes! Looks resolved, but fully support adding the characters "LJPME" somewhere to make it searchable, maybe just as a parenthetical?

Third-ed - I'd approve a PR adding something like (sometimes referred to in implementation as "LJPME") to the text of the spec itself.


Max packet size error when payload length close to maxPacketSize

Description
When node-coap is used as a server it is normally not required to explicitly set the Block2 option when sending a response, even if the payload length is greater than the maxPacketSize setting. This is because of a check performed at server.ts:678 which should detect that the payload requires a blockwise transfer, and then automatically apply the blockwise transfer logic to ensure that the transfer goes ahead.
Unfortunately this check is performed on just the payload, without regard for the size of the header. This means that the logic does not work for payload sizes that are close to, but not over, the maxPacketSize parameter. Depending on the header size, this holds for packets that are roughly between 1268 - 1280 bytes long.
Code to Recreate
The problem can easily be recreated by modifying examples/blockwise.js. If the client does not add the Block2 header (since it does not know what size the response will be), and the server generates a payload of 1268 bytes, the server will crash with the message "Max packet size is 1280: current is 1281".
If the requested payload size is increased on line 16 to a value >= 1280 then the server automatically applies blockwise transfers and no error is thrown. If it is decreased to <= 1267 then the payload doesn't need to be split and gets sent in a single response. The error only appears when (in pseudocode) payload.length < maxPacketSize && payload.length + header.length > maxPacketSize.
const coap = require('../') // or coap

coap.createServer((req, res) => {
    // FIXME: This has became a bit ugly due to the
    //        replacement of the depracated url.parse
    //        with the URL constructor.
    //        This part of the exmample should be replaced
    //        once a nicer solution has been found.

    const splitURL = req.url.split('?')
    const time = parseInt(splitURL[1].split('=')[1])
    const pathname = splitURL[0].split('/')[1]

    res.end(new Array(time + 1).join(pathname)) // <-- Make it easier to specify exact size
}).listen(() => {
    const req = coap.request('coap://localhost/1?t=1268') // <-- Request a payload of 1268 bytes

    // edit this to adjust max packet
    //req.setOption('Block2', Buffer.of(0x2)) // <-- Remove client Block2 option

    req.on('response', (res) => {
        res.pipe(process.stdout)
        res.on('end', () => {
            process.exit(0)
        })
    })

    req.end()
})

Here is a patch that can be applied to the master branch to change the example if needed
iff --git a/examples/blockwise.js b/examples/blockwise.js
index ea48b55..1824099 100644
--- a/examples/blockwise.js
+++ b/examples/blockwise.js
@@ -11,12 +11,12 @@ coap.createServer((req, res) => {
     const time = parseInt(splitURL[1].split('=')[1])
     const pathname = splitURL[0].split('/')[1]

-    res.end(new Array(time + 1).join(pathname + ' '))
+    res.end(new Array(time + 1).join(pathname)) // <-- Make it easier to specify exact size
 }).listen(() => {
-    const req = coap.request('coap://localhost/repeat-me?t=400')
+    const req = coap.request('coap://localhost/1?t=1268') // <-- Request a payload of 1268 bytes

     // edit this to adjust max packet
-    req.setOption('Block2', Buffer.of(0x2))
+    //req.setOption('Block2', Buffer.of(0x2)) // <-- Remove client Block2 option

     req.on('response', (res) => {
         res.pipe(process.stdout)

It's probably worth following the logic in Section 4.6 of the RFC, which makes the fix quite easy:

If the Path MTU is not known for a destination, an IP MTU of 1280
bytes SHOULD be assumed; if nothing is known about the size of the
headers, good upper bounds are 1152 bytes for the message size and
1024 bytes for the payload size.

So Block2 transfers should start once the payload size goes above 1024.
In addition, the default for the maxPacketSize parameter should be reduced to 1152 since 1280 is the IP MTU and doesn't include the UDP header. If the UDP payload goes above 1280 then fragmentation at the IP layer might occur.

Thank you very much for the infos and also research. If you like we are happy about any PR or such (like your patch in the first post).

I've been working on this in my personal time outside of work, so I've switched to my personal account (same person as OP, slightly different username).
I'll probably have a PR ready by the end of the day.