Documentation test dependencies sbt

Add the actual required dependencies for testing in the  documentation.
Hi
I think it would be easier to get started with using finatra if the required test dependencies are directly listed as code in the first steps section of the documentation.
libraryDependencies ++= Seq(
  "com.twitter" %% "finatra-http" % versions.finatra % "test" classifier "tests",
  "com.twitter" %% "finatra-jackson" % versions.finatra % "test" classifier "tests",
  "com.twitter" %% "inject-server" % versions.finatra % "test" classifier "tests",
  "com.twitter" %% "inject-app" % versions.finatra % "test" classifier "tests",
  "com.twitter" %% "inject-core" % versions.finatra % "test" classifier "tests",
  "com.twitter" %% "inject-modules" % versions.finatra % "test" classifier "tests"
)

Thanks

Jan

@JanMH I think we already do this, see here.  What do you think is missing there?

I believe it might be clearer if we write it like this so the necessary information is more compact.

Finatra publishes `test-jars <https://maven.apache.org/guides/mini/guide-attached-tests.html>`__ for most modules. The test-jars include re-usable utilities for use in testing (e.g., the `EmbeddedTwitterServer <https://github.com/twitter/finatra/blob/develop/inject/inject-server/src/test/scala/com/twitter/inject/server/EmbeddedTwitterServer.scala>`__).

To add a test-jar dependency, depend on the appropriate module with the `tests` classifier. Additionally, these dependencies are typically **only needed** in the ``test`` scope for your project. E.g., with `sbt <https://www.scala-sbt.org/>`__:

.. parsed-literal::

    "com.twitter" %% "finatra-http" % "\ |release|\ " % "test" classifier "tests"

or

.. parsed-literal::

    "com.twitter" %% "finatra-thrift" % "\ |release|\ " % "test" classifier "tests"

Since `transitive test-scoped dependencies are not resolved <https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html>`__ using this approach, you will need to specify all other required test-scoped dependencies manually:

.. parsed-literal::

    libraryDependencies ++= Seq(
        "com.twitter" %% "finatra-jackson" % "\ |release|\ " % "test" classifier "tests",
        "com.twitter" %% "inject-server" % "\ |release|\ " % "test" classifier "tests",
        "com.twitter" %% "inject-app" % "\ |release|\ " % "test" classifier "tests",
        "com.twitter" %% "inject-core" % "\ |release|\ " % "test" classifier "tests",
        "com.twitter" %% "inject-modules" % "\ |release|\ " % "test" classifier "tests"
    )

For example, the `finatra-http` test-jar depends on the `inject-app` test-jar (among others). You will have to **manually add** a dependency on the `inject-app` test-jar when using the `finatra-http` test-jar since the `inject-app` test-jar will not be resolvedtransitively.

Using the `sbt-dependency-graph <https://github.com/jrudolph/sbt-dependency-graph>`__ plugin, you can list the dependencies of the `finatra-http` test configuration for the `packageBin` task:

.. code:: bash

    $ ./sbt -Dsbt.log.noformat=true http/test:packageBin::dependencyList 2>&1 | grep 'com\.twitter:finatra\|com\.twitter:inject'
    [info] com.twitter:finatra-http_2.12:...
    [info] com.twitter:finatra-httpclient_2.12:...
    [info] com.twitter:finatra-jackson_2.12:...
    [info] com.twitter:finatra-slf4j_2.12:...
    [info] com.twitter:finatra-utils_2.12:...
    [info] com.twitter:inject-app_2.12:...
    [info] com.twitter:inject-core_2.12:...
    [info] com.twitter:inject-modules_2.12:...
    [info] com.twitter:inject-request-scope_2.12:...
    [info] com.twitter:inject-server_2.12:...
    [info] com.twitter:inject-slf4j_2.12:...
    [info] com.twitter:inject-utils_2.12:...

In this case, when executing the `packageBin` task for `finatra-http` in the test configuration these dependencies are necessary. Unfortunately, this listing does not explicity state if it's the compile-time or the test-jar version of the dependency that is necessary. However, it is safe to assume that if you want a dependency on the `finatra-http` test-jar you will also need to add dependencies on any test-jar from the listed dependencies as well.

Let me know what you think @mosesn
Thanks!

Hi @JanMH, we would welcome a pull request if you're interested in submitting one. On its own, we're unlikely to change this anytime soon.


ctr tasks checkpoint returns invalid task checkpoint option for io.containerd.runc.v2: unknown

Description
When I use the ctr tasks checkpoint command, it returns ctr: invalid task checkpoint option for io.containerd.runc.v2: unknown
# ctr tasks checkpoint test
ctr: invalid task checkpoint option for io.containerd.runc.v2: unknown

but with the --image-path parameter, it works fine
Steps to reproduce the issue

ctr tasks checkpoint

Describe the results you received and expected
The ctr tasks checkpoint command can be run normally.
What version of containerd are you using?
containerd github.com/containerd/containerd v1.7.0 1fbd70374134b891f97ce19c70b6e50c7b9f4e0d
Any other relevant information
No response
Show configuration if it is related to CRI plugin.
No response

/assign

This is caused by the upgrade of github.com/containerd/typeurl to v2
typeurl/v2.UnmarshalAny(any Any) (interface{}, error) returns nil, nil when Any.GetValue() is nil, which causes an exception for validation of CheckpointOptions
https://github.com/containerd/containerd/blob/d9453224b689f2b2977e00ae8e5afd01007161ab/services/tasks/local.go#L757-L775
The Checkpoint Options of ctr task checkpoint <task> is &options.CheckpointOptions{}, when containerd tasks service receive this parameter, option is not nil but option.GetValue() is nil, then UnmarshalAny return nil, nil.
anypb.Any{state:impl.MessageState{NoUnkeyedLiterals:pragma.NoUnkeyedLiterals{}, DoNotCompare:pragma.DoNotCompare{}, DoNotCopy:pragma.DoNotCopy{}, atomicMessageInfo:(*impl.MessageInfo)(nil)}, sizeCache:0, unknownFields:[]uint8(nil), TypeUrl:\"containerd.runc.v1.CheckpointOptions\", Value:[]uint8(nil)}","time":"2023-04-14T17:08:30.694057195+08:00"}

I think the best way is to have typeurl.UnmarshalAny not return nil, nil when the GetValues() is nil, but this doesn't look like a backwards-compatible change for typeurl/v2.
Otherwise, we can only add a check for the return value to each call to Unmarshal* in containerd.
@kzys @dmcgowan what do you thinks?

Can you tell me how you restore a task after ctr tasks checkpoint ?

Can you tell me how you restore a task after ctr tasks checkpoint ?

You could use ctr container restore

Can you tell me how you restore a task after ctr tasks checkpoint ?

You could use ctr container restore

Thanks for your reply!
Could i use cmd to checkpoint/restore a container, just like as follow?
ctr task checkpoint --image_path IMAGE_DIR CONTAINER
ctr container restore --image_path IMAGE_DIR ImageRef CONTAINER [COMMAND] [ARG...]

@qi0523 There are currently no commands that support image path.
It seems to be possible to make the --checkpoint  of ctr run support the image path, but currently it seems convenient to use checkpoint image


Sneaker Site files added

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes #227

Type of change

[x] New feature (non-breaking change which adds functionality)

Explain the Testing instructions
Test Configuration:

Operating system: Windows 10
Version: Latest
Text-editors used: Visual Studio Code

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] New and existing unit tests pass locally with my changes

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

This is my new PR for the sneaker site, I hope it's working well now

@Adit0507 yes its working but is it a Js project ?

@Adit0507 yes its working but is it a Js project ?

Yes it is. This project will give a good practice for JS as well as CSS to beginners and it is fully responsive.

I loved the site! Did you make it on your own @Adit0507 or did you refer any tutorial?

I loved the site! Did you make it on your own @Adit0507 or did you refer any tutorial?

I referred to a tutorial for this website. If everything is working well now, can u please merge it.

Great! The site looks good to me. @arpit456jain will look into this and merge it soon


Build error when using Mapping<K,V,H> where V has no default constructor.

Problem
Error when build contracts when using Mapping<K,V,H> type where type V take more than one required constructor arguments.
Example contract
Using Uint8Array for mapping value, it takes length as mandatory constructor argument.
import {
    AccountId, HashKeccak256, Mapping
} from "ask-lang";

@spreadLayout()
class Data {
  map: Mapping<AccountId, Uint8Array, HashKeccak256> = new Mapping();
}

@contract()
export class Contract {
  data: Data;

  constructor() {
    this.data = new Data();
  }

  @constructor()
  default(): void {}

  @message()
  get(account: AccountId): Uint8Array {
    // return new Uint8Array(0);
    return this.data.map.get(account); // works if this line is commemted out.
  }
}

Error
$ ASK_CONFIG=./askconfig.json asc --config asconfig.json serialize.ts
ERROR TS2554: Expected 1 arguments, but got 0.

             return instantiate<T>();
                    ~~~~~~~~~~~~~~~~
 in ~lib/as-serde-scale/misc.ts(21,20)

FAILURE 1 compile error(s)
error Command failed with exit code 1.

Yeah, Because we need to construct this type first and then decode storage data into it.
You should wrap this type.
Now it's actually not good design. But it's not easy to design a better way in AssemblyScript.


Add a way to conveniently parse Local Dates using serde

Maybe I just missed something, but AFAICT there is no easy way to derive serde::Deserialize on a struct and without adding helper functions get a chrono::NaiveDate out the other side except using string values.
e.g. get from this:
a=2022-12-14

to
struct A {
  a: NaiveDate
}

For now the only way to do so seems to be to use toml::value::Datetime and afterwards ensure that it is only a local date and convert that to a NaiveDate by creating it manually.

The problem is having a compatible data model.  We are either blocked on serde defining one or "the ecosystem" (e.g. time and chrono) agreeing on one.  Seeing as time defines several different data models for you to choose from, I don't have much confidence in this.

Would one way be to provide a parser that can be used with serde(with = "toml::chrono::date")?
This could also easily be put behind a chrono feature flag.

Well I guess it would be possible to create a dedicated crate for supporting this usecase, as I guess chrono would also not be in favor of adding a toml module to their crate.
But it seems a bit superfluous to have a toml_serde_date crate.

Well I wrote said crate: https://github.com/ModProg/toml-datetime-compat


Enabling B2C on Node.js Web App deployed to app service

I'm trying to get B2C working on my web app that has been deployed ( at least I think) to App service. The website itself is not accessible ( https://b2ctestingwebapp.azurewebsites.net ) although the portal said it deployed correctly.

I use bitbucket to deploy. Web app errors:

I had tested it locally successfully. But B2C upon deployment does not work. My redirect URLs are:

And finally, the B2C tenant app registration:

