working on blocks for particles

A first jab at blocks for particle. It seems that it broke for some reason, not sure if it is due to the recent screen changes.

Test
enum SpriteKind {
    Player,
    Projectile,
    Food,
    Enemy
}
let source: particles.ParticleSource = null
let mySprite: Sprite = null
mySprite = sprites.create(sprites.castle.heroFrontAttack1, SpriteKind.Player)
source = particles.createParticleSource(mySprite, 50)
source.enabled = true;

Right now it needs to have a factory attached, so that it's not just the default; if you want the trail, it would be something like
enum SpriteKind {
    Player,
    Projectile,
    Food,
    Enemy
}

function mkTrailSource(sprite: Sprite) {
    // first, create a factory that outputs a trail
    const factory = new particles.TrailFactory(sprite, 1, 800);
    // then attach that trail to a new source
    const src = new particles.ParticleSource(sprite, 50, factory);
    return src;
}

let source: particles.ParticleSource = null
let mySprite: Sprite = null
controller.moveSprite(mySprite);
mySprite = sprites.create(sprites.castle.heroFrontAttack1, SpriteKind.Player);
source = mkTrailSource(mySprite);

and then the trail should follow the player. I'm still thinking on a way to refactor that a bit, but exposing configurable mkTrailSource like function seems like a first step
(I can't test the code I listed right away because my local serve somehow got stuck in an endless polling C++ build loop, so something might be slightly off)
The entire strucut
const confImages = [
    img`
        F
    `,
    img`
        F
        F
    `,
    img`
        F F
    `,
    img`
        F F
        F .
    `,
    img`
        F F
        . F
`];
const src = mkShapeSource({
    x: screen.width / 2,
    y: 0
}, confImages);

function mkShapeSource(anchor: particles.ParticleAnchor, pImages: Image[]) {
    if (!pImages || pImages.length == 0) return undefined;

    const factory = new ShapeFactory(screen.width, 10, pImages[0]);
    for (let i = 1; i < pImages.length; i++) {
        factory.addShape(pImages[i]);
    }
    factory.setSpeed(30);
    return new particles.ParticleSource(anchor, 60, factory);
}

/**
 * A factory for creating particles with the provided shapes.
 */
class ShapeFactory extends particles.AreaFactory {
    protected sources: Image[];
    protected ox: Fx8;
    protected oy: Fx8;

    constructor(xRange: number, yRange: number, source: Image) {
        super(xRange, yRange);
        this.sources = [source];

        // Base offsets off of initial shape
        this.ox = Fx8(source.width >> 1);
        this.oy = Fx8(source.height >> 1);
    }

    /**
     * Add another possible shape for a particle to display
     * @param shape
     */
    addShape(shape: Image) {
        if (shape) this.sources.push(shape);
    }

    drawParticle(p: particles.Particle, x: Fx8, y: Fx8) {
        const pImage = this.galois.pickRandom(this.sources).clone();
        pImage.replace(0xF, p.data);

        screen.drawImage(pImage,
            Fx.toInt(Fx.sub(x, this.ox)),
            Fx.toInt(Fx.sub(y, this.oy))
        );
    }

    createParticle(anchor: particles.ParticleAnchor) {
        const p = super.createParticle(anchor);

        p.data = this.galois.randomRange(1, 14);
        p.lifespan = this.galois.randomRange(1000, 4500);
        return p;
    }
}

Default factory with yours:
enum SpriteKind {
    Player,
    Projectile,
    Food,
    Enemy
}
let source: particles.ParticleSource = null
let mySprite: Sprite = null
mySprite = sprites.create(sprites.castle.heroFrontAttack1, SpriteKind.Player);
controller.moveSprite(mySprite);
source = new particles.ParticleSource(mySprite, 50);

Would be good to flush the api next week - at least for the blocks.

It was mostly a cleanup but we should spend an hour extching our a block api. I was think of having a set of effects that look good + api to do more involved animations. Similarly to Neopixel animations.

Yeah, I think that's the way to go. Flashy effects that you can attach to sprite or use for point effects (like explosions)


Live

Hi @qunluhe, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, DNFBOT;

This is an automated process handled by the internal teams.


Applied Note Formatting

Added note tags, converted text to active voice, made text consistent
Preview: https://5b7b25c54ed62f3f7aba2f73--kubernetes-io-master-staging.netlify.com/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/

/lgtm
/approve


typo in README

This idea was originally a language proposal and my hope is that it makes it's way into the language proper.

should be its

Thanks, fixed


Code review

This is an unexpectedly OOP approach to writing a module. Not something I have seen before. I might have to steal some of the concepts for my own modules ;)
I don't know rxjs at all, so I dont fully follow everything it is doing, but it looks reasonable
I advise against doing this odd import https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/constants.ts#L17, in 2.3/3.0 this is guaranteed to break. I dont mind it staying, but expect some pain when the day comes that people start testing 2.3/3.0
I havent seen where this is used yet. Perhaps there is something companion can do to make these usable for you in a more generic way? Perhaps a new ui control type or somthing?
https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/instance.ts#L66 this will likely cause some performance issues. Whenever your module changes it feedback definitions, the new definitions get sent to all connected clients. This has been an issue that we have been chasing with other modules recently.
https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/actions/jump-playback.action.ts#L30 Instead of handle functions like this, you could use the callback property on the action definitions. That looks like it will better fit your coding style.
There are some floating promises that would be good to handle in some way. Even just to add a catch and log it, to avoid nodejs producing a nasty log and potentially crashing.
Also companion isnt expectint https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/instance.ts#L25 to return a promise, so this will be left 'floating'
This won't build properly when pulled into the companion builds, because we 'abuse' some things to make a crude workflow.

You need to have any typings in dependencies rather than devdependencies: https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L50
Build needs to be triggered in the postinstall script: https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L26
build script needs to not rely on devDependencies https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L19
I think it should be possible to simulate how it would behave by doing a yarn --prod in your module. If it builds the dist folder and everything then it should be ok

I created PR #2 to track changes requested here.

This is an unexpectedly OOP approach to writing a module. Not something I have seen before. I might have to steal some of the concepts for my own modules ;)

Thanks! I went for a modular and modern approach based on dependency injection because I have noticed some modules have files with 1000's of LOCs and that can get out of hand very quickly.

I advise against doing this odd import https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/constants.ts#L17, in 2.3/3.0 this is guaranteed to break. I dont mind it staying, but expect some pain when the day comes that people start testing 2.3/3.0
I havent seen where this is used yet. Perhaps there is something companion can do to make these usable for you in a more generic way? Perhaps a new ui control type or somthing?

