PDF Accessibility (tags, alt text, ...)

This sort of links to #114 and #129 - Typst should support accessible output formatting - for example, tagged PDF. Latex does not support this, and so people and organisations that want to produce accessible documents are forced to manually mark up documents in Adobe Acrobat.
Typst outputting accessible documents would be a huge win both for the disabled community and organisations and individuals that produce documents. I think it would make people a lot more likely to use and suggest the project as well.
For some more context, the LaTeX Project Team have been working on trying to get something like this in LaTeX for a while - https://www.pdfa.org/presentation/tagged-and-accessible-pdf-with-latex/

https://www.pdfa.org/resource/deriving-html-from-pdf/ is a best practices guide for tagged PDF syntax (also covers some general information/guidances around the format), and with regards to #114 and this issue https://www.pdfa.org/resource/deriving-html-from-pdf/ is perhaps also an interesting document.

Based on my own experience, combined with various discussions on the blindmath mailing list and elsewhere, there is general agreement that HTML output is far preferable to screen reader users than PDF of any kind, whether tagged or not. That is, for users who are blind, producing high-quality HTML output would be the best path to take (preferably with MathML included).
Most PDF reading applications don't even interpret the tags, where present, and the reading experience doesn't match what an HTML browser can do, on multiple platforms and with multiple screen reading technologies, desktop and mobile alike.
Based on the reference documentation for Typst, at the moment there are no function parameters for specifying a short description of an image - what would appear in an HTML ALT attribute. Also, the digital publishing accessibility community has developed best practices for including extended descriptions in documents. These descriptions can include entire document structures (e.g., tables, paragraphs, etc.). At the moment, the favoured technique is to use the HTML 5 summary/details elements, with some WAI-ARIA markup. There are other approaches as well. Many figures in technical and scientific documents would probably require, or at least benefit from extended descriptions, which authors should be able to include in the source markup.
Another accessibility requirement (currently a problem for LaTeX) is to distinguish between header and body cells in tables.
I'm sure there will be further issues to consider. I would be interested in testing the HTML export functionality when it is integrated into the compiler, and in contributing comments. At the moment, I use LaTeX for much of my writing, from which I generate HTML for review with a screen rader (i.e., interactive braille output and text to speech).

for example, tagged PDF. Latex does not support this

This is not true. LaTeX supports tagged PDF since quite some time. The documentation of tagpdf and the texlive vpat e.g. has been tagged with LaTeX, and there exist also some non-public implementations (e.g. from Ross Moore and from a publisher in Germany).  The goal of the LaTeX Project is not to make tagging possible, but to make it automatic, free and easy to use so that an average user can handle it (and since the latest latex-dev release this already works quite well for simple documents, and it will get better until the summer).

The lack of PDF/UA support is also a blocker for producing public documents, such as study materials for consumption in the European Union. This is due to the newish EU accessibility directive (link).

Just because there was no "official" response in this thread before: We definitely plan to make Typst's output accessible in the future, we just haven't gotten to it yet. It needs some work on compiler internals, but overall I believe we're in a good position because there is quite a lot of semantic information available in Typst documents. The necessary reworks are also partially shared with those for HTML export, which is good.

for example, tagged PDF. Latex does not support this

This is not true. LaTeX supports tagged PDF since quite some time. The documentation of tagpdf and the texlive vpat e.g. has been tagged with LaTeX, and there exist also some non-public implementations (e.g. from Ross Moore and from a publisher in Germany). The goal of the LaTeX Project is not to make tagging possible, but to make it automatic, free and easy to use so that an average user can handle it (and since the latest latex-dev release this already works quite well for simple documents, and it will get better until the summer).

Just a follow up to this and to add an additional resource:
LaTeX examples on conforming to various PDF Accessibility (including PDF/UA-2)
https://github.com/latex3/tagging-project/discussions/72

My day job is as a web developer and accessibility professional for a major academic research institution, and in evaluating LaTeX tagging for our faculty I found that it is not in a usable state either using the tagpdf package or using the core tagging via TeXLive. One of the major issues is decision to program to the PDF/UA-2 standard, which isn't implemented by any currently available reader software even four years after its release.
As I point out in the thread @acxz links to, compliance to an unused/unimplemented standard means that in practical terms the PDFs it generates aren't accessible, and aren't going to be in any useful timeframe. It is so bad in fact that we are recommending that our faculty no longer use it for class materials at all, and we are trying to figure out a solution for research papers. I would urge the developers here to not follow LaTeX's decision path. PDF/A-2 may end up a great solution if it is ever widely adopted, but for right now it isn't useful to set as a goal.