I'd highly appreciate some insight.

#15 this is also a recurring issue while I follow the process. An incognito window usually resolves it, implying what I think is a cookie header issue. Please share any details that might help.


#1063 fixed Support us cards

#1063 Fixed unusual scaling of support us cards on hovering

Great contribution to Hacktoberfest'24! 🎉


Cache generated image previews

Image requests for previews are not cached by the browser.
This might just need a simple content header in express, or a rework of the image preview backend, or failing both of those a client-side caching mechanism.

Etag would probably work here.
But the image preview cache is probably not the biggest performance problem at the moment.

Related: https://github.com/webaverse/app/issues/962


KYLIN-4302 Fix the bug that InputStream is not closed properly

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@f3a1696). Click here to learn what that means.
The diff coverage is 66.66%.

@@            Coverage Diff            @@
##             master    #1000   +/-   ##
=========================================
  Coverage          ?   25.47%
  Complexity        ?     6173
=========================================
  Files             ?     1416
  Lines             ?    85945
  Branches          ?    12062
=========================================
  Hits              ?    21898
  Misses            ?    61908
  Partials          ?     2139

Impacted Files
Coverage Δ
Complexity Δ

...che/kylin/engine/mr/streaming/RowRecordReader.java
0% <0%> (ø)
0 <0> (?)

...rg/apache/kylin/source/hive/BeelineHiveClient.java
3.84% <0%> (ø)
5 <0> (?)

...eam/core/storage/columnar/FragmentFilesMerger.java
96.02% <91.3%> (ø)
30 <0> (?)

Continue to review full report at Codecov.

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


add fully qualified url for 302 redirects

