My code broke when I switched to Geared

Hi,
I purchased Geared to get improved performance with large charts being updated every second.
I am running Windows 10 Pro with VS 2015, all updates done.  Windows version is Build 14393.s1_release_inmarket.170303-1614.
.NET Framework 4.5
LiveCharts is v0.9.5
LiveCharts.Geared is v1.2.7
LiveCharts.WinForms is v0.9.5
LiveChartsWPF is v0.9.5
I am writing WinForms C# application.
My code before adding Geared worked fine except for bogging down when the number of displayed points became large.  The essential elements before adding Geared were:
using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Wpf;
using LiveCharts.WinForms;
using LiveCharts.Geared;
using LiveCharts.Geared.Geometries;
using LiveCharts.Events;
    public ChartValues<ObservablePoint> dopplerPt { get; set; }
    public ChartValues<ObservablePoint> headingPt { get; set; }
    public ChartValues<ObservablePoint> speedPt { get; set; }
    public SeriesCollection dopplerPlots { get; set; }

        ChartValues<ObservablePoint> dopplerPt = new ChartValues<ObservablePoint>();
        ChartValues<ObservablePoint> headingPt = new ChartValues<ObservablePoint>();
        ChartValues<ObservablePoint> speedPt = new ChartValues<ObservablePoint>();

        System.Windows.Media.BrushConverter converter = new System.Windows.Media.BrushConverter();
        var brush = (System.Windows.Media.Brush)converter.ConvertFromString("#000000");
        if(brush.CanFreeze)
        {
            brush.Freeze();
        }
        Separator separator = new Separator();

        dopplerPlots = new SeriesCollection
        {
            new ScatterSeries
            {
            Title = "Doppler Shift",
            Values = dopplerPt,
            PointGeometry = DefaultGeometries.Diamond,
            MaxPointShapeDiameter =10,
            FontSize = 8,
            ScalesYAt = 0,
            Fill = brush
            },
            new ScatterSeries
            {
            Title = "Heading",
            Values = headingPt,
            PointGeometry = DefaultGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt = 1
            },
            new ScatterSeries
            {
            Title = "Speed",
            Values = speedPt,
            PointGeometry = DefaultGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt =2
            }
        };

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Hz",
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            LabelFormatter = value => ((Math.Abs(rateDopChange) <= 0.01) && (dopplerDataList.Count < 100)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.01) && (Math.Abs(rateDopChange) <= 0.02) && (dopplerDataList.Count < 50)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.02) && (Math.Abs(rateDopChange) <= 0.03) && (dopplerDataList.Count < 42)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.03) && (Math.Abs(rateDopChange) <= 0.04) && (dopplerDataList.Count < 34)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.04) && (Math.Abs(rateDopChange) <= 0.05) && (dopplerDataList.Count < 25)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.05) && (Math.Abs(rateDopChange) <= 0.1) && (dopplerDataList.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.1) && (Math.Abs(rateDopChange) <= 0.5) && (dopplerDataList.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.5) && (Math.Abs(rateDopChange) <= 1.0) && (dopplerDataList.Count < 10)) ? value.ToString("F2") :
            Math.Round(value).ToString(),
            Separator = new Separator
            {
                Stroke = brush
            },
        });

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "Degrees  (0 - 360)",
            ShowLabels = false,
            MaxValue = 370,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            },
        });
        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "km/h",
            MaxValue = 1300,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            }
        });
        dopGraph.AxisX.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Seconds",
            MinValue = 0,
            MinRange = 10,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                Stroke = brush
            }
        });

        dopGraph.Hoverable = false;
        dopGraph.DataTooltip = null;
        dopGraph.DisableAnimations = false;
        dopGraph.Series = dopplerPlots;
        dopGraph.LegendLocation = LegendLocation.Top;
        dopGraph.ForeColor = Color.Black;

                foreach (var series in dopplerPlots)
                {
                    if (series.Title == "Doppler Shift")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, Doppler));
                    }
                    else if (series.Title == "Heading")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, heading));
                    }
                    else if (series.Title == "Speed")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, speed));
                    }
                }

After Converting to Geared this became:
using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Wpf;
using LiveCharts.WinForms;
using LiveCharts.Geared;
using LiveCharts.Geared.Geometries;
using LiveCharts.Events;
    public GearedValues<ObservablePoint> dopplerPt { get; set; }
    public GearedValues<ObservablePoint> headingPt { get; set; }
    public GearedValues<ObservablePoint> speedPt { get; set; }
    public SeriesCollection dopplerPlots { get; set; }

        GearedValues<ObservablePoint> dopplerPt = new GearedValues<ObservablePoint>();
        GearedValues<ObservablePoint> headingPt = new GearedValues<ObservablePoint>();
        GearedValues<ObservablePoint> speedPt = new GearedValues<ObservablePoint>();

        System.Windows.Media.BrushConverter converter = new System.Windows.Media.BrushConverter();
        var brush = (System.Windows.Media.Brush)converter.ConvertFromString("#000000");
        if(brush.CanFreeze)
        {
            brush.Freeze();
        }
        Separator separator = new Separator();

        dopplerPlots = new SeriesCollection
        {
            new GScatterSeries
            {
            Title = "Doppler Shift",
            Values = dopplerPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter =10,
            FontSize = 8,
            ScalesYAt = 0,
            Fill = brush
            },
            new GScatterSeries
            {
            Title = "Heading",
            Values = headingPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt = 1
            },
            new GScatterSeries
            {
            Title = "Speed",
            Values = speedPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt =2
            }
        };

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Hz",
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            LabelFormatter = value => ((Math.Abs(rateDopChange) <= 0.01) && (dopplerDataList.Count < 100)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.01) && (Math.Abs(rateDopChange) <= 0.02) && (dopplerDataList.Count < 50)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.02) && (Math.Abs(rateDopChange) <= 0.03) && (dopplerDataList.Count < 42)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.03) && (Math.Abs(rateDopChange) <= 0.04) && (dopplerDataList.Count < 34)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.04) && (Math.Abs(rateDopChange) <= 0.05) && (dopplerDataList.Count < 25)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.05) && (Math.Abs(rateDopChange) <= 0.1) && (dopplerDataList.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.1) && (Math.Abs(rateDopChange) <= 0.5) && (dopplerDataList.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.5) && (Math.Abs(rateDopChange) <= 1.0) && (dopplerDataList.Count < 10)) ? value.ToString("F2") :
            Math.Round(value).ToString(),
            Separator = new Separator
            {
                Stroke = brush
            },
        });

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "Degrees  (0 - 360)",
            ShowLabels = false,
            MaxValue = 370,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            },
        });
        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "km/h",
            MaxValue = 1300,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            }
        });
        dopGraph.AxisX.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Seconds",
            MinValue = 0,
            MinRange = 10,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                Stroke = brush
            }
        });

        dopGraph.Hoverable = false;
        dopGraph.DataTooltip = null;
        dopGraph.DisableAnimations = false;
        dopGraph.Series = dopplerPlots;
        dopGraph.LegendLocation = LegendLocation.Top;
        dopGraph.ForeColor = Color.Black;

                foreach (var series in dopplerPlots)
                {
                    if (series.Title == "Doppler Shift")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, Doppler));
                    }
                    else if (series.Title == "Heading")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, heading));
                    }
                    else if (series.Title == "Speed")
                    {
                        series.Values.Add(new ObservablePoint(iimandop, speed));
                    }
                }

This crashes with the error:
System.IndexOutOfRangeException was unhandled
HResult=-2146233080
Message=Index was outside the bounds of the array.
Source=LiveCharts.Geared
StackTrace:
at LiveCharts.Geared.GearedValues1.e.b()        at System.Linq.Buffer1..ctor(IEnumerable1 source)        at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source)
at LiveCharts.Geared.GearedValues`1.GetPoints(ISeriesView series)
at l.d(Brush A_0, Brush A_1, Series A_2)
at LiveCharts.Geared.GearedSeries.OnSeriesUpdateStart()
at LiveCharts.ChartUpdater.Update(Boolean restartsAnimations, Boolean force) in C:\Users\btord\Source\Repos\Live-Charts\Core40\ChartUpdater.cs:line 122
at LiveCharts.Wpf.Components.ChartUpdater.UpdaterTick(Boolean restartView, Boolean force) in C:\Users\btord\Source\Repos\Live-Charts\WpfView\Components\ChartUpdater.cs:line 88
at LiveCharts.Wpf.Components.ChartUpdater.OnTimerOnTick(Object sender, EventArgs args) in C:\Users\btord\Source\Repos\Live-Charts\WpfView\Components\ChartUpdater.cs:line 74
at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Demo.WindowsForms.Program.Main() in E:\AirplaneScatter\AircraftScatter_2017_ThreadSafeNewGeared_TestOnly\Demo.WindowsForms\Program.cs:line 30
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Nothing has changed except for the code changes above.  I can't see what I am doing wrong...again, code worked fine before Geared was purchased and introduced into the code.
I get the same result using ObservablePoint or ScatterPoint.
I am sure it is something I don't understand in the changes needed when switching to geared, but I have been reading the source and Googling for info for 2 days and still can't figure it out so I am posting for help.
Thanks in advance for your help!
Extra notes
I would like to be able to use Geared.
I am using

Live-Charts version
LiveCharts is v0.9.5
LiveCharts.Geared is v1.2.7
LiveCharts.WinForms is v0.9.5
LiveChartsWPF is v0.9.5

.Net Version
.NET Framework 4.5

Windows
Windows 10 Pro with VS 2015, all updates done.  Windows version is Build 14393.s1_release_inmarket.170303-1614.

Hi
I am sorry for the issue you are facing I created a repository tying to reproduce the error with the info you provided, and I was not able to get the exception, I think I the exception is not caused here.
In my opinion this exception could occur in the way you are updating the chart, specially in the next snippet:
foreach (var series in dopplerPlots)
        {
            if (series.Title == "Doppler Shift")
            {
                series.Values.Add(new ObservablePoint(9, 9));
            }
            else if (series.Title == "Heading")
            {
                series.Values.Add(new ObservablePoint(8, 8));
            }
            else if (series.Title == "Speed")
            {
                series.Values.Add(new ObservablePoint(7, 7));
            }
        }

Can I please now more about how you are calling this part of the code and how often you are?
Please see take a look at my repository and let me know what is the difference between your code, specially the way you are updating the data, notice I am only updating the data once, in the constructor of the Window
`

