Problem with dependencies

I installed pyethapp using the pip installer.
However  $ pyethapp run gives this error

File "/usr/local/lib/python2.7/dist-packages/ethereum/utils.py", line 6, in
from bitcoin import privtopub
ImportError: cannot import name privtopub

It can't be reproduced among our team.

I think the issue here is that pyethapp uses @vbuterin's library, formerly known as pybitcointools. This sometimes fights Peter Todd's library, python-bitcoinlib over who gets to be called "bitcoin".
The path of minimal tinkering would be to either uninstall python-bitcoinlib (if you don't need it) or use pyethapp inside virtualenv and tell it to ignore the site version. This heads off other library version craziness too.
More suggestions here:
http://bitcoin.stackexchange.com/questions/36442/running-pybitcointools-python-bitcoinlib-concurrently

+1 on using a virtualenv
@wachub have you had another take on this, does the issue still exist for you?


Reusability fix

Reusability actions was failing in this repo: https://github.com/vmware-tanzu/sources-for-knative
Realized it was because an extra quotes on the script, here is the fix :)

/lgtm
/approve
/hold you can unhold if you don't want to address the newline removal

/unhold

/lgtm


Code generation for cell class

Source code
a = {1, 'example'};
for i=1:2
  disp(a{i});
end

Generated TameIR
  mc_t24 = 1;
  mc_t25 = 2;
  for i = (mc_t24 : mc_t25);
    [CSL[mc_t14]] = a{i};
    disp(CSL[mc_t14]); % [] = ...
  end

Problems:

The variable mc_t14 has not been initialized before it is used as an index.
What does CSL mean?  If it is okay, the following brackets don't make sense. (If it means indexing, we should use "()" instead of "[]".)

mc_t14 is being defined here, not used. CSL means comma-separated list. This is a kind of IR node in McSAF (extends NameExpr) that gets created by some simplification transformations. This is described in Jesse Doherty's thesis (search for CSL). CSL[name] is how McSAF pretty prints a CSLExpr -- it's not intended to be valid MATLAB.
Tame IR also has a notion of comma-separated list (TIRCommaSeparatedList), and it does pretty-print as valid MATLAB. My guess is somehow a McSAF CSLExpr node made it into a Tame IR AST and the Tamer is not expecting it (treating it the same as a NameExpr).
I'm not sure what this means -- it's possible the Tamer is not supposed to deal with CSLExpr but some simplifications are being run that the Tamer is not expecting. Or maybe you just need to add code in the right place to explicitly handle CSLExpr.
Hope this helps...

Thanks for your reply.
From the McSAF thesis, the reason why we need CSL is probably the following special case in MATLAB.  The c1{:} will return two values, while c1 returns one cell.  If the expression is changed to c1{1:2} or c1{[1,1,2]}, the number of return values is 2 or 3.  The exact number of return values is determined in run-time.  That feature will confuse function calls, such as foo(c1{i}), so that we don't know the exact number of arguments passed into the function foo.
>> c1={1,5};
>> c1{:}
ans =
     1

ans =
     5
>> [t1,t2] = c1{:}
t1 =
     1

t2 =
     5


Cherry-pick pull request #599

test: tests should clean themselves
Signed-off-by: Tiago Castro<EMAIL_ADDRESS>
fix(snapshot): update replica information
After taking a snapshot the replica info changes, so update it as well.
Signed-off-by: Tiago Castro<EMAIL_ADDRESS>
feat(snapshot/usage): add snapshot usage for the replica usage
In preparation of pending dataplane rpc changes.
Signed-off-by: Tiago Castro<EMAIL_ADDRESS>
fix(snapshots/thin): a thick volume becomes thin after snapshots are created
After first snapshot is created we mark the volume as thin and this is sticky.
Signed-off-by: Tiago Castro<EMAIL_ADDRESS>

bors merge

bors merge


Can't set the border properties of the NumberBox.

Describe the bug

Border properties like BorderBrush or BorderThickness can't change from xaml.
Steps to reproduce the bug

Steps to reproduce the behavior:
<ComboBox Header="ComboxBorder" BorderThickness="0.5" BorderBrush="DarkGray" />
<controls:NumberBox Header="ComboxBorder" BorderThickness="0.5"  BorderBrush="DarkGray"/>
Expected behavior

Border properties should work like other controls (ComboBox, TextBox,...)
Screenshots

Version Info

NuGet package version:

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

November 2019 Update (18363)
Yes

May 2019 Update (18362)

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Mobile

Xbox

Surface Hub

IoT

Additional context

@SavoySchuler @teaP Should we expose these TextBox properties onto NumberBox through a template bind ? Are there any other TextBox properties that would fall under the same category ?

@ranjeshj - thanks for the chat, that's exactly what we should do. @teaP is there anything you need from my end to expose these TextBox properties onto NumberBox through a template bind?

@teaP Are you currently working on this (or soon) or is this issue up for grabs for the community?

@Felix-Dev, it is up for grabs now :)

In that case, I would like to tackle this one.

To clarify: In SpinButtonPlacementMode.Inline, if we apply properties like BorderThickness and BorderBrush, is the desired look the following?
<controls:NumberBox
    BorderBrush="Orange"
    BorderThickness="4"/>

To clarify: In SpinButtonPlacementMode.Inline, if we apply properties like BorderThickness and BorderBrush, is the desired look the following?

I would say so yes

To clarify: In SpinButtonPlacementMode.Inline, if we apply properties like BorderThickness and BorderBrush, is the desired look the following?
<controls:NumberBox
    BorderBrush="Orange"
    BorderThickness="4"/>

I can't image if the BorderThickness=0, what will spin button looks like?

@hipo760
Setting the BorderThickness to 0 for the NumberBox would result in the following look:

and mouse hovering over the increase button:

@hipo760
Setting the BorderThickness to 0 for the NumberBox would result in the following look:

and mouse hovering over the increase button:

That looks so great! Thank you.

@hipo760
Setting the BorderThickness to 0 for the NumberBox would result in the following look:

and mouse hovering over the increase button:

Looks so great, thank you!!

@ranjeshj Currently, we expose the border thickness of the NumberBox Inline SpinButtons as a resource:
<Thickness x:Key="NumberBoxSpinButtonBorderThickness">0,1,1,1</Thickness>

Note that we don't set the left border side here. This way, the border between the two spin buttons has the same thickness as the other border sides (e.g. top, bottom) as can be seen in the images above.
In order to make the SpinButtons border settable via a BorderThickness TemplateBinding (so that NumberBox.BorderThickness affects the whole NumberBox and not just its internal TextBox) I could add a new API similar to the [CornerRadiusFilter API](https://github.com/microsoft/microsoft-ui-xaml/blob/master/dev/Common/CornerRadiusFilterConverter.cpp. The API would enable us to specify a mask to apply to a Thickness value in order to ignore the thickness value for specific sides. With the CornerRadiusFilter API we specify which corner radius values to keep using the Filter property. The Thickness masking API would operate the other way: Specifying the border side we want to ignore (set to 0).
An example use case for the NumberBox could look like this:
<!-- The Thickness masking resource to use -->
<primitives:ThicknessMaskConverter x:Key="LeftThicknessMaskConverter" Mask="Left"/>

<!-- Use the above Thickness masking resource for NumberBox' SpinButtons in Inline mode -->
<RepeatButton x:Name="DownSpinButton"
    BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness, Converter={StaticResource LeftThicknessMaskConverter}}"
    Style="{StaticResource NumberBoxSpinButtonStyle}"/>

Thoughts?

@Felix-Dev That sounds like a reasonable approach. This would be new API though, so adding @SavoySchuler and @MikeHillberg.

Just assigned myself so that I can take a look at this.

@SavoySchuler I have finalized my API proposal now (including a test implementation in a local branch of mine).
To recap, the NumberBox uses three borders to achieve its visual look in all the different visual states: A border around its input field (the TextBox and its border) and around each of its SpinButtons when in SpinButtonPlacementMode::Inline. See the following image of a NumberBox in rest mode:

To achieve the uniform border thickness used here, the border thickness values of the spin buttons are of the form 0,X,X,X (so the border's left side thickness is hard-coded to 0).
Currently, setting the NumberBox.BorderBrush API has no effect on the NumberBox which @hipo760 lists in their opening post. If one wishes to easily customize the border thickness of  aNumberBox, lightweight styling has to be used instead for now. To add support for the NumberBox.BorderThickness API and make it work as intended, we need to filter the template bound BorderThickness for the spin buttons accordingly. In other words, we need to set the Thickness.Left property of a given Thickness value to 0 (zero). See the following GIF which shows what will happen to the NumberBox's border if we template bind to the NumberBox.BorderThickness API without filtering the thickness value as described above:
<RepeatButton x:Name="UpSpinButton"
    BorderThickness="{TemplateBinding BorderThickness}"/>

As a comparison, here is how the NumberBox.BorderThickness API will be applied with correct filtering of the template bound BorderThickness:

To achieve this, I propose adding a new API similar to the existing CornerRadiusFilterConverter API. See below for an API proposal and an API example.
API proposal
[flags]
enum ThicknessMaskKinds
{
    None = 0,
    Top = 1,
    Right = 2,
    Bottom = 4,
    Left = 8
};

runtimeclass ThicknessMaskConverter : Windows.UI.Xaml.DependencyObject, Windows.UI.Xaml.Data.IValueConverter
{
    ThicknessMaskConverter();

    [MUX_DEFAULT_VALUE("winrt::ThicknessMaskKinds::None")]
    ThicknessMaskKinds Mask{ get; set; };

    winrt::IInspectable ThicknessMaskConverter::Convert(
        winrt::IInspectable const& value,
        winrt::TypeName const& targetType,
        winrt::IInspectable const& parameter,
        winrt::hstring const& language);

    winrt::IInspectable ThicknessMaskConverter::ConvertBack(
        winrt::IInspectable const& value,
        winrt::TypeName const& targetType,
        winrt::IInspectable const& parameter,
        winrt::hstring const& language);

    static Windows.UI.Xaml.DependencyProperty MaskProperty{ get; };
};

API Notes

Property
Description

Mask
Gets or sets the mask applied to the ThicknessMaskConverter specifying which values of a Thickness struct will be set to 0 (zero) and which to keep. Can be a combination of multiple values.

API Example
Consuming the proposed API is similar to how you would use the CornerRadiusFilterConverter API. See, for example, the following XAML below. Here, we first create a new instance of the ThicknessMaskConverter class with our desired Mask and then use our converter in a binding. For demo purposes, I created an example Thickness resource called ExampleThickness in order to use a binding. In the NumberBox ControlTemplate case, we would instead use the much more commonly used TemplatedParent relative binding.
<Page
    xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives">
    <Page.Resources>
        <primitives:ThicknessMaskConverter x:Key="LeftTopRightThicknessMaskConverter" Mask="Left,Top,Right"/>

        <Thickness x:Key="ExampleThickness">4</Thickness>
    </Page.Resources>

    <Grid x:Name="RootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBox
            Text="I am a TextBox with just a bottom border"
             BorderBrush="GreenYellow"
            BorderThickness="{Binding Source={StaticResource ExampleThickness}, Converter={StaticResource LeftTopRightThicknessMaskConverter}}" />
    </Grid>
</Page>

The XAML above gives us the following TextBox look:

As already mentioned above, for a real word example, we would use this API in the NumberBox ControlTemplate like this:
<RepeatButton x:Name="UpSpinButton"
    BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness, Converter={StaticResource LeftThicknessMaskConverter}}"
    Style="{StaticResource NumberBoxSpinButtonStyle}"/>