need to write some tests buuut I think we need to change this api gateway response pattern to something like below
(.*statusCode\":302.*)|^(http:\/\/|https:\/\/|\/.*)

this will allow
var arc = require('@architect/functions')

function route(req, res) {
  res({
    location: 'https://wtfjs.com'
  })
}

exports.handler = arc.html.post(route)

The regexp above also allows for statusCode to be invoked with a JSON payload to allow headers other than Location be set during 302.  (Small enhancement I've been intending for a while.) Also: this will all be completely backwards compatible but old API Gateway routes will need to be deleted in the AWS console and recreated by running npm run create to get the new functionality.

I seem to be running into an issue when trying this out.
res({
  location: `${FRONTEND_LOGIN_URL}/${user.api_key}`
})

SyntaxError: Unexpected token h in JSON at position 0
    at JSON.parse ()
    at _local (.../node_modules/@architect/workflows/src/sandbox/http/index.js:86:26)
    at _write (.../node_modules/@architect/functions/src/http/_response.js:16:7)
    at _update (.../node_modules/@architect/functions/src/http/session/write.js:24:5)
    at Response._create (.../node_modules/@architect/functions/src/http/session/_update.js:16:7)
    at Request. (.../node_modules/aws-sdk/lib/request.js:364:18)
    at Request.callListeners (.../node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (.../node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (.../node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (.../node_modules/aws-sdk/lib/request.js:22:10)

Arg, ya I have yet to fix this. Only relative redirects possible (not fully absolute urls / x-domain)


Update readme.md

First edit readme file

This PR seems almost the same as the other one.
I am going to close this one.


[ISSUE #643]🐛Fix topic_config_and_mapping_serialize_wrapper_default t…

…est case error

Which Issue(s) This PR Fixes(Closes)

Fixes #643
Brief Description

How Did You Test This Change?

🚀Thanks for your contribution🎉. CodeRabbit(AI) will review your code first🔥


wppconnect useragent

When you connect with WhatsApp, the device appears unknown, nor the name of the browser

How device is connected?


A streaming proxy for LLM answers

Why you need it?
LLm applications require a way to stream the results as they are generated
How it could be?
We need a stereaming proxy. It should work this way.
Since actions while produce input cannot communicate back with the frontend, they should write the temporary content in redis.
The proxy is mounted on /stream of each user with an ingress, and when it receive a request /stream/<key> it will stream the content as it arrives in the key <user>:<key>
Other related information
We should explore the best way to execute the request.
We should be able to execute a request liket how can I become rich and forget.
Normally openwhisk returns an activation id, and the result should be written in redis using this id for the streaming . So an asyncrhonous request should be more or less:

webaction invoking an asyncrhonous request and returning the activation id
action talking to an LLM and writing the result to redis in the key corresponding to the activtion id

An idea could be to use Redis/Valkey Streams. (an example here )

please check https://github.com/apache/openserverless/issues/82 as this spec is outdated


Switch PHP Version

Terminus should allow you to toggle the PHP version for a site/environment.

Closing this for now. I think the longer term answer is that this should be part of a config file that's pushed with the project, not a toggle that's fiddled in terminus.


[bug] quick start running tauri on mac causes weird bug

Describe the bug
I am having this bug on my M2 Mac running a basic tauri app from create-tauri-app, where the tauri app opens and displays for a sec but then my focused window on my computer changes and i can't see the app. For example, whenever i click on the tauri popup it will just move my focus to the window on the right im my window manager, so I can't interact with the app anymore.
https://github.com/tauri-apps/tauri/assets/52892257/7dc5a52b-79b6-44eb-9f02-4b5b3b3aaa70
See screen recording.
Reproduction
No response
Expected behavior
No response
Platform and versions
I am on an M2 using the yabai window manager, and don't understand what's going on. Installed tauri from create-tauri-app.

Stack trace
No response
Additional context
No response

I doubt anyone in the team knows anything about yabai to be honest. Could you also reach out to them? I can't think of anything weird we're doing in Tauri that would cause this other then the connection between 2 windows (terminal + tauri window) but that's not a tauri specific thing to do either so idk 🤔


comment field GO:0003712

does not resolve in quickgo
https://www.ebi.ac.uk/QuickGO/term/GO:0003712
looks like this in canto:

Hi @tonysawfordebi
Can QuickGO be fixed to support URLs in comments ?
Thanks, Pascale

I'll pass the request on to the developers.

Fixed.


Server-Side Pinning and post to social media through ipfs pubsub

simple bash script:
ipfs pubsub sub socialpost | xargs -i node social-post.js {}


[BUG] json.decoder.JSONDecodeError

Before submitting a bug report...

[X] This bug wasn't already reported.
(I have checked every bug report on GitHub)

Title

[X] The title is no longer "[BUG] Title" and I edited it with the right error name.

Describe the bug
I didn't found any error like this one on the issues (I think)
Normally, the installation is done, the requirements installed, the accounts file edited and Im not using proxy
Copy and paste your error
❯ python main.py
Traceback (most recent call last):
File "C:\Users\Wan_s\desktop\Microsoft-Rewards-Farmer-master\main.py", line 175, in
main()
File "C:\Users\Wan_s\desktop\Microsoft-Rewards-Farmer-master\main.py", line 21, in main
loadedAccounts = setupAccounts()
^^^^^^^^^^^^^^^
File "C:\Users\Wan_s\desktop\Microsoft-Rewards-Farmer-master\main.py", line 118, in setupAccounts
loadedAccounts = json.loads(accountPath.read_text(encoding="utf-8"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\json_init_.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 5 column 5 (char 95)
Screenshots

Value of dashboard variable
It doesn't even connect to the dashboard page so don't need this section

Looks like you malformed your accounts.json file, please make sure it is correct


getTagMedia fails because of default hardcoded 0 value in arg

the getTagMedia function has a hardcoded limit of 0 by default. This causes an error when the function is called. Suggestion is to change the argument passed to the function to a value such as $mediaLimit earlier in the code so that it can be manipulated easily in the future.

This will be fixed when #119 gets merged.

I confirm the problem about getTagMedia function.

getTagMedia()
Change $auth to true in _makeCall and check pls other auth methods
https://instagram.com/developer/endpoints/tags/

@imonly Could you please describe a little more why we should change the default $auth parameter to true? Maybe its better to specify this for each individual request instead. We should add it here: https://github.com/cosenary/Instagram-PHP-API/blob/master/src/Instagram.php#L304

https://github.com/cosenary/Instagram-PHP-API/blob/master/src/Instagram.php#L317
$auth == false but in documentation need https://api.instagram.com/v1/tags/{tag-name}/media/recent?access_token=ACCESS-TOKEN

Yeah, we should fix this. Maybe you could setup a pull request for all methods that need the authentication?

Sorry, but I have no time for it
And also, it would be nice if you could set up a job with the api so that did not need to reinvent the wheel when you want to Ajax requests to the api, in the comments there is a very sensible idea of passing parameters to the method https://gist.github.com/cosenary/2961185#comment-803467

@imonly Maybe you could create a second thread concerning this issue.

Seems like others, #121 and #122, also are experiencing this issue. We should fix this asap.

Like juste said in #121
I managed to get my code running with a quick fix like the following
public function getUserFeed($limit = 0) {
        if($limit>0) {
            return $this->_makeCall('users/self/feed', true, array('count' => $limit));
        }else{
            return $this->_makeCall('users/self/feed', true);
        }

It isn't pretty but it work fine without having to edit the methods call.
Instagram now ask for either a count parameter over 0 or no count parameter at all.
I figured it was the best way to deal with it will we figure a way to solve it properly.

Is this fix pushed to master?  I am still getting this error....


FINERACT-1483: fix Sonar bugs with Blocker and Critical severity

Description
Bugs reported by Sonar with Blocker and Critical severities have been fixed

@taskain7 Thanks for the contributions. Looks like there is a checkstyle issue somewhere in the PR: https://github.com/apache/fineract/runs/5512932230?check_suite_focus=true
Check the logs of the build failures above.

Thank you @awasum , I fixed, now it should pass the build


Regression in<EMAIL_ADDRESS>dynamic argument type incorrect

This bug was initially reported here: https://github.com/vuejs/language-tools/issues/2514
Slightly different TS error, but same result: null is not allowed to be used as a dynamic event name to remove the binding.
Reference: https://vuejs.org/guide/essentials/template-syntax.html#dynamic-argument-value-constraints

I cannot reproduce the issue, please provide minimal reproducible code or repo to help us be able to investigate it, thanks.

I cannot reproduce the issue, please provide minimal reproducible code or repo to help us be able to investigate it, thanks.

Minimal reproducible code:
<script setup lang="ts">
import { computed } from 'vue';

const props = defineProps<{ toggleEnter: boolean }>();

const eventName = computed(() => (props.toggleEnter ? 'enter' : null));

function handleEvent() {
    // noop
}
</script>

<template>
    <Transition @[eventName]="handleEvent" />
</template>

Error:

Seems to only be an issue with event handlers on components. Doesn't give me an error on HTML elements.

It should fixed by https://github.com/vuejs/language-tools/commit/2a3ea17c4ed37f35b6e89adc55996f92651b9a07.


Added Dockerfile for running locally with docker + updated readme

Hello,
I don't have Maven or Java installed on my machine so I added a Dockerfile to be able to run it locally.
I also included the steps to make it work in the readme.
The Dockerfile now also has support for a token using environment variables.

Thanks @bartw, could you please update?

@bartw could you reduce the size to the image. Maybe you could use multi-stage syntax to build the jar, then use a openjdk:8-jre-alpine image to run it.
FROM maven:3.5.2-jdk-8-alpine as maven-build
ENV TOKEN=""
WORKDIR /app
COPY . .
RUN mvn verify

FROM openjdk:8-jre-alpine
WORKDIR /app
COPY --from maven-build target/github-profile-summary-1.0-jar-with-dependencies.jar github-profile-summary.jar
CMD java -Doauth-token=$TOKEN -jar target/github-profile-summary.jar

You could even simplify the Jar name by changing the <build><finalName>${project.artifactId}</finalName></build> in the pom.xml so you won't have 1.0-jar-with... in the copy (which will change after each release.
One side note, I'm not a huge fan (so this is entirely subjective) to run the code as root in the docker container. Wouldn't it be a good idea to create a user and make sure you run all commands with this user?
If you're not confortable with those changes (as not a maven user), @tipsy I can offer a PR to provide those changes once this PR is merged.

@alecharp Feel free to create a new Docker PR (this is the second one after all). I'm not an expert on docker, so I would hoping the community would help decide which PR is better.

@tipsy I made changes to allow the multiple tokens and fixed the conflicts.
@alecharp I think your propositions are all very good. You can make the changes in your own PR, otherwise I would just be copying your code and you deserve the credit.

@bartw I have no problem with you commiting my code, I wouldn't have noted in the comment otherwise ;) or @tipsy you can simply merge this PR as it is and I can do a PR to change the Dockerfile

@bartw thanks, merged. Go ahead @alecharp.


Default to <IP_ADDRESS>?

Right now quickwit service run searcher listens to <IP_ADDRESS> by default.
This can be confusing for the user.
Fortunately, the logs are quite helpful for the user who knows what to look for.
Should we default to <IP_ADDRESS>?

@fmassot @guilload

There are two perspectives:

The ease of use perspective, you want <IP_ADDRESS>
The security perspective, you want <IP_ADDRESS> to restrict access by default, users explicitly setting the listen address to <IP_ADDRESS> are basically telling you "I acknowledge you're trying to protect me but I know what I'm doing and I won't be angry at you if I screw up."

The webservers I know (gunicorn, sanic) default to <IP_ADDRESS>. Meilli does too. Materialize went for <IP_ADDRESS>.
We should at least reinstate the --ip / --port options to override the default config value.

Agreed.
Cassandra and postgresql default to 127.0.0.
I suggest we just try to mitigate user pain.
For instance, we could add a very visible warning when the user uses <IP_ADDRESS>
and set some peer seeds for instance with a host != localhost.
We can probably always display some log line explaining the server will only be accessible locally, etc.


@conda-forge-admin, please add user @leon-thomm

@conda-forge-admin, please add user @leon-thomm

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added user @leon-thomm in conda-forge/ryvencore-qt-feedstock#5.


unable to mv /runnertmp to /runner

hi,
it looks like the entrypoint.sh is trying to mv /runnertmp/* /runner as the 'runner' user.
however /runnertmp/patched is owned by 'root' so 'runner' can't remove (mv).
maybe the dockerfile can COPY --chown=runner:docker patched $RUNNER_ASSETS_DIR/patched  or the entrypoint can sudo mv or cp -r

This one should have been fixed via #284 thanks to you! Closing as resolved, but please feel free to reopen if necessary.


A little question about pre training.

Hi, thank you for your work on protein.
I noticed that num_ train_ Steps is set to 12000000. Is this the parameter you used?
How long have you been training? I use V100 16GB, which seems to take more than 1000 hours.

Why 12000000?

Why 12000000?

I dont know.
But it do be in code, it's also my question.


[Feature Request]: Add check for Emacs UTF-8 file header

Is your feature request related to a problem? Please describe.
At Inpsyde, PHP files used to have the following file header:
<?php # -*- coding: utf-8 -*-

or
<?php declare(strict_types=1); // -*- coding: utf-8 -*-

As of 2021-06-25, there are more than 15.000 PHP files with this header. It originates from Emacs and including it was adapted by developers undiscussed for years.
However, (nowadays) it doesn't make any sense to keep it. In fact, it is no longer used in most new packages and should be removed gradually from legacy packages too.
Describe the solution you'd like

Add a coding standard check for the header that warns the user if the header is present.
Make sure that phpcbf deletes it.

Describe alternatives you've considered
None.
Additional context
None.

Fixed in #77


Update bower.json

partly fixing this - https://github.com/BabylonJS/Babylon.js/issues/539 (updating bower)
2.1 includes module export

Perfect!!! JCP and Vousk are hunting down a bug with stereo. I'm waiting this fix to update 2.1


Any way to send a message to a channel unprompted?

I'd like to make a plugin that scrapes an RSS feed every 15-30 minutes and stores any new news items in a database. I'd like any new news items to be sent to the channel, but I can't seem to find any way to send a message without being prompted (by a command). I tried poking around with the say() and message() methods in the Input class, but couldn't get anywhere with those. Does anyone have any ideas?

I am working on a fork of skybot, a bot that will be able to be called from a client (your rss script) and output any given message to any given channel in any given network. All done asynchronously.
Have a look: https://github.com/elitan/skybot

I dont know, should I trie to make a pull request of my code to this repo?

Yeah, it was renamed at some point in my bot. Not entirely sure why, but theres no really any direct backwards compatibility between skybot and modern cloudbot due to the differing python versions anyway!

Elitan, did you ever implement the timer? I was trying to look through your code to see how it was done. I am in need of this feature.

Check PR #171

I've provided #171 to provide this requested hook.

@Red-M Your request hook did work. Thank you!


How do I find which way my box is facing after rolling it?

Hello, I'm making a dice roller. I was able to rotate the dice (a box) in some random direction by applying angularVelocity and/or setting the quaternion to a random quaternion.
My understanding of quaternions is amateur at best. As my assumption was that it's a vector with w being the rotation in the vector's direction. But as I've done tests after rolling the dice the quaternion positions don't line up to how I think it should.
Is there a way to determine which direction the box is facing or which side of the box is facing up on the Z-axis after rolling it?
If he helps, [here is a fiddle] (http://jsfiddle.net/dethstrobe/o7ms50to/5/) with some of the code I'm trying to work with.

Hi! As long as you normalize the quaternion you should be fine. Consider using quaternion.fromAxisAngle(). A quaternion is as you say, an axis and a rotation around that axis.
To check if a box face is pointing up, you can compute the dot product with the face normal and the up vector (both vectors in world space). If the dot product is large enough, the face is facing up.
var localFaceDir = new Vec3(1,0,0);
var worldFaceDir = new Vec3();
body.quaternion.vmult(localFaceDir, worldFaceDir);
var faceIsPointingUp = worldFaceDir.dot(upVector) > 0.5;

(Untested code)
If you do this for all faces you know which one is up.
An optimization is to transform the up vector into the local "dice space" instead. Try it if you like :)

Thanks for your suggestion. It was enough of a clue for me to figure it out. Here is a fiddle with it in action.
		var side = {
			one: new CANNON.Vec3(),
			two: new CANNON.Vec3(),
			three: new CANNON.Vec3(),
			four: new CANNON.Vec3(),
			five: new CANNON.Vec3(),
			six: new CANNON.Vec3()
		};

		cubeBody.vectorToWorldFrame(new CANNON.Vec3(0, 0, 1), side.one);
		cubeBody.vectorToWorldFrame(new CANNON.Vec3(0, 1, 0), side.two);
		cubeBody.vectorToWorldFrame(new CANNON.Vec3(-1, 0, 0), side.three);
		cubeBody.vectorToWorldFrame(new CANNON.Vec3(1, 0, 0), side.four);
		cubeBody.vectorToWorldFrame(new CANNON.Vec3(0, -1, 0), side.five);
		cubeBody.vectorToWorldFrame(new CANNON.Vec3(0, 0, -1), side.six);

		var upVector = new CANNON.Vec3(0, 0, 1);

		switch (true) {
			case side.one.dot(upVector) > .9:
				console.log("landed on side 1");
				break;
			case side.two.dot(upVector) > .9:
				console.log("landed on side 2");
				break;
			case side.three.dot(upVector) > .9:
				console.log("landed on side 3");
				break;
			case side.four.dot(upVector) > .9:
				console.log("landed on side 4");
				break;
			case side.five.dot(upVector) > .9:
				console.log("landed on side 5");
				break;
			case side.six.dot(upVector) > .9:
				console.log("landed on side 6");
				break;
			default:
				console.error("Error! dice side not found");
		}

I'll see if I can't refactor it later, but its logging the correct side every time the cube stops. So thanks again for the help.

Cool! I'm glad to be able to help :)


Backup Jetbrains IDE Configs

CLion
Pycharm

I'd love to have a shot at this if no one else is yet?

Sure, go for it, @Brand-Temp.
These should be backed up in a subdirectory in the configs folder.

Sure thing. How should backups be made if there are config directories for multiple versions of Pycharm or CLion? Should it do all of them, or the most recent, or ask which version you'd like from what you've got, etc?

Should it do all of them, or the most recent, or ask which version you'd like from what you've got, etc?

I think we should only back up the most recent version. Using outdated software is an edge case I'm comfortable not covering.

[ ]  CLion
[ ]  Pycharm CE
[ ]  IntelliJ Idea
[ ]  IntelliJ

I would also add PHPStorm to the list.

Added.


FIREBREAK: FinOps - AWS DSD account

Background
Finance team collects financial data on AWS accounts including DSD account, but do they analyse the data and look for areas where money can be saved?
The scope of this ticket is experiment with analytical techniques to analyse the financial data that comes from the AWS DSD account, for example you can use AWS Cost Explorer, you can stratify the data by product, you can create dashboards etc. The data will be analysed to find areas for cost optimisation. You should look at unused resources, as well as the most expensive resources.
Questions / Assumptions

The finance team don't do this themselves already
There is enough resources and data in DSD account to optimise.

What hypothesis do we want to test?/What do we want to learn?

Is there anywhere we can save money in the DSD account?
What is the best way of analysing financial data coming from our AWS estate?

Definition of done

[ ] Financial analysis report of DSD account produced and shared with team
[ ] Areas for cost optimisation identified
[ ] Analytical techniques documented and dashboards created

Cost Optimisation Levers:

Discounts
Deleting unused resources
Autoscaling
Hibernating resources during quiet periods

Increase visibility of financials:

CostExplorer
Sharing a dashboard
Set targets

Report: https://docs.google.com/document/d/1C4kz0VxAoOwWW_wcDiAGRTUMXm_lpUEEmmnIWSC8C_0/edit


Resource provider namespace for "App Service environment"

Microsoft.Web/sites is showing as "Resource provider namespace/entity" for "App Service environment".
Shouldn't it be Microsoft.Web/hostingEnvironments ?

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

ID: 8c22eb33-2fde-55b4-021d-e229c857e51b
Version Independent ID: 1f767675-7d50-6ea5-b798-1323cd4a63a1
Content: Recommended abbreviations for Azure resource types - Cloud Adoption Framework
Content Source: docs/ready/azure-best-practices/resource-abbreviations.md
Service: cloud-adoption-framework
Sub-service: ready
GitHub Login: @BrianBlanchard
Microsoft Alias: brblanch

https://github.com/MicrosoftDocs/cloud-adoption-framework-pr/pull/3985

@garylirocks - Thank you so much for catching that error and let us know! I tested it, and you're absolutely correct. I've made the update, and you should see the update shortly.


Fix the clean rule

It now blows away $ARCH/bin without thinking hard (because, stupidly, amd64/bin includes
some rc scripts, i.e. not binaries -- wtf?) and all the .a's in lib. Then, to undo
any possible damage, it does a checkout of $ARCH/bin
Signed-off-by: Ronald G. Minnich<EMAIL_ADDRESS>

+1


Add Logout and Admin Change Password

This PR will add Logout and Admin Change Password option inside settings.

Default admin password in admin.xml is 123123 . Feel free to change this

@CodiumAI-Agent /describe

Hi Cavin,
First of all, thank you for your contribution to this small project. It's really appreciated!
Everything looks good!
I will merge your pull request after I fully tested your contribution.
Looking forward to more collaborations in the future.

No problem @raizar24!
Also, I returned settings.xml to <IP_ADDRESS>. I forgot to change.


[minor] Support role name in CN

Description
This PR adds a new behavior on extracting role name from RoleCertificate.
If the CommonName in the certificate is in the format of <domain>:role.<role>, it will also recognize as a role name.
Currently, role names from CN and SANs are combined as extracted roles. I'm not sure it is ok or it should be handled exclusively. Which means, when the CN appears to be a role name, SANs should be ignored or not.
Type of change

[ ] Bug fix
[X] New feature
[ ] Refactoring (no functional changes, no api changes)
[ ] Non-code changes (update documentation, pipeline, etc.)

Flags

[ ] breaks backward compatibility
[ ] requires a documentation update
[ ] has untestable code

Related issue/PR

Fixes #82

Checklist

[ ] Followed the guidelines in the CONTRIBUTING document
[X] Added prefix [major]/[minor]/[patch]/[skip] in the PR title
[x] Tested and linted the code
[ ] Commented the code
[ ] Made corresponding changes to the documentation
[ ] Confirmed no dropping in test coverage (by Codecov)
[x] Passed all pipeline checking
[ ] Approved by >1 reviewer

Checklist for maintainer

[ ] Use Squash and merge
[ ] Double-confirm the merge message has prefix [major]/[minor]/[patch]/[skip]
[ ] Delete the branch after merge

Thank you!


[Feature Request] CDN whitelist feature

Often production servers are behind CDN, and it's useful to only allow traffic from CDN servers for security.
For example, ClouldFlare and other CDNs provide their servers' IP range for such purpose:

https://www.cloudflare.com/ips
https://www.maxcdn.com/one/tutorial/ip-blocks/
https://ip-ranges.amazonaws.com/ip-ranges.json
https://api.fastly.com/public-ip-list

It would be great to have a feature that updates whitelites from CloudFlare and other CDNs and only allow traffic from those sources.

I think that this feature is not necessary.
You can only allow requests that comes from your CDN in a very simple way:
In your traefik toml configuration file you can define a centralized ip-whitelist middleware like this:
[http.middlewares.cloudflare-ip-whitelist.ipWhiteList]
  sourceRange = ["<IP_ADDRESS>/20", "<IP_ADDRESS>/22", "<IP_ADDRESS>/22", "<IP_ADDRESS>/22", "<IP_ADDRESS>/18", "<IP_ADDRESS>/18", "<IP_ADDRESS>/20", "<IP_ADDRESS>/20", "<IP_ADDRESS>/22", "<IP_ADDRESS>/17", "<IP_ADDRESS>/15", "<IP_ADDRESS>/12", "<IP_ADDRESS>/13", "<IP_ADDRESS>/22"]

And then in the routers, you can apply the middleware in a simple way:
[http.routers.sample-app]
  rule = "Host(`app.sample.com`)"
  service = "mysampleservice"
  entrypoints = ["web"]
  middlewares = ["cloudflare-ip-whitelist"] #<-----

Or, if you are using docker provider, you can apply the middleware to the container using labels, continuing the example, adding this is sufficient:
- "traefik.http.routers.sample-app.middlewares=cloudflare-ip-whitelist@file"

It is not a good idea to put this class of logic embbeded/hardcoded in the source code of a reverse proxy.

Whilst I agree this might not be "traefik's problem" your proposed solution will need a lot of manual intervention. Checking when CDN IP whitelists update and then updating the middleware manually.
Unfortunately, this doesn't really sit anywhere. Traefik can't do it, Helm can't do it, Terraform with the Kubernetes and CloudFlare provider can though... but then we need to convert all the publicly available Helm charts to Terraform (another huge task). This is a ballache to solve....

I think a more elegant solution would be to authenticate inbound requests using a certificate, as is the case with Cloudflare's "Authenticated Original Pull" - https://support.cloudflare.com/hc/en-us/articles/204899617-Authenticated-Origin-Pulls.  I am trying to enable this validation using Traefik, but I haven't found any documentation.  @diegoernestofarias do you know if this is possible in Traefik v2?

I think a more elegant solution would be to authenticate inbound requests using a certificate provided by the upstream reverse proxy, as is the case with Cloudflare's "Authenticated Original Pull" - https://support.cloudflare.com/hc/en-us/articles/204899617-Authenticated-Origin-Pulls. I am trying to enable this validation using Traefik, but I haven't found any documentation. @diegoernestofarias do you know if this is possible in Traefik v2?

It is possible by client authentication
IIRC, this configuration can only be changed by dynamic configuration file, So I put the origin CA at $project/traefik/cloudflare.pem, then create a file:
$project/traefik/dynamic/clientAuthentication.toml
[tls.options]
  [tls.options.default]
    [tls.options.default.clientAuth]
      caFiles = ["/etc/traefik/cloudflare.pem"]
      clientAuthType = "RequireAndVerifyClientCert"

Finally modify the command & volume section of Traefik service in docker compose:
services:
  traefik:
    command:
       - "--providers.file.directory=/etc/traefik/dynamic/"
    volumes:
       - "./traefik/:/etc/traefik/"

Hi @fracture-point - I think this is what i am trying to do, but I'm a bit stuck and hope you can add a little more detail.
Which orgin CA did you use? the one for my site located here? https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/origin Do I need to use the mTLS option on my CF dashboard? https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/client-certificates Or some other file? I've tried several different option and I end up with a 520 error for my site with ="http: TLS handshake error from <IP_ADDRESS>:58830: tls: failed to verify client certificate: x509: certificate signed by unknown authority" in the traefik logs Hopefully its easier than I'm making it in my mind :)

Hi, I guess you're referring the config I posted?
Maybe I am wrong that calling it Origin CA, It is from authenticated origin pulls, the PEM file is from section Zone-Level — Cloudflare certificate

Hi @fracture-point - I think this is what i am trying to do, but I'm a bit stuck and hope you can add a little more detail.
Which orgin CA did you use? the one for my site located here? https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/origin Do I need to use the mTLS option on my CF dashboard? https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/client-certificates Or some other file? I've tried several different option and I end up with a 520 error for my site with ="http: TLS handshake error from <IP_ADDRESS>:58830: tls: failed to verify client certificate: x509: certificate signed by unknown authority" in the traefik logs Hopefully its easier than I'm making it in my mind :)

Hi, I guess you're referring the config I posted?
Maybe I am wrong that calling it Origin CA, It is from authenticated origin pulls, the PEM file is from section Zone-Level — Cloudflare certificate

Yes. I was referring to the post above mine. Doing this worked! Thank you so much. I also needed to enable Authenticated Origin Pulls as referenced on that page.
This basically makes it so that all traffic to my server must go through CF right? Essentially removing the need for ipwhitelisting.

This basically makes it so that all traffic to my server must go through CF right? Essentially removing the need for ipwhitelisting.

Yes, it can authorize clients are from Cloudfare server


Benchmark conversion from NIF format producing incorrect results

Hello!
I have a new benchmark based on a small dataset I've put together. It exists in json files natively. I ran a script of my own to convert it to NIF format. I spot checked the NIF file and it looks correct. Specifically, all the entities are linked to the correct texts.
I then ran:
python3 add_benchmark.py "agolo-e2e-eval" -bfile agolo_e2e_eval_dataset.nif -bformat nif
After checking the resulting file, it appears that the entities are appearing with the wrong texts. For instance, this is doc16 in the NIF file:
<http://example.org/doc16> a nif:Context,
        nif:OffsetBasedString ;
    nif:beginIndex "0"^^xsd:nonNegativeInteger ;
    nif:endIndex "447"^^xsd:nonNegativeInteger ;
    nif:isString """Honduras President Xiomara Castro

...and here is the entry for the entity "Honduras":
<http://example.org/doc16#offset_0_447_14> a nif:OffsetBasedString,
        nif:Phrase ;
    nif:anchorOf "Honduras " ;
    nif:beginIndex "0"^^xsd:nonNegativeInteger ;
    nif:endIndex "9"^^xsd:nonNegativeInteger ;
    nif:referenceContext <http://example.org/doc16> ;
    itsrdf:taIdentRef <Q30081060> .

However, in the resulting file agolo-e2e-eval.benchmark.jsonl I see the entity:
"evaluation_span": [0, 2357], "labels": [{"id": 0, "span": [0, 8], "entity_id": "Q783", "name": "Honduras", "parent": null, "children": [1], "optional": false, "type": "Q27096213|Q43229"},
in the same record (on the same line) as this text:
{"id": 21, "title": "http://example.org/doc7", "text": "A helicopter accident in...
So somehow it appears the conversion script is mixing up the texts and the entities that go with them. This seems to be consistent across the resulting file.
I have attached the input and output files.
Any idea what could be going wrong?
Thanks!

Hm, looks like I this may have been my fault, so I'll close this now. Please disregard.

Alright, let me know if it turns out to have not been an issue on your side :)


Metrics: Change system from Dropwizard to Micrometer

This PR is meant to replace the current metric system with Micrometer (https://micrometer.io/).
Micrometer supports way more monitoring systems and can also export to multiple systems at the same time.
The full list of supported systems can be found here:
https://micrometer.io/docs
This change should give prebid-server way more deployment flexibility.
For starters, I've added the following exporters:
CloudWatch
Graphite
Influx
Prometheus

Found the issues for the failed functional tests, will apply fixes next week.

Wow 😲 Thanks for this huge contribution.
I have not really a good overview of the metrics landscape, so it would be interesting to know a bit more.
You mentioned that with micrometer it's possible

to export to multiple systems at the same time
export to more systems

Metric names keep the same?
And prebid Server has this custom "resetting counter", which we had some issues with while using Prometheus. Have you seen it😁?

Hey @muuki88 ! 👋🏻

Wow 😲 Thanks for this huge contribution.

It's really my pleasure to contribute back to the project.

You mentioned that with micrometer it's possible

to export to multiple systems at the same time
export to more systems

Yes, all of the above is possible with Micrometer.
Actually, Micrometer is already bundled in Spring Boot as the official metric system since 2018.
https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector
https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/production-ready-metrics.html
Of course, since the PBS project uses Vert.x, the official implementation cannot be used as it is dependent on actuator.
This isn't an issue though, I've added it as a standalone dependency.

Metric names keep the same?

Yeah, metric names (or meters as they are called in Micrometer) will remain the same throughout the code but will have small differences depending on the export system and their specific naming convention.
Example:

registry.timer("http.server.requests");

Prometheus: http_server_requests_duration_seconds
Graphite: http.server.requests
InfluxDB: http_server_requests

More details here: https://micrometer.io/docs/concepts#_naming_meters

And prebid Server has this custom "resetting counter", which we had some issues with while using Prometheus. Have you seen it😁?

Glad you asked about it, as it was also on my to-ask list.
I saw it, but I didn't really understand what its original purpose was.
Can you please give me more insight into this? 🙋🏻♂
Afaik, Prometheus has a rate function that should give insight into how the counter changed between scrapes if that was the reason behind it.
Let me know if you have any other question about Micrometer and will do my best to clarify them.

Thanks for the extensive clarifications :heart: I'll try to shed some light on the prometheus stuff.
In #1681 we extend label support in prometheus. This would still work as it is right?
While we did that we found out about the resetting counter.
Our assumption is that originally there were only push based metric systems, like OpenTSDB.
Resetting counters work find here as on every push the counter was reset. However in a pull based system like prometheus this basically breaks your metrices every time a dev, multiple systems, retries or server restarts happen.
#1909 introduced a warning that resetting counters should not be used with prometheus.

Afaik, Prometheus has a rate function that should give insight into how the counter changed between scrapes if that was the reason behind it.

Yes.  This works properly now with the current implementation. Although I have to admit I don't know what happens if the counter gets too large.

Appreciate the info @muuki88 ! 👍

In #1681 we extend label support in prometheus. This would still work as it is right?

Yep, they are called tags in Micrometer and this is the current reason why functionality tests are failing.
I'm working on these as we speak, but I would sincerely rather apply these to the meters directly in order to have them available to all export systems, not just Prometheus, for standardisation.
What do you think?

Yes. This works properly now with the current implementation. Although I have to admit I don't know what happens if the counter gets too large.

That shouldn't be an issue, as long as the cardinality of the metrics isn't very high.
Are there any reported issues at the moment that you guys are aware of?
We could, of course, if the need arises, clear the metrics in the Prometheus Registry on a scheduled basis.

prometheusMeterRegistry.clear();

Yep, they are called tags in Micrometer and this is the current reason why functionality tests are failing.
I'm working on these as we speak, but I would sincerely rather apply these to the meters directly in order to have them available to all export systems, not just Prometheus, for standardisation.

Oh please yes! This string matching is so error prone, cumbersome and only works for prometheus but not the rest.

Are there any reported issues at the moment that you guys are aware of?

We haven't seen any, but that doesn't mean there aren't :sweat_smile: Metrics like bid.response usually have a high cardinality if there servers run for a longer time.

We could, of course, if the need arises, clear the metrics in the Prometheus Registry on a scheduled basis.
prometheusMeterRegistry.clear();

That sounds interesting. I would imagine a config in the metrics.prometheus config where an optional clearInterval can be specified.

Sorry for the delay on this guys, had some summer days off.
Will get back on it asap on my return.

@bogdanmelinte is there anything left from your end? Otherwise we may give it a try locally for us.
@And1sS WDYT?

I'll try to finish it up until the EOY and giving you a bump here if that is ok with you guys?

Sure thing 😊 This is a massive refactoring and improvement and I know that it is not easy to find time for such tasks.
If you are in the adops or prebid Slack feel free to ping me if you have questions regarding PBS deployments

If you are in the adops or prebid Slack feel free to ping me if you have questions regarding PBS deployments

Thanks a lot, will do !

Could you pls, merge master inside this PR?

Sure thing @SerhiiNahornyi, will tackle this shortly and promise I'll complete this PR shortly.
Had some crazy crowded 2 last quarters in Gameloft, but we will come back strong with our contributions.

Hey @bretg
I'll try to answer your questions and give a bit more insight on the scope of this PR.
The plan is to make the switch transparent to the host companies and keep their initial integration (Graphite / Prometheus), if that is what they want / need.
Of course, there might need to be a few configuration variables changes but I'm pretty sure they can be done without any breaking changes.
The end goal why a switch to Micrometer would be beneficial to the project is that it would allow host companies to use a wide variety of metric storage systems, not limited to the already existing ones.
https://micrometer.io/docs
https://github.com/micrometer-metrics/micrometer
This PR is still not finished as I've had a hard time wrapping it up, pretty swamped this first half of the year.
Hope the above helps a bit, let me know if you would like more details into a specific topic.

Thanks for the background @bogdanmelinte . I want to be supportive of metrics improvements, but there are a fair number of high priority things happening right now at the product level (see the issue list) and we can't afford to break metrics. If existing metrics are going to break, I would propose aligning the project for the planned September release of Prebid Server 2.0.

September it is then.
That aligns nicely with me too, from a workload POV.

This particular pr won’t be merged as it has too many conflicts, it will break existing metrics dashboards and metrics internals may change after migration to vertx 4.0. But we may try to rewrite it after dependencies bump, as we also want to change metrics system, since it will greatly simplify our metrics implementation.
We haven’t merged it up until now because we wanted to test new metrics system in much simpler environment first, so we did it in prebid cache. And in PBC it worked pretty well :)
So, don’t worry, we haven’t forgotten about metrics. I guess we may consider this change after dependencies bump.

PSA: a big PBS dependency update is happening soon. ETA is around one month. It's being actively worked on right now.


[Fix] Stop exposing API key in evaluation outputs.

What is the problem that this fixes or functionality that this introduces? Does it fix any open issues?
API key is being exposed in the evaluation outputs.

Give a summary of what the PR does, explaining any non-trivial design decisions

Also Updated agent_skills in README.md

something went wrong with your merges, there are way too many file changes

The history of your branch looks really weird 🤔


Use clipping distance for minimum LIDAR distance

Using Hlms custom pieces and a listener to implement it
See changes to Ogre2GpuRays::Render for usage
Update ogre2/src/media/Hlms/Pbs/GLSL/VertexShader_vs.glsl to latest
upstream version
Signed-off-by: Matias N. Goldberg<EMAIL_ADDRESS>🦟 Bug fix
Summary
As discussed in https://github.com/ignitionrobotics/ign-rendering/pull/356 this implements Hlms custom pieces so that LIDAR can clip correctly without the undesired side effects of pushing the near clip plane closer.
I forgot to ask for an actual test; so I did not test whether the solution does the intended job; however I'm very confident it should.
I was able to test though, that the code works by forcing it to clip on regular view
Ogre2IgnHlmsCustomizations is purposely not intended to be exposed to the user. This class could vary too much between updates (including new Ogre releases; although we try to avoid changes for patch releases) and trying to maintain ABI compatibility would be hell.
Also a user trying to mess with Ogre2IgnHlmsCustomizations could potentially fiddle too much with low level workings of rendering. Hence it's best to not expose it at all.
Usage
Use:
auto engine = Ogre2RenderEngine::Instance();
  Ogre2IgnHlmsCustomizations &hlmsCustomizations =
      engine->HlmsCustomizations();

hlmsCustomizations.minDistanceClip = minLidarRange;

To enable it.
After rendering, you can use the following to disable the feature (any negative value works):
hlmsCustomizations.minDistanceClip = -1;

A value of 0 will keep the feature enabled but won't make any visible effect. The reason for this behavior (i.e. why doesn't 0 disable the feature?) is that when the feature is toggled on/off for a given pass then new shaders may be generated, causing stutter or performance problems (and higher RAM consumption).
Keeping the feature enabled at minDistanceClip = 0 lowers the chance of useless shader generation; and I suspect it could happen during UI editing (e.g. when sliding a value between a 0 and a max range)
Problem
UPDATE: This problem has been fixed. Living the comments for history's sake. Scroll to bottom to find the solution. This PR is ready for review
This is currently a DRAFT because marking the code like the following:
inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
class IGNITION_RENDERING_OGRE2_VISIBLE Ogre2IgnHlmsCustomizations final :
    public Ogre::HlmsListener

results in a runtime crash:

Error while loading the library [/home/matias/Projects/ign/install/lib/ign-rendering-4/engine-plugins/libignition-rendering-ogre2.so]: /home/matias/Projects/ign/install/lib/ign-rendering-4/engine-plugins/libignition-rendering-ogre2.so: undefined symbol: _ZTVN8ignition9rendering2v426Ogre2IgnHlmsCustomizationsE

Which c++filt translates to:

vtable for ignition::rendering::v4::Ogre2IgnHlmsCustomizations

No matter what I do I can't seem to fix the problem unless I add a Ogre2IgnHlmsCustomizations member to a public API e.g.
class IGNITION_RENDERING_OGRE2_VISIBLE Ogre2RenderEngine :
  public virtual BaseRenderEngine,
  public common::SingletonT<Ogre2RenderEngine>
{
  private: Ogre2IgnHlmsCustomizations *foo;
};

But I can't do that because that'd break ABI (and is also unnecessary).
So far I had to workaround this problem via:
// TODO(anyone) Can't use inline namespace here. At runtime it will complain
// vtable for ignition::rendering::v4::Ogre2IgnHlmsCustomizations
// was not found
// inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
class IGNITION_RENDERING_OGRE2_HIDDEN Ogre2IgnHlmsCustomizations final :
      public Ogre::HlmsListener
{
}

Note that IGNITION_RENDERING_OGRE2_HIDDEN or IGNITION_RENDERING_OGRE2_VISIBLE doesn't seem to make a difference.
With my workaround INTEGRATION_versioned_symbols_ogre2 is now obviously failing.
Help is appreciated on how to resolve this problem because I'm out of ideas.
Other than that, the code should be functional and working, hopefully solving the intended problem
OMG I FOUND THE PROBLEM:
Some times IGNITION_RENDERING_VERSION_NAMESPACE is a macro, sometimes it's not. So the actual symbol ends up as ignition::rendering::IGNITION_RENDERING_VERSION_NAMESPACE::Ogre2IgnHlmsCustomizations instead of ignition::rendering::v4::Ogre2IgnHlmsCustomizations
Checklist

[x] Signed all commits for DCO
[ ] Added tests
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[x] codecheck passed (See contributing)
[x] All tests passed (See test coverage)
[x] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

After doing more testing I think this almost fixes the issue found in https://github.com/ignitionrobotics/ign-rendering/pull/356#issuecomment-870429869. The only problem left is that as soon as I rotate the robot to something other than multiple of 90 degrees, the sensor's view become occluded in the same way described in https://github.com/ignitionrobotics/ign-sensors/issues/128. My guess is that it's an object culling issue based on axis aligned bounding box. @darksylinc do you have any insights?
I think near clipping is working so we can merge this first if you think https://github.com/ignitionrobotics/ign-sensors/issues/128 is a separate issue.

I saw you made a new commit after this msg, so perhaps you've already solved it.
As for the problem you're describing (starts breaking when rotated) I can think of 4 reasons:

Floating point precision shenanigan. Just adjust the numbers a nudge.

Rotation is not what we're expecting. I noticed Gazebo's camera has a complex node setup (Camera is attached to a node which is child of a node of a node). If rotation isn't handling correctly we are thinking this is what's happening:

But this is what's actually happening (or any variation of it):

Like you said the postprocessing is discarding it out at 90°, but somehow the math fails otherwise

I don't really think this is it, but if the camera is rotated after SceneManager::updateSceneGraph weird things can happen. I didn't see this happening in out of the box Gazebo UI, but I don't usually test LIDAR render code except for the rgbd file you sent me.

Probably the best way to see this is to take a RenderDoc capture of 0°, 45°, 90° and compare them drawcall by drawcall to see where they diverge. Although RenderDoc capture should be done in ign-rendering5 which is where we fixed the race condition bug (without the fix RenderDoc in the capture calls are all out of order or messed up)

I just noticed he said:

This happens with "camera" and "thermal" type sensors. Types "rgbd" (both color and depth) and "depth" are not affected. The fact that the color camera from "rgbd" sensor is not affected might point to a possible direction of research for this bug...

Please note my camera changes were made to Ogre2GpuRays, not to Ogre2ThermalCamera. However it can be activated for Ogre2ThermalCamera as well.

I can confirm @iche033 's observations - axis-aligned robots render the cloud correctly, but rotated do not.
This is what I get with a rotated MARV - I haven't seen this kind of behavior before.

I'm relatively new: how do I test rotated vs non rotated?

If you open Ignition Gazebo GUI, there is a plugin called Transform tools, and that one has the rotate tool. Click the robot and turn the ring to rotate the robot.
You can view the pointclouds in Ignition Gazebo GUI using the Visualize Lidar plugin, but if you turn it on for one of these high-density 3D lidars, performance suffers a lot. It's best to first choose the "Points" type of visualization and only after that select the lidar topic.
Or, if you're testing using the SubT challenge simulator, just launch competition.ign which will also launch the required ros_ign bridges and you can then display the pointcloud in rviz (which I like much more)

I created a minimal example world for testing: near_clip.sdf

To test, launch ign gazebo

ign gazebo -v 4 -r near_clip.sdf

Load the Visualize Lidar plugin by going to top right menu (3 dots) and select Visualize Lidar
Change Visual Type from Triangle Stips to Points
Press the orange refresh button next to the drop down list to subscribe to the point cloud data, You should see point cloud visualization.
Select the lidar mesh in the middle of the scene.
Press R for the rotate tool and rotate the lidar to 45 degrees to see the issue

THIS IS PRELIMINARY, I'M STILL RESEARCHING
OK so I was off to a bad start because this is the output I see on the GUI. Fortunately the bug still repros on the server so it doesn't actually affect my work:

So I tried RenderDoc on the server (after a couple minor mods so that RenderDoc capture works with ign-rendering4 in server mode)
The "bad" version (i.e. rotated) is rendering 3 objects while the "good" version only renders 1 object:

Both versions are rendering the cube (36 / 3 = 12 triangles):

Bad version is rendering the sensor (13680 / 3 = 4560 triangles). This means two things at the same time:
a. The HlmsCustomizations code I wrote is not being used. I can see it in the shader. The code is not there. I need to find out why. But I can notice from a quick look that is not using Unlit nor Pbs, but a low level material (hence min clip distance won't work on this model unless explicitly added to each low level material that uses it)
b. Ogre did not submit to GPU the sensor in the "good" version, but it did submit it in the "bad" version. This is likely a culling issue. It could be a precision bug. But still I'll research what's going on there

Bad version is rendering a 2-triangle object where both triangles are degenerate (e.g. AAB and BBC) therefore it has no visual impact, but I have no clue what that is. Looks like it should be the plane / ground, but the invalid geometry puts me off.
It could be some helper geometry gazebo uses for something else that is accidentally being left enabled during this render pass.

It's also curious why Ogre submits it to the GPU when 45°, but not at 0°
Next steps

I'll look into why Ogre is culling the sensor at 0° but not at 45° (could be not an Ogre bug, e.g. if the camera is at a bad position)
I have to add clipping code to the low level material (or find a better alternative)
Keep an eye on that bizarre 2-triangle invalid geometry, but for now lower priority

Oh btw the patch to add RenderDoc support to server mode is this quick hack (do not push it to production!)
diff --git a/ogre2/src/Ogre2RenderEngine.cc b/ogre2/src/Ogre2RenderEngine.cc
index 8a240e46..3f20e05f 100644
--- a/ogre2/src/Ogre2RenderEngine.cc
+++ b/ogre2/src/Ogre2RenderEngine.cc
@@ -42,6 +42,9 @@

 #include "Ogre2IgnHlmsCustomizations.hh"

+extern Ogre::RenderWindow *g_window;
+Ogre::RenderWindow *g_window = nullptr;
+
 class ignition::rendering::Ogre2RenderEnginePrivate
 {
 #if !defined(__APPLE__) && !defined(_WIN32)
@@ -752,6 +755,7 @@ std::string Ogre2RenderEngine::CreateRenderWindow(const std::string &_handle,
     {
       window = this->ogreRoot->createRenderWindow(
           stream.str(), _width, _height, false, &params);
+      g_window = window;
     }
     catch(const std::exception &_e)
     {
diff --git a/ogre2/src/Ogre2Scene.cc b/ogre2/src/Ogre2Scene.cc
index 91612cf6..3e511051 100644
--- a/ogre2/src/Ogre2Scene.cc
+++ b/ogre2/src/Ogre2Scene.cc
@@ -43,6 +43,10 @@
 #include "ignition/rendering/ogre2/Ogre2Visual.hh"
 #include "ignition/rendering/ogre2/Ogre2WireBox.hh"

+#include "OgreRenderWindow.h"
+
+extern Ogre::RenderWindow *g_window;
+
 /// \brief Private data for the Ogre2Scene class
 class ignition::rendering::Ogre2ScenePrivate
 {
@@ -135,6 +139,11 @@ void Ogre2Scene::PreRender()
     }
   }

+  g_window->swapBuffers();
+  //static int frame = 0;
+  //printf( "frame %i\n", frame++ );
+  //fflush( stdout );
+
   BaseScene::PreRender();
 }

OK the 3rd "invalid geometry" mesh mystery has been revealed.
ouster-os0.dae contains two submeshes: the main one; and a 2nd one which is not a triangle but a line list. I missed that part where it's not a triangle. But still it's a degenerate line because it's just 3 lines of 0 width each.

Well... this was FUN! (no sarcasm, it was fun)
Short version:

Ogre's frustum culling is working as intended
Ogre incorrectly forces depth clamp (requires an Ogre 2.1 update)
ign-rendering is not applying gl_ClipDistance to low level materials (fixing this is enough, no need to urgently update to latest Ogre 2.1*)
The triangle soup in the GUI was not investigated
Everything is working as expected (except that triangle soup in the GUI which is unrelated) except the low level material which is not applying the clipping distance.

(*) However I'd recommend an update at some point, since who knows what other side effects forcing depth clamping does (probably only manifest in edge cases like this one).
Long version:
Several things going on.
Why does Ogre not submit the sensor geometry to GPU at 0°?
Because it fails the frustum test.
With the near plane at 0.06 and the lidar's AABB being in range [-0.037; 0.037], the lidar is well behind the near plane:

However Ogre simplifies calculations by working with AABBs, not Oriented Bounding Boxes. When rotating an object by 45°, we use the AABB the encloses the rotated object. This means that its AABB gets bigger when rotated, and gets smaller again when getting close to being aligned to 0/90/180/270°:

When the object is at 45°, its AABB is bigger, and now passes the frustum test, so Ogre decides to send the sensor to GPU:

IIRC this math simplification was there in Ogre 1.x too (the code is vastly different though). But it's possible small details change and the observable behavior ends up being different.
If I edit Ogre to remove the frustum test completely (i.e always pass), then the buggy behavior happens at all orientations.
This part is working as intended.
Why is the object on screen blocking the lidar?
Because Ogre 2.1 is incorrectly activating depth clamp.
Without depth clamp, the GPU would just clip the geometry as expected. With depth clamp, the GPU forces everything that is z < 0 to be z = 0 thus covering all of the screen.
Very old legacy code meant for v1 objects, RenderSystem::setClipPlane, is always being activated, causing depth clamp to be enabled. The solution was to remove this super legacy snippet because it doesn't seem like anyone is using it and only GL3+ does this (also depth clamp was properly introduced in Ogre 2.3).
This bug was affecting all Ogre branches (even 2.2 and 2.3)

Offtopic: I had a different theory and made a test but I couldn't find anything. I was wrong. But at least our coverage increased).

Unfortunately this requires an Ogre 2.1 update.
Fortunately that won't matter once the missing gl_ClipDistance is added to the low level material.

Solutions
Any of the following will fix it:

Update to latest Ogre 2.1 (literally fixed today to all branches)
Update the low level material to use gl_ClipDistance

OK I pushed the fix.
There's good and bad news:

It works!
It needs an Ogre update. In particular this commit.

Unfortunately I forgot shaders had to inform they need to use gl_ClipDistance and low level materials did not have such interface.
Without an Ogre 2.1 update the keyword num_clip_distances will be ignored thus it's as if the fix weren't there.
A solution without an Ogre 2.1 update would need us to switch from using low level materials to an Hlms implementation (or overriding Pbs & Unlit).
While this may be more ideal for performance and flexibility (i.e. the current solution being used is ignoring skeletal animations), that requires more time, analysis, testing and could potentially break ABI or other stuff. This is something we could discuss for Fortress.
Hence an update to Ogre 2.1 was the quickest path.

OK the triangle soup is a locale problem when parsing the DAE.
I have to check if https://github.com/ignitionrobotics/ign-common/pull/120 was applying, and if so, why it's not working.
I'll take a look

I have to check if ignitionrobotics/ign-common#120 was applied, and if so, why it's not working.

No, the PR you refer to is declined. I can confirm that with Dome, the locale issues are still there.

No, the PR you refer to is declined. I can confirm that with Dome, the locale issues are still there.

Oh! Great point! Thanks! That explains the issue.

thanks for digging deep into this and coming up with a fix! Given that this requires an ogre update, we decided that we'll have to retarget this fix to the Fortress branch (currently main) that's going to use ogre 2.2. Looks like the fix: https://github.com/OGRECave/ogre-next/commit/dc23bf0f905e9a71f1f22ce645a7d5fc396c5d81 has been ported forward to ogre 2.2 so we can pull to get the fix. As for users on Dome / ign-rendering4, I think one workaround is just to increase the near clip distance.

A solution without an Ogre 2.1 update would need us to switch from using low level materials to an Hlms implementation (or overriding Pbs & Unlit).

Let's hold off on doing this. I'm inclined to keep the low level material implementation as it's fairly stable and we'll soon be preparing for the Fortress release.
I've just retargeted my branch to lidar_near_clip to main, which created conflicts here. Can you resolve the conflicts here? Thanks. I also just tested this without updating to latest ogre 2.2 - the issue is still there as expected but it looks like lidar is still functioning fine with the new material and shader changes. Can you confirm if we can merge this before the updated ogre 2.2 debs are ready?

As for users on Dome / ign-rendering4, I think one workaround is just to increase the near clip distance.

Increasing the clip distance will only work if it's big enough so that frustum culling prevents Ogre from sending the object to GPU. Otherwise the GPU won't correctly clip the geometry due to depth clamp incorrectly activated
Alternative solutions:

Build Gazebo from source with your own Ogre source (i.e. latest version from git) which no longer force-enables depth clamp
Use render queue ids, scene visibility flags, or Item::setVisible to avoid rendering that object. I'm not sure what is available to gazebo users though

Can you confirm if we can merge this before the updated ogre 2.2 debs are ready?

I'm not sure what you're asking? What is it that I need to confirm?
The HlmsListener probably had a few interface changes so the overloaded virtuals may 'just work', or warn that we're overriding a non-virtual function (because the argument signature changed slightly), or error that there's a pure virtual function.

I'm not sure what you're asking? What is it that I need to confirm?

ah I was mainly thinking of the changes in the material and shader files, e.g. the addition of num_clip_distances 1. As you mentioned before, they will be just be ignored. I don't see any complaints / error msgs in the ogre log so just want to double check if it's safe to get in without waiting for our ogre 2.2 to be updated with your commit.

I've merged with main branch.
I checked the code regarding the use of num_clip_distances in older versions of Ogre: It will be silently ignored (not even a warning) and it should have no side effects either.

I'll take care of @ahcorde's comments in my branch

I applied the patch on top of our ogre 2.x fork and tested with the minimal example world, near_clip.sdf

The lidar point clouds now look consistent at different angles.


Fix java build and update README

👍

:+1:

Codecov Report

Merging #267 (2305eb8) into master (070254f) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #267   +/-   ##
=========================================
  Coverage     72.08%   72.08%
  Complexity      244      244
=========================================
  Files            48       48
  Lines           849      849
  Branches         41       41
=========================================
  Hits            612      612
  Misses          213      213
  Partials         24       24

Flag
Coverage Δ

unittests
72.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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

:+1:


when auto-update minikube binary on Mac, exclude the signing

based on this
https://stackoverflow.com/questions/60362018/macos-catalinav-10-15-3-error-chromedriver-cannot-be-opened-because-the-de
we should auto run this command after we install new minikube binary
$ xattr -d com.apple.quarantine /Applications/minikube-gui.app

/assign


Training on test sample in CH05 ??

In CH05, your method rolling_forecasting trains on test samples.
In this case :
the df corresponds to all the data (train AND test).
You are fitting SARIMAX to the train AND test samples.
            model = SARIMAX(df[:i], order=(2,0,0))
            res = model.fit(disp=False)
            predictions = res.get_prediction(0, i + window - 1)
            oos_pred = predictions.predicted_mean.iloc[-window:]
            pred_AR.extend(oos_pred)

In order to really do forecasting, your training should be based on train AND prediction sample.
            model = SARIMAX(df_train_estimated[:i], order=(2,0,0))
            res = model.fit(disp=False)
            predictions = res.get_prediction(0, i + window - 1)
            oos_pred = predictions.predicted_mean.iloc[-window:]
            pred_AR.extend(oos_pred)
            df_train_estimated.append({'value': oos_pred.values[0]}) #Adding the last prediction and use it as training

I have the same questions for chapter 4 and 3


Add more tests for pipelines

The pipelines could use more tests. This should include mocking the executors and testing more complex pipelines

There have been some more tests added. It would still benefit from adding more tests but since more have been added, I am going to close this issue for now


improve sub case text references

Extracted from https://github.com/onqtam/doctest/issues/321#issuecomment-658112402:
The message could be improved:
DEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):

  "3"

I have no clue what the "CURRENT ONE" is and how it's different. Looks like implementation details to me.
Should be something simple like
TEST CASE:  non-literal type ("3")

Nested cases could be printed like ("3" / "4" / ...) I guess.

The idea behind the "current" is that we might have popped a subcase or two compared to the deepest stack we might have encountered in the current entrance of this test case. Example:
TEST_CASE("lots of nested subcases") {
    SUBCASE("1") {
        SUBCASE("2") {}
        CHECK(false);
    }
}

when we hit the assert the deepest stack is 1/2 but the current stack is just 1, so the output is this:
TEST CASE:  lots of nested subcases
  1

DEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):
  1
  2

a.cpp:7: ERROR: CHECK( false ) is NOT correct!
  values: CHECK( false )

and both the current and the deepest subcase stacks are printed, but I guess the current output is confusing.
One other consideration behind the separate rows for each subcase is BDD-style test cases - they are effectively subcases but with a prefix (either Given:  or When:  or... you get the point), and for them it also makes sense to use separate rows.
However, I agree with you that the current output is weird/confusing/ugly.

Ah ok I used that pattern in value-parameterized tests.
The subcase has technically gone out of scope but since it assigned something to a variable we need that deepest stack.
Maybe one could combine the two lists since they should have the same prefix, just displaying the "tail" differently, e.g. colored if we are in a terminal. Or display them as a tree.

Displaying as a tree is the right way to go IMHO, and we could indeed display the deepest nodes of the tree after a row saying deeper subcases reached before the current error:. I think it's fine to break/improve the output of subcases & BDD-style test cases.

Is this discussion only in context of value parameterized tests, or for subcases in general?

I think subcases in general

Let's apply TDD to this and gather pairs of code and expected outputs.


Add YAML option for showing/hiding link buttons on listing pages

This PR adds a YAML option for showing/hiding link buttons on listing pages. This gives users a little more flexibility in how they style their website.
It also addresses some former inconsistencies in when link buttons were shown. For example, Talk listings would only show link buttons when show_post_thumbnail was set to true.  Now the buttons can be shown (or hidden) regardless of what other YAML options have been chosen.

Looks awesome, thank you!

Thanks! And you're welcome!
I forgot to mention, but this should close Issue #33 also 😄


How to ignore files from 'node_modules'.

Could someone suggest how to configure sassLintPlugin to ignore files from node_modules folder (or any other)?
The ignoreFiles option only works for me if I add the path to every file.
Here is my config:
module.exports = {
    ...
    plugins: [
        new HtmlWebpackPlugin({
            inject: true,
            template: path.resolve('index.html'),
            favicon: path.resolve('favicon.ico')
        }),
        new ExtractTextPlugin('build/styles.css'),
        new sassLintPlugin({
            ignoreFiles: [
                path.resolve('node_modules/sasslint-webpack-plugin/test/testfiles/test7/_second.scss'),
                path.resolve('node_modules/sasslint-webpack-plugin/test/testfiles/test6/test.scss'),
                path.resolve('node_modules/sasslint-webpack-plugin/test/testfiles/test3/test.scss')            ],
            ignorePlugins: ['extract-text-webpack-plugin']
        })
    ]
};

With this setup, only those three files are ignored but there are plenty of files from node_modules which produce a lot of warnings.
Thanks.

All my files are placed in src folder so I solve this by setting the glob option to src/**/*.s?(a|c)ss.
module.exports = {
    ...
    plugins: [
        ...
        new sassLintPlugin({
            glob: 'src/**/*.s?(a|c)ss',
            ignorePlugins: ['extract-text-webpack-plugin']
        })
    ]
};

Hope it will help someone.

Nice ! Thank you, it's exacltly that I want :)

I still hope that someone will eventually answer my original question)

@andriibuts Good day sir
Here is how I do it (I have a .sass-lint.yml file)
options:
  formatter: stylish
files:
  include:
    - "src/**/*.s+(a|c)ss"
  ignore:
    - "src/sass/disabled/**/*.s+(a|c)ss"
    - "src/sass/modules/*.s+(a|c)ss"
    - "node_modules/**/*.s+(a|c)ss"
rules:

@andriibuts There currently isn't a method for glob ignoring files, we set the glob option internally to target the specific files we want linted when we internally utilize this plugin.
We accept PRs for improvements although.


trim-single: accept SampleData[JoinedSequencesWithQuality]

is there any reason not to?
forum xref

Not to my knowledge, I suspect it was just an oversight when initially implemented.

We don't have a way to map the output type yet, so this might need to be a separate method for now.

Oops! I completely forgot about that, good call @ebolyen.

We have the technology.


[Issue] Path parameters are added as URL search parameters (v1.19.0)

I have checked the following:

[X] I use the newest version of bruno.
[X] I've searched existing issues and found nothing related to my issue.

Describe the bug
In v1.19.0, using the new path params feature introduced in #484, I'm getting an issue where Bruno is adding the req.params object as query parameter, e.g.:
URL (in UI): {{baseURL}}/some/route/:pk/
Path param: pk with value test
If I look in Timeline or console.log(req) in post response, the URL I see is:
http://<IP_ADDRESS>:8000/v1/app/some/route/test
Which should be correct, however, my API endpoint is being called with:
/v1/app/some/route/test/?0[name]=pk&0[value]=test&0[enabled]=true&0[type]=path&0[uid]=1gTYMy1cJaQsEkW93yRGP
It seems somewhere during the URL interpolation, the URL search params are updated with the data in req.params as shown above.
req = {
    ...
    params: [
        {
            "name": "pk",
            "value": "test",
            "enabled": true,
            "type": "path",
            "uid": "1gTYMy1cJaQsEkW93yRGP"
        }
    ],
    ...
}

Additionally, the trailing slash is also not kept any more.
Possibly related to #2506?
.bru file to reproduce the bug
meta {
  name: Test
  type: http
  seq: 5
}

get {
  url: {{baseURL}}/some/route/:pk/
  body: none
  auth: inherit
}

params:path {
  pk: test
}

script:pre-request {
  console.log("Pre:", req.url);
}

script:post-response {
  console.log("Post:", req.url);
}

Screenshots/Live demo link

Hey @ThenTech can you please share a minimal .bru or json export?

Hey @ThenTech can you please share a minimal .bru or json export?

I edited the original post to add the .bru file of the request shown, though there's not much to see.

@ThenTech I had the same issue in version 1.19.0 but in the current version (1.20.1) this seems to be fixed.

@ThenTech I had the same issue in version 1.19.0 but in the current version (1.20.1) this seems to be fixed.

Oh I'll check it again later then. And close the issue if it is indeed fixed.

@Lixfeld It is indeed fixed now. Thank for letting me know.


Switch to cuprite

Experimental switch to selenium replacement. It's in theory faster and more resilient.

I'm pretty committed to eliminating flakes via https://github.com/rubyforgood/human-essentials/pull/3786, so closing this PR in favor of that one.


Update image ghcr.io/gethomepage/homepage to v0.8.13

This PR contains the following updates:

Package
Update
Change

ghcr.io/gethomepage/homepage
patch
v0.8.12 -> v0.8.13

Release Notes

gethomepage/homepage (ghcr.io/gethomepage/homepage)
v0.8.13
Compare Source
What's Changed

Enhancement: configurable CPU temp scale by @daviddavid and @shamoon in https://github.com/gethomepage/homepage/pull/3332
Enhancement: additional tautulli jellyfin emby configuration options by @ameerabdallah in https://github.com/gethomepage/homepage/pull/3350
Enhancement: add bitrate precision config option for speedtest-tracker  by @ameerabdallah and @shamoon in https://github.com/gethomepage/homepage/pull/3354
Fix: format Romm statistics by @EdwardSalter in https://github.com/gethomepage/homepage/pull/3358
Fix some unsanitized error URLs by @shamoon in https://github.com/gethomepage/homepage/pull/3385
Chore(deps): Bump recharts from 2.12.3 to 2.12.6 by @dependabot in https://github.com/gethomepage/homepage/pull/3397
Chore(deps-dev): Bump typescript from 4.9.5 to 5.4.5 by @dependabot in https://github.com/gethomepage/homepage/pull/3396
Chore(deps): Bump systeminformation from 5.22.0 to 5.22.7 by @dependabot in https://github.com/gethomepage/homepage/pull/3398
Chore(deps): Bump react from 18.2.0 to 18.3.1 by @dependabot in https://github.com/gethomepage/homepage/pull/3400
Chore(deps-dev): Bump eslint-config-next from 12.3.4 to 14.2.3 by @dependabot in https://github.com/gethomepage/homepage/pull/3399

New Contributors

@daviddavid made their first contribution in https://github.com/gethomepage/homepage/pull/3332
@ameerabdallah made their first contribution in https://github.com/gethomepage/homepage/pull/3350
@EdwardSalter made their first contribution in https://github.com/gethomepage/homepage/pull/3358

Full Changelog: https://github.com/gethomepage/homepage/compare/v0.8.12...v0.8.13

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


Font preview is no longer working

Bug Description
Font preview in the drop down selector for fonts is no longer working as it was

Expected Behaviour
Fonts should be presented with the name in the font.
Steps to Reproduce

Screenshots

Additional Context

Plugin Version:
WordPress Version:
Operating System:
Browser:

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

Implementation Brief

Verified in QA


Keep simpler example, fix table formatting

Why:
Closes #11396

What's being changed:

Move up simpler example and remove unformatted row.

Check off the following:

[x] I have reviewed my changes in staging (look for "Automatically generated comment" and click Modified to view your latest changes).
[ ] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

@AnilSeervi
Thanks so much for opening a PR! I'll get this triaged for review :zap:


Cannot evaluate on unitxt-related tasks such as unfair-tos, ledgar...

I want to evaluate on law-related tasks to examine the effect of my LAW LLM, and my commands are as follows:
cd lm-evaluation-harness
pip install -e.
pip install lm_eval[unitxt]
CUDA_VISIBLE_DEVICES=0,1,2,3 bash eval_law_tasks.sh ../model/Qwen2-7B law-tasks-Qwen2-7B
I got the following reported errors:
ValueError: The repository for unitxt/data contains custom code which must be executed to correctly load the dataset. You can inspect the repository content at https://hf.co/datasets/unitxt/data.
Any ideas to solve this issue? Many thanks!

I think that you need to add the param trust_remote_code=True when you load the dataset.
I use
lm_eval --model hf  --model_args pretrained=modelpath,trust_remote_code=True for a model, but I'm not sure if it's implemented for datasets, or how to pass it.
otherwise you could always download and save the dataset first and then evaluate on it from a local file too.

Hi! You can pass --trust_remote_code arg, for e.g.:
lm_eval --trust_remote_code --model hf ...
and that should generally work. Alternatively you can all use the HF_DATASETS_TRUST_REMOTE_CODE=1 environment variable.

Hi! I use the recent version of lm_eval, but get the following errors:
Repo card metadata block was not found. Setting CardData to empty
Any ideas to solve this issue? Many thanks!

Hi! I use the recent version of lm_eval, but get the following errors:
Repo card metadata block was not found. Setting CardData to empty
Any ideas to solve this issue? Many thanks!

H! I think you can ignore that. It's a HF warning, letting you know there is no readme for the dataset iirc


URGENT Crash Using V169 Startup Crash

I am getting this crash, i need it fixed urgently as i cannot start up my server because of it now.
http://pastebin.com/HVYK1bqg
Is there someway i can fix this while waiting for the fix?

or whats causing it?

You can "MCedit" this issue. There is enough information in that crash log - exact block location and what is causing issue. Just load world or region with this block and delete erroring one.

ok, has number 2122 been fixed yet?
Is this a confirmed bug? i saw one other person having similer problems.

It looks like a generic Multipart corruption

i think im down 1 version on forge multipart, do you think that would matter at all?

Also check what i posted again, i updated it

No clue how that could happen, but I added a null check.

thanks!


add stream() to characteristic

To start the discussion.
Ive been working with streams on the serialport beta. One conclusion I think Im coming to is I dont think . streams lifecycle should have anything to do with connection lifecycle. You dont want a stream closing your bluetooth connection and having to reopen if you want to start another stream after.
Hence You have to get and keep a connection outside of the stream. Im putting it on the characteristic, and you can generate a new stream() repeatedly.
I think letting from2 through2 and duplexify handle stream setup and teardown is the current thinking, and certainly way easier to implement so Im using those libraries rather than trying to subclass Readable Writable or readable-stream
I think a stream is pointless if you're not subscribed, and you'll lose data inbetween subscribe and unsubscribes, so I think you should have to have previously subscribed to characteristic, or characteristic.stream() will attempt to do that for you.
This means Im holding the subscribed state on the characteristic object now.
usage would look something like this
    from2([Buffer.alloc([0x00, 0x00,0x00])])
      .pipe(characteristic.stream())
      .pipe(to2.obj(function (data, enc, cb) {
        console.log(data);
        this.end(); // flush writable
        cb(); //callback writable
        }, process.exit)
      );
  });

A more advanced example, but Im finding I want to send and receive commands, the characteristic stream will just keep asking for buffers from the from2 before weve gotten responses back. Im fixing that like this
    var sourcer = from2();
    sourcer.push(cmdList.shift());

    sourcer
      .pipe(characteristic.stream())
      .pipe(nmgr.decode())
      .pipe(utility.hashToStringTransform())
      .pipe(to2.obj(function (data, enc, cb) {
        console.log(data);
        var cmd = cmdList.shift()
        if(!cmd){
          sourcer.push(null); //close readable
          this.end(); // flush writable
        }else{
          sourcer.push(cmd);
        }
        cb(); //callback writable
        }, process.exit)
      );

It looks much better as a pull stream, but thats a different discussion, and characteristic.stream() can be converted to pull stream successfully without leaking so implementing as 'standard' node 2/3 stream is the way to go

Sandeep pointed me at Max's work from a while ago.
https://github.com/maxogden/ble-stream/blob/master/central.js
He attempts to wrap lifecycle up into creation, and also polls read, which I dont like.
@sandeepmistry do we need this write throttling?
https://github.com/maxogden/ble-stream/blob/master/central.js#L43

do we need this write throttling? https://github.com/maxogden/ble-stream/blob/master/central.js#L43

Really depends on the connection interval and buffer depth. I can see data being dropped if too much is pushed. We'll have to try it out ...

Yeah definitely,  Frankly though, the more I research and understand the conclusion Im coming to is that streams are a dead experiment nobody is working on and are afraid to touch.
I dont really understand it all yet, but async iterators are coming with tc39, and observables are also a proposal. These will be in v8 shortly and are going to be the cross platform solution thats hooked up to async await and promises the way streams will never be.

Please forward the change to:
https://github.com/noble/noble/issues/923


Add NCUM model reader

Adding a model reader for the NCUM model from ISRO

@leiyangleon can you double check with Prashant to integrate this back with a PR?

Closed by #141


[bazel] New rules: //sw/device/silicon_creator/manuf/lib/BUILD

Convert //sw/device/silicon_creator/manuf/lib/BUILD to the new build rules.

Some tests require jtag so cannot be converted until #19719 is merged

Done in #19958


Sync Kyber implementation to crystals-kyber-js.

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (6e905cb) 97.57% compared to head (09cb1b4) 97.57%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #279   +/-   ##
=======================================
  Coverage   97.57%   97.57%
=======================================
  Files          35       35
  Lines        2265     2265
  Branches      216      216
=======================================
  Hits         2210     2210
  Misses         54       54
  Partials        1        1

Flag
Coverage Δ

unittests
97.57% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

src/kdfs/hkdfSha256.ts
100.00% <100.00%> (ø)

src/kdfs/hkdfSha384.ts
100.00% <100.00%> (ø)

src/kdfs/hkdfSha512.ts
100.00% <100.00%> (ø)

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