The repo link:
https://github.com/beto-rodriguez/w3zsIssue
The interesting part:
https://github.com/beto-rodriguez/w3zsIssue/blob/master/Testing.Winforms/Form1.cs

Hi Alberto,
Thanks for the quick response!  I still get the same error when I substitute in my program the code you used:
            series.Values.Add(new ObservablePoint(7, 7));

for my previous code:
   series.Values.Add(new ObservablePoint(totalsecs, Doppler));

These series.Values.Add statements are called by a Systems.Windows.Forms.timer once a second.
My code is overall complex but the path to the series.Value.Add is straightforward, being just the timer method with some if statements and calculations preceding the  series.Value.Add statements.  The series.Values.Add statements are within an extended "try" block but I don't think that should cause this issue..
Your w3szIssue code runs fine here when I run it as a separate project, even when I add in all of the references and using namespace declarations that I used in my project.  But if I add a button to the form, even if it does nothing, then your code fails again at line 122 of ChartUpdater.cs, but this time with an out of memory error:
System.OutOfMemoryException was unhandled
HResult=-2147024882
Message=Exception of type 'System.OutOfMemoryException' was thrown.
Source=LiveCharts.Geared
StackTrace:
at LiveCharts.Geared.GearedValues1.e.b()        at System.Linq.Buffer1..ctor(IEnumerable1 source)        at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source)
at LiveCharts.Geared.GearedValues`1.GetPoints(ISeriesView series)
at l.d(Brush A_0, Brush A_1, Series A_2)
at LiveCharts.Geared.GearedSeries.OnSeriesUpdateStart()
at LiveCharts.ChartUpdater.Update(Boolean restartsAnimations, Boolean force) in C:\Users\btord\Source\Repos\Live-Charts\Core40\ChartUpdater.cs:line 122
I must say that I did not realize that the series.Values.Add statement was only supposed to be called once, and I was calling it every second.
So I have changed my code to:
using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Geared;
using LiveCharts.Geared.Geometries;
using LiveCharts.Wpf;
//.......................
    public GearedValues<ObservablePoint> dopplerPt { get; set; }
    public GearedValues<ObservablePoint> headingPt { get; set; }
    public GearedValues<ObservablePoint> speedPt { get; set; }
    public SeriesCollection dopplerPlots { get; set; }

//...........................
        dopplerPt = new GearedValues<ObservablePoint>();
        headingPt = new GearedValues<ObservablePoint>();
        speedPt = new GearedValues<ObservablePoint>();

        System.Windows.Media.BrushConverter converter = new System.Windows.Media.BrushConverter();
        var brush = (System.Windows.Media.Brush)converter.ConvertFromString("#000000");
        if(brush.CanFreeze)
        {
            brush.Freeze();
        }
        Separator separator = new Separator();

        dopplerPlots = new SeriesCollection
        {
            new GScatterSeries
            {
            Title = "Doppler Shift",
            Values = dopplerPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter =10,
            FontSize = 8,
            ScalesYAt = 0,
            Fill = brush
            },
            new GScatterSeries
            {
            Title = "Heading",
            Values = headingPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt = 1
            },
            new GScatterSeries
            {
            Title = "Speed",
            Values = speedPt,
            GearedPointGeometry = GearedGeometries.Diamond,
            MaxPointShapeDiameter = 8,
            FontSize = 8,
            ScalesYAt =2
            }
        };

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Hz",
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
   //         LabelFormatter = value => ((Math.Abs(rateDopChange) <= 0.5) && (dopplerPlots.Count < 100)) ? value.ToString("F2") : Math.Round(value).ToString(),
            LabelFormatter = value => ((Math.Abs(rateDopChange) <= 0.01) && (dopplerPlots.Count < 100)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.01) && (Math.Abs(rateDopChange) <= 0.02) && (dopplerPlots.Count < 50)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.02) && (Math.Abs(rateDopChange) <= 0.03) && (dopplerPlots.Count < 42)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.03) && (Math.Abs(rateDopChange) <= 0.04) && (dopplerPlots.Count < 34)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.04) && (Math.Abs(rateDopChange) <= 0.05) && (dopplerPlots.Count < 25)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.05) && (Math.Abs(rateDopChange) <= 0.1) && (dopplerPlots.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.1) && (Math.Abs(rateDopChange) <= 0.5) && (dopplerPlots.Count < 20)) ? value.ToString("F2") :
            ((Math.Abs(rateDopChange) > 0.5) && (Math.Abs(rateDopChange) <= 1.0) && (dopplerPlots.Count < 10)) ? value.ToString("F2") :
            Math.Round(value).ToString(),
           Separator = new Separator
            {
                Stroke = brush
            },
        });

        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "Degrees  (0 - 360)",
            ShowLabels = false,
            MaxValue = 370,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            },
        });
        dopGraph.AxisY.Add(new Axis
        {
            Position = AxisPosition.RightTop,
            Title = "km/h",
            MaxValue = 1300,
            MinValue = 0,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                IsEnabled = false
            }
        });
        dopGraph.AxisX.Add(new Axis
        {
            Position = AxisPosition.LeftBottom,
            Title = "Seconds",
            MinValue = double.NaN,
            MinRange = 10,
            Foreground = brush,
            FontWeight = System.Windows.FontWeights.Bold,
            FontSize = 15,
            Separator = new Separator
            {
                Stroke = brush
            }
        });

        dopGraph.Hoverable = false;
        dopGraph.DataTooltip = null;
        dopGraph.DisableAnimations = false;
        dopGraph.Series = dopplerPlots;
        dopGraph.LegendLocation = LegendLocation.Top;

//...........................................
and the timer click each second just runs:
dopplerPt.Add(new ObservablePoint(totalsecs, Doppler));
speedPt.Add(new ObservablePoint(totalsecs, speed));
headingPt.Add(new ObservablePoint(totalsecs, heading));
I still get the out of range error at line 122 of ChartUpdater.cs.
I hope that the above sheds some light on things.
Thanks again, Alberto!

I am really sorry for the issue you are facing, In my opinion this seems an issue from my side, I will try to reproduce, please feel free to mail me at<EMAIL_ADDRESS>I can try to debug your code with you, if you agree.
I'll try to repro and let you know.
Again I am really sorry for the issue. I keep investigating, will be back with more info.

Thanks, Alberto!  You are great :)
My code is more than 11,750 lines;  so I will make a small program from the relevant parts of the code which are a tiny fraction of the whole and test it here to make sure it fails in the same way as the whole package.  Then I will send it to you.  Is it OK to send it as a zip to your email address<EMAIL_ADDRESS>Thanks again, Alberto!  I really appreciate your helpfulness, and LiveCharts is great too!

The zip would help a lot, thanks!


[System Monitor] ...

Extension
https://www.raycast.com/hossammourad/raycast-system-monitor
Description
Everytime you open the extension the task PMSET spikes multiple times to 100%
the moment you close the extension through raycast it falls to within normal boundaries.
Steps To Reproduce
open the extensions
See PMSET jump to 100% multipletimes

Current Behaviour
No response
Expected Behaviour
No response

@victorbertels I'm not sure if this can be considered as a bug. PMSET is used to gather information about power/battery.
Would it be enough to simply hide pmset from the processes list?

@victorbertels I'm not sure if this can be considered as a bug. PMSET is used to gather information about power/battery.
Would it be enough to simply hide pmset from the processes list?

I seem to have the exact same issue. Before opening System Monitor, PMSET isn't on the process list at all (in the Activity Monitor), and my total CPU load lies at around 25%. Once I open the System Monitor, my CPU quickly spikes very high towards the maximum load.

I have the same problem, but when I open an extension, it immediately uses 100% of the CPU and hangs my laptop


Pb variables with instanciation of metaflow with eks aws

Hello
Thank you for these great ressources, I am trying to use and deploy meta flow on aws with kubernetes with these given instructions:
https://github.com/outerbounds/terraform-aws-metaflow/tree/master/examples/eks_argo
When I generate my config, with terraform init, there is still the deprecated name for the db that is being generated
.terraform/modules/metaflow-datastore/modules/datastore/rds.tf
as fixed by: https://github.com/outerbounds/terraform-aws-metaflow/pull/65
I also have unsupported arguments:
27 enable_classiclink               = var.enable_classiclink
28 enable_classiclink_dns_support   = var.enable_classiclink_dns_support
1237 enable_classiclink   = var.default_vpc_enable_classiclink
in the generated file .terraform/modules/vpc/main.tf
Did anyone encounter this issue also?
I modify directly these generated files by commenting on these lines and modifying the name to db_name (very bad practice I know). and it deployed correctly my metaflow stack.
Thank you

I also see these errors on the minimal example:
https://github.com/outerbounds/terraform-aws-metaflow/tree/master/examples/minimal


How is the complexity calculated?

I would like to understand how is the complexity calculated in order to fine tune it, does every field sum 1 to it?
For example, I would like to count each SimpleObject as one, no matter how many fields does it have (as they're all fetched together). However computed fields on complex objects would sum complexity, depending on the cost of that compute (but again, no matter how many fields does the simple object they return, unless they're calculated)

Each field will cause the complexity to +1, but this behavior can be customized.
The following code can specify the complexity of value to be 1.
#[graphql(complexity = 1)]
async fn value(&self) -> SimpleObject {
todo!()
}

https://async-graphql.github.io/async-graphql/en/depth_and_complexity.html#custom-complexity-calculation

Thanks @sunli829! But I'm not sure how nesting would work
I'll propose a scenario to understand what I'm trying to achieve:
#[derive(SimpleObject)]
#[graphql(complex)]
pub struct MyComplexObject {
    pub id: ID,
    pub foo: String,
}
#[derive(SimpleObject)]
#[graphql(complex)]
pub struct MyNestedObject{
    pub id: ID,
    pub bar: String,
}

#[Object]
impl Query {
    #[graphql(complexity = 1)]
    async fn value(&self) -> MyComplexObject{
        todo!()
    }
}

#[ComplexObject]
impl MyComplexObject {
    #[graphql(complexity = 3)]
    async fn complex_value(&self) -> i32{
        todo!()
    }
    #[graphql(complexity = 2)]
    async fn nested_value(&self) -> MyNestedObject {
        todo!()
    }
}
#[ComplexObject]
impl MyNestedObject {
    #[graphql(complexity = 4)]
    async fn another_complex_value(&self) -> i32{
        todo!()
    }
}

I would expect the following complexities:

query { value { id, foo } } = 1
query { value { id, foo, complex_value } } = 1 + 3
query { value { id, foo, nested_value { id, bar } } } = 1 + 2
query { value { id, foo, nested_value { id, another_complex_value } } } = 1 + 2 + 4
query { value { id, foo, complex_value, nested_value { id, another_complex_value } } } = 1 + 3 + 2 + 4

Is that how it works?

query { value { id, foo } } = 1

The complexity is 3, value = 1, id = 1, foo = 1, the sum is 3.
If you want its complexity to be 1, you need to set the complexity of id and value to 0, but currently the complexity of the fields in SimpleObject cannot be specified, I will add it.
#[derive(SimpleObject)]
pub struct MyComplexObject {
    #[graphql(complexity = 0)]
    pub id: ID,
    #[graphql(complexity = 0)]
    pub foo: String,
}

When the fields in SimpleObject support specifying complexity, you can achieve the results you want.


kernel/timeout: next_timeout() is returning negative number of ticks

Describe the bug
next_timeout() in kernel/timeout.c has the following line of code:
int32_t ret = to == NULL ? MAX_WAIT : MAX(0, to->dticks - ticks_elapsed);
The intent seems to be if the requested timeout has already elapsed and to->dticks - ticks_elapsed is negative, it should set ret to 0 (if to is not NULL).
However, this is not what happens in practice, given to->dticks is an unsigned number. MAX() would internally do an unsigned comparison, which means the result of to->dticks - ticks_elapsed would be returned, and casted to 'int32_t' in ret.
This leads to problems for example with calls like this:
z_clock_set_timeout(next_timeout(), false);
A negative number of ticks would be passed to the driver, which may or may not deal with it correctly. And if it so happen that to->dticks - ticks_elapsed is -1, an infinite/large timeout would be set given it corresponds to K_FOREVER.
To Reproduce
Steps to reproduce the behavior:

cd zephyr/tests/kernel/fifo/fifo_timeout
west build -b cc1352r1_launchxl
west flash
Sometimes you would see the example hang/pause forever:

*** Booting Zephyr OS build v2.4.0-rc1-46-g840db3ab6ab6  ***
Running test suite test_fifo_timeout
===================================================================
START - test_timeout_empty_fifo
PASS - test_timeout_empty_fifo
===================================================================
START - test_timeout_non_empty_fifo
PASS - test_timeout_non_empty_fifo
===================================================================
START - test_timeout_fifo_thread
PASS - test_timeout_fifo_thread
===================================================================
START - test_timeout_threads_pend_on_fifo
thread (q order: 2, t/o: 0, fifo 0x20000978)
thread (q order: 3, t/o: 10, fifo 0x20000978)
thread (q order: 0, t/o: 20, fifo 0x20000978)
thread (q order: 4, t/o: 30, fifo 0x20000978)
thread (q order: 1, t/o: 40, fifo 0x20000978)
PASS - test_timeout_threads_pend_on_fifo
===================================================================
START - test_timeout_threads_pend_on_dual_fifos
thread (q order: 0, t/o: 0, fifo 0x2000098c)

Expected behavior
I'd expect next_timeout() to return a non-negative number.
Impact
Could cause infinite/large timeouts to be set at the driver level when a 0 timeout should be seen instead.
Environment (please complete the following information):

OS: Ubuntu 18.04
Toolchain (e.g Zephyr SDK, ...): Zephyr SDK 0.11.3
Commit SHA or Version used: 840db3ab6ab60e8427fca9eb6b545610d6766fbf

to->dticks was an unsigned number, but this was reverted in #28034 to resolve #27874.

Closing due to changes from #28034.


Allow data-toggle="dropdown" and form click events to bubble

Fixes #30267. Fixes #33044.
Demo of #33044 being fixed: https://jsbin.com/vureqihoze/edit?html,output.
Preview: https://deploy-preview-32942--twbs-bootstrap.netlify.app/

Merge conflicts have been resolved.

Merge conflicts have been resolved.

You can not open the dropdowns now:
https://deploy-preview-32942--twbs-bootstrap.netlify.app/docs/5.0/components/dropdowns/

You can not open the dropdowns now:
https://deploy-preview-32942--twbs-bootstrap.netlify.app/docs/5.0/components/dropdowns/

This also needs a test for a document click listener. Working on it.

This also needs a test for a document click listener. Working on it.

When will this be released? Waiting for bootstrap-select that requires this fix.

I'm OK with either way as long as the added tests here cover the tests added in #32943.
@rohit2sharma95 feel free to close the other PR if you think this is better.

@caseyjhol Can you please add a test case to check that the dropdown should be shown when clicking on a child element of data-bs-toggle="dropdown" :slightly_smiling_face:
Also, I believe that #33044 can also be fixed in the same PR

@XhmikosR Conflicts have been resolved.

@caseyjhol Can you please check if #33044 also can be fixed here? :slightly_smiling_face:

This fix doesn't seem to have any effect on #33044 currently. I'm not sure what the best approach is for a fix (as the stopPropagation() is needed there to prevent the menu from closing when clicking inside the form).
Actually...we might be able to do something similar. I'll investigate more.

@rohit2sharma95 This PR now fixes #33044 as well.

Thanks @caseyjhol, can you please add tests to cover that issue as well :heart:

Thanks @caseyjhol, can you please add tests to cover that issue as well ❤

That's what the 'should allow .dropdown-menu form click events to bubble up' test is for. 🙂

@rohit2sharma95 @XhmikosR Any more thoughts/comments?

@caseyjhol can you please make a proper rebase?

@RyanBerliner could you have a quick look please?

Tests for form inside menu can be left less strict, those will be updated in #33389.

Sorry - not sure what happened when I was rebasing...getting this sorted.

@caseyjhol you are rebasing against the wrong remote plus I don't have rights to edit your branch because you are using an org fork I presume. Anyway, I pushed the branch upstream temporarily https://github.com/twbs/bootstrap/compare/bubble-click-events to see if BrowserStack passes too.
As for the setTimeouts, not sure what to do since both seem to work since tests pass? We can keep the setTimeouts for now and see if they are really needed later, because I'd like to land this patch in beta3 which we plan to release later today :)


make Create's liquid XP to compatible with other mods

idk if this is a thing already but, create's liquid xp is not compatible with other mods

Please open issue to coresponding mod.


討論: The Humane Representation of Thought

The Humane Representation of Thought
Bret Victor

New representations of thought — written language, mathematical notation, information graphics, etc — have been responsible for some of the most significant leaps in the progress of civilization, by expanding humanity's collectively-thinkable territory.

But at debilitating cost. These representations, having been invented for static media such as paper, tap into a small subset of human capabilities and neglect the rest. Knowledge work means sitting at a desk, interpreting and manipulating symbols. The human body is reduced to an eye staring at tiny rectangles and fingers on a pen or keyboard.

Like any severely unbalanced way of living, this is crippling to mind and body. But less obviously, and more importantly, it is enormously wasteful of the vast human potential. Human beings naturally have many powerful modes of thinking and understanding. Most are incompatible with static media. In a culture that has contorted itself around the limitations of marks on paper, these modes are undeveloped, unrecognized, or scorned.

We are now seeing the start of a dynamic medium. To a large extent, people today are using this medium merely to emulate and extend static representations from the era of paper, and to further constrain the ways in which the human body can interact with external representations of thought.

But the dynamic medium offers the opportunity to deliberately invent a humane and empowering form of knowledge work. We can design dynamic representations which draw on the entire range of human capabilities — all senses, all forms of movement, all forms of understanding — instead of straining a few and atrophying the rest.

This talk suggests how each of the human activities in which thought is externalized (conversing, presenting, reading, writing, etc) can be redesigned around such representations.

這個報告的背景
http://2014.splashcon.org/home


[FEAT] Save the model on Google Collab to Google drive

Google Collab has a 4 hour uptime limit for an instance. After playing for 4hr, the instance will get shutdown. Also it'd be awesome to save the model and reuse it.
Solution:

Mount GDrive in the google collab
Add a code snippet for loading game and saving game to GDrive as 2 separate code block. This allows user to trigger those block whenever needed.

Cons:

The readme will need to tell user to run code block manually instead of run all

I had experience with GDrive + GCollab, so I can definitely prepare a PR by the weekends to add these features into the collab notebook.
Making this issue to gauge interest and feedback!

Closed with #101


Are we ready?

It's going to randomly crash currently if you remove that workaround. It's rare but it happens.

What causes the crash? I'd like very much to remove it, even if it means I have to gi fix up other things.

LightPropagator being broken in a fundamental way. It can be fixed but doing so exposes even more bugs in FirstLightProcessor.
Basically, when unspreading light (decreasing light values) it's possible for it to somehow end up adding a not yet updated light source that isn't in the expected block range to the queue with all of the 15 blocks distance to spread. And when it spreads all those 15 blocks, it may run into cube that isn't in the FastCubeBlockAccess.  Especially when the situation described isn't very common).
The fix? It can either be hacked around by making unspreading light keep track of blocks to spread count, or by complete redesign of LightPropagator, FastCubeBlockAccess, potentially changes to LightUpdateQueue, redesign of some parts of LightingManager and some parts of code that touch it, and FirstLightProcessor.
The core idea in my new design being that light spreading won't need to touch neighbor cubes, and instead will add 6 boolean flags per cube: a per-cube-wall edgeNeedsUpdate flag.
When the neighbor cube isn't loaded, light values will be assumed to be 0, and no setLight will be done on them (this will be handled in FastCubeBlockAccess) with additional checks for that situation in LightPropagator to avoid potemtially adding blocks known to be in unloaded cubes to the queue. When attempting to getLight or setLight in such unloaded cubes, the relevant edge flags will be set true.
Then when a cube is loaded, it would check the 6 flags and those 6 flags of each currently loaded neighbor cube and check if there are lighting inconsistencies along the edges, and add them to update queue. Since there are no additional cubes loaded needed - this can be done without any queueing and waiting until  the needed cubes are loaded, maybe even from the cube loader thread (!).
Another advantage would be faster world generation and less chunk GC when generating terrain. Currently lighting is the one reason for loading 5x5x5 cube area just to generate one cube. That's 125 cubes just to generate one of them. Thios could be reduced to 3x3x3 = 27 cubes needed for population after this change making world generation seemingly much faster.

Note: if someone is able to - I welcome PRs actually implementing it. It's not easy and it's a lot of work IO may not have the time for anytime soon.


Extension causes high cpu load

Issue Type: Performance
Extension Name: LiveServer
Extension Version: 5.5.1
OS Version: Windows_NT x64 10.0.10240
VSCode version: 1.32.3

:warning: Make sure to attach this file from your home-directory: C:\Users\LOYAL\ritwickdey.LiveServer-unresponsive.cpuprofile.txt :warning:
Find more details here: https://github.com/Microsoft/vscode/wiki/Explain:-extension-causes-high-cpu-load

Hello, few questions,
when you're getting this issue? after load of vscode or after clicking to Go Live ?
Is this happen every-time ? or random ?
Please reply here https://github.com/ritwickdey/vscode-live-server/issues/278
Duplicate of https://github.com/ritwickdey/vscode-live-server/issues/278


Docs Theme and API update

Earth-2 MIP Pull Request
Description

Updating docs to use better pydata theme.
Fixing API docs.
Improving over all doc structure.
Closes: https://github.com/NVIDIA/earth2mip/issues/78
Checklist

[ ] I am familiar with the Contributing Guidelines.
[ ] New or existing tests cover these changes.
[ ] The documentation is up to date with these changes.
[ ] The CHANGELOG.md is up to date with these changes.
[ ] An issue is linked to this pull request.

Dependencies

/blossom-ci

/blossom-ci

/blossom-ci

/blossom-ci

/blossom-ci

/blossom-ci


Microsoft Lists - Approved Client Apps

I don't know if the Microsoft Lists app is intended to be included in the Approved Client Apps or if it is not yet included because of some internal review (i.e. GA/Preview).
https://apps.apple.com/us/app/microsoft-lists/id1530637363
Please keep us updated here if you are working on this or update the documentation that Microsoft Lists is not inteded to be included in the Approved Client Apps.

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

ID: bd934939-4dbb-3a92-f996-56b9557f49ac
Version Independent ID: 3cda6b81-26e8-c9ac-e768-d912636a461b
Content: Grant controls in Conditional Access policy - Azure Active Directory
Content Source: articles/active-directory/conditional-access/concept-conditional-access-grant.md
Service: active-directory
Sub-service: conditional-access
GitHub Login: @MicrosoftGuyJFlo
Microsoft Alias: joflore

@PhilipHaglund Thank you for your query . We will investigate and update the thread.

@PhilipHaglund Thanks for the feedback. We will engage the content development team for further investigation, they will verify and perform necessary changes in the document as needed.

Nothing to document here. #please-close


Update README.md

Corrected the Result version in the CocoaPods installation instructions, '0.6-beta.3' causes an unable to satisfy requirement error on 'pod install'.

Ah, nevermind, just realized I wasn't on the 'master' branch. :|

I think you are right though. The version in the podspec is 0.6.0-beta.3.


Example instructions for NFS test server

In the current docs, if I want to quickly spin up a NFS test server with DTR, there aren't example configs for the nfs server on the docs for DTR 2.2:
https://docs.docker.com/datacenter/dtr/2.2/guides/admin/configure/external-storage/nfs/
For my systemd based linux machine, the quickest way for me was:

Install nfs-utils
Edit /etc/exports with:

/tmp/nfs *(rw,all_squash,anonuid=1000,anongid=1000)

systemctl enable nfs-server
systemctl start nfs-server
Test by showmount -e localhost
Reconfigure DTR with --nfs-storage-url nfs://localhost/tmp/nfs

Does DTR supports non-anonymous uids and gids authenticated against an LDAP directory ?

This is good to have for internal reference and testing, but we can keep this info out of the docs.


Camera without flash throws error

Describe the bug
We're throwing a camera error when the user's device doesn't have flash available. It's unclear where exactly this is happening, but we might be showing the flash button for devices where flash is unavailable, or we might be using the flash setting in initialPhotoOptions when a user takes a photo but doesn't have a device with flash. So far, this isn't impacting a ton of users, but we should investigate and make sure we're only taking photos with flash if a user has flash on their device.
The Camera Device does not have a flash unit! Make sure you select a device where device.hasFlash/device.hasTorch is true.
Context (please complete the following information):

App version: 0.32.6

I am closing this off without changes after a code audit I did just now. We should be guarded against this error under normal circumstances because we 1) do not show the flash toggle button when device.hasFlash is false and 2) start off with initial take photo options without flash setting if device.hasFlash is false.
I can also only see one error logged with this error message and it came from a server rack mounted google test device which might have a special hardware setup: https://www.inaturalist.org/observations/196244827


[SUGGESTION] Add a WiKi

I am working on a project involving the hq camera module and this project, and am having some difficulty finding information on settings.
Is there a wiki other than the one on GitHub I could look at?
I'm specifically looking to adjust basic settings like iso, white balance, and shutter speed.
Ultimately I want to build a gui similar to a canon or Sony mirrorless camera so any information regarding gui would be great as well.
Right now I am having to look through old issue threads to get answers to questions, having answers in a wiki format would save me a lot of time. And I would hope reduce the amount of repeat issues.

Have you discovered the manual? There are also many example in the examples folder here.

I guess documentation is always written by folks who are fairly expert in various ways, so it can be hard to appreciate what level of knowledge one can assume of the reader. Perhaps there needs to be a "Basic Examples" chapter in there, or something, that teaches some of the basic camera techniques with Picamera2.
But to answer your immediate question, for a 15ms exposure time you would use
picam2.set_controls({'ExposureTime': 15000})

The Raspberry Pi camera forum is also quite a good place to ask, there are lots of folks around with a good level of camera knowledge.

Touch controls isn't something we've done ourselves. There are a number of Qt applications which give you an application window with controls on it (e.g. https://github.com/raspberrypi/picamera2/tree/main/apps), and I guess you could use something like that. If you wanted to make your controls "float" over the camera image then you'd have to use an overlay. Again, there are some examples there.
There may be folks on the forum who have done stuff like this and would share - I don't really know I'm afraid!

Thanks for the help! I’m thinking more in regards to an overlay, I’ll make
sure to check out some examples!
On Mon, Dec 18, 2023 at 11:15 AM davidplowman @.***>
wrote:

Touch controls isn't something we've done ourselves. There are a number of
Qt applications which give you an application window with controls on it
(e.g. https://github.com/raspberrypi/picamera2/tree/main/apps), and I
guess you could use something like that. If you wanted to make your
controls "float" over the camera image then you'd have to use an overlay.
Again, there are some examples there.
There may be folks on the forum who have done stuff like this and would
share - I don't really know I'm afraid!
—
Reply to this email directly, view it on GitHub
https://github.com/raspberrypi/picamera2/issues/896#issuecomment-1861098684,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATKHZWC2U4ZJCE6VA3JE4RDYKB2Z5AVCNFSM6AAAAABAWX5A2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRRGA4TQNRYGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Change object_id to CharField to allow support for models with UUID ids

object_id needs to be a CharField if UUID support is needed.

thanks, would you mind rebasing and create a new migration ?

I'm closing per comment https://github.com/gizmag/django-fsm-log/issues/34#issuecomment-343193672


Support visionOS in user-agent string

Describe the feature
The SDK's user-agent string should report use of visionOS (Apple's VR operating system for their upcoming VR glasses) as an option in the os/ field.  As of now, it will be reported as os/other.
The AWS internal docs for user agent should be updated with visionOS as an option as well.
Use Case
To accurately report use of the SDK with the visionOS platform.
Proposed Solution
No response
Other Information
No response
Acknowledgements

[ ] I may be able to implement this feature request
[ ] This feature might incur a breaking change

User-agent metadata now supports visionOS as an os/ option.  Closing.


Suport !ie syntax

Please support !ie syntax the syntax works for ie currently this compiler dosent work for it but another one does.
For example using it in this format margin-top: -0.8em !ie; whereas now we have to do _margin-top: -0.8em;
https://git.wikimedia.org/commitdiff/mediawiki%2Fskins%2FVector/2807232513e1e45fd01f4ddf671f10da36b02d5b

@oyejorge could we support this please since this piece of css is valid in ie.

For non-CSS things like !ie use escaping. I.e.: margin-top: -0.8em ~'!ie';


Layout collapses when switching keyboard types

In my keyboard, when tapping the shift and/or "123" buttons sometimes, the layout collapses like this:

I'm pretty sure that this is due to changeKeyboardType being asynchronous. I set the delay to 0 and then for good measure overrode changeKeyboardType to be synchronous and I think that has fixed the problem.

Ok I think that making changeKeyboardType synchronous did help stabilize it, but the layout still failed when opening the keyboard, switching to another app, switching back, then pressing "123". The final constraint failure was just between two UISV-distributing-edge constraints and the UISV-spacing constraint in the keyboardStackView, didn't see anything wrong there. But switching apps caused a bunch of constraint failures to be logged, including a UIView-Encapsulated-Layout-Height constraint:
    "<NSLayoutConstraint:0x6000001c1c20 'UIView-Encapsulated-Layout-Height' UIView:0x7fa950e1aec0.height == 0   (active)>",

So I think that switching apps causes the keyboard's height to go to 0 or something? But weirdly, when you switch back, the keyboard looks just fine. It might be reloading though since its state appears cleared.
Anyhow, per the advice of https://stackoverflow.com/a/49454489/495611, I set translatesAutoresizingMaskIntoConstraints = false on the keyboard view controller's view and that made all the app-switch constraint failures go away, and the layout no longer collapsed when pressing "123" thereafter. Some other things about the layout went screwy though—the view no longer respected the keyboard bounds—which I've fixed like this, in KeyboardViewController#viewWillAppear:
        if view.translatesAutoresizingMaskIntoConstraints, let superview = view.superview {
            view.translatesAutoresizingMaskIntoConstraints = false
            view.topAnchor.constraint(equalTo: superview.topAnchor).isActive = true
            view.bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true
            view.widthAnchor.constraint(equalTo: superview.widthAnchor).isActive = true
        }

The addition of those constraints has caused the app-switch constraint failures to reappear, but the layout stays stable when pressing "123" thereafter now… that seems like an improvement. I'm not sure if there are other consequences of setting translatesAutoresizingMaskIntoConstraints = false that I should guard against.

Ok I'm dumb: I had a negative bottom margin on the search bar. When switching keyboards, there would temporarily be no view below the search bar (that and everything would remain visible, while the keyboard rows below were replaced), and the keyboard stack view would be unhappy. If I remove that margin everything's fine.

Great to see that you found the problem! I am adjusting the async switch logic in 3.0 and am moving it into the standard button handler, so that it only affects buttons with double-tap logic.

Woo! That sounds like a great idea.


forkfile: port to using pidfds

This ports all of the forkfile() handlers to verify the validity of the target
process via pidfds. This hardens our codebase and specifically means that we
can't accidently operate on a wrong process when under heavy contention.
I'm going to port all subcommand but want to do so step by step to minimize the
risk of subtle breakages. Once they're all switched over I will do another
cleanup sweep.
Signed-off-by: Christian Brauner<EMAIL_ADDRESS>

@stgraber do we want an API extension for this?

Blocked on a Jenkins update.

jenkins: test this please

Looks like a legit failure now

Testsuite passed

@brauner still incomplete?

@brauner still incomplete?

There's still stuff to do but this branch can't be merged anytime. I'll just keep pushing to it and if merged before completely switched over i'll just open another one.

Failures expected, as this depends on https://github.com/lxc/go-lxc/pull/137 being merged and Jenkins build cache being refreshed.

jenkins: test this please

jenkins: test this please

jenkins: test this please

jenkins: test this please

Seems I messed something up while reading. Will fix tomorrow morning.

Things still broken :)

On May 20, 2020 11:15:12 PM GMT+02:00, "Stéphane Graber"<EMAIL_ADDRESS>wrote:

Things still broken :)

Yeah, I know. I didn't get around to fixing this today. :)
It's also strange because it passes locally.

Testsuite passed

Testsuite passed


Refinement using parameterized message generates invalid code

Using a parameterized message as follows:
package Test is

   type Length is range 0 .. 2 ** 24 - 1 with Size => 32;

   type Frame is
      message
         Length : Length;
         Payload : Opaque
            with Size => Length * 8;
      end message;

   type Packet (Length : Length) is
      message
         Payload : Opaque
            with Size => Length * 8;
      end message;

   for Test::Frame use (Payload => Test::Packet);

end Test;

generates code that fails to compile with the following error:
Setup
   [mkdir]        object directory for project Out_Project
Compile
   [Ada]          rflx-rflx_builtin_types-conversions.ads
   [Ada]          rflx-rflx_types.ads
   [Ada]          rflx-rflx_arithmetic.adb
   [Ada]          rflx-rflx_scalar_sequence.adb
   [Ada]          rflx-rflx_generic_types.adb
   [Ada]          rflx.ads
   [Ada]          rflx-test-packet.adb
   [Ada]          rflx-test-contains.adb
rflx-test-contains.adb:23:23: error: no candidate interpretations match the actuals:
rflx-test-contains.adb:23:23: error: missing argument for parameter "Length" in call to "INITIALIZE" declared at rflx-test-packet.ads:87
rflx-test-contains.adb:23:23: error: too many arguments in call to "RFLX.Test.Packet.Initialize"
rflx-test-contains.adb:36:23: error: no candidate interpretations match the actuals:
rflx-test-contains.adb:36:23: error: missing argument for parameter "Length" in call to "INITIALIZE" declared at rflx-test-packet.ads:87
rflx-test-contains.adb:36:23: error: too many arguments in call to "RFLX.Test.Packet.Initialize"
gprbuild: *** compilation phase failed

IMHO this should be rejected altogether. I guess we'll need a way to associate the parameter with a field of the outer message (or something completely different).

I agree that the given refinement is not suitable and should be rejected. It must be enforced that all parameters of an inner messages are defined using an expression (which could refer to fields of the outer message). For the given example, a valid refinement could be specified as:
   for Test::Frame use (Payload => Test::Packet (Length));


Nico zuzalu semaphore

This PR merges the following changes:

Use the SemaphoreSyncer instead of the InterrepSyncer object. This allow us to have a modular design for future pcds

Deletes the "Recover" button and renames "Register" to "Login" to use the Zuzalu passport popup

Deletes unused code and some frontend errors regarding React packages or keys for multiple items (created inside a for loop)

Closes #5 #6

I tested it on my laptop and it's working (also with slashing). Thanks for all your work, @NicoSerranoP!


cli: improvements in StatusChangeMessage

closes #109
Review after #116

Codecov Report

Merging #117 (3488fb3) into master (057bcae) will decrease coverage by 0.45%.
The diff coverage is 99.47%.

@@            Coverage Diff             @@
##           master     #117      +/-   ##
==========================================
- Coverage   89.89%   89.44%   -0.46%
==========================================
  Files          29       29
  Lines        2385     2387       +2
==========================================
- Hits         2144     2135       -9
- Misses        172      185      +13
+ Partials       69       67       -2

Impacted Files
Coverage Δ

pkg/config/config.go
100.00% <ø> (ø)

cmd/root/root.go
64.75% <95.45%> (ø)

cmd/close/close.go
92.85% <100.00%> (ø)

cmd/delete/delete.go
88.46% <100.00%> (ø)

cmd/diff/diff.go
84.87% <100.00%> (ø)

cmd/du/du.go
92.77% <100.00%> (ø)

cmd/info/info.go
86.76% <100.00%> (ø)

cmd/list/list.go
93.28% <100.00%> (ø)

cmd/logs/logs.go
87.02% <100.00%> (ø)

cmd/ls/ls.go
93.12% <100.00%> (ø)

... and 14 more


Installing BackendLess via CocoaPods generates multiple build errors

I am replacing Parse with BackendLess (ObjectiveC) on an iPhone app and when I install it via CocoaPods, I get 10 "no member named 'xxx' in the global namespace" errors in another library (AsyncDisplayKit) which is also using C++ functions.
I am using Xcode 7.2 building for iOS 9.2. When I remove Backendless-ios-SDK from the Podfile and run 'pod install' again, all the errors disappear and all is well. Is there something that I can do without rewriting C++ code? Thank you

Hi,
Can you make a screenshot with these errors and attach it here?

Thank you @slavavdovichenko - by the way, this library takes a looong time to install via CocoaPods.

Another screenshot

Please, attach your Podfile here

Or give me your project - I investigate the issue. My email<EMAIL_ADDRESS>

Thank you @slavavdovichenko - I just emailed you the Podfile

Ok, I've reproduced this issue.
Here https://drive.google.com/file/d/0B3yyaWhA4ib0M0FULU5VZG56Vms/view?usp=sharing is the project with AsyncDisplayKit & Backendless-ios-SDK from CocoaPods, and build errors exist.
Here https://drive.google.com/file/d/0B3yyaWhA4ib0TGNtYUZOM0pnOVk/view?usp=sharing is the project with AsyncDisplayKit  from CocoaPods, and Backendless-ios-SDK is been added manually as this guide describes: https://backendless.com/mobile-developers/quick-start-guide-for-ios/, and built errors are absent.
So, you can configure your project by the second way.
Regards,
Slava

Thank you Slava. I’ll have to do it the way you suggest. Is there a chance that this cocoa pods issue will be addressed soon?
Roberto Montesinos
<EMAIL_ADDRESS>https://twitter.com/MontesinosRob
http://www.imdb.com/name/nm1090683/
http://resumes.actorsaccess.com/robertomontesinos

On Feb 1, 2016, at 3:02 PM, slavavdovichenko<EMAIL_ADDRESS>wrote:
Ok, I've reproduced this issue.
Here https://drive.google.com/file/d/0B3yyaWhA4ib0M0FULU5VZG56Vms/view?usp=sharing https://drive.google.com/file/d/0B3yyaWhA4ib0M0FULU5VZG56Vms/view?usp=sharing is the project with AsyncDisplayKit & Backendless-ios-SDK from CocoaPods, and build errors exist.
Here https://drive.google.com/file/d/0B3yyaWhA4ib0TGNtYUZOM0pnOVk/view?usp=sharing https://drive.google.com/file/d/0B3yyaWhA4ib0TGNtYUZOM0pnOVk/view?usp=sharing is the project with AsyncDisplayKit from CocoaPods, and Backendless-ios-SDK is been added manually as this guide describes: https://backendless.com/mobile-developers/quick-start-guide-for-ios/ https://backendless.com/mobile-developers/quick-start-guide-for-ios/, and built errors are absent.
So, you can configure your project by the second way.
Regards,
Slava
—
Reply to this email directly or view it on GitHub https://github.com/Backendless/ios-SDK/issues/4#issuecomment-178244583.

The investigation of this problem requires a time - we let you know about the result asap.

Thanks again @slavavdovichenko  - on a separate note, the lib folder is 206 MB - I plan on using BackendLess just for retrieving data from a few tables and push notifications. How would you suggest that I get the overall size of the app down?

Hi Roberto, the linker pulls only the code/libs used in your app. The size of libs in the project doesn't reflect the size of the final app.

Phew @markpiller - thank you very much. I'm looking forward to your parse migration seminar

If you don't use the media service - the size will be small. Only if a binary code is used it will be added to app from the lib.
You can use these resources as examples:
https://backendless.com/blog-a-feature-a-day-challenge/
https://github.com/Backendless/iOS-Samples

You're awesome Slava @slavavdovichenko !!

Hi,
If you use CodoaPods to integrate Backendless in your project, and you get the problem with "time.t conflict", you should remove the file time.h from your project.
Choose  in your project Pod -> Pod -> Backendless-ios-SDK and push the "delete" key. Click "Move to Trash" button.


MATLAB GUI equivalent

Hi,
I just want to leave you a message that I developed a Matlab equivalent (BrainMesh) with Graphical User Interface (GUI) to render the brain structures. Hope that will help people who only use Matlab or even do not program. Could you help to broadcast the tool link (https://github.com/Yaoyao-Hao/BrainMesh) in your README file? Thanks a lot.
Best,
Yaoyao

Nice one! Adding it now.


Uniprot Reference Proteome integration

Add automatic download scripts for the 24000 reference proteomes in Uniprot. Implement this database into Kaiko 1.0

Finished the download scripts, as well as integrity checking scripts which automate the process and ensure the database integrity.
Also implemented this database into the Kaiko pipeline (for search and aggregation). Currently benchmarking the performance of Kaiko 1.0 using Uniref100/RefProteomes


Samples do not compile

The project file
objectModel\CSharp\Microsoft.CommonDataModel.ObjectModel\Microsoft.CommonDataModel.ObjectModel.csproj
does contain
 <ItemGroup>     <Compile Include="..\StrongNameKey\AssemblyRef.cs" Link="AssemblyRef.cs" />   </ItemGroup>
but this file is not shipped with the repo.

@joern-schlingensiepen Thanks for reporting it, this line should be removed in the .csproj file. We will remove it in the next release. The workaround for now is to remove it on your end locally, you should be able to compile it.

@joern-schlingensiepen We have released a new version that fixed this issue so you do not need to manually remove this entry.


deps: update ruby and dependencies for debian bookworm

The build server updated to debian bookworm which has ruby 3.1.2, so update everything to require that. Also updates the other dependencies in the Gemfile.lock.

https://cirrus-ci.com/task/5661091059990528?logs=build_and_test#L87:
bundler: failed to load command: htmlproofer (/usr/local/bundle/bin/htmlproofer)
/usr/local/bundle/gems/html-proofer-5.0.9/lib/html_proofer/configuration.rb:68:in `parse_cli_options': invalid option: --check-html (OptionParser::InvalidOption)

