spritesheet margin vs spacing

http://docs.phaser.io/Phaser.Loader.html#spritesheet
The documentation is a bit unclear. What is the difference between those ?
I couldn't find any examples, would be nice to have some clearer description.
margin	number	<optional> 0
If the frames have been drawn with a margin, specify the amount here.

spacing	number	<optional> 0
If the frames have been drawn with spacing between them, specify the amount here.

If I recall, spacing is like CSS padding between sprite images. Margin is
around the entire sheet.
On Jan 1, 2015 5:28 PM, "fyyyyy"<EMAIL_ADDRESS>wrote:

http://docs.phaser.io/Phaser.Loader.html#spritesheet
The documentation is a bit unclear. What is the difference between those ?
I couldn't find any examples, would be nice to have some clearer
description.
also here;

@property {number} tileMargin - The margin around the tiles in the sheet.
*/
this.tileMargin = margin;

/**    * @property {number} tileSpacing - The margin around the tiles in the sheet.    */
this.tileSpacing = spacing;

—
Reply to this email directly or view it on GitHub
https://github.com/photonstorm/phaser/issues/1501.

If I recall, spacing is like CSS padding between sprite images. Margin is
around the entire sheet.
On Jan 1, 2015 5:28 PM, "fyyyyy"<EMAIL_ADDRESS>wrote:

http://docs.phaser.io/Phaser.Loader.html#spritesheet
The documentation is a bit unclear. What is the difference between those ?
I couldn't find any examples, would be nice to have some clearer
description.
also here;

@property {number} tileMargin - The margin around the tiles in the sheet.
*/
this.tileMargin = margin;

/**    * @property {number} tileSpacing - The margin around the tiles in the sheet.    */
this.tileSpacing = spacing;

—
Reply to this email directly or view it on GitHub
https://github.com/photonstorm/phaser/issues/1501.

Correct. Margin is like the x/y offset from the top-left of the image that the sprites start from. Where-as spacing is the space between each frame (if any).

                                        ^
                                  margin_y
                                        v
< margin_x >  A  < spacing_x > B < spacing_x > C
                                        ^
                                  spacing_y
                                        v
< margin_x >  X  < spacing_x > Y < spacing_x > Z

Thanks, this makes sense now :+1:
I have a spritesheet with different horizontal vs vertical spacing, so this won't work with phaser i will have to change it in photoshop.