where LeftThicknessMaskConverter is defined as:
<primitives:ThicknessMaskConverter x:Key="LeftThicknessMaskConverter" Mask="Left"/>

Additional Notes

First and foremost, I'd like to give a shoutout to @stevenbrix who is always a great help when I have specific implementation questions. Thank you, Steven!

Secondly, while we can view this API as filtering out specific Thickness values and throwing away others (by setting them to 0) I went with the "Mask" terminology for now. The reason being that I can imagine more of than not we are only interested in in ignoring the value of 1-2 thickness values instead of 3-4. Take our NumberBox case here, for example. We filter out the Top, Right and Bottom values of a Thickness value and ignore only the Left value. If I would have went with the filter terminology, here's how my my XAML would have looked like instead:

<primitives:ThicknessFilterConverter x:Key="LeftTopRightThicknessFilterConverter" Filter="Left,Top,Right"/>

<RepeatButton x:Name="UpSpinButton"
    BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness, Converter={StaticResource LeftTopRightThicknessFilterConverter}}"
    Style="{StaticResource NumberBoxSpinButtonStyle}"/>

Compare that to the XAML using the Mask terminology:
<primitives:ThicknessMaskConverter x:Key="LeftThicknessMaskConverter" Mask="Left"/>

Obviously, I am open to renaming and restructing the proposed API if the team prefers the name ThicknessFilterConverter (or any other name) over my proposed naming.
Summary
The proposed ThicknessMaskConverter API will be a great helper API to achieve proper NumberBox.BorderThickness support. More broadly speaking it is to be used in a (Template) Binding to create a new Thickness struct from an existing one, setting only some of the fields to 0 while keeping the rest.

@SavoySchuler Any update here?

Is this issue just withering on the vine? Or has something that accomplishes this been implemented, but not linked to this issue?  I'm definitely interested in this functionality.

I think this was fixed with #4469


Task crashes with big amount of errors