I think the CI check can be changed to something like bundle exec htmlproofer --disable-external --checks Links,Images,Scripts --ignore-urls '/^\/bin/.*/' --no-enforce-https ./_site. That seems to work locally:
bundle exec htmlproofer --disable-external --checks Links,Images,Scripts --ignore-urls '/^\/bin/.*/' --no-enforce-https ./_site

Running 3 checks (Images, Links, Scripts) in ["./_site"] on *.html files ...

Checking 3085 internal links
Checking internal link hashes in 151 files
Ran on 2383 files!

For the Links check, the following failures were found:

* At ./_site/logs/2016-05-zurich-meeting-notes.html:505:

  'a' tag is missing a reference

HTML-Proofer found 1 failure!

Which results in a single failure.

Yeah, working on the CI failure. I think it would be reasonable to keep https enforcement as all of our links should work with https anyways (checking that now).

 Also fixed the a tag problem.

Apparently debian only has html-proofer 3.19.2, so I set the Gemfile to force a 3.x version rather than the latest. This also means we won't have to change the flags passed to it.


New plugin: self-updating package

Have any plan add upgrade plugin for go-flutter? like upload to GitHub release package for upgrade.

I don't understand the question, hover has abhover upgrade  to upgrade the go-flutter dependency.
Do you want a hover plugin upgrade command?