I use it here https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/f289dfb60e08ca8c7603fe719ac810f202e907af/src/presets/transport-controls.preset.ts#L32 for example.
I didn't want to have to import the instance everywhere as that would become messy pretty quickly.
I guess what would be useful is if Companion simply exported those icons as static constants (they don't need to be instance members) - with proper types for us TS users, of course ;) Same goes for utility functions, regexes, etc.

https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/instance.ts#L66 this will likely cause some performance issues. Whenever your module changes it feedback definitions, the new definitions get sent to all connected clients. This has been an issue that we have been chasing with other modules recently.

I understand and I was worried this might be the case. We do this so that dropdown menus in the feedback configurations are updated dynamically when there is a state change on the device.
In order to offer a rich UX, it was important that we don't force the users to enter GUIDs and other non-user-friendly strings in the action/feedback configuration. For example, we can display a dropdown with all media assets on our player, that will automatically update when a new file is uploaded, or renamed, etc.
What would be awesome would be to have a way to add reactive options which can then be updated as data changes. For example, instead of accepting a static array of SomeCompanionInputField in CompanionFeedbackBase#options, accept an Observable<SomeCompanionInputField[]> as well. I realize this is a major structural change, but would be happy to discuss ideas further :)
In the meantime, I am not sure how to handle this. Perhaps we could have a configuration setting in our module to disable (or at least throttle) frequent updates, if it causes performance issues on slower machines?

https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/actions/jump-playback.action.ts#L30 Instead of handle functions like this, you could use the callback property on the action definitions. That looks like it will better fit your coding style.

Noted, I will look into it. But is there any downside to our current approach?

There are some floating promises that would be good to handle in some way. Even just to add a catch and log it, to avoid nodejs producing a nasty log and potentially crashing.
Also companion isnt expectint https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/instance.ts#L25 to return a promise, so this will be left 'floating'

I tried to remove floating promises in d0a92196188326c3d379d0296ef11813968ec396, let me know if you still see some I forgot.

You need to have any typings in dependencies rather than devdependencies: https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L50

I don't think I have any of those.

Build needs to be triggered in the postinstall script: https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L26

Done in 3592610f052d5870d3902c6f50780fd22e766430

build script needs to not rely on devDependencies https://github.com/bitfocus/companion-module-behringer-x32/blob/master/package.json#L19

Done in 3592610f052d5870d3902c6f50780fd22e766430

I think it should be possible to simulate how it would behave by doing a yarn --prod in your module. If it builds the dist folder and everything then it should be ok

It builds okay with the above changes!

Thanks! I went for a modular and modern approach based on dependency injection because I have noticed some modules have files with 1000's of LOCs and that can get out of hand very quickly.

Yeah, most modules do end up with hugely long files. I havent yet put the effort into figuring out a properly solution for splitting them up myself, especially when wanting to keep typescript happy

I guess what would be useful is if Companion simply exported those icons as static constants (they don't need to be instance members) - with proper types for us TS users, of course ;) Same goes for utility functions, regexes, etc.

Ive noticed that another module is already importing this file, so it will be harder to impove than I was hoping... Its probably not worth worrying about for now then. 3.0 is already going to introduce a rewritten module api, and has a backwards compatibility layer which can include things like this bad import, so it may as well stay as is for 2.2

What would be awesome would be to have a way to add reactive options which can then be updated as data changes. For example, instead of accepting a static array of SomeCompanionInputField in CompanionFeedbackBase#options, accept an Observable<SomeCompanionInputField[]> as well. I realize this is a major structural change, but would be happy to discuss ideas further :)

I dont remember if there is an issue currently open for this, but it has been suggested before (https://github.com/bitfocus/companion/issues/1635 is related but not entirely the same). The challenge is going to become how to make this work in a fluid way. With many users using the ui over a vpn, anything too dynamic like this will mean that actions using these reactive/dynamic options will take some extra ms to load. There are many ways this could be approached, but its figuring out which is the right one for us, and then making the ui feel right with that method.

In order to offer a rich UX, it was important that we don't force the users to enter GUIDs and other non-user-friendly strings in the action/feedback configuration. For example, we can display a dropdown with all media assets on our player, that will automatically update when a new file is uploaded, or renamed, etc.
In the meantime, I am not sure how to handle this. Perhaps we could have a configuration setting in our module to disable (or at least throttle) frequent updates, if it causes performance issues on slower machines?

Having updating dropdown options like this is not uncommon, and is not discouraged. I only have a problem with how often it will update. It looked to me that every you say that any feedback value changed, it will emit this update. If you could make it simply do a check to make sure it is likely that the list of guids has changed before deciding to do that call then I will be happy.
For example, in bmd-atem it checks 'if the state update affected something do with the input properties', and only then does it update the list of action and feedback definitions. I dont check if a name actually did change (out of laziness), but this stops things which are clearly not related to the input names from doing the extra work.

https://github.com/bitfocus/companion-module-theatrixx-xpresscue/blob/main/src/actions/jump-playback.action.ts#L30 Instead of handle functions like this, you could use the callback property on the action definitions. That looks like it will better fit your coding style.

Noted, I will look into it. But is there any downside to our current approach?

No, there is nothing wrong with that approach.

I think it should be possible to simulate how it would behave by doing a yarn --prod in your module. If it builds the dist folder and everything then it should be ok

It builds okay with the above changes!

Perfect

@Julusian see 2aebdc706f65903c4cec55357e47baf31f0a1d0d, this should address most performance concerns.

Yeah Im happy :)

@Julusian Done! I just deleted and re-tagged v1.0.0 on main:HEAD - as I realized I probably should have waited until after this review to release anyway ;)


add full page link to codepen demo

<EMAIL_ADDRESS>body > p:first-child {
  background: red;
  width: 100%;
  display: flex;
  justify-content: center;
  gap: 0.25rem;
  color: white;
}

<EMAIL_ADDRESS>


Run Travis builds for all branches

This prevents me from testing branches on my fork. With Humbug being an organisation, we can all make PRs from our forks, so no duplicated builds will be created. Anyway, it can be configured in Travis project settings (if not already done in .travis.yml as it is now).

I have fixed this in #207

@snapshotpl thanks for that! Nevertheless, your PR is quite more complex than this one and since we got failing test suite on master, I think that we should do the bare minimum to make existing Travis CI config passing before merging other PRs. This one will prevent me from spamming Humbug with builds as the bug mentioned in https://github.com/humbug/humbug/issues/219#issuecomment-294204392 will be solved mostly by trial and error :)


Build for Node JS 16

The build is failing for nodejs 16. We may need to update to this eventually to work with the latest Fleek image and some dependencies.

Instead of upgrading to Node 16, I ended up changing the Fleek Docker image to node:14.17.3


Update formatting for PDF

Resolves #347

Codecov Report
Base: 69.90% // Head: 69.90% // No change to project coverage :thumbsup:

Coverage data is based on head (b077037) compared to base (55805df).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##             master     #352   +/-   ##
=========================================
  Coverage     69.90%   69.90%
  Complexity      717      717
=========================================
  Files           106      106
  Lines          2429     2429
  Branches        322      322
=========================================
  Hits           1698     1698
  Misses          610      610
  Partials        121      121

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


BROOKLYN-313: log.debug exceptions thrown by effectors

Also see https://github.com/apache/brooklyn-library/pull/49 (but please review and merge this first).

LGTM


HTML

HTML
User Story
As a bootcamp student
I want the prework notes to be structed on a webpage
so that I can easily find and read information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I visit the website in my browser
THEN I see four boxes titled HTML, CSS, Git, and JavaScript with associated notes listed

#CSS
##User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
##Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I view the study guide
THEN I see a dark blue header and footer, and four boxes with a shadow

JavaScript
User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I view the study guide
THEN I can see the four topics I learned listed along with a suggestion on what I should study first

README
User Story
As a boot camp student,
I want the prework notes to be structured on a webpage,
So that I can easily find and read the information.
Acceptance Criteria
GIVEN the prework project repository,
WHEN I view the README for the repository,
THEN I can see a professional README that provides information on the project and how to use it

Deployment
User Criteria
As a boot camp student,
I want the prework notes to be structured on a webpage,
So that I can easily find and read the information.
Acceptance Criteria
GIVEN a Prework Study Guide website,
WHEN I visit the website using the URL,
THEN I can access my website from any browser

Closed on 7/7 after 2nd attempt. 1st attempted had merging issues with the HTML file.
Deleted files, created a new HTML file with practice code, and successfully created a merge on 2nd attempt.
Assumption is that 1st attempt, coding sequence was incorrect along the way.


Extensions of print* functions with custom output streams

Viuer is awesome! But its capabilities could be utilized even further if we let users customize output streams. Current public API helper functions are sealed with stdout, so the user doesn't have alternatives rather than printing images directly to stdout. I added two new helper functions write and write_from_file that work exactly the same way as print* functions do, but they also accept &mut impl Write as a first additional argument.
The primary motivation for me to introduce this extension is making a custom implementation of the Rust Env Logger for my own graphics project, such that the logger will be able to print images to terminal for the logs referring GPU backed image in debug messages. This is practically useful for visual debugging of the rendering process, and is a nice feature to have. The difficulty here is that the Logger Builder callback tied to the Formatter which in turn is a Write implementation, and requires of buffering printing data beforehand. If I use just print/print_from_file functions the images would come to console before the log message.
All in all with these new functions the end result looks good:

I also added MIT License file to this repo to match the record in Cargo manifest.

I also added a newline config option that prevents adding a new line to the output stream. It's value is true by default, so this is not a breaking change.

Just figured out that this solution wouldn't work well with BlockPrinter, because the block printer is tied to BufferedStanardStream backed by stdout... so, the feature seems to be not generic enough. What do you think?

Woah, this is a very cool use case! I haven't though about making the write interface public but it does make sense.
Previously, I've made an attempt to abstract the print calls within the Printer trait to target &mut impl Write but couldn't figure out how to work around the limitation you pointed out in termcolor. Also, sixel is a whole 'nother (experimental) beast that I haven't yet understood.
I'm a bit hesitant to merge this because the block printer is considered the "default" and new functionality should work with it as a minimum, imo. If we can't come up with something, we could also ask for help upstream.

@atanunq Thank you for review.
I don't know how to fix it too, because termcolor's WriteColor is sealed. There are several ways on how to workaround it. e.g. we can statically limit introduced write* functions to only work with iTerm and Kitty, or expose Printer interface(again for iTerm and Kitty only), or doing the opposite -- limit "write*" functions to always accept termcolor's WriteColor interface only. Either way has its drawbacks. Maybe the only right way would be just give up and close this PR :) To be honest I'm trying to use your crate the way it was not designed for from the beginning. But it's up to you, I can try to implement one of these workarounds and we merge it. Also, perhaps another way would be getting rid of termcolor and write BlockPrinter manually without the termcolor capabilities. I think it should be possible to do, but it would be hard in debugging and implemention both, not something I can do atm :)


Only log time correction state in debug mode

I'm not sure what's going on with the failing test case. I haven't seen that before - and the CircleCI tests pass on a regular basis (https://circleci.com/gh/lightstep/lightstep-tracer-javascript). If this isn't blocking anything can we sync up at the start of the week on this?

@bcronin thanks for your help – for anyone looking at this later, the issue had to do with a misunderstanding on my part of what the test intended re: global vars.


Edge curves (avoid obstacles) in hierarchical layout

Hi all,
I have a tree in which the leaves are directly connected. I have been trying to use the smooth attribute on edges to avoid edge overlapping. The idea is to make the edges "overcome" the nodes as seen in this example: .
However, it seems that this attribute doesn't work with nodes within the same hierarchical level:

As you can see in the figure, the edges are overlapping and passing through the obstacle. The sequence of the leaves is "broken" because of the hierarchical layout. So, I thought that by using the smooth attribute I would get the edges to overcome the obstacle nodes. Am I doing something wrong? Or indeed the smooth attribute are not meant for this use case?

3 years later...
I have encountered this same problem. Any solution?
I had same line of thinking, to change smooth attribute, did not help me either.
I need ability to only curve line when nodes are on same x axis for vertical hierarchy


[Feature Request]: LivePro L1 or RGBLink mini hdmi switcher

What feature would you like to see added to TallyArbiter?
Hello. I asked manufacturer for API, and he send me this document:
API(EN).pdf
Here is enought information to control switcher but it is not all info.
I start to reverse ingeneering communication protocol between desktop app and switcher and results are:
As mentioned in document sctructure of UDP message is:
<T - for question
<F - for feedback from mixer
then
00
then program generates sequently increasing numbers from 01 to FF mentioned as "sq"
then code of command XX YY
Then three bytes of DATA AA BB CC
Then checksum "ck" of 00 + sq +XX + YY + AA + BB + CC show as "ck"
and ending ">"
On start program send broadcast messages
<T 00 sq 68 01	000000	ck> - broadcast message <IP_ADDRESS>
<F 00 sq 68 01	410101	ck> - from switcher
<T 00 sq f1 44  	000000	ck> - broadcast message <IP_ADDRESS> ask for serial number
<F 00 sq f1 44	        001500	ck> - response
0320474UF1R21Q005553h            - SN of switcher
Then program entrance to switcher view
<T 00 sq 68 01	000000	ck> - to mixer
<F 00 sq 68 01	410101	ck> - response
<T 00 sq f1 c0	        000000	ck> - to mixer
<F 00 sq f1 c0	        000000	ck> - response
Small pause
<T 00 sq 68 a1	000000	ck> - to mixer
<F 00 sq 68 a1	000000 	ck> - from mixer
<T 00 sq 68 66	000000 	ck> - connect message
<F 00 sq 68 66	000000	ck> - response
<T 00 sq 81 0f	        050000	ck>
<F 00 sq 81 0f	        053200	ck>
<T 00 sq a2 18	000000	ck> - T-BAR position
<F 00 sq a2 18	000004	ck> - T-BAR position
<T 00 sq 78 13	000000	ck> - Read T-BAR mode (There two ways - direct cut to camera or "t-bar mode" with preview and live)
<F 00 sq 78 13	010000	ck> - Answer - T-BAR=T-BAR
And now begins main cycle of questions to mixer, it loops forever and sometimes currupts by commands
! TALLY !
<T 00 sq f1 40	         010000	ck> - Ask for TALLY
<F 00 sq f1 40	         011600 	ck>
all info about tally is in the next packet:
00 01 03<PHONE_NUMBER>0000000000000000000 1010000 09
PRV 01 MST<PHONE_NUMBER>0000000000000000000 1010000 09 (last is checksum)
00 - First inpur
01 - Second
02 - Third
03 - Fourth
<T 00 sq f1 03	000000	ck> - Input state request
<F 00 sq f1 03	002100	ck>
Next packet
02020202020202020202020202020202 0a7f7f7 fffffffffffffffffffffffff9b
0a - 1920x1080x60p
7f - empty
I'm not good in coding, I hope for your support. Hopefully, together we will add this mixer to the ecosystem of Tally arbiter. Thanks

I think it would be pretty straight forward to implement this as it's just a relatively simple hexadecimal protocol. The tally par is still a little unclear to me, so it may require a few iterations to make it work.
Would you be open to a remote coding session where I remote into a computer on your network with the switcher and do some reverse engineering of my own?

Ok, tomorrow i'll try to make more detailed file from wireshark session

Best thing you could do is make a pcap file thats filtered to the switcher for each input and switch through the states. That would let me create the integration.

Hello. Here is three different wireshark cap files
01 - t-bar-mode - open desktop app => enter switcher view => switching the inputs on the switcher by moving t-BAR (preview => live)
02 - fast (autocut) mode switching 1-2-3-4 - open desktop app => enter switcher view => switching between 1-2-3-4 inputs (no preview)
03 - t-bar mode manual inquiry - i am manually send udp
message from udp sender windows app and moving t-bar and switching between inputs
Cannot attach files here
Files are here:
https://disk.yandex.ru/d/VyZmVUGi74L-dQ

Awesome! Would you be able to do one more with tally?

After T0000f14001000032 command to mixer. Mixer send back two packets
1 response  F0000f14001160048
And
2 tally data:
It's in that packet

0301010101010100000000000000000000010100000b
first 3 bytes are state of inputs "03" - Fourth
first - preview
second 01 as i understand - devider
third - program "01" - is for second input

To send to mixer T-Bar movement you should send sequence of commands
T 00 00 78 00       00 02 00       7a> - initiation of T-Bar movement
T 00 00 78 08       03 00 00       83> - set zero position
////// here is commands with numbers between 03 00 to 00 04 second byte is higher
T 00 00 78 08       00 04 00       84> - set end position
T 00 00 78 00       00 04 00       7C> - end of t-bar movent (without that comand there is no "cut to program" effect)

Ok. The tally protocol is starting to make sense. Can you do one more pcap where you go through and put input 1 in preview then program, input 2 to preview then program, input 3 preview then program, then input 4 preview then program?
I think after that I should have all the data I need to make a module for it.

https://disk.yandex.ru/d/rozNraLEAhDajA
Here it is.
My actions are:
1 (pgm) 2 (prv) => t-bar => 2 (pgm) 1 (prv) => 2 (pgm) 3 (prv) => T-bar =>  3 (pgm) 2 (prv) => 3 (pgm) 4 (prv) => T-bar =>  4 (pgm) 3 (prv)  =>  4 (pgm) 1 (prv) => T-bar =>  1 (pgm) 4 (prv)

I finally had time to sit down and isolate the tally protocol. Now that I have a firm grasp on how that works, I should be able to get a working module in the next two weeks.


Using STL map

This is a sample code for map.
Language : c++

What do we have to do in this? Can you please elaborate.

I would like to work on this issue. Please assign this to me.


Clean dirty usage

@cedricpinson about the mosaic of all examples I think it is now a little overkill.
As a first step is ok, but I believe it would be better to have multiple viewers instead of iframes. So you can viewer.setDone(true) when you are not hovering, and viceversa. So frame it's not called in a viewer if you are not hovering that viewer in the mosaic (like shadertoy).

@jtorresfabra agree, it's just a trap in order someone else improve the system :)

@Kuranes fixed


Add a build props file to force root container users when people publish containers with this library

As we found, Actions that are container-based must execute as root. Per the docs:

Docker actions must be run by the default Docker user (root). Do not use the USER instruction in your Dockerfile, because you won't be able to access the GITHUB_WORKSPACE directory. For more information, see "Variables" and USER reference in the Docker documentation.

We can help users enforce this invariant, while also giving them a chance to skip if they promise they know what they're doing.
A binlog shows:
the import

the property set

@all-contributors please add @baronfel for code


Superglue no matcher result

@yuefanhao Hi, thank you for your great work!!!

i can get the superpoint result, but there is no matcher result, i have found in other issue, mean that the tensorrt version is too hight, but because of other application using high tensorrt version, so i can not downgrading the tensorrt version.
I'm guessing whether the program can be modified to adapt to a higher version of Tensorrt?

It should be the problem of tensorrt version, but I'm sorry that I don't have much time to do this work at present, and I may be compatible with the latest tensorrt version in the future.


add vscode 1.8.1

add vscode 1.8.1
If there’s a checkbox you can’t complete for any reason, that's okay, just explain in detail why you weren’t able to do so.
After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} reports no offenses.
[x] The commit message includes the cask’s name and version.