@ErroneousBosch as we told you in the thread: yes we push and promote PDF 2.0 and the PDF/UA-2 standard as you can't get sufficiently accessible math with the older standard. And we are not doing this alone: the documents were created at the request and in cooperation with the PDF association https://pdfa.org/wtpdf/.
But we did not drop support for the older standard in the process. If you prefer to create PDF/UA-1 the only thing you must do is to change
\DocumentMetadata{
   pdfversion=2.0,
   pdfstandard=ua-2,
  ....

into
\DocumentMetadata{
   pdfversion=1.7,
   pdfstandard=ua-1,
  ....

Or you can stay with PDF 2.0 and test what happens. If possible we implement compability options and for example added a fallback to 1.7 names to that the files can be used also with tools that do not properly support PDF 2.0. If you know of an example where this is not the case we would be happy to hear about it so that we can look how to improve compability with older tools.

@u-fischer I did test the PDF 1.7 generation, and as you say, it does not produce accessible math. For our use cases and those of many other LaTeX users in academia, PDF 2.0 isn't useful. We cannot implement it and then wait for it to be widely accepted; the institutional and legal requirements we have to comply with do not recognize it, and moreover if we rely on it to meet guidelines when it isn't usable by end users, that opens us up to liability. I understand you do not have to take the laws of the United States into consideration, but we do.
On a practical level there are two common approaches that we have seen used for accessible math being included in PDF 1.7. The first is to embed screen readable math in as invisible text "behind" elements, similar to what is done with Adobe's OCR layers. This method has the benefit of making the text also copy/pastable, but isn't easy to do manually in remediation. The other is to leverage the Alternate/Actual text features for tagged elements. Both need to be human readable, and it becomes labor intensive to implement, but this approach works and is actionable but end users. Both of these meet PDF/UA and WCAG standards, though I don't assume either of these approaches is especially automatable.

@u-fischer @ErroneousBosch I'm not sure this is the right place for this seemingly LaTeX-specific conversation.

I'm not convinced that implementing tagged PDF would be worth the effort for Typst developers. As a screen reader user, I wouldn't even know that a PDF file was tagged unless I happened to be using one of the few client-side implementations supporting it. So far as I know, the browser-based PDF readers in Chromium and Firefox don't support tags, and they're the default means of reading PDF documents encountered on the Web for users of those browsers.
By contrast, accessible HTML works everywhere, regardless of operating system and screen reader. Typst developers are already committed to implementing export to HTML. As long as this follows good accessibility practices, it will address the need so far as screen reader users are concerned. Obviously, this necessitates the use of MathML for mathematical content. We already have good braille and speech support for MathML (MathCAT and Speech Rule Engine are both reputable implementations). It's no surprise, for example, that the Arxiv project's accessibility strategy for LaTeX documents is to convert submitted papers to HTML format.

Tagged PDFs (and other annotations like alt texts) do make a difference and are a requirement for example at the ASSETS conference: https://assets23.sigaccess.org/guidelines-policies.html. Also, screen readers will improve and use the tags when there are more tagged documents in the world.
I do believe it should be a priority for Typst to produce tagged documents (in addition to HTML). The issue with relying on HTML is that many conferences only accept PDFs and the PDF may often be the file type someone will encounter.

@jasonjgw , thank you for this insight, and the information about Arxiv. We are trying to find a solution for our LaTeX users, and we have also been looking at Typst as an alternative. LaTeX HTML support through PanDoc either to MathML or MathJax output is what we found works best, and it would be nice to see a shift away from PDF.

Typst is trending on HN and many comments mention support for HTML, accessibility, and tagged PDFs and consider it a blocker: https://news.ycombinator.com/item?id=41014941.

Please remember that this is a relatively new project with a small amount of developers that provide this for free.

PDF accessibility is becoming is becoming compulsory at universities all over the worlds very quickly. LaTeX support for PDF tags is not at usable level yet. If the Typst devs manage to offer complete and automatic PDF tags quickly, this could become the inflexion point for Typst to supersede LaTeX at large.

PDF accessibility is becoming is becoming compulsory at universities all over the worlds very quickly.

I'll believe it when I see it. The tools just aren't there yet, neither for production nor consumption.

LaTeX support for PDF tags is not at usable level yet.

Case in point

Just want to concur that this is a giant opportunity for Typst; LaTeX has completely failed to meet this important challenge. I'm serving as an instructor this semester and tagging is completely non-functional in Beamer in particular, and I would switch to Typst instantly if I could more easily meet accessibility requirements.
@Enivex @djturizo

Also hugely in favor of supporting accessible PDFs (in addition to HTML as an even more accessible format). Recently, Latex has been making a lot of progress on supporting tagged PDFs: https://latex-project.org/news/2024/07/08/tagging/.

@samtalki

LaTeX has completely failed to meet this important challenge.

It hasn't. We put lots of work and thought into this topic in the past years and as a result LaTeX was one of the first to be able to produce Well Tagged PDF (WTPDF) when the PDF association released that standard at the begin of the year and many documents can now be tagged automatically and easily with LaTeX.
This work will continue --- how fast depends also on founding, support from users e.g. to create test files and support from package and class authors who have to adapt their code.

I'm serving as an instructor this semester and tagging is completely non-functional in Beamer in particular.

beamer is quite a challenge. The beamer class is quite large but stems from a time when only very few people thought about accessibility. Some discussion and also some minimal code to get beamer tagging aware is here https://github.com/latex3/tagging-project/issues/710.

I'll believe it when I see it. The tools just aren't there yet, neither for production nor consumption.

 The university's policy is now that all materials, including PDFs from researchers, must meet WCAG 2.0 AA compliance. Tools or not, the requirement is in place and furthermore will be mandated by US federal law starting April 2026. We have had to tell our researchers they can no longer use LaTeX without remediating each document. As I have explained in other discussions, ideals are fine to have but we are well into where the rubber has to meet the road.  If Typst can step up to create PDFs that meet the needed standards, it would be a fantastic solution.
@u-fischer I'm curious to see what progress LaTeX has made and will have to revisit my evaluations


Possible to generate 360 landscapes in equirectangular mode from exisiting NON-360 landcapes?

Diving into GAN en deepfakes and disneyfying my portret 😄 I stumbled upon your github project..
As I write kids adventures in my spare time and making  360˚ worlds interactive I wondered if one could generate 360˚ landscapes from non 360 images..
any ideas?
Equirectangular images look pretty weird so stitching this is a daunting task for me.. well impossible to say.
could GAN help me?

In Figure 17 on page 14 in Image Generators with Conditionally-Independent Pixel Synthesis the authors show seamless panoramas generated with a model that has been trained on regular images. I'd imagine that it would also be possible to warp the coordinate grid to produce equirectangular panoramas.


[Win10 Issue] Update SnoreToast Version to latest.  Not sending notifications anymore.

Problem
SnoreToast current version is not working anymore with Windows 10 latest updates.
Context
I use laravel-mix in my workflow and it's not fun when I don't get notification when the script finished its tasks. It simply don't show any notification.
Proposal
I would like to suggest updating SnoreToast  dependency to the latest (v7) since it's current version is not working anymore with the latest updates for Windows 10. I have to manually update the SnoreToast.EXE file to make it work for every project. Would be nice if it is included as a part of the package.

I am having the same issue, also using laravel-mix 😑, it would be great to get this updated. @cjbenavides88 how do you manually update the SnoreToast.EXE file to make it work?

I am having the same issue, also using laravel-mix 😑, it would be great to get this updated. @cjbenavides88 how do you manually update the SnoreToast.EXE file to make it work?

Download latest SnoreToast
Run NPM INSTALL in your project
Under node_modules search for snoretoast.exe

Sadly I am not on my PC right now to give you the exact path, but that's my workflow to solve that issue.

Thanks @cjbenavides88 , It works! The path to SnoreToast.exe is node_modules/node-notifier/vendor/snoreToast. Would still be amazing to get this fixed!

Snoretoast is already on latest 0.7.0 since November 2019, see PR #293


docs: Complete helper function documentation

Complete documentation of the Helper functions

i have mixed feelings. i dont like duplicate docs. id prefer the docs folder to at most contain a list of functions and a description

i have mixed feelings. i dont like duplicate docs. id prefer the docs folder to at most contain a list of functions and a description
What do you mean with "duplicate docs" ? Do you mean We should leave the technical details in the source itself, and a description  in the docs folder ?
also some of these can be considered "internal" functions. the docs should be for public apis in my opinion.
I think those are "Helper functions" that were used in some bridge, so very dev creating a bridge should use them to not reinvent the wheel ?
Or did I misunderstood the scope of those functions ?

the function signature is already present in the code. And usually there is comments above the function to explain purpose and formal parameters. I dont want to duplicate this information.

Well, I see your point, but to be honest, if someone never mentioned in a pull request a function like Json::encode or Json::decode function, as a Bridge author, I wouldn't know those function would have existed.
I propose that the doc should list all helper functions, with a description, and a reference where it is defined.
Would this be something you could be ok with ?

yes im okay with a simple list of all the functions

Could the last commit correspond to the form of documentation expected ?

sure


sslmode value "require" invalid when SSL support is not compiled

Thanks for the time and effort dedicated to this awesome project.
I have been trying to connect to a postgres 9.6 database server that enforces SSL and have not been able to successfully do so.
Via psql I can connect just fine with:
psql "sslmode=require host=MYHOST dbname=devel user=USER password=PASS"

With postgrest version <IP_ADDRESS> on OSX I get:
Listening on port 3000
Attempting to connect to the database...
{"details":"sslmode value \"require\" invalid when SSL support is not compiled in\n","code":"","message":"Database connection error"}
Attempting to reconnect to the database in 0 seconds...
{"details":"sslmode value \"require\" invalid when SSL support is not compiled in\n","code":"","message":"Database connection error"}
Attempting to reconnect to the database in 1 seconds...

My db-uri in the pgrest conf file is exactly the same as the one in psql. When I change my server config to allow non-ssl mode and I do sslmode=disable in the db-uri then it connects just fine.
The error log in pgrest is obvious but I have not found documentation or github issue that explains how to enable SSL support. Questions:

Is the OSX binary built with SSL support by default or does it depend on some underlying system library and I need to recompile that library with SSL support?

Same question for linux/ubuntu

If I need to recompile with SSL support does anyone have pointers on how to do so? I will have to do this both in OSX and linux/ubuntu.

Best.

The build is done inside docker here
https://github.com/begriffs/postgrest/blob/master/.circleci/config.yml
PostgREST uses hasql, which in turn uses postgresql-libpq, a low level bining to the C lib, so in theory ssl should be supported and postgresql-libpq has some "ssl logic" https://github.com/lpsmith/postgresql-libpq/blob/master/src/Database/PostgreSQL/LibPQ.hsc
checking out where the error comes from ...

looks like that error comes from the libpq itself
https://stackoverflow.com/questions/36186935/postgres-sslmode-value-require-invalid-when-ssl-support-is-not-compiled-using
The PostgREST mac version is the only one being built manually so it just might be that the libpq on that particular box did not have ssl support.
Have you tried running postgrest from docker and connect to this db?

Thanks @ruslantalpa for the links.
According to the SO link it might get fixed compiling with the --with-openssl option.  If that does not work I will try the docker release. I will post my findings here.

@begriffs Hey there. How did you get postgREST to work with SSL? I read here they don't support ssl
http://postgrest.org/en/stable/auth.html#ssl if there is a solution please share. Can't get the configfile to connect to an RDS database.

@stefanosvarsanis That section is related to exposing HTTPS with just PostgREST. We do support connecting to PostgreSQL over SSL. Check db-uri in the configuration docs, it mentions that you can use postgres://user:pass@host:5432/dbname?sslmode=require as a connection uri.


does allow to add another scroll listener

I have found that once that scroll tracker is attached to the listview and the list view it self would able to track the scroll by onScroll method. The code is shown as below:

         mGrid = (JazzyGridView) v.findViewById(android.R.id.list); // First I declare the list view in here
        madapter = new HBResultAdapter(getActivity(), R.layout.l_griditem);
        mGrid.setAdapter(madapter);
        mGrid.setTransitionEffect(JazzyHelper.FADE);
        mGrid.setShouldOnlyAnimateNewItems(false);
         mGrid.setOnScrollListener(this); // add to the first list view

         FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fab); //find the button
         fab.attachToListView(mGrid); // and add the list view with the button scroll tracker

please let me know if i can fix this..
JazzyGridView is extended from the GridView

This should fix it:
Delete this line: mGrid.setOnScrollListener(this); // add to the first list view
Change this line
from: fab.attachToListView(mGrid);
to: fab.attachToListView(mGrid, null, this);

I have confirmed that this is working now! Thank you, you are great @bdonahue


start creating cohort attrition

cases:

use same attrition that already existed but with a new line with those that we lost because they did not have a match
the pair is not in observation

controls:

full population
they have a match by year and sex
to fulfill the ratio
the pair is not in observation

#11


BACK button on Android exits the app

Back button on android exits the my react-native app. I am not sure if it is an expected behavior, but if so I suggest to add notice of this to the docs.
I fixed it with adding following handler to my project:
BackAndroid.addEventListener('hardwareBackPress', () => {
  try {
    Actions.pop();
    return true;
  }
  catch(err)  {
    console.log("Cannot pop. Exiting the app...")
    return false;
  }
});

The component is just wrapper around exNavigator. Could you check if it works the same with pure exNavigator?


With non-raw kernels we don't prompt users to select an interpreter with Jupyter, instead we just display a quick pick

In non-raw cases, when attempting to run a cell, we just display a quick pick.
The problem is, as a user I have absolutely no idea why I'm presented with a quick pick.
There's no error message nothing, just a quick pick.
This is very confusing specially when we have already selected a kernel
Suggestion: DIsplay message & have a button Select Interpreter or Install Jupyter into xxx interpreter.

This seems to be fixed now, we have a modal dialog with a good error message.
Closing for verification

/verified?
It displays this if the there is no kernel selected, but this is what we wanted.

However if the kernel selected doesn't have ipykernel, we ask for it.


Allow IPs to be whitelisted from rate limiting

Minor patch to allow a system administrator to whitelist an IP address from rate-limiting on the API.

Accidentally deleted that branch, whoops


Edit GitHub Pages

Activate GitHub Pages, update repository description with the url to website.

The website is visible, everything is alright!


How is ResilientStream supposed to work in the context of RMQ?

I have a test program that consumes from a queue and then throws an exception. It does not Ack/Nack/Reject anything explicitly.
When I wrap it in ResilientStream.run and publish a message to the queue I can see that the program is restarted once. The msg in the queue becomes "unacked". When I terminate the program the message becomes "ready" in the queue and just stays there. The program does not seem to pull it again after the restart delay.
Is this the expected behaviour? My expectation was that with each restart it would also pull a message from RMQ. Otherwise what's the point of restarting it if it won't be doing anything anymore? Can this behaviour be achieved somehow?

It depends on how you construct your program I believe.
Restarting just the consumer stream from createAckerConsumer means re-using the same connection and the same channel. The broker is still awaiting an ack from that channel.
If you what to use ResilientStream your stream should also spawn and release the channel I think.
I believe restarting the channel would be enough, if not include also the creation of the connection under the resilient stream.
Try something like this:
    val config: Fs2RabbitConfig = ???
    val run: IO[Nothing] = RabbitClient
      .default[IO](config)
      .resource
      .evalMap { connection =>
        ResilientStream.run {
          for {
            given AMQPChannel <- fs2.Stream.resource(connection.createConnectionChannel)
            (acker, stream) <- fs2.Stream.eval(connection.createAckerConsumer(QueueName("queue_name")))
            program <- stream.evalMap(msg => IO(println(msg)) >> acker(Ack(msg.deliveryTag)))
          } yield program
        }
      }
      .useForever

Let me know if this works and how ( just channel ? )


pytorch/torchvision on anaconda.org depends on ffmpeg

🐛 Describe the bug
I'm assuming https://anaconda.org/pytorch/torchvision is where your own published packages go (as opposed to conda-forge, which is not relevant here).
Based on other discussions relating to ffmpeg, GPL, patents, etc., my understanding is that the torchvision packages should not be requiring ffmpeg to install, but will use it if it's available. This enables users with licensing concerns to simply omit it.
I also see from those discussions that conda-forge and PyPI may have different requirements. That's fine, I'm definitely 100% talking about https://anaconda.org/pytorch/torchvision only and not those other indexes.
Checking the 0.15.2 release (latest) for Linux, I see ffmpeg is listed in the index.json file (listed below). This makes it very difficult to install using conda without also installing ffmpeg - specifically, I have to install torchvision by itself and list its other dependencies manually, which is only doable with custom scripting and not a standard environment definition or metapackage.
Can we get builds that do not list ffmpeg as a dependency? It seems that was the intention, so I'm guessing something slipped in at some point.
{
  "arch": "x86_64",
  "build": "py38_cu118",
  "build_number": 0,
  "constrains": [
    "cpuonly <0"
  ],
  "depends": [
    "ffmpeg >=4.2",
    "jpeg",
    "libpng",
    "numpy >=1.11",
    "pillow >=5.3.0,!=8.3.*",
    "python >=3.8,<3.9.0a0",
    "pytorch 2.0.1",
    "pytorch-cuda 11.8.*",
    "pytorch-mutex 1.0 cuda",
    "requests"
  ],
  "license": "BSD",
  "name": "torchvision",
  "platform": "linux",
  "subdir": "linux-64",
  "timestamp":<PHONE_NUMBER>404,
  "version": "0.15.2"
}

Versions
Checked with linux-64/torchvision-0.15.2-py38_cu118.tar.bz2 at https://anaconda.org/pytorch/torchvision/files

cc @atalman @osalpekar


Avoid a prefix-related worst-case scenario in the proximity criterion

Pull Request
Related issue
Somewhat fixes (until merged into meilisearch) https://github.com/meilisearch/meilisearch/issues/3118
What does this PR do?
When a query ends with a word and a prefix, such as:
word pr

Then we first determine whether pre could possibly be in the proximity prefix database before querying it. There are then three possibilities:

pr is not in any prefix cache because it is not the prefix of many words. We don't query the proximity prefix database. Instead, we list all the word derivations of pre through the FST and query the regular proximity databases.

pr is in the prefix cache but cannot be found in the proximity prefix databases. In this case, we partially disable the proximity ranking rule for the pair word pre. This is done as follows:

Only find the documents where word is in proximity to pre exactly (no derivations)
Otherwise, assume that their proximity in all the documents in which they coexist is >= 8

pr is in the prefix cache and can be found in the proximity prefix databases. In this case we simply query the proximity prefix databases.

Note that if a prefix is longer than 2 bytes, then it cannot be in the proximity prefix databases. Also, proximities larger than 4 are not present in these databases either. Therefore, the impact on relevancy is:

For common prefixes of one or two letters: we no longer distinguish between proximities from 4 to 8
For common prefixes of more than two letters: we no longer distinguish between any proximities
For uncommon prefixes: nothing changes

Regarding (1), it means that these two documents would be considered equally relevant according to the proximity rule for the query heard pr (IF pr is the prefix of more than 200 words in the dataset):
[
    { "text": "I heard there is a faster proximity criterion" },
    { "text": "I heard there is a faster but less relevant proximity criterion" }
]

Regarding (2), it means that two documents would be considered equally relevant according to the proximity rule for the query "faster pro":
[
    { "text": "I heard there is a faster but less relevant proximity criterion" }
    { "text": "I heard there is a faster proximity criterion" },
]

But the following document would be considered more relevant than the two documents above:
{ "text": "I heard there is a faster swimmer who is competing in the pro section of the competition " }

Note, however, that this change of behaviour only occurs when using the set-based version of the proximity criterion. In cases where there are fewer than 1000 candidate documents when the proximity criterion is called, this PR does not change anything.

Performance
I couldn't use the existing search benchmarks to measure the impact of the PR, but I did some manual tests with the songs benchmark dataset.
1. 10x 'a':
	- 640ms ⟹ 630ms                  = no significant difference
2. 10x 'b':
	- set-based: 4.47s ⟹ 7.42        = bad, ~2x regression
	- dynamic: 1s ⟹ 870 ms           = no significant difference
3. 'Someone I l':
	- set-based: 250ms ⟹ 12 ms       = very good, x20 speedup
	- dynamic: 21ms ⟹ 11 ms          = good, x2 speedup
4. 'billie e':
	- set-based: 623ms ⟹ 2ms         = very good, x300 speedup
	- dynamic: ~4ms ⟹ 4ms            = no difference
5. 'billie ei':
	- set-based: 57ms ⟹ 20ms         = good, ~2x speedup
	- dynamic: ~4ms ⟹ ~2ms.          = no significant difference
6. 'i am getting o'
	- set-based: 300ms ⟹ 60ms        = very good, 5x speedup
	- dynamic: 30ms ⟹ 6ms            = very good, 5x speedup
7. 'prologue 1 a 1:
	- set-based: 3.36s ⟹ 120ms       = very good, 30x speedup
	- dynamic: 200ms ⟹ 30ms          = very good, 6x speedup
8. 'prologue 1 a 10':
	- set-based: 590ms ⟹ 18ms        = very good, 30x speedup
	- dynamic: 82ms ⟹ 35ms           = good, ~2x speedup

Performance is often significantly better, but there is also one regression in the set-based implementation with the query b b b b b b b b b b.

The performance regression was due to a mistake in the previous implementation, which only considered the rightward proximity between the left and right word in some cases.


Add Webhook support for Device Role and Platform

As ...
Tammy - Tools Integrator
I want ...
When I update a Device Role or Platform that a Webhook would be triggered.
So that ...
I don't need to run a separate script to check for updates to Device Roles or Platforms to perform the desired action.
I know this is done when...
I update a Device Role or Platform and a Webhook is triggered.
Optional - Feature groups this request pertains to.

[X] Automation
[ ] Circuits
[X] DCIM
[ ] IPAM
[ ] Misc (including Data Sources)
[ ] Organization
[X] Plugins (and other Extensibility)
[ ] Security (Secrets, etc)
[ ] Image Management
[ ] UI/UX
[ ] Documentation
[ ] Other (not directly a platform feature)

Database Changes
Possibly just need the extras_features decorator added to the models, but other changes may be required.
External Dependencies
N/A

Let's also take the time to look over all models for other omissions of extras_features


fix(doc): update doc for testing with node 8 async/await and chrome inspector.

inspector.

Tnx !!

@qiyigg @wswebcreation
Appreciate if an example is provided for Page Objects with Node 8 async/await
https://github.com/angular/protractor/blob/master/docs/page-objects.md

Hi,
For me, there's no difference in writing async/await test when using or not using Page Objects. Page Object is just a user wrapper to make your test more clear and stable.
But yes, it might have some problems if user doesn't understand async/await when they write tests using Page Objects.
Would you mind creating an issue, describe the requirement, and see if someone would like to write this? I don't think I could do it recently.
Thanks!

Sure, i will create a an issue.

@qiyigg
I have opened a new issue for documentation of Page Objects.
https://github.com/angular/protractor/issues/4637

Thanks!


Interaction tests

Add unit tests covering additional edge cases in the overlap between different analyzers and the settings file.

:+1:


plt client name should be equal to client type name

When generating a client with a name that is not camel cased you got a situation when client name in the platformatic app config doesn't equal to the generated type name. Very confusing.
Exampe
platformatic client --name foo-bar --runtime foo-bar

foo-bar client config
  "clients": [
    {
      "schema": "foo-bar/foo-bar.openapi.json",
      "name": "foo-bar",
      "type": "openapi",
      "serviceId": "penitent-parasite"
    }
  ]

foo-bar client type
declare namespace fooBar {
  export interface FooBar {
...

IMHO the client name in the config file should also be camel cased.

this is where the name should be capitalized/camelcased


Apply rename_all to enum member "fields"

When using enums with struct-like members it would be useful if rename_all on the enclosing enum could apply to the members, too. For example:
#[serde(untagged, rename_all = "camelCase" )]
pub enum Value {
  Null { null_value: () },
  String { string_value: String },
  Boolean { boolean_value: bool },
}

could do
Value::String("foo".to_string())
=>
{ "stringValue": "foo" }
  ------^-----
        |
This here is what I want

Currently the annotation has to be placed on the fields in addition:
#[serde(untagged)]
pub enum Value {
    Null {
        #[serde(rename = "nullValue")]
        null_value: ()
    },
    String {
        #[serde(rename = "stringValue")]
        string_value: String
    },
    /* etc. */
}

(If you're wondering what is going on with this type, it's Google Datastore).

Seems reasonable. Do you have a suggestion for how this should work? Simplify changing the meaning of rename_all would be a breaking change.
Side note: representing the datastore value the following way may be more convenient. This avoids restating the type twice in Rust code -- Value::Boolean(true) instead of Value::Boolean { boolean_value: true }.
#[derive(Serialize, Deserialize)]
enum Value {
    #[serde(rename = "nullValue", with = "null")]
    Null,
    #[serde(rename = "stringValue")]
    String(String),
    #[serde(rename = "booleanValue")]
    Boolean(bool),
}

// Serialize the unit variant `Value::Null` as `{"nullValue":null}` rather
// than the default `"nullValue"`.
mod null {
    use serde::{Serialize, Serializer, Deserialize, Deserializer};

    pub fn serialize<S>(serializer: S) -> Result<S::Ok, S::Error>
        where S: Serializer
    {
        ().serialize(serializer)
    }

    pub fn deserialize<'de, D>(deserializer: D) -> Result<(), D::Error>
        where D: Deserializer<'de>
    {
        <()>::deserialize(deserializer)
    }
}

Thanks for a quick reply! I'm really enjoying serde btw, easily the most pleasant serialisation lib I've worked with so far :-)

Do you have a suggestion for how this should work? Simplify changing the meaning of rename_all would be a breaking change.

Agreed, maybe it's sensible to have a separate rename_fields for this that would both apply to struct and enum-member fields?

Side note: representing the datastore value the following way may be more convenient

The problem is that the enum is "key-tagged", i.e. it's adjacent to other keys inside of a different struct and the key that contains the Value determines its type.
I haven't found a better way than the current untagged solution, but I also really need to stop thinking about this for today and find a nearby bed! ;-)

Maybe instead of rename_all we should have had distinct rename_fields and rename_variants attributes, so that you can write both to get the desired effect.
It may be confusing to add those now and not have rename_all mean rename both fields and variants.

@dtolnay Any update on this?


Hide source code of agents with import

Publish the package with PyPI so that we can more effectively "hide" some of the base agent source code and reduce clutter for the lab stencils.
Please research and check out the following links:
https://realpython.com/pypi-publish-python-package/

Done


Null in enum not handled correctly

Details

components:
  schemas:
    AnyOfTest:
      anyOf:
      - type: string
      - $ref: '#/components/schemas/EnumString'
      - $ref: '#/components/schemas/EnumNullString'
      - $ref: '#/components/schemas/EnumNull'
      description: to test anyOf (string, enum string)
    EnumNull:
      enum:
      - null
      type: string
    EnumNullString:
      enum:
      - 'null'
      type: string
    EnumString:
      enum:
      - A
      - B
      type: string
info:
  license:
    name: MIT
  title: Example
  version: 1.0.0
openapi: 3.0.1
paths:
  /person/display/{personId}:
    get:
      operationId: list
      parameters:
      - description: The id of the person to retrieve
        in: path
        name: personId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnyOfTest'
          description: OK
servers:
- url: http://api.example.xyz/v1

EnumNull:
  enum:
  - null
  type: string

I am not sure I follow, what does this even represent as a Dart class? How is this a proper enum definition?
I am not sure this edge case is even worth spending time coding up and protecting for... Unless you have a real world example that is not an edge case test scheme from OpenAPI repo?

It's more common than you think.
The example I posted is stupid, but this update in 3.1 added full support with the json schema which does
EnumNull:
  enum:
  - null
  - ice_cream
  - yogurt
  type: string

It used to be
EnumNull:
  enum:
  - ice_cream
  - yogurt
  type: string
  nullable: true

https://github.com/OAI/OpenAPI-Specification/issues/1900#issuecomment-485444377

Proposal:
swagger-parser add an unknown value that makes the api backwards compatible.
So even if this isn't fixed, it will still wont throw when null is returned
what do you think?
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, unused_import

import 'package:freezed_annotation/freezed_annotation.dart';

@JsonEnum()
enum Status {
  @JsonValue('available')
  available('available'),
  @JsonValue('pending')
  pending('pending'),
  @JsonValue('sold')
  sold('sold'),
  /// Default value for all unparsed values, allows backward compatibility when adding new values on the backend.
  $unknown(null);

  const Status(this.json);

  factory Status.fromJson(String json) => values.firstWhere(
        (e) => e.json == json,
        orElse: () => $unknown,
      );

  final String? json;
}


unable to change views in laratab..

I've followed the instructions as indicated in the fish/laratabs page but it only loads the content of the first tab. I am getting error in command line "[Thu Feb  4 18:08:34 2016] <IP_ADDRESS>:49858 Invalid request (Unexpected EOF)"
Please help. Thanks

What version of laravel are you using?

I'm using Laravel 5.2 on an ubuntu box so I'm running php artisan serve from terminal and that is the error I get when I click on other tabs. The blades do not have anything but a single word to identify if content is displayed correctly, just the default one generated.

When you view the page source do you see the content of all the tabs?


Multiline step definitions

If you put "" at the end of your step definition, Behat will expect next line to continue that definition:
* @Given my stepdef \
*        continues \
*        for couple of lines

is equivalent to:
* @Given my stepdef continues for couple of lines

Closes #348

Good catch. Will do this evening!


Fixed Bug #87 - Widget auto refresh doesn't work after phone reboot

Thanks! :+1:

You're welcome☺
On Tue, Sep 8, 2015 at 6:27 PM, Michael Prankl<EMAIL_ADDRESS>wrote:

Thanks! [image: :+1:]
—
Reply to this email directly or view it on GitHub
https://github.com/eidottermihi/rpicheck/pull/88#issuecomment-138621748.


+9 icons

Description
Added 6 icons.
Added
Open Note (com.yangdai.opennote/com.yangdai.opennote.MainActivity)
Image App (com.panasonic.avc.cng.imageapp/com.panasonic.avc.cng.application.ImageAppLauncher)
irplus (net.binarymode.android.irplus/net.binarymode.android.irplus.MainTabbedActivity)
Merck PSE/PTE (de.merck.pte/com.mwaysolutions.pte.MainPSEActivity)
LineageOS Music (org.lineageos.twelve/org.lineageos.twelve.MainActivity)
YASR (com.idoybh.yasr/com.idoybh.yasr.MainActivity)
SIGMA RIDE (com.sigmasport.link2/com.sigmasport.link2.ui.SplashActivity)
FeedFlow (com.prof18.feedflow/com.prof18.feedflow.android.MainActivity)
Revenge Manager (app.revenge.manager/app.revenge.manager.ui.activity.MainActivity)
Added link for OpenEUICC (im.angry.openeuicc/im.angry.openeuicc.ui.PrivilegedMainActivity)

Most icons have the wrong size, there are other inconsistencies with the Lawnicons style, but most importantly, you need to improve the quality.

Better now?

Hey!
open_note.svg, revenge_manager.svg and twelve.svg are suitable icons. You can leave only them in the PR if you want me to merge it immediately, since working on other icons requires more time and attention.
The rest of the icons have quality issues and several other inconsistencies with the Lawnicons guidelines. The github-actions bot wrote more about the quality.

You haven't fixed the conflicts. It's easier for me to do this through a new PR. #2459
Thanks!


Add a new Home Page Theme, just change color scheme, or more

Decide on your own color scheme, etc. to add to the theme pull down menu.
Find more instructions in our README.md

Hey, Can I work on this?

@anushri20 Of course! I've added you as an assignee.

It looks great anushri.  I've requested one small change.

I would like to work on this!! Can I join to work?

Sure, @sonechca. We'd love to have you join in.

Can I work on this issue?


Added extra IP Stack fields

IsDaylightSavings
IsProxy
IsTOR
IsCrawler
CrawlerName
CrawlerType
ThreatLevel
ThreatTypes

This also adds a flag for using the HTTPS IP Stack API.

Looks great. Can you also add these modules?

Timezone
Location
Currency


After update from k3s version v1.30.4+k3s1 to v1.31.0+k3s1

Problem with secrets-store-csi-driver after update to v1.31.0+k3s1
Environmental Info:
K3s Version before update:
k3s version v1.30.4+k3s1
after update:
v1.31.0+k3s1
Node(s) CPU architecture, OS, and Version:
3x nodes: Linux 6.9.7+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.9.7-1~bpo12+1 (2024-07-03) x86_64 GNU/Linux
Cluster Configuration:
3 master/agent nodes
Describe the bug:
After upgrade to latest version of k3s i notice a lot of warnings of:
Warning:
 kubernetes.io/csi: mounter.SetUpAt failed to get CSI client: driver name secrets-store.csi.k8s.io not found in the list of registered CSI drivers

 Warning  FailedMount             48s (x31 over 47m)    kubelet                     MountVolume.SetUp failed for volume "backend" : kubernetes.io/csi: mounter.SetUpAt failed to get CSI client: driver name secrets-store.csi.k8s.io not found in the list of registered CSI drivers

nothing changes in volumes configuration and csi-driver configuration:
csidriver was okay:
secrets-store.csi.k8s.io   false            true             false             <unset>         false               Ephemeral
Volumes:
  backend:
    Type:              CSI (a Container Storage Interface (CSI) volume source)
    Driver:            secrets-store.csi.k8s.io
    FSType:
    ReadOnly:          true
    VolumeAttributes:      secretProviderClass=backend

Delete pod with warning to recreate cause a pod stuck in init state because of error ^
Steps To Reproduce:
Have https://github.com/kubernetes-sigs/secrets-store-csi-driver deployed and used
k3s version v1.30.4+k3s1 upgrade to v1.31.0+k3s1
Expected behavior:
no warnings: driver name secrets-store.csi.k8s.io not found in the list of registered CSI drivers
Actual behavior:
Downgrade cluster to previous version resolved the problem

I would probably open an issue with the secrets-store-csi-driver project. They can suggest steps to troubleshoot. Did you perhaps need to upgrade it to be compatible with Kubernetes 1.31?


Cannot see performance data in sentry

Description

I added Sentry in my project(as shown in the image above). I created an intentional error and sentry caught the exception successfully. I can see assertion error in Issues section. However, I cannot seem to see any data in Performance section. I thought there's automatic transaction catch.
I also tried implementing sentry_dio and added catchTransaction method, but it's also not showing anything in my performance.
Hope someone can help! Thanks in advance.
flutter: v3.3.0
dart: 2.18.0
sentry_flutter: 6.18.2
sentry_dio: 6.18.3

Take a look at the automatic instrumentation section of the docs.
Either you have to manually start transactions or set up the integrations that automatically do it.

Take a look at the automatic instrumentation section of the docs. Either you have to manually start transactions or set up the integrations that automatically do it.

I've tried debug mode and it saw traceSampleRate and dsn showing up correctly. However, I see this messaage
Not going to enable SentryPerformanceTrackingIntegration because isTracingEnabled is disabled.

in my debug console. traceSampleRate is assigned so I don't understand why this message shows up. There are no data showing up in performance. I tried to implement manually but it's also not getting anywhere.

Not sure, can you provide a minimal reprocible exampe?
See docs, https://docs.sentry.io/platforms/flutter/
The Flutter SDK already runs the App in a ZonedGuard, so your wrapper runZoned isn't needed, could be related to that?

Not sure, can you provide a minimal reprocible exampe? See docs, https://docs.sentry.io/platforms/flutter/ The Flutter SDK already runs the App in a ZonedGuard, so your wrapper runZoned isn't needed, could be related to that?

I removed zonedGuard but still nothing in performance. I tried https://github.com/getsentry/sentry-dart example project. I assume it should automatically start collecting performance data (such as cold start warm start) right? but there's nothing. In the example project, the only transaction data I can see is dart_try_catch and all the other ones are not shown or counted toward performance. I'm also confused why transaction doesn't show up when I made a dio request in the example.


Export prop interface

This issue is a:

Feature request

Description
It would be nice if we can import and use the component interface inside ts to merge their property with custom ones. For example I need to wrap the Zoom component inside a custom component and i need to add other properties, but i would like to merge my custom prop with the one from the Zoom, so i don't have to expose them one by one.

Yeah, all of this should be exported. Let me put a PR up and see if you like how it looks

@equinusocio Is this what you're looking for? https://github.com/rpearce/image-zoom/pull/289/commits/8d2ecfa935b1620923b0496647b68d7eaa1f78be
I know you don't need the helpers exported, but I figure there's no harm.
Also, would you consider this change a patch-level change (a fix)?

I think that shared and reusable components should have heir types exported "by default", so we can consider this as a "fix" for this lack.

Great call on the Props naming. I'll amend that when I get a chance today


AdvantageScope crashing when trying to open

Whenever I try to open I'm prompted with a dialog box saying this app cannot be opened and that I should move it to trash (Apple thinks it's Malware). Attaching the crash report below.
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Incident Identifier: 4A21A9AC-5EAB-4320-8137-CB212112B8B1
CrashReporter Key:   5A8DE638-BDE9-E0F7-0B95-433C035C067B
Hardware Model:      MacBookPro16,1
Process:             Advantage Scope [3571]
Path:                /Applications/Advantage Scope.app/Contents/MacOS/Advantage Scope
Identifier:          org.littletonrobotics.advantagescope
Version:             1.18.3 (1.18.3)
Code Type:           X86-64 (Native)
Role:                Default
Parent Process:      launchd [1]
Coalition:           org.littletonrobotics.advantagescope [1716]

Date/Time:           2022-09-20 06:39:45.3841 -0400
Launch Time:         2022-09-20 06:39:45.2884 -0400
OS Version:          macOS 12.6 (21G115)
Release Type:        User
Report Version:      104

Exception Type:  EXC_CRASH (SIGKILL (Code Signature Invalid))
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: CODESIGNING 1

Triggered by Thread:  0

Thread 0 Crashed:
0                                	       0x101317ae0 _dyld_start + 0
1   ???                           	               0x1 ???

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000000  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x0000000000000000  rsi: 0x0000000000000000  rbp: 0x0000000000000000  rsp: 0x00007ff7bf5e0ba0
   r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x0000000000000000  r11: 0x0000000000000000
  r12: 0x0000000000000000  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x0000000101317ae0  rfl: 0x0000000000000200  cr2: 0x0000000000000000

Logical CPU:     0
Error Code:      0x00000000
Trap Number:     0

Binary Images:
       0x101313000 -        0x10137efff  (*) <71febccd-d9dc-3599-9971-2b3407c588a8>
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???

Error Formulating Crash Report:
dyld_process_snapshot_get_shared_cache failed

EOF

-----------
Full Report
-----------

{"app_name":"Advantage Scope","timestamp":"2022-09-20 06:39:45.00 -0400","app_version":"1.18.3","slice_uuid":"4c4c4447-5555-3144-a1a6-cf6b66c5c8e4","build_version":"1.18.3","platform":0,"bundleID":"org.littletonrobotics.advantagescope","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.6 (21G115)","incident_id":"4A21A9AC-5EAB-4320-8137-CB212112B8B1","name":"Advantage Scope"}
{
  "uptime" : 1900,
  "procLaunch" : "2022-09-20 06:39:45.2884 -0400",
  "procRole" : "Default",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro16,1",
  "procStartAbsTime" :<PHONE_NUMBER>064,
  "coalitionID" : 1716,
  "osVersion" : {
    "train" : "macOS 12.6",
    "build" : "21G115",
    "releaseType" : "User"
  },
  "captureTime" : "2022-09-20 06:39:45.3841 -0400",
  "incident" : "4A21A9AC-5EAB-4320-8137-CB212112B8B1",
  "bug_type" : "309",
  "pid" : 3571,
  "procExitAbsTime" :<PHONE_NUMBER>904,
  "cpuType" : "X86-64",
  "procName" : "Advantage Scope",
  "procPath" : "\/Applications\/Advantage Scope.app\/Contents\/MacOS\/Advantage Scope",
  "bundleInfo" : {"CFBundleShortVersionString":"1.18.3","CFBundleVersion":"1.18.3","CFBundleIdentifier":"org.littletonrobotics.advantagescope"},
  "storeInfo" : {"deviceIdentifierForVendor":"AB192777-424F-5CB9-B2D1-369E261E3956","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "org.littletonrobotics.advantagescope",
  "crashReporterKey" : "5A8DE638-BDE9-E0F7-0B95-433C035C067B",
  "wakeTime" : 5,
  "bridgeVersion" : {"build":"19P6067","train":"6.6"},
  "sleepWakeUUID" : "73C47238-F11D-4B96-93BC-7949AD17470F",
  "sip" : "enabled",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGKILL (Code Signature Invalid)"},
  "termination" : {"namespace":"CODESIGNING","flags":66,"code":1},
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":43922,"threadState":{"r13":{"value":0},"rax":{"value":0},"rflags":{"value":512},"cpu":{"value":0},"r14":{"value":0},"rsi":{"value":0},"r8":{"value":0},"cr2":{"value":0},"rdx":{"value":0},"r10":{"value":0},"r9":{"value":0},"r15":{"value":0},"rbx":{"value":0},"trap":{"value":0},"err":{"value":0},"r11":{"value":0},"rip":{"value":4314987232,"matchesCrashFrame":1},"rbp":{"value":0},"rsp":{"value":140702044261280},"r12":{"value":0},"rcx":{"value":0},"flavor":"x86_THREAD_STATE","rdi":{"value":0}},"frames":[{"imageOffset":19168,"symbol":"_dyld_start","symbolLocation":0,"imageIndex":0},{"imageOffset":1,"imageIndex":1}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" :<PHONE_NUMBER>,
    "size" : 442368,
    "uuid" : "71febccd-d9dc-3599-9971-2b3407c588a8",
    "path" : "\u0004",
    "name" : "\u0004"
  },
  {
    "size" : 0,
    "source" : "A",
    "base" : 0,
    "uuid" : "00000000-0000-0000-0000-000000000000"
  }
],
  "vmSummary" : "ReadOnly portion of Libraries: Total=900K resident=0K(0%) swapped_out_or_unallocated=900K(100%)\nWritable regions: Total=8196K written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=8196K(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nSTACK GUARD                       56.0M        1 \nStack                             8192K        1 \nVM_ALLOCATE                          8K        2 \n__DATA                              32K        3 \n__DATA_CONST                        84K        2 \n__LINKEDIT                         236K        3 \n__TEXT                             676K        2 \n===========                     =======  ======= \nTOTAL                             65.0M       14 \n",
  "legacyInfo" : {
  "threadTriggered" : {

  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "61301e3a61217b3110231469",
      "factorPackIds" : {
        "SIRI_FIND_MY_CONFIGURATION_FILES" : "6216ae152a40e71046e16225"
      },
      "deploymentId" : 240000016
    },
    {
      "rolloutId" : "60da5e84ab0ca017dace9abf",
      "factorPackIds" : {

      },
      "deploymentId" : 240000008
    }
  ],
  "experiments" : [

  ]
},
  "reportNotes" : [
  "dyld_process_snapshot_get_shared_cache failed"
]
}