like auto update https://www.npmjs.com/package/electron-updater

No we don't have any plan on adding such features.
But soon with #265 and https://github.com/go-flutter-desktop/plugins/pull/26 users (and especially plugin maker) will have the ability to query PlatformVersion (go-flutter versions) and ProjectVersion (version of your app in pubspec.yaml).
Once those 2 PRs are merged, flutter dev can show a pop-up info to inform user of an update.
When it comes to self-updating package, it is a loot more complex, I don't think it's even properly possible with plugins.

There is an android and iOS downloader that is sort of like a self updater
It's API for the plugin could be used for desktop and then a golang self updater is pretty easy.
Downloading a new PKG on Mac will require running the full installer.
Do you want in place updating though ?

Any improvement for desktop force auto-update? Has anyone been able to integrate it with electronjs-package I need help on this


duplicateItemsAllowed not working

It's not possible to select the same items twice dispite duplicateItemsAllowed default being true.
  <select multiple>
    <option value="Choice 1">Choice 1</option>
    <option value="Choice 2">Choice 2</option>
    <option value="Find me">Choice 3</option>
    <option value="Choice 4">Choice 4</option>
  </select>

const element = document.querySelector('select');
const choices = new Choices(element, {
  editItems: true,
  renderSelectedChoices: "always",
});

