[Plugin] flutter markdown can not get checkbox align with text

I have using markdown which using a cusotmized checkbox like this:
 Widget _buildMarkdownCheckBox(bool v) {
    return Transform.scale(
        scale: 0.8,
        child: Checkbox(
            value: v,
            shape:
                RoundedRectangleBorder(borderRadius: BorderRadius.circular(65)),
            side: BorderSide(color: Colors.grey.shade300, width: 1),
            onChanged: (v) {
              print(v);
            }));
  }

it can not align (vertical center) with text, why?

If your check box doesn't need interactivity, use these encoded characters as Text Widget that perfectly aligned.
 checkboxBuilder: (isChecked) =>isChecked ? Text("✓") : Text("✗")

@sailinhtut Hello, unfortunately, I actually need interact. I want it be clickable and then insert from - [] to -[x] .
How to make it align while also need intreact?

Buddy .. I founded Another Solution That Look Like GitHub Checkbox Style.
 checkboxBuilder: (isChecked) => isChecked
                                    ? GestureDetector(
                                        onTap: () {
                                          // Logic For Interactivity
                                        },
                                        child:const Icon(
                                          Icons.check_box_rounded,
                                          size: 16,
                                          color: Colors.grey,
                                        ),
                                      )
                                    : GestureDetector(
                                        onTap: () {
                                         // Logic For Interactivity
                                        },
                                        child:const Icon(
                                          Icons.check_box_outline_blank_rounded,
                                          size: 16,
                                          color: Colors.grey,
                                        ),
                                      ),

Tested Image

@sailinhtut thank u, have u tested how it looks like on an iPhone or Android device? the center line still not perfected aligned though.

@jinfagang
Can you provide complete minimal code sample that shows the current behavior ?


Fixed ALFmxInertialMovement in iOS

i'm not sure why it occurs but on ios the DisplayLink break when scrolling (mouse down). This raise a strange silent exception that can only be viewed in xcode console log (can't handle it in app), and than the scren flicker and draw incorrect. I found some complaints about this, such as https://stackoverflow.com/questions/5944050/cadisplaylink-opengl-rendering-breaks-uiscrollview-behaviour

But this can be avoided with this simple solution that works 100% since during the touch on the screen there is no animation, the animation is only done when the touch on the screen ends.

Problem solved in the last commits.


Is this project is deprecated now? Any Future Development?

I don't plan to continue this project sorry

@andryr Are you working on some other one? And can i use and modify it ?

Yes  am working on something else.
And yes you can use and modify it since it's under Apache license.


docs: Adding documentation for visualization tool

Description
Adding the technical documentation for visualization tool and the work done during GSoC23 project

Done fixing all mentioned typos

Do you have any other comments on the document and the information in it? and how much information did you get from it?

Do you have any other comments on the document and the information in it? and how much information did you get from it?

All good, thanks, merging.


SF-1170: Add documentation blocks for emitter-related methods

Codecov Report

Merging #16 into master will increase coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #16      +/-   ##
==========================================
+ Coverage   92.89%   92.97%   +0.07%
==========================================
  Files         198      200       +2
  Lines        5139     5211      +72
  Branches      627      633       +6
==========================================
+ Hits         4774     4845      +71
  Misses        281      281
- Partials       84       85       +1

Impacted Files
Coverage Δ

<EMAIL_ADDRESS>98% <ø> (ø)
:arrow_up:

<EMAIL_ADDRESS>50% <ø> (ø)
:arrow_up:

<EMAIL_ADDRESS>97.72% <0%> (-2.28%)
:arrow_down:

<EMAIL_ADDRESS>100% <0%> (ø)
:arrow_up:

<EMAIL_ADDRESS>100% <0%> (ø)
:arrow_up:

<EMAIL_ADDRESS>100% <0%> (ø)
:arrow_up:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>

...ore/src/core/url-beautifier/pastPurchase/parser.ts
100% <0%> (ø)

<EMAIL_ADDRESS>100% <0%> (ø)

... and 4 more

Continue to review full report at Codecov.

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


Enterprise Tier from Azure Market Place: wizard configure Basic Tier

Go to the Azure Market Place, select Azure Spring Apps Enterprise  , once you land on the Azure Portal, the service is configured with Basic Tier on the screen whereas it should be Enterprise Tier
Expected behavior
In the Azure Portal , Enterprise Tier should be selected by default in this scenario

basic tier is the default due to low price entry. closing this issue as it's by design.


Is it possible to call an effect from another effect?

Or at least fire an action from within an affect?

yield put(action) ?

It's not working for me. To make sure, I am trying to call an effect from another effect. No reducers involved.

yield put({ type: 'anotherModel/effectA', payload: 111 })
yield put({ type: 'effectInSameModel', payload: 222 })

For some reason this is not working for me. Nothing happens.
If I take the dispatch function and call it then it works...


Installing on Windows

After days of work, I found the path of least resistance to getting cvxpy on Windows:

Install Python(x,y) - This will take care of just about ALL the standard dependencies, painlessly. I personally uninstalled my python 2.7 releases that existed beforehand,  removed the directory (by renaming it) to get rid of any libs, removed any other python versions from the PATH environment variable, and then installed Python(x,y).

Install ECOS (requires the steps I outlined in https://github.com/ifa-ethz/ecos/issues/53)

Install cvxpy.

I suggest the instructions for Windows 64bit be updated. I passed a few hours trying to get it right. Python(X,Y) broke my python dependencies. If you have Anaconda (which large part of the community does). Someone already build the dependencies for cvxopt which is the hairy part.
It is as simple as :

conda install -c https://conda.anaconda.org/omnia cvxopt
pip install cvxpy

Did you manage to install scs? I'm testing out your suggestion but having problems with scs.

Yes, I just installed scs and it works:

conda install -c https://conda.anaconda.org/omnia scs
It is version 1.1.7 though.

Note:
I tried to build scs from source. You  end up hunting down compiler versions that this package
depends on. For example, I would get an error like this:
http://stackoverflow.com/questions/28004464/error-trying-to-install-numpy
Whenever I want to install a new package that is not in the main anaconda repository. I just check in the browser of : https://anaconda.org/ . In my experience it works better that pip because these builts are specific for each system.


How to display camera streams on WinForm?

I am developing a C# UI using IC4 camera. How can I display camera stream in real-time on the WinForm? Meanwhile, how to modify parameters such as resolution and exposure time for the camera and make it change in real-time? Is there any control that can be used?

For display, just put a ic4dotnet.WinForms.Display on your form, as shown in the Windows Forms example applications: https://github.com/TheImagingSource/ic4-examples/tree/master/dotnet/winforms/DialogApp-net6/DialogApp-net6
The example program also shows how to display the pre-built property dialog that allows the user to adjust settings.

Recently i'm working on putting the camera video stream into a UI WinForm and show a cross in image, the code i modified like that:
`namespace CameraTest.Forms
{
public partial class Calibration : Form
{
public Calibration()
{
InitializeComponent();
ic4.Library.Init(apiLogLevel: ic4.LogLevel.Info, logTargets: ic4.LogTarget.WinDebug);
}
    private void btnOpen_Click(object sender, EventArgs e)
    {
        ic4.Grabber grabber = new ic4.Grabber();

        var selectedDeviceInfo = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
        if (selectedDeviceInfo == null)
            return;
        grabber.DeviceOpen(selectedDeviceInfo);
        var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
        sink.FramesQueued += (s, args) =>
        {
            // Get the new buffer from the sink
            // Buffer is disposed at the end of the using-block to allow re-queue
            using (var buffer = sink.PopOutputBuffer())
            {
                // Create an OpenCVSharp view onto the buffer
                // This view is only valid while the buffer itself exists,
                // which is guaranteed by them both not being passed out of this function
                var wrap = buffer.CreateOpenCvWrap();

                int width = wrap.Width;
                int height = wrap.Height;
                //Console.WriteLine(width);
                //Console.WriteLine(height);

                OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);
                Scalar color = new Scalar(0, 255, 0);
                int thickness = 2;

                Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);
                display1.DisplayBuffer(buffer);
            }
        };

        // Start the stream
        grabber.StreamSetup(sink, display1,StreamSetupOption.AcquisitionStart);

        //grabber.StreamStop();
    }
}

}`
the running result is very strange, sometimes screen likely fix the first frame and don't change, sometimes it can show the video stream, but see no cross in image.

Recently i'm working on putting the camera video stream into a UI WinForm and show a cross in image, the code i modified like that:
``namespace CameraTest.Forms
{
public partial class Calibration : Form
{
public Calibration()
{
InitializeComponent();
ic4.Library.Init(apiLogLevel: ic4.LogLevel.Info, logTargets: ic4.LogTarget.WinDebug);
}
    private void btnOpen_Click(object sender, EventArgs e)
    {
        ic4.Grabber grabber = new ic4.Grabber();

        var selectedDeviceInfo = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
        if (selectedDeviceInfo == null)
            return;
        grabber.DeviceOpen(selectedDeviceInfo);
        var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
        sink.FramesQueued += (s, args) =>
        {
            // Get the new buffer from the sink
            // Buffer is disposed at the end of the using-block to allow re-queue
            using (var buffer = sink.PopOutputBuffer())
            {
                // Create an OpenCVSharp view onto the buffer
                // This view is only valid while the buffer itself exists,
                // which is guaranteed by them both not being passed out of this function
                var wrap = buffer.CreateOpenCvWrap();

                int width = wrap.Width;
                int height = wrap.Height;
                //Console.WriteLine(width);
                //Console.WriteLine(height);

                OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);
                Scalar color = new Scalar(0, 255, 0);
                int thickness = 2;

                Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);
                display1.DisplayBuffer(buffer);
            }
        };

        // Start the stream
        grabber.StreamSetup(sink, display1,StreamSetupOption.AcquisitionStart);

        //grabber.StreamStop();
    }
}

}``

