black lanes in batched texture lookup

Describe the bug
This is an odd bug. I can't reproduce it reliably, but it occurs quite regularly. When I use OIIO's batched texture lookup, every now and then, all batches of results come back with a specific set of lanes which contain black pixels. The pattern of lanes remains the same through the entire program, but it varies - sometimes it's just one lane, sometimes several.
I see this behaviour both with OIIO 2.4.17 from my package management and from a build from master (2.6.something).
Please run oiiotool --buildinfo and paste the output here.
I suppose this will be enough:
Input formats supported: bmp, cineon, dds, dicom, dpx, ffmpeg, fits, gif, hdr, heif, ico, iff, jpeg, jpeg2000, null, openexr, openvdb, png, pnm, psd, raw, rla, sgi, softimage, targa, tiff, webp, zfile
Output formats supported: bmp, dpx, fits, gif, hdr, heif, ico, iff, jpeg, jpeg2000, null, openexr, png, pnm, rla, sgi, targa, term, tiff, webp, zfile
OpenColorIO 2.1.3, color config: built-in
Known color spaces: "linear", "default", "rgb", "RGB", "sRGB", "Rec709"
Filters available: box, triangle, gaussian, sharp-gaussian, catmull-rom, blackman-harris, sinc, lanczos3, radial-lanczos3, nuke-lanczos6, mitchell, bspline, disk, cubic, keys, simon, rifman
Dependent libraries: OpenEXR 3.1.5, LIBTIFF Version 4.5.1, jpeg-turbo 2.1.5/jp62, dcmtk 3.6.7, FFMpeg 6.0 (Lavf60.16.100), gif_lib 5.2.2, libheif 1.17.6, OpenJpeg 2.5.0, null 1.0, OpenVDB 10.0.1abi10, libpng 1.6.43, libraw 0.21.2-Release, Webp
    1.3.2
OIIO <IP_ADDRESS> built for C++17/201703 sse2
Running on 4 cores 15.3GB sse2,sse3,ssse3,sse41,sse42,avx,avx2,fma,f16c,popcnt,rdrand

Also please tell us if there was anything unusual about your environment or
nonstandard build options you used.
I'm running this on debian testing, nothing unusual. I also tried on a different machine running ubuntu 22.04 LTS with OIIO 2.2.18, same thing there.
To Reproduce
Steps to reproduce the behavior:

compile this program:

#include <OpenImageIO/texture.h>
#include <random>

#define LANES 16

using namespace OIIO ;
int main ( int argc , char * argv[] )
{
  float s[LANES] ;
  float t[LANES] ;
  float dsdx[LANES], dtdx[LANES], dsdy[LANES], dtdy[LANES] ;
  float px[3*LANES] ;

  for ( int i = 0 ; i < LANES ; i++ )
    dsdx[i] = dtdx[i] = dsdy[i] = dtdy[i] = 0 ;

  std::mt19937 gen(42); // level playing field
  std::uniform_real_distribution<> dis(0.0, 1.0);
  TextureSystem * ts = TextureSystem::create() ;
  ustring ufilename ( argv[1] ) ;
  auto th = ts->get_texture_handle ( ufilename ) ;
  TextureOptBatch batch_options ;
  for ( int i = 0 ; i < LANES ; i++ )
    batch_options.swidth[i] = batch_options.twidth[i] = 0 ;

  for ( int k = 0 ; k < 100000 ; k++ )
  {
    for ( int i = 0 ; i < LANES ; i++ )
    {
      s[i] = dis(gen) ;
      t[i] = dis(gen) ;
    }
    bool result =
    ts->texture ( th , nullptr , batch_options , Tex::RunMaskOn ,
                  s , t ,
                  dsdx, dtdx, dsdy, dtdy ,
                  3 , px ) ;

    assert ( result ) ;
    for ( int i = 0 ; i < LANES ; i++ )
    {
      if ( px[i] == 0.0f && px[LANES+i] == 0.0f && px[2*LANES+i] == 0.0f )
        std::cout << "bingo " << k << " " << i << std::endl ;
    }
  }
  return 0 ;
}

let's say the program is called texture_fuzz.cc, compile like this (clang++ does the same):
g++ -O3 -std=c++17 -otexture_fuzz texture_fuzz.cc -lOpenImageIO -lOpenImageIO_Util

Then run it, passing an image file as the sole argument.

Then THIS happens (reproduce the exact error message if you can)
... this is the hard bit. The expected behaviour is something like this:

bingo 1063 15
bingo 1174 13
bingo 1982 9
bingo 2080 8
bingo 4386 4
bingo 5574 10
bingo 8361 0
bingo 8744 10
bingo 10935 11
bingo 12076 1
bingo 18688 4
bingo 19130 9

so, the program detects the odd output pixel which is entirely black - if there are no black pixels in the input, there may be no output.
But every now and then, the bug happens and the output becomes something like this:
bingo 0 1
bingo 0 3
bingo 0 9
bingo 0 11
bingo 1 1
bingo 1 3
bingo 1 9
bingo 1 11
and so on.

This is driving me nuts. Maybe I'm missing something, but I can't find any hint in the docu, e.g. more stuff I have to pass to OIIO to make it peform correctly - I tried all sorts of batch options, all to no avail. It looks like data being accessed through a pointer to memory which may or may not contain the correct content (like, it was there but may have been altered in the meantime) - or loading from a dangling pointer - just guessing. Like the mask gone random and then stuck, but passing in Tex::RunMaskOn should set all lanes. So I'm at a loss. I'd appreciate if someone could at least reproduce the behaviour - or tell me what I'm missing.

One step further: the bug seems to occur only with MipModeAniso - at least, so far, I've been unable to trigger it with other mipmapping modes. So I suppose that's why I got to see it: MipModeAniso is the default, and the most interesting one, offering the anisotropic antialiasing filter.
So far, except for one trial which only experienced the bug in the second invocation of 'texture' (this is really odd!), all occurences of the bug happened immediately in the first invocation, and most of the time several lanes were affected. Trials with no affected lanes were significantly more frequent than trials with one or several. From this behaviour my guess is now one or several uninitialized variables somewhere in the RGB gleaning code.

I think I found it! It's the sblur and tblur parameters in the batch options. They are not initialized in the c'tor, and the swidth and twidth parameters aren't initialized either. The plain TextureOpts c'tor does initialize them, but in the 'texture' function the value for the TextureOpt is overwritten with the (uninitialized) value from the batch options. I think it might be a good idea to initialize these values to the defaults in TextureOptBatch's c'tor, e.g. in the same loop where rnd is initialized. I'll try that and report again.

That fixes it. I did this:
~/src/OpenImageIO$ git diff
diff --git a/src/include/OpenImageIO/texture.h b/src/include/OpenImageIO/texture.h
index 2fb88bc94..5713156cf 100644
--- a/src/include/OpenImageIO/texture.h
+++ b/src/include/OpenImageIO/texture.h
@@ -311,8 +311,15 @@ public:
     /// Create a TextureOptBatch with all fields initialized to reasonable
     /// defaults.
     TextureOptBatch () {
-        for (int i = 0; i < Tex::BatchWidth; ++i)
-            rnd[i] = -1.0f;
+        for (int i = 0; i < Tex::BatchWidth; ++i) {
+            rnd[i] = -1.0f ;
+            sblur[i] = 0.0f ;
+            tblur[i] = 0.0f ;
+            rblur[i] = 0.0f ;
+            swidth[i] = 1.0f ;
+            twidth[i] = 1.0f ;
+            rwidth[i] = 1.0f ;
+        }
     }

     // Options that may be different for each point we're texturing

This way, the width and blur parameters are initialized to the same default as in a plain TextureOpt.
While the bug is not fixed, the workaround is to initialize these members explicitly, like:
  TextureOptBatch batch_options ;

  for ( int i = 0 ; i < 16 ; i++ )
    batch_options.swidth[i] = batch_options.twidth[i] = 1 ;

  for ( int i = 0 ; i < 16 ; i++ )
    batch_options.sblur[i] = batch_options.tblur[i] = 0 ;

... use the batch options

Let me add a bit of opinion. Failing to initialize the batch options happened to me because I trusted the documentation in so far as to assume that the batch options would behave like the single-point texture options. With my fix, this should now be the case. The documentation was the first place where I tried to find a solution for my problem, so I studied it carefully. I happen to be quite involved in SIMD programming, so this made perfect sense to me:
On CPU architectures with SIMD processing, texturing entire batches of samples at once may provide
a large speedup compared to texturing each sample point individually.

