Migrate away from Asciidoctor

~The Gradle plugin is not actively maintained with little to no activity.~
~Currently, there is a warning raised when building the documentation:~

~Task :documentation:asciidoctor~
~Invocation of Task.project at execution time has been deprecated. This will fail with an error in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.5/userguide/upgrading_version_7.html#task_project
The JavaExecSpec.main property has been deprecated. This is scheduled to be removed in Gradle 9.0. Please use the mainClass property instead. For more information, please refer to https://docs.gradle.org/8.5/dsl/org.gradle.process.JavaExecSpec.html#org.gradle.process.JavaExecSpec:main in the Gradle documentation.~

This issue is meant to explore other documentation tools.
The following are strong candidates:

VitePress
Material for Mkdocs

The following requirements are a must have:

Able to display Kotlin and Groovy DSL examples, ideally with a tabbed view selection.
Able to use/integrate withproperties from the Gradle build. For example, the CXF version defined in the version catalog.

The following are nice to have:

Versioned documentation. Currently, the documentation is published under versioned sub-directories.
Publish documentation without Gradle Git Publish plugin. Nothing wrong with the plugin, would just like to integrate with GitHub Actions more.

4.x was finally released for the Asciidoctor Gradle Plugin, so the deprecation warnings are now gone which is nice. Still, would like to explore other documentation tools.

For the two nice to have points:
Versioned documentation is dependent on the tool being used. With the current Asciidoctor setup, versioned docs are created through subfolders and committed to a branch for GitHub Pages to use.
VitePress does not currently provide support for versioned docs (see 109). The same setup for Asciidoctor could be replicated, but the base property would need to be in sync with the versioned documentation.
Material for Mkdocs recommends using mike from the docs. From browsing GitHub, mike takes the same approach creating subfolders of the versioned docs, for example: https://github.com/airtai/faststream/tree/gh-pages

For publishing the docs without the Gradle plugin, GitHub Actions does not really support versione , instead a archive containing the docs replaces what is already deployed (see 50). So, you would need to keep each versioned docs in the main branch which isn't really nice IMO to deal with. So, I think continue using the Gradle plugin since it works well today.

Also, with VitePress (Node.js in general), can use the com.github.node-gradle.node which avoids having to have Node.js installed globally on a system.
Mkdocs requires Python installed globally.

VitePress does not support multi-region snippets which is required since the samples shown are testing. So they must be a full example in order to test, but only select regions are shown in documentation.
https://github.com/vuejs/vitepress/issues/3690

Antora is another option to look at.

I like Docusaurus' stance on versioned docs:

Most of the time, you don't need versioning as it will just increase your build time, and introduce complexity to your codebase. Versioning is best suited for websites with high-traffic and rapid changes to documentation between versions. If your documentation rarely changes, don't add versioning to your documentation.

The documentation itself for this plugin rarely, if ever changes. So this makes the versioning nice to have requirement effectively moot. It even simplifies the build for the docs since publication can be handled by upload-pages-artifact followed by deploy-pages GitHub actions.
This brings me back to VitePress or Antora.
From experimenting, VitePress was much more intuitive to get started with a simplier project structure.
Docusaurus was excluded primarily because its structure seems dated relying on babel.

I am here #109 Seeing your concerns, I also encountered the same problem Have you made a decision on which tool to use so far? Perhaps docusaurus can be used first, and after the official implementation of Vitepress, version control may only be possible with Vitepress 2. x. However, before that, docusaurus can be used. What do you think?

Not yet, but I'm leaning towards VitePress, but it requires some workarounds to get project properties/values into the documentation. For example, a custom Gradle task that gets hooked in by loading the generated file. While somewhat easy to do, it was another thing to maintain whereas with Asiidoctor I could just plugin the values in using the Gradle extension. VitePress also does not support multi region snippets which could be worked around by some custom reader/generator that strips the unneeded lines and those generated files would be included in the final docs.
I'll need to experiment more by migrating this project's documentation to all approaches and compare further.

Antora works out nicely with the existing setup since it is already setup for Asciidoc, but in order to customize Antora's UI, you need to either provide a custom UI bundle or custom template (Handlebars).
I'm not interested in maintaining a dedicated UI project for Antora. I am also not interested in maintaining a HTML Handlebars template albeit the template content is minimal.
So Antora is excluded.
The remaining candidates are VitePress and Docusaurus. I previously exluded Docusaurus, but I'm going to need to take a deeper dive.

There is a small POC with VitePress that is largely working: https://github.com/ciscoo/cxf-codegen-gradle/tree/vitepress


[es] updated the home page

Resync the home page with the en version:
Preview: https://deploy-preview-35257--kubernetes-io-main-staging.netlify.app/es/

/lgtm
/approve

/lgtm

/approve


Fixed #33

Title

Sorry I can't merge this it's missing a title xD
PS 'Title' is no title

Apologies.

Title: Ensured that a JSON parse failure will not occur
I have provided counter measures to protect against occurances where the JSON string is too long to be sufficiently parsed by the server


feature request: string interpolation outside of recipe/target

something like this would be helpful:
path = "/path/example/"
init_and_cd_path = "mkdir -p {{path}} && cd {{path}} &&"

recipe1:
    init_and_cd_path \
    do_something

I think this would be useful, although I'm not 100% sure, since that would make it difficult to insert a literal {{ into a recipe.

I am not sure whether The Two Flavors of Variables in makefile is a good idea for this.

I'm not sure how others feel, but I personally find the two flavors of variables to be super confusing >_<
I think the way I would allow this would be some sort of string prefix, which turns on interpolation in strings, like python:
path = "/path/example/"
init_and_cd_path = f"mkdir -p {{path}} && cd {{path}} &&"

recipe1:
    init_and_cd_path \
    do_something

If we do add f-string syntax, it should apply to backticks, like so:
VIM := `which nvim || which vim`

VIM_VERSION := f`{{VIM}} --version`

(See discussion in #448.)

FWIW, this is probably the feature I've been missing the most when using Just...

I think this is a dupe of #11, so closing in favor of that.


Switch from Bodymovers to Constraints

Oh hey! Deja vu!
Time for this PR to be left open for the next 16 months.

👍🏿

Ew


Invalid messages with too many plots

Hey Devin,
first of all: Thank you for this great and easy to use plotting-system, it makes working with real-time-sensor-evaluation so much easier!
However I recently experienced a small issue (I have a solution already, but let me first motivate):
I'm working on an Arduino Uno. I was trying to plot four TimeGraphs with 4 (or 5) variables each, all complete with title and label descriptions. Everything compiled fine, however nothing was being transmitted (TX LED not lit up).
I commented out to plots, and indeed, now the TX LED was lit up. However, when I started the listener-application, all I got was a gray screen after it connected to the serial port.
I took a look at the transmitted serial data, and as it turned out, some of the data of the description line (the one with the names of the graphs and everything) was dropped. This resulted in a syntax error in the resulting JSON-String, since also a " was dropped.
After some more trying out I found out that this was a memory-error - my small AtMega had simply run out of memory, and so some stuff was just dropped. So this is probably more an optimization request, than a bug-report.
What I did to fix my issue was the following. In Plotter.h and Plotter.cpp:

I replaced the usage of String with const char *. Since you were only using String as a container anyways, this was no issue. String needs a bit more memory than const char *.

I split up the Serial.print()-statements. I had to do this anyway, because concatenation doesn't work that way with const char *. But this would also probably lead to some improvements if you decide to keep String, because the String-concatenation in the print()-calls (using "+") also takes a bunch of memory.
You can do the splitting up by just replacing every occurence of "" + " with ""); Serial.print(" and every occurence of " + "" with "); Serial.print("".

After those two changes, everything worked again - nothing got dropped, and all plots were displayed like they should.
Let me know what you think, if you want I can also prepare a pull-request. Thanks again for the great library!

Hey @Chritzel - thanks for reporting this and looking into the issue. Those fixes make sense to me. If you could put together a PR that would be great!

thanks! merged #21  -- closing


Add report comment functionality

This fixes dwitter-net/dwitter-frontend#18 - Report comment.
The report comment API that this uses doesn't exist in the backend yet -- but once it does, this should be ready to go.

API is in!


Web - V2

V2 for Web based on feedback from V1.
Decided to use a simple map to store the usernames and then write/read from file.
Also display the counts in the webpage.

@spectreman @wmbest2


update recipe for v1.14.0.rc1 release candidate

trying to follow https://conda-forge.org/docs/maintainer/knowledge_base.html#pre-release-builds - let's see if this works...
updated dependencies
restructured test suite, hence the rc to see if that works here

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


cls-labs-liquid

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 66.408%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
214

Relevant Lines:
304

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 66.408%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
214

Relevant Lines:
304

💛  - Coveralls


Adding 404 page

Description

There must be 404 error page for nonexisting routing.

ScreenShot

Additional Information

I m enthusiast Mern stack developer

Please assign this issue to me.

assign this issue to me it is just few min task.


Fix [API Documentation] link on overview docs page

There isn't a link at the moment.
API docs don't have an index and Document seems like the most logical place to go first

Hey @tonybaloney ,
Good catch! Thank you


Use libuv for I/O

The current Lwt_unix implementation has problems on both Mac and Windows, specifically:

on Mac, both the built-in default Lwt_engine and the libev one will use select. Unfortunately even with DARWIN_UNLIMITIED_SELECT we still see EINVAL errors (#66). Even if this worked it would not perform well with lots of connections.
on Windows, the select FD_SETSIZE is 64 and the OCaml Unix.select falls back to a much more complicated emulated code path. The API we should be using for scalable networking on Windows is IO Completion Ports

This PR changes the socket side of the stack to use libuv, the abstraction layer used by node.js which uses IOCP on Windows and kqueue on Mac.
This PR changes all the direct uses of Lwt_unix.file_descr into abstract types Socket.Stream.Tcp.t, Socket.Stream.Udp.tetc. This higher-level interface can then be mapped ontolibuvvia [fdopen/uwt] as well as traditionalLwt_unix.
A side-effect is that duplicated code was coalesced-- in particular there were several places where read and write functions had slightly different error handling.
Another side-effect is adding a Channel on top of the FLOW to avoid reading packet-by-packet. This has increased performance -- some benchmarks to follow.
Note that we must avoid using libraries which use Lwt_unix directly, as these calls will block. Happily most Mirage libraries are already pure in this sense.
The unit tests have been extended to run both the Lwt_unix and Uwt versions. I was able to run nmap tests in containers and observe a stable number of fds (~2000) during the test runs with lsof.
Fixes #66

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "use-buffered-channels" git@github.com:djs55/vpnkit.git somewhere
$ cd somewhere
$ git rebase -i HEAD~51
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

Regression tests are looking good -- let's try to include this in Docker for Mac/Windows soon.

Belated LGTM :)

Thanks :) (sorry for the rush)

lgtm


