text:
Vortran Laser USB control

FEATURE:
The serial command through RS232 is slow and outdated.
Describe the solution you'd like
I would like to have this controlled through USB. The device appears as HID with vendor id 0x201A and product id 0x1001, and I can only read from it.
I don't have much documentation on the USB side, but I have the libusb.dll  from the vendor.

We got the vendor's SDK from the website where they provide use with some C# precompiled .dll to talk to the lasers.
For simplicity, I tried using the pythonnet code tested with the latest commit in #157. I was able to instatiate the class StradusHUB and call it's methodsb, but I don't seem to get responses from the lasers. I don't think I'm actually connected to them because if I run their program (img linked below) it runs and recognizes the lasers, while in theory I have them opened in another port (python code).
This might be some useful peace of code since we can tell the buffer sizes, in and endpoints, and vendor ID Vid_201A & Pid_1001.
In their C# code they use a finite state machine and couple of muxes to coordinate sending/receiving data  StradusDevice.cs starting at line 284.
#region USB READ BACKGROUND WORKER THREAD

        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            uint BytesWritten = 0;
            uint BytesRead = 0;
            byte responsePending = 0x00;
            byte responseReceived = 0x00;
            byte armGetResponse = 0x00;
            Mutex myMute;

            while (true)
            {
                if (readWriting)	//Do not try to use the read/write handles unless the USB device is attached and ready
                {
                    if ((WriteHandleToUSBDevice != null) && (ReadHandleToUSBDevice != null))
                    {
                        Thread.Sleep(20);
                        try
                        {
                            if (ReadFileManagedBuffer(ReadHandleToUSBDevice, INBuffer, 65, ref BytesRead, IntPtr.Zero))	//Blocking function, unless an "overlapped" structure is used
                            {
                                if (BytesRead > 0)
                                {
                                    //INBuffer[0] is the report ID, which we don't care about.
                                    //INBuffer[1] is the request type
                                    //INBuffer[2] to INBuffer[63] contain the data

                                    Buffer.BlockCopy(INBuffer, 1, RequestIn, 0, 1); //src,dst

                                    //Parse the fields of the packet received
                                    switch (RequestIn[0])
                                    {
                                        case (byte)RequestTypes.GET_RESPONSE_STATUS:
                                            responsePending = Buffer.GetByte(INBuffer, 2);
                                            //updateRXText("\r\nRx: " + requestIn + " GET_RESPONSE_STATUS:" + System.Convert.ToString(responsePending));
                                            break;
                                        case (byte)RequestTypes.GET_RESPONSE:
                                            if (armGetResponse == 0x01) //Avoid stale data
                                            {
                                                armGetResponse = 0x00;
                                                responseReceived = 0x01;
                                                Buffer.BlockCopy(INBuffer, 2, MessageIn, 0, 63); //src,dst
                                            }
                                            //updateRXText("\r\nRx: " + requestIn + " GET_RESPONSE: " + Encoding.Default.GetString(MessageIn));
                                            break;
                                        default:
                                            break;
                                    }
                                    //System.Console.WriteLine("ReqIn: "+RequestIn[0].ToString());
                                }
                            }

                            //System.Console.WriteLine("STATE: "+STATE);
                            if (STATE != PSTATE)
                            {
                                logger.Info("STATE: " + STATE);
                                PSTATE = STATE;
                            }

                            //Finite State Machine
                            switch (STATE)
                            {
                                case 0x00: //Idle state
                                    //Poll this status continually in the idle state
                                    SendRequest((byte)RequestTypes.GET_RESPONSE_STATUS, String.Empty);
                                    WriteFile(WriteHandleToUSBDevice, OUTBuffer, 65, ref BytesWritten, IntPtr.Zero);
                                    if (responsePending == 0x01) //The firmware has indicated that there is a response ready to retrieve
                                    {
                                        //Flag is reset by firmware
                                        STATE = 0x02;
                                    }
                                    else
                                        if (sendNow == 0x01)
                                        {
                                            sendNow = 0x00;
                                            //Send a command now...
                                            STATE = 0x03;
                                        }
                                    break;
                                case 0x01: //Set Response Received
                                    SendRequest((byte)RequestTypes.SET_RESPONSE_RECEIVED, String.Empty);
                                    WriteFile(WriteHandleToUSBDevice, OUTBuffer, 65, ref BytesWritten, IntPtr.Zero);
                                    if (myParentObj != null)
                                        System.Console.WriteLine("SET_RESPONSE_RECEIVED VR Sent...");
                                    STATE = 0x05;
                                    break;
                                case 0x02: //Get response now
                                    //Send request to get the response
                                    SendRequest((byte)RequestTypes.GET_RESPONSE, String.Empty);
                                    WriteFile(WriteHandleToUSBDevice, OUTBuffer, 65, ref BytesWritten, IntPtr.Zero);
                                    armGetResponse = 0x01;
                                    if(myParentObj!=null)
                                        System.Console.WriteLine("GET_RESPONSE VR Sent...");
                                    STATE = 0x04;
                                    break;
                                case 0x03: //Send a new command to laser
                                    rwl.WaitOne();
                                    SendRequest((byte)RequestTypes.SET_CMD_QRY, stringToSend);
                                    WriteFile(WriteHandleToUSBDevice, OUTBuffer, 65, ref BytesWritten, IntPtr.Zero);
                                    rwl.ReleaseMutex();
                                    if (myParentObj != null)
                                        System.Console.WriteLine("SET_COMMAND VR Sent... " + stringToSend);
                                    STATE = 0x00;
                                    break;
                                case 0x04: //WAIT STATE (Wait for the response to actually come back)
                                    if (responseReceived == 0x01)
                                    {
                                        responseReceived = 0x00;
                                        if (myParentObj != null)
                                            System.Console.WriteLine("Response from firmware is:" + Encoding.Default.GetString(MessageIn));
                                        STATE = 0x01;
                                    }
                                    break;
                                case 0x05: //WAIT STATE (Wait for GET_RESPONSE_STATUS to return 0)
                                    SendRequest((byte)RequestTypes.GET_RESPONSE_STATUS, String.Empty);
                                    WriteFile(WriteHandleToUSBDevice, OUTBuffer, 65, ref BytesWritten, IntPtr.Zero);
                                    if (responsePending == 0)
                                    {
                                        rwlReply.WaitOne();
                                        theReply = Encoding.Default.GetString(MessageIn);
                                        hasReply = true;
                                        rwlReply.ReleaseMutex();
                                        STATE = 0x00;
                                        System.Console.WriteLine("Command Transaction Complete");
                                    }
                                    break;
                                case 0x06:
                                    STATE = 0x06;
                                    break;
                            }

                        }
                        catch
                        {
                            throw;
                            //Exceptions can occur during the read or write operations.  For example,
                            //exceptions may occur if for instance the USB device is physically unplugged
                            //from the host while the above read/write functions are executing.
                        }

                    }
                    else
                    {
                        Thread.Sleep(200);	//was 200, was 5ms Add a small delay.  Otherwise, this while(true) loop can execute very fast and cause
                        //high CPU utilization, with no particular benefit to the application.
                    }

                } //end of while(true) loop
                //-------------------------------------------------------END CUT AND PASTE BLOCK-------------------------------------------------------------------------------------
                //-------------------------------------------------------------------------------------------------------------------------------------------------------------------
            }
        }
        #endregion

One thing to note is that the vendor's installation package just uses a libusub.sys or a LibUsbDotNet.dll to talk to the device and setup the USB drivers. Is there a better way to talk to these devices?

@gregcourville perhaps you have more experience with this? Any pointers would be appreciated. @ieivanov  added this to today's copylot meeting.
Thank you both in advance.

repo: czbiohub/coPylot


text:
Compiling issues

Hey guys,
I have the following issue. When compiling with:
make exe -f makefile11
I get the following error after it compiles lots of other things:
/usr/bin/ld: /home/mbelouso/MotionCor3/Lib/libmrcfile.a(CLoadExtHeader.o): relocation R_X86_64_32 against symbol '__gxx_personality_v0@@CXXABI_1.3' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: failed to set dynamic section sizes: bad value collect2: error: ld returned 1 exit status make: *** [makefile11:160: exe] Error 1
gcc and g++ version is 11.4, CUDA 11.8, linux mint 21
Any thoughts?