Recently i'm working on putting the camera video stream into a UI WinForm and show a cross in image, the code i modified like that:
namespace CameraTest.Forms
{
    public partial class Calibration : Form
    {
        public Calibration()
        {
            InitializeComponent();
            ic4.Library.Init(apiLogLevel: ic4.LogLevel.Info, logTargets: ic4.LogTarget.WinDebug);
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            ic4.Grabber grabber = new ic4.Grabber();

            var selectedDeviceInfo = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
            if (selectedDeviceInfo == null)
                return;
            grabber.DeviceOpen(selectedDeviceInfo);
            var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
            sink.FramesQueued += (s, args) =>
            {
                // Get the new buffer from the sink
                // Buffer is disposed at the end of the using-block to allow re-queue
                using (var buffer = sink.PopOutputBuffer())
                {
                    // Create an OpenCVSharp view onto the buffer
                    // This view is only valid while the buffer itself exists,
                    // which is guaranteed by them both not being passed out of this function
                    var wrap = buffer.CreateOpenCvWrap();

                    int width = wrap.Width;
                    int height = wrap.Height;
                    //Console.WriteLine(width);
                    //Console.WriteLine(height);

                    OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                    OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);
                    Scalar color = new Scalar(0, 255, 0);
                    int thickness = 2;

                    Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                    Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);
                    display1.DisplayBuffer(buffer);
                }
            };

            // Start the stream
            grabber.StreamSetup(sink, display1,StreamSetupOption.AcquisitionStart);

            //grabber.StreamStop();
        }
    }
}

the running result is very strange, sometimes screen likely fix the first frame and don't change, sometimes it can show the video stream, but see no cross in image.

The display should not be used manually and as stream target at the same time.
This line manually displays the modified image:
display1.DisplayBuffer(buffer);

This line automatically displays all (original) images:
grabber.StreamSetup(sink, display1,StreamSetupOption.AcquisitionStart);

Don't pass the display to StreamSetup and the cross should be displayed correctly.

"This Window"? You mean your Windows Form? Form.Close.

Yes

Just stop the video stream when click the button.

Where should I put this function in the above code and set relative button?

I am very sorry, but Windows Forms programming really is outside the scope of this forum.

Rencently i tried to compile C# program in Win32, but come across some problems like that:
System.NotSupportedException:“IC Imaging Control 4 .NET does not support x86 Windows applications. Change your project settings to x64, or, when the project is set to 'Any CPU' disable 'Prefer 32-bit' in the build options.”
How can i solve this problem, thanks.

You do exactly as the error message says. ic4 is not supported building 32-bit applications.

Hello, I want to take 4 pictures and display streaming in real-time on display1, but I found that using sink TryPopOutputBuffer can only capture 3 images. Do you have any good methods? the code is that:
`string motorFilePath = @"E:\WorkProject\Agent\CameraTest\bin\x64\Debug\exe\CH347Demo.exe";
var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 10);
int save_num = 0;
string file_name = $"{picture_dir}/MTF";
if (!Directory.Exists(file_name))
{
Directory.CreateDirectory(file_name);
}
Console.WriteLine("file_name:" + file_name);
List value = new List();
value.Add(0.0);
value.Add(500.0);
value.Add(1000.0);
value.Add(1920.0);
this.grabberL.StreamStop();
this.grabberL.DeviceClose();
var grabber2 = new ic4.Grabber();
var selectedDeviceInfo2 = selectedDeviceInfoL;
if (selectedDeviceInfo2 == null) { Console.WriteLine("No device"); return; }
grabber2.DeviceOpen(selectedDeviceInfo2);
sink.FramesQueued += (s, args) =>
{
Console.WriteLine("value.Count:"+ value.Count);
if (sink.TryPopOutputBuffer(out ic4.ImageBuffer buffer) && save_num < value.Count+10)
{
     try
     {
         string zoomingValue = value[save_num].ToString();
         Process.Start(motorFilePath, zoomingValue);
         buffer.SaveAsPng($"{file_name}/{save_num}.png");
         Console.WriteLine($"Saved image {$"{file_name}/{save_num}.png"}");
         display1.DisplayBuffer(buffer);
         //AnalyseMTFLeft(save_num);

     }
     catch (IC4Exception err)
     {
         Console.WriteLine($"Failed to save buffer: {err.Message}");
     }
     save_num++;
 }

};
Console.WriteLine("22222");
// Start the stream
grabber2.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
//this.grabberL = grabber2;
Console.WriteLine("333333");`
and the logcat is as follows:
file_name:E:\WorkProject\Agent\CameraTest\bin\x64\Debug\picture/MTF 22222 333333 value.Count:4 Saved image E:\WorkProject\Agent\CameraTest\bin\x64\Debug\picture/MTF/0.png value.Count:4 Saved image E:\WorkProject\Agent\CameraTest\bin\x64\Debug\picture/MTF/1.png value.Count:4 Saved image E:\WorkProject\Agent\CameraTest\bin\x64\Debug\picture/MTF/2.png

When posting code, please try to create a Minimal, Reproducible Example.
Your code does not show what happens after you call StreamSetup, so for all I know your program may just exit.
One wild guess: You do not dispose the buffer objects you get in the callback.
Add a finally block to your try statement and call buffer.Dispose() to make sure the buffer is returned to the driver.

