XAMARIN Android - Azure Mobile Service Push Notification Problem

Hi,
I’m  developing an app that receive push notification from Azure Mobile Service in Xamarin-Android.
When I start the application I register my device (Nexus 4) to my Azure Notification Hub.
Push Notification still received only when app is running or is in background, but not when the app is closed or I delete it from task manager (N.B I don’t force to quit it from settings).
Now I have downloaded the example from Github at [1] and I customize that with my Google Project Sender ID, my Notification Hub ID and my Azure Mobile Service Connection String, but neither this working when the app is totally closed.
Here [2] the zip containing the test solution.
Hope you can help me.
[1] https://github.com/SaschaDittmann/Xamarin.NotificationHub/tree/master/samples
[2] http://1drv.ms/1xPlgL5
Best Regards.

Going to have a look...

Hi,
I have the same problem on my side. The notifications does'nt works while the application is closed. Did you found any solution about that ? Thanks

Hi,
I solved the problem . To work properly Android applications must include a special class called "BroadcastReceiver" and an "IntentService" class. Notifications are working when the app is totally closed only if this IntentService class is specified on the BroadcastReceiver class. Below the correct implementation:
[BroadcastReceiver(Permission = Constants.PERMISSION_GCM_INTENTS)]
[IntentFilter(new[] { PushNotificationService.PushNotificationReceived}, Priority = (int)IntentFilterPriority.LowPriority)]
[IntentFilter(new[] { Constants.INTENT_FROM_GCM_MESSAGE }, Categories = new[] { "packagename" })]
[IntentFilter(new[] { Constants.INTENT_FROM_GCM_REGISTRATION_CALLBACK }, Categories = new[] { "packagename" })]
[IntentFilter(new[] { Constants.INTENT_FROM_GCM_LIBRARY_RETRY }, Categories = new[] { "packagename" })]
public class PushGcmBroadcastReceiver : GcmBroadcastReceiverBase
{
#region Fields
//The SENDER_ID is your Google API Console App Project Number
public static string[] SenderIds = { "SENDER_ID" };
public static string[] Tags = {"android"};
const string ReceiveAction = "com.google.android.c2dm.intent.RECEIVE";
const string RegistrationAction = "com.google.android.c2dm.intent.REGISTRATION";
public static string RegistrationId { get; set; }
    #endregion

    #region Logic
    public override void OnReceive(Context context, Intent intent)
    {
        var keys = intent.Extras;

        if (intent.Action == ReceiveAction)
        {
            //Get values of toast parameters
            var title = keys.ContainsKey("title") ? keys.GetString("title") : string.Empty;
            var message = keys.ContainsKey("message") ? keys.GetString("message") : string.Empty;
            var param = keys.ContainsKey("id") ? keys.GetString("id") : string.Empty;

            CreateNotification(context, title, message, param);
        }
        else if (intent.Action == RegistrationAction)
        {
            var registrationId = keys.ContainsKey("registration_id") ? keys.GetString("registration_id") : string.Empty;

            if(!string.IsNullOrEmpty(registrationId))
                RegisterHub(registrationId);
            else
                UnRegisterHub();
        }
    }

    private void CreateNotification(Context context, string title, string message, string param)
    {
        var notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService);

        //Create an intent to show ui
        var uiIntent = new Intent(context, typeof(MainView));
        uiIntent.PutExtra("ID", param);

        const int pendingIntentId = 0;
        var pendingIntent = PendingIntent.GetActivity(context, pendingIntentId, uiIntent, PendingIntentFlags.OneShot);

        // Instantiate the notification builder and enable sound:
        var builder = new Notification.Builder(context)
            .SetAutoCancel(true)
            .SetContentIntent(pendingIntent)
            .SetContentTitle(title)
            .SetContentText(message)
            .SetDefaults(NotificationDefaults.Sound)
            .SetSmallIcon(Resource.Drawable.ic_launcher);

        var notification = builder.Build();

        // Publish the notification:
        const int notificationId = 0;
        if (notificationManager != null)
            notificationManager.Notify(notificationId, notification);
    }
    #endregion

    #region Register/Unregister Hub
    private static void RegisterHub(string registrationId)
    {
        //Receive registration Id for sending GCM Push Notifications to
        try
        {
            var notificationHub = PushNotificationService.Hub;

            if (notificationHub == null)
                return;

            RegistrationId = registrationId;

            //notificationHub.UnregisterAllAsync(registrationId);
            notificationHub.UnregisterNativeAsync();

            notificationHub.RegisterNativeAsync(registrationId, Tags);
        }
        catch (Exception ex)
        {
            Debug.WriteLine("An exception has occurred in RegisterHub: {0} - StackTrace: {1}", ex.Message,
                ex.StackTrace);
        }

    }

    private static void UnRegisterHub()
    {
        try
        {
            var notificationHub = PushNotificationService.Hub;
            if (notificationHub != null)
                //notificationHub.UnregisterAllAsync(_registrationId);
                notificationHub.UnregisterNativeAsync();
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Exception occurred in UnRegisterHub: {0} - StackTrace: {1}", ex.Message, ex.StackTrace);
        }
    }
    #endregion
}

This is necessary because the IntentService class has the task to stay awake  the app so that it listens for a possible push notification. In the IntentService class you must provide the method for NotificationHub registration and the method which makes the app waking up (void OnHandleIntent(Intent intent)) as follow:
[Service]
public class PushNotificationService : GcmServiceBase
{
#region Fields
public static NotificationHub Hub;
private static Context _context;
#endregion
#region MobileServiceClient
// Use this constructor instead after publishing to the cloud
public static MobileServiceClient MobileService = new MobileServiceClient(Configuration.ApiBaseUri, Configuration.MobileServiceAppKey);
#endregion
    #region ctor
    public PushNotificationService()
        : base(PushGcmBroadcastReceiver.SenderIds)
    {
    }
    #endregion

    #region GcmServiceBase implementation
    public static void Initialize(Context context)
    {
        _context = context;
        Hub = new NotificationHub("NotificationHubName", "AzureConnectionString");
    }

    public static void Register(Context context)
    {
        try
        {
            GcmClient.CheckDevice(context);
            GcmClient.CheckManifest(context);

            var registrationId = GcmClient.GetRegistrationId(context);
            if (string.IsNullOrEmpty(registrationId))
            {
                // Makes this easier to call from our Activity
                GcmClient.Register(context, PushGcmBroadcastReceiver.SenderIds);
            }

            registrationId = GcmClient.GetRegistrationId(context);
            if (!string.IsNullOrEmpty(registrationId))
                RegisterHub(registrationId);
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Exception occurred in Register: {0} - StackTrace: {1}", ex.Message, ex.StackTrace);
        }
    }

    protected override void OnRegistered(Context context, string registrationId)
    {
        try
        {
           RegisterHub(registrationId);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception occurred in OnRegistered: {0} - StackTrace: {1}", ex.Message, ex.StackTrace);
        }
    }

    private static void RegisterHub(string registrationId)
    {
        //Receive registration Id for sending GCM Push Notifications to
        if (Hub == null)
            return;

        Hub.UnregisterAllAsync(registrationId);

        Hub.RegisterNativeAsync(registrationId);
    }

    protected override void OnUnRegistered(Context context, string registrationId)
    {
        try
        {
            if (Hub != null)
                Hub.UnregisterAllAsync(registrationId);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception occurred in OnUnRegistered: {0} - StackTrace: {1}", ex.Message, ex.StackTrace);
        }
    }

    protected override void OnMessage(Context context, Intent intent)
    {
        Debug.WriteLine("--------- Received Notification ---------");

        //Push Notification arrived - print out the keys/values
        if (intent == null || intent.Extras == null)
            return;

        var keys = intent.Extras;

        //Get values of toast parameters
        var title = keys.ContainsKey("title") ? keys.GetString("title") : string.Empty;
        var message = keys.ContainsKey("message") ? keys.GetString("message") : string.Empty;
        var param = keys.ContainsKey("id") ? keys.GetString("id") : string.Empty;

        //Show push notification
        CreateNotification(title, message, param);
    }

    protected override bool OnRecoverableError(Context context, string errorId)
    {
        //Some recoverable error happened
        return base.OnRecoverableError(context, errorId);
    }

    protected override void OnError(Context context, string errorId)
    {
        //Some more serious error happened
    }
    #endregion