Add missing context to svg links in sponsor section

Hello! ✨
Currently there's an svg link (to Piccalilli) on 11ty.dev without any text context:

link expanded (showing no title svg attribute)
link collapsed (showing no text in the a)

When VoiceOver (macOS 10.15.6, Chrome 84) encounters this link, it gathers context from the href and reads it as "open-collective":

Ideally there would be something providing context for this link, so that a screen reader doesn't have to try to read information from a URL (which can sometimes be incomplete, as in this case, or difficult to understand if the URL is long, data-enriched, and/or in a format that's not easily read).
I noticed that the Sanity.io svg link in the same section is using a <title> inside its SVG. This is great, but I wanted to propose an alternative for all of the sponsor SVG links that instead uses descriptive text inside a <span class="sr-only"> element & treats the SVGs themselves as decorative.
For more information about this pattern, and how it differs from relying on an SVG <title>, I like to refer to this resource: "Contextually Marking up accessible images and SVGs".
Please let me know if you have any questions or concerns about this change. Thank you! 💖
Summary of changes
SVGs

remove <title> from Sanity SVG
add aria-hidden="true" and focusable="false" attributes to Sanity SVG

Supporters markup

Use supporter.name to provide screen-reader-only text for SVG links in the Sponsor section

Well, this is an absolutely lovely PR—thank you!


Adding necessary bits for cross-compiling to aarch64-unknown-linux-gnu to CI/CD

I got this working locally by:
$ rustup target add aarch64-unknown-linux-gnu
$ sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

then adding to .cargo/config.toml:
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"

then I could
$ cargo build --target=aarch64-unknown-linux-gnu

Could we add this to the CI/CD pipeline?
Any thoughts from folks? Tagging in @AnotherDaniel, @sophokles73

Is this now solved by #72? Or do you have any additional ideas?
I think this x-compilation is purely for academical purposes at the moment - there is nothing in this crate where the target arch should make a difference.

@AnotherDaniel and me had a quick sync-up. He'd like to review the issue more and address this in a follow-up PR when #72 is merged to add cross-compilation.

... and while we're on it:
Is x-compiling from x86_64 (I assume?) to aarch64 the only relevant scenario? Are there more?

... and while we're on it: Is x-compiling from x86_64 (I assume?)

You assume correctly!

only relevant scenario? Are there more?

If you wanted bonus points, I know in Automotive using QNX is pretty common (and on the roadmap for Ferrocene), so we could also try to get *-nto-qnx-* working
Have to build the compiler from source and need a QNX fork of gcc called qcc to link tho... so maybe not in the open source, unless there's a way to get a QNX license for open source work. :slightly_smiling_face:
Tagging @stevenhartley for above point :point_up_2:

Uh... you know, that is something I'll leave up to the BB QNX guys to look into ;-)
For now - waiting to get these required-workflow-blockers out of the way, then I'll set up the x64-arm64 x-compile on ubuntu, to meet your needs there. The rest can follow later...

@PLeVasseur @AnotherDaniel what is the status of this? Is this still relevant?


Error: tunneling socket could not be established

I've been trying to use this library to send get requests to CloudFlare protected websites using some http / https proxies.
For some reason I keep getting errors like:

RequestError: Error: tunneling socket could not be established, cause=socket hang up
RequestError: Error: tunneling socket could not be established, cause=connect ECONNREFUSED
RequestError: Error: tunneling socket could not be established, cause=read ECONNRESET
RequestError: Error: tunneling socket could not be established, statusCode=503

What exactly am I doing wrong?

var options = {
	uri: args['url'],
	jar: request.jar(),
	proxy: 'http://' + s_proxy,
	headers: {
		'Connection': 'keep-alive',
	  	'User-Agent': uas[Math.floor(Math.random() * uas.length)],
	  	'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
	  	'Accept-Encoding': 'gzip, deflate',
	  	'Accept-Language': 'en-US,en;q=0.9'
	},
	cloudflareTimeout: 5000,
	cloudflareMaxTimeout: 6000,
	followAllRedirects: true,
	challengesToSolve: 3,
	decodeEmails: false,
	gzip: true,
	agentOptions: { ciphers }
};

cloudscraper.get(args['url'] , function (error, response, body) {

  	if (error) {
    	throw error;
 	}

  	console.log("[+] Request has been sent. (" + s_proxy + ")");

});

I even tried setting the proxy env variables, but no luck.

Hi @dpalade06,
The proxies are the problem 90% of the time.
For example:

RequestError: Error: tunneling socket could not be established, statusCode=503

Looks like the proxy server hung up because of Cloudflare's response status code. Either way, it's a server error code. The problem is on their end.
Have a look at https://github.com/codemanki/cloudscraper/issues/233#issuecomment-510342262 for an example and tests.
Cheers

https://github.com/codemanki/cloudscraper/issues/234


Ideas for improvement

This thread is just a bunch of ideas flying around in my head, so feel free to either close this issue or comment on it. I'm fine with both ;)

Make a ThreadExt trait and implement the function set_priority and other with respect to the OS for std::thread::Thread.
This would make things seamless, e.g.
std::thread::current().set_thread_priority_and_policy(...)

You could also extend std::thread::Builder and have a function priority where you specify the priority beforehand.

Unify common functions.
What I mean by that is that currently I have to take a look into the unix mod to see what functions are available to me. This makes sense because unix might offer different things that windows does. But I would like to have a common struct/trait that combine the lowest common denominator. You can then do something sililar to what the std does by having a OS specific trait that extends your struct.
For an example what I mean look at std::fs::File with the AsRawFd and AsRawHandle traits.

Restrict the creation of invalid states.
I see that the ThreadPolicy enum can have an invalid state where when you pass a value beyond 100 to the Specific variant (btw. the documentation there says [0; 100] (read including 0 and 100), but the code says [0; 100) (read including 0, excluding 100). There needs to be a correction.
One way of doing this might be that the variant Specific does not hold a u32, but a struct SpecificNumber that has a new function which restricts the value passed to it and returning a Result.
Second would be that ThreadPolicy is a struct containing a single, non-public, enum. Similar to this: https://stackoverflow.com/questions/28090120/can-i-create-private-enum-constructors.
This way you can have some functions not returning a Result anymore, because they can't fail.

Create a few examples in the repo.
People love examples and hate reading docs (although I love reading rust docs, because they are unified and so pleasent to read). But a dedicated examples folder with just one example would spice things up and let people investigate everything they can do with this crate without looking into every function available.
Let me know what you think about this.
This crate looks nice and it perfectly fits into my current project. So thank you for developing it :)

I really appreciate your suggestions and will do them one by one! :-)

This thread is just a bunch of ideas flying around in my head, so feel free to either close this issue or comment on it. I'm fine with both ;)
Make a ThreadExt trait and implement the function set_priority and other with respect to the OS for std::thread::Thread.
This would make things seamless, e.g.
std::thread::current().set_thread_priority_and_policy(...)

This part is a nice-to-have thing, but impossible to implement. There is no way to map the std::thread::Thread::id to thread_priority::ThreadId - simply the Rust's thread id is an internal thing only known to rust and exposed for god-knows-which purposes (it is even useful to have?). Had there been a way to get the native thread id from Rust's thread id, there would have been a way to do this. The functions I can implement in such a trait are only for the current calling thread, but the Thread struct isn't just for the current thread but for all threads in rust, hence such an implementation isn't useful. For example, right now (uncommitted) I have this implemented:
/// A helper trait for other threads to implement to be able to call methods
/// on threads themselves.
pub trait ThreadExt {
    /// Sets the current thread's priority.
    /// For more info see [`ThreadPriority::set_for_current`].
    fn set_priority(&self, priority: ThreadPriority) -> Result<(), Error> {
        priority.set_for_current()
    }
}

As you can see, it is only useful when we need to set priority on the current calling thread. It is impossible to get what native thread it is in Rust without any additional knowledge, besides, even this is unstable (the implementation details may change at any time). So I decided just not to implement it, as there are already functions for doing this in the crate.

You could also extend std::thread::Builder and have a function priority where you specify the priority beforehand.

This is, unfortunately, also impossible. The Builder has to store the priority passed somewhere so that during the build() call it can do all the magic, like naming a thread, setting stack size and etc, and it is impossible to extend this structure. Besides, after that, I can't hook up on any callback to set the priority. And the last thing, even if all mentioned had been possible, it would have been impossible due to the thing I mentioned in the previous answer - there is no way to map the Rust's thread id to a native thread id, hence no way to do anything useful.
Without a proper Rust's exposure of thread details in any possible way, it is impossible to integrate with it. If you really want to have all of this done, there should be a separate crate then for all the threading stuff, duplicating the std::thread crate's functionality but including the priority settings. This is unfortunate to hear, I know, but this is how the things are.
I continue looking at the other things you mentioned.

This thread is just a bunch of ideas flying around in my head, so feel free to either close this issue or comment on it. I'm fine with both ;)
Make a ThreadExt trait and implement the function set_priority and other with respect to the OS for std::thread::Thread. This would make things seamless, e.g.
std::thread::current().set_thread_priority_and_policy(...)

You could also extend std::thread::Builder and have a function priority where you specify the priority beforehand.
Unify common functions.
What I mean by that is that currently I have to take a look into the unix mod to see what functions are available to me. This makes sense because unix might offer different things that windows does. But I would like to have a common struct/trait that combine the lowest common denominator. You can then do something sililar to what the std does by having a OS specific trait that extends your struct. For an example what I mean look at std::fs::File with the AsRawFd and AsRawHandle traits.
Restrict the creation of invalid states. I see that the ThreadPolicy enum can have an invalid state where when you pass a value beyond 100 to the Specific variant (btw. the documentation there says [0; 100] (read including 0 and 100), but the code says [0; 100) (read including 0, excluding 100). There needs to be a correction.
One way of doing this might be that the variant Specific does not hold a u32, but a struct SpecificNumber that has a new function which restricts the value passed to it and returning a Result. Second would be that ThreadPolicy is a struct containing a single, non-public, enum. Similar to this: https://stackoverflow.com/questions/28090120/can-i-create-private-enum-constructors.
This way you can have some functions not returning a Result anymore, because they can't fail.
Create a few examples in the repo. People love examples and hate reading docs (although I love reading rust docs, because they are unified and so pleasent to read). But a dedicated examples folder with just one example would spice things up and let people investigate everything they can do with this crate without looking into every function available.
Let me know what you think about this. This crate looks nice and it perfectly fits into my current project. So thank you for developing it :)

How do you like the https://github.com/vityafx/thread-priority/pull/14 ?

@hellow554 If you think your proposal is fully addressed in #14 , can you please close the issue?


Comment out postAndGetTaskList

Commenting the JavaScript function postAndGetTaskList out since it adds tasks to user's Tasks account on every run.

^^ Should be fine - was there for testing purposes / proof that this worked in the case of demo. LGTM


