Impacts of CDC when patching SQL server

Add a topic about impacts of CDC when patching instance. If instance enters on script upgrade mode, it will runs proc sp_vupgrade_replication, which runs sp_cdc_vupgrade. In this proc, it can rebuild indexes. I wokred on company that experinced this problem in SQL Server 2008 R2, and after talking with support, it was fixed, but current code (checked on version 2016), can trigger these rebuilds yet. BEcause this, i guess is important alert readers for they plan instance patching.

@rrg92 : Thanks for your contribution! The author, @rothja, has been notified to review your proposed change.

@rrg92 Thank you for the suggestion! Give me some time to review this and I'll get back to you soon.

@rothja : Thanks for your contribution! The author, @rothja, has been notified to review your proposed change.

@rrg92 Sorry for the long delay. I did a little research and then went through your suggestion and made some formatting and wording changes to your change. I'm going to merge this in now. Thank you for your feedback and for taking time to improve the docs!

Nice @rothja! Thanks to your attention to this.

Hey @rothja, the merge was made and this change are on live branch, but not in the page.  What is the frequency the page get synced with live branch?

@rrg92 Thanks for the follow-up. We had a very rare publishing freeze last week. It is lifted today, and I expect you'll see the changes by tomorrow morning at the latest. Normally, public PRs go through in about 24 hours after they are merged in. Thanks!


Make the schema validation dynamically be turned off/on by using config property

I am using schema validation in my Quarkus application by marking the web services with relevant annotation (SchemaValidation). There are cases when it needed to be turned off, but it is not possible to turn it off dynamically using application properties config. It would be ideal if it was necessary to turn it off/on, also if it could be done using runtime arguments.

I hope you mean this to be only a boot time switch? "Dynamically" might imply that on/off would work also later during the life time of the application. That would be hard to implement and I hope you do not mean that :)

I hope you mean this to be only a boot time switch?
Yes, I do mean that. :)

Could you give me a time frame when this feature can be realized? @ppalaga

I'd say it is up to you as long as you are the only person who made this wish :)
If you would like to get it delivered in the next release, then I plan to release 2.6.0 around Nov. 15th right after Quarkus 2.6.0 Core.


Dist not donwload with bower

Hello,
I want to install Popper.js in es5 and version 1.9.1 with bower in my project, and I followed your recommandation with the command:
bower install popper.js=https://unpkg.com/popper.js --save
I tried to add a version to the url but can't find any solution here because bower doesn't like version target on url package. So I tried to install it with that command:
bower install<EMAIL_ADDRESS>But the "dist/" folder is not present in the bower package donwloaded and I need the es5 version. I think it's because the folder isn't present on the master branch on github. Is that possible to add it?
Thanks for your work and your help!

Bower is (almost) deprecated and their own maintainers suggest to move to Yarn.
I opened an issue for you here:
https://github.com/unpkg/unpkg.com/issues/33
I can't do anything else.

Ok, thank you.

https://github.com/FezVrasta/popper.js/issues/390


fix javadoc errors - restore javadoc failOnError to default:true

Removed unrecognized "@tests" annotations in comments. Removed incomplete comments where no added info was provided by the existing comment. Completed incomplete comments. Some other minor cleanups.
The "import" cleanups were from my IDE automagically, and they appear better to me. Will remove them if preferred.

Looks much better, thanks for fixing :)


Any chance we will get this onto dockerhub?

Hi there, sorry about the late reply.
We don't have any plans to do that, but it's trivial to build a Docker image yourself.
I'll leave this issue open as we might do that in the future, but it's currently not a high priority.


Census 2020 example

Created a new example using the 2020 US census dataset.

[x] minor updates on the 2010 census example - Moved to #459

I suspect it is due to https://github.com/holoviz-topics/examples/pull/429 but I'm not sure how to resolve it.

You need to re-create the conda environment locally following the contributing guide.

The test file added is a 0.1% sample of the full dataset but it is still about 8MB in size. I don't know if that is too large and should be reduced further.

It's still way too large. You should aim for the minimum dataset size possible, it's fine if it's just a few KB as long as it contains data that is representative of the whole dataset. For instance, if the code expects some data category, then it should be in the sample dataset to let the notebook run entirely.

However, I tried renaming both to census2010 and census2020 but the doit validate step emits a warning that only lower case characters and underscore allowed in the naming

Sounds like a bug in the validation code, something like census2020 should be allowed.

Replying to your comment elsewhere:

Thank you. I'm still in favor of renaming the first one to census2010 though.

If you intend to rename it, then redirect links have to be set up:

Full link: https://examples.holoviz.org/gallery/census/census.html to https://examples.holoviz.org/gallery/census2010/census2010.html
Shortcut link: https://examples.holoviz.org/census to https://examples.holoviz.org/census2010
Unfortunately, it's not super easy to set a redirect link for the deployment itself (https://census-notebook.holoviz-demo.anaconda.com/notebooks/census.ipynb), so renaming would break it. We have recently broken them all (new subdomain) and no one complained as far as I know so it seems it wouldn't be too bad.

Alternatively, we could just:

Change the title property in the project YAML to Census 2010
Change the notebook top-level heading to Census 2010

Alternatively, we could just:

Change the title property in the project YAML to Census 2010
Change the notebook top-level heading to Census 2010

I already did these in this PR. Would that be enough to differentiate both examples eventually?

Would that be enough to differentiate both examples eventually?

I think so?

My suggestion was that you use the processing script to save it to disk as new data and use that data in the notebook.

My suggestion was that you use the processing script to save it to disk as new data and use that data in the notebook.

Oh? Alright then. Will do...

@Azaya89 you will need to re-lock the project as the solve is failing:
Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed

PackagesNotFoundError: The following packages are not available from current channels:

  - libcurl==8.11.0=hbbe4b11_0

Not your fault, sometimes conda-forge marks some packages as broken (adding the broken label on conda-forge) which means these packages are no longer available on the conda-forge channel but on conda-forge/label/broken.
https://github.com/conda-forge/admin-requests/pull/1147

It was hard to follow the discussion above, but it looks like the original one is still called census rather than census2010, and if so, I agree -- let's preserve those links. We'll put a link to census2020 within census so that wherever someone lands they will find both.
Even apart from the file size, the test data seems more complex than necessary.  I think you can provide an option to write_parquet to store the test data into a single flat .parq file rather than a directory full of separate part files.  Looks like the old census didn't do that, but I don't think there was a good reason for that, as e.g. opensky uses a single parquet file.

It was hard to follow the discussion above, but it looks like the original one is still called census rather than census2010, and if so, I agree -- let's preserve those links.

Correct.

We'll put a link to census2020 within census so that wherever someone lands they will find both.

OK. That will require a separate PR then.

Even apart from the file size, the test data seems more complex than necessary. I think you can provide an option to write_parquet to store the test data into a single flat .parq file rather than a directory full of separate part files. Looks like the old census didn't do that, but I don't think there was a good reason for that, as e.g. opensky uses a single parquet file.

OK. I will do that.

OK. That will require a separate PR then.

I'd make sense doing it in this PR.

OK. That will require a separate PR then.

I'd make sense doing it in this PR.

This PR is about census2020 not the original census example. I think Jim is saying that we should put a link in the census PR that links to this one.

I don't see any PR open about the original census example, which means that the edit to census should be made here, so that when this PR is merged the original census example points back to this one. If there were a separate PR open for census already that could cause conflicts, then sure, you could make that change there, but otherwise here makes the most sense because it's a change about census2020 (even if it is a change to the original example).

A few notes for review:

I'm unable to add the label tiles to the dashboard. It works fine on individual plots but when added to the dashboard plot, it causes the whole plot to go white. I have tried to debug the situation but I don't know how to figure it out. I tried to plot the label only in a separate cell and I noticed that the labels appear blank by default and only show at a certain zoom level, per the attached video. I don't know if it has something to do with the problem.

https://github.com/user-attachments/assets/058c4403-db95-4c23-9f21-db8ada6c1380
I'll need some help with adding labels to the dashboard plot like the way it is in the standalone plots.

When you zoom or pan the plot and then interact with the map_tile checkbox or adjust the map_alpha slider, the plot resets to its original zoom level, losing your current view. I suspect the root of the problem lies in how the plot is updated when you interact with those parameters (_update_map is called which updates self.base_map and this in turn calls _update_plot). This is not what I want but I also don't know how to resolve it.

https://github.com/user-attachments/assets/c47b9061-08da-493c-ae03-62e70068baa9

@Azaya89 just to let you know that I won't have the bandwidth to review this before the end of the year, in case it's urgent.

@Azaya89 just to let you know that I won't have the bandwidth to review this before the end of the year, in case it's urgent.

No problem. I can't say it's urgent :)