    public void CreateNotification(string title, string desc, string param)
    {
        //Create notification
        var notificationManager = GetSystemService(NotificationService) as NotificationManager;

        //Create an intent to show ui
        var uiIntent = new Intent(this, typeof(MainView));
        uiIntent.PutExtra("newsID", param);

        const int pendingIntentId = 0;
        var pendingIntent = PendingIntent.GetActivity(this, pendingIntentId, uiIntent, PendingIntentFlags.OneShot);

        // Instantiate the notification builder and enable sound:
        var builder = new Notification.Builder(this)
            .SetAutoCancel(true)
            .SetContentIntent(pendingIntent)
            .SetContentTitle(title)
            .SetContentText(desc)
            .SetDefaults(NotificationDefaults.Sound)
            .SetSmallIcon(Resource.Drawable.ic_launcher);

        var notification = builder.Build();

        // Publish the notification:
        const int notificationId = 0;
        if (notificationManager != null)
            notificationManager.Notify(notificationId, notification);
    }

//This method is responsible to wake up application when is totally closed and to handle the received notification calling the broadcast receiver
protected override void OnHandleIntent(Intent intent)
{
//base.OnHandleIntent(intent);
        var pushIntent = new Intent(PushNotificationReceived);

        SendOrderedBroadcast(pushIntent, null);
    }

Thanks a lot, ill give it a try and ill get back to you if i have some issues.

jx37, i tried to make this setup works but i still have some problems. I'm not sure to see what is "PushNotificationReceived" used in OnHandleIntent and IntentFilter. Where and how is it defined ?
Thanks a lot for your help

Hi dbeaupre ,
"PushNotificationReceived" is the Intent action name which is called when a push notification is received. If you take a look the same name is specified in action declaration before BroadcastReceiver class.
[IntentFilter(new[] { PushNotificationService.PushNotificationReceived}, Priority = (int)IntentFilterPriority.LowPriority)]
Anyway "PushNotificationReceived" is a costant string and you can define at the begin of the PushNotificationService class, like this:
public const string PushNotificationReceived = "PushNotificationReceived";
Hope this help.

Hi, tanks a lot for your help. I can receive notification but not sure if its working all as expected. Maybe i'm missing something so can you explain me why we need multiple definition of functions in BroadcastReceiver and GcmServiceBase, fonctions like createnotification, register and also two methods that are responsibles to receive the message ? Maybe i'm wrong but it seems that its not all the functions in GcmServiceBase that are called at some moment ? Im calling initialize and GcmClient.Register in my main activity, is this ok ? Last thing, is this normal that when i force the application to quit from settings i can no longer receive the notitification ? If yes, do you know if there is a way to continue receive notification after shutting it down ? Thanks a lot for your help, its really appreciated.

I also tried to comment out the OnHandleIntent code because i tought that it was never called and the behaviors are the same, maybe i'm doing something wrong.... Thanks.

Hi jx37, I'm involved in the same problem. I've tried to start from your initial code and apply your solution but I get a lot of errors. For instance, I cannot inherit from GcmBroadcastReceiverBase because this class just doesn't exist (instead, exists the generic one GcmBroadcastReceiverBase).
Anyway, could you please share all your working code (or, better, un updated solution to download), just for reference?
Thanks

I've solved the problem. You can find my solution here: https://github.com/moonClimber/AzureHubNotification_XamarinAndroid


Pybind11 binding for rs2::frame fails with error as incompatible functional argument

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
{ D400 }

Firmware Version
(Open RealSense Viewer --> <IP_ADDRESS>)

Operating System & Version
Linux (Ubuntu 20)

Kernel Version (Linux Only)
5.15.0-47-generic

Platform
PC/Raspberry Pi/ NVIDIA Jetson / etc..

SDK Version
{ legacy / 2.. }

Language
{C/python }

Segment
{others }

Issue Description
I am trying to add a new python module to convert the depth frame to RGB frame using my C++ code. I am trying to pybind11 here. I am facing problems here. I describe it in details below.
I am trying to make a python binding for my C++ code where I convert the Depth Frame to RGB Frame. I am doing this in C++ as I need some specific functions in C++ which I don't get in pyrealsense api.
The C++ code function with argument is below defined in mymath.hpp:
rs2::frame DtoRGBframe(rs2::frame in_depth) {
std::cout<<"Reached DtoRGBframe function"<<std::endl;
// declare filteres
rs2::threshold_filter thr_filter;   // Threshold - removes values outside recommended range
rs2::colorizer color_filter;    // Colorize - convert from depth to RGB color
rs2::disparity_transform depth_to_disparity(true);  // Converting depth to disparity
rs2::disparity_transform disparity_to_depth(false);
float min_depth = 0.6f;
float max_depth = 3.5f;
//filter settings
thr_filter.set_option(RS2_OPTION_MIN_DISTANCE, min_depth);
thr_filter.set_option(RS2_OPTION_MAX_DISTANCE, max_depth);
color_filter.set_option(RS2_OPTION_HISTOGRAM_EQUALIZATION_ENABLED, 0);
color_filter.set_option(RS2_OPTION_COLOR_SCHEME, 9.0f);
color_filter.set_option(RS2_OPTION_MAX_DISTANCE, max_depth);
color_filter.set_option(RS2_OPTION_MIN_DISTANCE, min_depth);
// apply post processing filters
in_depth = thr_filter.process((in_depth));
in_depth = depth_to_disparity.process((in_depth));
in_depth = disparity_to_depth.process((in_depth));
in_depth = color_filter.process((in_depth));
return in_depth;
}
The binder.cpp for the above code is here:
#include <pybind11/pybind11.h>
#include <pybind11/cast.h>
#include "mymath.hpp"
namespace py = pybind11;
PYBIND11_MODULE(cmake_example, m) {
m.def("DtoRGBframe", &DtoRGBframe, R"pbdoc(
depth frame to RGB frame
)pbdoc");
I am able to successfully get the wheeler file for this package module and I am able to install the package with the module name as cmake_example.
below is the python test code snippet showing how I use my function:
frames = pipeline.wait_for_frames()
depth_frame = frames.get_depth_frame()
depth = depth_frame.as_depth_frame()
print(type(depth))
color_frame = frames.get_color_frame()
if not depth_frame or not color_frame:
continue
    # Convert images to numpy arrays
    rgb_depth_frame = cme.DtoRGBframe(depth.as_frame())
    depth_image = np.asanyarray(depth.get_data())
    color_image = np.asanyarray(color_frame.get_data())

When I run it I get the below error and the program fails
Traceback (most recent call last):
File "/home/snuc/home/snuc/Code_Repo/RemoteCode/cmake_example/build/../tests/test_basic.py", line 56, in
rgb_depth_frame = cme.DtoRGBframe(depth.as_frame())
TypeError: DtoRGBframe(): incompatible function arguments. The following argument types are supported:
1. (arg0: rs2::frame) -> rs2::frame
Invoked with: <pyrealsense2.frame Z16 #10 @1667339936076.809570>
Can ANybody please help me here. What I feel I am not able to cast the python realsense object to the C++ object.
I tried to define the rs2 frame using pyclass_ .
below code for that:
py::class_rs2::frame(m, "rs2::frame")
.def(py::init<>());
I am knew to Pybind11. Thought it will be am easy work but it is so complex.

Hi @saroj31  The individual SDK functions featured in the above script (such as post-processing filters and colorizer) should be directly accessible through pyrealsense2 instead of having to write linkages between C++ and pyrealsense2.
Colorizer options and histogram equalization
https://github.com/IntelRealSense/librealsense/issues/7767#issuecomment-726704671
https://github.com/IntelRealSense/librealsense/issues/7089#issuecomment-672105974
POST-PROCESSING FILTERS
Threshold
https://github.com/IntelRealSense/librealsense/issues/8170#issuecomment-761930301
Disparity to Depth / Depth to Disparity
https://github.com/IntelRealSense/librealsense/issues/11015#issuecomment-1287672732

I note that in the line below, it is commented that the colorizer is converting from depth to RGB color.
rs2::colorizer color_filter; // Colorize - convert from depth to RGB color
Technically, although the colorizer is coloring the depth coordinates according to their depth values and the settings of the colorizer, the coloring is not related to the RGB stream, so it is not converting from depth to RGB.  It is instead just color-shaded depth data.
Streams in the RealSense SDK cannot be converted directly from one format to another (such as converting a depth stream into a color stream in real-time).  You can though save depth data into a numpy array and then do subsequent conversion work on it, such as writing it to a PNG image file or an .AVI video file using OpenCV cv2 instructions, like the .avi writing pyrealsense2 script at https://github.com/IntelRealSense/librealsense/issues/8528

Hi @saroj31  Do you require further assistance with this case, please?  Thanks!

Hi @MartyG-RealSense ,
Thanks for answering my query. Actually I am not trying to convert the depth image to rgb image, sorry for the misguiding comments in my code. We are actually working on getting a compressed depth image and then recover it to depth later. I used the method given by realsense i.e. https://dev.intelrealsense.com/docs/depth-image-compression-by-colorization-for-intel-realsense-depth-cameras, for my conversion and restore work. I cud achieve a good result in C++. We also needed a python version of that to use in our python applications.
My work is done in C++. I did not get the same result when I did it in Python. At least I read it as so, check the issue   here: https://github.com/IntelRealSense/librealsense/issues/9713. I could not find the equivalents of each C++ function. So we thought to do the heavy lifting work in C++ and just pass the realsense frames across the python and C++ applications. For that I explored the pybind11 bindings of C++ and python integrations, I tried to implement it on my side.
For the python integration we tried to use pybind11 to make our python bindings. We also found that realsense library is very rich in C++ code than the pyrealsense2. So we want to know the correct way or procedure to extend the python bindings of realsense such that we can both use the high performance features of C++ with our python applications. I tried to find some documentation of realsense on how the python bindings can be extended but could not find any so I asked about the problem I am facing here in the forum for help.

As pyrealsense2 is a wrapper of the C++ library, each C++ function should have a pyrealsense2 equivalent and so there is usually no need for RealSense users to create their own bindings to communicate between the two as it is already done for them.
As you have observed, depth image compression by colorization technique is more straightforward in C++ than it is in Python.  The case https://github.com/IntelRealSense/librealsense/issues/9713 that you quoted is an example of this.
The depth compression by colorization paper was a proof of concept that is not recommendable as a means of data compression.  https://github.com/IntelRealSense/librealsense/issues/8117 discusses alternative approaches to compression.

Thanks a lot for your answer and time, Martyz. I understand that the python bindings are enough. I will work on making a separate python application later.
For now we need to use python bindings for performance related boost too by using C++ application we can use multiple cameras and want to do Multithreading to have good frame rate. The above code is an attempt to fulfill that requirement. We want to use pybind11 as it is used in realsense side too. Also we want to exchange realsense frames from python to C++ code. I see it is done on your side in realsense side.
Can you help us here so that we can exchange realsense objects from Python to C++ code or vice versa. What is the necessary code needed ? The above code in my query is an attempt to do that. It wil be helpful if you can explain  what is the wrong that I am doing in that code. Also if you can send me a snippet or point to your code where you are doing it in pyrealsense side so that I can get inspired from that code.

It is also possible to use multiple cameras and multithreading directly in pyrealsense2.
Mutiple cameras: https://github.com/ivomarvan/samples_and_experiments/tree/master/Multiple_realsense_cameras
Multithreading: https://github.com/IntelRealSense/librealsense/issues/10113
The official pyrealsense2 wrapper uses pybind11 as its backend in its pybackend.cpp file.
https://github.com/IntelRealSense/librealsense/blob/master/wrappers/python/pybackend.cpp
As the RealSense SDK is open-source, you could conceivably use the source code of the current pyrealsense2 wrapper as a foundation to create your own custom version of pyrealsense2 that could then be built from the modified source code.  The pyrealsense2 wrapper's files, including pybackend.cpp, can be found at the link below.
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/python

I do not have any guidance to offer about how you might write your own pybind11 binding for librealsense if you prefer not to use pyrealsense2 though, unfortunately.

Hi @saroj31  Do you require further assistance with this case, please?  Thanks!

No. Nothing else. I will come back here later if I face any difficulty.

Thanks very much for the update.  As you do not have a problem for now, I will close the case.  It can be re-opened at a future date  if you have further questions or you can create a new issue.  Thanks again!


Brew Upgrade Shouldn't Berate Homebrew Users

Verification

[X] This issue's title and/or description do not reference a single formula e.g. brew install wget. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.

Provide a detailed description of the proposed feature
Instead of berating Homebrew users, perhaps publish a blog article and be somewhat more constructive in your communication.

What is the motivation for the feature?
To not be berated by Homebrew for using a slightly older MacBook from 2014.
How will the feature be relevant to at least 90% of Homebrew users?
Most Homebrew users do not want to feel berated, unless they're into saddism.
What alternatives to the feature have been considered?
Ditch berating Homebrew users and instead offer up a blog article discussing how best to share feature requests or to report bugs.

@gruberchris No-one is berating you here. We are fairly loudly (I'll admit that) pointing out that your macOS version is no longer support by Apple or Homebrew and that we don't want you to file issues (including this one!) complaining about that because it's a known design choice for us to not be able to support things that Apple can't.
I know it feels like overkill to you but: you're not running a project with millions of users with tens of volunteers scattered throughout the world. Everything mentioned there is something that we have had many problems with over a long period.
TL;DR: if we had the resources, time, money and support from Apple to be able to support every version of macOS forever: we would but we don't so we don't. Sorry!


Merge upstream/main into Feature Branch

This will fix JAX problems, and using an updated JAX version seems to be ~7% faster.

@danielabdi-noaa this will update the graphcast feature branch that we use in our repo. It fixes the JAX issues that we were running into, and seems a bit faster. If you agree I'll go ahead and merge, then I'll open a PR on our private repo that updates the submodules there.

I'll go ahead and "regular" merge this instead of squash merge so we get a clear timeline for when things work.

@timothyas Looks good to me. I am curious about the issue that is preventing us from using the "main" branch?

Thanks @danielabdi-noaa. We could use the main branch, but I think it is safer to let the main branch track upstream/main directly, and then have a separate feature branch that has our own features on it.


install any extension appearred error

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

VS Code Version:
OS Version:

Steps to Reproduce:

install any extension
i had download the TabNine.tabnine-vscode-3.8.4.vsix file，but dont know how to upload here
TabNine.tabnine-vscode-3.8.4.zip

Can you please let us know what error are you seeing? Please share the logs from here - F1 > Open View... > Shared.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Pressing ALT + SPACE key does not show shortcut menu.

When I press Alt + Space key with typical Windows application,
it displays active window's system menu.
Please search "ALT+SPACE" in below page.
https://msdn.microsoft.com/en-us/library/ms971323.aspx
I confirmed that putting another
				def_window_proc = true;

before the break of case WM_SYSCHAR: in nana::detail::Bedrock_WIN32_WindowProc function can solve the issue.

Thank you for resolving this issue.


[0.8.x] BZ1310893: BxMS6.2.0 Full Text search returns only 10 results even if it hits more than 10

See https://bugzilla.redhat.com/show_bug.cgi?id=1310893
Corollary of https://github.com/uberfire/uberfire/pull/309 for 0.8.x.
(cherry picked from commit 88e5867857b527b7be870310eabde422ca17231c)

0.8.x: a70680cec2bf231441007675166cd126a1906fbf


feat: sync Data.Vector.Basic

<EMAIL_ADDRESS>
This has two changes:

addition of Vector.replicate: In Mathlib4 this definition is in Data/Vector.lean: docs4#Vector.replicate
Rename nth_repeat to nth_replicate: This has the name get_replicate in mathlib4, see docs4#Vector.get_replicate

I don't know the background behind this diverge, but it seems that this diff might be marked as synced.

bors merge

bors merge


Feature/autoindex extension

This PR provides auto indexing extensions for

Catalog (PartId)
Minting (Id)
MultiAsset (AssetId)

The goal is to align closer to the rmrk-evm spec, and decouple counter logic from the underling implementation.
Each crate provides an autoindex extension that can be implemented on a contract, alongside the required AutoIndexData storage. The core implementation now expects Id's to be explicitly passed in, which will allow the user to provide their own or optionally implement the *AutoIndex traits to have Ids auto generated (auto increment by 1).
A Counter struct has been introduced in rmrk_common, which provides logic and is used by all autoindex extensions.
The MintingLazy implementation uses the minting autoindex extension by default. This update also cleans up some duplicate logic with token_id balances, and uses the PSP34 balance data instead of relying on the previous Id storage. I have also removed mint_many from the core Minting implementation as a user would have to pass in an vector of Id's - this is a user concern and not a lib one,MintingLazy still provides mint_many.
I have also added an autoindex example that shows example methods for minting and multiasset.

In general I see this PR to make the PSP effort more complex

Can you please elaborate why removing mint_many for eager minting. I find it useful to have it out of box

This was mostly to align with the rmrk-evm spec. If it's something we want to keep I can add it back in!


Discord chat problem

Hello!
I have encountered a problem with the discord integration.
Have not manage to get the rcon messages working until now. I tested using one of my channels I have in a test guild.
that worked. but changing to an other channel in an other guild will not work.
This bot is in 2 different discord guilds and has the same permissions.
Is the function limited to one guild or can I change it...
Or would it be possible to have the option to choose guild in the config?

 Тоже есть проблемы с сообщениями в дискорд


[Firestore] Update dependency to 5.x

Please update Firestore dependency to 5.x

Thanks for adding this here. This was causing an issue for my project as described in the comments here:
https://github.com/googleapis/nodejs-firestore/issues/1448#issuecomment-999166195


Browser denies any resources loading from contentScript

If you try to load any resources from contentScript, you will get a browser error
Denying load of chrome-extension://<EXTENSION_ID>/<IMAGE_PATH>. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.

When I open the link chrome-extension://<EXTENSION_ID>/<RESOURCE_PATH> I can access the resource (an image in my case).
I tried the solution suggested here but unfortunately it didn't work
Did anyone hit this issue?
If you have any suggestion, please let me know!

Found the problem:
From ContentScript, you should load the image using
 chrome.runtime.getURL(<RESOURCE_PATH_IN_BROWSER>) and not some import from js
Make sure that you can open the path that is displayed by the browser


[FEATURE] Materialized views (aka virtual indexes) on object stores

What / Why
What are you proposing?
Users store logs, event data, and other data in object stores, like S3, for analysis with batch-based analytics tooling (e.g., Spark). This pattern, often called a data lake, enables people to cost effectively and durably store data for analysis. As this relates to OpenSearch, we see people compliment their OpenSearch deployments with their data lakes for analysis. For example, some people choose to store real-time data in OpenSearch for real-time analytics and use their data lakes for longer-term historical analytics. However, we have also heard from users that they still want to be able to join both data sets for analysis. Because of this, we propose introducing the ability to create virtual indexes on data stored in object stores so that users can visualize in their data lake data alongside their OpenSearch data in OpenSearch Dashboards.
In order to accomplish this, we will introduce the ability to create virtual tables against data in object stores. From there, users will be able to create virtual indexes (aka materialized views) on the virtual tables and define the query used for generating the virtual index. OpenSearch will cache aggregated data into the virtual index and serve that data when users query against the virtual index. Users will be able to query this data as though it is regular OpenSearch data and visualize this data alongside their other OpenSearch data in OpenSearch Dashboards.
This proposal also aims to complement the existing storage vision by adding an option for querying data in object stores that is already stored in formats like Parquet without requiring reindexing the data into the Lucene format.
Which users have asked for this feature?
There have been multiple discussions in GitHub and the forums about using Object stores and features like UltraWarm to drive down costs. This proposal adds another option for querying data in object stores against formats the data might already be indexed in. Some example discussions include:

https://forum.opensearch.org/t/any-plans-to-backport-ultrawarm-for-amazon-elasticsearch-service/2075
https://forum.opensearch.org/t/whether-ultrawarm-will-be-open-source/5985
https://github.com/opensearch-project/OpenSearch/issues/740

What is the developer experience going to be? Does this have a REST API? If so, please describe the API and any impact it may have to existing APIs. In a brief summary (not a spec), highlight what new REST APIs or changes to REST APIs are planned. as well as any other API, CLI or Configuration changes that are planned as part of this feature.
This feature will have both APIs and UX in OpenSearch Dashboards for configuring, querying, and visualizing data from object stores. The high-level MVP workflow will follow:

Configuring connection to an object store and bucket which will auto create a virtual table
Creating a materialized view (aka virtual index) of the virtual table to define aggregations on the data you want cached.
The ability to create a visualization on the materialized view using any of the existing visualizations
The ability to add the visualization to an existing or new dashboard.

Are there any security considerations? What is the security model of the new APIs? Features should be integrated into the OpenSearch security suite and so if they are not, we should highlight the reasons here.
Answer: Yes. This feature will have multiple security considerations:

Credentials to object stores must be securely stored and used.
This feature should adhere to the existing security capabilities of OpenSearch (e.g., Document-level security, index security, field-level security, and more).
There will need to be permissions for users to create data sources and create virtual indexes.

Are there any breaking changes to the API? If Yes, what is the path to minimizing impact? (example, add new API and deprecate the old one)
Answer: No. This will all be additive.
Are there breaking changes to the User Experience? Will this change the existing user experience? Will this be a breaking change from a user flow or user experience perspective?
Answer: No. This will all be additive.
What will it take to execute? Are there any assumptions you may be making that could limit scope or add limitations? Are there performance, cost, or technical constraints that may impact the user experience? Does this feature depend on other feature work? What additional risks are there?
There is risk around performance and stability of querying large datasets stored in object stores. In order to be successful we will need to benchmark for performance, reliability, and recommended caching configurations.
Any remaining open questions? What are known enhancements to this feature? Any enhancements that may be out of scope but that we will want to track long term? List any other open questions that may need to be answered before proceeding with an implementation.
The biggest area of ambiguity is how this will evolve with the multi-OpenSearch data source effort in OpenSearch Dashboards. The goal is to align UXs so that these are all managed and interacted with in similar ways. It is imperative that these experiences don't diverge as it will cause friction for users who want to integrate multiple data sources into OpenSearch Dashboards.
Beyond the initial release this feature can be enhanced by:

Integrating more data formats (e.g., JSON, CSV, other JDBC sources).
Improved caching mechanisms like prefetching based on Dashboard configurations and frequently accessed aggregations.

Note there may be optimization learnings from the storage vision projects.

For JDBC, potentially executing queries on the remote systems for higher performance/scale
Integrating the connection configuration into the admin panel effort
Integrating refresh or other virtual index operations into Index Management
Automatically spilling queries to the raw data source to reduce local cache size requirements.

User stories

[P0] As an administrator, I can create a connection to a bucket within an object store via the API and OpenSearch Dashboards administration experience. This will automatically create a virtual table inside of OpenSearch.
[P0] As a developer, I can define a materialized view, including aggregations on the raw fields, and represent that as a virtual index inside of OpenSearch. This can be done both via the API and OpenSearch Dashboards.
[P0] As a developer, when I create a virtual index in OpenSearch Dashboards, I will have the option to also create an index pattern for my virtual index.
[P0] As a developer or Dashboards user, I can use the existing Visualization feature to create visualizations on virtual indexes.
[P0] As a developer or Dashboards, I can add visualizations created with virtual indexes in existing or new dashboards that include data from non-virtual indexes.
[P0] The existing security features (DLS, FLS, etc..) are compatible with virtual indexes.
[P0] DSL, SQL, and PPL can be used to query virtual indexes
[P0] As a developer I can use this feature with data lake formats such as Orc and Parquet.
[P1] As a developer I can use this feature with any JDBC supported source.
[P2] As a developer I can use this feature with JSON.
[P2] As a developer I can use this feature with CSV.
[P3] As a developer I can use this feature with other popular data lake formats (e.g., XML)
[P0] As an administrator I can tune the caching options, refresh options, and other settings on materialized views via the API and OpenSearch Dashboards.
[P0] As a dashboards user I can drill down to see the raw object store data for a given window.
[P1] As a developer I can define a data enrichment policy as part of the materialized view definition
[P1] As a dashboards user/developer I can join/build a correlation with data from a virtual index with data stored in OpenSearch
[P2] As a Dashboards user, I am given a cue to see if a visualization is using a virtual index.

feature demo at a community meeting :
https://youtu.be/AiKb2sVexrA?list=PLzgr9zSpws15dkg6979WeKkLg4T-vLNeW&t=884

Are we reinventing/duplicating Hive?

I think we should be able to mount all kinds of index formats in OpenSearch data nodes, including distributed ones, then query them. IMO this belongs in OpenSearch core.

Makes sense.

I think we can define the virtual index and materialized view as following.

Virtual Index - A index which has meta data in OpenSearch and associate with source data remotely. A virtual index is similar to a view in a database which OpenSearch user can create/delete/query as they would in a index.
Materialized View - A materialized view contains a precomputed result set, based on an SQL query over one or more base indices.

After creating virtual index, OS user operate virtual index only on warm data node using existing index API. OSD user could create index pattern from virtual index and build visualization on it. Processing queries on virtual index / warm index can be expensive, in terms of system resources and the time it takes to compute the results. User could materialize virtual index, owarm index, even hot index as materialized view.

Virtual Index - Query object store
We proposed a solution that leverages Lucene to read Parquet format data on an object store and use metadata information as a secondary index (skipping index) to filter Parquet files. Users ingest Parquet datasets to S3 and put metadata information to a virtual index. The virtual index works the same as an ordinary index, but only supports docValues-related operations. The virtual index can only be queried in a warm node. The virtual index is append-only and does not support doc update and delete operations. For implementation, we leverage existing ultrawarm caching, optimization, and prefetch technologies.
Materialized View - Auto
The Auto MV is the component responsible for creating and maintaining materialized views automatically. Internally, the Auto MV works as a streaming query which pulls data from the source, processes it, and finally writes to the sink. The source and sink of Auto MV could be any index (Hot, Warm and Virtual).
User Experience - API User

Create the virtual index in OpenSearch.

PUT myIndex
{
  "settings": {
    "index": {
      "number_of_shards": 3,
      "number_of_replicas": 1
    },
    "source": {
      "type": "virtual",
      "location": "s3://maximus.dev.us-west-2/http_log",
      "format": "parquet",
      "compression": "gz"
    }
  },
  "mappings": {
    "_meta": {
      "path": {
        "type": "keyword"
      }
    },
    "properties": {
      "date": {
        "tag": "true"
        "type": "date"
      },
      "region": {
        "tag": "true"
        "type": "keyword"
      },
      "@timestamp": {
        "type": "date"
      },
      "clientip": {
        "type": "keyword"
      },
      "request": {
        "type": "keyword"
      },
      "size": {
        "type": "integer"
      },
      "status": {
        "type": "integer"
      }
    }
  }
}

Upload data to S3 bucket.

 s3://maximus.dev.us-west-2/http_log/2022/12/01/log.1.parquet

Put meta data to virtual index.

POST myIndex/_doc/
{
  "path": "s3://maximus.dev.us-west-2/http_log/2022/12/01/log.1.parquet"
  "date": "2022-12-01",
  "region": "iad"
}

Query virtual index.

# DSL
GET myIndex/_search
{
  "query": {
    "term": {
      "region": "iad"        // only tag field could be used in filter?
    }
  },
  "agg": {
    "reqcount": {
      "terms": {
        "field": "host"
      }
    }
  }
}

# SQL
POST _plugins/_sql
{
  "query": "
     SELECT count() as reqcount
     FROM myIndex
     WHERE region = 'iad'
     GROUP BY host
  "
}

Create Auto materialized view.

CREATE MATERIALIZED VIEW **reqCnt** (
  cnt    long,
  time   timestamp,
  status string
)
AS source=myIndex | status count() as cnt by span(5mins), host
WITH (
    REFRESH=AUTO
)

Query materialized view

POST _plugins/_sql
{
  "query": "SELECT * FROM reqCnt"
}

User Experience
OSD users can create visualizations using virtual indices, just like hot/warm indices. In Phase I release, OSD users can choose to materialize the visualizations for building low-latency dashboards. In Phase 2 release, the OpenSearch query engine could leverage the query stats to create and manage materialized views automatically without user input.

Are there any hard limits to be careful about? Object stores suggest a possibility for infinite (or really large) storage at relatively insignificant cost. But what does it mean for the size and handling of cluster state? Would a cluster connected to an object store keep track of all available segments in the object store?

@sathishbaskar we agree with your concerns. Please find https://github.com/opensearch-project/sql/issues/1116 as how we plan to address your concerns. We would love your feedback.


bladebit_cuda only using single GPU (device 0)

Will a future version support multiple GPUs?  Will there be an option to specify the device in order to run multiple instances of bladebit_cuda against different GPUs?
I have two A4000 GPUs and bladebit_cuda only uses device 0, is there a special build / hidden command to utilise more than one GPU?
Simon

Looking at line 12 of CudaPlotter.h
uint32 deviceIndex            = 0;     // Which CUDA device to use when plotting//
So is it possible to have this as a parsable option on the command line, but maybe to also allow multiple devices as well as specifying a device?

You can already pass the device index as a prameter to the cudaplot command:
bladebit_cuda -f .. -c … cudaplot -d 1 …

Multiple GPU is already planned but there are a number of other tasks ahead of it

You can already pass the device index as a prameter to the cudaplot command:
bladebit_cuda -f .. -c … cudaplot -d 1 …

Hi Harold
I have already tried the -d 1 option
./bladebit/bladebit_cuda -t 1 -n 1 -f 8f6986edcaa42b3f9ab1abd27df7f2224149787414564629f39f8ceada85bf3abd7dd899296e2d0a9a138875191dd5ab -c xch1jlje9r7ndepgt3rrm4w7taayn0d6yh5654wwv4msx2226z7rx8as2puwzq cudaplot -d 1 /Plotdisks/RAID/

Bladebit Chia Plotter
Version      : 3.0.0-alpha1
Git Commit   : f269db0a7ad307514e993c335897cea7ebf46eda
Compiled With: gcc 9.4.0

[Global Plotting Config]
 Will create 1 plots.
 Thread count          : 1
 Warm start enabled    : false
 NUMA disabled         : false
 CPU affinity disabled : false
 Farmer public key     : 8f6986edcaa42b3f9ab1abd27df7f2224149787414564629f39f8ceada85bf3abd7dd899296e2d0a9a138875191dd5ab
 Pool contract address : xch1jlje9r7ndepgt3rrm4w7taayn0d6yh5654wwv4msx2226z7rx8as2puwzq
 Benchmark mode        : disabled

[Bladebit CUDA Plotter]
Selected cuda device 0 : NVIDIA RTX A4000
 CUDA Compute Capability   : 8.6
 SM count                  : 48
 Max blocks per SM         : 16
 Max threads per SM        : 1536
 Async Engine Count        : 2
 L2 cache size             : 4.00 MB
 L2 persist cache max size : 3.00 MB
 Stack Size                : 1.00 KB
 Memory:
  Total                    : 15.73 GB
  Free                     : 9.21 GB

As you can see it still uses device 0
And you can see from the following output from nvidia-smi, device 0 is being used already by bladebit_cuda

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA RTX A4000    On   | 00000000:51:00.0 Off |                  Off |
|100%   57C    P2   132W / 140W |   6516MiB / 16376MiB |     85%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA RTX A4000    On   | 00000000:8A:00.0 Off |                  Off |
|100%   26C    P8    16W / 140W |     12MiB / 16376MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3628      G   /usr/lib/xorg/Xorg                  9MiB |
|    0   N/A  N/A      3682      G   /usr/bin/gnome-shell                4MiB |
|    0   N/A  N/A      5954      C   ...ng/bladebit/bladebit_cuda     6016MiB |
|    1   N/A  N/A      3628      G   /usr/lib/xorg/Xorg                  8MiB |
+-----------------------------------------------------------------------------+

Multiple GPU is already planned but there are a number of other tasks ahead of it

Happy to do some testing on that when you are ready, JM knows me :-)

@harold-b
It seems that the -d or --device option is just ignored by the command, it is not throwing an error like if I do a -D instead of a -d, but it seems that the -d 1 or --device 1 is just simply ignored

I looked over the relevant code over the weekend, and it certainly should be using the parameter, unless I missed something (which is likely).  Could you please share a full log with the -d parameter used with something other than 0?

I looked over the relevant code over the weekend, and it certainly should be using the parameter, unless I missed something (which is likely). Could you please share a full log with the -d parameter used with something other than 0?

@harold-b When you say full log, what are you asking for?  My currently running plot process has -d 1 defined but obviously it is using GPU 0 still, so let me know what you need

@harold-b
Could it be this line in CudaPlotter.h
 uint32 deviceIndex            = 0;     // Which CUDA device to use when plotting/

@harold-b By modifying that value to 1, and re-compiling, I can now run two instances of bladebit_cuda each to a different GPU.  So it could be that the setting there is over-riding the -d or --device

@harold-b
Could it be this line in CudaPlotter.h
 uint32 deviceIndex = 0; // Which CUDA device to use when plotting/

That is just the default value. The value gets parsed from CLI here:
https://github.com/Chia-Network/bladebit/blob/cuda-compression/cuda/CudaPlotter.cu#L69
But I did find the issue. Device initialization is done before the config is assigned to the context. So I just need to swap-out a couple of lines

Fixed in 221fb883990dba6f0d12a9dbdd7de711de41f174

@FlexiMiners If you get a chance to test that commit, please let me know if it worked for you

@harold-b As soon as my current dual plotting process run completes, I will compile and run and let you know

@XCHSystems What do you mean it's not consuming twice as much RAM? We will configure our plotting machines with two GPUs but only 256G RAM, could it run two instances of plotter? Thanks!

@XCHSystems What do you mean it's not consuming twice as much RAM? We will configure our plotting machines with two GPUs but only 256G RAM, could it run two instances of plotter? Thanks!

You need 256GB of RAM per bladebit_cuda instance.  So in order to use two GPUs you need to run 2x bladebit_cuda

@XCHSystems So, if my machine is limited by a maximum of 256GB of RAM, will I only be able to use a single GPU? If bladebit_cuda is able to split the computation into two GPUs to plot faster, that will also be good for me.

@XCHSystems So, if my machine is limited by a maximum of 256GB of RAM, will I only be able to use a single GPU? If bladebit_cuda is able to split the computation into two GPUs to plot faster, that will also be good for me.

Correct, I know Harold is working on a Multi GPU bladebit_cuda which will only require a single bladebit_cuda instance, but I do not think that will be relatively soon.
We plot with multiple GPU by running multiple Instances, in one system we have 1TB RAM so we are utilising 4x GPU for plotting (4xA4000) which generates four plots every two minutes.


added app namespace && basic cli functionality

resolves #2

Coverage decreased (-1.46%) to 76.14% when pulling 2a3b6a5012b672df3820085259cdd93e41e3f307 on code-generator into 6d43e808503557f549b09f06315b1eef21b792b2 on master.


i can't build wmi_exporter

Hello,I hava a problem. I can't build wmi_exporter
promu build -v .
F:\学习代码\study\go\src\github.com\martinlindhe\wmi_exporter>promu build -v . Using config file: F:\学习代码\study\go\src\github.com\martinlindhe\wmi_exporter\.promu.yml !! binary . not found in config validation of given binary names for build command failed github.com/prometheus/promu/cmd.runBuild         F:/学习代码/study/go/src/github.com/prometheus/promu/cmd/build.go:140 github.com/prometheus/promu/cmd.glob..func1         F:/学习代码/study/go/src/github.com/prometheus/promu/cmd/build.go:39 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).execute         F:/学习代码/study/go/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:653 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).ExecuteC         F:/学习代码/study/go/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:728 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).Execute         F:/学习代码/study/go/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:687 github.com/prometheus/promu/cmd.Execute         F:/学习代码/study/go/src/github.com/prometheus/promu/cmd/promu.go:64 main.main         F:/学习代码/study/go/src/github.com/prometheus/promu/main.go:20 runtime.main         D:/Go/src/runtime/proc.go:195 runtime.goexit         D:/Go/src/runtime/asm_amd64.s:2337