Additionally, if adding a new cask:

[x] Named the cask according to the token reference.
[x] brew cask install {{cask_file}} worked successfully.
[x] brew cask uninstall {{cask_file}} worked successfully.
[x] Checked there are no open pull requests for the same cask.
[x] Checked that the cask was not already refused in closed issues.

add vscode 1.8.1

Thanks for your contribution! There already is a Cask for Visual Studio Code, so this PR should be closed. You are more than welcome to keep said Cask up to date, though. :)

As @neutric pointed, out, this is already available.


About Page

Take photos of COAS 105 and 106 (ORGANIZED) and add them to the about page, describing the function of each room. Take photo of all lab members and add it to the about page, adding the names of each of the members and their majors in a description.

Also add a link to the questionnaire here or in the profile so that new members can fill it out to join the lab.


Fix to osx compilation

Fixes so that compilation and tests on osx work for gcc-10 with gcc toolchain and clang-11 with clang-libc++ toolchain.

Sharing the changes I had to do to make cnl compile on my mac laptop running Catalina.

Thanks. I'd be interested in extending this support to the pipeline (as I don't have a Mac to test on locally) but would want to reproduce the failures you encountered before applying fixes in a way which keeps the CMakeLists.txt files platform-agnostic. Probably, this would mean one or more OSX tool-chain files.

I will reproduce and post the errors tomorrow morning. I'm also curious why there are no GTest main and make_paths errors in osx pipeline build.

So the issue was this: I was using mixed conan + CMake based build, i.e. I was trying to follow README.
Instead an adaptation from test.yml works without hickup:
My: gcc-10 profile:
[settings]
os=Macos
os_build=Macos
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=10
compiler.libcxx=libstdc++11
build_type=Release
[options]
[build_requires]
[env]
CC=/usr/local/bin/gcc-10
CXX=/usr/local/bin/g++-10

gcc-10 build:
% mkdir build; cd build;
% conan install --build=missing --profile=gcc-10 --env CONAN_CMAKE_GENERATOR="Ninja" \
--env CONAN_CMAKE_TOOLCHAIN_FILE="$(pwd)"/../test/toolchain/gcc.cmake \
--options target=test-all --options test_pattern="^test-unit-" ..
% conan build --configure --build ..
% conan build --test ..

My: clang-11 profile:
[settings]
os=Macos
os_build=Macos
arch=x86_64
arch_build=x86_64
compiler=clang
compiler.version=11
compiler.libcxx=libc++
build_type=Release
[options]
[build_requires]
[env]
CC=/usr/local/opt/llvm/bin/clang
CXX=/usr/local/opt/llvm/bin/clang++

For clang-11:
% mkdir build; cd build;
% conan install --build=missing --profile=clang-11 --env CONAN_CMAKE_GENERATOR="Ninja" \
--env CONAN_CMAKE_TOOLCHAIN_FILE="$(pwd)"/../test/toolchain/clang-libc++.cmake \
--options target=test-all --options test_pattern="^test-unit-" ..
% conan build --configure --build ..
% conan build --test ..

Following/adapting README would result:
% export CC=/usr/local/opt/llvm/bin/clang
% export CXX=/usr/local/opt/llvm/bin/clang++
% conan install --build=missing --profile=clang-11 ..
% cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PROJECT_cnl_INCLUDE:FILEPATH="$(pwd)"/conan_paths.cmake ..

Result:
-- The C compiler identification is Clang 11.1.0
-- The CXX compiler identification is Clang 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/local/opt/llvm/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/opt/llvm/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:8 (project):
  project could not find file:

    /Users/berg/Development/cnl/build/conan_paths.cmake

CMake Warning at test/CMakeLists.txt:29 (find_package):
  By not providing "Findbenchmark.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "benchmark", but CMake did not find one.

  Could not find a package configuration file provided by "benchmark" with
  any of the following names:

    benchmarkConfig.cmake
    benchmark-config.cmake

  Add the installation prefix of "benchmark" to CMAKE_PREFIX_PATH or set
  "benchmark_DIR" to a directory containing one of the above files.  If
  "benchmark" provides a separate development package or SDK, be sure it has
  been installed.

-- Google Benchmark is required to build test-benchmark.
-- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
-- Google Test is required to build unit tests.
-- Configuring incomplete, errors occurred!

Which is natural due to the conan_paths.cmake not available due to missing cmake_paths generator.
The other fixes were similarly for the CMake based build.

I don't have much time before tomorrow (national holiday!) to look into this but I was able to reproduce the error this morning in CI. So from there, it's a lot easier for me to test support.
It also sounds like I need to improve the README. I might even want to adapt some of the CI jobs to parrot the README instructions -- just to make sure they stay current.

A CI build for Clang-11 on OS X was added in #804.

@hbe72  I'm inclined not to go near the issue with the sanitizer. It seems that if you try and build with Clang, enabling UBSan and then use __int128_t arithmetic, it's known that you'll face linker issues. The fix for that is to add compiler-rt with -rtlib=compiler-rt but then that seems to replace the GNU run-time library, which has the knock-on effect of losing some different essential symbols related to dumping the call stack. (I think this is to do with sanitizers.) So then adding lib gcc_s is the workaround to that problem. Phew!
This isn't a CNL issue so I'm removing the workarounds that try and remedy this situation. The upshot is that you shouldn't see the gcc_s error. Whether you're able to run sanitizer and use __int128_t is another matter. I'd be interested to know how that goes.

