MSBuild subsequent task always uses the latest version when specific msbuild version selected

Note
Issues in this repo are for tracking bugs, feature requests and questions for the tasks in this repo
For a list:
https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks
If you have an issue or request for the Azure Pipelines service, use developer community instead:
https://developercommunity.visualstudio.com/spaces/21/index.html )
Required Information
Entering this information will route you directly to the right team and expedite traction.
Question, Bug, or Feature?
Type: here
Enter Task Name: here
list here (V# not needed):
https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks
Environment

Server - Azure Pipelines or TFS on-premises?

If using TFS on-premises, provide the version:

If using Azure Pipelines, provide the account name, team project name, build definition name/build number:

Agent - Hosted or Private:

If using Hosted agent, provide agent queue name:

If using private agent, provide the OS of the machine running the agent and the agent version:

Agent.OS: Linux
AGENT_TYPE: services-build
AZP_AGENT_NAME: gsservices-build-0
AZP_POOL: GameStreaming-Services-Build
Team name: xbox.streaming
Issue Description
I used task called ".NET Core" at the beginning of the tasks to install a specific version of .net core. In my tasks
I specified a task version 3.1.302 so that subsequent tasks will use this version. However subsequent tasks always uses the latest version when specific msbuild version selected.
Task steps:

.Net core installer step after execution

Subsequent steps always uses the latest version, instead of version 3.1.302

Task logs
2020-09-03T01:18:21.5773056Z ##[section]Starting: Restore nuget packages
2020-09-03T01:18:21.5788944Z ==============================================================================
2020-09-03T01:18:21.5789335Z Task         : .NET Core
2020-09-03T01:18:21.5789709Z Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
2020-09-03T01:18:21.5790233Z Version      : 2.174.0
2020-09-03T01:18:21.5790479Z Author       : Microsoft Corporation
2020-09-03T01:18:21.5790862Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
2020-09-03T01:18:21.5791270Z ==============================================================================
2020-09-03T01:18:22.0594383Z Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.
2020-09-03T01:18:22.0604555Z SYSTEMVSSCONNECTION exists true
2020-09-03T01:18:22.2022689Z SYSTEMVSSCONNECTION exists true
2020-09-03T01:18:22.4824028Z SYSTEMVSSCONNECTION exists true
2020-09-03T01:18:22.5133352Z [command]/workspace/_tool/dotnet/dotnet restore /workspace/69/s/IstioTestOne.sln --configfile /workspace/69/Nuget/tempNuGet_26723883.config --verbosity Detailed
2020-09-03T01:18:22.9219978Z Build started 09/03/2020 01:18:22.
2020-09-03T01:18:22.9234136Z      0>Process = "/workspace/_tool/dotnet/dotnet"
2020-09-03T01:18:22.9243595Z        MSBuild executable path = "/workspace/_tool/dotnet/sdk/3.1.401/MSBuild.dll"
2020-09-03T01:18:22.9246710Z        Command line arguments = "/workspace/_tool/dotnet/sdk/3.1.401/MSBuild.dll -maxcpucount -verbosity:m -nologo -target:Restore -property:RestoreConfigFile=/workspace/69/Nuget/tempNuGet_26723883.config -verbosity:Detailed /workspace/69/s/IstioTestOne.sln -distributedlogger:Microsoft.DotNet.Tools.MSBuild.MSBuildLogger,/workspace/_tool/dotnet/sdk/3.1.401/dotnet.dll*Microsoft.DotNet.Tools.MSBuild.MSBuildForwardingLogger,/workspace/_tool/dotnet/sdk/3.1.401/dotnet.dll"
2020-09-03T01:18:22.9248325Z        Current directory = "/workspace/69/s"
2020-09-03T01:18:22.9249232Z        MSBuild version = "16.7.0-preview-20360-03+188921e2f"
2020-09-03T01:18:23.1303545Z      1>Project "/workspace/69/s/IstioTestOne.sln" on node 1 (Restore target(s)).
2020-09-03T01:18:23.1304700Z      1>Building with tools version "Current".
2020-09-03T01:18:23.1390844Z      1>Target "ValidateSolutionConfiguration" in file "/workspace/69/s/IstioTestOne.sln.metaproj" from project "/workspace/69/s/IstioTestOne.sln" (entry point):
2020-09-03T01:18:23.1393053Z        Task "Error" skipped, due to false condition; (('$(CurrentSolutionConfigurationContents)' == '') and ('$(SkipInvalidConfigurations)' != 'true')) was evaluated as (('<SolutionConfiguration

Troubleshooting
Checkout how to troubleshoot failures and collect debug logs: https://docs.microsoft.com/en-us/vsts/build-release/actions/troubleshooting
Error logs
[Insert error from the logs here for a quick overview]

Hello @Abrishges,
This is the intended behavior of the task.  The latest .NET core SDK version is used. Look at installationPath input in the doc
There are two ways to use the older version you want:

Use global.json.
Specify a non-default value for installationPath input. You can use $(Agent.TempDirectory) or any other temp directory.

Hi @Abrishges is it still actual for you?

@anatolybolshakov  @alexander-prozorov  Thanks.  Temp directory $(Agent.TempDirectory) works. If it is intended behavior we can close this Issue


accounts: require holder name on creation

Codecov Report

Merging #122 into master will increase coverage by 0.03%.
The diff coverage is 57.14%.

@@            Coverage Diff             @@
##           master     #122      +/-   ##
==========================================
+ Coverage   62.16%   62.20%   +0.03%
==========================================
  Files          36       36
  Lines        1977     1979       +2
==========================================
+ Hits         1229     1231       +2
  Misses        529      529
  Partials      219      219


Update lodash to 4.17.20

Fixes CVE-2020-8203.

Codecov Report

Merging #4697 (c76350e) into master (0485967) will not change coverage.
The diff coverage is n/a.

@@      Coverage Diff       @@
##   master   #4697   +/-   ##
==============================
==============================

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 0485967...97ec933. Read the comment docs.

Closing as stale.


[Question]: Call Stored procedure possible

Hi,
is it actually possible to call a stored Procedureby this library?
best regards
Frank

Hi @hasenradball
Yes, if you can manually use the stored Procedure (your new command) without error and working normally in your DB, you can use it in the code.
If you're doing OK, please share your experience here.
Best Regards,

Hi,
what is the function for this?
I did‘ t saw it.

I totally misunderstood your question. It's better you'd write in German, then we can use Google Translate.
You also have to post some more detailed of your use-case or your code so that we can have better picture.
Normally, any function, supported by MySQL or MariaDB, can be used in your code.
For example, to use INSERT command
https://github.com/khoih-prog/MySQL_MariaDB_Generic/blob/e479474f013b1162c1fd7283928d099ec5030617/examples/Ethernet/Complex_Insert/Complex_Insert.ino#L93

Hallo,
kein Problem, ich schreibe in Deutsch.
Ich wollte folgendes fragen.
Kann die Library eine in der Datenbank vorhandene „ stored procedure“ ausführen?
Damit meine ich keine SQL Statements wie select oder insert, sondern den Aufruf eine in der Datenbank gespeicherte Procedure.
Es ist effizienter eine Insert routine als stored procedure in der Datenbank anzulegen und diese von außen als Funktion mit Parametern aufzurufen.

Using Google Translate. Please check and modify if not accurate

Hello,
no problem, I write in German.
I wanted to ask the following.
Can the library execute a "stored procedure" in the database?
By that I don't mean SQL statements like select or insert, but calling a procedure stored in the database.
It is more efficient to create an insert routine as a stored procedure in the database and call it from the outside as a function with parameters.

The best thing is to try to manually implement it first, with the DB. After testing and OK, I think you can duplicate the stored procedure in your code.
This library is dumb, and just passes any command you have in your code to the DB. Nothing more.

Hi again,
I have a stored procedure in the DB, but I want just call it , not duplicate it in the code!
😉

Hi,
I am sorry it should work as you set just call it like:
// call Procedure: => CALL `your_procedure`(MRT, zeit, MGR1, MGR2, MGR3, MGR4);
snprintf(SqlStr, SQL_LEN, "CALL `procedure`('%d', '%s', '%5.2f', '%5.2f', '%5.2f', '%5.2f')", value1, value2, value3, value4, value5, value6;

I will try it 👍

Hi,
works perfect see the result:

Hi @hasenradball
Marvellous. If possible, could you please write an example, as an PR, to contribute as a contributor and to benefit other users.
If not familiar with creating PR, just post here and I'll update the library.
Best Regards,

Hi @khoih-prog,
I will test it today and can then mak a short example.
I am not sure If you had adapt it, because I had a local version of your lib.
I stripped it down only to work with ESP8266 and ESP32.
We can discuss if I had the example :-)

Hi,
no problem I will help you, but Iam a little bit running out of time before my holiday.
The change is very simple.

write a stored procedure in you DB
test the stored procedure in the DB
the just adapt the typical SQL_INSERT String --> to "Call your_strored_procedure ....

here you will find the stored procedure "addState" in MarianDB:

The table "Switch_State" looks like:

The just adapt the String INSERT_SQL to:
// Query itself
  // Sample query
  // e.g.: => Call addState(time, state);
  String INSERT_SQL =
    String("Call `addState`(" + String(time) + ", " + state + ");" );
  DBG__PRINT(INSERT_SQL);

My Function looks like:
void MariaDB_addState(time_t time, bool state) {
  // Wifi Client for Connection to IP
  WiFiClient client;

  // create a connector
  MySQL_Connection conn(&client);

  // create a Query class instance
  MySQL_Query query_mem = MySQL_Query(&conn);

  // Query itself
  // Sample query
  // e.g.: => Call addState(time, state);
  String INSERT_SQL =
    String("Call `addState`(" + String(time) + ", " + state + ");" );
  DBG__PRINT(INSERT_SQL);

  Wifi wlan{SSID, PASSWORD};
  if (wlan.Wifi_Connect()) {
    DBG__PRINT("WLAN established!");
    if (conn.connect(DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE)) {
      DBG__PRINT("DB Connected!");
      if (!query_mem.execute(INSERT_SQL.c_str())) {
        DBG__PRINT("ERROR: INSERT failed!");
      }
      else {
        DBG__PRINT("INFO: INSERT successful!");
      }
      DBG__PRINT("INFO: close connector...");
    }
    else {
      DBG__PRINT("ERROR: DB Connection failed!");
    }
  }
  conn.close();
  client.stop();
}

That`s it.
Can you deal with it?
If not we can disscuss in two weeks. :-)
PS: you see it works fine

Hi @hasenradball
I think this issue has enough details for anyone would like to start using Stored Procedures.
Therefore, I won't spend time to write an example and instructions.
Thanks and Regards,


Vsync does not work while using PRIME Render offloading optimus NVIDIA GPU

This issue seems to only affect DXVK/D9VK. Every other non DXVK game that I have tried, including native Vulkan Vsync works. I can provide logs and screenshots if necessary.

If vsync doesn't work, it's a driver issue, plain and simple. There's nothing more I can do than use VK_PRESENT_MODE_FIFO, and DXVK does that.

well, no point in leaving this open then.


[Event] Make http adapter immutable

All is in the title. It fixes #81.

Actually I am thinking about if mutability makes sense in subscribers and model objects (like BasicAuth).

Can you please reopen an issue in order to not forget it in a closed issue? :)


Update PirepService.php

Implemented Set PirepState to Rejected case (ex: scenario where a pirep is autoreject, not was sending rejected email)
P.S: Thanks to Dispo HERO, for his infinite help.

Is this still valid? Sorry, just looking at it right now

To be honest, I remember we talked about it on Discord, but I absolutely don’t remember the solution we decided on, whether it was to keep the event or use the reject method

Yeah, we still need to trigger the event (@arthurpar06 fixed other parts as far as I remember like increasing counts etc.)
Again as far as I remember that event is not triggered anywhere else.
I can check the function updated by Arthur when I return home if you need.

Yes, if I remember correctly, we need to add something here, but I can't recall if we just wanted to send the PirepRejected event or if we should call the reject method from the PirepService to properly handle the rejection

It's better to call the reject method so there's no lapses in logic

Yes, it the reject method fires the event then it will be better. If not we can update it to do it 😉

The reject method does fire the event, so calling it should produce the expected behavior. It might be a good idea to merge #1853 before this one, so we can address the issue in the reject method before using it elsewhere.


AnnotationDB creation

Description of feature
Add creation of annotation database that can be used with Clusterprofiler and other R tools for GSEA,ORA etc

@jasonshiller - we already have genepal-2-sqlite DB with all existing genepal annotation except orthofinder but Leo has AnnoDB with orthofinder. So are you wanting something new or a combination of mine and Leo's DBs as currently they overlap but are not identical in what they cover as use cases were different

@rosscrowhurst this would be like the ones Leo and myself make for RNA-seq projects with https://github.com/Bioconductor/AnnotationForge . Containing basically the gene IDS and their associated GO terms and KEGG pathways from eggnog.


lamma3 8B and 70B gguf support? Can support function calling?

Is your feature request related to a problem? Please describe.

I need a better llm to process chat completion.
Describe the solution you'd like

Make llama3 in localai. and support function calling
Here's the gguf format:
https://huggingface.co/lmstudio-community/Meta-Llama-3-70B-Instruct-GGUF
https://huggingface.co/lmstudio-community/Meta-Llama-3-8B-Instruct-GGUF
Describe alternatives you've considered

assistant file support.
Additional context

did you try https://github.com/mudler/LocalAI/discussions/2076#discussioncomment-9171359 ?


Find Position of the only set bit

💥 Proposal
I would like to add C++ program for finding position of the only set bit in a binary number and if there are more than 1 set bits it will return -1
Have you read the Contributing Guidelines on Pull Requests?
Yes

/assign


Correct schema VersionSimpleType enumeration restriction to match the…

Relates to #18
The Schema has a self check enumeration restriction. This was not updated with the new release of the schema.

Closing in favour of better solution


Modify build_ogc_app.py to break process into independent steps that can be run independently

Modify build_ogs_app.py to have a command line interface similar to Git or Docker where subcommands are run from a directory  and can be independently called. This would better fit with the CI/CD process and make the program usable manually without requiring all steps be run.

Implemented at 1b9749216a4230e30f5109b87fffe22c6404f05d

Example usage:
tmp_dir=/tmp/app_gen_test

rm -rf $tmp_dir

build_ogc_app.py init \
    git@github.com:unity-sds/unity-example-application.git $tmp_dir

cd $tmp_dir
build_ogc_app.py build_docker
build_ogc_app.py push_docker quay-development-alb-656354332.us-west-2.elb.amazonaws.com:8000/mcduffie
build_ogc_app.py build_cwl


[fix] Empty Chat Messages

This is something that has been bothering me for a while...
Disables the submit button on the Chat form, when no message is present.
Also, removed the data- prefix from the various Chat view elements.

LGTM

Thanks guys

@lirantal No problem. Thanks for merging. It's the baby-commits.. kind of like baby steps :)

Baby commits are easier to code review so I'm always up for them :)


Support the NOT operation for auditing

we need to support the NOT operation in the policy specification.
For example, we want to see any operations in the /var/lib/mysql directory except for the ones triggered by /usr/bin/mysql.
apiVersion: security.accuknox.com/v1
kind: KubeArmorPolicy
metadata:
  name: ksp-mysql-dir-audit
  namespace: wordpress-mysql
spec:  severity: 5
  selector:
    matchLabels:
      app: MySQL
  file:
    matchDirectories:
    - dir: /var/lib/mysql/
      recursive: true
      notFromSource:
      - path: /usr/bin/mysql
  action:
    Audit

As another example, we want to see any file accesses in the /test directory except for /test/common and /test/temp/*.
apiVersion: security.accuknox.com/v1
kind: KubeArmorPolicy
metadata:
  name: ksp-test-dir-audit
  namespace: wordpress-mysql
spec:  severity: 5
  selector:
    matchLabels:
      app: MySQL
  file:
    matchDirectories:
    - dir: /test/
      recursive: true
      except:
      - path: /test/common
      - dir: /test/temp/
         recursive: true
  action:
    Audit

It will be supported by the event auditor.


document websocket support in the relay server

I'd like to discuss the semantics of having multiple protocols towards one relay server. What is the intended feature negotiation once both sides have exchanged their abilities? Usually, I'd say both sides have to agree on each (i.e. take the intersection of both sets), but with web sockets this needs not to be so: two clients could connect through a relay, one with web sockets and one over TCP. (Corollary: do both sides actually need to use TOR in order to use TOR or is only one side sufficient if additionally a relay is used? I don't know how TOR works internally at all.)

@piegamesde I can't speak to tor because I too am not well-read on tor. Additionally, wormhole-william, which we're using for the current project, hasn't implemented tor support yet.
I'm not aware of any reason that the relay wouldn't be able to speak a different protocol on each leg. @meejah implemented the transit relay side of the change so perhaps he has more concrete details here.
The original motivation for us to add a WebSocket as a transport option was to support a web environment. In this context, use of Websocket transport implies use of the relay (as browsers can't listen for incoming connections*).  In a scenario between clients which both support TCP and WebSocket transport, the relay is not necessarily a given; thus, I think the following would apply from the transit spec:

To tolerate the inevitable race conditions created by multiple contending sockets, only the Sender gets to decide which one wins: the first one to make it past negotiation. Hopefully this is correlated with the fastest connection pathway. The protocol ignores any socket that is not somewhat affiliated with the matching Transit instance.

@piegamesde in a scenario where both peer clients support multiple transports and the relay is used, I think it makes sense for the client to only connect to the relay with one transport at a time.
Good observation!

I don't really know how to move this forward. I also kind of depends on how willing we are to make big breaking changes to the relay protocol. The simplest solution I can see is to add the client side in the relay handshake:
please relay $token for $side\n
That way the relay will know if two connection attempts stem from the same entity and can safely ignore the all except the first one. Note that this is not 100% backwards compatible on the Relay side, but at the moment there is only one and it is in our control so I don't feel that bad about it.
While it solves the problem with the race hazard, it still does not resolve the other problems I see with the current abilities merging: In theory, an application supporting only websockets can communicate with an application supporting only TCP just fine, provided that the relay supports both. But there isn't really a way to tell whether a relay does, so it may just horribly fail.

The relay server already uses please relay X for side Y (although it still works if you use please relay X .. because that's the original protocol).

For Tor (which is not an acronym so they prefer "Tor" over "TOR"): with client-to-server situations, a Tor connection can be thought of as just a normal TCP connection except that the server doesn't know where the original client is on the internet. So, either client can use Tor to connect to the relay server (for example) independently of each other.
An even better way to use Tor would be for one side to set up an Onion service and advertise it to the other. An Onion service is a Tor way to be a server. Clients of such a server have to use Tor. In this setup, the relay server would not be needed but there also won't be any NAT issues because all connections to the Tor network are "outgoing" (including for Onion services). (We don't yet support this mode though).

The current relay implementation can handle either TCP or WebSockets on either side (so can relay WS-to-WS or TCP-to-WS on either leg).

Thank you for the input. In that case I suggest the following changes to the protocol:

Document the please relay X for side Y and what this means for relay servers
Document that self-loops may happen when not specifying the side
Keep the abilities set to direct-tcp-v1 and relay-v1 (do we need to bump the version here?). I thought about having more flags and only sending relay URLs to the peer that they'd support. But then I figured that input sanitation will needed to be done anyways, so I don't see the point in doing this. Maybe reserve tor-hidden-v1 for "I am able to spin up a hidden service" or something.

I think all that sounds good @piegamesde .. it might be that we can side-step the "loops" problem: any client new enough to support WebSockets should also support the for side Y part of the handshake. And I think the only case where a loop might happen is when a client is using TCP plus some other kind (right?).
That said, we should probably still document the issue (and that new clients should always use the for side variant).

And I think the only case where a loop might happen is when a client is using TCP plus some other kind (right?).

That's the obvious case, but no. It may end up happening whenever a client has two entries with different content to the same server. Yes, I don't expect this to ever happen, but I still think it should be documented that it might happen as it clearly is not impossible.

we could enforce this by insisting that WebSocket clients can only use the please relay X for side Y handshake...

It'd only partially help, but it's a good idea nevertheless.

The relay server already uses please relay X for side Y (although it still works if you use please relay X .. because that's the original protocol).

I went looking for this in the spec because I thought i recalled something about "for side ..." being a thing but didn't see it. Was this a change that just didn't get documented?

@bryanchriswhite maybe? That handshake was already in there when I implemented WebSocket support ...

It was already there when @vu3rdd implemented transit in the Rust port a few years ago. But I've bisected the original commit with that change, it's from the end of 2016 and it contains no further motivation: https://github.com/magic-wormhole/magic-wormhole/commit/e1546bf03fc404ecdb6543f57835ec77a609c247

Coming back to this again, this time with from the perspective of adding UDT transport (personal experiments) and advertising relay servers in the welcome message. Some random thoughts:

Clarify the relay handshake as discussed above
The abilities exchange should be a separate step from the hints exchange, because the hints require some setup based on the peer's abilities. The spec already kind of mentions this, but it should be made more clear. This won't help us right now since there is no way to change the transfer protocol to respect this, but an eventual transfer v2 will have to correct that mistake.
Relay servers (and thus, relay hints) are advertised with all supported protocols, independently of the other abilities (if the relay supports tor, include its onion address for example). The hints are bound to the server so that only one connection needs to be made per server. Hints can be as simple as an encoded list of URIs, where the schema determines the protocol.
The tricky bit is to update the current transfer protocol to work with this. I suggest adding a new relay-v2 ability and deprecate the old.

Older clients ignore the relay-v2 hint
Newer clients must send a relay-v1 hint alongside the v2 that includes the encodable subset of the information (notably, the server's TCP address if present).
Newer clients ignore the v1 hint if a v2 hint is present
If abilities are sent separately from hints (sadly not our case right now), and both clients signal a relay-v2 ability, then the v1 compat may be skipped.

General protocol clarification: clients MUST support relay servers, and they SHOULD send that ability. The only acceptable exception is when a direct connection attempt is being enforced. On the other hand, clients don't need to support any direct connections, relying solely on the relay. Clients that wish to hide their IP address SHOULD NOT use direct-* hints.

If you want and find this proposal acceptable, I can draft a PR containing the spec clarifications.

At the moment, only the first mentioned use case is actually implemented by clients. Use case two is covered by the tor-tcp-v1 hint, and thus is out of scope of this discussion. Use case three is redundant to the other two in my opinion, but my guess at specifying this would be to add a tor-relay-v1 ability & hints. (Actually, this is almost exactly the same thing as the second, except that the clients first do a relay handshake upon connecting.)


fix returned error message and log it properly

Closes #723
This PR is fixing incorrect order of success and failure messages issue described in the issue #723
Screenshots to the fix:
From daemon side:

From webclient side:

Looks good you can merge :)


Can't run runbot.bat

Whenever I double click runbot.bat, it opens up the Python 3.5.1 (64bit) Setup and has me modify, repair, or uninstall Python. Not sure why this is happening, but it happens for all my BAT files. Another thing I noticed is that for others, the symbol on their bat files is a gear, while mine is the python icon.

The .bat extension should be linked to a command prompt, not directly to Python.
Change the default program for .bat to cmd.exe, or run the file within the cmd (command prompt) program.


Enhancement: Allow filling multiple attributes with different values in AttributeBehavior

It would be good to enable filling multiple model attributes with different values in AttributeBehavior. When AttributeBehavior is used with multiple attributes as in
public function behaviors()
{
    return [
        [
            'class' => AttributeBehavior::className(),
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => ['attribute1', 'attribute2'],
                ActiveRecord::EVENT_BEFORE_UPDATE => ['attribute1', 'attribute2'],
            ],
            'value' => function ($event) {
                return 'some value';
            },
        ],
    ];
}

it is more likely that attribute1 and attribute2 need to be assigned different values than the same one, otherwise they would be replaced by a single column in the database. A work around would be using multiple behaviors but it's not always a good idea.

I feel the natural Yii syntax would be:
   'attributes' => [
       ActiveRecord::EVENT_BEFORE_INSERT => [
            'attribute1' => function($event) { return 42; },
            'attribute2'
   ],

Note that currently AttributeBehavior ignores the attribute if it is not a string:

// ignore attribute names which are not string (e.g. when set by TimestampBehavior::updatedAtAttribute)

As far as I can tell TimestampBehavior also does not set string keys, so it should be safe to use string keys to check if it is a attribute => value pair vs an attribute name.
I see no BC issues.

@SamMousa the drawback of your syntax is that you'll run a different function for each attribute. If there's shared functionality like retrieving records from the database and performing calculations on them (e.g. looping and calculating total value for attribute1 and count for attribute2), you'll either need to execute the shared part once for each attribute or resolve to a complicated implementation.
Using the array format ActiveRecord::EVENT_BEFORE_INSERT => ['attribute1', 'attribute2'] with a single function whose return could be assigned as a different value to each attribute would be a more generic solution.

We could pass the result of the generic value function to the closure.
That seems clean and flexible to me.
On Thu, Oct 15, 2015, 12:48 Yasser Hassan<EMAIL_ADDRESS>wrote:

@SamMousa https://github.com/SamMousa the drawback of your syntax is
that you'll run a different function for each attribute. If there's shared
functionality like retrieving records from the database and performing
calculations on them (e.g. looping and calculating total value for
attribute1 and count for attribute2), you'll either need to execute the
shared part once for each attribute or resolve to a complicated
implementation.
Using the array format ActiveRecord::EVENT_BEFORE_INSERT =>
['attribute1', 'attribute2'] with a single function whose return could be
assigned as a different value to each attribute would be a more generic
solution.
—
Reply to this email directly or view it on GitHub
https://github.com/yiisoft/yii2/issues/9921#issuecomment-148349352.

Side note: the closure is defined per model instance so you could even utilize a static variable inside the Closure

Passing a result of a generic function would require a generic function at the first place, besides we'd lose the benefit of a single loop in my example above. I agree static variable are a way but I believe this will complicate things as we'll need to think how both functions will work together and which will come first, or check if that variable is set to set it using an external functional. In my opinion things could be done in a simpler and more maintainable way by using a single function/closure.
I'm sure we'll reach the best way to do it but before all we need to know whether this suggestion will gain acceptance or not.

Passing a result of a generic function would require a generic function at the first place

I did not say "a" generic function, but the, because it already exists.
Look at the value key in your original post. That is the generic value function, the individual attributes can than take that result as closure argument and use it if they want.

Can you add two behaviors with the 'AttributeBehavior' class? Like that:
    public function behaviors()
    {
        return [
            'attr_one' => [
                'class' => AttributeBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_VALIDATE => 'attr_one',
                ],
                'value' => function ($event) {
                    return YOUR VALUE;
                },
            ],
            'attr_two' => [
                'class' => AttributeBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_VALIDATE => 'attr_two',
                ],
                'value' => function ($event) {
                    return YOUR VALUE;
                },
            ],
        ];
    }

Usualdesigner, yes you can as mentioned in the original post; it is not ideal though.

I think the issue has been described clearly, lets wait for a team member to point us in a direction for a solution (if any).

I'm for keeping it simple i.e. going with @usualdesigner way of dealing with it.


Allow to run all speed test when async_jobs is active

... the whole without any interruption.
Currently openssl speed -async_jobs 2
stop on first cipher test that does not supporting the async mode !
Seen while testing #1464

+1

commit 167879bf558e8caf5137d67eb14a8c6b536b4cd1.  thanks!


Test error handling on signature verification

As an extension of fediverse-devnet/feditest-tests-fediverse#10, test that a POST to a user or instance endpoint (though I believe the latter is not required) fails with a 4xx error if the signature header is not provided or does not verify correctly

This assumes that the handler processes the request synchronously, and doesn't just simply put it into a queue for later processing. I have no feel for which percentage of fediverse applications today might do that.


Update README.md

New Bootstrap have .woff2 fonts

Is it really minetype?

ok, I added proper mime-type to .woff2

this caught me as well!

(this is still an issue +1)


Passing elasticsearch password with special characters through environment variable

Hi,
I'm deploying this exporter in kubernetes with helm, and I'm setting this values.yaml to pass the elasticsearch credentials stored in a kubernetes secret.
env:
  ES_URI: "https://$(ES_USERNAME):$(ES_PASSWORD)@elasticsearch-master:9200"

extraEnvSecrets:
  ES_PASSWORD:
    secret: elasticsearch-security-master-credentials
    key: password
  ES_USERNAME:
    secret: elasticsearch-security-master-credentials
    key: username

This works great with alphanumeric elasticsearch password, but when they have special characters, which is my case, I get this error:
level=error caller=main.go:122 msg="failed to parse es.uri" err="parse \"https://elasticuser:XXXXXXXXXXq@elasticsearch-master:9200 \": invalid URL escape \"%8#\""

I can't find a way to url encode the password in this scenario. I don't think that the password should be stored url encoded in the secret, since it could be an issue for other pods using this secret. Any ideas?

When setting the credentials via environment variable, you do not need to have it in the ES_URI environment variable. The exporter will automatically add it to the URL. I think that will resolve your issue.


Uncaught Error: This TextEditor has been destroyed

[Enter steps to reproduce below:]

...
...

Atom Version: 1.8.0
System: Mac OS X 10.11.5
Thrown From: elm-format package, v1.2.1
Stack Trace
Uncaught Error: This TextEditor has been destroyed
At /Applications/Atom.app/Contents/Resources/app.asar/src/pane.js:1002

Error: This TextEditor has been destroyed
    at DisplayBuffer.module.exports.DisplayBuffer.screenPositionForBufferPosition (/Applications/Atom.app/Contents/Resources/app.asar/src/display-buffer.js:794:15)
    at TextEditorMarker.module.exports.TextEditorMarker.getHeadScreenPosition (/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor-marker.js:179:33)
    at Cursor.module.exports.Cursor.getScreenPosition (/Applications/Atom.app/Contents/Resources/app.asar/src/cursor.js:73:26)
    at TextEditor.module.exports.TextEditor.getCursorScreenPosition (/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor.js:1544:35)
    at Object.format (/Users/maneumann/.atom/packages/elm-format/lib/elm-format.js:99:33)
    at /Users/maneumann/.atom/packages/elm-format/lib/elm-format.js:49:25
    at Object.debounce (/Users/maneumann/.atom/packages/elm-format/lib/elm-format.js:57:7)
    at /Users/maneumann/.atom/packages/elm-format/lib/elm-format.js:48:16
    at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at TextBuffer.module.exports.TextBuffer.saveAs (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1113:27)
    at TextBuffer.module.exports.TextBuffer.save (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1083:19)
    at TextEditor.module.exports.TextEditor.save (/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor.js:660:26)
    at Pane.module.exports.Pane.saveItem (/Applications/Atom.app/Contents/Resources/app.asar/src/pane.js:718:18)
    at Pane.module.exports.Pane.saveActiveItem (/Applications/Atom.app/Contents/Resources/app.asar/src/pane.js:701:19)
    at Workspace.module.exports.Workspace.saveActivePaneItem (/Applications/Atom.app/Contents/Resources/app.asar/src/workspace.js:684:35)
    at atom-workspace.commandRegistry.add.core:save (/Applications/Atom.app/Contents/Resources/app.asar/src/register-default-commands.js:214:32)
    at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (/Applications/Atom.app/Contents/Resources/app.asar/src/command-registry.js:260:29)
    at /Applications/Atom.app/Contents/Resources/app.asar/src/command-registry.js:3:61
    at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/atom-keymap/lib/keymap-manager.js:580:16)
    at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/atom-keymap/lib/keymap-manager.js:388:22)
    at WindowEventHandler.module.exports.WindowEventHandler.handleDocumentKeyEvent (/Applications/Atom.app/Contents/Resources/app.asar/src/window-event-handler.js:98:36)
    at HTMLDocument.<anonymous> (/Applications/Atom.app/Contents/Resources/app.asar/src/window-event-handler.js:3:61)

Commands
     -1:43.8.0 editor:newline (atom-text-editor.editor.is-focused)
     -1:32.9.0 core:move-right (atom-text-editor.editor.is-focused)
  2x -1:32.4.0 editor:newline (atom-text-editor.editor.is-focused)
     -1:18 core:move-down (atom-text-editor.editor.is-focused.autocomplete-active)
     -1:17.6.0 autocomplete-plus:confirm (atom-text-editor.editor.is-focused.autocomplete-active)
  2x -0:58.8.0 editor:newline (atom-text-editor.editor.is-focused)
  2x -0:55.8.0 core:move-left (atom-text-editor.editor.is-focused)
     -0:40.5.0 core:backspace (atom-text-editor.editor.is-focused)
     -0:40.2.0 snippets:next-tab-stop (atom-text-editor.editor.is-focused)
     -0:40.2.0 snippets:expand (atom-text-editor.editor.is-focused)
     -0:40.2.0 editor:indent (atom-text-editor.editor.is-focused)
  2x -0:39.6.0 core:backspace (atom-text-editor.editor.is-focused)
     -0:34.2.0 editor:newline (atom-text-editor.editor.is-focused)
     -0:30 core:save (atom-text-editor.editor.is-focused)
  2x -0:02.6.0 core:backspace (atom-text-editor.editor.is-focused)
     -0:00.8.0 core:save (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "disabledPackages": [
      "asciidoc-preview"
    ],
    "themes": [
      "atom-dark-ui",
      "atom-dark-syntax"
    ]
  },
  "elm-format": {
    "binary": "/Users/maneumann/bin/elm-format",
    "formatOnSave": true
  }
}

Installed Packages
# User
atom-beautify, v0.29.7
autoclose-html, v0.23.0
autocomplete-html, v0.7.2
elm-format, v1.2.1
ide-haskell-cabal, v1.4.0
language-apache, v1.5.0
language-elm, v1.5.0
language-gradle, v0.0.3
language-groovy, v0.6.0
language-haskell, v1.7.16
language-kotlin, v0.4.0
language-scala, v1.1.6
linter, v1.11.4
linter-elm-make, v0.7.0

# Dev
No dev packages

Fixed in #11

Had it happen just now, and Atom is showing no package updates for atom-elm-format.  Either this issue is still occurring or the fix has not been pushed out yet?

What version are you running?
On Wed, Jul 20, 2016 at 11:24 PM, OvermindDL1<EMAIL_ADDRESS>wrote:

Had it happen just now, and Atom is showing no package updates for
atom-elm-format. Either this issue is still occurring or the fix has not
been pushed out yet?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/triforkse/atom-elm-format/issues/8#issuecomment-234087894,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAaTGCYCHE16QumuCcBhghU0iac3U1fjks5qXpIOgaJpZM4Iv997
.

$ cat ~/.atom/packages/elm-format/package.json
{
  "name": "elm-format",
  "main": "./lib/elm-format",
  "version": "2.0.1",
  "scripts": {
    "lint": "eslint .",
    "watch": "ucompiler watch",
    "compile": "ucompiler go"
  },
  "pre-commit": [
    "lint",
    "compile"
  ],
  "description": "Run elm-format in Atom",
  "keywords": [
    "elm",
    "format",
    "elm-format"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/triforkse/atom-elm-format.git"
  },
  "license": "MIT",
  "engines": {
    "atom": ">=1.0.0 <2.0.0"
  },
  "dependencies": {},
  "devDependencies": {
    "babel-eslint": "^6.0.2",
    "babel-preset-steelbrain": "^2.0.1",
    "eslint": "^3.0.0",
    "eslint-config-airbnb-base": "^3.0.1",
    "eslint-plugin-import": "^1.10.0",
    "pre-commit": "^1.1.2",
    "ucompiler": "^3.1.8",
    "ucompiler-plugin-babel": "^3.1.1"
  },
  "readme": "# elm-format\n\nRuns `elm-format` on save or manually\n\nGet `elm-format` at https://github.com/avh4/elm-format\n",
  "readmeFilename": "README.md",
  "bugs": {
    "url": "https://github.com/triforkse/atom-elm-format/issues"
  },
  "homepage": "https://github.com/triforkse/atom-elm-format#readme",
  "_id"<EMAIL_ADDRESS>  "_shasum": "3e7a4078bc92afe28e002ee6af512b34cf65fbf9",
  "_resolved": "file:..\\d-116614-15452-18lo3ni\\package.tgz",
  "_from": "..\\d-116614-15452-18lo3ni\\package.tgz",
  "_atomModuleCache": {
    "version": 1,
    "dependencies": [],
    "extensions": {
      ".js": [
        "lib\\elm-format.js",
        "lib\\settings.js",
        "src\\elm-format.js",
        "src\\settings.js"
      ],
      ".json": [
        "package.json"
      ]
    },
    "folders": []
  }
}

And for note, it has happened a few more times as well.

Still happening, found a few things about it to note.

I save an elm file
Elm-Format instead of popping up its one popup (over my tabs, which is annoying I do say since I cannot see or click through it) pops up endless tabs, as I close them it keeps opening more.
If I look in my process list I see that Atom is spawning hundreds upon hundred of elm-format processes, keeps building and building and building until memory is gone if I let it.
Closing the tab with the elm file stops the endless spawning (interestingly if that same file is opened in another tab in the same atom, say for dynamic views, that other one does not cause an issue).
Waiting until all the processes close and the computer returns to normal speed
Saving an elm file after this point causes the below:

Atom Version: 1.8.0
System: Microsoft Windows 10 Pro
Thrown From: elm-format package, v2.0.1
Stack Trace
Uncaught Error: This TextEditor has been destroyed
At C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\pane.js:1002

Error: This TextEditor has been destroyed
    at DisplayBuffer.module.exports.DisplayBuffer.screenPositionForBufferPosition (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\display-buffer.js:794:15)
    at TextEditorMarker.module.exports.TextEditorMarker.getHeadScreenPosition (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\text-editor-marker.js:179:33)
    at Cursor.module.exports.Cursor.getScreenPosition (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\cursor.js:73:26)
    at TextEditor.module.exports.TextEditor.getCursorScreenPosition (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\text-editor.js:1544:35)
    at Object.format (C:\Users\<username>\.atom\packages\elm-format\lib\elm-format.js:99:33)
    at C:\Users\<username>\.atom\packages\elm-format\lib\elm-format.js:49:25
    at Object.debounce (C:\Users\<username>\.atom\packages\elm-format\lib\elm-format.js:57:7)
    at C:\Users\<username>\.atom\packages\elm-format\lib\elm-format.js:48:16
    at Function.module.exports.Emitter.simpleDispatch (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:125:28)
    at TextBuffer.module.exports.TextBuffer.saveAs (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1113:27)
    at TextBuffer.module.exports.TextBuffer.save (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1083:19)
    at TextEditor.module.exports.TextEditor.save (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\text-editor.js:660:26)
    at Pane.module.exports.Pane.saveItem (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\pane.js:718:18)
    at Pane.module.exports.Pane.saveActiveItem (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\pane.js:701:19)
    at Workspace.module.exports.Workspace.saveActivePaneItem (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\workspace.js:684:35)
    at atom-workspace.commandRegistry.add.core:save (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\register-default-commands.js:214:32)
    at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\command-registry.js:260:29)
    at C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\command-registry.js:3:61
    at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\atom-keymap\lib\keymap-manager.js:580:16)
    at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\node_modules\atom-keymap\lib\keymap-manager.js:388:22)
    at WindowEventHandler.module.exports.WindowEventHandler.handleDocumentKeyEvent (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\window-event-handler.js:98:36)
    at HTMLDocument.<anonymous> (C:\Users\<username>\AppData\Local\atom\app-1.8.0\resources\app.asar\src\window-event-handler.js:3:61)

Commands
     -4:01.6.0 editor:move-to-beginning-of-word (atom-text-editor.editor.is-focused)
  3x -4:01.1.0 core:move-left (atom-text-editor.editor.is-focused)
     -4:00.4.0 core:move-right (atom-text-editor.editor.is-focused)
     -4:00.1.0 editor:select-to-beginning-of-word (atom-text-editor.editor.is-focused)
  6x -3:01.4.0 blur (atom-text-editor.editor.is-focused)
  2x -1:24.9.0 linter:lint (atom-text-editor.editor)
  2x -1:24.9.0 blur (atom-text-editor.editor)
     -1:23.8.0 editor:newline (atom-text-editor.editor.is-focused)
     -1:14.5.0 editor:delete-to-beginning-of-word (atom-text-editor.editor.is-focused)
     -1:10.9.0 core:save (atom-text-editor.editor.is-focused.autocomplete-active)
 19x -1:09.0 blur (atom-text-editor.editor.is-focused)
     -0:43.6.0 core:confirm (atom-text-editor.editor.mini.is-focused)
  6x -0:35.6.0 blur (atom-text-editor.editor.mini.is-focused)
  2x -0:03.7.0 linter:lint (atom-text-editor.editor)
  3x -0:03.6.0 blur (atom-text-editor.editor)
     -0:03.2.0 core:save (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "autoHideMenuBar": true,
    "disabledPackages": [
      "autocomplete-go",
      "atom-powersnap",
      "activate-power-mode-delete",
      "autocomplete-dcd",
      "elm",
      "autocomplete-en-en",
      "spell-check",
      "latex-completions",
      "erlang-build"
    ],
    "projectHome": "C:\\Users\\<username>\\Projects",
    "themes": [
      "atom-dark-ui",
      "solarized-dark-syntax"
    ]
  },
  "elm-format": {
    "binary": "C:\\Program Files (x86)\\Elm Platform\\elm-format-0.17-0.4.0-alpha-win-x64\\elm-format.exe",
    "showNotifications": true
  }
}

Installed Packages
# User
activate-power-mode, v0.7.0
ascii-codes, v0.3.3
ascii-hex, v0.2.0
atom-autocomplete-erlang, v0.6.19
atom-beautify, v0.29.10
atom-elixir, v0.2.1
atom-formatter-jsbeautify, v1.1.2
atom-svg-icon-snippets, v0.3.3
atomic-chrome, v0.3.0
autocomplete-asciidoc, v0.1.1
autocomplete-awk, v0.1.2
autocomplete-cmake, v0.3.1
autocomplete-elixir, v1.5.14
autocomplete-emojis, v2.5.0
autocomplete-erlang, v1.1.2
autocomplete-fortran, v0.9.1
autocomplete-gdscript, v0.4.0
autocomplete-glsl, v0.2.3
autocomplete-html-entities, v0.1.0
autocomplete-js-import, v1.0.1
autocomplete-json, v5.1.0
autocomplete-mathjax, v0.1.1
autocomplete-modules, v1.5.2
autocomplete-oracle, v0.4.0
autocomplete-php, v0.3.7
autocomplete-python, v1.8.2
autocomplete-xml, v0.8.3
build-elixir, v0.6.0
build-powershell, v0.3.4
character-table, v0.4.3
clipboard-plus, v0.5.1
data-atom, v0.21.0
elixir-cmd, v0.2.9
elm-format, v2.0.1
elm-snippets, v0.1.0
emmet, v2.4.3
emoji-code, v0.3.1
erlang-autocompile, v0.1.1
es-identifier-highlight, v0.2.11
filesize, v0.4.2
fill-line, v1.0.0
fold-functions, v0.4.3
font-awesome-snippetset, v0.0.6
fonts, v1.6.0
git-checkout, v0.3.2
git-commit, v1.5.2
git-diff-details, v1.3.0
git-log, v0.4.1
go-config, v1.2.1
go-get, v1.0.3
hex, v0.6.2
highlight-bad-chars, v1.0.5
html-entitize, v1.1.0
language-asn1, v0.3.0
language-batchfile, v0.4.0
language-csv, v1.1.2
language-elixir, v0.14.0
language-elm, v1.5.0
language-elmx, v1.2.6
language-erlang, v3.0.0
language-javascript-jsx, v0.3.7
language-oracle, v1.4.1
language-pgsql, v0.2.3
language-powershell, v2.1.1
language-story, v1.2.0
language-svg, v0.9.0
linter, v1.11.14
linter-checkbashisms, v0.1.5
linter-elixir-credo, v1.1.0
linter-elm-make, v0.12.2
linter-erlang, v0.3.1
linter-erlang-dialyzer, v0.0.1
minimap, v4.24.7
minimap-bookmarks, v0.3.1
minimap-codeglance, v0.4.5
minimap-cursorline, v0.2.0
minimap-git-diff, v4.3.1
minimap-highlight-selected, v4.4.0
minimap-linter, v1.1.1
minimap-pigments, v0.2.1
minimap-selection, v4.4.0
open-no-binaries, v0.1.1
phoenix-elixir-snippets, v0.4.0
pigments, v0.31.2
project-colorize, v0.2.0
qolor, v0.2.2
react, v0.15.0
resize-indent, v0.3.0
svg-preview, v0.7.4
tabular, v0.1.0
text-manipulation, v0.6.0
tree-view-git-branch, v0.1.2
tree-view-git-status, v1.0.2

# Dev
No dev packages

Yeah I have gotten to the point that when I see a ton of "Linting..." messages at the bottom (such as at http://i.imgur.com/OoooBP8.png for example) and the interface start slowing down then I know that there are already a hundred+ of those formatting processes so I alt-tab to the task manager and kill atom process tree (thus killing the formats) because for some reason at those times not even Ctrl+Alt+r works (it seems to half-kill atom, like it is waiting on something)...  If I close the file it will also stop it, but it also causes the format to start popping up the above stacktrace/error every time I save.  Is this still closed for a reason?

Thanks @OvermindDL1. I'm on vacation now, I will try it when I get back!

Do you also have Elm format enabled via atom-beautify?

Ah indeed I do, I will disable that for a while and give it a try again.  I did not even know about atom-beautify, did it come with atom or did I install it somehow?  >.>

For note, it was set to never auto-beautify, even on save, but I completely disabled it anyway.

Ran atom for a little bit after disabling atom-beautify, the issue happened again with infinite elm-format's spawning.  I tried to enable atom-beautify and disable atom-elm-format, but atom-beauty errored about not finding elm-format (it does not even have a place to put its path), so it was not doing anything anyway, disabled again though and re-enable atom-elm-format

Is this resolved?

I'll try tomorrow, message me here then?  I usually keep the auto-format-on-save disabled because of the locking-up and I just realized that I've not run elm-format in atom in probably a week now...  Poor code formatting...  >.>

Can't reproduce, close?

Closing due to inactivity


How to debug incoming SOAP calls?

How to debug incoming SOAP calls?

We do not support it. We only support for now debugging the AL code that executes on the context of the webclient that is brought up with F5.
It is in our backlog though to support other like ODATA and SOAP client calls too.


User login

After several weeks without touching the project, I noticed that I was still connected to the site; I think we forgot something about the timeout to disconnect the user and this has security risks

The error has been corrected with the #47


Nancy Engine Memory Leaks

Hi All,
After running Nancy for few days, I got a memory leak issue. Here is what I get from CLR Profile.

These objects all lived to Gen2.
I think the issue have some relationship with this one. http://stackoverflow.com/questions/9717592/async-and-cancellationtokens-cancellationtokensource-memory-issue. But I am not very sure.
Please give me a help.
Thanks!
-- .Net Framework 4.0, Nancy 1.4.1, Nancy.Hosting.Self 1.4.1

This should be resolved in v1.4.2 as per #2113

That's great. Thank you very much!


Custom line styles (dotted, dashed, etc.)

Similar to colors.

[x] Fixed styles (solid, dotted, dashed, maybe dot-dashed for origami)
[ ] Allow custom creation (like #14)
[x] Scale relative to line width
[x] For varying-width pen strokes, we'll need to keep track of the pattern offset modulo the pattern period, and use stroke-dashoffset to resume. Everything else can be done via just stroke-dasharray (which is a good representation for the database).

There may be other relevant svg presentation attributes to include; e.g. a highlighter can have an opacity (though it would be nice to make it wider too); you can create arrows with marker-start and marker-end, etc.

In addition to dashed and dotted lines, I'd very much like to be able to do lines with arrows because I draw a lot of vectors! While at it, I would suggest being able to "fill" a rectangle or circle, just like we can in PowerPoint and other presentation-making software.

In addition to dashed and dotted lines, I'd very much like to be able to do lines with arrows because I draw a lot of vectors!

Agreed. This is currently in issue #35. It's a reasonably high priority for me too.

While at it, I would suggest being able to "fill" a rectangle or circle, just like we can in PowerPoint and other presentation-making software.

This already exists: if you shift-click on a color, it sets the fill.  See the user guide for more details.

FYI, both arrows and line styles are now available. (Line styles will deploy shortly.)

Very nice! Also, I hadn’t noticed that I could make rectangles be filled by clicking on the raindrop button, but it works well for me now :)


Is there a conflict with Toggle library?

I've used DavidLloyd's Toggle library  in other projects successfully. But after adding it to my current project it fails to recognise 'short' button presses, i.e. those delivering lows under 200 ms. It does recognise the 'long' button presses ( > 500 ms).
This conflict over resources, if that's what it is, appears to be with DallasTemperature, because if I comment out the statement
//  sensors.requestTemperatures();
then short presses are correctly detected.

Not familiar with the Toggle Library, link?
Is it possible to create a minimal sketch that shows the problem, e.g. based upon the minimal sketch of the DS18B20?

Thanks for the quick response. Here's a link to the same issue I've posted on the Toggle site (which looks very quiet).
https://github.com/Dlloydev/Toggle/issues/3
I was working on a minimalised sketch along the lines you suggest. But I've also just come across a possible alternative which I'll install and try next, as its 'non-blocking' claim sounds promising.
https://github.com/Gbertaz/NonBlockingDallas
'Non blocking temperature sensor library for Arduino'
If I make significant progress with either that or the demo sketch I'll come back.

I went quickly through the sources of Toggle and found no direct hint to interference with this library.
Hypothesis:
sensors.requestTemperatures(); calls a function that blocks until the sensor is ready UNLESS sensors.setWaitForConversion(true) is set.
As the DS18B20 can take 750 milliseconds (12 bit resolution)  before it "unblocks"  the time of less than 200 ms of the Toggle library has passed.
Even at lower resolutions this requestTemperatures() can block for 375 or 190 ms. which is already near the 200ms.
I expect that only at a resolution of 9 bits the SHORT toggle can be recognized as the blocking is "only ~95 ms".
Still you can expect 50% of the time blocking.
Solution is to use the async modus operandi and call sensors.setWaitForConversion(true) in setup().
You must guard the conversion timing yourself by checking isConversionComplete()

PS, I am not familiar with - https://github.com/Gbertaz/NonBlockingDallas - however a quick look shows it uses
this Arduino-Temperature-Control-Library library
#include <DallasTemperature.h>

Hmm, replied to this late last night (Fri) but it's not turned up. Anyway it was merely a thank you and advising my intention to work on your suggestions today. With Saturday chores over, I started work on your suggestions an hour ago.
As you probably gathered I'm an 'Arduino programmer' at best. Fair bit of Arduino experience now (some two years) and decades of hobbyist electronics. But this current project is my first with temperature sensing and therefore with the comprehensive DallasTemperature libary. I am struggling a bit. Editing my already rather complex sketch to get either a sufficient 'universal' reduction in blocked time, or specific code such as your WaitForConversion2, is proving a challenge.
I've not given up, but for time being I'm going to abandon Toggle's short presses. Motivations are from my impatience to finish the project, the risk of screwing up the existing sketch, plus coding more "interesting stuff", to echo your phrase.
So I'll now use long presses exclusively. Previous intention was about 15 'cases' from the one 'Toggled' button. But reckon I might get that down to eight or nine. At say 400 ms each that's around four seconds to trigger case #9; slow. I'll see how it goes and let you know. Here, or via email if you'd prefer, given that the original 'issue' is surely now resolved for anyone else with an interest. Or the forum for that matter - your choice entirely.
Terry, East Grinstead, UK

East Grinstead, UK

Think I've been there one once with my wife (years ago), there was a small tearoom with extraordinary scones.
Was a local price winner. I recall the entrance was down a few stairs,

DS18B20

Learning to control the sensor in an async way is easiest by working through the examples.
Its like,

start conversion,
do something else,
check if it is ready,
if ready read the value else goto 2


Default value not getting set

Im trying to set the default value, but it isnt getting set unless I add the code like this:
$("#state").select2();
$("#state").select2('val', '1049');

Any idea as to why?

http://jsfiddle.net/jvQ7e/14/ is broken btw -- it does not select Connecticut


pipenv install fails when any [[source]] other than pypi is used

Describe your environment

OS Type MacOS 10.12.6, Ubuntu 16.04
Python version: 3.6.4
Pipenv version: 9.0.3

Expected result
'pipenv install' with a custom source should work.
Actual result
Traceback (most recent call last):
File "/usr/local/bin/pipenv", line 11, in
sys.exit(cli())
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1865, in install
do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1306, in do_init
do_lock(system=system, pre=pre)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1102, in do_lock
pre=pre
File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 545, in resolve_deps
resolved_tree = actually_resolve_reps(deps, index_lookup, markers_lookup, project, sources, verbose, clear, pre)
File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 507, in actually_resolve_reps
resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
has_changed, best_matches = self._resolve_one_round()
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
for dep in self._iter_dependencies(best_match):
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 296, in _iter_dependencies
dependencies = self.repository.get_dependencies(ireq)
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
result = reqset._prepare_file(self.finder, ireq)
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 671, in _prepare_file
check_dist_requires_python(dist)
File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/packaging.py", line 56, in check_dist_requires_python
os.environ['PIP_PYTHON_VERSION']
pip.exceptions.UnsupportedPythonVersion: futures requires Python '>=2.6, <3' but the running Python is 3.6.4
Steps to replicate
Create a pipfile that looks like the following -
[[source]]
url = "https://my.mirror.host/mirror/simple"
verify_ssl = true
name = "pypi-mirror"

[packages]
keras = "*"

[dev-packages]

[requires]
python_version = "3.6"

'pipenv install' fails with the above error - if you replace the source section with the default, it works perfectly. This is a duplicate of #1166, but that was closed by the submitter, but it is still present.

this looks like an installation issue, not a pipenv/pypi issue.

I don’t really understand how it could be.
If I leave the URL as the default in my Pipfile, everything works perfectly, but changing it to anything but the default causes the above problem.
I have replicated this on my local MacOS environment as well as several different EC2 instances. If it’s an installation issue, what is installed incorrectly?

On Feb 17, 2018, at 7:26 AM, Kenneth Reitz<EMAIL_ADDRESS>wrote:
this looks like an installation issue, not a pipenv/pypi issue.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Maybe I closed too early

Has there been a fix for this? I can still reproduce it across several environments.

we're aware of the issue and are just cleaning up issues

cannot reproduce with the following Pipfile:
[[source]]

url = "https://testpypi.python.org/pypi"
verify_ssl = true
name = "pypi"

[packages]

requests = "*"

[dev-packages]

[requires]

python_version = "3.6"

@dpratt -if you're using devpi to host your pypi mirror, try upgrading the version. I think subtle API issues can cause this problem (and has to do with pip/internal PyPI interactions)

Update: we also have all of PyPI mocked out in our test suite, and have run into zero issues.

I wrote the Flask app that mimics PyPI myself in about 20 minutes.

Point: this is very well tested and is not problematic, as far as we can tell.

Thanks for the update - we currently use Nexus to host our mirror, I’ll start looking there. Is there a way to turn on verbose logging for pipenv/pip?

P.S are you still using pipenv 9?

I'm still getting the same exception in a very similar context. Using PyPiCloud and I can reproduce it on OSX and Centos6 EC2 instances
It wasn't clear if it is aIready known what's causing this, so I investigated  a bit and found out that ultimately also pip CLI shows different behaviours depending on the server contacted, probably it's the server itself returning different information?
pipenv, version 9.0.3 # should be the latest one from pypi
python 3.3.6 # required, cannot change
pip 9.0.1 from /users/kalfa/.local/share/virtualenvs/ADS-network-model/lib/python3.3/site-packages (python 3.3) # should be the latest one from pypi

Against PyPiCloud:
$ pip install --pre    --trusted-host PYPYCLOUDHOST --index-url https://PYPYCLOUDHOST/simple pytest
Collecting pytest
  Downloading https://pypi.aws.agileanalog.com/api/package/pytest/pytest-3.4.2-py2.py3-none-any.whl (189kB)
    100% |████████████████████████████████| 194kB 37.8MB/s
pytest requires Python '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*' but the running Python is 3.3.6

Against the default pip pypi server:
$ pip install --pre pytest
Collecting pytest
  Using cached pytest-3.2.5-py2.py3-none-any.whl
Requirement already satisfied: py>=1.4.33 in /users/kalfa/.local/share/virtualenvs/ADS-network-model/lib/python3.3/site-packages (from pytest)
Requirement already satisfied: setuptools in /users/kalfa/.local/share/virtualenvs/ADS-network-model/lib/python3.3/site-packages (from pytest)
Installing collected packages: pytest
Successfully installed pytest-3.2.5

Not sure yet if it's actually the server replying differently, but I supsect so, because it's the only thing that changes in the two scenarios.
In fact, pkg_resources.DistInfoDistribution metadata in check_dist_requires_python() in the former case returns "Requires-Python" info, which is unmet if I'm using python 3.3.6 and tyring to install something with "Requires-Python: >=2.7, !=3.0., !=3.1., !=3.2., !=3.3.".
In the latter, the header/metadata is lacking, and pip actually is happy to continue and install pytest against py 3.3.6.
Unless anyone objects, I'll try to draft a patch for an option to ignore Requires-Python even if it's passed among the pkg metadata.

please do. I had this working, actually, but had to remove it as it was causing bugs.

e.g. please do it properly (as i did it improperly)

✨🍰✨

@kennethreitz any suggestion about how you'd like to see it 'properly'? or what you would not like to see ;-)

anyway, patching only pipenv wouldn't resovle the problem, unless we can issue a 'pip install' telling pip to ignore the metadata as well.
Otherwise it will simply postpone the rejection when pip is actually executed. Am I getting something wrong?


Stack overflow in ReflectHelper

Description
There's an overflow exception in this line:
https://github.com/Microsoft/testfx/blob/master/src/Adapter/MSTest.CoreAdapter/Helpers/ReflectHelper.cs#L75
        public virtual bool IsAttributeDefined(Type type, Type attributeType, bool inherit)
        {
            return this.IsAttributeDefined(type.GetTypeInfo(), attributeType, inherit);
        }

TypeInfo inherits from Type and therefore this method is calling itself until a stack overflow is thrown (there's no better overload that takes Typeinfo )
It looks like this doesn't happen on all platforms, as some platforms will declare TypeInfo a subclass of MemberInfo (netportable) which does have a matching overload, whereas others just a subclass of Type (ie netstd2.0).

@dotMorten , is this purely needed for Xamarin support?

Well I was targeting netstd, but yes that was mainly for the purpose of Xamarin.
I worked around this by targeting .NET Standard 1.4 instead. It's odd that the inheritance between 1.4 and 2.0 is so different.
Here's 1.3:

And 2.0:

So in 2.0 Type inherits from MemberInfo, so in a way it's not a breaking change, but in this case it does actually break and needs an explicit cast to MemberInfo.

@dotMorten , I already had a PR out to convert tesfx adapter to netstandard1.3 https://github.com/Microsoft/testfx/pull/411
I'll discuss this further with team to take a call on it, & this issue helps.

If you target 1.3, I you should be fine, but beware of this issue if you do compile for netstd2.0

Hi @dotMorten, I've raised this issue internally, & we plan to make it part of our backlog.
Also you can pull branch  where I made changes to move test adapter to NS1.3. It's in a stable state, if possible can you try pulling it locally, & see whether it works fine for you?


Allow users to choose different bridge.json values on deck.net.

Also, samples "8. Newtonsoft.Json.cs" on deck.net doesen't compile

Also, samples "8. Newtonsoft.Json.cs" on deck.net doesen't compile

It will only work with the 16.0.0-beta2 build on https://dev.deck.net for now. Once 16.0.0-beta2 is released to NuGet, the main Deck.NET app will be updated with Bridge.Newtonsoft.Json.

thanks for update

@geoffreymcgill, it could also be useful to allow users to alter the Bridge version number as well.

Created an issue in Deck repo https://github.com/objectdotnet/Deck/issues/27

@LeonidVeriga, this link no longer works.

@michaelcheers, do you mean https://github.com/objectdotnet/Deck/issues/27?
It works for me.

@michaelcheers The link to Deck Issue #24 has been fixed.


Idea: Tekton Generators

/kind feature
/kind design
Creating in pipelines, since I think this is more of a discussion on our approach to Pipeline and Task configuration.
Problem
Currently it's not an easy for users to bootstrap common workflows. e.g. "run a simple build and test workflow on this GitHub repo".
Feedback I'm looking for

Is this a good/useful idea?
How else (if at all) can we encourage users to use and contribute catalog tasks?

Should we enforce any type of schema on generator configuration?

Link to any prior art of DSLs / alternative Tekton configurations you're aware of.
Any other ideas / improvements / critiques

Ideas
Goals:

Provide a DSL spec for pipeline generators to automate pipeline set up for users.
Don't make Tekton directly aware of integration types (e.g. GitHub)
Make it easy for users to make their own.
Encourage users to reuse existing Tekton concepts.

Simplified spec for common workflows
Ideally, it should be very easy for users to get started with only their repo and build steps. e.g. imagine a world where you configure just the following:
kind: GitHub
metadata:
  name: github-build
spec:
  url: "https://github.com/wlynch/test"
  steps:
    - name: build
      image: gcr.io/kaniko-project/executor:latest
      command:
        - /kaniko/executor
      args:
        - --context=dir://$(workspaces.input.path)/src
        - --destination=gcr.io/wlynch-test/kaniko-test
        - --verbosity=debug

(Note: this looks CRD-y, since this is how the idea started out, but I switched to a CLI approach based on feedback from Scott and other Googlers. API Version / Kind / Metadata still seem like useful identifiers, so I left this in.)
A CLI tool (likely tkn, but doesn't need to be) should be able to take this spec and when applied, should generate:

Wrap steps in a Task
Wrap Task in Pipeline
Wire up workspaces for Git repo.
Attach credentials (if necessary)
Prepend Git clone Task at the start of the Pipeline
Add GitHub status task to end of Pipeline / finally
Create Trigger / EventListener for GitHub events to kick off pipeline on pushes.

All resources created should be labeled with the generator that created it, to facilitate bulk queries / deletion / modification.
Users should be able to specify the runtime configuration however they want. This means generators should support users providing one of:

steps
taskSpec
taskRef
pipelineSpec
pipelineRef

Extensibility
To allow users to provide their own generators, I think the easiest approach would be to follow the model of Git credential helpers.
tl;dr of this approach is when given a configuration, we should look for a binary on the user's path matching tekton-generator-<generator kind>, i.e. tekton-generator-github. The generator configuration is piped in to the binary via STDIN, and the generated response is provided from STDOUT.
This allows users to define their own generators, or even invoke the generator directly to expose the underlying pipeline to modify the contents.
Ease of use
We should probably have some utilities to help interacting with generators. Some that come to mind:

show: Print generated configuration.
write: Write generated configuration to disk.
apply: Apply generated configuration to Kubernetes (based on local k8s context).
delete: Delete generated resources.

Example
I've been hacking on a really rough concept of this at https://github.com/wlynch/tekton-demo/tree/master/bundle.

Some links:

https://github.com/tektoncd/experimental/issues/185
https://github.com/redhat-developer/build/
https://github.com/bigkevmcd/tekton-ci

We're going to go ahead and start working on this in experimental.
Milestones we're going to focus on:

Create tool that given an input spec with steps, generates the resulting Tekton resources for the particular type.

Create binary that invokes another binary on the path based on the type.
Read input steps and generate resulting pipeline config that mounts GitHub workspace and configures steps accordingly.

Add support for writing output to disk.
Add support for tasks and pipelines
Add support for applying config to cluster.
Add support for deleting configs from cluster.
Add support for other types (e.g. GitLab?)

I suspect this may have overlap with the Custom Tasks proposal in the future. :)
/cc @YolandaDu1997

I have created a CLI tool for the initial GitHub type of Tekton Generators.
Here are a couple of features that I’ve accomplished:
Design:

Designed the input config data structure and the way to parse the yaml file to store the result in the struct.
Designed and Built the CLI tool to help interact with generators.
Implementation:
Created the initial schema of GitHub generator that, given an input spec with steps, generates the resulting Tekton resources for the GitHub type.
Added support for writing output to disk for users to reuse these Tekton resources.
Added support for generating complete tasks and pipelines.
Created a client with kubeconfig file and added support for managing configs on the Kuebenetes cluster based on the context information of the cluster.
Created PipelineRun for the generated pipeline to execute the tasks.
Created Trigger for GitHub events to kick off the pipeline on pushes and pull requests.
Results:
With the correct input config, generated the Tekton resources and successfully ran with PipelineRun or Trigger on the Kubernetes cluster.

The next step of Tekton generators would be the #extensibility. It needs to allows users to define their own generators, or even invoke the generator directly to expose the underlying pipeline to modify the contents.

Just to add our two cents.
We're solving problem of generation tekton pipelines with tekton task. It accepts unit name, code skeleton, git branch as input params, and code(mix of python/bash/whatever) inside task creates all required for this pipeline - copies additional pipelines from other namespaces, uses some templating to dynamically create pipeline for service, creates all required triggers(trigger objects are also stored as templates inside this "generator" and are parametrized with unit name).
So when you need to create new service - you just run this generator clustertask inside your namespace with required params, and you're done. Unlimited flexibility and power :)
Additional thing we had to do - write a lightweight operator that can re-run generators in response to some events in cluster that might affect how pipelines are generated.

Just to add our two cents.
We're solving problem of generation tekton pipelines with tekton task. It accepts unit name, code skeleton, git branch as input params, and code(mix of python/bash/whatever) inside task creates all required for this pipeline - copies additional pipelines from other namespaces, uses some templating to dynamically create pipeline for service, creates all required triggers(trigger objects are also stored as templates inside this "generator" and are parametrized with unit name).
So when you need to create new service - you just run this generator clustertask inside your namespace with required params, and you're done. Unlimited flexibility and power :)
Additional thing we had to do - write a lightweight operator that can re-run generators in response to some events in cluster that might affect how pipelines are generated.

Thanks @dbazhal - I discovered your comment only now. Is the work you've been doing something that you'd be willing to share?


下载下来 npm run build-browser 报不成功

npm run build-browser
ERROR in pinyin4js.js from UglifyJs
RangeError: Maximum call stack size exceeded

@yruson Could you tell me more information about this?

@yruson you can npm run build at first


[Tour of Beam][Task] Update ToB frontend README

What needs to happen?
The updated README needs to include instructions for using the new Gradle tasks and mirror Playground's README structure.
Issue Priority
Priority: 3 (nice-to-have improvement)
Issue Components
Tour of Beam

.take-issue


WIP: uglify - use workerpool

Thank you for your contribution! 🙌
To get it merged faster, kindly review the checklist below:
Pull Request Checklist

[ ] Reviewed the Contributing Guidelines

Especially the How to Contribute section

[ ] No merge commits
[ ] Correct commit message style

Implemented with https://github.com/SAP/ui5-builder/pull/875


Small typo in validation.html

Rules given as array do not need separator ('|').

Description
Explain what you have changed, and why.
Checklist:

[x] Securely signed commits
[ ] Component(s) with PHPDoc blocks, only if necessary or adds value
[ ] Unit testing, with >80% coverage
[x] User guide updated
[ ] Conforms to style guide

@obozdag Thank you!


[extension-upload] - unable to upload a brackets extension to the registry

Hey, tried to upload an extension to the registry but i always get the following error:
"The extension package is invalid: The uploaded content is not a valid zip file."
My zip file has a size of about 3.1Mb.
It has a main.js and a valid package.json.
I have the suspicion that the large amount of files cause the error. Is it possible that there is any limit?
I created the zip via terminal 'zip requireRelease.zip . -r'
See also: https://groups.google.com/forum/#!topic/brackets-dev/srV4w5O0r94

I'm not sure if this might cause this issue. We have a fixed set of routes and nothing get's added dynamically.
We are dealing with a larger json object. If somebody adds or updates an extension, we are going to modify this json object. This might be more the issue I guess. But I'm not 100% sure about this either. ;-)

I don't think it's an issue with the JSON file.
The error message is "The uploaded content is not a valid zip file.", which is only ever reported if DecompressZip fails. So it looks like an update may help.

@MarcelGerber But with the same exact zip file, it succeeds after rebooting the server.  So there's a strong chance some sort of leak is at play here (memory leak, file handle leak, etc.).  That could be due to a bug in the zip library, but it could also be a bug in any other part of our server, which leaks badly enough to eventually prevent DecompressZip from working properly.
That said, if there's a new version with bug fixes it seems worth upgrading just in case that helps...

Hi @ingorichter , I'm still having problems since yesterday when trying to upload my package to the registry. I tried different zip packages, with some compression, without compression, the one that github generates (and then add the node modules I need), and the result is the same "The extension package is invalid: The uploaded content is not a valid zip file".  As a response of the /upload API I got a 404. The packages I tried are about 7,5mb and 9mb. I noticed that between yesterday and today that some packages were uploaded, I don't know if the issue can be related to bigger packages. Here is the link to one of the packages if you need it:  https://drive.google.com/file/d/0B2qjL2i00DnjUTR0YTVwblBtUGM/view?usp=sharing

Hi all, I'm still having problems when uploading brackets-bower extension. After the last time, randomly it works, and now with the new version, that only is about 4.3mb,  I removed more files under node_modules/ inside bower module, and running npm depune, I'm again having the same issue "The extension package is invalid: The uploaded content is not a valid zip file".

To add to the discussion:
I had problems uploading extensions packed together with https://github.com/gruntjs/grunt-contrib-compress so I switched to https://github.com/twolfson/grunt-zip and it all works fine since then.
grunt-zip uses different compression method than grunt-contrib-compress and the resulting zip file is much bigger with grunt-zip when compared to grunt-contrib-compress
From my case, I suspect that the registry is not able to work with some types of zip files, even though software that I use (winrar, 7zip) had no issues with any of them.

@zaggino yes, that is something that I have encountered too. I have mentioned this at a certain point, but some people didn't take it seriously. I got the answer, that this can not the reason for the upload failure. I have changed my projects to use grunt-zip too and since then I didn't have any issues anymore.
The remaining question for me is, if the generated zip file is valid. I started to investigate a bit in this direction and why we fail. It seems that the library that we use is expecting a specific flag in the zip file structure, but when generated with grunt-compress is not there. I have updated the zip library on my local machine to the latest version, but the error remains. I think the zip file is not valid. But I need some more proof to file appropriate bugs.

@ingorichter What library does grunt-contrib-compress itself use?  If that same library has an unzip API too, maybe we should look into switching to that lib.
It's beginning to seem like every Node zip library has bugs with certain files though -- iirc we've already switched libraries once because the original one didn't handle some files right.  This might be a whack-a-mole game where switching to grunt-compress's library fixes the zip files we're discussing here but breaks with other zip files that currently work fine :-(

Fwiw, looks like grunt-compress uses archiver, which in turn wraps zip-stream -- but neither offers an unzip API...

I just looked for often-used zip libraries in npm and found decompress-zip (the one we currently use) and adm-zip.
We may want to try the latter.
@peterflynn Yeah, we used to use unzip until https://github.com/adobe/brackets/commit/b69040a30d4979b8e0e1b9af19f25f6cfb78bb7f.

To add to the discussion, my extension, brackets-bower uses the grunt tasks https://github.com/twolfson/grunt-zip but now with deflate compression, since I need to compress due to a lot of nested npm modules that bower has. Some time ago, it works fine, I was able to upload my extension to the brackets registry. But since a few months ago I'm having this same issue related to the registry, I've been trying to upload a zip file generated with the grunt-zip task, with and without deflate compression until my package was bigger than 10mb, then using windows winzip and 7zip, then using zip from linux, then git archive and downloading the zip file from github and manually adding the node modules I need. Then randomly I can upload my package, I don't know if that matches the moment when the server was restarted. I recently use an npm module, (flatten-packages)[https://github.com/arifsetiawan/flatten] to flatten the node modules tree  and then generate my zip package using grunt-zip and then zip from the command line and then winzip from windows, but the result was the same: the package is not a valid zip. So, I've updated the package.json and remove the node_modules folder, generate the zip file using grunt-zip task, and upload that package to the registry successfully as a test, then I deleted it.
I think that the problem is related with packages that contains a lot of files or nested folders...

@albertinad you're right about the nested folders/files, I've also seen this when trying to upload an extension which contains node_modules. One solution here would be https://github.com/adobe/brackets/pull/10602 , the other one I can think of is that we could start using npm as a registry, similarly to the jquery which also migrated from it's own registry to npm a while ago (http://plugins.jquery.com/)

I still can reproduce this without any Grunt plugins, but with archives from "Download as ZIP" feature at GitHub. This issue are reproducible from time to time (not always).

I've started receiving 'Bad Request' today. Previously uploads worked fine for me.

@DenisVuyka That was a different problem that should be resolved now; see #10720.

I've receiving 'Bad Request' today. Anything i can do to my zip file? or just wait someone fix this on the server side?

I am trying to update my extension to a new version, and also get 400 'Bad request'

Am also getting Bad Request. @peterflynn any way to kick the bucket again to fix?

Now i got ENOSPC, that's mean there is no space left on the server.

when will be some free space on server, to upload extensions ?

We are looking into. We have already sent a mail to aboutweb guys and hopefully this should get resolved sooner.

Thank you so much @nethip

Subscribed to thread for future updates on this issue.

Hi guys, some people in this thread might be interested:
https://groups.google.com/forum/#!topic/brackets-dev/lxMADzwDoWk

Uploading my Tab Out extension to the Extension Registry was not possible yesterday ("Bad Request"), but today it worked. I didn't upload the same file, though. Today I used the GitHub release ZIP and yesterday I just tried uploading the GH master ZIP and using the git archive command.

@dag0310 There were issues with the registry service, but they have been addressed.  So that's probably why it worked for you rather than the different artifact you were uplaoding.
@zaggino I have definitely thought I about doing the same thing. I will check out what you have...

Same issue - #10832 reported again:
An error occurred, but unfortunately I don't know how to say this nicely:
ENOSPC, mkdir '/home/aboutweb/tmp/bracketsPackage_11536-1774-qsodmm'

I get "The extension package is invalid: The uploaded content is not a valid zip file." when I try to upload my extension. The upload works if I delete node_modules folder, but my extension requires it.

@smiclea how did you create the zip? Can I download it somewhere? Thanks.

Hi @ingorichter , after a lot of failure intents uploading brackets-bower extension to the registry, I was able to reproduce the same error in my local environment. Below the steps I follow:

set up my local brackets registry
upload my package
2.1) everything was right
clean up to start again
download 70 random extensions from the public brackets registry
start the local brackets registry
drag and drop all of the 70 extensions, wait until all of them where successfully uploaded
upload my package
7.1) it fails, with the code that indicates that is not a vaild zip (which it is)

After digging a little and doing some debugging, I found the error code of it: EMFILE from the decompress-zip module/node. Related to bower/decompress-zip#26
Then, I updated the decompress-zip module to latest stable version, from 0.0.2 to 0.1.0, repeat all the steps above multiple times, and I was able to upload to my local brackets registry my extension.
Also updated it on brackets and the tests passed.
We are using an outdated version of decompress-zip module, maybe it is time to update it.

Good job @albertinad :+1:

Great job @albertinad. I suspected that decompress-zip might be the issue. I did some investigation some time ago but never finished the work (https://github.com/adobe/brackets/issues/7387). Sometimes the error disappeared after restarting the registry (I have not really an idea why).

@ingorichter You can download it here: https://drive.google.com/file/d/0BxNY66eFHRb5YXI5UmlteVo2N0U/view?usp=sharing

So it still doesn't work for me

It works now. Thank you!

I have same problem from today...

this is my stuff.
http://dscs.jp/brackets-synapse.zip

sorry I can't want, I have been required npm 's lodash and moment.
it works when cancled that.
thx.

Dear friends,
I have several extensions I can upload, including previous version of the one I'm facing this same problem. I don't now what happened, I just change the project version and a string in my project and now I can't upload :(
It falls wit message:
acb-tartan-background-master.zip
1.5 MB
✘
The extension package is invalid: The uploaded content is not a valid zip file.

@acbarbosa1964 if you have the source code for your extension uploaded to github, use 'download zip' utility from github project page and upload the same to registry.
One more thing to validate is the package.json structure. Make sure it's not broken after the last update and still a valid json.

Dear Mitra,
Thank you, but I have done that several time and I'm very sure JSON is
correct once I have used same structure for all my extensions.
Attached you have the zip file if you want to take a look.
Best Regards,
Thank you.
Atenciosamente,
Antonio Carlos Barbosa
*Fone:    *+55 15 2102-6500
http://www.alphatour.com.br http://www.alphatour.com.br
http://www.alphatour.info http://www.alphatour.info
Um pensamento na madrugada...
"Muitas vezes, as melhores coisas que temos a dizer para quem amamos,
temos como amigo ou nos relacionamos profissionalmente, são tão boas que
não conseguimos coloca-las para fora, mas as coisas ruins como críticas,
descontentamentos, raiva ..., que não queremos dentro de nós, são mais
fáceis de externalizar." Ainda hoje aprendi que dividindo estes sentimentos
bons que ficam guardados dentro do nosso peito, estamos na realidade
criando um efeito multiplicador, pois eles voltam para nós em dobro.
Antonio Carlos Barbosa

A thought in the early hours ...
*"Often, the best things we have to say to those we love, we have as friend
or relate professionally, are so good that we couldn't put them out, but
the bad things like criticism, discontent, anger ... that we don't want
within us, are easier to speak out. *
"
Today I've learned that sharing these good feelings we have stored within
our chest, we are actually creating a multiplier effect, because they come
back to us twice.

Antonio Carlos Barbosa

2015-10-19 15:22 GMT-02:00 Swagatam Mitra<EMAIL_ADDRESS>
@acbarbosa1964 https://github.com/acbarbosa1964 if you have the source
code for your extension uploaded to github, use 'download zip' utility from
github project page and upload the same to registry.
One more thing to validate is the package.json structure. Make sure it's
not broken after the last update and still a valid json.
—
Reply to this email directly or view it on GitHub
https://github.com/adobe/brackets/issues/7387#issuecomment-149287369.

I am running into this issue with my new extension https://github.com/petetnt/brackets-sass-lint
I am getting  {"errors":["The extension package is invalid:","The uploaded content is not a valid zip file."]} despite being able to install it from URL or .zip with no issues. My package is 4.7 megabytes

@petetnt I have faced the same problem while updating my extension last year. Although I am not sure about the actual cause but the following steps got rid of the problem.

Logout from extension registry
Clear browser cache ( Not sure if mandatory but I did )
Close your browser
Open registry again and then log in
Try to upload the extension ( It worked for me !)

I've also started using the brackets-npm-registry. It did take a full day for it to show up but publish to npm with brackets-extension in the keywords array of package.json and it picked it up. To update, just issue a npm publish and the registry picks up the update.
Would be great to migrate to this instead of the builtin one that I've had issues with it going down (has been a while for that tho).

@swmitra Good idea, but sadly those steps wouldn't work for me. :crying_cat_face:

Confirmed that it was the node_modules that are the culprit: there's a lot of them (3387 Files, 547 Folders) but the combined size is still less than ~4 megabytes. Removing them from the zip file made the process a success.
I tried to pack the modules with npm@v2 but that didn't work either: only thing it did was was get the package size up to 7 megabytes.
The thing is that I can't even lower my amount of files: I only have one external dependency, sass-lint that just happens to use tons of external dependencies :crying_cat_face:

The extensions registry upload is not working again, and I see it is nearly a full year that this topic was opened -  I need to upload v0.0.5
Can you restart the server please
[Brackets Website Admin]

I'm unable to upload an new version also. None of the work around  suggestions worked for me.
The new package: http://alemonteiro.com.br/brackets-sql-connector.zip

Still can't upload the update for sql-connector but was able to upload a new smaller extension.
The connector one tried from linux using file roller, zip and rar,  and from windows using winrar e 7zip, none worked.

Maybe this issue is related to file size? I couldn't upload anything larger than 2mb but never had problem with small packages.
So added auto install of node dependencies on the extension so the package would be small and only then was able to upload and update the version on registry.

@alemonteiro I cannot upload 99kb extension right now so it's not related to size, I think.

I always had the impression that it was related to the program that created the zip file. I don't have 100% proof for it, but it seems that the zip library used to decompress the uploaded zip chokes on some of the files.

@dnbard , i don't think it's only size related, but it may play a role...
@ingorichter , i had this impression also, but it got mixed up with the size thing...
Using wirar over windows I never had a problem with upload, did various uploads until 1.5mb.
But some weeks ago I migrated to Debian and the first package that I tried to upload, zipped with archiver, wasn't accepted. So I tried using xarchiver, rar and zip directly, but with no luck.
Then I got this same package, about 2mb, and tried from windows (with Winrar and 7zip) but also didn't get accepted.
I could only get it to be accepted again after removing the dependecies from the package, so it would be like 200kb, and with that size any zipper that i tried worked.
I think this won't help much because it feels inconsistent. I'll try to run a version locally to debug it once I get some free time.

Closing this issue now. Registry server has been upgraded. Please reopen this issue if you still have problem in uploading extension.


Don't work clicking on Xiaomi Miui 12

Sorry about my English.
Hey, I've had this problem recently.
Earlier at 11miui The robot is all very well but after switching to 12 stopped pushing, no farmite does not reset the roulette does not role fp gachu.
Device: Pocophone f1 Miui 12

Sorry about my English.
Hey, I've had this problem recently.
Earlier at 11miui The robot is all very well but after switching to 12 stopped pushing, no farmite does not reset the roulette does not role fp gachu.
Device: Pocophone f1 Miui 12


Fix delay padding to respect target's constraints

Summary
Fixes delay padding in transpile() function and tranpiler passes to respect target's constraints.
Fixes #9993
Details and comments

[ ] Fill here
[ ] Release note

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

29 of 29 (100.0%)  changed or added relevant lines in 7 files are covered.
28 unchanged lines in 4 files lost coverage.
Overall coverage increased (+0.005%) to 85.928%

Files with Coverage Reduction
New Missed Lines
%

qiskit/transpiler/passes/synthesis/unitary_synthesis.py
1
95.37%

crates/accelerate/src/sabre_swap/layer.rs
4
97.32%

crates/qasm2/src/lex.rs
5
91.9%

crates/qasm2/src/parse.rs
18
96.65%

Totals

Change from base Build<PHONE_NUMBER>:
0.005%

Covered Lines:
71153

Relevant Lines:
82805

💛  - Coveralls


Update TestFlush()

This is a follow up PR to PR#150

(M) server/server_test.go

Add a test case to test flush all NIs with valid election ID.
Reordering test cases for better review the coverage

Because checkFlushRequest() is an internal func and only used by Flush(), I'm also considering removing TestCheckFlushRequest(), and move all the logic into TestFlust(), WDYT? @liulk


Reconsider current deployment target

May set deployment_target to 8.0 or 9.0

Won't be done in near future


logo and sphinx theme

Coverage remained the same at 94.333% when pulling ad31793f2caf91079ef94831bd942ca3bb325327 on pavanramkumar:master into 01fc42a9e883c9b1e11a6a228d634f9c25ae6492 on KordingLab:master.


Add PuppeteerPool.retire(browser) method

Use case:
I am scraping website with concurrency higher than one and have multiple tabs opened in each browser. I am able to detect in handlePageFunction or gotoFunction that I was blocked by anti-scraping protection. So I need to retry the URL with different IP address.
Workaround:
The easiest way is to kill a browser using browser.close() and to throw an error so that the request gets retried in a new browser. The problem is that this way all the opened tabs get killed however they may be processing successfully opened pages.
Proper implementation:
Add puppeteerPool.retire(browser) or browser.retire() method. And in the case mantioned above call:
handlePageFunction({ browser, puppeteerPool, request }) {
   ...
   puppeteerPool.retire(browser);
   throw new Error('Request was blocked!');
   ...
}

This means the browser would wait for other tabs to finish their functions and then shut down?

Yes, retired browser wait for all tabs to be closed (5min timeout).

Fixed.


Fix tensorboard reporting

Flip train and dev (related to #149).

Codecov Report

Merging #164 into master will decrease coverage by 0.00%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #164      +/-   ##
==========================================
- Coverage   38.05%   38.05%   -0.01%
==========================================
  Files          85       85
  Lines        9969     9968       -1
  Branches     2086     2085       -1
==========================================
- Hits         3794     3793       -1
+ Misses       5978     5977       -1
- Partials      197      198       +1

Impacted Files
Coverage Δ

neural_sp/trainers/reporter.py
0.00% <0.00%> (ø)

...eural_sp/models/seq2seq/decoders/rnn_transducer.py
74.76% <0.00%> (-0.32%)
:arrow_down:

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 91244f7...7727563. Read the comment docs.