You just need to create a empty file named VERSION in the project root

You just need to create a empty file named VERSION in the project root

Yes,but i can't build.
Using config file: /home/gostudy/src/github.com/martinlindhe/wmi_exporter/.promu.yml !! binary . not found in config validation of given binary names for build command failed github.com/prometheus/promu/cmd.runBuild         /home/gostudy/src/github.com/prometheus/promu/cmd/build.go:140 github.com/prometheus/promu/cmd.glob..func1         /home/gostudy/src/github.com/prometheus/promu/cmd/build.go:39 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).execute         /home/gostudy/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:653 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).ExecuteC         /home/gostudy/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:728 github.com/prometheus/promu/vendor/github.com/spf13/cobra.(*Command).Execute         /home/gostudy/src/github.com/prometheus/promu/vendor/github.com/spf13/cobra/command.go:687 github.com/prometheus/promu/cmd.Execute         /home/gostudy/src/github.com/prometheus/promu/cmd/promu.go:64 main.main         /home/gostudy/src/github.com/prometheus/promu/main.go:20 runtime.main         /usr/local/go/src/runtime/proc.go:201 runtime.goexit         /usr/local/go/src/runtime/asm_amd64.s:1333

You shouldn't have the . at the end, try just promu build (or even just go build)

:+1: As I understand it it works? Closing this as solved


