Support Windows Fuckr Issues & Request: Stuck in Memory

Thank You for your work on a great PC Grindr Alternative, I appreciate all your efforts. I also emailed you on Reddit...
I have the windows 32bit Fuckr (newest download) from your site on Windows 7 machine.
I have a few issues:

When I try to Cntrl+Alt+Del and end process there are like 20 instances of fuckr.exe with memory allocated that I cannot end process on. The app crashes and I must restart the program so I was wondering why it is holding memory each time and not clearing out.

I see there is a folder called "locales" and I am in the USA... How do I change the Kilometers to Miles and other metric settings for the USA standards. Is it a change of the "en-US.pak"?

Is there a way to change the Pink Top Bar of the application to make it more discrete, like say to black or something. Just trying to be less noticeable using the app.

Feature Request: I would like keyboard shortcuts for say block as it is like a 4 step process. You must hit the 4 square grid > click on the person to block> click on the chat icon > click on the block icon > and then confirm again with the dialog. Would be nice to do all this with a quick shortcut.

Feature Request: Ability to filter by ethnicity, looking for, and tribe.

Thomas, what if there is a new view where we can do advanced filtering, just like grindr does. If u approve i can implement.

As Chrome is multi-process, I don't think there's much I can do about the multiple processes :/. Any idea why the app crashes on Windows could be helpful though

Hi Tomlandia Thanks for your response to followup:

I cannot quit the processes as you can see by the screen shot, hitting end does nothing which is troubling that they are stuck, they still are stuck in memory until you do a restart. Note: "f.exe is Fuckr renamed and Fuckr.exe is another instance. See attached images below.

Guessing would be great for unit conversion: imperial / metric:  miles, weight & height.  Thank you!
That would be great to be able to change color of Top Pink Bar and Chat bubbles in units to keep things not so obvious that your Grinding 24-7 ;-P
Block right now is a 4+ step process which makes it hard since in Grindr blocking is used to keep those you are interested in and blocking those you aren't.  The process is: clicking individual profiles > then click chat icon > then click block > and hit ok to the popup dialog > which then sits there in your inbox after the block instead of returning to the tiled profile wall so you have to hit the 4 square icon to return (this should be automatic to the main view). A keyboard shortcut or less steps would be great and returning after a block to to the main view automatically.
Feature request: It would be great to get those advanced filters  for search

New Request Del Message in Inbox:
6 ) Grindr has to many spambots (mainly with short heights). Unlike the default app there is no way to hit "del" and remove individual messages from your inbox in Fuckr of those spambots. Thy could be blocked but I find they reappear and seem to contact again if you do not delete and ignore their messages.
Thank You!

+1 for advanced filtering.  I was just about to fork this repository to add it in for myself.

I have convert units to feet, miles, lbs in my fork fuckr-us check it out.

About the multi processes. Looks like this only happens in win10. I've tested on mine and same thing happens. When I run on win7 its ok, but still crashes after some time.

have implemented here.

4)...

Idk whats happening. I send the request with the filtering parameters, but seems like it does not filter... maybe you could give me a hand @tomlandia

I dont get it. I know those bots, but after blocked there may have another acc that contacts you. Whats your suggestion exactly.

In reply to @victorgrego:
Thanks for your reply...

I am on windows 7, there is a memory leak. I cannot use kill process it does nothing, even restart seems to be stuck. I included the process lists in photos above (prior posting). "f.exe" and "fuckr.exe" are two instances stuck in processes of the same program.

Thank You!

...

...

I am asking for a way to delete messages from my inbox. On a app you are able to swipe and select delete. If a bot contacts me I never block as they create another account or are notified and contact you right back. Same thing with those group orgy scammers who want information, It's best to ignore them and delete.

I'm on windows 10 and all I get is one fuckr under apps, 3 fuckr under
background processes.  Logging in/out without restarting and restating had
no effect - always had the same number.
Think what hes asking in regards to "delete" is that from the chats window
there would be an edit button that would allow you to select multiple chats
to delete - ie clean up old chats with multiple users. This exists in the
iPad version but not Android version (of grindr)
On Sun, Jan 31, 2016 at 2:29 PM, Victor Nascimento<EMAIL_ADDRESS>
wrote:

About the multi processes. Looks like this only happens in win10. I've
tested on mine and same thing happens. When I run on win7 its ok, but still
crashes after some time.

have implemented here.

4)...

Idk whats happening. I send the request with the filtering parameters,
but seems like it does not filter... maybe you could give me a hand
@tomlandia https://github.com/tomlandia

I dont get it. I know those bots, but after blocked there may have
another acc that contacts you. Whats your suggestion exactly.

—
Reply to this email directly or view it on GitHub
https://github.com/tomlandia/fuckr/issues/16#issuecomment-177640346.

New Request:
7) Emoji icons, so many profiles use them instead of text it's hard to see their usage in profiles and then the person your chatting with acts like your stupid because you could not see their Emoji.

Okay, sorry @powline99 no clue on that, in my laptops it works just fine.
Tom has implemented.
I ill leave this to Tom, as my first try to change the visuals wasn't accepted :stuck_out_tongue:
Still Open
I got to filter most settings. Surprisingly, Grindr does not limit to filter other settings via code. However, I did not figure out how to filter by: "Relationship Status" nor "Grindr Tribes", the others work just fine.
Still Open, maybe will take time.
Still Open, I found some plugins on that, but still did not test.

I'm pushing my very partial solutions hoping for the feedback of you guys :smile:

Thank you @victorgrego  some updated points

It is so annoying I am still getting crashes on Windows 7, Do I send you guys a app log or something? I must restart, restart , .... The memory leak is quite big with the resources it it taking staying in processes and no way to kill it or restart.
Would love to get the Updated US Conversions Imperial is it compared to Metric
Yes I love Scruffs Minimal Darker Design (no pink), is there a Scruff PC Clone to Use haha ;-p
The block issue is getting annoying especially since Grindr losts all my blocks and now everyone is unblocked with their recent issues. I have to reblock a ton of people. Why can't we be on a profile and use a keyboard shortcut Cntrl + b or whatever. It's a 4 step process that leaves you in your inbox when done currently not back in the main wall.
I asked for the ability to filter by ethnicity, tribe, relationship status, orientation, etc... I also need the ability to see that in everyone's profile, these stats are missing ... I believe it's just height/weight/age.
Delete messages from inbox would be great needing this function more and more.
Need emoji support, people think you are mentally challenged when you cannot understand the emoji icons you never saw, haha.
New Feature request: Why are pictures so small people send you, there is no way to click and see them in a bigger size, one must save each and every pic and use a window software.
Possible bug, why am I getting crashes when I goto my inbox and click on someone's photo so I can see their Grindr Profile it crashes the app. Have they blocked me and yet the chat log is stuck in my inbox still? There is no way to view their profile just the chat saying hey and the preview image attached to the inbox log.

Thanks @victorgrego  @tomlandia

About the isse 5) I've implemented in last push :D
8) I've done myself a all pictures a link, so i can click and open in navigator.

@victorgrego
How do I download your fork? Do I just pull the files to the existing exe folder or how do I get the Win 32 bit download
Thanks!

Think (9) happens because the profile was deleted. Think what happens when
you have a chat is that the info is stored locally and when you click on
the profile the local info is updated (have seen an "old" pic change and
when I checked using the app the new pic was the profile pic).
(8) pics are small but when I click on them I get large images
(1) check to see if your java needs updating
Dennis
On Fri, Feb 5, 2016 at 6:38 PM, powline99<EMAIL_ADDRESS>wrote:

Thank you @victorgrego https://github.com/victorgrego some updated
points

It is so annoying I am still getting crashes on Windows 7, Do I send
you guys a app log or something? I must restart, restart , .... The memory
leak is quite big with the resources it it taking staying in processes and
no way to kill it or restart.
Would love to get the Updated US Conversions Imperial is it compared to
Metric
Yes I love Scruffs Minimal Darker Design (no pink), is there a Scruff
PC Clone to Use haha ;-p
The block issue is getting annoying especially since Grindr losts all
my blocks and now everyone is unblocked with their recent issues. I have to
reblock a ton of people. Why can't we be on a profile and use a keyboard
shortcut Cntrl + b or whatever. It's a 4 step process that leaves you in
your inbox when done currently not back in the main wall.
I asked for the ability to filter by ethnicity, tribe, relationship
status, orientation, etc... I also need the ability to see that in
everyone's profile, these stats are missing ... I believe it's just
height/weight/age.
Delete messages from inbox would be great needing this function more
and more.
Need emoji support, people think you are mentally challenged when you
cannot understand the emoji icons you never saw, haha.
New Feature request: Why are pictures so small people send you, there
is no way to click and see them in a bigger size, one must save each and
every pic and use a window software.
Possible bug, why am I getting crashes when I goto my inbox and click
on someone's photo so I can see their Grindr Profile it crashes the app.
Have they blocked me and yet the chat log is stuck in my inbox still? There
is no way to view their profile just the chat saying hey and the preview
image attached to the inbox log.

Thanks @victorgrego https://github.com/victorgrego @tomlandia
https://github.com/tomlandia
—
Reply to this email directly or view it on GitHub
https://github.com/tomlandia/fuckr/issues/16#issuecomment-180661174.

@Kav28
Thanks Kav for your help
I updated java, the problem being I cannot delete Fuckr because it says it is in use and it will not let me kill the process. I have tried restarting. I use chromium as a web browser and it does not support IMAPI plugins.
I found this is  the event viewer if anyone @victorgrego @tomlandia or @Kav28 can make since of it and help it would be greatly appreciated
Event 1000, Application Error
Event ID: 1000
Task Category: (100)
Faulting application name: Fuckr.exe, version: <IP_ADDRESS>, time stamp: 0x552a925b
Faulting module name: Fuckr.exe, version: <IP_ADDRESS>, time stamp: 0x552a925b
Exception code: 0x80000003
Fault offset: 0x000ec689
Faulting process id: 0x21d4
Faulting application start time: 0x01d156d1605ee41b
Faulting application path: D:\Fuckr-win32\Fuckr.exe
Faulting module path: D:\Fuckr-win32\Fuckr.exe
[ Name]  Application Error

EventID 1000

[ Qualifiers]  0
Level 2
Task 100
Keywords 0x80000000000000

EventData
Fuckr.exe
<IP_ADDRESS>
552a925b
Fuckr.exe
<IP_ADDRESS>
552a925b
80000003
000ec689
21d4
01d156d1605ee41b
D:\Fuckr-win32\Fuckr.exe
D:\Fuckr-win32\Fuckr.exe

@mratmsf @victorgrego Help guys... How do I combine the Win 32bit Fuckr Install with your forked versions? Say I want Victors Updates of the profile specs he did recently, and I want mratmsf's US Imperial conversions of miles /height/weight and I have Tom's original 32bit Install.
Thanks!