Compatibility with PrestaShop 7 and 8?

Hello,
I have been using your module since version <IP_ADDRESS>, and I would like to know if it is now compatible with PrestaShop version 8 and later. Thank you in advance for your response.
philippe

Hello @Marcel15
Yes, it works with PrestaShop 1.7 & 8.x
You have to use the latest version available here: https://github.com/Matt75/displayordercarrier/releases/latest

Merci


Code deleting on save (Golang).

VS Code Version: 1.54.3
OS Version: windows/amd64

Steps to Reproduce:

Type code in the editor.
Press Ctrl + S or File>Save. Then some characters delete.

See video below to see the problem. It only deletes characters from the final function 'unixMillis' as shown in video.
https://user-images.githubusercontent.com/63259916/111835102-6dc1aa00-88ec-11eb-82bd-95ec7af438f9.mp4

Does this issue occur when all extensions are disabled?: Yes/No

Can someone help me please?

@swanwhite this looks like a problem of the Go extension. Please report the issue with their issue tracker here:  https://github.com/golang/vscode-go


list recent Pandas tutorial in Wiki and webpage

I found the excellent and excellently-recorded pycon 2015 pandas tutorial among a forest of tutorials.
wouldn't it be nice for newcomer to find a link to it (or other excellent ones) in the website or the Wiki ?

This? https://www.youtube.com/watch?v=5JnMutdy6Fw
Looks good!

yes,

http://pandas.pydata.org/talks.html (source is here)

And there is also this page in the docs: http://pandas.pydata.org/pandas-docs/stable/tutorials.html

Thoughts on consolidating it to one place? Probably in the docs I’d say, and link to that from the main site. It might not look the best to have that page so far out of date.
-Tom

On Dec 29, 2015, at 3:19 AM, Joris Van den Bossche<EMAIL_ADDRESS>wrote:
And there is also this page in the docs: http://pandas.pydata.org/pandas-docs/stable/tutorials.html http://pandas.pydata.org/pandas-docs/stable/tutorials.html
—
Reply to this email directly or view it on GitHub https://github.com/pydata/pandas/issues/11919#issuecomment-167754522.

the tutorial section would need a refresh, unless there is nothing new since 2013

certainly would take updates to the tutorials section in the docs and/or updates to pandas.pydata.org , you can submit here

argh, github doesn't help me find the "Tutorials" part , can you finger point it ?

http://pandas.pydata.org/pandas-docs/stable/tutorials.html in pandas docs
https://github.com/pydata/pandas-website/blob/master/talks.rst for the website (which prob should just point to the tutorials docs)

Sorry being clueless: I still don't understand where/how to edit the "http://pandas.pydata.org/pandas-docs/stable/tutorials.html" page.
Talks is ok

The source for that is in doc/source/tutorials.rst
Some info [here](https://github.com/pydata/pandas/wiki#for-documentation-authors https://github.com/pydata/pandas/wiki#for-documentation-authors) on working with the docs.

On Dec 30, 2015, at 12:19 PM, stonebig<EMAIL_ADDRESS>wrote:
Sorry being clueless: I still don't understand where/how to edit the "http://pandas.pydata.org/pandas-docs/stable/tutorials.html http://pandas.pydata.org/pandas-docs/stable/tutorials.html" page.
Talks is ok
—
Reply to this email directly or view it on GitHub https://github.com/pydata/pandas/issues/11919#issuecomment-168048519.

A few more links if you want
Intro:
https://www.youtube.com/watch?v=TSsSWuhBpmY https://www.youtube.com/watch?v=TSsSWuhBpmY
https://www.youtube.com/watch?v=otCriSKVV_8 https://www.youtube.com/watch?v=otCriSKVV_8
Intermediate:
https://www.youtube.com/watch?v=2RW9zSQF1Sk https://www.youtube.com/watch?v=2RW9zSQF1Sk

On Dec 30, 2015, at 12:19 PM, stonebig<EMAIL_ADDRESS>wrote:
Sorry being clueless: I still don't understand where/how to edit the "http://pandas.pydata.org/pandas-docs/stable/tutorials.html http://pandas.pydata.org/pandas-docs/stable/tutorials.html" page.
Talks is ok
—
Reply to this email directly or view it on GitHub https://github.com/pydata/pandas/issues/11919#issuecomment-168048519.

ok, I didn't thought about looking at the Wiki Section. (shame on me)

I don't dare editing the Wiki 'Tutorial' part. In this MOOC-ridden world, shouldn't the Tutorial section contain :
. videos+associated material focussed on Pandas only,
. usefull tricks sheet (rename columns, ...)
. usefull online resources sheet (api page, free online docker-prepared images) ,
. small FAQ (concepts of Split / Apply / Combine, DPLYR/Pandas comparison notebook, ...)
. MOOCs using Pandas (then 1 link per university, sort by country/university ?)


Allow for throughput in database

Cosmos has had support for database level throughput for some time. Could you modify the workload to allow customers to optionally provision a database with throughput. This should also allow for autoscale or standard throughput.

This issue has become stale and is at risk of being closed. The community has 60 days to upvote the issue. If it receives 5 upvotes we will keep it open and take another look. If not, we will close it. To learn more about how we handle issues, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this issue has received less than 5 community upvotes and we closed it. Still a big Thank You to you for taking the time to create it! To learn more about how we handle issues, please see our documentation.
Happy Coding!


🚀 Enhancement: Sync cloud functions config with appwrite.json

🔖 Enhancement description
There is currently no way to sync functions created/modified in the console with the appwrite.json config file. Changes made to a project, collections and buckets can be synced with the init command  to update the appwrite.json.
🎤 Pitch
I propose a similar command (not necessarily init) be available to sync functions on the console with the appwrite.json using the cli.
👀 Have you spent some time to check if this issue has been raised before?

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

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

I second this. Additionally, appwrite init function  prompts me to create a new function whereas appwrite init collection and appwrite init database both sync to the appwrite.json file! This is not intuitive at all if this is the intended behavior for function option. Especially considering the --help and documentation each mention no difference between these!

Closing issue as it's fixed with the release of Appwrite 1.6.0 and cli 6.x.x which introduces the push and pull commands.


[zh] sync /services-networking/service.md

Sync with en. See preview.
content/zh-cn/docs/concepts/services-networking/service.md

nice job
/lgtm

/approve


slim.conv2d Error: Input has undefined axis dimension.

Here is my code:
import tensorflow as tf
slim = tf.contrib.slim
data_format='NCHW'

input = tf.placeholder(dtype=tf.float32, shape=[2, 4, None, None])
with slim.arg_scope([slim.batch_norm], data_format=data_format):
    net = slim.conv2d(input, 4, kernel_size=3, stride=1, padding='SAME', rate=2,
                      data_format=data_format, normalizer_fn=slim.batch_norm)

Here is the logs:
Traceback (most recent call last):
  File "/home/zzy/workspace/tf-models/mind_slim/examples/test.py", line 9, in <module>
    net = slim.conv2d(input, 4, kernel_size=3, stride=1, padding='SAME', rate=2, data_format=data_format, normalizer_fn=slim.batch_norm)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 927, in convolution
    outputs = normalizer_fn(outputs, **normalizer_params)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 528, in batch_norm
    outputs = layer.apply(inputs, training=is_training)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 320, in apply
    return self.__call__(inputs, **kwargs)
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 286, in __call__
    self.build(input_shapes[0])
  File "/home/zzy/anaconda2/envs/tf-gpu-py27-source/lib/python2.7/site-packages/tensorflow/python/layers/normalization.py", line 118, in build
    input_shape)
ValueError: ('Input has undefined `axis` dimension. Input shape: ', TensorShape([Dimension(2), Dimension(None), Dimension(None), Dimension(None)]))

When I change the rate to 1
Or I change the data_format to 'NHWC' and input to [2, None, None, 4]
It works without any error.
My tensorflow version: 1.1

Thanks for the report.
I haven't traced how, but it seems that things are fixed in the release candidate for the next release (version 1.2.0-rc1). Could you give that a spin?

@asimshankar
I've tried on version 1.2.0-rc1, and the error still remains.

@asimshankar @aselle Has anyone looked into this issue?

@sguada : Could you take a look?

It has been 14 days with no activity and this issue has an assignee.Please update the label and/or status accordingly.

Not sure why that happens, can you try the following to verify the shape information is propagated.
import tensorflow as tf
slim = tf.contrib.slim
data_format='NCHW'

input = tf.placeholder(dtype=tf.float32, shape=[2, 4, None, None])
net = slim.conv2d(input, 4, kernel_size=3, stride=1, padding='SAME', rate=2, data_format=data_format)
print(net.shape)

If the shape is not well defined the problem then try:
input = tf.placeholder(dtype=tf.float32, shape=[2, 4, None, None])
net = tf.layers.convolution2d(input, 4, kernel_size=3, stride=1, padding='SAME', rate=2, data_format='channels_first')
print(net.shape)

Nagging Assignee: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.


feat(core/extensions): add the ability to update a license

Closes #4080

Image available via portainerci/portainer:pr4081.


Timezone support

When the server time does not match the event location timezone, things get confusing.
Add an environment variable to offset the UTC timezone. Then update the countdown property and other areas where the time should be presented relative to server time.

There is a TIME_ZONE parameter. Set this if your event is not in the default UTC zone, see pytz docs for more info.


Incorrect type inference from type union with conditional type

🔎 Search Terms
inference union with conditional type
🕗 Version & Regression Information

This is incorrect type evaluation
This is the behavior in every version I tried, and I reviewed the FAQ for entries about "conditional type"/ "union" / "inference"
This bug is repeated on all versions that I looked at

⏯ Playground Link
https://www.typescriptlang.org/play?ts=5.5.0-dev.20240331#code/C4TwDgpgBACgTgSwLYOAgbhA8nA4hYYCOAHgBUA+KAXgCgooAfKACjKggA8iA7AEwDOUAcEQ8A5kyg8ArkgBGxKfID2KgDYQAhjykz+EAGYIeEPlAD8UdgC5pETHACU9KSxbqtIgGpb1MiDsyJxoqYNpaAHpI4QB3LTAoYAALCAFoYFiVKDAtOGAhFUMk1KTwaH0EFR5aUEgofEJiHHhkVAwIcio6BmZ3Tx8-AKCQ6jCXXtZ2Ll5BYVETSWZZBSVmVQ1tXWZ9PiMTM0trKDtTRxcI6KgAYlu7+4eHqABhL2hqiAiAb1dDfQBjNDVKCGLSAlRwEBdFjoIaBWCIFBoTA4RpEUiUJx2VpIjqogjorpQH4MBhwAgyOC6WH+CAAblcAF8IgwrmRylAAOQiMTiTlQBBCHgqYBQLwCBDiHhaeSaJLZOrQTksUZUHmLTkAOgKLAATABmXW6iYgsHACEgdyqqAAIhtJqu8hkopSxGgAmSKhk6nMimk2WIcAhAEJaMzaCSQQCgbpQeDIdCacMGgTmnAce1MF0sSmmnAWojM51KMTXGSKVSoEn6UyWVArjpzK6OHAg3AoHxBQlIHkBKGGHHzZCraFbfawxEojFHjOZy83kkshFFVAAKLcOBmnCSkwkGDdWAcbgQfhCDPI7B4VOkEyGJTb8QmKhWB8mE72RwMlev3TUNcbrdEEfHgSBVUd1QkCgpygAB1aAuEgQEoAAAwg8RkIFXQfwAGigJ1RVQhYJDcMCxnmXknAw-4VCQNI8LBABrYMgA
💻 Code
type PrimitiveOrGetter<T> =
  | (T extends string | number | boolean | undefined ? T : never)
  | ((lastValue: T) => T)