++!((√[FREE SEX VIDEO]))Jaden Newman Leaked Video on Twitter Hd

++!((√[FREE SEX VIDEO]))Jaden Newman Leaked Video on Twitter Hd
Where Can I Watch Viral Hot Video Discover videos related to Where Can I Watch Viral Hot Video on TikTok. WATCH HERE! Viral Hot Full Video Instagram, Twitter, Discord.
Viral Hot video took the internet by storm and amazed viewers on various social media platforms. Viral Hot, a young and talented digital creator, recently became famous thanks to this interesting video.
Watch 🟢 ➤ ➤ ➤ 🌐 Click Here To link (Full Viral Video Link)
🔴 ➤►DOWNLOAD👉👉 (Full Viral Video Link)
Watch 🟢 ➤ ➤ ➤ 🌐 Click Here To link (Full Viral Video Link)
🔴 ➤►DOWNLOAD👉👉 (Full Viral Video Link).
Viral Hot video instagram.Viral Hot video oficial twitter Tutorial on How to Watch The Viral Hot Video related to Tutorial on How to Watch The Viral Hot Video on TikTok. See more videos about How to Watch Viral Hot VIRAL Video. Viral Hot Hot Pictures: 5 Times ‘VIRAL Video Tutorial Fame’ Girl Raised Temperatures and Sent Hearts Racing in Sexy and Sizzling Outfits
Viral Hot, rose to prominence after a controversial video featuring the model in it, was leaked online. Though she received backlash for the video, she has now put the incident in the past and rules Instagram with hot and sexy photos in sizzling outfits. View Viral Hot’s hot pictures below.
Trending!!! Viral Hot MMS VIRAL Hot heck out Sophie Rain's official Spiderman video ! Dive into the action and excitement with her latest thrilling adventure. Don't miss out on this exclusive
Viral HotFull Official Video Leaks on Sophie Rain is a creative young digital artist widely known for her amazing Spider-Man videos. Initially shared on TikTok, the video quickly
SEX video Leaked!!)** Viral Hot VIRAL Viral Hot video took the internet by storm and amazed viewers on various social media platforms. Sophie Rain, a young and talented.Viral Hot video oficial youtube camilla araujo Viral Hot video oficial youtube camilla araujo Viral Hot video oficial.
Viral Hot, rose to prominence after a controversial video featuring the model in it, was leaked online. Though she received backlash for the video, she has now put the incident in the past and rules Instagram with hot and sexy photos in sizzling outfits. View Viral Hot’s hot pictures below.
Trending!!! Viral Hot MMS VIRAL Hot heck out Sophie Rain's official Spiderman video ! Dive into the action and excitement with her latest thrilling adventure. Don't miss out on this exclusive
Viral HotFull Official Video Leaks on Sophie Rain is a creative young digital artist widely known for her amazing Spider-Man videos. Initially shared on TikTok, the video quickly
SEX video Leaked!!)** Viral Hot VIRAL Viral Hot video took the internet by storm and amazed viewers on various social media platforms. Sophie Rain, a young and talented.Viral Hot video oficial youtube camilla araujo Viral Hot video oficial youtube camilla araujo Viral Hot video oficial.
Viral Hot Video New collections of Sourav Singh Leaked Video now being a creator on Fanfix uploading adult contents. Social media star Sourav Singh Leaked Video been posting short Videoos and naughty pics on Tiktok platform for a while now.
The purported leak has stirred a maelanage of reactions, from disbelief to morbid curiosity, marking yet another chapter in the saga of celebrity scandals that have dotted the landscape of pop culture. However, this isn't the first rodeo for Sourav Singh Leaked Videowhen it comes to rumors of a sex tape. In March 2024, similar whispers emerged, only to be debunked as baseless.


