feat: Improve KZG Commitment cost for Quark Grand Producs

This change shows a 40%+ improvement in commit cost for certain commit operations.
Zeromorph Commit(mode:Default): 90% Ones
                        time:   [19.437 ms 20.128 ms 20.919 ms]
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) high mild
  3 (3.00%) high severe

HyperKZG Commit(mode:GrandProduct): 90% Ones
                        time:   [11.675 ms 11.867 ms 12.075 ms]
Found 11 outliers among 100 measurements (11.00%)
  9 (9.00%) high mild
  2 (2.00%) high severe

HyperKZG Commit(mode:Default): 90% Ones
                        time:   [19.569 ms 20.218 ms 20.924 ms]
Found 8 outliers among 100 measurements (8.00%)

Changes

[x] During SRS setup, preprocess a set of commitments to the group elements in the SRS for all supported lengths, L, where L is a power of 2
[x] Optimize quark grand products HyperKZG commitments by reusing the preprocessed commitments as described in #444
[x] Add a benchmark for Grand Products
[x] Add a benchmark for PCS Commits
[x] Fix incorrect repetition in kzg.rs tests

Fixes #444

We need another issue to track the fact that we're currently limiting the size of leaves per layer in the quarks grand product


a couple of hacks are not working and the one i want fixed are in global

pls fix this

Working cheats here: https://github.com/Minesraft2/Blooket-Cheats


Move Penner easing equations to thirdparty/misc

It was Godot-ified and integrated into Tween originally (#628) without mention that it was thirdparty code, but it's actually derived from https://github.com/jesusgollonet/ofpennereasing.
It's also very bad quality code and should be replaced by a better, properly-maintained library of easing equations.
Closes #21600 and supersedes #21608 (thirdparty code, we don't change it).

Given that copyright issues are corrected now, doesn't that mean we can merge this #21608? The changed file can be considered a fork of the original and may be improved in the future.

As I mentioned on #21608, I don't think it's an improvement as it doesn't fix any of the issue with that code, and just makes it harder to compare with reference implementations of Penner's equations as listed on #22513.


Move package.json to root dir

NPM doesn't allow custom node_modules locations, and chrome extensions can't ../ out of their directory, so I just went ahead and moved everything to the root: https://github.com/richgilbank/ES6-Repl-Chrome-Extension/commit/b5a82a4e714ff0d58bc4883baac034ae4fbdb97b

Merci


Fix rpy2 version requirement

Issue #, if available:
Description of changes:
rpy2 >=3.* introduces breaking changes that are not compatible with the R wrapper. Tightening the version requirement.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-89/1 is complete.
Docs are uploaded to http://gluon-ts-staging.s3-accelerate.dualstack.amazonaws.com/PR-89/1/index.html

Do you know what are the breaking changes? Because another option would be to update our code and restrict to rpy2 >= 3.*

The breaking changes I've noticed happened in the handling of errors and the definition of interface functions. I don't think updating would be hugely difficult, I don't know what immediate benefits moving to rpy2>=3.* would bring besides not requiring an older version.


Internal Serval Error

Hi,
Good start point I must say. Have just installed and 'served' the app. When I tried to create a 'todo' list I'm getting this: 'Failed to load resource: the server responded with a status of 500 (Internal Server Error)'.
Could you please advise how to fix this?
Many thanks!

Hey @bwoodlt,
thank you for your words. I'm late, sorry for that, I was busy with other hacks but here's your solution. :)
That's probably due to missing or flawed database setup. I've updated the readme to include instructions on how to set up your database for the application.
Run these commands to create the tables within the database you have already created.
php artisan migrate:install

php artisan migrate:refresh

@Zemke Brilliant, thanks!


How can i estimate distance from object to my kinect camera based on YOLO?

Hi, I'm using your code and i find it very useful.
Yolo is providing just the bounding box coordinates and i'm looking forward to the object coordinates in 3d. I know that a kinect camera provide some depth images and i'm asking if there is any chance to obtain the object coordinates.
So, How can i realize that? is there any idea?

Hi,
You could subscribe the YOLO node to the depth image topic of the Kinect, try to make it synchronizing the subscription of the color image that the YOLO use and the depth image, so that both are from the same sample time .
And then knowing the box of an object that the YOLO returns, go to the depth image and extract the depth value. Here you need to analyze your objects, maybe with just the depth value of the central point of the box is enough, but probably you will need to make something more elaborated, like calculate the median of all the values inside the box region. Next with the parameters of the camera you can just calculate the other 2 coordinates, for these use the equations of the pinhole model of a camera
Another option, is using the Point Cloud topic of the Kinect. With the coordinates of the color image (u,v) you can extract the real coordinates (x,y,z) from the Point Cloud
Hope this can help you

can you tell me how to do that? i'm new into ROS

There is probably a better way to do it than this one, but it works. Using OpenCV first you need to change the format so that OpenCV functions can work with it
DepthImage = cv_bridge::toCvCopy(msgdepth, sensor_msgs::image_encodings::TYPE_32FC1)
If you put 32FC1 the values of the pixel of the image should be already the distance in meters. Here you have a tutorial with more details. Then knowing the 2 points that define the box of the YOLO

xmin
ymin
xmax
ymax

You can calculate the middle point with
Xc = ((xmax-xmin)+xmin)
Yc = ((ymax-ymin)+ymin)
And then to get the distane of that point just
Zreal=(float)DepthImage.at<float>(Yc,Xc);
This value you get is the Z coordinate, and to get the other two, as I told you, just use the parameters of the camera
Xreal=((Xc-Cx)*Z)/fx
Yreal=((Yc-Cy)*Z)/fy
I know that there is a faster way to do it without OpenCV, accessing directly to the message. But I don't know exactly how to do it. If later you want to do something else to have a better depth value, you can use some filtering functions from OpenCV or anything else you want to use.

I don't know how to use OpenCV but i managed to get the Xc and Yc by writing into image.c the following:
   if(left < 0) left = 0;
   if(right > im.w-1) right = im.w-1;
   if(top < 0) top = 0;
   if(bot > im.h-1) bot = im.h-1;
   printf("%s: %.0f%%", names[class_id], prob * 100);

   printf(" - id: %d, x_center: %d, y_center: %d, width: %d, height: %d z: %d",
            class_id, (right + left) / 2, (bot - top) / 2, right - left, bot - top);

   printf("Bounding Box: Left=%d, Top=%d, Right=%d, Bottom=%d\n", left, top, right, bot);
   printf("\n");

    draw_box_width(im, left, top, right, bot, width, red, green, blue);

Is there any formula to get the Zreal using Xc and Yc?
How can i get the Xreal and Yreal?

Where should i put this?

After this line is a good place, so every time an object is detected you get the real coordinates. Of course you need to add at the begining the PointCloud topic as a subscription

I finally managed to get x_center and y_center correctly with your help.
I'm trying to add PointCloud topic as a subscrition but i don't know how.

It's my last piece of project and i'm not able to finish it. Could you help me?

To subscribe to the topic use the same structure as in the package, but synchronizing (same sample time) the image for the YOLO and the PointCloud. I'll show you with the depth image instead of the Point Cloud beacuse is the way I did it and I dont have time right now to change it. You only have to change the topic but the structure is the same
YoloObjectDetector.cpp
Around this line you have to add/change this
  // Initialize publisher and subscriber.
  std::string depthTopicName;        //For depth inclussion
  int depthQueueSize;                //For depth inclussion

  nodeHandle_.param("subscribers/camera_reading/topic", cameraTopicName, std::string("/camera/image_raw"));
  nodeHandle_.param("subscribers/camera_reading/queue_size", cameraQueueSize, 1);

  nodeHandle_.param("subscribers/camera_depth/topic", depthTopicName, std::string("/depth/image_raw"));   //For depth inclussion
  nodeHandle_.param("subscribers/camera_depth/queue_size", depthQueueSize, 1);                            //For depth inclussion

  sync_1.registerCallback(boost::bind(&YoloObjectDetector::cameraCallback,this,_1,_2));   //For depth inclussion