Expected behavior
When clicked, Choice 2 is added to the list even if it's already selected

This is a documentation issue, as duplicateItemsAllowed only works with text and not select-multiple


Create 'Securing tiller' example as a use-case/tutorial

Is your feature request related to a problem? Please describe.
It would be awesome if we had a document explaining how you can use cert-manager to manage PKI for tiller's Secure TLS configuration.
Whilst this will presumably go away with Helm 3.0, that is still a fair while off and this document would serve as a useful example of using cert-manager for creating a client-auth PKI/to secure an application other than Ingress.
This may require #41
/kind documentation

Tiller is going way :tada:
/close


Add a lightweight server for running ColBERT

That's awesome! Thank you @VThejas !

Thanks for this @VThejas  and @okhat.


Handle missing file consistently across the providers.

I want to include this change in the 2.0.0 release.
Proposed behavior if missing file
add_to_list.rb              -> do nothing, list not found to add to
append_if_no_line.rb -> create file, add line
delete_from_list.rb     -> do nothing, list not found implies nothing to delete
delete_lines.rb            -> do nothing, line isn’t there implies nothing to delete
replace_or_add.rb      -> create file, add line
Use the ignore_missing option to allow an error to be raised in case the file is not found.  This change breaks the behavior of the recent change to add_to_list, append_if_no_line, delete_from_list,
delete_lines.  So doing it with the other breaking changes for the 2.0.0 release makes sense to me.