I assumed that, offering a SIMDized API, you would indeed provide SIMDized code. But you make no such claim: you say 'may provide'. Looking at the code, when the documentation did not help me fix the bug (nor the community of contributors who ignored this thread), what did I see:
TextureSystemImpl::texture(TextureHandle* texture_handle,
                                              Perthread* thread_info, TextureOptBatch& options,
  ...
{
    // (FIXME) CHEAT! Texture points individually

And then you proceed to chop up the incoming data, which are perfectly ready for SIMD processing, into parameter sets for calls to single-point texture lookups and run the code in a loop over the lanes. CHEAT indeed. No surprise the code is so slow - I had assumed it was due to the complex nature of the anisotropic antialiasing filter and the ripmap you would have to set up for it, but now I suspect it's merely due to the lack of SIMD processing. The acrobatics of first deinterleaving the incoming data into SIMD-load-ready memory to feed them to the batched lookup and then processing this memory with single-float reads and the conditionals to cater for the mask is sure to slow the process down additionally, so I wouldn't be surprised to see that going via the batched lookup is actually slower than using single-point lookups straight away. So what's the point of offering an API for batched texture lookup? Providing an empty shell hoping that someone will come along to provide proper code? I assume that you, @lgritz, are the author of this code, so I invoke you by name, maybe you can shed some light on this topic.
SIMD is a big issue, and it requires a different style of programming. But there are tools to make the transition easier. When I started out with SIMD programming, the library to use was - in my opinion - Vc, which has mutated into what's now std::simd, losing a few good features on the way because the C++ standard committee did not think it a good idea to have std::simd provide stuff like gather and scatter operations, and the version of std::simd which made it into the GNU version did drop another few good features like the SIMDized version of atan2. The whole show slowed down, the author of Vc moved on from his thesis project, and now Vc is in maintenance mode and std::simd has not evolved much. But Vc's - and std::simd's way of tackling the SIMD access by providing SIMD-capable types which behave very much like 'normal' scalar operands is still valid, and I did use it to good effect in my code. When I decided to move to highway to get support for other architectures and for AVX512, I decided to build an abstraction layer which provides pretty much the same interface as Vc, but can use several SIMD back-ends under the hood - and  at the same time offer the familiar interface, so did not have to modify my Vc-based code. Later I factored that out into zimt. It's easy to use, it's free, and one can use it to program SIMD code without the pain involved in using intrinsics - even highway's portable intrinsics are quite a mouthful, but the zimt layer provides a uniform, Vc-like interface.
Let me add this: SIMD is now available in pretty much every CPU on the market. But it's still not used much. Why is that? Because of needed change in programming style, the difficulty to address the different architectures and the inertia of extant code which would have to be modified. But using SIMD pays off big time. A lot of stuff which is now done on the GPU (which is, as a programming option, much harder to tackle than SIMD but nevertheless very popular) can be done with SIMD, and then it's often enough so fast that the GPU is not even needed. AFAICT, OIIO is CPU-based. Texture lookup is the achilles heel of the entire texture system, every pixel you emit goes through this bit of code. Failing to use SIMD there is about the worst place not to use it. Please do consider using it - if you don't like zimt because it's from an independent source with no industry backing, I recommend you use highway directly - it's sort of from google ("not an officially supported Google product"), who are members of ASWF, and they have helped me a lot to get my use of their library up and running. They might even be interested in helping with OIIO's batched texture lookup, because it can showcase their library and help it get a wider user base.

You don't need to educate me about SIMD basics, thanks.
You may have noticed that OIIO's simd.h that provides SIMD data type classes that can be used without anybody needing to know about intrinsics, etc., and thus probably would not benefit from any of those other 3rd party dependencies you mention that do mostly the same thing.
You may also have noticed that the current single-lookup texture operations do use SIMD extensively in their implementation -- it's just that it's mainly used to parallelize all the math on the 3 or 4 color channels needed for each texture lookup, rather than trying to use SIMD to compute many texture lookups at once. You can't SIMD-ize both at the same time. So it already isn't simply a naive scalar implementation, it does use SIMD, just not in the way you might expect.
At some point, we provided a batched API to TextureSystem, but at first only provided a naive implementation that loops over the points. The reason we never got around to replacing the implementation with a more sophisticated SIMD implementation that parallelizes across shade lookups (instead of across channels) is simple:

My company's renderer, like most other high-end renderers, traces individual rays rather than coherent batches, and so would not benefit from any improvement to the batched API, which we don't currently use. For that reason, it makes no sense for me to spend time implementing it.
Nobody else stepped forward to do the implementation work.
Also nobody else who uses OIIO's texture system has particularly asked for it.

Note that points 1 and 3 also explain how the bug reported in this issue has gone so long without being previously reported -- it's very possible that nobody is relying on the batched texture lookups.
I would welcome a PR that would improve the implementation behind the batched API texture calls.

You don't need to educate me about SIMD basics, thanks.

Sorry, I didn't mean to step on your toes. My code is using SIMD throughout, and when I saw the vectorized API I was happy, because I could just pass on the SIMD data I already had going. When I saw later that it was just a loop over the lanes I was disappointed, because it sort of threw a spanner in the works.

parallelize all the math on the 3 or 4 color channels needed for each texture lookup

That's the point which irked me. I did see the vectorization across the colour channels. Using vertical vectorization  was okay for SSE, when a vector didn't have many lanes. But as CPUs improve and the lane count increases, you need horizontal vectorization to exploit the wider SIMD units. I recommended highway, which is modern and good for back-end work, providing 'portable intrinsics' which work across architectures. But it's a bit low-level, that's why I also mentioned my library zimt, which gives it a 'friendlier face'. I'm trying to give helpful hints - I've done a lot of research and reading trying to find the best solution.

My company's renderer, like most other high-end renderers, traces individual rays rather than coherent batches, and so would not benefit from any improvement to the batched API, which we don't currently use. For that reason, it makes no sense for me to spend time implementing it.

Okay, I see where you're coming from. In a way, lux also does ray tracing, but of course it's much less complex and focused on speed, so that I can produce 60fps for fluid animations of single-image visualizations - most synoptic views are too complex to run in real-time, even with SIMD. But if the rendition becomes very complex and varies a lot between the rays, using SIMD does become difficult indeed.

the bug reported in this issue has gone so long without being previously reported

So you also consider this a bug. Can you simply fix it, adding the missing initialization?

it's very possible that nobody is relying on the batched texture lookups.

That's what it felt like. In a way I found it surprising to find stuff like the image cache and the texture system in an image i/o library, but since my work is pretty much along the same lines, I see how it's logical to move on in that direction. I do appreciate your design, and I understand that it's hard to get it all implemented.

That's the point which irked me. I did see the vectorization across the colour channels. Using vertical vectorization was okay for SSE, when a vector didn't have many lanes. But as CPUs improve and the lane count increases, you need horizontal vectorization to exploit the wider SIMD units. I recommended highway, which is modern and good for back-end work, providing 'portable intrinsics' which work across architectures. But it's a bit low-level, that's why I also mentioned my library zimt, which gives it a 'friendlier face'. I'm trying to give helpful hints - I've done a lot of research and reading trying to find the best solution.

I do appreciate the suggestions. I think I have both of these bookmarked and will take a look. If we wanted a more "horizontal" style of SIMD, we might use one of those, or add more to our simd.h to make it even easier.
But really, it comes down to the fact that my own use case for the texture system doesn't generate batched queries, so I personally don't have the time to do this work. As far as I know, none of the other major renderers that use OIIO's TextureSystem do, either. And most of them are all-hands-on-deck of doing GPU ports and for the most part have decided that Cuda+OptiX is the way forward for fast parallel ray tracing, rather than AVX-512.

But if the rendition becomes very complex and varies a lot between the rays, using SIMD does become difficult indeed.

That's exactly the problem. We did implement it all at one point in our renderer, but it was really difficult to maintain enough coherence in the rays to fill out enough lanes to consistently come out ahead, and when we finally got rid of that extra mechanism and went back to single point shading, the renderer code got a lot simpler. And it's easier to optimize simple code. We do use SIMD in the renderer, too, but again in a more "vertical" way, like using SIMD to test several bounding boxes against one ray at a time, rather than trying to juggle many rays at once.

So you also consider this a bug. Can you simply fix it, adding the missing initialization?

Of course. I'll try to do it today, on my weekend, because nobody else seems willing to just submit the PR themselves even though they know exactly what to fix.

In a way I found it surprising to find stuff like the image cache and the texture system in an image i/o library,

OpenImageIO was very much conceived as "the image IO parts of a renderer", and also it's a companion project to Open Shading Language. Sometimes it's hard to know precisely where the boundary between them should live, and in an alternate universe, the IC/TS might be on the OSL side, or exist as yet a third project that sits between them.

Proposed fix in #4226

Thanks for the prompt fix, even on a weekend! I tried it out here, and it works for me.

OpenImageIO was very much conceived as "the image IO parts of a renderer"

That's how lux came to be: as a demo program for my SIMDized b-spline library. And now I found 'the image IO part' to replace the one I'm currently using, and, lo and behold, it can even do rendering! So I couldn't resist and gave it a spin.
I am currently working on environments, both lat/lon and cubemap. I am unhappy with openEXR's exrenvmap utility because it seems not to produce entirely correct results - see this issue if you're interested. And I took this as a hint to look at cubemaps again, because I'm not entirely happy with the cubemap processing in lux either. So far this has been a rewarding journey, and I've come up with a few interesting new ideas which I'm testing out.
I was trying to interest them in looking at their code again, but it came out pretty much like 'we won't fix it but if you do it we'll take it'. They said that they wanted something with 'better mathematics' (their code is 20 years old) - so I thought that using OIIO's environment lookup would be just the ticket. At least I could use their utility to create a cubemap to their standards to try and feed it to OIIO, when OIIO didn't like the cubemaps I had made. Then it turned out that OIIO only supports lat/lon (at least that's the impression I get) so I had to use not only the batched environment function but also the batched texture function - and that's how this bug surfaced, showing that precisely the two functions I wanted weren't SIMDized all through and had this bug... argh!
Now I won't go on much longer on a Saturday, but I'd say that a texture lookup is probably simple enough to fully do in SIMD, even if complex ray tracing is not. I have a clear idea of how this code works - interpolation is one of my special interests. I see the biggest stumbling stone in the tiled nature of the data. Whenever the iteration hits upon a tile which isn't already in RAM, the code has to get off it's set pattern and deal with it, and this is detrimental to speed and doesn't work well with SIMD. But I also want to switch to using tiled data, so I've been thinking about this for some time now - maybe I'll figure something out.

No problem, I'm happy to do it.
When we added the batched texture API calls, I really did mean to get back to do the implementation. But like I said, our renderer turned away from batching rays (thus, no batched texture lookups), and then later moved more toward GPU for ways to get higher performance, so the priority for doing it was greatly diminished. I don't think it would be very hard to do a good horizontal SIMD implementation. I think it would be fun, it's really all I can do not to just jump on it myself. :-) But I have so many other things to do that is directly needed by my employers or other people in the industry, it would be unwise for me to spend the time on it myself.
Does OIIO not do cubemap lookups? Maybe I'm thinking of the last texture system I wrote, which did. I think I meant to add that to OIIO like 15 years ago, but the first renderer we added it to at SPI was at that point only latlong, so finishing the direct cubemap lookups were postponed, and somehow it just never bubbled up the priority list (and apparently none of the other renderers using OIIO::TS have complained loudly enough). I'm not sure why it is, exactly, I was always partial to cube maps myself, but it does seem that latlongs have mostly taken over in that style of renderer.

Anyway, if you could go to the PR and approve it if the code looks right to you, I will merge it and also backport to the next release patch that will happen in a couple weeks.

Does OIIO not do cubemap lookups?

Well, as far as I can tell it doesn't. I fed a cubemap and tried to process it with calls to 'environment', but it clearly did not understand the format. This was confusing, because in the comments to your code you tell an interesting story about how openEXR has specific ideas about cubemaps which aren't necessarily what one would expect (like, repeating all edges, probably to avoid trouble with bilinear lookups) - so I thought it should be there somehow and I was just doing something wrong.
I always thought they were simply using a standard which coincides with openGL cubemaps and so would everyone else, but now I'm not so sure... but my cubemap code is maturing, now it works with OIIO's texture lookup as well, and I even already have a very fast fully SIMDized bilinear pickup, which is easy because I hold all the data in RAM and don't have to deal with tiles.

I think it would be fun, it's really all I can do not to just jump on it myself. :-)
I was always partial to cube maps myself

It is fun indeed, and I've enjoyed coding it. I've now come up with a nice utility to convert between lat/lon and cubemap. It's written using zimt and OIIO. It started out as a demo program for zimt, but since it was so much fun coding it, and since openEXR's conversion tool doesn't really work for me, I elaborated:

arbitrary size of output
choose between OIIO's antialiased lookup and (fast) direct bilinear interpolation with zimt
process files with one, three or four channels
choice of SIMD back-end by compile-time switch (Vc, highway, std::simd or zimt's own)

The code is here - it's amply commented, and I hope it conveys a good idea how zimt is helpful to code stuff like this in multithreaded SIMD without the pain of using intrinsics and the likes - and it optionally uses OIIO's batched texture and environment lookups.
One thing which I'd like to point out as a distinguishing feature is the way how this program represents cubemaps internally. The raw cube face images are surrounded with an additional frame of pixels interpolated from neighbouring cube faces to produce an IR image with sufficient support for good interpolators and mip-mapping. This is to make sure that there are no artifacts along the cube's edges.


After importing 3rd account, Vessel is blank

I do not have any logs, so I cannot give you right now more details.

OS: Ubuntu 14.04

Hrm - CTRL+R will refresh the app (since it's a web browser), that might fix it.
You should also be able to open up the chrome console through the menu's, though I'm not absolutely sure how via Ubuntu.
F12, Ctrl + Shift + I or Cmd + Opt + I maybe?

I tried to reinstall vessel, but so far without a success. Where vessel keeps the data, that I could remove everything and setup everything from the scratch?

Mac OS: ~/Library/Application Support/vessel
Windows: C:\Users<you>\AppData\Local\vessel
Linux: ~/.config/vessel

refresh doesn't help in my case

Can you get the dev tools open?

Good information. After removing ~/.config/vessel it works again. Bad information, I didn't notice your comment, so I removed a folder before I tried to open dev tools.

haha, no worries. That's where it's all stored. From the sounds of it, it sounds like something got imported and it didn't know how to handle it on load. If you're able to reproduce, and can get the devtools open, let me know what was causing it and I'll get it fixed.

I try to open dev tools in a way how I do it on Chrome (Ctrl + Shift + I). But it doesn't work in an app :/

Hrm - I'll have to look into that.

We safe to close this one unless it crops up again??

Opened #11 in relation to the devtools not opening

DevTools should be enabled now in 0.0.6-c. If you run into any errors, open up the console and let me know what error is being thrown.


Binary Tree Maximum Path Sum using CPP

Leetcode problem binary tree maximum path sum code using C++.

Can I work on this issue using C++.

You can choose other problems as I have already solved it in a very
efficient way. Only I have to push it.
On Mon, Jul 12, 2021 at 1:08 AM Harshita Nayak @.***>
wrote:

Can I work on this issue using C++.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/smv1999/CompetitiveProgrammingQuestionBank/issues/353#issuecomment-877850434,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQ2M7QG7LDLAYNL6SS6WUVLTXHXMHANCNFSM5AFRHZ6A
.

Go ahead @sr-sweta


ClassFinder.processClassLoadError Swallowing Exceptions

https://github.com/NationalSecurityAgency/ghidra/blob/25894ff9ae6b670811ce4e3ed1aea973069a5e21/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassFinder.java#L114-L121
So I was implementing a Loader and spent several hours banging my head on my desk trying to figure out why my implementation wasn't being loaded yet was in the classpath. After finally tracing it to the catch block in the ClassFinder.loadExtensionPoint and executing t.printStackTrace() from my debugger did I figure out what my problem was.
Here is what my stackTrace was for the exception being swallowed.
java.lang.ExceptionInInitializerError
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:416)
        at ghidra.util.classfinder.ClassFinder.loadExtensionPoint(ClassFinder.java:100)
        at ghidra.util.classfinder.ClassPackage.scanClasses(ClassPackage.java:51)
        at ghidra.util.classfinder.ClassPackage.<init>(ClassPackage.java:42)
        at ghidra.util.classfinder.ClassPackage.scanSubPackages(ClassPackage.java:83)
        at ghidra.util.classfinder.ClassPackage.<init>(ClassPackage.java:43)
        at ghidra.util.classfinder.ClassPackage.scanSubPackages(ClassPackage.java:83)
        at ghidra.util.classfinder.ClassPackage.<init>(ClassPackage.java:43)
        at ghidra.util.classfinder.ClassDir.<init>(ClassDir.java:33)
        at ghidra.util.classfinder.ClassFinder.initialize(ClassFinder.java:70)
        at ghidra.util.classfinder.ClassFinder.<init>(ClassFinder.java:44)
        at ghidra.util.classfinder.ClassSearcher.search(ClassSearcher.java:233)
        at ghidra.framework.HeadlessGhidraApplicationConfiguration.performClassSearching(HeadlessGhidraApplicationConfiguration.java:91)
        at ghidra.framework.HeadlessGhidraApplicationConfiguration.initializeApplication(HeadlessGhidraApplicationConfiguration.java:41)
        at ghidra.framework.GhidraApplicationConfiguration.initializeApplication(GhidraApplicationConfiguration.java:57)
        at ghidra.framework.Application.initializeApplication(Application.java:115)
        at ghidra.GhidraRun.lambda$launch$1(GhidraRun.java:78)
        at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.IllegalArgumentException: duplicate element: MIPS-R5900
        at java.base/java.util.ImmutableCollections$Set12.<init>(ImmutableCollections.java:574)
        at java.base/java.util.Set.of(Set.java:485)
        at ghidra.emotionengine.EmotionEngineLoader.<clinit>(EmotionEngineLoader.java:36)
        ... 19 more

While quite embarrassing here is what was causing the problem:
private static final Set<String> TARGET_PROCESSORS = Collections.unmodifiableSet(
        Set.of("MIPS-R5900", "MIPS-R5900")
    );

Attached is a fresh log with the bad implementation showing that the exception is indeed being swallowed.
application.log

The exception is not exactly being 'squashed'.  We are logging it at the trace level with the notion that developer could enable tracing while they are building extensions to Ghidra.    If you believe the comment in the code that is logging the trace, then we potentially run into these exceptions when dealing with 3rd-party libraries that have naming patters similar to those that we use for discovery.
That being said, we could update the error handler to ignore 3rd-party jars only, allowing developer code to be logged.

The exception is not exactly being 'squashed'. We are logging it at the trace level with the notion that developer could enable tracing while they are building extensions to Ghidra. If you believe the comment in the code that is logging the trace, then we potentially run into these exceptions when dealing with 3rd-party libraries that have naming patters similar to those that we use for discovery.
That being said, we could update the error handler to ignore 3rd-party jars only, allowing developer code to be logged.

I'm fairly certain I have my debuggers console output to verbose. That being said no trace or anything was printed. It just ignored it.

I can see the code path for this exception is outputting at the trace level.   Assuming our logging implementation is not broken, then this would be a log configuration item.
To test this running from a build, you can:

Edit /support/debug.log4j.xml to have "console" set to "TRACE"
Edit that same file to have the "ghidra" entry set to "TRACE"
Launch ghidra from /ghidraDebug

If running from a repo clone using Eclipse, then you will either have to make similar edits to Generic/src/main/resources/generic.log4jdev.xml or override the log config file used inside of the Eclipse launcher.

I can see the code path for this exception is outputting at the trace level. Assuming our logging implementation is not broken, then this would be a log configuration item.
To test this running from a build, you can:

Edit /support/debug.log4j.xml to have "console" set to "TRACE"
Edit that same file to have the "ghidra" entry set to "TRACE"
Launch ghidra from /ghidraDebug

If running from a repo clone using Eclipse, then you will either have to make similar edits to Generic/src/main/resources/generic.log4jdev.xml or override the log config file used inside of the Eclipse launcher.

According to my output upon launch it is using the following:
Using log config file: jar:file:/C:/Users/astre/Documents/ghidra_9.2_DEV/Ghidra/Framework/Generic/lib/Generic.jar!/generic.log4j.xml (LoggingInitialization)
So I changed the one in the archive and lo and behold it was indeed logged. I'm not sure why it's using that one though.

I'm not sure why it's using that one though.

In 'production mode' it will use generic.log4j.xml; in 'development mode' it will use the file I mentioned above.   SystemUtilities determines which mode you are in by checking how it was loaded--loading from a jar file is 'production mode'; loading from a directory on the filesystem signals 'development mode'.
Regadless of the mode, you can specify your own log file from a system property in your launcher by using:
-Dlog4j.configuration=/path/to/log/file.xml


fixes the xss issues

req.headers.host was unguarded but now it has an ent.encode() around it. The file variables can't mess up the display either with metacharacters now that they are wrapped with encodeURI and ent.encode().

^5


docs: flow dev guide

What's Changed in this PR
Describe the change in this PR
Flow's dev guide, including flow's compute module and state management
Checklist

[ ] Please ensure that the content in summary.yml matches the current document structure when you changed the document structure.
[ ] This change requires follow-up update in localized docs.

In which component is the flownode located? Frontend? Datanode? or Metasrv?
We can move the flownode documents to the component documentation where it belongs to.

please also update the summary.yml, thank you

Please also modify the architecture image in /contributor-guide/overview.md. cc @fengjiachun

I think we don't need to add the flow engine to the architecture diagram for now.


Rework App-Styling

Value description/ definition
As a user
I want to see a cool coherent design in which I can view all the features of the app wonderfully
so that I like to use this app
Description
rework the styling and positioning of the objects on my view
Acceptance criteria

[ ] the design needs to be coherent in itself
[ ] all colors match each other
[ ] all components need to display correctly

Tasks

[ ] Create a branch
[ ] Make first Commit for Upstream
[ ] rework the styling

Complexity
low

Hey 👋 looks good to me!


Unable to configure default local provider

Environment information
Unable to configure the default provider for the local network because the key is not registered
What went wrong?
Local network is missing from the config
How can it be fixed?
Add local to the config

Fixed with https://github.com/ApeWorX/ape-optimism/pull/4


Protect Endpoints

When you login as a user a JWT access token returns, we need to use that token when making requests to:
Event

update
delete
Note:
We need only public events to be return for unauthenticated users.
If the user has a team they can only see events for their team.

Team

Create Team - only for authenticated user
Update team - Only admin of team
delete team - Only admin of team
-Note: users that do not have a team can join a team

Mileage

Create mileage - only for authenticated users
Get  mileage - only for authenticated user

Subteam

Create - only admin of the team can create
edit - only admin
delete only admin of team

for event -> update and del, what exactly do you want me to limit?

for event -> update and del, what exactly do you want me to limit?

only authenicated users can update, delete and create. Only team admins can update and delete/archive their events


[ Question ] Using the embedPdf method.

Hi !
What brought me to this library a few days ago was the ability to merge two or more documents efficiently.
For the sake of this question, we'll only focus on combining two documents.
Before I continue with the issue description, I want to say that I have taken a look at your example where you used the "embedPdf" method, but I didn't quite get it because you were manipulating a single page which isn't what I'm trying to do here ( my assumption might be wrong about what's going on behind the scenes though ).
Let's say one of the documents is large with a large page count, and the other one only has two pages. Let's call the larger one "doc1" and the smaller one "doc2".
So, right away, as I see the "embedPdf" method, I assume that I can load up one document and embed the other one into it and get the complete document out.
const doc1Url = 'https://example/doc1.pdf'
const doc1SourcePdf = await fetch(doc1Url).then((res) => res.arrayBuffer())

const doc2Url = 'https://example/doc2.pdf'
const doc2SourcePdf = await fetch(doc2Url).then((res) => res.arrayBuffer())

const doc1 = await PDFDocument.load( doc1SourcePdf );

// Here, I don't assign the return value to a variable since I don't expect to use the embedded page or manipulate it
await doc1.embedPdf( doc2SourcePdf )
// With the "embedPdf" method used on "doc1" I assume that the "doc2" was embedded into it.

const doc1Base64 = await doc1.saveToBase64()
// What I'm expecting here is that "doc2" was merged into "doc1" with all of it's pages, but it isn't so.

In another issue I saw that you used "PDFDocument.create()" method to instantiate a new PDF document into which another two can be merged and they are pieced together using the "copyPages" and "addPage" methods. ( doc1 + doc2 = doc3 )
Do I have to create a new PDF document using the create method for this to work ?
It doesn't make sense to me because I don't need a new document, but just use the first one with PDFDocument.load(doc1) and embed something into it at the end.
I only see how making a new PDF document using the create method would make sense is if it's a necessity of the library for it to be able to do these manipulations.
What I fear with the page copying method is that it could be unnecessarily costly. e.g. Why would I copy every page in a big document ( doc1 ) and in ( doc2 ) to create a new document ( doc3 ) if I can load up doc1 and place doc2 at it's end ?
As I said, I'm working of the assumption that I don't have to instantiate a new document using PDFDocument.create(). If I can use the PDFDocument.load() and work with that right off the bat.

I look forward to an answer , i think i'm experiencing the same problem, probably because i'm a newbee to this library and to the pdf world in general
Btw the library is great, i resolved a problem i had with puppeteer thanks to pdf-lib, thanks @Hopding

Please see the API docs for https://pdf-lib.js.org/docs/api/classes/pdfdocument#embedpdf and open a bug report if it's not working as described.


Allow using custom SSL context for registration requests

Pyctuator should support using custom ssl.SSLContext when registering
with HTTPS enabled Spring Boot Admin.
This is in addition to the option to disable certificate validation, that
should never be used except for testing, using the PYCTUATOR_REGISTRATION_NO_CERT
environment-variable.
Solves #65

Looks good!

Codecov Report

Merging #66 (8f89ae1) into master (87f4e63) will increase coverage by 0.01%.
The diff coverage is 60.00%.

@@            Coverage Diff             @@
##           master      #66      +/-   ##
==========================================
+ Coverage   95.24%   95.25%   +0.01%
==========================================
  Files          28       28
  Lines        1093     1096       +3
==========================================
+ Hits         1041     1044       +3
  Misses         52       52

Impacted Files
Coverage Δ

pyctuator/impl/spring_boot_admin_registration.py
83.51% <33.33%> (+0.18%)
:arrow_up:

pyctuator/pyctuator.py
92.04% <100.00%> (+0.18%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87f4e63...8f89ae1. Read the comment docs.


[WIP] Fixing errors in Test

An equal sign was used in a few places instead of a colon.
Redundant escape file
32 unused imports

There are just too many issues with the tests to take a general approach. I don't think that it will get merged because the number of changes will be too, high. Going to start again with a more targeted approach.


Needs to Clear Global Friends from a guild when you leave that guild

I don't have any toons in "Unknown" any more.

And this was my guild that I disbanded. It's still showing up.


Exporter Issue while trying to convert Cycle Scene

Hello bsavery,
Thanks for the addon! It works great on a fresh scene, but I'm trying to convert my characters from cycles and the exporter throw errors :
The errors :
http://imgur.com/a/iHx4S
The Steps:

Remove all shaders from the meshes and all lights in the scene. Save
From a new scene append the Character Group
Add Lights
Start it IPR (the render go fine, synced with the viewport, everythng: move light, add shaders...)
Stop the IPR (though blender UI)
Restart the IPR (error there see the pics)
Now the BL UI still show Stop IPR so obviously when pressed it comlains about no it process running.

Appart from that everything seem to work fine. Do you know whats going on ? How can I debug it more for you ?
Thanks
My current system:
Arch Linux
Blender 2.77a
RMAN 20.1

can't seem to reproduce this.  Can you attach the scene?
Brian

Hello Brian,
I'll send you a mail with the scene.
I have realised a little other issue I had. If your scene name contains spaces in its name the exporter looses track of it.
Scene Filename: Biscuit Character_v12_renderman.blend
Cannot change directory to /home/mel/renderman/Biscuit: No such file or directory

Can't seem to find your email.
So the errors:
P38003 {ERROR}   Invalid light handle for Illuminate: "World". (at line 43 in /home/mel/renderman/Whoaw_Guy_anim_renderman/Scene.0035.rib; current identifier name: <unnamed>)
Dependency cycle detected:
  Whoaw_reshaped.001 depends on Armature through Armature Modifier.
  Armature depends on Whoaw_reshaped.001 through Driver.

Array iterator out of range: Object_material_slots_lookup_int (index 1)
Traceback (most recent call last):
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/operators.py", line 336, in invoke
    engine.ipr.start_interactive()
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/engine.py", line 585, in start_interactive
    write_rib(self, self.scene, self.ri, visible_objects)
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/export.py", line 2992, in write_rib
    data_blocks, instances = cache_motion(scene, rpass)
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/export.py", line 1903, in cache_motion
    get_instances_and_blocks(objects, rpass)
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/export.py", line 1693, in get_instances_and_blocks
    inst_data_blocks = get_data_blocks_needed(ob, rpass, mb_on)
  File "/home/mel/.config/blender/2.77/scripts/addons/PRMan-for-Blender-master/export.py", line 1806, in get_data_blocks_needed
    1].material] if psys.settings.material and len(ob.material_slots) else []
IndexError: bpy_prop_collection[index]: index 1 out of range, size 1

location: <unknown location>:-1

location: <unknown location>:-1

the file:
Whoaw_Guy_anim_renderman.tar.gz
I think it must be datablock of propierty issues, but it is interesting to find what is really going on.

The second error block (starting with Array iterator) looks like it's related to your materials.


[AutoPR datafactory/resource-manager] support teradata dataset in adf

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/6568

(message created by the CI based on PR content)


CI execs time out more reliably

CI: Ensure k8s execs cancel contexts
We make many calls that end up in SSHMeta.Exec. It would pass
context.Background to SSHMeta.ExecContext. Unfortunately, the way
ExecContext is written relies on the context expiring eventually,
otherwise it will leak goroutines (and also leave the session open,
potentially). We now pass in a cancellable context and cancel it when we
exit Exec. There is still no direct timeout in this case.
CI: SSH exec wrappers cleanup on timeout
In cases where non-expiring contexts were used, we did not clean up watcher
goroutines and they would leak. In cases where the command returned
before the context expired, we would return without waiting for the
session to be torn down.
When a context did expire, the code used SIGINT to terminate it. This
could cause our code to block until the command reacted to SIGINT,
possibly waiting indefinitely (when cilium is deadlocked, for example).
The code now:

Sends a SIGKILL after a grace period, if the command did not exit.
Ensures non-timeout/context based wrappers use a cancelled context
internally, allowing for cleanups.
Always waits for the command to terminate and relies on SIGKILL to
ensure that we exit.

This change is

test-me-please

test-nightly

test-k8s-all

test-missed-k8s

test-upstream-k8s

test-flannel

test-docs-please

Happy to see this fixed :-)

