core_foundation != glutin_core_foundation

Glutin fails to build on osx with weird cargo crash
thread '<main>' panicked at 'called `Option::unwrap()` on a `None` value', /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/src/libcore/option.rs:362
stack backtrace:
   1:        0x10084634d - sys::backtrace::write::h285c537ffe0ac504uFA
   2:        0x10084e67d - panicking::on_panic::ha47b1a2e51240934wuJ
   3:        0x10081f219 - rt::unwind::begin_unwind_inner::h406ea3a6d9701b4c2cJ
   4:        0x10081f69e - rt::unwind::begin_unwind_fmt::h3ed2547c0bc06642DbJ
   5:        0x10084df0d - rust_begin_unwind
   6:        0x10086e7c5 - panicking::panic_fmt::h33c91d01905204b7HZs
   7:        0x10086e697 - panicking::panic::hfa18a7b756ae2b96TXs
   8:        0x1005b29e4 - ops::cargo_rustc::context::Context<'a, 'b>::dep_targets::h331034d866eaf678fJj
   9:        0x1005b1015 - ops::cargo_rustc::context::Context<'a, 'b>::build_requirements::h79efa91a5964b31emyj
  10:        0x1005b104e - ops::cargo_rustc::context::Context<'a, 'b>::build_requirements::h79efa91a5964b31emyj
  11:        0x1005b104e - ops::cargo_rustc::context::Context<'a, 'b>::build_requirements::h79efa91a5964b31emyj
  12:        0x1005b104e - ops::cargo_rustc::context::Context<'a, 'b>::build_requirements::h79efa91a5964b31emyj
  13:        0x1005afd61 - ops::cargo_rustc::context::Context<'a, 'b>::prepare::hb4e303a407475fe3Cuj
  14:        0x10056b606 - ops::cargo_rustc::compile_targets::h9ebb5b9ff3dac5495sm
  15:        0x100564de7 - ops::cargo_compile::compile_pkg::hd80992372d69bc10moh
  16:        0x100560fb2 - ops::cargo_compile::compile::h6b88dcd9dad61919ujh
  17:        0x10060a66d - ops::cargo_test::run_tests::hc835bcba936da5c4VAn
  18:        0x1004debe2 - call_main_without_stdin::h7807383412076814769
  19:        0x1004a3346 - execute::h0201643256249e00vca
  20:        0x10049b4a8 - call_main_without_stdin::h17603844962363947862
  21:        0x100498c86 - main::h86f1470dea54a8b6jca
  22:        0x1008507c8 - rust_try_inner
  23:        0x1008507b5 - rust_try
  24:        0x10084f027 - rt::lang_start::hac6de8dbec591c70MoJ

After some digging i've found out that the problem is with glutin_core_graphics that requires core_foundation instead of glutin_core_foundation
[package]

name = "glutin_core_graphics"
version = "0.1.1"
authors = ["The Servo Project Developers"]
description = "The *real* core_graphics crate, under a temporary name."
license = "MIT"

[dependencies]
core_foundation = "*"

I've uploaded a new version of glutin_core_graphics, could you cargo update and try again?

Fixed, thanks!


exported image has incorrect center

i am using canvas.toDataURL(), the output shows the correct display for different zooms, however, if i pan the map, the output does not reflect the new center

for which version of leaflet?

Upon further testing, looks like it works best when zoom level is using whole/round numbers....


Force Serde JSON to not use preserve order feature

Hello,
It looks like a third-party dependency crate we are using enabled the "preserve_order" feature for serde_json and this is causing all packages in my workspace to use this feature as well. Do you know if there any options to get around this? Is there is a way to force a "Value" to use a BTreeMap or somehow disable this feature for just my crate? I've tried a lot of options with no success.
Thanks

I've run into the same issue; we have many workspace members that don't care about ordering, and a few that do. It would be useful to still expose a variant of the Value type that does not preserve ordering for (de)serialization in case the preserve_order feature is activated, or expose the opposite type when preserve_order is not active.
To keep this backwards compatible, I was imagining something like the following, using a new feature expose_other_value (throwaway name) to have the user specify that they want to expose both types of value:
// Move `impl Map<String, Value>` block into trait
trait JsonMap: Serialize + Deserialize + IntoIterator + ... {
  clear(...);
  get(...);
  contains_key(...);
  get_mut(...);
}

/// More general version of current `Value` that is agnostic over how it is sorted, using a generic `JsonMap` interface
enum GenValue<M: JsonMap> {
  ...
  Object(M)
  ...
}

// Instantiate `JsonMap` in one or two different ways, depending on active features
#[cfg(any(not(feature="preserve_order"), feature="expose_other_value"))]
struct JsonBtreeMap(BTreeMap<String, GenValue<JsonBtreeMap>>);
#[cfg(any(feature="preserve_order", feature="expose_other_value"))]
struct JsonIndexMap(IndexMap<String, GenValue<JsonIndexMap>>);

#[cfg(any(not(feature="preserve_order"), feature="expose_other_value"))]
impl JsonMap for JsonBtreeMap {
  ...
}

#[cfg(any(feature="preserve_order", feature="expose_other_value")]
impl JsonMap for JsonIndexMap {
  ...
}

// Expose the active value types
#[cfg(any(not(feature="preserve_order"), feature="expose_other_value"))]
pub type OrderedValue = GenValue<IndexMap<String,Value>>;
#[cfg(any(not(feature="preserve_order"), feature="expose_other_value"))]
pub type OrderlessValue = GenValue<IndexMap>;

// Backwards compatibility: expose the old value type
#[cfg(not(feature = "preserve_order"))]
pub type Value = GenValue<BTreeMap>;
#[cfg(feature = "preserve_order")]
pub type Value = GenValue<IndexMap>;

I could implement this if the maintainers deem it useful.
I guess a workaround for now is to duplicate the Value type in your own code and manually tweak it to use the right map, but this requires duplication of quite a bit of code ((de)serialize implementation, json! macro, etc.)

The recommended approach is that the few places which desire a guaranteed sorted order should call .sort_all_objects(). For example, right before writing a particular JSON value to disk that has to be sorted. This will only perform any work if something in the dependency graph has enabled "preserve_order". Otherwise it will do nothing.
Alternatively there may be crates that provide an always-sorted Value type that you could use for dealing with such data.


Problem with 4.1.2 as of 10-05-2015

Hi,
I just ran the following and am seeing some strangeness.
C:\Users\Mac>nodist 0.12.0
nodev0.12.0

C:\Users\Mac>node -v
v0.12.0

C:\Users\Mac>nodist selfupdate
Installing latest stable version...
nodev4.0.0
Update dependencies...
<EMAIL_ADDRESS>node_modules\mkdirp
<EMAIL_ADDRESS>node_modules\request
<EMAIL_ADDRESS>node_modules\vows
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
C:\Users\Mac>node -v
v4.0.0

C:\Users\Mac>nodist latest
nodev4.1.2

C:\Users\Mac>node -v
Sorry, there's a problem with nodist.
Error:  fork/exec \nodist/v/nodev4.1.2/node.exe: %1 is not a valid Win32 applica
tion.

Any idea what can be done here?
Just to investigate I went here: https://nodejs.org/dist/v4.1.2/win-x64/ and downloaded the node.exe file and then placed it in C:\nodist\bin\node.exe and renamed the existing to node-old.exe and then I get.
C:\nodist\bin>node -v
v4.1.2

So is it possible nodist is downloading the wrong file?

Okay,
So I tried this on a different computer.
C:\Users\JT4>nodist latest
nodev4.1.2

C:\Users\JT4>node -v
v4.1.2

C:\Users\JT4>

So Maybe it was a problem resolved upstream. If no one else sees this issue go ahead and close this.

Okay I got this error again.
C:\Windows\System32>
C:\Windows\System32>nodist latest
nodev4.1.2

C:\Windows\System32>node -v
Sorry, there's a problem with nodist.
Error:  fork/exec C:\nodist/v/nodev4.1.2/node.exe: %1 is not a valid Win32 application.

C:\Windows\System32>nodist latest
nodev4.1.2

C:\Windows\System32>node -v
v4.1.2

C:\Windows\System32>

I was able to resolve it by going to C:\nodist\v and deleting the 4.1.2 folder. After running nodist latest again I got the proper version.
The first version contained a node.exe that was only 100KB after the second try it was the usual ~10MB.
My only guess is that there is a problem with the upstream causing an incomplete download.

Strange :/
Maybe nodist should check, if the executable is actually executable.
(You can also use nodist - 4.1.2 to remove a version.)

How about we just check the SHA256 SUM with the upstream?
http://nodejs.org/dist/v4.1.2/SHASUMS256.txt
I can possibly put together a pull request for this.

@marcelklehr I submitted a pull request against this in #94

Please see PR #97 for the fix that is needed here.

Thanks again for implementing this! Happily closing this :)

Another quick solution: go to the directory where Nodist is installed (e.g: C:\Program Files (x86)\Nodist), you'll find 'v-x64' and 'v', check both and see which one has all the installed versions and remove the other one.
I removed the 'v' folder which in my case was causing the conflict as I'm on a x64 OS.


Devicelab staging bots failing to upload metrics

These tasks are not expected to upload results, which is showing a purple dashboard and increased rate of 500s.
https://ci.chromium.org/p/flutter/g/devicelab_staging/console
@keyonghan can you take a look? This looks to have started on your CLs

https://flutter-review.googlesource.com/c/recipes/+/15863 is submitted. Will validate before closing.

Tests are passing with https://flutter-review.googlesource.com/c/recipes/+/15864.


Add 1/4, 3/4 options for work shares

Originally created by Tom Smyth at 2018-06-28 20:03, migrated from redmine-#8581

Status changed from New to Closed

By Tom Smyth at 2018-07-02 00:48


[Event Request] Codeunit 5845 "Get Inventory Report" - OnCheckPostingDateToGLNotTheSameBeforeTempInvtPostingSetupFindFirst #11413 missing parameters