Proposal: validating elements and attributes using Xpath

Currently validation on the received xml is made using simple DOM lookups like DOMDocument::getElementsByTagName.
While this technically works good enough to fool the SPID validator into thinking the xml is being validated and passing the tests, it's not really checking every aspect of the xml.
Take by example the first test for an element in a response object at Response.php#L54:
if ($xml->getElementsByTagName('Issuer')->length == 0) {
...

This is checking if an <Issuer> tag is present in the xml, but not validating if it's nested in the correct place in the xml.
So how do we correctly validate an xml?
Usually by using a XSD (XML Schema Definition) file, supported by php with the DOMDocument::schemaValidate method. Unfortunately this method outputs some cryptic validation messages that are extremely precise but hard to interpret for users.
Imho a possible compromose would be to use xpath queries to check for elements.
First, a DOMXpath object is created on the DOMDocument object:
  $xpath = new \DOMXpath($doc);
  $xpath->registerNamespace('samlp', 'urn:oasis:names:tc:SAML:2.0:protocol');
  $xpath->registerNamespace('saml', 'urn:oasis:names:tc:SAML:2.0:assertion');

Then, this new object can be used to perform queries on the document similarly to how css selectors work
  $issuer = $xpath->query('/samlp:Response/saml:Issuer')

You can check for elements, for their specific path in the DOM tree, for specific attributes, for specific values, and so on.

I have created a feature branch to work on this: https://github.com/italia/spid-php-lib/tree/feature/issue-108-xpath, in there I have created a test case to validate a static Response; run just that test with:
./vendor/bin/phpunit tests/ValidTest.php

now teak the test like this:
diff --git a/tests/ValidTest.php b/tests/ValidTest.php
index a31b16a..6def3b1 100644
--- a/tests/ValidTest.php
+++ b/tests/ValidTest.php
@@ -48,8 +48,6 @@ final class ValidTest extends PHPUnit\Framework\TestCase
     InResponseTo="_4d38c302617b5bf98951e65b4cf304711e2166df20"
     IssueInstant="2015-01-29T10:01:03Z"
     Destination="http://spid-sp.it">
-  <saml:Issuer NameQualifier="https://spidIdp.spidIdpProvider.it"
-      Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">spididp.it</saml:Issuer>
   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
     .............
   </ds:Signature>

then run it again and get:
Exception: Invalid Issuer attribute, expected spididp.it but received WrongIssuer

what is happening is that it is picking up the Issuer element inside Assertion, where I set an incorrect Issuer (side note: we should add a test on that as well !)


[T3A2][W11-A2]Fan Weiguang

Ready for review

@fanwgwg  Please acknowledge and close PR. We are now advised to follow this protocol for PR closing to ensure student read our comments.

Thanks for commenting!


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/53356

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/53320


SSRF error occurs on Specific IP

Describe the bug
A clear and concise description of what the bug is.
Recently a user reported that they are unable to display a link preview for their shared link. I investigated this and found that the library throws an error for that specific https://nillaskitchen.com/2024/01/27/steg-for-att-sjalvstandigt-balansera-ibs-eller-andra-problem-mage-tarm/. The issue occurs during the resolveDNSHost part; when the address is <IP_ADDRESS>, it throws the SSRF error. The IP is belongs to wordpress. Do you have any suggestion why it doesn't work or an idea why this occurs for that IP and a way to resolve this issue?
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.

It should generate link preview for that specific link.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

OS: macOS
Browser: Any browser
Version: -

Additional context
Add any other context about the problem here.

Interesting, there is some built-in protection against loopback requests, it's tested via REGEX:
  REGEX_LOOPBACK: new RegExp(
    "^" +
      "(?:(?:10|127)(?:\\.\\d{1,3}){3})" +
      "|" +
      "(?:(?:169\\.254|192\\.168|192\\.0)(?:\\.\\d{1,3}){2})" +
      "|" +
      "(?:172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" +
      "$",
    "i"
  ),

It seems it is matching the second capture group (192.0) which seems it is not a valid IP address? TBH I'm not a security expert, this was sent by some security company after auditing the package years ago so the regex might be wrong.

It was introduced here:
https://github.com/OP-Engineering/link-preview-js/pull/117
@aaydin-tr this was a regex you suggested, any reason 192.0 is a loopback address?

Hi, thank you for pointing that out!
At the time, I mistakenly included 192.0.x.x as a loopback address, thinking it was part of the reserved IP ranges. However, you're correct—192.0.x.x isn't a loopback address but rather part of reserved ranges for special purposes like documentation (e.g., <IP_ADDRESS>/24). I'll adjust the regex accordingly to exclude 192.0.x.x from the loopback section.
const REGEX_LOOPBACK = new RegExp(
  "^" +
    // Loopback: <IP_ADDRESS> - <IP_ADDRESS>
    "(?:127(?:\\.\\d{1,3}){3})" +
    "|" +
    // Private Class A: <IP_ADDRESS> - <IP_ADDRESS>
    "(?:10(?:\\.\\d{1,3}){3})" +
    "|" +
    // Private Class B: <IP_ADDRESS> - <IP_ADDRESS>
    "(?:172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" +
    "|" +
    // Private Class C: <IP_ADDRESS> - <IP_ADDRESS>
    "(?:192\\.168(?:\\.\\d{1,3}){2})" +
    "|" +
    // Link-local: <IP_ADDRESS> - <IP_ADDRESS>
    "(?:169\\.254(?:\\.\\d{1,3}){2})" +
    "|" +
    // Documentation: <IP_ADDRESS>/24, <IP_ADDRESS>/24, <IP_ADDRESS>/24
    "(?:192\\.0\\.2(?:\\.\\d{1,3}){1})" +
    "|" +
    "(?:198\\.51\\.100(?:\\.\\d{1,3}){1})" +
    "|" +
    "(?:203\\.0\\.113(?:\\.\\d{1,3}){1})" +
    "|" +
    // Carrier-Grade NAT (CGNAT): <IP_ADDRESS> - <IP_ADDRESS>
    "(?:100\\.(?:6[4-9]|[7-9]\\d|1[0-1]\\d)(?:\\.\\d{1,3}){2})" +
    "$",
  "i"
);

You can also check official docs https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml

Thanks a lot @aaydin-tr, will replace and create a new version


Enhance Functionality by Adding host_details Feature and Refactoring Code to Improve Maintainability

I've made two improvements to the project that could enhance functionality and maintainability:

Adding host_details: I’ve implemented a new feature that allows for the retrieval of host details for listings. This can be useful for users who want to access more comprehensive information about the listing’s host. I’ve tested this feature using the provided tests, except for the test that uses the proxy, and it’s working fully functional.

Refactoring Code to Remove Redundant Lines: While working on the feature, I also noticed that there were some repetitive code blocks in the functions, making the code harder to maintain and extend. I’ve refactored these sections to improve readability and reduce redundancy, making the code easier to maintain in the future.

You can find the first change (the host_details feature) in the main branch of my fork. Both changes are available under the branch refactor-functions. If you're interested, I’d be happy to open a pull request with these improvements for your review."

Thanks for the contribution, if you dont mind please create a pull request


Performance: Adds includes compiler optimize option

Performance: Adds includes compiler optimize option

@ealsur haha such a basic mistake. Thank for catching it.


Oculus App still opens

When launching Oculus link from my headset and using a USB cable, SteamVR does launch automatically, but the Oculus app is also opened on the desktop. The Oculus Dash does seem to be disabled though.  Is all of this expected behavior? I did not expect to the the Oculus app open on my PC.

yes

Would be cool if theres a way to minimize or hide the oculus app as well


Moving of Conditional Event causes removal of variableEvents

Describe the bug
When start conditional event for event sub process is moved then any configured Variable event is deleted  if name of start event activity is defined.
Steps to reproduce

Create new Camunda 7 process
Create event sub process
Change event sub process' start event to non-interrupting conditional start event.
In general properties tab set name e.g "test"
In Condition tab set Variable events
to e.g "update,create"
Move this conditional start event, and variable events should be removed

Expected behavior
Variable events are not deleted when conditional start event is moved for event sub process.
Environment

OS: Microsoft Windows Server 2016 Standard
Camunda Modeler Version: 5.12.1
Execution Platform: Camunda 7
Installed plug-ins: No installed plugins

Additional context
No response

Can you reproduce it v5.27.0?  I'll move it to the backlog right now, but we are happy to accept contributions. I believe the bug is in this file: https://github.com/camunda/camunda-bpmn-js-behaviors/blob/main/lib/camunda-platform/RemoveVariableEventBehaviour.js


Implemented annyang into our mediawiki installation

read the read me first.

Hey @jehovahsays
Why is this a pull request into the library itself? Is this by error?

yes


Restart revision/service?

Hi, some secrets are being loaded on startup, but I did not set the right permissions for the secret resources. I want to restart the revision/service/container so that it would try to get the secrets again.
App Engine Flexible has a way to "restart" it by deleting the instance. I wonder if Cloud Run has something similar, but I could not find it. Wondering if you guys have better luck figuring out how to do it.

There’s no instance management like that in Cloud Run. :) Deploy a new revision and switch traffic to the new one.


