Two level cascade

How can i make cascade for 2 level dependent row

i want Services to be filtered based on BU selection
there is no direct relation between service and BU
entries (detail relation) of service row has foreign column BU (i.e Service has list of service items, each service item is bound to one BU)
Now i wan Services to be filtered only based which belongs to BU chosen in first quick filter
my column looks like this
rather there is relation beween ser
        [QuickFilter]
        public String BUCode { get; set; }

        [QuickFilter]
        [ServiceFromBUEditor]
        public Int32? ServiceId { get; set; }

My BU and Service relations is defined in serviceItems row as below
  [DisplayName("Id"), Identity]
        public Int32? Id
        {
            get { return Fields.Id[this]; }
            set { Fields.Id[this] = value; }
        }

        [LookupEditor("BusinessUnitsLookup")]
        [DisplayName("POD"), NotNull, ForeignKey("[dbo].[BusinessUnits]", "BUCode"), LeftJoin("jBuCode"), TextualField("BuCodeBuName")]
        public String BuCode
        {
            get { return Fields.BuCode[this]; }
            set { Fields.BuCode[this] = value; }
        }

        [LookupEditor("LookupService")]
        [DisplayName("Service"), NotNull, PrimaryKey, ForeignKey(typeof(ServiceRow)), LeftJoin("jService"), LookupInclude]
        public Int32? ServiceId
        {
            get { return Fields.ServiceId[this]; }
            set { Fields.ServiceId[this] = value; }
        }

Actual Service row looks like this
 [DisplayName("Id"), Identity]
        public Int32? Id
        {
            get { return Fields.Id[this]; }
            set { Fields.Id[this] = value; }
        }

        [DisplayName("Service Name"), Size(50), NotNull, QuickSearch,LookupInclude]
        public String ServiceName
        {
            get { return Fields.ServiceName[this]; }
            set { Fields.ServiceName[this] = value; }
        }

        [DisplayName("Description"), Size(300)]
        public String Description
        {
            get { return Fields.Description[this]; }
            set { Fields.Description[this] = value; }
        }

        [DisplayName("Details"), MasterDetailRelation(foreignKey: "ServiceId"), NotMapped]
        public List<ServiceItemsRow> SerServiceItems
        {
            get { return Fields.SerServiceItems[this]; }
            set { Fields.SerServiceItems[this] = value; }
        }

My Service from BU Editor,(here i may need to append prepare query???)
export class ServiceFromBUEditor extends Serenity.LookupEditorBase<Serenity.LookupEditorOptions, ServiceRow> {

        constructor(hidden: JQuery) {
            super(hidden);
        }

        protected getLookupKey() {
            return ServiceRow.lookupKey;
        }

        protected getItemText(item, lookup) {
            return item.ServiceName;
        }
    }

@volkanceylan
I tried definfinf custom lookup script based on serviceItem row as below and cascade attribute to it

namespace DRM.Default.Lookups
{
    using Serenity.ComponentModel;
    using Serenity.Data;
    using Serenity.Web;

    [LookupScript]
    public class ServicefromBULookup : RowLookupScript<Entities.ServiceItemsRow>
    {
        public ServicefromBULookup()
        {
            IdField  = "ServiceId";
            TextField = "ServiceName";
        }

        protected override void PrepareQuery(SqlQuery query)
        {
            base.PrepareQuery(query);
            var fld = Entities.ServiceItemsRow.Fields;
            query.Distinct(true)
                .Select(fld.ServiceId)
                .Select(fld.ServiceName)
                .Select(fld.BuCode)
                .Where(
                    new Criteria(fld.ServiceId) != "" &
                    new Criteria(fld.ServiceName).IsNotNull());
        }

        protected override void ApplyOrder(SqlQuery query)
        {
        }
    }
}

and cascade from it as below in desired form
[LookupEditor(typeof(Lookups.ServicefromBULookup), CascadeFrom = "BUCode", CascadeField = "BUCode")]
public Int32? ServiceId { get; set; }
Still no luck

Closing due to inactivity.


Add support for pixi lock files

conda-lock itself hauls in... a lot of dependencies, so may not be a good candidate for the "base coat" environment. micromamba, already present, is certainly up to the task of consuming both formats... though pixi very well might end up "winning" for this use case.

Originally posted by @bollwyvl in https://github.com/jupyterhub/repo2docker/issues/1312#issuecomment-1775904081
This was already touched upon in Issue #1312 a bit (in the above), and now also with https://github.com/conda/conda-lock/issues/615 being open, but it would be quite nice if pixi lock files could be supported formally by repo2docker. The ability to do cross-platform solves in parallel already brings the accessibility barrier for projects down quite a bit, and then being able to reuse that environment solve for repo2docker is very attractive from a user perspective.
I appreciate that supporting a new standard is a lot fo work, and @bollwyvl has already shown in Issue #1312 that these sorts of changes are hard. I'm asking as I think it would be very cool!

I've been thinking about lock files on and off for a long time, specifically about how to reconcile a "fully specified" environment with a lockfile with the repo2docker approach of a 'base' environment with jupyter-server, etc. about which we have some assumptions for how to launch, which gets updated with a user environment. The problem generally is that repo2docker's design is meant to enable folks to write environment specifications that don't consider Jupyter, but we make it work by adding the required dependencies. This isn't friendly to using lockfiles (and is generally a problem class of its own).
There are 3 basic approaches to this that I can think of:

install base env, then 'update' with lock, like we do currently with 'loose' environments (could cause conflicts, doesn't really satisfy lock specification)
install lock first, then try to minimally add 'required' packages (doesn't satisfy lock specification, may break things in different ways)
leave lock unmodified, in which case required packages may be absent

So far, I think the best approach is the last one, to respect lockfiles exactly as-is, and install nothing 'automatically', with the following logic:

inspect lockfile, and if jupyter-server is present (or specify some other condition), use it as the default env
if jupyter-server is not present, install a kernel-only env, like we do for 'old' Pythons (< 3.7).

The case this will not handle is if no kernel package is in the lockfile, there will be no kernel installed in the locked env. I don't think there's any way for us to install ipykernel that won't make a mess at least sometimes. Usually pixi add ipykernel would work! But it's a lot harder to be sure and a lot harder to reason about "your lockfile is modified slightly sometimes" than "your lockfile is respected, but you might need to add packages to it for it to work with repo2docker".
This approach would be generally applicable to lockfiles (conda-lock, pixi, anything else we decide to support). There are trade-offs for everything, but I think this is the one that's easiest to deal with and most consistent with what lockfiles are meant to do.


(Ignore) Dummy 0.9.2 tag merge

Not performing a merge to master after the release so mocking this step here

Codecov Report

:exclamation: No coverage uploaded for pull request base (dummy-0.9.1-tag@ba70dd3). Click here to learn what that means.
The diff coverage is 100%.

@@                Coverage Diff                 @@
##             dummy-0.9.1-tag     #783   +/-   ##
==================================================
  Coverage                   ?   99.49%
  Complexity                 ?     1861
==================================================
  Files                      ?      285
  Lines                      ?     5559
  Branches                   ?      279
==================================================
  Hits                       ?     5531
  Misses                     ?        5
  Partials                   ?       23

Impacted Files
Coverage Δ
Complexity Δ

...ssera/transaction/EncryptedTransactionDAOImpl.java
100% <100%> (ø)
7 <2> (?)

...um/tessera/transaction/TransactionManagerImpl.java
100% <100%> (ø)
36 <10> (?)

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 ba70dd3...3db59ee. Read the comment docs.

All checks passed


Node API for search

Hi,
Are there plans for extending this API for interacting with the /search endpoint? It currently looks like the getObjectType interface does not support this case.

Hey Devin!  Yes there are plans to add more to this client (including sort, authentication, etc).  If you'd like to add this, submit a PR, I would be more than happy to merge it 😄

@tonyspiro - sounds great, I'll most likely have a bit of time sometime this week to put together a small PR. Keep you posted!

@tonyspiro While I'm trying to help with this API, I discovered there is an issue with the /search endpoint with metafield_object_slug parameter.
I'm getting 502 bad gateway error when I specified the following:
https://api.cosmicjs.com/v1/secondwindnation/object-type/posts/search?metafield_key=category&metafield_object_slug=general

anyway, i have written this. I can't seem to push to the repo, it says unauthorized.
getObjectBySearch: function(config, object , callback){
    var searchParams = '/search?' + 'metafield_key=' + object.metafield_key;
    if (object.metafield_value) searchParams += '&metafield_value=' + object.metafield_value;
    else if (object.metafield_object_slug) searchParams += '&metafield_object_slug=' + object.metafield_object_slug;
    else searchParams += '&metafield_value_has=' + object.metafield_value_has;
    var endpoint = api_url + '/' + api_version + '/' + config.bucket.slug + '/object-type/' + object.type_slug + searchParams + '&read_key=' + config.bucket.read_key;
    if (object.limit) endpoint += '&limit=' + object.limit;
    if (object.skip) endpoint +=  '&skip=' + object.skip;
    fetch(endpoint)
    .then(function(response){
      if (response.status >= 400) {
        var err = {
          "message" : "There was an error with this request."
        }
        return callback(err, false);
      }
      return response.json()
    })
    .then(function(response){
      // Constructor
      var cosmic = {};
      var objects = response.objects;
      cosmic.objects = {};
      cosmic.objects.all = objects;
      cosmic.object = _.map(objects, keyMetafields);
      cosmic.object = _.keyBy(cosmic.object, "slug");
      cosmic.total = response.total;
      return callback(false, cosmic);
    });
  },

@weewey thanks for the heads up on the endpoint and for adding the new method 😄
The endpoint issue is now fixed, however I noticed that you have the category Metafield key set to post_category in your Bucket, make sure it's this in the query string ?metafield_key=post_category also the Metafield must be a single Object Metafield and not a Multiple Object Metafield.
As for merging the new method, please submit a pull request and I'll merge it in.
Thanks @weewey!

I'm not too sure whether it is an error on my side or the permission issue of the repo.
YewWee@Yews-MBP:~/cosmicjs-node$ git push origin fix/get-object-by-search

ERROR: Permission to cosmicjs/cosmicjs-node.git denied to weewey.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

@weewey you will need to fork a copy, make your changes, then issue a pull request here: https://github.com/cosmicjs/cosmicjs-node/pulls

Thanks @weewey, the PR has been merged 🙌

@weewey FYI I changed the method to indicate multiple Objects returned getObjectsBySearch.


macOS Crash EXC_BAD_ACCESS when FSEvents Enabled

Describe the bug
Crashes after multiple calls to watch() and close().
Crashed Thread:        0  CrRendererMain  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x00000000000003e8

    __TEXT<PHONE_NUMBER>139000-000000010013a000 [    4K] r-x/rwx SM=COW  /Users/USER/*/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper

Thread 0 Crashed:: CrRendererMain  Dispatch queue: com.apple.main-thread
0   com.github.Electron.framework 	0x0000000104ed86b0 0x10013f000 + 81368752
1   fse.node                      	0x000000010af25f57 fse::FSEvents::~FSEvents() + 93 (fsevents.cc:65)
2   fse.node                      	0x000000010af25fea fse::FSEvents::~FSEvents() + 14 (fsevents.cc:62)
3   com.github.Electron.framework 	0x000000010151f481 0x10013f000 + 20841601
4   com.github.Electron.framework 	0x000000010151f83a 0x10013f000 + 20842554
5   com.github.Electron.framework 	0x000000010197fce3 0x10013f000 + 25431267
6   com.github.Electron.framework 	0x000000010197dd81 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) + 1585
7   com.github.Electron.framework 	0x0000000101986ce1 0x10013f000 + 25459937
8   com.github.Electron.framework 	0x0000000101546a7f 0x10013f000 + 21002879

Versions (please complete the following information):

Chokidar version 2.1.5
Node version 10.12.18 (Electron 4.1.4
OS version: macOS 10.14.4

To Reproduce
After multiple calls to watch() and close(), the process will crash. My application is only watching one (1) file at a time.
Expected behavior
Should not crash.
Additional context
Disabling FSEvents makes everything stable again.
This crash was found in a production app that didn't seem to have any issues with Electron 3.x (node 7.0.68, perhaps).

It seems we have the same problem in Joplin - https://discourse.joplinapp.org/t/returning-from-external-editor-results-in-blank-screen/1982/10?u=laurent

Closing this in favor of https://github.com/fsevents/fsevents/issues/273


testing nullsoft installer/uniinstaller

I am trying to test our applications installer/uninstaller, we are using Nullsoft installer scripts for this. I am having trouble with the uninstaller -
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", @"C:/Program Files (x86)/PathToMyApplication/UnInstall.exe");
appCapabilities.SetCapability("deviceName", "WindowsPC");
installer = new WindowsDriver(new Uri(WindowsApplicationDriverUrl), appCapabilities);
The uninstaller window opens and I get the following exception-
{"Failed to locate opened application window with appId: C:/Program Files (x86)/PathToMyApplication/Uninstall.exe, and processId: 1456"}
Is there a way for me to run and interact with this app?

Hi @djewiss,
You can create a Desktop Session to find the opened uninstaller window you mentioned using any of the supported locator after attempting to launch as you specified. Once you found the window, you can create a session by attaching it as shown is the example below:
https://github.com/Microsoft/WinAppDriver/blob/v1.0-RC/README.md#attaching-to-an-existing-app-window
Out of curiosity, could you please validate if the opened uninstaller window has a different process Id than the one displayed on the exception? You can get this information by using the inspect.exe tool. Once you have the processId, can you also look for the processName for the corresponding processId in Task Manager?

Hi There
Thanks, that's awesome! You are right, it is a different ProcessID than the one in the exception. It was 2836 instead of 1456, and the name was "Un_A.exe"


🔧 denyList for bsx

Thank you for your contribution to the KodaDot NFT gallery.
👇 _ Let's make a quick check before the contribution.
PR type

[x] Bugfix
[x] Feature

What's new?

[x] PR related kodadot/snek#94
[x] hide beeple copycat content

Before submitting Pull Request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality
[x] I've posted a screenshot of demonstrated change in this PR

Had issue bounty label?

[x] Fill up your KSM address: Payout

Screenshot
on beta

on preview

pay 75

okay, this solves nicely through code, but will we be pushing new deployment every time someone does copy mint?
Probably making some external repository as storage with json, which would do fetch and check these array of banned addresses?

pay 75

😍 Perfect, I’ve sent the payout
💵 $75 @ 43.73 USD/KSM ~ 1.715 $KSM
🧗 DVYy1qnocE8t6ZvUfPx3rEjG829khNRXx3YrCGVHHj19Lcb
🔗 0xe3ae15110cf3c7d5d7b7cb35960d650d2365dd7ed74fa1e28b9bb6b1f3c10e7b
🪅 Let’s grab another issue and get rewarded!
🪄 github.com/kodadot/nft-gallery/issues


[SUPPORT]How checkpoint is implemented when cdc the full data in 2.0

It is said that flink mysql cdc 2.0 supports checkpointing for exactly once gurantee during the phrase of cdc full data.
I know flink supports WAL and 2PC checkpointing mechanism for exactly once gurantee ,I would ask how checkpoint is implemented in this scenario.

Closing this issue because it was created before version 2.3.0 (2022-11-10). Please try the latest version of Flink CDC to see if the issue has been resolved. If the issue is still valid, kindly report it on Apache Jira under project Flink with component tag Flink CDC. Thank you!


i18n(ko-KR): update integrations-reference.mdx

Description (required)

update integrations-reference.mdx
#9270

Related issues & labels (optional)

Closes #
Suggested label:

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

ko
reference/integrations-reference.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Grammar consistency about verb form in singular and plural, whether to add an "s", in feature-gates docs

This is an Improvement Report
While reading the feature-gates page, I noticed a minor inconsistency in the verb form: Enable and Enables. This inconsistency does not significantly affect readability and is merely a nitpick regarding grammar.
Problem:
On this page, you can find:

46 hits: : Enable
41 hits: : Enables

Proposed Solution:
It appears that : Enables  is grammatically correct. Also, we may need to look other verbs like:

Allow, Allows
Disable, Disables
Set, Sets
Stop, Stops
...

Page to Update:

feature-gates page

/language en

/sig docs

/good-first-issue

In K8s community, untill an issue is labeled as triage/accepted, It's advised to not label them as good first issue
/remove good-first-issue
/remove help-wanted

In K8s community, untill an issue is labeled as triage/accepted, It's advised to not label them as good first issue
/remove-good-first-issue
/remove-help-wanted

/assign

/assign @Ayush9026

Thanks for letting me know @aj11anuj

Hello @Ayush9026 if a person before you has already assigned a issue for himself/ herself , it's your responsibility to confirm if they are already working on it.

Not yet triaged as accepted
/remove-help

FWIW, I prefer “Enable”. It completes the implied phrase “Activating the Foo feature gate will…”

/assign

/priority backlog
/triage accepted

There are 318 files under reference/command-line-tools-reference/feature-gates
ls -l | wc -l
318

There are 71 files that contain the word Enables.
grep "^Enables" *.md | wc -l
71

I can run a sed command to replace Enables -> Enable in all the files.
I have the same question as in the original post; what about Allows and Stops?
grep "^Allows" *.md | wc -l
19

grep "^Stops" *.md | wc -l
14

If I run the sed command, will the PR look messy with so many files committed at once?
What do you think @sftim? Thanks

@windsonsea, would these changes satisfy your request for improvement?

Hi, @mrgiles yes, this is an improvement though we shall figure out all verbs to be changed.


Sort emotes alphabetically

Hi, first of all congrats on releasing Chatterino 2, I've been using the old one for ages now.
Would it be possible to have the emotes listed alphabetically in the emote window just like the previous version did, or have it be a selectable option?

Fixed by #1499


feat(consensus): send proposal content

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1810  👈
#1809
#1808
#1807
#1806
#1774
main

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

Join @dan-starkware and the rest of your teammates on  Graphite


[REFACTOR] Managing Configuration with a Single Instance

Move all parallel configurations and runtime configurations to a singleton ENGINE instance instead of putting them into the model.

[ ] Create a singleton Engine instance, remove all the configuration in model instance.
[ ] Provide a unified interface to visit runtime metadata.

#150


Website

In keeping with plot2's goal to be an attractive lightweight plotting option, the website should help to offload content that is adding unnecessary bulk to the package itsekf. A case in point is the fact that all the images in the README are currently pushing the installation tarball  to several MiBs.
Serving content external to the package also means that we shouldn't use conventional R vignettes (which would get bundled with the installation tarball). So I'm not sure how well this workflow jibes with standard R website builders like pkgdown and altdoc.
Some options:

Build a docs/ folder locally and serve it through github-pages. (Can perhaps still be automated with GH Actions?)
Use a Quarto book format like @vincentarelbundock did for marginaleffects link. Vincent, curious about your experiences here.
A gallery-type website (see #59).

Easiest would probably be to add vignettes/ to .Rbuildignore.
It was kind of hard to do a Quarto book, and I had to write a lot of custom scripts. Over the next few months, @rempsych and I will be working on improving altdoc in several ways, including allowing for Quarto book output.
I don't plan to use pkgdown for complicated packages in the future.
If you want, I can try to use altdoc to produce a minimalist website for plot2 with Material MkDocs.

If you want, I can try to use altdoc to produce a minimalist website for plot2 with Material MkDocs.

Cool, thanks! For a MWE feel free to move the README examples to the equivalent of a vignette.
(One lingering concern I have about Material MkDocs is that this pulls in a Python dependency. Am I remembering correctly, here?)

We had the same problem with our colorspace package: We started writing quite a few vignettes which became too large for the package. So we turned them into a pkgdown page: https://colorspace.R-Forge.R-project.org/.
The Get started vignette is the only vignette that is also contained in the package, all others are in .Rbuildignore. It has a short overview, some teaser images, and (absolute) links to the other vignettes on R-Forge. Thus, there is the same content just rendered differently on CRAN and R-Forge:

https://CRAN.R-project.org/web/packages/colorspace/vignettes/colorspace.html
http://colorspace.R-Forge.R-project.org/articles/colorspace.html

This setup worked quite well for us and we turned the vignettes eventually also into a paper.

That looks beautiful, @zeileis !

Quickly chiming in here to say that I have a different workflow from those above when I use altdoc. For example in conductor I don't have any vignettes. I have a docs folder where I directly write and update the documentation when needed. This folder is in .Rbuildignore so the package is very light (< 100 Kb, which I think can be considered light). This means that I don't have any vignette that the user can read from the CRAN page or somewhere else.
I don't have any github actions for this, even if I could. I just need to remember to run altdoc::update_docs() when I change the docs in the R files or the NEWS for instance. No Python dep to setup.
Example website: https://conductor.etiennebacher.com/

@etiennebacher GitHub only allows me to render directly from
docs/ but both use_mkdocs() and update_docs() seem to on docs/docs and docs/site.
How do you deal with that? In my PR i use a clunky Makefile to copy the contents of docs/site/* to the root of a different branch, but that's kind of annoying.

@etiennebacher GitHub only allows me to render directly from
docs/ but both use_mkdocs() and update_docs() seem to on docs/docs and docs/site.
How do you deal with that? In my PR i use a clunky Makefile to copy the contents of docs/site/* to the root of a different branch, but that's kind of annoying.

I actually never had this problem because I never used mkdocs for one of my packages so I don't have a clear solution for this. Maybe altdoc should put both folders in the top directory? In any case I can open an issue about this in altdoc repo to not bother the conversation here

Closed by #80.


op status for channel "owners"?

is that possible? :D

I think this is definitely possible but I am not certain on whether this is good idea. We will just have to update the gitter-adapter.js to send out the right status.
Append @ for ops and + for voiced (no symbol for normal member).
I am not familiar with IRC protocol but I think we just need to update this:

352 RPL_WHOREPLY: https://github.com/gitterHQ/irc-bridge/blob/ba59695d99cb02b22d023372fff274c8759f3336/lib/gitter-adapter.js#L246

You can see the map of protocol messages in protocol.js that the irc-bridge currently uses and in the ietf reference spec.

And why don't you think it is a good idea?

@sharpner I am just not certain. voiced may be more appropriate and I would just like to hear some more opinions to sway me further either way.


Dynamicview

This PR allows the extension to update Kubernetes Clusters View content automatically when something changes. There are 2 ways to set up a watch on resources: by using the action in the context menu or by declaring the kind of resources to watch in the settings (vs-kubernetes.resource-to-watch).
Currently the watch function is supported by folder.resource and resource nodes.
The watch is managed in a way that it is active only if the node of the resources we want to watch is expanded. Once the treeitem is in a collapsed state the watch is removed. This way we prevent to call the refresh tree method for resources user isn't looking at.
The refresh is made on single node to avoid refreshing the whole tree everytime.


Add preliminary support for the resume API

Release Note
NONE

@lburgazzoli FYI, this is to get us started and we can build from here. wdyt?

A bit of usage documentation either in the same addon or externally in the official doc would be really appreciated. Without that, the user has no clue of what this is about...

👍
We have some documentation here: https://camel.apache.org/components/next/eips/resume-strategies.html. I think it needs some documentation about the trait + a link to that page.

+1
We have some documentation here: https://camel.apache.org/components/next/eips/resume-strategies.html. I think it needs some documentation about the trait + a link to that page.

That would be perfect, thanks!

BTW, I am also working on some examples, similar to the ones I have for Camel Core. I plan to submit them to the examples repo once this is merged in and stabilized.

Hey @lburgazzoli, any other comments about this code? I'd like to merge it today if possible / good enough ...

Thanks for the review @lburgazzoli and @squakez. I am going to merge this now.

BTW, we need to add its entry to doc gen script and run make generate so that the addon doc is generated. Not sure if it's right time to do so though, as we are in the process of releasing 1.10.0.
https://github.com/apache/camel-k/blob/main/script/gen_doc.sh#L30

True, we can easily create a new PR with the generated doc. There are still some issue to polish on camel k runtime, so, we still have time to do so.


Standardise formatting for Corflags

Relates to #9958
Used this page today - fixed the inconsistent formatting on the command line arguments. (I also checked that  - is valid over /, as suggested in the issue.)

@ChrisMaddock This looks good. The table is formatting oddly though. I'm going to play around in your repo and see if I can fix that.

Not possible to fix without going to full HTML Table. I've sent in a request to the docs team to see if they can give a style that addresses this. I'll merge. Thanks!


Bug Report: Missing Hover Property in Footer Section of resource.html

Reproduction steps
The "resource.html" file is a part of the project and contains the footer section that requires some improvement. Currently, there is no hover effect applied to the footer links, making the user experience less intuitive and engaging.
Steps to Reproduce:

Open the "resource.html" file in a web browser.
Scroll down to the footer section at the bottom of the page.
Attempt to hover over the links in the footer.

Expected behavior
When users hover over the links in the footer section of "resource.html," there should be a visual change (e.g., color change or underline) to indicate interactivity, providing feedback to users.
Actual Behavior
Currently, when hovering over the links in the footer section, there is no visual change, and the user is unable to differentiate between interactive and non-interactive elements.
👀 Have you spent some time to check if this issue has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Hi, I would like to contribute could you please assign it to me

Hi @SauravMukherjee44 and @rohanbabbar04 and team,
I hope you're doing well. I just wanted to follow up on this issue to check its status. I created this issue two days ago regarding the missing hover property in the footer section. I believe addressing this would greatly enhance the user experience.
If there's any additional information or context I can provide to help move this forward, please let me know.
Looking forward to your response and thank you for your time!
Best regards,
Gauri Bhandari


Autocomplete replaces all types with "Function" when overriding

When overriding any function using autocomplete, FlashDevelop replaces all types with "Function", then inserts the correct type as an inline comment, e.g:
    override public function get width():Function/*():Number*/ {
        return super.width;
    }
    override public function set width(value:Function/*():Number*/):void {
        super.width = value;
    }

To reproduce:

Start a new class that extends flash.display.MovieClip
In the class type in override.
In the autocomplete list that comes up, select width.

Tested with FD nightly build <IP_ADDRESS>9 ( #d07b5ce2f1 )

@SlavaRa  This issue still exists in the latest nightly. See #2765


[WIP] Expansion of developer documentation.

Created project directory documentation and overview diagram
Added Sphinx dependency of PlantUML and Graphviz.
May require pip install sphinxcontrib-plantuml and apt-get install graphviz.

Codecov Report

Merging #2976 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2976   +/-   ##
=======================================
  Coverage   85.81%   85.81%
=======================================
  Files         327      327
  Lines       68405    68405
  Branches     7725     7725
=======================================
  Hits        58699    58699
  Misses       8467     8467
  Partials     1239     1239

Thanks for this PR. This work along with input from other users has lead to @seibert starting work on assessing the code base and developer documentation, and this https://github.com/numba/numba/issues/3807 is open for discussion of ideas. I'm going to close this PR for now in view of the previous but it may well get re-opened and/or re-worked at a later time. Thanks again for your input.


1.26 + doom emacs = no go?

I just upgraded to 1.26 right now, from having a few months old master vsix file. I installed it like I normally would, but it no longer runs. as soon as I open a .res file, it starts up and then exits immediately saying "check corresponoding stderr buffer for dteails, restart?"
the only thing it says is Process rescript-vscode stderr finished

Maybe @aspeddro has some ideas.

maybe this is indeed an issue with rescript-mode and I may have made a mistake in assuming something's off with rescript-vscode - were breaking changes introduced in the cli or lsp interfaces recently?

I'm not sure honestly, but I don't think so. The one thing I can think of is what mode you start the LSP in: https://github.com/rescript-lang/rescript-vscode/blob/master/server/src/cli.ts#L11-L14

yeah I'm using --stdio and have been all along

interestingly, both of these just exit silently:
node /home/.../.config/rescript/server/out/server.js --stdio
node /home/.../.config/rescript/server/out/server.js --help
no matter what, $status (running fish) is 0 afterwards.

ok, I figured it out. you used to be able to start the server with server.js, but now you're supposed to run cli.js
;; https://github.com/jjlee/rescript-mode
(after! rescript-mode
  (setq lsp-rescript-server-command
        '("node" "/home/.../.config/rescript/server/out/cli.js" "--stdio"))

Changed server.js to cli.js and it's working. thanks|


Handle annotation selection

What should happen if an annotation is selected, should there be an option to handle these cases?

This will likely need to be implemented in the map itself as to be able to have access to the annotation item type. Will have a look at how deselection might be possible - not sure yet.

I came here looking similarly to see if dragging of annotations was handled. Thanks.

@chrisperfer It is not handled at the moment - I'm just curious - do you have a UIKit-MapKit example of how you would do that? Then I could adapt it for SwiftUI. I would assume that you put some form of DragGestureRecognizer on the annotationView and then manipulate its coordinate according to the zoomScale and region?
You can already dynamically change the annotation's coordinate though - you can find out more in #15

Just opened a PR with how I handled the annotation selection in my fork.
And thank you for the library of course! 💪


Docs needs updating: space-cli add registry disappeared

Version: 0.20.0
Add a add-on to the environment

Usage:
  space-cli add [command]

Available Commands:
  database    Add a database

Flags:
  -h, --help   help for add

Global Flags:
      --log-level string   Sets the log level of the command (default "info")
      --project string     The project id to perform the options in

Use "space-cli add [command] --help" for more information about a command.

Version 0.19.5:
Add a add-on to the environment

Usage:
  space-cli add [command]

Available Commands:
  database    Add a database
  registry    Add a docker registry

Flags:
  -h, --help   help for add

Global Flags:
      --log-level string   Sets the log level of the command (default "info")
      --project string     The project id to perform the options in

Use "space-cli add [command] --help" for more information about a command.

What's a temporary fix for this.. I need it as soon as possible... The docs are a bit inconsistent with these changes.

See https://docs.spaceuptech.com/microservices/deployments/deploy-custom-code/

Before we can deploy our service, we need to make sure that you have configured your Space Cloud project for which container registry to publish the docker images to.
If you are using the Docker setup of Space Cloud, then space-cli has a built-in command to spin up a container registry at localhost:5000 for you and configure Space Cloud to publish images to this registry. Here’s the command to do it:
space-cli --project <project-id> add registry

Thanks for pointing it out. Will update it

Thanks for pointing it out. Will update it


Provide a configuration option for buffering responses for apache

Relating issue 419 (http://code.google.com/p/phusion-passenger/issues/detail?id=419), this implements a response buffering configuration option.
This is similar to nginx's passenger_buffer_response ( http://www.modrails.com/documentation/Users guide Nginx.html#_passenger_buffer_response_lt_on_off_gt ).
So, I followed the same naming convention.
Here is a list of what the changes are:

The newly-added PassengerBufferResponse can be configured at any place.
Added Documention about PassengerBufferResponse (Mostly copied from the Nginx counterpart directive. As a exception, I modified first paragraph and added a note mentioning lack of file-backed buffering fall-back mechanism in case of large responses).
Explicitly mention and set the default value of PassengerBufferResponse to On. (Current passenger's default value is Off)

Thanks for this patch. I've reviewed it and it looks good, though buffer_response should be called bufferResponse because our coding style is camel case.
Before we can merge your changes we need you to sign this contributor agreement: http://www.phusion.nl/forms/contributor_agreement
Could you follow the instructions on that page?

Thanks for reviewing this patch! I pushed another commit to rename buffer_response to bufferResponse accordingly.
Also, I signed above contributor agreement.

Thanks for merging this!


Selfhost test-provider can fix expected values in all failing tests within a test suite

Currently, the selfhost test-provider has a command action "Fix Expected Value" to fix a failing test case if it has a failing strict deep equality assertion. It would be great to have a command action to fix failing assertions in the whole test suite.

Note: interestingly, the test suite run results don't include the test cases inside it (note how children is empty):

@connor4312 is this intentional?


Allow non promise in input

In order to comply with Promise.all, the input should be able to accept non promise input and return it as is like Promise.all.

@slorber

LGTM thanks 👍 1.2.0


Menu Style override problem in v3.13.8

Hi, I'm using Radzen for the context menu control, and have over-ridden the styles to give a compact menu (see screenshot attached). This has worked fine for around 12 months.

I upgraded to the most recent version (3.13.8) and now my style:
.rz-navigation-item-link {
    padding: 1px 1px;
}

Isn't taking effect; for some reason the Radzen default.css style has higher priority. Have you changed something recently, perhaps to enable CSS isolation or something like that? The end result ends up looking more like this:

I was able to fix it by reverting to v3.11.12. Any ideas what's changed, and how to fix it properly?

You can use your browser's developer tools to inspect the current CSS that applies to the item. You probably need to increase the specificity of your selector or use !important. The default theme specifies the padding like this:
rz-menu:not(.rz-profile-menu) .rz-navigation-item-wrapper .rz-navigation-item-link {
   padding: 0.8125rem 0.625rem;
}


Adjusted README.md to reflect separate repos decision

Since we're keeping the repositories and tools separate until further discussion in Spring, I need to make sure the README.md is properly updated.

Coverage remained the same at 59.426% when pulling 6a25f530dfcdd397feed18681549a82ac82e7378 on TheKLARKEN:readme into c5f3e6f8a806034a217f1adce532cbe20fe962df on supergiant:master.


Transfer doesn't listen on blocks

Apparently something has changed in the code and whenever I'm processing I'm payouts it keeps hang here even transactions has been processed on block.

! important


Pools of the same image and flavor cannot exist on the same provider

To provide some context:
We have several runner groups that we make public to all but restrict the runner group to specific reusable workflows so that only those workflows can run in that runner group's runners. We could provide just one pool and consolidate usage (min, max, idle), but we want to control the usage of runners available to each of those runner groups separately due to prioritization reasons. We currently are forced to tag the same image several times in all of our providers, but we would like this not to be the case.
We have a need to have multiple pools with the same image and flavor on the same provider. Due to below we cannot have the same image and flavor combination, is there a need for the else in this check to happen:
if _, err := s.getEntityPoolByUniqueFields(tx, entity, newPool.ProviderName, newPool.Image, newPool.Flavor); err != nil {
    if !errors.Is(err, runnerErrors.ErrNotFound) {
        return errors.Wrap(err, "checking pool existence")
    }
} else {
    return runnerErrors.NewConflictError("pool with the same image and flavor already exists on this provider")
}

Please advise on workaround. We have a fork of this repo, would it be safe to remove the check?

Hi @Zappycobra,
The reasoning was that it would ve easier to scale the pool up rather than create an identical one, but this was before the adition of runner groups.
It should be safe to remove that check, or expand it to include the runner group as well.
I can create a PR soon to address this.

@Zappycobra
I opened a PR here:

https://github.com/cloudbase/garm/pull/246

Could you give it a shot and let me know if it fixes the issue for you. Please note, the latest main branch also includes a big change to garm in terms of github credentials management . If you don't want to deal with that now (it should migrate credentials to the DB automatically), you will have to cherry-pick this change into the release/v0.1 branch and build that.

Feel free to reopen this if it's still not fixed by the PR I mentioned


ESP32 reboots with error if the connection resets using Microsoft Examples

On the Adafruit HUZZAH32 Feather, if you loose your WiFi connection, or just have a slow connection, the code crashes and the ESP32 reboots.
This is with the latest Microsoft Azure Libraries and boards files from Espressif json file added to the Boards Manager. The code is from Examples in Azure IoT and "A simple Azure IoT example for sending telemetry." Microsoft example.
You can see below, 4 good messages and then late message because of network latency.
Then we get an error with Func:tlsio_openssl_destroy and when it resets it crashes when trying to initialize SNTP. Network problems will happen - they cant cause errors and reboot.
From button-press restart
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:808
load:0x40078000,len:6084
load:0x40080000,len:6696
entry 0x400802e4
Starting connecting WiFi.
..WiFi connected
IP address:
<IP_ADDRESS>
Info: Initializing SNTP
Info: SNTP initialization complete
Info: IoT Hub SDK for C, version 1.1.23
Info: >>>Connection status: connected
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[2] received for message tracking id = 2 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[3] received for message tracking id = 3 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[4] received for message tracking id = 4 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Error: Time:Thu Nov 15 02:48:20 2018 File:/home/jpagliaccio/.arduino15/packages/esp32/hardware/esp32/1.0.0/libraries/AzureIoT/src/Esp32MQTTClient.cpp Func:SendEventOnce Line:316 Waiting for send confirmation, time is up 10003
Info: >>>Re-connect.
Error: Time:Thu Nov 15 02:48:20 2018 File:/home/jpagliaccio/.arduino15/packages/esp32/hardware/esp32/1.0.0/libraries/AzureIoT/src/az_iot/c-utility/pal/src/tlsio_openssl_compact.c Func:tlsio_openssl_destroy Line:213 tlsio_openssl_destroy called while not in TLSIO_STATE_CLOSED.
Info: >>>Confirmation[5] received for message tracking id = 5 with result = IOTHUB_CLIENT_CONFIRMATION_BECAUSE_DESTROY
Info: Initializing SNTP
assertion "Operating mode must not be set while SNTP client is running" failed: file "/Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/lwip/apps/sntp/sntp.c", line 591, function: sntp_setoperatingmode
abort() was called at PC 0x400e35a3 on core 1
Backtrace: 0x4008f6f4:0x3ffb1d60 0x4008f8f7:0x3ffb1d80 0x400e35a3:0x3ffb1da0 0x40119359:0x3ffb1dd0 0x400d3fca:0x3ffb1df0 0x400d4026:0x3ffb1e10 0x400d30f2:0x3ffb1e30 0x400d339a:0x3ffb1e70 0x400d33d1:0x3ffb1e90 0x400d34f7:0x3ffb1ed0 0x400d2481:0x3ffb1ef0 0x40147f68:0x3ffb1fa0
Rebooting...
ets Jun  8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:808
load:0x40078000,len:6084
load:0x40080000,len:6696
entry 0x400802e4
Starting connecting WiFi.
..WiFi connected
IP address:
<IP_ADDRESS>
Info: Initializing SNTP
Info: SNTP initialization complete
Info: IoT Hub SDK for C, version 1.1.23
Info: >>>Connection status: connected
start sending events.
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Sending data succeed

Pull request 19 should fix the problem.
assertion "Operating mode must not be set while SNTP client is running" failed: file "/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/lwip/lwip/src/apps/sntp/sntp.c", line 600, function: sntp_setoperatingmode

SNTP_Deinit(); required before sntp_setoperatingmode(SNTP_OPMODE_POLL); if SNTP was initialized already.


Working draft of metadata template

I want to start a discussion on a metadata template that Miriam can use for her metadata work, so here's my first shot and thoughts.

Markdown is more human-readable/editable while still parseable by code. In the future, if we have some other system for editing/writing metadata text, JSON may make more sense as a storage mechanism, but for now I think markdown is our best bet.
Some items here (title, license, etc) are atomic enough to make more sense in a db table, but we can parse them out later if we decide to change
Most comments follow the metadata guidelines
Using .md files in github gives us version tracking and control
Anybody familiar with github could make edits/updates to the metadata if they want (ie, stewards)

Thoughts? Ideas? Proposals?

Thanks for the suggestions and the link to Anna's work, I had forgotten where that went. Those are all really good points.
At a conceptual level, my brain is working with a "three-tier" information model for the textual-based metadata parts:

short summary/summary: A brief overview to help a user skimming through a catalog (SGID Index, Open Data Hub, etc) know if the layer might meet their needs

Destination: metadata Summary

description: a longer explanation of the dataset containing everything a user needs to decide whether it meets their needs for a project

Destination: metadata Description

extended description: The really in-depth, nitty-gritty details that are best saved for the data pages on the website

Destination: data pages

This assumes we don't stuff all the info into the metadata, that we keep some for the data pages.
Given this mental model, I'm not thinking we should try to capture the extended description in these markdown files but leave it in the data page source files. Ergo, only some of the questions from Anna's work may be relevant for this work.
Is this mental model complete, or does it need revision? Is it tracking with what you were thinking?

Ok, yeah, that makes sense. I'm thinking about how non-standard the
datapages are, though. There's a lot of custom HTML/Astro formatting in
there, and some pages are combined (parcels come to mind).
Maybe the non-uniformity is a consequence of the mad push to get the
website up in time, and this is now an opportunity to standardize?
Any other ideas on how we handle the complexity?
And what are your thoughts on some datasets having an extended description
that lives only on the data pages and isn't part of the description pushed
to Esri sources (internal, AGOL/Hub)?

extended description
that lives only on the data pages and isn't part of the description pushed
to Esri sources (internal, AGOL/Hub)?

I like that idea. I can foresee situations where the data pages may have additional info that's not worth cluttering up open data, etc.

Ok, yeah, that makes sense. I'm thinking about how non-standard the datapages are, though. There's a lot of custom HTML/Astro formatting in there, and some pages are combined (parcels come to mind).

Yeah this is where the in most circumstances qualifier comes into play. But given the parcels example, the metadata is all the same even though the data download section is merged.

Maybe the non-uniformity is a consequence of the mad push to get the website up in time, and this is now an opportunity to standardize?

Absolutely!

Any other ideas on how we handle the complexity? And what are your thoughts on some datasets having an extended description that lives only on the data pages and isn't part of the description pushed to Esri sources (internal, AGOL/Hub)?

I'm hoping that if we store the metadata as separate parts that can be combined in different ways we can query and assemble the different parts where they are needed. Composability is key.
For instance, for the category index, we can query for the "intro data". The intro data could be combined with the summary to create the basic summary. Then we could query for all the description questions from above to create a closer look but on the website have the ability to insert an image, table, etc between the parts.
I assume we'll get creative with the rich text aspects and enhance or cleanse things depending on where they are presented.

Ok, I've modified the comments to try to capture our latest discussion. What do you guys think of this?
Miriam is starring this week, so I'd like to get something up she can work with as soon as we can.

Ok, I think I've addressed all of Steve's comments except for an example, and I'm gonna leave that for Miriam's introductory effort. That'll give her a chance to get familiar with the existing metadata and us to test out the template.
Greg, I'll leave this open until you've had a chance to look over our latest changes.

Nice work, Jake/Steve. I made a few comments in the template, but overall it looks great. Thanks.
I think for me, it's important that we use standardized naming in the metadataacross te datasets (UDOT, ST GEORGE, DWRi, DWR, etc).


Add Helix announce endpoint

Pull request checklist:

[ ] CHANGELOG.md was updated, if applicable

Description

Idk if it is important, but shouldn't Helix::sendChatAnnoucement rather be Helix::sendChatAnnouncement (missing n in Announcement)

Can we implement colored announcements in this PR? I believe the only real disdain against them was the fact that IRC invoked announcements did not return color data, which is "resolved" by their deprecation.

Idk if it is important, but shouldn't Helix::sendChatAnnoucement rather be Helix::sendChatAnnouncement (missing n in Announcement)

fixed

Can we implement colored announcements in this PR (maybe just the commands)? I believe the only real disdain against them was the fact that IRC invoked announcements did not return color data, which is "resolved" by their deprecation.

I decided to introduce internal support for sending colored announcements as it was simply more effort to not do it. I didn't want to do commands because I wanted the PR to only move the existing command to helix, just fix the 'bug' and not introduce any new features at the same time. :)


question about MARINe data set

Hey @bbest & @mspector13 - question about the following file that is part of the rocky intertidal MARINe dataset:
/Volumes/GoogleDrive/Shared drives/NMS/data/github_info-intertidal_data/sanctuary_species_percentcover.csv
What does the sp column refer to? Here are the first few lines of the output from the file:

Hey @superjai
I may be mistaken, but I believe "sp" refers to species present on the data collector's data sheet, whereas "sp_target" refers to the targeted species habitat. In other words, for the screen shot above, the data collectors were in a known Chthamalus balanus location (i.e. sampling within barnacle habitat) for a whole host of species (including something abbreviated to Antele in this case)
MARNe's protocol is different than most other sampling protocols that I'm familiar with. Let me know if this isn't clear and we can jump on a call

info-intertidal/data

CINMS_species_targets.csv
CINMS_species.csv
nms_spp.csv
nms_spp_info.csv
nms_spp_targets.csv
spp_targets.csv


Android issue with the latest NDK on OS X

Hello,
I am trying to build OpenSSL (libcrypto.a and libssl.a) for Android using the NDK 21.4.7075529 and Android Platform 29 for arm64
I was able to setup almost everything but I keep having this issue coming regarding
~/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64//sysroot/usr/include/android/legacy_signal_inlines.h:138:10: error: 'bsd_signal' is unavailable: obsoleted in Android 21
  return bsd_signal(s, f);
         ^
~/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64//sysroot/usr/include/android/legacy_signal_inlines.h:41:14: note: 'bsd_signal' has been explicitly marked unavailable here
sighandler_t bsd_signal(int __signal, sighandler_t __handler) __REMOVED_IN(21);

I tried to find some workaround on google but so far I am stuck. Do you have any suggestion how I can fix that without using an older platform, because to support arm64 need to use 21+ version.
Thanks

Seems like __ANDROID_API__ is not defined (properly). This reminds me of #16560.
BTW, what version of OpenSSL are you trying to build?

I'm confused.  OpenSSL does not contain a call to bsd_signal.  So this feels more like an infrastructure issue.

Yes I think you right, the problem is more with the argument parameter.
Anyway I decide to choose another approach to build openssl cross platform using cmake.
I was able to create the ssl and crypto lib this way for android.
Thanks


pdns-recursor: 4.6.2 -> 4.7.0

Description of changes
Version bump
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested with pdns-recursor.tests (depends on https://github.com/NixOS/nixpkgs/pull/177278)
[x] Tested compilation of all packages that depend on this change
[x] Tested basic functionality of all binary files
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg test ncdns pdns-recursor


JOSM Statistics

Considering that JOSM is the only one editor that allow external data import to OSM. I would like to see how many of the theoretical data produced by JOSM is actual data Made/Mapped by the contributors or data Imported by the contributors. It could not be realistic that several contributors has less than 1 thousand historical changesets and several millions of map changes at the same time.

Yes, it might be interesting to distinguish between manual contributions and import contributions with external data. I'm not sure how to do it though. There might be tag in JOSM to indicate (maybe possible to detect with #49) or maybe a heuristic if the number of edits per changeset is to high, but I'm not really sure if this would make sense.

Looking at tags of JOSM (https://piebro.github.io/openstreetmap-statistics/#2fb7) I don't see an easy way to distinguish between data imports and and manual added data with JOSM. If anyone has a good idea feel free to add it here.

Maybe look for certain keywords in the changeset comment (such as "import", but maybe not "cleanup import"). It is a fuzzy match, but single false positives and false negatives will hopefully even out in the statistics?

That's some helpful info. I haven't looked at the comments at all until now, but this might be a good start together with. Looking at the bbox also sound like a good idea.


An error occurs when entering "04" as the number of concurrent requests during adding scale rule

OS: Win 10
Build Version: 20230510.5
Regression: Not a Regression
Repro Steps:

F1 -> Select "Azure Container Apps: Add Scale Rule..." -> Select a container app environment -> Select a container app -> Select a revision -> Enter a name for the new scale rule -> Select "HTTP scaling" -> Enter "04" as the number of concurrent requests.
Check whether no error occurs or not.

Expect:
No error occurs when entering "04" as the number of concurrent requests.
Actual:
An error occurs when entering "04" as the number of concurrent requests.

More Info:

This issue also reproduces when entering "4.0" as the number of concurrent requests in VS Code.
This issue does not reproduce when entering "04/4.0" as the number of concurrent requests in portal.

This is uncommon enough that we won't fix it.


Feature Request - CSS Overrides

First off compliments on the template! I love it! However I would love to apply my own branding (colours) so it would be awesome to support CSS overrides. I am more than happy to submit a PR that implements a CSS override option if you are open to that!
I could imagine using the head.html to add an override.css in case the parameter is specified. We could even use the asset bundling option Hugo provides to combine CSS files. Feel free to assign to me and let me know if you want me to pick it up.

Hi @appieschot, thank you for getting in touch & thank you for the kind words 😊.

However, I would love to apply my branding (colors), so it would be awesome to support CSS overrides.

This question comes up quite a lot, see https://github.com/janraasch/hugo-scroll/issues/2#issuecomment-675389713 & https://github.com/janraasch/hugo-scroll/issues/1#issuecomment-671774363. I have not documented the process on README.md, but will do so now 😇.
Here's what you can do to add your own CSS:

Add a custom_head.html to your layouts/partials-directory. If you started from the exampleSite on this repo, you should already have such a file.

In there you can add a

Thanks for the clarification! Definitely got it working, however I only wanted to add CSS so I could apply asset bundling for optimal speed.

Thanks for the clarification!

Sure 👍.

[...] optimal speed [...]

That sounds like something one should have 😛 😇 😊.
In that case, you would (for the time being 😊) have to overwrite layouts/partials/head.html with a local copy including your asset bundling solution.
That should fix the issue for you then 😊.

If you have some time, I would also like to see how we could integrate this into the theme.
In a dream world scenario, I would love to have the .css parsed by Hugo Pipes with a variables.css which has variables for the different colors. So it is basically plug-and-play to add custom branding. I should open an idea-issue for this.
Anyway, if your up for it, feel free to open a pr (for asset bundling and/or the dream world scenario 😉). Then we can carry on the conversation with some real source code to get a better feel for this feature.

Sure, just created a fork where I added a _customvars.scss. Basics works, so I will go through the CSS file and properly construct the theme. It does require the extended version of Hugo but so far things look good ;-). Will use the weekend to update and create a PR 😎

#98 goes towards this goal

@appieschot We finally implemented CSS variables for overriding. It's the first version that may still evolve a bit throughout 2.0 release planned for this year


Matrix Multiplication benchmark analysis

See #355 for the background. I am now applying the same methodology to the matrix multiplication benchmark:

https://juliasimd.github.io/LoopVectorization.jl/stable/examples/matrix_multiplication/

I modified the kernel to not zero C, to simplify things a bit:
julia> N = 64
64

julia> A = rand(N,N); B = rand(N,N); C = rand(N,N);

julia> function A_mul_B2!(C, A, B)
           @turbo for n ∈ indices((C,B), 2), m ∈ indices((C,A), 1)
               for k ∈ indices((A,B), (2,1))
                   C[m,n] += A[m,k] * B[k,n]
               end
           end
       end
A_mul_B2! (generic function with 1 method)

julia> @benchmark A_mul_B2!($C, $A, $B)
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  23.708 μs …  47.333 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     24.250 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   24.294 μs ± 717.909 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

        ▂  ▁                        ▂  ▆   █  ▆  ▄  ▃  ▁       ▂
  ▃▁▁█▁▁█▁▁█▁▁▇▁▁▅▁▁▁▄▁▁▄▁▁▃▁▁▁▁▁▁▁▁█▁▁█▁▁▁█▁▁█▁▁█▁▁█▁▁█▁▁▆▁▁▄ █
  23.7 μs       Histogram: log(frequency) by time      24.5 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> cpu_freq = 3.2e9 # Ghz
3.2e9

julia> 23.708e-6 * cpu_freq / N^3
0.289404296875

In C++ I tested two kernels:
void gemm_mnk(double* C, double* A, double* B, long M, long K, long N){
  for (long m = 0; m < M; m++){
    for (long n = 0; n < N; n++){
      for (long k = 0; k < K; k++){
        C[m + n*M] += A[m + k*M] * B[k + n*K];
      }
    }
  }
  return;
}

void gemm_nkm(double* C, double* A, double* B, long M, long K, long N){
   for (long n = 0; n < N; n++){
    for (long k = 0; k < K; k++){
      for (long m = 0; m < M; m++){
        C[m + n*M] += A[m + k*M] * B[k + n*K];
      }
    }
  }
  return;
}

For N=64, I am getting:
gemm_mnk: 1.78319
gemm_nkm: 0.21441

Aren't these two kernels equivalent? They seem to operate on the same matrix layout and return exactly the same answer, they just differ in loop ordering.
The inner loop from gemm_nkm as generated by Clang seems to be:
LBB7_5:                                 ;   Parent Loop BB7_3 Depth=1
                                        ;     Parent Loop BB7_4 Depth=2
                                        ; =>    This Inner Loop Header: Depth=3
	ldr	d0, [x13, x14]
	ldp	q1, q2, [x4, #-256]
	fmla.2d	v10, v1, v0[0]
	fmla.2d	v9, v2, v0[0]
	ldp	q1, q2, [x4, #-224]
	fmla.2d	v8, v1, v0[0]
	fmla.2d	v31, v2, v0[0]
	ldp	q1, q2, [x4, #-192]
	fmla.2d	v30, v1, v0[0]
	fmla.2d	v29, v2, v0[0]
	ldp	q1, q2, [x4, #-160]
	fmla.2d	v28, v1, v0[0]
	fmla.2d	v27, v2, v0[0]
	ldp	q1, q2, [x4, #-128]
	fmla.2d	v26, v1, v0[0]
	fmla.2d	v25, v2, v0[0]
	ldp	q1, q2, [x4, #-96]
	fmla.2d	v24, v1, v0[0]
	fmla.2d	v23, v2, v0[0]
	ldp	q1, q2, [x4, #-64]
	fmla.2d	v22, v1, v0[0]
	fmla.2d	v21, v2, v0[0]
	ldp	q1, q2, [x4, #-32]
	fmla.2d	v20, v1, v0[0]
	fmla.2d	v19, v2, v0[0]
	ldp	q1, q2, [x4]
	fmla.2d	v18, v1, v0[0]
	fmla.2d	v17, v2, v0[0]
	ldp	q1, q2, [x4, #32]
	fmla.2d	v16, v1, v0[0]
	fmla.2d	v7, v2, v0[0]
	ldp	q1, q2, [x4, #64]
	fmla.2d	v6, v1, v0[0]
	fmla.2d	v5, v2, v0[0]
	ldp	q1, q2, [x4, #96]
	fmla.2d	v4, v1, v0[0]
	ldp	q1, q3, [sp, #96]               ; 32-byte Folded Reload
	fmla.2d	v1, v2, v0[0]
	str	q1, [sp, #96]                   ; 16-byte Folded Spill
	ldp	q1, q2, [x4, #128]
	fmla.2d	v3, v1, v0[0]
	ldr	q1, [sp, #128]                  ; 16-byte Folded Reload
	fmla.2d	v1, v2, v0[0]
	stp	q3, q1, [sp, #112]              ; 32-byte Folded Spill
	ldp	q1, q2, [x4, #160]
	fmla.2d	v12, v1, v0[0]
	fmla.2d	v11, v2, v0[0]
	ldp	q1, q2, [x4, #192]
	fmla.2d	v13, v1, v0[0]
	fmla.2d	v15, v2, v0[0]
	ldp	q1, q2, [x4, #224]
	fmla.2d	v14, v1, v0[0]
	ldr	q1, [sp, #144]                  ; 16-byte Folded Reload
	fmla.2d	v1, v2, v0[0]
	str	q1, [sp, #144]                  ; 16-byte Folded Spill
	add	x14, x14, #8                    ; =8
	add	x4, x4, #512                    ; =512
	cmp	x14, #512                       ; =512
	b.ne	LBB7_5

Theoretical Peak Performance
The Clang results hint that gemm_nkm is probably exactly written to be optimal and to vectorize over m:
   for (long n = 0; n < N; n++){
    for (long k = 0; k < K; k++){
      for (long m = 0; m < M; m++){
        C[m + n*M] += A[m + k*M] * B[k + n*K];
      }
    }
  }

In this inner loop, vectorized over m, we have 1 memory write (C[m + n*M]), one memory read (A[m + k*M]) and one fma. Everything else is a constant. On M1: memory write is 0.25 per double, memory read is 0.1666 per double. fma is 0.125 per double. So if we only had the inner loop, the bottleneck would be memory write. However, the writes to C[m + n*M] can be reused in the loop over k. The same with memory reads, always only two loops out of three access it, but the fma is used by all the loops.
Another way to look at it is that the complexity is O(N^3), we have N^3 fma, but only N^2 memory writes (C), 2*N^2 memory reads (A and B).
So the bottleneck is actually only fma for large enough N.
The theoretical peak performance for the loop body on M1 is thus 0.125 clock cycles per double.

The theoretical peak performance for the loop body on M1 is thus 0.125 clock cycles per double.

I get fairly close to this on the M1:
julia> @benchmark A_mul_B2!($C, $A, $B)
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  11.083 μs …  22.625 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     11.167 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   11.189 μs ± 306.488 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

                         ▁█
  ▂▁▁▁▁▁▁▁▁▁▁▁▅▁▁▁▁▁▁▁▁▁▁██▁▁▁▁▁▁▁▁▁▁▅▄▁▁▁▁▁▁▁▁▁▁▃▁▁▁▁▁▁▁▁▁▁▁▂ ▂
  11.1 μs         Histogram: frequency by time         11.3 μs <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> cpu_freq = 3.2e9 # Ghz
3.2e9

julia> 11.083e-6 * cpu_freq / N^3
0.13529052734375

The Clang generated assembly looks pretty good. But it's still slow. 0.135 is decent, that is 92% peak.
I thought I got 100% of the peak on Intel hardware about 5 years ago. However the matrices might have been larger. For smaller matrices (and 64 I think is too small) I don't get the peak.
Are you able to get 100% of the peak for large enough matrices in Julia, whether M1 or Intel? I don't care which platform.

Here is the inner loop LV generates for Neon:
L328:
	ld1r	{ v10.2d }, [x20], #8
	ldp	q0, q11, [x15]
	ldp	q12, q13, [x15, #32]
	ldr	d14, [x1, x7]
	add	x15, x15, x6
	fmla	v29.2d, v10.2d, v0.2d
	fmla	v24.2d, v10.2d, v11.2d
	fmla	v17.2d, v10.2d, v12.2d
	fmla	v2.2d, v10.2d, v13.2d
	ldr	d10, [x1, x9]
	fmla	v30.2d, v0.2d, v14.d[0]
	fmla	v25.2d, v11.2d, v14.d[0]
	fmla	v18.2d, v12.2d, v14.d[0]
	fmla	v4.2d, v13.2d, v14.d[0]
	ldr	d14, [x1, x10]
	fmla	v31.2d, v0.2d, v10.d[0]
	fmla	v26.2d, v11.2d, v10.d[0]
	fmla	v19.2d, v12.2d, v10.d[0]
	fmla	v5.2d, v13.2d, v10.d[0]
	ldr	d10, [x1, x12]
	fmla	v8.2d, v0.2d, v14.d[0]
	fmla	v27.2d, v11.2d, v14.d[0]
	fmla	v20.2d, v12.2d, v14.d[0]
	fmla	v6.2d, v13.2d, v14.d[0]
	ldr	d14, [x1, x14]
	fmla	v9.2d, v0.2d, v10.d[0]
	fmla	v28.2d, v11.2d, v10.d[0]
	fmla	v21.2d, v12.2d, v10.d[0]
	fmla	v7.2d, v13.2d, v10.d[0]
	cmp	x15, x11
	fmla	v23.2d, v0.2d, v14.d[0]
	fmla	v22.2d, v11.2d, v14.d[0]
	fmla	v16.2d, v12.2d, v14.d[0]
	fmla	v3.2d, v13.2d, v14.d[0]
	mov	x1, x20
	b.ls	L328

The Clang generated assembly looks pretty good. But it's still slow. 0.135 is decent, that is 92% peak.
I thought I got 100% of the peak on Intel hardware about 5 years ago. However the matrices might have been larger. For smaller matrices (and 64 I think is too small) I don't get the peak.
Are you able to get 100% of the peak for large enough matrices in Julia, whether M1 or Intel? I don't care which platform.

Getting close to the peak is very easy on Tiger Lake, e.g. using 72x72 matrices:
julia> @pstats "(cpu-cycles,task-clock),(instructions,branch-instructions,branch-misses), (L1-dcache-load-misses, L1-dcache-loads, cache-misses, cache-references)" begin
         foreachf(AmulB!, 100_000, C0, A, B)
       end
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ cpu-cycles               4.70e+09  100.0%  #  4.2 cycles per ns
└ task-clock               1.11e+09  100.0%  #  1.1 s
┌ instructions             8.13e+09  100.0%  #  1.7 insns per cycle
│ branch-instructions      1.78e+08  100.0%  #  2.2% of instructions
└ branch-misses            2.50e+06  100.0%  #  1.4% of branch instructions
┌ L1-dcache-load-misses    5.48e+08  100.0%  # 21.0% of dcache loads
│ L1-dcache-loads          2.61e+09  100.0%
│ cache-misses             1.73e+03  100.0%  # 72.7% of cache references
└ cache-references         2.38e+03  100.0%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

julia> 4.7e9 / (100_000 * 72^3)
0.12592163923182442

Or using C[m,n] +=  instead:
julia> @pstats "(cpu-cycles,task-clock),(instructions,branch-instructions,branch-misses), (L1-dcache-load-misses, L1-dcache-loads, cache-misses, cache-references)" begin
         foreachf(AmulBplusC!, 100_000, C0, A, B)
       end
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ cpu-cycles               4.74e+09  100.0%  #  4.2 cycles per ns
└ task-clock               1.12e+09  100.0%  #  1.1 s
┌ instructions             8.19e+09  100.0%  #  1.7 insns per cycle
│ branch-instructions      1.78e+08  100.0%  #  2.2% of instructions
└ branch-misses            2.50e+06  100.0%  #  1.4% of branch instructions
┌ L1-dcache-load-misses    5.51e+08  100.0%  # 20.7% of dcache loads
│ L1-dcache-loads          2.67e+09  100.0%
│ cache-misses             1.79e+03  100.0%  # 68.8% of cache references
└ cache-references         2.60e+03  100.0%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

julia> 4.74e9 / (100_000 * 72^3)
0.12699331275720166

As before, Tiger Lake is very starved on FMA units, hence it's easy to get bottlenecked there, and thus achieve nearly peak FMA unit utilization.
But this is about as close as I can get.
The assembly:
L480:
	vbroadcastsd	zmm29, qword ptr [r8]
	vmovupd	zmm30, zmmword ptr [rdx]
	vmovupd	zmm31, zmmword ptr [rdx + 64]
	vmovupd	zmm28, zmmword ptr [rdx + 128]
	prefetcht0	byte ptr [rdx + rbx]
	prefetcht0	byte ptr [rdx + rbx + 64]
	prefetcht0	byte ptr [rdx + rbx + 128]
	vfmadd231pd	zmm19, zmm30, zmm29     # zmm19 = (zmm30 * zmm29) + zmm19
	vfmadd231pd	zmm10, zmm31, zmm29     # zmm10 = (zmm31 * zmm29) + zmm10
	vbroadcastsd	zmm0, qword ptr [r8 + r14]
	vfmadd231pd	zmm1, zmm28, zmm29      # zmm1 = (zmm28 * zmm29) + zmm1
	vfmadd231pd	zmm20, zmm30, zmm0      # zmm20 = (zmm30 * zmm0) + zmm20
	vfmadd231pd	zmm11, zmm31, zmm0      # zmm11 = (zmm31 * zmm0) + zmm11
	vfmadd231pd	zmm2, zmm28, zmm0       # zmm2 = (zmm28 * zmm0) + zmm2
	vbroadcastsd	zmm0, qword ptr [r8 + 2*r14]
	vfmadd231pd	zmm21, zmm30, zmm0      # zmm21 = (zmm30 * zmm0) + zmm21
	vfmadd231pd	zmm12, zmm31, zmm0      # zmm12 = (zmm31 * zmm0) + zmm12
	vfmadd231pd	zmm3, zmm28, zmm0       # zmm3 = (zmm28 * zmm0) + zmm3
	vbroadcastsd	zmm0, qword ptr [r8 + r13]
	vfmadd231pd	zmm22, zmm30, zmm0      # zmm22 = (zmm30 * zmm0) + zmm22
	vfmadd231pd	zmm13, zmm31, zmm0      # zmm13 = (zmm31 * zmm0) + zmm13
	vfmadd231pd	zmm4, zmm28, zmm0       # zmm4 = (zmm28 * zmm0) + zmm4
	vbroadcastsd	zmm0, qword ptr [r8 + 4*r14]
	vfmadd231pd	zmm23, zmm30, zmm0      # zmm23 = (zmm30 * zmm0) + zmm23
	vfmadd231pd	zmm14, zmm31, zmm0      # zmm14 = (zmm31 * zmm0) + zmm14
	vfmadd231pd	zmm5, zmm28, zmm0       # zmm5 = (zmm28 * zmm0) + zmm5
	vbroadcastsd	zmm0, qword ptr [r8 + r15]
	vfmadd231pd	zmm24, zmm30, zmm0      # zmm24 = (zmm30 * zmm0) + zmm24
	vfmadd231pd	zmm15, zmm31, zmm0      # zmm15 = (zmm31 * zmm0) + zmm15
	vfmadd231pd	zmm6, zmm28, zmm0       # zmm6 = (zmm28 * zmm0) + zmm6
	vbroadcastsd	zmm0, qword ptr [r8 + 2*r13]
	vfmadd231pd	zmm25, zmm30, zmm0      # zmm25 = (zmm30 * zmm0) + zmm25
	vfmadd231pd	zmm16, zmm31, zmm0      # zmm16 = (zmm31 * zmm0) + zmm16
	vbroadcastsd	zmm29, qword ptr [r8 + rax]
	vfmadd231pd	zmm7, zmm28, zmm0       # zmm7 = (zmm28 * zmm0) + zmm7
	vfmadd231pd	zmm26, zmm30, zmm29     # zmm26 = (zmm30 * zmm29) + zmm26
	vfmadd231pd	zmm17, zmm31, zmm29     # zmm17 = (zmm31 * zmm29) + zmm17
	vfmadd231pd	zmm8, zmm28, zmm29      # zmm8 = (zmm28 * zmm29) + zmm8
	vbroadcastsd	zmm0, qword ptr [r8 + 8*r14]
	vfmadd231pd	zmm27, zmm0, zmm30      # zmm27 = (zmm0 * zmm30) + zmm27
	vfmadd231pd	zmm18, zmm0, zmm31      # zmm18 = (zmm0 * zmm31) + zmm18
	vfmadd231pd	zmm9, zmm28, zmm0       # zmm9 = (zmm28 * zmm0) + zmm9
	add	rdx, r10
	add	r8, 8
	cmp	rdx, rsi
	jbe	L480

Doubling the FMA units on Cascadelake (and sacrificing a lot of out of order capabilities, a bit of cache size, etc...):
julia> @pstats "cpu-cycles,(instructions,branch-instructions,branch-misses),(task-clock,context-switches,cpu-migrations,page-faults),(L1-dcache-load-misses,L1-dcache-loads,L1-icache-load-misses),(dTLB-load-misses,dTLB-loads)" begin
         foreachf(AmulBplusC!, 100_000, C0, A, B)
       end
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
╶ cpu-cycles               2.51e+09   49.9%  #  3.6 cycles per ns
┌ instructions             8.24e+09   75.0%  #  3.3 insns per cycle
│ branch-instructions      1.88e+08   75.0%  #  2.3% of instructions
└ branch-misses            1.01e+06   75.0%  #  0.5% of branch instructions
┌ task-clock               7.01e+08  100.0%  # 701.0 ms
│ context-switches         0.00e+00  100.0%
│ cpu-migrations           0.00e+00  100.0%
└ page-faults              0.00e+00  100.0%
┌ L1-dcache-load-misses    6.90e+08   25.0%  # 25.7% of dcache loads
│ L1-dcache-loads          2.69e+09   25.0%
└ L1-icache-load-misses    2.43e+04   25.0%
┌ dTLB-load-misses         0.00e+00   25.0%  #  0.0% of dTLB loads
└ dTLB-loads               2.69e+09   25.0%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

julia> 2.51e9 / (100_000 * 72^3)
0.06724751371742113

We're at about 93% instead of the 98%+ on Tiger Lake.

The Clang results hint that gemm_nkm is probably exactly written to be optimal and to vectorize over m:

The inner most loop in the two assembly examples I posted above were in fact the k loop, while both the m and n loops were unrolled.
LV will "canonicalize" to produce this code regardless of the initial loop order.
The approach is to:

Hoist the C loads and stores out of the loop.
Unroll m and also vectorize it.
Unroll n and also vectorize it.

For each factor by which n is unrolled, you can reuse a load from A[m,k].
For each factor by which m is unrolled, you can reuse a load from B[k,n].
Hence, unrolling both of these loops is a great means of maximizing load-reuse, and thus increasing the fma-to-load ratio.

I thought I got 100% of the peak on Intel hardware about 5 years ago. However the matrices might have been larger. For smaller matrices (and 64 I think is too small) I don't get the peak.
Are you able to get 100% of the peak for large enough matrices in Julia, whether M1 or Intel? I don't care which platform.

LV currently doesn't do cache-level tiling, which is necessary for good performance outside of the L2 cache.
The best I seem to be able to do (Tiger Lake) is around the 144-square mark:
julia> M = K = N = 144; A = rand(M,K); B = rand(K,N); C1 = A*B; C0 = similar(C1);

julia> C0 .= 0;

julia> @pstats "(cpu-cycles,task-clock),(instructions,branch-instructions,branch-misses), (L1-dcache-load-misses, L1-dcache-loads, cache-misses, cache-references)" begin
         foreachf(AmulBplusC!, 10_000, C0, A, B)
       end
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ cpu-cycles               3.76e+09  100.0%  #  4.2 cycles per ns
└ task-clock               8.91e+08  100.0%  # 891.5 ms
┌ instructions             6.45e+09  100.0%  #  1.7 insns per cycle
│ branch-instructions      1.40e+08  100.0%  #  2.2% of instructions
└ branch-misses            9.73e+05  100.0%  #  0.7% of branch instructions
┌ L1-dcache-load-misses    4.92e+08  100.0%  # 23.4% of dcache loads
│ L1-dcache-loads          2.10e+09  100.0%
│ cache-misses             5.42e+03  100.0%  # 22.6% of cache references
└ cache-references         2.40e+04  100.0%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

julia> 3.76e9 / (10_000 * 144^3)
0.12592163923182442

julia> 0.125/ans
0.9926808510638298

While the amount of memory occupied by the matrices is O(N^2), the amount of memory bandwidth needed is O(N^3), thus this becomes the dominating factor to achieving good performance at large sizes.

Thanks for the analysis. I mean, at the end of the day, over 90% peak is excellent and you are getting it everywhere.
For example on M1, Clang gets about 60% of peak if I help it (gemm_nkm) or at 7% peak without help (gemm_mnk).  My own Julia+LV due to the running via Rosetta runs at 43%, but no matter how you write it. And on your machine when compiled properly it runs at 92% peak.
I would say that if LV consistently delivers over 90% peak, that's very good. It means if somebody comes and create a library that runs at 100% peak, it will only be 1.1x faster (10%).
It'd be nice to visualize this, to make it clear. If you plot the clock counts, you will have a plot at the bottom, that is the peak, and then everything else is above it. And you can see how far each benchmark is.


Opening a file via the folder breadcrumbs doesn't add it to the Recent File list

Issue Type: Bug

Open a file within a folder.
Use the breadcrumbs under the tab to navigate to a parent folder and select a different file to open.

Optional: Click the tab to keep the file open.

Close the newly opened file.
Note: This file is not added to the recent file list:

VS Code version: Code 1.41.1 (26076a4de974ead31f97692a0d32f90d735645c0, 2019-12-18T14:58:56.166Z)
OS version: Windows_NT x64 10.0.19594

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz (8 x 2112)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: enabledrasterization: enabledskia_renderer: disabled_offsurface_control: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.92GB (7.01GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (19)

Extension
Author (truncated)
Version

vscode-browser-preview
auc
0.6.3

github-markdown-preview
bie
0.0.2

markdown-checkbox
bie
0.1.3

markdown-emoji
bie
0.0.9

markdown-preview-github-styles
bie
0.1.6

markdown-yaml-preamble
bie
0.0.4

vscode-markdownlint
Dav
0.34.0

python
ms-
2020.2.64397

debugger-for-chrome
msj
4.12.6

vetur
oct
0.23.0

java
red
0.59.1

LiveServer
rit
5.6.1

code-spell-checker
str
1.7.23

vscodeintellicode
Vis
1.2.6

vscode-java-debug
vsc
0.25.1

vscode-java-dependency
vsc
0.8.0

vscode-java-pack
vsc
0.8.1

vscode-java-test
vsc
0.22.2

vscode-maven
vsc
0.21.0

File > Open Recent is being filled from:

opening through File > Open
external open (e.g. terminal)

@bpasero is there a reason to not include the breadcrumb opens this way? Especially if I click the tab and make it stay open?

We have a internal list of recently opened that we always update: Ctrl+P (look for recently opened to the top)


Add vacuum_world.ipynb

This PR:

Fixes #720
Adds a new notebook: vacuum_world.ipynb which explains the various agent programs given in the book.
Also adds appropriate block diagrams to demonstrate each agent's mechanism, as described in the book.

@norvig and @MrDupin: Please review the PR.
Thanks!

@norvig and @MrDupin: I will also add visualizations as well as a two-dimensional environment for the same.
Thanks!


Remove DataStream.seek override (fixes: #299)

Its signature does not match Stream.seek, leading to the bug mentioned
in #299.
Furthermore, this method does nothing, where as the base Stream.seek
should work for any kind of stream.

👍


[C++] Custom certificate verifier should not depend on presence of root certs

TL;DR; I propose to make grpc_tls_certificate_verifier object, if set by user, an one and only authority on certificate validity. No messing with root cert/crl sets. Just the output of grpc_tls_certificate_verifier::Verify to decide.
This was to some extent discussed before, but the issue still applies, despite the refactoring of TLS code.
Consider a system such as OSX/IOS/Windows and to some extent Android which do not expose user certificates as a bunch of pem blobs in readable location (those easily amount to 90%+ of all client installations on this planet). All those systems provide a readily accessible API to verify peer certificate chains in a system dependent manner. In many cases it is critically important to comply with the system specific method of verification.
Right now we have the implementation referenced below.
The main issue with it: it does all the hard work trying to initialize the "root cert" verification set even if set_verify_server_certs is set to false. The check for this options happens rather late, so a lot of cycles are wasted for nothing (as verification will not be relying on those certs anyway).
Nevertheless, we must provide some "root certs" for the current implementation to work at all. Moreover, we must maintain them in valid state, even though we know them to be non-functional.
Additionally, the naming of an option set_verify_server_certs is misleading in such scenarios. We don't want to disable verification, we want to delegate it.
Thus, I think, it makes sense to drop the set_verify_server_certs option and instead simply check for presence of explicitly set grpc_tls_certificate_verifier. If it is set, no root set need to be populated and verification is fully delegated.
This will also make grpc_tls_certificate_provider use case simpler. Right now, in cases where intermediate root certs are delivered via network (xds style thing) the boilerplate of dynamic provider is pretty bad. It's actually easier to put together a custom X509_STORE_CTX (or whatever runtime platform offers) explicitly in the verifier than jump around the provider.
https://github.com/grpc/grpc/blob/adfd009d3a255b825ea91959620c11805418b22b/src/core/tsi/ssl_transport_security.cc#L2073-L2117

I have rearranged the initialisation flow as following - I think it makes more sense in cases where are no root certs readily available anywhere on the system and custom verifier will be present.
--- src/core/lib/security/security_connector/ssl_utils.cc.orig	2021-12-17 06:33:48.000000000 +1100
+++ src/core/lib/security/security_connector/ssl_utils.cc	2022-05-20 19:07:15.000000000 +1000
@@ -426,7 +426,7 @@
     tsi_ssl_client_handshaker_factory** handshaker_factory) {
   const char* root_certs;
   const tsi_ssl_root_certs_store* root_store;
-  if (pem_root_certs == nullptr) {
+  if (pem_root_certs == nullptr && !skip_server_certificate_verification) {
     gpr_log(GPR_INFO,
             "No root certificates specified; use ones stored in system default "
             "locations instead");
@@ -445,7 +445,7 @@
                            pem_key_cert_pair->private_key != nullptr &&
                            pem_key_cert_pair->cert_chain != nullptr;
   tsi_ssl_client_handshaker_options options;
-  GPR_DEBUG_ASSERT(root_certs != nullptr);
+  //GPR_DEBUG_ASSERT(root_certs != nullptr);
   options.pem_root_certs = root_certs;
   options.root_store = root_store;
   options.alpn_protocols =

--- src/core/tsi/ssl_transport_security.cc.orig	2021-12-17 06:33:48.000000000 +1100
+++ src/core/tsi/ssl_transport_security.cc	2022-05-20 19:38:34.000000000 +1000
@@ -1954,9 +1954,6 @@

   if (factory == nullptr) return TSI_INVALID_ARGUMENT;
   *factory = nullptr;
-  if (options->pem_root_certs == nullptr && options->root_store == nullptr) {
-    return TSI_INVALID_ARGUMENT;
-  }

 #if OPENSSL_VERSION_NUMBER >= 0x10100000
   ssl_context = SSL_CTX_new(TLS_method());
@@ -1990,27 +1987,6 @@
   }

   do {
-    result = populate_ssl_context(ssl_context, options->pem_key_cert_pair,
-                                  options->cipher_suites);
-    if (result != TSI_OK) break;
-
-#if OPENSSL_VERSION_NUMBER >= 0x10100000
-    // X509_STORE_up_ref is only available since OpenSSL 1.1.
-    if (options->root_store != nullptr) {
-      X509_STORE_up_ref(options->root_store->store);
-      SSL_CTX_set_cert_store(ssl_context, options->root_store->store);
-    }
-#endif
-    if (OPENSSL_VERSION_NUMBER < 0x10100000 || options->root_store == nullptr) {
-      result = ssl_ctx_load_verification_certs(
-          ssl_context, options->pem_root_certs, strlen(options->pem_root_certs),
-          nullptr);
-      if (result != TSI_OK) {
-        gpr_log(GPR_ERROR, "Cannot load server root certificates.");
-        break;
-      }
-    }
-
     if (options->num_alpn_protocols != 0) {
       result = build_alpn_protocol_name_list(
           options->alpn_protocols, options->num_alpn_protocols,
@@ -2033,16 +2009,45 @@
       SSL_CTX_set_next_proto_select_cb(
           ssl_context, client_handshaker_factory_npn_callback, impl);
     }
+
+    if (options->skip_server_certificate_verification) {
+      SSL_CTX_set_verify(ssl_context, SSL_VERIFY_PEER, NullVerifyCallback);
+      *factory = impl;
+      return TSI_OK;
+    }
+
+    if (options->pem_root_certs == nullptr && options->root_store == nullptr) {
+      result = TSI_INVALID_ARGUMENT;
+      break;
+    }
+
+    result = populate_ssl_context(ssl_context, options->pem_key_cert_pair,
+                                  options->cipher_suites);
+    if (result != TSI_OK) break;
+
+#if OPENSSL_VERSION_NUMBER >= 0x10100000
+    // X509_STORE_up_ref is only available since OpenSSL 1.1.
+    if (options->root_store != nullptr) {
+      X509_STORE_up_ref(options->root_store->store);
+      SSL_CTX_set_cert_store(ssl_context, options->root_store->store);
+    }
+#endif
+    if (OPENSSL_VERSION_NUMBER < 0x10100000 || options->root_store == nullptr) {
+      result = ssl_ctx_load_verification_certs(
+          ssl_context, options->pem_root_certs, strlen(options->pem_root_certs),
+          nullptr);
+      if (result != TSI_OK) {
+        gpr_log(GPR_ERROR, "Cannot load server root certificates.");
+        break;
+      }
+    }
   } while (false);
   if (result != TSI_OK) {
     tsi_ssl_handshaker_factory_unref(&impl->base);
     return result;
   }
-  if (options->skip_server_certificate_verification) {
-    SSL_CTX_set_verify(ssl_context, SSL_VERIFY_PEER, NullVerifyCallback);
-  } else {
-    SSL_CTX_set_verify(ssl_context, SSL_VERIFY_PEER, nullptr);
-  }
+
+  SSL_CTX_set_verify(ssl_context, SSL_VERIFY_PEER, nullptr);
   /* TODO(jboeuf): Add revocation verification. */

   *factory = impl;

@ZhenLian ping

Thanks for bringing up the issue. Please see my comments below.

The main issue with it: it does all the hard work trying to initialize the "root cert" verification set even if set_verify_server_certs is set to false. The check for this options happens rather late, so a lot of cycles are wasted for nothing (as verification will not be relying on those certs anyway). Nevertheless, we must provide some "root certs" for the current implementation to work at all. Moreover, we must maintain them in valid state, even though we know them to be non-functional.

Yes, I agree this can be improved with the current API, and someone raised a similar concern in an internal platform. We can definitely change the API to not require a fake root certs if "set_verify_server_certs" is false. Currently gRPC security team doesn't have bandwidth to work on this, but let's keep this open until this can be picked up.

Additionally, the naming of an option set_verify_server_certs is misleading in such scenarios. We don't want to disable verification, we want to delegate it. Thus, I think, it makes sense to drop the set_verify_server_certs option and instead simply check for presence of explicitly set grpc_tls_certificate_verifier. If it is set, no root set need to be populated and verification is fully delegated.

To make sure I understand, you are proposing:

not setting verifier = No verification at all
setting verifier = do basic cert verification + whatever is presented in the verifier logic

Our current behavior is: if grpc_tls_certificate_verifier is not set, we will use the default hostname verifier. That is decided for security reasons: we don't want users running into a scenario when they accidentally forget to set verifier(or they don't know it's a thing that should be set), and hence accidentally not verifying anything, but still assuming they are doing the TLS authentication just because they use Tls*Credentials.  There is always debate around "usability v.s. security", and I think we choose security at this point.

This will also make grpc_tls_certificate_provider use case simpler. Right now, in cases where intermediate root certs are delivered via network (xds style thing) the boilerplate of dynamic provider is pretty bad. It's actually easier to put together a custom X509_STORE_CTX (or whatever runtime platform offers) explicitly in the verifier than jump around the provider.

I am not sure I quite get your comment about "the boilerplate of dynamic provider". Would you mind elaborating that?
As for custom X509_STORE_CTX, it is a design decision we made a while ago to not expose X509_STORE_CTX, but instead wrap it around. IIRC, the rationale is that X509_STORE_CTX is an OpenSSL API, and we'd better to not directly expose it so that we can guarantee our API backward compatibility.

For the code diff change, would you mind turning into a PR? It's a bit hard to follow right now...

I will turn it into PR - my patch fixes the "set_verify_server_certs is false" issue as it is.
The more general issue is indeed security. I'm coming from the position, that certificate validation should rely on the platform mandated method of doing so. Right now, the gRPC approach of loading a pemball is only compatible with Linux and BSD, and totally incompatible with everything else (unless user chooses to maintain their own pemball, which is a very problematic thing.
To this end, I have implemented platform specific verifiers for OSX flavours (macos/ios), Windows and Android (with a JNI bridge). While Android is problematic, I can contribute the OSX and Windows verifiers, they are plain C++ files with a single "ifdef" for platform detection. I have borrowed the general approach from the Chromium code base.
My API change proposal (it does need some further thinking) above comes from the following use pattern (I have in my actual production code):
  opts.set_verify_server_certs(false);
  opts.set_certificate_verifier(std::make_shared<WindowsCertificateVerifierWrapper>());

By looking at such code, somebody may assume that we are not secure. But the contrary is true: we are quite secure, because we actually call the wincrypt api to comply with the platform policy (same on MacOS).
I am forced to disable "basic verification" (as you call it) because on those systems we don't have any material to feed into the OpenSSL context. The certs are stored in the policy-guarded platform stores.

Pr created as #29810

Apologies that this got dropped. Just sent #34859 to fix the core issue, building on top of #29810.
Note that we do not want grpc_tls_certificate_verifier to override the built-in cryptographic cert verification by default, since we do not (at present) give users the right tools to implement this themselves in their own grpc_tls_certificate_verifier implementation. Said differently, the grpc_tls_certificate_verifier should be additive.

In the current situation it explicitly must not be additive.
Consider, for example, Windows or MacOS. To use the system certificate store (the right thing to do) I have to do something like:
 void ApplyPlatformTlsSettings(::grpc::experimental::TlsChannelCredentialsOptions &opts) {         opts.set_verify_server_certs(false);         opts.set_certificate_verifier(std::make_shared<windows::WindowsCertificateVerifierWrapper>()); }
Whereupon the WindowsCertificateVerifierWrapper will call the CertVerifyCertificateChainPolicy and friends.
There's no scenario whereupon some custom pem bundle should override the system policy.

Thanks for clarifying @oakad. I think there are a couple of issues here:

We need to give users a way to use the system trust store on Windows or MacOS. (There are a few other open issues tracking this, e.g. #16571 or #25533. We're trying to burn down some of our open issues and these ones are on the list.)
What's the role of the grpc_tls_certificate_verifier? Is it a replacement of the in-handshake cryptographic verification? Or is it a post-handshake extra validation step? At present, the implementation is the latter. If there is a need for the former (which I think is a totally reasonable ask and something we've thought about), maybe we could open a separate issue just for this?

Note that MacOS system trust store was added in #29957.

I don't see it using SecTrustEvaluate(WithError) and friends which will be the correct thing to do. I have a grpc based app which uses all the platform specific stores across Windows/IOS/Android and it's not that much work to do it properly (with the exception of Android, perhaps, which relies on some JNI and Java helper class).


Need to add explanatory text on Tutorials page, add styling, icons

https://www.beta.patricbrc.org/content/Tutorials

I guess this was way before we fill this page.


Rails upgrade

This PR takes us from rails 3.2-> rails 5. All tests are passing and as best as I can tell everything we expect to work in the interface does. It also upgrades the version of Bootstrap we're using. This has resulted in some cosmetic bugs that will require CSS tweaks. I've tried to adjust the markup to fix things as I've gone along, but there are definitely some remaining issues.
This also incorporates @yanyangfeng's rails4-search branch changes as of today.

The tests aren't passing on travis for some reason related to loading the database schema; they're passing locally for me, so I'll look into what's different here!

One of the first failures from Travis is a failure to run db:structure:load. Makes me wonder if the data dump this PR is using is outdated?

I had another thought for the travis failures: do you need to update the .travis.yml file to incorporate the new versions?

@susannasiebert the tests are now passing and i've removed the erroneously committed print statements!

I get a unrecognized configuration parameter "idle_in_transaction_session_timeout" error when I try to load this in postgres 9.4. This is because it's introduced in 9.6. @acoffman mentioned that we don't have >=9.6 on the production server, so this needs to be addressed.

well, using an updated version of postgres (which we should also do on our production server), this does load, and work (mostly). Some issues are apparent now, but this is good enough to merge into master and create fixes around them.