well... I guess that's a resounding NO from the CI then... as always, it works on my machine!

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-docs-please

test-nightly

test-missed-k8s

test-upstream-k8s

test-flannel

test-me-please

test-nightly

test-missed-k8s

test-upstream-k8s

test-flannel

The connections aren't broken on restart tests keep failing, but I can't get them to locally (of course) so, I'll leave those to the end to figure out. The HTTP 416 error is... special. I shall try again.

test-me-please

test-me-please

test-flannel

test-missed-k8s

test-flannel

test-nightly

test-me-please

@raybejjani the flannel tests are broken right now, so we can ignore them failing: https://github.com/cilium/cilium/issues/7523

test-me-please

test-me-please

test-me-please

test-me-please

test-nightly

test-me-please

test-nightly


Only one callback function is available for each of on*Callback types

Hi!
1st to say - this is a nice lib to have, I like the code style.
To issue, comparing to origin Marvinroger's async-mqtt-client this lib allows to bind only single one callback function to each of the event types available, i.e. if one callback is assigned for onConnect(), the second assigned callback will simply override previous one.
Marvinroger's lib has a vector container that allows assigning multiple callbacks that are executed one by one for the specified event.
std::vector<AsyncMqttClientInternals::OnConnectUserCallback> _onConnectUserCallbacks;
For sure such a container could be created in a user code and has a wrapper that will iterate an execute it, but that incompatibility is a bit disappointing.
I could also have come up with a derived class for this functionality, but MqttClientSetup is a template and it does not allow any simple inheritance tricks here.
It that an intentional behavior or just not implemented (yet)?