// swap these two parts of the type union
type GetterOrPrimitive<T> =
  | ((lastValue: T) => T)
  | (T extends string | number | boolean | undefined ? T : never)

// #################### Case one

{
  function factory<T>(value: PrimitiveOrGetter<T>): PrimitiveOrGetter<T> {
    return value;
  }

  // Type 'string' is not assignable to type '() => string'.ts(2322)
  factory(() => "")
  // but there should be no error!
}

{
  function factory<T>(value: GetterOrPrimitive<T>): GetterOrPrimitive<T> {
    return value;
  }

  // and the error disappears!
  factory(() => "")
}

// #################### Case two

type ExtractOrigin
 = P extends PrimitiveOrGetter<infer Origin> ? Origin : never;
type Origin = ExtractOrigin<() => string>
// We expect `string` in Origin, but `string | (() => string)` comes back!

🙁 Actual behavior
Typescript shows that there is an error in the example.
The type of Origin is string | (() => string).
Union of types A | B is not equal to the union of types B | A.
🙂 Expected behavior
Typescript should not find errors in the example.
The type of Origin must be string.
Union of types A | B must be equal to the union of types B | A.

Both of those behave the same way:
type PrimitiveOrGetter<T> =
  | (T extends string | number | boolean | undefined ? T : never)
  | ((lastValue: T) => T);

type GetterOrPrimitive<T> =
  | ((lastValue: T) => T)
  | (T extends string | number | boolean | undefined ? T : never);

type ExtractOrigin
 = P extends PrimitiveOrGetter<infer Origin>
  ? Origin
  : never;
type Origin = ExtractOrigin<() => string>;

type ExtractOrigin2
 = P extends GetterOrPrimitive<infer Origin>
  ? Origin
  : never;
type Origin2 = ExtractOrigin2<() => string>;

In fact, your both functions infer the same way too. When you have sufficiently incompatible inference candidates the first one gets picked as the inferred type. So it just happens that when you reorder your union the first candidate is different. This leads to this observable effect. However, it's not that one of those infers differently - like one can be matched better. There is just nothing that would discriminate your union here. Both of those inferences are totally valid in this situation (string and () => string).

I would expect that you could put the type into a generic type and then return it somewhere else via inference.
(A = Array<string> -> T = Array<infer T>)
For example:
// I expect that you can put a type in a generic
// B = F

// and then get it back somewhere else
// A1 = A of B
// expect: A1 equal to A

// B1 = F<A1>
// expect: B1 equal to B

// A2 = A of B1
// expect: A2 equal to A1 or A

type F =
  | (A extends string | number | boolean | undefined ? A : never)
  | ((lastValue: A) => A)
type Infer = B extends F<infer A> ? A : never;

{
  // check:
  type A = string
  type B = F

  type A1 = Infer // yep
  type B1 = F<A1> // yep

  type A2 = Infer<B1> // yep
  // it works!
}

{
  type A = string
  type B = F
  // instead of type "B" we take a value of type "B"
  const value = () => ""

  type A1 = Infer<typeof value> // nope
  type B1 = F<A1> // nope

  type A2 = Infer<B1> // nope
  // does not work(
}

If I just misunderstood how infering is supposed to work, let's close the issue.

In general you can only reliably F<infer A> when A is witnessed somewhere in the type computed by F, as inference is structural.  It's basically the same problem as:

8 * 0 = 0
x * 0 = 0, now solve for x

8 * 2 = 16
x * 2 = 16
therefore x is 8, but we observe 8 or 16

this thesis, despite its rhetorical beauty, is not absolutely true. Typescript is not Euclidean algebra, but something like set theory.
If we think of () => string as F, then A can only be a string, but it can never be () => string.

this thesis, despite its rhetorical beauty, is not absolutely true. Typescript is not Euclidean algebra, but something like set theory.

In this specific case (infer A), it is - inference is done structurally by examining the type given and "working backwards" to figure out A.  It's very much a "solve for x" style operation.

If we think of () => string as F, then A can only be a string, but it can never be () => string.

Yeah, I get what you're saying there and your reasoning is sound - but AFAIK conditional types are basically opaque to inference, TS doesn't have the smarts to do that kind of backwards reasoning on them--and they're Turing complete, so you run into issues like the halting problem, etc.  It's a design limitation, but one that's unlikely to go away any time soon.


OOMs in staging triggered by production-like pageserver workload benchmark

Problem
See channel #temp-2024-02-26-investigate-ps-ooms
Analysis

PR #6661 made it so we no longer flush in-memory layers after 10min
That causes us to pile up the InMemoryLayers for all tenants until next restart
While the values of an InMemoryLayer are page-cached, the index is not.

As John points out in https://github.com/neondatabase/neon/issues/6916 , these indexes can actually be large. E.g., 10k tenants with 1 InMemoryLayer each of size 100M can consume 10_000 * 1e6 * 17 / (1024**3) = 158.32 GiB of memory, just for the keys.

That's the root-cause for the OOM kills.
After we restart,, we have to re-ingest all the WAL that was piling up in all those InMemoryLayers before the OOM kill.
That's actually a lot of WAL, at least in the production-like pageserver workload benchmark's case.
This reingestion is what's causing the wait_lsn timeouts

See the correlation between restarts and wait_lsn timeout errors

Fixing

Revert #6661 & ship this week's release without it

https://github.com/neondatabase/neon/pull/6937

Cherry-pick revert into main

https://github.com/neondatabase/neon/pull/6938

Proper fix

https://github.com/neondatabase/neon/pull/6940

Follow-Ups
# Follow-Ups
- [ ] https://github.com/neondatabase/neon/issues/7085
- [ ] global counter metric for received wal bytes, plus warn alert on ab-normal rates/volumes; would have helped highlight that each restart, we were re-ingesting 300GiB of WAL; we only have `pageserver_wal_ingest_records_received`
- [ ] https://github.com/neondatabase/neon/issues/6945
- [ ] gauge for dirty data + alert; this is a good high-level metric that would have made this issue more clear, and it applies to other issues such as clogged upload queue as well
- [ ] eventually: back-pressure on ingest, so that pageserver itself ensures that the gauge never goes above some limit; already have bullet points in #5899 on this issue (i.e. https://github.com/neondatabase/neon/issues/6916)

Vlad has in-progress work, will PR this week.

Intra-batch rolling has been reinstated, so Peter's benchmark no longer directly hits this issue.

We've seen the same issue in a different scenario, where the cause of lots of data parallelism was a large number of parallel attaches of tenants with dirty data on the safekeeper, rather than a benchmark.

https://github.com/neondatabase/neon/pull/7218 is merged, but disabled by default until we test on staging.
https://github.com/neondatabase/aws/pull/1189 enables the new setting in staging us-east-1.

Switching on in next region here https://github.com/neondatabase/aws/pull/1223

Prod in a day or two https://github.com/neondatabase/aws/pull/1231

Interesting results.  The new mechanism is kicking in (can see "Early-rolling open layer" logs) when the ephemeral data size exceeds the threshold, but the layer rolling isn't preventing the ephemeral byte count from shooting past the limit.
It's possible that this is due to delay in disposing of the layers during flush, but the S3 upload semaphore stats aren't showing a long wait, so this seems unlikely to be totally saturated.  It might be informative to watch this again next week when pageserver_wal_ingest_bytes_received is landed in preprod, to get a sense of whether the raw WAL ingest rate could account for  the early-rolling behavior just not keeping up (since it's only enforced every 20 seconds).
Maybe we need https://github.com/neondatabase/neon/issues/7317 to limit ingest while waiting for flushes, but it seems unlikely in this case; there's no evidence that we're bottlenecked on uploads.

Unfortunately, the time when we introduced pageserver_wal_ingest_bytes_received is around the same time that the nightly tests were tuned down to be a bit less aggressive, so there's no new information to work with.

(9328 tenants is still the default -- maybe staging is still agressive enough to trigger the issue?  But something qualitative changed about how the workload runs)

Joonas figured out the likely reason that this wasn't keeping the dirty bytes down in some tests: those tests were overloading compaction, and the call to maybe_freeze_ephemeral_layer is happening inside Timeline::compact -- a long enough backlog of compaction work stalls the dirty-bytes-driven layer rolling too.

Looking at solutions to this...

We could have a new background task for kicking layer freezing.  I'd rather not have a whole extra task per timeline though.
We could call tick() on some lsn-driven schedule, e.g. should_roll could check if we have ticked() since the last N bytes of WAL.  However, that would require an extra atomic to store the "last tick" LSN.
We could make the compaction semaphore waiter run a background task that keeps calling maybe_freeze_ephemeral_layer every compaction interval in the background while it waits for the semaphore.

Option 1 approach: https://github.com/neondatabase/neon/pull/7594
That plus https://github.com/neondatabase/aws/pull/1231 should close this issue.


Is it possible to automatically detect the http response codes?

One thing I can think of is to find the start of a function using GetFuncInfo(), and then parse the ast and count '{' and '}' to find the end of the function. Then look for all instances of http.Status* and use that to determine the status codes.
This isn't very reliable but it can work in many of the common cases.


Added ability to inject hash and struct types.

There are a lot of hash-like and struct-like classes around and I thought it would be nice to support any of them that adhere to the same interface as Hash and Struct.

Merged. Thanks @offthecuff !


Add vfb2ufo v2015-01-23

Ping?

Closing as dead. Please feel free to file a fresh PR if you're still interested here. Thank you for the submission to Homebrew! ❤

Thanks Dom!

I'm happy to re-open if you're around and still working on this? That's just my standard inactive PR message 😄.

Adam Twardoch needs to respond, not me.

Ah, okay. Apologies for the confusion there.

We are not currently planning to provide a “stable URL”, but this may change in future.

Come on!
mv dateless-name.zip 2016-04-21-name.zip; ln -s 2016-04-21-name.zip
dateless-name.zip;
no? :)