and also at the beggining for this to work add here the lines that has the comment "For depth inclussion"
  namespace darknet_ros
  {
      char *cfg;
      char *weights;
      char *data;
      char **detectionNames;

      YoloObjectDetector::YoloObjectDetector(ros::NodeHandle nh)
          : nodeHandle_(nh),
            imageTransport_(nodeHandle_),
            numClasses_(0),
            classLabels_(0),
            rosBoxes_(0),
            rosBoxCounter_(0),
            imagergb_sub(imageTransport_,"/camera/rgb/image_raw",1),       //For depth inclussion
            imagedepth_sub(imageTransport_,"/camera/depth/image_raw",1),   //For depth inclussion
            sync_1(MySyncPolicy_1(5), imagergb_sub, imagedepth_sub)        //For depth inclussion

Then in the file YoloObjectDetector.hpp you have to add this includes
  #include <stdio.h>
  #include <std_msgs/String.h>
  #include <message_filters/subscriber.h>
  #include <message_filters/synchronizer.h>
  #include <message_filters/time_synchronizer.h>
  #include <message_filters/sync_policies/approximate_time.h>
  #include <image_transport/subscriber_filter.h>

and as public in the YoloObjectDetector class
  // Syncronizing Image messages
  typedef image_transport::SubscriberFilter ImageSubscriberFilter;
  ImageSubscriberFilter imagergb_sub;
  ImageSubscriberFilter imagedepth_sub;
  typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::Image, sensor_msgs::Image> MySyncPolicy_1;
  message_filters::Synchronizer<MySyncPolicy_1> sync_1;

Finally to make it work, add in your config file .yaml in the suscriber the topic
  camera_depth:
     topic: /camera/depth/image_raw
     queue_size: 1

when i tried to catkin_make this is the error i get.
In file included from /usr/include/boost/bind.hpp:22:0,                  from /opt/ros/kinetic/include/ros/publisher.h:35,                  from /opt/ros/kinetic/include/ros/node_handle.h:32,                  from /opt/ros/kinetic/include/ros/ros.h:45,                  from /home/cata/catkin_ws/src/darknet_ros/darknet_ros/include/darknet_ros/YoloObjectDetector.hpp:21,                  from /home/cata/catkin_ws/src/darknet_ros/darknet_ros/src/YoloObjectDetector.cpp:10: /usr/include/boost/bind/bind.hpp: In instantiation of ‘struct boost::_bi::result_traits<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&)>’: /usr/include/boost/bind/bind.hpp:883:48:   required from ‘class boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >’ /home/cata/catkin_ws/src/darknet_ros/darknet_ros/src/YoloObjectDetector.cpp:155:85:   required from here /usr/include/boost/bind/bind.hpp:69:37: error: ‘void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&)’ is not a class, struct, or union type      typedef typename F::result_type type;                                      ^ In file included from /usr/include/boost/function/detail/maybe_include.hpp:58:0,                  from /usr/include/boost/function/detail/function_iterate.hpp:14,                  from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:92,                  from /usr/include/boost/function.hpp:64,                  from /opt/ros/kinetic/include/ros/forwards.h:40,                  from /opt/ros/kinetic/include/ros/common.h:37,                  from /opt/ros/kinetic/include/ros/ros.h:43,                  from /home/cata/catkin_ws/src/darknet_ros/darknet_ros/include/darknet_ros/YoloObjectDetector.hpp:21,                  from /home/cata/catkin_ws/src/darknet_ros/darknet_ros/src/YoloObjectDetector.cpp:10: /usr/include/boost/function/function_template.hpp: In instantiation of ‘static void boost::detail::function::void_function_obj_invoker9<FunctionObj, R, T0, T1, T2, T3, T4, T5, T6, T7, T8>::invoke(boost::detail::function::function_buffer&, T0, T1, T2, T3, T4, T5, T6, T7, T8) [with FunctionObj = boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >, boost::_bi::list9<boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4>, boost::arg<5>, boost::arg<6>, boost::arg<7>, boost::arg<8>, boost::arg<9> > >; R = void; T0 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T1 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T2 = const boost::shared_ptr<const message_filters::NullType>&; T3 = const boost::shared_ptr<const message_filters::NullType>&; T4 = const boost::shared_ptr<const message_filters::NullType>&; T5 = const boost::shared_ptr<const message_filters::NullType>&; T6 = const boost::shared_ptr<const message_filters::NullType>&; T7 = const boost::shared_ptr<const message_filters::NullType>&; T8 = const boost::shared_ptr<const message_filters::NullType>&]’: /usr/include/boost/function/function_template.hpp:940:38:   required from ‘void boost::function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9>::assign_to(Functor) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >, boost::_bi::list9<boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4>, boost::arg<5>, boost::arg<6>, boost::arg<7>, boost::arg<8>, boost::arg<9> > >; R = void; T0 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T1 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T2 = const boost::shared_ptr<const message_filters::NullType>&; T3 = const boost::shared_ptr<const message_filters::NullType>&; T4 = const boost::shared_ptr<const message_filters::NullType>&; T5 = const boost::shared_ptr<const message_filters::NullType>&; T6 = const boost::shared_ptr<const message_filters::NullType>&; T7 = const boost::shared_ptr<const message_filters::NullType>&; T8 = const boost::shared_ptr<const message_filters::NullType>&]’ /usr/include/boost/function/function_template.hpp:728:7:   required from ‘boost::function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9>::function9(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >, boost::_bi::list9<boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4>, boost::arg<5>, boost::arg<6>, boost::arg<7>, boost::arg<8>, boost::arg<9> > >; R = void; T0 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T1 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T2 = const boost::shared_ptr<const message_filters::NullType>&; T3 = const boost::shared_ptr<const message_filters::NullType>&; T4 = const boost::shared_ptr<const message_filters::NullType>&; T5 = const boost::shared_ptr<const message_filters::NullType>&; T6 = const boost::shared_ptr<const message_filters::NullType>&; T7 = const boost::shared_ptr<const message_filters::NullType>&; T8 = const boost::shared_ptr<const message_filters::NullType>&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’ /usr/include/boost/function/function_template.hpp:1077:16:   required from ‘boost::function<R(T0, T1, T2, T3, T4, T5, T6, T7, T8)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >, boost::_bi::list9<boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4>, boost::arg<5>, boost::arg<6>, boost::arg<7>, boost::arg<8>, boost::arg<9> > >; R = void; T0 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T1 = const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&; T2 = const boost::shared_ptr<const message_filters::NullType>&; T3 = const boost::shared_ptr<const message_filters::NullType>&; T4 = const boost::shared_ptr<const message_filters::NullType>&; T5 = const boost::shared_ptr<const message_filters::NullType>&; T6 = const boost::shared_ptr<const message_filters::NullType>&; T7 = const boost::shared_ptr<const message_filters::NullType>&; T8 = const boost::shared_ptr<const message_filters::NullType>&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’ /opt/ros/kinetic/include/message_filters/signal9.h:281:40:   required from ‘message_filters::Connection message_filters::Signal9<M0, M1, M2, M3, M4, M5, M6, M7, M8>::addCallback(C&) [with C = const boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >; M0 = sensor_msgs::Image_<std::allocator<void> >; M1 = sensor_msgs::Image_<std::allocator<void> >; M2 = message_filters::NullType; M3 = message_filters::NullType; M4 = message_filters::NullType; M5 = message_filters::NullType; M6 = message_filters::NullType; M7 = message_filters::NullType; M8 = message_filters::NullType]’ /opt/ros/kinetic/include/message_filters/synchronizer.h:310:40:   required from ‘message_filters::Connection message_filters::Synchronizer<Policy>::registerCallback(const C&) [with C = boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >; Policy = message_filters::sync_policies::ApproximateTime<sensor_msgs::Image_<std::allocator<void> >, sensor_msgs::Image_<std::allocator<void> > >]’ /home/cata/catkin_ws/src/darknet_ros/darknet_ros/src/YoloObjectDetector.cpp:155:86:   required from here /usr/include/boost/function/function_template.hpp:159:11: error: no match for call to ‘(boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::_bi::unspecified, void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&), boost::_bi::list3<boost::_bi::value<darknet_ros::YoloObjectDetector*>, boost::arg<1>, boost::arg<2> > >, boost::_bi::list9<boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4>, boost::arg<5>, boost::arg<6>, boost::arg<7>, boost::arg<8>, boost::arg<9> > >) (const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&, const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&, const boost::shared_ptr<const message_filters::NullType>&)’            BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS));            ^ darknet_ros/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:62: recipe for target 'darknet_ros/darknet_ros/CMakeFiles/darknet_ros_lib.dir/src/YoloObjectDetector.cpp.o' failed

It seems that is a Boost error, check that everything in the CmakeList.txt is fine, or maybe is something in this function that i dont really know where is written
void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&)

Can i have your email?

Do you get the 3d coordinates on your PC? I'm trying and still trying but got no results. Can you tell me how did you do it or show me a little of your code?

I upload my version to this repository. For me it works fine in gazebo simulation. I just did it the way I told you with the camera equations.
In the next hours I will describe everything with more details but it should be enough for you proyect

The code I put was thought for a specific problem so there are a few lines that you dont need. Since the objects I was detecting were only red, blue, green, yellow or black, I add a color filtering to not consider the depth values in the BoundingBox that are not from the object and check for false positive in the YOLO result. This is done from this line to this line. Then here you have a loop that goes through every pixel of the BoundingBox
for(int i=xmin; i<=xmax; i++)
    for(int j=ymin; j<=ymax; j++)
    {
        ...
    }

Inside the loop then I get the depth values from those pixels that are in the color image the color I want. Binaria is an image that has a 0 where the color isn't the one I want and 255 when is the color I want
Value=(float)DepthImageCopy_.at<float>(j,i);
if (Value==Value && ((int)Binaria1.at<uchar>(j,i))!=0)
{
    GrayValue+=Value;
    Ind++;
}
GrayValue=GrayValue/Ind;

So GrayValue is the mean value of all those depth values. The error you have is probably due to all this. You should erase it and just use
Value=(float)DepthImageCopy_.at<float>(Ycenter,Xcenter)