Help with a verified implementation of a queue (really #580)

Simon Sini asks on fstar-club:
"
Hi there,
my name is Simon and im an undergraduate student at the university of Milan, Italy.
I've just approached fstar in last few weeks and i've followed the tutorial, even though, i have to admit,
I found the second part of it pretty tough.
In order to practice and get a little bit more familiar with the language i decided to write a verified Queue module,
using the usual functional implementation with 2 lists: one for the front and the other for the back.
I know that's probabaly very basic but
unfortunately i found myself in trouble with some part of the code, expecially with the remove function.
So I was wondering if, posting my code or giving a link of the file on GitHub (better i guess), someone could help me out with it.
Let me know if that's ok please and i will give the code.
Thank's everyone in advance.

Regards.
Simon
"
And
"Hello there,
hope all is good with everyone of you!!
My name is Simon, As I mentioned in a previous mail, I'm a bit struggling with a verified implementation of a queue.
This is the link to my code :
https://github.com/simosini/FStar/blob/master/Queues.fst
Problems and doubts I'm having are fully explained in the comments.
Any help or suggestion will be much appreciated.
Many thanks in advance.
Regards.
Simon
"

About this question in the code https://github.com/simosini/FStar/blob/master/Queues.fst
If I change this to:
type queue 'a =
  | Q : #n1:nat -> #n2:nat{n2 <= n1} -> front:sList 'a n1 -> back:sList 'a n2 -> queue 'a
that is I just moved the refinment from the back list to #n2, it does accept the emptyQ
declaration but it wont verify the makeQ function (written later)

This is an unfortunate, but known issue. See #580 and our plan to fix it by moving to a 2-phase type-checker: https://github.com/FStarLang/FStar/wiki/A-roadmap-for-F* by

Indeed, the troubles you're facing in this file are all due to this annoying #580 issue.
Here's an edited version of your file that verifies.
module Queues

(* Queue implementation Okasaki's style: 2 lists,
   the front list which represents the front of the queue where to retrieve elements,
   the back list, kept reversed, which represents the back of the queue.
   As suggested by Okasaki I impose the invariant on the size of the 2 lists :
   the front size must not be smaller than the back one.
   http://www.westpoint.edu/eecs/SiteAssets/SitePages/Faculty%20Publication%20Documents/Okasaki/jfp95queue.pdf
*)

(* As implemented in fstar/example/data_structures/Vector.fst *)
type sList 'a : nat -> Type =
  | Nil  : sList 'a 0
  | Cons : hd:'a -> #n:nat ->  sList 'a n -> sList 'a (n+1)

(* Im trying to provide examples all over the file to double-check im doing right *)

let okSl1 = Cons 2 Nil
let okSl2 = Nil
let okSl3 = Cons 1 okSl1

(* A function to retrieve the carried size of the list *)

val size : #a:Type -> #n:nat -> sList a n -> Tot nat
let size #a #n _ = n

let okSize   = assert (size okSl1 = 1) //accepted
//let badSize  = assert (size okSl3 = 3) should be 2 so not accepted (OK)
let okSize2 = assert (size okSl3 = 2) //accepted

(* We now need a couple of functions to retrieve the elements of the list. *)

(* n must be pos cause we dont allow the call of hd and tl on empty lists *)

val hd : #a:Type -> #n:nat -> sl:sList a n{n > 0} -> Tot a
let hd #a #n sl = match sl with
  | Cons h _ -> h

//let el1 = hd Nil not accepted (OK)
let el2 = hd okSl1 //accepted

val tl : #a:Type -> #n:nat -> sl:sList a n{n > 0} -> Tot (sList a (n-1))
let tl #a #n sl = match sl with
  | Cons _ rest -> rest

// let badTl = tl Nil not accepted (OK)
let okTl  = tl okSl1 //accepted

(* reverse and append needed for the remove and insert operations on the queue *)

val append : #a:Type -> #n1:nat -> #n2:nat ->
             sList a n1 -> sList a n2 ->
             Tot(sList a (n1+n2))
let rec append #a #n1 #n2 sl1 sl2 = match sl1 with
  | Nil         -> sl2
  | Cons h rest -> Cons h (append rest sl2)

val reverse : #a:Type -> #n:nat -> sList a n ->
              Tot(sList a n)
let rec reverse #a #n sl = match sl with
  | Nil         -> Nil
  | Cons h rest -> append (reverse rest) (Cons h Nil)

let okReverse = assert (reverse okSl3 = Cons 2 (Cons 1 Nil)) //accepted
//let badReverse = assert (reverse okSl1 = Nil) not accepted (OK)

(* Let's now give a queue type made up of 2 sized Lists imposing that the size of the
first list (the front of the queue) is never smaller than the second one (the back) *)

(* Important Note!!! The type given  after this comment  doesn't accept the binding
let emptyQ = Q Nil Nil
but verifies the makeQ function.
If I change this to:
type queue 'a =
  | Q : #n1:nat -> #n2:nat{n2 <= n1} -> front:sList 'a n1 -> back:sList 'a n2 -> queue 'a
that is I just moved the refinment from the back list to #n2, it does accept the emptyQ
declaration but it wont verify the makeQ function (written later)
*)
type queue 'a =
  | Q : #n1:nat -> #n2:nat -> front:sList 'a n1 -> back:sList 'a n2{n2 <= n1} -> queue 'a

//let emptyQ = Q Nil Nil not accepted but it should
let okQ = Q okSl1 Nil //accepted
// let badQ = Q Nil okSl1 not accepted the first list is shorter (OK)

(* In order to transfer the element from the back to the front we give a rotate function.
Mind that this function is only called when the front list is one element smaller than the
back so as the re-balance them. The refinment {n2 > n1 ==> n2 = n1 + 1} is needed for the
makeQ function and it's explained in the next comment. What i actually need though is proving
that rotate is actually called only when size back = size front + 1, but with this refinment
the makeQ function wouldn't work.

****************************Question: How can I do that???? **********************)

val rotate : #a:Type -> #n1:nat -> #n2:nat ->
             f:sList a n1 -> b:sList a n2{n2 > n1 ==> n2 = n1 + 1} -> Tot (sList a (n1 + n2))
let rotate #a #n1 #n2 f b = append f (reverse b)

(* Let's now implement a queue constructor in charge of preserving the invariant.
The makeQ function is called after every operation on the queue.
Note that by using n2:nat{n2 > n1 ==> n2 = n1 + 1} what I would like to say is :
IF the back list is bigger the front than it can only have 1 element more than it.
Otherwise ,that is if n1 happens to be bigger or equal to n2,  then n1 and n2 can have any nat value.
****************** Question: Is that true? How can I impose that otherwise? **************)

val qSize : queue 'a -> Tot nat
let qSize (Q f b) = size f + size b

let okqSize = assert (qSize okQ = 1) // accepted
// let badqSize = assert (qSize okQ = 2) not accepted (OK)

val makeQ : #a:Type -> #n1:nat -> #n2:nat ->
            f:sList a n1 -> b:sList a n2{n2 > n1 ==> n2 = n1 + 1} -> Tot (q:queue a{qSize q = n1 + n2})
let makeQ #a #n1 #n2 f b =
  if n1 < n2  then Q (rotate f b) Nil
  else Q f b

(* recall that : okSl1 = [2] ; okSl3 = [1;2] ; okSl2 = [] *)
let okMakeQ1 = assert (Q (Cons 2(Cons 2(Cons 1 Nil))) Nil = makeQ okSl1 okSl3)
let okMakeQ2 = assert (Q (Cons 1(Cons 2 Nil)) (Cons 2 Nil) = makeQ okSl3 okSl1)
// let okMakeQ3 = assert (Q Nil Nil = makeQ okSl2 okSl2) //not accepted but it should

(* Ok now the 2 main operations on the queue : insert and remove.
To insert an element we just Cons it to be back list *)

val insert : #a:Type -> el:a -> q1:queue a -> Tot (q2:queue a{qSize q2 = qSize q1 + 1})
let insert #a el q = match q with
  | Q f b -> makeQ f (Cons el b)

(* If the queues is not empty than the front list must at least have one element because of the invariant *)

val notEmpty : queue 'a -> Tot bool
let notEmpty (Q f _) = size f > 0

(* To remove an element we just 'unCons' it from the front list *)

(* This function cannot be verified as it is, because hd and tl have a subtype error :
they expect a pos sList but they got a nat sList. For this reason I imposed q1 not to be empty
which means size f > 0 that is f has pos size. Despite this, the check does not work.
I understand that, maybe, a Lemma is needed to prove that.
Something like :
if the queue is not empty than the call of hd and tl on the front list is safe.
*************************** Question : How can i do that?? ********************************
*)

val remove : #a:Type -> q1:queue a{notEmpty q1} -> Tot (el:a * q2:queue a{qSize q2 = qSize q1 - 1})
let remove #a q = match q with
  | Q f b -> hd f, makeQ #_ #(size f - 1) (tl f) b

Let me explain how #580 is manifests itself here.
Say you have
val f : #n:nat -> slist bool n -> Tot unit
val k : nat
val l : slist bool k

Now, when you write
```f l``
F* tries to infer t the instantiation of #n by introducing a new unification variable ?u and solving it by unifying slist bool ?u with slist bool k, i.e., picking ?u = k. It then has to check that the solution is well-typed, i.e., in this case it has to check that k has type nat, which it does, so everything is ok.
Now, say you had:
val g : #n:nat{n > 0} -> slist bool n -> Tot unit

and you wrote
 if k > 0 then g l else ()
Again, F* tries to instantiate #n by solving a unification constraint as before, and finding the solution to be k. Now, it checks whether k has the type expected by g, i.e., whether k:nat{k > 0}. This time, the check fails, because of a limitation in how this check is implemented in F*. In particular, in the case of checking the solutions to unification constraints, F* does not make use of the control flow of the program. So, despite the test of k>0 in this context, F* in this setting cannot prove that k is greater than zero.
Now, if instead you had written:
val g : #n:nat -> l:slist bool n{n > 0} -> Tot unit

Just moving the refinement away from the implicit argument (as you did in the type of Q) then the problem goes away.
This is clearly undesirable behavior that we're working hard on fixing. Meanwhile, one rule of thumb is to not refine your implicit arguments, instead placing those refinements in semantically equivalent contexts, but attaching them to explicit arguments. This is what I've done in a few places in your code.
Another option (usually less pleasant) is the style I used in the last remove function. In that case, you can explicitly instantiate your implicit arguments using the # notation. Note, the implicit arguments are positional. So, in this case, by writing makeQ #_ #(size f - 1) (tl f) b, I have instantiated the first implicit argument to an unspecified term, provided an explicit instantiation for the second one, and the third one is left implicit.
Sorry for this rather troublesome and confusing issue.

Finally, you might also consider a different style altogether for your example, relying less on indexed types in favor of refinement types and total functions.
For example, just use the regular list type in F* and the FStar.List.Tot library, i.e., something like:
module Queues
open FStar.List.Tot
type queue a =
 | Q  : front:list a -> back:list a {length back <= length front} -> queue a

let rotate (#a:Type) (f:list a) (b:list a{length b > length a ==> length b = length a + 1})  : l:list a{length l = length a + length b} = append f (reverse b)

You may find some of the lemmas proven in ulib/FStar.ListProperties helpful, although I notice now that not all the lemmas you will need for your example are present, e.g., lemmas about the length of rev are missing, but should be easily provable.

@nikswamy
First of all many thanks for your clear and very helpful explanation.
I do understand now where I was wrong, and I really appreciate the fact that you guys are working hard on that issue.
The only other question I have, probably due to my lack of knowledge (as I told you I'm just a beginner),
is that I don't understand why this let binding about an empty queue, it's not accepted :
let empQ = Q Nil Nil
In fact whenever I try to verify this I got this weird (to me) error message :
Error: Unexpected error; please file a bug report, ideally with a minimized version of the source program that triggered the error.
Failure("Universe variable not found").

If you go with NikSwamy's implementation above, let empQ = Q Nil Nil works just fine.
The error looks like F# is unable to infer what universe empQ is in, perhaps annotating these explicitly will help for now?
Mixing implicits declared as #a and 'a seems to cause a lot of problems, so perhaps a refactor to avoid that would help.

Sorry to bother you again with this example, but that's still one thing I can't figure out.
The remove function returns a tuple (el,newQ), that is the element removed plus the new queue.
Anyway if I write :
let (el,newQ) = remove someOtherNotEmptyQ
I got Error : unexpected pattern at top-level
If i write this instead :
let aTuple = remove someOtherNotEmptyQ
it works fine and, indeed, it accepts :
let assertion = assert (aTuple = (el,newQ))
My question is : why the first let is not accepted?? Am I doing something wrong??
Thanks everyone

The error is a shortcoming of the current implementation of F*. Basically any toplevel declaration must be either a variable or a function. However, you can very well write
let (el,newQ) = remove someOtherNotEmptyQ if it is not a toplevel let-binding.
I don't remember why we are not handling that. @nikswamy might be able to tell you more about this issue. AFAIK we could as well elaborate
let (el,newQ) = remove someOtherNotEmptyQ
to
let tmp_el_newQ = remove someOtherNotEmptyQ

let el = match tmp_el_newQ with | (el, newQ) -> el
let newQ = match tmp_el_newQ with | (el, newQ) -> newQ

Closing the thread since toplevel pattern have been implemented since then. So your code shoudl be working as is now @simosini


Anyway to detect Deletion of Subscribed Node

I have Subscribed to this.af.object("/users/" + this.uid) in my code.
Now in a scenerio if this node gets deleted from firebase .
The Subscriber is not called .
I dont want to subscribe on "users" directly.
Is their any way to detect such changes.

Hi @bhawin-bigstep! This question is best suited for Stackoverflow as this repo is dedicated to troubleshooting library issues.


[SPARK-27637][Shuffle][FLLOW-UP]For nettyBlockTransferService, if IOException occurred while create client, check whether relative executor is alive before retry #24533

What changes were proposed in this pull request?
In pr #24533 , it prevent retry to a removed Executor.
In my test, I can't catch exceptions from
 new OneForOneBlockFetcher(client, appId, execId, blockIds, listener,               transportConf, tempFileManager).start()
And I check the code carefully， method start() will handle exception of IOException in it's retry logical, won't throw it out. until it meet maxRetry times or meet exception that is not  IOException.
And if we meet the situation that when we fetch block , the executor is dead, when we rerun
RetryingBlockFetcher.BlockFetchStarter.createAndStart()
we may failed when we create a transport client to dead executor. it will throw a IOException.
We should catch this IOException.
Why are the changes needed?
Old solution not comprehensive. Didn't cover more case.
Does this PR introduce any user-facing change?
No
How was this patch tested?
Existed Unit Test

Can one of the admins verify this patch?

gentle ping  @cloud-fan @felixcheung

Can one of the admins verify this patch?

Can one of the admins verify this patch?

ok to test

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/14245/
Test PASSed.

Test build #109174 has started for PR 25469 at commit e2dbe4b.

Test build #109174 has finished for PR 25469 at commit e2dbe4b.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

@cloud-fan  strange test result of Unit test.  The shown failed Unit test can be run correctly in my computer

retest this please

@AngersZhuuuu ok, the other prs hit the same errors, so they are not related to this pr.

@AngersZhuuuu ok, the other prs hit the same errors, so they are not related to this pr.

Got it, thanks.

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/14253/
Test PASSed.

Test build #109183 has started for PR 25469 at commit e2dbe4b.

Test build #109183 has finished for PR 25469 at commit e2dbe4b.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

@maropu  passed test but seem failed due to some strange reason

retest this please

Test build #109199 has started for PR 25469 at commit e2dbe4b.

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/14269/
Test PASSed.

Test build #109199 has finished for PR 25469 at commit e2dbe4b.

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/109199/
Test PASSed.

thanks, merging to master!


Text wrapping

As SVG <text> elements are terrible at wrapping, we may need to implement custom logic to auto-wrap text. We currently use rvg.js to do our SVG rendering, we this change may have to be part of that package, rather than part of CardKit itself.

PR #72 is starting the work to support this, however much more needs to be done


Fix security issues with the npm version

Summary
Security alert with npm version used https://github.com/numaproj/numaplane/security/dependabot

Message from the maintainers:
If you wish to see this enhancement implemented please add a 👍 reaction to this issue! We often sort issues this way to know what to prioritize.

Closed this as no longer an issue


tutorial mission update to SDK version 7.0

@KevinMuessig Unfortunately there is a problem with the primary tag. Can you please update it to software-product>ios-sdk-for-sap-btp? Otherwise your tutorials will not be updated in the Tutorial Navigator, and we will be spammed with error messages. Thank you.

Thanks @MichaelCzcz


Bug in lookup for source_id and publisher_id, IF source.url is not unique

Code assumes source.url will always be unique (in reality, it should). But, if it is not, then the current lookup when writing results will get the first match and use that source_id and publisher_id, which could be wrong.

This was a bug I raised before many other people touched the code. I guess it is still relevant, but depends on the changes made via #4 - so please check.


No way to obtain packages not related to document

There is no way to list all the packages in the document. So in a scenario where Document describes Package 1 and Package 1 is related to Package 2, there is no way to get to Package 2 without a depth-first search through all the relationships.
This can be counterproductive when trying to manipulate the document, given that with the addition of filesAnalyzed in 2.1, a document will now contain many packages.

Correct - for files and snippets there are some convenience methods in SpdxDocumentContainer findAllFiles and fileAllSnippets.  I'll add another method findAllPackages since I'm looking around in that code right now anyway.  It won't be the highest performing function, but it will probably be good enough for most sized documents.

Update - It looks like findAllPackages was already implemented (I missed on on a first pass).  On the SpdxDocumentContainer - just call findAllPackages and it will return all packages in the document.  A bit slow - I can think of some ways of improving performance if it turns out to be a problem.
Let me know if this resolves the issue.

It does provide the functionality! I already implemented my own method for doing this, but this seems to work the same. Using model.listResourcesWithProperty(...) might simplify the code a bit, perhaps.


Highlighting section in which the user currently is

It would be good to highlight on the menu bar the section, in which the user currently is.
https://puu.sh/wjN57/c710a61abf.jpg

@dawid-g Thanks, Dawid, good idea! That issue is fixed in latest release.


Implement Roles and Authorization Checks In CAP

Tutorials: https://developers.sap.com/tutorials/btp-app-cap-roles.html
Hi,
I followed the steps to set up the authorizations and rechecked my configurations. Unfortunately, the authentication does not work for me as it's supposed to be. When I choose the Risks and Mitigations pages at http://localhost:4004/launchpage.html#Shell-home, I am able to view them without providing credentials. I don't think it's a browser issue as I tried with multiple browers.

Hi @nikolasimeonov77 ,
can you share your code on github so that we can check what the issue might be, also sometimes you need to restart your cds watch command for changes to take effect.
Best regards,
Mahati (She/Her)

Hi,
Thank you for your feedback. We haven't heard from you in a while, so we are closing the issue. If you still have questions, feel free to open a new issue.
Best regards,
Mahati


Build Assimp with Draco support

Draco is a form of graphics compression for formats like glTF.
To do this, we'd like to avoid having to ship an extra shared library in the .Native NuGet package, and instead link Draco statically into the Assimp shared library. I've submitted an upstream PR to enable us to do this: https://github.com/assimp/assimp/pull/5535

Upstream PR merged, now we just wait for a release tag that includes it.


dynatrace_log_sensitive_data_masking (Resource) matcher ending with wrong attribute.

Describe the bug
When using terraform to create a dynatrace_log_sensitive_data_masking (Resource), the resource is created using the log source attribute regardless of the attribute specified (e.g. K8s_deployment_name).
To Reproduce

Create dynatrace_log_sensitive_data_masking (Resource) in terraform
specify the matcher attribute as anything other than log_source

Expected behavior
The expected behavior is having a dynatrace_log_sensitive_data_masking (Resource) rule using a K8s Deployment Name as the attribute instead of log source.
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

OS: Windows 10
Browser Chrome
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Hello @DylanYost,
The documentation for this resource is listing invalid values for matcher attributes. Apparently the REST API DOES accept any value here without complaining - it just falls back to log.source as a default value in such a case.
The docs will be updated with the upcoming release. Until then here's a list of valid matcher attributes for you:

container.name
dt.entity.container_group
dt.entity.process_group
k8s.container.name
k8s.deployment.name
k8s.namespace.name
log.source
process.technology
host.tag


feat: FND-1136 moving large tables from fix column width to the proportional percentage per column

The Confluence API returns a fixed width for each of the columns of a table using the colgroup
We calculate the sum of all column widths of a colgroup, once is more than 1000px :

We convert the value of the width for its column into the proportional percentage

We adapt the standard response when the total width of the table is more than 1000px

Looks good to me too, just missing some tests.

Yes, indeed missing some tests.


Chore(ci): Introduce new preversion and graduate targets for creating a prerelease version

refs #DS-1434

Description

Additional context

Issue reference

coverage: 79.469%. remained the same
when pulling 81ef9b820dfd804e51fdb3bbe257f2cd6d9fd1e9 on chore/prerelease-graduate-target
into 949b633b8e69687eb472d77832784fb4583b7c57 on main.


Debug bundled ESM engine build fails to build with Vite

When running vite dev - 10:52:28 AM [vite] Internal server error: Maximum call stack size exceeded
Plugin: vite:worker-import-meta-url`
Error caused by source map (probably be because its inline and too large to parse)

Maybe worth logging an issue on Vite's repo?


Inconsistent display of a separate phosphate in the sequence representation in the Sequence mode

Steps to Reproduce

Switch to the Macro mode

Open this file Separate p in sequence.zip

Switch to the Sequence mode

Add one more nucleotide at the end of the sequence

Actual behavior
The phosphate is displayed as “p”
Expected behavior

Single phosphate that is not a part of nucleotide (in the middle of the chain) or nucleoside (at the end of the chain) should be displayed as 'p' in sequence mode.
A group of multiple (more or equal than two) phosphates should be displayed as '@'.
Images for better understanding:

Desktop (please complete the following information):

OS: Windows 10 Pro (version 22H2) x64
Browser: Сhrome
Version: (124.0.6367.92) x64

Ketcher version 2.21.0-rc.2, Build at 2024-05-10; 05:30:51
Issue found while testing https://github.com/epam/ketcher/issues/3734

Tested. Bug fixed.

Desktop:

OS: Windows 11
Browser Chrome
Version 124.0.6367.79 (Official Build) (64-bit)

Ketcher version
[Version 2.23.0-rc.1]
Indigo version
[Version 1.22.0-rc.1]


Consider moving extension entrypoints to ExecutionListener subclasses

IntelliJ platform exposes the ExecutionListener extension point. It enables listening to executions (scheduled, starting, started, not started, terminated) and manipulating run profiles. It's methods seem to be called always from the dispatch thread, which enables write access and showing dialogs. Consider moving the entrypoints there.

@Razz4780 Can you elaborate on benefits over the current state?

When developing Tomcat support this way, I found out that we're not able to cancel the execution from the ExecutionListener flow. I think this kills the idea. @eyalb181 wdyt?

Is this only for Tomcat, or in general?

It's a general limitation

Then yeah, lets close this for now.


Specifying where to save temporary and final files

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.03.04 (update instructions) or later (specify commit)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
I don't have English as my first language, and even after reading the README instructions, I couldn't figure out how to write the settings in the config file to do exactly the behavior I am actually looking for in yt-dlp.
Perhaps this is a rather silly question, but please help.
I currently use only the "-o" option and simply specify where to save the file and its title.
However, it specifies the HDD for the archive, which I believe limits the speed of the download process.
So I am trying to designate the SSD as the destination for the temporary files, but could not figure out how to write to designate the two destinations.
Can someone please provide me with the code text in a state that I can just copy and paste into the config file?
Current "-o" options:
-o "F:\Nico-down\temp\%(upload_date)s - %(title)s.%(ext)s"
(The "temp" folder used here indicates that when I download various videos, this is the work area where I store all new videos before moving them to a suitable folder to archive and classify them.)
Expected behavior:

Maintains the destination and file name of the final file
Sets the temporary file destination to "c:\yt-dlp_temp"

Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

I think you want to use the -P/--paths option. It accepts a temp: prefix
You can use this in your config file:
# filename template
-o "%(upload_date)s - %(title)s.%(ext)s"

# temporary path (SSD)
-P "temp:C:\yt-dlp_temp"

# final path (HDD)
-P "F:\Nico-down\temp"

Thanks so much for the quick response.
This worked very well.
(I saw that the files were created in the temporary files folder on the SSD and then deleted after the merge and at the same time the final file was created in the correct path.)


【Bitcoin ™ Support】 Bitcoin customer service live chat?  +1-812-610-2161

Encountering issues with your Bitcoin account? 😀Reach out to Bitcoin Customer Service 😃 for reliable assistance. 24/7 Phone Support: Dial +1(812) 610-2161 for immediate help. Bitcoin Help Center: Explore help.Bitcoin.com for solutions to common issues or to access the "Contact Us" feature for personalized support. Get expert assistance for account management, transaction queries, or security concerns—anytime, anywhere. Bitcoin Support is just a call away!
Bitcoin's customer support is available 24/7 at +1-812-610-2161. Contact us to resolve your urgent issues. Our experience support team will help you with whatever issues you are experiencing with your Bitcoin Bitcoin wallet.
No, Bitcoin typically does not make unsolicited calls +1-812-610-2161, to customers. If you receive a call claiming to be from Bitcoin without prior contact +1-812-610-2161, it is important to be cautious as it could be a phishing attempt or scam.
Bitcoin does not have a policy of contacting users via phone for customer support +1-812-610-2161 or other account-related issues. The company primarily communicates with users through email and in-app notifications. If you receive a phone call +1-812-610-2161 claiming to be from Bitcoin, it is likely a scam.
Does Bitcoin support call you? No, Bitcoin typically does not make unsolicited calls +1-812-610-2161, to customers. If you receive a call claiming to be from Bitcoin without prior contact +1-812-610-2161, it is important to be cautious as it could be a phishing attempt or scam.
How do you help Bitcoin reach out to our support team anytime at +1-812-610-2161. We're available 24/7 to assist with installation, setup, and
troubleshooting.【Bitcoin ™ Support】 How do I contact Bitcoin We're available 𝟮𝟒/𝟕 to assist with installation, setup, and troubleshooting [+1-812-610-2161] For help with "Is Bitcoin Support Number 24*7", reach out to our support team anytime at +1-812-610-2161 We're available 𝟮𝟒/𝟕 to assist with installation, setup,+1-812-610-2161 and troubleshooting. is

Do you really think that spamming in an open source project will help you getting some calls?


[AcroForm-Plugin] jsPDF is overwriting "Button" and other variables in global context

Thank you for submitting an issue to jsPDF. Please read carefully.
Are you using the latest version of jsPDF?
Yes
Have you tried using jspdf.debug.js?
No
Steps to reproduce
See 'Button' in console with and without jspdf loaded in a react/webpack bundle.
What I saw
I'm using jsPDF as part of my react/webpack bundle. The bundle is used in the context of SharePoint, but I believe the problem is independent of that. I'm loading this bundle everywhere in my site. On a few specific pages (old SharePoint workflow pages), I'm seeing an issue where a button is unclickable, and the console error on-click is "Object doesn't support property or method 'OnFocus'.
When I enter "Button" in console, I get a function that points to the jspdf part of my bundle, specifically it looks like it's in the method jsPDFAPI.addButton at line 4217 in https://github.com/MrRio/jsPDF/blob/master/dist/jspdf.debug.js. I can't pinpoint exactly where the issue is.
When I remove jspdf (and jspdf-autotables) from my bundle, everything works as expected again.
What I expected
I expect that jspdf doesn't leak out into the global namespace.

Hmm. Yes. I am unsatisfied with this behaviour too. I actually kept this behaviour, because of backwards compatibility...
https://github.com/MrRio/jsPDF/blob/master/plugins/acroform.js#L1745
  if (typeof globalObj == "object") {
Is your problem fixed if you comment out the code  in jspdf.debug.js?

Duplicate of #1952

@arasabbasi thanks for the quick reply.
I struggled a bit with getting the debug-code inside my bundled code, but I think I verified the issue anyway. From the minified jsPDF AcroForm code, I removed t.Button=O and Button:O (equivalent  to the assignments inside the if (typeof globalObj == "object")  code). After removing these two references to "Button", the SharePoint functionality worked again.
Any way to fix this?

Should be fixed with #2047


Git LFS support

PR as requested by @lunny, merge conflicts originate from gitea commits. I'm using Gogs as upstream so I can't promise to correct those. Original PR: gogits/gogs#3868
Feature requested in gogits/gogs#1322
This PR implements Git LFS support for Gogs, supporting the legacy v1 API as well as the current batch v1 API.
Originally imported LFS server code base from https://github.com/git-lfs/lfs-test-server.
Features:

Uses recommended paths with HTTP and SSH remotes, no custom user settings necessary
Supports basic authentication with user credentials
Supports authentication with SSH (passing JWT under the hood)
Supports no authentication when pulling public repositories (however git-lfs still asks for credentials, where the prompt can be skipped - likely a bug in git-lfs)
Settings transparently integrated into installation process
Removes LFS objects when repositories are deleted. Works with forks (e.g. when parent repository is deleted)

Notes:

https://github.com/fabian-z/gogs/commit/58375e6b8648527597339b4b4b042fa71cf41b76 was necessary to import github.com/dgrijalva/jwt-go, as well as fix gogits/gogs#3732
~Does not yet delete LFS objects when repository is removed~
https://github.com/fabian-z/gogs/commit/0344f98166058a0e58d425fc5d25967c6f5901cc regenerates bindata in order to apply locale additions from https://github.com/fabian-z/gogs/commit/c166480ab0b5118ed9b7fbecb257406fdfab2daf

Looking forward to your review!

This will resolved #80

Can you please rebase and avoid generating bindata.go in the PR ?
Also don't bother touching glide, we use govendor here

@strk
Please read the note in my PR. I sent this PR to gogits/gogs and only copied it here on request by @lunny. As my time is limited, I currently won't be able to rebase / fix issues for gitea.

On Tue, Nov 08, 2016 at 07:28:27AM -0800, bkcsoft wrote:

"git-upload-pack":    models.ACCESS_MODE_READ,

"git-upload-archive": models.ACCESS_MODE_READ,

"git-receive-pack":   models.ACCESS_MODE_WRITE,

"git-upload-pack":      models.ACCESS_MODE_READ,

"git-upload-archive":   models.ACCESS_MODE_READ,

"git-receive-pack":     models.ACCESS_MODE_WRITE,

"git-lfs-authenticate": models.ACCESS_MODE_NONE,

And I think those constants are named AccessModeNone etc. now.
(but I understand the author is not interested in porting this to
Gitea)

Let me clarify on my statement.
Please correct me if I'm wrong or I misunderstood the situation, but Gitea seems to be maintained as a constantly rebased fork of Gogs (like a changeset maintained by downstream distributions). Therefore, my priority would be to get this reviewed and merged upstream with Gogs. If this is possible, a rebase would bring the feature to Gitea and the changeset which needs to be maintained can remain as small as possible.
However, my main interest is to bring this feature into active usage and to have continued development together with other contributors.
If my PR is not reviewed or merged into Gogs master in a reasonable amount of time, I'd be glad to work with you to port my changes to Gitea.

@fabian-z you misunderstood: Gitea will never be rebased against Gogs, but rather continue on its own.
The fork was driven by the willingness to have a more open development method, so you're welcome to join the effort. You can compare Gogs and Gitea activity via the Pulse screen:
https://github.com/go-gitea/gitea/pulse
https://github.com/gogits/gogs/pulse

@strk
Thank you for elaborating on the project status. Indeed I must have misjudged on first glance - thanks again for pointing me to the Pulse graphs.
I definitely prefer an open, collaborative development, too.
I will try to rebase this on Gitea master and provide a new PR incorporating your reviews.


训练过程中出现问题:

指令：python train.py --dataset ./data/Face/face_train.tfrecord  --val_dataset ./data/Face/face_val.tfrecord  --classes ./data/Face/face_label.names  --num_classes 2  --mode fit --transfer darknet --batch_size 2  --epochs 10  --weights ./checkpoints/yolov3.tf --weights_num_classes 80
我的数据集通过voc_2012.py变为tfrecord格式，用visual_dataset.py也能从中随机抽取图片，并精确的标注出了目标，但是每当我训练的时候，到了第420次时，总出现以下问题，请问有谁知道问题出在哪里吗？
2020-03-17 22:47:23.177447: W tensorflow/core/common_runtime/bfc_allocator.cc:305] Garbage collection: deallocate free memory regions (i.e., allocations) so that we can re-allocate a larger region to avoid OOM due to memory fragmentation. If you see this message frequently, you are running near the threshold of the available device memory and re-allocation may incur great performance overhead. You may try smaller batch sizes to observe the performance impact. Set TF_ENABLE_GPU_GARBAGE_COLLECTION=false if you'd like to disable this feature.
2020-03-17 22:47:23.956383: I tensorflow/core/profiler/lib/profiler_session.cc:184] Profiler session started.
2020-03-17 22:47:23.990373: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cupti64_100.dll'; dlerror: cupti64_100.dll not found
2020-03-17 22:47:23.999044: W tensorflow/core/profiler/lib/profiler_session.cc:192] Encountered error while starting profiler: Unavailable: CUPTI error: CUPTI could not be loaded or symbol could not be found.
1/Unknown - 31s 31s/step - loss: 8142.8374 - yolo_output_0_loss: 372.0213 - yolo_output_1_loss: 1816.4917 - yolo_output_2_loss: 5943.74172020-03-17 22:47:25.453912: I tensorflow/core/platform/default/device_tracer.cc:588] Collecting 0 kernel records, 0 memcpy records.
2020-03-17 22:47:25.525874: E tensorflow/core/platform/default/device_tracer.cc:70] CUPTI error: CUPTI could not be loaded or symbol could not be found.
WARNING:tensorflow:Method (on_train_batch_end) is slow compared to the batch update (0.707839). Check your callbacks.
W0317 22:47:25.640211 22200 callbacks.py:244] Method (on_train_batch_end) is slow compared to the batch update (0.707839). Check your callbacks.
420/Unknown - 120s 287ms/step - loss: 279.3950 - yolo_output_0_loss: 11.9883 - yolo_output_1_loss: 55.4188 - yolo_output_2_loss:<PHONE_NUMBER>0-03-17 22:48:53.685180: W tensorflow/core/common_runtime/base_collective_executor.cc:216] BaseCollectiveExecutor::StartAbort Invalid argument: {{function_node _inference_Dataset_map_14255}} Paddings must be non-negative: 0 -128
[[{{node Pad}}]]
[[IteratorGetNext]]
[[Shape/_10]]
2020-03-17 22:48:53.685178: W tensorflow/core/common_runtime/base_collective_executor.cc:216] BaseCollectiveExecutor::StartAbort Invalid argument: {{function_node _inference_Dataset_map_14255}} Paddings must be non-negative: 0 -128
[[{{node Pad}}]]
[[IteratorGetNext]]
421/Unknown - 120s 286ms/step - loss: 279.3950 - yolo_output_0_loss: 11.9883 - yolo_output_1_loss: 55.4188 - yolo_output_2_loss: 201.0598WARNING:tensorflow:Reduce LR on plateau conditioned on metric val_loss which is not available. Available metrics are: loss,yolo_output_0_loss,yolo_output_1_loss,yolo_output_2_loss,lr
W0317 22:48:53.721623 22200 callbacks.py:1824] Reduce LR on plateau conditioned on metric val_loss which is not available. Available metrics are: loss,yolo_output_0_loss,yolo_output_1_loss,yolo_output_2_loss,lr
WARNING:tensorflow:Early stopping conditioned on metric val_loss which is not available. Available metrics are: loss,yolo_output_0_loss,yolo_output_1_loss,yolo_output_2_loss,lr
W0317 22:48:53.722620 22200 callbacks.py:1250] Early stopping conditioned on metric val_loss which is not available. Available metrics are: loss,yolo_output_0_loss,yolo_output_1_loss,yolo_output_2_loss,lr
Epoch 00001: saving model to checkpoints/yolov3_train_1.tf
421/Unknown - 127s 301ms/step - loss: 279.3950 - yolo_output_0_loss: 11.9883 - yolo_output_1_loss: 55.4188 - yolo_output_2_loss: 201.0598Traceback (most recent call last):
File "train.py", line 193, in
app.run(main)
File "E:\anaconda\envs\yolov3\lib\site-packages\absl\app.py", line 299, in run
_run_main(main, args)
File "E:\anaconda\envs\yolov3\lib\site-packages\absl\app.py", line 250, in _run_main
sys.exit(main(argv))
File "train.py", line 188, in main
validation_data=val_dataset)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 728, in fit
use_multiprocessing=use_multiprocessing)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 324, in fit
total_epochs=epochs)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 123, in run_one_epoch
batch_outs = execution_function(iterator)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2_utils.py", line 86, in execution_function
distributed_function(input_fn))
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\def_function.py", line 457, in call
result = self._call(*args, **kwds)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\def_function.py", line 487, in _call
return self._stateless_fn(*args, **kwds)  # pylint: disable=not-callable
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\function.py", line 1823, in call
return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\function.py", line 1141, in _filtered_call
self.captured_inputs)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\function.py", line 1224, in _call_flat
ctx, args, cancellation_manager=cancellation_manager)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\function.py", line 511, in call
ctx=ctx)
File "E:\anaconda\envs\yolov3\lib\site-packages\tensorflow_core\python\eager\execute.py", line 67, in quick_execute
six.raise_from(core._status_to_exception(e.code, message), None)
File "", line 3, in raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
(0) Invalid argument:  {{function_node _inference_Dataset_map_14255}} Paddings must be non-negative: 0 -128
[[{{node Pad}}]]
[[IteratorGetNext]]
[[Shape/_10]]
(1) Invalid argument:  {{function_node _inference_Dataset_map_14255}} Paddings must be non-negative: 0 -128
[[{{node Pad}}]]
[[IteratorGetNext]]
0 successful operations.
0 derived errors ignored.  See above for specific issues. Use expect_partial() on the load status object, e.g. tf.train.Checkpoint.restore(...).expect_partial(), to silence these warnings, or use assert_consumed() to make the check explicit. See https://www.tensorflow.org/alpha/guide/checkpoints#loading_mechanics for details.
W0317 22:49:04.154975 22200 util.py:152] A checkpoint was restored (e.g. tf.train.Checkpoint.restore or tf.keras.Model.load_weights) but not all checkpointed values were used. See above for specific issues. Use expect_partial() on the load status object, e.g. tf.train.Checkpoint.restore(...).expect_partial(), to silence these warnings, or use assert_consumed() to make the check explicit. See https://www.tensorflow.org/alpha/guide/checkpoints#loading_mechanics for details.