It’s more about the http://www.fontlab.us part. It may very well change to something like http://aws.amazon.com or http://www.githubcontent.com or something else, with a redirect from http://download.fontlab.com or something else. But that’s not up yet, and won’t come very soon.

There might be a possibility, however, that something like http://download.fontlab.com/vfb2ufo/appcast.xml might become stable, with an appcast.xml being compatible to Fervor and by extension Sparkle. Inside, there would be download URLs that would not be necessarily stable. Still, it’s not emminent.

Yeah yeah yeah..... Don't let the enemy of the good be the best, now :D

You don't even need Sparkle and all that great stuff for homebrew. Not even
the sym link. All we need is you to upload a duplicate file with a dated
filename. Your server can surely survive with 1 more little file stored on
disk? :)

No, it’s just to keep it in sync with http://download.fontlab.com/transtype-4/appcast.xml

That’s not the point. The point is that this server may be gone in 3 months in this context.

I’m not gonna make http://www.fontlab.us/whatever a “permanent download location” where I may want to move away from http://www.fontlab.us completely in a few months.

Homebrew community will update it when you move. Its 3 months of
inconvenience for the subset of the homebrew community who are your
potential FL6 customers.... ;)

So if the Homebrew community will update it, it can also update the SHA256 when I replace the current file (at the current location) with a newer build, no? What’s the difference?

Obviously I agree with you, thus my PR; but Homebrew has its policies.
Well, can you give me permission to redistribute it? :)


feat: implements getUsdRate method

This implements getUsdRate() method in CowSwapper for Swapper interface.
Related issue is : https://github.com/shapeshift/lib/issues/722
To be able to test this :

Verify the unit test linked to this change are green
Use swapcli with any parameter after having added the following lines into swappercli.ts

import { CowSwapper } from './swappers/cow/CowSwapper'

const cowSwapperDeps = {
    assetService,
    apiUrl: 'https://api.cow.fi/mainnet/api/'
  }

const cowSwapper = new CowSwapper(cowSwapperDeps)
const testFox = await cowSwapper.getUsdRate({
  symbol: 'FOX',
  assetId: 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d'
})
const testWbtc = await cowSwapper.getUsdRate({
  symbol: 'WBTC',
  assetId: 'eip155:1/erc20:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'
})

Looks great so far! approved (noticed some conficts, thats probably my fault as I removed getMinMax from the api but should be an easy fix)

@elmutt no issue for the conflicts, I rebased main into this branch


Build error on Ghost 4.x