Hi，I tried method you advised before, and the modified code is：
{

    string motorFilePath = @"E:\WorkProject\Agent\CameraTest\bin\x64\Debug\exe\CH347Demo.exe";
    var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);

    int save_num = 0;
    string file_name = $"{picture_dir}/VID";
    if (!Directory.Exists(file_name))
    {
        Directory.CreateDirectory(file_name);
    }
    Console.WriteLine("file_name" + file_name);
    List<double> value = new List<double>();
    value.Add(120.0);
    value.Add(28.0);
    value.Add(26.0);
    value.Add(25.3);
    value.Add(24.9);
    value.Add(23.5);
    value.Add(22.0);
    value.Add(21.0);
    value.Add(0.0);

    this.grabberL.StreamStop();
    this.grabberL.DeviceClose();
    var grabber2 = new ic4.Grabber();
    var selectedDeviceInfo2 = selectedDeviceInfoL;
    if (selectedDeviceInfo2 == null) { Console.WriteLine("can't read the device"); return; }
    grabber2.DeviceOpen(selectedDeviceInfo2);

    sink.FramesQueued += (s, args) =>
    {
        Console.WriteLine("value.Count:" + value.Count);

        if (sink.TryPopOutputBuffer(out ic4.ImageBuffer buffer)&& save_num< value.Count)
        {

            try
            {
                string zoomingValue = value[save_num].ToString();
                Console.WriteLine("zoomingValue：" + zoomingValue);
                Process.Start(motorFilePath, zoomingValue);
                Console.WriteLine("----start----");
                Thread.Sleep(30);
                Console.WriteLine("----stop----");
                buffer.SaveAsPng($"{file_name}/{save_num}.png");
                Console.WriteLine($"Saved image {$"{file_name}/{save_num}.png"}");
                display1.DisplayBuffer(buffer);
                //AnalyseMTFLeft(save_num);

            }
            catch (IC4Exception err)
            {
                Console.WriteLine($"Failed to save buffer: {err.Message}");
            }
            finally
            {
                buffer.Dispose();
            }
            save_num++;
        }

    };
    Console.WriteLine("22222");
    // Start the stream
    grabber2.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
    //this.grabberL = grabber2;
    Console.WriteLine("333333");
}```

In the code 'Process.Start(motorFilePath, zoomingValue);' means adjust camera's focal length, The result is very strange, the first time it take photos, the image taken is the same as focusing before，do you why hanppened this, thank you so much for giving me so many recommendations.

You do realize that *PopOutputBuffer does not really synchronize to the camera? So you controlling some external motor depending on that function returning will not magically delay the next image being taken, and most images you receive are older than your motor movement. Additionally, are you sure that the external application is really done after 30ms?
The correct way to take images at a specific time on application request is the software trigger function.

what is software trigger function? I found https://www.theimagingsource.com/en-us/documentation/ic4dotnet/articles/grabbing-an-image.html using SnapSink.SnapSingle to grab the single image, can it meet my demand?

There currently is no simple example showing software trigger. But a complex one: EventExposureEnd
But you might get the gist of it (which is enable TriggerMode and execute TriggerSoftware, still using QueueSink).

Hi, I want to use two cameras to display the camera streams on different display at the same time, but now I found that I have to turn off one of the cameras for the other camera to work. How should I solve this problem?
The code is as follow:
`        private void btnOpenLeft_Click(object sender, EventArgs e)
{
var selectedDeviceInfoL = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
if (selectedDeviceInfoL == null) { return; }
this.selectedDeviceInfoL = selectedDeviceInfoL;
Resources.CameraParameter.selectedDeviceInfoL = selectedDeviceInfoL;
ic4.Grabber grabber = new Grabber();
var selectedDeviceInfo2 = this.selectedDeviceInfoL;
grabber.DeviceOpen(selectedDeviceInfo2);
Console.WriteLine($"Opened device {grabber.DeviceInfo.ModelName}");
        var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
        sink.FramesQueued += (s, args) =>
        {
            using (var buffer = sink.PopOutputBuffer())
            {
                var wrap = buffer.CreateOpenCvWrap();

                this.width = wrap.Width;
                this.height = wrap.Height;

                OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);

                Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);

                display1.DisplayBuffer(buffer);
            }
        };

        grabber.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
        this.grabberL = grabber;

}
private void btnOpenRight_Click(object sender, EventArgs e)
{
var selectedDeviceInfoR = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
if (selectedDeviceInfoR == null) { return; }
this.selectedDeviceInfoR = selectedDeviceInfoR;
Resources.CameraParameter.selectedDeviceInfoR = selectedDeviceInfoR;
ic4.Grabber grabber = new Grabber();
var selectedDeviceInfo2 = this.selectedDeviceInfoR;
grabber.DeviceOpen(selectedDeviceInfo2);
Console.WriteLine($"Opened device {grabber.DeviceInfo.ModelName}");
        var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
        sink.FramesQueued += (s, args) =>
        {
            using (var buffer = sink.PopOutputBuffer())
            {
                var wrap = buffer.CreateOpenCvWrap();

                this.width = wrap.Width;
                this.height = wrap.Height;

                OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);

                Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);
                display2.DisplayBuffer(buffer);
            }
        };

        grabber.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
        this.grabberR = grabber;

}`

Hi, I want to use two cameras to display the camera streams on different display at the same time, but now I found that I have to turn off one of the cameras for the other camera to work. How should I solve this problem?
The code is as follow:
 private void btnOpenLeft_Click(object sender, EventArgs e)
        {
            var selectedDeviceInfoL = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
            if (selectedDeviceInfoL == null) { return; }
            this.selectedDeviceInfoL = selectedDeviceInfoL;
            Resources.CameraParameter.selectedDeviceInfoL = selectedDeviceInfoL;
            ic4.Grabber grabber = new Grabber();
            var selectedDeviceInfo2 = this.selectedDeviceInfoL;
            grabber.DeviceOpen(selectedDeviceInfo2);
            Console.WriteLine($"Opened device {grabber.DeviceInfo.ModelName}");

            var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
            sink.FramesQueued += (s, args) =>
            {
                using (var buffer = sink.PopOutputBuffer())
                {
                    var wrap = buffer.CreateOpenCvWrap();

                    this.width = wrap.Width;
                    this.height = wrap.Height;

                    OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                    OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);

                    Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                    Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);

                    display1.DisplayBuffer(buffer);
                }
            };

            grabber.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
            this.grabberL = grabber;
}
        private void btnOpenRight_Click(object sender, EventArgs e)
        {
            var selectedDeviceInfoR = ic4.WinForms.Dialogs.ShowSelectDeviceDialog(this);
            if (selectedDeviceInfoR == null) { return; }
            this.selectedDeviceInfoR = selectedDeviceInfoR;
            Resources.CameraParameter.selectedDeviceInfoR = selectedDeviceInfoR;
            ic4.Grabber grabber = new Grabber();
            var selectedDeviceInfo2 = this.selectedDeviceInfoR;
            grabber.DeviceOpen(selectedDeviceInfo2);
            Console.WriteLine($"Opened device {grabber.DeviceInfo.ModelName}");

            var sink = new ic4.QueueSink(ic4.PixelFormat.BGR8, maxOutputBuffers: 1);
            sink.FramesQueued += (s, args) =>
            {
                using (var buffer = sink.PopOutputBuffer())
                {
                    var wrap = buffer.CreateOpenCvWrap();

                    this.width = wrap.Width;
                    this.height = wrap.Height;

                    OpenCvSharp.Point startPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) - 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point endPoint1 = new OpenCvSharp.Point(Convert.ToInt32(width / 2) + 500, Convert.ToInt32(height / 2));
                    OpenCvSharp.Point startPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) - 500);
                    OpenCvSharp.Point endPoint2 = new OpenCvSharp.Point(Convert.ToInt32(width / 2), Convert.ToInt32(height / 2) + 500);

                    Cv2.Line(wrap, startPoint1, endPoint1, color, thickness);
                    Cv2.Line(wrap, startPoint2, endPoint2, color, thickness);
                    display2.DisplayBuffer(buffer);
                }
            };

            grabber.StreamSetup(sink, StreamSetupOption.AcquisitionStart);
            this.grabberR = grabber;
}

Which cameras are you using?
Are you sure you aren't just exceeding controller bandwidth?
Do the two cameras work at the same time with the same settings in 2 instances of ic4-demoapp?
If you operate two cameras on the same network adapter or USB controllers, you have to take bandwidth into consideration. Set AcquisitionFrameRate to half the maximum for both cameras if you only have one interface.

Two cameras both named DFM 37UX178-ML
Where can I set AcquisitionFrameRate?

Please have a look at the documentation: Configuring a Video Capture Device
(It does not explicitly set AcquisitionFrameRate, but you should get the idea.)

The documentation describes how to access and query information about the different types of device properties.
(You could also use the device property dialog in ic4-demoapp instead of IC Capture.)


Videos & Chat Roulette - No such file or directory

Hi, getting this
Uploaded file could not be moved from OS temp directory
my videos dont' work or the chat roulette

Hi Dan! pH7CMS doesn't have Uploaded file could not be moved from OS temp directory error message. Are you sure it's with pH7CMS?
Could you please provide a full screenshot (containing the URL as well) so I can localise the error


Installation error: get_logs_to_display argument mismatch

Got the following error when installing on MacOS 11.5.2 with ./build_mac.sh:
   Compiling cwl-mount v0.1.1 (/Users/cfrech/tools/cwl-mount/src/cli)
error[E0061]: this function takes 4 arguments but 3 arguments were supplied
   --> cli/src/main.rs:228:26
    |
228 |                         .get_logs_to_display(log_group_name, time_bounds.start_time, time_bounds.end_time)
    |                          ^^^^^^^^^^^^^^^^^^^ --------------  ----------------------  -------------------- supplied 3 arguments
    |                          |
    |                          expected 4 arguments
    |
note: associated function defined here
   --> /Users/cfrech/tools/cwl-mount/src/cwl-lib/src/lib.rs:467:18
    |
467 |     pub async fn get_logs_to_display(
    |                  ^^^^^^^^^^^^^^^^^^^

For more information about this error, try `rustc --explain E0061`.
error: could not compile `cwl-mount` due to previous error

Should integrate with some continuous integration like Travis. Unfortunately the current unit tests use real credentials to call the real CWL, so for now the CI can just build, then I make better mocked unit tests, then the CI can build and test.

Cool this is resolved by integrating with Cirrus CI. In particular here is how to set up a Mac build:
https://github.com/asimihsan/cwl-mount/blob/main/.cirrus.yml#L56-L67
Unfortunately the CI build only builds release artifacts right now. I need to improve the unit tests so that they don't rely on a real CloudWatch Logs endpoint to run. But this CI integration addresses build failures and acts as a regression test to prevent this recurring.
Please let me know if this still fails or if you have questions or comments, thanks!


Provide color map for mask set with flag_values

Is your feature request related to a problem? Please describe.
For dataset variables that provide a flag_values attribute, it would be convenient to get a matching matplotlib color mapping. For some variables we also provide flag_colors that should be used if so.
Describe the solution you'd like
Add method get_cmap() to xcube.core.maskset.MaskSet.
Additional context
CCI Land Cover datasets, lccs_class variable.

PR underway...


assign static dynamically/programatically

I'm trying to "pin" GridItems onClick by changing the static prop but the Grid is not reacting correctly:
I'm setting the static = true prop after the click but the static class is not added on re-render
Also, onLayoutChange is not being called
Here is my code:
'use strict';

import './dashboard.styl';
import React, {
  Component
} from 'react';
import ReactGridLayout, {
  WidthProvider
}  from 'react-grid-layout';
import Window from '../../components/Window';

const Grid = WidthProvider(ReactGridLayout);

class Dashboard extends Component {

  constructor (props) {
    super(props);

    this.state = {
      layout: [
        { i: 'a', x: 0, y: 0, w: 4, h: 8, minW: 4, minH: 8 },
        { i: 'b', x: 4, y: 0, w: 4, h: 8, minW: 4, minH: 8 },
        { i: 'c', x: 8, y: 0, w: 4, h: 8, minW: 4, minH: 8 }
      ]
    };
  }

  componentWillUpdate (nextProps) {
    console.log('updating');
  }

  windowPin (event, key) {
    this.setState({
      layout: this.state.layout.map(el => el.i === key ? Object.assign(el, { static: true }) : el)
    });
  }

  windowClose (event, key) {
    this.setState({
      layout: this.state.layout.filter(el => el.i !== key)
    });
  }

  renderGrid () {
    console.log('rendering grid');
    console.log(this.state.layout);
    var windows = this.state.layout.map(el => {
      return (
        <Window
          key={el.i}
          windowPin={event => this.windowPin(event, el.i)}
          windowClose={event => this.windowClose(event, el.i)}>

        </Window>
      );
    });

    return (
      <Grid
        className="layout"
        layout={this.state.layout}
        onLayoutChange={layout => console.log(layout)}
        draggableHandle=".drag-area"
        cols={12}
        rowHeight={30}
        autoSize={true}
        verticalCompact={false}>
        {windows}
      </Grid>
    );
  }

  render () {
    return (
      <div
        className="dashboard">
        {this.renderGrid()}
      </div>
    );
  }
}

export default Dashboard;

Here is my code for the Window:
'use strict';

import './window.styl';
import React, {
  Component
} from 'react';
import Icon from '../Icon';

class Window extends Component {

  constructor (props) {
    super(props);
    console.log(props);
  }

  render () {
    return (
      <div
        className={`window ${this.props.className}`}
        onMouseDown={this.props.onMouseDown}
        onMouseUp={this.props.onMouseUp}
        onTouchStart={this.props.onTouchStart}
        onTouchEnd={this.props.onTouchEnd}
        style={this.props.style}>
        <div
          className="window-header">
          <div className="drag-area">
            Header
          </div>
          <div
            className="header-actions">
            <button
              onClick={this.props.windowPin}>
              <Icon name="thumb-tack"/>
            </button>
            <button>
              <Icon name="caret-down"/>
            </button>
            <button
              onClick={this.props.windowClose}>
              <Icon name="close"/>
            </button>
          </div>
        </div>
        <div
          className="window-content">
          {this.props.children}
        </div>
      </div>
    );
  }
}

export default Window;

I tried wrapping my component in a div but did not worked
renderGrid () {
    console.log('rendering grid');
    console.log(this.state.layout);
    var windows = this.state.layout.map(el => {
      return (
        <div
          style={{ display: 'flex' }}
          key={el.i}>
          <Window
            windowPin={event => this.windowPin(event, el.i)}
            windowClose={event => this.windowClose(event, el.i)}>

          </Window>
        </div>
      );
    });

    return (
      <Grid
        className="layout"
        layout={this.state.layout}
        onLayoutChange={layout => console.log(layout)}
        draggableHandle=".drag-area"
        cols={12}
        rowHeight={30}
        autoSize={true}
        verticalCompact={false}>
        {windows}
      </Grid>
    );
  }

I figured out what happens ... sort of ... the Grid is not recognizing that the element properties changed, for ex: If after first render I set an element to static and the remove another element, the previous element is re-rendered as static.

By using react-redux and getting the layout from the store the problem is fixed although I don't fully understand why:
'use strict';

import './dashboard.styl';
import React, {
  Component
} from 'react';
import {
  connect
} from 'react-redux';
import Actions from '../../actions/Creators';
import ReactGridLayout, {
  WidthProvider
}  from 'react-grid-layout';
import Window from '../../components/Window';

const Grid = WidthProvider(ReactGridLayout);

class Dashboard extends Component {

  constructor (props) {
    super(props);
  }

  windowPin (event, key) {
    this.props.dispatch(Actions.dashboardPinWindow(key));
  }

  windowClose (event, key) {
    this.props.dispatch(Actions.dashboardCloseWindow(key));
  }

  renderGrid () {
    var windows = this.props.layout.map(el => {
      return (
        <div
          style={{ display: 'flex' }}
          key={el.i}>
          <Window
            windowPin={event => this.windowPin(event, el.i)}
            windowClose={event => this.windowClose(event, el.i)}>

          </Window>
        </div>
      );
    });

    return (
      <Grid
        className="layout"
        layout={this.props.layout}
        draggableHandle=".drag-area"
        cols={12}
        rowHeight={30}
        autoSize={true}
        verticalCompact={false}>
        {windows}
      </Grid>
    );
  }

  render () {
    return (
      <div
        className="dashboard">
        {this.renderGrid()}
      </div>
    );
  }
}

const mapStateToProps = state => {
  return {
    ...state.dashboard.asMutable()
  };
};

export default connect(mapStateToProps)(Dashboard);

I am running into the same issue. What you did by using the state is that the onLayoutChange will be triggered because of the componentWillReceiveProps which will rerender the view and thus display the change. I am trying to do so without the need to use the props. Did you figure out a way to do so?

Anyone has come up with a way to force that change? I'm having the same issue.

I'm also having the same issue and similar to L3V147H4N if I add a new element, then the previously statically assigned element does eventually become static.


added profile to contibutor list

Hope it gets merged thanks

@Devblaise you need to resolve the conflicts and also add new Resources in the Resource folder.


Do not install on target libvirt ptest

libvirt ptest directory should not be installed on target. It contained tests sources which have to be compiled be to be used.

ptest is only installed on test and debug image.


Improvisations Suggested

Here are a few suggestions to improve the code quality

Remove repetetive code
Remove redundant/unnecessary comments
Add blank lines in certain places to differentiate between separate pieces of code and for easability of reading

fixed issues here -> https://github.com/crypto-navdeep/Key-Logger/pull/1

Hi Ved! I Just Checked it now.
Thanks for your contribution, I'm currently busy now, I'll check it later.
Nevertheless, Thanks a lot for your time and effort for reviewing the code, I'll check and merge PR as soon a possible.
Regards,
Navdeep.

Fixed this at #1


admin account cant login

admin account can't login

Expected Behavior

make docker
make start
Current Behavior

Possible Solution

Steps to Reproduce

Context (Environment)

OS:ubuntu
Architecture:
Docker version:
Docker compose version:
Kubernetes version:

Detailed Description and log

Possible Implementation

me too I have the same problem

We have discussed this in the last weekly meeting, @xichen1 would you mind taking a look at this issue?

We have discussed this in the last weekly meeting, @xichen1 would you mind taking a look at this issue?

Sure, I've fixed it locally so the login issue is supposed to be solved after merging the change. But I have a question before creating the pr. Although I can login as the admin, I cannot operate anything using the admin user because there is nothing on the page. So just want to confirm is this what we want?

I met the same problem.

Closed it as fixed


Responsive logo and better object shadows and share buton

I want to add the home page to the logo so that on clicking the logo, user is directed back to the website
Also, I want to add link to the twitter logo so that on clicking it, user is directed to the twitter account
And I want to change the UI of the share button, the shadows
Please assign it to me

Also, on the second box, nothing is being displayed, if I am told what to add there, I can do that too

I want to add the home page to the logo so that on clicking the logo, user is directed back to the website Also, I want to add link to the twitter logo so that on clicking it, user is directed to the twitter account And I want to change the UI of the share button, the shadows Please assign it to me

Hi @PoulavBhowmick03 , you can work on I want to add the home page to the logo so that on clicking the logo, user is directed back to the website and And I want to change the UI of the share button, the shadows

Also, on the second box, nothing is being displayed, if I am told what to add there, I can do that too

please elaborate this more

the 2nd div isn't showing anything. If required, I can add what is to be displayed there

Can I get the twitter account I should link to? @AKD-01

I didn't realise this was in REACT JS. I want it to be unassigned as I have no knowledge of Reactjs
I am sorry for not seeing the codebase prior to making the issue


Corrupted Release

When trying to install the current pylance release from the VS Code Marketplace I get the following prompt:
Corrupt ZIP: end of central directory record signature not found

Environment data

Language Server version:
OS and version: Windows 10 20H2 > WSL 2 > Ubuntu 20.04.2 LTS
Python version: 3.8.5

Expected behaviour
Pylance can be install via the VS Code Marketplace
Actual behaviour
Pylance cannot be install via the VS Code Marketplace
Logs
[2021-02-25 09:16:56.884] [remoteagent] [info] Installing extension: ms-python.vscode-pylance
[2021-02-25 09:16:56.907] [remoteagent] [info] Downloaded extension: ms-python.vscode-pylance undefined
[2021-02-25 09:16:56.912] [remoteagent] [error] Failed to install extension: ms-python.vscode-pylance Corrupt ZIP: end of central directory record signature not found

[2021-02-25 17:23:01.661] [renderer1] [error] Error while installing 'ms-python.vscode-pylance' extension in the remote server. Corrupt ZIP: end of central directory record signature not found
[2021-02-25 17:23:01.662] [renderer1] [info] Trying to download 'ms-python.vscode-pylance' extension locally and install
[2021-02-25 17:23:12.145] [renderer1] [error] ["Error: Unable to install extension 'ms-toolsai.jupyter' as it is not compatible with VS Code '1.53.2'.","    at /root/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/out/vs/server/remoteExtensionHostAgent.js:107:91185","    at runMicrotasks (<anonymous>)","    at processTicksAndRejections (internal/process/task_queues.js:97:5)"]

This sometimes happens with the marketplace; try redownloading. I've downloaded and installed successfully from the marketplace, and the file is identical to what I published.
The 2021.2.4 should have a SHA256 hash of 6D01372DD9271A7F4336E18E120B160B1F485010AFDD6BC6ED8547C0D22C7D10.

Hey @jakebailey, thanks for the hint! I needed to remove the previously downloaded version in WSL first.
rm ~/.vscode-server/data/CachedExtensionVSIXs/ms-python.vscode-pylance-2021.2.4

Hitting install again triggered a new download and allowed me to install the extension! Perhaps vs code should retrigger the download itself when the downloaded file is broken?

Probably, but you'd need to talk to the VS Code team about that. Arguably, they should be checksumming their downloads and verifying them, rather than unpacking them and failing.


[Feature Request] Configure log_level for each plugin

I want to configure log_level on each plugin in a configuration file as
out:
  type: vertica
  log_level: trace

Fluentd can do it :)

:+1:

@sonots Fluentd can do it because you're contributing to the project!

This feature is very good. Suggested configuration style is also good.
Only challenge is implementation.


Blog Post: Model Timing

Description & motivation

This adds a new blog post for the Model Timing article. The Notion version of this is available here
Closes #1842
Checklist
If you added new pages (delete if not applicable):

[ ] The page has been added to website/sidebars.js
[x] The new page has a unique filename

@KiraFuruichi - thanks for the review!! I made all the suggested changes :)

Bennie this post is truly magnificent! It's really, really excellent work.
A few thoughts:

I'm really happy that we are showing the value of the model timing tab here and it's a clear player in terms of making the work here happen. That being said - the bulk of this article is actually about figuring out how to optimize large models in dbt. I'm a little concerned that folks coming here specifically for the model timing piece might not get what they're looking for. I'm wondering if there isn't a corp blog that could go along with this called Rooting out resource hogs with the Model Timing tab (maybe a @barryaron special) and this becomes "How we shaved 90 minutes of runtime off our longest running model" or something similar
This is a pretty advanced technical deep dive - wonder if we can just do a callout somewhere that to understand this you'll want to have a solid grasp of Cloud Data Warehouses and query optimization and if not, not to worry if everything doesn't line up immediately.

@ericalouie - sorry to tag you on a blog post PR, but since this does have a bit of an explanation about our internal project I just wanted to be triple sure that you're cool with us posting this level of detail. Can you please take a look at the deploy preview, specifically the Understanding the data heading to make sure we're not giving away any secret sauce? I already cleared the sentence below through legal, but just wanted to give you a chance to change things before this goes public.
Sentence already approved (and our docs were updated to reflect this as well):

The relevant pieces of data that we are using in this query include project IDs, model IDs, and an anonymized hash key representing the raw model contents to know if a model changed.

Bennie this post is truly magnificent! It's really, really excellent work.
A few thoughts:

I'm really happy that we are showing the value of the model timing tab here and it's a clear player in terms of making the work here happen. That being said - the bulk of this article is actually about figuring out how to optimize large models in dbt. I'm a little concerned that folks coming here specifically for the model timing piece might not get what they're looking for. I'm wondering if there isn't a corp blog that could go along with this called Rooting out resource hogs with the Model Timing tab (maybe a @barryaron special) and this becomes "How we shaved 90 minutes of runtime off our longest running model" or something similar
This is a pretty advanced technical deep dive - wonder if we can just do a callout somewhere that to understand this you'll want to have a solid grasp of Cloud Data Warehouses and query optimization and if not, not to worry if everything doesn't line up immediately.

I agree with this!


add alternative for distutils.dir_util.copy_tree

Cf. #1288.

The pylint error, I will take care of, I think I will just move the pylint part to 3.9 now

Thanks, good job.


Can't unset filter in old templates

When using the old templates with the old style to filter you can't use the "Show all" Link to remove the filter already set.
The underlying problem is the introduction of the QueryAlias "f" for filtering, which is not set in the getFacetProperties function. By setting also the new short version to the correct value it is also possible to remove a filter when there is only one left.

Thank you @OliverZachau. It's merged and will be released in SW 5.0.2 soon.


API to recover account from mnemonic

Is there an API to recover account from mnemonic ? Or if there is any documentation on how to do that
Regards

Please refer below.
https://github.com/tronprotocol/tips/blob/master/tip-01.md
The Tron default path is 44'/195'/0'/0/0

Thank you so much


update to java 17

Fixes #2298

bah no jacoco support for javaFX yet

what is the gap between having install4j and using gradle to make a shade/uberjar that just does the simplest thing expected?

The client infrastructure only officially supports windows as this is the supported platform for the game as well, there is no official support for linux as there are no devs who are actively working on it who also play on that environment to support it.
That is the reason why the linux path is more tedious simply because it doesn't have any support.

The unofficial support guide someone put together can be found here https://wiki.faforever.com/en/FAQ/Client-Setup. There is also a forum post that people have put some of their findings on that you can take a look at https://forum.faforever.com/topic/12/linux-support

Graalvm can build static executables fwiw, depending on the features[not]
used
On Sun, Feb 27, 2022, 11:51 AM Sheikah45 @.***> wrote:

The unofficial support guide someone put together can be found here
https://wiki.faforever.com/en/FAQ/Client-Setup. There is also a forum
post that people have put some of their findings on that you can take a
look at https://forum.faforever.com/topic/12/linux-support
—
Reply to this email directly, view it on GitHub
https://github.com/FAForever/downlords-faf-client/pull/2405#issuecomment-1053063420,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAR6KUYBECL4GMA5YTGBN3U5GNSXANCNFSM5GSIVFQQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
 Even for simple backend Spring apps it mostly doesn't work yet.
We can't guarantee Java17 to work because our test suite fails on 17.

Superceded by #2623


Random page button

As a user of the ATT&CK Website, I want to be able to broaden my knowledge by going to a random page on the site.
We can probably implement this by choosing a random element from the search index to go to.

Extension: allow the user to specify what kind of object they want to go to. E.g the user could select "technique" to go to a random technique, "software" for a random software.

The "random page" button would be on the homepage, and formatted like a segmented button but without the background or border.

Clicking the dropdown would show the specific types, instead of the full random option.

Clicking a specific type would bring the user to a random page of that type.

To clarify on the above mockup, clicking the "random page" segment of the segmented button would send the user to a truly random page, AKA a page from any of the categories. Clicking the dropdown arrow part of the segmented button would open the dropdown menu.


rubico/x/async

name async
catchphrase
Make any function asynchronous
synopsis
async(syncFunc ...args=>any) -> asyncFunc ...args=>Promise

description
Make any function return a Promise of whatever it was going to return by wrapping it with async.
const add = (a, b) => a + b

async(add)(1, 2) // Promise { 3 }

Not so useful


TODO: Function to create PR from Wuszek/spksrc to synocommunity/spksrc with correct template

https://stackoverflow.com/questions/45427164/how-to-create-a-git-pull-request-in-gitpython
Latest workflow run id from https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-repository - first ID from top, date should match
Workflow status, to check if status is completed and conclusion: success
https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run
curl   -H "Accept: application/vnd.github.v3+json"   https://api.github.com/repos/Wuszek/spksrc/actions/runs/2257249394 2>&1 | grep '"status":\|conclusion"'
  "status": "completed",
  "conclusion": "success",

curl -H "Accept: application/vnd.github+json" -H "Authorization: token token" https://api.github.com/repos/wkobiela/spksrc/actions/runs | jq '.workflow_runs | .[-1] | .conclusion' "success"
curl -H "Accept: application/vnd.github+json" -H "Authorization: token token" https://api.github.com/repos/wkobiela/spksrc/actions/runs | jq '.workflow_runs | .[-1] | .status' "completed"

https://tabris.com/observing-workflow-run-status-on-github/


Supported platforms status

GitTouch app is designed to support multiple accounts from different git services. Added this issue to track supported platforms status.
Please comment here if the git service you are using is not listed in the table below.
✅: Done
🚧: Working in progress
💬: In review

Platform
Public service
API documentation
Status
Custom domain

GitHub
https://github.com
v3(RESTful), v4(GraphQL)
✅
💬

GitLab
https://gitlab.com
GitLab API v4
✅
✅

BitBucket
https://bitbucket.org
BitBucket API
✅
✅

Gogs
https://try.gogs.io/
Gogs API
🚧
✅

Gitea
https://gitea.com/
Gitea API
✅
✅

Gitee
https://gitee.com/
Gitee API
✅
💬

Hi,
Looks like a great app. I'd love to see Gogs supported. I think Gogs is the parent of the Gitea fork so it should not be too hard to support Gogs as well.
Gogs also supports the Authentication Tokens just like Gitea.

Hi, @ElleshaHackett , thanks for your suggestion!
Gogs Added. I found this API doc for Gogs, is it correct?

Hi @pd4d10,
Thanks a lot. I suppose that is correct. Both repositories are owned by the same user @gogs. I currently use https://github.com/gogs/gogs and its README.md indeed links to https://github.com/gogs/docs-api for the API docs. I look forward to see this supported.

Dear @pd4d10,
I could attempt to make a whole browser version for the app if needed. I don’t know if I can get it to fully work, but I would love to help!
Best Wishes,
Lukas Batema

Dear @pd4d10,
I could attempt to make a whole browser version for the app if needed. I don’t know if I can get it to fully work, but I would love to help!
Best Wishes,
Lukas Batema

I could attempt to make a whole browser version for the app if needed. I don’t know if I can get it to fully work, but I would love to help!

Great! The current web version: git-touch is very mobile-ish. It requires a lot of re-design. Even tablets would require a re-design.

I could attempt to make a whole browser version for the app if needed. I don’t know if I can get it to fully work, but I would love to help!

Great! The current web version: git-touch is very mobile-ish. It requires a lot of re-design. Even tablets would require a re-design.

Hi, @Lukas-Batema , thanks for your help!
Feel free to discuss it, but please don't put the unrelated promotion links in the comment.

Hi, @Lukas-Batema , thanks for your help!
Feel free to discuss it, but please don't put the unrelated promotion links in the comment.

Hi, @Lukas-Batema , thanks for your help!
Feel free to discuss it, but please don't put the unrelated promotion links in the comment.

Sorry, my bad, I will fix my signature right away!

Hi, @Lukas-Batema , thanks for your help!
Feel free to discuss it, but please don't put the unrelated promotion links in the comment.

Sorry, my bad, I will fix my signature right away!

@shreyas1599,
Do you want me to change it to html and make a complete overhaul of the code, or just mike minor edits, I am assuming an overhaul on the design side, but just let me know, thanks! Also, could you open a discussion page on the web version, so it doesn’t clutter this “issue”, thanks!


Icon buttons are not keyboard navigable

add a tabIndex="0" to them, and the make sure to have keyUp of "Space" and keyDown of "Enter" activate them.

Thanks @rpflorence  - We've fixed icon buttons to respond to space and enter.

Encountered this problem today: keyUp and keyDown events are working in 2023 and the issue was between keyboard and chair
onClick events should be attached to the <IconButton> component and not its child

as of today, onkeydown is not working.
I have a button that opens a modal, when I press enter I want to close the modal, for some reason the onclick of the modal is triggered, when I press enter and it returns to set the state that opens it.
With a div, box or anything else it works fine


I can't seem to figure out how to browse volumes

I cannot figure out how to browse volumes in portainer.
Documentation shows a browse button in the volume list but I do not have such a button

Additionally, I enabled host management features (including the necessary ENV var and volume bind) and restarted the container; a few new items lit up but I don't see where I can browse host file system.
I've combed through the docs, release notes, etc, but cannot find any solutions.
Any advice?
Docker compose file for bringing up portainer:
version: '2'

services:
  portainer:
    image: portainer/portainer
    restart: always
    ports:
      - "9000:9000"
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
      - /:/host

    environment:
      CAP_HOST_MANAGEMENT: 1
volumes:
  portainer_data:

Portainer 1.23.0
docker 19.03.5, build 633a0ea838
Ubuntu 18.04.3

Are you using the agent? Browsing a volume requires you to use the agent

I added an agent to the compose file; now I'm running a portainer service and agent service. That sounds like a "you probably shouldn't do that" but thinks seem to be running well and I can access the volumes. Thanks!

Glad the issue has been resolved. You are correct that you can use the agent and portainer as services, in fact this is our recommended approach.
If you have any problems in future, feel free to open a new issue or reach out to us on our slack channel :+1:

If this is the recommended approach, might I suggest exposing that recommendation on the installation guide (with an explanation as to why it's the recommendation) at https://www.portainer.io/installation/.
I see now that it mentions swarm with regard to using the agent; as far as I can tell I'm not using a swarm.

I will discuss those instructions in the next meeting, most likely we will mention swarm first and also the words 'recommended approach'
Also if you are deploying services, then you will be using swarm, as standalone stacks deploy containers. :)


add checksums to addresses

wasn't too bad. I'm pretty sure I got everything too, no human should ever look at or input an address without a checksum.

all better

what happens to the addresses generated by siag?

they have checksums too now

the ones that were already generated are now invalid, but only their human-readable forms.
You can get new addresses though by running siag keyinfo $(keyfile)


Release 2.6.0

This is just a ticket for me to track 2.6.0 progress through to Beta, RC and then the final release.

[x] Release 2.5.3 onto master #2346 (ETA Feb 19)
[x] Rebase integration against master (ETA Feb 19-22)
[x] Release 2.6.0 RC (ETA Feb 22)
[x] New XSS
[x] Release new JIT (ETA Feb 22)
[x] Update wiki (ETA Feb 22)
[x] Release 2.6.0 Final (ETA March 8)
Proceed to #2268 to figure out what happens next to branches for any 2.6.x work and new 3.0.0 work.

@brendo Regarding JIT, what exactly do you mean with "new"?

Just releasing the integration branch.

@brendo Regarding JIT, what exactly do you mean with "new"?

Just releasing the integration branch.

Just releasing the integration branch.

Ah ok. Thought this was related to what you mentioned in the forum. Any thoughts on using intervention or a similar library?

Just releasing the integration branch.

Ah ok. Thought this was related to what you mentioned in the forum. Any thoughts on using intervention or a similar library?

Apparently it is related, but you already did the work? Didn't know it progressed this far already.

Apparently it is related, but you already did the work? Didn't know it progressed this far already.

Just a note: the Debug and Profile Devkits have a maximum compatibility lower than 2.6 in their integration branches.

Thanks Nils.

Will the extensions be installable via Composer?

Will the extensions be installable via Composer?

Nope. Not yet.

@brendo: If #2312 cannot be solved easily (or if we don't find the actual issue), we should pull the calendar from 2.6 completely. It shouldn't block the release process.

If #2312 cannot be solved easily (or if we don't find the actual issue), we should pull the calendar from 2.6 completely. It shouldn't block the release process.

Other new issues that pop up at the moment and aren't directly related to changes in 2.6 should be pushed back to a 2.6.x release as well. That's exactly the situation where a revamped branching and release model could improve things.

In order to give us time to fix the timezone issues we discovered in #2312, I submitted a pull request that removes the calendar, see #2325.

Great. But how can I use the autoloader behaviour (in an extension) in order to not pollute my code with require as well ?? (this would also make it easier to require things from other extensions)...

I actually just noticed that @psychoticmeow has created a Composer for Symphony extension that allows you to hook into Composer, so you could try going down that route? It would place a dependency on that extension, but I can forsee this extension being part of the core, especially with #2330 up for discussion.

I think we're actually getting in a position now where an RC is imminent. Have I missed anything?

Correct
On Wed, Feb 4, 2015 at 2:33 AM, Nicolas Brassard<EMAIL_ADDRESS>wrote:

#2280 https://github.com/symphonycms/symphony-2/issues/2280 Is for
3.0.0 right ?
—
Reply to this email directly or view it on GitHub
https://github.com/symphonycms/symphony-2/issues/2266#issuecomment-72683303
.

Ok perfect!

Original post updated with timelines and a new set of steps.

Thanks Brendan.

@brendo
So 2.6.x is the release branch for the upcoming 2.6.0 release and integration is open for 3.0.0 pull requests now?

Done! 2.6.0 is released.

Awesome!
Just curious, why is there a blog post for Beta 2, but not for the actual release on getsymphony.com?

I guess this is because of the 2.5.3 release, but it's simply wrong...

Yes and yes, sadly.
Thanks @brendo for the release !!!
I am really looking forward to 3.0.0 ! We can start breaking things!! Yeah!!!

why is there a blog post for Beta 2, but not for the actual release on getsymphony.com?

I think Brendan just forgot to update it...


ES 6.6 issue

Doing a docker, and the build has elasticsearch 6.6.1 on it.
Some files are failing.
http://hydro10.sdsc.edu/metadata/example/tests/
The files post to an elasticsearch 6.5.3, and fail to a 6.6.1
{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "failed to parse field [envelope_geo] of type [geo_shape]"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "failed to parse field [envelope_geo] of type [geo_shape]",
        "caused_by": {
            "type": "illegal_argument_exception",
            "reason": "Unable to Tessellate shape [[30.40742463, -91.18026123] [30.40742463, -91.18026123] [30.40742463, -91.18026123] [30.40742463, -91.18026123] [30.40742463, -91.18026123] ]. Possible malformed shape detected."
        }
    },
    "status": 400
}

Degenerate polygons may be failing.
fails:
`"envelope_geo":{"type":"envelope","coordinates":[[-91.18026123,30.40742463],[-91.18026123,30.40742463]]}`
works:
`"envelope_geo":{"type":"envelope","coordinates":[[-91.18026123,30.40742463],[-91.18026124,30.40742462]]`

[fails_geoshape_error.json.txt](https://github.com/Esri/geoportal-server-catalog/files/2993381/fails_geoshape_error.json.txt)

6.6.0 Release notes:
Geo
More robust handling of ignore_malformed in geoshape parsing #35603 (issues: #34047, #34498)
Better handling of malformed geo_points #35554 (issue: #35419)
Enables coerce support in WKT polygon parser #35414 (issue: #35059)
Further improve robustness of geo shape parser for malformed shapes #34498 (issues: #31449, #34047)

attaching json example
fails_geoshape_error.json.txt


Made changes to curator pathway

See #110

Happy to merge this and iterate as I think getting some basic navigable doc out is urgent.  Current structure and content looks good enough to release.


BlockBlobService.exists leaks connections

If the underlying blob does not exist, the connection isn't returned
back to the pool. Instead, it's left hanging in an incomplete state and
future queries end up creating new connections.
>>> import logging
>>> logging.basicConfig(level=logging.DEBUG)

>>> service = BlockBlobService(...)
>>> service.create_container('container')
>>> service.create_blob_from_text('container', 'blob', 'some text')

The connection is properly returned to the pool when testing existence
of a blob that does exist.
>>> service.exists('container', 'blob')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): encircledevstorage.blob.core.windows.net
DEBUG:requests.packages.urllib3.connectionpool:"HEAD /test-container/blob HTTP/1.1" 200 0
True

>>> service.exists('container', 'blob')
DEBUG:requests.packages.urllib3.connectionpool:"HEAD /test-container/blob HTTP/1.1" 200 0
True

However, if the blob does not exist, a new connection is created every
time. Note the INFO log lines:
>>> # this one reuses the existing connection
>>> service.exists('test-container', 'no-exist')
DEBUG:requests.packages.urllib3.connectionpool:"HEAD /test-container/no-exist HTTP/1.1" 404 0
False

>>> # creates a new one!
>>> service.exists('test-container', 'no-exist')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (2): encircledevstorage.blob.core.windows.net
DEBUG:requests.packages.urllib3.connectionpool:"HEAD /test-container/no-exist HTTP/1.1" 404 0
False

>>> # creates another one
>>> service.exists('test-container', 'no-exist')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (3): encircledevstorage.blob.core.windows.net
DEBUG:requests.packages.urllib3.connectionpool:"HEAD /test-container/no-exist HTTP/1.1" 404 0
False

Hi @rraval, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

Ping!
The connection leak ended up causing some severe latency to what should have been a relatively cheap check. This should be serious enough to at least warrant someone looking at it.

Thanks, @rraval --
Could you please resubmit this against the dev branch, and add a change log entry (as version 0.34.0)?

Done. Thanks for taking a look!


[Feature] Request to support multiple Helm Charts in CNTI Test Catalog

Please contact<EMAIL_ADDRESS>for any detail
Is your feature request related to a problem? Please describe.
In Sylva WG-02 (Validation Center), we want to execute CNTI Test catalog against every CNF that is going to be validated but all the CNFs that are already validated in Sylva have more than 2 Helm Charts (in some cases, up to 50 Helm Charts) so this is a problem because currently CNTI Test catalog only supports to test one Helm Chart at the same time.
Describe the solution you'd like
In order to save time and execute CNTI Test catalog in a more efficient way, we would like it to support the setup of multiple Helm Charts stored in a same filesystem folder to launch the tests battery directly over them at the same time and don’t have to execute it one by one manually.
Describe alternatives you've considered
we have been applying manually “cnf_setup” for each Helm Chart to be tested within a CNF and then launched “cnf testsuite cert” over the result. The problem is that for doing it we have to be changing manually “cnftestsuite.yaml” for each Helm Chart which drives to lose many time and we think that this could be supported in a more efficient manner.

Considered ways how it is possible to be reached:
(1) Add possibility to define multiple helm charts and handle this as single CNF in cnf-testsuite
+: looks like clean solution from conceptual point of view (closest to a field deployment handling)
-: cnf-testsuite.yml would become quite complex to support all current features
-: quite high implementation efforts, might be better first to refactor cnf_config
Implementation impacts:
- adapt cnf-config.yml file format to allow multiple helm charts (possibly all subdirs in specified dir)
- adapt CNFManager (methods cnf_resources, workload_resource_test, workload_resources, workload_resource_keys, cnf_workload_resources, cnf_to_new_cluster) - resources need to be collected across all helm deployments
- adapt specific test cases that use a helm chart directly ("helm_deploy", "helm_chart_published", "helm_chart_valid", "in_address", "hardcoded_ip_addresses_in_k8s_runtime_configuration", "immutable_configmap", "reasonable_startup_time", "prometheus_traffic", "open_metrics", "tracing", "oran_e2_connection", "database_persistence")
(2) generate parent helm chart referencing child helm chart as dependencies
- does not look a good fitting feature to cnf-testsuite. That would rather be a a candidate to be done fully externally without any cnf-testsuite impact.
- it would require to install all helm charts into single namespace
+ if implemented externally -> no impact to cnf-testsuite
Implementation impacts if implemented internally in cnf-testsuite:
- adapt cnf-config.yml to accomodate multiple helm charts (and probably all subdirs of a directory)
- add code generating a parent helm chart
(3) Use 3rd party tools for deployment of CNF with multiple helm charts
+ this is basically option (1) with not extending cnf-testsuite.yml but rather adding additional installation option (helmfile, reckoner etc.)
other than that same aspects as (1)
(4) Modularize cnf-testsuite in a way that it's possible to use libraries/modules/plug-ins for cnf deployments
"multiple-helm-charts" would be then one such libraries/modules/plug-ins, not necessarily part of cnf-testsuite
+ easily extendable solution, a real implementation would then be close to option (1)
- complex code redesign needed
- adaptation of the same testcases as in (1) needed
Implementation impacts:
- similar as (1), plus:
- figure out how to modularize (libraries/modules/plug-ins)
- redesign/rewrite cnf-manager for modularization
- redesign cnf-testsuite.yml to allow multiple deployment methods
(5) Use existing concept with calling cnf_setup multiple times per each helm chart
Note: this functionality is not fully working currently (.yml result generation does not respect all CNFs) and needs to be fixed
- Each helm chart would be handled as a separate CNF from cnf-testsuite point of view with all its impacts, including longer test runtime, possibly unnecessarily multiple test runs
+ lower-ish implementation efforts
Implementation impacts:
- .yaml result generation needs to be implemented for such case properly
- maybe some more batch mode can be supported using single cnf-testsuite.yml

If we want to add this feature ASAP - probably (2) would be the way to go. Add new SAM task for generating helm chart and/or more functionality to cnf-testsuite.yml.
Option (5) doesn't look as plausible solution to me, multiple CNF installations weren't ever fully supported, don't have a real purpose for Testsuite and, to me, feel like an old garbage that we should get rid of (#2095). Building new features on top of that would likely bring hidden issues that we'll be dealing with in future, and, in the end, we'll have to redesign it anyway.
Other options are revolving around the idea of installation multiple helm charts and threating them as one CNF. To me that sounds as the most reasonable solution, but quite complicated to implement. Significant changes would be required to be finished before we would be able to start designing this feature with this option of implementation (in example #2036 with all of its sub-issues).
To me - way to go is option (1), then possibly look for splitting CNF installation from testing (i.e. - in form of other application, repo), then consider using modular architecture as mentioned in option (4).

@collivier do you think (2) would work as a quick solution to enable sylva with cnf-testsuite testing?

Hello @collivier @martin-mat ,
We have been reviewing all the mentioned options in this post. In Sylva WG-02 we consider that the best option to go is Option 1. Regarding Option 2, we consider that it would require big efforts to build parent Helm Charts and it could lead to non desired failures. The objective is to support this functionality in the most efficient, cleanest and easiest way for the user of the CNF Testsuite when multiple Helm Charts must be analyzed.
Considering it, as mentioned by @kosstennbl, we vote for the development of Option 1.
Thank you.

Implementation ongoing as a part of #2120


cleared citation key format

I added my custom citation key format in the preferences, but that field keeps getting cleared when I open up the preferences again.  It seems to export ok, as the bibtex file is fine.  And, even after the field is cleared, BBT seems to remember my custom format, i.e., the export has the correct keys.
Report ID: R59AGCEF

duplicate of #724 (no issue, but the work on it will be tracked there)


Merge projection

Related Issue

Info about Issue or bug

fix #2828
Describe the changes you've made
A clear and concise description of what you have done to successfully close your assigned issue. Any new files? or anything you feel to let us know!
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.

Screenshots

Original
Updated

**original screenshot

** | updated screenshot

 |

@sairish2001 label is missing


check slice.Contains in for range block

https://github.com/bxcodec/faker/blob/7460bf3a84de3afbfe7297c488c711d29f09c5d2/support/slice/helpers.go?_pjax=%23js-repo-pjax-container%2C div[itemtype%3D"http%3A%2F%2Fschema.org%2FSoftwareSourceCode"] main%2C [data-pjax-container]#L7-L16
we don't need to make a map to check a slice contain a string, just do it in for range

Thanks @eval-exec , LGTM will merged after the test


AttributeError: module 'google.generativeai' has no attribute 'GenerativeModel'

Description of the bug:
When I tried to call the API using the official documents, the following problems appeared：
Traceback (most recent call last):
File "A:****\openai_service.py", line 80, in
model = genai.GenerativeModel("gemini-1.5-flash")
AttributeError: module 'google.generativeai' has no attribute 'GenerativeModel'

Actual vs expected behavior:
No response
Any other information you'd like to share?
No response

Hi @207285,
I tried to reproduce the code given in quickstart documentation, It's working fine for me. Here is the gist
I hope you are using upgraded google-generativeai package and pyhton version >= 3.9.


ext-gd 의존성

아래 로그를 참고해 ext-gd 설치 의존성 검토와 설치 안되어 있을 시 어디까지 동작하는지 테스트 필요
rokaf:~/environment/Chintomi (master) $ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - gumlet/php-image-resize 1.9.2 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - gumlet/php-image-resize 1.9.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - gumlet/php-image-resize 1.9.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - Installation request for gumlet/php-image-resize 1.9.* -> satisfiable by gumlet/php-image-resize[1.9.0, 1.9.1, 1.9.2].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php/7.2/cli/php.ini
    - /etc/php/7.2/cli/conf.d/10-mysqlnd.ini
    - /etc/php/7.2/cli/conf.d/10-opcache.ini
    - /etc/php/7.2/cli/conf.d/10-pdo.ini
    - /etc/php/7.2/cli/conf.d/20-calendar.ini
    - /etc/php/7.2/cli/conf.d/20-ctype.ini
    - /etc/php/7.2/cli/conf.d/20-exif.ini
    - /etc/php/7.2/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.2/cli/conf.d/20-ftp.ini
    - /etc/php/7.2/cli/conf.d/20-gettext.ini
    - /etc/php/7.2/cli/conf.d/20-iconv.ini
    - /etc/php/7.2/cli/conf.d/20-json.ini
    - /etc/php/7.2/cli/conf.d/20-mysqli.ini
    - /etc/php/7.2/cli/conf.d/20-pdo_mysql.ini
    - /etc/php/7.2/cli/conf.d/20-pdo_sqlite.ini
    - /etc/php/7.2/cli/conf.d/20-phar.ini
    - /etc/php/7.2/cli/conf.d/20-posix.ini
    - /etc/php/7.2/cli/conf.d/20-propro.ini
    - /etc/php/7.2/cli/conf.d/20-raphf.ini
    - /etc/php/7.2/cli/conf.d/20-readline.ini
    - /etc/php/7.2/cli/conf.d/20-shmop.ini
    - /etc/php/7.2/cli/conf.d/20-sockets.ini
    - /etc/php/7.2/cli/conf.d/20-sqlite3.ini
    - /etc/php/7.2/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.2/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.2/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.2/cli/conf.d/20-tokenizer.ini
    - /etc/php/7.2/cli/conf.d/20-xdebug.ini
    - /etc/php/7.2/cli/conf.d/25-http.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

없으면 썸네일, 리사이즈 동작 불가능
gd를 포함한 extension들 컴포저의 의존성 명시를 통해 해결
또한 위키 설치 방법 업데이트도 필요


[Issue] Small mistake

Extra comma at line 78 in damage-log.js

8978058

Thanks.  That'll teach me for accepting a pull request via my phone!
Fixed in v1.22.1


API docs: convert doc & example relative URIs to absolute URLs

Fixes dart-lang/site-webdev#534
cc @kwalrath

I started trying to merge this, but the tool is not liking the changes. I'll try again after the next merge from google -> github.

I'm running with this commit with my own rebase at https://github.com/dart-lang/angular2/pull/349


Website

Hey, first of all let me thank you for this great project, I am willing to contribute and help as needed.
by the way have seen that the project site is somewhat slow, check this https://developers.google.com/speed/pagespeed/insights/?url=ionicmaterial.com have not thought about moving it to a page on github, its simple an easy. Let me know what you think and how it could help in the project.

Thanks Oscar. You actually read my mind :) I'll be moving to github pages shortly.

@zachsoft I am available to help you if you want, pass me the code of the site and gladly I will help you optimize step and even more to be 100/100 :wink:

@zachsoft ionicmaterial.com is down. :(

@zachsoft first of all, just want to say this looks incredible. Is it possible to get documentation outside of the app emulator? Id'd be nice to jump to the components from a dropdown.

@jl4282 - Check out http://ionicmaterial.com/demo/
If you want it locally, it just needs to be run on your localhost http server. An easy way with node is to open your command line/terminal, change to the directory where you have your ionic-material project, install http-server with: "npm install http-server" and then enter the "http-server" command. A web server will fire up for your current directory, and the console will show you what port to open in your browser. For http-server, usually it'll be up on http://localhost:8080.
Hope this helps!

@oscarmcm I added you as a collaborator and welcome your help with the github page. Feel free to message me directly.

@zachsoft cool and thanks. I will send an email with the things that we can improve and optimize the site. :+1:

@zachsoft you don't have the code of the site on the repository? can you send me the code? or download the site?

I've asked for it too, no dice. I think @zachsoft is busy.
On Wed, 20 May 2015 at 19:08, Oscar Cortez<EMAIL_ADDRESS>wrote:

@zachsoft https://github.com/zachsoft you don't have the code of the
site on the repository? can you send me the code? or download the site?
—
Reply to this email directly or view it on GitHub
https://github.com/zachsoft/Ionic-Material/issues/13#issuecomment-103977237
.

@raibutera what do you think? download the code of the http://ionicmaterial.com/demo/ and start the   optimizations? or wait for @zachsoft btw @raibutera share me your mail, I will send the optimizations plans.

Hi Zach, is the website itself open-source?

@pablodenadai Thinking more about this, although it's heavily modified, the website was started from a ThemeForest theme I forked. Because it was a paid theme I started from, I can't open-source the entire site in good conscience to the original author. Most of the components used in the page are third-party and open-source though, and I don't think there's anything proprietary about the css3 transitions that were worked into the site.

No problem and thanks for clarifying it :-)
BTW Ionic Material seems like a really nice project, thanks for sharing it.

Do you remember which template you forked? Sorry bothering you about it.


ci: use a script for check-preflight-clusterrole.sh

it's not convenient to have inline scripts in github actions, as we
can't run the actions which fail a CI run, locally.
this commit moves the clusterrole preflight check into a script that can
be ran locally before pushing the branch up.
Signed-off-by: Louis DeLosSantos<EMAIL_ADDRESS>Move the clusterrole precheck inline script to one that can be ran locally.

@sayboras I just force pushed the suggested Makefile version.

I don't think we need to run full CI tests since this does not touch the code.
Marking ready to merge.


Create a node2vec example

Hello @fchollet - Kindly review this PR which includes an example for node2vec.
node2vec is is a simple, yet scalable and effective technique for learning embeddings for nodes in a graph by optimizing
a neighborhood preserving objective. The aim is to learn similar embeddings for neighboring nodes, with respect to the graph structure. In this example, I demonstrate node2vec on the movielens dataset to create embeddings for movies.
Please note that I added this example under a new graph folder, as I am planning to produce several examples on GraphNN, and I though to is a good idea to have a dedicated area for it.
LMK what do you think. Cheers!

I don't think the failure of Continuous integration / docker-image (pull_request) has nothing to do with my code file, right?

This looks awesome @ksalama, another 👍 🚀 example!
I can also take a look at it and provide some feedback.

I don't think the failure of Continuous integration / docker-image (pull_request) has nothing to do with my code file, right?

Maybe the CI is failing because /examples/graph is a new folder? It says:
FileNotFoundError: [Errno 2] No such file or directory: '../examples/graph/md'

@8bitmp3 Thanks! It would be great if you can review the PR as well :-)
Good point regarding the CI error. @fchollet cloud you please advise on how to add this example in a new directory?

@fchollet cloud you please advise on how to add this example in a new directory?

You just need to create the folders /examples/graphs/md and /examples/graphs/ipynb. Alternatively you could edit the generation scripts so that missing folders are automatically created (but we rarely add new folders so it's ok to do it by hand...)

@fchollet - Thank you for the advice. I had to generate the .md and .ipynb files so that their folders can be created. We can focus for now reviewing the node2vec_movielens.py file and then regenerate the other files as required.
Cheers

@fchollet Thank you for your comments. I have added examples of domains and applications of ML on Graphs

@8bitmp3 Thanks! It would be great if you can review the PR as well :-)

@ksalama OK, please bear with me 👍

@8bitmp3 Thank you for your suggestions, I have applied them.
@fchollet PTAL and see if you have any further comments before I (re)generate the .md and .ipynb files


Connect to a device using its mac address

Hello!
Can I connect to a device using its mac address only, like in native implementation of this library?
I tried to find my device using BleManager.devices('aa:aa:aa:aa:aa:aa'), but it's returning an empty array.
The goal is to connect to my specific device without making a BLE scan.
Thank you!

On iOS there is no possibility to get a MAC address of a device. On Android it works if the MAC address is static.

Is is required to scan before connecting to the device using its unique id?
And if it is required, is that a hard limitation by the underlying OS or something that can be improved in the library?
p.s. This question seem in line with original issue. If you disagree I'll happily create a new ticket.

Is is required to scan before connecting to the device using its unique id?

On iOS it is not required. On Android it is not required if the device is bonded or has been recently connected (and there was no bluetooth adapter powercycle in between) — otherwise YMMV — it is OS bug/limitation. Unfortunately there is no bulletproof way to fix it in library so it is always better to scan on Android before connecting if a not bonded device is used.

@dariuszseweryn I see you mention that you can connect to a device with MAC address alone on Android. Can you share how? In the documentation I'm just seeing use of UUID.
Thank you!


MarketAnalysis gets stuck on the a rate

My bot very often will get "stuck" on a rate (see copy below), not changing the threshhold rate that the market analysis function is calculating (this can go on for many hours, with the same rate coming through). It is above the manually set minrate for BTC, so it's not that.
The only way I have found to resolve it is to delete my marketdata file and restart the bot, but then it gets stuck again after working for a while - plus I lose historic data.
Any help - much appreciated!

2017-07-11 06:26:41 Not lending BTC due to rate below 0.0749% (actual: 0.0552%)
2017-07-11 06:28:52 Not lending BTC due to rate below 0.0749% (actual: 0.0557%)
2017-07-11 06:30:57 Not lending BTC due to rate below 0.0749% (actual: 0.0557%)
2017-07-11 06:33:07 Not lending BTC due to rate below 0.0749% (actual: 0.0556%)
2017-07-11 06:35:10 Not lending BTC due to rate below 0.0749% (actual: 0.0525%)
2017-07-11 06:37:17 Not lending BTC due to rate below 0.0749% (actual: 0.0546%)
2017-07-11 06:39:27 Not lending BTC due to rate below 0.0749% (actual: 0.0522%)
2017-07-11 06:41:32 Not lending BTC due to rate below 0.0749% (actual: 0.0521%)

If you are averaging on many days this might happen, reduce the days in order to have more dynamic value (2 - 3 days).

I have it set to 1 day - analysis still gets stuck on the exact same rate for many hours.

There might be a bug here, however I prefer not to dive into it as the current MarketAnalysis implementation is being replaced by the MACD branch.
https://github.com/BitBotFactory/poloniexlendingbot/pull/292

Oh awesome, I'll wait for that to be merged then! Thanks again


Authentication (logging in) doesn't work anymore

I was happily using angularfire2 auth (with Google provider) until a day or two ago when it stopped working.
I made a super simple app (using the current webpack-beta.8 CLI) and added angularfire2 auth and a database listing: https://github.com/lindsaymarkward/angularfire2-auth-not-working
The database list works, but the authentication doesn't. It pops up the Firebase Google login but nothing happens. The observable never gets any value.
I notice that @thielCole mentioned something similar (stopped working recently) on the issue: https://github.com/angular/angularfire2/issues/472
I'm using angular 2.0.0-rc.5, angularfire2 2.0.0-beta.4, and angular-cli 1.0.0-beta.11-webpack.8
Thanks in advance @davideast et al.

Hi @lindsaymarkward, I've experienced the same issue when upgrading on the weekend to the webpack version of angular-cli and I've put up a solution that worked for me in #478

Thank you very much. I didn't see that since it was a closed issue.
I have changed to<EMAIL_ADDRESS>and auth works again. I hope they can sort this out so we don't have to change this sort of thing to keep it working.