Assuming I didn't miss something, this branch is no longer needed. I'll probably be deleting it in the near future.


Middlewares are not used for OPTIONS requests

Preamble
It doesn't appear that Crow executes middlewares at all for OPTIONS requests. This means that crow::CORSHandler is useless when handling CORS preflight requests. For other kinds of requests (GET, POST, etc.), Crow runs the middleware.
Without the proper CORS headers in the OPTIONS response, the browser will complain when custom headers are added into the request:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://<IP_ADDRESS>:18080/wordle_key_pressed/y. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 204.

Reproducing

Reproducing code for crow::CORSHandler
#include "crow_all.h"

int main() {
  crow::App<crow::CORSHandler> app;
  app.get_middleware<crow::CORSHandler>().global().origin("*");

  CROW_ROUTE(app, "/")
  ([]() { return "Hello world"; });

  app.port(18000).run();
  return 0;
}

What should happen: when curl -X OPTIONS is used, Crow should execute the crow::CORSHandler middleware, which will respond with the right CORS headers.
What actually happens: Crow does not run any middlewares, and no CORS headers are present in the response:
$ curl -X OPTIONS -v http://<IP_ADDRESS>:18000
*   Trying <IP_ADDRESS>:18000...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 18000 (#0)
> OPTIONS / HTTP/1.1
> Host: <IP_ADDRESS>:18000
> User-Agent: curl/7.84.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 204 No Content
< Allow: OPTIONS, HEAD, GET
< Content-Length: 0
< Server: Crow/master
< Date: Mon, 24 Oct 2022 03:29:49 GMT
<
* Connection #0 to host <IP_ADDRESS> left intact

Just to confirm that crow::CORSHandler is working as it should be, it does respond with all the required CORS headers for GET requests:
$ curl -v http://<IP_ADDRESS>:18000
*   Trying <IP_ADDRESS>:18000...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 18000 (#0)
> GET / HTTP/1.1
> Host: <IP_ADDRESS>:18000
> User-Agent: curl/7.84.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Access-Control-Allow-Headers: *
< Access-Control-Allow-Methods: *
< Access-Control-Allow-Origin: *
< Content-Length: 11
< Server: Crow/master
< Date: Mon, 24 Oct 2022 03:30:04 GMT
< Connection: Keep-Alive
<
* Connection #0 to host <IP_ADDRESS> left intact
Hello world

Nevermind. It seems like this repository is not maintained anymore.
Closing in favor of https://github.com/CrowCpp/Crow/issues/538.


fix(plugin) reuse redis conn for different db & auth optimize

Summary
If user configure response-ratelimiting、response-ratelimiting use same redis instance with db0 and other will get unexpected results.
Full changelog

red:select each time.
red:auth only once.

Issues resolved
Fix #3292

@mengskysama Hello, thank you for sending a PR! Could you include in it a regression test for the issue you are meaning to fix?

I agree with @hishamhm - setting up the test case for this will be non-trivial though...

I already commit my change. Thank for your patience.

Merged to master with some modifications. Thank you for the patch!


Remove unused logger

The logger package is used only within dea_logging_agent and that
package already vendors it. The top level logger within src is
unused.

@enocom does it again!


Error: internal server error

The API is not working now. It shows "Error: internal server error".

We will need more information. Were you using the website or the API? When did it happen? Did you see this error message multiple times or just for checking certain accounts?


Drop YAPF from Travis tests for now.

Although YAPF docs suggest using it as part of a CI workflow, we've run
into a risk associated with that: YAPF might change its implementation,
and if its output changes your CI will break. This may not sound like a
significant risk, but we set up YAPF for two files on Thursday and it
broke our Travis tests on Sunday.
This takes YAPF out of our Travis setup to unbreak things. I've left the
YAPF option in the tools/lint script for now, since I'm not sure what
the new plan is going to be and we might still end up using it (even if
it's not part of our Travis setup).

Test failures are just more of my arch-nemesis #226. The other Python 2 run succeeded, and this couldn't have broken any server tests anyway.


Gradel build fails

Gradle fails to build with compile 'petrov.kristiyan:colorpicker-library:1.1.5' as indicated on the README
Only compile 'petrov.kristiyan.colorpicker:colorpicker-library:1.1.2' works

Thank you!!
Looks like the library for some reason was not synched with jcenter
While i wait for the sync with jcenter you can use the 1.1.5 by adding the following maven repo in your project gradle
allprojects {
   repositories {
         maven {  url "https://dl.bintray.com/petrovkristiyan/maven" }
         ... // other repositories such as jcenter
  }
}

in your project gradle

bintray fixed the issue, now is possible to use the library directly from jcenter.
Without adding the additional maven repository


request: Add support of redirected to the correct endpoint

When bucket located in non-Standard US region and policy not allow getBucketLocation then request send us-east-1 and s3 responds with

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

In such case minio-go may try to retry and redirect all future request to correct endpoint suggested by s3.
https://github.com/restic/restic/issues/388#issuecomment-182318912

Thanks for creating this @vshalts . We will see how we can address this.

@vshalts - not able to reproduce this with our s3 accounts, does this require an account policy? instead of bucket policy?
Can you share a sample configuration when you reproduced the issue? . Thanks

I can reproduce it with latest restic right now with such setup:
amazon s3 setup:
Bucket: 	work.backup.vshalts.com
Region: 	Frankfurt

Policy defined as Inline Policies at the level of user:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::work.backup.vshalts.com",
                "arn:aws:s3:::work.backup.vshalts.com/*"
            ]
        }
    ]
}

command:

restic -r s3://s3.amazonaws.com/work.backup.vshalts.com/restic check --no-lock

will return

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

If I will change policy to
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::work.backup.vshalts.com",
                "arn:aws:s3:::work.backup.vshalts.com/*"
            ]
        }
    ]
}

then it will work fine.
Or another way to reproduce it is to make mistake in bucket name in policy:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::work2.backup.vshalts.com",
                "arn:aws:s3:::work2.backup.vshalts.com/*"
            ]
        }
    ]
}

If need I can probably setup some little demo backup for you (with read-only policy as in first example).

Thanks @vshalts - i was able to do it with user policy.


Use lifetimed, type erased pointers in bevy_ecs

Objective
bevy_ecs has large amounts of unsafe code which is hard to get right and makes it difficult to audit for soundness.
Solution
Introduce lifetimed, type-erased pointers: Ptr<'a> PtrMut<'a> OwningPtr<'a>' and ThinSlicePtr<'a, T> which are newtypes around a raw pointer with a lifetime and conceptually representing strong invariants about the pointee and validity of the pointer.
The process of converting bevy_ecs to use these has already caught multiple cases of unsound behavior.
Changelog
TL;DR for release notes: bevy_ecs now uses lifetimed, type-erased pointers internally, significantly improving safety and legibility without sacrificing performance. This should have approximately no end user impact, unless you were meddling with the (unfortunately public) internals of bevy_ecs.

Fetch, FilterFetch and ReadOnlyFetch trait no longer have a 'state lifetime

this was unneeded

ReadOnly/Fetch associated types on WorldQuery are now on a new WorldQueryGats<'world> trait

was required to work around lack of Generic Associated Types (we wish to express type Fetch<'a>: Fetch<'a>)

derive(WorldQuery) no longer requires 'w lifetime on struct

this was unneeded, and improves the end user experience

EntityMut::get_unchecked_mut returns &'_ mut T not &'w mut T

allows easier use of unsafe API with less footguns, and can be worked around via lifetime transmutery as a user

Bundle::from_components now takes a ctx parameter to pass to the FnMut closure

required because closure return types can't borrow from captures

Fetch::init takes &'world World, Fetch::set_archetype takes &'world Archetype and &'world Tables, Fetch::set_table takes &'world Table

allows types implementing Fetch to store borrows into world

WorldQuery trait now has a shrink fn to shorten the lifetime in Fetch::<'a>::Item

this works around lack of subtyping of assoc types, rust doesnt allow you to turn <T as Fetch<'static>>::Item' into <T as Fetch<'a>>::Item'
QueryCombinationsIter requires this

Most types implementing Fetch now have a lifetime 'w

allows the fetches to store borrows of world data instead of using raw pointers

Migration guide

EntityMut::get_unchecked_mut returns a more restricted lifetime, there is no general way to migrate this as it depends on your code
Bundle::from_components implementations must pass the ctx arg to func
Bundle::from_components callers have to use a fn arg instead of closure captures for borrowing from world
Remove lifetime args on derive(WorldQuery) structs as it is nonsensical
<Q as WorldQuery>::ReadOnly/Fetch should be changed to either RO/QueryFetch<'world> or <Q as WorldQueryGats<'world>>::ReadOnly/Fetch
<F as Fetch<'w, 's>> should be changed to <F as Fetch<'w>>
Change the fn sigs of Fetch::init/set_archetype/set_table to match respective trait fn sigs
Implement the required fn shrink on any WorldQuery implementations
Move assoc types Fetch and ReadOnlyFetch on WorldQuery impls to WorldQueryGats impls
Pass an appropriate 'world lifetime to whatever fetch struct you are for some reason using

Type inference regression
in some cases rustc may give spurrious errors when attempting to infer the F parameter on a query/querystate this can be fixed by manually specifying the type, i.e. QueryState::new::<_, ()>(world). The error is rather confusing:
error[E0271]: type mismatch resolving `<() as Fetch<'_>>::Item == bool`
    --> crates/bevy_pbr/src/render/light.rs:1413:30
     |
1413 |             main_view_query: QueryState::new(world),
     |                              ^^^^^^^^^^^^^^^ expected `bool`, found `()`
     |
     = note: required because of the requirements on the impl of `for<'x> FilterFetch<'x>` for `<() as WorldQueryGats<'x>>::Fetch`
note: required by a bound in `bevy_ecs::query::QueryState::<Q, F>::new`
    --> crates/bevy_ecs/src/query/state.rs:49:32
     |
49   |     for<'x> QueryFetch<'x, F>: FilterFetch<'x>,
     |                                ^^^^^^^^^^^^^^^ required by this bound in `bevy_ecs::query::QueryState::<Q, F>::new`

Made with help from @BoxyUwU and @alice-i-cecile

Added High priority label due to unsoundness fixes.

Haven't fully read the code just yet, but since this touches basically every performance critical part of ECS, can you run the full ECS benchmark suite just to ensure we don't have any unintentional regressions here?