See #14
You should be able to fix it by redownloading Advantage Scope v1.18.3.


Assignment 05

Benchmarking
Performance was benchmarked using criterion by testing input sizes of 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, and 1e8 against a threadpool with 1,2, 4, 8, 16, 32, 64, 128, and 256 threads.

For small arrays of less than 1e2 we observe a performance decrease for all threads greater than 1. This is because the overhead in scheduling is more drastic than the few hundred cycles needed to actually sort the array.

For arrays at size around 1e5 we see some very nice improvements from adding more threads. The performance increase is almost 2x going from 1 threads to 2 threads and continues dropping almost linearly up to 8 threads. Going from 8-256 threads the performance reverses and quickly begings to deteriorate. My macbook has only 8 logical cores which are fully CPU bound at 8 threads so any higher threadcount just add additional overhead with no gain.

For really massive arrays >=1e8 the performance again tops out at 8 threads since we are fully CPU bound but it mostly stays leveled off without significant degredation from adding more threads. We fully max out the cpu and keep large chunks of works regardless of threadcount so it becomes completely irrelevent.

Rubric for Assignment 5: Concurrency
Submission
Canvas
1: The link submitted on Canvas is for the pull request containing the assignment submission.
0: The link submitted on Canvas is not for the pull request containing the assignment submission.
Git Branch
1: The branch includes only changes for this assignment.
0: The branch includes commits or changes outside this assignment.
Git Commit Message
1: All commit messages for the branch are reasonably clear.
0: One or more commit messages for the branch are reasonably clear.
GitHub Pull Request
1: The pull request is made to the main branch of the student's fork of the course repository.
0: The pull request is made to a branch other than main or to a repo that is not the student's fork of the course repository.
Points
Submission Score: 4/4
Correctness
Thread Pool
For each of the following features:

