[Feature Request] Programmatic override of Card Count

Lately I've been going through different parts of the software (as a user) and I was wondering if it would ever be possible to have a setter for the count of cards to print, such as: $[count:15].  This would pay dividends during the SubLayouts as well, because we could also ignore things programmatically, but from time to time I've found myself wanting to be able to change the card count independently of the spreadsheet.  Is this even remotely possible?  Additionally/alternatively, we have a #nodraw for a given element, could we get #nocarddraw for the entire card to just get ignored if it ever finds that value?

Card Count Override
My gut reaction is that anything messing with card counts really should be handled outside of the application.
The count of cards within an individual row is handled as part of reference reading. The rows are actually duplicated in the DeckReader for use with things like the Sub Counter logic. It's a system I wouldn't want to mess with too much.
What are the use cases where you found that overriding the card count would be helpful?
Card Count On Layouts (without references)
Not sure if you were thinking of any specific use for overriding this one.
nocarddraw
That's an interesting one. On export this just wouldn't create a file? What would this do in-app on the Canvas, possibly render of message indicating that the card won't be exported?

So my use case for either of them is really just to reduce the count to 0, to disable the card from performing the rendering or the file output.
So in my SubLayout world, and a few other times (I can't remember off the top of my head) it has seemed useful to cancel the processing of a particular line in the excel spreadsheet, but to do it programmatically.  For a SubLayout, for example, if I invoke the SubLayout through a ParentLayout, and it's signaling that it wants to use an override card instead of a default card, then each one can check for the request of the custom card and "disable"/"not disable" based on that.  So If I have 10 base cards, and 50 custom ones, I don't have to make all 60 cards for my SubLayout (which I'm perfectly fine doing), I can have each one check against the contents of the PrimaryLayout fields and perform a #nocarddraw somewhere if it's not in the list of cards which are necessary.
I think having #nocarddraw would also allow a different way of generating cards and card counts based on parameters.  If we wanted to fill out our single-row spreadsheet with a card count of 1000, but we dropped in a #nocarddraw inside a computation involving random numbers or specific outputs, then it could automatically handle the cases for us where we don't want 1 of those particular cards output because the values don't fit the equation, but we would still get all of the cards which do.   (Give me every prime-number card, programmatically, or only Fibonacci card numbers/values) This would of course be possible through a spreadsheet, but now you're messing with rows in a spreadsheet instead of just a single count number (and/or other parameters) which would determine if a certain card gets spit out or not.
As an extension of the previous example, technically being able to increase/augment the Count based on a calculation would be more streamlined than having to pre-calculate it by hand.  So for example we want to just change 1 value from "Flip over @[Cards_To_Draw] cards" to "Flip over @[Cards_To_Draw] cards" but elsewhere it uses that value to change the actual number of cards that get printed, having programmatic control over card counts would be sweet.

I found another use for the #nocarddraw, debugging layouts:
While going through and testing my SubLayouts, and other Layouts with many many configurable options, it would be nice to have the ability to turn on a debug flag in a _defines.csv and then all of the debug outputs run alongside any other cards.  That way, I can have many test combinations for placement/organization within a layout, and not have to constantly toggle them on/off through the card count.

Breaking things down to discrete pieces of functionality I'm considering:
Translation for the Card Count Column
Card counts are currently read as static numbers. They can only be manually adjusted. At the time of reference read the defines are available. A simple translation in the card count column could be easily (well hopefully) supported.
This way a define set could look like this:

define
value

move_action_count
1

harvest_action_count
0

And a Reference could look like this:

count
action

@[move_action_count]
move 3 spaces

@[move_action_count]
move 5 spaces

@[harvest_action_count]
harvest 3 resources

#nocarddraw
I am definitely leaning away from this because by the time there is element translation taking place the reference and card counts have already been applied.
Alternative: Defines Passed Into SubLayouts
With the Translation for the Card Count Column item above combined with Passing defines through to the SubLayout mentioned in https://github.com/nhmkdev/cardmaker/issues/141 The count of a given row could technically be controlled by the parent layout.
Acknowledgement
The proposals here will not be used by many users of the application. They can be extremely complex and require a lot of planning and understanding for a user. I always take some caution when implementing these special functions as the stack of things I have to support grows each time the application expands. With hundreds/thousands of existing project files out there the last thing I want to do is break everyone! 💥

So I don't particularly see a problem with when the #nocarddraw is actually eventually executed.  For example, let the full incept translator run on all columns, and if any of them ever turn up the #nocarddraw, then we can store it in a similar way to #nodraw for an individual element.  The only time that #nocarddraw would ever come up is during the rendering phase, where the card would be skipped in rendering/saving, but would otherwise NOT impact card count totals etc.  This means if we had #nocarddraw on every even card, we would have Example_1.png, Example_3.png, Example5.png... etc in the final output folder, and all variables inside each one would correctly call themselves card 1, 3, 5.... it's just that we wouldn't have to do the time consuming process of rendering/file saving for the interspersed files.
When some of my cards are currently taking 10-15 seconds (for the rendering/saving phases together), but the incept translation is milliseconds, then the goal is merely to fix the most processor-intensive parts. I don't think anyone would expect #nocarddraw to function differently, it would literally be a "skip me" type of command, where the card is ignored after all translations are performed, but also after all other card indices/positions/counts are finalized.

I can understand wanting to avoid programmatically changing the card count, but #nocarddraw would pay dividends in processing time, and it would just be 1 check of an if statement (then continue) at the beginning of the loop which does each card's final rendering output.

The only time that #nocarddraw would ever come up is during the rendering phase, where the card would be skipped in rendering/saving, but would otherwise NOT impact card count totals etc.

Ah, okay thanks for the clarification! :+1: As long as the counts and otherwise aren't impacted then I definitely support the idea and can add it to my todo list.
As rendering on screen itself probably wouldn't be impacted much is there another name that might better describe what will happen? #noexport ? 🤔

I give a thumbs up to #noexport.  :)

Initial submission at #noexport functionality: https://github.com/nhmkdev/cardmaker/commit/6be203a384728442f4efeb1be583b849b75ea881
There are likely some positioning bugs related to stitched image exports and pdf exports.

Testing the #noexport works great! (for my suggested purposes)
Additional request

can we ignore the flag for the purposes of canvas rendering?

Currently it seems to be running even in preview mode

Additional request
* can we ignore the flag for the purposes of canvas rendering?

Certainly could let it render the whole card on the Canvas. I was planning on adding an indicator that a card is being marked as #noexport when drawn to the Canvas. What do you think of some rendered text or otherwise?

#NOEXPORT added to the Canvas title (may revisit some of the other things there...)
https://github.com/nhmkdev/cardmaker/commit/2a74355d24d1bd52a1803d83a8cd97458f0bd516

This functionality is now in:
Translation for the Card Count Column
Card counts are currently read as static numbers. They can only be manually adjusted. At the time of reference read the defines are available. A simple translation in the card count column could be easily (well hopefully) supported.
This way a define set could look like this:

define
value

move_action_count
1

harvest_action_count
0

And a Reference could look like this:

count
action

@[move_action_count]
move 3 spaces

@[move_action_count]
move 5 spaces

@[harvest_action_count]
harvest 3 resources

Coming up next (when time permits)
When specifying a sublayout in the sublayout element provide a way to provide in-line defines (key+value). This way you can customize a card count using the above functionality.

Submitted but still play around with overriding defines when specifying a layout in the SubLayout element: https://github.com/nhmkdev/cardmaker/commit/933d94548fb6ca3e6548a01f9209ae9d28b04979 Also attempted a fix to the display of #noexport on the canvas. Should be working as it's event driven now...
It's a slightly risky change...
SubLayout Elements (Previously)
Specify the name of the layout: SubLayout (example)
SubLayout Elements (Now)
Along with the normal functionality above it also supports specifying parameters and a set of override defines.
[layout name]::[parameters]::[define;value];[define;value][repeated as necessary]
Full example: SubLayout::::message;from primarylayout;move_action_count;2
(while the :::: looks funny it will be nice to support parameters in the future)
This will create the following defines for the SubLayout to use:

define
value

message
from primarylayout

move_action_count
2

Parameters are intended for future use so it's just an empty set.
Override defines are top level overrides in this case. If specified they will be passed onto the SubLayout even if the parent layout provided the same value. (might be some argument for not doing so... but it seems like a Layout should be able to control what its direct SubLayout receives)

Using the above example -- Now a SubLayout can have its card count driven in-reference by @[move_action_count] that is provided as an override in the element definition.

I'll check it out!

Count logic was added initially with sublayouts https://github.com/nhmkdev/cardmaker/releases/tag/v.<IP_ADDRESS>-unstable.v.a2


[swri_transform_util] nodelet_plugins.xml not being installed

As reported by @progtologist here:

This removal now causes problems since the package.xml expects this when the package is installed and cannot find it logging it in every roslaunch
[ERROR] Skipping XML Document "/opt/ros/indigo/share/swri_transform_util/nodelet_plugins.xml" which had no Root Element.  This likely means the XML is malformed or missing.

I don't know how many people are using the DynamicPublisher nodelet in swri_tranform_util, but this error breaks it. (It also causes the console spam reported by @progtologist.) As soon as this is definitively fixed, I recommend we bloom a patch release.


fix cstyle error in src/replication.h