Please see #11413 - the TotalInventory (as var Parameter) in the event is still missing. Please provide with #11413, thanks - otherwise the provided event isn't really helpful.
local procedure CheckPostingDateToGLNotTheSame(var InventoryReportLine: Record "Inventory Report Entry"): Boolean
var
ValueEntry: Record "Value Entry";
InvtPostingSetup: Record "Inventory Posting Setup";
TempInvtPostingSetup: Record "Inventory Posting Setup" temporary;
TotalInventory: Decimal;
IsHandled: Boolean;
begin
with InventoryReportLine do begin
...
if InvtPostingSetup.Find('-') then
repeat
TempInvtPostingSetup.Reset();
TempInvtPostingSetup.SetRange("Inventory Account", InvtPostingSetup."Inventory Account");
IsHandled := false;
OnCheckPostingDateToGLNotTheSameBeforeTempInvtPostingSetupFindFirst(TempInvtPostingSetup,InvtPostingSetup,InvtReportHeader,InventoryReportLine,TotalInventory,IsHandled)
if not IsHandled then
if not TempInvtPostingSetup.FindFirst then
if GLAcc.Get(InvtPostingSetup."Inventory Account") then
TotalInventory := TotalInventory - CalcGLAccount(GLAcc);
TempInvtPostingSetup := InvtPostingSetup;
TempInvtPostingSetup.Insert();
until InvtPostingSetup.Next = 0;
...
end;
end;
[IntegrationEvent(false, false)]
local procedure OnCheckPostingDateToGLNotTheSameBeforeTempInvtPostingSetupFindFirst(var TempInvtentoryPostingSetup: Record "Inventory Posting Setup" temporary; var InvtentoryPostingSetup: Record "Inventory Posting Setup"; var InvtentoryReportHeader: Record "Inventory Report Header"; var InventoryReportLine: Record "Inventory Report Entry"; var TotalInventory: Decimal; var IsHandled: Boolean)
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Fixed build on vs2015

make test

make test

make test

Here are strange errors on Mac, so I restarted PCM. If it will be green - no concerns to merge.

make test


Create sync-rovecomm

I'm going to hold off on merging this until I get it to work correctly with a webhook so that I am not just running a GitHub action once every minute forever.


Software steps suggested for clearing a PTE's D bit are inadequate

Section 6.3.6, "Accessed (A)/Dirty (D) bit updates and page promotions", says:

When IOMMU supports hardware-managed A and D bit updates, if software clears the A and/or D bit in the S/VS-stage and/or G-stage PTEs then software must invalidate corresponding PTE entries that may be cached by the IOMMU.  If such invalidations are not performed, then the IOMMU may not set these bits when processing subsequent transactions that use such entries.

This is insufficient advice when the D bits in PTEs are actually being used to track dirty pages.  If a page has D = 0, a write must not be allowed to occur to that page without the D bit first being set.  If for some reason a write proceeds for a page while its D bit is zero, let's call that a sneak write.  (If there's a standard term for this, I obviously don't know it.)
The quoted sentence speaks of software clearing the D bit for a page, and also invalidating the corresponding PTEs for that page at the IOMMU, but in fact there is no ordering of those two actions alone that can provide guaranteed protection against sneak writes.
Let's assume a PTE first has D = 1, and it is cached in that form by the IOMMU.  If software takes these steps:
. Clear the PTE's D bit to zero;
. Invalidate all cached copies of the PTE at the IOMMU,
we cannot rule out that between actions 1 and 2 a write to this page may be translated and authorized by the IOMMU using its earlier cached copy.  Any such write will be what I'm calling a sneak write, and for all we can be sure, the entire page might be changed by sneak writes during the window of time between the two software actions.  The result will be a memory page with dirty content but with D = 0 in its PTE (in the main copy in memory).
The steps mentioned in the quoted text are not exactly wrong, but they are entirely inadequate without other steps in addition.  If I'm not mistaken, I believe it's necessary to
. Mark the PTE as invalid (V = 0);
. Invalidate all cached copies of the PTE at the IOMMU;
. In the PTE, set D = 0 and V = 1.
I can't see a safe sequence that does not involve invalidating the PTE for a time.

The guidance stands on its own about the behavior expected and does not make assumptions about the usage.
For example, a pre-copy VM migration phase using PTE D bit could be as follows
While not migrated

For each PTE

If D bit is 0 continue
Clear D bit to 0
Invalidate IOATC/DevATC
Copy page contents to remote machine

Between 2 and 4 there may be more stores to the page but that is okay. Step 4 will copy out all modified data since last time step 4 was invoked. During/after step 4 if there are more writes then they will set the D bit again and this will be found in the next scan.

I wonder why D-bit has anything to do w/ IOMMU.
Say, D is used by OS to flag a buffer (disk cache) as dirty and needs to be flushed when necessary.
While when IOMMU sees a write targeting a D=0|1 bit page, this determination should have already been done by software (OS bdflush or similar). Modifications done by IOMMU to D-bit only triggers unexpected software behavior:

make a D=1 only triggers a flush a clean page back to IO?, or
raise an exception on D=0 write to let software see a spurious interrupt?

For D-bit related to PTE pages, I think since ptw interface should be coherency or non-coherency depending on the SoC configuration, it should have nothing to do with de usage model of D-bit, and thus also have nothing to do with IOMMU.

@zetalog You are right that when the OS uses pinned memory for DMA it would set the A and D bits by itself. However, there are two emerging use models a) shared virtual addressing SVA b) migration of VMs with direct assigned devices that uses techniques like IOMMUFD dirty tracking. With SVA, a common virtual address space is shared between the host and devices and allows applications to submit work directly to devices from user space without incurring cost of pinning/unpinning memory. You are also right that an IOMMU that does not use ptw coherency will not advertise support for the either a) hardware A/D bit updating b) atomic updating of MRIF for MSI redirection to virtual machines.


Limit on provider search results display when creating packages

The provider reference list in the new GOKb UI is limited to 10 entries when creating a new package. Therefore a user cannot select certain providers, e.g. "Springer" (GOKb org-id 85324), from the list to link it to the package. As a workaround I tried a lookup with the org id, but that failed.
The max number of results displayed to the user should be increased.

Searching by component ID will be fixed going forward, which will probably be more comfortable. Adding more results specifically for orgs would be an issue for https://github.com/openlibraryenvironment/gokb-ui

Searching by component ID will be fixed going forward, which will probably be more comfortable. Adding more results specifically for orgs would be an issue for https://github.com/openlibraryenvironment/gokb-ui

Hey @hornmo , do you want me to file an issue on the https://github.com/openlibraryenvironment/gokb-ui repo to address the number of results displayed?

Hey @hornmo , do you want me to file an issue on the https://github.com/openlibraryenvironment/gokb-ui repo to address the number of results displayed?

Yeah, that would be great!

Yeah, that would be great!


error related quilt upgrade to 3.0

I tried to install geosnap in the clean environment on 05/28/2019. When I imported geosnap, it gave me an error below (I didn't get the same error a few months ago)

The issue was quilt package has changed from 2.9.15 to 3.0.0 on 2019/05/25 (major change)
Here is the difference:

The error above has been resovled by running the command line below after I activated geosnap environment after yml installation.

I think that we need to set quilt version to 2.9.15 in environment.yml or revise source in geosnap.data based on the quilt 3.0.0.

thanks for this--and for pointing to the migration doc! I'll update to use the new syntax

actually, could you also share the link to that doc?

I collected the info from a few websites.
For quilt 2: https://docs.quiltdata.com/v/quilt-2-master/api/api-python
For quilt 3:
https://docs.quiltdata.com/walkthrough/distributing-a-package
https://docs.quiltdata.com/walkthrough/installing-a-package

oh, you put this graphic together yourself! super helpful, thank you.

strange... it looks like maybe the 3.0 release was rolled back
https://pypi.org/project/quilt/#history
As an alternative, we could avoid this issue by not installing these data packages in the code. Instead, we make users install our quilt packages explicitly and raise an informative warning if a package is missing (rather than trying to install it automatically). That would avoid breakage from changes to quilt's API, and i've been thinking about refactoring that way for awhile because it's more pythonic anyway

got it. they rolled back and released the new version as t4
i'm working with their team to get a conda-forge recipe put together, so once it is available we'll move from quilt to t4 and this will be resolved

this is resolved by #97

I ran into the following error after pulling the most recent version of geosnap from github

Not sure why, maybe I am missing some packages?

sorry, that one got past me. should be fixed now

Thanks!
On Fri, Aug 2, 2019 at 4:59 PM eli knaap<EMAIL_ADDRESS>wrote:

sorry, that one got past me. should be fixed now
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/spatialucr/geosnap/issues/85?email_source=notifications&email_token=ABYEWNARUBN7SPUFNV74ZC3QCTC7PA5CNFSM4HQFQTJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3PCNEY#issuecomment-517875347,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABYEWNBNITT7MVJOJBFCQJLQCTC7PANCNFSM4HQFQTJQ
.

--
Wei Kang
Postdoctoral Scholar
Center for Geospatial Sciences
University of California, Riverside
Personal Website https://weikang9009.github.io/


[Feature] Compression via Nvcomp

Hi! We've been talking about adding nvcomp to kvikio. I'm looking to add python bindings for Snappy, Cascaded, and Lz4 algorithms from nvcomp. In order to do so, we'll need to add the python bindings nvcomp.pyx and nvcomp.pxd to kvikio/python/kvikio/_lib and a wrapper for them, nvcomp.py. Once this is done I'll write tests.
A CMakeFlag -DUSE_NVCOMP=True will be added, disabled by default.
We're planning on using the nvcomp headers that are installed by cudf, which can be installed via conda, right?
I'm also looking into adding kvikio as another library option for https://github.com/trxcllnt/rapids-compose, which will make maintenance and development quite easy.

Looking at cuDFs means for installing nvcomp, it installs it locally only as a cudf build dependency. I'm not sure how to proceed, either kvikio needs to know about cuDF's internal workings or it'll need more explicit dependencies, I think. I'm checking if the conda install of cudf has nvcomp.h etc, I doubt it.

@madsbk I did find the nvcomp.h headers in the cudf conda build after burning most of the day trying to run side-by-side rapids-compose builds, one for kvikio development, but I had to abandon that route with little fruit.


Negative array index causes DetectOrientationScript() to fail randomly

Current Behavior
Latest Tesseract 5.3.1 has a bug in DetectOrientationScript() that causes it to randomly fail when attempting to detect image orientation for 90 degree image scans. The problem is that getting a script id can return -1 which then indexes into a "done" array
On my system this fails about 20% of the time on the exact same image input
Error found with valgrind
Expected Behavior
Trivial fix to not write to done[-1] which then allows DetectOrientationScript() to always return the same results
Suggested Fix
--- src/ccmain/osdetect.cpp.org	2023-04-26 16:26:18.618274574 -0700
+++ src/ccmain/osdetect.cpp	2023-04-26 16:54:37.041375058 -0700
@@ -488,10 +488,12 @@
         }
       }
       // Script already processed before.