Spawns n number of threads where n is a user-provided parameter
Supports sending jobs to threads in an even distribution
Supports those jobs returning a result to the main thread
Gracefully joins all threads when dropped

2: This feature is implemented and functions correctly
1: This feature is implemented, but contains an error
0: This feature was not implemented
Merge Sort- Spawns n number of threads where n is a user-provided parameter

Supports sending jobs to threads in an even distribution
Supports those jobs returning a result to the main thread
Gracefully joins all threads when dropped

Correctness
3: The program correctly sorts vectors using Merge Sort
2:  The program fails to correctly sort vectors due to a minor issue
1:  The program fails to correctly sort vectors due to a major issue
0: No attempt was made to sort vectors
Implementation
2: A thread pool is used to evenly distribute the work among n given threads
1: A thread pool is used, but there is a problem with its use or it fails to distribute the work between threads evenly
0: No thread pool is used in the merge sort implementation
Benchmarking
In benchmark.md:
3: The quickest number of threads is identified along with a reasonable explanation for why certain numbers are faster than others
2: A number and explanation is given, but the explanation has a minor error
1: A number and explanation is given, but the explanation has a major error
0: No number and/or explanation is given
Points
Correctness Score: 16/16
Code Quality
Design
Tests
For thread_pool.rs and main.rs (merge sort):
3: This functionality is appropriately tested with passing unit test cases
2: This functionality has unit tests, but they miss a few code paths/reasonable input cases
1: This functionality has unit tests, but they miss multiple core code paths
0: This functionality has no unit tests
General Cleanliness
4: The code is effectively documented, especially for sources of user-facing errors. Additionally, function signatures are clear and the code is overall very readable.
2: Attempts at verbose documentation were made, but certain sources of error are unclear OR poor function signatures are used and readers would have slight difficulties while scanning the code.
0: Documentation is severely lacking in several places and the code is not written in a readable way.
Lint/Format
RustFmt
2: RustFmt produces no warnings when run on the changed files
1: RustFmt produces a few minor warnings when run on the changed files
0: RustFmt produces many warnings when run on the changed files
Clippy
2: Clippy produces no warnings when run on the changed files
1: Clippy produces a few minor warnings when run on the changed files
0: Clippy produces many warnings when run on the changed files
Points
Code Quality Score: 14/14
Summary
Total Score: 34/34