Ran benches locally and it was basically equivalent to main

The type inference regression seems pretty nasty. The QueryState case seems ok because world.query() type inference still works. But the update_changed regression is concerning. I want to better understand the scope and mechanism of this regression. Needing to re-specify generic query types (which could be large / complicated) is really bad UX and I'm hesitant to regress here. Its especially concerning because it seems like it will prevent people from building nice abstractions over query types.

In a flailing attempt to resolve this, I removed the blanket impl<'w, T> FilterFetch<'w> for T where T: Fetch<'w, Item = bool> in favor of manual impls for types like WithFetch. That completely broke filtered queries:

Note that switching to manual FilterFetch impls in the exact same way does work on main. Its starting to look like type inference is just barely working for some cases of filters right now in this PR (and only for things that fall into the blanket impl).

As another illustration of this problem, without any changes to this PR (the blanket impl is still intact), this type inference is broken in the same way that update_changed is:

Resolving it requires manually specifying the filter type (which was also the fix for update_changed):

Wrapping up a final review, but I'm inclined to merge this soon-ish now that @BoxyUwU has resolved the type inference issue (in a really nice way). Can y'all resolve conflicts?

bors r+

bors r+

bors r+


Introduce resource for default settings change permission

Introduce resource with installer MDX2JSON_SETTINGS
Add logic, for save settings API, once the user has access to this resource, then settings should go to default settings - preferably under "hardcoded" user "DeepSeeWeb".

Added MDX2JSONSettings role.
Done.


python311Packages.mdtraj: init at 1.9.9

Description of changes
An open library for the analysis of molecular dynamics trajectories
https://github.com/mdtraj/mdtraj

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 263986 at d3c2cb30 run on aarch64-darwin 1

2 packages failed to build:

python310Packages.mdtraj
python311Packages.mdtraj


Tokens to delete or modify

Hi,
I'm migrating to this package from Laravel-FCM and so far so good. The only thing I need to figure out is how to hadle invalid tokens.
Using Laravel-FCM's FCM facade it's possible to call $response->tokensToDelete() and $response->tokensToModify() if the notification fails. Is there any equivalent when using larafirebase?
Also, it may be worth noting that when providing an additonal data array you should only use strings: anything else will result in a bad response.
Thanks

Ignore that. The response codes essentially provide the answers.


Server crashes when client goes offline

After closing my MacBook where I have an open session to my Ubuntu workstation running ttyd, I see on the latter:
[1547581454:3139] ERR: lws_callback_on_writable: failed to find socket -1
[...]
[1547581454:3139] ERR: lws_callback_on_writable: failed to find socket -1
[1547581454:3139] ERR: lws_callback_on_writable: failed to find socket -1
[1547581454:3147] NOTICE: HTTP / - <IP_ADDRESS> (<IP_ADDRESS>)
ttyd: tpp.c:84: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= fifo_min_prio && new_prio <= fifo_max_prio)' failed.
Aborted (core dumped)

Started with ttyd -p 8090 --credential $username:$password tmux a -t home, so I expected a new session in tmux when I reopen the laptop

Closing, please try the latest version.


Incorrect Faithfulness Value Mapping

https://github.com/explodinggradients/ragas/blob/e1e05f8844635f46f60564ae6e3ae406e7e070fb/src/ragas/metrics/_faithfulness.py#L153
Shouldn't this mapping instead be:
 verdict_score_map = {"1": 1, "0": 0, "-1": np.nan}

Since the prompt and examples tell the model to return a "-1" verdict if the statement is invalid?

Oh, yes @pmbaumgartner I would have forgotten to change the mapping after changing the prompt for adaptation. Would you like to raise a PR on this?


Injection in blok config

hello my problem is that I have the url in a constant block which can not injected into the config block someone could give me an example of how to fix it.
knowing that in the config block I can not inject constant, I do not know on replace my constant in a provider and how

Can you provide a bit more detail and some of your code? :)

Thanks for your answer, i have a problem with dependency injection, but I solved it.


⚠ Bofrost.lu has degraded performance

In 14a8617, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2032 ms

Resolved: Bofrost.lu performance has improved in 6a25b83 after 26 minutes.


Fix: Event dataclass update

The last PR with the change to the Event dataclass introduced a bunch of initialization problems that are fixed in this PR.
Duplicates parts of https://github.com/jeffthibault/python-nostr/pull/50 but with less changes.
I suggest merging https://github.com/jeffthibault/python-nostr/pull/50 as well or instead of this PR.

Damn, again wrong PR with all my unrelated changes from my client. Excuse me, closing.


FPGA Echo & Laser Transmission code

To load onto FPGA, output_files -> LaserTransmission -> bat file -> type 3

To load Laser Transmission program onto FPGA, output_files -> LaserTransmission -> EchoLaserTransmission.bat (maybe Windows only)
Once command prompt opens, type '3' -> Enter
Board switch configurations:
KEY[0]: Reset
SW[0]: enable whole system
SW[1]: If on, echo mode on (if off, laser transmission mode)
SW[6]: Should turn ON (laser uses 2 modes of operation)
SW[7]: Force laser on (if SW[0] is on)
SW[8]: Constant transmission of 0xa
SW[9]: Turn ambient light off
tl;dr Just turn SW[0] and SW[6] on, everything else off. Reset at beginning.


Cursor Pagination is always returning the same cursor when limit is <100

Description
When calling the nkRuntime storageList using a cursor to return paginated data, if a limit is specified below the default value (100), then the cursor is always the same and I can't proceed beyond the 2nd page of data.
If the limit is null or >=100, then data is returned as expected.
Steps to Reproduce
Method Call:
nk.storageList("00000000-0000-0000-0000-000000000000", collection, limit, cursor);

Pass limit value of 20 with null cursor.
First page of 20 records are returned along with the first cursor.
Pass limit of 20 with the first cursor.
Second page of 20 records are returned, new cursor is same as first.

Expected Result
The second an subsequent cursors should be different and allow data to be returned in sets of 20 until last set of <=20, which should include a null cursor.
Actual Result
Cursor is always the same after first page, so cannot proceed beyond the second page.
If the limit is null or >=100, then data is returned as expected.
Context

[ ] Other

Your Environment

Nakama: 3.10.0
Database: postgres:12.2-alpine
Environment name and version: Elasticbeanstalk

Also experiencing this

I am also finding I have this same issue in my project! More details to follow.

HI @sesposito,
Here's a link to the repo that is producing the issue.
https://github.com/supernimbus-dev/temp_ww_nakama/tree/main/src
IntitModule is in main.ts, it just registers the rpc 'server_endpoint_test'.
The first switch case, 'GetPlayers_Cursor', in endpoints.ts is where the call is made. The 'page' param is the  cursor string.
That method is in the same file, line 471, it just calls a get storage object method 'getDataList_Cursor'  in testClass.ts.
Here's a link to the above running on AWS that I use to test in Postman.
http://tempwwnakama-env.eba-fqussj7h.eu-west-1.elasticbeanstalk.com:7350/v2/rpc/server_endpoint_test?http_key=defaulthttpkey&unwrap=true&action=GetPlayers_Cursor&page=&pageSize=10&searchOption=&searchValue=
You can paste the returned cursor into the page parameter to test the issue.
Changing the pageSize parameter to 100 works as expected, otherwise same cursor is always returned.
On the insertion of storage objects, there is a 'CreatePlayers' case in 'server_endpoint_test' that added the data I'm testing.
Again, it calls a write storage object method in 'testClass.ts'.
Is this sufficent to let you try to reproduce the issue?
Also, this issue came up when trying to implement cursor pagination with Retool as a front-end UI.
They have cursor pagination settings on their table that I couldn't get working so got their support team to fix their side.
I gave them an app with a table that has 100+ rows to avoid the Nakama issue.
When they got back with a fix, I tried reducing the rows to 20.
The pagination works correctly like this in Retool, even though the cursor is still identical after the second call.
The Retool guys are unaware of Nakama, so I can't understand how it works in Retool and not in Postman.

I do not have access to the linked repository, can you replicate the registered RPC function in a public gist please?

Here's the gist of it
https://gist.github.com/JMCNAM-SN/e2229c1f750c95d2d1b43b392fca3097

I tried to give a look at the code, but it's unfeasible for me to go through it all and try to understand if the issue is within the boundaries of the Nakama API or the custom code. I have failed to reproduce a case where the cursor wouldn't work as expected trying several combinations of inputs, so please provide a very simple example to reproduce it using simple nk runtime calls, otherwise I'm afraid the issue might lie elsewhere.

@JMCNAM-SN We were unable to reproduce the issue with Nakama 3.12.0, and the code provided is too complex to pick apart. If you can reproduce and have a smaller code sample (ideally a small sequence of curl commands that create/list storage objects) please reopen this and we'll take another look. 👍


Lru time cache should have a more standard API

It's odd that LruTimeCache has a method to clone all it's elements out into a Vec. Standard library collections don't have methods like this. To clone a HashMap into a Vec you'd write:
my_hash_map.iter().map(|(k, v)| (k.clone(), v.clone())).collect()

Although if someone did this in practice (rather than just using the iterator) they'd probably be doing something wrong.
LruTimeCache's API should be changed to mirror that of HashMap as closely as is appropriate.

!00% agree here.

I just noticed that the TODO list in the README already says this.

There's now a method peek_iter which returns an iterator (that doesn't update timestamps), so I think this can be closed.

Thank you, @andrebeat! With #77 merged, I'm closing this now.


[x264] build failure: file RENAME failed to rename - because: File exists

Host Environment

OS: [Windows 10]
Compiler: Visual Studio 2017
Fresh clone of VCPKG (no existing files)

To Reproduce
Steps to reproduce the behavior:
vcpkg install x264
Failure logs
-- Installing x64-windows-dbg
-- Installing x64-windows-rel
CMake Error at ports/x264/portfile.cmake:37 (file):
  file RENAME failed to rename

    D:/temp/vcpkg/packages/x264_x64-windows/bin/x264.exe

  to

    D:/temp/vcpkg/packages/x264_x64-windows/tools/x264/x264.exe

  because: File exists

Call Stack (most recent call first):
  scripts/ports.cmake:94 (include)

Additional context
Problem occurs with static and non-static triplets, x64 and x86.
Everything seems to build correctly, just the last stage of install fails?

Thanks for posting this issue. Closed as duplicate of #8473. Please pay attention to the progress of issue #8473.


Add information about data compression