I don't know whether it is correct or not , but you can check whether you divide the height or width of the original picture to xmin, xmax, ymin, ymax when you made the tfrecord file .

I don't know whether it is correct or not , but you can check whether you divide the height or width of the original picture to xmin, xmax, ymin, ymax when you made the tfrecord file .

您好，我按照源码中的voc2012.py文件生成tfrecord文件，py文件中已经将 xmin, xmax, ymin, ymax 除以对应的width,height。同时我添加了一些代码，确认了他们均处于0-1之间，并且height、width均存在，但是依旧出现以上错误。数据集的检测是否还涉及其他的方面？在生成tfrecord文件时，我看它录入了很多的数据(如：difficult，format，filename等等)，请问这些数据可以不输入吗？

OK, I had met the same error logs as you. I think you can also check whether you modify the yolo_anchors and yolo_anchor_masks in models.py for your own dataset.
You don't need to prepare all the data(difficult，format，filename...) when you create the tfrecord file. You can see the "IMAGE_FEATURE_MAP" in datasets.py, there are many items had been commented.

I had met the same errors,have you solved it?

@Eve66666 ,I had met the same errors,have you solved it?

i solved this by removing the smallest bounding boxes from my data-set

i solved this by removing the smallest bounding boxes from my data-set
thanks very much. yes, I also bypass this problem by not append the small box into the example in voc2012.py