+100 for consistent behaviour.
I'm happy to delay the 2.0 release for this to happen.

fixed by #98


[1.11]Cookbooks and Cooking Table ignore Minetweaker entirely

Any recipe changes made through Minetweaker are not respected by the Cook Books and the Cooking Table. The Cooking Table will even allow you to make items even if you disabled their recipe in Minetweaker.
Example: I disabled Abyssalcraft's "Chicken on a Plate" recipe because I think it's a bit boring.

However, it still shows up in the Cooking Table and remains craftable there.

Mods used:
Minecraft Forge <IP_ADDRESS>8 (Also tested with 2454, but this changes nothing)
CookingForBlockheads_1.11.2-5.3.24
CraftTweaker-1.11.2-3.0.26
MTLib-2.0.3
AbyssalCraft-1.11.2-1.9.4-pre-4 was used in the sample above, but the issue still occurs if it is not installed.

That was fast.


Bump iOS 6.8.0 -> 6.8.1

6.8.0 is deprecated: https://support.appsflyer.com/hc/en-us/articles/115001224823-AppsFlyer-iOS-SDK-release-notes

Thank you for this MR. we are planning the next release of our RN sdk and it will be part of it. No ETA yet


Would like to see nullability indicator in column list in navigator

I know it is easy to find out which columns are defined as nullable.  However, it would be very convenient if we could have an option to include the information in the navigator.
Currently, by enabling the option "show object modifiers in tree", we will see the data types displayed with the column names, but no other "modifiers".

Thanks for the idea @jeff-bowles


immudb: 1.9DOM.0 -> 1.9DOM.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/codenotary/immudb/releases.
meta.description for immudb is: Immutable database based on zero trust, SQL and Key-Value, tamperproof, data change history
meta.homepage for immudb is: https://github.com/codenotary/immudb
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.9DOM.1 with grep in /nix/store/qjw4ll2ji810kndfnyrbjqwrm4l38960-immudb-1.9DOM.1
found 1.9DOM.1 in filename of file in /nix/store/qjw4ll2ji810kndfnyrbjqwrm4l38960-immudb-1.9DOM.1

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
immudb

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/qjw4ll2ji810kndfnyrbjqwrm4l38960-immudb-1.9DOM.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A immudb https://github.com/r-ryantm/nixpkgs/archive/41c9292bb937a9eea713cbcff176bb14ced1d625.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/41c9292bb937a9eea713cbcff176bb14ced1d625#immudb

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/qjw4ll2ji810kndfnyrbjqwrm4l38960-immudb-1.9DOM.1
ls -la /nix/store/qjw4ll2ji810kndfnyrbjqwrm4l38960-immudb-1.9DOM.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

immudb

Maintainer pings
cc @dit7ya for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/codenotary/immudb/releases.
meta.description for immudb is: Immutable database based on zero trust, SQL and Key-Value, tamperproof, data change history
meta.homepage for immudb is: https://github.com/codenotary/immudb
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.9DOM.2 with grep in /nix/store/lrz37nis3kdlcl0pf71x0i63gjhnz0w4-immudb-1.9DOM.2
found 1.9DOM.2 in filename of file in /nix/store/lrz37nis3kdlcl0pf71x0i63gjhnz0w4-immudb-1.9DOM.2

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
immudb

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/lrz37nis3kdlcl0pf71x0i63gjhnz0w4-immudb-1.9DOM.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A immudb https://github.com/r-ryantm/nixpkgs/archive/a33c3f98ef736020543a9cd01fe254b5e93246b5.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/a33c3f98ef736020543a9cd01fe254b5e93246b5#immudb

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/lrz37nis3kdlcl0pf71x0i63gjhnz0w4-immudb-1.9DOM.2
ls -la /nix/store/lrz37nis3kdlcl0pf71x0i63gjhnz0w4-immudb-1.9DOM.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