Data compression configuration is currently missing form the docs.
Add a page under Administration/Object Management about the feature.
Data compression is a global configuration option, but per-bucket.
It can be modified or disabled at any time.
Refer to the following resources:

https://github.com/minio/minio/tree/master/docs/compression
https://blog.min.io/transparent-data-compression/

https://github.com/minio/docs/commit/bb1600952e953a1632538fcc0d8600ce1563bab9 wraps this out right @feorlen ?

bb16009 wraps this out right @feorlen ?

Ooo yup, forgot to tag the PR correctly. I'll close.


Add sensor for source container

Currently, the pump stops pumping only when there is water (or whatever liquid you are using) on the sensor. Once the source container is emptied, the pump would pump indefinitely and is only stopped by a failsafe mechanism (a timer). Would be nice if the pump would be able to detect if the contained has been refilled and then starts pumping again.

Bluetooth - Feuchtigkeitssensor Xiami Miflora  oder andere Sensoren verwenden ?


Win Support

Should be ready so far, not seeing anything that would prevent a merge.
Post-Merge

Push regenerated .h, .c and .go files (not included here to keep the diff clean)

Just curious & no rush if not: Have you already review this (andthe CC) PR or is that pending?

Added the regenerated .h and .c files for windows, let me know if I'm still good to merge

172749 lines added 😮

I just take a look if it seems structurally sane, which seems to be the case, so assuming you've tested it works, it's LGTM.
That's why I'm just adding it now, so you first could check the "real" changes :)
It's basically what I was using the whole time, just not commited until really necessary.


"Save diagram context" for WSL path

First of all, thanks for a great tool!
Opening reqm2 files which are on WSL subpaths works flawlessly. However when I want to store the "diagram context" to quickly reopen it next time the path which was \\wsl$\Ubuntu\something\some.oreqm
is stored as "main_oreqm_rel": ".///wsl$/Ubuntu/something/some.oreqm", in resulting vr2x file.
I've tried to change it manually but it still fails to open.

It looks like when it tries to open it treats the path as relative to current directory (I've stored the vr2x file at desktop)

The context files do have relative references to one or two oreqm files. That's why it is named main_oreqm_rel.
From the CHANGELOG
2.1.0

Diagram context save and load

store a .vr2x file (json format) with the paths to .oreqm file(s), selection criteria and settings affecting rendering.
Use the "Save diagram context..." and "Load diagram context..." in File menu.
The .vr2x file uses relative paths to the .oreqm files.
This allows copying of .oreqm files as well as .vr2x file to another user, who can then open exactly the same view.
Caveat: Settings in program are updated by the .vr2x file, but are not saved. To save enter the Settings dialog and exit with [OK], or restart program to discard settings read from context.
Added --context command line parameter to load .vr2x file from cmd line and from double-clicking a .vr2x file.

You might be able to store your vr2x file in \\wsl$\Ubuntu\home\<username>, i.e. somewhere in WSL filesystem,
and the oreqm in \\wsl$\Ubuntu\home\<username>\some\long\path\tracing.oreqm
Then on the desktop have a shortcut to the folder \\wsl$\Ubuntu\home\<username> (or where ever you collect these context files)
Double-clicking on the v2rx in the folder will open Visual ReqM2 with that context.
I hope this helps you.

@mox17 I can confirm it works this way, thanks!
It would be nice if we could pop-up that info before save-popup. Then it would be loud and clear how it's intended to work.


Builder time widget is not precise

Context

Created table with GPS locations, one point every 10 seconds or so, with gps_time (date) field
I added and continue to add data to the table in real time using SQL API INSERT. I have data for about 6 days (150000 points now)
Created map and widget with timeline of GPS locations

Steps to Reproduce
Either try with steps above, or I can share the map ID to see how it works
Current Result
Two issues, maybe same or even different:

Text labels in timeline graphics and text are shifted. See image 1 - in graphic I try to select Sat 14 12PM to Wed 18 00:00. I try to put as close to the horizontal lines which seem to be in midnight and midday. But the Selected: shows from 5:31 to 5:26 - more than 5 hours off from the selection. In different days I see quite different shift, sometimes it is just 1-2 hours off, sometimes more. It may depend on length of the time bar.
Selection itself is wrong, it does not match neither graphical nor textual "Selected from..." text. See second example - I have selected as short time frame as I can - text shows "Selected from 22:27 to 00:00". This should not select and show any points on map at all, as time is now 16:43 and I have no data for the future in the table. Also labels on map and hover on map shows that the points are from past and outside of selected range, with earliest point from 14:40. See second screenshot. It does filter out some of the points, as if I turn off filter then I see more points; the filter error seems to be about 7 hours here.

Expected result

Timeline graph text and graphical part match each other more precisely
Time graph selection works precisely and allows to select specific time ranges

Browser and version

Latest Chrome on mac

Additional info
*Please PM me to get the data or access; the dataset includes private/personal data

Probably overlaps partly https://github.com/CartoDB/cartodb/issues/10946

do you have the .carto? with that information is not possible to reproduce the issue

Cannot repro now also. It may be related to fact that my data is dynamic - new records are added all the time, so the timeslider was "calibrated" using older timeranges, and later not refreshed. It is also not refreshed when I force data range change, e.g. set some smaller timerange in data SQL.

Closing this then, since this could be related with a prev fix done


Add 'selectedIndex' to NodeSnapshot

Are you requesting a feature or reporting a bug?
feature
What is the current behavior?
there is no selectedIndex in NodeSnapchot, but there is checked property.
What is the expected behavior?
NodeSnapchot should contains selectedIndex for select elements

I'm working on this


[BEAM-143] add test for UnboundedSourceWrapper

So far the UnboundedSourceWrapper has not been tested systematically which led to a bunch of regression issues. This PR fixes the UnboundedSourceWrapper and adds a test case. The test case ensures that the wrapper works as expected. In particular, a full integration test is run to check whether serialization and instantiation of the wrapper works in a cluster setup.

CC @aljoscha @kl0u

Peppered a few comments, but looks great to me.
Glad to have the chance to get my eyes on some Flink code!

er, +1

Thanks for your comments @dhalperi @tgroh. I've made some improvements.


WIP: Add support for latest openai structured outputs types

This PR adds support for latest OpenAI's structured outputs release.

updates openai-fetch to latest major https://github.com/dexaai/openai-fetch/pull/46
adds a Msg.Refusal message type
we now have to differentiate slightly between input ChatMessage types where content and refusal are both optional and response ChatMessage types where content and refusal are apparently both required
adds support to AIFunctionSpec, createAIFunction, and createAIExtractFunction for OpenAI's new strict JSON schema support

@transitive-bullshit what do you think of my last comment?

@transitive-bullshit was thinking more about this... what do you think of creating a custom error for refusals and throwing them as an error? that way we could type the api return type as Msg | RefusalMsg and then parse the response and throw an error for RefusalMsg, which would narrow the type back to Msg for downstream code?

@transitive-bullshit #51 handles the update and refusal responses by throwing. if we can make that work, adding a dedicated function for structured output calls should be simple.


[gql_build] regression for interfaces

https://github.com/gql-dart/gql/commit/2ec34002ed4771c628462f432fb1bb03c66eba17 introduced a regression for queries of GraphQL interfaces.
@klavs, I haven't reviewed the changes in much detail. Any ideas where this may have been introduced?

Here's the error that's thrown:
NoSuchMethodError: The method '+' was called on null.
Receiver: null
Tried calling: +("#data")
[SEVERE] gql_build:data_builder on lib/services/graphql/audio_history_query.graphql (cached):

We should probably add some unit tests to avoid these types of regressions in the future. When I first started researching dart builders, I looked a bit at build_test, but I haven't dug deep into it yet.
If you have any sample tests for the builders, it'd be helpful to review them.

Please add --verbose flag to see the line failing.

Here's the verbose output:
[SEVERE] gql_build:data_builder on lib/services/graphql/audio_history_query.graphql (cached):

NoSuchMethodError: The method '+' was called on null.
Receiver: null
Tried calling: +("#data")
dart:core                                                               Object.noSuchMethod
package:gql_code_builder/src/operation/data.dart 143:51                 _buildSelectionSetDataClasses.<fn>.<fn>
dart:core                                                               new List.from
package:built_collection/src/list/list_builder.dart 52:19               ListBuilder.replace
package:built_collection/src/list/list_builder.dart 28:45               new ListBuilder
package:gql_code_builder/src/operation/data.dart 139:24                 _buildSelectionSetDataClasses.<fn>
package:code_builder/src/specs/class.g.dart 304:33                      _$ClassBuilder.update
package:code_builder/src/specs/class.g.dart 44:28                       new _$Class
package:gql_code_builder/src/operation/data.dart 136:5                  _buildSelectionSetDataClasses
package:gql_code_builder/src/operation/data.dart 186:31                 _buildSelectionSetDataClasses.<fn>
dart:_internal                                                          ExpandIterator.moveNext
package:gql_code_builder/src/operation/data.dart 185:51                 _buildSelectionSetDataClasses
package:gql_code_builder/src/operation/data.dart 165:22                 _buildSelectionSetDataClasses.<fn>
dart:_internal                                                          ExpandIterator.moveNext
package:gql_code_builder/src/operation/data.dart 164:10                 _buildSelectionSetDataClasses
package:gql_code_builder/src/operation/data.dart 165:22                 _buildSelectionSetDataClasses.<fn>
dart:_internal                                                          ExpandIterator.moveNext
package:gql_code_builder/src/operation/data.dart 164:10                 _buildSelectionSetDataClasses
package:gql_code_builder/src/operation/data.dart 51:10                  _buildOperationDataClasses
package:gql_code_builder/src/operation/data.dart 26:21                  buildDataClasses.<fn>
dart:core                                                               Iterable.toList
package:gql_code_builder/src/operation/data.dart 32:12                  buildDataClasses
package:gql_code_builder/data.dart 12:11                                buildDataLibrary.<fn>
package:code_builder/src/specs/library.g.dart 108:33                    _$LibraryBuilder.update
package:code_builder/src/specs/library.g.dart 26:30                     new _$Library
package:gql_code_builder/data.dart 9:5                                  buildDataLibrary
package:gql_build/src/data_builder.dart 27:21                           DataBuilder.build
package:build                                                           runBuilder
package:build_runner_core/src/generate/build_impl.dart 486:19           _SingleBuild._runForInput.<fn>.<fn>.<fn>
package:build_runner_core/src/generate/performance_tracker.dart 302:15  _NoOpBuilderActionTracker.trackStage
package:build_runner_core/src/generate/build_impl.dart 484:23           _SingleBuild._runForInput.<fn>.<fn>
package:timing/src/timing.dart 222:44                                   NoOpTimeTracker.track
package:build_runner_core/src/generate/build_impl.dart 441:22           _SingleBuild._runForInput.<fn>
package:pool/pool.dart 127:28                                           Pool.withResource
package:build_runner_core/src/generate/build_impl.dart 437:17           _SingleBuild._runForInput
package:build_runner_core/src/generate/build_impl.dart 375:38           _SingleBuild._runBuilder.<fn>
dart:async                                                              Future.wait
package:build_runner_core/src/generate/build_impl.dart 374:36           _SingleBuild._runBuilder
dart:async                                                              _AsyncAwaitCompleter.start
package:build_runner_core/src/generate/build_impl.dart 372:40           _SingleBuild._runBuilder
package:build_runner_core/src/generate/build_impl.dart 320:20           _SingleBuild._runPhases.<fn>.<fn>
dart:async                                                              _completeOnAsyncReturn
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._matchingPrimaryInputs

Fixing...


add support for compute graph

Starting to integrate the new Compute Graph api.

Closing this since server-next is where all the development is happening


Merge #16241 to branch-2.8

What changes are proposed in this pull request?
Cherry-pick #16241 to branch-2.8

alluxio-bot, merge this please


Missing ApiVersion parameter for SubscriptionClient

https://github.com/Azure/autorest.testserver/blob/a5e6e2ef725df87c8981116836531a2f10be9128/swagger/subscriptionId-apiVersion.json#L34
ApiVersion is missing in the parameter list

There is 3 parameters: subscription id, RG name and $host, but no api-version

It should be fixed now --
https://github.com/Azure/autorest.modelerfour/blob/master/modelerfour/test/scenarios/subscriptionId-apiVersion/modeler.yaml#L195

@fearthecowboy I don't understand, I still have only 3 parameters :(

Garrett, file was generated mid-december, maybe a regression?

Hmm. Oh, requires a newer version of autorest core too. I published .6184 earlier today. That should have the part that fixes that in it.
The was fixed back in December, and IIRC it was in the core.

@fearthecowboy it's wgat I used :(
version: 3.0.6184
use-extension:
  "@autorest/modelerfour": "4.2.106"

sigh
Apparently the last half of that was in the PR I had in this morning, that is now done publishing.
2.0.108
this time for sure
https://github.com/Azure/autorest.modelerfour/blob/f80448d1bbabcf764bdee2957c6d5ef012f9aa9e/modelerfour/test/scenarios/subscriptionId-apiVersion/modeler.yaml#L184-L199

@fearthecowboy So the fun part is I still don't get it, however I get diff in BodyComplex / Validation with a new parameter api_version (that I didn't expect). I need to dig a little more, but still missing the one I need in SubscriptionId client :(
version: 3.0.6184
use-extension:
  "@autorest/modelerfour": "4.2.108"

Fixed with 4.9


Dear Fyde the 114 is getting old and loosing features..

Recently We have lost access to LaCros.. I can't enable it anymore.. and I have been struggling with the steam installation who keeps crashing constantly.. and I would say that the current version provided is getting a bit too old..
Please.. don't let us be gone here.. and also bring us FydeOS to Edge 2. Khadas team even adds it to their ooWoW system.

Since fyde is commited to bring R120 Im all in to wait.


Couple of queries: 1) Fine tuned GPT2 2) BPE Encoding