-      if (done[id]) {
-        continue;
+      if (id != -1) {
+        if (done[id]) {
+          continue;
+        }
+        done[id] = true;
       }
-      done[id] = true;

       unichar = tess_->unicharset.id_to_unichar(choice->unichar_id());

### tesseract -v

_No response_

### Operating System

RHEL 8

### Other Operating System

_No response_

### uname -a

_No response_

### Compiler

gcc 12.2

### CPU

_No response_

### Virtualization / Containers

_No response_

### Other Information

_No response_

Is this a regression, or do you see the same issue also with older releases?

I'm using my own code that just calls SetImage and then DetectOrientationScript, but if you look at the diff, it is quite trivial so inspection should be enough. "id" can be -1 from choice->script_id() and when it is there is no check before using it as an array index. GitHub "blame" shows it back from 3.0
https://github.com/tesseract-ocr/tesseract/commit/96e8b51feb5b58888f820a7f672097734bc6d4b5
on a side note, this method is much, must faster than using Recognize and iterator calls to determine image rotation as shown in the tesseract samples page

Can you please also provide some example image to test the issue?

scan-90.zip
Here is a scanned costco receipt, but most any image should work

I tried tesseract scan-90.tiff - --psm 0 and never get a negative script id. Please paste your test code.

your new patch still calls done.at(-1) which is invalid
The code to repro is quite simple
ocr->SetImage(pix);
int degree;
float dconf, sconf;
const char *script;

if (ocr->DetectOrientationScript(&degree, &dconf, &script, &sconf) && degree && dconf >= 0.9) {
            Pix *rpix = pixRotateOrth(pix, (360 - degree) / 90);

            if (rpix) {
                ocr->SetImage(rpix);
                pixDestroy(&rpix);
            }
}

Calling done.at(-1) should raise an exception, so your program would no longer show random behaviour but fail.
I assume that your code is incomplete and misses some initialisation which is part of tesseract (which does not fail). Therefore I asked for your complete code. With the snippet above I still have to guess how you created ocr.

? by definition the Init call succeeds (using only 'eng' data) because 80% of the time rotation is detected and text is extracted. The index is absolutely -1 on every call, but dereferencing an array index of -1 is ALWAYS a bug with indeterminate value
An exception does not help whatsoever because the program crashes instead of returning correct results. With this fix, valgrind no longer shows a branch on uninitialized var and rotation value is always returned correctly
ocr->Init(ocrdir.c_str(), 'eng')

Is it possible to provide a complete working example code including main()?
It's not necessary to repeat that a negative index is not okay because nobody questions that. But according to my tests the tesseract executable never uses an illegal index here.
Supporting your use case might be useful (maybe with a different patch).
But it might also be undesired behaviour which requires better documentation how that function should be used to avoid negative indexes. Raising an exception when an API is not used according to the documentation would be a valid fix.
I still don't know which of the two options is the better one.

you can paste those 3 lines into any test snippet that reads a Pix object (such as the ones on tesseract site) - there really is nothing special here other than init(), setImage() and DetectOrientationScript() in order
There are quite a few stackoverflow and other internet questions asking how to detect image rotation. They all recommend Recognize() with a 0 PSM, but that is incredibly slow. This solution runs dramatically faster and since you have to rotate before calling Recognize with a non-0 PSM, it can lead to dramatic improvements on bulk OCR

Sorry, I don't have the time to collect code snippets to build a test program for this issue. I am afraid that without a complete working example code I cannot help.

here is sample code
const char* inputfile = "scan-90.tiff";
  int degree;
  float dconf, sconf;
  const char *script;
  PIX *image = pixRead(inputfile);
  tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
  api->Init("tessdata", "eng");
  api->SetImage(image);
  if (api->DetectOrientationScript(&degree, &dconf, &script, &sconf) && degree) {
    Pix *rimage = pixRotateOrth(image, (360 - degree) / 90);

    if (rimage) {
      api->SetImage(rimage);
      pixDestroy(&rimage);
    }
  }
  pixDestroy(&image);
  api->Recognize(NULL);
  char *text = api->GetUTF8Text();
  printf("degree: %d  confidence: %f\n\n%s", degree, dconf, text);

https://github.com/tesseract-ocr/tessdoc/blob/main/examples/OSD_example.cc
The code currently does not check the return value from the methods it calls.

My sample code does check error codes, but that doesn't matter because it returns correct results with my trivial 2 line patch - never a failure

and since you have to rotate before calling Recognize with a non-0 PSM

You don't need to rotate with PSM 1.

@todd-richmond, add destructors to your sample code to avoid memory leaks:
  delete[] text;
  delete api;

And even with your patched code, there remains an illegal memory read:
../../../src/ccmain/osdetect.cpp:525:7: runtime error: index -1 out of bounds for type 'float [120]'

I am not sure if his use use of the API is correct usage.

@todd-richmond, add destructors to your sample code to avoid memory leaks:
  delete[] text;
  delete api;

The examples were also incomplete. This will be fixed with tesseract-ocr/tessdoc#110.
Even with your patched code, there remains an illegal memory read:
../../../src/ccmain/osdetect.cpp:525:7: runtime error: index -1 out of bounds for type 'float [120]'

my runtime code also has deletes - this is just a snippet that was asked for. I don't have valgrind or other errors with my patch in my app and the API returns expected results 100% of the time. I see the vector<> change was merged so I can't speak to what happens with that since it doesn't check the subscript either

I'm not quite sure why it has been so hard to get this patch accepted. I contribute small patches to dozens of open source projects we use at work and this example solves a problem that a LOT of people on the net have asked about. I found the alternative reading Tesseract headers after finding the common suggestion far too slow. The API call is documented as official, but fails in the same code + image I gave. The trivial patch resolves the bug w/o changing any internal execution paths

Your patch does not fix the problem, because there remains an array access with index -1 (see my previous comment).

In addition I get wrong results for an image without rotation and with mostly non-Latin script

That's because he used "eng", which is fine if the user know that the text in  the image is written in English and only want to find the orientation of the page.

Then it should work for the image provided which only contains English text, but it does not.
If I replace "eng" by "osd", all tests succeed and there is no longer a negative array index.
So it looks like the issue is solved: use "osd" and everything is fine. If "osd" is not used, fail with an exception because of a wrong API call.

@stweil,
Does the array access issue also occurs with the example from OSD_example.cc which calls init() with "osd" instead of "eng" and sets the psm to 0?

Then it should work for the image provided which only contains English text, but it does not.

You need to use an old eng.traineddata with legacy only data.
It will probably also work with a trainedata from the tessdata repo, but you may need to change the oem to 0.

Thank you. Indeed, the test code works when I replace eng.traineddata from tessdata_fast or tessdata_best by the one from tessdata which provides the required legacy model.
So the rule is to use "osd" or any other model which supports the legacy engine. Then there is no negative index. Otherwise raise an exception to avoid undefined behaviour.
It looks like this issue can be closed.

I am not sure if we are able to check the presence of the legacy model in OSD functions.
At least the tesseract can trigger a warning in case of id == -1 so a user could understand the problem...

main would have to test for api.tesseract_->font_table_size_ != 0 or api.tesseract_->tessedit_ocr_engine_mode != OEM_LSTM_ONLY, but that API is not public. The only public API which can be used to check for a valid model with legacy support which I have found is api.tesseract()->AnyTessLang(). It works after adding 5 (!) include directories for the build process.

my sample code was run using tessdata_fast, not tessdata or tessdata_best because I care more about speed than recognition at scale. It tries to detect rotation before setting the PSM and calling recognize so that I can use different configurable modes that don't support OSD w/o having to use slow PSM 1 first.
@stweil , there is no subsequent valgrind issue using my sample and patched library (but I wasn't using debug mode). However, you are correct that the 0 degree rotation is still returning the same results so my code does fail
I tried PSM 0 with Recognize(), but it is always returning 270 degrees no matter what. I tried DetectOS, DetectOrientationScript and GetOsdText, but all fail on unrotated content even when tesseract cmdline program returns correct rotation.
In short, I need fast scanning with configurable PSM, but with 90 degree rotation handling and running Recognize twice is too slow. It seems I need to use only PSM modes that enable OSD

fast and best models (without legacy models) does not provide always right result. See e.g. forum post How to get the correct text orientation with tesseract.
tessdata  should be best models with legacy models. IMO you can unpack it and try to include legacy models to your custom fast model... (see tool combine_tessdata).
Regarding the speed you can have a look at leptonica (see e.g. https://bucket401.blogspot.com/2023/05/detecting-page-orientation-c.html, there is also example for fixing a skew). DanBloomberg (Leptonica author) is very experienced and he provide excellent support on leptonica (just create issue if you have problem or questions).

I also struggled with this for several weeks but finally landed on this post... I am not sure, it still says open, but if there is some way I can help I am happy to provide an example of what I was doing. I think if it only works with certain models it should give me an error if I am using a model that does not work, right?


RFID_Matrix

Sketch/program to read data from 4 sensors and send the TAG number to Control Module by serial

Q
A

Bug fix?
no

New feature?
yes

Doc update?
no

BC breaks?
no

Deprecations?
no

Fixed tickets
#...

Thanks for your pull request but I don't see much difference to the existing example:
https://github.com/miguelbalboa/rfid/blob/master/examples/ReadUidMultiReader/ReadUidMultiReader.ino
Feel free to add it to the wiki https://github.com/miguelbalboa/rfid/wiki


Upgrade dependencies and remove tut

See #7 for explanation of the issue.

Old microsites plugin was pulling in tut, and apparently Rob deleted the binaries as well as of May 1st: https://github.com/tpolecat/tut#tut
Upgrade all versions
Remove silencer as it's largely been absorbed by -Wconf on both Scala 2.12 and 2.13

That solves the problem with the compilation I was having. It compiles now for me, which also makes it much easier to jump around the code in IntelliJ.

Ah very nice!
I fear getting banana-rdf to scala3 is going to be quite a lot of work as I need to replace projection types we used.


The iframe does not resizes at all.

I am not sure if this is an issue but the iframe is not resizing at all. I checked the parent file and it includes iframeResizer.contentWindow.js. Also on the page that display the iframe i have included the iframeResizer.js.
Here are the links to the pages that i am using

Page to be included in an iframe- http://testbackend.cloudapp.net/map.php?m_id=240
Sample page with iframe included- http://testbackend.cloudapp.net/testingiframe.html

I think the problem maybe that the content is generated through ajax and maybe that's why it is not working properly.
here is the iframe function i am using
iFrameResize({heightCalculationMethod: "lowestElement"}, "#kmaps-test-embed");
Is the problem due to ajax content or some other issue.

Try turning the log option on and have a look at the console.

I changed the code to this. But when i resize the windows nothing shows up in the console. Does this point in some way to a mistake i might be committing.
iFrameResize({log:"true",heightCalculationMethod: "lowestElement"}, "#kmaps-test-embed");

Paste the log here.
On Wednesday, 16 December 2015, pavneet9<EMAIL_ADDRESS>wrote:

I changed the code to this. But when i resize the windows nothing shows up
in the console. Does this point in some way to a mistake i might be
committing.
iFrameResize({log:"true",heightCalculationMethod: "lowestElement"},
"#kmaps-test-embed");
—
Reply to this email directly or view it on GitHub
https://github.com/davidjbradshaw/iframe-resizer/issues/301#issuecomment-165257824
.

--
Sent from my iPhone.

I checked the log again, it is empty. There are no messages being added to the console

The iFrameResize is not being called.

can you give me some pointer on what i may be doing wrong .
Here is the code i am using

The script needs to be after the iFrame.

@davidjbradshaw [iFrameSizer][Host page: inside_content] [iFrame.onload] Sending msg to iframe[inside_content] (inside_content:8:false:true:32:true:true:null:lowestElement:null:null:0:false:parent:scroll) targetOrigin: *
Please find my logs above. as i am too get the iframe content via ajax.
please help.


(chore) Configure simple cov to output json

Changes
We would like Sonarcloud to pick up our coverage, according to this:
https://docs.sonarcloud.io/enriching/test-coverage/test-coverage-parameters/
Outputting json is required so this configures simple cov.
At this point, I have not idea how sonarcloud can read the file, but this might be a 'it just works' things so we are happy to try as this has no other impact that we can see.

I kind of suspected this would not work. I think we have to run sonar cloud in a github action so we can ensure it runs after simple cov collects our coverage stats.
I will close this for now.


please remove eslint-config-react-app from dependencies, it is required only for react projects

warning "tsdx ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>warning "tsdx ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>

also please update<EMAIL_ADDRESS>to 2.0.0

Can you submit a PR?

@jaredpalmer
Which node version do you use to build? I will add .nvmrc to the project.
I'm running tests and getting an error:

can't update stuff until you fix tests

eslint-config-react-app is used for more than just React projects
Bumping @typescript-eslint/eslint-plugin to 2.0.0 has breaking changes not supported by the current version of eslint-config-react-app
The warning of unmet/incorrect peer dependencies are coming from here: https://github.com/facebook/create-react-app/blob/master/packages/eslint-config-react-app/package.json.  babel-eslint doesn't need to be a peer dependency for 100% TypeScript apps and it looks like eslint-plugin-flowtype could be `3.x || 4.x'

@skvale have you tried to run tests?

It looks like the tests are passing from your screenshot
There is a noisy test for an invalid build: https://github.com/palmerhq/tsdx/blob/master/test/fixtures/build-invalid/src/index.ts

re:

also please update<EMAIL_ADDRESS>to 2.0.0

eslint-config-react-app just bumped their versions of typescript-eslint deps: https://github.com/facebook/create-react-app/pull/7540/files
tsdx could bump eslint-config-react-app and @typescript-eslint/eslint-plugin now

it is better to dump sdx could bump eslint-config-react-app - it messes up linting projects without react

As was written previously above (https://github.com/formium/tsdx/issues/182#issuecomment-526948153), it's definitely not just for React projects -- can view the rules and see for yourself.
I'm not sure what "messes up linting projects without create-react-app" refers to. I'm open to changing to a different default ESLint config (I personally use Standard), however that's a separate story -- please propose an RFC if interested.
It would likely be a very breaking change and folks who use lint configs tend to not want to make stylistic choices themselves and so may be adverse to that. TSDX also has overlap with CRA / CRL users (and has a good bit of inspiration from CRA), so similar config is probably more consistent for those folks.

@agilgur5 the issue for me is mostly out of date versions of dependencies in CRA. I use carefully managed list of eslint plugins myself, and would love to have smaller dependency tree, and less clutter in npm i logs about missing/outdated dependencies.

Ok, that's different from "messing up linting"; that would mean it works but just is outdated. #810 has this issue too. I suspect CRA has somewhat of the same issue as TSDX where a major bump in any sub-package causes a major in CRA so as a result you end up being slow to update dependencies as you batch them into majors.
In any case, I don't particularly want to maintain an ESLint config myself for reasons I've written in https://github.com/formium/tsdx/pull/890#issuecomment-703167625 . For ecosystem consistency also would prefer using an existing, well-used config. If you've got suggestions, feel free to make an RFC.


Possibility to only get a certain env-var (e.g. cg env APP vcap_services)

It would be so nice to have this functionality - at work, I only need to get the VCAP_SERVICES attribute as well as the user-defined ones. I want to write a script to just pipe the output from cf-env into a file we then can use as our .env file in the project, so we don't have the .env file added to git.
As it is now, it requires me to write a string parsing script to actually read each line and in the end, return me VCAP_SERVICES and the user-defined environment variables. This would be nice to not have to do :)

Sorry, I'm not sure what you're asking for.  Since the VCAP_SERVICES and and VCAP_APPLICATION environment variables contain JSON, perhaps a utility like jq will work well for you.
https://stedolan.github.io/jq/
jq reads JSON text from stdin (or maybe a file also), and then will reformat it, or allow you to make "queries" against the JSON object.
eg:
$ export JSON_ENV='{"a":1,"b":2,"c":3}'
$ echo $JSON_ENV | jq
{
  "a": 1,
  "b": 2,
  "c": 3
}
$ echo $JSON_ENV | jq .a
1

Well, I also think I wrote something quite messy :)
I did not know that at all - any way you can do something similar on windows? The reason for my initial question was that I want to have a bat-script that calls cg-env APP and then pipes only e.g. VCAP_SERVICES into a file.

Closing as there is no problem reported here.  Please re-open if I'm mistaken.


Home page getting redirected to http://www.dot.tk/en/index.html?lang=en

The home page http://vue-charts.hchspersonal.tk/ is getting redirected to http://www.dot.tk/en/index.html?lang=en

Now it says DNS lookup failed!


How can I change the css in my browser?

As soon as I translate the focus to the console. The window disappears.

You can try setting focus on true for the time being. This should set the calendar open when loading the page. See https://github.com/Hacker0x01/react-datepicker/blob/master/src/datepicker.jsx#L44

Its not worked

What about a custom trigger that triggers it $('.datepicker__input').click()

I can see how this could be problematic. For now the easiest way I can see is to edit the CSS and then re-focus the input. That should work, right?
distant-future-thinking: It would be awesome to have some sort of stylesheet-playground, allowing for easy composition of your own stylesheets in the docs.

For reference @martijnrusschen's solution works: $('.datepicker__input').click()


Issue with k8s.io/docs/tasks/administer-cluster/ip-masq-agent/

This is a...

[ ] Feature Request
[x] Bug Report

Problem:
The documentation states that 'By default, in GCE/GKE starting with Kubernetes version 1.7.0, the ip-masq-agent will run in your cluster. If you are running in another environment, you can add the ip-masq-agent DaemonSet to your cluster:'
But the DaemonSet remains empty in the documentation. Also, ip-masq-agent will not always run in the GKE-cluster, as stated by the GKE documentation:
"IP masquerading in Container Engine is handled by ip-masq-agent, a tool which runs in clusters that run Kubernetes version 1.7.0 if network policy is enabled or you are using a cluster CIDR not in the <IP_ADDRESS>/8 range ." (from https://cloud.google.com/container-engine/docs/ip-masquerade-agent)
Proposed Solution:
Update the documentation to reflect the text as it is stated by google
Page to Update:
http://kubernetes.io/...

@bowei Hi! Could you please take a look at this issue and provide necessary recommendation to take it to closure.
The documentation is at https://kubernetes.io/docs/tasks/administer-cluster/ip-masq-agent/
@wmuizelaar Would you please clarify what do you mean by DaemonSet remains empty in the documentation Thank you

/assign @dnardo

I've had pr/#4284 out for review.  It should clear up the wording.

Thanx @dnardo.


Support Bloggers and Code Samples

Is your feature request related to a problem? Please describe.
I like to blog about .NET and normally leave samples scattered throughout the post to illustrate some ideas. It would be great to allow folks to interactively play with the samples that are part of the post.
Describe the solution you'd like
A way to write blog posts (using markdown) that can inject parts of Try.NET into the current site/post. Either by allowing bloggers to host the service or by paying a small service fee to allow Try.NET to manage the security and headaches of hosting.
I could see a couple of ways to accomplish this:

Build time. I use Jekyll so a processor would make sense as the site builds.
Client-side: A JavaScript library that can read code blocks and inject Try.NET and communicate with the server.

Describe alternatives you've considered
Flat samples or .NET Fiddle links.
Read More
https://github.com/dotnet/try/wiki/Product-Roadmap

There already seems to be a feature in private preview that allows you to do just that.
Heading "Simple to embed" on https://dotnet.microsoft.com/platform/try-dotnet

Simple to embed
Go beyond copy and paste samples to live snippets. Our private preview customers can embed live .NET code into blogs and documentation.

I wrote up a quick outline of what needs to be done here: https://github.com/dotnet/try/issues/298#issuecomment-546147042

Silly question, but how would you determine if someone is using a Try.NET instance maliciously. They are essentially executing code remotely.
In theory, someone could come to my site, change the code sample, then start mining bitcoin.

The code is executed with Blazor in the browser of the person who clicks the run button, so they'd be mining in (or otherwise maliciously using) their own browser.

@jonsequitur ah ok, so we are going down the route of a hosted WASM solution. I must have misread the other issue, where assets would be uploaded to the try.net servers (unless that is directly the compiled wasm of the sample).

Assets have to be uploaded to Try .NET for compilation of the final assembly (which includes user-modified code) and language services.


Button onInputOver not working in v.2.4.8

When hovering a button/sprite/image on a desktop browser the inputOver doesn't trigger. When clicking inside the canvas and hovering the button it does trigger the 'Over' button event.
Tested in Firefox, Chrome and Safari on iMac 5K / OS X
Demo: http://phaser.io/examples/v2/buttons/action-on-click
The hover effect works fine when selecting v2.4.7

Thanks for reporting this, but it's already fixed in the dev branch.


Release 7.1.0

Fixed error reporting on XML watcher loading errors
Updated to IDSCP2 (fixing errors on close)
Updated to Spring Boot 3.0.2
Updated to Angular 15
Added camel-jsonpath

Release currently broken because IDSCP2 0.17.0 is still in release process. Let's try again later.


close plt only if shown

Closing the plt before returning the figure renders it useless. Therefore we should close the plt only if shown.

Since this library no longer seems to be maintained, we have created a duplicate of it that we plan to maintain and improve over time. If you'd like to use our version check it out here: https://github.com/Lumiwealth/quanstats_lumi
Please feel free to fork and send your pull request to this new library, we will be actively monitoring the library and approving PRs


fix broken stackscript sort

Description
StackScript sorting isn't functioning properly.
Type of Change

Bug fix ('fix', 'repair', 'bug')

Closing as we went with a different solution


Map: Markers coming out of a "multple entries"-number collapse immediately back to the number, no possibility to click.

Ahoj,
while browsing the map, I see two entries in the middle of Czech Republic.
Even when zooming really close, they do not separate.
When I click on the circled "2", I see two markers coming out, but they immediately collapse back into the "2", I cannot click any of them.
Regards!

P.S.: Now, after waiting a long time (several minutes), when the browser finally has finished doing stuff, it works.
So it seems that while there is still stuff ongoing the display auto-resets.

Thank you for reporting! I can reproduce this. 👍🏾
It probably has something to do with refreshing the map while data are loading, i need to take a closer look.


Deployment error on GKE

Hello!
I deployed Gemma 2 2b it on GKE with autopilot mode following these instructions https://cloud.google.com/kubernetes-engine/docs/tutorials/serve-gemma-gpu-tgi#autopilot. There's this error Node scale up in zones us-central1-c associated with this pod failed: GCE quota exceeded. Pod is at risk of not being scheduled. I checked quota there's enough GPU. However the pod is in pending state.

Hi here again @piksida, as mentioned via LinkedIn, the issue is related to the quota rather than the TGI deployment; so on, to fix that you should visit https://cloud.google.com/kubernetes-engine/docs/how-to/gpus#gpu_quota and ensure that the quota for the GPU that you want to use e.g. NVIDIA L4 has a value greater equal or greater than 1 (which as of what you shared via LinkedIn it seems it's already the case). Anyway, try to increase that to 2 at least so that we discard that option, otherwise, you can give it a try creating the GKE cluster with the Standard mode and the node pool with a single NVIDIA L4 which should work as of your current quota.
See the screenshot below of the filters that you need to apply in order to see the quota that you need to upgrade:

Here's also another reference from the Google Cloud Forum that may seem relevant to you https://www.googlecloudcommunity.com/gc/Google-Kubernetes-Engine-GKE/GKE-Autopilot-cluster-and-Wanted-up-a-GPU-Nvidia-l4-or-Nvidia/m-p/785551

Hi here @piksida did you manage to solve the quota issue? 🤗


⚠ Minecraft has degraded performance

In ce33024, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1154 ms

Resolved: Minecraft performance has improved in 16a23c1.


Wav.encode on mixer creates file of about 50G in just seconds

package main

import (
	"log"
	"os"

	"github.com/faiface/beep"
	"github.com/faiface/beep/mp3"
	"github.com/faiface/beep/wav"
)

func main() {

	s1 := getStream("./Lame_Drivers_-_01_-_Frozen_Egg.mp3")
	s2 := getStream("./Miami_Slice_-_04_-_Step_Into_Me.mp3")

	defer s1.Close()
	defer s2.Close()

	mixer := &beep.Mixer{}
	mixer.Add(s1)
	mixer.Add(s2)

	outFile, err := os.Create("mixed_audio.wav")
	if err != nil {
		log.Fatal(err)
	}
	defer outFile.Close()

	err = wav.Encode(outFile, mixer, beep.Format{SampleRate: 48000, NumChannels: 2, Precision: 2})
	if err != nil {
		log.Fatal(err)
	}
}

func getStream(file string) beep.StreamSeekCloser {
	f, err := os.Open(file)
	if err != nil {
		log.Fatal(err)
	}

	streamer, _, err := mp3.Decode(f)
	if err != nil {
		log.Fatal(err)
	}

	return streamer
}

Hi
I am trying to save the sound to a file that is being played using the mixer. But the WAV file created is way big. Can any anyone please help me with this?
Any help is appreciated

Hey 👋
The current behaviour of Mixer is that it keeps playing silence when no tracks are mixed in. Therefor your file will be filled with infinite silence. You could use Mix() function which doesn't do that. Does that solve the problem for your use case?

@MarkKremer
Thanks a lot for the help
I am trying to capture the complete audio and stream it to the RTMP link.
The problem is that the package that I am using is already playing sound using a mixer so I can not change the code to play sound.
Is there any way I can achieve this without changing the code that plays sound using mixer?

I think it would be very hacky.
What package are you using?

I was thinking about adding a "don't play silence" option to the mixer but I don't want to add it just to work around another package...

https://github.com/ikemen-engine/Ikemen-GO/blob/develop/src/sound.go#L494
I want to stream this audio.

Can you please point me to the code where I can add this flag to not to stream silence?
@MarkKremer

I happen to have a POC here.
However, I think another problem (and the cause of why it fills up your file so quickly) is that the encoder consumes the streamer as quick as it can write it to the file. The speaker reads from the stream much more slowly.
Given the repo you linked, I'm also thinking you may actually want to continue playing silence in between sounds. That no streams are added to the mixer doesn't necessarily mean the game has stopped...
Do you want to write to the file while also playing it through the speaker still or do you need it to just play to the file or the speaker but not both?

@MarkKremer
I only need the sound to be written to file, not both.
Yes, you're right about the encoder quickly writing the streams and then streaming silence. I want the writer to write the sound to the file exactly as it was played in the game or through the speaker.

A set-up that could work:
[Mixer] -> [Throttle] -> [Ctrl] -> [wav.Encode]

The throttler doesn't exist yet but would throttle the consumption to a given sample rate.
The Ctrl node can be used to stop the stream at the end of the game by setting Ctrl.Streamer to nil. Then the Mixer can keep playing silence in between sounds.
I've made a quick POC of what the set-up including the throttle node could look like:
package main

import (
	"os"
	"time"

	"github.com/gopxl/beep"
	"github.com/gopxl/beep/mp3"
	"github.com/gopxl/beep/wav"
)

func main() {
	in := "input-file.mp3"
	out := "output-file.wav"

	inFile, err := os.Open(in)
	if err != nil {
		panic(err)
	}

	source, format, err := mp3.Decode(inFile)
	if err != nil {
		panic(err)
	}

	mixer := &beep.Mixer{}
	mixer.Add(source)

	throttle := Throttle(mixer, format.SampleRate.N(time.Second), time.Second/30)

	ctrl := &beep.Ctrl{
		Streamer: throttle,
	}

	// Simulate the game stopping after 5 seconds.
	go func() {
		time.Sleep(time.Second * 5)
		ctrl.Streamer = nil
	}()

	outFile, err := os.OpenFile(out, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0755)
	if err != nil {
		panic(err)
	}

	err = wav.Encode(outFile, ctrl, format)
	if err != nil {
		panic(err)
	}
}

func Throttle(streamer beep.Streamer, sampleRate int, debounce time.Duration) beep.Streamer {
	return &Throttler{
		streamer:        streamer,
		sampleRate:      sampleRate,
		debounce:        debounce,
		samplesConsumed: 0,
		startTime:       time.Now(),
	}
}

type Throttler struct {
	streamer        beep.Streamer
	sampleRate      int
	debounce        time.Duration
	startTime       time.Time
	samplesConsumed int
}

func (t *Throttler) Stream(samples [][2]float64) (n int, ok bool) {
	for {
		millisecondsElapsed := time.Now().Sub(t.startTime) / time.Millisecond // work with milliseconds instead of seconds to avoid too large rounding errors.
		maxConsumption := int(millisecondsElapsed) * t.sampleRate / 1000
		if maxConsumption > t.samplesConsumed {
			break
		}
		time.Sleep(t.debounce)
	}

	n, ok = t.streamer.Stream(samples)
	t.samplesConsumed += n

	return
}

func (t *Throttler) Err() error {
	return nil
}

debounce is how much time the throttle node should wait when it hits the consumption limit. It's should behave similar to the buffer size on the speaker.
Like I said, this is a quick POC. Please let me know if you run into any problems. This could be a good addition to the Beep package. I may refine it and add it to the package once I have more time. I have quite the busy schedule right now. :)

Hi @MarkKremer
Thanks a lot. It did work
Just a doubt, how changing this debounce will affect the recodring.
throttle := Throttle(mixer, format.SampleRate.N(time.Second), time.Second/30)

Let me know if I can help you with implementing this feature in beep.

The debounce is the difference between:
Small debounce:
time ->
[wait] -> [stream] -> [wait] -> [stream] -> [wait] -> [stream] -> [wait]...
                                              ↑

and
Bigger debounce:
[wait longer...] -> [stream] -> [stream] -> [wait longer...] -> [stream]...
                                              ↑

Say you want to add a streamer to the Mixer at the time of the arrow. In the second case it takes longer for the next call to Stream() to be made. Therefor it may take more time for changes to the streamers to show up in the resulting audio. This is similar to what the speaker does because it buffers the samples and when the buffer empties it calls Stream() until it is full again.
The reason I added the debounce is because I suspected it may be more efficient to process a bunch of samples at once and wait for a little more compared to processing a little amount of samples and switching between goroutines more. However, I haven't checked that assumption, so it would be good to test that in the near future. Maybe Go is more efficient when switching? Feel free to have a try at calculating the exact amount of waiting time instead of having a configurable debounce. Otherwise I'll have a try when I feel like it between the other things I'm doing. :)
A debounce of 1/30th a second it not that noticeable, but it would be nice to drop the argument so users don't have to think about it.
Like the speaker, Throttle should also have a Lock() function so it doesn't call Stream() when changes to the Mixer etc. are made. That could cause concurrency problems. I forgot that in my first snippet.


Some way to allow for real time noise reduction, or direct audio input?

This is a pretty sweet repo, been using it a couple times a week recently. Faster-whisper lets you actually run the large model in real time with good latency on a 3090. Actually it's even more insane, I run TWO LARGE MODELS AT THE SAME TIME, two stream-translators, so that I can have dual subtitles: one transcribed, one translated. It works fine 3090 as long as you are just doing normal desktop stuff! Wild.
But when streams have a lot of background noise (music, game sounds) I found you NEED to add some decent real-time noise reduction or Whisper just faceplants over and over.
Mainly I've used the Nvidia Broadcast tool to do this in real time, with a virtual cable if needed to get the audio routed correctly. Whisper is back at full power if I do this. But since stream-translator streams the audio directly I have to use something else instead.
If this could take in mic/speaker device audio alternative to streamlink, that would do it. Using this option loses the simplicity and latency benefits of streaming directly, but the alternative is Whisper collapsing in confusion on some streams. I know other repos already take in direct audio but ideally I want to stop bouncing between them...
Maybe there's a more elegant way to accept direct audio input that doesn't require a wacky virtual-cable or whatever? OBS studio integrates NVIDIA noise reduction via the broadcast SDK. Or there could be a good open source solution. I tried a couple but none of the real-times were close to good enough, compared to the NVIDIA version.

Yea Whisper has a tendency to hallucinate on non-speech segments. That is why I added extra voice activity detection by Silero VAD. Maybe you can improve the issue by setting the default threshold for the VAD to something higher than 0.5 here.
Currently segments are only discarded if they contain no speech. I have an idea to use the VAD to cut out non-speech parts from segments that contain only a little bit of speech. Maybe that also helps.
I don't know what the best way would be to feed the audio directly. This repo uses some tool to capture the speaker output. There are plenty of Whisper showcases that use mic input. I will see if I can add something like that as an option when I have some free time.

I frankenstein'd an absurd way to do this. Restream the stream to localhost.
Install OBS Studio
Install NVIDIA Audio Effects SDK:
https://www.nvidia.com/en-us/geforce/broadcasting/broadcast-sdk/resources/
Open OBS setup your stream to stream your desktop audio to a custom rtmp server on localhost.
File, Settings, Stream, Service: Custom..., "rtmp://<IP_ADDRESS>:1234"
Right click 'Desktop Audio' Audio Mixer, select 'Filters'
Click + bottom left, add Noise Suppression. Pick NVIDIA Noise removal. I set it to max level 100, it seems less aggressive than the Desktop version. (Click 'Start Recording' instead of 'Start Streaming' to check the effect on the audio.)
Then I changed this ffmpeg call in translator.py to keep trying to open a stream instead of bailing:
def open_stream(stream, direct_url, preferred_quality):
    if direct_url:
        try:
            process = (
                ffmpeg.input(stream, re=None, listen=1, loglevel="panic")
                .output("pipe:", format="s16le", acodec="pcm_s16le", ac=1, ar=SAMPLE_RATE, y=None)
                .global_args('-nostdin')  # Disable interaction on standard input
                .run_async(pipe_stdout=True)
            )
        except ffmpeg.Error as e:
            raise RuntimeError(f"Failed to load audio: {e.stderr.decode()}") from e

        return process, None

(Not sure all the FFMPEG parameters are needed, I brute forced it and stopped when it worked.)
Then run 'python translator.py --direct_url rtmp://<IP_ADDRESS>:1234' and wait a second until the script is listening, then click Start Streaming in OBS. This will stream your regular computer desktop audio, whatever you have playing, from any source. I'm sure someone who knows OSB can setup OBS in a more selective way so it's not ALL your desktop audio.
One the one hand, restreaming a stream to your computer is an abomination of a solution. On the other hand, OBS is a state of the art real time audio processing powerhouse -- so you could leverage any other audio processing in the chain here, the sky's the limit.
Also OBS should be able to use streamlink directly:
https://github.com/dd-center/obs-streamlink
That was separate stream and desktop audio cleanly. I tried it that plugin and it kept stuttering though.
While doing this I was thinking a second OBS instance could restream original audio and video, but with subtitles overlayed on top using OBS text/greenscreen features. And potentially delaying the video so the subs line up. A little overkill though.

This will stream your regular computer desktop audio, whatever you have playing, from any source. I'm sure someone who knows OSB can setup OBS in a more selective way so it's not ALL your desktop audio.

I'm trying out OBS for the first time, but I found that you can select "Application audio capture (BETA)" as a source and it does exactly what you want. So no need for streamlink in that case.
Integrating with OBS seems like an interesting idea. It would have quite a few nice features:

Changing audio inputs on the fly between mic / desktop audio / application audio
Noise suppression
Customizable OSD (as suggested in #6)
Runs on every platform supported by OBS

We would want a pipeline like:
OBS: capture audio & noise suppression -> ffmpeg: convert to 16kHz mono int16 -> whisper: decode -> OBS: overlay text on stream
There doesn't seem to be ways to pipe data in/out of OBS directly, the best we get is streaming to an URL. It would definitely be possible to do this with plugins/scripts, but I couldn't find any useful ones so far. Maybe I would have to build that myself. At that point, I think it would be easier to turn the entire pipeline into an OBS script.
It toyed around with that idea for a bit and unfortunately there are some roadblocks:
E.g., I couldn't find a way to activate virtual environments for OBS scripts, so one would either have to install everything in the global python install (yikes), or even dirtier... append site-packages of the venv to the path. It seems hacky but doable.

Customizable OSD (as suggested in Have you considered adding this stalled project UI functionality #6)

I've been poking at this. I think just outputting the captions to a webpage gets you a lot of the value by itself, without OBS. As long as you can point a browser at it, you can position it on screen where you want (even from Colab, with a little work), even make it transparent with some browser extensions. And it's just a web page so it's super easy for anyone to change the size, appearance, layout, use browser tools to auto translate the words, copy and paste, whatever.
You might also just check out how much work OBS had to do to integrate the NVIDIA tools. T
BTW faster_whisper integrated Silero Vad. Seems to have some rough spots so far, but could be a nice upgrade, and they'll improve the integration over time.
I'll post my translator.py experiments, but I ripped the guts out just messing around so it's sort of a mess and sort of refactored, and probably somewhat broken. Some of it was refactored by ChatGPT because I was trying to test out different processes of refactoring and this project was the perfect small size that fits entirely in the context window memory. Some cool actual upgrades like using numpy_ringbuffer, way too many list comprehensions added, and an amazing 100% failure rate every single time it tried to extract functions out of the long main() function for some reason.
BTW there's some cool features in this project that in a perfect world could be integrated. You can see the first-pass caption, and then the update when Whisper reruns given more context:
https://github.com/openai/whisper/discussions/608

I've seen some of the examples that do real time transcription and they're great but they all record short snippets of audio and then transcribe them one after the other. This has two problems:

The transcription is cut off since the audio is abruptly stopped.
Some of the speech will be lost since Whisper is blocking while transcribing.

I tackled these problems by always recording audio in a thread so there are no gaps and by concatenating the previous audio data with the latest recording. This allows you to rerun transcriptions on previously incomplete audio snippets. The result is that the model can correct issues from when it transcribed a recording that was cutoff.

https://github.com/davabase/transcriber_app
https://github.com/davabase/whisper_real_time

I'm pretty sure I made things worse but I left the code here anyway, as an example of using OBS like this for anyone else searching: https://github.com/JonathanFly/faster-whisper-livestream-translator


[SPARK-25422] DO NOT MERGE

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/3304/
Test PASSed.

Test build #96364 has started for PR 22496 at commit d328c1f.

Test build #96364 has finished for PR 22496 at commit d328c1f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96364/
Test PASSed.


Implement test case(s) for JsonReader::readEscapeCharacter

Implement test cases to achieve 100% branch coverage.
JsonReader::readEscapeCharacter<EMAIL_ADDRESS>

Already have 100% branch coverage when counting for Jacoco throw exception bugs.

Closed because the decision was made to choose methods individually.


Modifying an insert node based on its contents

Hi, I have an insert node i(1) that I would like to surround in parenthesis if it contains more than one comma separated value. Example foo vs (foo, bar).
I'm not sure at which point i(1) is expanded and can be evaluated. My naive first attempt was:
local function expand_return(position)
        return d(position, function()
        local nodes = { i(1) }
        local rtrn = vim.split(nodes[1],",", true)

        if #rtrn > 1 then
                table.insert(nodes, 1, t "(")
                table.insert(nodes, 3, t ")")
        end

                return sn(nil, nodes)

        end, {})
end

Is a dynamic node even the right thing to use here? I tried several permutations with function nodes but I always seemed to run into this chicken/egg problem with the insert node. (I also don't know lua, so may just be doing something dumb).

It's easier to use a couple of match :
local m = require("luasnip.extras").m

......
s(
  "return",
  fmt("return  {leftp}{val}{rightp}", {
    val = i(1, "username"),
    leftp = m(1, ",", "("),
    rightp = m(1, ",", ")"),
  })
),

@leiserfg that's nice, and I will definitely use that, thank you!
For the sake of my edification, if I wanted to dynamically update an insert node based on its value, is that something I'd be able to do? If so, when would it get expanded, and would the dynamic node be the right tool for the job?

That isn't possible I'm afraid, for that the dynamicNode would have to depend on itself, which isn't implemented.
So far I couldn't think of a usecase that isn't achievable otherwise.

Gotcha! Totally makes sense, just wanted to make sure I wasn't missing something there.
Thanks!


Add link to the upstream repo after quick-repo-deletion

Closes https://github.com/refined-github/refined-github/issues/5369

Test URLs
Gotta delete one of your own forks
Screenshot

Thanks @fregante!


Initializers for models?

It would be helpful if you could create a Stripe model (StripeCustomer for example) with an initializer. Although all of the models right now are structs, one easy way in Xcode to generate initializers is to make them classes temporarily and generate member wise initializer.

Will result in the following initializer.
Note we don't automatically get default nil values in the initializers.

This is easy but takes time is all.

@Andrewangeta Does it need to make for all classes inherited from StipeModel protocol?

@Andrewangeta Does it need to make for all classes inherited from StipeModel protocol?

Yea we still need to conform to that protocol because of the generic sending of the stripe request. My thinking is that we temporarily make them classes to generate the initializer and then make them structs again afterwards.

As an update Xcode 11.4 now can generate memberwise initializers from structs and also populates default values parameters.

Being addressed by #152


Add more workflow samples

Describe the proposal
Python and Java SDKs have provided sample codes based on the Dapr workflow pattern as mentioned in the official documents. However, dotnet SDK is yet to provide corresponding samples.
It is suggested to first add the following sample according to the documentation:

Task chaining
Fan-out/fan-in
Monitor
External system interaction

/assign

Looks like the work has been mostly completed and just needs to be reviewed/merged.

@MregXN I'm showing a merge conflict in the solution file for each of the referenced issues in this PR. If you can resolve that, I'd be happy to review these and get them merged in.


Limit the amount of concurrent jobs for a runner

Why
We have only 1 instance of custom runner, for now, so the resource is limited. We can't run too many jobs at the same time, i,e. when there are multiple PRs are submitted or people commit a lot at the same time and trigger the build.
Hence, we need to find a way to manage the task queue policy. Ideally, we could run 2 jobs/builds at the same time, this factored in the fact that we will run UI test with the emulator as well, so 2 Emulators at the same time should be enough on 1 MacBook (or more, we can recheck later).
Who Benefits?
The developers 💁♂

@sleepylee As far as I know, we don't have to worry about this issue for now as jobs are incapable of being executed simultaneously in a single runner. If we want to run multiple jobs at the same time I think we have to figure out how to create multiple runners in one machine 😭
Ref: https://github.community/t/parallelism-in-self-hosted-runners/17000/2

@chornerman can a machine has many runner to receive the command from github action? is it possible to run 2 different workloads on the same machine? Note that it doesn't mean running jobs on the same action, I mean, for example, running CI workflow for 2 different Pull Requests on the same machine.

@sleepylee Will try this after Bliss finishes setting up his IOS runner 😄 and will let you know the result. 🙏🏼

@sleepylee Yes, we can create multiple runners to run multiple workflows simultaneously 👍🏼

@sleepylee What do you think if we use the label to specify on a runner e.g. UI-test, that runner will have 2 label consist of self-hosted, UI-test, and one runner with the default label i.e. self-hosted.
So that we can target the UI-test for UI testing and when we run the Unit test, we don't specify the special label. Every time the UI-test will be run it will trigger only the UI-test labeled machine. So we can have only 1 Emulator. 🙏🏻

that would work, but as of now I think we don't have to include it yet. It seems more like an enhancement to me to orchestrate all the runners we will have, manipulate them effectively could be another topic

@sleepylee When we try to run 2 UI tests on 2 workflows simultaneously, It seems like it will try to use the same emulator, which will cause all the tests to be failed. With @lydiasama solution, we will resolve this conflict at the expense of being unable to run UI tests jobs simultaneously (can only run one emu at a time). Please let me know your thought on this. 🙏🏼

@sleepylee As our POC, that can be done in terms of configuration in a minute. 💯

👌 so just to resolve the issue with multiple runners on the same machine that's ok.


[Bug]: Long FQDN lines will break the tile layout

Description
Hi, I have a redirect service that takes a list of domains and redirects them to a base service. By adding a couple of domains I'm managed to break the fqdn line of the service overview.
Minimal Reproduction (if possible, example repository)

The PR from #1770 should fix it so long lines will wrap and stay inside the tile like this:

Exception or Error
No response
Version
v4.0.0-beta.221

Already fixed, just forgot to close this.


bug: useContractReads failing to infer a simple dynamic return type

Is there an existing issue for this?

[X] I have searched the existing issues

Package Version
0.6.8
Current Behavior
https://tsplay.dev/NdrlnW
Unsure if this is a bug, or expected. It's a simple case of a map with 2 potential return types so expected inference would work.
Expected Behavior
No response
Steps To Reproduce
No response
Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)
https://tsplay.dev/NdrlnW
Anything else?
No response

This is a limitation of TypeScript at the moment. See https://github.com/microsoft/TypeScript/issues/29841
Starting with the following tuple:
const types = [RewarderType.Primary, RewarderType.Secondary] as const
//    ^? const types: readonly [RewarderType.Primary, RewarderType.Secondary]

Then mapping it:
const { data } = useContractReads({
  contracts: types.map((type, i) => { … })
  // ^? ({ functionName: 'pendingSushi', … } | { functionName: 'pendingTokens', … })[]
)}

Results in an array of union type instead of a fixed tuple so inference fails.

@tmm in that case, I guess the only option is to cast it.
e.g.
const _data = data as (BigNumber | { rewardAmounts: BigNumber[] })[]


Add support for incremental OAuth 2.0

See:
https://developers.google.com/accounts/docs/OAuth2WebServer#incrementalAuth
By sending the query parameter include_granted_scopes=true, previous authorizations can be wrapped into new tokens (when new scopes are needed).

Thank you for creating this issue, however, this project is deprecatedand we will only be addressing critical security issues. You can read moreabout this deprecation here.
If you need support or help using this library, we recommend that you ask yourquestion on StackOverflow.
If you still think this issue is relevant and should be addressed, pleasecomment and let us know!


More Strace Fixes

We found a few errors in the strace feature which @rupeshkoushik07 is working on. Making an issue to keep track of progress.
Step 1: Fix existing issues
1a. Ordering issue
We found that some of the args were being printed in a different order than how they appear in the syscall. Rupesh is attempting to match those to how the appear on each syscalls manpage.
2a. Signing issue
We're seeing that some calls are returning large numbers where we think they should be returning negative numbers (errnos). There seems to be some signing/conversions issues that I'm not sure about. Can you look into this and fix it?
15 stat(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset/0.1, 0x7f4f68538730) =<PHONE_NUMBER>
15 open(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset/0.0, 578, 384) = -2
15 mkdir(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset, 448) = 0
16 stat(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset/1.1, 0x7f4f68322730) =<PHONE_NUMBER>
16 open(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset/1.0, 578, 384) = -2
16 mkdir(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset, 448) =<PHONE_NUMBER>
16 mkdir(base/pgsql_tmp/pgsql_tmp15.0.sharedfileset, 448) =<PHONE_NUMBER>

Step 2: Implement strace -c functionality
We want to implement functionality like strace does with -c. This lists all the calls that are made and the amount of times each called is made as well as the average time.
For example this is the -c output for 'ls'
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
  0.00    0.000000           0         7           read
  0.00    0.000000           0       150           write
  0.00    0.000000           0        12           close
  0.00    0.000000           0        11           fstat
  0.00    0.000000           0        28           mmap
  0.00    0.000000           0         8           mprotect
  0.00    0.000000           0         1           munmap
  0.00    0.000000           0         5           brk
  0.00    0.000000           0         2           rt_sigaction
  0.00    0.000000           0         1           rt_sigprocmask
  0.00    0.000000           0         2           ioctl
  0.00    0.000000           0         8           pread64
  0.00    0.000000           0         2         2 access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         2         2 statfs
  0.00    0.000000           0         2         1 arch_prctl
  0.00    0.000000           0         1           futex
  0.00    0.000000           0         2           getdents64
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0        10           openat
  0.00    0.000000           0         1           set_robust_list
  0.00    0.000000           0         1           prlimit64
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                   258         5 total

To do this we need to do several things

Have lind accept a flag to turn this setting on (@yizhuoliang can you show rupesh how to do this), and set a global boolean to true
setup a system probably using arrays to store the count and total time for each call
for each strace function, if the boolean is set, increment the count and record start and end times for the call, add the difference in a time array to total it
at the end, format and print the stats

This issue has been addressed in the following  PR

This was completed by @rupeshkoushik07 . Thanks for your help! He's even added sortable -c output.


Logic Uses Username as a DB name

Summary
When a backup of my Postgres DB occurs, I get an error on Postgres side saying that a specific target DB doesn't exist. However, the DB that is being incorrectly targeted is the given username.
Steps to reproduce

Setup a backup using the below provided env var.
Allow backup to occur and observe the error message on the Container & Postgres instance respectively. Provided below.

What is the expected correct behavior?
Do not use the given username as a target DB.
Relevant logs and/or screenshots
Container
...
2022-12-21.23:20:57 [NOTICE] ** [timezone] Timezone: Setting to 'Africa/Johannesburg' from 'Etc/GMT'
2022-12-22.01:20:57 [NOTICE] ** [scheduling] Container configured for scheduled tasks with 'cron'
2022-12-22.01:20:59 [STARTING] ** [scheduling] [1] Starting cron
2022-12-22.01:21:03 [INFO] ** [db-backup] Next Backup at 2022-12-22 01:21:03 SAST
2022-12-22.01:21:04 [NOTICE] ** [db-backup] Dumping all PostgreSQL databases: 'nextcloud' and compressing with 'zstd'
psql: error: connection to server at "db" (<IP_ADDRESS>), port 5432 failed: FATAL:  database "nextcloud_owner" does not exist
...

Postgres
...
2022-12-21 23:21:04.062 UTC [25527] FATAL:  database "nextcloud_owner" does not exist
...

Environment
Env vars:
  TIMEZONE=Africa/Johannesburg
  CONTAINER_ENABLE_MONITORING=FALSE
  SPLIT_DB=FALSE
  DB_TYPE=pgsql
  DB_HOST=db
  DB_PORT=5432
  DB_NAME=nextcloud
  DB_USER=nextcloud_owner
  DB_PASS=[REDACTED]
  DB_DUMP_FREQ=180
  DB_CLEANUP_TIME=1440
  CHECKSUM=SHA1
  COMPRESSION=ZSTD
  COMPRESSION_LEVEL=6

Image version / tag:   <= 3.7.3
Host OS: Debian

Possible fixes
I think the problem lies somewhere here?
https://github.com/tiredofit/docker-db-backup/blob/a90e52091d480f50a1400ce4104134ebfa567389/install/assets/functions/10-db-backup#L266

I just found this and tried getting it going and I have this same issue. What is the resolution?

You can try enabling DEBUG_MODE=TRUE and in the wave of output look to see what the pg_dump command is doing - That will help see what the problem is and I can provide a fix.

Okay, will try. Thanks. On the subject of pg_dump, our first read in the official docs then unless you specify to backup everything in the database, it isn't a 100% backup. Is this a complete backup of anything I would need?

I suppose there could be some cases where something couldn't be backed up - perhaps indexes, or some sort of stored procedures - There is an EXTRA_OPTS variable that lets you append anything onto the dump command for those sort of cases. I have yet to run into it myself, but there are may users of this image, so perhaps they will give some insight..

I was able to work around just by naming all the databases specifically. Even just naming any made it work. ALL for some reason has it trying the username as the db_name, but only when ALL is in db_name.
Reading about complete backup, the pg_dumpall, I was referring to the following:
"pg_dump dumps only a single database at a time, and it does not dump information about roles or tablespaces (because those are cluster-wide rather than per-database). To support convenient dumping of the entire contents of a database cluster, the pg_dumpall program is provided. pg_dumpall backs up each database in a given cluster, and also preserves cluster-wide data such as role and tablespace definitions. The basic usage of this command is:"
Is there a way to run a dumpall with this? I don't know how important what would missing would be, but if it was a problem if it wasn't there, then the backup would be incomplete, which of course I don't want.

Just wanted to report that I'm also facing the same issue. I get the error @Iceman248 posted, but upon inspecting the created dump, all the database data is... present? Weird...

Having the same issue, FATAL:  database "my actual username" does not exist

@rursache Does the workaround @Iceman248 mentioned in this comment work for you? I encountered this bug too, and it successfully backs up multiple databases if $DB_NAME is a comma-separated list.
For example DB_NAME="foo,bar" will create backups for the databases named "foo" and "bar.
This section of the documentation explains the different DB_NAME options in a bit more detail: https://github.com/tiredofit/docker-db-backup/tree/a90e52091d480f50a1400ce4104134ebfa567389#database-specific-options

@rursache Does the workaround @Iceman248 mentioned in this comment work for you?

it does, indeed. not as elegant as using ALL but whatever works :)

@rursache Does the workaround @Iceman248 mentioned in this comment work for you?

As I raised it, I'm selecting one DB only in my setup, and it seems to exhibit two strange behaviours. One is the original issue (using the username as a DB name) and the other is that the backup logic automatically uses ALL instead of the only given name outline, only if there is one DB name given.
2023-02-16.21:17:28 [NOTICE] ** [db-backup] Dumping all PostgreSQL databases: 'outline' and compressing with 'zstd'
psql: error: connection to server at "db" (<IP_ADDRESS>), port 5432 failed: FATAL:  database "outline_owner" does not exist
2023-02-16.21:17:35 [INFO] ** [db-backup] DB Backup of 'pgsql_all_db_20230216-211728.sql.zst' completed successfully
2023-02-16.21:17:35 [NOTICE] ** [db-backup] Generating SHA1 for 'pgsql_all_db_20230216-211728.sql.zst'
2023-02-16.21:17:35 [NOTICE] ** [db-backup] Backup of pgsql_all_db_20230216-211728.sql.zst created with the size of 183507 bytes
2023-02-16.21:17:35 [NOTICE] ** [db-backup] DB Backup for 'all' time taken: Hours: 0 Minutes: 00 Seconds: 07
2023-02-16.21:17:35 [INFO] ** [db-backup] Backup routines finish time: 2023-02-16 21:17:35 SAST with overall exit code 0
2023-02-16.21:17:35 [NOTICE] ** [db-backup] Backup routines time taken: Hours: 0 Minutes: 00 Seconds: 07
2023-02-16.21:17:35 [INFO] ** [db-backup] Cleaning up old backups on filesystem
2023-02-16.21:17:35 [NOTICE] ** [db-backup] Sleeping for another 10793 seconds. Waking up at 2023-02-17 00:17:28 SAST

I am having the same issue and I think the underlying problem is the same as pointed out here: https://github.com/tiredofit/docker-db-backup/issues/135

(somewhat obvious but maybe worth pointing out) if DB_NAME and DB_USER are the same, it works (assuming that you don't use ALL as your db name).
If you don't use ALL as the DB_NAME AND you specify SPLIT_DB=TRUE it should work (still waiting for a backup job to finish in order to verify)

Using ALL runs into https://github.com/tiredofit/docker-db-backup/blob/a90e52091d480f50a1400ce4104134ebfa567389/install/assets/functions/10-db-backup#L269 where it uses -d ${authdb}
Using SPLIT_DB=FALSE runs into https://github.com/tiredofit/docker-db-backup/blob/c1d2dc30ac1c5d80d3cea2ae7172aa5498e6242c/install/assets/functions/10-db-backup#L343 where it uses -d ${authdb}

Release 4.0.0 https://github.com/tiredofit/docker-db-backup/releases/tag/4.0.0 has support for different authentication DBs for Postgresql, courtesy of @alwynpan

This issue has been resolved with the latest major version 4.x

Thanks!


Container Service: Regional endpoint is not selected

Hi--,
the regional endpoint of container service is not correctly selected based on the --region parameter.
For example, if you call
$ aliyun cs DescribeClusters --region="eu-central-1
the endpoint selected is https://cs.aliyuncs.com/clusters which is not correct. It should be https://cs.eu-central-1.aliyuncs.com/clusters
This needs to be fixed, because cs.aliyuncs.com resolves to an IP in Mainland China which sometimes results on connection resets when called from outside of Mainland China. Thanks.

Please use like this: aliyun cs DescribeClusters --endpoint=cs.eu-central-1.aliyuncs.com

The workaround suggested works but it would be great if the --endpoint flag was not needed at all. The CLI should select the right endpoint automatically based on the --region flag. This is the convention that all other services also follow.

We will use regional endpoint for avoid connection reset.

The 3.0.82 fixed it.


DAP docs (pre-alpha) - Linux/Firefox has blank pages

Some images are named myImg.PNG but referenced in code as myImg.png. Linux is case-sensitive when referencing files. Maybe change all file extensions to .png rather than .PNG

This turned out to be problematic. The pull request from the fork by Ezra lost track of all images with the extension .PNG (caps). No big deal I just added them back in. But once the merge was completed the repo api3dao/api3-docs repo somehow merged its main back to EzraWeller/api3-docs branch dao-docs. Oddest thing. What can I say, it works now.


Feature/initial-setup

Creates the initial configuration of the development environment. Configures Nestjs, Postgres, Prisma, and creates a default service for Prisma.

It's all right, we can close this pr now


v0.8 Still Exhibits Poor Lane Detection of Black Colored Lane Markers

Describe the bug

Continuation of https://github.com/commaai/openpilot/issues/2210
Lines on the highway are painted black (seem to be painted over) but lane reflectors are still present, and seem to have enough contrast that I and other drivers can tell where lane markers are . When Comma is activated it does not see lane markers and will sometimes ride over the lines or get very close to the lane marker it does not see.
How to reproduce or log data

Driving South Bound on Hwy 101 from Morgan Hill, CA to Gilroy, CA will reproduce this consistently.
Expected behavior

If I and all other drivers can see the lane dividers then Comma should also "see" the lane markers too, so that my vehicle can stay centered in the lane and not begin to ride over the line.
Device/Version information (please complete the following information):

Device: Comma Two
Dongle ID: bdad50b8a1f9fa8e
Route: bdad50b8a1f9fa8e_2020-11-14--12-08-53--28
Timestamp: Starts around 23 minutes into drive
Version: master-ci f6568592391fd71303d1b6ac2ec907c45a57f1cd
Car make/model: 2020 Toyota Rav4 Hybrid LE

Additional context

Thanks for the report. We are trying to move away from using lanelines for pathplanning. As we progress with this, behavior should improve.

This was a bad definition choice, we are working on it now. See #comma-pencil on discord to come help. Hopefully fixed in 0.8.2


hu values

Discussed in https://github.com/dewenni/ESP_Buderus_KM271/discussions/26

Originally posted by kalleick May  6, 2023
I implemented option 2 (with original KM271) and ESP32.
I get the setting values in the dashboard (e.g. automatic operating mode, burner on/off), but all temperature values are marked with "hu".
So the communication seems to work in principle.
But why am I not getting any readings?
Does it take a long time to see values or is there a defect?

should be fixed in Release v3.2.0


Merge into stable: [lldb] Add support for "external" reports in ThreadSanitizer LLDB plugin

TSan now has the ability to report races on "external" object, i.e. any library class/object that has read-shared write-exclusive threading semantics. The detection and reporting work almost out of the box, but TSan can now provide the type of the object (as a string). This patch implements this into LLDB.
Differential Revision: https://reviews.llvm.org/D30024
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@295342 91177308-0d34-0410-b5e6-96231b3b80d8

@swift-ci please test

@swift-ci please test

@kubamracek is this one still relevant?

@dcci No, looks like this is already in via a rebranch. Closing.


In IE link ui dialog doesn't appear

In IE link UI dialog doesn't appear because it use window.scrollX and window.scrollX that doesn't work in IE.
I determine what to use in this case with conditions on page offset support.

@wrench13 thanks again for these, quick question which version of IE is this an issue in? Is it all of them?

BTW I ask because I'm currently considering dropping support for 9 as it's such a small user base now and most of the workarounds in the code are for IE9. I suspect this is a IE10  problem too reading some posts online.
What are your thoughts on IE9 support, do you think it's still worth it, or is it better to move to IE10 as the base IE browser?

I confirm I saw the same issue on IE10, link tooltip doesn't show when testing on client windows laptop. I told them to use Chrome for now.

What do you think about dropping IE9 support @guillaumepiot?

I think supporting for IE9 is now obsolete since there's currently 0.4% of users according to W3 stats.
http://www.w3schools.com/browsers/browsers_explorer.asp
Also considering that the tools will be mostly used by website administrators, I would always advised the clients to run the latest version of their favourite browsers.
I think we should leave the current bug fix in place for IE and focus on IE10 and above for further enhancement. It would then be up the developer to add backward compatibility on a project basis.

From looking at a broad audience website analytics, IE 10 & 11 constitute about 85% of the IE traffic. IE traffic being only 10% of total traffic.

@anthonyjb I had same issue on IE9, 10 and 11 on windows.
@guillaumepiot I agree with you on IE9 support.

OK excellent so I think as part of release 1.4 (so after the next minor release) we'll look to drop support for IE9 so that we can remove some of the workarounds currently in place for things like CSS class management.
I'm away for a couple of days now but once I'm back I'll merge this and any other IE bug fixes in and they can go out in the next patch release (1.2.3).

Thanks again @wrench13 :+

Hi @wrench13 - in the end I've used your pull request to write a general function for getting the scroll position cross browser (just figure it's bound to be useful for other tools). Thanks again for your help here.

Sounds great ! I'm away from my computer for few weeks, sorry for my silence on your question.


Split data_preparation.data_labeling() function

The data_preparation.data_labeling() function as currently written reads in a pre-created csv of training data. This function, however, also has the code (but it's currently ignored) to create a new set of training data (related to #13 ) from a shapefile and sample Planet image.
This should be broken into two separate functions:

create new training data
load existing training data

Making a comment to remember to test the two functions I've created and to write some documentation for parameters.

Try with the non clipped version


Rx2 extension: Issue with incorrect emitting data in the RXSQLite.rx(...) -> RXModelQueriableImpl.queryStreamResults()

DBFlow Version: 4.0.0-beta7
Issue Kind: Bug
Description:
The calling CursorResultFlowable.CursorResultObserver.disposable.isDisposed() returns true all the time. For example: https://github.com/Raizlabs/DBFlow/blob/master/dbflow-rx2/src/main/java/com/raizlabs/android/dbflow/rx2/language/CursorResultFlowable.java#L80
Explanation:
In the CursorResultFlowable.CursorResultObserver the Disposable object is always disposed because it is created by SingleFromCallable when calling RXModelQueriableImpl.queryResults().  The SingleFromCallable.subscribeActual(SingleObserver) calls singleObserver.onSubscribe(EmptyDisposable.INSTANCE) wich is in state disposed befor callin singleObserver.onSuccess(v). In our case the singleObserver is CursorResultObserver (nestet class of the CursorResultFlowable).
see my PR: https://github.com/Raizlabs/DBFlow/pull/1244
Temporary fix for Rx2 extension:
compile('com.github.ultraon.DBFlow:dbflow-rx2:597b22e4be') {         exclude group: "com.github.ultraon.DBFlow"     }

oy my apologies. this never got addressed. CursorResult doesnt exist anymore in 5.0.0-alpha1. The way that transactions work now, you don't need it. Transaction return a value, removing need for a CursorResult object since now you can just return a Cursor from the transaction execution. This method no longer exists.