@funkydude755 ，thanks， do you know why?

I belive it's an issue with box resizing. Since the images are resized by default in this yolov3 version

i solved this by removing the smallest bounding boxes from my data-set

What do you mean the smallest bounding box in the dataset? Can you explain it?

actually, not only the smallest box, i also removed bounding box with size < 9/10000 of the whole figure.  you can try this threshold.

@cypherix the boxes with smallest area

@funkydude755  the box with the smallest area in the whole dataset? Do you know how that might affect this issue? Thanks

@cypherix remove the smallest boxes (not single box) until it works. I belive its an issue with box and image resizing (which happens by default). I sorted my boxes by area and started removing untill it worked


[HUDI-6847] improve the incremental clean fallback logic

Change Logs
current incremental clean include clean instants when deciding if should fallback to full clean. This pr change to only include commits instants only, because incremental clean only use commits instants to decide which partition should clean.
Impact
no
Risk level (write none, low medium or high below)
low
Documentation Update
Describe any necessary documentation update if there is any new feature, config, or user-facing change

The config description must be updated if new configs are added or the default value of the configs are changed
Any new feature or user-facing change requires updating the Hudi website. Please create a Jira ticket, attach the
ticket number here and follow the instruction to make
changes to the website.

Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

The Azure CI failure is unrelated.  Triggered a rerun.