@jbednar a thought I had after your comment in https://github.com/holoviz-topics/examples/issues/477#issuecomment-2524312011, wouldn't it be more appropriate to extend the original census example instead of adding a new one? I haven't yet run Census 2020 (this PR), from having a quick look at the code it doesn't look so different so I have the impression maintaining the two notebooks with the same environment should be possible.

I think there are three things to consider when deciding whether examples should be grouped into a single directory:

Are the examples thematically linked, such that you'd reasonably want to learn about one once you click on the other? (✔ )
Do they share essentially the same environment, such that it makes sense to set up a single environment for both? (✔ )
Can they use the same datasets? If different, does adding a new notebook add only minimal file or download size? (❌ ).

Here census2010 and census2020 clearly meet the first two criteria, but for 3, they have large and equal file sizes, and most people are only likely to want one or the other. So unless we have a way to download the right data per notebook rather than per example (which we might well end up with as we move away from anaconda_project), then combining 2010 and 2020 would cause most users to require double the disk space, which seems problematic.

they have large and equal file sizes

I launched these two ZIP downloads and was surprised by the difference in file sizes, with 1.3GB for census2010 and 4GB for census2020.

[ ] We need to check why the files differ so much, are there more columns in census2020? If so, are they used? Or is the data stored differently (dtype, compression)?

@jbednar I'm asking this question as it is quite clear, to me at least, that examples are meant to be kept up-to-date, i.e. this site is not a blog. We often hear that we have too many APIs (last was during the last steering committee meeting on Friday), we should try to expose our users to the best practices only. It means that this growing number of examples needs to be maintained; this year, we have updated about half of them and it wasn't trivial. So I'm going to challenge adding census 2020 if it's just a slight variation of census 2010 with a slightly different dataset? To illustrate this, census 2010 (which was priority 4 on our NF SDG list, we almost got to it) has a bug in the legend and might be able to use hvPlot directly.

[ ]   We need to check why the files differ so much, are there more columns in census2020? If so, are they used? Or is the data stored differently (dtype, compression)?

I can point out here that the 2010 dataset contains ~306 million rows while the 2020 dataset contains over 334 million. That's an additional ~28 million rows. I'm sure that alone is not the reason for the large difference in file size but I think it also play a role?

That's not enough to make it 3x bigger.

[ ]    We need to check why the files differ so much, are there more columns in census2020? If so, are they used? Or is the data stored differently (dtype, compression)?

I can point out here that the 2010 dataset contains ~306 million rows while the 2020 dataset contains over 334 million. That's an additional ~28 million rows. I'm sure that alone is not the reason for the large difference in file size but I think it also play a role?

That's not enough to make it 3x bigger.

Sure!

Right; we explicitly chose 32 bits (and would use 16 bits if that were an easy option) to reduce file size.
Census 2020 is a special case of people expecting the data to be more up to date. The code should not be different from 2010, so the extra maintenance should not be prohibitive.

The new dataset has been uploaded now. It's about 2.15 GB on disk.

Is the race field a categorical? Category should be much smaller than string

So I downloaded the two ZIP files (census 2010 and 2020) and compared them.
File sizes: old 1.44GB vs new 1.62GB
Files in the folder: old 36 vs new 141
Race values:

Schemas:

Compression: both use SNAPPY
So while the file sizes are now closer, there are still a few differences:

way more partitions for the new one, what is the impact on performance?
I'm not sure why the x,y values aren't displayed as Float 32 in the new one (read with DuckDB)
race is not stored as categorical in any of them, I'm not sure why?
race values are different, shortened to one letter in the old file while complete in the new one

I'd also note that this example installs fastparquet. I think that in the end it's pyarrow that is used as the engine as it's installed (see the lockfile) and it has become the default engine in Dask (https://docs.dask.org/en/stable/changelog.html#fastparquet-engine-deprecated). Worth checking though.

I would still prefer if we had a single census example, the above shows that it's not hard for two similar examples to diverge enough to cause maintenance pain. How about updating the original census to use the 2020 dataset and dropping entirely the 2010 one? Pretty sure the text in the text in the original example still applies to the new dataset.

Yeah (before I changed the 'x' and 'y' types)

Ok then it's just that I don't know how to find out whether a column is categorical using DuckDB :) Interestingly, the only place where I can see there might be some categories is in the old file. So, yes clearly my approach was wrong, at least for finding out whether a column is categorical or not.

@Azaya89 I see you closed https://github.com/holoviz-topics/examples/issues/178. Tbh I'm not sure it should be closed. This issue is about implementing spatial indexing with spatialpandas for census. You wrote you updated the example in https://github.com/holoviz-topics/examples/pull/459 but the changes this PR contains were unrelated to spatial indexing. @jbednar shouldn't we try to re-add spatial indexing to the census example? It seems like it could greatly benefit from it?

Yes, very much so! Spatial indexing is very important.
BTW, I've had a hard time being sure when it is in use and when not. I seem to recall there being some app we made that showed how many partitions were used in the current view, which would be really valuable for showing the effect of spatial indexing.

How about updating the original census to use the 2020 dataset and dropping entirely the 2010 one? Pretty sure the text in the text in the original example still applies to the new dataset.

I haven't seen the actual detailed results, but if you're right that the same conclusions apply, that might be a reasonable approach. I'd still want a separate notebook looking at the differences between the two, but that would be a bonus add-on that could load the older data and massage the newer data to match the older. If someone could render the old notebook with the new data and point me to a copy of both I'd be happy to make that call.

I propose having the 2010 census as a historical (static) document, with an admonition referring to the newer census, 2020.
Because the examples are not versioned, we lose some valuable knowledge by always pushing to the latest and greatest API we have decided to recommend. Census 2020 uses hvplot and panel, but I find it interesting that you can see how our tools developed in the current Census 2010, going from "pure" Datashader to using it along with HoloViews.

Because the examples are not versioned, we lose some valuable knowledge by always pushing to the latest and greatest API we have decided to recommend.

Well, not versioned apart from Git, that is! :-)

There are many examples that could be updated to use a newer dataset (too many to list them here!), I'd be concerned with the precedent Census 2020 would set.
I'm in favor of having a single census example
I have no preference for the dataset used (2010, 2020, 2010 and 2020)

I think the census example is in a different category; it's so iconic that it's nearly a logo for Datashader.  We wouldn't take the time to update e.g. the gull_tracking example if it had new data, because it wouldn't change anything. But at least in the USA, people want to explore the actual data involved, e.g. to see how segregated their own neighborhood is. Having that information be 14 years out of date makes it much less effective in reaching people's actual interest. I don't think updating census will set any sort of precedent that would apply to other examples.
Also note that originally I was proposing that census 2020 be very basic compared to the 2010, as I haven't seen whether the data is suitable for doing all the sort of analyses we did for 2010. But if all the same analyses can be done and have qualitatively similar conclusions, then I'm happy for 2020 to replace 2010 for most purposes. Still, 2010 has been so widely promoted and referred to that it may be best to keep it at that same address. Anyway, I haven't seen any of the 2020 results myself, so I can't say anything about them!

Anyway, I haven't seen any of the 2020 results myself, so I can't say anything about them!

FWIW the example is pretty easy to run :) I also recommend running it directly instead of waiting for the dev site to be built as all the plots require a live kernel for full interactivity.
Interestingly, the original census example is the most visited of all over the last 6 months (for reference, that's about 10% of the pageviews of the Tabulator component). I'm not sure where the visitors come from, the highest referrer being a redirect link.

Interestingly, the original census example is the most visited of all over the last 6 months

Some fraction of those are me! I show those results to people all the time. But not 170 times a month, no. Anyway, yes, this is a popular example, and we should keep having that link work.

FWIW the example is pretty easy to run :)

I'm sure. I'm afraid to run the example until it's ready, because I either get stuck in some conda environment hell, or it works, and I notice a ton of stuff I want to update, and then I'm late for my next meeting or my family is asking where dinner is. :-) But if it's ready, I'll check it out.

Anyway, yes, this is a popular example, and we should keep having that link work.

Oh yeah keeping the link working is a must (I've tried to carefully set redirects to any page we've removed), the question is what content it should display.

 I can't help you with your other problems 🙃

FWIW the example is pretty easy to run :)

Ok, I did get it to run. I didn't have any dependency hell this time, but I did have nasty git merge conflicts to deal with thanks to the unpleasant interactions Jupyter has with revision control, for all the random notebooks in examples that I've run and happened to modify as I use them. I've dealt with all that, and now I can see that the 2020 data is not ready to replace 2010.
Here's Chicago in 2010:

and in 2020:

I don't know if any of the extra detail in 2020 is meaningful, but there are definitely patterns with the racial coloring that look entirely like artifacts rather than meaningful data. E.g. each little block seems to be sorted by race, with Asians living in the more Northern portion of the block, which surely isn't really true:

I would guess that we have bugs in how the individual points are being synthesized from the block data, e.g. maybe the data is sorted by race and then has locations generated in order? In any case the 2020 data is definitely not ready to replace the 2010 data.


settings - role add user - ldapsearch for users starting with wildcard (e.g. *ser1) causes "non-LDAP exception"

tested with ext. openldap

probably already removed - at least worked during latest test


refactor(linter): temporarily remove unknown rules checking

I had intended to leave this in until we could rework some of the rule/plugin name resolution code, however this is causing issues with merging https://github.com/oxc-project/oxc/pull/6974. The mutability of self is difficult to resolve in that PR without more drastic changes. Since this isn't currently helping us out, I am simply removing the code for now until we can revisit this.

#7260  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @camchenry and the rest of your teammates on  Graphite

Merge activity

Nov 12, 10:40 PM EST: The merge label '0-merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.


Don't render value content blocks inside bootstrap rows and cols

There is no reason to do this as far as I can tell, and this fixes the floating figure messing with paragraph alignment issue. Minimising any collisions of negative margins + flexboxes + floating elements seems like a good idea.

Also, not caused by this PR as it is currently on staging but I can see a Loading glossary... message in the hint tabs even when the glossary terms are visible!
This is caused by that glossary terms causing crashes bug fix, I can just mark Loading glossary... as no print - I wonder how this looked before?


Object editor changes - Oracle

When I open some source (from DB) and i change something by mistake, dbeaver
ask me to save changes to DB. It's situation near a big trouble. ;-)
Oracle - I see object errors (package, procedure...) only after compilation.

Describe the solution you'd like

Allow to open sources in read only mode by default. Some general setting for editor? Then allow editing by some button in object editor (readonly switch).
Load actual errors for source from dba_errors / all_errors.

for 2, which DBeaver version are you using? 6.2.1 should include a fix for this.

I'm using 6.2.0, then 6.2.1 will be fine. Thanks. :-)

Seem (2) it doesnt work in 6.2.4. I see only information about object validity and no errors.

yeah, I misunderstood your question. Since 6.2.1 there was a fix for packages compilation on save.
When editor is opened you don't have the error list available if you don't compile (which could be impossible if you're not the procedure/package owner), so your request would be a nice addition! I hope the developers pick this up


What to do on slog_extra::Async channel overflowing.

Could be controlled by a builder pattern giving options:

block sender
drop logging records (and log one message about the overflow?)
keep overflowing

number of entries that are considered an overflow

From large systems: start dropping, @ end of dropping generate an error with "X messages dropped due to overload" ...

Thanks. That seems most reasonable ATM, yes.
I think it can be done with a builder pattern to configure it, and make what you described a default.

@przygienda I guess some form of histereza is neccessary too. Eg. wait for the whole buffer to get drained before start logging again. Makes sense?

This is fixed in slog-async v0.2.0-alpha2


Breadcrumb show this in the Virtual Machines - Linux category

This applies to both Windows and Linux Virtual Machines.
Actual breadcrump: Virtual Machines - Linux
Expected breadcrum: Virtual Machines

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

ID: e63969f1-7434-0a6e-dd65-2aecd553c51b
Version Independent ID: b53ddd73-82b7-3272-7ff6-d82594514c4e
Content: Azure virtual machine serial console
Content Source: articles/virtual-machines/linux/serial-console.md
Service: virtual-machines-linux
GitHub Login: @harijay
Microsoft Alias: harijay

Thanks for the feedback, @jawn. We do actually have two separate doc sets for Linux and Windows, though many of the docs are indeed applicable to both. The breadcrumb in this instance is correct. The Windows doc, which includes the Windows breadcrumb and OS-specific steps such as for bcedit, is available at https://docs.microsoft.com/en-gb/azure/virtual-machines/windows/serial-console
For now, #please-close

Thanks for the clarification @iainfoulds.


Fixup PR #1471, adding cargo test --release

This just fixes up the test so it can pass the bots.

r? @wycats
(rust_highfive has picked a reviewer for you, use r? to override)

@bors: r+ 79c7741

:hourglass: Testing commit 79c7741 with merge 095847b...

:sunny: Test successful - cargo-linux-32, cargo-linux-64, cargo-mac-32, cargo-mac-64, cargo-win-32, cargo-win-64


Tests are failing on energystan.com

Looking at whois record energystan.com was updated today and belongs to a parking service.
Better not use it on tests.

Sorry , working on an outdated branch.

Yes, this is what I fixed very recently :-)


Add manual testing instructions for help and for adding, deleting and editing rooms

What this does

Add manual testing instructions for help and for adding, deleting and editing rooms
I've also added user stories for adding and deleting rooms

How to test
Help proofread please.

Codecov Report

Merging #198 (f84d488) into master (0f582fb) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #198   +/-   ##
=========================================
  Coverage     72.82%   72.82%
  Complexity     1031     1031
=========================================
  Files           152      152
  Lines          3341     3341
  Branches        423      423
=========================================
  Hits           2433     2433
  Misses          798      798
  Partials        110      110

Continue to review full report at Codecov.

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


fix: Status message not cleared

Explanation of Change

Fixed Issues

$ https://github.com/Expensify/App/issues/53518
PROPOSAL: https://github.com/Expensify/App/issues/53518#issuecomment-2516417079
Tests

Set a status message with a "Clear after" date in the profile.
Wait until the specified "Clear after" date has passed.
Check if the status message is automatically cleared.
Verify that: The status message should be automatically cleared once the "Clear after" date is reached, ensuring timely updates to the display.

[x] Verify that no errors appear in the JS console

Offline tests

same as above
QA Steps

// TODO: These must be filled out, or the issue title must include "[No QA]."
same as above

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/user-attachments/assets/609f9e43-40c6-437d-9f07-492447be6a86

Android: mWeb Chrome

https://github.com/user-attachments/assets/d8db7f44-8bfc-441d-a966-c75e07fd3c54

iOS: Native

https://github.com/user-attachments/assets/f6b15157-8c0e-49ce-89a3-5f125d2a4a56

iOS: mWeb Safari

https://github.com/user-attachments/assets/6de9ffff-ca31-4e92-b9f1-d92dd4605721

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/180dd0cf-d02a-4f4b-a89f-fc81f314ba03

MacOS: Desktop

https://github.com/user-attachments/assets/1a069172-115b-40c8-b2ff-e318c7be6801

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@eh2077 i updated, please check again

@rlinoz Can you help add pusher event for the expired status?

I was testing this the other day and I think we already have it? Isn't it working?

@rlinoz No, it doesn’t work from my end. I tested on production iOS app and the Web, the expired status is cleared even if I reopen the App or refresh the page.

@eh2077 interesting, when I set it up to clear after 2 minutes or so it works, can you share the steps you are taking please?

@nkdengineer There're conflicts need to be resolved.

@eh2077 i resolved

friendly bump @eh2077


service page team section remove team member not working properly

remove button is not working on  team section, it print message only but didn't remove member


Localization?

Heya, just discovered the tool, and it's a pretty nice project 👍
By checking code and contributions, I noticed that action names weren't translated, nor the interface.
I'm not a React dev so I don't know about what to use for the UI part, but I can provide the action names and the C# code to extract them from your game so you can update it if you're faster than me 😄
See https://github.com/Supamiu/ffxiv-teamcraft/blob/staging/src/app/core/data/sources/actions.json for action names and https://github.com/Supamiu/ffxiv-teamcraft/tree/staging/data-extraction/XIVExtractor for the extraction code.

Addressed by #81, technically. We're currently working on implementing Crowdin or some other crowd-translation service into the project, but the base is already there.
This was done pretty fast, thankfully.

Nice work ! If you need anything extracted from the game, feel free to ask, I have extracted a lot of localized stuff in order to have everything sync so I can either give you extractor source code or json files directly, everything is open source.

This one is also prob done since Crowdin is integrated-ish and both JEDF and KR/CN are up. Actions etc are coming from xivapi. Unless 100% completion is wanted, I guess this is also done.


Ported over to work with Vue 2.0

Just wanted to post this here, thank you for the wonderful component needed to use it in a 2.0 project so ported it over (some deprecated functions).

Whoops, code paste didn't work please see attached.
Slider.vue.zip

vue.js?b3dc:2643[Vue warn]: Failed to resolve directive: el
(found in anonymous component - use the "name" option for better debugging messages.)

@losthumans just to clarify.. the ziped fiile is a working version of this plugin for Vue2.0?

@losthumans just paste ur code with markdown syntax like this below
```js
// your code here
` ` `

how to solve such problem??need help!!~
vue.js?b3dc:2643[Vue warn]: Failed to resolve directive: el
(found in anonymous component - use the "name" option for better debugging messages.)


add relaunch script

As you know we have stability problems with docker which crashes regularly. I am still trying to solve this problem in the meantime I propose to restart the docker every day at 1am using a cronjob and this bash script