How do you normally use fuckr?  do you have multiple on going chats or just
one at a time? do you leave it running between sessions of use or sign out?
On Sat, Feb 6, 2016 at 12:51 AM, powline99<EMAIL_ADDRESS>wrote:

@mratmsf https://github.com/mratmsf @victorgrego
https://github.com/victorgrego Help guys... How do I combine the Win
32bit Fuckr Install with your forked versions? Say I want Victors Updates
of the profile specs he did recently, and I want mratmsf's US Imperial
conversions of miles /height/weight and I have Tom's original 32bit
Install.
Thanks!
—
Reply to this email directly or view it on GitHub
https://github.com/tomlandia/fuckr/issues/16#issuecomment-180720925.

@Kav28 I leave it running if I am on my Laptop, when I go mobile I use the app. I have 2 instances of the app. I rarely sign out of Grindr. I can't figure out how to use the forked updates people have made to the 32 bit Windows install from the fuckr website, do I have to wait till the official release is updated or it their a way to use the Github forks.

I suspect that if you have an active chat a process is forked to handle
that chat and stays active till you sign out of fuckr - many active chats
will lead to many fuckrs.  If you sign out of fuckr (which is not an option
in the app) the processes get cleaned up. By rarely signing out you keep
these processes active and they will build up - a testable theory at least
(I'm not observing what you are but I'm on windows 10 and dont keep the app
up).
By instances do you mean two grindr accounts running at the same time, two
grindr accounts but only one running at a time or two grindr accounts
running at the same time?
The files changed by any fix are listed in these updates. If I want the
change before a release I download the diff files and change the code as
indicated.
On Sat, Feb 6, 2016 at 1:16 AM, powline99<EMAIL_ADDRESS>wrote:

@Kav28 https://github.com/Kav28 I leave it running if I am on my
Laptop, when I go mobile I use the app. I have 2 instances of the app. I
rarely sign out of Grindr. I can't figure out how to use the forked updates
people have made to the 32 bit Windows install from the fuckr website, do I
have to wait till the official release is updated or it their a way to use
the Github forks.
—
Reply to this email directly or view it on GitHub
https://github.com/tomlandia/fuckr/issues/16#issuecomment-180723038.

You mentioned earlier about a restart of Windows not helping.  You should do a shutdown/startup not a restart.  Can be different.
On Feb 5, 2016, at 8:28 PM, powline99<EMAIL_ADDRESS>wrote:
@Kav28
Thanks Kav for your help
I updated java, the problem being I cannot delete Fuckr because it says it is in use and it will not let me kill the process. I have tried restarting. I use chromium as a web browser and it does not support IMAPI plugins.
I found this is the event viewer if anyone @victorgrego @tomlandia or @Kav28 can make since of it and help it would be greatly appreciated
Event 1000, Application Error
Event ID: 1000
Task Category: (100)
Faulting application name: Fuckr.exe, version: <IP_ADDRESS>, time stamp: 0x552a925b
Faulting module name: Fuckr.exe, version: <IP_ADDRESS>, time stamp: 0x552a925b
Exception code: 0x80000003
Fault offset: 0x000ec689
Faulting process id: 0x21d4
Faulting application start time: 0x01d156d1605ee41b
Faulting application path: D:\Fuckr-win32\Fuckr.exe
Faulting module path: D:\Fuckr-win32\Fuckr.exe
[ Name] Application Error
EventID 1000
[ Qualifiers] 0
Level 2
Task 100
Keywords 0x80000000000000
EventData
Fuckr.exe
<IP_ADDRESS>
552a925b
Fuckr.exe
<IP_ADDRESS>
552a925b
80000003
000ec689
21d4
01d156d1605ee41b
D:\Fuckr-win32\Fuckr.exe
D:\Fuckr-win32\Fuckr.exe
—
Reply to this email directly or view it on GitHub.

@Kav28 that could be a highly possible theory. So help me understand this. Every time I chat with multiple people on Fuckr and I do not logout there are forked resources which acts as basically active tabs in a web browser and use resources. Then the program crashes and they still are holding the memory. You think by logging out it will take care of the resource issue? What equates a active chat and a non active chat, is it a timed thing or based on when you logged into Fuckr last and who you contacted. There is no delete in the Inbox so I cannot remove some of these active chats. It is also curious that restarting does not get rid of them out of memory in "processes." When Fuckr crashes I often have to login and enter my password again, I suppose these phantom active chats do not see the crash and simply keep adding resources to new active chats used.
I tried as you suggest to take the updated github forked files and install them by dragging into the Win 32 official version. When I did this it would not run and a coded screen appeared instead.

Theory that can be easily checked and it does mimic chrome behavior (more tabs more chrome processes).  Not sure how Windows works but in UNIX if a parent process dies child processes can be orphaned until the init process cleans them up and there can be zombies.  If the parent process exits on its own accord it should perform cleanup as part of that exit.
Do you mean restarting your laptop or restarting fuckr?  The active chats are not every chat in the inbox (which is a history) but ones that started during the current fuckr session. Deleting old chats would have no effect.
On Feb 6, 2016, at 2:34 AM, powline99<EMAIL_ADDRESS>wrote:
@Kav28 that could be a highly possible theory. So help me understand this. Every time I chat with multiple people on Fuckr and I do not logout there are forked resources which acts as basically active tabs in a web browser and use resources. Then the program crashes and they still are holding the memory. You think by logging out it will take care of the resource issue? What equates a active chat and a non active chat, is it a timed thing or based on when you logged into Fuckr last and who you contacted. There is no delete in the Inbox so I cannot remove some of these active chats. It is also curious that restarting does not get rid of them out of memory in "processes." When Fuckr crashes I often have to login and enter my password again, I suppose these phantom active chats do not see the crash and simply keep adding resources to new active chats used.
I tried as you suggest to take the updated github forked files and install them by dragging into the Win 32 official version. When I did this it would not run and a coded screen appeared instead.
—
Reply to this email directly or view it on GitHub.

@Kav28 That is the issue ..."a parent process dies child processes can be orphaned until the init process cleans them up and there can be zombies.  If the parent process exits on its own accord it should perform cleanup as part of that exit."
I have done a restart, and tried a shut down and power on. I often restart Fuckr without restarting because I am working on a bunch of other things and it crashes. I suppose I have alot of active chats going then, if they take up resources it would be nice to have them "suspend" like there is a plugin for chrome where they clear out until clicked on and made active again.

@victorgrego would you or anyone be so kind as to tell me how to use your updated fork (you updated the files so you can see more profile information, "specs"). I am using the 32 bit windows version from the official site. I download your zip from github and look at what files you updated, drag them into the folder was it layouts. I then startup fuckr.exe and there is no login screen. Must I wait for a official release and compile before using the updates or how does one use these forked updates with windows?

In my case i just replaced the files, the fuckr.js and the view. However this is a VERY developer version, and i found MANY bugs, you should wait for official release.

@victorgrego @tomlandia  Any updates on these features or a way to use @victorgrego Fork in a Windows version of the software?? What does "Delete disgusting profiles from profile view" mean I don't see any diffrence in the update. Thanks for you software!!!

Advanced Filtering: Tribe, Relationship Status, Ethnicity, body type, looking for,
Full stats on individual profiles like tribe, relationship status, orientation, ethnicity
US Conversions Height - inches / Weight - pounds / Distance - Miles
Darker / Minimal design like Scruff with no pink so I don't get in trouble using software to chat.
Quicker way to block with keyboard shortcut so it does not take 5 steps from the tile view
Way to Delete messages from inbox without blocking like Grindr has
Emoji support, people think you are mentally challenged when you cannot understand the emoji icons you never saw, haha.
Larger sent / shared pictures, there is no way to click and see them in a bigger size

Most of it in v 1.6.0. For picture size, right now you can drag and drop. For a 'discrete' theme, I'm not sure yet... making Fuckr discrete would take more than just hiding the bar and changing colors. I'm leaving this open because of the Windows threading issue, any chance the Node-Webkit update fixed it?

@tomlandia Here is what happens. I am blocking or chatting away in the app, then it crashes, it then is stuck in memory using resources and I must restart the computer or it will not End Process. I updated to the newest Java / Flash and the same thing. So maybe your right it's a webkit thing or Grindr is crashing somehow and asking for Eclipse credentials.

Looks like https://groups.google.com/forum/#!topic/nwjs-general/LtJql3LSV44 may offer a solution provided it's stable and we can add a nw command line flag to releases

Tom, why not just make all pictures inside of a link tag. I would open inside of another blank screen in high quality. That was my naive solution. An adv. solution would be using bootstrap carousel to show all picture in a new window.

@tomlandia the newest version 1.6.1 still leaves multiple threads open in the processes after it crashes. It crashes quite often (i believe Grindr is logging me out and crashing possibly a eclipse login server issue - like if you have multiple instances open of your profile) on my Windows 32bit laptop and I must open up a new instance which takes more resources...

Could we implement that "Looks like https://groups.google.com/forum/#!topic/nwjs-general/LtJql3LSV44 may offer a solution provided it's stable and we can add a nw command line flag to releases"

Please try to limit a Github issue to one problem as it'd make maintenance easier.


Output formatting

Hi,
I am under Ubuntu 19.04, and everything seems to work fine. However, the output is really painful to read because it doesn't display as it would in a browser for example. There is no indent, it never goes to the line and so on...
What would be the requirements to have the same formatting as in a browser ?
Thanks

what specific output are you looking at? What do you want it to look like? what kind of browser do you want it to be like? Are you talking about the sourcecode or something else?

Thanks for asking for precision.
After having run
import cbpro
public_client = cbpro.PublicClient()