I had the same issue but adding -Xcompiler -no-pie to makefile11 in the exe block worked for me (copied from Issue #4)
See https://github.com/czimaginginstitute/MotionCor3/issues/4#issuecomment-1784848759 for the full code snippet

@elainehoml Thanks for the heads up. I added these lines to the makefile11, but still run into the same issue. Same error output as in my initial post.

Adding these flags in makefile11 seems to work. A different workaround that worked for me as well was to use GCC 10 instead of GCC 11.

Yeah. I eventually got it to compile with a different version of GCC (8.0)
and adding these flags. Thanks.
On Wed, 14 Feb 2024, 10:13 pm Stefan Fleischmann, @.***>
wrote:

Adding these flags in makefile11 seems to work. A different workaround
that worked for me as well was to use GCC 10 instead of GCC 11.
—
Reply to this email directly, view it on GitHub
https://github.com/czimaginginstitute/MotionCor3/issues/11#issuecomment-1943556513,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGEXN7BZNKGSSKSSIRTZSHTYTSL4VAVCNFSM6AAAAAA7KC2IFCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBTGU2TMNJRGM
.
You are receiving this because you authored the thread.Message ID:
@.***>

Just to provide more context here, at some point several popular Linux distributions decided to compile their packaged versions of gcc with the -enable-default-pie option (see here).  The version of gcc used isn't as relevant so much as whether or not gcc was compiled with PIE as default.  The list of compile options for the particular gcc binary you're using can be found by typing gcc -v.
A PIE (position independent executable) is a binary compiled with security measure that is meant to prevent some common buffer overflow attacks; I'm not certain, but I imagine it has become the default due to several high-profile buffer overflow exploits in somewhat recent years (e.g., Heartbleed).
I'm uncertain why PIE binaries can't be produced with NVCC, but some frightfully old CUDA docs provide a clue:
The host linker on Mac OS 10.7 generates position-independent executables by default. As CUDA does not support position-independent executable currently, the linker must generate position-dependent executable by passing in the -no_pie option. If nvcc is being used to link the application, this option will be passed to the linker by default. To override the default behavior, the -Xlinker -pie option can be passed to nvcc.

My educated guess is that modern versions of CUDA still do not support PIE binaries, although I can find no documentation out there to confirm or deny this hypothesis.

source: gharchive/issue

authors: elainehoml jpellman mbelouso stiobhan

license_type: permissive

license_source: github-api


text:
Access Tokens are always required

Bug Report
Code
Initially was using withClientCredentials but got told I should be using withCredentials
    const twitchClient = await TwitchClient.withCredentials("<clientId>");
    const user = await twitchClient.helix.users.getUserByName(userName);

Expected behavior
Don't require a token for making requests to unscoped calls.
Actual Behavior
If statement is causing a token to always be required.
The initial if statement is always true as its either an empty array or contains scopes
https://github.com/d-fischer/twitch/blob/master/packages/twitch/src/Auth/StaticAuthProvider.ts#L46
Passes the require scopes or an empty array
https://github.com/d-fischer/twitch/blob/master/packages/twitch/src/TwitchClient.ts#L387
Environment

Version: 2.2.3
Node version: v10.15.1
Browser version: Firefox 66.0.5
Operating system: Windows 10

The fix on the next branch seems to solve the issue.

repo: d-fischer/twitch

license: mit

license_source: bigquery


text:
Can't have a VertexSpecification!vec3f

you get this:
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d(215,43): Error: type float[3][0] is not an expression
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d(216,17): Error: undefined identifier 'U'
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d(78,21): Error: template instance gfm.opengl.vertex.toGLTypeAndSize!(float[3]) error instantiating
source/app.d(26,5):        instantiated from here: VertexSpecification!(Vector!(float, 3))
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Error: this for ptr needs to be type Vector not type gfm.opengl.vertex.VertexSpecification!(Vector!(float, 3))
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector._N is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Error: variable gfm.math.vector.Vector!(float, 3).Vector._N is not accessible from module vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector._T is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Error: type float is not an expression
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.isConvertible(T) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.isForeign(T) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.isValidSwizzle(string op, int lastSwizzleClass = -1) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.searchElement(char c, string s) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.hasNoDuplicates(string s) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.isValidSwizzleUnique(string op) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.swizzleIndex(char c) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.swizzleClassify(char c) is not visible from module gfm.opengl.vertex
../../../.dub/packages/gfm-6.2.0/gfm/opengl/gfm/opengl/vertex.d-mixin-65(65,18): Deprecation: gfm.math.vector.Vector!(float, 3).Vector.swizzleTuple(string op) is not visible from module gfm.opengl.vertex

I think you are supposed to define a struct containing a vec3f, and instantiating VertexSpecification!ThatStruct instead.

Sure, that's what I'm doing now, but it seems an unnecessary complication

Marked as enhancement, could be insteresting indeed.

Available as v6.2.3
/// A helper template to define a simple vertex type from a vector type.
/// By default the unique field will be name "position".
/// Note: it's important the struct isn't larger than the vector itself.
///
/// Example:
///     VertexSpecification!(VertexPosition!vec3f);
///
align(1) struct VertexPosition(Vec, string fieldName = "position") if (isVector!Vec)
{
    align(1):
    mixin("Vec " ~ fieldName ~ ";");
    static assert(VertexPosition.sizeof == Vec.sizeof);
}

unittest
{
   alias Test = VertexSpecification!(VertexPosition!vec3f);
}

repo: d-gamedev-team/gfm

license: unlicense


text:
[feature] Make description optional

🧩 Feature
Make the description field optional
Description
During code reviews I regularly add short notes as I read the code, hinting future me that something is going there.
This is super helpful as the title of the note is shown directly in the code.
The issue with that approach is that the description is a required field.
Currently my work around is just hitting my space bar to bypass the mandatory description.
It would be nice if the description field can be left empty when trying to make a not.
Thanks in advance, and thanks for the awesome tool!

all-contributors add @inconspicuous-username for ideas

@all-contributors add @inconspicuous-username for ideas

authors: d-koppenhagen inconspicuous-username

repo: d-koppenhagen/vscode-code-review

license: MIT


text:
[PTR] Damage multiplier for set items

Hey.
Are there any plans/any way to update the damage multipliers for set items (e.g. Tal Rasha dmg increased from 750% to 3000%) introduced on PTR for the upcoming season 16? They may change, but would love to try out some stuff with the updated damage multipliers.
Keep up the good work!

Though ^ the simulator still works. just the items are displaying the old values. so not a biggy

Actually if you move over to the skills, and then to the damage numbers of one of your skills, the multipliers are still the old ones not the new ones.

I never mentioned the skills tab (also no skills are changed in the patch only set damage is being balanced). I said Simulator still works as ^ shows Live Version Tal SP is only 45Q for the 50/3 stack hit PTR sim shows 149T as it is supposed to.

Have you tried hard refreshing page (ctrl F5) or clearing cache? If PTR version is showing old values in tooltips (i.e. Tal Rasha's 750 instead of 3000) then it must be using old data cached somewhere.


text:
🛑 Staging Homologation WebSocket is down

In e2335a3, Staging Homologation WebSocket ($STAGING_HOMOLOGATION_WEBSOCKET) was down:

HTTP code: 503
Response time: 887 ms

Resolved: Staging Homologation WebSocket is back up in aa23fe0.


text:
🛑 Dokify is down

In 0755deb, Dokify (https://dokify.net) was down:

HTTP code: 406
Response time: 590 ms

Resolved: Dokify is back up in 70efcc8 after 9 minutes.


text:
🛑 Staging Homologation API is down

In fc8b472, Staging Homologation API ($STAGING_HOMOLOGATION_API) was down:

HTTP code: 503
Response time: 847 ms

Resolved: Staging Homologation API is back up in a481611.


text:
Adopt InternMap.

Fixes #184.
Playground: https://observablehq.com/d/d4c5f6ad343866b9

Documentation at https://observablehq.com/@d3/d3-group will need an update when this lands. (I've also added a section on d3.index, if you want to proofread it.)
Note that the paragraphs about key equality are defensive, and we'll need to mention the version number which solves this.
It's worth noting that while InternMap can index on an array, by passing a key function, there is no way to pass a key function to d3.group (and rollup and index). When the key is on the first level it's easy though to upgrade to an InternMap:
const g = new d3.InternMap(
  d3.group(
    [[["foo", "bar"], 1], [["foo", "baz"], 2], [["goo", "bee"], 3]],
    d => d[0]
  ),
  JSON.stringify
);
g.get(["foo", "bar"]); // 1

Documentation at https://observablehq.com/@d3/d3-group will need an update when this lands. (I've also added a section on d3.index, if you want to proofread it.)
Note that the paragraphs about key equality are defensive, and we'll need to mention the version number which solves this.
It's worth noting that while InternMap can index on an array, by passing a key function, there is no way to pass a key function to d3.group (and rollup and index). When the key is on the first level it's easy though to upgrade to an InternMap:
const g = new d3.InternMap(
  d3.group(
    [[["foo", "bar"], 1], [["foo", "baz"], 2], [["goo", "bee"], 3]],
    d => d[0]
  ),
  JSON.stringify
);
g.get(["foo", "bar"]); // 1

I've added documentation in #186.

I've added documentation in #186.

I thought about exposing the configurable key function through d3.group et al. but that feels like overkill to start. (I mainly think configurable keys are useful for compound keys; compound keys aren’t typically needed with d3.group because it’s already nested, and furthermore JSON.stringify is slow.) If we do need to expose it in the future, it could be something like d3.group.key(JSON.stringify)(data, d => d.foo), or d3.groupKey etc.
Thanks for writing docs! I’ll check ’em out now.

I thought about exposing the configurable key function through d3.group et al. but that feels like overkill to start. (I mainly think configurable keys are useful for compound keys; compound keys aren’t typically needed with d3.group because it’s already nested, and furthermore JSON.stringify is slow.) If we do need to expose it in the future, it could be something like d3.group.key(JSON.stringify)(data, d => d.foo), or d3.groupKey etc.
Thanks for writing docs! I’ll check ’em out now.

source: gharchive/pull-request

authors: Fil mbostock

license: isc


text:
d3-force-drag?

I feel myself doing this a lot with d3-force + d3-drag, and it would be nice to encapsulate as a reusable module:
node.call(d3.drag()
    .on("start", dragstarted)
    .on("drag", dragged)
    .on("end", dragended));

function dragstarted(d) {
  if (!d3.event.active) simulation.alphaTarget(0.3).restart();
  d.fx = d.x, d.fy = d.y;
}

function dragged(d) {
  d.fx = d3.event.x, d.fy = d3.event.y;
}

function dragended(d) {
  if (!d3.event.active) simulation.alphaTarget(0);
  d.fx = null, d.fy = null;
}

One gotcha is that the pattern is slightly more complicated for Canvas since you need to use simulation.find to pick a node. Another gotcha is that I don’t want to introduce a dependency from d3-force to d3-drag (or vice versa), so this would need to live in a new module d3-force-drag, presumably.

@mbostock How's this: d3-force-drag?
The module checks if the argument node is a canvas element and applies drag.container and drag.subject accordingly. Then it, by default, implements "basic" drag behavior.
The listener and dragsubject functions are customizable, providing for cases where the defaults aren't good enough.

While I understand the drive to add more syntactic sugar (and in pure D3 candy land it would be great), I would reiterate your already identified:

Another gotcha is that I don’t want to introduce a dependency from d3-force to d3-drag (or vice versa), so this would need to live in a new module d3-force-drag, presumably.

To  elaborate, the separation of concerns between the event handling in d3-drag (and underneath the hood d3-selection for d3.event is critical in use cases where event handling is done outside the realm of D3. E.g. using d3-force for layout calculation, but Angular for DOM/rendering and event handling.

@tomwanzek That's hard for me to visualize (or maybe I'm misunderstanding) because I've never worked with Angular, but I don't doubt it. May you provide such a case?

@augmt Unfortunately, I cannot currently point you to a public worked example repo that fully illustrates the point. But I will try to give a "verbal" 50,000ft explanation (in reference to Angular 2+)
At its most fundamental, Angular manages a tree of data-driven, reusable components. For purposes here, let's just focus on a web application rendered in the browser.
A reusable component is essentially a combination of a component HTML template, possibly component-specific styles (e.g. css) and the code for the component class. The component class code, at its most basic, allows the Angular (change detection and the rendering engine):

to instantiate components using input data bindings
render the component template in the DOM
handle events (e.g. DOM events bound to elements in the template or non-DOM events)
emit output events which can be listened to and handled by parent components
destroy no longer needed components.

The components can be nested in component trees etc. They are reusable in that they can be instantiated multiple times, wherever needed in the web application.
Against this simplistic background, there are two strategies to use Angular 2+ and D3 to generate visualizations of force-directed networks with e.g. node dragging.
Strategy 1: D3 is Allowed to touch the DOM

An Angular 2 component has a template which essentially only contains a DOM element, like and svg or g to serve as an anchor point  for the simulation visualization.
The component accepts input data defining the network data.
d3-force is used for the layout of the network/simulation
d3-selection and d3-drag are used to dynamically append the simulation visualization to the anchor point element and handle all DOM events within these dynamically added DOM elements.
If network data change, d3 functionality (merge, enter/exit/update) is used to update the DOM as needed

Strategy 2: D3 Force for Layout Calculation Only

An Angular 2 component has a template which contains elements to visualize the entire network (including nodes and links)
d3-force is used to simulate the network and compute the node positions depending on the use case
Angular 2 is used to map the network data (including position data) to the visualization elements for individual nodes and links and touch the DOM as needed. (Angular has a directive called *ngFor which allows an array of data to drive the generation/destruction of DOM elements for each array element.
All DOM events required to support node dragging are bound to the so generated node DOM elements using Angular 2. This means a dragging logic functionally comparable to d3-drag is implemented in Angular 2.

While there is a bit more to Strategy 2, when it comes to using a one-way data flow for component interaction, at the core it means Strategy 2 does not use d3-selection (incl. d3.event) and d3-drag. I.e. D3 does not touch the DOM itself.
So a tight coupling between d3-force and d3-drag might limit the choice of strategies. Thus I think the modularization choice made so far was very wise indeed 😄

PS: Actually, there is the following illustrative implementation: ngx-charts force-directed graph

I’ve been using the drag function here often:
https://observablehq.com/@d3/force-directed-graph

Closing this issue due to inactivity. Please do not hesitate to add a comment or reopen the issue if you think it is still worth pursuing.

authors: Fil augmt mbostock tomwanzek


text:
Wrap text example ?

Hi,
In your documentation, the pack example https://github.com/d3/d3-hierarchy#pack has wrapped text. But I can't find the way to achieve the same result. Could you post the code that generated this image ?
Thanks a lot

If you click on the image of the example you linked (which goes to http://bl.ocks.org/mbostock/ca5b03a33affa4160321) and scroll down you will see the code to generate multiple lines of text.
Please use Stack Overflow tag d3.js to ask for help. Although I make an effort to assist everyone that asks, I am not always available to provide help promptly or directly. Stack Overflow provides a better collaborative forum for self-help: tens of thousands of D3-related questions have already been asked there, and some answered questions may be relevant to you.
When asking for help, please include a link to a live example that demonstrates the issue, preferably on bl.ocks.org. It is often impossible to debug from code snippets alone. Isolate the issue and reduce your code as much as possible before asking for help. The less code you post, the easier it is for someone to debug, and the more likely you are to get a helpful response.
If you have a question about D3’s behavior and want to discuss it with other users, also consider the d3-js Google Group or joining the d3-js Slack.
Thank you! 🤗

Oh, great ! Thank you very much !

authors: matthieubrunet mbostock


text:
naverblog: cannot retrieve title and link of blogs from list

See the changes of naver search tab.

Fixed by 7c579df.

repo: da-ket/soaz


text:
Add a sitemap.xml

https://www.belter.io/eleventy-sitemap/

added and documented 👍

added and documented 👍

repo: daKmoR/rocket


text:
Bad connection?

At the beginning, when I've accepted to travel with the other person and we reach a mountain pass where we see some dead people and I choose to investigate closer, I'm thrown to passage 265 which seems to be a mistake. Text talks about a scribe, about laptops and a modem, all of which are new to me.

I'll review connections. I may have missed a few. Thanks for reporting.

Should be fixed in the latest story file: https://github.com/daelsepara/heart-of-ice/releases/latest/download/heartice.z5

authors: daelsepara fredrikr

repo: daelsepara/heart-of-ice


text:
Istanbul Dependency?

Hello,
I noticed that after updating from 1.2, npm installed nearly 100 new packages. The new major release of uberproto seems to depend on instanbul@1.1.0-alpha.1 (it's a real dependency, not a devDependency).
Is that really intended? This adds more than 10mb of files under node_modules that shouldn't be necessary for the library to run.

Wow, no idea what happened there. Thank you, fixed in v2.0.3

authors: UnknownTraveller daffl

repo: daffl/uberproto


text:
#Container / #Exec need the ability to control their networking environment

Specifically, it should be possible to specify:

additional hosts (--add-hosts in docker lingo)
the network the container is attached to
specify dns servers

Taking stock now that 0.2 is released:

additional hosts (--add-hosts in docker lingo)

I believe this is available in core.#Exec

the network the container is attached to

Not relevant in buildkit (assuming you're talking about networks in the docker engine sense)

specify dns servers

Is this supported by buildkit? And if so, does core.#Exec support it?

I'm closing this, since it's specific to the CUE SDK and we are not currently adding features to the CUE API.

authors: dubo-dubon-duponey shykes

repo: dagger/dagger


text:
feat(lsp): add dagger lsp command.

Directly integrate server's start in dagger to simplify the usage since users
will not have to install another binary to use the lsp.
Signed-off-by: Vasek - Tom C tom.chauveau@epitech.eu

@aluzzardi We have a platform issue when I try to build the binary.
It's because go-tree-sitter use C GO...
I found a workaround on Dagger LSP with goreleaser : https://github.com/dagger/daggerlsp/blob/main/.goreleaser.yaml,
I think we will have to do the same here to use/release it.
Since we are currently using Dagger to build our project, I think that will not be a piece of cake.

I think it's overkill to enable cgo everywhere for this. We may end up with other cross-compiling issues.
From the vscode extension, would it be possible to implement the following in the start function:

check if daggerlsp in the $PATH - if it is, use this
check if docker is in the $PATH - if it is, use docker run -it --rm <some-prebuilt-daggerlsp-image>:<version>
if none of it is available, gently redirect the user the install instructions

Not as good as using the lsp via a sub-command, but good enough to not bother with install instructions.
I'll defer to @aluzzardi to decide whether it's still better option to enable CGO (I checked the go-tree-sitter lib, looks like there is no workaround outside of CGO).

everywhere

I think it's overkill to enable cgo everywhere for this. We may end up with other cross-compiling issues.
From the vscode extension, would it be possible to implement the following in the start function:

check if daggerlsp in the $PATH - if it is, use this
check if docker is in the $PATH - if it is, use docker run -it --rm <some-prebuilt-daggerlsp-image>:<version>
if none of it is available, gently redirect the user the install instructions

Not as good as using the lsp via a sub-command, but good enough to not bother with install instructions.
I'll defer to @aluzzardi to decide whether it's still better option to enable CGO (I checked the go-tree-sitter lib, looks like there is no workaround outside of CGO).

May be a dumb question, but why not doing as gopls ?

Running a go install github.com/dagger/daggerlsp@latest command (https://pkg.go.dev/golang.org/x/tools/gopls#readme-installation), from either dagger / the vscode extension ?

@aluzzardi noticed that go-tree-sitter was added recently. Is it actually needed? If it's just for a feature that can be temporarily removed (not sure), we can simply remove the dep and process with this PR without the dep on CGO.

check

It is being used for the semantic tokenization, whose role here is to be used by the VSCode extension for syntax highlighting purposes

@samalba. Done: https://github.com/dagger/vscode-dagger/pull/10. Semantic highlighting is replaced with syntax highlighting in this PR (same way as other extensions do), until we find an alternative

I have heard @dolanor that you have the most experience integrating this with vim. Do you have 15 mins to spare?

Three (3) is the magic number and an acceptable workaround if this is intentional (a.k.a. "feature", a.k.a. "not a bug"):

Yeah right now it's 3 ^C to stop the server. We can update this later

I have an important PR coming up shortly against https://github.com/dagger/daggerlsp. Would like to get that in before we merge this. Expect to have it wrapped up in the next few hours.

I have an important PR coming up shortly against https://github.com/dagger/daggerlsp. Would like to get that in before we merge this. Expect to have it wrapped up in the next few hours.

It depends if you want to include it in the next Dagger LSP release or not.
If you want we can wait tomorrow to merge this PR.

It depends if you want to include it in the next Dagger LSP release or not. If you want we can wait tomorrow to merge this PR.

That's a good point, it's not dependent on these changes. 🙌🏻

authors: TomChv gerhard grouville samalba


text:
docs: Adds CLI cookbook

This commit adds a CLI cookbook for common CLI tasks.

Closing in favour of #6869


text:
Show and hiden steplist

Hi,
I can not find out how to show and hide step list in wizard.Can you please give me some hints?thank you
Originally posted: 2015-03-03T08:22:33

StepWizardControl and WizardControl are two separate controls. Currently the StepWizardControl does not allow for the hiding of the step list.
Originally posted: 2015-03-04T09:19:16

hum..thank you so much
Originally posted: 2015-03-04T14:54:10

repo: dahall/AeroWizard


text:
Add sync configure

I think async configuration is not very suitable for browsers.

You don't have to prepend await for calling configure() unless you'd like to use sinks which are AsyncDisposable (e.g., stream sink). I'll add docs about this.

authors: AaronPorts dahlia

repo: dahlia/logtape


text:
Exception: Expected true but got false.

Log  error:
2023-01-29T06:39:38.636] [ERROR] vscode.formatDocument - Found exception: Error: Expected true but got false.
at p (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1145)
at t.assertTrue (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:474)
at Object.compose (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1739587)
at l (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1741826)
at l (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1741954)
at t.composeParts (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1742036)
at d.composeDecl (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1766893)
at d.composeImport (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1765794)
at d.compose (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1764763)
at c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1780315
at Array.map ()
at compose (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1780305)
at c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1780217
at Array.map ()
at compose (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1780207)
at c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1756734
at t.formatSource (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1756747)
at l (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:2:1757717)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at t.formatDocument (c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:23:492676)
at c:\Users\merce.vscode\extensions\dozerg.tsimportsorter-7.6.1\out\extension.js:23:487875
at async Promise.all (index 0)
extension breaks on save.

Duplicate to https://github.com/daidodo/format-imports-vscode/issues/94.

repo: daidodo/format-imports-vscode


text:
feat: add flag --pr-merge-branch-protection

This flag lets you pick how to handle branch protection rules.
statusChecks waits until all required statues & check rules (from Statues & Checks API, respectively) are in a "success" state. For Checks this also means any rule that has a "neutral" or "skipped" conclusion. It looks at both required statues configured under branch protection rules and rulesets. This is the flag default to maintain backwards compatibility pre-v1.6.1.
all waits until all branch protection rules are met. This also includes any matching Rules defined via the Rulesets API.
bypass lets you bypass all branch protection rules once the authenticated user has the ability. That is, the user/app is configured to bypass rules.
Also bumped Github Client to v57 to be able to use the Ruleset API.
This should fix issue #293.

awesome, thanks a lot for your work!

authors: jashandeep-sohi vbehar

repo: dailymotion-oss/octopilot


text:
List item swipe layout staying visible on next item if current list item is removed.  Can't delete list item with smooth hide animation..

Hello,
I faced with problem to close(to hide) swipe content on list items on the other index than 0.  I tried to do everything exactly as is mentioned in the docs, but without the luck.
I posting animated gif with problem.

Code of the adapter is following:
How can i solve it please? From the docs it is not clear.
Many thanks for any advice.
public class MealAdapter extends BaseSwipeAdapter {

    private List<Participiant> filteredData;
    private static Activity context;
    private SwipeLayout mSwipeLayout;

    private class ViewHolder {
        public ImageView deleteItemIv;
        public ImageView countryIconFlag;
        public TextView countryNameTv;
        public LinearLayout bottomWrapperLayout;
    }

    public ParticipantGiftAdapter(List<Participiant> listItems, Activity context) {
        this.filteredData = listItems;
        this.context = context;
    }

    @Override
    public int getCount() {
        return filteredData.size();
    }

    @Override
    public Participiant getItem(int position) {
        Logger.d("getItem");
        return filteredData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getSwipeLayoutResourceId(int position) {
        Logger.d("getSwipeLayoutResourceId");
        return R.id.swipe;
    }

    @Override
    public View generateView(int position, ViewGroup parent) {
        Logger.d("generateView");
        View viewToReturn = null;
        try {
            LayoutInflater layoutInflater = context.getLayoutInflater();
            viewToReturn = layoutInflater.inflate(R.layout.list_item_participiant, parent, false);
            mSwipeLayout = (SwipeLayout) context.findViewById(R.id.swipe);
        } catch (Exception e) {
            Logger.e(e.getMessage());
        }
        return viewToReturn;
    }

    @Override
    public void fillValues(int position, View convertView) {
        Logger.d("fillValues");
        try {
            Logger.d("Position :" + position);

            ViewHolder holder;
            holder = new ViewHolder();

            holder.countryNameTv = (TextView) convertView.findViewById(R.id.li_participiant_country_name_tv);
            holder.countryIconFlag = (ImageView) convertView.findViewById(R.id.li_participiant_country_flag_iv);
            holder.deleteItemIv = (ImageView) convertView.findViewById(R.id.li_participiant_remove_iv);
            holder.bottomWrapperLayout = (LinearLayout) convertView.findViewById(R.id.bottom_wrapper);
            holder.bottomWrapperLayout.setOnClickListener(mdeleteParticipantClickListener);

            // Set ID of the list item
            holder.bottomWrapperLayout.setTag(position);

            // SET VALUES
            Participiant participant = getItem(position);
            String caption = participant.getCaption();
            if (caption == null) {
                caption = context.getString(R.string.select_country);
            }

            // GET FLAG
            Drawable d = null;
            if (participant.getCountryCode() == Constants.Global.FLAG_TYPE_DEFAULT) {
                d = ContextCompat.getDrawable(context, R.drawable.flag_default);
            } else {
                d = CommonHelper.getFlagDrawable(participant.getCountryCode(), context, Constants.Global.FLAG_TYPE_GLOBE);
            }

            holder.countryNameTv.setText(caption);
            holder.countryIconFlag.setImageDrawable(d);

            registerSwipeListener();
        } catch (Exception e) {
            Logger.e(e.getMessage());
        }
    }

    private void registerSwipeListener() {
        //set show mode.
        mSwipeLayout.setShowMode(SwipeLayout.ShowMode.PullOut);
        //add drag edge.(If the BottomView has 'layout_gravity' attribute, this line is unnecessary)
        mSwipeLayout.addDrag(SwipeLayout.DragEdge.Left, context.findViewById(R.id.bottom_wrapper));
        mSwipeLayout.addSwipeListener(new SwipeLayout.SwipeListener() {
            @Override
            public void onClose(SwipeLayout layout) {
                //when the SurfaceView totally cover the BottomView.
                Logger.d("onClose");
            }

            @Override
            public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) {
                //you are swiping.
                Logger.d("onUpdate");

            }

            @Override
            public void onStartOpen(SwipeLayout layout) {
                Logger.d("onStartOpen");
            }

            @Override
            public void onOpen(SwipeLayout layout) {
                //when the BottomView totally show.
                Logger.d("onOpen");
                /*
                Integer listItemPosition = (Integer) layout.getTag();
                ToastHelper.showToast(listItemPosition, 1000, context);
                Logger.d("Swiped on item no: " + listItemPosition);
                */
            }

            @Override
            public void onStartClose(SwipeLayout layout) {
                Logger.d("onStartClose");
            }

            @Override
            public void onHandRelease(SwipeLayout layout, float xvel, float yvel) {
                //when user's hand released.
                Logger.d("onHandRelease");
            }
        });
    }

    private ImageView.OnClickListener mdeleteParticipantClickListener = new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                Integer listItemPosition = (Integer) v.getTag();
                String selectedParticipantId = getItem(listItemPosition).getId();
                Integer filteredDataSize = filteredData.size();

                Logger.d("CLICKED ON ITEM NO: " + listItemPosition);
                Logger.d("SELECTEDPARTICIPANT ID: " + selectedParticipantId);
                Logger.d("FILTEREDDATA SIZE: " + filteredDataSize);

                if (selectedParticipantId == null) {
                    Logger.d("WANT TO DELETE ITEM ON POSITION " + listItemPosition);
                    //filteredData.remove(listItemPosition);
                    filteredData.remove(filteredData.get(listItemPosition));
                    notifyDataSetChanged();
                    GiftActivity.updateHeadingLimitValues();
                    mSwipeLayout.close();
                } else {
                    for (int i = 0; i < filteredDataSize; i++) {
                        Participiant participantItemFromLv = filteredData.get(i);
                        Logger.d("Actual participant " + participantItemFromLv.getId());
                        Logger.d("Selected participant " + selectedParticipantId);
                        if (participantItemFromLv.getId().equals(selectedParticipantId)) {
                            Logger.d("Match on the position " + i);
                            filteredData.remove(participantItemFromLv);
                            Logger.d("Array now contains " + filteredData.size() + " items");
                            notifyDataSetChanged();
                            GiftActivity.removeParticipantFromGiftLimitListView(context, participantItemFromLv);
                            mSwipeLayout.close();
                            return;
                        }
                    }
                }
            } catch (Exception e) {
                Logger.e(e.getMessage());
            }
        }
    };

}

Ive been facing the same problem, maybe its kinda late for you but what solved this for me was
 public void refreshList(){         List<Integer> openItems = getOpenItems();         for (int i = 0; i < openItems.size(); i++){             closeItem(openItems.get(i));         }         notifyDataSetChanged();     }

Hi @mescartin
I got same problem.
Please let me know where are declare getOpenItems() and closeItem() ?

Hi @mescartin there is an option available
closeAllItems()
It's not neccesary iterate over all the items.

authors: Javiergv hocnguyen mescartin r0boto

repo: daimajia/AndroidSwipeLayout


text:
Check for reflection warnings in CI build

Adds a basic check to assert that changes do not introduce reflection warnings.
This should catch regressions that may be accidentally introduced, such as #546.
Before (on branch 3.x):
❯ lein check
Compiling namespace clj-http.client
Reflection warning, ring/util/codec.clj:95:5 - call to static method encode on java.net.URLEncoder can't be resolved (argument types: java.lang.String, unknown).
Reflection warning, ring/util/codec.clj:130:6 - call to static method decode on java.net.URLDecoder can't be resolved (argument types: java.lang.String, unknown).
Compiling namespace clj-http.conn-mgr
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
Compiling namespace clj-http.cookies
Compiling namespace clj-http.core
Compiling namespace clj-http.core-old
Compiling namespace clj-http.headers
Compiling namespace clj-http.links
Compiling namespace clj-http.multipart
Compiling namespace clj-http.util

On this branch:
❯ lein check
Compiling namespace clj-http.client
Compiling namespace clj-http.conn-mgr
Compiling namespace clj-http.cookies
Compiling namespace clj-http.core
Compiling namespace clj-http.core-old
Compiling namespace clj-http.headers
Compiling namespace clj-http.links
Compiling namespace clj-http.multipart
Compiling namespace clj-http.util

This PR is now rebased off 3.x and uses Github Actions 🥳

repo: dakrone/clj-http


text:
French simple date format

Hello!
You can see my problem on http://plnkr.co/edit/qB39hGTYKQXgE1vIHZJc?p=preview : when I put 25/01/2015 for exemple in the input, the result is not valid (2018-01-01T00:00:00+01:00).
What Am I missing ?
Thanks for you help !
J.-Luc

Actually, the result is valid in your example. A Date object (not a string) is stored in the model.
If you really want to store a string you can give the code in the develop branch a try.

sorry but when i modify the date in the input from 25 to 26 for example the date result is always not correct.

I updated the example you used to include the latest version of this directive - does this work correctly?
http://plnkr.co/edit/zcHljRCzRBE25HnY41GO?p=preview

yes when I delete , 'ui.bootstrap.datetimepicker' in var myApp = angular
.module('myApp', ['ui.dateTimeInput'])
.controller('dateTimePickerController', dateTimePickerController);
Thanks !

authors: Incognito-Nemo dalelotts

repo: dalelotts/angular-date-time-input


text:
the url for some of the updates in updates.xml appear to be wrong

I am getting error 404 codes for the XS62ESP1 update. I looked at the url and the one that is provided in the updates.xml file has the URL of
http://downloadns.citrix.com.edgesuite.net/akdlm/8707/XS62ESP1.zip
However the URL is supposed to be:
http://downloadns.citrix.com.edgesuite.net/8707/XS62ESP1.zip
This used to work so I do not know if the URL changed or if the updates.xml file changed. In either case can the updates.xml file be updated.

First hint suggests that the URL provided by citric is wrong... Not much we can do to intervene there though.

I gave myself a workaround
Created my own apache server copied the updates.xml file from citrix edited the file :1,$s/akdlm///g saved then updated the patchurl in the patcher.py script and good to go.

authors: dalgibbard jyork-sarc

license: WTFPL


text:
Added support for NETStandard 1.5.

As NETStandard 1.5 dosnt support transversing the Stack the GetCurrentClassLogger method on LogProvider will not be available.

What is the use case for supporting netstandard1.5 at this time? From this https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support netstandard1.6 is compatible with the same things 1.5 is. In any case, today's netstandard2.0 is on the path to obsolecence.
I'm also deprecating this project #270 so I'm reluctant to take any further changes. Though if the use case for this is a good one, I might be convinced for this last PR.

@leeharman I'm going to close this without merging as I don't want to make any further changes. The lib has run its course. Sorry, it looks like your first PR too :(
Note: if you do want to use it for your netstandard1.5 scenario, just copy the code into your project (which is what LibLog does anyway) and adjust to your needs. Cheers.

authors: damianh leeharman

repo: damianh/LibLog


text:
xmlrpmlib

From @GoogleCodeExporter on May 31, 2015 11:31
What device(s) are you experiencing the problem on?
Pantech Marauder from Verizon

What firmware version are you running on the device?
4.0.3

What steps will reproduce the problem?
Run the following code (with or without a running http server):
import xmlrpclib
xmlrpmlib.ServerProxy("http://192.168.1.179:8000").test()

What is the expected output? What do you see instead?
Expected output depends on xmlrpc server. Instead I get this stack trace:

Traceback (most recent call last):
  File "main.py", line 11, in <module>
    print server.raw_input("Name: ")
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/xmlrpclib.py", line 1224, in __call__
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/xmlrpclib.py", line 1575, in __request
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/xmlrpclib.py", line 1264, in request
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/xmlrpclib.py", line 1292, in single_request
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/xmlrpclib.py", line 1439, in send_content
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/httplib.py", line 951, in endheaders
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/httplib.py", line 811, in _send_output
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/httplib.py", line 773, in send
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/httplib.py", line 754, in connect
  File "/Users/hyan/Documents/qpyapp/python-for-android/build/python-install/lib/python2.7/socket.py", line 571, in create_connection
socket.error: [Errno 113] No route to host

What version of the product are you using? On what operating system?
I'm using the latest version (as of 5/24/13) from the Google Play Store.

Please provide any additional information below.
I can connect to the server with httplib without a problem, which is weird
because the stack trace shows httplib throwing the exception.

Original issue reported on code.google.com by a.haigh...@gmail.com on 25 May 2013 at 8:12
Copied from original issue: damonkohler/android-scripting#687

From @GoogleCodeExporter on May 31, 2015 11:31
It turns out I had a networking error (misconfigured router), everything works
now.

Original comment by a.haigh...@gmail.com on 25 May 2013 at 10:33


text:
Enhancements

Hi,
I've discovered your module. Great job. Could i suggest you add more samples for use it.
i.e. : Auto build GUI - How ? Always with the .csv file in input,.. but the .csv file could be build automatically.
In a Main Script :

Gather script files (.bat, .cmd, .ps1) in a specific folder (i.e. Scripts )
Building the .csv file automatically with info gathered

Section : Auto-completion depending on file name. i.e. If file name begin by "Get", section will be "QUERIES", il the name file begin by "ADD" section will be "NEW", ...
Method : Auto-completion depending on file type (.ps1, .cmd, ...)
Command : auto-completion depending of file Name excluding the prefix of the file Name
Descrption : auto-completion depending of the Help Section in the script
if .cmd or .bat file : read first line (comment) in the file script
if .ps1 file : read .SYNOPSIS section

Saving the .csv file
Call Show-MenuGui cmdlet

With this, anyone could build a dynamic GUI depending of the currents scripts in path
I'm thinking that this could be a real good enhancement to show or describe about your module in your Gibhub
I'm aware that to realize this, there are some prerequisites (Naming convention for script files, Help or comments in script files, ...)
Regards
Olivier

Something like this
# Gather All Scripts in RootPath
$AllScripts = Get-ChildItem -Path "$RootPath\Scripts\" -File
#Array Initialization
$Data = @()
#Populate Array
foreach ($Script in $AllScripts)
    {
    $Extension = if  ( $script.extension -eq ".ps1") {"powershell_file"}
                 else{
                      if ( ($script.Extension -eq ".bat") -or ($script.Extension -eq ".cmd") )
                        {"cmd"}
                     }
    $ScriptType = ($Script.Name).split("-",2)[0]
    $Synopsis = Get-Content -Path $script.FullName | Select-String -Pattern ".Synopsis" -Context 0,1

    # Feed a PSCustomObject
    $objet = [PSCustomObject]@{Section     = $ScriptType
                               Method      = $Extension
                               Command     = $Script.FullName
                               Arguments   = ""
                               Name        = $Script.Name
                               Description = $Synopsis
                               }
    # Feed the FinalArray
    $Data += $objet
    }

# Creating .csv file...
# Path for .csv file
$csvRootPath = "YourPath"
if (Test-Path $csvRootPath\DataForMenu.csv)
    {
    # removing existing .csv file
    Remove-Item -Path $csvRootPath\DataForMenu.csv -Force
    }
$data | Export-Csv -Path $csvRootPath\DataForMenu.csv -Delimiter "," -NoTypeInformation
# Building GUI ...
Show-ScriptMenuGui -csvPath $csvRootPath\DataForMenu.csv

What do you think about this . You can add this as sample (MainScript)
I see a user-case for this :

Admin users have no access to the Internet ... (i.e. for secure reason)
You have created a bunch of scripts for your colleagues and copy/paste/sendto  ... but they don't know how to use them.
Answer to them : "Just launch MainScript.ps1 at the root on the root folder. This root folder contains /scripts and /Modules (used by some scripts) /functions (used by some scripts)
The GUI (based on your module) shows all essentials info about the scripts they could use

regards
Olivier

Hi,
Firstly, great work!
Is it possible to add more functionality to the GUI?

Fullscreen Mode
Grid layout

Thanks

repo: dan-osull/PowerShell-Script-Menu-Gui


text:
added unit validation to subnamespace webhook

Fixes #111. With this PR, the units of storage and memory must be in BinarySI. In addition the position of some validations in the webhook was changed, and the formatting of messages was changed

/assign @liadlauber

repo: dana-team/hns


text:
feat: implement error handling middleware

This pull request introduces an error handling middleware and custom error types to improve error management.
The ErrorHandlingMiddleware handles errors by intercepting any errors that occur during request processing. It extracts and categorizes errors into custom error types or Kubernetes status errors, then formats and sends a JSON response with the appropriate status code and error message.
The custom error types include:

ErrorWithStatusCode: An interface for errors that include a status code.
APIError: A generic error type with a message, status code, and reason.
ValidationError, NotFoundError, UnauthorizedError, ConflictError, and InternalServerError: Specific error types for different scenarios, each with an appropriate HTTP status code and reason.

I still need to address the c.Error lint issue mentioned here.

/approve

authors: arielsepton mzeevi

repo: dana-team/platform-backend


text:
TFTP bug: response source IP is not client request

Hi,
My machine has two IPs, one on loopback interface and another on an ethernet interface.
I hope client can use loopback address as tftp server address.
My IP is:
lo: 192.0.2.255/32
xgbe0: 192.0.2.1/31

tftpd is listened on 0.0.0.0  using s.ListenAndServe(":69")
If client request 192.0.2.255,  server will got following err
"client-ip:port": sending data packet 1: read udp 192.0.2.1:port->client-ip:port: read: connection refused

Please notes source of response packet use xgbe0's IP as source.
If client request 192.0.2.1, it's ok.

If listened on loopback, using s.ListenAndServe("192.0.2.255:69"), and client request 192.0.2.255. It still use xgbe0's ip to response.

This can be fixed by update Linux kernel routing table, using following command
ip route add [client-subnet] via [gateway] dev xgbe0 src 192.0.2.255

But I think this is still a bug, and xinetd tftp can handle it correctly.

repo: danderson/netboot


text:
removing oneself from ownership does not change behavior

i removed myself from DANDI:000004 as owner.
however:

this still shows up under my dandisets
this allows me to click edit metadata

i don't know what the implications are if i try to upload data to this now - since it's really not my dataset, i don't want to.

Are there any console errors when you try to remove yourself as owner?

I don't see you as an owner on that dandiset currently: https://gui.dandiarchive.org/#/dandiset/000004/draft
Are you saying that you can successfully remove yourself, but that the options which should now be restricted, are still available?

Are you saying that you can successfully remove yourself, but that the options which should now be restricted, are still available?

yup.

Are you saying that you can successfully remove yourself, but that the options which should now be restricted, are still available?

yup.

In that case, you shouldn't be able to actually modify any data (all requests should fail), but it's still a visual bug that we should address.

I don't expect there would be console errors, as we had intended removing yourself as the dandiset owner to be a legal operation.
There are a few things going on here:

@satra  is a superuser on Girder, so he has permission to do whatever, perhaps including edit metadata (though he might just be able to go to edit screen and not save). superuser permissions always mask other permission issues and can make debugging tricky.
satra created the dandiset originally, so that is why this dandiset is returned in the my dandisets list
we haven't clearly laid out the dandiset permission model, notions of ownership, how that relates to what we track in the contributors list, and what should be returned in my dandisets list

If you are a Dandiset owner, should you be able to remove yourself as owner? Remove other owners? Remove all owners?
These would be good topics to discuss in the hackathon. I'm going to remove the severity-critical label because I don't see it having a large impact on the site operation for most users.

this is not a superuser issue - i have two accounts - my github account, which i was using is a regular account.
regarding ownership model, i thought we did say that any owner can be added/removed, which is why the manage ui behaves that way.
yes you can remove and add any owners, but the owner count has to be 1+, so you cannot remove the last remaining owner. if that's you, you cannot remove yourself.
it should not matter whether i created it or not. the my dandisets list should reflect girder owners. if i'm in the list it should show up for me, if not it shouldn't. yes, it should show up if i created it, but if i have transferred it by adding another owner and removing myself, it should no longer be my dandiset.

there are longer term things like auditing and provenance tracking of the transition, but i thought the current behavior should not be expected from the gui, since the gui should literally depend on girder ownership information about a dandiset to set permissions for that user w.r.t the dandiset. i think this requires making a call to girder each time a user lands on a dandiset or hits the my dandiset link. since others could have added/removed the user.
so at this point it is really a gui behavior issue about how it maintains state and when it queries it from the server, rather than a server permission model issue.

I believe this issue has been fixed. However, in the course of testing the behavior out, I filed two new issues (both more minor than this one): #747, #748.

authors: AlmightyYakob mgrauer satra waxlamp

repo: dandi/dandiarchive


text:
Refresh token issues for oAuth2

I've been running into an issue with refresh tokens. I have no issues logging in for the user, but I'm finding if I come back several hours later I'm unauthorized and have to initiate the login process all over again.
This is what I'm running at start of the update in my AppDelegate. Do I need to refreshOAuth2AccessToken at initiateLogin?
func initiateLogin(forceReconnect: Bool = false, completion: @escaping (Bool)->Void) {
     Task {
         try await container.client?.refreshOAuth2AccessToken() // I don't know if this will do anything, but I'm trying.
         await loginUser(forceReconnect: forceReconnect, completion: { user in

             if let encoded = try? self.encoder.encode(user) {
                 self.defaults.set(encoded, forKey: ConstantStrings.authKeyChainString)
                 self.initClient(withCredentials: user)
                 completion(true)
             }
       })
     }
   }

     func loginUser(forceReconnect: Bool = false, completion: @escaping (OAuth2User)->Void) async {
     do {
       // flow with existing user
         if let savedUser = defaults.object(forKey: ConstantStrings.authKeyChainString) as? Data {
             if let oauthUser = try? decoder.decode(OAuth2User.self, from: savedUser), !forceReconnect {
                 completion(oauthUser)
             } else {
                 // flow with new user
                 let oauthUser = try await Twift.Authentication().authenticateUser(
                   clientId: TWITTER_clientId,
                   redirectUri: URL(string: TWITTER_CALL_BACKURL)!,
                   scope: Set(OAuth2Scope.allCases),
                   presentationContextProvider: nil)
                 completion(oauthUser)
               }
         }
     } catch {
       print(error.localizedDescription)
     }
   }

   func initClient(withCredentials oauthUser: OAuth2User) {
       container.client = Twift(oauth2User: oauthUser, onTokenRefresh: { newUser in
           if let encoded = try? self.encoder.encode(newUser) {
               self.defaults.set(encoded, forKey: ConstantStrings.authKeyChainString)
           }
       })
   }

Ok so since I had some issues with this as well. Important question first....are you using on the simulator or the phone?
But more importantly, are you switching back and forth?
Secondly, once you start the app after few hours, have you tracked where the code ends up? Meaning if it gets the save credentials and send them and if it does, will it go for the refresh etc...
Try to put some breakpoints in there so we can see where you end up.
Looking at it right here, it kinda seems like it should work. You save the token again on refresh so it should be 👍

I've been using both and to be honest I just added try await container.client?.refreshOAuth2AccessToken() to my code and have not tried this new code on my device. So if I understand correctly refreshOAuth2AccessToken() will get a new token regardless of status?

To be safe, make sure you are using it on one device while testing, as changing it will ask you to replace the token or re-log and I believe you can be logged in with one device via one app.
try await container.client?.refreshOAuth2AccessToken() will refresh the token, yes, but you are calling it before the client is initialized, so I would guess it just fails as client is nil.

I also think that the issue might be in the container you are using here?
try to follow the breakpoints and see where you land in this flow. We need to see if the user is saved and if so, did it only safe the old one?

Where is the Initiate login called? Try using forceRefresh as well?
Have either of you tried the demo app @daneden posted in the repo by any chance?

Thanks! I'm calling initiateLogin in AppDelegate didFinishLaunchingWithOptions. I did not use the demo app as I could not figure out the .env configuration.
The container i'm using is:
class ClientContainer: ObservableObject {
    @Published var client: Twift?
    @Published var launchErrorAlert = false
    @Published var launchErrorMessage = ""
}

From what I can tell in my breakpoints the new user is getting updated, but will double check.

I see. At least client does not need to be Published property, response data can be, as in @Published var tweets... for example.
And you are forwarding that client to the main view or how is it accessed? I guess it is initialised then in the AppDelegate as @StateObject?

I have it as @StateObject var container = ClientContainer() in @Main of my app and then I have the following
var body: some Scene {
        WindowGroup {
            ZStack {
                if let twitterClient = container.client {
                    ContentView()
                        .environmentObject(twitterClient)
                        ....

Could be yeah. I see why client is @Published now, so main view can refresh when you initialize it i guess?
So for the refresh, try sending the forceRefresh to see how it behaves after 2h, but really drawing a blank as to why this is failing to get the user. Does it ever try to decode the saved user, and is there anything saved ever?

I probably sound like I have no idea what I'm doing :D, but I have this function below that calls refreshOAuth2AccessToken() during scene change.
func getRefreshToken() {
     Task {
         print(#function)
         if let savedUser = defaults.object(forKey: ConstantStrings.authKeyChainString) as? Data {

             if let loadedUser = try? decoder.decode(OAuth2User.self, from: savedUser) {
                 print("loadedUser: \(loadedUser)")

                 container.client = Twift(oauth2User: loadedUser, onTokenRefresh: { newUser in
                     if let encoded = try? encoder.encode(newUser) {
                         defaults.set(encoded, forKey: ConstantStrings.authKeyChainString)
                     }
                 })

                 try? await container.client?.refreshOAuth2AccessToken()

                 withAnimation {
                     showLoginScreen = false
                 }
             }

         }
     }
 }

SceneChange
    var body: some Scene {
        WindowGroup {
            ZStack {
                if let twitterClient = container.client {
                    ContentView()
                        .environmentObject(twitterClient)
                } else {
                    Text("Logging In")
                    LoginView()
                        .edgesIgnoringSafeArea(.all)
                }
            }
            .alert(isPresented: $showErrorAlert) {
                Alert(title: Text("Failed to get token"), message: Text(errorAlertMessage),
                      dismissButton: .default(Text("Ok")))
            }
        }
        .onChange(of: scenePhase) { newPhase in
            if newPhase == .active {
                print("Active")
            } else if newPhase == .inactive {
                print("Inactive")
            } else if newPhase == .background {
                print("Background")
                getRefreshToken()
            }
        }
    }

Let me set some breakpoints and check back to see what happens. I'll need to wait for the two~ish hour window.

Ok I set up some break points and let it fail. I called getRefreshToken() listed above and I get back the following error UnknownError(Optional("Couldn\'t find refresh token or client ID")).
I can see that my refresh token is still good, but the clientID is nil.
OAuth2User(clientId: nil, accessToken:
"Removed...jAwNzM5Mzc0NjQ6MTowOmF0OjE", refreshToken:
Optional("Removed...jAwNzM5Mzc0NjQ6MToxOnJ0OjE"), expiresAt: 2022-08-10 00:38:03 +0000, scope: Set([Twift.OAuth2Scope.followsRead,
Twift.OAuth2Scope.tweetWrite, Twift.OAuth2Scope.blockRead, Twift.OAuth2Scope.listRead,
Twift.OAuth2Scope.bookmarkRead, Twift.OAuth2Scope.muteWrite, Twift.OAuth2Scope.tweetModerateWrite,
Twift.OAuth2Scope.likeWrite, Twift.OAuth2Scope.offlineAccess, Twift.OAuth2Scope.spaceRead,
Twift.OAuth2Scope.followsWrite, Twift.OAuth2Scope.muteRead, Twift.OAuth2Scope.usersRead,
Twift.OAuth2Scope.blockWrite, Twift.OAuth2Scope.bookmarkWrite, Twift.OAuth2Scope.tweetRead,
Twift.OAuth2Scope.listWrite, Twift.OAuth2Scope.likeRead]))

Hey guys! Thanks for reporting this issue and providing so much detail @arbyruns. I’m doing some local testing myself now and have run into at least a couple of potential root issues which I’ll fix and elaborate on. For one, I didn't write the encoder properly for OAuth2User structs, so token expiration dates aren't correctly stored and retrieved. This will be fixed soon, but I will ensure this original issue is fixed before pushing any code.
I’m also going to update the test app to demonstrate how to securely store tokens for easier reference too (should help with #40).

@daneden thank you so much! Let me know if there's anything else I can help with.

@roblack what you provided works great on launch of the app, but how can I go about implementing your workaround within a button? I call initiateLogin and It triggers the login authorization, but I can't get the error to go away until a restart. Any thoughts? I can see that I have a valid token stored as well
     twiftLoginViewModel.initiateLogin { value in
                                    print("value")
                                }

Hey @arbyruns, you should try updating to the new release of Twift (v0.2.1) and see if it resolves your issue. As described in #43, there was an issue with how refresh tokens were encoded for storage, which may have been contributing to the problem you encountered.
It's worth bearing in mind that you should not have to manually refresh the authentication token; all of Twift's network calls check the token expiration and attempt to refresh it if necessary. You can (for debugging reasons, for example) force a refresh using the refreshOAuth2AccessToken(onlyIfExpired: false) method.

Thanks I'll give it a try! Just for my own clarity, I don't need to call client?.refreshOAuth2AccessToken()

@arbyruns correct! Every network call in Twift is eventually handled by the internal call method (https://github.com/daneden/Twift/blob/de93f1515bf76a3c11c1a8099164fbf7a9de3c5a/Sources/Twift%2BAPI.swift#L9), which in turn will invoke the refreshOAuth2AccessToken(onlyIfExpired: true) function. This ensures that tokens are refreshed on your behalf only when necessary, but you still have the option to manually refresh them in order to handle the new token (e.g. if you want to update stored credentials for some reason)

authors: arbyruns daneden roblack

repo: daneden/Twift


text:
Animations stops layering of Twitter Bootstrap dropdowns from working properly.

Hi,
First of all thanks for this great plugin.
Back to the issue. I was using "animated fadeIn" on comments in a project along with Twitter Bootstrap, and I had a layering issue where the dropdowns would appear behind other comments.
Couldn't figure it out until someone pointed it out for me. Here is the stackoverflow: http://stackoverflow.com/questions/30189899/twitter-bootstrap-button-dropdown-z-index-layering-issue/30190900#30190900
And a jsfiddle with the issue: http://jsfiddle.net/ssL1yydx/29/
Don't know if there is anything you can do about it, but thought I would point it out.
Hope it helps.

I would add my experience: I used animate.css on pages built with Foundation 5 framework, and have similar issues. The navigation (Foundations's "top-bar") gets totally wonky on pages with animate.css. I thought I could correct it with z- settings, but it didn't work. I saw other comments that hinted it was fruitless, so I haven't pursued it. But it sure would be nice to use this. Maybe it's something that would occur with any animation scheme that is jquery-based?

authors: DanFeather desduvauchelle


text:
An attempt to remove ServiceStack dependency, update .NET version to 4.5 and make this cross-platform

Please see @jtourkos's and my work here:
https://github.com/theofanis/MailChimp.NET
This is a late night's work, no more than a couple of hours in total. Our main purpose was to overcome ServiceStack dependency for one of our internal projects, but made a few more changes to fulfill requirements others may find useful and start building from there in order to make this compatible with their projects. Please see some notes below as well:

Created a PCL MailChimp.Portable targeting mobile platforms, .net 4.5 and the new ASP.NET 5.0 (.NET Core) and copy-pasted all existing class files from MailChimp project
Didn't rename namespaces in existing classes as to not break code referencing this
Removed Servicestack dependency

Json.NET now handles de/serialization
HttpClient now makes REST API calls (not using await, blocking with .Result as to not change the Interfaces at all, although that is not hard at all if one wants to make this 100% async)

Changed ListInfo.DateLastCampaign to DateTime? to overcome null value deserialization
Created a JsonConverter to use on properties that are objects in JSON responses but appear as empty arrays when their value should be null. For example, Campaign.SegmentOpts which is of type CampaignSegmentOptions but may appear as an empty array in the JSON response when fetching campaigns
ReplacedDataMember attributes with JsonProperty

Disclaimer: The portable project is not unit tested at all and may not work corrrectly for all calls

@theofanis This is a great effort!  I think we should bump the major version information in the build, and you should make an official pull request.  Many folks have expressed a desire to see these changes.  Also:  I think we should expose the async/await methods as the first-class API signatures.
Thoughts?

Sorry for the delay man. Feel free to act on the pr. My contribution will probably be limited from now on because of time restrictions, but I will definitely keep my eye on this.
Btw, you can probably change the interfaces to make them fully async in the Portable project, since that's a new one and keep the old one for legacy compatibility.
Cheers!

authors: danesparza theofanis


text:
Enforce String Literal Styles

closes #300
\c @k0nserv

Yay :tada: Thanks, I can't merge though that's a up for  @orta

Cool for me if green

looks like some emoji special casing

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.
You can find it at CHANGELOG.md.

          1 Warning

:warning:
.gemspec modified

  Generated by :no_entry_sign: danger

@orta Also looks like Rubocop has a bug in the string literal cop. Autocorrect works fine, but then fails lint :/. Will special case now and see if I can PR Rubocop.

cool, makes sense 👍

authors: DanToml DangerCI k0nserv orta

repo: danger/danger


text:
After Restart PM still doesn't appear in 'Packages'

After the update and subsequent restarts of the program Project Manager doesn't appear :(

Is it under the install tab or under packages?
If it's installed try opening the console and run apm uninstall project-manager and then apm install project-manager

I uninstalled Atom for Sublime Text 3 again. But thanks for the comment.

authors: danielbrodin encryptdesigns

repo: danielbrodin/atom-project-manager


text:
Make excerpt a link to post

Most blogs require to click on the post title of the post list in order to open a post. I asked myself why nobody allows to click on the excerpt to go to the post. I will allow that here for better UX.

Fixed with b03b0f62843369c814de098637d6d617b4c15cbe

repo: danieldietrich/journal


text:
🛑 DevOps App Roadmap Prod is down

In 53f11bc, DevOps App Roadmap Prod (https://roadmap-app.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DevOps App Roadmap Prod is back up in e6c12e6 after 16 minutes.

repo: danielitogomez/upptime


text:
Adding proper piece movement & second player

Fixing the piece movement up so that you can't jump over pieces, and adding the random number generator for a second player!

He's just so random


text:
I want to make the VAC-Bypass start steam with parameters "-no-browser +open steam://open/minigameslist"

I have a low-end computer. So I use steam with -no-browser command which reduces the memory usage of steam. I tried looking in the .sln file but couldn't understand anything. Can anyone tell me how do I [title]?

Can't you just manually put the parameter in the launch options or just disable the steam overlay?

Can't you just manually put the parameter in the launch options or just disable the steam overlay?

How do I do it?

all parameters that are passed to the loader are passed to steam. Just send -no-browser to the loader via shortcut / batch script

all parameters that are passed to the loader are passed to steam. Just send -no-browser to the loader via shortcut / batch script

I am not good in Visual Studio I just installed it some days ago. When I tried to open the .sln file, I couldn't find any code where it opens steam.

all parameters that are passed to the loader are passed to steam. Just send -no-browser to the loader via shortcut / batch script

I am not good in Visual Studio I just installed it some days ago. When I tried to open the .sln file, I couldn't find any code where it opens steam.

@Taughtimp2786
No need to edit the source code, didnt test myself but this should work(according to https://github.com/danielkrupinski/VAC-Bypass-Loader/issues/91#issuecomment-855307915):
VAC-Bypass-Loader.exe -no-browser

all parameters that are passed to the loader are passed to steam. Just send -no-browser to the loader via shortcut / batch script

I am not good in Visual Studio I just installed it some days ago. When I tried to open the .sln file, I couldn't find any code where it opens steam.

@Taughtimp2786
No need to edit the source code, didnt test myself but this should work(according to https://github.com/danielkrupinski/VAC-Bypass-Loader/issues/91#issuecomment-855307915):
VAC-Bypass-Loader.exe -no-browser

It works! Thank you so much.

repo: danielkrupinski/VAC-Bypass-Loader


text:
Agentops_integration

Integrated AgentOps for better LLM monitoring and agent tracking

Moving to go. Please resubmit if this isn't fixed after the migration.

repo: danielmiessler/fabric


text:
[Paper-Cut:ACI Deployment] Very slow deploying a single model container into ACI

A container into ACI should only need a matter of seconds. If it needs so much time it is probably because it is re-creating Docker images or because ACI should have the Docker images cached so it won't need to pull the image on every deployment.
It'd be important to have those Docker images cached per model so it won't need to pull the Docker image into ACI for every deployment and deployment to ACI would be a lot faster.
Example of timing of deployment to ACI:
Model deployment to ACI: --- 200.5308485031128 seconds needed to deploy to ACI ---
--> That is around 3.4 minutes for deploying a single Docker container..

if you are using the 'new' deployment path, then deploying to AKS (after the first time) takes only a few seconds. ACI is distinctly slower (not sure why) -- @jpe316, do you know?

authors: CESARDELATORRE danielsc


text:
Error while starting zigbee-herdsman

zigbee2mqtt add-on version (if edge, please report commit hash):
Current version: 1.14.1
Operating environment (HassOS, Virtual Machine, Device/platform running Hass.io):

Home Assistant running on Raspberry Pi 3 B+ with a flashed CC2531 Zigbee Stick
arch | armv7l
chassis | embedded
dev | false
docker | true
docker_version | 19.03.8
hassio | true
host_os | HassOS 4.11
installation_type | Home Assistant OS
os_name | Linux
os_version | 4.19.127-v7
python_version | 3.7.7
supervisor | 228
version | 0.112.2
virtualenv | false
Description of problem:
Can't start the add on :(
Your entire configuration from the frontend (with sensitive fields redacted):
data_path: /share/zigbee2mqtt
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://192.xxx.x.xxx:1883'
  user: user
  password: password
serial:
  port: >-
    /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B001949C387-if00
advanced:
  pan_id: 6754
  channel: 11
  network_key:
    - 1
    - 3
    - 5
    - 7
    - 9
    - 11
    - 13
    - 15
    - 0
    - 2
    - 4
    - 6
    - 8
    - 10
    - 12
    - 13
  availability_blacklist: []
ban: []
whitelist: []
queue: {}
socat:
  enabled: false
  master: 'pty,raw,echo=0,link=/dev/ttyZ2M,mode=777'
  slave: 'tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5'
  restartdelay: 1
  initialdelay: 1
  options: '-d -d'
  log: false

Your logs from Hass.io
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
./run.sh: line 17: [Info] Configuration backup found in /share/zigbee2mqtt/.configuration.yaml.bk. Skipping config backup.: No such file or directory
[Info] Socat is DISABLED and not started
2020-07-16T11:30:19: PM2 log: Launching in no daemon mode
2020-07-16T11:30:20: PM2 log: App [npm:0] starting in -fork mode-
2020-07-16T11:30:20: PM2 log: App [npm:0] online
> zigbee2mqtt@1.14.1 start /zigbee2mqtt-1.14.1
> node index.js
zigbee2mqtt:info  2020-07-16 11:30:28: Logging to console and directory: '/share/zigbee2mqtt/log/2020-07-16.11-30-28' filename: log.txt
zigbee2mqtt:info  2020-07-16 11:30:29: Starting zigbee2mqtt version 1.14.1 (commit #unknown)
zigbee2mqtt:info  2020-07-16 11:30:29: Starting zigbee-herdsman...
zigbee2mqtt:error 2020-07-16 11:30:37: Error while starting zigbee-herdsman
zigbee2mqtt:error 2020-07-16 11:30:37: Failed to start zigbee
zigbee2mqtt:error 2020-07-16 11:30:37: Exiting...
zigbee2mqtt:error 2020-07-16 11:30:37: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
    at ZStackAdapter.<anonymous> (/zigbee2mqtt-1.14.1/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:72:23)
    at Generator.throw (<anonymous>)
    at rejected (/zigbee2mqtt-1.14.1/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:6:65)
npm
 ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! zigbee2mqtt@1.14.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the zigbee2mqtt@1.14.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

I got it working by chaning the USB port of the Pi and then restarting. I was able to add all my devices and then upon another HA restart it revers back to the abovementioned error.
Home Assistant now has additional logs though to review:
020-07-16 14:54:35 ERROR (MainThread) [zigpy.application] Couldn't start application
2020-07-16 14:54:35 ERROR (MainThread) [homeassistant.components.zha.core.gateway] Couldn't start TI_CC = Texas Instruments Z-Stack ZNP protocol: CC253x, CC26x2, CC13x2 coordinator
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/zha/core/gateway.py", line 147, in async_initialize
    app_config, auto_form=True, start_radio=True
  File "/usr/local/lib/python3.7/site-packages/zigpy/application.py", line 65, in new
    await app.startup(auto_form)
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/zigbee/application.py", line 92, in startup
    self.version = await self._api.version()
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/api.py", line 241, in version
    version = await self._command(Subsystem.SYS, "version", {})
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/api.py", line 103, in _command
    return await self.request(subsystem, command, payload)
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/api.py", line 107, in request
    return await self.request_raw(obj, expected_status)
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/api.py", line 129, in request_raw
    result = await waiter.wait()
  File "/usr/local/lib/python3.7/site-packages/zigpy_cc/api.py", line 39, in wait
    return await asyncio.wait_for(self.future, self.timeout / 1000)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 449, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
2020-07-16 14:54:35 WARNING (MainThread) [homeassistant.config_entries] Config entry for zha not ready yet. Retrying in 40 seconds.
2020-07-16 14:54:35 WARNING (MainThread) [zigpy_cc.api] Waiter timeout: <Waiter matcher=<Matcher type=CommandType.SRSP subsystem=Subsystem.SYS command=version payload={}> future=<Future cancelled> timeout=6000 sequence=None>
2020-07-16 14:55:56 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xbddb
2020-07-16 14:55:57 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xbddb
2020-07-16 14:55:57 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xbddb
2020-07-16 14:56:40 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xcdeb
2020-07-16 14:56:40 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xcdeb
2020-07-16 14:56:40 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0xcdeb
2020-07-16 15:00:50 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0x5f1f
2020-07-16 15:00:50 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0x5f1f
2020-07-16 15:00:50 WARNING (MainThread) [zigpy_cc.zigbee.application] Received frame from unknown device: 0x5f1f

And here is proof of it working eventually (after a few restarts), any ideas how to get it working more reliably?
zigbee2mqtt:info  2020-07-16 15:04:16: Logging to console and directory: '/share/zigbee2mqtt/log/2020-07-16.15-04-16' filename: log.txt
zigbee2mqtt:info  2020-07-16 15:04:20: Starting zigbee2mqtt version 1.14.1 (commit #unknown)
zigbee2mqtt:info  2020-07-16 15:04:20: Starting zigbee-herdsman...
zigbee2mqtt:error 2020-07-16 15:04:28: Error while starting zigbee-herdsman
zigbee2mqtt:error 2020-07-16 15:04:28: Failed to start zigbee
zigbee2mqtt:error 2020-07-16 15:04:28: Exiting...
zigbee2mqtt:error 2020-07-16 15:04:28: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
    at ZStackAdapter.<anonymous> (/zigbee2mqtt-1.14.1/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:72:23)
    at Generator.throw (<anonymous>)
    at rejected (/zigbee2mqtt-1.14.1/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:6:65)
npm
 ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! zigbee2mqtt@1.14.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the zigbee2mqtt@1.14.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm
 ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-07-16T05_04_28_166Z-debug.log
2020-07-16T15:04:40: PM2 log: App [npm:0] exited with code [1] via signal [SIGINT]
2020-07-16T15:04:40: PM2 log: App [npm:0] starting in -fork mode-
2020-07-16T15:04:40: PM2 log: App [npm:0] online
> zigbee2mqtt@1.14.1 start /zigbee2mqtt-1.14.1
> node index.js
zigbee2mqtt:info  2020-07-16 15:04:50: Logging to console and directory: '/share/zigbee2mqtt/log/2020-07-16.15-04-50' filename: log.txt
zigbee2mqtt:info  2020-07-16 15:04:52: Starting zigbee2mqtt version 1.14.1 (commit #unknown)
zigbee2mqtt:info  2020-07-16 15:04:52: Starting zigbee-herdsman...
zigbee2mqtt:info  2020-07-16 15:04:55: zigbee-herdsman started
zigbee2mqtt:info  2020-07-16 15:04:55: Coordinator firmware version: '{"type":"zStack12","meta":{"transportrev":2,"product":0,"majorrel":2,"minorrel":6,"maintrel":3,"revision":20190608}}'
zigbee2mqtt:info  2020-07-16 15:04:55: Currently 4 devices are joined:
zigbee2mqtt:info  2020-07-16 15:04:55: 0x00158d0004889773 (0x00158d0004889773): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice)
zigbee2mqtt:info  2020-07-16 15:04:55: 0x00158d000486e2c8 (0x00158d000486e2c8): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice)
zigbee2mqtt:info  2020-07-16 15:04:55: 0x00158d00045da25d (0x00158d00045da25d): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice)
zigbee2mqtt:info  2020-07-16 15:04:55: 0x00158d0004872cb8 (0x00158d0004872cb8): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice)

Note: This may be related to #355 ? If so you can close/merge issues. Sorry I only just installed this addon so it wasn't related to an "upgrade" so I didn't connect the dots.

I ended up reflashing everything; that fixed things.

same problem....
zigbee2mqtt add-on version (if edge, please report commit hash):
Current version: 1.14.4 NOT Edge
Operating environment (HassOS, Virtual Machine, Device/platform running Hass.io):
Home Assistant running on Raspberry Pi 3 B+
Elelabs Zigbee Raspberry Pi Shield
arch	armv7l
chassis	embedded
dev	false
docker	true
docker_version	19.03.11
hassio	true
host_os	HassOS 4.13
installation_type	Home Assistant OS
os_name	Linux
os_version	4.19.127-v7
python_version	3.8.3
supervisor	243
timezone	Atlantic/Canary
version	0.114.4
virtualenv	false
Description of problem:
Error while starting zigbee-herdsman
Your entire configuration from the frontend (with sensitive fields redacted):
data_path: /share/zigbee2mqtt
external_converters: []
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: '192.168.1.10:1885'
user: redacted
password: redacted
serial:
port: /dev/ttyAMA0
advanced:
log_level: info
pan_id: 6754
channel: 11
network_key:
- 1
- 3
- 5
- 7
- 9
- 11
- 13
- 15
- 0
- 2
- 4
- 6
- 8
- 10
- 12
- 13
availability_blocklist: []
availability_passlist: []
device_options: {}
blocklist: []
passlist: []
queue: {}
experimental: {}
socat:
enabled: false
master: 'pty,raw,echo=0,link=/dev/ttyZ2M,mode=777'
slave: 'tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5'
restartdelay: 1
initialdelay: 1
options: '-d -d'
log: false
Your logs from Hass.io
Zigbee2MQTT:info  2020-09-13 22:10:20: Starting Zigbee2MQTT version 1.14.4 (commit #unknown)
Zigbee2MQTT:info  2020-09-13 22:10:20: Starting zigbee-herdsman...
Zigbee2MQTT:error 2020-09-13 22:10:40: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2020-09-13 22:10:40: Failed to start zigbee
Zigbee2MQTT:error 2020-09-13 22:10:40: Exiting...
Zigbee2MQTT:error 2020-09-13 22:10:40: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
at ZStackAdapter. (/zigbee2mqtt-1.14.4/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:90:31)
at Generator.throw ()
at rejected (/zigbee2mqtt-1.14.4/node_modules/zigbee-herdsman/dist/adapter/z-stack/adapter/zStackAdapter.js:25:65)
npm
ERR! code ELIFECYCLE
npm
ERR! errno 1
npm
ERR! zigbee2mqtt@1.14.4 start: node index.js
npm ERR! Exit status 1
npm
ERR!
npm ERR! Failed at the zigbee2mqtt@1.14.4 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm
ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-09-13T21_10_40_761Z-debug.log
2020-09-13T22:10:42: PM2 log: App [npm:0] exited with code [1] via signal [SIGINT]
2020-09-13T22:10:42: PM2 log: App [npm:0] starting in -fork mode-
2020-09-13T22:10:42: PM2 log: App [npm:0] online

The problem is with the adapter or the firmware and not related to the add-on. Such issues should be opened on https://github.com/Koenkk/zigbee2mqtt

authors: Stupco Tam-Lin ciotlosm oldfart101