This is not needed anymore thanks to #153


Build failed on Windows 11

run with command:
cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui sui-node
and error occurs as following:
error: failed to get `mysten-util-mem` as a dependency of package `workspace-hack v0.1.0 (C:\Users\haypo\.cargo\git\checkouts\sui-6ac459c53b1b685a\7fff531\crates\workspace-hack)`

Caused by:
  failed to load source for dependency `mysten-util-mem`

Caused by:
  Unable to update https://github.com/MystenLabs/mysten-infra/?rev=59defcc8fc2850459f8b955599dcae7072fcb365#59defcc8

Caused by:
  object not found - no match for id (59defcc8fc2850459f8b955599dcae7072fcb365); class=Odb (9); code=NotFound (-3)
error: failed to get `mysten-util-mem` as a dependency of package `workspace-hack v0.1.0 (C:\Users\haypo\.cargo\git\checkouts\sui-6ac459c53b1b685a\7fff531\crates\workspace-hack)`

Caused by:
  failed to load source for dependency `mysten-util-mem`

Caused by:
  Unable to update https://github.com/MystenLabs/mysten-infra/?rev=59defcc8fc2850459f8b955599dcae7072fcb365#59defcc8

Caused by:
  object not found - no match for id (59defcc8fc2850459f8b955599dcae7072fcb365); class=Odb (9); code=NotFound (-3)
     Summary Failed to install sui, sui-node (see error(s) above).
error: some crates failed to install

I wan't able to reproduce the problem. Tried on Windows 11 PRO.
Are you using CMD or Powershell?


Sema: Signatures of decls in local contexts always inherit availability.

Declarations nested in inlinable function bodies, such as var declarations, should not introduce new TypeRefinementContext nodes that are restricted to the deployment target. This bug was preventing availability checking from noticing availability errors when the occurred in a var declaration inside of a fragile function body:
@available(macOS 12.0, *)
public struct X {
  public init() {}
}

@_alwaysEmitIntoClient
public func x() {
  // This should be diagnosed, X is not always available
  let _ = X()
}

Resolves rdar://125564069

@swift-ci please test


Async task management improvements

I started off wanting to handle issue #458 (None batch_token when collecting AWS Batch jobs), but was unsatisfied with the code I'd have to write to retry whatever the dropped job was.
I ended up working on various things related to async jobs - status tracking, error reporting, more intelligent ordering of tasks, etc. Some of these ideas had been going through my mind for a while now.
Improved and encapsulated ordering/timing of async jobs
As an example, we had this part of the upload-annotations view (in upload/views.py):
        for image_id, annotations_for_image in uploaded_annotations.items():

            ...
            Point.objects.filter(image=img).delete()
            ...
            Point.objects.bulk_create(new_points)
            ...
            # Submit job with 1 hour delay to allow the view and thus DB
            # transaction to conclude before jobs are submitted.
            # Details: https://github.com/beijbom/coralnet-system/issues/31.
            backend_tasks.reset_features.apply_async(
                args=[img.id], eta=now() + timedelta(hours=1))

That final call is now changed to:
            # The uploaded images should be ready for feature extraction.
            queue_source_check(source_id)

queue_source_check() queues up a check_source Job. Before explaining the details of job queueing, I'll show the rough structure of check_source() first:
@task(name="Check Source")
@job_runner()
def check_source(source_id):
    ...
    [If there are images without features:]
        [Queue feature extraction jobs]
        return

    [If need new robot:]
        [Queue training job]
        return

    [If there are images to classify:]
        [Queue classification jobs]

So check_source() looks at the source status as a whole and queues whatever needs to be done next. It only queues one of extraction / training / classification, not a combo, so that things are less likely to run in the wrong order.
Even if the upload-annotations view has a guess that feature extraction is probably the next thing to run, it defers to check_source() to decide what to actually run next.
Also, check_source() will now be run daily for each source. We used to have a daily task which only checked which sources needed new classifiers. This meant that if extraction or classification ran in the wrong order, then images could be left unextracted / unclassified indefinitely. That shouldn't happen anymore. The only thing is that we should keep an eye on the check_source() runtime to make sure it's reasonable.
Coming back to queue_source_check(), it calls queue_job(). Here's what's roughly involved:
def queue_source_check(source_id, delay=None):
    queue_job('check_source', source_id, ...)

def queue_job(name, ..., initial_status=Job.PENDING):
    ...
    jobs = Job.objects.filter(job_name=name, ...)
    try:
        job = jobs.get(status__in=[Job.PENDING, Job.IN_PROGRESS])
    except Job.DoesNotExist:
        job = Job(...)
        job.save()
    else:
        logger.debug(f"Job [{job}] is already pending or in progress.")
        return None
    ...

Putting the existence check aside for now, the primary thing happening here is creating an instance of the Job model (defined in a new jobs app). A Job tracks the status of any async work unit we care to track. That includes a source_check, a feature extraction, a classifier training, or an image classification (API or otherwise). The idea is to handle these async units in a uniform fashion, so they can all benefit from the same developments in robustness, error handling, etc.
Some Jobs are immediately set as IN_PROGRESS, and others as just PENDING. Here's how PENDING Jobs are run - the run_scheduled_jobs() periodic task:
def get_scheduled_jobs():
    jobs = Job.objects.filter(status=Job.PENDING)
    jobs = jobs.filter(scheduled_start_date__lt=timezone.now())
    return jobs

@periodic_task(
    run_every=timedelta(minutes=3),
    ignore_result=True,
)
@full_job()
def run_scheduled_jobs():
    for job in get_scheduled_jobs():
        starter_task = job_starter_tasks[job.job_name]
        starter_task.delay(...)

So this task grabs any PENDING Jobs which are due to run, matches the Job with a particular celery task, and runs that celery task.
run_scheduled_jobs() runs in its own thread, separate from any thread that might create a Job instance. Therefore, it can't start a Job's celery task until the Job instance is committed to the database.
So, thinking back to that upload-annotations view, the check_source Job will be unknown to run_scheduled_jobs() until the upload-annotations view completes and the view's transaction is committed. This is why the explicit 1-hour delay is no longer needed. In general, views shouldn't have to worry much about task timing anymore: any Job queued up during the view can't be run until the view's finished.
For reference, the 1-hour delay is from PR #344, and issue #408 is related as well. Those issues show that we put a lot of thought into the upload-annotations timing issue in particular, and hopefully the new Job scheme makes this type of concern simpler to reason about.
Robustness against race conditions
The reliance on check_source() already addresses at least one race condition concern - ordering extraction vs. training. There are a few more things about the Job design which minimize race conditions:

queue_job() has guards against creating/running duplicate Jobs, e.g. two training Jobs for the same source, or two extract Jobs for the same image.
I cut out the details above, but the guard against duplicate in-progress Jobs is a database-level uniqueness check, making it as robust as possible against race conditions. This guard doesn't apply to Jobs that are already completed, so the last completed training Job for source X doesn't have to be cleaned up before running source X's training again.

After a Job is queued as PENDING, it needs to be started later. This is handled by start_pending_job():
def start_pending_job(job_name, arg_identifier):
    # select_for_update() locks these DB rows from evaluation time
    # to the end of the transaction. This ensures that we don't
    # have two threads starting the same job at the same time.
    # Instead, the first thread will get to run, while the second thread
    # will get a DatabaseError and return.
    # (This works most effectively if we're using autocommit when entering
    # this function.)
    jobs_queryset = Job.objects.select_for_update(nowait=True).filter(
        job_name=job_name,
        arg_identifier=arg_identifier,
        status__in=[Job.PENDING, Job.IN_PROGRESS],
    )
    with transaction.atomic():
        # Evaluate the query.
        try:
            jobs = list(jobs_queryset)
        except DatabaseError:
            # Probably tripped the select_for_update() row locking, meaning
            # there's another thread in here already.
            logger.info(
                f"Job [{job_name} / {arg_identifier}] is locked"
                f" to prevent overlapping runs.")
            return None

        ...
        job.status = Job.IN_PROGRESS
        job.save()
    ...

QuerySet.select_for_update() is probably the main way of doing database row-locking in Django. The idea here is to prevent two separate threads from simultaneously changing a single Job from PENDING to IN_PROGRESS.
So we have this guard against multi-starting Jobs, and we have the earlier guards against Job duplication. There's one more piece:

Decorators like @full_job and @job_runner can be placed over functions to track them as Jobs. The reason run_scheduled_jobs() is itself tracked as a Job is that it benefits from the guarantees against duplicate runs. This way, there's no danger of a single Job's celery task being started twice simultaneously (by different runs of run_scheduled_jobs()). Similarly, collect_spacer_jobs() is itself a Job, so that a single spacer-job can't be collected twice.
These three pieces together give us a good guarantee that the same Job isn't going to have simultaneous runs, which should cut out a host of potential race conditions.