Bug Report
"tslint": "^5.12.1",
"tslint-webpack-plugin": "^2.0.2",
"typescript": "^3.3.3",
"webpack": "^4.19.0",
TypeScript code being linted
const countries = ['Afghanistan','Albania','Algeria','Andorra','Angola','Antigua and Barbuda','Argentina','Armenia','Australia','Austria','Azerbaijan','The Bahamas','Bahrain','Bangladesh','Barbados','Belarus','Belgium','Belize','Benin','Bhutan','Bolivia','Bosnia and Herzegovina','Botswana','Brazil','Brunei','Bulgaria','Burkina Faso','Burundi','Cabo Verde','Cambodia','Cameroon','Canada','Central African Republic','Chad','Chile','China','Colombia','Comoros','Congo, Democratic  Republic of the','Congo, Republic of the','Costa Rica','Côte d’Ivoire','Croatia','Cuba','Cyprus','Czech Republic','Denmark','Djibouti','Dominica','Dominican Republic','East Timor','Ecuador','Egypt','El Salvador','Equatorial Guinea','Eritrea','Estonia','Ethiopia','Fiji','Finland','France','Gabon','The Gambia','Georgia','Germany','Ghana','Greece','Grenada','Guatemala','Guinea','Guinea-Bissau','Guyana','Haiti','Honduras','Hungary','Iceland','India','Indonesia','Iran','Iraq','Ireland','Israel','Italy','Jamaica','Japan','Jordan','Kazakhstan','Kenya','Kiribati','Korea, North','Korea, South','Kosovo','Kuwait','Kyrgyzstan','Laos','Latvia','Lebanon','Lesotho','Liberia','Libya','Liechtenstein','Lithuania','Luxembourg','Macedonia','Madagascar','Malawi','Malaysia','Maldives','Mali','Malta','Marshall Islands','Mauritania','Mauritius','Mexico','Micronesia,  Federated States of','Moldova','Monaco','Mongolia','Montenegro','Morocco','Mozambique','Myanmar','Namibia','Nauru','Nepal','Netherlands','New Zealand','Nicaragua','Niger','Nigeria','Norway','Oman','Pakistan','Palau','Panama','Papua New Guinea','Paraguay','Peru','Philippines','Poland','Portugal','Qatar','Romania','Russia','Rwanda','Saint Kitts and Nevis','Saint Lucia','Saint Vincent and  the Grenadines','Samoa','San Marino','Sao Tome and Principe','Saudi Arabia','Senegal','Serbia','Seychelles','Sierra Leone','Singapore','Slovakia','Slovenia','Solomon Islands','Somalia','South Africa','Spain','Sri Lanka','Sudan','Sudan, South','Suriname','Swaziland','Sweden','Switzerland','Syria','Taiwan','Tajikistan','Tanzania','Thailand','Togo','Tonga','Trinidad and Tobago','Tunisia','Turkey','Turkmenistan','Tuvalu','Uganda','Ukraine','United Arab Emirates','United Kingdom','United States','Uruguay','Uzbekistan','Vanuatu','Vatican City','Venezuela','Vietnam','Yemen','Zambia','Zimbabwe']

ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /public/dist/
ℹ ｢wds｣: Content not from webpack is served from /home/mvnovikov/projects/user_search_widget/
ℹ ｢wds｣: 404s will fallback to /index.html
[tslint-plugin] Linting started in separate process...
undefined:1
[{"endPosition":{"character":41,"line":110,"position":3230},"failure":"missing whitespace","fix":{"innerStart":3229,"innerLength":0,"innerText":" "},"name":"src/js/components/common/layout/SearchUsersForm.tsx","ruleName":"whitespace","ruleSeverity":"ERROR","startPosition":{"character":40,"line":110,"position":3229}},{"endPosition":{"character":51,"line":110,"position":3240},"failure":"missing whitespace","fix":{"innerStart":3239,"innerLength":0,"innerText":" "},"name":"src/js/components/common/layout/SearchUsersForm.tsx","ruleName":"whitespace","ruleSeverity":"ERROR","startPosition":{"character":50,"line":110,"position":3239}},{"endPosition":{"character":61,"line":110,"position":3250},"failure":"missing whitespace","fix":{"innerStart":3249,"innerLength":0,"innerText":" "},"name":"src/js/components/common/layout/SearchUsersForm.tsx","ruleName":"whitespace","ruleSeverity":"ERROR","startPosition":{"character":60,"line":110,"position":3249}},{"endPosition":{"character":71,"line":110,"position":3260}

SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at Socket.linterProcess.stdout.on (/home/mvnovikov/projects/user_search_widget/node_modules/tslint-webpack-plugin/src/plugin.js:54:39)
    at Socket.emit (events.js:180:13)
    at addChunk (_stream_readable.js:274:12)
    at readableAddChunk (_stream_readable.js:261:11)
    at Socket.Readable.push (_stream_readable.js:218:10)
    at Pipe.onread (net.js:581:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>dev-server: `webpack-dev-server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>dev-server script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Actual behavior
I assume, when errors too much(like in example data - no whitespaces between items in the array),  linter task crashes with an error: SyntaxError: Unexpected end of JSON input.
Expected behavior
Maybe don't crash task, and show first max counts messages(and ignore others, not show them when them too much)

@megamysterion it looks like the crash is happening within tslint-webpack-plugin. Does this issue happen if you lint with the tslint command on your terminal?

Sorry, I can't check. Maybe you right.
`
sudo yarn global add tslint typescript
[sudo] пароль для mvnovikov:
yarn global v1.6.0
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
warning Your current version of Yarn is out of date. The latest version is "1.13.0", while you're on "1.6.0".
info To upgrade, run the following command:
$ sudo apt-get update && sudo apt-get install yarn
success Installed<EMAIL_ADDRESS>with binaries:
- tslint
success Installed<EMAIL_ADDRESS>with binaries:
- tsc
- tsserver
Done in 22.89s.
folder$ tslint -c tslint.json
No files specified. Use --project to lint a project folder.
folder$  tslint 'src//*.ts?(x)'
folder$  tslint 'src/js//**/*.ts?(x)'
folder$  ls
create_users  helpers        index.html      jest.config.json  package.json       README.md  src            tslint.json  webpack.config.js
gruntfile.js  icons.font.js  jest.config.js  node_modules      package-lock.json  server     tsconfig.json  webApp
folder$ tslint -c tslint.json 'src/js///*.ts'
`
I install tslint globally, and it is don't do anything.

@megamysterion it looks like you might not be including any files in your tslint command; try this one?
tslint -c tslint.json src/**/*.tsx

At any rate, since this looks like it isn't a problem with TSLint itself, closing this issue as external. You might want to file a bug on tslint-webpack-plugin.
If you're having problems running the globally installed tslint, feel free to ping me on Gitter!


Remove unnecessary overriden functions in JKVisitorWithCommentsPrinting

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#22
#21
#20  👈
#19
#18
#17
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @ermattt and the rest of your teammates on  Graphite


Cope with the gem being loaded but not configured when using minitest

This problem was introduced in  2eb068dda0a7cf00fdaa644d3204462b5588f2ad.
In our test pipeline, we include the test-collector-ruby gem in our :test Gemfile group but only configure it to run on certain builds. So we have code like this:
# Gemfile
group :test do
  gem "buildkite-test_collector", "~> 1.2.5", require: false
end

# test_helper.rb
if !!ENV["BUILDKITE_ANALYTICS_ENABLED"]
  require "buildkite/test_collector"
  Buildkite::TestCollector.configure(hook: :minitest)
end

If BUILDKITE_ANALYTICS_ENABLED is not set then we never call configure and this piece of code is never run:
# lib/buildkite/test_collector/library_hooks/minitest.rb
Buildkite::TestCollector.uploader = Buildkite::TestCollector::Uploader

So Buildkite::TestCollector.uploader is nil and this code falls over:
if trace = Buildkite::TestCollector.uploader.traces[result.source_location]
  Buildkite::TestCollector.session&.write_result(trace)
end

This change just wraps that in a test to see if Buildkite::TestCollector.uploader is set.

Thanks for your contribution @billhorsman !

This issue is potentially related to https://github.com/buildkite/test-collector-ruby/pull/125
The issue is that the plugin is discovered by Minitest before the collector is ever configured (or not configured).
So there isn't a great way to avoid the Reporter from being added to Minitest (i.e. before we check whether it has been configured).
References
https://github.com/minitest/minitest#writing-extensions-
http://www.monkeyandcrow.com/blog/reading_ruby_minitest_plugin_system/

I had a look at the minitest source code. It looks like the plugin files are loaded and the init methods is called when the run method is called https://github.com/minitest/minitest/blob/b5565c0c7ab2ce5ecf306487cab0f2abe5377d55/lib/minitest.rb#L140 🤔

@gchan Thanks for the quick review and release. I've switched to 1.3.1 and all is working nicely again 🙏🏻


Aliyun cli doesn't work on alpine (musl libc)

Hi, I'm trying to put the cli tool inside alpine image. But it doesn't work as expected.  Thanks.
$ docker run -v `pwd`/aliyun:/usr/local/bin/aliyun alpine aliyun help
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0xa01071]

goroutine 1 [running]:
github.com/aliyun/aliyun-cli/oss/lib.DecideConfigFile(0x0, 0x0, 0xb231f2, 0x7)
	/Users/ailan/go/src/github.com/aliyun/aliyun-cli/oss/lib/config_helper.go:57 +0x51

you have to build the aliyun-cli on alpine, then the aliyun works on alpinem try below Dockerfile
# build aliyun-cli (aliyun)
FROM golang:alpine as builder
ADD . src/github.com/aliyun/aliyun-cli/
WORKDIR /go/src/github.com/aliyun/aliyun-cli
RUN apk add --update make git;\
  make deps; \
  make testdeps; \
  make build;

# build aliyun image from alpine
FROM alpine
MAINTAINER 叶泽宇/Zeyu Ye<EMAIL_ADDRESS>COPY --from=builder /go/src/github.com/aliyun/aliyun-cli/out/aliyun /usr/local/bin
CMD ["aliyun"]

build/test
git clone https://github.com/aliyun/aliyun-cli.git
cd aliyun-cli
rand_tag=$(openssl rand -hex 16 )
docker build -t aliyun-${rand_tag} .
docker run -it --rm aliyun-${rand_tag}

Hi, I'm trying to put the cli tool inside alpine image. But it doesn't work as expected.  Thanks.
$ docker run -v `pwd`/aliyun:/usr/local/bin/aliyun alpine aliyun help
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0xa01071]

goroutine 1 [running]:
github.com/aliyun/aliyun-cli/oss/lib.DecideConfigFile(0x0, 0x0, 0xb231f2, 0x7)
	/Users/ailan/go/src/github.com/aliyun/aliyun-cli/oss/lib/config_helper.go:57 +0x51

Hi, thanks for the answer by @zeyuye-airwallex , I hope his answer can help you. And if you have any questions, please contact with us.
Thank you for your attention to AliCloud CLI Project.

you have to build the aliyun-cli on alpine, then the aliyun cli works on alpine try below Dockerfile
Dockerfile
# build aliyun-cli (aliyun)
FROM golang:alpine as builder
ADD . src/github.com/aliyun/aliyun-cli/
WORKDIR /go/src/github.com/aliyun/aliyun-cli
RUN apk add --update make git;\
  make deps; \
  make testdeps; \
  make build;

# build aliyun image from alpine
FROM alpine
MAINTAINER 叶泽宇/Zeyu Ye<EMAIL_ADDRESS>COPY --from=builder /go/src/github.com/aliyun/aliyun-cli/out/aliyun /usr/local/bin
CMD ["aliyun"]

Build/Test
git clone https://github.com/aliyun/aliyun-cli.git
cd aliyun-cli
rand_tag=$(openssl rand -hex 16)
docker build -t aliyun-${rand_tag} .
docker run -it --rm aliyun-${rand_tag}

Hi, your Dockerfile help me a lot! I adjust a little bit .
Dockerfile
FROM golang:alpine3.10 as builder
WORKDIR /go/src/github.com/aliyun/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories; \
    apk add --update make git; \
    git clone https://github.com/aliyun/aliyun-cli.git; \
    git clone https://github.com/aliyun/aliyun-openapi-meta.git
WORKDIR /go/src/github.com/aliyun/aliyun-cli
ENV GOPROXY=https://goproxy.cn
RUN make deps; \
    make testdeps; \
    make build;

FROM alpine:3.10
COPY --from=builder /go/src/github.com/aliyun/aliyun-cli/out/aliyun /usr/local/bin
CMD ["aliyun"]


Split stable notification into two steps

I haven't tested this as there is no easy way in the current repo, and I don't have capacity to set up a standalone test repo for it right now.
I would appreciate someone else setting up a test repo though.


Closet validator

Need to illustrate the guide

This is neat. I would call it on premise validator guide, or validator survivor guide. I like the idea of using Starlink, backup generators, solar power etc :D Really cool!
Have you considered lithium batteries as a backup? With 1000ah you could probably get almost a  day of power backup. Add a couple of solar panels and you could have a pretty awesome setup that could be deployed anywhere in the world.

can we merge this without illustrations for now? It's pretty cool  to share still!


Utilize lifecycle 0.14.3

https://github.com/buildpacks/lifecycle/releases/tag/v0.14.3
Lifecycle is built with<EMAIL_ADDRESS>

Codecov Report

Merging #1045 (2e3eae7) into main (306ba83) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1045   +/-   ##
=======================================
  Coverage   70.02%   70.02%
=======================================
  Files         122      122
  Lines        5908     5908
=======================================
  Hits         4137     4137
  Misses       1358     1358
  Partials      413      413

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

resolves: #1048

should we put this on a branch as well?


use aws configuration files

Instead of using a custom aws.yml file, just read from ~/.aws/config / ~/.aws/credentials. Keep the old behavior via a config flag or something maybe ❓

hey @shaiguitar let me know if this is what you were thinking

Yep. Haven't tested your commit, but ideally I don't need to write any additional files. All the aws info is already in those aforementioned files.

Let me know if it works for you, I tested it with my local setup and it was fine.

Did a git pull of ~/src/awsswitch to 398d0698b34f07b95a49ca10c4e00169d5b71a1a and it seems it's still trying to look for the yml file, but since I don't have one, it fails. I think the gist of how this should work is

Don't assume yml file. Work w/out one.
Grab all creds from the awscli formats and turn those into the env vars necessary.

shai@lappy ~   % set -x
...
+-zsh:3> awsswitch FOOBAR
+awsswitch:2> local AWS=FOOBAR
+awsswitch:3> [ -z FOOBAR ']'
+awsswitch:6> [ FOOBAR '==' none ']'
+awsswitch:9> grep --color -e FOOBAR /Users/shai/.aws.yml
+awsswitch:10> echo 'invalid aws'
invalid aws

I have only 2 env vars set since I only want to try and pull from the credentials ini format in ~/.aws/credentials
$ env | grep -i awsswitch
AWSSWITCH_CONFIG=awscli
PWD=/Users/rmicone/Dev/awsswitch
AWSSWITCH_PATH=/Users/rmicone/Dev/awsswitch

$ ./awsswitch.sh<PHONE_NUMBER>43
NOPE

keep getting NOPE 😢

You need to try #2 - that hasn't been merged to master yet.

This is now the only way awsswitch rolls. Open a new issue if things are broken.


Saving a file removes needed imports

I've noticed in the past day or two that saving a file will appear to goimports-format it, as it removes imports, however those imports are actually needed to build. Not sure what's going on here, I would expect goimports to work the same whether it's hooked into the file-save feature or run manually through the bundle menu or keyboard shortcut.

Hm.  I've had problems with goimports removing needed imports in the past, but I haven't had any trouble with the current version. So you're saying it behaves differently than on the command line? Do you perhaps have multiple copies of goimports with TextMate picking up an outdated copy?
Do you have TM_GOFMT set to the full path to goimports?

I saw that my TM_GODOC was pointing to /usr/local/Cellar/go/1.4.1/libexec/bin/godoc, which no longer exists. Not sure if that's related, don't see how it could be, but I fixed it to point to 1.5.1, the version I have installed now.
I now have:
TM_GOCODE=/Users/myuser/bin/gocode
TM_GODOC=/usr/local/Cellar/go/1.5.1/libexec/bin/godoc
TM_GOFMT=/Users/myuser/bin/goimports
TM_GOPATH=/Users/myuser
Are those right? I kind of fumbled through setting stuff to get things to work.
I don't see the problem right now in the files I have open, but I'll post back here if I see it again in the next few days.
Thanks for responding!

Come to think of it, it would be really helpful for the README to say which environment variables should be set to what.

Yes, it sure would. Or at least what environment variables there are to set. The values will depend on how you installed Go, but perhaps there could be suggestions for the common installations?
I bet @syscrusher would accept a PR. :wink:

Still seeing it. For example:
$ go build
$
[Save with no changes in TextMate, which removes an import]
$ go build
# my/import/path
./foo.go:123: undefined: bar in baz.Boz
$ goimports -e -l -w
foo.go
$ go build
$

Don't know if this could be related, but the import removed is for a package with a name different than its directory name (e.g. directory "go-foo" for package "foo").

I'm seeing some strange behavior. If I Ctrl-Shift-H (goimports), the package with the name that doesn't match the directory name (e.g. go-foo) immediately disappears, then the editor freezes for a couple seconds (I suspect this is because it's a somewhat large file) and then the import pops in again. I can keep invoking goimports like that it over and over and that happens every time. If I Cmd-S save, it removes the import but doesn't bring it back, and saving again doesn't change anything. If I goimports after that, it behaves as described before.

Looked into how goimports works and figured it out. I removed all variables except PATH, prefixed PATH with $PATH:, and then added the GOPATH variable. So now I have:
PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/go/1.5.1/libexec/bin:/Users/Will/bin
GOPATH=/Users/Will


Use Tilt for rendering ERB views

This branch adds Tilt and uses it for rendering ERB views instead of using ERB directly. This is primarily because doing layouts with yield is very weird in regular ERB, and Tilt does it in a much saner way. In the future, we might also use Tilt for Sass stuff.
This also brings Pry in cuz it's cool.

testing


unexpected Uint8Array.prototype.buffer behavior

buf = new Uint8Array(2048)
buf.subarray(0, 670).buffer
// ArrayBuffer(2048)
buf.slice(0, 670).buffer
// ArrayBuffer(670)

https://github.com/msgpack/msgpack-javascript/blob/0bfe618372c1409f0181e95295be06da6230a613/src/Encoder.ts#L26-L28
References:
https://github.com/DimensionDev/Maskbook/pull/1573

slice might copy the buffer then affect the performance

As @Jack-Works said, it is intentional.
It's not specific to this library. You MUST not use the underlying buffer in typed arrays without offset and length. Typed arrays and DataView is a view to ArrayBuffer. In addition, I don't recommend to copy typed arrays and their underlying buffers unless they are mutable. Copying buffers affect the performance.


Add OAM types into meshery adapter library

Current Behavior
OAM types are right now available in https://github.com/layer5io/meshery-istio/tree/master/istio/oam/core/v1alpha1 but they would be shared with other adapters as well, hence these types should be moved to meshery-adapter-library.
Desired Behavior
Move types from https://github.com/layer5io/meshery-istio/tree/master/istio/oam/core/v1alpha1 to meshery adapter library so that it can be used in all of the adapters that import this library.

@leecalcote should this instead move to meshkit? Actually I noticed that meshery alse needs these types. Adding them to meshkit would allow to reuse them in meshery easily without defining them again.
// @kumarabd

SGTM, @utkarsh-pro


Create Maintenance Tracker UI

What does this PR do?
Creates a User Interface for Maintenance Tracker App
Description of the task to be completed

Create a page where a user can register
Create a page where a user can log in
Create a page where a user can view all their requests
Create a page where a user can view all details of a particular request
Create a page where a user can view and edit their profile
Create a page where the administrator can log in
Create a page where the administrator can view and respond to all requests accordingly

How can it be manually be tested?
The pages are hosted on Github pages
Screenshots

That so awesome!

You did a great job with UI.

Looks really good man!


upgrading typescript to version 4.5.5

Codecov Report

Merging #52 (1c785db) into main (a3904e4) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main       #52   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           15        15
  Lines          346       346
  Branches        50        50
=========================================
  Hits           346       346

Continue to review full report at Codecov.

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


PHP Fatal error:  Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle

Guzzle:  6.2.3
PHP:      7.3.16
Curl:      7.19.7
Description
Library used for Google Shopping API product feeds
Feeds worked successfully every 20 minutes for 2 years and first 5 hours of 17 April 2020
Then:
PHP Fatal error:  Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:162
Stack trace:
#0 ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(129): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(89): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 ../vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 ../vendor/guzzlehttp/guzzle/src/Handl in ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 162
No change to server, site configuration or any associated php or library files.
Same error every time the script now runs.
I am not a programmer but can follow instructions!
Any leads or guidance will be appreciated as the feed developer is no longer available.
TIA

Updated curl to v7.69.1. Issue persists

Updated curl to v7.69.1. Issue persists

What do you mean by this? The curl cli binary you might have on your machine is not related to lib-curl.

Sorry, by 'issue persists' I mean the error is the same.
There is a possible solution on stackoverflow but it applies to Stripe and I have no idea how to implement it in Guzzle

I mean what did you mean by updated curl?

Upgraded the curl version

What do you see when you run php -r 'echo curl_version()["version"];'.

7.69.1

I get the same problem, GuzzleHttp\Exception\RequestException: cURL error 2:, this appear when on godaddy service active ssl with some browser not working (safari, firefox), I`ve the same configuration

It helped me to configure the client as follows:
$client = new Client([
    'handler' => new CurlHandler([
         'handle_factory' => new CurlFactory(0)
    ])
]);

However, I still think there is a bug somewhere. It stopped working on its own, nothing has changed neither in the app or on the server.

Hi,
some of our users are also reporting this issue: https://wordpress.org/support/topic/curl-error-2-easy-handle-already-used-in-multi-handle/
In our WP plugin: WP Mail SMTP we are using "google/apiclient" lib and it requires guzzle.
I can't reproduce this issue on my shared hosting or locally.
There were no changes to the plugin code when this issue started appearing for our users.
@EsSa55 When you say "All is well again", does that mean that the error is no longer present for you? Did cURL update on your server when these errors started to appear? Did you downgrade to an older version of cURL in order to resolve this issue?

@capuderg That's right. The error is no longer present, having requested my server host to downgrade cURL + libcurl to the previous version.
cURL did update automatically on my server. Sorry, I don't actually know what the new version was.
curl -V
curl 7.69.1 (x86_64-redhat-linux-gnu) libcurl/7.69.1 OpenSSL/1.0.1e-fips zlib/1.2.3 c-ares/1.16.0 libssh2/1.8.2
Release-Date: 2020-03-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTPS-proxy IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB SPNEGO SSL UnixSockets

It helped me to configure the client as follows:
$client = new Client([
    'handler' => new CurlHandler([
         'handle_factory' => new CurlFactory(0)
    ])
]);

However, I still think there is a bug somewhere. It stopped working on its own, nothing has changed neither in the app or on the server.
Edit
I was told that there may had been an automatic update as we use cPanel on that server. Unfortunately, I don't know more.

Before a long days my fix, replace StreamHandler instead of CurlHandler

Posted by @Matt on https://stackoverflow.com/questions/61285075/php-fatal-error-uncaught-guzzlehttp-exception-requestexception-curl-error-2-e?noredirect=1#comment108426410_61285075
Temporary fix:
Just in case anyone reading this is using Laravel. We suddenly started having the same problem a few days ago, tried installing different cURL versions and setting cURL options, nothing worked. I fixed it by changing the vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php file. Look for the line that says
if (count($this->handles) >= $this->maxHandles) {
curl_close($resource);
} else {
...
}
Comment this all out, and instead of the if/else just write
curl_close($resource);
In other words no matter what the handles count is you always close the cURL connection. This worked instantly for us!
I thought the cURL version downgrade was the 'fix', but it worked for just 2 days.

@EsSa55 I got inspired by this solution but instead of commenting out packaged lines of code I kind of forced the condition to be always true, therefore closing a resource every time. In my previous comment the number 0 is assigned to $this->maxHandles

@pavelgajdos As a non-programmer, I was able to follow the instruction re specific commenting out. However, I am lost as to where/how your solution is applied re 'configure the client'.

@EsSa55 In this case you are better off with commenting the lines out even though it is not as clean solution as mine or @ingberrio's :-)
Applying my solution heavily depends on your specific software and a guide, which would cover most possible situations in your code, would be too long and unnecessary for this issue.
Anyway, I hope we will know a cause of this bug or there will be a hotfix soon.

curl -V

This does not tell you the version of libcurl PHP is using.

Can someone confirm this is an issue caused in this package?
I’m getting reports of this issue in one of my packages that requires guzzle, but cannot reproduce it.

This issue is also being encountered in Stripes' php client, with reference to guzzle:
https://github.com/stripe/stripe-php/issues/918

I also believe this issue is being encountered with https://github.com/awesomemotive/WP-Mail-SMTP, for their gmail integration which also uses guzzle.

From https://curl.haxx.se/libcurl/c/libcurl-errors.html

CURLE_FAILED_INIT (2)
Very early initialization code failed. This is likely to be an internal error or problem, or a resource problem where something fundamental couldn't get done at init time.

and from https://cdcvs.fnal.gov/redmine/projects/simons-dm/wiki/Curl_Error_Codes

If we ever get this from our probe script, it means we have a broken version of curl on the system we are using, which can't find its own parts. So the user installed their own curl and it didn't build correctly, etc. Have them check their PATH command search path etc. installed packages, etc.

Also from the original author:

Guzzle: 6.2.3
PHP Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:162

So now let's head there: https://github.com/guzzle/guzzle/blob/6.2.3/src/Handler/CurlFactory.php#L162
🤔

The only versions that I found this line match is 6.0.0 and 6.0.1 https://github.com/guzzle/guzzle/blob/6.0.1/src/Handler/CurlFactory.php#L162
Please check your setup and use and updated version.

@gmponos thanks for this. Guzzle is embedded as a dependency so I don't fully have access over this, however it does at least help isolate the problem.
I'll investigate the versions bundles with the two plugins that have it as a dependency and confirm. If it turns out the guzzle version is the issue and not guzzle itself it could mean this issue can be closed.

In the WP Mail SMTP plugin the lowest Guzzle version that was used for a couple of releases now was '6.4.1'. Even when this issue started to occur for our users the plugin used that version...
Here are some updates from the users experiencing this issue: https://wordpress.org/support/topic/curl-error-2-easy-handle-already-used-in-multi-handle/page/3/
A lot of users reported they are hosting on GoDaddy. Is this maybe a GoDaddy specific issue?

I'm pretty sure it's not godaddy; I think it might be something to do with CentOS (I've seen other centOS users report similar things - do you know if your godaddy users are on CentOS systems @capuderg ?)

Firstly I can't safely exclude that this couldn't be a guzzles issue.. but I would like to have a stack trace that I can trust.
Secondly (not a WP expert) but unless you are using wppackagist plugins include all their vendor in the install right? How does the autoloading behaves when two plugins include in their vendors Guzzle? Maybe another plugin is using outdated guzzle version and it's the reason we have this stack trace?
If this "could" be an issue then what is the composer version used to generate the autoloading files for each version of you WP plugin?

@Gaffen I don't have any additional info on their systems, apart from the info on the forum post I pasted above. Sorry.

@gmponos If two WP plugins use the same composer package then the plugin that calls the autoload first will "register" the package and the second plugin's package will be ignored...
I've asked a user to list all plugins that he uses and verified if there is some kind of conflict like this, but there was none.

I am facing the same issue. I can't downgrade the things on the server. when we deployed the project the socialite plugin was working perfectly. suddenly it started throwing above error in the logs. please provide the solution asap. i also don't prefer to change in vendor files.

I also facing this problem.
PHP 5.6.40 (cli) (built: Jun 15 2020 20:46:06)
cURL 7.69.1

Exception 'Google\Cloud\Core\Exception\ServiceException' with message 'cURL error 2: easy handle already used in multi handle (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)'

Posted by @matt on https://stackoverflow.com/questions/61285075/php-fatal-error-uncaught-guzzlehttp-exception-requestexception-curl-error-2-e?noredirect=1#comment108426410_61285075
Temporary fix:
Just in case anyone reading this is using Laravel. We suddenly started having the same problem a few days ago, tried installing different cURL versions and setting cURL options, nothing worked. I fixed it by changing the vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php file. Look for the line that says
if (count($this->handles) >= $this->maxHandles) {
curl_close($resource);
} else {
...
}
Comment this all out, and instead of the if/else just write
curl_close($resource);
In other words no matter what the handles count is you always close the cURL connection. This worked instantly for us!
I thought the cURL version downgrade was the 'fix', but it worked for just 2 days.

I had to use the temporary fix mentioned here. but I don't recommend this and the developer should come up with the solution asap.

Downgrading the libcurl version resolved a similar issue for a Site Kit plugin user, as reported here.

I'm in the (unique?) position where I'm managing a handful of Drupal sites. This error prevents some of them from retrieving information about project updates (the core Update module in Drupal 8/9 uses Guzzle to retrieve this information). Here's what I'm seeing:

Test
Drupal Version
PHP Version
cURL Version
Fails With error 2

Site 1 Prod
8.9.3
7.3.21
7.71.1
No

Site 1 Stage
8.9.3
7.3.20
7.71.0
No

Site 2 Prod
8.9.2
7.2.33
7.71.1
No

Site 2 Stage
8.9.2
7.2.33
7.69.1
Yes

Site 3 Prod
8.9.3
7.3.14
7.29.0
No

Site 3 Stage
8.9.3
7.3.21
7.69.1
Yes

Site 4
9.0.3
7.4.8
7.29.0
No

Far from conclusive information to be sure, but it's looking like this issue might be version specific to cURL. I will try updating that specifically any come back with any results.

As @gmponos shows, it is likely a curl issue.
I’m closing this since nobody has shown a stack trace, a reproducible script or a reliable version of guzzle where this happens. Feel free to open a new issue if you can provide a short reproducible script.

I am still getting this while using 2 packages (Packagist libraries) from different developers that have guzzle as a dependency.
I am getting this using the Following:
CURL:
curl 7.74.0 (x86_64-apple-darwin20.2.0) libcurl/7.74.0 (SecureTransport) OpenSSL/1.1.1i zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.0 libssh2/1.9.0 nghttp2/1.42.0 librtmp/2.3 Release-Date: 2020-12-09 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink MultiSSL NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets zstd
Guzzle
guzzlehttp/guzzle (7.2.0)
Stack Trace:
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://oauth.nitrado.net/oauth/v2/token in /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211 Stack trace: #0 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(158): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(110): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(47): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #4 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(48): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #5 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(64): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #6 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #7 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #8 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Middleware.php(63): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #9 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/HandlerStack.php(75): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #10 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(331): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #11 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(107): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array) #12 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(123): GuzzleHttp\Client->sendAsync(Object(GuzzleHttp\Psr7\Request), Array) #13 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(608): GuzzleHttp\Client->send(Object(GuzzleHttp\Psr7\Request)) #14 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(621): League\OAuth2\Client\Provider\AbstractProvider->getResponse(Object(GuzzleHttp\Psr7\Request)) #15 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(537): League\OAuth2\Client\Provider\AbstractProvider->getParsedResponse(Object(GuzzleHttp\Psr7\Request)) #16 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/test.php(45): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken(Object(League\OAuth2\Client\Grant\AuthorizationCode), Array) #17 {main} thrown in /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 211
Any help would be greatly appreciated.

I am still getting this while using 2 packages (Packagist libraries) from different developers that have guzzle as a dependency.
I am getting this using the Following:
CURL:
curl 7.74.0 (x86_64-apple-darwin20.2.0) libcurl/7.74.0 (SecureTransport) OpenSSL/1.1.1i zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.0 libssh2/1.9.0 nghttp2/1.42.0 librtmp/2.3 Release-Date: 2020-12-09 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink MultiSSL NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets zstd
Guzzle
guzzlehttp/guzzle (7.2.0)
Stack Trace:
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://oauth.nitrado.net/oauth/v2/token in /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211 Stack trace: #0 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(158): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(110): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(47): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #4 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(48): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #5 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(64): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #6 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #7 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #8 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Middleware.php(63): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #9 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/HandlerStack.php(75): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #10 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(331): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #11 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(107): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array) #12 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Client.php(123): GuzzleHttp\Client->sendAsync(Object(GuzzleHttp\Psr7\Request), Array) #13 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(608): GuzzleHttp\Client->send(Object(GuzzleHttp\Psr7\Request)) #14 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(621): League\OAuth2\Client\Provider\AbstractProvider->getResponse(Object(GuzzleHttp\Psr7\Request)) #15 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(537): League\OAuth2\Client\Provider\AbstractProvider->getParsedResponse(Object(GuzzleHttp\Psr7\Request)) #16 /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/test.php(45): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken(Object(League\OAuth2\Client\Grant\AuthorizationCode), Array) #17 {main} thrown in /Users/itsmestevieg/Sites/stevieg.online/oauth2-nitrado/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 211
Any help would be greatly appreciated.

Why would this not run for my admin user that falls in the allowed access group 6055?

':
      return $a > $b;
    break;
    case '<':
      return $a < $b;
    break;
    case '>=':
      return $a >= $b;
    break;
    case '<=':
      return $a <= $b;
    break;
  }
}

/**
 * Check if user has access
 *
 * @param $uid
 *
 * @return bool
 */
if( ! function_exists( 'x_authorize' ) ) {
  function x_authorize($uid){

    $found = false;
    $pass = [6079,6055,5923];
    //Confirm membership active
    $memberships = wc_memberships_get_user_active_memberships( $uid );

    foreach($memberships as $ship){
      if(in_array($ship->plan_id, $pass)) $found = true;
    }

    return $found;

  }
}

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
line();
echo date("Y-m-d h:i:sa").PHP_EOL;
echo "XABCD Chat Notification Script".PHP_EOL;
echo "INIT :: DB Connected successfully".PHP_EOL;

//Users
$users = get_users();

//Chat
$result = $conn->query("SELECT * FROM chat order by id DESC LIMIT 100");
$allchat = $result->fetch_all(MYSQLI_ASSOC);
$chat = array_filter($allchat, function($message){  if($message['private'] == 'all') return true; });

echo 'Loaded '.count($chat).' Chat Messages'.PHP_EOL;
$conn->close();

//RUN!!
foreach($users as $user){
  if( x_authorize( $user->id ) ) {
    $emailAlerts = json_decode(get_user_meta($user->id,'emailAlerts', true));
    runChatNotifications($chat, $user, $emailAlerts, $allchat);
  }
}

//Helper functions
function runChatNotifications($chat, $user, $emailAlerts, $allchat){

  line();
  print_r('Running chat for '.$user->ID.' '.$user->data->user_nicename.' '.$user->data->user_email.PHP_EOL);

  if($emailAlerts->chat == 1 && isUserAlertAllowed( $user, $emailAlerts ) ){

    $lastChatId = get_user_meta($user->ID, 'lastChatId', true);
    $currentChat = array_shift($chat);
    print_r('Current Chat is: #'.$currentChat['id'].PHP_EOL.'Last Chat Seen: #'.$lastChatId.PHP_EOL);
    if($currentChat['id'] > $lastChatId) {
      sendChatAlert($user, $currentChat);
      increaseDailyAlertCounter( $user );
    }
  }

  if($emailAlerts->private == 1 && isUserAlertAllowed( $user, $emailAlerts ) ){

    $lastPrivateId = get_user_meta($user->ID, 'lastPrivateId', true);
    $private = array_filter($allchat, function($message) use ($user){  if($message['private'] == $user->data->user_nicename) return true; });
    $currentPrivate = array_shift($private);

    print_r('Current Private is: #'.$currentPrivate['id'].PHP_EOL.'Last Private Seen: #'.$lastPrivateId.PHP_EOL);
    if($currentPrivate['id'] > $lastPrivateId) {
      sendPrivateAlert($user, $currentPrivate);
      increaseDailyAlertCounter( $user );
    }
  }

  if( $emailAlerts->mention == 1 && isUserAlertAllowed( $user, $emailAlerts ) ){

    $lastMentionId  = get_user_meta($user->ID, 'lastMentionId', true);
    if( ! $lastMentionId || $lastMentionId === '0' ) {
      return;
    }

    $mention        = array_filter($allchat, function($message) use ($lastMentionId){  if( $message['id'] == $lastMentionId ) return true; });
    $currentMention = array_shift($mention);

    print_r('Current Mention is: #'.$currentMention['id'].PHP_EOL);
    sendMentionAlert($user, $currentMention);
    increaseDailyAlertCounter( $user );
  }
}

function sendChatAlert($user, $currentChat){
  $to = $user->data->user_email;
  $subject = 'Chat Alert Notification';
  $body = '
Hello,
There are people chatting inside XABCD Trading, you might want to join in for the discussion.
https://www.xabcdtrading.com/dashboard/
- XABCD Team
Turn on/off email alerts.
  ';
  $headers = array('Content-Type: text/html; charset=UTF-8');
  if(wp_mail( $to, $subject, $body, $headers )){
    update_user_meta($user->ID, 'lastChatId', $currentChat['id']);
    print_r('Sent Chat Alert for #'.$currentChat['id'].PHP_EOL);
  }
}

function sendPrivateAlert($user, $currentPrivate){
  $to = $user->data->user_email;
  $subject = 'Private Message Alert Notification';
  $body = '
  Hello,
  You have a new private message that was sent to you. Login to see who is talking to you.
  https://www.xabcdtrading.com/dashboard/
  - XABCD Team
  Turn on/off email alerts.
  ';
  $headers = array('Content-Type: text/html; charset=UTF-8');
  if(wp_mail( $to, $subject, $body, $headers )){
    update_user_meta($user->ID, 'lastPrivateId', $currentPrivate['id']);
    print_r('Sent Private Chat Alert!'.PHP_EOL);
  }
}

function sendMentionAlert($user, $currentMention){
  $to = $user->data->user_email;
  $subject = 'Mention Message Notification';
  $body = '
  Hello,
  You have been mentioned in the message.
  https://www.xabcdtrading.com/dashboard/
  - XABCD Team
  Note:  Go here to learn how to manage notifications: https://www.xabcdtrading.com/how-to-notifications/
  ';
  $headers = array('Content-Type: text/html; charset=UTF-8');
  if(wp_mail( $to, $subject, $body, $headers )){
    update_user_meta($user->ID, 'lastMentionId', 0 );
    print_r('Sent Mention Alert!'.PHP_EOL);
  }
}

function line(){
  print_r('******************************************************************'.PHP_EOL);
}

/**
 * Validation if user has daily limit to send him Alert.
 *
 * @param $user
 * @param $emailAlerts
 *
 * @return bool
 */
function isUserAlertAllowed( $user, $emailAlerts ) {

  if( ! isset( $emailAlerts->perDay ) ) {
    return true;
  }

  return $emailAlerts->perDay > get_user_meta( $user->id, 'emails_day_counter', true );
}

/**
 * Increase daily email Counter
 *
 * @param $user
 *
 * @return int
 */
function increaseDailyAlertCounter( $user ) {
  $counter = get_user_meta( $user->id, 'emails_day_counter', true );
  update_user_meta( $user->id, 'emails_day_counter', intval( $counter ) + 1 );

  return intval( $counter ) + 1;
}


New faster settings format

Now this watchface takes up to 2.5 seconds for start and 1 second to end at least at APLITE. This is because lots of persist_read_... and persist_write_... methods are called (each of them takes nearly 50ms). This commit reduces those calls to 3 for loading and 2 for saving. Previous settings would be saved.

Awesome! I've known about this optimization for a while but I'm lazy :smile: I will definitely work to get this into the next release!

Cool! Thank you!


Update Veeam Stencil

Dear all,
can you please update the Veeam stencil on the current version are missing some cloud icons
Cheers
Schwitzd

Where is the source for the new set and what license are they issued under?

Here is the link: https://www.veeam.com/vmware-esx-stencils.html
is written free but no license info


Image search using opencv

What about using the opencv to search the image?
https://github.com/justadudewhohacks/opencv4nodejs/blob/dcaf4c5950b0120d12724cc2894c75b45f273be3/examples/templateMatching.js

You might take a look at nut.js where I built exactly that on top of robotjs and opencv4nodejs.

This issue has been closed because it has been inactive for > 180 days.
You may reopen this issue if it has been closed in error.


Add more species?

Add the data from other Strongyloides RNAseq experiments?
Options include:

[ ] S. ratti (https://www.nature.com/articles/ng.3495)
[ ] S. papillosus (https://academic.oup.com/gbe/article/9/3/790/3060133)
[ ] S. venezuelensis (https://www.nature.com/articles/s41598-018-23514-z)

Started this on 8-16-2020

Added S. ratti  to my development branch with https://github.com/astrasb/Strongyloides_Bioinformatics/commit/bfb8dcba0dcbfb52bba678425e41bd668d3cd0f0

Added S. papillosus and S. venezuelensis to my development branch with https://github.com/astrasb/Strongyloides_Bioinformatics/commit/9b8e6b7552116b8454ffc44be051296f506a1a10


"Cannot set property activeDebugSession of # which has only a getter" when trying to change active debug session

vs.debug.activeDebugSession is marked as mutable in the definition:
https://github.com/microsoft/vscode/blob/be0e53510d8128ee4d17205fcb9511963a5bbb43/src/vscode-dts/vscode.d.ts#L16259
But trying to set it results in the following runtime exception:
Exception has occurred: TypeError: Cannot set property activeDebugSession of #<Object> which has only a getter
t VsCodeApiImpl.<anonymous> (c:\Dev\Dart-Code\Dart-Code\out\dist\extension.js:6563:45)
	at Generator.next (<anonymous>)

I'm trying to improve the UI for launching some additional tooling and it allows the user to select a debug session to launch the tool far. To improve the experience, I'd like to allow the user to  use a "selected" debug session but I don't want a different selection to VS Code - I'd like to sync changes made in either place into a single selected debug session.
I also looked for a command, but I only found workbench.action.debug.selectDebugSession which seems to just show a pick-list and not allow us to provide a session explicitly.

Even though those are let, only vscode can set them. This sparked a discussion and I filed https://github.com/microsoft/vscode/issues/216555 to change this. But it sounds like you're basically asking for a way for an extension to set the active debug session. I'm not sure about that. Why do you want to have different UI for this rather than having the user pick the active debug session in VS Code's picker, and listening to that?

it sounds like you're basically asking for a way for an extension to set the active debug session

Correct.

Why do you want to have different UI for this rather than having the user pick the active debug session in VS Code's picker, and listening to that?

We're trying to improve discoverability of some additional debugging tools for Dart/Flutter. We have a sidebar that shows the debug sessions and lets you launch additional tools (which are tied to a debug session). Currently those tools are in a dropdown alongside the debug sessions:

However these aren't very discoverable so we'd like to move them out of this menu to be more visible in the sidebar. However, that means either:

When a user clicks one, we have to prompt for a debug session
We launch for the "active" debug session

We think the second option is best, however the VS Code dropdown is far away from the sidebar (and maybe it's not even visible - see https://github.com/microsoft/vscode/issues/216601). We think it would be better if we kept the list of debug sessions and highlighted the active one (and updated when it changed in VS Code), similar to how we do with device selection:

But highlighting the selected debug session here and not being able to click on one to select it would be odd (especially as you can do that with the device and we sync it in both directions). If we track our own version of a selected debug session, I think that would also be confusing.
So, I think the best experience for users would be if they can select a debug session here too, where it's clear it applies to which tool you'll launch, but it's not a different concept to the active session in VS Code which the debug toolbar and other things apply to.
We don't plan to ever change the session automatically, this is entirely in response to the user selecting it. It's just a more convenient way for them to change it, and to see the selected debug session in a way that is obviously connected to the tool that will be launched (unlike the VS Code toolbar that is quite distant).

I filed https://github.com/microsoft/vscode/issues/216601 about the missing dropdown when using command center, which was linked to https://github.com/microsoft/vscode/issues/194881 where you said:

Otherwise I think it's not too bad to use the callstack or the dropdown in the debug console

If this is the solution to that, then I think being able to set this here for me is even more important, because a user having to switch from this sidebar view to the debug view and then back to change debug session is definitely not a good experience.


Add multiple files in a single prompt

yazi --debug output
Yazi
    Version: 0.3.3 (Arch Linux 2024-09-05)
    Debug  : false
    OS     : linux-x86_64 (unix)

Ya
    Version: 0.3.3 (Arch Linux 2024-09-05)

Emulator
    Emulator.via_env: ("alacritty", "tmux")
    Emulator.via_csi: Ok(Unknown([]))
    Emulator.detect : Unknown([])

Adapter
    Adapter.matches: Wayland

Desktop
    XDG_SESSION_TYPE           : Some("wayland")
    WAYLAND_DISPLAY            : Some("wayland-1")
    DISPLAY                    : Some(":0")
    SWAYSOCK                   : None
    HYPRLAND_INSTANCE_SIGNATURE: Some("12f9a0d0b93f691d4d9923716557154d74777b0a_1732952727_649339368")
    WAYFIRE_SOCKET             : None

SSH
    shared.in_ssh_connection: false

WSL
    WSL: false

Variables
    SHELL              : Some("/usr/bin/zsh")
    EDITOR             : Some("nvim")
    VISUAL             : None
    YAZI_FILE_ONE      : None
    YAZI_CONFIG_HOME   : None

Text Opener
    default: Some(Opener { run: "nvim \"$@\"", block: true, orphan: false, desc: "nvim", for_: None, spread: true })
    block  : Some(Opener { run: "nvim \"$@\"", block: true, orphan: false, desc: "nvim", for_: None, spread: true })

Multiplexers
    TMUX               : true
    tmux version       : tmux 3.5a
    ZELLIJ_SESSION_NAME: None
    Zellij version     : No such file or directory (os error 2)

Dependencies
    file             : 5.45
    ueberzugpp       : 2.9.6
    ffmpegthumbnailer: No such file or directory (os error 2)
    magick           : 7.1.1-41
    fzf              : 0.56.3
    fd               : 10.2.0
    rg               : 14.1.1
    chafa            : 1.14.2
    zoxide           : 0.9.6
    7z               : No such file or directory (os error 2)
    7zz              : No such file or directory (os error 2)
    jq               : 1.7.1

--------------------------------------------------
When reporting a bug, please also upload the `yazi.log` log file - only upload the most recent content by time.
You can find it in the "/home/shadow/.local/state/yazi" directory.

Please describe the problem you're trying to solve
I don't know if it is implemented yet(read the entire docs but still couldn't find it) but is it possible to create multiple files/folder in a single yazi prompt. I want a feature like the mkdir and touch command have.
For e.g:
touch one.txt two.txt : This will create two file- one.txt and two.txt
mkdir -p root/{one,two}: This will create two folders- root/one and root/two
I want to have the similar functionality in the yazi prompt that opens after pressing a key.
If this is feature is implemented would you mind sharing the syntax
Would you be willing to contribute this feature?

[ ] Yes, I'll give it a shot

Describe the solution you'd like
What I want is:

Open the create file prompt by pressing the a key
For the input {one,two}/{file.txt,file.yaml}  three/ should make the following tree structure of the directories

.
├── one
│   ├── file.txt
│   └── file.yaml
└── two
│   ├── file.txt
│   └── file.yaml
└── three

the syntax can be anything as long as it does the job
Additional context
No response
Validations

[x] I have searched the existing issues/discussions
[X] The latest nightly build doesn't already have this feature

I plan to add a "bulk-creation" feature and have reserved a key A for it — pressing A will open the user's configured editor, where they can edit a list of filenames.
After saving the file, Yazi will automatically create those files, similar to how the bulk rename (r key) works.
Just haven't had the time to implement it yet — it's not a high priority, and it can already be achieved through plugin APIs.


Q: The Broad peak calling with extra parameter --nomodel  --extsize 73 gives biologically opposite result compared to default broad peaks calling

Dear MACS2 programmers,
We are analyzing ChiPmentation data of H3K27m3 mark, data was generated in our lab. It happened, that we used 2 different approaches to call peaks:
1st approach: macs2 callpeak -t Sample.bam -c Control.bam -f BAM -g hs -B --broad -n  --outdir ~/H3K27me
2nd approach: macs2 callpeak -t Sample.bam -c Control.bam -f BAM -g hs -B --broad -n  --outdir ~/H3K27me --nomodel  --extsize 73
The problem is, that the resulting broad peaks from the same sample, but different approaches, differs dramatically. Where second approach shows general loss of H4K27me3, the first approach demonstrates the gain of this mark.
We also checked the control genes H4K27me3 status but with 2 different packages, DeSeq2 and DiffBind (using DeSeq2 algorithm). And the control genes demonstrate expected pattern with approach 1 and approach 2.
I plotted pileups from the different approaches:

Is this analysis already enough to conclude that 1 approach is better?
What would be the best way to decide which peak calling line is better? Are there any possible additional analysis of the peak lists to select the way?
Many thanks in advance,
Best wishes,
Anna

Hi @AnnaKuchmiy! The first question: is your data paired-end or single-end? I remember the first ChIPmentation data is paired-end. If PE, then please use macs2 callpeak -t Sample.bam -c Control.bam -f BAMPE -g hs -B --broad -n --outdir ~/H3K27me instead. Alternatively, you can keep using the same parameter settings as in the first ChIPmentation paper with --nomodel --extension 75 uniformly on all your data.
In general, if you plan to compare different conditions, please avoid the 'read shift model prediction' (the default behavior without setting --no-model) in MACS2 as that in your approach 1. It's highly likely that the 'extension sizes' from the two conditions predicted by MACS2 are different so the data are smoothed differently. For example, if you have the identical dataset, and you try to set the extension size to 100, and then set as 200, the later one will double the overall genome-wide pileup signals, so give you misleading results.
Now, I am thinking of turning the 'model building' off by default. This feature currently is often used to evaluate the data quality ONLY.

Thank you, @taoliu ! Very clear answer!


Support for HTTP Digest & NTLM Authentication

Although the Basic Auth support (https://github.com/OJ/gobuster/pull/15) is useful, I have tested a lot of applications that require other forms of HTTP Authentication (such HTTP Digest and NTLM) and would love to be able to run GoBuster against them.
Would it be possible for this support to be introduced that's a similar manner to the current Basic auth method?

haven’t found an ntlm library so far for golang that’s useable so I guess it’s currently not possible. But you can proxy gobuster through burp and let burp handle the authentication as a workaround


Add sender parameter to the delegate.

Add sender parameter to the delegate, for use multiple timer in a calss. Such as fry timer, egg timer, pizza timer, ... in a Cook class.

Thank you!


Decorator for pruning

PR Description
This introduces a decorator pattern to the DBSlashingProtection class to enable features like pruning to be enable in runtime.
Fixed Issue(s)

Fixes #672
Documentation

[x] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[ ] I thought about adding a changelog entry, and added one if I deemed necessary.

Testing

[] I thought about testing these changes in a realistic/non-local environment.

Closing in favor of #823


aspnet.blazor 0.8 vsix

Hello, where can I download https://marketplace.visualstudio.com/items?itemName=aspnet.blazor for Blazor 0.8?

Thanks for contacting us, @cores-system.
As we're still in preview, we don't maintain older versions of the extensions. Only the latest version of the Blazor extension is available for download.


Implement Feature Toggle using Remote Config from Firebase

We are enabling/disabling features during build time instead...


Output formatting options

As I tend to reserve PascalCase for class definitions, and camelCase for objects and literal definitions, it would be nice to be able to configure the output names of the generated Zod schemas:
export const userModel = z.object(...)

Also, as Zod names its objects schemas, allowing to change the suffix would be nice too:
export const userSchema = z.object(...)

Suggested API (with current defaults):
generator zod {
  provider      = "zod-prisma"
  output        = "./zod"
  modelCase     = "PascalCase" // options: "camelCase" | "PascalCase"
  modelSuffix   = "Model"
}

I can open a PR if you're interested.
Related packages: https://github.com/blakeembrey/change-case

Published with version 0.3.0! Thank you so much for your contribution!


specify the numpy version

Hi Zhongdao, can you specify the Numpy version compatible with all the other dependencies? It is not specified in the requirements.
I am trying to run your code for my project but getting dependency errors with cython_bbox and pycocotools. They seem to be related to specific Numpy versions.
Thanks!

To be more specific: for numy versions>=1.20 I got errors for cython_bbox(0.1.3):

File "src/cython_bbox.pyx", line 1, in init cython_bbox
ImportError: numpy.core.multiarray failed to import (auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; use 'numpy._import_array' to disable if you are certain you don't need it).

And for numpy==1.19.5 I got errors with pycocotools:

import pycocotools._mask as _mask
File "pycocotools/_mask.pyx", line 1, in init pycocotools._mask
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject


Update licenses of UI

Please answer these questions before submitting pull request

Why submit this pull request?
[ ] Bug fix
[x] New feature provided
[ ] Improve performance

New feature or improvement
Update UI licenses

Coverage remained the same at 24.439% when pulling e88750d7edb9fc780776052f5bb63fe1b84b9a78 on ui/license into b35eaace792146ea0379da47273177e66a8b897a on master.


Issue with getting raw files

Hi
I have an issue getting a raw file from a repo. I found the source, but not sure how to fix this.
In GetRawFile there's a URL construction like this:
u := fmt.Sprintf(
      "projects/%s/repository/files/%s",
      PathEscape(project),
      PathEscape(fileName),
)

req, err := s.client.NewRequest(http.MethodGet, u, opt, options)

But NewRequest unescapes the u back to regular URL, which causes 404 in gitlab.
unescaped, err := url.PathUnescape(path)

Any ideas how to fix this, without breaking all the other stuff? :)

I actually found the #1675 issue, and it seems like exactly my case. I dumped the request, here's the dump:
Outgoing request:

"GET /api/v4/projects/50796694/repository/files/%2Egitlab%252Fissue_templates%252F%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%20%D0%B4%D0%BB%D1%8F%20%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8%2Emd/raw?ref=main HTTP/1.1\r\nHost: gitlab.com\r\nUser-Agent: go-gitl
ab\r\nAccept: application/json\r\nPrivate-Token: glpat-by7qqecPJJqsTM1MhGTF\r\nAccept-Encoding: gzip\r\n\r\n"
2023/12/16 23:26:52 [telegram.Router.RouteUpdate] error handling telegram update: gitlab.client.CreateArticleTask: GET https://gitlab.com/api/v4/projects/50796694/repository/files/.gitlab/issue_templates/шаблон для статьи.md/raw: 404 {message: 404
File Not Found}

The issue seems to be somewhere in the retryablehttp, I will dig into this a bit more.

@nchursin any update on this? hitting the same issue!

Having the same issue with client.MergeRequests.GetMergeRequest
func (s *MergeRequestsService) GetMergeRequest(pid interface{}, mergeRequest int, opt *GetMergeRequestsOptions, options ...RequestOptionFunc) (*MergeRequest, *Response, error) {
...
	u := fmt.Sprintf("projects/%s/merge_requests/%d", PathEscape(project), mergeRequest)

	req, err := s.client.NewRequest(http.MethodGet, u, opt, options)

Looks like the function properly escapes the project path, but gitlab.NewRequest messes with the escaping.
Now interestingly, I need to url.PathEscape the project ID twice to get the error message output properly:
GET https://<gitlab-domain>/api/v4/projects/foo%2Fbar/merge_requests/123: 404 {message: 404 Project Not Found}

No matter if I escape the projecturl 1, 2, 3 or 4 times it always ends up in a 404, while using the project ID just works.

I am facing a similar issue where the GitLab repository files API wants an url-encoded path or the project id but:

PathEscape is only encoding . and not /.
NewRequest seems to unescape these anyways again.

Only solution for me would be somehow getting the project ID, I think.

@nchursin i have the same problem, do you solution this ?

I think I can take a look, but it would be nice to have a small and simple test case. If anyone can share a few lines with the code they are using including some (may be obfuscated of course) example URLs/paths so that I can reproduce it, that would help me get started.


TV turning on fine but have to turn tv on twice in home app before tv will turn on

TV turning on fine but have to turn tv on twice in home app before tv will turn on. I basically have to tell the tv to turn on then turn off before it will come on. the home app then reports the tv as off when its home

/this made the tv turn on
[9/13/2016, 9:48:26 PM] [TV] LGTv2 connecting
[9/13/2016, 9:48:27 PM] [TV] LGTv2 connected
[9/13/2016, 9:48:42 PM] [TV] LGTv2 disconnected

I'm improving the plugin, soon I will release an update

Thanks for letting me know, this is a great plugin and i appreciate all the effort you are putting into this. Would be amazing if we could load netflix and plex

Open Netflix and other apps is possibile with the API!
I also managed to handle the volume but unfortunately I had to set the device as a light bulb in HomeKit 😃

I've got errors like this when TV is switched off
[9/20/2016, 8:56:46 PM] [LG TV] LGTv2 connecting
[9/20/2016, 8:56:49 PM] [LG TV] LGTv2 error Error: connect EHOSTUNREACH <IP_ADDRESS>:3000
And like this, when it's switched on with a remote control:
[9/20/2016, 8:57:18 PM] [LG TV] LGTv2 connecting
[9/20/2016, 8:57:19 PM] [LG TV] LGTv2 error Error: connect ECONNREFUSED <IP_ADDRESS>:3000
Any thoughts how to avoid this?
Thanks!

I can turn off the tv but not on! Any idea?

@ebugakov Same thing happens to my to. Need help!!

@ebugakov @toshibochan I'm trying to fix wake on lan

That's great! Thanks @alessiodionisi!!!

@alessiodionisi any progress on fix wake on LAN?

I get the same problem with @ebugakov . How to solve this problem?

Maybe the tv no stay on standby mode!  I don't see any option on settings for standby mode.

@alessiodionisi any update budy, this is so close to being perfect

Hello guys, the problem is wake_on_lan module. I'm working to fix it or write a custom WOL module 😄

@alessiodionisi how's it going buddy ?

Thanks @alessiodionisi! Hope you can fix the bug!!

Random side note, I'm currently using https://github.com/AlexGustafsson/homebridge-wol/blob/master/index.js
this works fine for turning on the TV, it appears to use the wake-on-lan package :)
I'm using this plugin with a node shell script that executes the turn off:
var lgtv = require("lgtv2")({
  url: 'ws://<IP_ADDRESS>:3000'
});

lgtv.on('connect', function () {
  console.log('Connected');

  lgtv.request('ssap://system/turnOff', function (err, res) {
    lgtv.disconnect();
  });
});

I'm rewriting much code of the plugin to solve the problems


@include(if:) prevents __typename from being returned

Is there an existing issue for this?

[X] I have searched the existing issues

Product
Hot Chocolate
Describe the bug
If the query field is mentioned more than once and one of those mentions is excluded by the @include(if:) directive, that field is not being returned at all.
Steps to reproduce
Take a look at the following query:
query entity($id: ID!, $permission: Boolean!) {
  entity(id: $id) {
    ...FragmentA
    ...FragmentB @include(if: $permission)
    __typename
  }
}

fragment FragmentA on Entity {
  id
  field1
  __typename
}

fragment FragmentB on Entity {
  field2
  __typename
}

That query is generated by the Apollo client code generator and __typename field is requested almost everywhere. If that query is executed with the permission parameter set to true than everything is fine. However, when permission is set to false the __typename field is not returned altogether, despite the fact that it is directly requested by the query itself and indirectly requested by the FragmentA.
Result of the execution with permission set to true:
{
  "data": {
    "entity": {
      "id": "1",
      "field1": "field1",
      "__typename": "Entity",
      "field2": "field2"
    }
  }
}

Result of the execution with permission set to false:
{
  "data": {
    "entity": {
      "id": "1",
      "field1": "field1"
    }
  }
}

Relevant log output
No response
Additional Context?
No response
Version
13.0.5

This one is already fixed in 13.1. preview builds.


v0.12.0 creates duplicate functions when an entity has a field named order

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
In v0.12.0, when generating code for an entity that has a field named order, two functions named Order are created in the same package. One is in <entityname>/<entityname>.go and the other in <entityname>/where.go. As a result, the code does not compile.
Expected Behavior 🤔
Prior to v0.12.0, having a field named order worked without issue.
Is there a way to avoid this function duplication without renaming the column in the database?
Steps to Reproduce 🕹

Steps:

Create an entity with a field named order.
Generate code using v0.11.10 or earlier. No compilation errors.
Generate code using v0.12.0. Compilation fails due to duplicate function names.

Your Environment 🌎

Tech
Version

Go
1.19.7

Ent
0.12.0

Database
PostgresSQL

Hey, @jimlackas 👋🏻
The issue was fixed with https://github.com/ent/ent/pull/3468. A new patch will be released later this week, and you can install the master version to solve this issue atm.
go get entgo.io/ent@master


Different aspect ratio on device and PC

My phone have wide aspect ratio and my PC have 4:3 (1024x768). I need to fit display to full screen. Is possible to stretch out window to full 4:3 ratio? Using CTRL+F preserved wide aspect ratio.

No, scrcpy always respect aspect ratio.

As a quick fix, I'd suggest using OBS (Open Broadcaster Studio) and creating a window capture scene, stretching it, then view the fullscreen preview.

Out of curiosity, what is the use case? Why would you want a distorted image?

You can change resolution on the fly with adb shell wm size 1024x768 (mind the orientation). If you mess too much reboot. Some info: https://stackoverflow.com/questions/18500611/android-how-to-use-adb-shell-wm-to-simulate-other-devices

@rom1v  ... i don't know if i am a victim of an optical illusion ... even i am getting a feeling ... the device window on my laptop and its aspect ration isn't the same i am used to when i work directly on my tablet ... the scrcpy window on the laptop seems a little off !!!
Is there anyway i can fetch the aspect ration out of the package scrcpy and see if it matches the aspect ration of the device's specs ?

You can get the video dimensions in the console:
$ scrcpy
INFO: scrcpy 1.10 <https://github.com/Genymobile/scrcpy>
/usr/local/share/scrcpy/scrcpy-server....shed. 3.4 MB/s (22686 bytes in 0.006s)
INFO: Initial texture: 1080x1920

Or you can just take a screenshot, and "measure" (with any image editor).

FYI ... my device is a Nexus 9 ... and according to its specs its screen is 2048x1536 ... is there a way  i can grab the scrcpy window's screen resolution and see if its the same ...

You can get the video dimensions in the console:
$ scrcpy
INFO: scrcpy 1.10 <https://github.com/Genymobile/scrcpy>
/usr/local/share/scrcpy/scrcpy-server....shed. 3.4 MB/s (22686 bytes in 0.006s)
INFO: Initial texture: 1080x1920

Or you can just take a screenshot, and "measure" (with any image editor).

hahahaha ... you are right ... the console shows the correct screen dimensions ... seems an optical illusion !!!
I'll have to try the screenshot method ... :laughing: ... to further debug my illusion ...
after my issue gets resolved ... https://github.com/Genymobile/scrcpy/issues/833


Zendikar Expedition(s) Title Mismatch

When you get the set the name is Zendikar Expedition but when you get a card the set name is Zendikar Expeditions. I believe they should both be Zendikar Expeditions (with the "s").
Example:
https://api.deckbrew.com/mtg/sets/EXP (no "s" at the end)
https://api.deckbrew.com/mtg/cards/canopy-vista (has "s" at the end)

Fixed!


Add ISharedAllocator and have the _processAllocator use it

Add a shared allocator interface that should be used by shareable allocators. The processAllocator will implement this interface.

What are the implementation guidelines for shared allocators ?

Can we please define shared in the spec before we start adding it to our best PR move?

Can we please define shared in the spec before we start adding it to our best PR move?

FWIW this broke Vibe.d and probably a ton of other projects and AFAIK there also wasn't a consensus on how std.allocator is supposed to deal with @nogc, e.g.

<EMAIL_ADDRESS>https://github.com/dlang/phobos/pull/5374

Experimental is what it is - there is no guarantee of stability. What was the vibe.d breakage?

Nnl mv
Ce
Отправлено с iPhone

29 мая 2017 г., в 12:40, David Nadlinger<EMAIL_ADDRESS>написал(а):
@klickverbot commented on this pull request.
In std/experimental/allocator/package.d:

+statically-typed allocator.)
+)

+*/
+shared(CSharedAllocatorImpl!A) sharedAllocatorObject(A)(auto ref A a)
+if (!isPointer!A)
+{

import std.conv : emplace;
static if (stateSize!A == 0)
{

   enum s = stateSize!(CSharedAllocatorImpl!A).divideRoundUp(ulong.sizeof);

   static __gshared ulong[s] state;

   static shared CSharedAllocatorImpl!A result;

   if (!result)

   {

       // Don't care about a few races

Let's imagine emplace was implemented as zero-everything, then initialize non-null fields. Thread A would care about the fact that thread B might nuke away the vtable under its feet. Is this micro-optimization really necessary? At the risk of sounding like a broken record: Just use initOnce, this is what it's made for.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Nnl mv
Ce

Want to run that by me again?

That's my little daughter apparently :)
NVM

29 мая 2017 г., в 18:50, Jack Stouffer<EMAIL_ADDRESS>написал(а):
Nnl mv
Ce
Want to run that by me again?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@wilzbach wasn't this also tested with jenkins or vibe.d wasn't tested at that time?

Experimental is what it is - there is no guarantee of stability.

Yes, I am aware ;-)
I was just criticizing the fact that you merged this without addressing the feedback from other reviewers.

What was the vibe.d breakage?

All occurrences of processAllocator now return a different object (ISharedAllocator). There was also an issue with nothrow, but luckily reverting your change on the Vibe.d side of things solved both problems ;-)
I am sorry that I sounded a bit off, but when I was looking at the broken master build for our Dlang-Tour, I found three Phobos PRs which were responsible for breakages. That's pretty impressive work considering that 2.074.0, which compiles fine, was released in April ;-)

@wilzbach wasn't this also tested with jenkins or vibe.d wasn't tested at that time?

Yes indeed, but the Dlang-Tour isn't tested with Jenkins, only Vibe.d and it seems to me that Jenkins doesn't run the entire test suite of Vibe.d or has even more serious issues. You can reproduce these errors by simply running dub test --compiler=$HOME/dlang/dmd/generated/linux/release/64/dmd or dub build --compiler=$HOME/dlang/dmd/generated/linux/release/64/dmd within Vibe.d's directory

@wilzbach I hear you. We'll do our best to address issues on a case basis. Overall we must make breaking changes to allocators to make them work nicely with shared, safe, and nogc. So this is not a light matter. Making code in std.experimental right is a non-negotiable priority over preserving compatibility with clients that chose to use it. Obviously, details can be worked out to maximize effectiveness.
(What feedback from reviewers did you mean? I saw (a) a question about guidelines for shared allocators, and (b) nailing down the details of shared. Neither of those block this PR.)
Anyhow, a changelog entry is needed here - cc @edi33416.
Regarding handling nogc - all feedback is taken under advisement, and we are pursuing a design that we consider viable.

(What feedback from reviewers did you mean? I saw (a) a question about guidelines for shared allocators, and (b) nailing down the details of shared. Neither of those block this PR.)

This PR misses a crucial part, unsafe usage of ISharedAllocator as IAllocator in single threaded programs.
Since you can overload on shared/non-shared I'd also say that shared(IAllocator) using void allocate() shared overloads should be evaluated instead of duplicating the number of interfaces.
Also the combinations don't work to our favor, ISharedNothrowNoGCAllocator anyone?

Also the combinations don't work to our favor, ISharedNothrowNoGCAllocator anyone?

Also applies to the questionable idea of ISafeObject.

We'll do our best to address issues on a case basis.

So basically std.experimental.allocator is completely unusable with ISharedAllocator.
And the noop ThreadAllocator that simply dismisses any shared is a good sign that starting this story by changing processAllocator was bad move. Can we please revert this until a thought-through plan is on the table?

At least for shared (other than for nothrow or @nogc) we do have overloads, so a minimum requirement would be that allocators do implement both IAllocator and ISharedAllocator when they can be safely used shared.

In fact we might even want to fix the covariance in the compiler compiler/language so that shared methods can be called on unshared objects (and shared methods be used to override/implment unshared ones).
Thread-safety would still be guarded for interface ISharedAllocator : IAllocator because shared(ISharedAllocator) is only implicitly convertible to shared(IAllocator), but not to IAllocator.
Interestingly dmd even manages to do that with diamond dependencies in interfaces while still outputting a single methods and vtbl entry.
interface IBase
{
    void foo();
}
interface INothrow : IBase
{
    void foo() nothrow;
}
interface ISafe : IBase
{
    void foo() @safe;
}
interface INothrowSafe : INothrow, ISafe
{
    void foo() nothrow @safe;
}
class Impl : INothrowSafe
{
    void foo() nothrow @safe {}
}

void test() nothrow @safe
{
    Impl impl = new Impl;
    IBase ibase = new Impl;
    INothrow inothrow = new Impl;
    ISafe isafe = new Impl;
    INothrowSafe inothrowsafe = new Impl;
    impl.foo(); // works
    //ibase.foo(); // error
    //inothrow.foo(); // error
    //isafe.foo(); // error
    inothrowsafe.foo(); // works
}

So the only hindrance for using that in std.experimental.allocator is the broken covariance support for shared methods.
I've filed Issue 17567 – make shared methods callable on unshared objects (and covariant) for the language/compiler, can we back off this change until that is resolved.
The above interface pattern might also proof useful for the SafeObject discussion, though prolly required to transition from a common base class Object to a common base interface IObject.

Can we please revert this until a thought-through plan is on the table?

I am still strongly in favor though you probably want approval from @andralex.

Anyhow, a changelog entry is needed here - cc @edi33416.

FWIW: it still doesn't have a changelog entry.

@edi33416 will start his internship soon so won't be available to put a lot of work into this, but our plans are well defined. There's no way around having an ISharedAllocator; shared is distinct and orthogonal from attributes such as safe, pure etc. Truth be told there will be more surgery on this - @klickverbot's comment and then adding safety. We shouldn't revert though.

In fact we might even want to fix the covariance in the compiler compiler/language so that shared methods can be called on unshared objects (and shared methods be used to override/implment unshared ones).

This doesn't work, see discussion in https://issues.dlang.org/show_bug.cgi?id=17567. cc @tgehr

So basically std.experimental.allocator is completely unusable with ISharedAllocator.

No, all of Mallocator, GCAllocator and SharedFreeList can be used with ISharedAllocator - i.e. amazingly exactly those that should. It's pretty neat really.

No, all of Mallocator, GCAllocator and SharedFreeList can be used with ISharedAllocator - i.e. amazingly exactly those that should. It's pretty neat really.

For the implementation it works fine, but it leaves some open questions on the client side.
For example a container can only support one interface without making the interface a template argument.
Though just IAllocator should work for most use-cases atm.