If I run public_client.get_product_ticker(product_id='ETH-USD'), my output is something like
{'trade_id': 48521080, 'price': '238.51000000', 'size': '0.62577557', 'time': '2019-06-06T19:49:56.811Z', 'bid': '238.5', 'ask': '238.51', 'volume': '127764.41733600'}```
and I would like it to be displayed like this:
```python
{
'trade_id': 48521080,
'price': '238.51000000',
'size': '0.62577557',
'time': '2019-06-06T19:49:56.811Z',
'bid': '238.5',
'ask': '238.51',
'volume': '127764.41733600'
}```

I don't know if it is _supposed_ to be that way or if it could be an enhancement.

This is just a json response as it comes from the server. It is just the data and does not really need to all be displayed, unless you have a specific need to pull something from it.
First tell python to interpret the text string as a dictionary with the ast.literal_eval() and then use what you want from it.
So you can select what you want with the keyword like this:
import ast
Data = public_client.get_product_ticker(product_id='ETH-USD')
DataDictionary = ast.literal_eval(Data)
print(DataDictionary["price"])
print(DataDictionary["size"])
After initially getting familiar with working with the data I would avoid using the ticker price since it can lag, is subject to major delays during peak trading moments and can have inaccuracies. Much better is the websocket feed, specifically the 'matches' feed.
I'm trading pretty much year round with this library, so let me know if you have specific questions and I will try to help, if I can.

Thank you for your help. I won't hesitate to if I need other precisions.
However, I might just have found another solution. As you said,  it has to do with json. First, import json in python, so run
import json

then run your command (for example public_client.get_product_ticker(product_id='ETH-USD')) and finally run
print(json.dumps(_, indent=4))

The underscore (_) returns the last output in python. For example, if you run 2*4 then _-3, the output will be 5.
Here, we also have specified an indent of 4 characters.
It may not be perfect in every case of figure and can certainly be improved but for an occasional use, it is a simple solution

you really need to assign your ticker response to a variable, or else you will be asking for trouble. Think of a situation involving quickly checking the price, submitting a buy order, and then cancelling it. You need to have a status of each action saved in a separate variable if you want to stand a chance of keeping pace with a live market.

You're right, this kind of tool is mostly used for speed and automation. What I asked for was just a feature that is by no means the main objective of the commands

What you asked for was how to format the text returned by coinbase servers, and I showed you how to do that. It is not the job of the api interface to parse the data, that is your job.
You will also want to surround each api call with a try, except block, because although you are not trying to be fast you will at least want your data collection to work over many tries.


Simdize comparison functions.

Simdizes comparison functions.

Supports eq, neq, lt, gt, lte, gte.
Supports all primitive types except booleans.
Only supports flat primitive vectors - defaults to non simd approach if no identity mapping present.

Added benchmark for eq:
============================================================================
/Users/kpai/src/Velox/velox/functions/prestosql/benchmarks/ComparisonsBenchmark.cpprelative  time/iter  iters/s
============================================================================
non_simd_bigint_eq                                           1.91ms   522.39
simd_bigint_eq                                   624.25%   306.65us    3.26K
non_simd_tinyint_eq                                          1.89ms   529.48
simd_tinyint_eq                                 1396.16%   135.27us    7.39K

What is the macos-build failure here?  Seems not related to this PR but is not seen before.

@Yuhta It seems it was some transient failure.

This is blocked on https://github.com/xtensor-stack/xsimd/pull/806 .

This is blocked on xtensor-stack/xsimd#806 .

You probably need to fix all platforms for them


fix: typescript issue in v3.x

[ ] Fix the d.ts for v-mapbox in version 3.x.x

This is already done using vue-tsc


Implemented Alternative Checkboxes Style Settings Toggle

This implements the feature mentioned in this issue: https://github.com/Fro-Q/Qlean/issues/2

I've implemented the toggle feature in Style Settings.
I added: --checkbox-color: var(--color-done); to body instead of the selectors you had since it achieves the same and doesn't interfere with the toggle.
By default, your Alternative Checkbox styling is applied and the toggle can disable it.

Once toggled to disable, the Alternative Checkboxes are reset to default styling:

Seems like it should work. I'll merge it and make an update.


MFA - Backup problem

Hello, I installed the microsoft authentication application on my cell phone and logged in with my outlook account, with this I inadvertently replaced my previous backup that I had with that email. Is there a way to recover my previous backup? Please, I need a urgent solution for this because I cannot login to most of my accounts with 2fa security.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 8b52a210-1be6-4e5f-d95c-8ea7b87919ca
Version Independent ID: 02a43ebb-7471-d7ff-4f7e-84c9f7a66326
Content: Back up and recover accounts with the Microsoft Authenticator app - Azure AD
Content Source: articles/active-directory/user-help/user-help-auth-app-backup-recovery.md
Service: active-directory
Sub-service: user-help
GitHub Login: @curtand
Microsoft Alias: curtand

@mrcasancrem Thank you for your query. As far as I know if you have erased it from backup there is no other way to restore it because there is only one copy of it stored in your icloud account or Microsoft account depending upon which phone you have (iOS or Android) . I understand this is not the answer you were expecting but at this point this is the only thing i can tell you as the original backup is overwritten. I will research on this and see if I find anything new and update here.
Thank you.

@mrcasancrem Unfortunately there is no way to recover this data . Ideally restore option should have been used while installing the app again and re-configuring it with the same email as mentioned here in the article.

You can recover your account credentials from your cloud account, but you must first make sure that the account you're recovering doesn't exist in the Microsoft Authenticator app. For example, if you're recovering your personal Microsoft account, you must make sure you don't have a personal Microsoft account already set up in the authenticator app. This check is important so we can be sure we're not overwriting or erasing an existing account by mistake.

As mentioned Begin recovery option should be used while trying to restore an update.

I just shared this information for future reference . Unfortunately at this point nothing else can be done. We will now close this issue.
Thank you.


"Șopârlița" is listed in the drop-down menu

Description:
When user writes ”Șopârlița” the location appear in the drop-down menu next to the comune and the county which is a part according to the law.
Precondition:
The website is up an running. After every step delete the text you typed from the search bar.

Step 1
Type "Șopârlița" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Șopârlița, OLT".

Step 2
Write in the search bar "Șopârlița".

Expected results
The location is listed in the drop-down menu as "Sat Șopârlița OLT (Șopârlița)".


Add context menu item for selected bolt11 payment requests

Closes #9
Description
Added a context menu item  to "Pay Lightning Invoice" when a BOLT-11 payment request string is highlighted on the page and right-clicked. When this menu item is clicked, the payment popup is displayed allowing you to confirm the payment. The extension makes an effort to only show the menu item when a valid payment request is highlighted
Steps to Test

Visit a website that accepts lightning payments
Click Buy button in order to be presented with a Lightning payment request string
Highlight the string then right-click
Click on the Pay Lightning Invoice menu item
Click Confirm in the popup to send the bitcoin

Screenshots

This is a really clever work-around for the extension API's lack of a way to show conditionally based on the content highlighted. I had hoped it'd work even without highlighting the BOLT-11 string, just by reading the content of the element, but it doesn't look like there's a straightforward way to do that. I'm going to dig in a little bit and see if that can be done, but if not, I'll merge this in.
Thanks for the contribution!

I had not even consodered the case where the user right-clicks without highlighting first. I think it is should be possible if the mousedown event captures the associated DOM element. Then it’s just a matter of navigating up to the parent tag and getting the innerText. I will try this tomorrow and let you know how i make out.

That sounds great, thanks for looking into it.


Is there an ability to chain multiple validation methods returning ErrorOr?

Having a validation depending on multiple checks, is constructing a list of errors the only way to return a failure result for multiple fails?
Having a Bind extension method or something titled more idiomatic to C# would be nice, since this would enable to chain multiple operations in a single flow.

You could even leverage the powers of Linq and implement ErrorOr<TResult> SelectMany<T, TCollection, TResult>(this ErrorOr<T> errorOr, Func<T, ErrorOr<TCollection>> collection, Func<T, TCollection, TResult> selector).
That would allow for things like that:
from user in userRepository.Lookup("Andreas")
from deletedUser in userRepository(user)
select deletedUser

That would enable some sort of railway oriented programming style. You could even do it for the async variant.
What do you think @amantinband? It would be fun to build this addition.

Here you go: https://github.com/emzdyhravemzdy/LinqErrorOr
Someone already did it.

Can you guys take a look at #77 and let me know what you think? It's inspired by #31 with some tweaks (cc @lucafabbri)
tl;dr:
Chain
 [Fact]
    public void ChainErrorOrs_WhenHasValue_ShouldInvokeNextInChain()
    {
        // Arrange
        ErrorOr<Person> errorOrPerson = new Person("Amichai");

        static ErrorOr<string> GetName(Person person) => person.Name;
        static ErrorOr<Person> CreatePersonFromName(string name) => new Person(name);

        // Act
        ErrorOr<Person> result = errorOrPerson
            .Chain(person => GetName(person))
            .Chain(name => CreatePersonFromName(name));

        // Assert
        result.IsError.Should().BeFalse();
        result.Value.Should().BeEquivalentTo(errorOrPerson.Value);
    }

    [Fact]
    public void ChainErrorOrs_WhenHasError_ShouldReturnErrors()
    {
        // Arrange
        ErrorOr<Person> errorOrPerson = Error.NotFound();

        static ErrorOr<string> GetName(Person person) => person.Name;
        static ErrorOr<Person> CreatePersonFromName(string name) => new Person(name);

        // Act
        ErrorOr<Person> result = errorOrPerson
            .Chain(person => GetName(person))
            .Chain(name => CreatePersonFromName(name));

        // Assert
        result.IsError.Should().BeTrue();
        result.FirstError.Should().BeEquivalentTo(Error.NotFound());
    }

ChainAsync
    [Fact]
    public async Task ChainErrorOrsAsync_WhenStateIsValue_ShouldInvokeNextInChain()
    {
        // Arrange
        ErrorOr<Person> errorOrPerson = new Person("Amichai");

        static Task<ErrorOr<string>> GetNameAsync(Person person) => Task.FromResult(ErrorOrFactory.From(person.Name));
        static Task<ErrorOr<Person>> CreatePersonFromNameAsync(string name) => Task.FromResult(ErrorOrFactory.From(new Person(name)));

        // Act
        var result = await errorOrPerson
            .ChainAsync(person => GetNameAsync(person))
            .ChainAsync(name => CreatePersonFromNameAsync(name))
            .ChainAsync(person => GetNameAsync(person))
            .ChainAsync(name => CreatePersonFromNameAsync(name));

        // Assert
        result.IsError.Should().BeFalse();
        result.Value.Should().BeEquivalentTo(errorOrPerson.Value);
    }

    [Fact]
    public async Task ChainErrorOrsAsync_WhenStateIsError_ShouldReturnErrors()
    {
        // Arrange
        ErrorOr<Person> errorOrPerson = Error.NotFound();

        static Task<ErrorOr<string>> GetNameAsync(Person person) => Task.FromResult(ErrorOrFactory.From(person.Name));
        static Task<ErrorOr<Person>> CreatePersonFromNameAsync(string name) => Task.FromResult(ErrorOrFactory.From(new Person(name)));

        // Act
        var result = await errorOrPerson
            .ChainAsync(person => GetNameAsync(person))
            .ChainAsync(name => CreatePersonFromNameAsync(name))
            .ChainAsync(person => GetNameAsync(person))
            .ChainAsync(name => CreatePersonFromNameAsync(name));

        // Assert
        result.IsError.Should().BeTrue();
        result.FirstError.Should().BeEquivalentTo(Error.NotFound());
    }

@amantinband Yes that looks great.
I must apologize, I couldn't wait and build this: https://github.com/apfohl/ErrorOrExtensions/.
Once you support it natively I can remove it again 😅.
I would love to have the LINQ expression syntax though... 😉

Cool! I just don't love the naming.. Chain or Select both feel a bit off. Looking at your repo, I really like theOrElse idea and the naming is very intuitive.
This I don't like:
    [HttpGet]
    public Task<IActionResult> Edit(Guid id) =>
        booksRepository.Lookup(id)
            .Chain(book => book)
            .Chain(book => View(new BooksEditViewModel(book)))
            .OrElse(StatusCode(500, "An unexpected error occurred on the server."));

Perhaps something like following:
    [HttpGet]
    public Task<IActionResult> Edit(Guid id) =>
        booksRepository.Lookup(id)
            .ThenIfSuccess(book => book)
            .ThenIfSuccess(book => View(new BooksEditViewModel(book)))
            .OrElse(StatusCode(500, "An unexpected error occurred on the server."));

or
    [HttpGet]
    public Task<IActionResult> Edit(Guid id) =>
        booksRepository.Lookup(id)
            .ContinueWith(book => book)
            .ContinueWith(book => View(new BooksEditViewModel(book)))
            .Breakwith(StatusCode(500, "An unexpected error occurred on the server."));

Something around these lines I think can be a really good addition

Regarding naming, I think .Then()/.OrElse() seem to be both understandable and succinct, i.e.:
    [HttpGet]
    public Task<IActionResult> Edit(Guid id) =>
        booksRepository.Lookup(id)
            .Then(book => Transform(book))
            .Then(book => View(new BooksEditViewModel(book)))
            .OrElse(StatusCode(500, "An unexpected error occurred on the server."));

A couple of chained .Thens seem to implicitly suggest that all of the checks/actions have completed successfully, so I don't really se the point in naming .ThenIfSuccess

I agree with @mickvikt. Naming it Then() makes it pretty clear what happened. It relates a little bit to a Promise in JavaScipt. Even though it is for async processing.
OrElse should have three implementations though:
public static T OrElse<T>(this ErrorOr<T> errorOr, T orElse) =>
    errorOr.Match(value => value, _ => orElse);

public static T OrElse<T>(this ErrorOr<T> errorOr, Func<T> orElse) =>
    errorOr.Match(value => value, _ => orElse());

public static T OrElse<T>(this ErrorOr<T> errorOr, Func<List<Error>, T> orElse) =>
    errorOr.Match(value => value, orElse);

yeah that's better but still doesn't feel perfect IMO.
Also, maybe we should just drop it to Else:
    [HttpGet]
    public Task<IActionResult> Edit(Guid id) =>
        booksRepository.Lookup(id)
            .Then(book => Transform(book))
            .Then(book => View(new BooksEditViewModel(book)))
            .Else(StatusCode(500, "An unexpected error occurred on the server."));

Regarding the 3 methods - I guess that makes sense for fluentness. I'll have the Then method behave the same so we can do the following:
    [HttpGet]
    public Task<IActionResult> ReturnOkIfExists(Guid id) =>
        booksRepository.Exists(id)
            .Then(Ok())
            .Else(NotFound());

Sounds good? Let me know what you think

Yes, ´Then´ and ´Else´ is a good idea. People are struggling forever with naming these methods.
Also, I wouldn't think to hard about the naming of ´Else´ because it is basically just a your ´Match´ when you combine it with ´Then´. But ´Match´ takes a function returning ´T´ and not ErrorOr<T>. So ´Match´ is actually a combination of ´Map´ (´Select´ in my case) and ´Else´. I took the name ´OrElse´ from the Java ´Optional´ implementation.

This is where we're at:
Then / ThenAsync
Multiple methods that return ErrorOr<T> can be chained as follows:
static ErrorOr<string> ConvertToString(int num) => num.ToString();
static ErrorOr<int> ConvertToInt(string str) => int.Parse(str);

ErrorOr<string> errorOrString = "5";

ErrorOr<string> result = errorOrString
    .Then(str => ConvertToInt(str))
    .Then(num => ConvertToString(num))
    .Then(str => ConvertToInt(str))
    .Then(num => ConvertToString(num));

static ErrorOr<string> ConvertToString(int num) => num.ToString();
static Task<ErrorOr<string>> ConvertToStringAsync(int num) => Task.FromResult(ErrorOrFactory.From(num.ToString()));
static Task<ErrorOr<int>> ConvertToIntAsync(string str) => Task.FromResult(ErrorOrFactory.From(int.Parse(str)));

ErrorOr<string> errorOrString = "5";

ErrorOr<string> result = await errorOrString
    .ThenAsync(str => ConvertToIntAsync(str))
    .ThenAsync(num => ConvertToStringAsync(num))
    .ThenAsync(str => ConvertToIntAsync(str))
    .ThenAsync(num => ConvertToStringAsync(num));

// mixing `ThenAsync` and `Then`
ErrorOr<string> result = await errorOrString
    .ThenAsync(str => ConvertToIntAsync(str))
    .Then(num => ConvertToString(num))
    .ThenAsync(str => ConvertToIntAsync(str))
    .Then(num => ConvertToString(num));

If any of the methods return an error, the chain will break and the errors will be returned.
Else / ElseAsync
The Else / ElseAsync methods can be used to specify a fallback value in case the state is error anywhere in the chain.
// ignoring the errors
string result = errorOrString
    .Then(str => ConvertToInt(str))
    .Then(num => ConvertToString(num))
    .Else("fallback value");

// using the errors
string result = errorOrString
    .Then(str => ConvertToInt(str))
    .Then(num => ConvertToString(num))
    .Else(errors => $"{errors.Count} errors occurred.");

// ignoring the errors
string result = await errorOrString
    .ThenAsync(str => ConvertToInt(str))
    .ThenAsync(num => ConvertToString(num))
    .ElseAsync(Task.FromResult("fallback value"));

// using the errors
string result = await errorOrString
    .ThenAsync(str => ConvertToInt(str))
    .ThenAsync(num => ConvertToString(num))
    .ElseAsync(errors => Task.FromResult($"{errors.Count} errors occurred."));

@apfohl I ended up only adding two methods, since the Func<T> can be achieved by calling the Func<List<Error>, T> version like this:
ErrorOr<int> result = errorOrString
    .Then(_ => 5)

I'd appreciate if some of you can take a look at the PR and make sure I didn't miss something obvious.
I'm good to go with this version unless someone has good suggestions 🤙

I'll give it a review.

@apfohl I ended up only adding two methods, since the Func<T> can be achieved by calling the Func<List<Error>, T> version like this:
ErrorOr<int> result = errorOrString
    .Then(_ => 5)

That's fair.


Move rusqlite-pool into its own repo

... as it does not really have to do with the node

Are we still to do planning this?

Yeah


remove feedback modal, link it directly

@planemad @batpad – I'm wondering we could remove the popup for feedback and let users directly click and goto form. Better UX and removes 40 loc. WDYT?

@pratapvardhan How does one preview this with the staging deploy?

Now that I merged it into dev, you can see it live at https://amche.in/dev/
Next thing to do is, merge dev into main once we fell good.


@click Behavior Inconsistent

Version
3.0.4
Reproduction link
https://github.com/yotam-haran/vue-test-app
Steps to reproduce
The app shows a simple questionnaire with numbered, clickable options. Click around and see what happens - most of the times you will click just once and the click event will occur, but sometimes you will have to click twice for something to happen. This behavior is very inconsistent, and I have not been able to observe any clear pattern. Sometimes clicking an element works just fine, while the next moment it does nothing.
What is expected?
Clicking an element with an @click event fires the registered function
What is actually happening?
Clicks do not always fire the function

This behavior has been observed in two different apps with a similar setup - the latest versions of vue, vue-router, and vuex - using both vue-cli and laravel-mix for transpilation.

Hello, this is too much for a reproduction: it should be boiled down as explained at https://new-issue.vuejs.org/?repo=vuejs/vue#why-repro (e.g. simplified components, no store, no router). You can also use the forum or the Discord chat to ask for help boiling it down


AppMeasurement Library

Hi, I'm not sure where's best to ask this, but would it be possible for you to host the source for the PHP AppMeasurement API here on the Adobe-Marketing-Cloud organisation? The library I am referring to is the one talked about here.
I've been working with it recently and I have a few bug fixes that I would like to share with the community and I feel it would be best to do this against a canonical repo here in the organisation rather than my fork.

I no longer work on this


Weird indentation

When setting readability of JsonSerialisable.ToJson, the indentation of the produced mzQC file is not entirely correct. E.g.:
{"mzQC":
{
    "creationDate": "2024-08-21T13:43:14Z",
    "version": "1.0.0",
                "runQualities": [
        {

"mzqc" should be on a new line and indented once.
"runQualities" is indented too much.

I'd also maybe suggest only 2 spaces per indentation level instead of 4, to have somewhat more compact (yet still legible) documents.

#51 and #53 are actually connected. Funny business with indents came from incompletely removing empty optional elements.
Sanitising happens only if using ToJson/FromJson.
I guess I will prepare a dedicated documentation page for top-level functionality and entry/exit points? Not sure yet how to best structure the docs.

This is the defaults for ToJson. Sensible?
        readability : int, optional
            The indentation level, by default 0 (=no indentation,
            1=minor indentation on MZQC objects, >1 heavy indentation for max.
            human readability)

(minor indentation is 2 spaces, heavy is 4 spaces and some more newlines if I remember correctly)

Yes, those defaults seem fine.


bindings refactor

Refactor invoke_binding to include operation and metadata params
Add invoke_output_binding which doesn't expect/handle any response.

/keep-alive


User Follower

This issue is to discuss the requirements for the User follower feature.

First two.

Have a command to define where we can mark a user as followed and be warned when it joins the server
Have a command to define where to display such information (discord channel ?)


Add ife

Adds the MoreVP in-flight exit functionality

This PR needs more tests, but I wanted to get this part up before I hop on a plane tomorrow.
Take a look please, and we then can decide if we'll have time to test and release it before next week


Implement force push down for nested group by query

@gianm @jihoonson - creating a PR as we discussed over the email. The pull request isn't complete by any means. I just wanted to get your feedback on the approach I have taken. For now, I have implemented the force push down feature. Once we have finalized on the over all approach, I will provide a patch for automatic push down in a separate patch. Thanks!

Great! I'll take a look soon.

Hi @samarthjain, I'll do my review today or tomorrow. Before that, I'd like to one question. Looks that a query context value decides pushing nested query execution or not. Does this mean all nested subqueries are pushed to historicals if the query is deeply nested?

@jihoonson - Currently, when the user sets the push nested query execution flag on the outermost query, then the broker executes the entire nested query on the historical nodes. The broker then merges the results returned by the historical nodes as usual except that in this case, the rows returned by historical nodes have the structure of the outermost part of the query.

Thanks. It sounds good for the first step. Will leave some comments soon!

@samarthjain I think you can check out GroupByLimitPushDownMultiNodeMergeTest for an example of testing that kind of merging

@jon-wei thanks. It looks a good example to test merging.

Can this PR include more description in the master comment about what it is accomplishing and how it is accomplishing it?

@jihoonson - I have updated pull request with review comments, did some clean up and added tests.

The way nested query execution is implemented today, it executes the inner most query on the historical nodes with the outer queries being executed on the broker node. This can get problematic when the inner query groups using a high cardinality dimension, returning too many records for broker node to handle. One of the options that we have been internally testing and exploring is the capability to push down the complete nested query to the historical nodes. Each historical node then will execute the nested query primarily dealing with the segments it owns for that query. Because the number of records returned by each historical node would potentially be much smaller in this case, it would be less intensive for the broker to perform the final merge and aggregation. The broker though won't need to perform any more dimension or segment level filtering since it will be taken care of at the historical nodes itself.  Note that this way of distributing the aggregation to the historical nodes doesn't always return the same results as the final aggregation getting done on the broker node. However, there is a good set of cases (for ex - aggregating on dimensions that are used for hashing during ingestion) where this kind of push down logic will return the right results. I can get into this into more detail but the general idea was to leave the onus on the user to figure out if their data layout allows for this kind of push down.
This implementation provides user a way of forcing nested query execution through a query context variable. The next cut will focus on doing this automatically under the following conditions (credit to @gianm ) for clearly articulating the following:

The groupBy query granularity is equal to, or finer than, segment granularity;

and either:
2a) A time chunk uses HashBasedNumberedShardSpec, partitionDimensions is nonempty, the grouping dimension set contains all of the shard partitionDimensions, and there are no "extension" partitions (partitions with partitionNum >= partitions, which are created by ingest tasks that append data)
or:
2b) A time chunk uses SingleDimensionShardSpec and the grouping dimension set contains the shard dimension.
If Druid detects this it should push down the query automatically for that time chunk. There will be situations where the query can be pushed down for some time chunks but not others (for example: consider a data pipeline that loads data unpartitioned in realtime, and later has a reindexing job to partition historical data by some useful dimension). In this case, ideally the broker should be capable of pushing down the query for the time chunks where it can be correctly pushed down, and not pushing it down for others.

@samarthjain thanks. I'll take another look.

@samarthjain we are suffering from pretty frequent CI failures. If the CI for your PR fails, you first need to make sure the failure relates to any changes in your PR. This can be checked by running unit tests locally.
Usually the memory configuration for CI shouldn't be a problem. If you found something wrong in the CI configuration, please make another PR to fix it.

@jihoonson - sorry for the late reply. I have cleaned up code, removed pom changes and added an integration test. I wanted to check with you how is the integration test triggered? How is the data needed for the test loaded? I looked at existing integration tests and couldn't figure out where that magic happens.

{code}
[ERROR] before(io.druid.tests.query.ITNestedQueryPushDownTest)  Time elapsed: 403.943 s  <<< FAILURE!
io.druid.java.util.common.ISE: Max number of retries[10] exceeded for Task[wikipedia segment load]. Failing.
at io.druid.tests.query.ITNestedQueryPushDownTest.before(ITNestedQueryPushDownTest.java:47)
{code}
Looks like the framework is not able to locate wikipedia data source which the new test needs. @jihoonson, the test passes for me locally after loading up the wikipedia datasource as mentioned on http://druid.io/docs/latest/tutorials/quickstart.html.  Would be great if you can let me know how to get load new data for the IT tests.

@jihoonson - any insights on how to add and execute new integration tests for CI?

@samarthjain I'll take a look today. Sorry for late review.

Thanks for the detailed feedback, @jihoonson . I will review it and reply by tonight.

GroupByRowProcessor.process() is supposed to be called only when processing sub queries, but now it looks to be called when merging sub queries as well. I think it was for avoiding code duplication, but it can be improved by splitting them and extracting common code paths into utility methods.
The process method isn't doing any additional merges. The only change is to make it cognizant of the fact that the sub-query sequence it is processing in case of forcePushDown is now a result of running the pushed down nested query instead.

A groupBy v2 query requires to get a resource before query execution. We currently check there are enough number of merge buffers to execute a given query. Since historicals have processed only the inner-most query so far, they have always required a single merge buffer. However, they can process nested queries after this patch, resource preservation should be changed as well. Please see here for how the number of merge buffers is calculated for brokers.

Good point. I will make sure that historicals have same number of merge buffers as broker. Although from the first look at the code, it seems like it it should, but I will make sure and hopefully add a test for the same too.

If I understand correctly, once forceNestedQueryPushDown is set to true, the inner most query is passed from GroupByQueryQueryToolChest to DirectDruidClient to find which historicals should receive the query, and then that the pushed down nested query is sent from DirectDruidClient. I think this kind of value hijacking can cause many potential bugs. Instead, I suggest to add an interface to Query to find the dataSource of the inner-most query.

Thanks. Let me see how can I make this cleaner. I am not the biggest fan of the approach I took, either.

The integration test fails in my laptop as well. Also, when I tested the below query with my local cluster, I met this error.

Did you update the jar on the historicals too?

@samarthjain yes, I tested in my local laptop and used the jar of the same version for all modules.

Addressed the review comments you left, @jihoonson . I was able to get rid of the hacky approach I took for getting hold of the complete nested query in DirectDruidClient by using it directly higher in the stack in GroupByQueryToolChest and GroupByStrategyV2. Also  fixed the failure you ran into when using a multi-level nested query. To run the integration test on my laptop, I had to add a config file and supply it's path in the ConfigFileConfigProvider. The contents of the config file looked like this:
{       "broker_host": "<IP_ADDRESS>",    "broker_port": "8082",    "coordinator_host": "<IP_ADDRESS>",    "coordinator_port": "8081",    "middlemanager_host": "<IP_ADDRESS>",    "middlemanager_port":"8090",    "zookeeper_hosts": "<IP_ADDRESS>:2181" }
I also had to change IntegrationTestingConfigProvider to use the ConfigFileConfigProvider and not DockerConfigProvider.
@nishantmonu51 - would you happen to know how can I get my newly added integration test to run automatically in the pre-checkin builds?

@samarthjain thanks for the update! I'll take another look.

To run the integration test on my laptop, I had to add a config file and supply it's path in the ConfigFileConfigProvider. The contents of the config file looked like this:
{ "broker_host": "<IP_ADDRESS>", "broker_port": "8082", "coordinator_host": "<IP_ADDRESS>", "coordinator_port": "8081", "middlemanager_host": "<IP_ADDRESS>", "middlemanager_port":"8090", "zookeeper_hosts": "<IP_ADDRESS>:2181" }

Would you elaborate on why this configuration is needed? It's supposed to get addresses automatically in the integration tests.

@nishantmonu51 - would you happen to know how can I get my newly added integration test to run automatically in the pre-checkin builds?

What do you mean by this? If you add an integration test, it should be run automatically on the travis. You can check it by checking the log on travis or running the integration test on your own.

Also, please check the CI failure.
Results :
Failed tests:
  GroupByLimitPushDownInsufficientBufferTest.testPartialLimitPushDownMergeForceAggs:605 expected:<MapBasedRow{timestamp=1970-01-01T00:00:00.000Z, event={dimA=mango, metA=190}}> but was:<MapBasedRow{timestamp=1970-01-01T00:00:00.000Z, event={dimA=zebra, metA=180}}>
Tests in error:
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
  GroupByQueryRunnerTest.testSubqueryWithFirstLast:6177 » ClassCast java.lang.Lo...
Tests run: 83353, Failures: 1, Errors: 20, Skipped: 62

What do you mean by this? If you add an integration test, it should be run automatically on the travis. You can check it by checking the log on travis or running the integration test on your own.

The core of the problem is that I used the wikiticker data set for my new integration test. I ended up assuming that the data set provided in http://druid.io/docs/latest/tutorials/quickstart.html will be available to run in the CI build environment too. But turns out, that isn't the case. At this point, it seems like I would have to emulate what other IT tests like ITIndexerTest are doing and load the data up in the setup phase of this new IT test.
Looking at other IT tests like ITTwitterQueryTest and ITWikipediaQueryTest, I don't see where the data is first being loaded. My best guess is that the data is already available in some s3 bucket which then the docker cluster is downloading. For ex- I see lines like below in the sample-data.sql file - https://github.com/druid-io/druid/blob/master/integration-tests/docker/sample-data.sql
INSERT INTO druid_segments (id,dataSource,created_date,start,end,partitioned,version,used,payload) VALUES ('twitterstream_2013-01-01T00:00:00.000Z_2013-01-02T00:00:00.000Z_2013-01-02T04:13:41.980Z_v9','twitterstream','2013-05-13T01:08:18.192Z','2013-01-01T00:00:00.000Z','2013-01-02T00:00:00.000Z',0,'2013-01-02T04:13:41.980Z_v9',1,'{\"dataSource\":\"twitterstream\",\"interval\":\"2013-01-.....
It would be nice if there was a way to access the twitter stream data used by these IT tests. That way I could have written tests for this feature with queries and expected results. Without access to the data, that isn't possible.

@samarthjain ah, you're correct. Unfortunately, I also have no idea where the data is. @nishantmonu51 would you explain these things like where the data is and how to see/modify the input data?

@samarthjain I found the location of test data is in the sql file. You can find it by searching bucket and key. Since the bucket is public, you should be able to download them. Once you download them, you can check data by using DumpSegment tool.

@jihoonson - sorry for the delay in updating this pull request. I have been out on parental leave. I got the integration test working in my latest commit. Also addressed the code review comments.

The processing module test passed fine for me locally.

@samarthjain congratulations! I'll take another look!

@samarthjain not really.. Sorry for the delayed review. I've been quite busy for our next minor release (0.12.2). I'll take a look in a few days.

Hi @samarthjain, sorry for the delay. I'm looking at this PR again, and the size of this PR looks huge. Would you check that this PR contains only your changes?

@jihoonson - the PR contains my changes only.

@samarthjain thanks. It looks the huge patch size is because of test data. I think it's fine.

@jihoonson - I finally got around to addressing your review comments in this latest push. Something got messed up after the recent migration to incubator-apache and it messed up my local git history. So unfortunately I had to do a hard reset of my previous commits and a force push for this pull request. I didn't want to create a new request since it would have taken away all the valuable conversation we had here. Hope it's ok.

Not sure why the travis build is complaining. Seems to be building fine locally. @jihoonson - is there a way for you to retry the build?

Ok, looks like there was a rebase issue with my branch. @jihoonson - would be awesome if you can take a look when you get a chance.

@jihoonson - I see that a 0.13.0 release is being planned. It would be great if this feature can be added to the 0.13.0 release.

Hi @samarthjain! Thank you for updating this PR. I'll take a look soon, probably at least in next week. Unfortunately, the feature for 0.13.0 is frozen, but I'm scheduling this to 0.13.1. Thanks!

Thanks for your patient reviews, @jihoonson. I have updated the PR with the requested changes. Travis build seems to be timing out.

@jihoonson - does this look good to merge now?

CI looks good. Thanks for restarting it and all your reviews, @jihoonson. Let me know if you need to me to squash the commits.

@samarthjain nice! You don't have to squash commits in most cases. I'll merge this shortly.


Table view stuck leave antares on secondary virtual desktop for long time

Steps to reproduce (unknown reproducibility):

open ssh connection (or more)
open few tables
leave antares on secondary virtual desktop for long time
disconnect the connection using the button

Actual result:

connection is closed, but the view with the tables data stay open and unresponsive
issue is resolved after restarting the app

Aditional info: ubuntu, mariadb, antares v0.5.12 or up

Update: it's turns out it's pretty consistent.
I think the connection is lost or closed after some time of not using the app.
Actual result: no indication that the connection is closed or lost and the app keeps showing as connect and all tables stay open, but it's unusable. You have to relaunch the tool and reconnect to use it again.
Expected result: keep the connection alive for as long as tool is open.

Hi Danny,
thank you for this additional information.
I ran some tests but could not replicate the error conditions.
At this point I think I will first implement a system that closes the connection when an error happens in the SSH connection.
Second, I will evaluate the implementation of a keep alive after being able to replicate the error conditions.
Issue reopened 😉.

I'm still learning, so I use a preconfigured env and can't share specific setup information, but if it helps I think the ssh is configured to close after a set time of inactivity.

I've implemented a keepalive and from my tests this solve the problem.
Let me know if from next release you still face this issue.

Thanks for the Christmas surprise, but sadly it doesn't seem to be solved. :disappointed:
I opened SSH session, left it in the background (as already described in the issue) (also locked the gnome desktop if it helps) and when I needed the DB again (around 1h later) Antares was dead already and I had to relaunch it.

The fix I was telling you about is in the upcoming version (0.7.2).
I am keeping this issue open and waiting for your confirmation to close it.

I do not have a foolproof way of reproducing this, but so far it hasn't occurred.
I'll keep watch over the next few days, but (since it used to happen almost daily) I can assume you solved it this time :partying_face:


collectstatic fails when using PipelineStorage

When using Pipeline 1.2 beta (beta 2 and Git from 5 minutes ago) and Django 1.4b1 and setting:
STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'

Running collectstatic will fail with a "ValueError: too many values to unpack"
The collectstatic management command is expecting the result of post_process() to be a tuple of 3 entries (original_path, processed_path, is_processed). Instead, it gets the dictionary of file paths generated in PiplineStorage.post_process.
It looks as if this is sort of expecting to use a post_process from PipelineStorage's parent class, if available, but that doesn't actually exist (at least in 1.4b1) in that class or any parent class. The fallback of returning the paths dictionary instead of a tuple seems to be wrong.
For debugging purposes, here's the full traceback:
  Traceback (most recent call last):
    File "./reviewboard/manage.py", line 178, in <module>
      execute_manager(settings)
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/core/management/__init__.py", line 459, in execute_manager
      utility.execute()
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/core/management/__init__.py", line 382, in execute
      self.fetch_command(subcommand).run_from_argv(self.argv)
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/core/management/base.py", line 196, in run_from_argv
      self.execute(*args, **options.__dict__)
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/core/management/base.py", line 232, in execute
      output = self.handle(*args, **options)
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/core/management/base.py", line 371, in handle
      return self.handle_noargs(**options)
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/contrib/staticfiles/management/commands/collectstatic.py", line 162, in handle_noargs
      collected = self.collect()
    File "/usr/local/lib/python2.6/dist-packages/Django-1.4b1-py2.6.egg/django/contrib/staticfiles/management/commands/collectstatic.py", line 119, in collect
      for original_path, processed_path, processed in processor:
  ValueError: too many values to unpack

Can you try with beta4 ? Thanks for giving a try to those beta !

Beta 4 of pipeline, right? That seems to have the same problem here. (That's the tip of Git, from the looks of it?)

Looks like I'm not testing against contrib.staticfiles, I will fix this as soon as possible.
Thanks agains for trying the beta.

Can you check with beta5 ?

Works great, thanks!


Add support for Spark's OneHotEncoderEstimator/Model

At some point in Spark 2.3.x there was a re-write of the OneHotEncoder support to better fit the Pipeline model. MLeap currently does not support these new types.
Beware... the docs for Spark say that there will be another renaming of this transformer in Spark 3.0

I'll take this issue.  It's pretty straightforward; sorry I overlooked this addition when I performed the upgrade to 2.3.

Closing this as support for this was added in the PR merged above.


chore: add deprecations to p2p-webrtc-star, p2p-webrtc-direct, p2p-we…

…bsocket-star, and p2p-stardust
Summary
Adding deprecations to old multiaddrs
Before Merge

[ ] Allow at least 24 hours for community input
[ ] If this is a new protocol, has the change been applied to https://github.com/multiformats/multicodec as well? If so, please link the multicodec PR.

@achingbrain @mxinden pinging for review

Cross-referencing corresponding multicodec pull request: https://github.com/multiformats/multicodec/pull/320

Please go ahead and merge for me, I dont have permissions


Boundary volume hierarchy for kDOPs

We are currently using ArborX to perform a coarse collision search in our finite element code. Specifically, we create kDOPs which approximate the convex hull of our possible collision partners and then perform an intersection search with ArborX. The pairs obtained are then checked for actual intersection, which is an expensive operation, therefore we want to keep the number of pairs found by ArborX as small as possible. For the type of bodies we consider, we get good results by using the volume type ArborX::Experimental::KDOP<26>. According to the documentation, the primitive type for the BVH has to decay to either AborX::Point or ArborX::Box. Therefore, we convert the primitive kDOPs to boxes in the creation of the BVH.
This leads to the following issue:

In this example we expect an intersection between primitive 0 and predicate 0. However, since we convert all primitives to boxes, we also get an intersection primitive 1 and predicate 0. We solve this by running a post-processing step where all found box-kDOP pairs are checked for the intended kDOP-kDOP intersection.
Is it possible to include the kDOP information in the creation of the BVH, so that query already searches against the kDOPs of the primitives? This would make our post-processing obsolete, and simplify our implementation, especially for distributed trees. There is a base version of BVH which is templated on the bounding volume type template <typename MemorySpace, typename BoundingVolume = Box, typename Enable = void> class BasicBoundingVolumeHierarchy but we could not get that one to work.
I attached a minimal working example of our code (works with ArborX v1.4), which corresponds to the figure. (Also feel free to comment on possible improvements to our ArborX implementation.)
Thanks!
#include <ArborX_KDOP.hpp>
#include <ArborX_LinearBVH.hpp>

using ExecutionSpace = Kokkos::DefaultExecutionSpace;
using MemorySpace = ExecutionSpace::memory_space;
using kdop = ArborX::Experimental::KDOP<26>;

template <>
struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PrimitivesTag>
{
  using memory_space = MemorySpace;
  using size_type = typename MemorySpace::size_type;
  static KOKKOS_FUNCTION size_type size(std::vector<kdop> const &volumes)
  {
    return volumes.size();
  }
  static KOKKOS_FUNCTION auto get(std::vector<kdop> const &volumes, size_type i)
  {
    return ArborX::Box{volumes[i]};
  }
};

template <>
struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PredicatesTag>
{
  using memory_space = MemorySpace;
  using size_type = typename MemorySpace::size_type;
  static KOKKOS_FUNCTION size_type size(std::vector<kdop> const &volumes)
  {
    return volumes.size();
  }
  static KOKKOS_FUNCTION auto get(std::vector<kdop> const &volumes, size_type i)
  {
    return attach(intersects(volumes[i]), i);
  }
};

template <typename T>
void print_pairs(const T &indices, const T &offset)
{

  for (size_t i_offset = 0; i_offset < offset.size() - 1; i_offset++)
  {
    for (int j = offset[i_offset]; j < offset[i_offset + 1]; j++)
    {
      std::cout << "\n  predicate " << i_offset << " intersects with primitive "
                << indices[j];
    }
  }
}

int main(int argc, char *argv[])
{
  Kokkos::ScopeGuard guard(argc, argv);

  // Create two vectors with bounding volumes
  std::vector<kdop> volumes_1;
  std::vector<kdop> volumes_2;
  {
    kdop tmp;
    tmp += ArborX::Point{0.0, 0.0, 0.0};
    tmp += ArborX::Point{1.0, 1.0, 0.0};
    tmp += ArborX::Point{0.5, 0.0, 0.0};
    volumes_1.push_back(tmp);
  }
  {
    kdop tmp;
    tmp += ArborX::Point{1.0, -1.0, 0.0};
    tmp += ArborX::Point{1.0, 0.25, 0.0};
    tmp += ArborX::Point{0.75, 0.0, 0.0};
    volumes_1.push_back(tmp);
  }
  {
    kdop tmp;
    tmp += ArborX::Point{0.5, 0.25, 0.0};
    tmp += ArborX::Point{0.8, 0.25, 0.0};
    tmp += ArborX::Point{0.75, 0.125, 0.0};
    volumes_2.push_back(tmp);
  }

  // Construct BVH and perform intersection search
  ExecutionSpace space{};
  ArborX::BoundingVolumeHierarchy<MemorySpace> bvh{space, volumes_1};
  Kokkos::View<int *, ExecutionSpace> indices("indices", 0);
  Kokkos::View<int *, ExecutionSpace> offset("offset", 0);
  bvh.query(space, volumes_2, indices, offset);

  // Print the results from the query
  std::cout << "bvh.query (BOX vs kDOP) yields the following intersections:";
  print_pairs(indices, offset);

  // Perform a post-processing to check kDOP vs kDOP
  std::vector<int> indices_final;
  std::vector<int> offsets_final;
  offsets_final.push_back(0);
  for (size_t i_predicate = 0; i_predicate < volumes_2.size(); i_predicate++)
  {
    int collisions_for_predicate_i = 0;
    auto const &predicate = volumes_2[i_predicate];
    for (int j = offset[i_predicate]; j < offset[i_predicate + 1]; j++)
    {
      int i_primitive = indices[j];
      if (ArborX::Experimental::intersects(predicate, volumes_1[i_primitive]))
      {
        indices_final.push_back(i_primitive);
        collisions_for_predicate_i += 1;
      }
    }
    offsets_final.push_back(offsets_final.back() + collisions_for_predicate_i);
  }

  // Print the post-processed results
  std::cout << "\nkDOP vs kDOP yields the following intersections:";
  print_pairs(indices_final, offsets_final);
  std::cout << "\n";

  return 0;
}

// Expected output:
// > bvh.query (BOX vs kDOP) yields the following intersections:
// >   predicate 0 intersects with primitive 1
// >   predicate 0 intersects with primitive 0
// > kDOP vs kDOP yields the following intersections:
// >   predicate 0 intersects with primitive 0

Hi Ivo.
This is something that is currently not "officially" supported but that we are willing to enable.
With
@@ -16,7 +16,7 @@ struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PrimitivesTag>
   }
   static KOKKOS_FUNCTION auto get(std::vector<kdop> const &volumes, size_type i)
   {
-    return ArborX::Box{volumes[i]};
+    return volumes[i];
   }
 };

@@ -80,7 +80,7 @@ int main(int argc, char *argv[])

   // Construct BVH and perform intersection search
   ExecutionSpace space{};
-  ArborX::BoundingVolumeHierarchy<MemorySpace> bvh{space, volumes_1};
+  ArborX::BasicBoundingVolumeHierarchy<MemorySpace, kdop> bvh{space, volumes_1};
   Kokkos::View<int *, ExecutionSpace> indices("indices", 0);
   Kokkos::View<int *, ExecutionSpace> offset("offset", 0);
   bvh.query(space, volumes_2, indices, offset);

on your end and
diff --git a/src/details/ArborX_AccessTraits.hpp b/src/details/ArborX_AccessTraits.hpp
index 745b72a3..f94310fd 100644
--- a/src/details/ArborX_AccessTraits.hpp
+++ b/src/details/ArborX_AccessTraits.hpp
@@ -187,9 +187,9 @@ void check_valid_access_traits(PrimitivesTag, Primitives const &)
       "member function");
   using T = std::decay_t<Kokkos::detected_t<AccessTraitsGetArchetypeExpression,
                                             Access, Primitives>>;
-  static_assert(GeometryTraits::is_point<T>{} || GeometryTraits::is_box<T>{},
-                "AccessTraits<Primitives,PrimitivesTag>::get() return type "
-                "must decay to a point or a box type");
+  // static_assert(GeometryTraits::is_point<T>{} || GeometryTraits::is_box<T>{},
+  //               "AccessTraits<Primitives,PrimitivesTag>::get() return type "
+  //               "must decay to a point or a box type");
 }

 } // namespace Details
diff --git a/src/details/ArborX_DetailsTreeConstruction.hpp b/src/details/ArborX_DetailsTreeConstruction.hpp
index 826f384d..24189f58 100644
--- a/src/details/ArborX_DetailsTreeConstruction.hpp
+++ b/src/details/ArborX_DetailsTreeConstruction.hpp
@@ -40,7 +40,7 @@ inline void calculateBoundingBoxOfTheScene(ExecutionSpace const &space,
       "ArborX::TreeConstruction::calculate_bounding_box_of_the_scene",
       Kokkos::RangePolicy<ExecutionSpace>(space, 0, n),
       KOKKOS_LAMBDA(int i, Box &update) {
-        update += Access::get(primitives, i);
+        update += (ArborX::Box)Access::get(primitives, i);
       },
       Kokkos::Sum<Box>{scene_bounding_box});
 }
diff --git a/src/details/ArborX_SpaceFillingCurves.hpp b/src/details/ArborX_SpaceFillingCurves.hpp
index 30e3c393..f8e06dfd 100644
--- a/src/details/ArborX_SpaceFillingCurves.hpp
+++ b/src/details/ArborX_SpaceFillingCurves.hpp
@@ -41,7 +41,8 @@ struct Morton32
   KOKKOS_FUNCTION auto operator()(Box const &scene_bounding_box,
                                   Geometry const &geometry) const
   {
-    auto p = Details::returnCentroid(geometry);
+    using Details::returnCentroid;
+    auto p = returnCentroid(geometry);
     Details::translateAndScale(p, p, scene_bounding_box);
     return Details::morton32(p);
   }
@@ -63,7 +64,8 @@ struct Morton64
   KOKKOS_FUNCTION auto operator()(Box const &scene_bounding_box,
                                   Geometry const &geometry) const
   {
-    auto p = Details::returnCentroid(geometry);
+    using Details::returnCentroid;
+    auto p = returnCentroid(geometry);
     Details::translateAndScale(p, p, scene_bounding_box);
     return Details::morton64(p);
   }

in the current HEAD of AborX, I was able to make it work.
We need to think a bit more carefully about the changes in ArborX.  I see that Andrey is already looking into them since he already opened #868.
Note that BasicBoundingVolumeHierarchy is still considered as an implementation detail so you can't really rely on it.  That said we are willing to try to come up to a more sustainable solution that you can use.

@isteinbrecher Thank you for a very nicely written question and even including an example!
Out of curiosity, are you using 2D or 3D data? I know that we only provide 3D k-DOPs at the moment, but I was wondering the dimension of your actual data.

Here is another approach based callbacks that does not rely on future changes in ArborX
@@ -35,6 +35,29 @@ struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PredicatesTag>
   }
 };

+template <class Primitives, class Predicates>
+struct Filter
+{
+  Primitives primitives_;
+  Predicates predicates_;
+  Filter(Primitives primitives, Predicates predicates)
+      : primitives_(primitives)
+      , predicates_(predicates)
+  {}
+  template <class Predicate, class OutputFunctor>
+  KOKKOS_FUNCTION void operator()(Predicate predicate, int primitive_index,
+                                  OutputFunctor const &out) const
+  {
+    int const predicate_index = getData(predicate);
+    auto const &predicate_geometry = predicates_[predicate_index];
+    auto const &primitive_geometry = primitives_[primitive_index];
+    if (ArborX::intersects(predicate_geometry)(primitive_geometry))
+    {
+      out(primitive_index);
+    }
+  }
+};
+
 template <typename T>
 void print_pairs(const T &indices, const T &offset)
 {
@@ -83,7 +118,7 @@ int main(int argc, char *argv[])
   ArborX::BoundingVolumeHierarchy<MemorySpace> bvh{space, volumes_1};
   Kokkos::View<int *, ExecutionSpace> indices("indices", 0);
   Kokkos::View<int *, ExecutionSpace> offset("offset", 0);
-  bvh.query(space, volumes_2, indices, offset);
+  bvh.query(space, volumes_2, Filter{volumes_1, volumes_2}, indices, offset);

   // Print the results from the query
   std::cout << "bvh.query (BOX vs kDOP) yields the following intersections:";

with the understanding that you should be using Kokkos::view instead of std::vector if you want portability.

Thanks @dalg24 and @aprokop for the quick and informative response!
@dalg24 your proposed solution with callbacks is exactly what we are looking for at the moment. Also this example really helps to understand the possibilities callbacks provide. Does this also work for a distributed tree search? Our distributed search is in an experimental stage, so I could not try your solution yet.
@aprokop thanks for opening a merge request so quickly, once the new feature is working we will happily update to a new ArborX version.
Regarding your question: At the moment our data is mostly 3D, so we are very happy with the current state of the kDOP implementation. I only used a 2D example for this issue to keep the example (and visualization) relatively simple (and it seems that this example works with "plane" 3D data). In the rare cases where we actually have 2D objects, we simply add two points (0,1) in the third spatial direction to ensure that we get "real" 3D kDOPs, so there won't be any numerical issues in the search algorithm. This is definitely not the best case for performance, we could also use a kDOP with different directions there, but at the moment, this is a very good compromise for our use case.

To be complete, here is our current solution to this issue, mostly based upon the nice suggestion by @dalg24 in https://github.com/arborx/ArborX/issues/867#issuecomment-1548256259. The only functional difference is that in the callback we directly use the predicate and don't look it up in the predicates vector (this lookup did not work in the distributed case).
@maxfirmbach
#include <ArborX_KDOP.hpp>
#include <ArborX_LinearBVH.hpp>

using ExecutionSpace = Kokkos::DefaultExecutionSpace;
using MemorySpace = ExecutionSpace::memory_space;
using kdop = ArborX::Experimental::KDOP<26>;

template <>
struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PrimitivesTag>
{
  using memory_space = MemorySpace;
  using size_type = typename MemorySpace::size_type;
  static KOKKOS_FUNCTION size_type size(std::vector<kdop> const &volumes)
  {
    return volumes.size();
  }
  static KOKKOS_FUNCTION auto get(std::vector<kdop> const &volumes, size_type i)
  {
    return ArborX::Box{volumes[i]};
  }
};

template <>
struct ArborX::AccessTraits<std::vector<kdop>, ArborX::PredicatesTag>
{
  using memory_space = MemorySpace;
  using size_type = typename MemorySpace::size_type;
  static KOKKOS_FUNCTION size_type size(std::vector<kdop> const &volumes)
  {
    return volumes.size();
  }
  static KOKKOS_FUNCTION auto get(std::vector<kdop> const &volumes, size_type i)
  {
    return intersects(volumes[i]);
  }
};

template <typename T>
void print_pairs(const T &indices, const T &offset)
{

  for (size_t i_offset = 0; i_offset < offset.size() - 1; i_offset++)
  {
    for (int j = offset[i_offset]; j < offset[i_offset + 1]; j++)
    {
      std::cout << "\n  predicate " << i_offset << " intersects with primitive "
                << indices[j];
    }
  }
}

int main(int argc, char *argv[])
{
  Kokkos::ScopeGuard guard(argc, argv);

  // Create two vectors with bounding volumes
  std::vector<kdop> primitives;
  std::vector<kdop> predicates;
  {
    kdop tmp;
    tmp += ArborX::Point{0.0, 0.0, 0.0};
    tmp += ArborX::Point{1.0, 1.0, 0.0};
    tmp += ArborX::Point{0.5, 0.0, 0.0};
    primitives.push_back(tmp);
  }
  {
    kdop tmp;
    tmp += ArborX::Point{1.0, -1.0, 0.0};
    tmp += ArborX::Point{1.0, 0.25, 0.0};
    tmp += ArborX::Point{0.75, 0.0, 0.0};
    primitives.push_back(tmp);
  }
  {
    kdop tmp;
    tmp += ArborX::Point{0.5, 0.25, 0.0};
    tmp += ArborX::Point{0.8, 0.25, 0.0};
    tmp += ArborX::Point{0.75, 0.125, 0.0};
    predicates.push_back(tmp);
  }

  // Lambda callback to ensure the actual kDOP-vs-kDOP geometry is compared
  auto IntersectActualVolumeType =
      KOKKOS_LAMBDA(auto const predicate, int const primitive_index,
                    auto const &out)
          ->void
  {
    auto const &primitive_geometry = primitives[primitive_index];

    if (predicate(primitive_geometry))
      out(primitive_index);
  };

  // Construct BVH and perform intersection search
  ExecutionSpace space{};
  ArborX::BoundingVolumeHierarchy<MemorySpace> bvh{space, primitives};
  Kokkos::View<int *, ExecutionSpace> indices("indices", 0);
  Kokkos::View<int *, ExecutionSpace> offset("offset", 0);
  bvh.query(space, predicates, IntersectActualVolumeType, indices, offset);

  // Print the results from the query
  std::cout << "bvh.query (kDOP vs kDOP) yields the following intersections:";
  print_pairs(indices, offset);

  std::cout << "\n";

  return 0;
}

For my part, this issue can be closed, but I will leave that up to the ArborX developers.

I closed #868 as we are refactoring the internals of ArborX. The new API should be backwards compatible, but would also provide a natural way to do this case if desired.

This is now properly supported by the Experimental API. However, @dalg24's version provided above may still be faster depending on the problem.

@aprokop Thanks for the info! Out of curiosity, can this now be done with the template parameter BoundingVolume for BoundingVolumeHierarchy?

Out of curiosity, can this now be done with the template parameter BoundingVolume for BoundingVolumeHierarchy?

Kinda.
You can write something like this:
ExecutionSpace space;
using Volume = ArborX::KDOP<18>;
Kokkos::View<Volume *, MemorySpace> kdops = <blah>;
ArborX::BVH<MemorySpace, ArborX::PairValueIndex<Volume>>
  bvh(space, ArborX::Experimental::attach_indices(kdops));

That would still use AABB box for internal bounding volumes. If you want bounding volumes for all nodes to use KDOP, change last line to
ArborX::BVH<MemorySpace, ArborX::PairValueIndex<Volume>, ArborX::DefaultIndexableGetter, Volume>
  bvh(space, ArborX::Experimental::attach_indices(kdops));

If you don't need indices, and just want to say execute something in the callback just based on geometries, you could do
ExecutionSpace space;
using Volume = ArborX::KDOP<18>;
Kokkos::View<Volume *, MemorySpace> kdops = <blah>;
ArborX::BVH<MemorySpace, Volume> bvh(space, kdops);

We are sorely lacking documentation right now. This will be rectified in the next couple months once we stabilize APIv2 enough and are fully happy with all the naming and interfaces.


bug: Only last color definition in theme override is applied

What version of daisyUI are you using?
v4.12.10
Which browsers are you seeing the problem on?
All browsers
Reproduction URL
https://play.tailwindcss.com/HPwAYbvcas?file=config
Describe your issue
Overriding one of the standard colors works fine by redefining the css var in tailwind.config.js
Overriding multiple colors introduces quirks with seemingly only the final var being honoured.
However in making the Tailwind Play file I noticed that it was possible to successfully override both the primary and secondary color but never all three of "primary", "secondary" and "accent".
I initially mocked this up in a Stackblitz at https://stackblitz.com/edit/daisyui-sveltekit-3ys4xm?file=tailwind.config.cjs where I've updated daisyUI to the latest version. Toggling the order of lines 17 & 18 in tailwind.config.cjs exposes the problem as I initially saw it.
Both of these showcase an issue I'm seeing in a larger SvelteKit project where I'm attempting to style button text color.

More than happy to put some effort in to resolve this but honestly I'd need pointing in the right direction.

In config, it must be accent-content because we process the built-in colors to generate the missing ones with a valid contrast.
light: {
  ...require('daisyui/src/theming/themes')['light'],
-  '--pc': '99% 0 0',
-  '--ac': '100% 0 0',
+  'primary-content': '99% 0 0',
+  'accent-content': '100% 0 0',
},

Docs: https://daisyui.com/docs/themes/#-5
I know it can be confusing where to use color name like --ac and where to use accent-content. It will be only CSS variable in daisyUI 5 to avoid confusion.

Many thanks for providing the answer 🙇


Backspace behaviour on characters created using combining diacritical marks differs to that of a normal browser textarea.

For example, this character é is made from the characters e + \u0301.
In a standard textarea, the backspace will delete the accent. In CodeMirror, the whole character is deleted.
Another example, this character in Tamil: க்
Backspace should create the character க but instead the whole character is deleted.
This causes issues when working with software keyboards, like Azhagi.
The expected behavior is present in Chrome and Firefox, both OSX and on Windows.
I guess this is probably related to #2115

Good point. Attached patch implements this.


Added Typescript definition to tilebelt

Whenever this PR gets approved these install instructions will work.
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/11495

The Tilebelt definition has been merged to DefinitelyTyped, it might take a week or so for @types/tilebelt to become available in npm. Up to you if you want to merge this README now or later.

tilebelt has now been added to DefinitelyTyped, it will become available on npm as @types/tilebelt.
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/tilebelt


Implement Decision Tree in JavaScript

Implement Decision Tree from scratch in

JavaScript

Create new issue according to the template if you would like to implement a different algorithm (or) in a different language.

@iam-abbas Would you mind if I take this issue?


Add information to screenshots page

Description
This PR adds an informational disclaimer to the screenshots page, stating that it shows the screenshots prior to function reduction on May 1.
What was changed

https://github.com/corona-warn-app/cwa-website/blob/master/src/data/screenshots.json
https://github.com/corona-warn-app/cwa-website/blob/master/src/data/screenshots_de.json

Screenshots

English
German

Fixes https://github.com/corona-warn-app/cwa-website/issues/3481

@Ein-Tim

The failing check is not my fault, right?

No. It's not a problem with your PR. See https://github.com/corona-warn-app/cwa-website/issues/3479

@Ein-Tim @MikeMcC399 Thanks for the PR!


As a client I directly want to get feedback after changing the package type

Describe the bug
Earlier the 'orders' page refreshed after changing the the package type. Now this does not work
Steps to reproduce this behaviour

Go to 'Orders'
Click on 'package type' of an order
Change package type
Save the settings

Expected behaviour

The page should refresh
or
The package type should change after saving

The modification has been approved through the following PR: 674
This change will be included in the next release.


Invalid module name in augmentation. Module '@sparkfabrik/react-native-idfa-aaid' resolves to an untyped module

I installed the module @sparkfabrik/react-native-idfa-aaid as "npm install @sparkfabrik/react-native-idfa-aaid"
It works fine with .js files but when i try to use this module on .tsx file, it gives me an error.
Error on VSCode : Invalid module name in augmentation. Module '@sparkfabrik/react-native-idfa-aaid' resolves to an untyped module at<EMAIL_ADDRESS>which cannot be augmented.
Is there any  tTypeScript definitions for the library ?

Hi @iremcalmazz, I fixed the types path and published a new release 1.0.1, can you please try it?

Hm mine started randomly breaking on 1.0.1 and 1.1.1 in VSCode and tsc, strange, I can see package.json has a typings entry. All other NPM modules are fine.
Could not find a declaration file for module '@sparkfabrik/react-native-idfa-aaid'. <EMAIL_ADDRESS>implicitly has an 'any' type.
  Try `npm i --save-dev @types/sparkfabrik__react-native-idfa-aaid` if it exists or add a new declaration (.d.ts) file containing `declare module '@sparkfabrik/react-native-idfa-aaid';`ts(7016)


Automate bumping of pangeo images for m2lines / leap hubs

Context
We want to avoid manually needing PRs like https://github.com/2i2c-org/infrastructure/pull/1318. We also do that for utoronto, and basically any other hub with a separate image repo.
Proposal

[x] Setup https://github.com/sgibson91/bump-jhub-image-action to open automated PRs to bump pangeo images automatically

https://github.com/2i2c-org/infrastructure/pull/1339

[ ] Document this as something to do whenever we use pangeo hub images

Updates and actions
No response

@yuvipanda I have opened https://github.com/2i2c-org/infrastructure/pull/1339 to address the first action item

I'm going to turn off the schedule trigger for the action for now.

Good idea, this is the related PR: https://github.com/2i2c-org/infrastructure/pull/1350
Btw, I still see new PRs being opened, what am I missing here?

There's a workflow_dispatch trigger that I'm using to test if my updates are working or not - sorry for the noise!
https://github.com/2i2c-org/infrastructure/blob/2cd15169959c2577bab68642444ad0a4fea95272/.github/workflows/bump-image-tags.yaml#L4

No problem, glad you are playing with it 😉

I finally got a sensible diff! https://github.com/2i2c-org/infrastructure/pull/1376 However, I think we need to be more nuanced with searching for new tags, I don't think the Pangeo community actually do want to pin to the images that have commit refs as tags for instance. So I will leave the schedule trigger off for now and work on that aspect when I come back next week.

I've got a PR that allows optionally providing a regex for the tags to bump to https://github.com/sgibson91/bump-jhub-image-action/pull/130

And this PR is bringing that update into this repo https://github.com/2i2c-org/infrastructure/pull/1405

I added some documentation here which I believe will close this issue


version differences

Another PR because Github errors when I try to push branches to this. The PR was https://github.com/aspnet/Docs/pull/7198. It thinks I am missing work from master yet it says everything local is up to date. @anurse this has those last couple of changed you request in 7198.

@scottaddie A quick UE pass?


No sound when controlling the air conditioner

Hello,
I've been using this extension for a few months now and it works great!
The only problem I would like to solve is that there is no sound when turning on, off, changing temperature and any other action.
When you control the air conditioner through the NetHome Plus app there is a sound.
I would love to know if this is solvable

Hi it's not a bug. It's on purpose.

Okay, is it possible to cancel it?

Hi it's not a bug. It's on purpose.

Okay, is it possible to cancel it?

Some people like without sound and some with.
If I have time I'll add option to config.

Thank you very much for your time, I will wait patiently for the update

Hi
I add option on config to enable / disable the beep sound.
version 1.5.4


Added Neon Number doc

Have you read the Contributing Guidelines on Pull Requests?
yes
(Write your answer here.)
Description
Added Neon Number doc
(Write your answer here.)
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[x] I've edited the README.md and link to my code.

Related Issues or Pull Requests
Fixes #59
(Write your answer here.)

@HarshCasper please review this pr. Thank you!

@HarshCasper I fixed the broken CI please check now

Tiny changes. Rest looks good to go off for a peer review.

@HarshCasper just made those changes please have a look :)

Hi @nagasrihith608
Kindly fix the merge conflict. I will merge it soon after.

@HarshCasper solved the branch conflict


[DC-616] Exclude Physical Measurements from height and weight cleaning rule

Use src_id from measurement_ext to exclude RDR data from cleaning rule

Thank you @amcgrenera-vumc!

Circle looks like it is failing because of rate limits. I have another pull request to resolve it. Other tests seem to pass.
That is correct. I was initially incorporating it into the query, however, @mark-velez brought up that some of the sites might use that concept by mistake and we don't want to exclude such sites. I will add this to the Jira ticket.

@nishanthpp93 thanks for the clarification!


Access to data page goes through Chinese-language only portal

Describe the bug
I am based in the USA and don't speak or read Chinese characters. The page below does not have option of English.
To Reproduce
Trying to follow the directions here:
https://github.com/ApolloAuto/apollo/blob/r2.0.0/modules/perception/README.md
Step #5 directs you to:
https://console.bce.baidu.com/apollo/task/download
Which has a choice of English or Chinese, and a login with SMS, but after I login with SMS (actually works here, no problems like map), I end up at:
https://console.bce.baidu.com/iam/#/iam/user/v2/activate~hideBar=1
and this particular page is only in Chinese.
Expected behavior
English translation or option.
Screenshots
N/A
Desktop (please complete the following information):
N/A
Smartphone (please complete the following information):
N/A
Additional context
N/A

Hi @osaman88 please refer to the documentation in the master branch: Perception data document
If you are still unable to access the data for download, please let me know. Thanks!

Thanks Natasha. So here is the detailed version of the Q then. The previous document was a very specific pointer to data that had all the data necessary to run perception node as per description. The latest pointer is the collection of all the various bags, some are in MBs, some are in GBs. It is not immediately clear which we should download to get the ROS bag (inputs) with all topics needed by perception node. Do you know which one we need?
Thanks!

@osaman88
The previous link pointed you to a login page that would ultimately redirect you to the link added to the new document version. The only difference is that previously we required everyone to have an account to use the data, however, it is now available without requiring you to login.

Please select English for english description