Repo: openebs/istgt
Branch: replication
File: src/replication.h
Steps to compile in: README.md
PR subject should be like: fmt(cstyle): cstyle fixes in
./src/replication.h: 2: #define followed by space instead of tab
./src/replication.h: 21: #define followed by space instead of tab
./src/replication.h: 22: #define followed by space instead of tab
./src/replication.h: 23: #define followed by space instead of tab
./src/replication.h: 24: #define followed by space instead of tab
./src/replication.h: 25: #define followed by space instead of tab
./src/replication.h: 34: #define followed by space instead of tab
./src/replication.h: 36: missing space around relational operator
./src/replication.h: 36: comma or semicolon followed by non-blank
./src/replication.h: 36: #define followed by space instead of tab
./src/replication.h: 87: line > 80 characters
./src/replication.h: 140: line > 80 characters
./src/replication.h: 175: whitespace before right paren
./src/replication.h: 186: #define followed by space instead of tab
./src/replication.h: 212: #define followed by space instead of tab
Resources:
-> Countributers guide: https://github.com/openebs/openebs/blob/master/CONTRIBUTING.md
Complexity: Easy

can i take this up?

sure @kmjayadeep go ahead


Fix typo in the readme

See https://prowritingaid.com/grammar/1000167/Bellow-vs-below—what-is-the-difference

Thank you.


 Somebody actually just noticed that in #25, and I already pushed v1.7.2 that fixes the issue.
I also switched hidden for aria-hidden, because hidden didn't allow showing partially hidden elements, which was a recurring feature request in the past.

phew well glad you're on top of it! my original need for tab accessibility will at least be easier with the events.


Fix the issue of empty commands and empty paths

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Mr.Xu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Kanban board Review

Hi Dear :wave: :wave: :wave:
:large_blue_diamond:  This is our Ruby on Rails group project.
:large_blue_diamond: This is the link to our kanban board.
:large_blue_diamond: We are two partners me @SaboorSohaib and @belmeetmule.
Thanks.

Hi @SaboorSohaib,
STATUS: APPROVED ✔ ✔
Your project is complete!  There is nothing else to say other than... it's time to start your capstone 😄
Congratulations and well done! 🎉

Highlights

All tasks were fairly assigned✔ ✔
All cards have descriptive titles and project description 👏 👏
All the best working on your capstone 👍 👍

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Add file size badges