This is intentional behaviour. I,  can only assess my own applications but I haven't encountered a use case for multiple callbacks. I indeed thought a user could just use an intermediate function or whatever std::function object.
I'm always open for a discussion.

Well, first I hit this when tried your lib as a drop-in replacement to Marvinroger's code. And one of the use cases could be like this:
I'm developing a library that uses MQTT as one of the possible transport layers, it also could work with WebSocket and HTTP REST. So it has AsyncMqttClient instance as a public member, it uses this instance for it's own purposes and at the same time allows end user to interact with AsyncMqttClient instance directly to utilize it's full features, assign own callbacks, subscribe, publish, etc... If I have to hide callbacks behind my own implementation of some container then I have to hide an instance of AsyncMqttClient too, so to prevent end user to override callbacks on his own. But then it forces me to reimplement a full set of wrapper methods of the AsyncMqttClient too to allow user to have it's full flexibility. That is not a nice design concept for sure.
Another example that comes to my mind is ESP32's event message API. It allows to subscribe any number of consumers for i.e. WiFi Events, and all those callbacks would be executed one after the other. It allows to create a very flexible apps, where any component could subscribe to a group of events independently of the others without the need to create a "broker owner" and share it between user and libs code.

I'll see what I can do. I might be able to make it configurable with preprocessor: something like #ifndef SINGLE_CALLBACKS so the multiple callback option is the default one.
On the top of my head I think I could create intermediate functions in the MqttClientSetup class and dispatch from there using std::bind (to pass extra this into the intermediate callback).