Hi
I had a couple of queries.

I was wondering if you could direct me to the part of the code and recommend changes I could make so that i can also calculate this score on my own fine-tuned gpt2 model (which has its own path where it is saved)

I was also thinking that gpt2 uses BPE encoding. So when you return probability score it always returns the probability for the complete word (not the sub units). As far as i understand BPE it divides the token into sub pieces and gives the corresponding ids to those sub pieces. So do you know how is that working internally, that is able to assign probability to complete word ?

Thanks

If you pass the path to your model as model_name to the GPT2LMScorer class it should work.

Right now we already return the probability of each sub unit.

Thank you


[...Array(5).keys()] not working in Android

Is this a bug report?
Yes

Have you read the Contributing Guidelines?
Yes
Environment
OS: macOS Sierra 10.12.6
Node: 9.8.0
Yarn: 1.5.1
npm: 5.6.0
Watchman: 4.7.0
Xcode: Xcode 9.2 Build version 9C40b
Android Studio: 3.0 AI-171.4443003
Packages: (wanted => installed)
react: ^16.3.0-alpha.1 => 16.3.0-alpha.2
react-native: 0.54.2 => 0.54.2
Steps to Reproduce

console.log([...Array(2).keys()]) does not produce [0, 1].

Run https://snack.expo.io/SJT6PCPPZ on Android (works)
Run https://snack.expo.io/H1elODwPb on Android (nothing rendered on screen)
Additional note: both works on iOS.

Expected Behavior
https://snack.expo.io/H1elODwPb should render data on screen
Actual Behavior
https://snack.expo.io/H1elODwPb renders nothing on screen
Reproducible Demo
see above

Seems like a JavaScriptCore issue (this is the JavaScript engine used by React Native).
As a point of comparison, using V8 we get identical results:
[...Array(5).keys()].map(String)
(5) ["0", "1", "2", "3", "4"]
['0', '1', '2', '3', '4'].map(String)
(5) ["0", "1", "2", "3", "4"]

IIRC, we use a fork of the JSC on Android which diverged from what iOS provides.

I also found this problem.
When I turn off 'Remote JS Debugging' it shows as [].
But when I turn on 'Remote JS Debugging' it shows [0, 1, 2, 3, 4].

You're using a different JavaScript engine when remote JS debugging is turned on - possibly Chrome's (V8).

still not fixed.

Workaround:
Array(5).fill().map((_, index) => index)

Workaround by @sonaye works properly, but issue is still not fixed.

+1

The JSC in Android was updated in December, it's in master. The new JSC will be part of the 0.59 release. Can you verify on master and let us know if it's still an issue?

alert([...Array(2).keys()]) works in 0.59.0


Docs on how to use sass variables to change font etc

I am new to Hugo and love the theme. I couldn't figure out how to change font with sass variables. It should be fairly easy but I don't see any docs or configs on it.

Hey @nehiljain, SASS variables for this theme can't be changed as it is currently written. The theme might need to be forked if you wanted to change the source code or you could overwrite any of the theme's styling by using the theme's custom CSS capabilities as instructed here: https://github.com/tomanistor/osprey#custom-css

Thanks, custom css did the job for me.


Add lighthouse to implementations

This merge request adds https://lighthouse-php.com as an implementation.

This PR is good, but let me first take care of https://github.com/graphql/graphql-http/pull/60#discussion_r1143230860 because Lighthouse is compliant and it deserves to be in the compliant servers table.

I have not had too much trouble with adding this implementation, but it might be valuable to have a guide for it. Would you welcome if I added one in a separate pull request? I would use CONTRIBUTING.md for it.

Would you welcome if I added one in a separate pull request? I would use CONTRIBUTING.md for it.

Of course, more than welcome! Thank you in advance!

Thanks @enisdenjo, I am happy to see that Lighthouse now passes the audit.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Replace ethers-solc with foundry-compilers

ethers-solc (deprecated) is replaced with foundry-compilers.

Will approve, but if possible lets try to investigate the CI runner issue before merging?

Yes. Something weird is happening. I'll remove it from auto merge for now.

Will approve, but if possible lets try to investigate the CI runner issue before merging?

@JamesHinshelwood
Sorted out the issues. Tests pass.


[Request] Have botnak spit out a response to what a link is

The version that is on here, when a link is linked in chat, botnak would respond with something along the lines of "unknown link, click at your own discression" or whatever it was. The version you'd linked no longer has it responding to the links.
Would be good to have it as an option to have botnak able to respond with whatever the page title is for whatever was linked.

I've added YouTube video parsing for title and author and duration, Twitch VOD parsing for title and author, and added back the URL-unshortener. Any further things to spit out will require their own issue.


[Feature Request] Group functionality

What would you like to be added:

Provide support for the Group entity

Why is this needed:
For some Machine Learning use-cases, a Group provides a more flexible way to aggregate equipment. It would be great if that concept could be utilized with Sailor. A Group supports multiple business types such as Model or Equipment.
Group Documentation:

https://help.sap.com/viewer/4d5ca1b8c320409d961551bc60695e25/2105/en-US/d4f0e0675beb4607bb549888190e8467.html
https://api.sap.com/api/GroupsAPI/resource

Sample:
import pandas as pd
from sailor.assetcentral import find_group, find_equipment, find_notifications

# find group and related equipment
group_set = find_group(name='my_group_name')
equipment_set = group_set.find_equipment()

# find notifications and plot them
notification_set = equipment_set.find_notifications(extended_filters=['malfunction_start_date > "2020-08-01"'])
notification_set.plot_overview()

Hi @martinxxd,
thanks for the request. I took a look at the APIs and don't see any fundamental problems, but there are some details here:

the group API doesn't support server-side filters unfortunately (https://api.sap.com/api/GroupsAPI/resource) so for your find_group line above we'd need to fetch all groups and filter client side.
Groups seem to be pretty complex objects (different group types, allowed business objects depend on group type, and one group may contain business objects of multiple types).  Any special requirements around this? Easiest would probably be to give you access to all business objects of one type in one call (like your group_set.find_equipment above returning all equipments but ignoring e.g. locations, and group_set.find_locations doing the same for locations in the group).
since multiple groups make up one group_set: would you expect group_set.find_equipment to return those equipment that are in any of the groups, or those equipment that are in all of the groups?

Thanks,
Atreju

Hey @martinxxd
take a look at the (very much unfinished) branch at https://github.com/sap/project-sailor/tree/feature/groups-support/sailor
I think it should allow the example you give above -- let me know if this matches what you need.
Atreju

Hi @atrejut,
Awesome, thanks for the quick turnaround! I didn't test your branch yet, but looks like it already covers our use-case.

the group API doesn't support server-side filters unfortunately (api.sap.com/api/GroupsAPI/resource) so for your find_group line above we'd need to fetch all groups and filter client side.

Oh that's unfortunate. Maybe we can add a method find_group to directly resolve a group given it's id, using /services/api/v1/groups/{id}.