That would be useful for showing dist file size:
[![file size](https://img.shields.io/size/github/ImanMh/logeek/master/dist/logeek.min.js)](https://github.com/FormidableLabs/builder)

and Gzip as @fabricionaweb  mentioned:
[![file size](https://img.shields.io/gzip-size/github/ImanMh/logeek/master/dist/logeek.min.js)](https://github.com/FormidableLabs/builder)

made PR for that at #745


Always update LS state through Project

There have been multiple reports of issues with hitting assert at https://github.com/microsoft/TypeScript/blob/80ab111685e3e0c10d8d13cdd18d8dffa8328895/src/server/project.ts#L1518 because the program update before that didnt pass through Project's update graph and hence LS and Project go out of sync, Recent report at https://github.com/microsoft/TypeScript/pull/55716#issuecomment-1752163519
It has always been hard to reproduce this without plugin and race conditions etc. So for testing i wrote simple plugin test that fails without this fix.

@typescript-bot pack this
@johnsoncodehk does this fix the crash you noted in https://github.com/microsoft/TypeScript/pull/55716#issuecomment-1752163519 ?

@johnsoncodehk does this fix the crash you noted in #55716 (comment) ?

@jakebailey I can confirm this fix works, thanks!


session()->flush();  vs \Auth::user()

Laravel Version: 5.7.9
PHP Version: 7.1
Database Driver & Version: Mysql

Description:
when I do
session()->flush();
It also logging out a user, but
if you check Auth::user()
you will see authentication passes.
It makes a strange situation when you have logged out, but phpunit cannot assert it.

you mean you're loggin an user out with just session()->flush?

Hi there,
Looks like this is a question which can be asked on a support channel. Please only use this issue tracker for reporting bugs or problems. If you have a question on how to use functionality provided by this repo you can try one of the following channels:

Laracasts Forums
Laravel.io Forums
Discord
Larachat
IRC
StackOverflow

@federicotorrisi , @driesvints , thank you for your attention. BUT It is not a question it is a bug report. I don't want to log out a user, even less I what to log out a user in a way that Auth::user() - wouldn't  know about it.  I want to clear all data that I put to session and that is it. My suggestion would be to store sessio() variables in separate array element to not overlap with Authentication. Or maybe make Authentication check if user was cleared from session. My bug report is about two systems that overlap/clash and break each other.


Add documentation regarding code generation guidelines

Now that we have achieved some sort of expertise regarding code generation for an embedded board, it might be nice to create a .md document that highlights the best practices and settings to apply for an effective and flexible process.
For example, it could contain:

Simulink model settings
CMSIS settings
Best practices for Simulink blocks
Stateflow guidelines
a sprinkle of dictionary usage

Nice idea @mfussi66 👍🏻
However, the goal is to publish everything, including this aspect, on our website; so, in this sense, it's very much related to:

#13

Now that we're in a good position with the development of the architectural models, we can think of addressing the public documentation from the ground up.
Probably, we should put this on the bill for the next facility increment.

Started a draft in my fork: https://github.com/mfussi66/icub-firmware-models/blob/devel/boards/docs/The Techie's guide to code generation.md

Great!
Agreed F2F that we eventually aim to develop the website.
In the meantime, we can keep on collecting useful info as markdown files.

At the moment I am at the Code generation part of the model configuration parameters: https://github.com/mfussi66/icub-firmware-models/blob/devel/boards/docs/The Techie's guide to code generation.md#code-generation

In this commit, I think I concluded the draft for the Configuration Parameters window: https://github.com/mfussi66/icub-firmware-models/tree/acc4d9da907b1f4e47e525eedcf1c9d03629a18c

Well done 👍🏻
I'm a bit overwhelmed these days. I'll try to catch up soon.

Well done 👍🏻 I'm a bit overwhelmed these days. I'll try to catch up soon.

No problem! Just posting regular updates to show progress on the task.

Given the scope of the task, maybe it will be useful to swtich this issue to a first stint?
cc @pattacini

Good point 👍🏻
I've turned #13 into an Epic and thus associated this issue with that Epic.
Feel free to close this task as complete and open a follow-up to be bundled to the Epic.

Closing in favour of follow up (to be linked).

I updated the open post with a checklist of topics addressed in this first sprint @andreaderito .


Add Watchflix

Looks like the last change was in June - pls feel free to reopen this PR if it becomes active again in the future.


Timezone

My event's dates (start and end) are stored in database in UTC. But I want to display those dates using user's timezone.
So I have a resource's view showing events table : as you can see the dates in table are displayed using the right timezone.
In the FullCalendar, we see that event are displayed using UTC event if i set :
public function getConfig(): array
    {
        return array_merge(parent::getConfig(), [
            'timeZone' => auth()->user()->timezone,
            'locale' => app()->getLocale(),
        ]);
    }

do you have a column timezone in your users database?

Of course ;-)

I think you didn't implement momentTimezonePlugin : Timezone

I think Timezone is already included on the global build?

Maybe but I need to convert all dates (which care stored in UTC) in the user's timezone to display rightly.

Hi @invaders-xx
Did you solve this?
My progress:
From full-calendar docs: https://fullcalendar.io/docs/timeZone the timezones are NOT converted unless a timezone plugin is used, except for the local timezone.
In my case, since my dates are all Carbon objects and reach the Fullcalendar script with the timezone part:
Array(1)
  0:
    description: "....."
    end: "2022-08-27T17:30:00.000000Z"
    id: 15
    orderStrict: true
    start: "2022-08-27T15:00:00.000000Z"
    title: "Test event"

if I use timeZone => 'local' in config/filament-fullcalendar.php
<?php

/**
 * Consider this file the root configuration object for FullCalendar.
 * Any configuration added here, will be added to the calendar.
 * @see https://fullcalendar.io/docs#toc
 */

return [
    // default is 'local' but don't explicitly set it, otherwise the
    // filament-full-calendar plugin throws an error trying to process it
    //'timeZone' => 'local',

    'locale' => config('app.locale'),
    ...

It converts the events time to the user's timezone automatically.
Of course this doesn't use the $user->timezone property as you have it, but it displays the events in whatever timezone the user's browser/OS it set to.
(#48 was created to fix an exception when we explicitly set the timeZone to local)

@invaders-xx @tiagof please try this new release and see if the timezone issue still appears


Package.json changes for coreclr debugging

Signing off with comments

Ok, I was trying to keep 2 copies of files in sync. Created another pull request with just the additions


Revert "build(deps): bump node-addon-api from 8.1.0 to 8.2.0"

Reverts mmomtchev/pymport#280
Waiting on Node to get their hands out of their pockets and fix this, systematic memory leak when constructing an object...

Who is calling napi_remove_wrap? When?

The ObjectWrap example leaks - both when using a factory method or when using the constructor.


Add Descriptions

Add Descriptions/Information to the different panels to elaborate how they work

Add Current Timestamp on Timeline Chart
Add People whose content is being visualized in Content Chart


The JetBrains Rider Treatment

Fixed various inconsistencies and code styles, removing all warnings my IDE was having a hard time with.

Thanks for the contribution! Currently vacationing with wife - no coding allowed. I will have a look at this Monday at the latest.

Stop checking your mail and pay attention to your wife! 🤣 thanks - feel no
pressure coming from this end! Thanks for the effort you’ve put into the
project!
On Fri, 5 Jan 2024 at 12:06, Doug Slater @.***> wrote:

Thanks for the contribution! Currently vacationing with wife - no coding
allowed. I will have a look at this Monday at the latest.
—
Reply to this email directly, view it on GitHub
https://github.com/nref/BrowseRouter/pull/20#issuecomment-1878565195,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPCHEL74Y2KJF7F657KKQDYM7UGDAVCNFSM6AAAAABBLFHSSSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZYGU3DKMJZGU
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry, I forgot about this. Thanks for the contribution!


Render sticker events in the timeline

Animate the sticker in case of an animated gif

https://github.com/vector-im/riot-ios/pull/1837

👍


refactor: clean up omg_eth usage of fixtures and use websocket mocks

Overview
Cleans up omg_eth to not use the fixtures no longer. the Subscription worker now instead uses mocks to test its behavior.
NOTE: Child chain integration however still uses the omg_eth fixtures so we need to address that in another set of PRs to move forward with the complete removal of omg_eth fixtures.
Changes

change subscription_worker_test to use a WebsocketexMock instead 8ecc9aa
Fix docker-compose-fixture port to map back to 8545 since ganache delivers ws via that port as well
205605e

Testing
mix test test/omg_eth/subscription_worker_test.exs --only common

Coverage decreased (-10.0%) to 74.833% when pulling 8838b5773698458cd8509701f0cb883e07d1f62f on achiurizo/update-subscription-worker into 105a52d9a6b33791f8977d531839d3f5baadaa9e on master.

@achiurizo
Not sure if this is useful to you but checkout out https://github.com/omisego/elixir-omg/commit/fdd130b0dff5136887a1e1bbe686edb8e9ce754c
Mox to help with mocking.

@jrhite thanks, this looks pretty cool will check it out.


Add OpenLayers v5/6 compatibility

The code for OpenLayers 6 was failing due to ol.inherits removal in OpenLayers 6 (release notes reference). I've made correction with a "if else" to manage code for both OpenLayers 5 and 6. My choice has been to not create a function as there was only one call to inherits in the ol3-sidebar.js base code. I've borrowed the logic from https://gis.stackexchange.com/a/324607 without using a function.
Need a review.
A suggestion after this commit would be to remove reference to ol3-sidebar.js and rename it to ol-sidebar.js, do the same for ol3-sidebar.css (would be ol-sidebar.css) and change the doc to mention OpenLayers 3+ (version is now 6.1.1)

Just to say that I've just bumped into the issue with ol.inherits no longer being available while updating the ol-layerswitcher example that used the sidebar.


Add any trigger

I propose a third category (next to door and motion): triggers.
Any trigger that is the results of person’s action will indicate the room is occupied (if doors are shut). E.g. a physical switch that is turned on or off by a person, or the ‘initial press’ of any of the 4 buttons of a hue dimmer switch.
An alternative would be an automation that contains those triggers, and that will set on a helper switch for a few seconds. That switch can be considered motion input for the room.

This can be done now using template binary sensors with event/state triggers and a short auto_off. Then, include that binary sensor in the wasp_sensors configuration area. But, having a dedicated way to do it without needing to configure template binary sensors would be nice. I'll look into it.


Combination of rules

I was trying to do
(luna/pre
  [:match-enc
    [:match :digits :exactly 2 :times]
    [:match ":"]
    [:match :digits :exactly 2 :times]])

and got  #""

ah, the syntax to do that is this.
(pre [:match-enc [:digits :exactly 2 :times ":" :digits :exactly 2 :times]])
; #"(?:\d{2}:\d{2})"

match-enc is a sort of substitue for match
so you can do this as well and it is valid.
(pre [:match [:digits :exactly 2 :times ":" :digits :exactly 2 :times]])
; #"\d{2}:\d{2}"

Let me rephrase the problem. Here is my net.cgrand.regex code:
(def year (cr/repeat cr/digit 4))
(def month (cr/repeat cr/digit 2))
(def day (cr/repeat cr/digit 2))
(def hours (cr/repeat cr/digit 2))
(def mins (cr/repeat cr/digit 2))
(def expr-secs (cr/repeat cr/digit 2))
(def expr-dash \-)
(def expr-date [year expr-dash month expr-dash day])
(def expr-time [hours \: mins (cr/? \: expr-secs)])
(def date+time [expr-date (cr/? cr/space (cr/? expr-time))])
(def log-line [[date+time :as :date] (cr/* cr/space) [(cr/* cr/any) :as :text]])

date+time and log-line are just combinations of other rules. Can I combine rules as easily with lune?

Oh I see. Now your question makes sense.
I just pushed some commits that lets you combine the rules (haven't made a release yet, would like your input on it).
The changes let you combine the rules like this
(def digits-4 [:match [:digits :exactly 4 :times]])
(def alphabets-5 [:match [:alpha :exactly 5 :times]])

(pre digits-4) ; #"\d{4}"
(pre alphabets-5) ; #"[a-zA-Z]{5}"

(pre [:match [digits-4 "-" alphabets-5]]) ; #"\d{4}-[a-zA-Z]{5}"
(pre [:match [digits-4 "-" alphabets-5 "1234" alphabets-5]]) ; #"\d{4}-[a-zA-Z]{5}1234[a-zA-Z]{5}"

This looks so much better.

Thanks for bringing this up, it has helped improve this library :)


3-D structure protein viewer functionality in demo

This is a concept for a protein viewer for our demo here
It is tempting to put the protein viewer right in the react-msaview package to make it tightly integrated but instead, I think I am going to put it in the app directory e.g. the create-react-app demo is in app and the library for MSA vieweing is the react-msaview package in the lib directory
I wanted to try to be bleeding edge so it is trying out NGL http://nglviewer.org/ngl/gallery/index.html
Some features I liked about NGL is that it can display multiple structures at once. This way, you could put the protein from mouse and human laid over each other and see the differences. I can also use the ranges provided so that you are only viewing the range of sequence specified in the alignment.
Wiring up hover actions and such are ongoing

This is basically getting there conceptually....mouseover the MSA doesn't highlight the node on the protein but the protein has a way to highlight the location on the MSA (still needs validation)
I may merge just to get the demo out there

This all looks v cool
In the longer term I wonder if we should make the PDB viewer? A modularly configurable component/plugin. Adopting websites will often have their own preferred 3D structure viewer (e.g. this was the case with Interpro when I demo'd ABrowse for them, although to be fair NGL was the viewer they were using)

Indeed, that was my design goal so that should be good as implemented here
The protein viewer is independent from the react-msaview library (which just displays the MSA and the tree) and the react-msaview just has the idea of "adding things to a selection". The app containing the MSA view can interpret the selection however it wants, and in this case, the app has NGL display the proteins

Here is how the demo looks with this branch, went ahead and deployed to the website. It remembers the state via the URL so here it is with NGL loaded on the covid stockholm file https://gmod.github.io/react-msaview/?data={"id"%3A"YUkH81xbT"%2C"type"%3A"MsaView"%2C"height"%3A550%2C"treeAreaWidth"%3A400%2C"treeWidth"%3A300%2C"rowHeight"%3A20%2C"scrollY"%3A0%2C"scrollX"%3A0%2C"blockSize"%3A1000%2C"selected"%3A[{"id"%3A"POLG_RHDVF%2F1288-1730"%2C"pdb"%3A"1khw"}]%2C"labelsAlignRight"%3Afalse%2C"colWidth"%3A16%2C"showBranchLen"%3Atrue%2C"bgColor"%3Atrue%2C"drawTree"%3Atrue%2C"drawNodeBubbles"%3Atrue%2C"colorSchemeName"%3A"maeditor"%2C"msaFilehandle"%3A{"uri"%3A"https%3A%2F%2Fihh.github.io%2Fabrowse%2Fbuild%2Fpfam-cov2.stock"}%2C"currentAlignment"%3A0%2C"collapsed"%3A[]}#


feature: support next/config runtime configuration

What kind of change does this PR introduce?
Feature
What is the current behaviour?
next/config is not set and always returns undefined.
What is the new behaviour?
Support Next.js runtime configuration and set different next/config values based on server or client env.
Does this PR introduce a breaking change?
Yes.
Other information:
Please check if the PR fulfills these requirements:

[X] Tests for the changes have been added
[ ] Docs have been added / updated

Coverage decreased (-0.4%) to 99.638% when pulling 45421bc48ecf0c420e450bf83959538162a9162d on next-config into f55a1d3935d9b88d756ebb3069c9d86fc9dd4035 on master.

Coverage decreased (-0.4%) to 99.638% when pulling 45421bc48ecf0c420e450bf83959538162a9162d on next-config into f55a1d3935d9b88d756ebb3069c9d86fc9dd4035 on master.


[FLOC-2647] Documentation explaining how to export Flocker log files

Fixes: https://clusterhq.atlassian.net/browse/FLOC-2647

Thanks. Please proceed with coding. I think you should start with scripts, one for each OS, and perhaps make a follow-up issue for a flocker-diagnostics tool.

Thanks! This looks like it will be a huge help to us and to our users.
Please make the requested changes and bounce back to me for review.

Ready for another review. I've:

replaced the shell scripts with a single downloadable python script and
moved the shell commands into the debugging documentation as an alternative way of gathering the logs and debug info in case the script doesn't work on the node OS.

That's a pretty useful-looking tool, and I expect it will save us lots of time debugging user installs.
However, having to manually download it seems like an extra step that will make it harder for people to use it, and result in potential version mismatches etc.. Additionally, lacking tests we don't know that this will continue to work.
I therefore propose:

Move the code into the flocker Python package.
Add entry point binary that calls it to the clusterhq-flocker-node RPMs/DEBs.
Write a minimal acceptance test that demonstrates it collects the expected information. No need for unit tests or functional tests, acceptance test should demonstrate it does what we need.

The docs are then "run the pre-installed flocker-bug-report-dump" or whatever it's called, so one less step.

Oh, and maybe docs should note that resulting log dump might contain sensitive information so they should be careful before sending it to us.
Address the above and resubmit - this is going to be super-useful, thanks for taking it on.

Ready for another review:

Added flocker-diagnostics to clusterhq-flocker-node
Archive separate startup logs and eliot log
Added an acceptance test that runs the tool and checks the contents of the resulting file.
Changed the archive file name to have a uuid1 suffix rather than timestamp and hostname.

Thanks Richard, this is looking great. I think the patch is broadly fine to go in as-is. I've asked a couple of fairly open-ended questions. If the answers don't involve changed code, then you should feel free to merge once the tests pass, and once you've dealt with the minor changes that I've flagged.
I think I've confused myself a little, so please ping me if I've confused you.

Aha, I see the problem:

http://build.clusterhq.com/builders/flocker%2Facceptance%2Faws%2Fubuntu-14.04%2Faws/builds/1676/steps/trial/logs/test.log

2015-08-13 14:03:01+0000 [-] ELIOT: {"task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "command": ["scp", "-C", "-q", "-o", "StrictHostKeyChecking=no", "-o", "ControlMaster=no", "-o", "PreferredAuthentications=publickey", "root@<IP_ADDRESS>:/srv/buildslave/flocker-acceptance-aws-ubuntu-14.04-aws/tmp-1676/_trial_temp/WARNING: No swap limit support", "/srv/buildslave/flocker-acceptance-aws-ubuntu-14.04-aws/tmp-1676/_trial_temp/flocker.acceptance.endtoend.test/DiagnosticsTests/test_export/dr725_/temp"], "task_level": [1], "action_type": "flocker.common.runner:run", "timestamp":<PHONE_NUMBER>.996801, "action_status": "started"}
2015-08-13 14:03:02+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.502729, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "message_type": "flocker.common.runner:run:output", "line": "scp: /srv/buildslave/flocker-acceptance-aws-ubuntu-14.04-aws/tmp-1676/_trial_temp/WARNING:: No such file or directory", "task_level": [2]}
2015-08-13 14:03:02+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.503312, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "message_type": "flocker.common.runner:run:output", "line": "scp: No: No such file or directory", "task_level": [3]}
2015-08-13 14:03:02+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.503575, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "message_type": "flocker.common.runner:run:output", "line": "scp: swap: No such file or directory", "task_level": [4]}
2015-08-13 14:03:02+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.503801, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "message_type": "flocker.common.runner:run:output", "line": "scp: limit: No such file or directory", "task_level": [5]}
2015-08-13 14:03:02+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.504021, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "message_type": "flocker.common.runner:run:output", "line": "scp: support: No such file or directory", "task_level": [6]}
2015-08-13 14:03:02+0000 [-] ELIOT: {"exception": "twisted.internet.error.ProcessTerminated", "task_level": [7], "action_type": "flocker.common.runner:run", "reason": "A process has ended with a probable error condition: process ended with exit code 1.", "timestamp":<PHONE_NUMBER>.508583, "task_uuid": "b9b97ad5-daf6-4f13-b985-d0d2044f509c", "action_status": "failed"}
2015-08-13 14:03:02+0000 [-] Main loop terminated.

stdout and stderr are both captured by the handle_line function.
Need to modify the run command to support separate handlers.

@jml I moved the spawnProcess based subprocess functions into flocker.common and made the necessary changes to the tests.
I think you'd better take another look before I merge this.

I think I've only requested one simple change. Please feel free to ping me directly if you'd like follow-up review or clarification.
When I started the review, one builder was failing, probably spuriously. I triggered another run of the tests there. As usual, please only merge once tests pass.

In https://github.com/ClusterHQ/flocker/pull/1774/files#r37065576 @jml wrote:

Fundamentally it's a messy problem, and I think this test is OK. Does that help?
Yep. I guess I should have just tested that way from the start.
Writing the acceptance test wasn't as difficult as I anticipated.
And writing a functional test or two for FlockerDebugArchive.create would have probably resulted in a cleaner design.

I don't think we're creating  and linking to follow up issues any more, but here are some thoughts for improvements:

Handle and log failure in each log export  step -- currently the script will exit if one of the subprocesses fails e.g. docker version fails because docker daemon isn't running.
Write incrementally from subprocess to a zip file member file -- would avoid having to compress each individual file and then tar it up in the final step. Here's a possible solution: http://stackoverflow.com/questions/297345/create-a-zip-file-from-a-generator-in-python/2734156#2734156 which we might be able to use.
And at the same time use flocker.common.runner to launch subprocesses with spawnProcess in parallel.

I added the extra diagnostic output of lsblk and fdisk so putting this up for another review as requested.

Looks like the tests are failing legitimately: http://build.clusterhq.com/builders/flocker%2Facceptance%2Faws%2Fubuntu-14.04%2Faws/builds/1715
If the fix is simple, please address comments & merge. Otherwise, please resubmit.

Ah, damn. I assumed that all variates of fdisk would support the long options....they don't.
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.570568, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " fdisk [options] <disk>    change partition table", "task_level": [5]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.570797, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " fdisk [options] -l <disk> list partition table(s)", "task_level": [6]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.571021, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " fdisk -s <partition>      give partition size(s) in blocks", "task_level": [7]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.57124, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": "", "task_level": [8]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.571457, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": "Options:", "task_level": [9]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.571694, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -b <size>             sector size (512, 1024, 2048 or 4096)", "task_level": [10]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.571919, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -c[=<mode>]           compatible mode: 'dos' or 'nondos' (default)", "task_level": [11]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.572136, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -h                    print this help text", "task_level": [12]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.572346, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -u[=<unit>]           display units: 'cylinders' or 'sectors' (default)", "task_level": [13]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.572572, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -v                    print program version", "task_level": [14]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.572785, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -C <number>           specify the number of cylinders", "task_level": [15]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.572993, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -H <number>           specify the number of heads", "task_level": [16]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.573203, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": " -S <number>           specify the number of sectors per track", "task_level": [17]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.573411, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": "", "task_level": [18]}
2015-08-17 10:26:00+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.573708, "task_uuid": "2211170a-dd39-41ef-941b-1bccebd43f09", "message_type": "flocker.common.runner:run:stderr", "line": "Unhandled Error", "task_level": [19]}

Ok. There are a couple of lines of stderr printed on the Ubuntu version which will look a little ugly for Ubuntu users:

http://build.clusterhq.com/builders/flocker%2Facceptance%2Faws%2Fubuntu-14.04%2Faws/builds/1719/steps/trial/logs/test.log

2015-08-17 12:19:56+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.630105, "task_uuid": "7e2dbe6d-16fb-4904-af98-0f2e7b8783be", "message_type": "flocker.common.runner:run:stderr", "line": "WARNING: No swap limit support", "task_level": [2]}
2015-08-17 12:19:56+0000 [-] ELIOT: {"timestamp":<PHONE_NUMBER>.639077, "task_uuid": "7e2dbe6d-16fb-4904-af98-0f2e7b8783be", "message_type": "flocker.common.runner:run:stderr", "line": "Disk /dev/xvdb doesn't contain a valid partition table", "task_level": [3]}

Another future improvement might be to capture the stdout and stderr of each diagnostic command to separate files in the archive.
But I think I'll ignore those and merge.

Ah, I should probably add a NEWS and What's New entry for this.
I'll do that before merging.


[QUESTION]

**Why gnome wayland get disabled when I switch from integrated to hybrid mode **

Enable the Nvidia suspend services as states in the README, thank you!


[zh]sync admin task files

related: #29329
sync Chinese files for following:
(11) admin 6
1	1	content/zh/docs/tasks/administer-cluster/limit-storage-consumption.md
1	1	content/zh/docs/tasks/administer-cluster/change-pv-reclaim-policy.md (already synced by others)
17	9	content/zh/docs/tasks/administer-cluster/controller-manager-leader-migration.md
14	1	content/zh/docs/tasks/administer-cluster/cpu-management-policies.md
1	1	content/zh/docs/tasks/administer-cluster/access-cluster-api.md

@tengqm Thanks for the review. I've updated the doc with your comments.

Many thanks.
/approve


Remove bridge in dart model with option, ref to #1169

Changes
Please list issues fixed by this PR here, using format "Fixes #the-issue-number".
Checklist

[ ] An issue to be fixed by this PR is listed above.
[ ] New tests are added to ensure new features are working. End-to-end tests are usually in the ./frb_example/pure_dart example, more specifically, rust/src/api.rs and dart/lib/main.dart.
[x] The code generator is run and the code is formatted (via just precommit).
[x] If this PR adds/changes features, documentations (in the ./book folder) are updated.
[x] CI is passing.

Remark for PR creator

Justfile is a task runner for the command line interface that allows you to run shell commands from a file named justfile in your project directory. You can use Justfile after installing it. Note that commands written in justfile of this repository are expected to be run in bash, not cmd or powershell. Running just ... commands in cmd or powershell will produce errors as the syntax is not compatible. On Windows, you can use git bash if you have Git installed.
If fzyzcjy does not reply for a few days, maybe he just did not see it, so please ping him.

This pr is based on #1169
pr about #1116

Actually, I'd like you to take a look at 101b171 and see if there are any changes to be made.

Hmm I see some common code between this and #1169, so let me first check that one

I close it due to that I want to test locally
what's more, I don't know how to no run ci : )

Ping @fzyzcjy

Good job!


some problems with the code

Hi, this work is quite interesting:).  But I  have some problems with the code:

According to the paper, STUD use rois of key frame(t0) to generate positive samples and take rois of other frames(t1-tT) as negative samples (filtered via  Energy Function ). But the label makes me confused[1], why it should be half negative and half positive?  And  What if key frame image only have one object ?

Why use rois of proposals, can I use GT BBOX  rois?

Is there[2] missing negative sign?

[1] https://github.com/deeplearning-wisc/stud/blob/main/src/modeling/meta_arch/rcnn_ss_add.py#L228
[2] https://github.com/deeplearning-wisc/stud/blob/b667a369e368181ef6e913c32f26e574bead9b56/src/modeling/self_supervised/cycle_energy_direct_add_all.py#L139

hi, @LicharYuan , thanks for your interest in our paper.

it is because the number of unknowns is the same as that of the positive in-distribution samples.
you can try that real quick, but the diversity of the proposals will be lower because you actually explore a smaller number of proposals/objects to distill the unknowns.
actually here we use the negative energy score, which is larger for in-distribution objects. Since here we set the label for the id objects to be 1 (bigger than 0 for ood objects), i think it will be easier for the model to optimize. you can definitely try the negative sign here, which does not change the goal of binary separation between id and ood objects (the label for id objects can also be 0 if you'd like it to be).

Thanks for your reply!
But about 1), how you make sure the number of negative samples is equal to positive samples since the negative samples is chosen from multi-frames rois?

hi, @LicharYuan , sorry for the late reply! i just see the comments. oh, actually for each id object, you kind of aggregate the negative samples from multi-frames rois using a dissimilarity score, so you essentially compress the dimension of the negative samples to be 1, which is equal to the dimension of id object.
feel free to post more questions here


update bfe org entry to point to website not repo

This should resolve their Trademark check failing

This should resolve their Trademark check failing

At the moment we are picking the website configured in the primary Github repo for this check, we don't use the one at the organization. But this raises a good point to improve that check and not only use the configured organization url but also the home url at the project level. We'll take care of that soon, thanks 👍

Awesome, you rock!


ADSR sustain phase could be improved

With the ADSR design used, if you are holding a note and adjust the sustain control, the sustain level does not follow the knob position.
This is a common way for ADSRs to work, and many commercial instruments share this shortcoming. Many musicians either don't mind this behavior, or don't know that there is an alternative.
Consider upgrading the ADSR board with a design that allows the user to adjust the sustain control in real time, and have the output level quickly follow the sustain knob position when the ADSR is in the sustain phase.
This is easy with digital implementations, but I think we could come up with an analog solution that works as described.

New ADSR design uses a comparator and analog switch to implement the above behavior.


MPU6050 calibration

Ok I uploaded the sketch to the arduino. How do I get it to run? The wiki says press any key but that does nothing as far as I can see and I don't get anything to answer yes to.

1st! You need to open the Serial Monitor on Tools.
2nd! Sets the right Baud Rate for communications. (If this does not match the value set up in your sketch in Setup, characters will be unreadable). Example: Serial.begin(9600); Some sketches or other applications may use a different Baud Rate.

That's in theory.
I do all that but can't configure my accelerometer yet.
I figured out that my problem with Gravity Color was a bad calibration of my MPU6050.
How we can configure the offsets manually?

But what do I send when I open serial monitor. It seems to do nothing regardless of what I send.

If you configure the right Baud the serial monitor will send you a message like "press any key to continue" and then you press "any key" and the sketch will set up the offsets.
When it's done the Serial Monitor will ask you if you want to save the offsets to the EPROM.
In other way, if you don't see any legibly message on your serial monitor, try with other Baud.

The communication baud in the sketch says 115200. I set it to that and it still does nothing. Not liking the look of this!!

If you need to recalibrate your MPU, use this one, same as I use to test my DIYino boards:
https://github.com/Protonerd/DIYino/blob/master/DIYino_Testsketch_Pro.ino
Let us know how it performs for you.

Ok I'll have a go with that once its downloaded.

Ok I ran that and it said connecting to DFplayer and then connected to DFPlayer and that was it nothing else.

Thank you! I will try that one too.

Well I have still had no life from the calibration program. I also uploaded the fxsaberos sketch to see if that did anything and it doesn't. Whether its because the mpu6950 calibration hasnt run though I don't know.
The nano I am using is a cheap copy though with a ch340 serial chip, would that make a difference or is that what others are using?

It shouldn't matter.  The calibration program is pretty simple from the
user side and should just work, I've used it with nano and pro mini from
various vendors as well as the DIYino boards.
Jason "Kuma" Brinkerhoff
*Mad Science Workshoppe, *proprietor
http://jbkuma.com/workshoppe
On Thu, Dec 28, 2017 at 11:07 AM, FatherCool<EMAIL_ADDRESS>wrote:

Well I have still had no life from the calibration program. I also
uploaded the fxsaberos sketch to see if that did anything and it doesn't.
Whether its because the mpu6950 calibration hasnt run though I don't know.
The nano I am using is a cheap copy though with a ch340 serial chip, would
that make a difference or is that what others are using?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Protonerd/FX-SaberOS/issues/34#issuecomment-354311930,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATdCMJdgEZ78Y7ACcP-977yYXJUaON_Cks5tE7ykgaJpZM4RNyJt
.

It doesn't run.
I have uploaded the simple led blibk test sketch to check the board and that runs no problem.
I have just put a multimeter across the 3v3 pin and ground and only got 1.84v which is the wire going to the mpu6050. Do you think that that is an issue?
Would you advise that I rebuild with new parts?

It will definitely need the proper power supplied to it.
Does the script prompt you at all?  Something should be showing up in your
serial monitor.
Jason "Kuma" Brinkerhoff
*Mad Science Workshoppe, *proprietor
http://jbkuma.com/workshoppe
On Thu, Dec 28, 2017 at 12:00 PM, FatherCool<EMAIL_ADDRESS>wrote:

It doesn't run.
I have uploaded the simple led blibk test sketch to check the board and
that runs no problem.
I have just put a multimeter across the 3v3 pin and ground and only got
1.84v which is the wire going to the mpu6050. Do you think that that is an
issue?
Would you advise that I rebuild with new parts?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Protonerd/FX-SaberOS/issues/34#issuecomment-354320283,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATdCMHIRhVPl6MfHMx2-0HOLFCGEwxZcks5tE8kdgaJpZM4RNyJt
.

If the MPU6050 isn't working your serial monitor should look like this:
`Send any character to start sketch.
MPU6050 Calibration Sketch
Your MPU6050 should be placed in horizontal position, with package letters facing up.
Don't touch it until you see a finish message.
MPU6050 connection failed`

No I don't receive anything through the serial monitor at all. When I ran protonerds other sketch I got a dfplayer connected prompt but still nothing from the mpu6050 part of it at all.

I just uploaded the calibration sketch to nano with nothing attached to it, straight from the package and got those results.  Are you sure you are uploading the calibration sketch to the board properly?

I believe so. It compiles fine and shows the red RX light and then a little TX light before saying upload done.

Will it work on a mega as I have one of those spare to use as a test bed?

Ok update. I have stripped everything from the board to run it naked so to speak. The sketch with nothing attached now runs and talks to the serial monitor correctly. I can only assume that something was causing an issue connected to the board. The bad news is that I have managed to rip off the copper track on the 3v3 pin completely during de-soldering to the board is a dead stick now for purpose in any case.
New board required!!

It seems like something was bad with the board already since the 3v3 line was low, perhaps it was shorted or the regulator was fried. Fortunately Nanos are plentiful and cheap these days!

Yes indeed. I am just frustrated that I now need to wait to get another!!


WaitForResourceHealthyAsync

Description
Adds a WaitForResourceHealthyAsync method to ResourceNotificationService. Changed a number of tests to use it instead of the predicate version of WaitForResourceAsync.
Fixes #5469
Checklist

Is this feature complete?

[x] Yes. Ready to ship.
[ ] No. Follow-up changes expected.

Are you including unit tests for the changes and scenario tests if relevant?

[ ] Yes
[x] No (existing test coverage switched to using it)

Did you add public API?

[x] Yes

If yes, did you have an API Review for it?

[ ] Yes
[x] No (this PR can serve as review)

Did you add <remarks /> and <code /> elements on your triple slash comments?

[x] Yes
[ ] No

[ ] No

Does the change make any security assumptions or guarantees?

[ ] Yes

If yes, have you done a threat model and had a security review?

[ ] Yes
[ ] No

[x] No

Does the change require an update in our Aspire docs?

[ ] Yes

Link to aspire-docs issue:

[x] No

Microsoft Reviewers: Open in CodeFlow

@radical lets start using this in more of our tests instead of waitfortext where possible.

@radical lets start using this in more of our tests instead of waitfortext where possible.

I changed a few tests over to use it where it was a quick change. In some cases like admin tools we don't have health checks so it wouldn't do what you want there (and we need to test both code paths anyway).


Remove fastqc from pipeline, replace %>=Q30 calculation with faster source

2021-03-31

@niemasd  suggests https://github.com/dayedepps/q30
Main reason for doing this would be that IGM is apparently planning to send us ~3x more fastq data, and right now fastqc is the only step run BEFORE downsampling and it has given us performance issues in the past.

@artnasamran determined that the https://github.com/dayedepps/q30 code does not calculate the same metric as fastqc: fastqc calculates the percent of READS >=Q30 while the dayedepps code calculates the percent of BASES >=Q30.  He is investigating whether there is another easy-to-incorporate tool that will give us a metric equivalent to the fastqc one; if not, we will stop and get prioritization on how important this exact metric is ...

@AmandaBirmingham Can you clarify what exactly it means for a read to be >= Q30? Does it mean that every single base in the read is >= Q30? Or something similar?

According to this link:

Q30 is the percentage of bases in the reads with a phred quality equal or bigger than 30.

Figure 2 of this Illumina document counts total bases >= Q30
According to this link:

%Q30: The percentage of bases with a quality score of 30 or higher, respectively

According to this ThermoFisher blog post:

You are  likely have encountered a metric called %bases greater than or equal to Q30 which translates to the percent of sequenced bases that have a predicted quality score of 30 or more.

According to Table 1 of this paper:

%≥Q30: The percentage of bases having a quality score of 30 or higher

And I couldn't find any resources that said anything about Q30 with respect to proportion/percentage of reads
TL;DR: I'm fairly certain that the ">=Q30" is referring to the percentage of bases (not reads) that have a quality score of at least Q30

Found this in the FastQC code (the precise moment when they added Q20 and Q30 metrics). The q20_count and q30_count variables are global to the BasicStats class, and those global variables are incremented in each base of each sequence without ever being reset as far as I can tell, which suggests to me that, even in FastQC, these are indeed per base rather than per read

@niemasd @AmandaBirmingham Do you know whether the stakeholders want %>=Q30 bases or average %>=Q30 sequences?
Our original code was calculating % >=Q30 from the "#Quality Count" table in the standard fastqc_data.txt output from fastqc. I was calculating this by summing counts of Q>=30 and dividing them by the total counts.  Here's an example excerpt of a table from fastqc_data.txt:

Per sequence quality scores	pass
#Quality	Count
16	2.0
17	12.0
18	43.0
19	117.0
20	249.0
21	541.0
22	1243.0
23	2464.0
24	4739.0
25	8456.0
26	13710.0
27	21038.0
28	29277.0
29	39743.0
30	52796.0
31	71578.0
32	103956.0
33	180065.0
34	461070.0
35	1449713.0
END_MODULE

We've been reporting average %>=Q30 by sequence.
If they want %>=Q30 by base, we can use q30.py from https://github.com/dayedepps/q30 as is. Otherwise, it's a quick fix to calculate the average quality per sequence.

This stakeholder at least has never thought about this issue. However, given that fastqc was proposed as an acceptable solution previously, it would be a good idea to match what it does if that is technically feasible/fast. If some other solution is planned, it would be great to see a correlation between old vs new results — if it’s very close, which it probably is, I think the team would prefer speed over one particular definition.

On Apr 1, 2021, at 4:55 PM, Art Nasamran @.***> wrote:
@niemasd https://urldefense.com/v3/__https://github.com/niemasd__;!!Mih3wA!TzgFEr4Wp_IXVEInSSyNMBHJQD5PDezVNAad2cM2NUVlyxK6GV7wq7-jF717WM_ZjA$ @AmandaBirmingham https://urldefense.com/v3/__https://github.com/AmandaBirmingham__;!!Mih3wA!TzgFEr4Wp_IXVEInSSyNMBHJQD5PDezVNAad2cM2NUVlyxK6GV7wq7-jF71znnA31Q$ Do you know whether the stakeholders want %>=Q30 bases or average %>=Q30 sequences?
Our original code was calculating % >=Q30 from the "#Quality Count" table in the standard fastqc_data.txt output from fastqc. I was calculating this by summing counts of Q>=30 and dividing them by the total counts. Here's an example excerpt of a table from fastqc_data.txt:
Per sequence quality scores pass
#Quality Count
16 2.0
17 12.0
18 43.0
19 117.0
20 249.0
21 541.0
22 1243.0
23 2464.0
24 4739.0
25 8456.0
26 13710.0
27 21038.0
28 29277.0
29 39743.0
30 52796.0
31 71578.0
32 103956.0
33 180065.0
34 461070.0
35 1449713.0
END_MODULE
We've been reporting average %>=Q30 by sequence.
If they want %>=Q30 by base, we can use q30.py from https://github.com/dayedepps/q30 https://urldefense.com/v3/__https://github.com/dayedepps/q30__;!!Mih3wA!TzgFEr4Wp_IXVEInSSyNMBHJQD5PDezVNAad2cM2NUVlyxK6GV7wq7-jF71a4zri-g$ as is. Otherwise, it's a quick fix to calculate the average quality per sequence.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/ucsd-ccbb/covid_sequencing_analysis_pipeline/issues/89*issuecomment-812237966__;Iw!!Mih3wA!TzgFEr4Wp_IXVEInSSyNMBHJQD5PDezVNAad2cM2NUVlyxK6GV7wq7-jF70JLz_Jpw$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAPL2KJRS4Y2PDYJR4DWRADTGUBYVANCNFSM42FX3WGQ__;!!Mih3wA!TzgFEr4Wp_IXVEInSSyNMBHJQD5PDezVNAad2cM2NUVlyxK6GV7wq7-jF71GmT3X_w$.


Disconnected Harmony causes error on restart

Describe the bug
When the Harmony Hub goes down and loses its network connection, it takes down the entire homebridge setup, as homebridge is unable to start due to an undefined variable.
To Reproduce
Disconnect Harmony Hub from network, reboot homebridge.
Expected behavior
The application shouldn't take down the entire homebridge boot, if it can't find the Harmony Hub.
IOS (please complete the following information):

Version 13.5.1
Device: iPhone X

Logs
TypeError: Cannot read property 'length' of undefined
at HarmonyBase.checkHubsFound (/usr/local/lib/node_modules/homebridge-harmony/harmonyBase.js:126:24)
at HarmonyPlatform.harmonyPlatform.mainPlatform.on (/usr/local/lib/node_modules/homebridge-harmony/harmonyBase.js:227:16)
at HarmonyPlatform.emit (events.js:197:13)
at Timeout.setTimeout (/usr/local/lib/node_modules/homebridge-harmony/harmonyPlatform.js:168:16)
at listOnTimeout (timers.js:327:15)
at processTimers (timers.js:271:5)
Config
{
"name": "Living Room",
"hubName": "Living Room",
"TVAccessory": true,
"mainActivity": "Watch TV",
"showCommandsAtStartup": true,
"platform": "HarmonyHubWebSocket"
}
Additional context

#300 seems to be the same. Closing to have only one issue


Send emails does not work -official documentation wrong? CHROME=>version incompatible ChromeDriver/Chrome FIREFOX=> 'geckodriver' executable needs to be in PATH

Sending emails does not work - does not mind if firefox or chrome is used
How to reproduce the bug
create custom dockerfile with adding firefox or chrome (same issue if you only add one of them) and config
having redis active and reachable from docker
start docker
init image, load example and add a job for sending a report every minute
superset fab create-admin --username admin --firstname Superset --lastname Admin --email<EMAIL_ADDRESS>--password admin
superset db upgrade
superset load_examples
superset init

start celery
celery --app=superset.tasks.celery_app:app worker --pool=prefork -O fair -c 4

HINT: featureflag alert_reports is active

Expected results
email is sent
Actual results
error is shown in logfile, no email is sent
Official Documentation: https://superset.apache.org/docs/installation/alerts-reports/
HINT CHROME: the chromedriver version is using V88 (LATEST_RELEASE_88) and the chrome stable is using currently 103 => I already changed this and updated "LATEST_RELEASE_88" to "LATEST_RELEASE"

=> if I use it without "_88" the error with version incompatibility is not there anymore and it works
firefox
dockerfile
FROM apache/superset:2.0.0
USER superset:superset
COPY custom_sso_security_manager.py /app/pythonpath/custom_sso_security_manager.py
COPY superset_config.py /app/pythonpath/superset_config.py

USER root:root

RUN chown superset:superset /app/pythonpath/custom_sso_security_manager.py
RUN chown superset:superset /app/pythonpath/superset_config.py
RUN chmod +x /app/pythonpath/custom_sso_security_manager.py
RUN chmod +x /app/pythonpath/superset_config.py

RUN apt-get update && \
    apt-get install --no-install-recommends -y firefox-esr

ENV GECKODRIVER_VERSION=0.29.0
RUN wget -q https://github.com/mozilla/geckodriver/releases/download/v${GECKODRIVER_VERSION}/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz && \
    tar -x geckodriver -zf geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz -O > /usr/bin/geckodriver && \
    chmod 777 /usr/bin/geckodriver && \
    rm geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz
RUN pip install --no-cache authlib gevent psycopg2 redis
USER superset:superset

error
logging was configured successfully
2022-07-25 09:25:43,392:INFO:superset.utils.logging_configurator:logging was configured successfully
2022-07-25 09:25:43,399:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>

 -------------- celery@7db8236e4201 v5.2.2 (dawn-chorus)
--- ***** -----
-- ******* ---- Linux-<IP_ADDRESS>-microsoft-standard-WSL2-x86_64-with-glibc2.2.5 2022-07-25 09:25:45
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         __main__:0x7ff39e8a2040
- ** ---------- .> transport:   redis://redis:6379/5
- ** ---------- .> results:     redis://redis:6379/5
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery

SQLite Database support for metadata databases will be removed             in a future version of Superset.
[2022-07-25 09:25:47,477: WARNING/ForkPoolWorker-4] SQLite Database support for metadata databases will be removed             in a future version of Superset.
Init selenium driver
[2022-07-25 09:25:47,565: INFO/ForkPoolWorker-4] Init selenium driver
A downstream exception occurred while generating a report: f7372ee4-3c4d-4b6a-8b78-930926d4ba4f
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: 'geckodriver' executable needs to be in PATH.

[2022-07-25 09:25:47,881: ERROR/ForkPoolWorker-4] A downstream exception occurred while generating a report: f7372ee4-3c4d-4b6a-8b78-930926d4ba4f
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: 'geckodriver' executable needs to be in PATH.

chrome LATEST_RELEASE_88 (from docu page, unchanged)
dockerfile
FROM apache/superset:2.0.0
USER superset:superset
COPY custom_sso_security_manager.py /app/pythonpath/custom_sso_security_manager.py
COPY superset_config.py /app/pythonpath/superset_config.py
USER root:root
RUN chown superset:superset /app/pythonpath/custom_sso_security_manager.py
RUN chown superset:superset /app/pythonpath/superset_config.py
RUN chmod +x /app/pythonpath/custom_sso_security_manager.py
RUN chmod +x /app/pythonpath/superset_config.py
RUN apt-get update && \
    wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
    apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb && \
    rm -f google-chrome-stable_current_amd64.deb

RUN export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \
    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip && \
    unzip chromedriver_linux64.zip -d /usr/bin && \
    chmod 755 /usr/bin/chromedriver && \
    rm -f chromedriver_linux64.zip
RUN pip install --no-cache authlib gevent psycopg2 redis
USER superset:superset

error
Init selenium driver
[2022-07-25 09:54:00,174: INFO/ForkPoolWorker-4] Init selenium driver
A downstream exception occurred while generating a report: 1d59d5b2-f620-480b-9a89-a6a15ef9917b
Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

[2022-07-25 09:54:01,631: ERROR/ForkPoolWorker-4] A downstream exception occurred while generating a report: 1d59d5b2-f620-480b-9a89-a6a15ef9917b
Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

Environment
(please complete the following information):

browser type and version: Chrome latest
superset version: 2.0.0
any feature flags active:   "ALERT_REPORTS": True

Checklist
Make sure to follow these steps before submitting your issue - thank you!

[x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context
superset_config firefox
from flask_appbuilder.security.manager import AUTH_OID,AUTH_REMOTE_USER,AUTH_DB, AUTH_LDAP, AUTH_OAUTH
from celery.schedules import crontab

import os

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager

basedir = os.path.abspath(os.path.dirname(__file__))
SUPERSET_WORKERS = 1

# AUTHENTIFICATION STUFF ---------------------------------------------------------------------------
OIDCCID="REMOVED"
OIDCCS="REMOVED"
CSRF_ENABLED = True
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True

AUTH_ROLES_MAPPING = {
    "REMOVED": ["Admin"]
}
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 600
OAUTH_PROVIDERS = [
    {
       REMOVED
    }
]

ENABLE_PROXY_FIX = True
PREFERRED_URL_SCHEME = 'https'

# Console Log Settings
DATA_DIR = os.path.join(os.path.expanduser('~'), '.superset')
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR)
LOG_FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
LOG_LEVEL = 'DEBUG'

# ---------------------------------------------------
# Enable Time Rotate Log Handler
# ---------------------------------------------------
# LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL

ENABLE_TIME_ROTATE = False
TIME_ROTATE_LOG_LEVEL = 'DEBUG'
FILENAME = os.path.join(DATA_DIR, 'superset.log')
ROLLOVER = 'midnight'
INTERVAL = 1
BACKUP_COUNT = 30

## REDIS/CELERY/ALERTS ------------------------------------
from celery.schedules import crontab

FEATURE_FLAGS = {
    "ALERT_REPORTS": True
}

REDIS_HOST = "redis"
REDIS_PORT = "6379"

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'redis',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://redis:6379/1'
}
FILTER_STATE_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/2'
}

EXPLORE_FORM_DATA_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/3'
}

class CeleryConfig:
    broker_url = 'redis://redis:6379/5'
    imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
    result_backend = 'redis://redis:6379/5'
    worker_prefetch_multiplier = 10
    worker_log_level  = 'DEBUG'
    task_acks_late = True
    task_annotations = {
        'sql_lab.get_sql_results': {
            'rate_limit': '100/s',
        },
        'email_reports.send': {
            'rate_limit': '1/s',
            'time_limit': 120,
            'soft_time_limit': 150,
            'ignore_result': True,
        },
    }
    beat_schedule = {
        'reports.scheduler': {
            'task': 'reports.scheduler',
            'schedule': crontab(minute='*', hour='*'),
        },
    }
CELERY_CONFIG = CeleryConfig

SCREENSHOT_LOCATE_WAIT = 100
SCREENSHOT_LOAD_WAIT = 600

# Email configuration
SMTP_HOST = "REMOVED"
SMTP_STARTTLS = True
SMTP_SSL = True
SMTP_USER = "REMOVED"
SMTP_PORT = 25
SMTP_PASSWORD = "REMOVED"
SMTP_MAIL_FROM = "REMOVED"

## https://superset.apache.org/docs/installation/alerts-reports/ webdriver cfg

# This is for internal use, you can keep http
WEBDRIVER_BASEURL="http://superset:8088"
# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY="https://superset.localhost/"

superset_config chrome
from flask_appbuilder.security.manager import AUTH_OID,AUTH_REMOTE_USER,AUTH_DB, AUTH_LDAP, AUTH_OAUTH
from celery.schedules import crontab

import os

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager

basedir = os.path.abspath(os.path.dirname(__file__))
SUPERSET_WORKERS = 1

# AUTHENTIFICATION STUFF ---------------------------------------------------------------------------
OIDCCID="REMOVED"
OIDCCS="REMOVED"
CSRF_ENABLED = True
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True

AUTH_ROLES_MAPPING = {
    "REMOVED": ["Admin"]
}
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 600
OAUTH_PROVIDERS = [
    {
       REMOVED
    }
]

ENABLE_PROXY_FIX = True
PREFERRED_URL_SCHEME = 'https'

# Console Log Settings
DATA_DIR = os.path.join(os.path.expanduser('~'), '.superset')
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR)
LOG_FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
LOG_LEVEL = 'DEBUG'

# ---------------------------------------------------
# Enable Time Rotate Log Handler
# ---------------------------------------------------
# LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL

ENABLE_TIME_ROTATE = False
TIME_ROTATE_LOG_LEVEL = 'DEBUG'
FILENAME = os.path.join(DATA_DIR, 'superset.log')
ROLLOVER = 'midnight'
INTERVAL = 1
BACKUP_COUNT = 30

## REDIS/CELERY/ALERTS ------------------------------------
from celery.schedules import crontab

FEATURE_FLAGS = {
    "ALERT_REPORTS": True
}

REDIS_HOST = "redis"
REDIS_PORT = "6379"

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'redis',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://redis:6379/1'
}
FILTER_STATE_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/2'
}

EXPLORE_FORM_DATA_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/3'
}

class CeleryConfig:
    broker_url = 'redis://redis:6379/5'
    imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
    result_backend = 'redis://redis:6379/5'
    worker_prefetch_multiplier = 10
    worker_log_level  = 'DEBUG'
    task_acks_late = True
    task_annotations = {
        'sql_lab.get_sql_results': {
            'rate_limit': '100/s',
        },
        'email_reports.send': {
            'rate_limit': '1/s',
            'time_limit': 120,
            'soft_time_limit': 150,
            'ignore_result': True,
        },
    }
    beat_schedule = {
        'reports.scheduler': {
            'task': 'reports.scheduler',
            'schedule': crontab(minute='*', hour='*'),
        },
    }
CELERY_CONFIG = CeleryConfig

SCREENSHOT_LOCATE_WAIT = 100
SCREENSHOT_LOAD_WAIT = 600

# Email configuration
SMTP_HOST = "REMOVED"
SMTP_STARTTLS = True
SMTP_SSL = True
SMTP_USER = "REMOVED"
SMTP_PORT = 25
SMTP_PASSWORD = "REMOVED"
SMTP_MAIL_FROM = "REMOVED"

## https://superset.apache.org/docs/installation/alerts-reports/ webdriver cfg
# WebDriver configuration
# If you use Firefox, you can stick with default values
# If you use Chrome, then add the following WEBDRIVER_TYPE and WEBDRIVER_OPTION_ARGS
WEBDRIVER_TYPE = "chrome"
WEBDRIVER_OPTION_ARGS = [
    "--force-device-scale-factor=2.0",
    "--high-dpi-support=2.0",
    "--headless",
    "--disable-gpu",
    "--disable-dev-shm-usage",
    "--no-sandbox",
    "--disable-setuid-sandbox",
    "--disable-extensions",
]

# This is for internal use, you can keep http
WEBDRIVER_BASEURL="http://superset:8088"
# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY="https://superset.localhost/"

i'm getting the same error

@nigzak thanks for all the effort you put into filing this issue, and sorry it slipped through the cracks for so long. A lot of updates have been made in this area. Can you confirm whether or not this is still an issue? If it is, we'll do our best to repro/triage accordingly (CC @yousoph - happy to help track this with you as needed)

Hi @rusackas
I have added both driver in my container (still like this :)) and I am using currently CHROME variant.
I have shortly checked the official documentation again on page - and its still buggy. This should be at least fixed; if you use it like this it will not work
Official Documentation => https://superset.apache.org/docs/installation/alerts-reports/

This walk-through is not working because the versions are not matching and the use will fail.
Minimum suggested fix: remove "_88" to use latest version of chromedriver.
With this you install the latest chrome with the _88 chromdriver - they are not compatible
/// from up
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

exact code lines where are not matching on docu page:
https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
// downloads latest chrome (currently seems to be in linux at the moment V 108.0.5359.124)
...
export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \
    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip
// downloads CHROMEDRIVER V88

==> V88 and V108 are not compatible

With this fix currently chromedriver version works.
If Gecko works I currently don't know sorry ... I am happy that I found at least one working config :)

Just opened a teensy PR with your suggestion. If that merges, it should close this issue. Thanks for the report and the update!


Review Option Trading Fee Modelling for Interactive Brokers

Expected Behavior
InteractiveBrokersFeeModel reflects IB fee structure for options.
Actual Behavior
InteractiveBrokersFeeModel always returns 0.25 rate.
Potential Solution
In this statement, InteractiveBrokersFeeModel.cs#L99, we can use Security.Price or Order.Price should be set by the FillModel.
Reproducing the Problem
USAOptionFee expected value is wrong. For 1000 contracts of an option at $100, we should not expect $250, but $700.
Checklist

[x] I have completely filled out this template
[x] I have confirmed that this issue exists on the current master branch
[x] I have confirmed that this is not a duplicate issue by searching issues
[x] I have provided detailed steps to reproduce the issue

This happens everywhere the fee model is used, for instance, checking margin or buying power will get a wrong fee calculation as well

I can't think of how to solve this without changing significantly how the fee model works. In my mind, it should be based on a set of fills, not an order. For instance, say you put in an order and it partially fills at two different premium tiers (for example a buy order that clears the size at 0.05 and then partially fills some at 0.06), in this case, I think the premium would be pro-rata. This may not be true and I am going to ask IB, however, even if it isn't, then you need to know all the fills to properly calculate the fee.
Maybe it needs two API's, one that takes OrderFeeParameters and one that takes a list of fills or similar enclosing param object. The first could be used for any of the pre-send checks using conservative values, and the second in the transaction handler to calculate actual fees.

Addressed by setting an approximation for the monthly volume at the start of the algorithm or via the security initializer
https://github.com/QuantConnect/Lean/blame/master/Common/Orders/Fees/InteractiveBrokersFeeModel.cs#L51
9:25
/// <summary>
        /// Initializes a new instance of the <see cref="ImmediateFillModel"/>
        /// </summary>
        /// <param name="monthlyForexTradeAmountInUSDollars">Monthly FX dollar volume traded</param>
        /// <param name="monthlyOptionsTradeAmountInContracts">Monthly options contracts traded</param>
        public InteractiveBrokersFeeModel(decimal monthlyForexTradeAmountInUSDollars = 0, decimal monthlyOptionsTradeAmountInContracts = 0)
        {
            ProcessForexRateSchedule(monthlyForexTradeAmountInUSDollars, out _forexCommissionRate, out _forexMinimumOrderFee);
            Func<decimal, decimal, CashAmount> optionsCommissionFunc;
            ProcessOptionsRateSchedule(monthlyOptionsTradeAmountInContracts, out optionsCommissionFunc);
            // only USA for now
            _optionFee.Add(Market.USA, optionsCommissionFunc);
        }


duffle build followed by duffle export should work

If you do a duffle build followed by a (full-bundle) duffle export then you get a baffling error (per #824), the significance of which is "you need to push the invocation image first," even though you may already have the invocation image in your local Docker registry as a result of duffle build.
The reason that Duffle always attempts an image pull is so that it can work in environments where there is no local Docker daemon (thanks @glyn for the explanation).  But this makes for a non-smooth build-then-export experience, not made easier by the cryptic error.
Some possible solutions:

duffle build could always push the invocation image.  @glyn has pointed out that this avoids problems where the user does a duffle build followed by duffle export -t (manifest only bundle).  At the moment, the exported thin bundle will Work On My Machine TM, but fail when I give it to someone else because I haven't published the image.  Downside is that maybe I don't want to put my invocation image up in public just yet; it also makes it harder to test locally, e.g. using Kind - these problems could be mitigated by a duffle build --push-image=false option.

duffle export could check whether there is a local Docker daemon, and if so check that before resorting to a pull.

Or something else of course!

Another idea: duffle export -t could perform the push - this would address the 'exported thin bundle fails on consumers' machines' problem, and makes some kind of sense because export implies an intent to distribute/publish more than build does.
This would still require duffle export without the -t to check the local Docker daemon if there was one, as conceptually there's no need to push in the full bundle scenario - your images are included in the export and don't need to be placed in a separate registry.

... these problems could be mitigated by a duffle build --push-image=false option

Agreed, it's not always appropriate for duffle build to push the image.

duffle export could check whether there is a local Docker daemon, and if so check that before resorting to a pull.

That feels like a clean solution, but it's non-trivial. We would need to extend pivotal/image-relocation to support that (or, if that's not feasible, see if there is a different library for writing the OCI image layout).

Another idea: duffle export -t could perform the push

I think that behaviour would be rather surprising. Also, the user can issue duffle build -o to get a thin bundle without using duffle export -t and then we are back to the same issue - if they give that thin bundle to someone using a different docker daemon, the other person can fall foul of the missing invocation image.

duffle export could check whether there is a local Docker daemon, and if so check that before resorting to a pull.
That feels like a clean solution, but it's non-trivial. We would need to extend pivotal/image-relocation to support that (or, if that's not feasible, see if there is a different library for writing the OCI image layout).

Looking into this solution.

@itowlson Would you care to review https://github.com/pivotal/image-relocation/pull/18?

@glyn I don't feel qualified to review it at a code level, but the approach looks good and I agree with your comment about error reporting.  Thanks!

It turns out that the option of exporting images from the docker daemon is unsound because the docker daemon makes no guarantee to create the same content digest for an image as the image's repository (which belongs to a specific registry with specific compression algorithms etc.). So we are back to the drawing board with this issue. The remaining options appear to be:

duffle build providing an option, possibly even the default, to push the invocation image
duffle export to push all images to ensure that some updates are not "stuck" in the daemon.

I think a combination of 1 and 3:

add a flag to build to allow users to opt out of pushing by default
export to push all of them anyway.

Agreed. Compare cnab-to-oci behaviour, which is analogous to export:

Note: cnab-to-oci does not push images from your docker daemon image store.

Unassigning so someone else can take this. I won't be able to get round to it for some time.


⚠ Bofrost.nl has degraded performance

In 13c64c1, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1012 ms

Resolved: Bofrost.nl performance has improved in d2bd524.


Requests to update to kernel 6.2+

At this moment the generic DTs are running LTS kernel 6.1, this issue tracks requests for features that come between 6.2 and the next LTS version.

Linux 6.2 brings rtw88 module, that adds support for USB wifi devices based on Realtek 8822BU chipset. Thoses devices are affordable and very easily sourceable so they are quite common.
Interestingly enough, an out-of-tree driver is provided in BalenaOS for NUC (cf. https://github.com/balena-os/balena-intel/tree/master/layers/meta-balena-genericx86/recipes-kernel/rtl8812bu), but not in generic. But NUC image is still on 5.18 at this time.
Building out-of-tree or backports would work for balenaos, but now that secureboot is available, loading out-of-tree kernel can be painful, so having in-kernel module support for theses USB wifi devices can be a good thing.

6.6 is the new LTS, we should update to that

This is also necessary for 12+ gen Intel iGPUs to work properly with HW acceleration.

Hi, any update on this?

Hi, created https://github.com/balena-os/balena-generic/pull/456 for this

Kernel version 6.6 is now available in OS release v6.0.5+rev4


Trigger 'click' with leveled slots causes "Duplicate presence of slot"

Version
1.0.0-beta.12
Reproduction link
https://gist.github.com/nerdcave/a76cbed0bb92bb93972f0232d9c8a1c0
Steps to reproduce
Run the test with Jasmine.
What is expected?
No warnings.
What is actually happening?
ERROR: '[Vue warn]: Duplicate presence of slot "content" found in the same render tree - this will likely cause render errors.

The warning will go away if you 1) remove the wrapper.find('div').trigger('click') -or- 2) remove slot-scope="props" off the template.
Also, just to note, if I don't stub the Child, I get: [Vue warn]: Unknown custom element: <Child> (not sure if this is normal - I assumed mount() could render it without an explicit stub).

Just an update: I don't encounter either of these issues in 1.0.0-beta.10.

This issue has been fixed in beta.13. I've added a  test case to avoid future regressions