I drafted some code in this branch: https://github.com/bertmelis/espMqttClient/tree/multiple_callbacks
I have to rework the testing code though. It uses temporary std::functions (with temporary variables) and this messes in runtime.
An alternative solution would be to add a method to erase all the registered callbacks.

I like the idea! Thanks! Will try it this week.
Just throwing more ideas here - you may consider using lambda's instead of std::bind, could be more readable.
i.e. I use it like this with Mangrover's code to pass another object's member function.
mqttClient->onMessage( [this](char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total){_onMqttMessage(topic, payload, properties, len, index, total);} );

Also I use std::list instead of std::vector for callback container, it might be less memory hungry for default use case with a single callback, vector pre-allocates some place in advance.
And I use structs like this to keep callback handlers in a list
struct HndlrChain {
    int id;
    std::unique_ptr<FrameSend> handler;
    HndlrChain() = delete;
    HndlrChain(const HndlrChain& rhs) = delete;
    HndlrChain(std::unique_ptr<FrameSend>&& rhs) noexcept : id(std::rand()), handler(std::move(rhs)) {};
};

do not look into std::unique_ptr, the idea is on addition each callback receives a random id in a list, and could be removed later by that id if required. Got this idea from ESP32's event handlers, although they use pure C const char*'s ad ID.
Thanks for prompt feedback on this anyway!

I like the idea of being able to remove callback handlers. Only being able to add seems 'lacking basic features' to me.
Deleting handlers would also minimize the impact of this change to automatic testing.

Wrt deleting:

add handlers to a std::forward_list<uint32_t, callback>
add an optional uint32_t id to the onX-methods. The user has to supply the ID
create a deleteOnX(uint32_t id) method to remove a handler. When IDs collide, only the first one is deleted. (nothing is deleted if no matching id is found)

what do you think?

Like it! That would be a full-featured functionality allowing adding/removing callbacks on-demand or object create/destruct.

Well, I suppose the change is good to go.
Would you mind if I turn off multiple callbacks by default?

I'll be totally fine with default off configuration :) Enabling it on-demand is not a problem at all.
Thanks for your time and support on this! Appreciate it!

implemented with release 1.5.0


python37Packages.picos: 1.2.0 -> 2.0

Motivation for this change
Update of picos, the automatic PR 81971 was failing due to a missing dependency for the tests.
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[X] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[X] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

if you include closes or fixed and a PR number, github will automatically close that for you

Good to know, thanks!


rh-git29 missing from SCL

https://bugzilla.redhat.com/show_bug.cgi?id=1877903#c0

Status: | CLOSED           EOL

Workaround: install git 1 on Centos/RHEL 6


Nikta Kaat

I just assigned myself like this?

Can you stop sending this many messages please? I do not understand this whole github and I want to stop.
 Now that you've assigned yourself, people who drop by know that they're welcome to participate, but you'll be carrying this issue across the finish line. 😎.
Let's use GitHub Pages
Now, on to business! GitHub Pages allow you to serve a static site from a repository. We've filled this repository with some site content, but the rendered site isn't visible right now. Let's change that.
⌨ Activity: Enable GitHub Pages

Click on the Settingshttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNikitakaat%2Fgithub-slideshow%2Fsettings&data=04|01|n.kaat%40st.hanze.nl|86e9801415ee4072f91408d888b84856|a3b390147adc48faa11437c2434dbd69|0|0|637409672351101388|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=aIxy8nNETiKiargHm%2BcVm9z9NEMMZVt3kUMgwTWGdOE%3D&reserved=0 tab in this repository
Scroll down to the "GitHub Pages" section
From the "Source" drop down, select master branch

Note: Even though you'll see an option to choose a theme, do not apply a theme at this point. We've protected the code so you can't make unintended changes. You'll have the opportunity to apply a theme when the course is completed.
I'll respond in this issue when I detect GitHub Pages has deployed your site.
Turning on GitHub Pages creates a deployment of your repository. I may take up to a minute to respond as I await the deployment.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNikitakaat%2Fgithub-slideshow%2Fissues%2F2%23issuecomment-727229118&data=04|01|n.kaat%40st.hanze.nl|86e9801415ee4072f91408d888b84856|a3b390147adc48faa11437c2434dbd69|0|0|637409672351111342|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=vJ1%2BeSjB6MCuupvbAVbekyhasxfjqZqJocmzF5xco4Y%3D&reserved=0, or unsubscribehttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FARYDP32V6UISJGY35L72KPLSP2UEBANCNFSM4TVUAFYQ&data=04|01|n.kaat%40st.hanze.nl|86e9801415ee4072f91408d888b84856|a3b390147adc48faa11437c2434dbd69|0|0|637409672351111342|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=rRflWuegle1Hg4%2BshL6EsOUmj%2FmrMVAMEL%2F0Hrmf4KA%3D&reserved=0.


Add memoryStorageDriver

As mentioned in #145 .
Initial PR #555

Is there any update on when this will be done?

None yet, but I hope over the holidays I can help out with our 2.0 release. It will hopefully ship sometime late December or early January if we get the time.

Matt (Sent from mobile)

On 12 Dec 2017, at 20:50, Nick Webster<EMAIL_ADDRESS>wrote:
Is there any update on when this will be done?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@NickGeek #721 is the PR to keep an eye on.

A memory storage driver was added to the v2.0-dev branch with 40c70210a54645c33919a283b2a1138f40b7a001.


SpinBox does not receive "focus_entered" Event

Godot version:
v3.2.3.stable.official
Issue description:
While trying to implement the Inspector UI in gdscript I was unable to listen for the SpinBox focus to set the focus effect to the whole line accordingly.
This is also the case for the ScrollBar.
Steps to reproduce:
Create a SpinBox and listen to the focus_entered Event
Minimal reproduction project:

FocusEvent.zip

Related to https://github.com/godotengine/godot/issues/37723?

This might be intentional? The control actually receiving the focus is the line edit, which you can access by get_line_edit( ). Connect to the signals on that and it should work.

Then there should at least be a warning when connecting this signal in the Editor.
09.11.2020 00:16:33 Eric M<EMAIL_ADDRESS>
This might be intentional? The control actually receiving the focus is the line edit, which you can access by get_line_edit( ). Connect to the signals on that and it should work.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub[https://github.com/godotengine/godot/issues/43338#issuecomment-723680957], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AC3MQXYW72LDX57M5W4ABO3SO4RE7ANCNFSM4TLUKF6A]. [https://github.com/notifications/beacon/AC3MQX6RCS3UBLWBAVLVKITSO4RE7A5CNFSM4TLUKF6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFMRH5PI.gif]

That's weird functionality. Going between a Checkbox and a Spinbox with keyboard Left, Right, Up, Down looks like is selecting some hidden in-between control. So what's actually selected is the Spinbox parent LineEdit control? That doesn't sound like a proper design. Because Tab and Shift+Tab  correctly selects it correctly. This intended functionality is confusing.

This issue persists through 4.1.3, as mentioned in #73351.


Error parsing args for custom command

With the following custom command in User.sublime-commands:
[
  {
    "caption": "git: pull (rebase)",
    "command": "gs_custom",
    "args": {
      "output_to_panel": true,
      "args": ["pull", "--rebase"],
      "start_msg": "Starting pull (rebase)...",
      "complete_msg": "Pull complete."
    }
  }
]

I get the following error in the Sublime Text console when attempting to invoke this command:
Traceback (most recent call last):
  File "core.commands.custom in /Users/kyank/Library/Application Support/Sublime Text 3/Installed Packages/GitSavvy.sublime-package", line 18, in <lambda>
  File "core.commands.custom in /Users/kyank/Library/Application Support/Sublime Text 3/Installed Packages/GitSavvy.sublime-package", line 29, in run_async
ValueError: too many values to unpack (expected 2)

Hi @sentience - I'm unable to reproduce on my dev machine.  Can you tell me OS and Sublime version you're using?

I believe this should be fixed by #228 .

Oh!  Thanks @asfaltboy.  That change hasn't been included in a release yet, so I'll leave this open until that happens (probably later today).

:+1:


better login ux

:rocket: This description was created by Ellipsis for commit 41ec8a6f099274e796cd40a53619cdfbdac6c86b

Summary:
Enhanced login UX by adding a success notification using SweetAlert2 in the App class's userLogin function and included the library in index.html.
Key points:

Added SweetAlert2 popup for successful login in userLogin function of App class in /app.js.
Included SweetAlert2 script in /index.html.

Generated with :heart: by ellipsis.dev

@elipsis-dev Ensure that the login success notification is only shown if the public key retrieval is successful. Consider adding error handling for cases where getPublicKey might fail.

@ellipsis-dev Ensure that the login success notification is only shown if the public key retrieval is successful. Consider adding error handling for cases where getPublicKey might fail.


ArrowStringColumn should implement FillNulls with inPlace: false

Hi @pgovind ,
I'd be happy to help on this if thats alright? Looking at the current set up of FillNulls would I have to create an override method first in ArrowStringDataFrameColumn.cs called FillNullsImplementation (for the dataframe) then another method which will be called FillNulls which will affect the actual column?
Kind Regards,
Ramon

@RamonWill Yup, that's the right approach. In addition, I would make the method throw if inPlace is set to true (I need to investigate it more, but at a glance I'm not sure that Apache Arrow format supports filling nulls for variable length arrays). Note that for ArrowStringDataFrameColumn, because we're not supporting inPlace = true yet, we will always return a new column. You won't be able to call the Clone method though. Instead you'll need to modify the implementation of clone (shown below):

// Copy and modify this implementation
        private ArrowStringDataFrameColumn Clone(PrimitiveDataFrameColumn<long> mapIndices = null, bool invertMapIndex = false)
        {
            if (mapIndices is null)
            {
                // Modify this block
                ArrowStringDataFrameColumn ret = new ArrowStringDataFrameColumn(Name);
                for (long i = 0; i < Length; i++)
                {
                    ret.Append(IsValid(i) ? GetBytes(i) : default(ReadOnlySpan<byte>)); // When IsValid returns false, you'll need to append `value` instead of `default`
                }
                return ret;
            }
            else
                return CloneImplementation(mapIndices, invertMapIndex);
        }

Let me know if you run into issues. I'm happy to help!

Thank you for the guidance @pgovind , I will make a PR shortly.

I've been learning how to program for just over a year now and the way you have made code reusable code through inheritance and the way the Clone method works is very impressive.

Are there any deadlines for the 1.0.0 release?

Kind Regards,
Ramon


 I can't reset my database without taking down a few of the services momentarily. The only way I know (could be wrong) is to overmind kill and start back up

Users can now send a list of commands to kill (similar to restart)

overmind kill web other_web_thing
(reset your db, whathaveyou)
overmind restart web other_web_thing

...it was a tmux setting that was killing the process after I just cmd-cc'd the window

...it was a tmux setting that was killing the process after I just cmd-cc'd the window