Nice graphs & analysis!
Heads up that using the mpsc module might have given you an easier time handling senders/receivers; however, this is still a functional, solid implementation that meets the rubric (:


Support an rtv-specific PAGER setting

This could just be a special-case of #541 where --pager=foo would set the value for PAGER for a given rtv instance, but given there's already RTV_BROWSER with precedence over BROWSER, RTV_EDITOR for EDITOR and RTV_URLVIEWER for URLVIEWER, it seems like RTV_PAGER would be a logical thing to set for a rtv-specific setting for PAGER.

I have an implementation of this in my fork: https://github.com/joeythesaint/rtv/tree/jjm/rtv-pager that works reasonably well with my external md viewer and is easily testable with something like this:
$ export RTV_PAGER="gvim -"
$ rtv
Then opening a submission or thread with 'l'.

Out of curiosity, what's the reason that you want to set the rtv pager different from your default system pager?

It's so that I can set RTV_PAGER to be something like mdless but I don't want to use mdless for all PAGER duties.
I'd have cited that in my test comment above, but the stock version of mdless exits when the page is fully rendered, causing the same problem you get with rtv you would get if you set PAGER=more instead of PAGER=less.  I've made local patch to mdless to prevent that from happening, but I'm sure one of the other half-dozen command-line markdown viewers available implements proper less behaviour out of the box.  That'll give rtv users a nicer overall experience when viewing long comments that include markdown, I think.
There are certainly other ways to accomplish this, and until I wrote up the patch over the weekend, I had been invoking rtv like:
$ PAGER=mdless rtf

Which keeps PAGER sane for most stuff and sets it to what I want for this particular command.  I just threw this together after I'd run that from my command history again and thought it might be better to have a convenience variable.

Thanks, that makes a lot of sense. I haven't heard of mdless before but it looks really cool. I would be fine with merging your branch if you want to make a PR!

Okay, cool.  PR #570 submitted.  Thanks!

Merged in https://github.com/michael-lazar/rtv/pull/570


CHTTParser error when running swift build

Hi guys,
So i am a newbie, and in my environment, im running Kaitura over Docker. I get the following error, which I believe is related to the Crypto library, when i run swift build:
/projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ Compile Swift Module 'LoggerAPI' (1 sources) /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ Compile Swift Module 'Core' (28 sources) Compile Swift Module 'Node' (22 sources) /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found umbrella "/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include" ^ <unknown>:0: error: build had 5 command failures error: exit(1): /root/swift-3.0.1-RELEASE-ubuntu16.04/usr/bin/swift-build-tool -f /projects/project7/.build/debug.yaml
My Package.swift is as follows:
`
import PackageDescription
let package = Package(
name: "project7",
dependencies: [
.Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1),
.Package(url: "https://github.com/IBM-Swift/HeliumLogger.git", majorVersion: 1),
.Package(url: "https://github.com/IBM-Swift/BlueCryptor.git", majorVersion: 0, minor: 8),
.Package(url: "https://github.com/vapor/mysql.git", majorVersion: 1),
]
)
`
Im on Swift 3.0.1. Not sur what else I can do on my end... Any assistance would be great. When i took out crypto the build worked.
Thanks!

I resolved the issue, by changing the following entry in my Package.swift:
       .Package(url: "https://github.com/IBM-Swift/BlueCryptor.git", majorVersion: 0),

Im still getting this issue, /projects/project7/.build/debug/CHTTPParser.build/module.modulemap:2:14: error: umbrella directory '/Users/doronkatz/Development/Server/project7/Packages/CHTTPParser-0.3.0/Sources/CHTTPParser/include' not found

Can you try rebuilding after doing an rm -rf .build Packages? You shouldn't be using the package CHTTPParser any more. If it still fails, please tell us what are the directories under Packages.

Hi @shmuelk, Ive removed and re-build, and it still fails. The directories are:
CCurl-0.2.3   Cryptor-0.8.6       Kitura-1.4.2                 MySQL-1.0.3          Polymorphic-1.0.1 CEpoll-0.1.0  HeliumLogger-1.4.0  Kitura-TemplateEngine-1.4.0  Node-1.0.1           SSLService-0.12.10 CMySQL-1.0.0  JSON-1.0.2          Kitura-net-1.4.3             OpenSSL-0.3.1        Socket-0.12.16 Core-1.0.0    Jay-1.0.1           LoggerAPI-1.4.0              PathIndexable-1.0.0  SwiftyJSON-15.0.4
Thanks

It's still failing with the same error message?

Actually I did a swift package update and it worked. Strange. But that must have done the trick.
Why did it pick up the CHTTParser the first time ?

You probably had an earlier version in there somewhere and clean everything up. Earlier versions of Kitura-net used the external CHTTPPArser repository. Newer ones have it embedded inside of the Kitura-net repository.

Thanks @shmuelk . Might have been good to note.. Thanks. I can close this now!


Give myself access to non-critical infra

I'm going to be working on https://github.com/NixOS/infra/issues/485. This will give me the power to do most of the work there, except for deploying the relevant DNS changes with Terraform.

So @mweinelt and @vcunat abstain providing their feedback this pull request, because they don't know @jfly. I am going to merge this Friday, so we can proceed with our work.

I'd say I'm in a "no objection" position.  We do need to be able to onboard people that aren't too well known.  If the non-critical infra isn't very suitable for that, perhaps we should move those parts to the other sub-team.  (the teams are equal right now anyway)

Your key has been deployed.


Replace proc-macro-error with proc-macro-error2

proc-macro-error depends on syn 1.0 and is no longer maintained. This PR replaces it with the drop-in replacement proc-macro-error2.

I just looked into it again and realized that proc-macro-error wasn't even used anymore. It was only in the Cargo.toml and some Cargo.lock files.
So removing it altogether would be even better. Should I submit a new PR?

Should I submit a new PR?

Yes please, that would be appreciated! :D


Certificate thumbprint error in Install-ADFS

Getting certificate thumbprint error in Install-ADFS

Scenario :
Been trying to deploy this environment for weeks! We are trying to deploy the environment in our current Azure environment that already has a domain and AD within.
We tried first to deploy using that domain name as the FQDM but we would not able to AD connect in the DC because the federation existed already.
We then tried to redeploy using a subdomain as our FQDN (ex: simuland.example.com ) changed the ps1 template for the AD to match : (as previously mentioned in another issue. )
$DomainName1,$DomainName2,$DomainName3 = ($using:domainFQDN).split('.')
$ParentPath = "DC=$DomainName1,DC=$DomainName2,DC=$DomainName3 "
Everything deploys correctly up to Install-ADFS and this certificate thumbprint error. I am wondering if we have a wildcard certificate for our domain name ( *.example.com ) if that is enough or do we need an extra wildcard certificate for the subdomain as well ( *.simuland.example.com ) to satisfy the requirements of the newly create federation which will be adfs.simuland.example.com ? Trying to be as clear as possible here.
Running a little short on solutions here and would really appreciate to get this environment going for our team!
Thanks in advance.

I created a new certificate with the subdomain. *.example.com
Now I am getting this error in INSTALL ADFS

I install adfs script is the exact same that's on the otrf repo

Hello @Sar4D ! Sorry for the late reply. Regarding the domain issue, I was testing the following and it is already working when deploying a template which creates a basic domain: https://github.com/OTRF/Blacksmith/blob/master/resources/scripts/powershell/dsc/active-directory/Create-AD.ps1#L28-L30
I am testing the same fix for this AD FS enironment.
Regarding the last error message, I am not sure why it caused it. However, this line was causing some issues: https://github.com/OTRF/Blacksmith/commit/6bf4658b70ae078b763b5e2504a01399893a027f . Fixed it back in June.

This is the AD FS part of this scenario:
https://github.com/OTRF/Blacksmith/tree/master/templates/azure/Win10-AD-ADFS
In order to expedite the testing, I would use that template. I have deployed it a few times today with a self-signed certificate and it works fine. I have also used it with a wildcard SSL certificate and it works fine. Let me know if you still have any issues with it. thank you and once again sorry for the late reply.


Add support for use with xargs

Doing find … | imageoptim works as expected, but find … | xargs imageoptim does not (it quits and shows the help message). This matters because if we want to find … -print0 | xargs -0 imageoptim, we can’t.

Thanks for this @vitorgalvao.
I'll need some help here as I've not used xargs before, is it not something that would be piped, as in find … | xargs | imageoptim rather than find … | xargs imageoptim?
Please add some more info/context and I'll do my best to help, thanks.

No, you don’t pipe from xargs, but to it. The example I gave is correct, and that link explains well what it does.
You may close this if you want, though. I’ve since started using the ImageOptim app for this directly since it behaves correctly in this situation.

Thanks @vitorgalvao, my inexperience with xargs is showing here. I'll leave this open as it sounds like something that should be supported, so you can also run those images through imagealpha and JPEGmini.
Thanks for the link, that will be useful.

I can have a look at this one. Quick q though, why do you want to null terminate the list from the find command? Is there a special case? thanks

@jamesstout Filenames are full of surprises. Piping from find to xargs should always be done that way. Look at their respective man pages and you’ll see they both acknowledge this — the options were essentially made for each other.

I had a stab at this last night. Tricky. When invoked via xargs, all the files are passed to imageoptim along with any imageoptim args. So, you'd need:

To know if you were invoked via xargs
If so, process the args in a different way to strip out files vs command args

There are ways to tell if you are in a sub-shell, or part of a command expansion, or an interactive shell, but I couldn't find a portable (works in all shells) way to determine if we were invoked via xargs.
I did get it working with ps and grep, but it seems like a hack and then a lot of work to have two ways to process the args. I could spend time on it, but @JamieMason let me know what you think.

To reiterate, if I’m the only one asking for this, feel free to close it.
That said, being piped from xargs is expected behaviour from *nix CLI utilities.

To clarify, is the fix live or have you decided not to support it?

Hey @vitorgalvao, I decided not to proceed but if anyone has a nice solution they are welcome to get involved.


[supervisord] Fix test on service checks

What does this PR do?
Fixes test on service checks of the supervisor check.
Some service check fields are not necessarily in the dict anymore, so
stop assuming they are.
Motivation
Test was broken since https://github.com/DataDog/dd-agent/pull/3487
Versioning
Just a test update, no need to bump version.
~- [ ] Bumped the version check in manifest.json~
~- [ ] Updated CHANGELOG.md~

👍 LGTM


Wrong last glucose level mmol/l

I'm running the latest beta version 2<IP_ADDRESS>-rc1 but the problem is that it types out the last glucos level as exampel 117,11 mmol/l when it is 11,7 mmol/l

Also have the same issue running the latest rc and HA 2024.2.0

Also have the same issue running the latest rc and HA 2024.2.0

I have solved it by doing a helper template that take the value and divide it by 10

Fixed in the next release


Error with Raspberry Pi 4 & Camera Module v2

I tested with the code on master 344e824
 on my Raspberry Pi 4 with Noir Camera Module V2 . I got the error AttributeError: module 'lib' has no attribute 'SSL_OP_NO_TLSv1_3'
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam] /usr/local/lib/python3.5/dist-packages/aiortc/rtcdtlstransport.py:12: CryptographyDeprecationWarning: Python 3.5 support will be dropped in the next release of cryptography. Please upgrade your Python.
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   from cryptography.hazmat.backends import default_backend
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam] Traceback (most recent call last):
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   File "/usr/src/app/server.py", line 5, in <module>
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]     from aiortc import RTCPeerConnection, RTCSessionDescription, VideoStreamTrack, RTCIceServer, RTCConfiguration
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   File "/usr/local/lib/python3.5/dist-packages/aiortc/__init__.py", line 7, in <module>
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]     from .rtcdtlstransport import (RTCCertificate, RTCDtlsFingerprint,  # noqa
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   File "/usr/local/lib/python3.5/dist-packages/aiortc/rtcdtlstransport.py", line 18, in <module>
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]     from OpenSSL import crypto
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   File "/usr/local/lib/python3.5/dist-packages/OpenSSL/__init__.py", line 8, in <module>
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]     from OpenSSL import crypto, SSL
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]   File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 149, in <module>
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam]     OP_NO_TLSv1_3 = _lib.SSL_OP_NO_TLSv1_3
[Logs]    [12/2/2020, 6:25:21 PM] [balena-cam] AttributeError: module 'lib' has no attribute 'SSL_OP_NO_TLSv1_3'
[Logs]    [12/2/2020, 6:25:15 PM] Service exited 'balena-cam sha256:a78972a03272c409def44de92adac55debb38ddd1732780f6dc2ea6ef89c778d'