immudb

Maintainer pings
cc @dit7ya for testing.


Very slow product for sparse matrices

Description
Matrix product seems very slow for sparse matrices. I'm using 2 sparse matrices with 99.9% and 95% null entries. I compute the product between the matrices as follows:

sparse matrix product -> 0.04 seconds
convert to dense and compute the product -> 0.00008 seconds

As the matrices are highly sparse, I'd expect the sparse product to be faster, and definitely not 500 times slower than the corresponding dense product. I've tried with cupy installed from wheel, and then from source. I've used both cuSPARSELt 0.1.0 and 0.2.0. I've timed with both timeit and cupy benchmark profiler. The results I get are always the same.
Any hint would be much appreciated! Thanks for your help!
To Reproduce
import cupy
from sklearn.datasets import fetch_20newsgroups
from sklearn.preprocessing import OneHotEncoder
from sklearn.feature_extraction.text import TfidfVectorizer

news = fetch_20newsgroups(subset='train')

x = TfidfVectorizer().fit_transform(news.data)
y = OneHotEncoder().fit_transform(news.target.reshape(-1, 1)).T

x_sparse = cupy.sparse.csr_matrix(x)
y_sparse = cupy.sparse.csr_matrix(y)

x_dense = x_sparse.todense()
y_dense = y_sparse.todense()

n_repeat = 10

def prod(x, y):
    y @ x

from cupyx.profiler import benchmark
print(benchmark(prod, (x_sparse, y_sparse), n_repeat=n_repeat))
print(benchmark(prod, (x_dense, y_dense), n_repeat=n_repeat))

from timeit import timeit
print(timeit(lambda: prod(x_sparse, y_sparse), number=n_repeat) / n_repeat)
print(timeit(lambda: prod(x_dense, y_dense), number=n_repeat) / n_repeat)

Installation
Source (pip install cupy)
Environment
OS                           : Linux-3.10.0-1160.53.1.el7.x86_64-x86_64-with-glibc2.17
Python Version               : 3.8.12
CuPy Version                 : 10.1.0
CuPy Platform                : NVIDIA CUDA
NumPy Version                : 1.21.2
SciPy Version                : 1.6.2
Cython Build Version         : 0.29.27
Cython Runtime Version       : 0.29.27
CUDA Root                    : /usr/local/cuda
nvcc PATH                    : /usr/local/cuda/bin/nvcc --compiler-bindir gcc
CUDA Build Version           : 11050
CUDA Driver Version          : 11050
CUDA Runtime Version         : 11050
cuBLAS Version               : (available)
cuFFT Version                : 10600
cuRAND Version               : 10207
cuSOLVER Version             : (11, 3, 2)
cuSPARSE Version             : (available)
NVRTC Version                : (11, 5)
Thrust Version               : 101301
CUB Build Version            : 101301
Jitify Build Version         : <unknown>
cuDNN Build Version          : 8302
cuDNN Version                : 8302
NCCL Build Version           : 21104
NCCL Runtime Version         : 21104
cuTENSOR Version             : 10400
cuSPARSELt Build Version     : 100
Device 0 Name                : NVIDIA A100-SXM4-40GB
Device 0 Compute Capability  : 80
Device 0 PCI Bus ID          : 0000:00:04.0

Additional Information
No response

What are the sizes of the matrices? If the number of non-null entries is not big enough, you will not see any benefit.

Hi @eguidotti
I ran your reproducer on a V100 GPU and got the following results.

prod                :    CPU:14013.300 us   +/- 9.235 (min:13997.990 / max:14027.839) us     GPU-0:40940.442 us   +/-12.410 (min:40923.138 / max:40967.167) us
prod                :    CPU:   33.642 us   +/- 3.235 (min:   31.219 / max:   42.260) us     GPU-0:30652.928 us   +/- 5.538 (min:30643.200 / max:30659.584) us
0.03822545510047348
2.949680056190118e-05

It looks like you compared CPU time, but in this case I think it is better to compare GPU time. In GPU time, it is 409 ms for sparse matrices and 306 ms for dense matrices. It is still slower to prod with sparse matrices, though.

Hi @anaruse, thanks for checking this out!
Mmm... it seems to me that the GPU times are 40.9 and 30.6 ms (not 409 and 306 ms)?
In any case, I still cannot understand why the CPU time is so large for sparse matrices. Maybe the data are being copied across CPU/GPU when they should't? Do you have some hints about the high CPU time? Many thanks!

Mmm... it seems to me that the GPU times are 40.9 and 30.6 ms (not 409 and 306 ms)?

Oh, I made a mistake, yes it's 40.9 and 30.6 ms 😓

In any case, I still cannot understand why the CPU time is so large for sparse matrices. Maybe the data are being copied across CPU/GPU when they should't? Do you have some hints about the high CPU time? Many thanks!

The multiplication of sparse matrices and sparse matrices is a tricky one. The results of the calculation will also be a sparse matrix, but where the matrix elements become non-zero and how many non-zero elements there are depends on the sparsity pattern of the two input sparse matrices. So, it requires at least two steps of calculation, first to determine the sparsity pattern of the output matrix from the sparsity pattern of the two input matrices, and then to do the actual multiplication.
The apparent longer CPU time in the case of sparse matrices is due to the fact that there are operations to be performed on the CPU that depend on the results of the 1st step above, so it is "waiting" on CPU for the 1st step on GPU to complete.
In the case of sparse matrix and sparse matrix multiplication, CuPy currently uses cuSPARSE, more specifically cusparse*csrgemm2(). This function is deprecated and it is recommended to use cusparseSpGEMM() instead. Recent performance improvements have not been reflected in the former, so there is a possibility of speedup using the latter.

Thanks @anaruse, this is very instructive! As far as I understand, the product between 2 sparse matrices is slow by design and cannot be fully accelerated in GPU (as step 1 requires CPU in any case). Moreover, I apologize for my mistake, as the 0.00008 seconds I reported for dense matrices are only the CPU time (while I wanted to measure the total execution time)! So the difference between sparse and dense product is much more limited as you write.
I fixed the issue by converting the smaller matrix to dense and then computing the sparse x dense product. This is very fast!
import cupy
from sklearn.datasets import fetch_20newsgroups
from sklearn.preprocessing import OneHotEncoder
from sklearn.feature_extraction.text import TfidfVectorizer

news = fetch_20newsgroups(subset='train')

x = TfidfVectorizer().fit_transform(news.data)
y = OneHotEncoder().fit_transform(news.target.reshape(-1, 1)).T

x_sparse = cupy.sparse.csr_matrix(x)
y_sparse = cupy.sparse.csr_matrix(y)

x_dense = x_sparse.todense()
y_dense = y_sparse.todense()

n_repeat = 10

gpu = cupy.cuda.Device()
def prod(x, y):
    y @ x
    gpu.synchronize()

from cupyx.profiler import benchmark
print(benchmark(prod, (x_sparse, y_sparse), n_repeat=n_repeat))
print(benchmark(prod, (x_dense, y_dense), n_repeat=n_repeat))
print(benchmark(prod, (x_sparse, y_dense), n_repeat=n_repeat))

from timeit import timeit
print(timeit(lambda: prod(x_sparse, y_sparse), number=n_repeat) / n_repeat)
print(timeit(lambda: prod(x_dense, y_dense), number=n_repeat) / n_repeat)
print(timeit(lambda: prod(x_sparse, y_dense), number=n_repeat) / n_repeat)

The code gives me:
prod                :    CPU:40076.574 us   +/-90.047 (min:40009.927 / max:40275.212) us     GPU-0:40093.287 us   +/-95.057 (min:40027.138 / max:40309.761) us
prod                :    CPU: 9666.914 us   +/- 6.224 (min: 9658.466 / max: 9680.959) us     GPU-0: 9674.138 us   +/- 6.749 (min: 9665.536 / max: 9688.064) us
prod                :    CPU:  836.961 us   +/-13.256 (min:  815.577 / max:  856.658) us     GPU-0:  843.776 us   +/-13.280 (min:  822.272 / max:  864.256) us

0.04023652070000026  # Total time: sparse x sparse
0.009680339499999491 # Total time: dense  x dense
0.000885322599998517 # Total time: sparse x dense

Thanks a lot for this nice analysis and insights, I think that everyone can learn a bit from this discussion :).
Let me close it as it seems resolved!


updated object-path dep

Signed-off-by: Anxhela<EMAIL_ADDRESS>Related Issue:  open-cluster-management/backlog#16331
Description of changes
updated node.js deps object-path and set-value to patched version

new PR created with pull changes from  the issue.


BUG: when I use AUTH_OIDC_JSON in docker deploy

export AUTH_OIDC_JSON="{"dex": {"discovery_document_uri": "http://dex.dex:5556/dex/.well-known/openid-configuration\",\"client_id\": "guguduckentestmatrixone2","client_secret": "matrixoriginmatrixone","redirect_uri": "https://<IP_ADDRESS>:30443/auth/oidc/firezone/callback\",\"response_type\":\"code\",\"scope\": "openid email profile","label": "firezone"}}"
start firezone and firezone log:
│     ** (BadMapError) expected a map, got: nil                                                                                │
│         (elixir 1.14.2) lib/map.ex:534: Map.get(nil, "token_endpoint", nil)                                                                                │
│         (openid_connect 0.2.2) lib/openid_connect.ex:159: OpenIDConnect.fetch_tokens/3                                                                                │
│         (fz_http 0.6.10) lib/fz_http_web/controllers/auth_controller.ex:69: FzHttpWeb.AuthController.callback/2                                                                                │
│         (fz_http 0.6.10) lib/fz_http_web/controllers/auth_controller.ex:1: FzHttpWeb.AuthController.action/2                                                                                │
│         (fz_http 0.6.10) lib/fz_http_web/controllers/auth_controller.ex:1: FzHttpWeb.AuthController.phoenix_controller_pipeline/2                                                                                │
│         (phoenix 1.7.0-rc.0) lib/phoenix/router.ex:425: Phoenix.Router.call/2                                                                                │
│         (fz_http 0.6.10) lib/fz_http_web/endpoint.ex:1: FzHttpWeb.Endpoint.plug_builder_call/2                                                                                │
│         (fz_http 0.6.10) lib/fz_http_web/endpoint.ex:1: FzHttpWeb.Endpoint.call/2                                                                                │