@AlejoDiaz49 I couldn't get this to work I'm getting a -nan for X,Y,Z coordinate. My Coordinates function is
 void YoloObjectDetector::Coordinates(int ObjID, int xmin, int ymin, int xmax, int ymax)
  {
      int U = ((xmax-xmin)+xmin);
      int V = ((ymax-ymin)+ymin);
      int Xcenter = ((xmax-xmin)/2) + x_min;
      int Ycenter = ((ymax-ymin)/2) + y_min;

      float Value=(float)DepthImageCopy_.at<float>(Ycenter,Xcenter)

      Invalid= true;
      if (Value!=0)
      {
         Invalid= false;
         Z= Value;                                //Metros
         X=((U-320.5)*Z)/554.254691191187;           //X=((U-Cx)*Z)/fx
         Y=((V-240.5)*Z)/554.254691191187;           //Y=((V-Cy)*Z)/fy
         ROS_INFO("X %f, Y %f, Z %f ,Invalid %d ", X, Y, Z, Invalid);
      }
   }`

Hi. I really like to get 3D Bounding Box from YOLO and use for Collision checking in Gazebo and Moveit. Can I use your code for that purpose?

I have same compile erro,
void (darknet_ros::YoloObjectDetector::*)(const boost::shared_ptr<const sensor_msgs::Image_<std::allocator > >&) .
In my case the cause of the issue is that I didn't modify the cameraCallback function together.
As I reference the https://github.com/AlejoDiaz49/Object-SearchLocalization-Robot
, I modified cameraCallback function together. compile is OK .
void YoloObjectDetector::cameraCallback(const sensor_msgs::ImageConstPtr& msg)
->  void YoloObjectDetector::cameraCallback(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs::ImageConstPtr& msgdepth)

Hi, I'm using your code and i find it very useful.
Yolo is providing just the bounding box coordinates and i'm looking forward to the object coordinates in 3d. I know that a kinect camera provide some depth images and i'm asking if there is any chance to obtain the object coordinates.
So, How can i realize that? is there any idea?

can I get the code? I am new in this type of project. I want to detect object by using azure kinect and measure the distance. please help me.

Is it possible to get the orientation of the detected objects with this code or any help in modified the code in order to get the orientation?

Hi @AlejoDiaz49 @catalin15dcm
I am using YOLO for 2d object detection in a simulator (similar to Gazebo) It is Called AirSim. AirSim provides ROS wrapper so I am using darknet_ros.
Could you pease help me to get the distance from the obstacle infront.
Thank you
TK


wish: summary by proportion on heatmaps

Hello,
In heatmaps we sum up values (passed to intensity argument) over a neibourhood. I would like to be able to aggregate these values with a summary function other than 'sum', for example a proportion of the sum of two variables (eg. sum(x1)/sum(x2), inside the neibourhood).
Is it possible?
Thank you!
Regards,
Athos.

Im still interested in It. Any comments, please?


Make suffix of generated query response types customizable

Is your feature request related to a problem? Please describe.
componentSuffix option of typescript-react-apollo plugin allows us to generate React Apollo components with arbitrary suffixes. The default is XXXComponent but many would like to generate something like XXXQuery. However, this format is already reserved for generated query response types, e.g.
export type PlayerQuery = ({ __typename?: 'Query' } &
{ player: ({ __typename?: 'PlayerModel' } & Pick<PlayerModel, 'id' | 'username' | 'character'>) });

Describe the solution you'd like
Although type names and component names should not clash, it would be preferrable to be able to also customize names of generated query responses via some similar option in config. I think querySuffix is appropriate.
Describe alternatives you've considered
Is this better done somehow by extending the execution flow?
Additional context

I have a working solution but not sure if it is the best way. I can send a PR.

@jlkiri sure, can you please share it here or submit a PR? I :)

Available in 1.4.0 🎉


Add border-y-0 and border-x-0, because why not?

We have border-left-0, border-right-0, border-top-0 and border-bottom-0. This adds border-x-0 and border-y-0. which sets either top/bottom or left/right to zero.

I suggesting, maybe this classes is so long? I mean paddings and margins has a classes like a px, py, pt, pb, pr, pl and this is really faster for writting code, maybe border should has it too? I mean bx-0 - what mean border hasnt left and right borders and bx-1 what mean has border?

I kinda agree. It also seems a little backwards. Following the p and m utils, this makes more sense.
bd-0 - border: none;
bd-1 - border: 1px solid;
brd1- border-(top/bottom): 1px solid;
brdx-1 - border-(left/right): 1px solid;
brdl-1 - border-left: 1px solid;
brdr-1 - border-right: 1px solid;
brdt-1 - border-top: 1px solid;
brdb-1 - border-bottom: 1px solid;
brdy-0- border-(top/bottom): none;
brdx-0 - border-(left/right): none;
brdl-0 - border-left: none;
brdr-0 - border-right: none;
brdt-0 - border-top: none;
brdb-0 - border-bottom: none;
brd-primary: border-color: primary (then the rest of the theme options).
@mdo thoughts on this?

Why brd, not B? Like b-0 or by-0?

Assumed b- was used :)

By what? :O

Hi @kevdotbadger thanks a lot for sending the PR, and also hi @AdrianKuriata,
Although I understand you point about been consistent with margin and padding utility classes, when we start reducing classes to just one letter it gets hard to read (similar to SMACC, or OSS AtomicCSS). The impact of performance you get for a few more characters on a class name is insignificant.
About adding border-y and border-x it'll up to @mdo. I personally don't see the need.

@andresgalante Completely agree RE the single letter classes, as for this suggestion I disagree. Adding borders to just top and bottom you need 3 classes (border border-left-0 border-right-0), in terms of readability having just border border-y just makes more sense.

@mdo thoughts on this addition?

I'd presume b-* is better for bottom property, as used in margin/padding utils. What about:

.border-b-0
.border-t-0
.border-l-0
.border-r-0
.border-x-0
.border-y-0

Looks more consistent to me.

Yeap, I meant brd vs border

@mdo: ping

@mdo: ping

b could easily be confused for background without first seeing bg. Let's stick with border for now. I'll swing back around to merging this after the betas.

Closing for now, will see what folks think with these new ones. Utilities for utilities is something I generally want to avoid though :).


Circuit Breakers

Circuit Breakers and High availability
This will require joint efforts of refs/pman and circuit breakers. Currently pman won't keep a process alive. If a process dies, then it's dead and no efforts towards reviving it will take place. Therefore for circuit breakers to work we need to be able to restart services on failures.
Resources

https://martinfowler.com/bliki/CircuitBreaker.html
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn589784(v=pandp.10)?redirectedfrom=MSDN
https://microservices.io/patterns/reliability/circuit-breaker.html
https://github.com/sony/gobreaker
https://github.com/afex/hystrix-go (go project to play with)
https://github.com/gojek/heimdall (another go project , http client based on hystrix)

Micro take on circuit breakers:

https://github.com/micro/go-plugins/blob/master/wrapper/breaker/gobreaker/gobreaker.go

How can we, in ownCloud, use the gobreaker wrapper?
Test scenario: accounts -> settings: report settings bundle. This is a good chance to use a gobreaker wrapper and see what happens when the settings service is not started yet.
This exact use case is showcased on the owncloud/ocis/breaker branch. To understand the scenario:

The accounts service registers a set of default settings and permissions.
There is a precondition: settings service up and running.
If the accounts service is launched prior to the settings, requests during the lifecycle of the accounts service will start failing.
3.1 while this is solved with a simple retry until max retries logic, we have no awareness nor monitoring of the situation.
Start on isolation ocis accounts
See requests failing
Checkout owncloud/ocis/breaker
Start accounts on isolation

After that, you should see something similar to:

Where one can clearly see 2 circuit breakers, both tripped and they both have different thresholds, one trips after 2 consecutive failures and the other trips after a single failure.

After a few experiments TwoStepsCircuitBreaker is not needed since micro/micro prevents consumers from providing a slice of callbacks. It instead returns a go-micro error with the detail explaining the circuit tripping.

Should we also take in to account that in k8s or similar environments the orchestrator will restart the service based on liveliness checks?

should we? That's on an entirely different layer, circuit breakers are done in the clients.

:+1: Okay miss-understanding on my side.

Needs a broader audience. Closing and reopening a better described issue.

Needs a broader audience. Closing and reopening a better described issue.


It told me to upload stuff

I uploaded my log for you - I tried to upload 2 folders on my Mac via KBFS - I cancelled 1 of the operations and then tried to cancel the other one and the whole thing locked up :(
my log id: 563afc673b7e187b2bfe011c

Hi @JamieH, thanks for the report.  The uploads failed because KBFS was trying to upload more than it could handle in the file system timeout imposed by macOS.  We have a fix in the work for that which is almost ready, but in the meantime you might not be able to upload large amounts of data on slowish connections.  Sorry about that.
I'm more worried by "and the whole thing locked up".  Can you please explain how you were uploading (i.e., was it drag and drop with Finder, using cp or rsync, etc) what you did to cancel it (ctrl-C?), and exactly what locked up (your whole OS? a tab in your terminal?).  Thanks!

It only processed about 6KB over 5 seconds though, is that expected? I'm on a reasonably fast connection too.
I was using drag and drop with finder, I cancelled by clicking the x button on the progress window on the transfer, and then Finder locked up.

According to the logs it took over 16s to transfer 8 MB of data to our servers.  Some of that time is our server's processing time, but likely a lot of it was either congestion in your network to our servers, or high CPU usage by some other process on your device.  Its hard for me to tell the exact cause from the logs.
I'm sorry about the lockup, I can't find any clues in our logs about that.  I'll open an internal ticket for us to try to reproduce.

The Finder UI certainly didn't reflect that. I think the highest I saw it at was 16KB. I'll respond if I get it to do the same again

Version 1.0.20 has architectural changes that should greatly improve the large write experience.  If you're still seeing problems, please open a new issue.


[Closed] Roots of quadratic eqn c issue7472

📑 Description

Closes #7472

🤖 Generated by Copilot at 576776f
Summary
:heavy_plus_sign::1234::sparkles:

Add a new program FindRootsOfQuadraticEquation.c that calculates and prints the roots of a quadratic equation. The program uses the standard formula and handles different cases of the discriminant.

quadratic_roots
finds solutions with formula
autumn math problem

Walkthrough

Add code for finding the roots of a quadratic equation using the standard formula (link)
Include headers for math and input/output functions (link)
Handle different cases of the discriminant: positive, zero or negative (link)
Add a new program file FindRootsOfQuadraticEquation.c to the repository (link)

My apologies
On Sat, 20 May, 2023, 10:35 am codinasion-bot[bot], <
@.***> wrote:

This pull request has been closed !!!
—
Reply to this email directly, view it on GitHub
https://github.com/codinasion/program/pull/7661#issuecomment-1555559088,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIA2BX5PULTWQE7JX3YVYV3XHBGJFANCNFSM6AAAAAAYIAC5ZQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


doesn't move when in game

Hello, when i start the bot everything goes fine until i get into game then nothing happens and i stay afk

This sometimes happens if you do not have a real mouse plugged in. Is there a mouse plugged in on your setup?

Yes i have mouse plugged in and keyboard too
На пт, 5.05.2023 г., 20:23 ч. Isaac Holston @.***>
написа:

This sometimes happens if you do not have a real mouse plugged in. Is
there a mouse plugged in on your setup?
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1536559608,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCMB2HACKKP5BP5EXHLXEUZQJANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you authored the thread.Message ID:
@.***>

Can you send some screenshots?

@iholston  do you got discord to discuss in real time please?
or add me on discord  : Mahdi#9830

When i tab out of league it starts clicking on everything but not in league
also it changes my settings in game the resolution and window settings
На пт, 5.05.2023 г. в 20:50 ч. Isaac Holston @.***>
написа:

Can you send some screenshots?
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1536584016,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCJKUVVKOHQ65JEERGDXEU4VLANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you authored the thread.Message ID:
@.***>

When i tab out of league it starts clicking on everything but not in league also it changes my settings in game the resolution and window settings На пт, 5.05.2023 г. в 20:50 ч. Isaac Holston @.> написа:
…
Can you send some screenshots? — Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A5JQVCJKUVVKOHQ65JEERGDXEU4VLANCNFSM6AAAAAAXXKZV4I . You are receiving this because you authored the thread.Message ID: @.>

@iholston do you got discord to discuss in real time please? or add me on discord : Mahdi#9830

Can you send some screenshots?

hello, what was the solution? I have the same problem

@DenisDanov @anaquierealgo the bot has use the mouse and keyboard to play the game. You unfortunately cannot be using your computer at the same time. I would recommend running the bot when you go to sleep and/or work if you only have one computer. Alternatively, you can try and get it running in a vm. But that may come with its own issues, see #6

As for it changing the window size/resolution, those settings are to ensure that the ratios work correctly. you can try changing the game.cfg file in resources and setting the Height and Width to whatever you like. But the mouse clicks might not work as intended.

I figured that i cant use my computer. I just tried now again i had only
league opened i started the bot then i didnt touch anything and i noticed
that it does move the mouse in league but it doesnt click on anything also
there was a msg about the offscreen pings right on the items menu is it
possible that this is the reason why it also cant buy any items ?
На сб, 6.05.2023 г., 01:48 ч. Isaac Holston @.***>
написа:

@DenisDanov https://github.com/DenisDanov @anaquierealgo
https://github.com/anaquierealgo the bot has use the mouse and keyboard
to play the game. You unfortunately cannot be using your computer at the
same time. I would recommend running the bot when you go to sleep and/or
work if you only have one computer. Alternatively, you can try and get it
running in a vm. But that may come with its own issues, see #6
https://github.com/iholston/lol-bot/issues/6
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1536865121,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCMDMZIR6I2DIY3PKX3XEV7UDANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you were mentioned.Message ID:
@.***>

Also i just saw that when i leave the game it tries to reconnect it moves
the mouse to the reconnect button but again it doesnt click it. I noticed
it clicks in the cmd window but not in league so i guess the problem is in
something with the clicks
На сб, 6.05.2023 г., 01:48 ч. Isaac Holston @.***>
написа:

@DenisDanov https://github.com/DenisDanov @anaquierealgo
https://github.com/anaquierealgo the bot has use the mouse and keyboard
to play the game. You unfortunately cannot be using your computer at the
same time. I would recommend running the bot when you go to sleep and/or
work if you only have one computer. Alternatively, you can try and get it
running in a vm. But that may come with its own issues, see #6
https://github.com/iholston/lol-bot/issues/6
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1536865121,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCMDMZIR6I2DIY3PKX3XEV7UDANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you were mentioned.Message ID:
@.***>

The intent of this bot is to level brand new accounts. The bot will only be able to purchase items if the shop is the the default spot. It clicks on an item and then clicks on the purchase button. if something is blocking the purchase button or the shop is in a non-default position then it wont be able to buy anything. As for moving, it right clicks on the nexus on the minimap.

if the clicking is altogether not working, Im not sure what exactly the problem or the solution could be.

The account is new and its level 13 but the clicking works everywhere
outside of league
На сб, 6.05.2023 г., 16:13 ч. Isaac Holston @.***>
написа:

The intent of this bot is to level brand new accounts. The bot will only
be able to purchase items if the shop is the the default spot. It clicks on
an item and then clicks on the purchase button. if something is blocking
the purchase button or the shop is in a non-default position then it wont
be able to buy anything. As for moving, it right clicks on the nexus on the
minimap.
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1537140032,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCLCUUHWI7GRN6QR3XLXEZE7PANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you were mentioned.Message ID:
@.***>

Without some screenshots of or something more specific, I cannot really help you figure this out.

Without some screenshots of or something more specific, I cannot really help you figure this out.

This is how the window of the client works and the cmd window it looks like everything works, but for example if i tab to the cmd window my mouse will move and click but when its in league it doesnt click thats the issue.

Without some screenshots of or something more specific, I cannot really help you figure this out.

This is how the window of the client works and the cmd window it looks like everything works, but for example if i tab to the cmd window my mouse will move and click but when its in league it doesnt click thats the issue.

this is offscreen ping window always shows up when i get into game too

Okay! So make sure the cmd is minimized all the clicks/button presses should go to the league game. the issue might be simply that another window (in this case cmd) is getting the clicks instead.
The league client works without mouse clicks because the bot communicates with the LCU API. The actual league game that opens afterward must be the active window to receive the clicks/button pressed the bot tries to make to play the game. The off-screen pings popup shouldnt effect anything as long as the league game window is on top.

¡Bueno! Así que asegúrese de que el cmd esté minimizado, todos los clics/pulsaciones de botones deben ir al juego de la liga. el problema podría ser simplemente que otra ventana (en este caso, cmd) está recibiendo los clics.
El cliente de la liga funciona sin clics del mouse porque el bot se comunica con la API de LCU. El juego de liga real que se abre después debe ser la ventana activa para recibir los clics/botones presionados que el bot intenta hacer para jugar el juego. La ventana emergente de pings fuera de la pantalla no debería afectar nada mientras la ventana del juego de la liga esté en la parte superior.

look at you, the mouse clicks on the link when the client window is not selected
https://www.youtube.com/watch?v=nRqNSea2hL0&ab_channel=Deneven

Okay! So make sure the cmd is minimized all the clicks/button presses should go to the league game. the issue might be simply that another window (in this case cmd) is getting the clicks instead.
The league client works without mouse clicks because the bot communicates with the LCU API. The actual league game that opens afterward must be the active window to receive the clicks/button pressed the bot tries to make to play the game. The off-screen pings popup shouldnt effect anything as long as the league game window is on top.

Well when i minimize the cmd window and league is the main window the mouse stops moving and clicking its like the bot isnt on

@anaquierealgo is that running in a vm? I dont see the mouse cursor in the video. I have about 5 bots running and I just cant seem to recreate this issue directly (same issue @DenisDanov is having I assume). The only way I can recreate something similar is if there is no mouse connected. It should work without a keyboard but if there is no mouse then the keyboard inputs won't work either. The bot uses python's pyautogui, keyboard, and mouse libraries for clicks/button presses.

@anaquierealgo¿Eso se ejecuta en una máquina virtual? No veo el cursor del mouse en el video. Tengo alrededor de 5 bots en ejecución y parece que no puedo recrear este problema directamente (el mismo problema@DenisDanoves tener supongo). La única forma en que puedo recrear algo similar es si no hay un mouse conectado. Debería funcionar sin teclado, pero si no hay mouse, las entradas del teclado tampoco funcionarán. El bot usa las bibliotecas pyautogui, teclado y mouse de python para hacer clic o presionar botones.
Look this, not is virtual. https://youtu.be/k3f_wjWgy5I

@anaquierealgo is that running in a vm? I dont see the mouse cursor in the video. I have about 5 bots running and I just cant seem to recreate this issue directly (same issue @DenisDanov is having I assume). The only way I can recreate something similar is if there is no mouse connected. It should work without a keyboard but if there is no mouse then the keyboard inputs won't work either. The bot uses python's pyautogui, keyboard, and mouse libraries for clicks/button presses.

Is it possible that the issue is in the libraries then ?

I tried it on another pc with a resolution of 1980x1080 and it works, could that be the problem?

I don't think the resolution is the problem, I run the bots on 2k resolution. It is most likely something specific tot the first machine you were using.

Is it possible that the issue is in the libraries then ?

Yea, something about your setup is causing them to not work correctly.

Do u have any idea how can i fix this ?
На сб, 6.05.2023 г., 21:47 ч. Isaac Holston @.***>
написа:

Is it possible that the issue is in the libraries then ?
Yea, something about your setup is causing them to not work correctly.
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1537200719,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCJXVR74QTOXP43GRMTXE2MC3ANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you were mentioned.Message ID:
@.***>

Unfortunately I don't know how to fix your issue. It's not something wrong with the code so I can only recommend running it on a different setup. Let me know if you figure something out though.

@iholston  i got an other question related to the features of the bot, are you planning to add some specific image computing to the bot so it can detect like ('ally', 'ennermy','towers'..) or any suggestions so i can do it myself.
Thanks for your time

@mbelhaouz  I am not planning on adding any features regarding image computing atm as the bot does everything I need it to, and I don't like being locked into a specific resolution.
If you would like to fork the repo and implement it yourself the best place to start would most likely be pyautogui and opencv for image recognition which would be resolution specific or if you want to go more in depth i would recommend learncodebygaming's tutorials on vision recognition to create a machine learning solution that is resolution independent.

Unfortunately I don't know how to fix your issue. It's not something wrong with the code so I can only recommend running it on a different setup. Let me know if you figure something out though.

I downloaded autoclicker so that way it doesnt kick me for afk in game but im level 21 already so bots games doesnt give me enough exp can u tell me how i can make the bot to start arams instead ?

I would not recommend aram for two reasons,

you will be reported every game
you don't get much more xp than beginner bots

But if you still would like to play arams instead, simply change:
GAME_LOBBY_ID = BEGINNER_BOTS_GAME_LOBBY_ID to
GAME_LOBBY_ID = 450
Best of luck!

Thanks for the feedback!
На пн, 8.05.2023 г., 16:20 ч. Isaac Holston @.***>
написа:

I would not recommend aram for two reasons,

you will be reported every game
you don't get much more xp than beginner bots

But if you still would like to play arams instead, simply change:
GAME_LOBBY_ID = BEGINNER_BOTS_GAME_LOBBY_ID to
GAME_LOBBY_ID = 450
Best of luck!
—
Reply to this email directly, view it on GitHub
https://github.com/iholston/lol-bot/issues/7#issuecomment-1538351784,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQVCPHIOWYJ4F5ZVDWC7DXFDXKHANCNFSM6AAAAAAXXKZV4I
.
You are receiving this because you were mentioned.Message ID:
@.***>

No recomendaría aram por dos razones,

serás reportado cada juego
no obtienes mucho más xp que los bots principiantes

Pero si aún desea jugar arams, simplemente cambie constants.py: GAME_LOBBY_ID = BEGINNER_BOTS_GAME_LOBBY_ID a GAME_LOBBY_ID = 450
¡Toda la suerte!

Ty, Could you share your configuration so that the machine is not detected?

The current config of the repo is what I use. The bot itself will not be detected by riot games. However, the human players may report the bot if they think it is a bot. In beginner bot lobbies this doesn't happen because the bot behaves the way a new player would.
Aram, on the other hand, is filled with experienced players who may be able to tell that the bot is a bot and report it.

Hello im sorry for spamming here again but do u know any free working auto clicker for league ? i used murgee autoclicker but i found out its paid after some time

uhh, i got that problom too

@enochos yea unfortunately this is not an issue with the software (as far as i can tell) but rather something with your set up. If you figure something out please let me know.

Hi, sorry for necro but i've had this problem and fixed it by running the launcher.bat with admin rights. Also edit the launcher and instead of cd scripts use cd "C:\Users\you\InstallLocation\lol-bot\scripts"

Hi, sorry for necro but i've had this problem and fixed it by running the launcher.bat with admin rights. Also edit the launcher and instead of cd scripts use cd "C:\Users\you\InstallLocation\lol-bot\scripts"

So on one hand openning with admin rights, but what do you mean with the CD scripts? Can you help me, I have the same problem as the author...

Open your launcher.bat in notepad or something and change "cd scripts" to "C:\Users\you\InstallLocation\lol-bot\scripts" (change "you" to your username and "InstallLocation" to where the bot is installed)


Assets Folder Properties support

It would be nice to be able to provide client-specific simple properties on Assets Folders via the OOT Folder Properties Web UI.

at this time it is difficult to do some due to how data is written and read from the sling:XXXFolder and sling:XXXFolder/jcr:content nodes.

This implementation would admittedly be on the less elegant side and somewhat limited due to the OOTB plumbing that drives Folder Properties. There would  be 2 concerns:

Writing new properties -> Requires a Sling Filter to write whitelists property values (initially only single-val String support; could be extended to support typeHints); Unfortunately Sling POST Processors are not a viable solution due to the implementation of the OOTB FolderShareHandler PostOperation.

Reading new properties -> The reading of folder properties is ~ hardcoded into folderproperties.jsp OOTB; This would require a supporting servlet that exposes raw node properties to the granite.ui.forms.values ValueMap to allow new form fields to accessed saved data.

This allows for something like the following to be added to Assets Folder Properties.

Was stewing on this some more and an alternate approach is to create a 1) Felix filter that hides the operation param 2) let sling post servlet handle normal property setting, 3) post processor that invokes the FolderShareHandler PostOperation


Level 2 final test case

Summary
Got the error: incompatible types: no instance(s) of type variable(s) U exist so that Logger<? extends U> conforms to Logger<java.lang.Number> for the final test case for level 2
Description:
Running Logger.of("hello").map(g) alone works fine, but running Logger lognum = Logger.of("hello").map(g) throws the error incompatible types: no instance(s) of type variable(s) U exist so that Logger<? extends U> conforms to Logger<java.lang.Number> .
Can't figure out what I am doing wrong for my map function, would appreciate any help if anyone else got the same error and managed to fix it! Thanks!
Screenshots

Is the return type for your map function Logger<? extends U>? map should return Logger<U>.

I also think maybe should return a new Logger. Since the error message says Logger<? extends U> cannot conform to Logger<java.lang.Number>.

Yes, the return type for my map function is Logger<? extends U>, I changed it to return Logger instead, and now it is working! Thank you all! But, I don't get why would Logger<? extends U> result in an incompatible type error while Logger doesn't?

Yes, the return type for my map function is Logger<? extends U>, I changed it to return Logger instead, and now it is working! Thank you all! But, I don't get why would Logger<? extends U> result in an incompatible type error while Logger doesn't?

Yup, like brandon said, if our return type is a wildcard, we cannot be sure what the return type will be.
E.g. Let's say our U is Number, so the return type is Logger<? extends Number>. So, our map function can return any subclass of Number, like Logger<Number>, Logger<Integer>, Logger<Double>, etc. We aren't sure of what exactly it will return.
So what type can we assign the returned object to? We cannot assign it to a Logger<Number> because the return type may be a Logger<Integer>. (because generic types are invariant, we cannot do List<Number> list = new ArrayList<Integer>() for example). We cannot assign it to a Logger<Integer> or Logger<Object> because it may return a Logger<Double>.
The only return type we can assign it to is Logger<?>. This is what java is implicitly assigning it to when you just call Logger.<String>of("hello").map(g). i.e. the following code is ok for your original implementation:
Logger<?> lognum = Logger.<String>of("hello").map(g);

But assigning it to Logger<Number> fails because we can't be sure of the exact return type.
hope this helps!

ohhh, yes I understand it now! Thank you both!


fix: Issue with boxes displaying as icons in EFB map

Issue: https://github.com/flybywiresim/a32nx/issues/4761
A new ControlPanel has been created which includes the existing functions - Polyline measurement, clear polylines, change units of measurement, zoom in and zoom out.
The issue with the icons not displaying correctly was that they weren't icons at all, rather just text characters. Some of these characters were "special" and the glyphs weren't actually present in whichever font was being used in MSFS. To ensure this doesn't happen again, I've used SVG icons from @tabler/icons in the new ControlPanel.
While I couldn't do anything with changing the controls in the polylineMeasure control (which extends off leaflet controls), I've kept it in place and am calling functions against it once instantiated.

Will refactor the A320x EFB once this is merged.

Make sure you don't have purging enabled

Make sure you don't have purging enabled

Hey @Benjozork - can you please elaborate on this one?

If some tailwind classes don't work you might have purging enabled.

@Benjozork what else needs to happen for this to get merged?

I'll test it locally today and get it merged.

@antonyisoardi Found the issue with classes not working.
Purging is force-enabled:

Since purging is not run on every webpack build, previously unused classes are not kept.
I'll make a PR to change this after merging this one.
This did not affect production builds.


Update ohw allowed_organizations list and user images

Ref https://github.com/2i2c-org/infrastructure/issues/1515#issuecomment-1196617428

I have already manually deployed this


Shift shortcut implementation

Hi,
do you think the implementation of the Shift shortcuts could have its place in the library ?

Shift shortcut : hold down the Shift Key, move with arrows and select with Space. It select rows between the first row where the Shift Key was pushed to the one selected.

Hi,
do you think the implementation of the Shift shortcuts could have its place in the library ?

Shift shortcut : hold down the Shift Key, move with arrows and select with Space. It select rows between the first row where the Shift Key was pushed to the one selected.

Yes, very interesting your idea.
I will try to get some time to implement this in future releases.
If you would like to contribute to this implementation I would be very happy.

Tudo bem! Possible to add an event handler to the enter key?


Use shared top-level vendor directory

deleted nfs/trash.yaml and nfs/vendor
Then at top-level directory I did the following:
glide init
glide install -v
glide-vc
depends on https://github.com/kubernetes-incubator/external-storage/pull/10 which I'll merge shortly

this shouldn't affect users of the library which is the main concern. Later today I'll test that by using hostpath-provisioner which should simulate a user experience


Error: Unexpected request: GET No more request expected

Hi,
I've some problem with ionic for communicate with my API...
I try this:
$http({                 url: '/API_Rest/api.php/user',                 method: 'GET',                 params: { name: name, pass: pw }  });
But this error append:

Error: Unexpected request: GET /API_Rest/api.php/user?name=ytj&pass=tyk
No more request expected
at $httpBackend (angular-mocks.js:1211)
at sendReq (ionic.bundle.js:18327)
at $get.serverRequest (ionic.bundle.js:18043)
at processQueue (ionic.bundle.js:21888)
at ionic.bundle.js:21904
at Scope.$get.Scope.$eval (ionic.bundle.js:23100)
at Scope.$get.Scope.$digest (ionic.bundle.js:22916)
at Scope.$get.Scope.$apply (ionic.bundle.js:23205)
at HTMLButtonElement. (ionic.bundle.js:53457)
at HTMLButtonElement.eventHandler (ionic.bundle.js:11713)

I've test with a chrome extension for rest, and the url works!...
So if anyone have a idea!
Thank's!

Greetings @LeoLR!
My sensors indicate that you need to update your issue through our custom issue form. We are now requiring all issues to be submitted this way, to ensure that we have all of the information necessary to fix them as quickly as possible.
Click Here To Update Your Issue
I will have no choice but to close this issue if it is not resubmitted through the form. Please fill out the rest of the form, so that I may use my friendly robot powers to assist you.
Thank you!


Move getXXX functions to methods

I want to override functions(getScrollParent, getCurrentDistance) using extends options (http://vuejs.org/v2/api/#extends)
(For non-scrolling iframe support - use scrollParent to iframe's parent body, but i think this is not good idea support it basically in this library)
So, could you move these functions to vuejs' methods?

Sounds a good idea! I will move functions to methods in the next version. For now, this part of the documentation maybe useful for you.

I forked and moved those functions, and using it now.
Thank you for accepting my suggestion.

Hi @jun9358 , v2.2.0 has been released, include this change, you can try it now, please feedback to here if you find any problem, thanks :D

PERFECT! @PeachScript , thanks~


SP5 Legend: improve supports for rectangle borders

Presently it seems the legend key always draws lines in the center, but some shapes should draw the key as a rectangle with a border

Actually, the whole LegendItem class would benefit from some deep refactoring.


⚠ Thumbnails API Endpoint has degraded performance

In 72e5c66, Thumbnails API Endpoint (https://thumbnails.roblox.com/v1/assets?assetIds=1427869852&format=Png&isCircular=false&size=30x30) experienced degraded performance:

HTTP code: 200
Response time: 4062 ms

Resolved: Thumbnails API Endpoint performance has improved in 11ff876 after 10 minutes.


[ninja] Compile ninja without using ninja when fail to downland ninja binaries.

Is your feature request related to a problem? Please describe.
When I compile on arm linux and arm64 linux. (not cross compiler), vcpkg fail to download the ninja binary. I want to compile ninja without having ninja to start the process of vcpkg. I faild to do so, and compile ninja manually. (There isn't nina-build package for arm and arm64 in apt).
Proposed solution
Compile ninja without using ninja binaries.
Describe alternatives you've considered
I consider to download the binaries in apt, but there isn't a package there.
Additional context
No response

https://packages.debian.org/sid/ninja-build it is?

https://packages.debian.org/sid/ninja-build it is?

I used arm ubuntu docker, and try to download ninja-build with apt and it didn't find the package. I can try it again later and report back.

Have you done a apt update before it?

Yes. I already have experience with Linux.

➜  vcpkg git:(master) ✗ docker run -ti ubuntu /bin/bash
root@9239c21333aa:/# cat /etc/issue
Ubuntu 22.04.2 LTS \n \l

root@9239c21333aa:/# uname -a
Linux 9239c21333aa 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
root@9239c21333aa:/# apt update
Get:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease [270 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [119 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease [108 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [110 kB]
Get:5 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 Packages [17.2 MB]
Get:6 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 Packages [1758 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse arm64 Packages [224 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports jammy/restricted arm64 Packages [24.2 kB]
Get:9 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted arm64 Packages [429 kB]
Get:10 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 Packages [1010 kB]
Get:11 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse arm64 Packages [14.3 kB]
Get:12 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages [1117 kB]
Get:13 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe arm64 Packages [23.3 kB]
Get:14 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main arm64 Packages [48.9 kB]
Get:15 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 Packages [416 kB]
Get:16 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe arm64 Packages [766 kB]
Get:17 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 Packages [10.3 kB]
Get:18 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages [792 kB]
Fetched 24.4 MB in 2s (10.2 MB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@9239c21333aa:/# apt install ninja-build
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  python3
The following NEW packages will be installed:
  ninja-build
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 105 kB of archives.
After this operation, 342 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 ninja-build arm64 1.10.1-1 [105 kB]
Fetched 105 kB in 0s (545 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package ninja-build.
(Reading database ... 4389 files and directories currently installed.)
Preparing to unpack .../ninja-build_1.10.1-1_arm64.deb ...
Unpacking ninja-build (1.10.1-1) ...
Setting up ninja-build (1.10.1-1) ...
root@9239c21333aa:/# ninja
ninja: error: loading 'build.ninja': No such file or directory

Works without problems

I didn't use Ubuntu vanilla image.
I will try again and report back. Thank you for your suggestions.

And I am talking about arm platform.

I want --platform linux/arm/v7

Which usually translates to armhf.


Add LINKER_LANGUAGE option to corrosion_import_crate

Background and Linker Problem
I am developing a library that is intended to be consumed by both C and C++.
The library's core logic is written in Rust, exporting a .h C header and an optional wrapper .hpp C++ header, with tests in C++.
I've started using corrosion to integrate calling cargo with CMake, but noticed (investigating with ldd on Linux and otool -L on MacOS) that the corrosion-cargo-built binary depended on the C++ standard library.
The C++ dependency is absent when invoking cargo on the command line directly and is introduced by corrosion when it sets the CORROSION_LINKER_PREFERENCE variable cmake/Corrosion.cmake which is eventually passed to cargo as CARGO_TARGET_...._LINKER=path/to/cpp_compiler. Reading the code, this logic is skipped when building on Windows with MSVC.
It is a hard requirement for my project that the rust-built library does not depend on C++, as such I've started adding a feature to corrosion to specify which language's linker to pass into the cargo invocation.
Approach
The approach I'm taking is to add an optional LINKER_LANGUAGE parameter to corrosion_import_crate. For my needs, this ends up looking like so:
corrosion_import_crate(
    MANIFEST_PATH Cargo.toml
    FEATURES ffi
    LINKER_LANGUAGE C)

Does this make sense?
P.S.: I've also noticed there's a corrosion_set_linker_language CMake function, but it didn't seem to do anything relevant to my problem.
State of this pull request
I'm raising a draft pull request because, frankly, I'm still learning CMake and I expect more changes are needed before this can be merged in.
Testing
So far I've re-run a subset of the existing tests locally on Linux as so:
# Prepare for testing
rm -fR build
cmake \
  -S . \
  -B build \
  -DCORROSION_VERBOSE_OUTPUT=ON \
  -DCMAKE_C_COMPILER=gcc \
  -DCMAKE_CXX_COMPILER=g++ \
  -GNinja

# Run Config Tests (x86_64 Only)
(cd build &&
cmake \
  --build . --verbose \
  --target test-install
ctest --verbose --build-config Debug)

# Build C++ program linking Rust
(cmake \
  --build build --verbose \
  --target cpp-exe)

# Build Rust program linking C++
(cmake \
  --build build --verbose \
  --target cargo-build_rust-exe)

# Build Rust cdylib and link against C++
(cmake \
  --build build --verbose \
  --target my_program)

This is not exhausitve, but I think it's unlikely I've broken anything.
I certainly haven't tested the new feature though, aside from the low bar of "it works for me".
I would appreciate some guidance on how to progress, especially on the testing front:

Would this be a new directory under test/?
Should I create different tests to with and without the native tools or is this somehow handled by the github actions workflow matrix?
Any idea on how to actually assert if a cargo built library doesn't have a C++ dependency from CMake -- pretty clueless here.

Docs
There's also a matter of documentation: The "LINKER_LANGUAGE" feature would be de facto Mac/Linux only.
Is it OK to just document (and maybe log) that the named argument is ignored on Windows/MSVC?
Naming
Should the parameter name here be changed? Would LINK_AS be a better name to avoid creating confusion with the already existing corrosion_set_linker_language cmake function (that I don't really understand the intended purpose of)?
Thanks!

The C++ dependency is absent when invoking cargo on the command line directly and is introduced by corrosion when it sets the CORROSION_LINKER_PREFERENCE variable cmake/Corrosion.cmake which is eventually passed to cargo as CARGO_TARGET_...._LINKER=path/to/cpp_compiler.

Corrosion currently will select the linker with the highest priority (as determined by CMake). So if you have C++ enabled as a language in your project, The C++ compiler will be selected. (I don't know why it's different for MSVC).

The approach I'm taking is to add an optional LINKER_LANGUAGE parameter to corrosion_import_crate

This should not be a parameter for corrosion_import_crate but rather a target based property.

P.S.: I've also noticed there's a corrosion_set_linker_language CMake function, but it didn't seem to do anything relevant to my problem.

Yes, this function does not work as intended. I wrote up how I view the problem in issue https://github.com/corrosion-rs/corrosion/issues/133. But I got busy with other stuff, so I never ended up fixing it.
As described in the issue I would prefer if we had a new corrosion_set_linker function, which sets a target property (the name should not be LINKER_LANGUAGE, since that is an existing CMake target property). Then when setting CARGO_TARGET_...._LINKER we should set it to the value of the new target property if set, and otherwise set it to the same value as before (i.e. the linker with the highest priority).
I think this approach would also fix your problem. Would you be interested in doing this?

As for testing:

Would this be a new directory under test/?

Yes

Should I create different tests to with and without the native tools or is this somehow handled by the github actions workflow matrix?

This is handled by our github actions matrix.

Any idea on how to actually assert if a cargo built library doesn't have a C++ dependency from CMake -- pretty clueless here

You could try to call a C++ standard library function. This should cause a failure at the linking step if the C++ stdlib is not linked.  Then you just have to tell  ctest that you expected a build-failure for this test - I think this stack overflow answer might point you in the right direction: https://stackoverflow.com/a/30191576

The C++ dependency is absent when invoking cargo on the command line directly and is introduced by corrosion when it sets the CORROSION_LINKER_PREFERENCE variable cmake/Corrosion.cmake which is eventually passed to cargo as CARGO_TARGET_...._LINKER=path/to/cpp_compiler.

Corrosion currently will select the linker with the highest priority (as determined by CMake). So if you have C++ enabled as a language in your project, The C++ compiler will be selected. (I don't know why it's different for MSVC).

The approach I'm taking is to add an optional LINKER_LANGUAGE parameter to corrosion_import_crate

This should not be a parameter for corrosion_import_crate but rather a target based property.

P.S.: I've also noticed there's a corrosion_set_linker_language CMake function, but it didn't seem to do anything relevant to my problem.

Yes, this function does not work as intended. I wrote up how I view the problem in issue #133. But I got busy with other stuff, so I never ended up fixing it.
As described in the issue I would prefer if we had a new corrosion_set_linker function, which sets a target property (the name should not be LINKER_LANGUAGE, since that is an existing CMake target property). Then when setting CARGO_TARGET_...._LINKER we should set it to the value of the new target property if set, and otherwise set it to the same value as before (i.e. the linker with the highest priority).
I think this approach would also fix your problem. Would you be interested in doing this?

I'd be happy to give it a try, but as I mentioned this is my first time using CMake: I would need some pointers and assistance. In the meantime I need the feature urgently and I'll be using my forked repo.
I'm also unclear on what the benefit is of having this be a per-target function: My understanding is that a rust crate may have exactly 0 or 1 libraries defined, in other words, there would only ever by one single target.

https://github.com/corrosion-rs/corrosion/pull/208 added an option to explicitly set the linker for a target, which should also fit your usecase.

Hi @jschwe,
I know it's an old PR, but I just now finally have the cycles to move off my fork and onto your most recent changes.
I've tried using the new feature as suggested, but I couldn't quite figure out how corrosion_set_linker is supposed to work.
This is what I tried:
# Imports `questdb_client` target.
add_subdirectory(corrosion)
corrosion_import_crate(
    MANIFEST_PATH questdb-rs-ffi/Cargo.toml)
corrosion_set_linker(questdb_client C)

The error I get is:
error: linker `C` not found
  |
  = note: No such file or directory (os error 2)

If I compile with cmake --build build -v it looks like it invokes cargo as so:
cd /home/adam/questdb/repos/c-questdb-client/questdb-rs-ffi && /usr/bin/cmake -E env CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=C [...] -- -Cdefault-linker-libraries=yes

I guess what I really need to pass is the path to the actual linker to use.
Is there a separate function for this?
corrosion_set_linker(questdb_client is_there_a_get_linker_for_language_fn_somewhere(C))

More broadly, why is this even a thing? Why even pass a linker in the first place and not just let cargo use its default linker, which will be the C linker by default?

I guess what I really need to pass is the path to the actual linker to use.

Correct, you should pass a linker or linker-driver (e.g. clang / gcc or ld.lld ...).
By default Corrosion sets a suitable linker for you (except for windows-msvc, there is only one option there).

More broadly, why is this even a thing? Why even pass a linker in the first place and not just let cargo use its default linker, which will be the C linker by default? Should I expect something to break?

If you link in C++ code, the C++ standard library must be linked into the final executable. Rust doesn't know that the code we link in is C++. The C++ standard library name is different for clang and gcc. We could of course determine the correct name, but all that is unnecessary, if we just use the CMAKE_CXX_COMPILER as the linker-driver, since it will automatically add the correct c++ std library to the linker line. Corrosion does this by default if at least 1 C++ library is linked into a Cargo executable.
If you are cross-compiling, Rust will select cc as the default linker for many targets. That is just broken because cc will attempt to link for the host target instead of the cross-compile target, and linking will fail. By setting the C (cross-)compiler as the linker-driver Corrosion fixes this issue by default.
The former issue does not affect all targets though, and some users might prefer for Rust to directly call ld.lld or some other linker. hence users can use corrosion_set_linker if they are not happy with the default linker selected by corrosion.

It seems that the default behaviour I was worried about which I noticed when I initally forked corrosion-rs

Yeah, previously simply having C++ enabled as a language would cause corrosion to use the C++ compiler as the linker (which caused the behaviour you saw).


Adding cloud ML scripts

Added two scripts.

scoring.py contains functions to compute different scores and make biases plots
mycolors.py contains color palettes that are handy when plotting maps or scatter plots

Coverage reports (updated automatically):

test_unit: 83%

I'm not sure I agree with this. Perhaps we should devote some time tomorrow
to write this out. There is value to non mass-weighted MSEs especially for
this problem. The mass may be small aloft, but clouds there can have a
large radiative impact.
For now, maybe it's simpler to forget that the "z" dimension and all its
complexity exists...especially since Chris' first suggestion was to treat
this as a grid point local problem and "z" is just another dimension that
we take samples over.
There's been plenty of back and forth on this. I think a pair
programming/whiteboard session will be an efficient way to put this to rest.

Message ID: @.***>


offset and count-by are not working as expected.

Readme includes this:
$ loop 'echo $COUNT' --count-by 2 --offset 10
10
12
14
[ .. ]

When I run it on Mac OS X 10.12.6 with loop 0.3.3 installed per brew instructions I get...
$ loop 'echo $COUNT' --count-by 2 --offset 10
0
1
2
3
4
5
6
7
8
9
10
11
[..]

offset and count-by are not working as expected.

Yep, that definately looks wrong locally to me as well. There was a very large PR that essentially rewrote the project, but I think it introduced a lot of regressions and made the project harder for me to maintain. I might revert if this fix isn't immediately apparent to me..

Okay, this is fixed in published 0.3.4. It was as I assumed - I shouldn't ever accept PR from people with a default avatar!!!


Client entity polling in input system

The current version of InputSystem created the list of entities for the input like this:
    private EntityRef[] getInputEntities() {
        return new EntityRef[]{localPlayer.getClientEntity(), localPlayer.getCharacterEntity()};
    }

This method is called for every input, for every bind. With a short counter i got something like 5k calls per second, which is 5k arrays for the garbage collector and 5k component lookups inside the localPlayer to fetch the character entity.
It is probably best to cache this array in the input system.
Note that the client entity is set after InputSystem.postBegin() is called. Maybe it is possible to change the loading states order, so that the client is initialized before the postBegin are called.
Another option would be to poll less frequently, namely once per update cycle.
A third option is probably to add an event or kind of a notification when the client entity changes.

Closed via #3697.

@eviltak I think you're referencing the wrong issue or PR here? #3697 adds component filtering to the dump entities command. I'm unsure how that fixes this?

The PR also includes commit 6517dc9, which fixes this issue. It wasn't mentioned in the PR description, but I have edited the description to reflect this as well for future documentation!


Suggestion: improve excel-like behaviour

Hi,
thanks for this great project, it's exactly what I've been looking for. However there are two things that refrain me from using the nuget package as it is.

When you open the popup by clicking the button and then clicking the button again, you accidently reorder the button's column instead of just closing the popup. In excel this would simply close the popup.

When you click somewhere on the popups background (which is not a button, checkbox or text) it will automatically close the popup and probably cause some unwanted "clickthrough" effect depending on where you click. Also the "main" window is still active while popup is open, so any click inside the datagrid, the buttons or whatever might cause unwanted behaviour when you just want to close the popup by clicking anywhere outside the popup.

Therefore I added these few lines of code:
in ShowFilterCommand() I added:
// disable popup background clickthrough
popup.MouseDown += (s, eArgs) => eArgs.Handled = true;
// disable datagrid while popup is open
var parent = VisualTreeHelpers.FindAncestor<FilterDataGrid>(popup);
parent.IsEnabled = false;

as the comment says this disables the popup from closing when clicking on the popup background, it also disabled any click events to the main window in the background (e.g. datagrid) while the popup is open.
in void PopupClosed() I'm just reenabling the window again:
var parent = VisualTreeHelpers.FindAncestor<FilterDataGrid>(pop);
parent.IsEnabled = true;

In my opinion these changes make it a bit more intuitive as it behaves a little bit more like Excel itself.

Thank you, any suggestions for improvement are welcome.

I'd just like to add (as I mentioned in my now closed duplicate issues) that clickthrough also happens when clicking disabled components.

This improvement was included in the last commit.
Thank you for your participation
Best regards


Feature Request: Automatic role handling in discord

/u/Aaeriele: I haven't had reason to care about it yet, but perhaps the bot which handles claiming etc could also automatically announce when someone hits a transcription role threshold into #transcription_roles instead of people having to post screenshots

I have a few reservations about this (in no particular order, I say as I number them).

It would be much harder for people to prepare things and post at the exact time they want; for instance, u/Jackie_Rompana was posting poems alongside their screenshots and posting them in the same message as the picture. That sort of thing is harder to set up and time if the bot's auto-announcing stuff.

Tied into the same issue is that I think there's a sense of accomplishment that comes with announcing it yourself (at least, I get one). If someone announced for me I would feel as though my thunder's been stolen somewhat, especially if it were a bot. Maybe it's just me, but there's no feeling like pressing enter to send my flair after powering my way to a new rank, and I don't think I'd have as much motivation to rank up if it's just another automated cog in the machine.

There are also cases when people want to keep transcribing but don't want a new colour on the server, or want to skip over one. I know some people argue that the point of the server roles is to keep track of peoples' gamma, but I think the system is surely secondary to what people enjoy. Ultimately I think the rank system, at least on the server, is optional fun, and if someone doesn't want to rank up that's their right. I know of several people who are many ranks on the Discord below their actual Reddit rank, and I don't bother them because I think their choice not to have the new colour is their choice. Automating announcements to #transcription_roles removes the choice.

Personally I really like this. Because this feature is a bit controversial, the easiest solution is to make this an opt-in feature. I imagine it like this:

In the #rules channel, we set up message for people to react to which grants them a role and opts them into this feature. It's optional similar to the community fun role and the pronouns.
The bot regularly checks the users with this role to see if their rank changed.
If a rank change occurred, the bot updates their role on Discord and posts an announcement in #transcription_roles so that we can celebrate the achievement. Each rank could have a custom congratulatory message (the earlier ones maybe even multiple).

Depending on the number of volunteers who opt into this feature, we need to think about performance. The best way to do this efficiently is probably the following:

When a volunteer opts in, we fetch their volunteer ID once from Blossom and save it. This needs to be updated if they change their display name.
Every couple of seconds, we fetch new completed submissions from Blossom and check if one of the volunteers changed it.
If a volunteer is included, check if the rank updated.


bug(Form Field): Legacy form field input missing placeholder attribute

Reproduction
Legacy form-field appearance from Material examples: https://stackblitz.com/angular/bqmpxokjgve?file=src%2Fapp%2Fform-field-appearance-example.html
Steps to reproduce:

View example above
Inspect input element from legacy form field example

Expected Behavior
placeholder attribute to be available in the dom
Actual Behavior
placeholder attribute missing from the dom
Environment

Angular: 10.2.0
CDK/Material: 10.2.6
Browser(s): Chrome / Edge
Operating System (e.g. Windows, macOS, Ubuntu): Windows

For context, the form field with the legacy appearance has a feature where it turns the placeholder into the form field label, if the form field doesn't have have a mat-label element. This is a problem for screen readers, because they'll read out the same label twice on focus. In order to resolve the accessibility issue, a couple of months ago we started removing the placeholder from the DOM completely.
That being said, we might've been a bit too aggressive. Right now we're using the _hideControlPlaceholder method which hides the placeholder when the label isn't floating. We should make it so the logic only runs for the legacy appearance and if there isn't a mat-label.


MakeCode extension compatibility

Software running on a new micro:bit uses CODAL (micro:bit V1 uses the DAL) and as a result no longer includes the mbed platform. The whole microbit-DAL API is implemented in CODAL as a compatibility layer so the same code can compile and run on any micro:bit, irrespective of hardware version.
Extensions that do not compile for V2 will still be available for V1 boards, but will be disabled in V2 builds. Users will see a runtime error on the micro:bit V2 (929)
To ease the transistion away from mbed, we have also implemented the most common mbed classes in the compat layers of CODAL. These should work in most use cases, but there may be a few edge cases where the behaviour is not identical - please file CODAL bugs if you encounter this. Extensions are encouraged to move to the DAL/CODAL model, using the uBit object to ensure compatibility with all hardware.
In the future, all extensions should target the common microbit-dal API. We will not approve new extensions that use the mbed compatibility layer.
The mbed classes implemented are DigitalIn, DigitalOut, InterruptIn, Timer, Ticker, Timeout, PwmOut and can be found here.
Problems with compilation break down into roughly three categories:
1. Use of mbed APIs that are in the compatibility layer, but no inclusion of mbed.h
The following mbed classes are implemented in the compatibility layer:
PwmOut, InterruptIn, DigitalIn, DigitalOut, Ticker, Timer
If you rely on any of these classes you now need to explicitly include mbed.h (whereas previousy microbit.h or pxt.h would implicitly include that). For many extensions, just including mbed.h will resolve outstanding compilation failures.
2. Use of mbed APIs that are not included in the compatibility layer, or microbit-dal APIs that need different constructors
If you use any other part of mbed than those listed above, the quickest option is to move to the CODAL APIs right away, either using #ifdef mbcodal to make V2 specific code, or using the microbit-dal API that is common to V1 and V2.
There are some parts of the compatibility layer that we are considering extending to; but these are still WIP - if your extension requires these and this will also reslove future compatibility issues, please respond on this ticket.

MicroBitI2C / NRF52I2C
MicroBitSerial
MicroBitFont

3. Use of the mbed Bluetooth APIs

Use of mbed BLE

The core BLE API behaves the same in CODAL as the DAL, but is implemented by directly using nRF5SDK, without the mbed layer
https://github.com/lancaster-university/codal-microbit-v2/tree/master/inc/bluetooth
If you are using the existing mbed BLE

Going forward the extension approval process will require extensions to not use mbed.

Typedef MicroBitFont https://github.com/lancaster-university/codal-microbit-v2/pull/32

codal::Pin->name is a PinNumber, @finneyj is that correct?
https://github.com/lancaster-university/codal-core/blob/7132daedac411f636df46447025c1e4fcb7bc1e6/inc/driver-models/Pin.h#L100
Appears to be the reason a few extensions aren't compatible with Button
e.g.
/home/build/prjclone/pxtapp/pxt-kitronik-zip-64/zip64.cpp:18:61: error: invalid conversion from 'codal::PinNumber {aka unsigned char}' to 'PinName' [-fpermissive]
 #define ALLOC_PIN_BUTTON(id) new MicroBitButton(getPin(id)->name, id, MICROBIT_BUTTON_ALL_EVENTS, PullUp);

Fix for incompatible types: codal::Pin->name is a PinNumber https://github.com/lancaster-university/codal-microbit-v2/pull/34

Fix is in the latest codal-microbit-v2 tag, and will need to be pulled through to MakeCode
https://github.com/lancaster-university/codal-microbit-v2/commit/2dc5d29a12e0ca454d478fd523be8b09f50b21a0
Button, Serial, and I2C fixes included

Hi, I'd like to know what is the timeline for extending the compatibility layer to MicroBitSerial? Our library (mu-opensource/pxt-muvision) depends on it for serial communication.
Thanks!

Hi, I'd like to know what is the timeline for extending the compatibility layer to MicroBitSerial? Our library (mu-opensource/pxt-muvision) depends on it for serial communication.
Thanks!


Baidu drive not accessible

Please can you place the IR152 checkpoints on google drive? basically baidu drive is not accessible.
Thanks

https://mega.nz/#F!EZsnEbbJ!qp4nVBBRKnAWYzyoiMfXQA

Hi, we have updated the links, thanks.

@ZhaoJ9014
how can we download r152 model ? Baidu not accessible from EU
any other link that works?
Best


Added Saturday to table

Table wasn't rendering schedule for Saturday, but there are some lectures on Saturdays as well.

Yeah I totally forgot people have lectures on saturday. Thank you.


feat: Labels settings for offchain spaces

Towards https://github.com/snapshot-labs/workflow/issues/143
Summary:

Add new tab "labels" to off-chain space settings
Admins should be able to add/edit/delete labels

How to test:

Go to labels settings on your off-chain spaces, ex: http://localhost:8080/#/s:thanku.eth/settings
You should be able to see new tab labels (only in DEV mode for now)
Should match design https://www.figma.com/design/hmHTau1Y1KYzrBBKLQr5QV/%23design?node-id=6906-14364&node-type=canvas&t=ui9jA40gPEdxm132-0
Will open modals instead of new design https://discord.com/channels/955773041898573854/1287217523619528766/1290306249421881395
You should be able to add new labels, edit or delete them

TODO:

[ ] Merge only when we able to show labels on proposals and editor

We should not have border on label

Also we should add a "+" on "Add label" button, and make it appear on bottom of the page.
Any reason to not add the same section for SX spaces?

I believe border was added so that it's always readable, if someone select white label it will look good on dark theme, but on light theme it won't be visible:

Looks good to me, so we are waiting for another PR to show those on proposal page before we can merge this?

Looks good to me, so we are waiting for another PR to show those on proposal page before we can merge this?

We can merge it if you are ok, some admins may wonder what these settings are related to or we can keep it hidden here for now:
https://github.com/snapshot-labs/sx-monorepo/blob/2fac99a015484c69b80fa9f0422e3a70ee61db1d/apps/ui/src/views/Space/Settings.vue#L139

Restricting it to only dev mode for now (suggested by @Sekhmet) we can enable it on prod once other functionalities are live

I can't see the "Labels" tab anymore in the space settings for some reason 🤔

I can't see the "Labels" tab anymore in the space settings for some reason 🤔
Otherwise it looks good

Hey yes, disabled it for now so we don't confuse admins https://github.com/snapshot-labs/sx-monorepo/pull/829#issuecomment-2393565412, will enable it back In https://github.com/snapshot-labs/sx-monorepo/pull/838


它会让我的鼠标左键不工作

Lately when I use it, the left mouse button suddenly doesn't work unless I close the AutoHotPie process in the task manager.

This is a known issue (#38) but for the time being I've added a band-aid fix:
Esc will unblock LMB when the "Escape key exits pie menu" setting is enabled.

@chenpaner which of the 4 "activation modes" are you using for the pie menu?

您为饼图菜单使用了 4 种“激活模式”中的哪一种？

First


AlertmanagerConfig doesn't appear to save dropdown fields on Rancher v2.6

Setup

Rancher version: v2.6-head, and also v2.6.11-rc9
Browser type & version: Google Chrome 110.0.5481.177, Mozilla Firefox 109.0.1
Monitoring Chart version: 100.2.0+up40.1.2

This bug was tested also in v2.7-head and is not present in the newer version; dropdowns behave correctly in v2.7.
Describe the bug
When editing email receivers under Monitoring->AlertManagerConfig, it seems that all of the form fields are saving correctly except for dropdown elements, which affects secret selection. The form appears to save correctly, but the contents of the dropdown do not make it into the resulting .yaml configuration.
To Reproduce
First, create a secret under Storage->Secrets. Create a new AlertManageConfig, then add an email receiver. Along with the other required information, attempt to select the secret you created, along with the key. Then save the receiver.
Result
To verify the buggy behavior, open the created receiver back up and inspect the Email configuration; now the dropdown is empty.
This bug also occurs when editing existing receivers. If the .yaml already contains valid secret configuration then this is correctly populated into the dropdown, but any changes to the dropdowns still do not save. In this case, it's impossible to switch to a different secret using the form alone. To workaround, one must hand-edit the YAML config instead.
Expected Result
The value the user enters into the form should be the value that is saved in the underlying .yaml
Screenshots

Additional context
I bumped into this while investigating SURE-4788 and believe it to be related.

Putting this into 2.6.x since this doesn't look like a blocker for 2.6.11. @nflynt correct me if I'm wrong since you've mentioned this in a backend blocker: https://github.com/rancher/rancher/issues/40307

@nflynt do you know what this was like in 2.6.9 or 10? We're curious if this is a regression or not.

This is definitely a bug, but I'm not seeing a regression. I'm able to reproduce the same behavior in 2.6.10 & 2.6.11.

I've not been able to reproduce it in v2.6.5 specifically, but I haven't had time to try on any of the inbetween versions yet. Notably v2.6.5 only has up to monitoring chart 100.1.3+up19.0.3 available due to k8s version requirements for the newer charts. I'm no longer convinced this dropdowns thing is causing https://github.com/rancher/rancher/issues/40307, that seems to be something else entirely.

Doubtful it's a blocker. Nicholas found it while doing phase 1 reproduction on a ticket that has been open since June of 2022.

On the forensic side of what happened, @mantis-toboggan-md found that we had a fix in 2.6.7 for this but this broke with a Harvester update later on. So not a true regression but something that broke since it first came in.
https://github.com/rancher/dashboard/pull/8327 will refix this. @bmdepesa to let us know if this can sneak into 2.6.11 based on QA capacity.

Based on QA workload, this won't make it into 2.6.11. Holding in 2.6.x for now.

This is go for 2.6.next2.

Merged fix into release-2.6 branch.


Question: What are the character ranges?

Hi,
This is more of a question about the character ranges; what is the process to get the entire character range to ensure that any character for a given language can be properly drawn?
I am aware of the http://unicode.org website; but it is unclear to me how to know precisely which character ranges are required for each language; and in a way such that outdated/unused characters are excluded from the ranges.
I realize that this is probably not the best place to ask the question; but given that you have experience in this area, your input would be very much appreciated.
Many thanks!

Hi,
There are a couple of ways you can get your character ranges. The way that you choose depends on your language.
Persian and Arabic ranges in this plugin are based on the output of RTLSupport.FixRTL method.
I simply wrote all of possible characters into a file.
If you're not using this plugin or you want to get ranges for a difference language, here are two solutions:
1- Gather all characters in a .txt file, Then write a C# program to print unicode representation of every character.
This line of C# code gets unicode representation of a char variable:
string unicode = ((int) charVariable).ToString("X4");
Also you probably need to write another line of code to ignore duplicate unicode hex values.
2- Extract characters from a font file.
If you have a specific font file that covers all characters, you can open it with font browsing tools and copy all unicode values from it.
Windows has a font browser program called "Character Map", but it's not built for this purpose. You better find a better tool online if you want to use this solution.
If none these solutions work for you, There's not much you can do about outdated/unused characters in design-time.
If you insist to remove unused characters, first you need to include every possible character that your language has from unicode list provided in unicode.org, Then you can track usage of every character and remove least used characters every time you update your game in PlayStore/AppStore.
Best Regards!


(proposal) adds a management command for converting all tables to innodb

Additions

a new management command, convert_to_innodb, which ensures all Django tables are in innodb.

Testing

run manage.py convert_to_innodb after importing a recent dump
manage.py dbshell to enter the MySQL Shell, and SHOW TABLE STATUS will allow you to confirm that the deed is done.

Checklist

[ ] PR has an informative and human-readable title
[ ] Changes are limited to a single goal (no scope creep)
[ ] Code can be automatically merged (no conflicts)
[ ] Code follows the standards laid out in the development playbook
[ ] Passes all existing automated tests
[ ] New functions include new tests
[ ] New functions are documented (with a description, list of inputs, and expected output)
[ ] Placeholder code is flagged
[ ] Visually tested in supported browsers and devices
[ ] Project documentation has been updated
[ ] Reviewers requested with the Assignee tool :arrow_right:

@rosskarchner thanks for the lightning fix!
I run into this error:
django.db.utils.OperationalError: (1347, "'v1.knowledgebase_question_ratings' is not BASE TABLE")

hmm-- I'll look at that. I'm working on another PR that restores the MyISAm default, and then this PR will be for executing the switch

The tables that fail have TABLE TYPE of VIEW, not BASE TABLE.
unfortunately, SHOW TABLE STATUS doesn't expose TABLE TYPE.
There are only 4 VIEW tables.
+------------------------------------------------------+--------+------------+
| TABLE_NAME                                           | ENGINE | TABLE_TYPE |
+------------------------------------------------------+--------+------------+
| knowledgebase_question_ratings                       | NULL   | VIEW       |
| knowledgebase_question_related_questions             | MyISAM | BASE TABLE |
| knowledgebase_question_submissions                   | NULL   | VIEW       |

...

| vw_jobs_foia_request               | NULL   | VIEW       |
| vw_reg_comments                    | NULL   | VIEW       |

Let's put this on the backlog to do next sprint.

Closing this as we're moving from MySQL to PostgreSQL.