Any ideal? I guess I have to update a library...

I replaced the line balena-cam/Dockerfile.aarch64#L34 by
RUN pip3 install aiohttp aiohttp_basicauth==0.1.3 aioice==0.6.10 aiortc==0.9.11 numpy==1.15.4 opencv-python==<IP_ADDRESS> pyOpenSSL==19.1.0 --index-url https://www.piwheels.org/simple

A package has a dependency to pyOpenSSL > 19.1.0, and that cause that error.
Now I get Video device is not ready. Sound like a progression.


Upgrade to the latest swagger spec/ library

I also would like to know what happened to #195 is it documented, or was it not released?

#195 is supported in the sense that we use Jackson to describe the minimum set of (de)serializable properties, that is common across the sub types. But it does not describe the oneOf relationship. Might be worth adding support for this in 2.0


JSON payload with '%123' is blocked by rule -920271     msg:'Invalid character in request (non printable characters)',\

Description
In a POST request, when the JSON payload contains '%123', the request is blocked with 403 due to rule matching 920271 - Invalid character in request (non printable characters)
Message :Invalid character in request (non printable characters)
instanceId_s :appgw_0
SourceSystem :Azure
ruleSetType_s :OWASP CRS
ruleSetVersion_s: 3.2
ruleId_s :920271
ruleGroup_s: REQUEST-920-PROTOCOL-ENFORCEMENT
action_s: Matched
details_message_s
Validate Byte Range<PHONE_NUMBER>100100000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 at ARGS.
details_data_s
ARGS:query=%123
details_file_s
REQUEST-920-PROTOCOL-ENFORCEMENT.conf
Audit Logs / Triggered Rule Numbers
ruleId_s :920271
ruleGroup_s: REQUEST-920-PROTOCOL-ENFORCEMENT
Your Environment