A limitation: reset_features() and reset_classifiers_for_source() aren't currently tracked as Jobs, as I wasn't sure how to mesh those tasks well with check_source(). So this leaves a potential race condition along the lines of:

Submit feature extraction
Generate points + clear features (e.g. point regeneration)
Spacer runs feature extraction on old points
Feature extraction on old points is collected

There's a check in the feature collection code (step 4) which checks if the points are out of sync. So the remaining concern comes when steps 2 and 4 overlap in separate threads. More specifically:

Thread 4: rowcols = old Points from DB; they match the feature rowcols, so proceed
Thread 2: commit new Points; img.features.extracted = False
Thread 4: img.features.extracted = True

And so the image ends up marked as having features, but they don't match the new Points. However, the race condition to get this to happen appears to be quite fine-grained, so I'm willing to wait and see if it even comes up.

Consistent error handling across a Job's lifetime
We have Jobs that run in three phases: a pyspacer-submission celery task, in AWS Batch running pyspacer, and then a pyspacer-collection celery task.
I wanted errors of all three phases to report back to the Job's status and result-message fields, so I tried to unify the error handling between these different parts of the code. One common theme is that a JobError can be raised at various parts of the code, to indicate a (generally anticipated) situation which should result in the Job being marked with FAILURE status.
There's also support for catching unanticipated errors. This results in FAILURE status, creating an ErrorLog instance, and mailing the admins - much like a 500 Internal Server Error in our synchronous views. Previously, these uncaught errors in tasks could easily slip through the cracks, since they were only detectable by checking celeryworker log files.
In this part of a Job-decorator's code, report_task_error() is what handles the unanticipated-error situation:
            success = False
            result_message = None
            try:
                result_message = task_func(*task_args)
                success = True
            except JobError as e:
                result_message = str(e)
            except Exception as e:
                # Non-JobError, likely needs fixing:
                # report it like a server error
                result_message = str(e)
                self.report_task_error(task_func)
            finally:
                # Regardless of error or not, mark job as done
                finish_job(job, success=success, result_message=result_message)

Jobs also have an attempt_number field which is incremented each time the same job fails in a row.  We had this sort of logic for classifier training, but now it applies to all Jobs.
BatchQueue changes
As part of improving error handling, and the issue #458 error in particular, I did several things with BatchQueue.

This is the part that handles issue #458, which ended up being a bit more subtle than expected (as explained in the issue comments):
        # Iterate over not-yet-collected BatchJobs.
        for job in BatchJob.objects.exclude(
            status__in=['SUCCEEDED', 'FAILED']
        ):

            if job.batch_token is None:
                # Didn't get a batch token from AWS Batch. May indicate AWS
                # service problems (see coralnet issue 458) or it may just be
                # unlucky timing between submit and collect. Check the
                # create_date to be sure.
                if timezone.now() - job.create_date > timedelta(minutes=30):
                    # Likely an AWS service problem.
                    self.handle_job_failure(
                        job, "Failed to get AWS Batch token.")
                    job_statuses.append('DROPPED')
                else:
                    # Let's wait a bit longer.
                    job_statuses.append('NOT SUBMITTED')
                # In either case, continue to next job.
                continue

            ...

The BatchJob model now has a foreign key to Job, so that the Job's status can be updated if a problem is found with the BatchJob.

I noticed that collect_all_jobs() (now called collect_spacer_jobs()) was checking in-progress Batch jobs more than necessary. Here's how it was:
def collect_all_jobs():
    logger.info('Collecting all jobs in result queue.')
    queue = get_queue_class()()
    while True:
        job_res = queue.collect_job()
        if job_res:
            th.handle_job_result(job_res)
        else:
            break

class BatchQueue(BaseQueue):
    ...
    def collect_job(self) -> Optional[JobReturnMsg]:
        ...
        for job in BatchJob.objects.exclude(status='SUCCEEDED').\
                exclude(status='FAILED'):
            [If AWS Batch says succeeded:]
                job.status = 'SUCCEEDED'
                job.save()
                return return_msg
            [Else if AWS Batch says failed:]
                job.status = 'FAILED'
                job.save()
            [Else, running or other status: continue to next iteration]

So BatchQueue.collect_job() was looping over the available Batch jobs until it found a success, at which point it would return. Along the way, it would mark failed jobs as failed, so that those jobs wouldn't get revisited.
However, other job statuses like running would get skipped... and then revisited each time BatchQueue.collect_job() gets called in the while True loop, i.e. potentially once for every Batch-job success.
I ended up replacing this with a BatchQueue.collect_jobs() generator function. It goes through each Batch job exactly once, and uses the yield keyword each time it finds a successful job. And it's called only once by collect_spacer_jobs(), rather than being called in a while loop.

There's now a job status summary which is logged when collect_spacer_jobs() concludes, which looks something like "6 RUNNING, 13 STARTING, 2 SUCCEEDED".

There are now tests for the BatchQueue class, utilizing a mock of what boto3.client() would normally return, so that AWS isn't required for these tests.

Job dashboards
Last but not least, dashboard UIs. This is available from Admin Tools:

Click a source name to list jobs for a source:

check_source jobs seemed to clutter the main table, so instead I put the result message of the latest check_source at the top of the page.
From the main dashboard, click the non-source jobs link to go here:

Deploy jobs are included here since they're not involved in the 'progression' of a particular source.
Paginated with 100 jobs per page. Jobs are purged after 30 days, with the exception of non-error training Jobs (both accepted and rejected), which are kept indefinitely.
The source jobs list is also reachable for source members with Edit or Admin permissions. The source menu at the top has a new blue button "Jobs", and there's also this link below the classifier graph:

There are likely improvements that can be made, but it feels like a decent start, and way better than not having these dashboards at all.
Now people can actually check when training is in progress, rather than saying "I think the threshold for the next training has been met, so it's probably happening now?". And by "people" that includes me, without having to SSH into the server and type a bunch of commands.
Other stuff

vision_backend management commands have been refreshed (and most of them now have unit tests).
Extract and train commands previously had a force option which is now redundant. Now it's just: if you don't want to force, then call the check_source command, else call the extract / train commands.

Each ApiJobUnit instance now proxies most of its fields to a Job instance to cut down on redundant definitions (modify date, status, result message, etc.). I should say I'm not too happy with the model naming as is (Jobs being on the same level as ApiJob...Units?), but I couldn't think of a better naming scheme that seemed worth pushing right now.
I was similarly looking into transferring status tracking from Classifier to Job. However, I couldn't come up with a satisfying way of designing this, so I backed off. One problem is that Classifier has at least one status code which actually says why it failed ('lacking unique labels'), so that would have to be some kind of special case in Job's status.

We should update from Python 3.6 when we can (see the commit which mentions GitHub Actions).

Overall, issues that are potentially resolved: #458, #413, #159, beijbom/pyspacer#38

I'll update the production server when I'm up for it, which may not be right away. There are a good number of migrations to run, and there will likely be situations to monitor. Either with things working at all, the tweaked timings of the periodic tasks, error reporting frequency, etc. Also unsure if I want to lump this in with related updates, such as upgrading celery.

OK, think this is ready. It ended up being a lot.


Add BitWig Studio

[x] I have checked that this app does not already have a pending request and has not previously been declined.
App Name: BitWig Studio
Download URL: https://www.bitwig.com/dl/?id=481&os=installer_linux
Website URL: https://www.bitwig.com
App Summary: Modern music production and performance.

I'm working on it.

Seems this is a fixed version and is not updating though

This is true, thanks for the heads up. I'll work on a fix.


fix: skip broken files/symlinks in list_files function

The list files function walks through a directory tree and finds/filters all files. If it encounters a symlink, it fails with an exception:
ENOENT: no such file or directory, stat ...

That can be cumbersome, because if one of your files in static/ is a broken symlink you are not able to test your app anymore via e.g. npm run dev.

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[x] This message body should clearly illustrate what problems it solves.
[x] Ideally, include a test that fails without this PR but passes with it.

Tests