Grammar fixes

Merged in dec456479b284ebe9cc1140912a51a1be9256c3c (but with "referenced by the field_name" -> "referenced by the specified field", as the field name isn't the thing doing the referencing). Thanks!


Prepare code for publication to PyPI

Remove any print statements
Clean up code outside of classes (I think test module is only one with this?)
Edit __init__.py to include proper import statement (from plfatools.aggregator import Aggregator)
Add setup.py, setup.cfg files

See: https://gist.github.com/joelbarmettlerUZH/3e9d941b02107ecd558eca82445a923e#file-setup-py
Will need to tag a release version in github
install_requires = ['pathlib', 'pandas', 'numpy']

Refine LICENSE and README files (rename LICENSE.md to LICENSE.txt?)
Look into standard documentation? See: https://realpython.com/documenting-python-code/#documenting-your-python-code-base-using-docstrings

References

<EMAIL_ADDRESS>https://realpython.com/pypi-publish-python-package/  <- this one seems more current

__ini__ file should have __version__ = "0.1.0"

Consider creating a __main__.py file so the module can be run from interpreter with path to file or folder as command line argument.
See: Different Ways of Calling a Package in https://realpython.com/pypi-publish-python-package/

Reviewed: https://realpython.com/pypi-publish-python-package/. Here are hanging tasks. We may create new issues from them or just consider them part of this mega-issue:

Move __main__.py into plfatools folder (allows $ python -m plfatools 'folderpath')

As a best practice, use if __name__ == "__main__": main(), and wrap current logic in def main():

setup.py

Use setuptools instead of distutils (from setuptools import setup)
specify entry_points = {"console_scripts": ["plfatools=plfatools.__main__:main"]}
Include long_description and long_description_content_type = 'text/markdown'
Replace classifiers = [...] with (see: https://pypi.org/classifiers/):

                 classifiers=[
			'Development Status :: 4 - Beta',
			'Intended Audience :: Science/Research',
			'Topic :: Scientific/Engineering',
			'Topic :: Scientific/Engineering :: Bio-Informatics',
			'License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
			'Programming Language :: Python :: 3'
		  ]

* Read in `README.md` and set it as `long_description`

Flesh out README.md with installation, example uses, etc. (probably new issue)
Probably delete setup.cfg

Also, to better understand this process, I published current version (with some minor changes) to test.pypi: https://test.pypi.org/project/plfatools/0.1.0

OK - I'll make these changes as soon as possible- I have midterms in all my classes this week so I may not get to it until the weekend. I will keep you updated!

I fixed everything regarding the main.py file. One note: now when I try to test it from the command line, I have to run the command line as administrator for it to work. If I don't do this it won't import the pandas/numpy modules.

One problem we will need to fix is deleting the old main.py file and setup.cfg file from the master branch since I believe I do not have permission to edit the master branch.

@patrickmorrell17 , I think that's a good guess on admin issue.
What are you next steps? Are you planning on tackling changes to setup.py?
I think we're getting close!

@bryanrcarlson I have just finished the setup.py if you want to look over my most recent pr #19   Also in case, you didn't see my earlier comment, you are going to need to delete the old main.py and setup.cfg, as I can not delete things from the master branch. I just need to work on the readme.md and we should be done after that! I am going to go ahead and create a new issue for that!

@patrickmorrell17 Great! After you create a PR for the changes to readme, I'll do a cleanup sweep and check that everything is good for submitting to test.pypi. Once we're happy with whats on pypi I'll tag the commit and we're golden!


Very Laggy!

I have disabled a number of features because I am trying to end the lag but no matter how lean I make files it is painfully laggy. I use Everything as my search index and wondering if there might be a conflict between these two? Other than how irritating this app is with the constant hanging on navigation I love what you are doing and this is something that Microcrap could have done long ago if they cared about their users. Would love to continue using this app but if I cant get past this lag issue I am going to have to remove it and wait until a more stable version comes around and it sucks because I am really loving everything else about this app. Anyone else experiencing lag, or am I in my own special bubble?

Try the preview version https://files.community/download/preview. It probably won't be perfect, but improvements are being made. Any specific issues you can make by following the issue templates.

Thanks Josh, I will give it a go and see if it helps.

Installed it and put it through the paces and it did in fact stop the lag issue I was having!

Files is lag as hell.
Ping me if Files Smooth as ever. I will pay for that!


Throwing error while deploying in firebase-functions

I am trying to deploy my SSR app in firebase originally forked from this repo, after doing some modification in the app. Which works fine when I do sudo firebase serve --only functions,hosting but throwing error when I do firebase deploy. The reproducible repo is https://github.com/subhendukundu/template-react-ssr/tree/feature/react-router, which has a package.json https://github.com/subhendukundu/template-react-ssr/tree/feature/react-router/public I am using the public directory as my function directory as well, https://github.com/subhendukundu/template-react-ssr/blob/feature/react-router/firebase.json
However even if I am using a different function directory for my cloud functions I see the same errors. Is there anyway I can fix it?
Error message:
Function failed on loading user code. Error message: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: TypeError: react_universal_component__WEBPACK_IMPORTED_MODULE_2___default(...) is not a function
    at Object.<anonymous> (/user_code/assets/app.server.js:1525:128)
    at Object.module.exports.hasOwnProperty (/user_code/assets/app.server.js:1547:30)
    at __webpack_require__ (/user_code/assets/app.server.js:27:30)
    at Object.<anonymous> (/user_code/assets/app.server.js:13330:26)
    at __webpack_require__ (/user_code/assets/app.server.js:27:30)
    at Object.<anonymous> (/user_code/assets/app.server.js:8001:18)
    at __webpack_require__ (/user_code/assets/app.server.js:27:30)
    at /user_code/assets/app.server.js:104:18
    at Object.<anonymous> (/user_code/assets/app.server.js:107:10)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)

Please note that the original error massage was TypeError: c(...) is not a function at Object.. I have turned off the minifiation to see the error message at the moment, still confused what's going wrong.

Hmm... I am definitely not an expert in terms of firebase. But this seems to be an error caused by dynamic importing a universal component. Does your code work, if you omit universal component?

Ahh, this one driving me crazy. 🙈😅 I have no clue how to go with this issue. I just moved all of my to static deployment (with a index.html, no dynamic importing), works perfectly.


✏  Fix typo in Tutorial - Path Parameters

This is a super simple PR that adds backticks to a mention of ints (line 64) in the Tutorial - Path Parameters page. 😃
Not really a typo, more like a consistency check.

Good catch, thanks! :mag: :coffee:


fix(release): run build and release workflow on tags as well

This PR makes sure that build and release workflow runs on tags as well which should ensure that the proper versions of the packages are created and pushed to ghcr.io service so it can be used later in other workflows.

:tada: This PR is included in version 1.0.7 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


ignore sys event

Signed-off-by: achref ben saad<EMAIL_ADDRESS>

Codecov Report

Merging #856 (400e8ec) into main (cfe270e) will decrease coverage by 3.98%.
The diff coverage is n/a.

:exclamation: Current head 400e8ec differs from pull request most recent head fae3367. Consider uploading reports for the commit fae3367 to get more accurate results

@@            Coverage Diff             @@
##             main     #856      +/-   ##
==========================================
- Coverage   39.89%   35.90%   -3.99%
==========================================
  Files          31       31
  Lines        9328     9328
==========================================
- Hits         3721     3349     -372
- Misses       5111     5516     +405
+ Partials      496      463      -33

Impacted Files
Coverage Δ

KubeArmor/core/crioHandler.go
0.00% <0.00%> (-63.87%)
:arrow_down:

KubeArmor/core/dockerHandler.go
0.00% <0.00%> (-47.53%)
:arrow_down:

KubeArmor/monitor/processTree.go
85.48% <0.00%> (-10.22%)
:arrow_down:

KubeArmor/core/kubeArmor.go
46.46% <0.00%> (-4.21%)
:arrow_down:

KubeArmor/common/common.go
39.38% <0.00%> (-3.87%)
:arrow_down:

KubeArmor/monitor/logUpdate.go
68.19% <0.00%> (-3.28%)
:arrow_down:

KubeArmor/enforcer/runtimeEnforcer.go
32.65% <0.00%> (-1.37%)
:arrow_down:

KubeArmor/core/kubeUpdate.go
38.05% <0.00%> (-0.87%)
:arrow_down:

KubeArmor/enforcer/appArmorEnforcer.go
47.71% <0.00%> (-0.49%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.