Date format inconsistency (future dates)

According to the spec, dates are returned in a format similar to the following example:
"start_date": "1998-04-03T21:00:00+09:00"
However, there appears to be some anomalous behavior when fetching information about shows with no concrete start date (limited to a year, for example). For instance:
{
"id": 20875,
"title_romaji": "Sword Gai",
"type": "TV",
"image_url_med": "http://anilist.co/img/dir/anime/med/20875.jpg",
"image_url_sml": "http://anilist.co/img/dir/anime/sml/20875.jpg",
"start_date": "2016"
}
Would it be possible to allow start_date and end_date to return null if no concrete date is known, and instead put more vague date information into their own string fields?

Yeah this is a good idea and I'll implement it soon. I'll have to do a little bit of work adding support of this to anichart so it might take a little while longer.

Not sure how this took almost a year to get around to but start_date_fuzzy and end_date_fuzzy will be available once the new back end goes live in the next month or so.
Fuzzy date format: YYYYMMDD
If a date is not known, 00 will be used instead, for example May 2016 would be 20160500, or just 2016 would be 20160000.
The current start and end dates will be considered deprecated, but still available for backwards compatibility.


save_pretrained_gguf  method RuntimeError: Unsloth: Quantization failed ....

/usr/local/lib/python3.10/dist-packages/unsloth/save.py in save_to_gguf(model_type, model_directory, quantization_method, first_conversion, _run_installer)
955             )
956         else:
--> 957             raise RuntimeError(
958                 f"Unsloth: Quantization failed for {final_location}\n"
959                 "You might have to compile llama.cpp yourself, then run this again.\n"\
RuntimeError: Unsloth: Quantization failed for ./model_gguf_q8_0-unsloth.Q8_0.gguf
You might have to compile llama.cpp yourself, then run this again.
You do not need to close this Python program.

is ok, u can see this issuecomment: https://github.com/ggerganov/llama.cpp/pull/6745#issuecomment-2066528949

more detail see this: https://github.com/weedge/doraemon-nb/blob/main/Alpaca_%2B_Llama_3_8b_full_example.ipynb

Confirmed, this patch 51e4aa1 allowed me to quantize the llama3 model (switching the vocab-type to bpe in the call to llama cpp)

@jack-michaud Oh cool - I'll edit Unsloth to change it to bpe!

Thanks @danielhanchen! Please note that I did not test this change on Llama 2.

@weedge @cnjack @jack-michaud Fixed it finally! Much apologies on the issue. On a local machine, please uninstal then reinstall ie
pip uninstall unsloth -y
pip install --upgrade --force-reinstall --no-cache-dir git+https://github.com/unslothai/unsloth.git

For colab and kaggle, you'll have to restart the runtume

@danielhanchen confirmed, quantizing llama3 on the latest push of unsloth works. Thank you!


v3 smart contracts integration

Description
This PR integrates v3 smart contracts  for sidechain.
V3 smart contracts are introduced to Edge codebase as git submodule.
Changes include

[ ] Bugfix (non-breaking change that solves an issue)
[ ] Hotfix (change that solves an urgent issue, and requires immediate attention)
[x] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

[x] I have assigned this PR to myself
[x] I have added at least 1 reviewer
[x] I have added the relevant labels
[ ] I have updated the official documentation
[ ] I have added sufficient documentation in code

Testing

[ ] I have tested this code with the official test suite
[x] I have tested this code manually

Manual tests
Setup
initialize core-contracts git submodule
git submodule init
git submodule update

compile core-contracts
make compile-core-contracts

Sidechain contracts integration workflow

Initialize test accounts

go run . polybft-secrets --data-dir test-chain- --num 4

Initialize genesis configuration

go run . genesis --block-gas-limit 10000000 --validator-set-size=4 --consensus polybft --epoch-size 10

Run validator nodes

go run . server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :5001 --libp2p :30301 --jsonrpc :9545 --seal --log-level DEBUG
go run . server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :5002 --libp2p :30302 --jsonrpc :10002 --seal --log-level DEBUG
go run . server --data-dir ./test-chain-3 --chain genesis.json --grpc-address :5003 --libp2p :30303 --jsonrpc :10003 --seal --log-level DEBUG
go run . server --data-dir ./test-chain-4 --chain genesis.json --grpc-address :5004 --libp2p :30304 --jsonrpc :10004 --seal --log-level DEBUG

Blocks are being produced without any errors.

Register new validator workflow
Note: Validators from above still need to be up and running before running following steps

Create new account

go run . polybft-secrets --data-dir test-chain-5

Register validator

go run . register-validator --data-dir test-chain-5

Rootchain workflow

start rootchain server

go run . rootchain server

deploy and initialize rootchain contracts

go run . rootchain init-contracts

run emit command

go run . rootchain emit --wallets <existing addresses of accounts> --amounts 100

Just a note that the contract repository has now moved into this org.

Just a note that the contract repository has now moved into this org.

Yep, we've already accommodated it: 54880bb. Tnx for reminding anyways 🙂


integrations: Change the truncation marker for long messages.

This PR change the truncation marker from ... to \n[message truncated] when receiving messages from the API or through email.
Fix #10871.
Testing Plan:
This PR updates tests to account for the new change.
GIFs or Screenshots:
Screenshot of truncation after CURL request: (I pasted an over-10000 character string into the terminal, and then it is truncated by the server)

@skunkmb this is a great v1 solution, and I'm going to go ahead and merge it.
@rishig I think if we wanted to do something nicer (e.g. with same fancy styling), I wrote out a design for that in https://github.com/zulip/zulip/issues/10890.  I think the current thing is below our usual styling standards, but it doesn't seem like a high priority to me given that this is kinda a rare corner case.


Vanity urls and custom registration controller

Hi,
In my previous issue that I opened ( #3816 ), I asked whether what I was doing was correct, and the code and configuration is all 100%?
If it is correct, then I believe there is a bug as the functions defined in the custom registrations controller are not being called, and therefore the user is not being redirected to the sign in page after registering a new user.
If it is not correct, can you please then indicate what the correct method would be to use both custom url's and a custom registration controller, as I have created the code using the examples from the devise wiki.

If you are using custom routes, they should point to your controller, not devise's. So this:
get "/join" => "devise/registrations#new", :as => :new_user_registration

Should be this:
get "/join" => "registrations#new", :as => :new_user_registration

Also,  Please use the mailing list or StackOverflow for questions/help, where a wider community will be able to help you. We reserve the issues tracker for issues only.


Binary Ninja fails to update on Gentoo

As soon as Binary Ninja starts it will fail with Error fetching version list: Peer certificate cannot be authenticated with given CA certificates when trying to fetch updates.
I was able to fix this by enabling the insecure_certs use flag on the ca-certificates package.
# USE="insecure_certs" emerge ca-certificates

Alternatively, copying the ca-bundle.crt file from another Linux distribution over /etc/ssl/certs/ca-certificates.crt also works.
Cheers!

Hmm, I wonder why the "insecure_certs" option is required for that package? Supposedly gentoo contains the root cert for let's encrypt which is what we're currently using.

Here's a trace without insecure_certs:
$ strace -f ./binaryninja 2>&1 | grep cert
[pid 30465] open("/etc/ssl/cert.pem", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 30469] open("/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 15
[pid 30469] open("/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 16
[pid 30469] stat("/etc/ssl/certs/ae8153b9.0", 0x7fea137fb6e0) = -1 ENOENT (No such file or directory)
[pid 30469] stat("/etc/ssl/certs/a3e50893.0", 0x7fea137fb6e0) = -1 ENOENT (No such file or directory)
[pid 30475] open("/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 15
[pid 30475] open("/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 16
[pid 30475] stat("/etc/ssl/certs/ae8153b9.0", 0x7fea137fb600) = -1 ENOENT (No such file or directory)
[pid 30475] stat("/etc/ssl/certs/a3e50893.0", 0x7fea137fb600) = -1 ENOENT (No such file or directory)

And here's what appears to be the missing certificate:
$ openssl x509 -in /etc/ssl/certs/ae8153b9.0 -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 45 (0x2d)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority
        Validity
            Not Before: Sep 17 19:46:37 2006 GMT
            Not After : Sep 17 19:46:36 2036 GMT
        Subject: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:c1:88:db:09:bc:6c:46:7c:78:9f:95:7b:b5:33:
                    90:f2:72:62:d6:c1:36:20:22:24:5e:ce:e9:77:f2:
                    43:0a:a2:06:64:a4:cc:8e:36:f8:38:e6:23:f0:6e:
                    6d:b1:3c:dd:72:a3:85:1c:a1:d3:3d:b4:33:2b:d3:
                    2f:af:fe:ea:b0:41:59:67:b6:c4:06:7d:0a:9e:74:
                    85:d6:79:4c:80:37:7a:df:39:05:52:59:f7:f4:1b:
                    46:43:a4:d2:85:85:d2:c3:71:f3:75:62:34:ba:2c:
                    8a:7f:1e:8f:ee:ed:34:d0:11:c7:96:cd:52:3d:ba:
                    33:d6:dd:4d:de:0b:3b:4a:4b:9f:c2:26:2f:fa:b5:
                    16:1c:72:35:77:ca:3c:5d:e6:ca:e1:26:8b:1a:36:
                    76:5c:01:db:74:14:25:fe:ed:b5:a0:88:0f:dd:78:
                    ca:2d:1f:07:97:30:01:2d:72:79:fa:46:d6:13:2a:
                    a8:b9:a6:ab:83:49:1d:e5:f2:ef:dd:e4:01:8e:18:
                    0a:8f:63:53:16:85:62:a9:0e:19:3a:cc:b5:66:a6:
                    c2:6b:74:07:e4:2b:e1:76:3e:b4:6d:d8:f6:44:e1:
                    73:62:1f:3b:c4:be:a0:53:56:25:6c:51:09:f7:aa:
                    ab:ca:bf:76:fd:6d:9b:f3:9d:db:bf:3d:66:bc:0c:
                    56:aa:af:98:48:95:3a:4b:df:a7:58:50:d9:38:75:
                    a9:5b:ea:43:0c:02:ff:99:eb:e8:6c:4d:70:5b:29:
                    65:9c:dd:aa:5d:cc:af:01:31:ec:0c:eb:d2:8d:e8:
                    ea:9c:7b:e6:6e:f7:27:66:0c:1a:48:d7:6e:42:e3:
                    3f:de:21:3e:7b:e1:0d:70:fb:63:aa:a8:6c:1a:54:
                    b4:5c:25:7a:c9:a2:c9:8b:16:a6:bb:2c:7e:17:5e:
                    05:4d:58:6e:12:1d:01:ee:12:10:0d:c6:32:7f:18:
                    ff:fc:f4:fa:cd:6e:91:e8:36:49:be:1a:48:69:8b:
                    c2:96:4d:1a:12:b2:69:17:c1:0a:90:d6:fa:79:22:
                    48:bf:ba:7b:69:f8:70:c7:fa:7a:37:d8:d8:0d:d2:
                    76:4f:57:ff:90:b7:e3:91:d2:dd:ef:c2:60:b7:67:
                    3a:dd:fe:aa:9c:f0:d4:8b:7f:72:22:ce:c6:9f:97:
                    b6:f8:af:8a:a0:10:a8:d9:fb:18:c6:b6:b5:5c:52:
                    3c:89:b6:19:2a:73:01:0a:0f:03:b3:12:60:f2:7a:
                    2f:81:db:a3:6e:ff:26:30:97:f5:8b:dd:89:57:b6:
                    ad:3d:b3:af:2b:c5:b7:76:02:f0:a5:d6:2b:9a:86:
                    14:2a:72:f6:e3:33:8c:5d:09:4b:13:df:bb:8c:74:
                    13:52:4b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2
            X509v3 Authority Key Identifier:
                keyid:4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2

            X509v3 Certificate Policies:
                Policy: <IP_ADDRESS>.4.1.23<IP_ADDRESS>
                  CPS: http://www.startssl.com/policy.pdf
                  CPS: http://www.startssl.com/intermediate.pdf
                  User Notice:
                    Organization: Start Commercial (StartCom) Ltd.
                    Number: 1
                    Explicit Text: Limited Liability, read the section *Legal Limitations* of the StartCom Certification Authority Policy available at http://www.startssl.com/policy.pdf

            Netscape Cert Type:
                SSL CA, S/MIME CA, Object Signing CA
            Netscape Comment:
                StartCom Free SSL Certification Authority
    Signature Algorithm: sha256WithRSAEncryption
         8e:8f:e7:dc:94:79:7c:f1:85:7f:9f:49:6f:6b:ca:5d:fb:8c:
         fe:04:c5:c1:62:d1:7d:42:8a:bc:53:b7:94:03:66:30:3f:b1:
         e7:0a:a7:50:20:55:25:7f:76:7a:14:0d:eb:04:0e:40:e6:3e:
         d8:88:ab:07:27:83:a9:75:a6:37:73:c7:fd:4b:d2:4d:ad:17:
         40:c8:46:be:3b:7f:51:fc:c3:b6:05:31:dc:cd:85:22:4e:71:
         b7:f2:71:5e:b0:1a:c6:ba:93:8b:78:92:4a:85:f8:78:0f:83:
         fe:2f:ad:2c:f7:e4:a4:bb:2d:d0:e7:0d:3a:b8:3e:ce:f6:78:
         f6:ae:47:24:ca:a3:35:36:ce:c7:c6:87:98:da:ec:fb:e9:b2:
         ce:27:9b:88:c3:04:a1:f6:0b:59:68:af:c9:db:10:0f:4d:f6:
         64:63:5c:a5:12:6f:92:b2:93:94:c7:88:17:0e:93:b6:7e:62:
         8b:90:7f:ab:4e:9f:fc:e3:75:14:4f:2a:32:df:5b:0d:e0:f5:
         7b:93:0d:ab:a1:cf:87:e1:a5:04:45:e8:3c:12:a5:09:c5:b0:
         d1:b7:53:f3:60:14:ba:85:69:6a:21:7c:1f:75:61:17:20:17:
         7b:6c:3b:41:29:5c:e1:ac:5a:d1:cd:8c:9b:eb:60:1d:19:ec:
         f7:e5:b0:da:f9:79:18:a5:45:3f:49:43:57:d2:dd:24:d5:2c:
         a3:fd:91:8d:27:b5:e5:eb:14:06:9a:4c:7b:21:bb:3a:ad:30:
         06:18:c0:d8:c1:6b:2c:7f:59:5c:5d:91:b1:70:22:57:eb:8a:
         6b:48:4a:d5:0f:29:ec:c6:40:c0:2f:88:4c:68:01:17:77:f4:
         24:19:4f:bd:fa:e1:b2:20:21:4b:dd:1a:d8:29:7d:aa:b8:de:
         54:ec:21:55:80:6c:1e:f5:30:c8:a3:10:e5:b2:e6:2a:14:31:
         c3:85:2d:8c:98:b1:86:5a:4f:89:59:2d:b9:c7:f7:1c:c8:8a:
         7f:c0:9d:05:4a:e6:42:4f:62:a3:6d:29:a4:1f:85:ab:db:e5:
         81:c8:ad:2a:3d:4c:5d:5b:84:26:71:c4:85:5e:71:24:ca:a5:
         1b:6c:d8:61:d3:1a:e0:54:db:ce:ba:a9:32:b5:22:f6:73:41:
         09:5d:b8:17:5d:0e:0f:99:90:d6:47:da:6f:0a:3a:62:28:14:
         67:82:d9:f1:d0:80:59:9b:cb:31:d8:9b:0f:8c:77:4e:b5:68:
         8a:f2:6c:f6:24:0e:2d:6c:70:c5:73:d1:de:14:d0:71:8f:b6:
         d3:7b:02:f6:e3:b8:d4:09:6e:6b:9e:75:84:39:e6:7f:25:a5:
         f2:48:00:c0:a4:01:da:3f

Does this help?

Sorry for not replying earlier, but given that Gentoo is unsupported, I'm going to close this one out, and you've already documented a pretty good work-around which is to copy over /etc/ssl/certs/ca-certificates.crt  from another distro. I'll add that to the linux troubleshooting documentation.
Thanks.

Just an update that this work-around isn't even needed anymore as we no longer rely on libcurl.


Cow: Blacklist 1-888-816-4638

Cow requests the blacklist of the number 1-888-816-4638. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Jeff Schaller in Charcoal HQ


Azure can only authenticate with client_id through environment variables

Hello,
I noticed that Thanos cannot authenticate with Azure when using the UserAssignedID as it doesn't allow you to set a client secret and a tenant id.
I could make it to work through environment variables, which is fine for most use cases, but for the use case where you want to interact with multiple Azure buckets, this makes it impossible. The environment variables I used are AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET.
So I'm creating this ticket to track/request the possibility of setting client_secret and tenant_id when using UserAssigendID.

PR https://github.com/thanos-io/objstore/pull/157 tackles this


Tray completely broken on openbox

Alright, I know openbox isn't officially supported, so if this problem is a direct result of that then feel free to close, I just thought I'd ask to be sure.
error: Failed to setup tray client, removing... (XCB_WINDOW (3))
This is what I get when I attempt to open an app that would go to the systray. Sometimes an app still has its icon displayed, but it's halfway out of the screen, or it draws over the module next to it. Other times, the icon gets drawn on the opposite end of my other monitor.
I'm also using tint2 but I've disabled the systray there so it shouldn't conflict.
I've just installed polybar and I've gone through the wiki but maybe I missed something obvious.
Thanks!

I have no experience with openbox myself so not sure how I can help you debug it. Could you post the bar section of your polybar config?

[bar/bar]
monitor = DVI-0
bottom = false
width = 1100
height = 25

enable-ipc = true

padding-left = 0
padding-right = 10
offset-x = 850
offset-y = 0

module-margin-right = 2
module-margin-left = 1

modules-right = volume mpd pkg temps weather clock

background = ${colors.background}
foreground = ${colors.foreground}

underline-size = 4
underline-color = ${colors.magenta}

tray-detached = true
tray-position = right
tray-offset-x = 0
tray-offset-y = 0
tray-maxsize = 16
tray-padding = 0

font-0 = "DejaVuSans:size=9;0"
font-1 = "FontAwesome:size=10;0"
font-2 = "Cousine:size=8;0"
font-3 = "Artwiz Lemon:size=10;0"
font-4 = "Roboto:size=4;0"
font-5 = "xos4 Terminus:size=10;0"

I've tried tray-detached = false and different tray positions but neither changed anything. I got the config file from a guy who runs bspwm so it's probably just openbox acting up. Not sure.

Have you tried several apps with tray support or is it one specific?

...or it draws over the module next to it.
This is because you are using tray-detached = true. The property makes the bar skip space reservation.

I've a handful of apps that I've tried. Dropbox, Skype, Steam, streamlink-twitch-gui, volumeicon. Gonna go step by step explaining what I load first and what happens.
Dropbox gets loaded automatically on boot, but the icon is not displayed. Then I start Skype, and it gets drawn. Half of the icon is outside the screen, (this was my fault, regarding bar position) but after tray-detached = false it no longer draws over the previous module. Now suddenly dropbox is displayed, except it's in a rather undesireable location (see pic below). I launch volumeicon, it gets drawn fine next to skype. Steam gets drawn fine next to volumeicon. Dropbox still in the same place. Can't get streamlink-twitch-gui to get it's icon to show no matter what.
Picture of my setup.  Ignore the white 1px line, it's an artifact from the screenshot tool. As you can see I'm using polybar alongside tint2, and the dropbox icon is on the far left.
If I put polybar on my other monitor (HDMI-0), the dropbox icon remains in the same position.
When I close all the previously mentioned apps, then the dropbox icon moves all the way to the left
This is so weird.

What if you set the bar property:
override-redirect = true

Um. I did try that before and nothing happened. Now it fixed everything though, thank you so much!
As a quick side question, there's no way to put the tray between any given modules, is there?

Great! Not yet, but I've started to move the tray functionality into a separate module.


Doge balance doesn’t show

Describe the bug
Doge balance shows up as 0 even if blockchair shows a balance.
Smartphone (please complete the following information):

Device: iPhone 15
Version build 25 (and previous 27)

Additional context
I feel like last build showed it as 0 at least some days back already.

false report


jpegxl

would be great if sharp could support jpegxl

Please see https://github.com/libvips/libvips/discussions/2055

nice


Exception when using the new CryptoExchange.Net version 6.2.0

Hello.
Can't update the CryptoExchange.Net to version 6.2.0, some Exceptions accours when using the solution.
Bitmex.Net ver 3.0.0
CryptoExchange.Net 6.2.0

Hello.
Right now this library uses older version of CryptoExchange: 6.1.4
Feel free to update it and create pull request, or wait when one of contributors make it. We does not have enough time for maintaining of library because of russia invasion, we have other more priority tasks.
Thank you, your contributing are always welcome


Build & Run - only one TFM in multi-target project

When making changes to multi-targeted libraries, the project system/MSBuild has to rebuild all TFM's as part of the build graph. This is not necessary if I want to run an app on a particular TFM. The build system should only build the necessary closest TFM.
Concrete example:

.NET 4.6 exe references multi-targeted library with net45 and netstandard1.4 outputs (there may be many more).
Change is made in the library
User hits F5 to debug/run the app.

Actual results
The library is built twice, once per TFM
Expected results
Library is built once
Note, if I just build the library or the sln, it should build all. This is an optimization for when I build a specific library/app/output that depends on another one and it knows which one it needs.

Migrating this issue to https://github.com/dotnet/roslyn-project-system/issues/1699.
MSBuild and the Sdk do the right thing here--a command line build of the app builds only the net45 version of the lib in this example.
Visual Studio, though, sees that the project is out of date and invokes "Build" on the "outer" instance of the project, which in turn builds all TFMs.


[FEATURE]  Migrating to TypeScript from JavaScript

Description
I can see the application growing day by day which is wonderful. In the long run it would be harder to maintain the code if we do not implement TypeScript. I would suggest migrating to TypeScript which would enhance developer experience, self documenting code as types are provided, would improve error handling,  and attract more contributors to work on this project.
Screenshots
No response
Do you want to work on this issue?
Yes
Additional information
No response

This is a great idea and certainly something that we are considering, but not for the moment.  I will therefore close this issue for now.


Implement authentication via JWT using a Login component or path parameter

This PR adds authentication, a Login component, JWTs, and a path parameter to bypass logging in.
Specifically:

@nuxtjs/auth-next has been added to handle authentication across the application. This library can sync with any OAuth service so we can use it for more sophisticated authentication in the future. However, for the time being, this is using a singular password (via env var PASSWORD).
Express middleware has been added to handle authentication for any incoming requests. If no token is passed in the header, the page will be redirected to a new component Login.vue via a /login/ POST endpoint.
Successful submission of the right password in Login.vue will generate a JWT for authentication across the app, and redirect to /map. The JWT is currently not set to expire.
Lastly, to bypass logging in, I have added an option to pass a secret key query parameter via the browser path. This is handled by a  /login/ GET endpoint that will generate a JWT if the query parameter matches the SECRET_JWT_KEY env var, and reload the page to be redirect to /map upon success.

This is NOT a safe method insofar as it can leave the secret key exposed, but this represents a first attempt to wrap my head around how we might handle the embedding of resources requiring authentication in an iframe on Superset. This branch is currently active on the BCM demo, where the GC-Views iframes are successfully bypassing the login screen (only one time is needed as the JWT will be included in the iframe header for subsequent sessions across the different GC-Views - Map and Gallery).

@IamJeffG to discuss Monday.

to bypass logging in, I have added an option to pass a secret key query parameter via the browser path. This is handled by a /login/ GET endpoint that will generate a JWT if the query parameter matches the SECRET_JWT_KEY env var, and reload the page to be redirect to /map upon success.

This is NOT a safe method insofar as it can leave the secret key exposed

Is this JWT value hard-coded in the Superset dashboard?
Yeah, eventually we will need to figure out how to have the Superset dash pass some JWT that it somehow retrieves (or computes) just-in-time:

Views generates a private key specific to the Superset deployment, which we probably store as an env variable for Superset.  Even users of Superset should not have access to this private key.
Superset uses that private key to generate a JWT for its next access (or next 5 minutes of access) to Views.  This one is the mystery to me: somehow the Dashboard needs to run arbitrary code?  either server-side Python or client-side JavaScript (but the latter case adds a concern about how to make sure the private key can't be leaked).
Superset passes this JWT in the iframe, as you are doing via URL query parameter.

And Views will need to check the JWT expiry date (maybe it already does this) before trusting it.  One potential threat avenue of how it is today is that someone has the never-expiring JWT, but we no longer trust that person.  We have no way to cut off their access.

Setting the JWT to expire is actually a one-line change, and Views auth does check this, so that shouldn't be a problem.
But yes, the token being matched to generate a JWT is hard coded in the iframe URL so that remains a security risk, albeit that one has to actually log into Superset to access it so there is at least that much of a protection layer. But agreed we should still find a better way to have Superset handle this.
I'm imagining some kind of mechanism that generates a new token on a regular interval and passes that to both Superset and Views (and on the future, other apps), which are then adapted to know what to do with it. Not sure whether that's a Superset plugin, or something exterior to both apps.
I still need to do more research on auth0 too. There could be some scaffolding for a solution there.

Interestingly, Superset itself has an [embedded SDK] which can be used to embed Superset dashboards via iframe.

Merging this to stack on successive PR(s) that will aim to build in auth0 support as a solution for our embedding ambitions.


Could you provide a valid mirror?

Could you provide a valid mirror?
Thanks!

Because...I really can not run attn example....


Batchnorm2d fixed running_var

fixed running_var of BatchNorm2d where a test did not match pytorch's running_var.
BatchNorm2d is now implemented in the same way as pytorch, using the biased variance estimator for training and the unbiased estimator for inference.
Note that technically it would be more ideal to use the unbiased estimator for both training and inference, as mentioned here by Andrej Karpathy:
https://www.youtube.com/watch?v=q8SA3rM6ckI&t=3920s

Cool! I don't exactly understand why this is right though, but I like that the test passes. See comment above.

Actually wait. This is in the wrong place probably. It should be on batch_var itself.

If it is on batch_var itself, then it won't match pytorch anymore, since pytorch uses the biased estimate for training but the unbiased one for inference.

Ahh, I heard this once. Crazy stuff.


Does HIP compiler have a standard env flags comparable to CC or CXX

Does HIP have a recommend environment flag that points to the explicit HIP compiler that a build systems should use?

If find_package(hip, config) is used, -DHIP_CXX_COMPILER=xxx can be used to specify HIP compiler. However it is not supported through env var.

The question was more about does the HIP project have an opinion on what environment variable build-systems should prefer to check when determining the desired HIP compiler.
For example a common pattern for cmake or makefiles is to set the CXX env variable to control which specific C++ compiler to use. This consistency across build-systems is great for users as it make it easier to compose large projects that might use multiple build-systems.

No. Maybe we should use HIPCXX, like CUDACXX.

HIPCXX sounds great to me. I will make sure CMake uses that.


Tenant isolation "path" strategy

I tried to use the "path" strategy, but when I ran the server, This localhost page can’t be found.  when I returned to the user strategy, the site could now be accessed in localhost:3000. Do Any Idea why?

There is also no error in the server.

need to access using path to work


Raise existential deposit to 0.001 at least

Currently existential deposit amount is set to 1 unit. With this low balance the user cannot really do anything anymore. I think we should raise it to the minimum cost of 1 extrinsic which is 0.001 TFT + additional weight on an extrinsic. So the minimal balance should be 0.0015 TFT

What is gained with having the existential deposit to be high enough to call an extrinsic? It's still not possible to call an extrinsic since that would bring you below the existential deposit. I thought existential deposits exist to avoid dust accounts.

True, forgot about that. No reason to increase this value then


Add to FAQ why Monero is "reasonably" private

This issue was created on gitlab and then migrated here. Only the original post was migrated, not the comments. Please take a look at the discussions on the original Gitlab issue before commenting here: https://repo.getmonero.org/monero-project/monero-site/-/issues/1045

see https://repo.getmonero.org/monero-project/monero-site/merge_requests/1136#note_7452

I think this should be closed, since we should instead remove the word "reasonably" in my opinion. It doesn't actually convey the nuances it intends to convey, and we should point people to other resources (like the MRL papers and Breaking Monero) for specific questions.

This is blocked until #971 is resolved.

We are removing 'reasonable' from the homepage (#1032). This is not needed anymore


Invisible text selection

Because the background is changed and color not the selection is all white.
The fix is to just replace [47m with [47;30m and this is how it looks good in dark terminal I'm not sure how it should be on light one.

This is how it look like on XFce terminal before and after replacement.


For now PT Run is much slower than searching in start menu. i5 7th gen, 8GB RAM, SSD.

Wox in itself has always been slower for me, no wonder I expected this to be slow aswell.
Listary however is snappy and remembers apps, typing wt on listary will show windows terminal (preview) at the top due to being called so often, powertoys run on the other hand doesn't even list windows terminal on wt.

Thanks for the feedback! We are tracking this issue in #4918. I'm closing this as a duplicate.

The search bar is lagging when I typed first two characters, the delay is in 1-2 seconds. I use i7 core with 64 gb ram with os in ssd...


Fix frontend sessions

Coverage decreased (-3.4%) to 50.443% when pulling 3281e6aa2a445413d7dbf38ac3321621b1a6ddab on maxhq:fix-frontend-session into c04984891064242cbbdefa38aeaa43b94bc50668 on openxpki:develop.


[Image] Serious Error on Image Component with HTTPS

I have the navigator setup, and when I go to the next page and mount an image, whose URI is over Https, and then go back to the previous page. I get this error in XCode 6.4
Jul  6 03:54:35 Rishabhs-MBP demoapp[56623] <Error>: CGContextGetCompositeOperation: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
Jul  6 03:54:35 Rishabhs-MBP demoapp[56623] <Error>: CGContextSetCompositeOperation: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
Jul  6 03:54:35 Rishabhs-MBP demoapp[56623] <Error>: CGContextFillRects: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
Jul  6 03:54:35 Rishabhs-MBP demoapp[56623] <Error>: CGContextSetCompositeOperation: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.```

My code for the image viewing :

var SearchPage = React.createClass({
render: function () {
    var me = this;
    var background = 'https://res.cloudinary.com/crunchbase-production/image/upload/v1397184125/2ddb1f4e6962ed4481e97b9cc887a68a.png';

    return (
        <View style={styles.body}>
            <View style={styles.imageBlock}>
                <Image source={{uri: background}} style={styles.backdrop}>
                    <Text> Hello </Text>
                </Image>
            </View>

        </View>
    )
}

});
var styles = StyleSheet.create({
body: {
flex: 1,
flexDirection: "row",
backgroundColor: '#FFF',
},
imageBlock: {
    flex: 1,
    flexDirection: "row",
    justifyContent: "center",

},
backdrop: {
    flex: 0.5,
    resizeMode: "stretch"
},

})
module.exports = SearchPage

We go to this page by the navigator call. I will push the project in a git repo soon. If I am unable to debug it in few days.

Seems similar to https://github.com/facebook/react-native/issues/1534.
Is your issue only reproducible with HTTPS?

Yes. I just did 2 times.

The app shouldn't crash if it gets bad image data. Probably better to render a big red element in its place similar to how unsupported components are treated.
@nicklockwood are you the right person to look into this?

@ide The app doesn't crash

@sghiassy @nicklockwood  to reproduce, you can just take my code and have it rendered by navigator, not as the first route but a second.
when you move out from this page you will see the error logs.

I'll take a look. This error crops up quite a lot, and seems to be harmless at the moment. It's typically caused by trying to draw into a zero-sized context.

Hi there! This issue is being closed because it has been inactive for a while.
But don't worry, it will live on with ProductPains! Check out it's new home: https://productpains.com/post/react-native/image-serious-error-on-image-component-with-https