@jinqinghui Thanks for the report. The document returned from your discovery_document_uri is missing the token_endpoint it seems. This is a required field in the OIDC spec to work correctly.
We recommend using the UI form at /settings/security to enter this field as it has enhanced error checking. The AUTH_OIDC_JSON field is undocumented and will be removed in favor of configuring this over the REST API.

thx


Init project

Checklist

[x] Update changelog in CHANGELOG.md.

I think I'm only missing tests now :)

Tests are not covering 100 % sure but we have some and we can improve them with time. WDYT @fiunchinho ?


Sigma instances are not killed when component is unmounted

I have an application where I mount and unmount often my sigma component, while I have another instance behind that is always there.
At some point, since the sigma instances are not killed which makes the WebGL contexts leak, the main instance (the one behind) stopped working.

But normally it should be killed : https://github.com/sim51/react-sigma/blob/1.3.0/src/SigmaContainer.tsx#L83-L91

Closing it due to inactivity and not reproducibility.


Update API's document and plugin name for consistency

Thanks for your contribution!

I am also using this plugin in my project.
Thank you.


Bug? can't find osascript or osacompile

running results in 'osascript: : No such file or directory'. Building results in 'osacompile: couldn't read file : No such file or directory'.
Yet, 'osascript' and 'osacomile' work in terminal:
$ which osascript
>> /usr/bin/osascript
$ which osacompile
>> /usr/bin/osacomile
It seems as though sublime or the build system can't find the osa utilities. Is this a path issue?

Mh, not sure. I am not on a Mac right now. But maybe it is related to the filename or extension you try to build/run?


Linux support will be very helpful.

Since swift is going server side, a swift websocket server on Linux will be very needed.

Thanks for the feature request. We are going to keep an eye on the Swift Server API Workgroup and see if Starscream fits in that equation at all.
https://swift.org/server-apis/
Going to close this out for now and has the server apis develop we will create an issue for more discussion then.

How are your current thoughts on this, @acmacalister?
Would really like to have Starscream on Linux as WebSocket client (a WebSocket server is already available through Kitura-WebSocket but a WebSocket client is currently missing, and the server WG has not yet produced anything usable at this point as far as I know).


Unable to import widget: Invalid widget data structure.

while importing the dashboard widget i got this...help required

This does not work!! you have to have a public IP to do this...


Integrate devenv into nix flakes

Simplify managing dev tools using nix flakes. No need to install devenv as standalone tool.

missing changelog and documentation


Make perf hub team - AWS admins

Elevating the developers access to admin. 'developer' access current does not give access to cloudwatch or secretsmanager

I've created an issue to fix the developer access, lets try to keep this as temporary as possible #936


feat: Korean README

I would love to have a Korean README, so please if you know how to write one like README-ko.md it would be super awesome. Grazie Mille 💛

Hello, I'm a junior developer studying open source in Korea. Your project looks great, so I'd like to translate Korean README. Can I proceed? Looking forward to a good answer. Thank you.

Yeah my friend, go ahead 😁


Discrepancy in Displayed Yellow Value

Describe the bug

The RGB value for yellow when you hover over the color yellow is not the actual yellow color

To Reproduce
Steps to reproduce the behavior:

Go to colors and click on a color block to open the color menu and hover over yellow
Observe the RGB value
Make a custom background with that RGB value
Observe error that it doesn't recognize the color as yellow

Expected behavior

The yellow tooltip should accurately provide the RGB value corresponding with yellow in the simulation.

Screenshots

(Notice how the color sensor shows Gray)
Device information

Type Desktop
OS: Windows 10
Browser Chrome 79*

In order to keep backwards compatibility with old simulation programs, we decided to just change the displayed color to match with a yellow that is interpreted correctly.


twisted trunk doesn't work on python3.3

See https://github.com/twisted/twisted/pull/943 Twisted dropped support for Python 3.3
This PR just removes it from the Tox matrix so builds pass. Can we add some magic in setup.py that a) means a python3.3 gets Twisted no newer than 17.9.x but b) others get newest Twisted? Or, crossbar drops python3.3 support as well (which then needs doc changes).

that was quick;)


blocking feature doesn't compile

Hello, I have the following in the Cargo.toml just like the example.
arangors = { version = "0.4.5", features = ["blocking"],  default-features = false }

Here's the output on build=
   Compiling arangors v0.4.5
error[E0599]: no method named `map_err` found for opaque type `impl std::future::Future` in the current scope
  --> /Users/felixdemaneville/.cargo/registry/src/github.com-1ecc6299db9ec823/arangors-0.4.5/src/client/reqwest.rs:39:14
   |
39 |             .map_err(|e| ClientError::HttpClient(format!("{:?}", e)))?;
   |              ^^^^^^^ method not found in `impl std::future::Future`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use futures_util::future::try_future::TryFutureExt;`

error: aborting due to previous error

I don't know if there was a regression or if I'm doing something wrong

I was using a depedency or arangors with blocking and an other without it


Improved fast-copy optimization logic

Fast-copy enabling logic is primitive and could be improved:

Don't bother for small scalars.  May be worthwhile for lobs and maybe string/symbol though.
Improve symtab compatability testing.  Cache results somehow?
Do fast-copy test once for writeValues(IonReader) call.  Still have issues if the caller drives the loop though.

Imported from ION-253,IONJAVA-16

The caching of symtab comparisons has been done, but the other optimizations are still outstanding.


Add note about current and append in resolve

Closes #1430

This was missing from the docs @yyx990803 @fnlctrl


VirtualBus Driver Install Failed - This Needs Fixing Please....

I just noticed this is a problem with the latest version, the VirtualBus Driver is not being downloaded and the install fails, and end-users have to go online and download it.
I'm assuming this is a correct link;
https://inputmapper.com/downloads/download/5-tools/6-virtual-bus-driver
Anyhow, I hope in a future version update this will be fixed...
Having apps download like this I personally think a bad idea, servers go down, links change etc., this should just be packaged into a DS4Windows installer, included into it, or a link on the website explaining this requirement that needs to be download and installed...
Thanks

hey buddy, how to i prevent installation failure when installing ds4windows


.txt extension should not be implicitly assumed for the input files

The template internally adds .txt extension to the input file names. This leads to confusion for me as a linux user because I used to use input files without any extension.
Here is my workflow:

I add input files for new problems with no extension to my AoC project
Then I'm adding up some code
Running it to check whether it works or not
Getting an error message that my input file doesn't actually exist
I use refactor->rename to add the .txt extension and it fails again, because now the template is expecting my input file name to be filename.txt.txt :)
Finally I go to my refactored code and remove the '.txt' extension and it finally starts to work :)

I propose to avoid adding the .txt extension to all input files and leave it to the user. This won't make code any worse but will help to avoid confusion for a plenty of users.

Well, this is a template, and txt extension is explicitly mentioned. You can always adjust it if you haVe another idea for that. :)


PyTorch models predictions varies with the same data input

Starting by loading a pretrained model (I tried two here) and tokenizer:
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import pandas as pd
import re
import torch

model_name = "Souvikcmsa/SentimentAnalysisDistillBERT"
#model_name = "Souvikcmsa/BERT_sentiment_analysis" --> Same issue found with a different model!
model = AutoModelForSequenceClassification.from_pretrained(model_name, use_auth_token=True)
tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=True)

then, loading some txt data:
# Read the data
url = 'https://raw.githubusercontent.com/Giskard-AI/examples/main/datasets/twitter_us_airline_sentiment_analysis.csv'
data = pd.read_csv(url)
defining a basic preprocessor:

# Preprocess text (username and link placeholders)
# Replace the Username with @user and the URL in the tweet with http for better comprehension of data for the model
def preprocess(text):
    text = " ".join(text.split())
    text = re.sub(r'http\S+', 'http', text)
    text = re.sub(r'@\S+', '@user', text)
    text = text.lower()
    return text

taking two subset from the data (first 5 and 100 entries):
torch.set_printoptions(precision=10)

for param in model.base_model.parameters():
    param.requires_grad = False

# ----- 1. Preprocess data -----#
# Preprocess data
X = list(data["text"].apply(preprocess))

X_tokenized = tokenizer(X, padding=True, return_tensors="pt")

num_subsample1=5
X_tokenized_subset1={}
for key in X_tokenized.keys():
    X_tokenized_subset1[key]=X_tokenized[key][:num_subsample1]

num_subsample2=100
X_tokenized_subset2={}
for key in X_tokenized.keys():
    X_tokenized_subset2[key]=X_tokenized[key][:num_subsample2]
the output of the model on the first subset’s first entry:

display_index=0
outputs1 = model(**X_tokenized_subset1)
outputs1[0][display_index]
gives:

tensor([-1.6196994781,  3.0899136066, -1.3701400757],
       grad_fn=<SelectBackward0>)

while the output of the model on the second subset’s first entry (same entry effectively) is:
outputs2 = model(**X_tokenized_subset2)
outputs2[0][display_index]

gives:
tensor([-1.6196994781,  3.0899133682, -1.3701400757],
       grad_fn=<SelectBackward0>)

Although they should be the same, there’s a difference in the second prediction:
outputs2[0][display_index]-outputs1[0][display_index]

which gives:
tensor([ 0.0000000000e+00, -2.3841857910e-07,  0.0000000000e+00],
       grad_fn=<SubBackward0>)

Any insights? Thanks

This seems to be a question more for transformers than evaluate :) That said, it seems the difference is very small so it could be a numerical issue. Also have you tried settings model.eval() such that it is in evaluation mode and not train() model where random dropout is used?