[x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

Edits

[x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.

I'm worried this will result in people deploying apps with missing assets to production

I think that it might be out of scope for SvelteKit to figure out if all assets are correct.

I compare a list_files function more to the unix ls command that also will work if some files/links are broken. Especially if it comes to files that are out of your control, e.g. hidden files placed by a Kubernetes or FUSE mount.
It is probably not an error at all: the symlink in itself is correct. Only the target file is not there. The function fails because it does a stat call on it to figure out if it is a dir or not. I also use git annex where it is fairly normal to have broken symlinks (because files are not present on the system, currently)


Deal with erasing of opening tag using backspace/fwd-delete

as title

Fixed in 1.1.1
damned regular expression (and code to cope with the new world)


Editing+Saving modified drawn layer does not update geometry

Thanks a lot for this great library!
I'm using streamlit-folium in mapa-streamlit and I believe we have found a bug.
Observed Behavior
When drawing a rectangle on the folium map, the streamlit app "Running" mode seems to get triggered whenever the rectangle was finished drawing. I can then access the resulting geojson geometry of the rectangle. That is expected and in line with the desired behavior. However, if I now were to edit the drawn rectangle using the "Edit layers" button (see below picture), the streamlit "running" mode does not get triggered when I click on "Save". At the same time, if I inspect the given geojson geometry, it is still the same and did not get updated to the modified geometry.
Desired Behavior
Updating a drawn layer (e.g. a rectangle) using the edit button updates the output of st_folium.
Picture for reference:

Thanks for the feedback @fgebhart! I've been out of the office for a few days, but there's already a PR for this, so once I can review it and merge I'd love to hear if it solves your issue

0.6.5 is now on PyPI, will make it to conda once their batch process kicks off
https://pypi.org/project/streamlit-folium/0.6.5/

Thanks for the quick response!
With version 0.6.5 the modified drawing indeed triggers an update of the streamlit app. However, I can only see that it updates the geometry within all_drawings but not in last_active_drawing. last_active_drawing still contains the same coordinates as before the modification of the drawing. I would have expected that it updates the geometry within the last_active_drawing. But maybe I'm wrong and the current behavior is also the expected behavior?

@fgebhart Thanks for using the plugin! To be honest, I didn't think about updating the last_active_drawing, but as I think about it, it's a bit tricky to actually pull off, since there's not an easy way to distinguish the different drawings after they've been edited. If you think of last_active_drawing as "the last one that was created or clicked on, as it was when it was created or clicked on", it's still accurate. I'll give some thought to a good solution to try and update it if a drawing is edited, but there may not be a quick solution to this.

@blackary totally understand. One could of course also interpret it like this.
I tinkered around with the challenge you described and implemented a mechanism which allows me to always get the last modified drawing by hashing the coordinates of a polygon in all_drawings, saving it to the session state and comparing it with the next given drawings. With this version 0.6.5 of streamlit-folium works perfectly fine for my use case.
So no need to get active on this request, if you don't think the described behavior would anyway be beneficial.

if you don't think the described behavior would anyway be beneficial.

I think the better way to phrase it is that @blackary and I don't know what we don't know! We'd love to collaborate more deeply with the community to make this the best it could be. So if you think it should be changed, or can post a code snippet which demonstrates what you think the answer is, we'll definitely take a look :)


Initial project setup

[ ] README
[x] Dockerfiles
[x] Compose
[x] Service configuration
[ ] Container image registry
[ ] K8s
[ ] GitHub description, features, etc.
[ ] GitHub Labels
[ ] GitHub Releases
[ ] Dependabot
[ ] CI
[ ] CD

2-api-gateway is the only service that is public facing, rest are all backend internal services.


for SD: add the ability to respawn character

Akash - 1.5 hours

Fix existing respawn mechanic
have camera follow player when they resawn
making sure scoreboard mechanics work


Spawner Spawn Timer not changing, with mob changes using Mob Eggs.

I don't know if its a feature, but if the timer on a mob spawner is 24,000. Then you change it with a Spawn Egg, it still remains the same.
This means, your starting spawn timer is set, on a mob spawner you find.
Fireworks... 24,000 min, 24,000 max
Fangs.......... 0 min, 0 max
Skeleton.... 200 min, 800 max
After hitting them with a Spawn Egg, the timer remains the same. Which means, the 24,000 spawners are basically worthless. Even with Sugar and Clocks, to change the amounts.
That would mean, you'd have to search for a good spawner, before changing it. The Fangs one above, at 0 min, and 0 max spawn times is what I mean.
======
Possible...
Spawn Eggs contain time details, min and max spawn times, to change spawner times.
======

This is working as intended.
I don't generate any spawners with spawn times of 24k anyway.

This is working as intended.
I don't generate any spawners with spawn times of 24k anyway.

It must be another mod, that is altering the times on your mod.


NullReferenceException when using Effort in combination with DynamicFilters

Hi,
I'm trying to use a transient fake database connection for my unit tests, using Effort.
It seems that, in combination with DynamicFilters, the EffortCommand is incorrectly generated when the DynamicFilter is a list of values.
Consider the following code in the DbContext:
//Filter based on a list fails (generation of WHERE TenantId IN (1))
modelBuilder.Filter("ByTenantIds",
      (IHaveATenantId entity, List<byte> currentTenants) => currentTenants.Contains(entity.TenantId),
      () => TenantProvider.CurrentTenants?.Select(t => t.Id).ToList() ?? new List<byte>());
modelBuilder.EnableFilter("ByTenantIds", () => TenantProvider.CurrentTenants != null);

When accessing any of the DbSets, thus generating SQL, a NullRef exception occurs on DynamicFilerExtensions.SetParameterList, the Command.CommandText is NULL.
Please find a sample repro-project enclosed to this issue.
Cheers,
M
ConsoleApp2.zip

Hello @merken ,
Honestly, I don't think both libraries are compatible at all

Effort is a memory provider that use LINQ but doesn't use SQL statement at all.
EF Dynamic Filter change the SQL statement generated and modify SQL parameter

Let me know if that explains correctly the current issue.
Best Regards,
Jonathan

Hi @JonathanMagnan,
As a workaround for the dynamic filter issue, I've tried disabling all filters and the "ByTenantIds" filter specifically, with the same NullRef exception occurring.
I find it strange that a disabled filter still manages to trigger the error, maybe this is another issue?
ctx.DisableAllFilters();
ctx.DisableFilter("ByTenantIds");
Cheers,
M

It still make sense @merken ,
EF Dynamic Filter always appends some parameter to the SQL. When disabled, a check with a NULL will be done so the filter doesn't apply.
To easily see it, I recommand you to try and profile the SQL in SQL Server do understand what happen behind the scene.
Best Regards,
Jonathan


Add equivalent configuration from the .htaccess file to a NGINX configuration file.

We currently provide an .htaccess file, mainly to enable the custom error pages provided but also to make the index handle all requests. Right now Monogatari doesn't really handle anything but in the future it may.
We need to add an equivalent NGINX configuration, at least the closest possible.

This is quite old issue is this still relevant? If it is I could try and submit my take on it.
One problem with this is NGINX by design does not support solutions like .htaccess, here is why https://www.nginx.com/resources/wiki/start/topics/examples/likeapache-htaccess/ . One option would be to provide example of configuration but it would mean that user needs to understand NGINX enough to know where to copy paste this example. It is not necessarily bad thing but in my opinion suboptimal. For me perfect solution would be creating docker image which is preconfigured to work correctly out of the box but I don't know what your policy is and I'm biased because I work with docker a lot.

Hi there! Yes, this issue is still relevant, the idea with the .htaccess file is that it works for shared hosting while it's also something you can simply copy as an apache site configuration on a VPS or anything else.
For NGINX, we would just be providing the configuration so it can be copy-pasted or directly copied as the site configuration. While most people using Monogatari will never get near those files, just having there as a sample is good for anyone willing to try it out.
Creating a docker image would fall a bit out of the scope for the core but is something we could definitely have as a community contribution over at https://github.com/Monogatari/Community
Thanks for the interest in this issue! :)

Closing this as it has been added in #98 :D Thank you so much!


[BEAM-14179] Fix possibly null value

Can one of the admins verify this patch?

Can one of the admins verify this patch?

LGTM. Thanks.


Some improvements

Improved load and shutdown process as try to prevent bug when not all links loaded on server startup

Added new command "cg reload" to reload gearblocks and links from the database

Introduced rule to check if activation is allowed - all blocks (gearblocks and bridge blocks) in construction should be either non-reinforced or reinforced by the same group. This needed to prevent "cheating" using CastleGates

Introduced rule for transfer power - if gearblock is reinforced by another group than start gearblock - then activation is not locked, but this gearblock just ignored and power not transfers here. This is needed to prevent "bridge-griefing" by placing gearblock near someones CastleGates' construction

All functionality is tested on my local environment.

compiled against api 1.12 -- tested to still work on 1.10.2?

compiled against api 1.12 -- tested to still work on 1.10.2?

Yes, this is correct.


fix: ts lack one type

TS syntax error，lack one type

In which case does this cause any problems/errors?

https://github.com/vuejs/core/pull/2616


AttributeError while loading gene list

Hello,
I am unable to get scrublet to load the genes.tsv file.
I see the following attribute error:

AttributeError: module 'scrublet' has no attribute 'load_genes'

I have renamed the "features.tsv" file from the CellRanger count pipeline to "genes.tsv", since that is the only file with the list of genes. Is this sufficient for scrublet?
I am using python3.5.6
Googling did not show me any relevant info on this. Hope to hear back.
Thank you,
Ishwar