Rebased on the latest master to fix CI failure.


Support corrupt PDF documents that contain "endsteam" commands (issue 18122)

This patch also re-factors the findStreamLength-helper to avoid even more code duplication.

/botio test

/botio makeref


clean up debris from jeremie's cached twitter profile.json

For a few hours, any twitter contacts synclet run would have pulled mine in, needs to be cleaned up!

The plan is to have a migration that will lmongo.client.dropCollection('asynclets_twitter_contact'), then give out a command to /Me/contacts/update.  Then the next time the twitter friends synclet runs normally, all those contacts will be recreated from scratch clean.


Add medium article written by Santos to CLI docs

I know Santos is a community member but wondering if the word "excellent" should be used in docs? 0/5

Good point, remove the word "excellent"


Disable selected tests

Checklist

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

@conda-forge-admin, please rerender

@grondo I disabled t1025-rv1-reload.t and t5100-issues-test-driver.tto be able to upgrade to the latest version.


Template page as zero state for new users

Feature Description
All new users should land on the template page. Currently we land user on the My Stories page.
Alternatives Considered

Additional Context

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

If you have no stories on the dashboard, the first page you should see is explore templates when you load the dashboard.
If you have Stories in My stories the dashboard should behave as it has and you should land on My Stories when first loading the dashboard

Implementation Brief

@csossi friendly ping on this, it's been waiting for qa for about 2 weeks now.

verified in QA


not starting serviceImportController for Kubernetes lower than v1.17

What would you like to be added:
A follow-up issue of #515
The lowest Kubernetes version that supports discovery/v1beta1 is v1.17. For Kubernetes lower than v1.17, we are not going to start ServiceImport controller.
https://github.com/clusternet/clusternet/blob/d0ca5ebbb91753a2914d137b80c26e88e90465d4/pkg/hub/hub.go#L178-L180
Why is this needed:

cc @lmxia

/assign

It seems that not only ServiceImportController but also ServiceExportController have the same problem, right? @dixudx

It seems that not only ServiceImportController but also ServiceExportController have the same problem, right? @dixudx

@mars1024 Yes, that's true.

hold for pre PR #523


Vispy error and warning in visulizing 4D time-lapse image and tracks

🐛 Bug

I was visualizing my 4D time-lapse image data along with the tracks layer in jupyter-lab. The following error and warning occurred:

Seems every time when I drag the viewer, as long as the tracks layer is set visible, the error would show up in the terminal and the warning would appear in jupyter-lab. (My tracks layer has a property in array of shape (599,), which is same as the "size=599" in the error message.)
What's wrong? Though I did not find it interferes much with my visualization. How to fix this issue? Or disable it to show the warning messages.

Environment
napari: 0.4.12
Platform: Windows-10-10.0.19041-SP0
Python: 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)]
Qt: 5.15.2
PyQt5: 5.15.4
NumPy: 1.21.4
SciPy: 1.7.2
Dask: 2021.11.1
VisPy: 0.9.3
OpenGL:

GL version:  4.6.13596 Compatibility Profile Context <IP_ADDRESS> 27.20.1020.2002
MAX_TEXTURE_SIZE: 16384
Any other relevant information:

Additional context

Hmm, I'm not sure about this @JoOkuma has been using the tracks more - maybe he knows? Is there a minimal example - maybe with random data that you can share the reproduces this?

I haven't seen this using tracks. @pmcesky could you provide some sample data + code that reproduces this?

I think there is a mismatch between the tracks data buffer and the vertex_time buffer length.
This is either a bug or it could happen if you're setting the data without using the default API and not updating the vertex_time buffer.

This looks very similar to the issue we had in #3623 due to some changes I introduced in #3333. If that's the issue, then I woudl expect it to be broken in 0.4.12 and fixed on main by #3729.

Hi all,
Thanks very much for the replies!
I found it is probably an issue wrt the graph of the tracking layer. I found it fine without setting the 'graph'. But when 'graph' is added, then this issue occurs. This is mentioned by @quantumjot in https://github.com/napari/napari/issues/3623#issuecomment-983801408.
Some sample data and graph to reproduce this are here:
data_sample=np.array([[  1.     ,   0.     , 144.     , 126.     , 109.     ],
       [  1.     ,   1.     , 137.     , 125.     ,  94.     ],
       [  1.     ,   2.     , 128.33333, 124.     ,  90.     ],
       [  2.     ,   0.     , 149.     ,  72.     , 184.     ],
       [  2.     ,   1.     , 149.     ,  60.     , 196.     ]])
graph_sample={2:[1]}
viewer.add_tracks(data=data_sample,graph=graph_sample)

The error and warning would occur when loading them into the viewer or dragging the viewer.

Yup, that definitely looks like the same issue, so it should already be solved in main! :)

My guess is that this should be fixed by #3729

Hi there, I am having the same issue. Has the bug being solved?
This is what I get: "WARNING: Error drawing visual <vispy.visuals.line.line._GLLineVisual object at 0x000002153284B400>"

@Ciro1990 the bug is already fixed on main, but will be available on the next release (which should come in the next couple of weeks!). If you want to get it working now, you can try to checkout the main branch and work from there; otherwise, you need to wait for 0.4.13 to come out :)

you can try to checkout the main branch and work from there; otherwise, you need to wait for 0.4.13 to come out :)

Quick reminder that you can always pip install the main branch from GitHub without cloning and checkout:
pip install -U git+https://github.com/napari/napari.git

pip install -U git+https://github.com/napari/napari.git

Thank you Talley! It worked for me!!!
However, I still have one issue, I can not see my Lineage tree. I uploaded segmentation and tracks, but nothing appears in the lineage tree window. Anybody else has the same issue?
Could be just me, tho

Hi @Ciro1990, are you referring to the track splitting in the napari canvas or the tree lineage from arboretum?

I would post an issue there.
It could be that your tracks graph is not structured as expected, because this is the only data it uses. Additionally, it doesn't support merges yet.

I would post an issue there. It could be that your tracks graph is not structured as expected, because this is the only data it uses. Additionally, it doesn't support merges yet.

Thanks for the inputs, Jo. I will run again the pipeline now. If I still don't get the tree, I will ask for support (biologist struggling with python here :D)

Looks like this was fixed by #3729 and maybe again by #4155? @pmcesky , @Ciro1990 : are we good to close this specific issue now?

Looks like this was fixed by #3729 and maybe again by #4155? @pmcesky , @Ciro1990 : are we good to close this specific issue now?

Hi Andy,
I'm not sure about #3729, but the issues I described here and in #4155 were fixed.

Thanks for the quick response! In that case, I'm going to close this.
@Ciro1990 : I think your remaining issues are different enough from the original issue described here, but if you feel strongly, please reopen this issue. Or feel free to create a new one!


Submitting items with attachments

It is not clear to me what to put in the field "Attachment:object". Although we have the attachment as an object in the mixins, it is not a collection with items that can be referenced. Can we modify the system such that one can put the file path in the attachments and this file gets uploaded. We have a simple select and upload interface in the user interface, there should be a simple rest api version of this action I guess.

@Koray that is how the import_data.py script works, according to the docs the field name should be 'attachment:object' and not "Attachment:object".  So change to that and it will try to read the file and upload it from the specified path.


Record subscriptions in internal-apis

[ ] (3) Do estimate
[ ] Add some catch so existing subscriptions are not lost
[ ] Add (un)subscribe endpoint that accepts multiple subscriptions
[ ] Add fetch all subscriptions endpoint
[ ] Make sure users dont lose their current subscriptions when this goes live

This is also a duplicate of lbryio/internal-apis#238
238 also says that users should be emailed when new content is available in channels they subscribe to. I'm guessing that's a separate issue. Are you planning to do that afterwards?

It'd be very good to just get the bare minimum endpoint up here, we're losing information we'll never get back without it. The bare minimum endpoint is likely < 2 hours of work (if you know internal-apis already).

Starting on this

@seanyesmunt was everything completed in https://github.com/lbryio/internal-apis/pull/314 ? Can we close this?

Yes that can be closed.
On Mon, May 14, 2018, 3:06 PM Thomas Zarebczan<EMAIL_ADDRESS>wrote:

@seanyesmunt https://github.com/seanyesmunt was everything completed in
lbryio/internal-apis#314
https://github.com/lbryio/internal-apis/pull/314 ? Can we close this?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lbryio/lbry-app/issues/1065#issuecomment-388928251,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQGcjlVcJUjgM7sHewkjJ2JeDeWvgQZrks5tydXIgaJpZM4SdkaC
.


Add BTCPayServer as service option

See this great base work from @normandmickey
https://gist.github.com/normandmickey/6d6e74ebb6b3ddbd317bc1450f48f08e
Test and convert into a 'config.script' for RaspiBlitz.

Nice, will try it next week

I followed the instructions and got it working. But for some reason can't integrate joule with it, don't see the LND services listed in crypto services in BTCPay / server settings / services so can't get the QR details to link it to joule. Be interested if you get the same issue @gabrieldov

Is this still a thing? A install script with in the "services" menu whould be awesome!

Yes, I haven't had any time to try to script it.  But if you can follow the
instructions they should work.
On Mon, Feb 25, 2019, 3:24 AM DaReaLDeviL<EMAIL_ADDRESS>wrote:

Is this still a thing? A install script with in the "services" menu whould
be awesome!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rootzoll/raspiblitz/issues/214#issuecomment-466914634,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACV4DuEmJpjoBl1NuQON_NRyatTj6YM5ks5vQ53SgaJpZM4ZguUT
.

@normandmickey let me know if you have a basic script ready .. I can then integrate it into the rest of RaspiBlitz.

Updated Gist to install BTCPayServer on Raspiblitz V1.3 for RPI4B
https://gist.github.com/normandmickey/3f10fc077d15345fb469034e3697d0d0
Appears to work but would consider it a WIP.  Would still like to "scriptify" so it could be added as a menu option.  RPI4B improved performance over RPI3 makes this a viable option now.