engine_s :Azwaf
SourceSystem :Azure
Confirmation
[x] I have removed any personal data (email addresses, IP addresses,
passwords, domain names) from any logs posted.

Hi @targonel13,
thanks for feedback! Unfortunately this is a false positive hit. We will investigate this issue soon, but if you need a quick solution, you can create an exclusion rule, for eg.:
SecRule REQUEST_URI "@beginwsWith /your/uri" \
    "id:990001,\
    phase:1,\
    t:none:\
    pass,\
    nolog,\
    ctl:ruleRemoveByID=920271"

Hi @targonel13,
Can you share with us a curl request, which we can reproduce your issue?
I've made some researches, and found that this request didn't blocked by rule 920271:
curl -v -d '{"query":"%25123"}' -H 'Content-Type: application/json; charset=utf-8' http://localhost

In debug.log, I can see the decoded form of the request:
[4] Executing operator "validateByteRange" with param "9,10,13,32-126,128-255" against ARGS:query.
[9] Target value: "%123"
[4] Operator completed in 0 usec.
[4] Rule returned 0.

So I'm afraid your request uses wrong encoding. Please help me to clarify it.

Hi,
This is the curl
curl -X 'POST'
'https:///query?api-version=2022-06-01-draft'
-H 'accept: text/plain'
-H 'Authorization: Bearer xxxxxxxxx
-H 'Content-Type: application/json'
-d '{
"query": "%123"
}'
From: Ervin Hegedus @.>
Sent: Friday, July 8, 2022 10:06 PM
To: coreruleset/coreruleset @.>
Cc: Alexey Fekson @.>; Mention @.>
Subject: Re: [coreruleset/coreruleset] JSON payload with '%123' is blocked by rule -920271 msg:'Invalid character in request (non printable characters)',\ (Issue #2681)
Hi @targonel13https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftargonel13&data=05|01|alexeyfekson%40microsoft.com|e1aa83cf857546b2558408da6114f046|72f988bf86f141af91ab2d7cd011db47|1|0|637929039856166095|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=bhPSRjAjsjEl5z9dK1kstNB7WmJWFUE37zbmzbyio1A%3D&reserved=0,
Can you share with us a curl request, which we can reproduce your issue?
I've made some researches, and found that this request didn't blocked by rule 920271:
curl -v -d '{"query":"%25123"}' -H 'Content-Type: application/json; charset=utf-8' http://localhost
In debug.log, I can see the decoded form of the request:
[4] Executing operator "validateByteRange" with param "9,10,13,32-126,128-255" against ARGS:query.
[9] Target value: "%123"
[4] Operator completed in 0 usec.
[4] Rule returned 0.
So I'm afraid your request uses wrong encoding. Please help me to clarify it.

Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcoreruleset%2Fcoreruleset%2Fissues%2F2681%23issuecomment-1179284686&data=05|01|alexeyfekson%40microsoft.com|e1aa83cf857546b2558408da6114f046|72f988bf86f141af91ab2d7cd011db47|1|0|637929039856166095|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=kBWXT3%2BkbeppUBRHt764DwgTnx2AEt8FR1AEKHCPwPM%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAYHKZGWHILDVUMBNICZEQL3VTB32VANCNFSM525PDCTA&data=05|01|alexeyfekson%40microsoft.com|e1aa83cf857546b2558408da6114f046|72f988bf86f141af91ab2d7cd011db47|1|0|637929039856166095|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=iAYSyDRtmh9va36sb97%2Fvq7JYwDjgjUwPdBqj4TbLow%3D&reserved=0.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Hi @targonel13,
curl -X 'POST' \
 'https://<uriprefix>/query?api-version=2022-06-01-draft' \
 -H 'accept: text/plain' \
 -H 'Authorization: Bearer xxxxxxxxx -H 'Content-Type: application/json' \
 -d '{ "query": "%123" }'

thanks - as I wrote above, in this case you should encode your JSON data. The correct form is this:
 -d '{ "query": "%25123" }'

As you can see, you have to replace the % by the %25 (% char's code is 37 in decimal, which is 25 in hex). Most programming language able to do that, eg. in Python, you can check:
>>> import urllib.parse
>>> urllib.parse.quote_plus("%123")
'%25123'

Hi @airween ,
Let me explain a bit more about the situation.
I am creating  a public API to allow the user to search files.
The user is sending me the query using the Query API.
I am storing files for the client and want to allow the client to search for them.
Suppose i have a stored file named '%123.txt' in my system-
for example the query could be  "query": "FileName == '%123.txt'".
My service is hosted in Azure and i do not have any place to replace any notes, and i don't want to since i want to take the exact string and compare it with my sorted files names for example.
The call is being blocked in the WAF so i have no access the the content since it does not reach my backend and blocked by this rule.

Hi @targonel13,
thanks for the summary.

I am creating a public API to allow the user to search files. The user is sending me the query using the Query API.
...
Suppose i have a stored file named '%123.txt' in my system- for example the query could be "query": "FileName == '%123.txt'".

I see, but above I explained that the query of your user, the request itself is not valid.
You or your user have to encode the query - that's the solution.

i want to take the exact string and compare it with my sorted files names for example.

Agree, but please note that if you want to send the % character in HTTP, you have to encode it, because % has a special meaning. For more info, please read this article.

Thanks for the response.
Let me see if i understand it correctly,
In the body of the http POST call, it is forbitten to have '%111' in the body of the request, and if the client insists of having files with names containing '%123' or similar he should replace the % with %25
Also, i understand the this called being blocked is by design and no intention to change it, right?

In the body of the http POST call, it is forbitten to have '%111' in the body of the request, and if the client insists of having files with names containing '%123' or similar he should replace the % with %25

Yes. You should consider this, if the server receives an argument which contains a %, then it looks up the next two characters, which must be numbers. The server will decode this sequence: cuts the %, and generates a hexa number from the next two numbers. In your case, the %12 describes the character ASCII 18 (hex 12 = dec 18), which is a non-printable character - therefore that rule does not allow it.

Also, i understand the this called being blocked is by design and no intention to change it, right?

Yes, exactly.

@airween Can you explain the rationale for requiring this encoding in JSON request bodies? Unlike URIs, normally JSON payloads are not URI-encoded (or decoded). It does make sense if the body's content was application/x-www-form-urlencoded.

Hi @aelij,
I've made a quick research, and may be you're right. And this means that rule gives false positive in this case.
We have to discuss it - we will be in touch soon.
Thanks again.

@airween Any news here? Have this already been discussed? Thanks for the update!

Let me add my two cents.
920271 is a paranoia level rule. That means false positive can happen.
920271 also dies URLDecoding. %123 is thus %12 + 3. Now %12 is Ascii 18, device control 2, and thus an invisible escape sequence and exactly the character class that 920271 is meaning to forbid.
So under the line I do not see a chance we are fixing this. You need to treat this as a rule exclusion.
I'll leave this open for now, but unless further notice, we'll close this issue.


fix "Stateful Set" to "StatefulSet"

fix "Stateful Set" to "StatefulSet"  better

This change is

/lgtm

/retest

@huzhengchuan it looks as though the deploy failed on the netlify side.  Thanks!

/lgtm


⚠ Stick v4

Thank you for your contribution to the KodaDot - One Stop Shop for Polkadot NFTs.
Please do not merge this PR, It is intended just for the testing purposes
👇 __ Let's make a quick check before the contribution.
PR Type

[x] Bugfix
[ ] Feature
[ ] Refactoring

Context

[x] Closes #6774

Before submitting pull request, please make sure:

[ ] My contribution builds clean without any errors or warnings
[ ] I've merged recent default branch -- main and I've no conflicts
[ ] I've tried to respect high code quality standards
[ ] I've didn't break any original functionality

Optional

[ ] I've tested it at </ksm/collection>
[ ] I've tested PR on mobile
[ ] I've written unit tests 🧪
[ ] I've found edge cases

please @prury for test
Copilot Summary

🤖 Generated by Copilot at e18ddbe
Updated the URLs for the ahk and stick indexers to use the new version that supports the latest metadata and events features. This improves the indexing performance and accuracy for the NFT gallery.

🤖 Generated by Copilot at e18ddbe

Indexers upgraded
ahk and stick use v4
Autumn of changes

@vikiival curious, why we go back to v4 instead of set v4 to prod?

@vikiival curious, why we go back to v4 instead of set v4 to prod?

aahh, sorry, my bad
I think it's better to set it as a draft PR instead

@vikiival is for me to check if stuff loads on the Kusama Asset Hub? if yes, it works

please see my question concerning duplicates: https://github.com/kodadot/nft-gallery/issues/6774#issuecomment-1683860996

seems allright

https://github.com/kodadot/nft-gallery/assets/22471030/176925e4-2f32-4c0b-9bca-4bef4b0ead73


travis: phpunit.xml.dist is used by default

Also scrutinizer moved to after_script, since it's not part of testing procedure.

Thank you!

Scrutinizer build failed. I restarted

Sometimes scrutinizer gets buggy. Writing support just info message usually helps.

Any updates?

@TomasVotruba can you rebase it?

It might take some time, so I'd recommend to it manually or in own commit.


MongoDBBackend has no attribute client

First Check

[X] I added a very descriptive title to this issue.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to AuthX but to Pydantic.
[X] I already checked if it is not related to AuthX but to FastAPI.

Example Code
from authx import Authentication, MongoDBBackend
import motor.motor_asyncio
import asyncio

auth = Authentication(
    backend=MongoDBBackend(
        client=motor.motor_asyncio.AsyncIOMotorClient(
            'mongodb://localhost:27017',
            io_loop=asyncio.get_event_loop()
        ),
        database='authx',
        collection='users'
    )
)

Description
This should ideally create an auth object that can be used to include routers. Instead this gives an error
    backend=MongoDBBackend(
TypeError: __init__() got an unexpected keyword argument 'client'

Operating System
Windows
Operating System Details
No response
FastAPI Version
0.77.1
Python Version
Python 3.9.0
Additional Context
This problem is arising as the MongoDBBackend class is not excepting any other parameters other than the database_name
class MongoDBBackend(BaseDBBackend):
    """
    Setup Database for authx using MongoDB & Motor
    """

    def __init__(self, database_name: str = "test") -> None:
        self._database_name = database_name

    def set_client(self, client: AsyncIOMotorClient) -> None:
        self._client = client
        self.init()

    def init(self) -> None:
        self._db: AsyncIOMotorDatabase = self._client[self._database_name]
        self._users: AsyncIOMotorCollection = self._db["users"]
        self._email_confirmations: AsyncIOMotorCollection = self._db[
            "email_confirmations"
        ]
        self._counters: AsyncIOMotorCollection = self._db["counters"]

        self._settings: AsyncIOMotorCollection = self._db["settings"]

hello @YogeshUpdhyay can you please check the PR I mention #260


Add https://github.com/CyrusTheHedgehog/Hangouts-Bridge to projects

@oddvar could you do this?

done: https://github.com/matrix-org/matrix-doc/commit/9debd7c1adc1b4cffc390d9d578cae18a6fbd50e