FYI, this error occurs even with the example pbmc8k dataset.
I want to give scrublet a try because it is talked so highly in the scrna field.
Any help to get past this will be appreciated.
Thanks

Hi @ishwarvh, based on the error you're getting, I'm guessing scrublet hasn't been installed correctly. Can you tell me how you set it up on your system?

Hi @swolock,
Thanks for getting back so quickly.
I have tried installing it using "pip" as well as installing it from source using "git clone" from your and the Klein lab git repository.
You are right about it not being installed correctly. I have tried installing it on Mac OSX 10.11 and Ubuntu 16.04 and on both system's
"which scrublet" and "whereis scrublet" does not return anything.
I have updated pip and pip3 to the latest versions, since the older versions of pip had difficulty installing the llvmlite requirements. So, that leads me to think pip is not the problem here!
One other thing. I tried installing the latest version of scrublet (v0.2.3) using
pip install scrublet==0.2.3
This returned the following message
"successfully uninstalled scrublet-0.2.1 and successfully installed scrublet-0.2.3."
However, I still can't find or import scrublet !

In case this helps,
pip list installed: does not show scrublet to be installed
pip3 list installed: shows scrublet-0.2.3 installed.
To resolve this pip vs pip3 issue:
I removed all the previously downloaded source files, then ran:
python3 -m pip install scrublet
Since I didn't have any luck with that, I redownloaded the source files from your git repository, followed by:
python3 -m pip install -r requirements.txt
python3 -m pip install --upgrade .

This finished the installation and I have the following message:

Successfully built scrublet
Installing collected packages: scrublet
Successfully installed scrublet-0.2.2

The problem may be that scrublet is being installed in home/.local/python3.6/site-packages/
I am not sure if this expected behavior or I am doing something wrong.
I also tried explicitly calling scrublet from this installed location in my python script. But that also gives me the same attribute error.

Here is what I have learnt from this  ordeal. This issue seems to be due to Python3 installing packages locally for the user.
In my case I was to find scrublet in
home/.local/lib/python3.6/site-packages/
whether I installed it using PyPi or from source. However, I was unable to load scrublet despite adding the above location to $PATH.
To solve this issue, I created a virtual env and installed scrublet using:
python3 -m pip venv env
python3 -m pip install scrublet==0.2.3
I no longer get the attribute error when I run my script in the venv.
However, now I have the below error:
import-im6.q16: not authorized 'scr' @ error/constitute.c/WriteImage/1037
import-im6.q16: not authorized 'plt' @ error/constitute.c/WriteImage/1037
import-im6.q16: not authorized 'np' @ error/constitute.c/WriteImage/1037
import-im6.q16: not authorized 'os' @ error/constitute.c/WriteImage/1037

Sorry you're having so much trouble with this, but I haven't seen this problem before and do not know how to address it. I typically use miniconda to manage my python environments – maybe worth a shot?

Hi there,
Thank you guys for this discussion, because I am facing the exact same problem, and tried everything cited above. I am currently working on a miniconda environment, and still facing the same issue after installing scrublet, and pointing the the write path in my R script.
@ishwarvh Did you manage to solve this issue ?
Thank you in advance for your reply :)

To anyone who comes across the same error, try this before anything else :
1- If you were working on a conda env, delete it, and create a new one :
conda create --name myenv python=3.6
Python version is important for scrublet to run properly, 3.6 works fine (first time it did not work for me bc I was using python 3.9)
2- activate your newly created env :
conda activate myenv
3- Install scrublet with this command :
python3.6 -m pip install scrublet
4 - Check if installation is done :
pip list installed
If you can't find scrublet, it means there are other issues.
PS : In this project, I am using scrublet on R, in a conda env.
Hope this helps someone !

To add to the above, in case someone is struggling to make this work, in my case, this error stemmed from me having a python script named scrublet.py in my working directory, which was loading instead of the module's functions (I could find scrublet installed in the appropriate virtual environment with the appropriate python version).
Once I renamed the script, everything worked as expected. This is because the source for scrublet is named scrublet.py as well and I created ambiguity by naming my script the same!

Aww thanks @JimmyAusDS ! I was starting to wonder if I was going insane...


Django 1.7 compatibility issue

A patch like:
https://bitbucket.org/smileychris/django-countries/pull-request/12/strandunicode-will-be-deprecated-after/diff
is needed for this app too because StrAndUnicode is deprecated in django 1.7

yes, that works - I have applied something similar to that and it's working in django 1.7.4
from django.utils.encoding import force_text, python_2_unicode_compatible
try:
from django.utils.encoding import StrAndUnicode
except ImportError:
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class StrAndUnicode(object):
    def __str__(self):
        return self.CodeType


Hide ring when disabled

Hi there,
When the enabled prop in <FocusRing enabled={isKeyboardMode} /> changes from true to false, the ring remains visible. However, this is not the case in the Discord app, so I'm not sure if I'm doing something wrong here. Regardless, this resolves the issue for me. Let me know if I should do something differently!
Thank you!
Kind regards,
Hampus Kraft.

@faultyserver Sorry for the ping, this is not a pressing issue, but I'd love to hear your thoughts whenever you have time! Thank you.

Hi there @faultyserver, is there anything else I need to do for this to be merged? Thanks!


Request: use name instead of title for navigation

Currently, the "title" is used to display in the navigation menu.
I want to use a larger page/section title, but would like to use a shorter text for the menu. For example, I have a "now" page which I'd like to title "What I'm doing now", but I'd like the navigation (and the anchor) to show "Now" and the anchor link to be #now.
This is similar to how standard Hugo menus work.
https://gohugo.io/content-management/menus/
sample markdown header:
---
title: What I'm doing now
name: Now
weight: 20
header_menu: true
---

Keep

Now supported, see exampleSite


ImportError: cannot import name '_Conv' from 'keras.layers.convolutional'

[x] Check that you are up-to-date with the master branch of keras-vis. You can update with:
pip install git+git://github.com/raghakot/keras-vis.git --upgrade --no-deps

[x] If running on TensorFlow, check that you are up-to-date with the latest version. The installation instructions can be found here.

[ ] If running on Theano, check that you are up-to-date with the master branch of Theano. You can update with:
pip install git+git://github.com/Theano/Theano.git --upgrade --no-deps

[x] Provide a link to a GitHub Gist of a Python script that can reproduce your issue (or just copy the script here if it is short).

Hi,
after a fresh installation of keras-vis using
pip install -U -I git+https://github.com/raghakot/keras-vis.git
I try to import Keras by running
import keras
and encounter the following error:
ImportError: cannot import name '_Conv' from 'keras.layers.convolutional'.
As backend for Keras I'm using Tensorflow version 2.2.0. As far as I understood the _Conv class is only available for older Tensorflow versions. I've tried to downgrade to Tensorflow 1.15.0, but then I encounter compatibility issues using Keras 2.0, as required by keras-vis.
Has anybody else encountered this issue? Is there a workaround?

Yes , I also encounter same issue but not sure what to do

I also encounter same issue

Same here...

same problem.
it was ok a month ago.
any solution? :(

need help

This project seems to stale, see https://github.com/raghakot/keras-vis/issues/221#issuecomment-662279588

That's why people start to migrate to Pytorch

Any help?

This project seems to stale, see #221 (comment)

Sorry for late reply.
Try this:
pip install keras==2.2.2
&
pip install tensorflow==1.10.0
Let me know, the solution worked or not

It is working now

It also works for me although I have to make some changes to my code. I also used Keras 2.2.2 with TensorFlow 2.0 and it was okay too. However, I moved my code to tf.keras and used the method provided in the official Keras documentation and it works like a charm:)

Sorry for late reply.
Try this:
pip install keras==2.2.2
&
pip install tensorflow==1.10.0
Let me know, the solution worked or not

It also works for me although I have to make some changes to my code. I also used Keras 2.2.2 with TensorFlow 2.0 and it was okay too. However, I moved my code to tf.keras and used the method provided in the official Keras documentation and it works like a charm:)

I also have save issue of  can't import '_Conv', but my problem is not solved by Keras 2.2.2 and TensorFlow 2.0. Can you guide me further, what will be the solution without downgrading Tensorflow.
Or can you kindly share your code and environment details.

_Conv method not available with later version keras 2.4, the way to solve this is use Conv2D API. You can update the saliency.py module as I did below
{code}
$ diff visualization/saliency.py visualization/saliency.py.org
5,6c5
< #from scipy.misc import imresize
< import cv2

from scipy.misc import imresize
8,9c7,8
< from keras.layers.convolutional import Conv2D
< from keras.layers.pooling import MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D

from keras.layers.convolutional import _Conv
from keras.layers.pooling import _Pooling1D, _Pooling2D, _Pooling3D
32c31
<             if isinstance(layer, (Conv2D, MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D)):

        if isinstance(layer, (_Conv, _Pooling1D, _Pooling2D, _Pooling3D)):