Groups seem to be pretty complex objects (different group types, allowed business objects depend on group type, and one group may contain business objects of multiple types).  Any special requirements around this? Easiest would probably be to give you access to all business objects of one type in one call (like your group_set.find_equipment above returning all equipments but ignoring e.g. locations, and group_set.find_locations doing the same for locations in the group).

We're currently only utilizing the equipment type. But I think you're right, easiest would probably be to give access to all business objects of one type in one call.

since multiple groups make up one group_set: would you expect group_set.find_equipment to return those equipment that are in any of the groups, or those equipment that are in all of the groups?

I would expect to return equipment that are in any of the groups. Looks like that's also the way you've implemented.


Add a GUI for mnemonic use

A new 'Welcome' wizard should guide the user on how to import an old wallet or create a new one with the use of the new mnemonic functionality of v4.6.0

Hi I would like to do this bounty

assigned to @mrmetech

NdTrSEe6bMMvVwNUimxs2BiWkX5Xn9MW7o

Already on 5.0, and bounty paid, closing issue.


Possibility to read out Logfile?

Hi Folks,
is it possible to read out the log file and write it to a database?
Thank you very much!
BR

Hi, so you want to read the logfile of your router and store it "somewhere" in home assistant? (Eg the database that is defined via the recorder:)
This integration is using the library fritzconnection if the library supports accessing logfiles, it might be possible.

Hi,
yes, I want to check the daily disconnect, etc.
Can you implement this?
Thank you very much!
Bar

This custom integration is now deprecated because is fully merged into HomeAssistant core.
Daily disconnects can be seen soon using the WAN uptime sensor: Fix wan/device uptime and add state_class to counters for Fritz
Simone


ci: awesome linter & bot

Thanks for the list!
This PR adds two GitHub Actions workflows: bot and linter as described in the Awesome list guidelines.
Note that for an Awesome list, the guidelines must be followed: https://github.com/sindresorhus/awesome/blob/main/create-list.md
Also you should mentionned you are working on a list: https://github.com/sindresorhus/awesome/issues/2242 (and ultimately make a PR to the Awesome List repository)

@mcanouil Thanks so much! This is exactly what we need. I've taken a note and let me follow up with the hint about submission.


[BUG] Invalid Source Map when using fvm

Describe the bug
When building my Flutter app using fvm using the source-map option, the generated main.dart.js.map file is incorrect. In the sources array it generates filenames like:
"../../../../../../fvm/versions/3.7.1/bin/cache/flutter_web_sdk/lib/_engine/engine/browser_detection.dart"
which of course can't be mapped to my code in the 3rd party app (sentry, for example), when the js file is minified.
To Reproduce
Just run:
fvm flutter build --release -t lib/main.js --source-maps

@pmartelletti can you provide a reproducible example of the code itself, so I can clone it and run?

Closing as 3.0 has been released. Check again and reopen the issue if needed.


Popup Explorer transaction link might become invalid

Describe the bug
When we do some actions pop up panel with  Explorer transaction link occurs. It contains URL to some Explorer and transaction ID. It might become invalid in some cases.
To Reproduce
Steps to reproduce the behavior:

Open Routers page, find your router and click Manage router
Add some funds on a network A
You should get popup panel in top with link to blockchain Explorer
Change network to B - the link above is changed and becomes invalid cause Explorer address is changed inside of link URL

Thanks for filing @antonr-p2p
Note to self

@antonr-p2p can you explain step 4 more actually? I dont fully understand yet
Change network to B - the link above is changed and becomes invalid cause Explorer address is changed inside of link URL

@alexwhte look at the screenshot above - in the window in front of you here is a line "Add Remove       on Arbitrum-One". If you change Arbitrum-One to any other network - "Arbiscan" in the top panel link would change to e.g. "Etherscan" (if you change to Ethereum). BUT, it should not happen for already generated link - cause if you change Explorer but leave the same ID of transaction - you would have broken link (e.g. you try to find Arbitrum transaction on Ethereum Explorer)

Still seeing the same behavior that Anton described above.
What I did:

Add router liquidity on Polygon, this banner shows up:

Switched networks here to any other network:

Banner now gets updated with a link to the same transaction hash but on the new network's scanner site, which is invalid:


get a std::function raise error on compiling

Doing quick n dirty tutorial `:
// get a std::function
std::function<int()> a_std_function = lua["a_function"];
int value_is_still_100 = a_std_function();
Raise
/Users/Ryan/cpp/Demo1/main.cpp:57:22: error: conversion from 'proxy<global_table &, char const (&)[11]>' (aka 'proxy<sol::basic_table_core<true, sol::basic_reference<false> > &, char const (&)[11]>') to 'std::function<int ()>' is ambiguous
std::function<int()> a_std_function = lua["a_function"];
                     ^                ~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1618:5: note: candidate constructor [with _Fp = sol::proxy<sol::basic_table_core<true, sol::basic_reference<false> > &, char const (&)[11]>, $1 = void]
    function(_Fp);
    ^
/Users/Ryan/cpp/Demo1/dep/include/sol/sol.hpp:10474:3: note: candidate function [with T = std::__1::function<int ()>, $1 = sol::meta::enable_t::_]
                operator T() const {
                ^
1 error generated.
make[2]: *** [CMakeFiles/Demo.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Demo.dir/all] Error 2
make: *** [all] Error 2

Clang
$ clang++ --version
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

luajit
$ brew list luajit
/usr/local/Cellar/luajit/2.0.5/bin/luajit
/usr/local/Cellar/luajit/2.0.5/bin/luajit-2.0.5
/usr/local/Cellar/luajit/2.0.5/include/luajit-2.0/ (6 files)
/usr/local/Cellar/luajit/2.0.5/lib/libluajit-<IP_ADDRESS>.5.dylib
/usr/local/Cellar/luajit/2.0.5/lib/pkgconfig/luajit.pc
/usr/local/Cellar/luajit/2.0.5/lib/ (5 other files)
/usr/local/Cellar/luajit/2.0.5/share/luajit-2.0.5/ (11 files)
/usr/local/Cellar/luajit/2.0.5/share/man/man1/luajit.1

This seems to happen only on Clang, under Apple...? It doesn't happen in g++ or VC++, and I don't own an Apple machine, so it'll be a while as I debug this.

The root of the issue seems to be that Clang's standard library changed how it constructs its type from a functor. The conversion operator on the lua["a_function"] and the constructor are fighting each other for control to convert to a std::function. While I do know what the problem is on Clang, I do not have an immediate solution yet...
For now, please consider using a sol::function instead, rather than using std::function<...>.

Understood, thanks for helping

Turns out there's no way for me to fix this, unfortunately. Users will just have to do sol::function some_sole_function = lua["f"]; and then std::function<...> fx = some_sol_function;

I found a solution:
std::function<int()> a_function = static_cast<std::function<int()>>(lua["a_function"]);

I think it's better than:
sol::function a_function = lua["a_function"];
std::function<int()> func = a_function;


Support nested body params for CompositeError

Problem statement
If you create a spec that has a complex nested body parameter.  The validation logic will return errors.CompositeError instead of errors.Validation.  As a result, the nested error messages don't get adjusted with the nested field name making it impossible to differentiate from errors that are returned from the root object and those returned by the nested object.
Here's an example of the generated validation logic.
func (m *CreateRequest) validatePlayer(formats strfmt.Registry) error {
	if m.Player != nil {
		if err := m.Player.Validate(formats); err != nil {
			if ve, ok := err.(*errors.Validation); ok {
				return ve.ValidateName("player")
			}
			return err
		}
	}

	return nil
}

func (m *Player) Validate(formats strfmt.Registry) error {
	var res []error

	if err := m.validateLastUpdated(formats); err != nil {
		res = append(res, err)
	}

	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}

If the parent object has a property with the same name as the child (LastUpdated in the example below), it will return an error saying lastUpdated in body must be of type date-time or similar for both an error on CreateRequest.LastUpdated and CreateRequest.Player.LastUpdated.
The generated validation logic should be updated to support CompositeErrors.  There are a few ways to accomplish this:

Add some inline logic for calling ValidateName on each errors.Validation in a CompositeError
Update errors.CompositeError to have an implementation of ValidateName and call it.
Create a ValidationNamer interface that both CompositeError and Validation implement and then call that here (simplifies the logic but still needs #2 above implemented).

Swagger specification
{
  "swagger": "2.0",
  "info": {
    "title": "Sample",
    "version": "v1"
  },
  "paths": {},
  "definitions": {
    "CreateRequest": {
      "properties": {
        "lastUpdated": {
          "format": "date-time",
          "type": "string"
        }
        "player": {
          "$ref": "#/definitions/Player"
        }
      },
      "type": "object"
    },
    "Player": {
      "properties": {
        "lastUpdated": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "x-components": {}
}

Steps to reproduce

Create a spec with a nested param that returns a CompositeError from its Validate method.
Generate client code and verify the validation logic for nested properties.

This should be labeled as an enhancement.

Hi, now I generate go code from swagger file 2.0 and I have go-swagger 0.28.0.
In result I got code like
		if err := m.struct.ContextValidate(ctx, formats); err != nil { 			if ve, ok := err.(*errors.Validation); ok { 				return ve.ValidateName("name") 			} else if ce, ok := err.(*errors.CompositeError); ok { 				return ce.ValidateName("name") 			} 			return err 		}
but CompositeError does not have method ValidateName so it`s does not work, how I can fix it ?

ValidateName was added to CompositeError in go-openapi/errors v0.20.1.  I'm not sure if the version was just not updated properly in go-swagger, or if there's supposed to be something else done to force it to use the correct version, but if you manually specify the updated version (0.20.0 -> 0.20.1) then it should work.


Project: M365 - Today

Project name
M365 - Today
Description
It's a dashboard with some information about the day of the user: the last emails, the next appointments in the calendar, todo items, the weather (based on the city field in Azure Active Directory), and much more.
Repo URL
https://github.com/kasuken/m365-today
Team members
kasuken

I just realized that all your work is in the dev branch rather than main. That was a close call 😅 You're still in after all! Would you be willing to record a short video to demonstrate the app? It's not required for the hackathon but it would help us showcase your work internally at Microsoft and publicly in the community 😊

ehy @waldekmastykarz, I merge the branch to main. :)
I will record a video in the next days!
thanks

Awesome, I appreciate it!

I also shared my "journey" in this series.
https://dev.to/kasuken/series/22070

Saw it! Awesome series! Thank you so much for sharing your experience!