I'm getting this as I upgraded to Ghost v4. Any ideas on where to start looking?
This problem seemingly stems from markdown parsing, so it couldn't build those new routes with code, pre and figure html tags.
00:33:33.034 | Error occurred prerendering page "/design". Read more: https://nextjs.org/docs/messages/prerender-error
-- | --
00:33:33.035 | TypeError: (0 , hast_util_to_string__WEBPACK_IMPORTED_MODULE_4__.default) is not a function
00:33:33.035 | at /vercel/path0/.next/server/chunks/393.js:232:144
00:33:33.035 | at overload (/vercel/path0/node_modules/unist-util-visit/index.js:27:12)
00:33:33.035 | at node (element<code>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:56:27)
00:33:33.035 | at node (element<pre>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:33.035 | at node (element<figure>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:33.035 | at node (root) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:33.035 | at visitParents (/vercel/path0/node_modules/unist-util-visit-parents/index.js:29:26)
00:33:33.035 | at visit (/vercel/path0/node_modules/unist-util-visit/index.js:22:3)
00:33:33.036 | at normalizePost (/vercel/path0/.next/server/chunks/393.js:154:25)
00:33:34.204 |
00:33:34.204 | Error occurred prerendering page "/welcome". Read more: https://nextjs.org/docs/messages/prerender-error
00:33:34.204 | TypeError: (0 , hast_util_to_string__WEBPACK_IMPORTED_MODULE_4__.default) is not a function
00:33:34.204 | at /vercel/path0/.next/server/chunks/393.js:232:144
00:33:34.204 | at overload (/vercel/path0/node_modules/unist-util-visit/index.js:27:12)
00:33:34.204 | at node (element<code>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:56:27)
00:33:34.205 | at node (element<pre>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:34.205 | at node (element<figure>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:34.205 | at node (root) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:34.205 | at visitParents (/vercel/path0/node_modules/unist-util-visit-parents/index.js:29:26)
00:33:34.205 | at visit (/vercel/path0/node_modules/unist-util-visit/index.js:22:3)
00:33:34.206 | at syntaxHighlightWithPrismJS (/vercel/path0/.next/server/chunks/393.js:221:60)
00:33:34.206 | at normalizePost (/vercel/path0/.next/server/chunks/393.js:154:25)
00:33:34.206 | info - Generating static pages (9/19)
00:33:35.464 |
00:33:35.465 | Error occurred prerendering page "/write". Read more: https://nextjs.org/docs/messages/prerender-error
00:33:35.465 | TypeError: (0 , hast_util_to_string__WEBPACK_IMPORTED_MODULE_4__.default) is not a function
00:33:35.465 | at /vercel/path0/.next/server/chunks/393.js:232:144
00:33:35.465 | at overload (/vercel/path0/node_modules/unist-util-visit/index.js:27:12)
00:33:35.465 | at node (element<code>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:56:27)
00:33:35.465 | at node (element<pre>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:35.465 | at node (element<figure>) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:35.465 | at node (root) (/vercel/path0/node_modules/unist-util-visit-parents/index.js:67:75)
00:33:35.465 | at visitParents (/vercel/path0/node_modules/unist-util-visit-parents/index.js:29:26)
00:33:35.466 | at visit (/vercel/path0/node_modules/unist-util-visit/index.js:22:3)
00:33:35.466 | at syntaxHighlightWithPrismJS (/vercel/path0/.next/server/chunks/393.js:221:60)
00:33:35.466 | at normalizePost (/vercel/path0/.next/server/chunks/393.js:154:25)
00:33:37.685 | info - Generating static pages (14/19)
00:33:39.278 | info - Generating static pages (19/19)
00:33:39.279 |
00:33:39.280 | > Build error occurred
00:33:39.287 | Error: Export encountered errors on following paths:
00:33:39.288 | /design
00:33:39.288 | /welcome
00:33:39.288 | /write
00:33:39.288 | at /vercel/path0/node_modules/next/dist/export/index.js:493:19
00:33:39.288 | at runMicrotasks (<anonymous>)
00:33:39.289 | at processTicksAndRejections (internal/process/task_queues.js:95:5)
00:33:39.289 | at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:74:20)
00:33:39.289 | at async /vercel/path0/node_modules/next/dist/build/index.js:956:17
00:33:39.289 | at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:74:20)
00:33:39.289 | at async /vercel/path0/node_modules/next/dist/build/index.js:830:13
00:33:39.290 | at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:74:20)
00:33:39.290 | at async Object.build [as default] (/vercel/path0/node_modules/next/dist/build/index.js:80:25)
00:33:39.327 | error Command failed with exit code 1.
00:33:39.327 | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
00:33:39.345 | Error: Command "yarn run build" exited with 1

Can you please publish your content API keys (you can make temporary one that you delete later)? Not sure if this is a Ghost 4.x issue or an issue related to the content in your /design page.

@styxlab Thanks for your response. This is a brand new installation so the content is default by Ghost v4,
I've created a test content API for you to take a look
https://cms.quantszone.com
7255b7766f9650fc33d089cfa6

Running this build locally shows a more detailed error report:
Server Error
TypeError: (0 , hast_util_to_string__WEBPACK_IMPORTED_MODULE_4__.default) is not a function
lib\ghost-normalize.ts (137:48) @ eval
  135 | try {
  136 |   className = (className || []).concat('language-' + lang)
> 137 |   result = refractor.highlight(nodeToString(node), lang)
      |                                            ^
  138 | } catch (err) {
  139 |   if (prism.ignoreMissing && /Unknown language/.test((err as Error).message)) {
  140 |     return

@huydhoang: Thanks for providing the info. I can reproduce with your keys. Will dig into it.
Unrelated to the reported issue, s3.amazonaws.com needs to be added to the image domains for image optimizations to work.

@all-contributors please add @huydhoang for issue

@all-contributors please add @huydhoang for bug

Should be fixed. Can you please check?

Confirmed, worked like a charm. Never had a better experience reporting a bug!


thetvdb lookups appear to be failing

since thetvdb revamped their page, it's no longer doing successful lookups or populating episode info.

Processing file b'C:\down\preconvert\Mobile Suit Victory Gundam (1993) Season 1 S01 + Extras (1080p BluRay x265 HEVC 10bit AC3 2.0 Japanese SAMPA)\Mobile Suit Victory Gundam (1993) - S01E01 - The White Mobile Suit (1080p BluRay x265 SAMPA).mkv'
'NoneType' object has no attribute 'split'

I'm getting the same issue. This TVDB change has broken a few of my automated tools. Any idea how to fix it here?

I'm imagining its just an API restructuring.  If I knew anything about Python programing I would imagine it's probably trivial : https://www.thetvdb.com/api-information

Just pushed an update that should be compatible with the latest API
I've been dragging my feet on this one because the V3 API is broken with regards to poster ratings so I can't get the best poster, only the first poster so as of now that feature is broken
Feel free to voice your concerns here:
https://forums.thetvdb.com/viewtopic.php?f=17&t=60236&p=163715#p163715

seems to still be having issues:
Processing file b'C:\down\preconvert\Black.Lightning.S03E06.WEB.h264-TRUMP[rarbg]\black.lightning.s03e06.web.h264-trump.mkv'
Matched TV episode as b'Black Lightning' (TVDB ID:332525) S03E06
Failed to connect to TVDB, trying again in 20 seconds.
Traceback (most recent call last):
File "C:\apps\sickbeard_mp4_automator-master\tvdb_mp4.py", line 42, in init
self.showdata = self.tvdb_show[self.show]
File "C:\apps\sickbeard_mp4_automator-master\tvdb_api\tvdb_api.py", line 1186, in getitem
self._getShowData(key, self.config['language'])
File "C:\apps\sickbeard_mp4_automator-master\tvdb_api\tvdb_api.py", line 1113, in _getShowData
self._parseBanners(sid)
File "C:\apps\sickbeard_mp4_automator-master\tvdb_api\tvdb_api.py", line 1007, in _parseBanners
banners_info = self._getetsrc(self.config['url_seriesBannerInfo'] % (sid, cur_banner))
File "C:\apps\sickbeard_mp4_automator-master\tvdb_api\tvdb_api.py", line 910, in _getetsrc
src = self._loadUrl(url, language=language)
File "C:\apps\sickbeard_mp4_automator-master\tvdb_api\tvdb_api.py", line 874, in _loadUrl
raise tvdb_error("%s" % error)
tvdb_api.tvdb_api.tvdb_error: No results for your query

Honestly the new TVDB API is buggy and ruining the posters is frustrating enough that I think migrating to just TMDB for movies and TV shows is a better option
I just pushed a new branch that attempts to do that that uses tmdbsimple if you wish to try it out
pip install tmdbsimple is a new requirement but then it should work

https://github.com/mdhiggins/sickbeard_mp4_automator/tree/notvdb

will do!  Also, as a small request, can you build in a function that only fetches and adds the poster?  I've found that for some shows like Titans, it never gets Titans (2018) and therefore won't add artwork.  If I could manually run a version where all it did was add posters that would be fabulous!

hrmm ...perhaps I'm not doing something right?
Installing tmdbsimple:
C:\Windows\system32>pip install tmdbsimple
Collecting tmdbsimple
  Downloading https://files.pythonhosted.org/packages/52/d7/e84d96acfff3154bd84cc139472fb3d1293fabf20cd150833b3229c1e40d/tmdbsimple-2.2.0-py2.py3-none-any.whl
Requirement already satisfied: requests in c:\apps\python37\lib\site-packages (from tmdbsimple) (2.22.0)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\apps\python37\lib\site-packages (from requests->tmdbsimple) (1.25.3)
Requirement already satisfied: certifi>=2017.4.17 in c:\apps\python37\lib\site-packages (from requests->tmdbsimple) (2019.6.16)
Requirement already satisfied: idna<2.9,>=2.5 in c:\apps\python37\lib\site-packages (from requests->tmdbsimple) (2.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\apps\python37\lib\site-packages (from requests->tmdbsimple) (3.0.4)
Installing collected packages: tmdbsimple
Successfully installed tmdbsimple-2.2.0
WARNING: You are using pip version 19.1.1, however version 19.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

DOS run command I'm using:
"C:\apps\sickbeard_mp4_automator-notvdb\manual.py" -i "C:\down\prec2" -a
Output from command:
C:\down\preconvert>"C:\apps\sickbeard_mp4_automator-notvdb\manual.py" -i "C:\down\prec2" -a
Manual processor started.
C:\apps\Python37\python.exe
Audio bitrate was invalid, defaulting to 256 per channel.
64bit Python.
File C:\down\prec2 is not in the correct format

index.log
2019-11-19 19:43:45 - MANUAL - INFO - Manual processor started.
2019-11-19 19:43:45 - MANUAL - INFO - C:\apps\Python37\python.exe
2019-11-19 19:43:45 - MANUAL - WARNING - Audio bitrate was invalid, defaulting to 256 per channel.

doesn't appear to be processing a "file" but rather the "directory" which itself isn't a media file?  Just guessing.

Did that command work previously? I didn't make any changes to the directory walking or file validation logic

yes it did.  I created a new directory to convert from, and altered my batch file accordingly (mentioned above), and copied my autoprocess.ini in (the only real change made to it is in the MP4 section to 'output_directory'

i should mention i'm not married to the command.  I welcome your suggestions

Any chance its a permission issue? I was able to make a folder called prec2 and it processed fine
Maybe move it somewhere you for sure have permissions (IE your home directory or desktop and not the root of the C drive)

BAH!! I had a typo in my batch!  It's working like a champ so far, very much appreciated!  here's a copy of the batch I use if it's of any use to you (bear in mind this was written quite a long time ago, I'd probably redo it if I were to write it again...
Also if you can think of a run command to just apply posters to a media file like I mentioned before, that would be amazing :-P
cd preconvert
::Find "sample" & "etrg"
powershell -Command "& {gci -Path "C:\down\preconvert" -Rec | ?{($_.Name -Match 'sample') -OR ($_.Extension -Match 'exe') -OR ($_.Extension -Match 'lnk')} | ?{$_.psIsContainer -eq $false} | Sort -Descending Name | Select-Object | Remove-Item}"

::Do Conversions
rem "C:\down\app\sickbeard_mp4_automator-master\manual.py" -i "c:\down\preconvert" -a
"C:\apps\sickbeard_mp4_automator-notvdb\manual.py" -i "C:\down\preconvert" -a

::Fix Filenames
"C:\program files\filebot\filebot.exe" -script fn:amc --output "C:\down\ConRenamed" --action copy -non-strict "c:\down\converted" --log-file amc.log --def excludeList=amc.txt
cd ..

The general tagging command should always apply posters, not sure what you want specifically

Was wanting a command that didn't convert, only edits/cleans/corrects meta info and applies poster art to the media file (if mp4 of course).

As long as the convert-mp4 option is disabled the script will do exactly that

nice! thank you so much for the help! keep up the great work, it's very much appreciated :)

new error appearing from the notvdb vrsion you made, here's the entry from index.log:
2019-11-23 11:28:30 - MANUAL - INFO - Starting conversion.
2019-11-23 11:28:31 - MANUAL - INFO - C:\down\converted\Chrisley.Knows.Best.S07E26.WEB.h264-TRUMP[eztv].m4v created.
2019-11-23 11:28:31 - MANUAL - INFO - Tagging file: C:\down\converted\Chrisley.Knows.Best.S07E26.WEB.h264-TRUMP[eztv].m4v.
2019-11-23 11:28:31 - MANUAL - ERROR - Exception while retrieving poster can only concatenate str (not "NoneType") to str.
2019-11-23 11:28:31 - MANUAL - INFO - Trying to write tags.
2019-11-23 11:28:31 - MANUAL - INFO - Tags written successfully.
2019-11-23 11:28:31 - MANUAL - INFO - Relocating MOOV atom to start of file.
2019-11-23 11:29:09 - MANUAL - ERROR - Failed to connect to TVDB, trying again in 20 seconds.
Traceback (most recent call last):
  File "C:\apps\sickbeard_mp4_automator-notvdb\tvdb_mp4.py", line 59, in __init__
    self.episodedata = episodequery.info()
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\tv.py", line 477, in info
    response = self._GET(path, kwargs)
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\base.py", line 85, in _GET
    return self._request('GET', path, params=params)
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\base.py", line 80, in _request
    response.raise_for_status()
  File "C:\apps\Python37\lib\site-packages\requests\models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.themoviedb.org/3/tv/4086/season/30/episode/19?api_key=45e408d2851e968e6e4d0353ce621c66
2019-11-23 11:29:36 - MANUAL - ERROR - Failed to connect to TVDB, trying again in 20 seconds.
Traceback (most recent call last):
  File "C:\apps\sickbeard_mp4_automator-notvdb\tvdb_mp4.py", line 59, in __init__
    self.episodedata = episodequery.info()
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\tv.py", line 477, in info
    response = self._GET(path, kwargs)
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\base.py", line 85, in _GET
    return self._request('GET', path, params=params)
  File "C:\apps\Python37\lib\site-packages\tmdbsimple\base.py", line 80, in _request
    response.raise_for_status()
  File "C:\apps\Python37\lib\site-packages\requests\models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.themoviedb.org/3/tv/4086/season/30/episode/19?api_key=45e408d2851e968e6e4d0353ce621c66

This is failing because there is no Season 30 Episode 19 of Diners, Drive-Ins, and Dives
It looks like the first episode works fine (Chrisley Knows Best)

https://www.themoviedb.org/tv/4086-diners-drive-ins-and-dives/season/30

I went ahead and added the missing episode entries to the TMDB database and started season 31
Looks like the TMDB was just a little behind compared to TVDB

cool, thank you


My fontello icons library is not working in my website

Hi,
I have just created a custom icons library for my website. The example is working well, however when I import it in my project I don´t see any icon.
My webserver is Nginx. I read the readme and I´m aware some tuning should be done. But before that, I have to say, I´m already using font-awesome perfectly. I see the font extensions are exactly the same in font-awesome and fontello, so I´m wondering If I really need to do that tuning or it is another problem.
This is the code I have inserted: 
And I see the screenshot attached.

Which File are created and which have uploades - how you import this?
and why the example working well?
---- pls. precise!
---stooni

Close - timed out


Postgres SSL issue

Thanks for the amazing app,
Getting an error when using it with digitalocean's postgres 12
setting DATABASE_URL: postgresql://asciinema:mypass@xxxx:xxx/asciinemadb?sslmode=require
FYI I quadruple check all the configs and still getting this error when running setup command with docker image asciinema/asciinema
11:51:36.974 [error] Postgrex.Protocol (#PID<0.207.0>) failed to connect: ** (Postgrex.Error) ERROR 08P01 (protocol_violation) SSL required
11:51:36.974 [error] Postgrex.Protocol (#PID<0.206.0>) failed to connect: ** (Postgrex.Error) ERROR 08P01 (protocol_violation) SSL required
11:51:38.222 [error] Postgrex.Protocol (#PID<0.206.0>) failed to connect: ** (Postgrex.Error) ERROR 08P01 (protocol_violation) SSL required
11:51:38.428 [error] Postgrex.Protocol (#PID<0.207.0>) failed to connect: ** (Postgrex.Error) ERROR 08P01 (protocol_violation) SSL required
11:51:39.503 [error] Could not create schema migrations table. This error usually happens due to the following:

  * The database does not exist
  * The "schema_migrations" table, which Ecto uses for managing
    migrations, was defined by another library
  * There is a deadlock while migrating (such as using concurrent
    indexes with a migration_lock)

To fix the first issue, run "mix ecto.create".

To address the second, you can run "mix ecto.drop" followed by
"mix ecto.create". Alternatively you may configure Ecto to use
another table for managing migrations:

    config :asciinema, Asciinema.Repo,
      migration_source: "some_other_table_for_schema_migrations"

The full error report is shown below.

** (DBConnection.ConnectionError) connection not available and request was dropped from queue after 2813ms. This means requests are coming in and your connection pool cannot serve them fast enough. You can address this by:

  1. By tracking down slow queries and making sure they are running fast enough
  2. Increasing the pool_size (albeit it increases resource consumption)
  3. Allow requests to wait longer by increasing :queue_target and :queue_interval

See DBConnection.start_link/2 for more information

    (ecto_sql 3.4.5) lib/ecto/adapters/sql.ex:593: Ecto.Adapters.SQL.raise_sql_call_error/1
    (elixir 1.10.4) lib/enum.ex:1396: Enum."-map/2-lists^map/1-0-"/2
    (ecto_sql 3.4.5) lib/ecto/adapters/sql.ex:686: Ecto.Adapters.SQL.execute_ddl/4
    (ecto_sql 3.4.5) lib/ecto/migrator.ex:641: Ecto.Migrator.verbose_schema_migration/3
    (ecto_sql 3.4.5) lib/ecto/migrator.ex:484: Ecto.Migrator.lock_for_migrations/4
    (ecto_sql 3.4.5) lib/ecto/migrator.ex:406: Ecto.Migrator.run/4
    (asciinema 0.0.1) lib/asciinema/release_tasks.ex:8: anonymous fn/1 in Asciinema.ReleaseTasks.setup/0
    (ecto_sql 3.4.5) lib/ecto/migrator.ex:142: Ecto.Migrator.with_repo/3

I guess this line could be preventing you from using SSL here: https://github.com/asciinema/asciinema-server/blob/2d86f311381540790cdd8a748df486c039921da7/config/prod.exs#L48
If you have ability to bind-mount a custom config file into the container then maybe this will help:
Create custom.exs file with the following contents:
import Config
config :asciinema, Asciinema.Repo,  ssl: true

Then mount this file into the container like this:
-v ./custom.exs:/opt/app/etc/custom.exs
I hope this helps!

Ill try this today later

@sickill i tried to add below in custom.exsand mount it to /opt/app/etc/custom.exs as you said but getting erro
import Config
config :asciinema, Asciinema.Repo, ssl: true, pool_size: 2

error

I assume you're using latest image tag, right? I have now pushed a tweak to develop branch which may help. You can grab this version by using asciinema/asciinema-server:develop as the image name.
It also looks like instead of using ?sslmode=require you should use ?ssl=true in the DATABASE_URL (Postgres connection lib docs show that https://hexdocs.pm/ecto_sql/Ecto.Adapters.Postgres.html#module-connection-options). If you update the URL then you don't need the /opt/app/etc/custom.exs file at all.
Let me know if it work with the develop image tag, I hope the tweak does it 🤞

ill try this today, thanks

so i tried using develop image with ?ssl=truewithout using cusom.exs
 09:34:18.409 [error] Postgrex.Protocol (#PID<0.234.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "asciinema", database "asciinema", SSL off
 09:34:18.409 [error] Postgrex.Protocol (#PID<0.233.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "asciinema", database "asciinema", SSL off
 09:34:19.607 [error] Postgrex.Protocol (#PID<0.234.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "asciinema", database "asciinema", SSL off
 09:34:19.854 [error] Postgrex.Protocol (#PID<0.233.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "asciinema", database "asciinema", SSL off
 09:34:21.143 [error] Postgrex.Protocol (#PID<0.234.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "asciinema", database "asciinema", SSL off
 09:34:21.187 [error] Could not create schema migrations table. This error usually happens due to the following:

   * The database does not exist
   * The "schema_migrations" table, which Ecto uses for managing
     migrations, was defined by another library
   * There is a deadlock while migrating (such as using concurrent
     indexes with a migration_lock)

 To fix the first issue, run "mix ecto.create".

 To address the second, you can run "mix ecto.drop" followed by
 "mix ecto.create". Alternatively you may configure Ecto to use
 another table for managing migrations:

     config :asciinema, Asciinema.Repo,
       migration_source: "some_other_table_for_schema_migrations"

 The full error report is shown below.

 ** (DBConnection.ConnectionError) connection not available and request was dropped from queue after 2893ms. This means requests are coming in and your connection pool cannot serve them fast enough. You can address this by:

   1. By tracking down slow queries and making sure they are running fast enough
   2. Increasing the pool_size (albeit it increases resource consumption)
   3. Allow requests to wait longer by increasing :queue_target and :queue_interval

 See DBConnection.start_link/2 for more information

     (ecto_sql 3.4.5) lib/ecto/adapters/sql.ex:593: Ecto.Adapters.SQL.raise_sql_call_error/1
     (elixir 1.11.4) lib/enum.ex:1411: Enum."-map/2-lists^map/1-0-"/2
     (ecto_sql 3.4.5) lib/ecto/adapters/sql.ex:686: Ecto.Adapters.SQL.execute_ddl/4
     (ecto_sql 3.4.5) lib/ecto/migrator.ex:641: Ecto.Migrator.verbose_schema_migration/3
     (ecto_sql 3.4.5) lib/ecto/migrator.ex:484: Ecto.Migrator.lock_for_migrations/4
     (ecto_sql 3.4.5) lib/ecto/migrator.ex:406: Ecto.Migrator.run/4
     (asciinema 0.0.1) lib/asciinema/release_tasks.ex:8: anonymous fn/1 in Asciinema.ReleaseTasks.setup/0
     (ecto_sql 3.4.5) lib/ecto/migrator.ex:142: Ecto.Migrator.with_repo/3

and with below config and with/without ?ssl=true in db URL getting no logs like non

@sickill i tried to add below in custom.exsand mount it to /opt/app/etc/custom.exs as you said but getting error
import Config
config :asciinema, Asciinema.Repo, ssl: true, pool_size: 2


Fix buildfarm by find_package GeographicLib

Buildfarm fails: https://build.ros2.org/job/Rbin_unv8_uNv8__lanelet2_projection__ubuntu_noble_arm64__binary/99/console
Because of this missing find-package.
Custom location syntax is the same as other succeeding packages.

@poggenhans seems like the ros2 build fails for Ubuntu Noble because of find_package GeographicLib. Do you know if the proposed change here interferes with mrt_cmake_modules?

Sorry for the late reaction and thanks for letting us know.
This problem is fixed in mrt_cmake_modules 1.0.10. If that is released for ros2, the lanelet2 build should automatically be fixed too. But I apparently don't have the permissions to create a new release in https://github.com/ros2-gbp/mrt_cmake_modules-release/. I need to request them first before I can create a new release.


Init with sort order Desc

Hi,
how can I init Filteriz with sort order desc ?

You can use the .filterizr('sort' [,attr] [,sortOrder]) syntax and use 'desc' as the sortOrder argument.
e.g. .filterizr('sort', 'mySecondAttr', 'desc');
See the documentation page's sort method section for more details.

Ok thx :)


Very interesting, but need some richer examples

I think you need a few more ready to go and enriched examples preferably notebooks that can be run directly in a working directory. As currently set up the rather skinny examples cannot be run directly in place that is if I clone a copy of the repo and start up a one of the notebook examples... Also they seem pretty incomplete vs the full capabilities?.. I'm referring specifically to the two trading ones.. (have not looked at the others..)
Nonetheless I appreciate your work,, when I can I may be able to create something along this line to contribute back,, but it will take some time since the current examples are so sparse!

Agreed, we'll add some rendered notebooks, as there is considerably more underneath the surface. Thanks for your comments. Spot on.

any update on this?
I need a working example for tradingsystem and marketprediction.

Noted


CLOWNFISH-39 Public Vector API

Fixes CLOWNFISH-39.
One of the changes to make Sort_quicksort work with size_t indices is extremely ugly. We could also use ssize_t but this requires a feature test to make it portable.

We have poor test coverage on SortUtils, sadly.  That's not your fault, but because that's the case extensive changes to our sort routines give me the willies.
The sort routines currently use int32_t and uint32_t for a lot of indexes. Instead of replacing those with size_t or ssize_t, couldn't we use int64_t and uint64_t instead?  That way we preserve the current signed behavior and merely need to think about range changes.  I think that's easier to reason about.
Also are we sure that a check for equality to (size_t)-1 will work under all optimizing compilers?  If we can avoid going down that rabbit hole by using int64_t and uint64_t, that would make me happy.

We have poor test coverage on SortUtils, sadly. That's not your fault, but because that's the case extensive changes to our sort routines give me the willies.

@rectang Yes, when changing the indexes in quicksort, I found some bugs only after testing with Lucy. It's especially important to test quicksort with lots of duplicate keys. The special handling of keys equal to the pivot is what makes our implementation so complicated and error-prone. But I understand why this is an important optimization.

The sort routines currently use int32_t and uint32_t for a lot of indexes. Instead of replacing those with size_t or ssize_t, couldn't we use int64_t and uint64_t instead? That way we preserve the current signed behavior and merely need to think about range changes. I think that's easier to reason about.

I'm not worried about the mergesort implementation. But I agree that the changes to quicksort make the implementation more fragile with regard to future changes. Ultimately, I'd like to add a Charmonizer probe for ssize_t. But for now, we can use int64_t on all platforms. The fact that we can't sort arrays larger than SIZE_MAX / 2 with a signed type shouldn't be an issue. This only affects byte arrays.

Also are we sure that a check for equality to (size_t)-1 will work under all optimizing compilers? If we can avoid going down that rabbit hole by using int64_t and uint64_t, that would make me happy.

Technically, this check is OK. Unsigned overflow and conversion from signed to unsigned are well-defined in C (as opposed to signed overflow and conversion from unsigned to signed).
From the C99 spec, section 6.2.5 (9):

A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.

Section <IP_ADDRESS> Signed and unsigned integers:

When a value with integer type is converted to another integer type other than _Bool, if the value can be represented by the new type, it is unchanged.

Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in the range of the new type.

Otherwise, the new type is signed and the value cannot be represented in it; either the result is implementation-defined or an implementation-defined signal is raised.

This guarantees that (size_t)0 - (size_t)1 == (size_t)-1 == SIZE_MAX and (size_t)-1 + (size_t)1 == (size_t)0.

It's a bit touchy to suggest this now that you've done a bunch of work on our quicksort routine, but it is now barely used and could be replaced entirely with the system qsort. The only differentiating feature of Sort_quicksort is that the comparison routine supports a context argument, but none of the remaining call sites take advantage of that feature.

It's a bit touchy to suggest this now that you've done a bunch of work on our quicksort routine, but it is now barely used and could be replaced entirely with the system qsort.

I don't have a strong opinion on that.

I don't have a strong opinion on that.

In that case, let's lighten our maintenance burden and remove Sort_quicksort.
There are three call sites in Lucy which will need to be changed.  I suggest using qsort in HeatMap.c and TestBitVector.c, and Sort_mergesort in Inversion.c.
I've reviewed the changes to Sort_mergesort and they look good to me.  If we remove Sort_quicksort, then we don't need to worry about its correctness any more. With that issue resolved, +1 to merge this pull request!

There are three call sites in Lucy which will need to be changed. I suggest using qsort in HeatMap.c and TestBitVector.c, and Sort_mergesort in Inversion.c.

There's one more site in IndexManager.c now that it doesn't use Vec_Sort. I converted all of them to qsort.
Maybe we should add Vec_Unstable_Sort that uses the system qsort? This might be much more efficient than Sort_mergesort.

Maybe we should add Vec_Unstable_Sort that uses the system
qsort? This might be much more efficient than Sort_mergesort.

I'm skeptical that the improvements would be that great because of the large per-comparison constant factors. If sort speed is a bottleneck you're going to want something which avoids the indirection of the function-pointer comparison routine and the Compare_To method calls. A custom quicksort with hard-coded integer comparison is going to blow away any general solution. People can always allocate their own cfish_Obj** C array and qsort that, and if that's not enough they can keep optimizing.
This reminds me of all the different Analyzer designs Lucy went through trying to find something that would be reasonably fast for a host Analyzer implementation. Nothing that was flexible was also fast.  In the end, it seemed better to prioritize flexibility and accept that optimizing for speed requires dropping into C.

If sort speed is a bottleneck you're going to want something which avoids the indirection of the function-pointer comparison routine and the Compare_To method calls. A custom quicksort with hard-coded integer comparison is going to blow away any general solution.

This is a good point, but Vec_Unstable_Sort would add only a few lines of code and at least it wouldn't need any extra memory.


SalesforceMagic Pull Request from Zendever

Michael,
Wanted to thank you for creating a great abstraction of the Salesforce SOAP API. Our SOAP reference was getting HUGE, so this cuts down a lot of the clutter and makes it easier to work with.
Here are the changes:

Removed ConsoleApplication1 project
Fixed issue with SalesforceReadonlyAttribute
Made SoapUri part of the configuration (although still expects a partner.wsdl location)
Unified the SalesforceResponse to avoid having to check whether the Result is null because an update only had a single object (abstraction)

I apologize, I must have email updates disabled as I am just barely seeing this. I'll review the changes and pull it in. Thank you!


Field depreciation support?

I was looking in the code and I couldn't find a way to mark field as deprecated. I also didn't find any issues regarding this.
I know that it is handled by deprecation_reason in graphql's GraphQLField but how I mark a field as deprecated in strawberry-graphql?

We don't support that at the moment, but should be easy to add :)
@strawberry.type
class Query:
    user: User = strawberry.field(deprecation_reason='This is a test')

something like this.
I'm finishing up a rewrite of strawberry, I'll see if I can add this in before finishing that, or after, anyway I don't see this taking too much time to be supported :)

That would be great!! Thank you very much :D


Write a Monarch JSON parser

It seems the JSON language's token was integrated into jsonMode.js and can not be found in monaco-languages like other languages does.
Is it possible?

This makes overwrite tokenize impossible (when integrated with vscode-textmate)

Yes, JSON is the only language we ship that has its tokenization defined via a "manual" tokenizer and not via a Monarch tokenizer. Since it is such an easy language, it might make sense, for consistency purposes, to also write a Monarch JSON parser.

Any workaround how to replace current built-in json tokenizer?

Yes, it looks like you can use monaco.languages.json.jsonDefaults.setModeConfiguration({ tokens: false });

It works, Thanks!


FAQ: How to manage multiple rapid antigen tests with certificates

Where to find the issue
https://www.coronawarn.app/en/faq/#rat_multiple_rat "Can I save/manage multiple rapid antigen tests?"
https://www.coronawarn.app/de/faq/#rat_multiple_rat "Kann ich mehrere Schnelltests speichern/verwalten?"
Describe the issue

This issue follows on from a question https://github.com/corona-warn-app/cwa-documentation/issues/685.

The answer to the question "Can I save/manage multiple rapid antigen tests?" does not consider the introduction of EU Digital COVID test certificates in CWA 2.4 and especially the ability to manage multiple certificates introduced in CWA 2.5.
Suggested change
Either the FAQ article
https://www.coronawarn.app/en/faq/#rat_multiple_rat "Can I save/manage multiple rapid antigen tests?"
https://www.coronawarn.app/de/faq/#rat_multiple_rat "Kann ich mehrere Schnelltests speichern/verwalten?"
needs to be expanded to cover how to handle rapid antigen tests for multiple people when the aim is to present EU Digital COVID test certificates for those people in CWA on one mobile device.
OR
A new FAQ should be written explaining the steps above and linked into the original article #rat_multiple_rat.
Additional comments
@Ein-Tim

If you want to pick this up, as you suggested in https://github.com/corona-warn-app/cwa-documentation/issues/685#issuecomment-899018933 then please go ahead!

I will take care of this!

My proposal:

Feedback is welcome!

@Ein-Tim
I'm not sure that the trick of registering multiple rapid antigen tests, one after another, is a safe way to use the app or a good recommendation, even if it would work like this.
Registering a test is about getting a positive result to share, but only for the user of the device, or to get a negative result which may be recorded as a certificate.
There is a danger that a positive test result from a family member who is not the user of the device may end up warning the wrong people.
It may be better to try to cover this case with an enhancement request first, so that there is a way to register additional RATs in the app at the same time without the danger that a positive result could be used incorrectly when sending out a warning.

@MikeMcC399 @Ein-Tim This is in fact an important discussion. The feature enhancement to be able to register and manage several tests at the same time had been declined by the stakeholders some time ago. This does not mean that the topic cannot be brought up again in near future.
However, in the meantime, the workaround described by @Ein-Tim can help e.g. families to store test certificates of their children. On the other side there are valid concerns as you mention @MikeMcC399. We will clarify internally how to proceed with this. Probably a solution is to explicitly mention in the FAQ, besides the workaround, in a clear statement that responsible use must be made, when registering tests which do not correspond to the main user of the device.
IN this context, another feature enhancement would be a tick box in the app "This is my test" when registering a test. If not checked, sharing a positive result would not be offered.

@MikeMcC399
Yes, true. Do you see any short-time solution for this issue then? What should we recommend to the user who needs DCCs now and their only way to get them is the Corona-Warn-App. I wouldn't want to leave the user alone here.
@dsarkar Thanks for jumping in here and giving some feedback. I'll wait for the clarification then 👍

IN this context, another feature enhancement would be a tick box in the app "This is my test" when registering a test. If not checked, sharing a positive result would not be offered.

Should I open a new wishlist issue to track this feature request?

The feature enhancement to be able to register and manage several tests at the same time had been declined by the stakeholders some time ago. This does not mean that the topic cannot be brought up again in near future.

Yes, I think this should definitely be reevaluated, see also https://github.com/corona-warn-app/cwa-wishlist/issues/109#issuecomment-896380231.

Should I open a new wishlist issue to track this feature request?

@Ein-Tim Yes, please. Thank you!

@dsarkar
It is good to hear that the issue will discussed internally. I probably don't have the right level of process know-how for the RAT test flow to contribute much more, especially about the possibility to deliver negative test results and test certificates outside of the CWA app for a group of people such as parents with younger children.
If a user can receive test certificates outside of the app, then can just be scanned in.
Maybe it does need a separate family testing function built in to CWA, which ensures that no false warnings are distributed in case of any positive results.
If the suggestion from @Ein-Tim is published then probably some additional instructions need to be added to help prevent positive results for the wrong person, i.e. not the smartphone user, to be shared.

There was no progress on this issue since some months & I step back from my proposal above, as the situation has changed again with the introduction of the recycle bin.

@Ein-Tim

It looks like this will be covered in CWA 2.20 https://github.com/corona-warn-app/cwa-app-android/releases/tag/v2.21.0-rc.1 under the name of "family tests".

https://github.com/corona-warn-app/cwa-wishlist/issues/623 is now showing a 2.21 label as well.

This issue will be covered by https://github.com/corona-warn-app/cwa-website/pull/2704 to be published with the release of CWA 2.21.

The following FAQs have been updated with the release of CWA 2.21 and therefore this issue is now resolved:

https://www.coronawarn.app/en/faq/results/#rat_multiple_rat "Can I save/manage multiple rapid antigen tests?"
https://www.coronawarn.app/de/faq/results/#rat_multiple_rat "Kann ich mehrere Schnelltests speichern/verwalten?"


Init model.list utils

ModelListUtils Class Implementation
Fix #1241
Overview
The ModelListUtils class provides a robust and thread-safe interface for managing a list of machine learning models. It handles operations such as adding, updating, deleting, and retrieving model information, with a focus on maintaining unique identifiers for each model.
Key Features

Thread-safe Operations: Uses mutex locking to ensure thread safety for all operations.
File-based Storage: Manages model information in a text file, allowing for persistence between program runs.
Unique Identifier Generation: Automatically generates unique, shortened aliases for models.
CRUD Operations: Supports Creating, Reading, Updating, and Deleting model entries.
Error Handling: Robust error checking and exception throwing for invalid operations.

Main Components
ModelEntry Struct
Represents a single model entry with fields:

model_id: Unique identifier for the model
author_repo_id: Author or repository identifier
branch_name: Branch name in the repository
path_to_model_yaml: Path to the model's YAML file
model_alias: Shortened alias for the model
status: Current status of the model (READY or RUNNING)

ModelListUtils Class Methods

LoadModelList()

Loads model entries from the file, creating the file if it doesn't exist.
Returns a vector of ModelEntry objects.

SaveModelList()

Saves the current list of model entries to the file.

GetModelInfo(identifier)

Retrieves model information based on model_id or model_alias.
Throws an exception if the model is not found.

AddModelEntry(new_entry, use_short_alias)

Adds a new model entry to the list.
Optionally generates a shortened alias for the model.
Ensures uniqueness of model_id and model_alias.

UpdateModelEntry(identifier, updated_entry)

Updates an existing model entry.
Identified by either model_id or model_alias.

DeleteModelEntry(identifier)

Deletes a model entry if it exists and is in READY state.

PrintModelInfo(entry)

Prints detailed information about a model entry.

GenerateShortenedAlias(model_id, entries)

Generates a unique, shortened alias for a model.
Uses a hierarchical approach to create aliases, prioritizing brevity while ensuring uniqueness.

Alias Generation Logic
The GenerateShortenedAlias function creates aliases in the following order:

Filename only (e.g., model_id_xxx)
Parent directory + filename (e.g., llama3.1-7b-gguf:model_id_xxx)
Grandparent directory + parent directory + filename (e.g., bartowski:llama3.1-7b-gguf/model_id_xxx)
Full path (e.g., huggingface.co:bartowski/llama3.1-7b-gguf/model_id_xxx)

It returns the shortest unique alias, appending a numeric suffix if necessary to ensure uniqueness.
Usage Example
ModelListUtils model_list;

// Add a new model from other source, enable shorten the model-id
ModelEntry new_model = {...};
if (model_list.AddModelEntry(new_model, true)) {
    std::cout << "Model added successfully" << std::endl;
}

// Add a new model from cortexso, disable shorten the model-id
ModelEntry new_model = {...};
if (model_list.AddModelEntry(new_model, false)) {
    std::cout << "Model added successfully" << std::endl;
}

// Retrieve model info
try {
    ModelEntry model = model_list.GetModelInfo("model_alias");
    model_list.PrintModelInfo(model);
} catch (const std::runtime_error& e) {
    std::cerr << "Error: " << e.what() << std::endl;
}

// Update a model
ModelEntry updated_model = {...};
if (model_list.UpdateModelEntry("model_id", updated_model)) {
    std::cout << "Model updated successfully" << std::endl;
}

// Delete a model
if (model_list.DeleteModelEntry("model_alias")) {
    std::cout << "Model deleted successfully" << std::endl;
}

This implementation provides a flexible and efficient way to manage machine learning models, with a focus on maintaining unique identifiers and thread-safe operations.

It would be nice if we have unit tests for ModelListUtils class


Storage advisor

https://eu-central-1.console.aws.amazon.com/lambda/home?region=eu-central-1#/functions/inventory-export?tab=image
Lambda example