187,189c186
<     #heatmap = imresize(heatmap, input_dims, interp='bicubic', mode='F')
<     heatmap = cv2.resize(src=heatmap, dsize=input_dims,interpolation=cv2.INTER_CUBIC)
<

heatmap = imresize(heatmap, input_dims, interp='bicubic', mode='F')

{code}

@jmajumde did you update your tensorflow_backend.py file as well?

@jmajumde did you update your tensorflow_backend.py file as well?

I am having the same problem and would like to ask the same question. Do I need to update tensorflow_backend.py @jmajumde ?

@jmajumde did you update your tensorflow_backend.py file as well?

I am having the same problem and would like to ask the same question. Do I need to update tensorflow_backend.py @jmajumde ?

Try this:
pip install keras==2.2.2
&
pip install tensorflow==2.2.2
solved my issue...
installed in Colab

try this:
my version, got from pip list
tensorflow    2.4.1
keras            2.4.3
keras-vis       0.5.0
change following lines in saliency.py from Python38\Lib\site-packages\vis\visualization\
 6 from keras.layers.convolutional import Conv2D
7 from keras.layers.pooling import MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D
and
 33 if isinstance(layer, (Conv2D, MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D)):
still if you want to use functions like visualize_saliency you may probably get other errors like keras.backend has no attribute identity; which are really hard to solve with current versions of tensorflow and keras, at least I spent ~ 2h and in my case it doesn't worth anymore.
This lib is far behind the current changes, consider using tf_keras_vis or other visualization libs.

try this: my version, got from pip list tensorflow 2.4.1 keras 2.4.3 keras-vis 0.5.0
change following lines in saliency.py from Python38\Lib\site-packages\vis\visualization\  6 from keras.layers.convolutional import Conv2D 7 from keras.layers.pooling import MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D and  33 if isinstance(layer, (Conv2D, MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D)):
still if you want to use functions like visualize_saliency you may probably get other errors like keras.backend has no attribute identity; which are really hard to solve with current versions of tensorflow and keras, at least I spent ~ 2h and in my case it doesn't worth anymore.
This lib is far behind the current changes, consider using tf_keras_vis or other visualization libs.

Yes, tf_keras_vis is great! Thanks for the suggestion


Can I controll SK6812 LED Strips?

Hello,
can I controll SK6812 LED Strips?

Are these RGBW version? If so use https://github.com/FabLab-Luenen/McLighting project instead. And if not (ie RGB), they are WS2812B clones so should be fine to use this version of the project.

yes this is a RGBW Strip.
I'm Testing the other version.
Gruß & Danke


Set language level in cmake file

We need at least c++11, maybe newer. This is not specified in the cmake config.

When I run the cmake command I get the following output: https://pastebin.com/raw/e1FNqPt5

cc @Jaxkr
@Jaxkr, which version of cmake do you have available via your package manager? cmake --version

Could you retry master?

Pulled and tried to recomplile.
Getting this now:
lisk@stellarsnap:~/snapshot-validator/build$ cmake -DCMAKE_BUILD_TYPE=Release .. && make -j 4
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for one of the modules 'libpq'
-- Checking for one of the modules 'libpqxx'
-- Checking for one of the modules 'libsodium'
pqpqxx
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lisk/snapshot-validator/build
Scanning dependencies of target snapshot-validator
[  7%] Building CXX object CMakeFiles/snapshot-validator.dir/blockchain_state_validator.cpp.o
[ 14%] Building CXX object CMakeFiles/snapshot-validator.dir/block.cpp.o
[ 21%] Building CXX object CMakeFiles/snapshot-validator.dir/assets.cpp.o
[ 28%] Building CXX object CMakeFiles/snapshot-validator.dir/blockchain_state.cpp.o
[ 35%] Building CXX object CMakeFiles/snapshot-validator.dir/block_validator.cpp.o
[ 42%] Building CXX object CMakeFiles/snapshot-validator.dir/lisk.cpp.o
[ 50%] Building CXX object CMakeFiles/snapshot-validator.dir/log.cpp.o
[ 57%] Building CXX object CMakeFiles/snapshot-validator.dir/main.cpp.o
[ 64%] Building CXX object CMakeFiles/snapshot-validator.dir/payload.cpp.o
[ 71%] Building CXX object CMakeFiles/snapshot-validator.dir/summaries.cpp.o
[ 78%] Building CXX object CMakeFiles/snapshot-validator.dir/settings.cpp.o
/home/lisk/snapshot-validator/main.cpp: In function ‘int run(std::vector<std::__cxx11::basic_string<char> >)’:
/home/lisk/snapshot-validator/main.cpp:153:60: error: ‘using reference = class pqxx::field {aka class pqxx::field}’ has no member named ‘get’
                     const auto dbType2Asset = row[index++].get<std::string>();
                                                            ^
/home/lisk/snapshot-validator/main.cpp:153:75: error: expected primary-expression before ‘>’ token
                     const auto dbType2Asset = row[index++].get<std::string>();
                                                                           ^
/home/lisk/snapshot-validator/main.cpp:153:77: error: expected primary-expression before ‘)’ token
                     const auto dbType2Asset = row[index++].get<std::string>();
                                                                             ^
/home/lisk/snapshot-validator/main.cpp:154:60: error: ‘using reference = class pqxx::field {aka class pqxx::field}’ has no member named ‘get’
                     const auto dbType3Asset = row[index++].get<std::string>();
                                                            ^
/home/lisk/snapshot-validator/main.cpp:154:75: error: expected primary-expression before ‘>’ token
                     const auto dbType3Asset = row[index++].get<std::string>();
                                                                           ^
/home/lisk/snapshot-validator/main.cpp:154:77: error: expected primary-expression before ‘)’ token
                     const auto dbType3Asset = row[index++].get<std::string>();
                                                                             ^
/home/lisk/snapshot-validator/main.cpp:157:64: error: ‘using reference = class pqxx::field {aka class pqxx::field}’ has no member named ‘get’
                     const auto dbType4AssetKeys = row[index++].get<std::string>();
                                                                ^
/home/lisk/snapshot-validator/main.cpp:157:79: error: expected primary-expression before ‘>’ token
                     const auto dbType4AssetKeys = row[index++].get<std::string>();

/home/lisk/snapshot-validator/main.cpp:157:81: error: expected primary-expression before ‘)’ token
                     const auto dbType4AssetKeys = row[index++].get<std::string>();
                                                                                ^
/home/lisk/snapshot-validator/main.cpp:158:64: error: ‘using reference = class pqxx::field {aka class pqxx::field}’ has no member named ‘get’
                     const auto dbType5AssetText = row[index++].get<std::string>();
                                                                ^
/home/lisk/snapshot-validator/main.cpp:158:79: error: expected primary-expression before ‘>’ token
                     const auto dbType5AssetText = row[index++].get<std::string>();

/home/lisk/snapshot-validator/main.cpp:158:81: error: expected primary-expression before ‘)’ token
                     const auto dbType5AssetText = row[index++].get<std::string>();
                                                                                ^
/home/lisk/snapshot-validator/main.cpp:259:59: error: ‘using reference = class pqxx::field {aka class pqxx::field}’ has no member named ‘get’
                 const auto dbPreviousBlock = row[index++].get<std::uint64_t>();
                                                           ^
/home/lisk/snapshot-validator/main.cpp:259:76: error: expected primary-expression before ‘>’ token
                 const auto dbPreviousBlock = row[index++].get<std::uint64_t>();
                                                                            ^
/home/lisk/snapshot-validator/main.cpp:259:78: error: expected primary-expression before ‘)’ token
                 const auto dbPreviousBlock = row[index++].get<std::uint64_t>();
                                                                              ^
[ 85%] Building CXX object CMakeFiles/snapshot-validator.dir/transaction.cpp.o
CMakeFiles/snapshot-validator.dir/build.make:230: recipe for target 'CMakeFiles/snapshot-validator.dir/main.cpp.o' failed
make[2]: *** [CMakeFiles/snapshot-validator.dir/main.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/snapshot-validator.dir/all' failed
make[1]: *** [CMakeFiles/snapshot-validator.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

What's the content of your external/libpqxx-installation/include/pqxx/config-public-compiler.h? Looks like support for optionals is missing

@Jaxkr please retry with current master

@webmaster128 I ended up deleting my local copy and re-pulling / compiling and it built successfully. Thanks for the help.

Glad to hear that :)


[untitled] on create new user form

It says [Untitled] when creating a new user. This looks ot be the spot where the user name appears once that user has been created.
Can we remove that on the new creation state or instead display the text "Create a New User"?

Fixed by 83939beda8d49f58298d2980347526ed903910c6


parcellite: enable appindicator support

Motivation for this change
Make libappinidcator available to parcellite
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[X] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

Even when building with this, and parcellite advertises AppIndicator support, I'm not actually able to get it to work...