Made the script, but be aware that it is experimental, recommended only for test nodes first. Got it working once already, but SSL certificate asks are limited (5 in an hour - https://letsencrypt.org/docs/rate-limits/) so need to give it a break.
Nginx is very fussy, the setup tends to break previous Nginx configs (Like Electrs SSL), so added a warning if previous nginx.conf is found.
Script: https://raw.githubusercontent.com/openoms/bitcoin-tutorials/master/BTCPayServer/btcpay_to_blitz.sh
to download and run:
wget https://raw.githubusercontent.com/openoms/bitcoin-tutorials/master/BTCPayServer/btcpay_to_blitz.sh && bash btcpay_to_blitz.sh
There is a readme too for the manual process based on @normandmickey`s gist:
https://github.com/openoms/bitcoin-tutorials/blob/master/BTCPayServer/BTCPayServer_on_the_RaspiBlitz.md

With the help of the script above now I am running BTCPayServer with my longstanding LN-node.
The same RPi4 runs Electrs with Nginx serving both.
Minimal manual debugging needed in nginx.conf only.
See BTCpay run on check.DIYnodes.com.

That's awesome!  Can't wait to try your script out.  I started to write one
a while ago but gave up.  Glad you picked up the ball and ran with it!
On Wed, Sep 11, 2019, 2:09 PM bluecell296<EMAIL_ADDRESS>wrote:

With the help of the script above now I am running BTCPayServer with my
longstanding LN-node.
The same RPi4 runs Electrs with Nginx serving both.
Minimal manual debugging needed in nginx.conf only.
See BTCpay run on check.DIYnodes.com.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rootzoll/raspiblitz/issues/214?email_source=notifications&email_token=AASXQDWAZGDC7VSA7DQYGZDQJEX35A5CNFSM4GMC4UJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6PMKDY#issuecomment-530498831,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AASXQDT3ISGZUXG2S5UQE4TQJEX35ANCNFSM4GMC4UJQ
.

I tried again with fresh 1.3 SD card, but still didn't work. Here is a pastbin of most of my session. I see that there is a "Build FAILED" in there.
After running script once, I checked /home/admin/.nbxplorer/Main/settings.config and noticed that the rpc user and password weren't set again. I also realized that /home/admin/.btcpayserver/Main/settings.config didn't even exist so I re ran script, then still set some things manually in the file.

@grnqrtr thanks for testing and giving log (and good job hiding your RPC password - will modify the script to hide that in the output)
You seem to get errors while building the BTCPay component. Strange that it was running well on mine with a fresh 1.3 image. Are you running as the user admin from /home/admin/ ?
Could use the commands one-by-one manually or normandmickey-s original instructions to catch the fault.

Yes, I'm running as admin from /home/admin . I think my SD cards are okay. I've been going back and forth between two different ones, but was having problems on both.
I ended up getting it running fine by using your manually instructions here: https://github.com/openoms/bitcoin-tutorials/blob/master/BTCPayServer/BTCPayServer_on_the_RaspiBlitz.md
Up and running.

@grnqrtr

I'd be curious to hear if anyone else is having problems with the script or just me.

Caught the problem. NBXplorer needs some time to start and create the /home/admin/.nbxplorer/Main/settings.config . Added a check and sleep 10 while the file is not there, so should be sorted now.
Also tested running on top of previous installation. Worked so far.

I ran on top of previous installation and seemed to work fine!
One small thing I noticed was at the beginning if there is an existing Nginx configuration it warns and says "Press CRTL+C to abort or any key to continue" but I have to hit ENTER to continue, any key doesn't progress the script.
Thanks for putting this script together @openoms!

Just one remark. The Lets Encrypt certificate will expire after 90 days. So a renew (cronjob) will be needed.

Thanks for the feedback @frennkie and @grnqrtr , will modify and test again.
Do you guys think we should run BTTPayServer as its own user (just like it has been setup for Electrs too)? .NET is hog of dependecies, might be good to just keep it in its own enclave without sudo access and password disabled.

@frennkie the webroot method failed when using a ddns and standalone worked so sticked to it. The time difference is couple seconds between nginx start-stop and reload in every 2 months.
Used a systemd service and timer to renew with certbot because it is logged better and has been already tested well for other services.
Made the certificate generation less interactive with the help of the link provided.
The script is running quite reliably on the Rpi4 now. The .NET build of NBXplorer fails on the Odroid (same 32bit armv7las the RPi) for some reason.

might be good to just keep it in it`s own enclave without sudo access and password disabled.

I honestly don't know, but it sounds cleaner and more secure to have it's own user.

Update: https://github.com/openoms/bitcoin-tutorials/blob/master/BTCPayServer/btcpay_to_blitz.sh

BTCpayServer, NBXplorer and the .NET Core is now confined to the user btcpay.
The BTCPay data and store settings are stored on the HDD /mnt/hdd/.btcpayserver and recoverable on a reinstall / SDcard update.

@openoms I haven't tested your script on my rpi3 yet (still trying to recover funds), but as far as i understand from reading this thread, you are basically deploying the BTCPay docker image. So, now the question is how is this different from the Hack0? Or rather what advantages does the Hack0 have over Raspiblitz now?

The script doesn't use Docker, it manually installs BTCPayServer and its dependencies (Dot Net and Nbxplorer) and uses the existing Bitcoin and LND Nodes of the Blitz.  A lot of Raspiblitz users have expressed a desire to add BTCPayServer instead of running a second node.  This is one way to do that.

So, then i'd argue that this is a better way to deploy BTCPay than the docker since the docker is used primarily to make VPS hosting simpler. Am i right? Also, is it also good to have docker since it encapsulates BTCPay in it's own container?

I am not qualified to say whether Docker is good or bad.  It definitely
makes installing and updating BTCPayServer very simple. There are a lot of
moving parts to a Lightning Nodes  I would just say the Raspiblitz as more
techie (maker/hacker) focused and the BTCPayServer more merchant focused.
But there is a lot of overlap.
On Mon, Sep 23, 2019, 11:22 AM jodobear<EMAIL_ADDRESS>wrote:

So, then i'd argue that this is a better way to deploy BTCPay than the
docker since the docker is used primarily to make VPS hosting simpler. Am i
right? Also, is it also good to have docker since it encapsulates BTCPay in
it's own container?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rootzoll/raspiblitz/issues/214?email_source=notifications&email_token=AASXQDSGJPUYLIRPLP65AGDQLDNM3A5CNFSM4GMC4UJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7LHPPA#issuecomment-534149052,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AASXQDTWZEBZJXO2DP3NTA3QLDNM3ANCNFSM4GMC4UJQ
.

Positives of using this script with the RaspiBlitz:

avoiding Docker altogether
NBXplorer and BTCPayServer are built from source - a middleman is out
connects to the existing bitcoind and lnd - no more synching/funding/no need for new channels
the user has the seed and the backup of the LND node unlike in the BTCPay docker setup
overall flexibilty - you can still use RaspiBlitz to anything else
should be able to keep all the store data during an update

Negative:

less (more complicated) support from the BTCPay team
Can break when updating either RaspiBlitz or BTCPayServer - will need continuous testing

The hack0 is great to physically deploy BTCPayServer and decentralize further. As you correctly said @jodobear it uses the same dockerised process as the deployment to a VPS like LunaNode, but running on your own hardware.
I bought it myself for two reasons:

wanted a RockPro64 anyway - the hardware is the same as what the BitBoxBase uses and it costed what I would pay anywhere
It has the signature of Nicolas Dorier (priceless)

For the reasons detailed above I will probably run the RaspiBlitz on it see: https://github.com/rootzoll/raspiblitz/tree/master/alternative.platforms#armbian-buster. Can even make an SDcard/ eMMC image for that hardware if it works well. Will also test the BitBoxBase. As discussing the RockPro64/hack0 is off-topic here I opened a separate issue: https://github.com/openoms/raspiblitz/issues/58

It has the signature of Nicolas Dorier (priceless)
I bought it for the exact same reason and want to start learning about this stuff better.

I like the flexibility i get when working with linux, i am free to build it as i want and not dependent on docker images as you precisely point out, though it makes sense from a plug n play pov.
I'm going to build BTCPay on my blitz and compare.
Apologies for hijacking the thread.

@openoms I assume you have seen and read this message
Telemetry
---------
The .NET Core tools collect usage data in order to help us improve your experience. The data
is anonymous and doesn't include command-line arguments. The data is collected by Microsoft
and shared with the community. You can opt-out of telemetry by setting the
DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

My strong strong recommendation would be to turn this into "opt-in" by adding this step in the script:
echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" | sudo tee -a /etc/environment

Anybody wanting to send this data to Microsoft can remove it.

@frennkie thanks for pointing this out. Added the opt out line to the script.

@openoms Maybe it makes sense the pin the script to a specific - known to work - releases. E.g after https://github.com/openoms/bitcoin-tutorials/blob/master/BTCPayServer/btcpay_to_blitz.sh#L88 this sudo -u btcpay git checkout v<IP_ADDRESS> could be done so that the result of running the script is somewhat deterministic (same versions).
I just now ran into this (with the implicit master)
$ sudo -u btcpay ./build.sh
Microsoft (R) Build Engine version 15.9.20+g88f5fadfbe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

/home/btcpay/dotnet/sdk/2.2.102/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.0.  Either target .NET Core 2.2 or lower, or use a version of the .NET SDK that supports .NET Core 3.0. [/home/btcpay/NBXplorer/NBXplorer/NBXplorer.csproj]

Build FAILED.

/home/btcpay/dotnet/sdk/2.2.102/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.0.  Either target .NET Core 2.2 or lower, or use a version of the .NET SDK that supports .NET Core 3.0. [/home/btcpay/NBXplorer/NBXplorer/NBXplorer.csproj]
    0 Warning(s)
    1 Error(s)

@frennkie Good point will do this for btcpayserver and NBxplorer too. Also. NET needs to be kept at the tested version. The BTCpay team is just starting to test building on .NET 3.0.

Updated the script to checkout both NBxplorer and BTCpayserver to the last commit which was tested successfully. Will only update after testing so there should be no surprise errors again. https://github.com/openoms/bitcoin-tutorials/commit/ed0833f2735defb9176c8dadcb48054128402303

My BTCPayServer was not responding just now. 502 Bad Gateway from nginx. I checked and the Node process was running on IPv4 <IP_ADDRESS>:23000.
Nginx ist configured to connect to localhost. But that could mean either <IP_ADDRESS> or ::1. And that was my issue... In the nginx logs I saw that it was trying to connect to [::1]:23000.
I think Btcpay should also listen to the IPv6 socket... But that might require some code changes... Therefore I have changed the nginx reverse proxy from. localhost to <IP_ADDRESS>.

I just finally had the chance to run this updated script again after re-syncing up a fresh node. Everything seemed to install fine, though I seem to only be able to access BTCPay from the Tor hidden service address but not from the node's local IP and not from the DDNS address I setup.
Is that the way it should be? I have TOR service enabled on RaspiBlitz and also set up a TOR relay before using your script, could that be why? Previously I had TOR enabled on RaspiBlitz, but was able to access BTCPay from the local IP and DDNS. Though I don't remember what order I did things previously. Maybe I had installed BTCPay with your script and then enabled TOR on RaspiBlitz?

@grnqrtr it should work on LAN for sure and on the domain/dyndns too if you have the ports 80 and 443 forwarded.
Check if nginx is serving ok with:
sudo nginx -t

It seems okay, sudo nginx -t returns:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

FYI BTCPay Server with the current install script does make many regular outside calls which might not be a good fit with a privacy focused node.
Nicolas Dorier wrote that they are likely the price queries made often to avoid delays with invoice creation.
It is slightly different at every restart (reinstalled too). Took out the localhost connections and in the rest of the list there are connections to:

Microsoft
Digital Ocean
Cloudflare
amazonaws.com
cloudfront.net
This is without connecting to a domain, only a self-signed self-signed certificate and Tor.

admin@RaspiBlitz:~ $ sudo -u btcpay lsof -i
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
dotnet  24686 btcpay  113u  IPv4 6793639      0t0  TCP <IP_ADDRESS>:43617-><IP_ADDRESS>:https (ESTABLISHED)
dotnet  24686 btcpay  122u  IPv4 6794477      0t0  TCP <IP_ADDRESS>:42627-><IP_ADDRESS>:https (ESTABLISHED)
dotnet  24718 btcpay  406u  IPv4 6797664      0t0  TCP <IP_ADDRESS>:38121-><IP_ADDRESS>:https (ESTABLISHED)
dotnet  24718 btcpay  417u  IPv4 6797708      0t0  TCP <IP_ADDRESS>:45663-><IP_ADDRESS>:https (ESTABLISHED)
dotnet  24718 btcpay  418u  IPv4 6797706      0t0  TCP <IP_ADDRESS>:38735-><IP_ADDRESS>:https (ESTABLISHED)
dotnet  24718 btcpay  429u  IPv4 6797710      0t0  TCP <IP_ADDRESS>:45559->ec2-99-79-108-36.ca-central-1.compute.amazonaws.com:https (ESTABLISHED)
dotnet  24718 btcpay  431u  IPv4 6797712      0t0  TCP <IP_ADDRESS>:43719->server-13-224-77-74.man50.r.cloudfront.net:https (ESTABLISHED)
dotnet  24718 btcpay  433u  IPv4 6797714      0t0  TCP <IP_ADDRESS>:40157-><IP_ADDRESS>:https (ESTABLISHED)

Just saw this on install test:
[Install]
WantedBy=multi-user.target

Created symlink /etc/systemd/system/multi-user.target.wants/btcpayserver.service → /etc/systemd/system/btcpayserver.service.
**tee: /home/btcpay/.btcpayserver/Main/settings.config: No such file or directory**

After test install - calling https://<IP_ADDRESS> brings up no page (I choosed run behind TOR during install). @openoms whats the best debug path from here

@rootzoll It seems that BTCPayserver sis not install if you did not have the directory for the settings file created.
Is the /mnt/hdd/.btcpayserver dir there?
sudo systemctl status nbxplorer
sudo systemctl status btcpayserver

sudo nginx -t

show any errors?
A reinstall might also help.

Also the self signed certificate leads to errors in all the browsers, not easily dealt with in some.
Try the Hidden Service address in Tor browser too  that bypasses Nginx.

@rootzoll managed to reproduce this:
$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/btcpayserver" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed

the problem is that the bonus.btcpayserver.sh cleanes out /etc/nginx/sites-enabled/btcpayserver after it has been created.
Will test the solution and make a PR soon.

Fixed in the commits above.

Added lines to store the btcpay data in the app-data dir on the disk to be able to preserve setings and acccounts:  https://github.com/rootzoll/raspiblitz/pull/927/commits/ad150eee2eeb2489a8ff03122e754aafb5c6dd60

I get the following error:
sudo journalctl -u  btcpayserver.service
...
dotnet[22799]: The application to execute does not exist: '/home/btcpay/btcpayserver/BTCPayServer/bin/Release/netcoreapp2.1/BTCPayServer.dll
...
What can I do?
That is true, the folder "/home/btcpay/btcpayserver/BTCPayServer/bin" doesn't exist.
`

@bjadel best is to use the 1.4 RC1 image and install/reinstall from menu.
How did you install so far?

@bjadel best is to use the 1.4 RC1 image and install/reinstall from menu.
How did you install so far?

I use the version 1.4 RC1 and install the server from service menu.

I have solved the problem. In my case the service menu script has not build the BTCPayServer.

I have solved the problem. In my case the service menu script has not build the BTCPayServer.

Did you just reinstall or used some other method? C

I have solved the problem. In my case the service menu script has not build the BTCPayServer.

Did you just reinstall or used some other method?
No, the reinstall didn't solved the problem. I switch to user btcpay and enter the folder '/home/btcpay/btcpayserver/'. In this folder I run the build script. After that the folder 'bin' was available.

No, the reinstall didn't solved the problem. I switch to user btcpay and enter the folder '/home/btcpay/btcpayserver/'. In this folder I run the build script. After that the folder 'bin' was available.

What you describe is the same what is happening in the script: https://github.com/rootzoll/raspiblitz/blob/v1.4/home.admin/config.scripts/bonus.btcpayserver.sh#L172
Not sure what caused your error.
Did you delete directories or did other things manually?

I had the problem that I started the build script first as admin user. This caused errors. Then I wanted to start the script with the user btcpay. There was an error message that a lock is set. So I did the following:
sudo rm /tmp/NuGetScratch/lock/83712a22a258d25bd50ce3d8d718d0b49a03a0f9
Afterwards the build command could be executed successfully.

@bjadel ok, so as you can see in the script all installation is done with the btcpay user so runinng manually in admin should cause errors
Could your initial error have been because a download error? In that case the uninstall and reinstall should have helped since you have done the same manually.
Maybe when the install errorred out early the SERVICE menu did not show BTCpay as on so the ./config.scripts/bonus.btcpayserver.sh off was not run to clean.
Will try to reproduce this.

@bjadel ok, so as you can see in the script all installation is done with the btcpay user so runinng manually in admin should cause errors
Could your initial error have been because a download error? In that case the uninstall and reinstall should have helped since you have done the same manually.
Now, it is not easy to reproduce that. I believe it was not a download error.

Maybe when the install errorred out early the SERVICE menu did not show BTCpay as on so the ./config.scripts/bonus.btcpayserver.sh off was not run to clean.
Will try to reproduce this.
That would be possible.

Would it still be a good idea to clean the /tmp/NuGetScratch folder during the clean process? Maybe with the command:
dotnet nuget locals all --clear
or
dotnet nuget locals temp --clear

@openoms this is your call - let me know if there is anything to add to the BTCPayServer script before final v1.4 release

Included dotnet nuget locals all --clear and made some other improvements in:
https://github.com/rootzoll/raspiblitz/pull/974/commits/6ce189b3f8ff4b8f0e75370ca8779d23789a2d76
BTCPay is now at the latest:  v<IP_ADDRESS>

I tried activating BTCPayServer on 1.6rc2 and when it gets to Checking for nbxplorer config this just repeats over and over:
Waiting for nbxplorer to start - CTRL+C to abort
seems like starting nbxplorer service has failed - see: systemctl status nbxplorer
maybe report here: https://github.com/rootzoll/raspiblitz/issues/214

systemctl status nbxplorer returns:
● nbxplorer.service - NBXplorer daemon
   Loaded: loaded (/etc/systemd/system/nbxplorer.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2020-07-12 14:13:59 BST; 39s ago
  Process: 20406 ExecStart=/home/btcpay/dotnet/dotnet /home/btcpay/NBXplorer/NBXplorer/bin/Release/netcoreapp3.1/NBXplorer.dll -c /home/btcpay/.nbxplorer/Main/settings.config (code=exited, status=203/EXEC)
 Main PID: 20406 (code=exited, status=203/EXEC)

I tried rebooting and trying again, but same thing.

Looking further up I see these .NET downloads failing:
***
Installing .NET
***

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libssl1.0-dev' for regex 'libssl1.0'
Note, selecting 'libssl1.0.0' for regex 'libssl1.0'
Note, selecting 'libssl1.0.2' for regex 'libssl1.0'
gettext is already the newest version (<IP_ADDRESS>-9).
libssl1.0-dev is already the newest version (1.0.2q-2).
libssl1.0.2 is already the newest version (1.0.2q-2).
libunwind8 is already the newest version (1.2.1-9).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
http://: Invalid host name.
sha512sum: /home/btcpay/dotnet-sdk-3.1.300-linux-.tar.gz: No such file or directory
http://: Invalid host name.
sha512sum: /home/btcpay/aspnetcore-runtime-3.1.4-linux-.tar.gz: No such file or directory
mkdir: cannot create directory ‘/home/btcpay/dotnet’: File exists
tar: dotnet-sdk-3.1.300-linux-.tar.gz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
tar: aspnetcore-runtime-3.1.4-linux-.tar.gz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
DOTNET_CLI_TELEMETRY_OPTOUT=1
ln: failed to create symbolic link '/usr/share/dotnet': File exists
sudo: /home/btcpay/dotnet/dotnet: command not found

Seems like the ${binaryVersion} string isn't being pulled into the links?

@grnqrtr it is fixed here:https://github.com/rootzoll/raspiblitz/pull/1331
edit _bootstrap.sh and restart

clean install of 1.6.1. while adding BTCpay i get this:
seems like starting nbxplorer service has failed - see: systemctl status nbxplorer
maybe report here: https://github.com/rootzoll/raspiblitz/issues/214
Waiting for nbxplorer to start - CTRL+C to abort

i have a 32GB SD card, but it show this:

clearly this is beacuse your SDcard filesystem failed to expand on the first start.
This should have been fixed, not sure why it happens to you. Might be a dodgy SDcard.
you can try expanding the partition with:
sudo raspi-config --expand-rootfs
then reinstall BTCPay.

That worked! SDcard is expanded now. I don't think it is dodgy, it is a high quality one. maybe worth checking the first start script once more. Thanks!

@fellowworldcitizen can you check your '/home/admin/raspiblitz.log' file if it contains CHECK IF SD CARD NEEDS EXPANSION and what is mentioned after that?

@fellowworldcitizen what is the result of this command: cat raspiblitz.recover.log | grep "CHECK IF SD CARD NEEDS EXPANSION" -A 10?

@rootzoll, that file does not exist in /home/admin/. I get "cat: raspiblitz.recover.log: No such file or directory".
there is however a raspiblitz.log but it returns nothing on that.

Ah sorry you did a fresh install not a recovery, correct?

@rootzoll, i did indeed a fresh install, then a lnd channelbackup + seed restore, but that is probably irrelevant.

@fellowworldcitizen Yeah found a bug in v1.6.1 so that a fresh install was not expanding the sd card (an update did). I got it fixed ow for upcoming v1.6.2 - thx for the report.


add a post for "对话故事生成，创造自己的无限世界 "

I opened a PR 5 days ago. But for some reason I am not familiar with git and npm operations that cause some problems, and make my account flagged .
Now in the local environment  I can pass all the tests,  Please review the code again.
Please make sure to check the following boxes creating your pull request, thank you very much!

[x] Add Blog Header, including title, author, image, categories, tags, etc.
For example:
---
title: Your Great Blog Title
author: your_github_id
categories: project
tags:
  - python
  - padlocal
image: /assets/2021/02-your-blog-slug/teaser.jpg
---

One line bio

Your blog post content Your blog post content
Your blog post content Your blog post content
Your blog post content Your blog post content

It will be easier to start drafting your post by using a existing post file as your template, for example, this one

[x] Keep all filenames lowercase, and use - to connect words instead of space. e.g. 2017-10-06-wechat-pc-impactor.md instead of 2017-10-06-WeChat PC Impactor.md

[x] Embed video/pdf from YouTube/Bilibili/local (if there's any) by using {% include iframe.html src="URL_or_PATH" %}. (Learn more about how to embed file/url in the post by reading this blog post

[x] Save photo to local before publishing, to a folder named by ${MONTH}-${YOUR_BLOG_SLUG}/ under /assets/2021/ directory.

[x] Select a beautiful and meaningful teaser image for your blog

[x] Create your contributor profile (if you are a first time contributor)
For excample:

jekyll/_contributors/lijiarui.md

---
name: Jiarui LI (李佳芮)
site: https://lijiarui.github.io
bio: 句子互动创始人 & CEO，微软人工智能最具价值专家 (AI MVP)
avatar: /jekyll/assets/contributors/lijiarui/avatar.png
email<EMAIL_ADDRESS>twitter: https://weibo.com/u/2175505900
---

Here is the example file:

lijiarui.md: https://github.com/wechaty/wechaty.js.org/blob/master/jekyll/_contributors/lijiarui.md
It will shown like this on wechaty website: https://wechaty.js.org/contributors/lijiarui/

To learn more about the contribute guideline, visit: https://wechaty.js.org/docs/contributor-program/

Please see the CI result and following the error message.
The contributor profile should be all lowercase I believe.

Please see the CI result and following the error message.
The contributor profile should be all lowercase I believe.

Thanks for your advice, all checks have passed.

Thank you very much for your contribution!
You are welcome to join Wechaty Contributor Program
1. Join Wechaty Organization

You've invited Tju-LMc to Wechaty! They'll be receiving an email shortly. They can also visit https://github.com/wechaty to accept the invitation.

I have invited you to join our Wechaty GitHub Organization, please accept it by following the above message. (See also: wechaty/PMC#16)
2. Update Your Wechaty Contributor Profile

Please open Contributor Hall of Fame and add yourself to the end of the list, so that other contributors will know you better!
Please add yourself to our Website Contributors by creating a PR and refer to this PR link as well.

3. Join The Contributor Only WeChat Room
We also have a WeChat room for contributors only which can discuss Wechaty at a deeper level, you are welcome to join and if you are interested.
Please add @lijiarui wechat: ruirui_0914 and send her this pr link. She will invite you into Wechaty Contributor Room
Cheers!


Heatmap edges fix

Purpose:
Current Heatmap implementation render wrong on the edges, This is especially noticeable at small Heatmaps.
This PR setup additional params for Graphics.DrawImage() to make correct edges render.
Also more accurate pixel calculation were done, as result Heatmap perfect align with axis grid.
Negative side: I remove minScale calculation, as result Heatmap cells may be not square if EqualAxis will be disabled.
All Demo already have equal axis scales, and additional math not needed.
New Functionality:
Old version (incorrect)  3x2 HeatMap from cookbook:

The same demo with this PR:

Thank you for getting this working, although I'm curious about https://github.com/ScottPlot/ScottPlot/blob/b560eee6abb85efe626a808ef11e9037f41cb329/src/ScottPlot/Plottable/Heatmap.cs#L193
It looks like this is for tiling images? But we're not trying to tile images at all.

Thank you for getting this working, although I'm curious about https://github.com/ScottPlot/ScottPlot/blob/b560eee6abb85efe626a808ef11e9037f41cb329/src/ScottPlot/Plottable/Heatmap.cs#L193
It looks like this is for tiling images? But we're not trying to tile images at all.

If we only need that one line then I think one should only change what you need to. This would avoid changing the rendering of heatmaps to be stretched without being specified by the user.
For example, RenderHeatmap can become this:
private void RenderHeatmap(PlotDimensions dims, Bitmap bmp, bool lowQuality)
{
	using (Graphics gfx = GDI.Graphics(bmp, dims, lowQuality))
	{
		gfx.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
		gfx.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;

		double minScale = Math.Min(dims.PxPerUnitX, dims.PxPerUnitY);

		if (BackgroundImage != null && !DisplayImageAbove)
			gfx.DrawImage(
				BackgroundImage,
				dims.GetPixelX(0),
				dims.GetPixelY(0) - (float)(Height * minScale),
				(float)(Width * minScale), (float)(Height * minScale));

		gfx.DrawImage(
			BmpHeatmap,
			dims.GetPixelX(0),
			dims.GetPixelY(0) - (float)(Height * minScale),
			(float)(Width * minScale),
			(float)(Height * minScale));

		if (BackgroundImage != null && DisplayImageAbove)
			gfx.DrawImage(BackgroundImage,
				dims.GetPixelX(0),
				dims.GetPixelY(0) - (float)(Height * minScale),
				(float)(Width * minScale),
				(float)(Height * minScale));
	}
}

This change was made in https://github.com/Benny121221/ScottPlot/tree/heatmap-edges, so far it seems ok.

If we only need that one line then I think one should only change what you need to. This would avoid changing the rendering of heatmaps to be stretched without being specified by the user.
For example, RenderHeatmap can become this:
private void RenderHeatmap(PlotDimensions dims, Bitmap bmp, bool lowQuality)
{
	using (Graphics gfx = GDI.Graphics(bmp, dims, lowQuality))
	{
		gfx.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
		gfx.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;

		double minScale = Math.Min(dims.PxPerUnitX, dims.PxPerUnitY);

		if (BackgroundImage != null && !DisplayImageAbove)
			gfx.DrawImage(
				BackgroundImage,
				dims.GetPixelX(0),
				dims.GetPixelY(0) - (float)(Height * minScale),
				(float)(Width * minScale), (float)(Height * minScale));

		gfx.DrawImage(
			BmpHeatmap,
			dims.GetPixelX(0),
			dims.GetPixelY(0) - (float)(Height * minScale),
			(float)(Width * minScale),
			(float)(Height * minScale));

		if (BackgroundImage != null && DisplayImageAbove)
			gfx.DrawImage(BackgroundImage,
				dims.GetPixelX(0),
				dims.GetPixelY(0) - (float)(Height * minScale),
				(float)(Width * minScale),
				(float)(Height * minScale));
	}
}

This change was made in https://github.com/Benny121221/ScottPlot/tree/heatmap-edges, so far it seems ok.

Hi @Benny121221,
You are right, PixelOffset.Half make most of the things. But if You plan plan to use different interpolation mode you need to set wrap mode too. I plan use bicubic interpolation in coordinated heat map. Maybe it not needed for base heatmap.
More accurate image coordinates also make some effect. With old ones it visible that heatmap draw 1-2 pixel less then expected on right and bottom edges.

Hi @Benny121221,
You are right, PixelOffset.Half make most of the things. But if You plan plan to use different interpolation mode you need to set wrap mode too. I plan use bicubic interpolation in coordinated heat map. Maybe it not needed for base heatmap.
More accurate image coordinates also make some effect. With old ones it visible that heatmap draw 1-2 pixel less then expected on right and bottom edges.


Expose ConfigurationBuilder (for UserSecrets)

NLog version: 5.3.3 (Web)
Platform: .NET6
I am using appsettings.json to configure NLog.
I have a problem, where "UserSecrets" are not overwriting configs used by NLog. Let me know if this is possible already, otherwise, here is my suggestion.
The current ASP NET 6 NLog documentation suggests to initialise like this:
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
logger.Debug("init main");

However, this is what the method does:
            var builder = new ConfigurationBuilder()
                // Host Configuration
                .SetBasePath(currentBasePath)
                .AddEnvironmentVariables(prefix: "ASPNETCORE_")
                .AddEnvironmentVariables(prefix: "DOTNET_")
                // App Configuration
                .AddJsonFile("appsettings.json", optional, reloadOnChange)
                .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: reloadOnChange)
                .AddEnvironmentVariables();

            var config = builder.Build();

I would like to be able to use the above method and UserSecrets, by doing something like this:
builder.AddUserSecrets<Program>()
Are we able to expose this ConfigurationBuilder (Action<ConfigurationBuilder>) as a parameter to the above method? I would not like to clone the LoadConfigurationFromAppSettings method just to add my bit of code there.

The LoadConfigurationFromAppSettings-extension-method is very generic, and not at all optimal. It contains all kind of probing logic to guess where the user has hidden their NLog-configuration. But it is good enough for most users, that doesn't care much about such details.
If you actually know where you have stored the NLog-configuration, then I really recommend that you just copy the basic bits that you need from LoadConfigurationFromAppSettings, as you will get a more predictable experience.
Also if you only need logging to work within the host-builder, then I recommend to skip the LoadConfigurationFromAppSettings-extension-method, since it is only useful for logging before the HostBuilder is completed.

Thank you for explaining the LoadConfigurationFromAppSettings and suggestions.
Could you provide an example, of how I could skip this extension? From the documented example, I only use "IHostBuilder.UseNLog()". Are you saying I don't need the LogManager.Setup().LoadConfigurationFromAppSettings() if I don't want to wrap host builder in try cache? And I don't need LogManager.Shutdown() in "finally" block?
All I really want is for NLog to read my host configurations, which already have ".AddEnvironmentVariables()" and more.
Sorry, I am a bit lost on how NLog is being configured.
If there is still value in LogManager.Shutdown() and try caching the host builder, I still think exposing an optional ConfigurationBuilder action would be a better approach for me, so a user doesn't need to dissect the documented method (the way I did) and let NLog maintain the environments and other stuff the extension does.

You could do this:
        public static void Main(string[] args)
        {
            try
            {
                CreateHostBuilder(args).Build().Run();
            }
            finally
            {
                LogManager.Shutdown();
            }
        }

        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder(args)
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.ClearProviders();
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .UseNLog();
        }

Thank you, that worked very well!
Removing the static setup line, the .UseNLog was able to get my configurations including .AddUserSecrets().
This is a better approach instead of me configuring ConfigurationBuilder in 2 places.
Wish I could still log the catch in try catch finally block, but I don't see how that would be possible.

If the exception occurs after having loaded NLog-configuration, then LogManager.GetLogger should work (I have updated the example code)

Thank you. I tested that GetLogger will always return a logger and not null or throw an exception - even if an exception is thrown before the application is built. I am closing this ticket, as I am happy with the result.


Auto Open Popup on page load?

Is it possible to load a magnific pop up on page load rather than click?

i know fancybox can do this.... MFP i never tried...

has this been resolved?

yeah man, as i said before. But, it really required must do it in online.?
there still open question that i found on github, can u check it out?
https://github.com/dimsemenov/Magnific-Popup/issues/688
i just found it the same case, i don't noticed that caption until i read
the user chat....
thanks
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Virus-free.
www.avast.com
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#m_5596408662010345229_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
On Fri, Mar 16, 2018 at 2:56 AM, DaizanNoBakudanBiteTheDust <
<EMAIL_ADDRESS>wrote:

has this been resolved?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dimsemenov/Magnific-Popup/issues/738#issuecomment-373503240,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ajk1V-7L4yJWNTOl6b12CCHtbQrWAv0rks5tesd1gaJpZM4GBkqV
.