HTTPClientResponseDelegate is not notified of some errors (connection related?).

Tested against commit 8add6b8f0b8f045a3e43616b0f4ffe8b234e3137 on Ubuntu 16.04 with Swift version 5.2.4 (swift-5.2.4-RELEASE)
I've been debugging an issue where an HTTPClientResponseDelegate does not get notified of some errors via the didReceiveError(task:...) method.
My expectation was that HTTPClientResponseDelegate would see any error throughout the entire lifecycle of the request, not just some subset of them.
I've pasted a test case below that demonstrates the issue with remoteConnectionClosed errors but I've seen it with connectTimeout too.
I can appreciate that the error was returned in Task.futureResult but it took quite a bit of effort to work that out (no matter how obvious it is in retrospect). However if the current behaviour is intended then I would still push that the documentation for didReceiveError is updated to emphasize it only sees some subset of errors and not "any network-related error" as it states now.
Thank you!
    func testDelegateConnectionFailError() {
        class TestDelegate: HTTPClientResponseDelegate {
            typealias Response = Void

            var error : Error?

            func didFinishRequest(task: HTTPClient.Task<Response>) throws {}

            func didReceiveError(task: HTTPClient.Task<Response>, _ error: Error) -> EventLoopFuture<Void> {
                self.error = error

                return task.eventLoop.makeSucceededFuture(())
            }
        }

        let localHTTPBin = HTTPBin(refusesConnections: true)
        let localClient = HTTPClient(eventLoopGroupProvider: .shared(self.clientGroup))
        defer {
            XCTAssertNoThrow(try localClient.syncShutdown())
            XCTAssertNoThrow(try localHTTPBin.shutdown())
        }

        let delegate = TestDelegate()

        do {
            let request = try HTTPClient.Request(url: "http://localhost:\(localHTTPBin.port)/get")
            try localClient.execute(request: request, delegate: delegate).wait()
            XCTFail("Shouldn't succeed")
        } catch {
            print("error: \(error)")
            print("delegate.error: \(String(describing: delegate.error))")
            XCTAssert(delegate.error != nil)
        }
    }

error: HTTPClientError.remoteConnectionClosed
delegate.error: nil
/data/async-http-client/Tests/AsyncHTTPClientTests/HTTPClientTests.swift:1569: error: HTTPClientTests.foo : XCTAssertTrue failed -

I do share your expectation and I agree the delegate should get all errors. This is quite a serious bug so this needs fixing before 1.2.0.
Thank you so much for putting together the test for this!

I think the error is not in the client, but in the delegate, it should be:
func didReceiveError(task: HTTPClient.Task<Response>, _ error: Error) {
    self.error = error
}

and not:
func didReceiveError(task: HTTPClient.Task<Response>, _ error: Error) -> EventLoopFuture<Void> {
}

@weissi do you think we should drop default implementations in 2.0.0?

Oops. You're absolutely right, I messed that test up completely. Apologies!
I've managed to reproduce the same thing with a corrected delegate. I think this is much closer to the actual failure mode we see in our real application.
What we see in our application is a connectTimeout error when talking to S3. This happens rarely, maybe every 10k requests or so.  It isn't unusual behaviour for S3, we've see the same thing on a range of clients/languages and normally you just retry the request and it succeeds.

With the correct didReceiveError function signature you can see the first few requests return readTimeout (you'd expect those errors given the sleep in the server). You can then see a bunch of requests where the futureResult error is connectTimeout but the delegate did not see any error.
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:connectTimeout(NIO.TimeAmount(nanoseconds:<PHONE_NUMBER>0)) vs delegate:nil
error:connectTimeout(NIO.TimeAmount(nanoseconds:<PHONE_NUMBER>0)) vs delegate:nil
error:HTTPClientError.readTimeout vs delegate:Optional(HTTPClientError.readTimeout)
error:connectTimeout(NIO.TimeAmount(nanoseconds:<PHONE_NUMBER>0)) vs delegate:nil
Revised test code:

    func testDelegateConnectionFailError() {
        class TestDelegate: HTTPClientResponseDelegate {
            typealias Response = Void

            var error : Error?

            func didReceiveHead(task: HTTPClient.Task<Response>, _ head: HTTPResponseHead) -> EventLoopFuture<Void> {
                return task.eventLoop.makeSucceededFuture(())
            }

            func didFinishRequest(task: HTTPClient.Task<Response>) throws {}

            func didReceiveError(task: HTTPClient.Task<Response>, _ error: Error) {
                self.error = error
            }
        }

        let timeout = AsyncHTTPClient.HTTPClient.Configuration.Timeout(connect: .seconds(3), read: .seconds(3))

        let configuration = HTTPClient.Configuration(timeout: timeout)

        let localClient = HTTPClient(eventLoopGroupProvider: .shared(self.clientGroup),
                                     configuration: configuration)

        defer {
            XCTAssertNoThrow(try localClient.syncShutdown())
        }

        func single(_ url:String) -> HTTPClient.Task<Void> {
            let delegate = TestDelegate()

            // let request = try HTTPClient.Request(url: "http://localhost:\(localHTTPBin.port)/get")
            // let request = try HTTPClient.Request(url: "http://www.google.com:81")
            let request = try! HTTPClient.Request(url: url)
            let task = localClient.execute(request: request, delegate: delegate)

            task.futureResult.whenComplete { result in
                switch result {
                    case .failure(let error):
                        print("error:\(error) vs delegate:\(String(describing: delegate.error))")

                        XCTAssert(delegate.error != nil)

                    case .success:
                        break
                }
            }

            return task
        }

        var tasks = [HTTPClient.Task<Void>]()

        for _ in 0..<10 {
            let task = single("http://localhost:8080")

            tasks.append(task)
        }

        for task in tasks {
            try? task.wait()
        }
    }

Server code:

#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <string.h>
#include <unistd.h>
#define PORT 8080
#define SA struct sockaddr

int main()
{
  int sockfd, connfd;
  struct sockaddr_in servaddr = {};

  // socket create and verification
  sockfd = socket(AF_INET, SOCK_STREAM, 0);
  if(sockfd == -1) {
    printf("socket creation failed...\n");
    exit(0);
  }

  int tr=1;
  if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &tr, sizeof(int)) == -1) {
      perror("setsockopt");
      exit(1);
  }

  // assign IP, PORT
  servaddr.sin_family = AF_INET;
  servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  servaddr.sin_port = htons(PORT);

  // Binding newly created socket to given IP and verification
  if ((bind(sockfd, (SA*)&servaddr, sizeof(servaddr))) != 0) {
    printf("Failed to bind socket\n");
    exit(0);
  }

  // Now server is ready to listen and verification
 if ((listen(sockfd, 4)) != 0) {
   printf("Listen failed\n");
   exit(0);
 }

  printf("Server listening...\n");

  while(1) {
    // Accept the data packet from client and verification
    struct sockaddr_in cli = {};
    socklen_t len;
    connfd = accept(sockfd, (SA*)&cli, &len);
    if (connfd < 0) {
        printf("server acccept failed...\n");
        exit(0);
    }
    else
        printf("server acccept the client...\n");

    sleep(4);

    // Function for chatting between client and server
    const char * msg = "HTTP/1.0 200 OK\nContent-Length:5\n\nHello";
    write(connfd, msg, strlen(msg));

    close(connfd);

    sleep(4);
  }
}

@weissi do you think we should drop default implementations in 2.0.0?

Hmm, I think Swift should get its act together and offer a implements/override func for implementing protocol requirements: https://bugs.swift.org/browse/SR-13007 :). It's quite annoying having to implement all methods...

Ah, that does indeed look like bug, I think I even can see there reason for it.

Good catch, @kuwerty, thank you!

That's awesome, thanks for the speedy response!

Cool, this server can be super straightforwardly implemented in NIO too if that helps for a test case. Happy to write the server code

@weissi are you looking for a test case that provokes the connectTimeout error specifically? I took a stab at that in NIO, using HTTPBin, but I just couldn't get it to result in the same error. If you have a good idea on how to do that then go ahead ;-)
The PR from @artemredkin forces a connection refused by shutting down HTTPBin early, it looks like the same class of error with the same behaviour in the delegate.

@kuwerty I don't think HTTPBin can do it (because it's a web server) but this is a pretty direct translation of your C code:
import NIO

let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
defer {
    try! group.syncShutdownGracefully()
}

final class DelayReadByFourSecondsHandler: ChannelDuplexHandler {
    typealias InboundIn = Channel
    typealias OutboundIn = Never

    private var numberOfReadsSeen = 0
    func channelRead(context: ChannelHandlerContext, data: NIOAny) {
        print("server accepted connection from \(self.unwrapInboundIn(data).remoteAddress!)")
        context.fireChannelRead(data)
    }

    func read(context: ChannelHandlerContext) {
        defer {
            self.numberOfReadsSeen += 1
        }
        if self.numberOfReadsSeen == 0 {
            context.read() // First read goes through straight away
        } else {
            // All subsequent reads need to wait 8s (4 + 4).
            context.eventLoop.scheduleTask(in: .seconds(8)) {
                context.read()
            }
        }
    }
}

final class SendBackCannedResponseHandler: ChannelInboundHandler {
    typealias InboundIn = ByteBuffer
    typealias OutboundOut = ByteBuffer

    func channelActive(context: ChannelHandlerContext) {
        // Four seconds after we accepted a connection, send back some bytes.
        context.eventLoop.scheduleTask(in: .seconds(4)) {
            let buffer = context.channel.allocator.buffer(string: "HTTP/1.0 200 OK\nContent-Length:5\n\nHello")
            context.writeAndFlush(self.wrapOutboundOut(buffer)).whenComplete { _ in
                context.channel.close(promise: nil)
            }
        }
    }
}

let server = try ServerBootstrap(group: group)
    .serverChannelOption(ChannelOptions.backlog, value: 4) // Backlog 4
    .serverChannelOption(ChannelOptions.maxMessagesPerRead, value: 1) // Accept only 1 connection at a time.
    .serverChannelInitializer { channel in
        // In the server channel (where we accept connections), we want to delay the accepting.
        channel.pipeline.addHandler(DelayReadByFourSecondsHandler())
    }
    .childChannelInitializer { channel in
        // In the client channel (the actual TCP connection), we want to send back a canned response.
        channel.pipeline.addHandler(SendBackCannedResponseHandler())
    }
    .bind(to: SocketAddress(ipAddress: "<IP_ADDRESS>", port: 8080))
    .wait()
print("Server up and running at \(server.localAddress!)")

try server.closeFuture.wait() // wait for the server to close (never).

into NIO. Could you see if that reproduces your problem in the same way?

@weissi That was super helpful. I've got a test that fails before artemredkin's fix and succeeds after: https://github.com/swift-server/async-http-client/commit/80d03b4d8eeda02d91e31deaa7dab85d5033704d


Fix deadlock opportunity

I ran into a deadlock situation here because of missing await configuration.
If I remember correctly it was related to using .Wait() or .Result.

Thanks @sickboy !


feat(Rim): Implements parametric rim lighting

fix #3

:tada: This PR is included in version 1.3.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


using MDX instead of WordPress

folks I sent an e-mail but I believe you guys rather use github instead.
so, I don’t have a WordPress blog to import posts or pages. I’d like to use .mdx files within the folders instead of connecting to a WordPress site for data. is there a way to set this up? if possible, could you provide some steps to guide on how to do this? thanks in advance

Hey Leonardo!
Thanks for the kind words in the email.
If you are wanting to use Markdown/MDX as your blog I would recommend going a different way. It would take a complete overhaul of next-wp to make it work for your usecase.
Here are some other repos to check out:

Nextra Blog Theme -- Very robust
MDX Starter by mer -- Very simple
Another Blog Starter -- Another one


Unhandled Exception: Bad state: Cannot emit new states after calling close

Not works in root of the widget
**class MyApp extends StatelessWidget {
// const MyApp({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
home: InternetWidget(
online: InitializerWidget(),
offline:Scaffold(
body: Center(child: Text('No Internet')),
),
whenOnline: () => InitializerWidget(),
whenOffline: () => Scaffold(
body: Center(child: Text('No Internet')),
),
),
);

}
}**

Thanks, @abdullah230695 . Can you please add a screenshot of the error you received?

Hi, actually the problem is ...
Consider that you have 3 screens and one main class , if you set InternetWidget in only main class and you moved to 1st screen then if you do data on/off that error occurs,  InternetWidget will works in all screens for each screen we need to implement that... But this needs to be implement on only main widget...
Pls set for globally detect it for all classes

Thank you @abdullah230695 , I can reproduce this issue and I've picked it for development. I will try to fix this as soon as I can.

And another issue here , if wifi is on and no internet connection is there then it won't detect the internet connection, it only checks that device is connected to wifi or internet

Create a separate ticket for this please, @abdullah230695

Ok bro , thank you

The fix is available in the version: 0.0.6

ok , thanks for the update


hamming distance?

Great piece of code - a useful find for our work -- thank you!!
One question: the readme states that the code only works with Euclidean distance. Is it possible for us to replace the "euclidean" function with a hamming distance function, or will that not work for some reason?
Thanks! Nick

Hey @npgauth - Thanks and glad you're finding it useful. I meant to add custom distance functions but never got around to it... I'll try to update the lib shortly to add the ability to construct a UMAP instance with a custom distance function

https://github.com/PAIR-code/umap-js/pull/15, should be merged / built shortly!

Very cool. I'll try it out shortly. Thanks @cannoneyed !!


Only Rails FAILSAFE message is being shown

I'm guessing I'm doing something wrong, but the only error message that shows up is:
500 Internal Server Error
If you are the administrator of this website, then please read this web application's log file and/or the web server's log file to find out what went wrong.

Running Rails 4.1 and Ruby 2.3.1.
The only thing I did to "install" exception_handler is to put it in my Gemfile:
gem 'exception_handler', '~> 0.5.0' #-> Gemfile

Hi there, many thanks for the comment.
This error is typically raised if a core issue is raised (circumventing ActionView etc), do you have the console log I could look at to verify what the problem is?
Many thanks!!
R

I'm having trouble replicating this in a newly-created application, so I'm guessing it's something I put in either an initializer or somewhere else.  In any case, if you can help me troubleshoot, I'd appreciate it.
For the record, this is being run locally, but in production mode.  Here's the log file output:
I, [2016-08-31T08:01:42.442845 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] Started GET "/asdfasdfasd" for <IP_ADDRESS> at 2016-08-31 08:01:42 -0400
F, [2016-08-31T08:01:42.448128 #19648] FATAL -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574]
ActionController::RoutingError (No route matches [GET] "/asdfasdfasd"):
  actionpack (4.1.10) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  rollbar (2.8.2) lib/rollbar/middleware/rails/show_exceptions.rb:22:in `call_with_rollbar'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  actionpack (4.1.10) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  railties (4.1.10) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.1.10) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.1.10) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.1.10) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.1.10) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.1.10) lib/rails/rack/logger.rb:20:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  request_store (1.1.0) lib/request_store/middleware.rb:8:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  actionpack (4.1.10) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  rack (1.5.5) lib/rack/methodoverride.rb:21:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  rack (1.5.5) lib/rack/runtime.rb:17:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  activesupport (4.1.10) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  actionpack (4.1.10) lib/action_dispatch/middleware/static.rb:84:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  rack (1.5.5) lib/rack/sendfile.rb:112:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  skylight (0.10.3) lib/skylight/middleware.rb:61:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  railties (4.1.10) lib/rails/engine.rb:514:in `call'
  railties (4.1.10) lib/rails/application.rb:144:in `call'
  newrelic_rpm (<IP_ADDRESS>8) lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  rack (1.5.5) lib/rack/content_length.rb:14:in `call'
  puma (2.11.2) lib/puma/server.rb:507:in `handle_request'
  puma (2.11.2) lib/puma/server.rb:375:in `process_client'
  puma (2.11.2) lib/puma/server.rb:262:in `block in run'
  puma (2.11.2) lib/puma/thread_pool.rb:104:in `block in spawn_thread'

I, [2016-08-31T08:01:42.453402 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] [Rollbar] Scheduling payload
I, [2016-08-31T08:01:42.453485 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] [Rollbar] Sending payload
W, [2016-08-31T08:01:42.726759 #19648]  WARN -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] [Rollbar] Got unexpected status code from Rollbar api: 400
I, [2016-08-31T08:01:42.726871 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] [Rollbar] Response: {
  "err": 1,
  "message": "access token required"
}
I, [2016-08-31T08:01:42.726924 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] [Rollbar] Details: https://rollbar.com/instance/uuid?uuid=26f2b376-134b-496d-975f-295ecca7144d (only available if report was successful)
I, [2016-08-31T08:01:42.727674 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] Processing by ExceptionHandler::ExceptionController#show as HTML
I, [2016-08-31T08:01:42.729022 #19648]  INFO -- : [remo] [5565bc81-8e24-48f6-8d34-cc64c9b79574] Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)

And here's the output from the console:
=> Booting Puma
=> Rails 4.1.10 application starting in production on http://<IP_ADDRESS>:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (<IP_ADDRESS>). Consider using <IP_ADDRESS> (--binding option)
=> Ctrl-C to shutdown server
Puma 2.11.2 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://<IP_ADDRESS>:3000
Error during failsafe response: uncaught throw :warden
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/warden-1.2.3/lib/warden/proxy.rb:128:in `throw'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/warden-1.2.3/lib/warden/proxy.rb:128:in `authenticate!'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/devise-3.4.1/lib/devise/controllers/helpers.rb:112:in `authenticate_user!'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:429:in `block in make_lambda'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:161:in `block in halting'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:501:in `block in call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:501:in `each'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:501:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/callbacks.rb:86:in `run_callbacks'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/abstract_controller/callbacks.rb:19:in `process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal/rescue.rb:29:in `process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/notifications.rb:159:in `block in instrument'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/notifications.rb:159:in `instrument'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activerecord-4.1.10/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/abstract_controller/base.rb:136:in `process'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionview-4.1.10/lib/action_view/rendering.rb:30:in `process'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal.rb:196:in `dispatch'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_controller/metal.rb:232:in `block in action'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/exception_handler-0.5.1/lib/exception_handler.rb:78:in `block (2 levels) in <class:Engine>'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_dispatch/middleware/show_exceptions.rb:46:in `render_exception'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_dispatch/middleware/show_exceptions.rb:35:in `rescue in call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/railties-4.1.10/lib/rails/rack/logger.rb:38:in `call_app'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/railties-4.1.10/lib/rails/rack/logger.rb:20:in `block in call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:68:in `block in tagged'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:26:in `tagged'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:68:in `tagged'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/railties-4.1.10/lib/rails/rack/logger.rb:20:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/request_store-1.1.0/lib/request_store/middleware.rb:8:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_dispatch/middleware/request_id.rb:21:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/rack-1.5.5/lib/rack/methodoverride.rb:21:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/rack-1.5.5/lib/rack/runtime.rb:17:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/activesupport-4.1.10/lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/actionpack-4.1.10/lib/action_dispatch/middleware/static.rb:84:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/rack-1.5.5/lib/rack/sendfile.rb:112:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/skylight-0.10.3/lib/skylight/middleware.rb:61:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/railties-4.1.10/lib/rails/engine.rb:514:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/railties-4.1.10/lib/rails/application.rb:144:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/rack-1.5.5/lib/rack/content_length.rb:14:in `call'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/puma-2.11.2/lib/puma/server.rb:507:in `handle_request'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/puma-2.11.2/lib/puma/server.rb:375:in `process_client'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/puma-2.11.2/lib/puma/server.rb:262:in `block in run'
  /Users/pragone/.rvm/gems/ruby-2.3.1@mygemset/gems/puma-2.11.2/lib/puma/thread_pool.rb:104:in `block in spawn_thread'

Unfortunately, even with an empty application.haml file, I'm getting the same error.

Do you have a repo I could look at?

Unfortunately at the moment I do not (problem is happening in a private repo).  I'm trying to replicate it in a fresh project, but having difficulty with it, but unfortunately that information has not helped me pinpoint where in my app I've created the problem.

Alright looks like this is a combination of two issues.
First, as you mentioned, was my application.haml file.  More specifically, it was that file attempting to use path helpers and presumably-existing methods from Devise that were not, in fact, available.
Second, the devise method authenticate_user!, which is run as a before_filter in my ApplicationController does something that does not play nicely with this exception handling process.  Presumably, it falls in line with the first problem - calling something that doesn't exist when it assumes it does.

Yes, I've had that issue before. Have you tried skip_before_action in the ExceptionController?

Ah good idea.  Since I'm currently just using everything out of the box from exception_handler, I added this line to my ApplicationController:
skip_before_filter :authenticate_user!, if: Proc.new { controller_name.to_s == 'exception'}

That seems to have solved the problem for, now at least.

Hi @richpeck -
Seems that the main, actual "issue" here is that when using exception_handler, all links on every page have to be reference to main_app, which is rather frustrating.  Is there any easy way around that?

It's not every page, it's only the application layout because it's used for the 404 error. You can change the layout called in the 404 error with another of your choice:
 - I've forgotten if the "layouts" feature works in the config, if not I can push a new version otherwise you'll be able to add an ExceptionController with explicit declaration of that layout on there.

Ahhh It seems exception_handler assumes the existence of a root_url path, which I did not have in my application.
It may be worthwhile to raise that as an error on startup, if possible?  Or use an alternative if it doesn't exist? (Perhaps just '/')

I also had this issue when migrating an app from an existing setup to Heroku, and it was caused by me forgetting to run rake db:migrate 🤦♂

@dkniffin Did the issue resolve after the migration?

The rake db:migrate resolved the issue. I was just posting that comment here for posterity, in case someone else found this result from Google, like I did :)

That's good to hear!!

Ah good idea. Since I'm currently just using everything out of the box from exception_handler, I added this line to my ApplicationController:
skip_before_filter :authenticate_user!, if: Proc.new { controller_name.to_s == 'exception'}

That seems to have solved the problem for, now at least.

This solved my issue. I just changed 'exception' to 'exceptions' and it worked. Thanks!


Updates to Plupload 2

Removes plupload libraries from build.  This way a new version of plupload does not require a new version of the angular directive.
Updates demo to use plupload 2

plupload should now be obtained via
bower install plupload

This seems very helpful, why don't you accept this pull request? It would be good to see these images on Demo.


setStatic not working!

I peeked at the source and I am seeing this code that seems to prevent the grid to be made static
 if (self.opts.staticGrid || typeof node == 'undefined' || node === null) {
                return;
            }

self.opts.staticGrid is set to true so this will return before doing anything

You're right. It looks like #431 broke this functionality. I'm pleased the jQuery-ui requirement was removed, but unfortunately it only accounted for static being set initially and not dynamically changed. We'll probably end up rolling back the change set. Thanks for identifying this.

@artknight This should be fixed in v.0.2.6. Could you let me know? It should still make sure jquery-ui is not a requirement, but should now work if you modify setStatic at any time.

@artknight I have no idea if this was fixed Aug 16, 2016, but it should be fixed now. setStatic was working, but staticGrid was not. And now it does work.

this is fixed now. Thanks!


Remove LTO

Objective
#6461 introduced lto = true as a profile setting for release builds. This is causing the  run-examples CI task to timeout.
Solution
Remove it.

bors retry


isModified() should not only return true if the user has enabled tracking

I'm a bit perplexed as to how this ever worked. I'm going to have to dig in the history to figure out what happened here as I'm confident this setting used to persist.
Fixes #969

probably broken by me in https://github.com/GoogleCloudPlatform/google-cloud-intellij/pull/808/files

Aha!  Now we know at least when this started.  On the plus side that should mean we're under-counting opt-in users.


Removing -it flag from docker run command in pongo.sh

Is the -it flag needed in the docker run command?

Glad to see this PR! The -it makes having pongo in a CI/CD pipeline complicated.

I haven't gotten around to test this yet, preferably I'd like a complete example for setting it up using Travis CI (or any other).
@r1ckr @C13490888 would you mind sharing your CI set up? or even propose a PR with the examples documented?

Would you like for me to update the documentation? The difference is that now we don't need to provide the -it.
On our CD/CI we first we clone down the repo without the -it flag and then run it like this:
KONG_VERSION=${KONG_VERSION} pongo run ./spec

Pretty elegant 👍

A PR with some piece of sample CI setup for "inspiration" would be nice, a couple of clone commands and a matrix to test it. A contribution would be great.
(and just last week we added pongo lint which should be in any CI as well 😄 )

@r1ckr another question regarding the set up; do you cache the generated docker-images?

Hey @Tieske:

@r1ckr another question regarding the set up; do you cache the generated docker-images?

We do not generate a docker image with the plugin we are creating, we test it with pongo and later mount the volume onto the upstream docker container, the pipeline looks like this:
##### 1. Set Kong version #####
KONG_VERSION=1.2.1

##### 2. Run our tests for the plugin #####
KONG_VERSION=${KONG_VERSION} pongo run ./spec

##### 3. Run kong mounting the plugin #####
docker run -d --name kong \
-e KONG_LUA_PACKAGE_PATH="/custom/?.lua;;"
-e KONG_PLUGINS="bundled,my-plugin-dir"
-v $(pwd)/my-plugin-dir:/custom/kong/plugins/my-plugin-dir \
kong:${KONG_VERSION}

A PR with some piece of sample CI setup for "inspiration" would be nice, a couple of clone commands and a matrix to test it. A contribution would be great.
(and just last week we added pongo lint which should be in any CI as well 😄 )

I could work on the sample CI setup and the clone commands, what do you mean by the matrix to test it? Would you have an example?

I could work on the sample CI setup and the clone commands, what do you mean by the matrix to test it? Would you have an example?

test matrix, which versions of Kong, what combinations of datastores (if relevant)
eg. 1.3.0 + postgres, 1.3.0 + cassandra, 1.4.2 + postgres, etc.

We do not generate a docker image with the plugin we are creating, we test it with pongo and later mount the volume onto the upstream docker container

I meant whether you're caching the images that Pongo itself creates (since they are static for each Kong version, but never exist on a CI vm, hence always get re-created). But your response already provides me the answer 😄 .
From your example I get you're only testing against a single Kong version, it would probably make more sense when you'd test against multiple Kong versions

@r1ckr here's what I meant with the matrix: https://docs.travis-ci.com/user/build-matrix/

From your example I get you're only testing against a single Kong version, it would probably make more sense when you'd test against multiple Kong versions

This is a good advice and caching will be essential. Let me come back to you with that matrix.

I read something about caching docker images somewhere, let me check where...
Here it is: https://github.com/travis-ci/travis-ci/issues/5358
Especially this comment seems useful, since when testing against multiple Kong images, most of the images will be shared: https://github.com/travis-ci/travis-ci/issues/5358#issuecomment-519389443

fyi; today added CI setup to Pongo; see https://github.com/Kong/kong-pongo#setting-up-ci


List Addresses reads from accumulate balances

Pull Request Test Coverage Report for Build 531531529

2 of 93 (2.15%)  changed or added relevant lines in 4 files are covered.
8 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.2%) to 26.575%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

services/services_control.go
0
6
0.0%

services/indexes/params/params.go
0
9
0.0%

services/indexes/params/collections.go
0
17
0.0%

services/indexes/avax/reader.go
2
61
3.28%

Files with Coverage Reduction
New Missed Lines
%

services/services_control.go
8
0%

Totals

Change from base Build 531313753:
-0.2%

Covered Lines:
1384

Relevant Lines:
5208

💛  - Coveralls


Current Asset Switch action

Goal
Global inventory action to "Switch to Current Asset".
Motivation
Our most common use for the inventory (apart from updating to latest) is to switch to the current asset. We can do that through the switcher UI but that involves several clicks and waiting for the switching UI to load.
Implementation
Separate logic from switch UI to a library method. Method should throw an error if subset/representation does not exist on the current asset.
Visual feedback to the user afterwards about which containers failed to switch.

With the current speed enhancements and the "Current Asset" button on the switcher, I dont think this is needed anymore.


Electrum beta 4.0 Connecting issues

Electrum 4.0 beta not connected. I tried manually still it has no connection.

which servers? also was tor running?

It is auto connect. How do I run tor? Do I have to install ?

fixed with Electrum v4.0.3


Occasional Errors In Pipeline

While running phpstan in the context of our Magento project locally we get no errors, but occasionally with the same code base running in a ci/cd pipeline we will get errors that will either change or disappear on a re-run.
The errors that do appear seem to only occur with extension attributes.

71     Call to method getSuppliers() on an unknown class
Magento\Sales\Api\Data\OrderExtensionInterface.
💡 Learn more at https://phpstan.org/user-guide/discovering-symbols

In our pipeline and also lokally we are running

./vendor/bin/phpstan analyse --memory-limit=4G --configuration=.dev/tests/static/testsuite/Magento/Test/Php/_files/phpstan/db-systel.neon

With the config
parameters:
	level: 4
	treatPhpDocTypesAsCertain: false
	paths:
		- %currentWorkingDirectory%/app/code
		- %currentWorkingDirectory%/app/design
	magento:
		magentoRoot: %currentWorkingDirectory%
	ignoreErrors:
		-
			# reason: false positive magic methods
			message: '#Call to an undefined method [a-zA-Z0-9\\_]+::setData|hasData|unsetData|getData|toArray\(\)#'
		-
			# reason: false positive with CartInterface
			message: '#Call to an undefined method Magento\\Quote\\Api\\Data\\CartInterface::getAllVisibleItems\(\).#'
		-
			message: '#Call to an undefined method Magento\\Quote\\Api\\Data\\CartInterface::getGrandTotal\(\).#'
		-
			message: '#Call to an undefined method Magento\\Quote\\Api\\Data\\CartInterface::getPayment\(\).#'

I have tried clearing the phpstan cache both locally and in the pipeline as well as locally clearing the generated folder as in the pipeline we have no generated folder.

Thanks for reporting the issue @dmanners.
The difference between local and CI runs is that locally, PHPStan and this extension will most likely use the Magento-generated classes (if they exist), while in CI, the PHPStan extension generates the missing classes by itself with its own logic. Still, that does not explain why CI occasionally breaks.

Yeah it's odd some runs it's fine and some the errors appear but on a rerun everything is then green. I have also tested it locally without a generated folder and it's still green locally. I will also check that we dont override a magento file with a local patch that isnt applied in the pipeline as well.
I have also tested out firstly clearing the phpstan cache folder before running the check.

Ok after a bit more debugging I have found that disabling the parallel processing then the errors do not seem to appear.
	parallel:
		maximumNumberOfProcesses: 1

Here I have run our pipeline 3 times and had no error cases.

Uh, good catch! Fixing this issue might not be easy due to the way the autoloader & the code generation in this extension work. Will think about it.

I will keep this updated after a week or so of pipeline runs to see if this setting helps us in the long run or just randomly today.

Sounds like a plan. Don't close the issue if the current setting works for you. I'll take this as an opportunity to discuss with Ondrej how to better hook into PHPStan to generate the classes when they do not exist. The autoloader magic isn't ideal and seems to break a few things, e.g. the Rector integration (see #297). Looks like a larger refactoring is needed to improve things.
If the setting does work for you, please consider adding a PR to the README that includes a hint on how to resolve the issue.

Yeah this seems to have fixed the issue with us a week of pipeline runs and no false positive errors in the phpstan job.

I've discussed this issue with Ondřej the other day. If you want to run the processes in parallel, it would be best to run Magento's setup:di:compile command before running PHPStan. This way, Magento will generate all "missing" files, and the autoloaders of our extension are not executed.
I will have to check how to change the extension's architecture to allow the code generation to happen only once. Ideally, without invoking a separate CLI tool.


New documentation for project workflow and contribution guidelines

@leehambley These are my suggestions for improving the project documentation for Capistrano, specifically the processes used by contributors and maintainers.
To summarize:

CONTRIBUTING now focuses on how to get help and submit issues.
DEVELOPMENT is a new document that explains how to run the test suites, how to submit PRs, and the process by which the maintainers triage issues and merge pull requests.
RELEASING is a new document that explains the release process (this is very bare bones for now).

My goals for these changes:

Adopt a friendly tone that encourages community involvement
Get all maintainers onto the same page
Propose how we should use GitHub labels to improve communication (see DEVELOPMENT)
Make documentation suitable to be used by all projects under the Capistrano umbrella (sshkit, capistrano-* plugins)

I was inspired by the documentation in the Bundler repository, and have followed a similar structure.

@leehambley @will-in-wi While we are on the subject of documentation: could I get your opinions on this PR? I've overhauled the CONTRIBUTING and related documents to make Capistrano more welcoming to new contributors. There's also a new DEVELOPMENT file with instructions on how to get the test suite running, as a well as an explanation of how we triage issues and PRs.
If you feel this is too big of a change and should be repackaged as smaller PRs, let me know.

It's a massive :+1: from me @mattbrictson

@leehambley Great! That's good enough for me. :smile: Can you merge it?


Update GitHub issue templates

I left Prometheus Operator in on purpose, due to being a dependency of kube-prometheus. Happy to discuss anyway.


test(tiller): cover crash fixed by #4630

While investigating a tiller crash on v2.10.0 (see recent comments in #3125), I pulled down the code
and wrote a test replicating the crash I was experiencing. I then realized that the crash had been fixed, and was able to locate the fix in #4630 after running a quck bisect.
Since there don't appear to be any tests that cover this crash, and I had written one myself, I figured I might as well put up a PR for it.
Here's what the test failure on v2.10.0 looks like:
-- FAIL: TestUpdateReleasePendingInstall_Force (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x50 pc=0x1d128d8]

goroutine 235 [running]:
testing.tRunner.func1(0xc420493c20)
        /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:742 +0x29d
panic(0x1eb8d80, 0x2a12db0)
        /usr/local/Cellar/go/1.10/libexec/src/runtime/panic.go:505 +0x229
k8s.io/helm/pkg/tiller.(*ReleaseServer).performUpdateForce(0xc4208210b0, 0xc4202c6dc0, 0x0, 0x0, 0x2174220)
        /Users/mattrasmus/go/src/k8s.io/helm/pkg/tiller/release_update.go:166 +0x188
k8s.io/helm/pkg/tiller.(*ReleaseServer).UpdateRelease(0xc4208210b0, 0x2191780, 0xc420820f30, 0xc4202c6dc0, 0x29aeb90, 0x38, 0x2d2)
        /Users/mattrasmus/go/src/k8s.io/helm/pkg/tiller/release_update.go:43 +0x245
k8s.io/helm/pkg/tiller.TestUpdateReleasePendingInstall_Force(0xc420493c20)
        /Users/mattrasmus/go/src/k8s.io/helm/pkg/tiller/release_update_test.go:549 +0x120
testing.tRunner(0xc420493c20, 0x20e5c70)
        /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:777 +0xd0
created by testing.(*T).Run
        /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:824 +0x2e0
FAIL    k8s.io/helm/pkg/tiller  0.118s

Signed-off-by: Matt Rasmus<EMAIL_ADDRESS>

thanks @mttr! Looks like at this time DockerHub is down so I'll kick off another test job once it's back online. Thanks so much for back-filling the test case! It's incredibly appreciated.

I kicked off another test job.

thanks @mattfarina :)


slider orientation change by options like "Horizontal slider" and "Vertical-slider"

user chnage the mode of slider by giving value in slider options
e.g.  sliderOrientation: 'vertical-slider'
sliderOrientation: 'horizontal-slider'

fixed


Enable deprecated API wrappers for _ALT implementation

Wrappers mbedtls_.*_process are as good for _ALT implementations as they are for internal software implementation. Hence moved outside !MBEDTLS_.*_PROCESS_ALT flags.
Very urgent as blocks PR https://github.com/ARMmbed/mbed-os/pull/6176

Most CI is passing. Since it is needed urgently. Merging.

@mazimkhan Can you clarify the need for this? I don't like starting to deviate from our simple rule of having alternative implementations re-implement the whole API.

Why would we include the wrapper for xxx_process but not the other wrappers defining the functions without return value from those with return value?

Sorry this is an urgent change to enable feature-opaque-keys delivery. Alternative to this to have wrappers in mbed-os for all missing functions and across all targets. That is not feasible at this time. Also that duplicates what @k-stachowiak is doing for development branch.

I guess that means that some alternative implementation driver in Mbed OS hasn't been updated to the 2.7 API level? Why are we doing this hack in Mbed TLS instead of we fixing that driver?

@k-stachowiak is fixing the drivers in his PR

Reverting in #1400


libz-ng-sys v1.1.20 Build error on Windows10

I used cargo update to update the project dependencies, and the libz-ng-sys version was upgraded from 1.1.16 to 1.1.20. After that, the following build error occurred. Reverting to version 1.1.16 makes the build process work normally.

Error info
2024-11-08T16:55:07.1961291+08:00 ERROR Flycheck failed to run the following command: CommandHandle { program: "C:\\Users\\user\\.cargo\\bin\\cargo.exe", arguments: ["check", "--workspace", "--message-format=json-diagnostic-rendered-ansi", "--manifest-path", "D:\\workspace\\project\\termio\\Cargo.toml", "--keep-going", "--all-targets"], current_dir: Some("D:\\workspace\\project\\termio") }, error=Cargo watcher failed, the command produced no valid metadata (exit code: ExitStatus(ExitStatus(101))):
warning: `C:\Users\user\.cargo\config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
   Compiling libz-ng-sys v1.1.20
error: failed to run custom build command for `libz-ng-sys v1.1.20`
Caused by:
process didn't exit successfully: D:\workspace\project\termio\target\debug\build\libz-ng-sys-58b6229362f2a8de\build-script-cmake (exit code: 101)
--- stdout
CMAKE_TOOLCHAIN_FILE_x86_64-pc-windows-msvc = None
CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_msvc = None
HOST_CMAKE_TOOLCHAIN_FILE = None
CMAKE_TOOLCHAIN_FILE = None
CMAKE_GENERATOR_x86_64-pc-windows-msvc = None
CMAKE_GENERATOR_x86_64_pc_windows_msvc = None
HOST_CMAKE_GENERATOR = None
CMAKE_GENERATOR = None
CMAKE_PREFIX_PATH_x86_64-pc-windows-msvc = None
CMAKE_PREFIX_PATH_x86_64_pc_windows_msvc = None
HOST_CMAKE_PREFIX_PATH = None
CMAKE_PREFIX_PATH = None
CMAKE_x86_64-pc-windows-msvc = None
CMAKE_x86_64_pc_windows_msvc = None
HOST_CMAKE = None
CMAKE = None
running: "cmake" "C:\Users\user\.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\libz-ng-sys-1.1.20\src/zlib-ng" "-G" "Visual Studio 17 2022" "-Thost=x64" "-Ax64" "-DBUILD_SHARED_LIBS=OFF" "-DZLIB_COMPAT=OFF" "-DZLIB_ENABLE_TESTS=OFF" "-DWITH_GZFILEOP=ON" "-DCMAKE_INSTALL_PREFIX=D:\workspace\project\termio\target\debug\build\libz-ng-sys-82a53b6d42830301\out" "-DCMAKE_C_FLAGS= -nologo -MD -Brepro" "-DCMAKE_C_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_BUILD_TYPE=Debug"
-- Using CMake version 3.24.2
-- ZLIB_HEADER_VERSION: 1.3.1
-- ZLIBNG_HEADER_VERSION: 2.2.2
-- Selecting Windows SDK version 10.0.25206.0 to target Windows 10.0.19045.
-- Arch detected: 'x86_64'
-- Basearch of 'x86_64' has been detected as: 'x86'
-- Architecture-specific source files: arch/x86/x86_features.c;arch/x86/chunkset_sse2.c;arch/x86/compare256_sse2.c;arch/x86/slide_hash_sse2.c;arch/x86/adler32_ssse3.c;arch/x86/chunkset_ssse3.c;arch/x86/adler32_sse42.c;arch/x86/crc32_pclmulqdq.c;arch/x86/slide_hash_avx2.c;arch/x86/chunkset_avx2.c;arch/x86/compare256_avx2.c;arch/x86/adler32_avx2.c;arch/x86/adler32_avx512.c;arch/x86/adler32_avx512_vnni.c;arch/x86/crc32_vpclmulqdq.c
-- The following features have been enabled:

XSAVE, Support XSAVE intrinsics using ""
SSSE3_ADLER32, Support SSSE3-accelerated adler32, using ""
SSE42_CRC, Support SSE4.2 optimized adler32 hash generation, using ""
PCLMUL_CRC, Support CRC hash generation using PCLMULQDQ, using " "
AVX2_SLIDEHASH, Support AVX2 optimized slide_hash, using "/arch:AVX2"
AVX2_CHUNKSET, Support AVX2 optimized chunkset, using "/arch:AVX2"
AVX2_COMPARE256, Support AVX2 optimized compare256, using "/arch:AVX2"
AVX2_ADLER32, Support AVX2-accelerated adler32, using "/arch:AVX2"
AVX512_ADLER32, Support AVX512-accelerated adler32, using "/arch:AVX512"
AVX512VNNI_ADLER32, Support AVX512VNNI adler32, using "/arch:AVX512"
VPCLMUL_CRC, Support CRC hash generation using VPCLMULQDQ, using "  /arch:AVX512"
WITH_GZFILEOP, Compile with support for gzFile related functions
ZLIBNG_ENABLE_TESTS, Test zlib-ng specific API
WITH_SANITIZER, Enable sanitizer support
WITH_GTEST, Build gtest_zlib
WITH_OPTIM, Build with optimisation
WITH_NEW_STRATEGIES, Use new strategies
WITH_RUNTIME_CPU_DETECTION, Build with runtime CPU detection
WITH_AVX2, Build with AVX2
WITH_AVX512, Build with AVX512
WITH_AVX512VNNI, Build with AVX512 VNNI
WITH_SSE2, Build with SSE2
WITH_SSSE3, Build with SSSE3
WITH_SSE42, Build with SSE42
WITH_PCLMULQDQ, Build with PCLMULQDQ
WITH_VPCLMULQDQ, Build with VPCLMULQDQ

-- The following features have been disabled:

ZLIB_SYMBOL_PREFIX, Publicly exported symbols DO NOT have a custom prefix
ZLIB_COMPAT, Compile with zlib compatible API
ZLIB_ENABLE_TESTS, Build test binaries
WITH_FUZZERS, Build test/fuzz
WITH_BENCHMARKS, Build test/benchmarks
WITH_BENCHMARK_APPS, Build application benchmarks
WITH_NATIVE_INSTRUCTIONS, Instruct the compiler to use the full instruction set on this host (gcc/clang -march=native)
WITH_MAINTAINER_WARNINGS, Build with project maintainer warnings
WITH_CODE_COVERAGE, Enable code coverage reporting
WITH_INFLATE_STRICT, Build with strict inflate distance checking
WITH_INFLATE_ALLOW_INVALID_DIST, Build with zero fill for inflate invalid distances
INSTALL_UTILS, Copy minigzip and minideflate during install

-- Configuring done
-- Generating done
-- Build files have been written to: D:/workspace/project/termio/target/debug/build/libz-ng-sys-82a53b6d42830301/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Debug" "--parallel" "12"
适用于 .NET Framework MSBuild 版本 17.11.9+a69bbaaf5
adler32_c.c

C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\libz-ng-sys-1.1.20\src\zlib-ng\zbuild.h(1,1): error C2220: 以下警告被视为错误 [D:\workspace\project\termio\target\debug\build\libz-ng-sys-82a53b6d42830301\out\build\zlib.vcxproj]
(编译源文件“C:/Users/user/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libz-ng-sys-1.1.20/src/zlib-ng/arch/generic/adler32_c.c”)
......
C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\libz-ng-sys-1.1.20\src\zlib-ng\zbuild.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 [D:\workspace\project\termio\target\debug\build\libz-ng-sys-82a53b6d42830301\out\build\zlib.vcxproj]
(编译源文件“C:/Users/user/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libz-ng-sys-1.1.20/src/zlib-ng/gzwrite.c”)
正在生成代码...

--- stderr
thread 'main' panicked at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\cmake-0.1.51\src/lib.rs:1100:5:
command did not execute successfully, got: exit code: 1
build script failed, must exit now
stack backtrace:
0:     0x7ff67355aabd - std::backtrace_rs::backtrace::dbghelp64::trace
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src....\backtrace\src\backtrace\dbghelp64.rs:91
1:     0x7ff67355aabd - std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src....\backtrace\src\backtrace\mod.rs:66
2:     0x7ff67355aabd - std::sys_common::backtrace::_print_fmt
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\sys_common\backtrace.rs:68
3:     0x7ff67355aabd - std::sys_common::backtrace::_print::impl$0::fmt
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\sys_common\backtrace.rs:44
4:     0x7ff673576ae9 - core::fmt::rt::Argument::fmt
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\core\src\fmt\rt.rs:165
5:     0x7ff673576ae9 - core::fmt::write
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\core\src\fmt\mod.rs:1168
6:     0x7ff6735565d1 - std::io::Write::write_fmtstd::sys::pal::windows::stdio::Stderr
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\io\mod.rs:1835
7:     0x7ff67355a896 - std::sys_common::backtrace::print
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\sys_common\backtrace.rs:34
8:     0x7ff67355ccd8 - std::panicking::default_hook::closure$1
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\panicking.rs:265
9:     0x7ff67355c989 - std::panicking::default_hook
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\panicking.rs:292
10:     0x7ff67355d30e - std::panicking::rust_panic_with_hook
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\panicking.rs:793
11:     0x7ff67355d156 - std::panicking::begin_panic_handler::closure$0
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\panicking.rs:667
12:     0x7ff67355b42f - std::sys_common::backtrace::__rust_end_short_backtracestd::panicking::begin_panic_handler::closure_env$0,never$
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\sys_common\backtrace.rs:171
13:     0x7ff67355cd76 - std::panicking::begin_panic_handler
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\panicking.rs:658
14:     0x7ff67357cc64 - core::panicking::panic_fmt
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\core\src\panicking.rs:74
15:     0x7ff6734b0766 - cmake::fail
at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\cmake-0.1.51\src\lib.rs:1100
16:     0x7ff6734affb3 - cmake::run
at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\cmake-0.1.51\src\lib.rs:1078
17:     0x7ff6734ac4f8 - cmake::Config::build
at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\cmake-0.1.51\src\lib.rs:874
18:     0x7ff6734a37ba - build_script_cmake::build_zlib_ng
at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\libz-ng-sys-1.1.20\zng\cmake.rs:42
19:     0x7ff6734a42a0 - build_script_cmake::main
at C:\Users\user.cargo\registry\src\mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd\libz-ng-sys-1.1.20\zng\cmake.rs:80
20:     0x7ff6734a137b - core::ops::function::FnOnce::call_once<void ()(),tuple$<> >
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5\library\core\src\ops\function.rs:250
21:     0x7ff6734a100e - core::hint::black_box
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5\library\core\src\hint.rs:338
22:     0x7ff6734a100e - std::sys_common::backtrace::__rust_begin_short_backtrace<void ()(),tuple$<> >
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5\library\std\src\sys_common\backtrace.rs:155
23:     0x7ff6734a1181 - std::rt::lang_start::closure$0<tuple$<> >
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5\library\std\src\rt.rs:159
24:     0x7ff6735525fe - std::rt::lang_start_internal
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5/library\std\src\rt.rs:141
25:     0x7ff6734a115a - std::rt::lang_start<tuple$<> >
at /rustc/f1586001ace26df7cafeb6534eaf76fb2c5513e5\library\std\src\rt.rs:158
26:     0x7ff6734a4329 - main
27:     0x7ff67357aec8 - invoke_main
at D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
28:     0x7ff67357aec8 - __scrt_common_main_seh
at D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
29:     0x7ffbc1897374 - BaseThreadInitThunk
30:     0x7ffbc2c9cc91 - RtlUserThreadStart

I think this is a duplicate of #225. If there is anything special about your case, please feel free to leave a comment there as well.
Thank you.


Connecting with virtual envs supported?

Description of problem
I wanted to connect spyder with a virtual environment (VE). Spyder is only installed in "main" python (C:\dev_amd64\Python36) but not in the VE "myve". I installed ipykernel in the VE and set the python interpreter in Tools/Proferences/Python Interpreter to python.exe in the VE.
In the IPython shell in can see that the paths for the VE were added but surprisingly  c:\\dev_amd64\\python36\\lib\\site-packages from the main python is also on sys.path:
In [1]: import sys
In [2]: sys.path
Out[2]:
['',
 'c:\\dev_amd64\\python36\\lib\\site-packages',
 'c:\\dev_amd64\\python36\\lib\\site-packages\\spyder',
 'C:\\dev_src\\_pyve\\myve\\Scripts\\python36.zip',
 'C:\\dev_amd64\\Python36\\DLLs',
 'C:\\dev_amd64\\Python36\\lib',
 'C:\\dev_amd64\\Python36',
 'C:\\dev_src\\_pyve\\myve',
 'C:\\dev_src\\_pyve\\myve\\lib\\site-packages',
 'c:\\dev_amd64\\python36\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\david\\.ipython']

So the VE is not isolated. Is this intended? Am I trying something that is not supported?
For comparison, VE activated from a Windows command prompt:
C:\Users\david>c:\dev_src\_pyve\myve\Scripts\activate.bat
(myve) C:\Users\david>py
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['',
'c:\\dev_src\\_pyve\\myve\\Scripts\\python36.zip',
'C:\\dev_amd64\\Python36\\DLLs',
'C:\\dev_amd64\\Python36\\lib',
'C:\\dev_amd64\\Python36',
'c:\\dev_src\\_pyve\\myve',
'c:\\dev_src\\_pyve\\myve\\lib\\site-packages']
>>>

Version and main components

Spyder Version: 3.2.4
Python Version: 3.6.3 (tried also 2.7.14)
Qt Version: 5.9.2
PyQt Version: 5.9.1
Operating system: Win 10 Pro German
Dependencies:
IPython >=4.0    :  6.2.1 (OK)
cython >=0.21    :  0.27.1 (OK)
jedi >=0.9.0     :  0.11.0 (OK)
nbconvert >=4.0  :  5.3.1 (OK)
numpy >=1.7      :  1.13.3 (OK)
pandas >=0.13.1  :  None (NOK)
pycodestyle >=2.3:  2.3.1 (OK)
pyflakes >=0.6.0 :  1.6.0 (OK)
pygments >=2.0   :  2.2.0 (OK)
pylint >=0.25    :  1.7.4 (OK)
qtconsole >=4.2.0:  4.3.1 (OK)
rope >=0.9.4     :  0.10.7 (OK)
sphinx >=0.6.6   :  1.6.5 (OK)
sympy >=0.7.3    :  None (NOK)

Thanks for reporting. This will be possible in Spyder 4, but most probably with conda environments at the beginning. For now, there's nothing we can do about it, sorry.

Thanks for the reply. For others with the same question: related issue #1575 (and maybe also #5441).
I would appreciate if standard VEs could be also supported. Not everyone can/wants to use conda. As a first step, it would be already very nice if VEs created outside of Spyder could be used.


Improve bash completion for docker run --cap-{add,drop}

Docker has several capabilities enabled by default and some not, see https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities.
Before this PR, both --cap-add and --cap-drop would complete the full set of capabilities.
This PR reduces the completion to only those capabilities that can be added/dropped.

cherry-picked into 17.03.1 through https://github.com/docker/docker/pull/31754


Fb skrls cli

initial commit for cli-client

some inconsistence were found in the structure of the project


fix: add missing known-css-properties dependency

#847 introduced a dependency on known-css-properties but didn't declare that in package.json

Thanks! Good catch.


Support Core 3? Nuget says it needs to install lots of 2.0 dependencies

When trying to add this nuget package to a new Core3 application, it lists a lot of 2.0 dependencies that apparently would need to be installed:

Scared to do so, as it might start dll hell...

This library was build for net core 2.0. No testing was done on 3.0 yet. PRs are open if you want to port it to 3.0.

I wish I could help with that, but i'm a complete beginner at the moment
On Wed, 27 Nov 2019, 19:14 Gerard Gunnewijk<EMAIL_ADDRESS>wrote:

This library was build for net core 2.0. No testing was done on 3.0 yet.
PRs are open if you want to port it to 3.0.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/synercoder/FormsAuthentication/issues/15?email_source=notifications&email_token=AJ2SWSMNHOLDFX43FIUS5XDQVZJBXA5CNFSM4JSCIA3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFJFMUI#issuecomment-559044177,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJ2SWSK3S77WHW4QVJCUVPTQVZJBXANCNFSM4JSCIA3A
.

Well then, I did a thing.
https://www.nuget.org/packages/Synercoding.FormsAuthentication/3.1.0-alpha01
Currently build as alpha01, I dont expect any new bugs versus previous version, but please let me know if this version works for you.


TNT Error

System information:
Windows 10 64 bits
SpongeForge 1.11.2-2227-6.0.0-BETA-2190
Steps to reproduce:

Place 2 blocks of tnt right next to eachother
Ingnite one of the blocks of TNT
Once the TNT blows up, this error is thrown.
Sometimes it seems to result in a full server crash, but that only happened once to me and I can't reproduce it anymore. The error is consistent tho.

http://pastebin.com/jcJvXkC3

@gabizou Can you take a look at this?


False positive for standard:discouraged-comment-location

The following gets flagged:
        start(
          currentMeditation = resumed,
          beginningSound = null, // Just leads to confusion.
        )

The error is placed at the start of //:  A comment in a 'value_argument_list' is only allowed when placed on a separate line (standard:discouraged-comment-location)
Either I don't understand the exception message or I believe this is a false positive.  The function signature looks like this:
private fun start(
    currentMeditation: CurrentMeditation,
    beginningSound: Sound?,
)

Some more mentions that I have:
val options = listOf(
  data?.encodedSchemeSpecificPart?.takeWhile { it != '?'
)

I tried to disable that rule ktlint_standard_discouraged-comment-location=disabled and then I run again into https://github.com/pinterest/ktlint/issues/2338
Then it seems like I also need to ktlint_standard_class-signature=disabled which is a bummer because looking at it, I'd want it. Isn't it possible for ktlint to reuse the code while still allowing a rule to be disabled? It really seems like a flaw in the design system from the user perspective.

Side note: Why does ktlint_standard_class-signature=disabled work when the rule in the documentation is listed as experimental? Should not it be ktlint_experimental_class-signature=disabled?

See faq https://pinterest.github.io/ktlint/latest/faq/#why-does-ktlint-discourage-certain-comment-locations and https://pinterest.github.io/ktlint/latest/faq/#why-is-a-rule-skipped-when-i-disable-some-other-rule and #2338

Why does ktlint_standard_class-signature=disabled work when the rule in the documentation is listed as experimental? Should not it be ktlint_experimental_class-signature=disabled

See https://pinterest.github.io/ktlint/latest/rules/experimental/

I still don't understand why putting ktlint_standard_class-signature=disabled in the .editorconfig file works when the rule is stated as experimental and I'd assume that I need to put ktlint_experimental_class-signature=disabled.

I still don't understand why putting ktlint_standard_class-signature=disabled in the .editorconfig file works when the rule is stated as experimental and I'd assume that I need to put ktlint_experimental_class-signature=disabled.

Up until ktlint 0.47.x there were two different rulesets: standard and experimental. Moving rules from experimental to standard resulted in breaking changes as the rule identifier changed from experimental:some-rule to standard:some-rule. Only the experimental rule set could contain experimental rules. Starting from 0.48.x rules are individually marked as experimental. So all rules provided by ktlint are located in the ruleset standard. Some rules in the standard rule set are marked as experimental.

Thanks for the explanation!


Inject group preferences in a project

This is an extension of issue #65.
I have a project containing a notebook that uses a licensed software, which is going to be forked and run by a large group of people (e.g. 100 students).
I obviously cannot copy the software license in a public project's repo. I also want to allow other users who are not entitled to use my license to seamlessly (i.e. fork, start env, and play) run my project with their own license, if they have one.
Note: the above is used as an example. We could think of other use cases, such as seamlessly deploying core-site.xml and other configs to a project that needs to access a hadoop cluster backend.
We can assume that the project uses a stock docker image, and that it is possible to agree on a standard configuration scheme for that image, such as an agreed-upon environment variable containing a license key.
At the moment I can think of two options if I exclude all other options that involve copying the license in the project's repo:

Configure each personal (private) renku-env as described in #65. This option provides a seamless experience, however users must set their environment themselves, and must remember to update it when the license changes.

Extend #65 to support the concept of shared properties, e.g.  a group-owned renku-env repos, that can be added as submodules or hooks in the user's renku-env repos. When a user creates her personal environment, a list of shared properties can be suggested to her (e.g. the renku-env of all the groups that she is member of). In addition we could tag the groups, e.g. default, which are automatically applied to members of the group who don't have an environment. We have to be careful with that thought - if we allow someone to create a default for someone else, the feature could easily be abused.

As a user my preference lean on .2, because it allows me to easily manage the properties of a large number of non-expert users. I can for instance create a repo with a matlab license, and deploy the license to a 100 students by making them all members of that repo.

If it's for the group, why not bake it into the docker image?

I exclude all other options that involve baking the license in the image, because I may have many different projects using the software, and many team members working on their own copies of the projects. That's a lot of projects that I need to keep up to date when the license or configuration properties changes. More importantly, I would like to be able to share the project as-is with my collaborators, who may have their own license (think matlab). I cannot share the license, and I also don't want the license to be part of the commit, so that we have the same versions of the code/docker image when comparing our results. The feature introduced in #65 makes it easier, because we just need to maintain the user profiles, instead of 100s of projects. I am just suggesting to go one step further, and manage common properties from a single location.

What happens when a user is a member of multiple groups that each set their own group-level properties? How should we decide at runtime which one to apply?

closing as this will no longer be relevant when gitlab is not the source of group membership.


Test groups go inside each other

First, thanks!  I have a small project where I wanted to add unit tests and didn't want to add a huge framework.  This extension fit the bill perfectly.
The test group feature works, but is seems that the groups are inserted inside the previous one, see the screenshot.
Also, the closing comment mark is displayed on the testing tree, but that can be fixed by just placing it on the next line.

Glad you like the extension, and great questions!
Just pushed a fix for both of these in version 0.4.5.
Now, the */ will be scrubbed from the name; also the test groups will always be at the outer level.
Let me know if the fix works on your end  :)
Cheers!

It does, thank you!


Broken link on readme.md

The link in the Mapping specification section is broken:
To see practical examples and usages of mapping, see: https://docs.datastax.com/en/pulsar/doc/search.html?searchQuery=mapping

@chrislatimer we can update the link once we have the documentation site online

@chrislatimer we can update the link once we have the documentation site online

Correct - the link is a "leap of faith" value that looks ahead to when the DataStax Apache Pulsar Connector docs are deployed at GA (~ Jan 25) to https://docs.datastax.com/en/pulsar-sink/docs/.  Between now and GA, it's a 404.

Correct - the link is a "leap of faith" value that looks ahead to when the DataStax Apache Pulsar Connector docs are deployed at GA (~ Jan 25) to https://docs.datastax.com/en/pulsar-sink/docs/.  Between now and GA, it's a 404.

Just to be clear on this, it looks like we're doing a simple text search on the docs for "mapping"? Do we have enough content planned in our docs to feel confident that this search will return "practical examples and usages of mapping" as stated in the readme?

Just to be clear on this, it looks like we're doing a simple text search on the docs for "mapping"? Do we have enough content planned in our docs to feel confident that this search will return "practical examples and usages of mapping" as stated in the readme?

Just to be clear on this, it looks like we're doing a simple text search on the docs for "mapping"? Do we have enough content planned in our docs to feel confident that this search will return "practical examples and usages of mapping" as stated in the readme?

@chrislatimer
I copied from the Kafka Sink
https://github.com/datastax/kafka-sink

Just to be clear on this, it looks like we're doing a simple text search on the docs for "mapping"? Do we have enough content planned in our docs to feel confident that this search will return "practical examples and usages of mapping" as stated in the readme?

@chrislatimer
I copied from the Kafka Sink
https://github.com/datastax/kafka-sink

@chrislatimer  @johnsmartco we should remove the link or change it to something more useful.
btw we can change it at anytime, as github shows the current master branch, no need to cut a release

@chrislatimer  @johnsmartco we should remove the link or change it to something more useful.
btw we can change it at anytime, as github shows the current master branch, no need to cut a release

(cleaning up old issues, for now the link is up)


Cross Tenant Custom Subdomains

The following should be updated to include that any subdomains must also be within a single directory/tenant. It is implied but not explicit:
Make sure the domain name isn't already in use in another directory. A domain name can only be verified in one directory, which means that if your domain name is currently verified in another directory, it can't also be verified in the new directory. To fix this duplication problem, you must delete the domain name from the old directory.

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

ID: 455c7ecb-4214-5ad1-dc68-88ff558e98c7
Version Independent ID: 381e1b03-06cd-64ac-c811-9e15fa0c4457
Content: Add your custom domain - Azure Active Directory
Content Source: articles/active-directory/fundamentals/add-custom-domain.md
Service: active-directory
GitHub Login: @eross-msft
Microsoft Alias: lizross

@cogran
Thanks for your feedback! We will investigate and update as appropriate.

When the primary Domain is being verified to the Tenant, the child/sub Domain can not be verified to another tenant.

We are closing this thread. Let us know if you need further information.

@MarileeTurscak-MSFT @neeleshray
No information about subdomains was added to the document - can you please reopen and reconfirm?
This support article seems to suggest you can use subdomains if you register the subdomain first.
https://support.microsoft.com/en-us/help/3070341/how-to-manage-subdomains-and-parent-domains-in-different-organizations

I would also like an answer based on the link @dcbrown16 provided.


Skip update counter caches upon creation

Hi, I have a model, Click that has a bunch of counter caches defined on it dynamically. Click is an analytics endpoint in my app that creates/updates an instance of Click with some data attached to it. It needs to be lightning fast (ideally the database portion should consume less than 50ms). Without the counter caches defined on Click, an instance takes between 20-50ms to be committed to the database (including time for validations to run). When I add my counter caches to the model (see code below), the time-to-commit goes up a whole order of magnitude (200-800ms), which essentially doubles or triples the total respond time of my endpoint.
I'm curious to know if there is some way to define my counter caches in a way that they are not checked/updated on create (I have a separate task that periodically calls Click.counter_culture_fix_counts, so I'm not terribly concerned with updating the counts in real time. I've tried setting touch: false, but that does not seem to help that much.
Here is my code:
class Click < ApplicationRecord
    SOURCES = ['email', 'sms', 'direct', ...] # There are a LOT of other sources, which is why I do it this way
    ['company', 'link', 'post', 'contact', 'request'].each do |model|
        SOURCES.each do |source|
            counter_culture(
                model.to_sym,
                column_name: Proc.new { |cp| "#{source}_clicks_count" },
                column_names: {
                    ["clicks.source_name = ?", source] => "#{source}_clicks_count"
                },
                touch: false # I also tried "#{source}_clicks_count_changed" but that doesn't make much difference in terms of performance
            )
        end
    end
end

The time is actually significantly worse still when creating a new instance of Click as opposed to updating an existing instance. Here is the log when creating a new instance (the previous logs were for updates).
Started GET "/Y29udGFjdF9pZD0yMTc5JmRlc2NyaXB0aW9uPVRoaXMraXMrdGhlK3Byb2dyYW0rdGhhdCt3YXMrdGhlK2ltcGV0dXMrZm9yK05BU0ErUGx1bStCcm9vaytTdGF0aW9uJmh1Yl9wb3N0X2lkPTQzOTMmaW1hZ2U9JnRpdGxlPVRoZStOdWNsZWFyK0FpcnBsYW5lJnVybD1odHRwJTNBJTJGJTJGeW91dHViZS5jb20lMkZ3YXRjaCUzRnYlM0RmTEs5aFlYV1p3NA==" for <IP_ADDRESS> at 2018-05-01 13:34:03 -0500
Processing by Leads::GeneralController#home as HTML
  Parameters: {"uri"=>"Y29udGFjdF9pZD0yMTc5JmRlc2NyaXB0aW9uPVRoaXMraXMrdGhlK3Byb2dyYW0rdGhhdCt3YXMrdGhlK2ltcGV0dXMrZm9yK05BU0ErUGx1bStCcm9vaytTdGF0aW9uJmh1Yl9wb3N0X2lkPTQzOTMmaW1hZ2U9JnRpdGxlPVRoZStOdWNsZWFyK0FpcnBsYW5lJnVybD1odHRwJTNBJTJGJTJGeW91dHViZS5jb20lMkZ3YXRjaCUzRnYlM0RmTEs5aFlYV1p3NA=="}
  SniplyLink Load (0.7ms)  SELECT  "sniply_links".* FROM "sniply_links" WHERE "sniply_links"."slug" = 'y2y7f' LIMIT 1
  Click Load (0.9ms)  SELECT  "clicks".* FROM "clicks" WHERE "clicks"."sniply_link_id" = 161 AND "clicks"."source_name" = 'messenger' AND "clicks"."fpuuid" = 'MTUyNTE4NzQxMjU2My03M2xtN2U=' AND "clicks"."ip_address" = '<IP_ADDRESS>' LIMIT 1
   (0.4ms)  BEGIN
  SQL (0.7ms)  INSERT INTO "clicks" ("company_id", "sniply_link_id", "hub_post_id", "contact_id", "request_id", "source_name", "ip_address", "fpuuid", "created_at", "updated_at") VALUES (94, 161, 4393, 2179, 63385, 'messenger', '<IP_ADDRESS>', 'MTUyNTE4NzQxMjU2My03M2xtN2U=', '2018-05-01 18:34:03.524552', '2018-05-01 18:34:03.524552') RETURNING "id"
  Company Load (1.1ms)  SELECT  "companies".*    FROM "requests" WHERE "requests"."id" = 63385 LIMIT 1
  SQL (1.3ms)  UPDATE "requests" SET "twitter_clicks_count" = COALESCE("twitter_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (1.2ms)  UPDATE "requests" SET "facebook_clicks_count" = COALESCE("facebook_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.8ms)  UPDATE "requests" SET "linkedin_clicks_count" = COALESCE("linkedin_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.9ms)  UPDATE "requests" SET "email_clicks_count" = COALESCE("email_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.8ms)  UPDATE "requests" SET "sms_clicks_count" = COALESCE("sms_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.9ms)  UPDATE "requests" SET "whatsapp_clicks_count" = COALESCE("whatsapp_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (1.1ms)  UPDATE "requests" SET "messenger_clicks_count" = COALESCE("messenger_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.8ms)  UPDATE "requests" SET "google_plus_clicks_count" = COALESCE("google_plus_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.7ms)  UPDATE "requests" SET "doximity_clicks_count" = COALESCE("doximity_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.6ms)  UPDATE "requests" SET "wechat_clicks_count" = COALESCE("wechat_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
  SQL (0.8ms)  UPDATE "requests" SET "direct_clicks_count" = COALESCE("direct_clicks_count", 0) + 1 WHERE "requests"."id" = 63385
   (1.5ms)  COMMIT
****************************
1.053839
****************************
  Rendering leads/general/home.html.erb within leads/layouts/application
  Rendered leads/general/_bypass.html.erb (0.4ms)
  Rendered leads/general/home.html.erb within leads/layouts/application (3.7ms)
  Rendered leads/general/head/_scripts.html.erb (0.6ms)
  Rendered leads/general/head/_meta.html.erb (0.7ms)
Completed 200 OK in 1255ms (Views: 197.9ms | ActiveRecord: 138.4ms)

It looks like you have 55 counter caches on five different models. I don't think I've ever seen anybody use counter_culture this aggressively before. 😄
I don't really know what to tell you, though—it doesn't appear that there are any unnecessary SQL queries here. Your best bet would probably be to move the counter updates to the background with Sidekiq, however that's not something counter_culture supports currently. If you were to add a PR for it, I'd be happy to look at that.

I might just offload the work to a background job then. This gem is generally a life saver for an analytics/metrics intensive app like mine. I've got (collectively) hundreds of counter caches throughout the app. Thanks again for taking a look!

Yup, happy to. Would it be an option to push the entire create to a background job? That way your endpoint can respond quickly no matter how long the inserts take. :)

Hadn't thought of that. Takes a few ms to queue a job in Redis vs tens of ms or more for a SQL commit.  Very clever! :)


ci(benchmarking): Do not merge -- Testing only

Coverage remained the same at 98.153% when pulling f1a7c01ef2fe9497a6c9ad4bd29d1a664b6fc8d5 on yasir/addingBenchmarkStage into 73a427f6d4effcad2f73f51de3971d572e1aa4f7 on master.


Unable to complete Zero to JupyterHub with Kubernetes installation

A couple (of us) folks were (independently) trying to follow the Zero to JupyterHub with Kubernetes guide today using microk8s when we were stopped by the same problem. One of us filed an issue on the JupyterHub site but respondents weren't very familiar with microk8s and I thought it might be better to ask you'all about it.
The problem report and our attempts to solve it are detailed in this issue filing:
jhub on microk8s
Basically, I can get the Helm installation running, except for one LoadBalancer service (proxy-public) which remains in perpetual <pending> state.
The relevant part of the Z2JH Guide is here. Note in Step 5, the service/proxy-public should eventually get an external IP address, but it hangs on my microk8s installation.
Any thoughts on where I am going wrong would be greatly appreciated.
inspection-report-20190312_202442.tar.gz

Hi @hickst
MicroK8s does not come with a loadbalancer so the proxy public service will not get an external IP and will remain pending. You can access the service directly through the cluster IP since the machine MicroK8s is running on is a Kubernetes node. You can also set the proxy-public to be of type NodePort. If I am not mistaken you can set that service type in the config.yaml of the "Prepare configuration file" section as you do in the case of minikube https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/master/minikube-config.yaml#L3 .


Can't convert int to string

In _send self.p_tx pin(self.pin_txd
Seems to give me this error. Been trying everything. Not sure.  Can copy and paste all your code and nothing

Line  40ish

hello @Sfrjoshpro
it relates to the SDI12 address used. Instead of integer address, use it as string (e.x. "0")
Indeed this needs to be made more flexible.

Yea this is a basic issue i tried hard coding the value and it just
Locks up my esp32 and I have to reflash the firmware

If I pass a int tho it cause it to lock up and I have to reflash.

First of all, sharing screenshots is not a very effient way to help you with code bugs. always prefer copy/pasting code in your response. Also try to write one answer each time (not multiple responses) as they are harder to track.
Any way, the code you should run is:
from microsdi12 import SDI12

sdi12 = None

try:
    sdi12 = SDI12(16,  17,  None, 2) # Pins are integers

    manufacturer = None
    model = None
    sensor_response = None
    address = "3" # Addresse are strings

    if sdi12.is_active(address):
        manufacturer, model = sdi12.get_sensor_info(address)
        response_array = sdi12.get_measurement(address)
        print(response_array)
except Exception as e:
    print("Exception while reading SDI-12 data")
finally:
    if sdi12:
        sdi12.close()

Regading the "device locking" that you mention, most likely the device that you are using is already using the UART 1 for something else. Thus, when initializing the SDI12 with UART ID 1, the device looses control. This is why i have initialized the SDI12 object with UART ID 2 at the end.

Thanks and my apologies I'm new to most this GitHub stuff. I'll give that a shot thanks

Closing due to inactivity. If the issue still exists, reopen.


Add ability to "copy-paste" a project configuration.

Description
TBA

Closing, duplicate of https://github.com/jbx-protocol/juice-interface/issues/1434


BoP

Terraforge  does not create the world with Biomes o Plenty biomes, but i found some items from the mod around like mushroom.
i tried downloading the Nature Finder mod to be sure and it didnt show a single BoP biome.
how can i fix that?

By default TerraForged should integrate custom biomes into the worldgen; this is a BOP "grove" in my world.
https://i.imgur.com/2FzBUsK.jpg
Have you messed with the Terraforged settings at all? Maybe you could try setting them to defaults.

Nope,didnt touch the settings

Try /terra locate bop:grove or something.

Ok, i simply tried reinstalling everything for the third time and now it work fine
aaah good ol' craft
thank you everybody


Sum of digits in a single statement

resolve conflicts and raise another pr
and also go through the updated rules in readme.md


make field-specific nested serializer class

When references rendered as nested docs, a field may need to give specific class for the nested serializer, instead of autogenerated.

Idea:
class NestedFooSerializer(DocumentSerializer):
    # blabla

class FooReferenceField(ReferenceField):
    serializer_class = NestedFooSerializer
    def __init__(self, **kwargs):
        super().__init__(model=Foo, **kwargs)

class Bar(Document):
    foo = FooReferenceField()

class BarSerializer(DocumentSerializer):
    class Meta:
        model = Bar
        depth = 0

class DeepBarSerializer(DocumentSerializer):
    class Meta:
        model = Bar
        depth = 1

assert repr(BarSerializer()) == """
class BarSerializer():
    foo = FooReferenceField()
"""

assert repr(DeepBarSerializer()) == """
class DeepBarSerializer():
    foo = NestedFooSerializer():
        # blabla
        pass
"""

It's a matter of ComboReferenceField vs representation.


snakemake/jobs.py:97: KeyError: ('all',) in new obj = self.cache[key]

Upgrading from Python 3.7 with Snakemake 5.13.0 to Python 3.8 with Snakemake 6.0.5, a working Snakemake workflow
Snakefile now fails with the error below.
> snakemake -p -nr
Building DAG of jobs...
Traceback (most recent call last):
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/jobs.py",
line 97, in new
    obj = self.cache[key]
KeyError: ('all',)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/__init__.py",
line 694, in snakemake
    success = workflow.execute(
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/workflow.py",
line 711, in execute
    dag.init()
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/dag.py", line
177, in init
    for job in map(self.rule2job, self.targetrules):
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/dag.py", line
1639, in rule2job
    return self.new_job(targetrule)
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/dag.py", line
1393, in new_job
    job = self.job_factory.new(
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/jobs.py",
line 99, in new
    obj = Job(rule, dag, wildcards_dict, format_wildcards, targetfile)
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/jobs.py",
line 158, in __init__
    self.input, input_mapping, self.dependencies = self.rule.expand_input(
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/rules.py",
line 802, in expand_input
    self._apply_wildcards(
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/rules.py",
line 725, in _apply_wildcards
    item = self.apply_path_modifier(item, property=property)
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/rules.py",
line 449, in apply_path_modifier
    return [apply(e) for e in item]
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/rules.py",
line 449, in <listcomp>
    return [apply(e) for e in item]
  File
"/pkg/python-3.8.8-0/lib/python3.8/site-packages/snakemake/path_modifier.py",
line 32, in modify
    modified_path.flags.update(path.flags)
AttributeError: 'numpy.flagsobj' object has no attribute 'update'

Additional information:
$ prun python3.7 snakemake --version
5.13.0

$ snakemake --version # Python 3.8
6.0.5

$ python3.7
Python 3.7.7 (default, Mar 31 2020, 11:32:50)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.version
'1.18.2'

$ python3.8
Python 3.8.8 (default, Mar 19 2021, 13:52:38)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.version
'1.20.1'

Using set() instead of np.unique() in the Snakefile line below fixes the issue.
idr_targets = list(np.unique(['%s/%s.peaks.%s.idr' %(outdir, peak_caller, '_'.join(os.path.basename(x).split('_')[:5])) for x in peak_targets]))


Show the correct shortcuts (OS) and disable on the tooltip

Show the correct command according to the user's operating system on the tooltip.

windows
Ctrl + B

osx
⌘ Cmd + B

Also, how can I remove this shortcut text from the tooltip?

Suggestion
Create an option shortcutsHint and when enabled the shortcut is displayed in the button tooltip.
shortcutsHint: When enabled the shortcut is displayed in the button tooltip. default: false {Boolean}

The 2.30.0 version has been updated.
If this issue has not been resolved, please reopen this issue.
Thank you.


Feature: add mobile view for tables

The toggle looks out of place in this snapshot - https://tf-venus-prod-vizreg.s3.amazonaws.com/57ffda6a9445ac6112d88e4afa0d9545b21ee8f7/index.html?id=new-chrome_iphone7_Components_Table_Mobile_View_Multiple_Rows.png#new-chrome_ipad_Components_Table_Mobile_View_Multiple_Rows.png

@coreyar I agree with you about the positioning of the toggle, however the designs are inconsistent; sometimes the last column is aligned to the right while other times it is aligned to the left.

Handling this on a case by case basis will add overhead which I think is unnecessary at this stage.


Update to Cadence v1.0.0-preview.12

Description
Automatically update to:

onflow/cadence v1.0.0-preview.12
onflow/flow-go-sdk v1.0.0-preview.10
onflow/flow-go 25d0a9f6e292

Thank you for the fixes @m-Peter!


[Freate Request] Create an ACI using custom container registry with NSG inbound rules.

Created an custom container registry in a Azure VM, which is configured with NSG rules to allow traffic from secure ip.
Creating an ACI using image from custom container registry is failing with error  504.
After allowing traffic in NSG's from all ip sources, was able to create ACI successfully.
This was confirmed to be an limitation in ACI and currently the only way is to whitelist the inbound connection is to use AzureCloud.Region service tag in NSG.
But due to security reason it's not possible to allow all ip's from a specific region in NSG. Request to provide either specify ACI service tag in NSG's or allow specify ip in NSG.

@rakesh08 since this repo is for doc related issues, can you please share the doc you are referencing so we can assign to the appropriate team? Thanks.

Their is no doc for this use case. Created below ticket for documentation. Kindly refer this.
https://github.com/MicrosoftDocs/azure-docs/issues/76352

@rakesh08 we'll review your feedback and get back to you shortly. Thanks.


Update for macOS 10.12.4 or newer

When installing Alfred-Workflow on macOS 10.12.4 and alfred 3.5.1, alfred complains with
This workflow contains a python library incompatible with macOS Sierra 10.12.4+

please help me, thanks.

@noogel help me, thanks.

https://www.alfredapp.com/help/troubleshooting/incompatible-python-workflow-library/
It will fix all workflows affected by the incompatibility.


[WIP] Refactor: Approve and Reject Tx modals

What it solves
Addresses the further refactor of ApproveTxModal and RejectTxModal after https://github.com/gnosis/safe-react/pull/3297

We need to pay attention to the catTxExecute function. It's used in this modal, and also in the tx list (to determine which actions to show), and later on also in the create/processTransaction.


Can anyone help with setting up keyboard shortcuts?

I'm not sure what is possible, but I would like to set the ALT+up/down combination for move line.up/down accordingly.  How could I do that? (using neovim / lazy.nvim)
mappings.lua

The root view of the files is as follows:

You should be able to use something like this:
n = {
  ["<M-Up>"] = { function() require("moveline").up() end, "moveline: up"  },
  ["<M-Down"] = { function() require("moveline").down() end, "moveline: down" },
}

Sorry, I still haven't figured out how to do this:(
I added, there are no errors, but nothing happens:(

Hmm I'll look into that. I'm in the process of rewriting this plugin anyways though, I would recommend using one of the other line-moving plugins for now.

Here's how I got my Alt-Up / Alt-Down to work:
-- .config/nvim/lua/plugins/moveline.lua
return {
  'willothy/moveline.nvim',
  build = 'make',
  lazy = false,
  config = function()
    local moveline = require('moveline')
    vim.keymap.set('n', '<a-Up>', moveline.up)
    vim.keymap.set('n', '<a-Down>', moveline.down)
    vim.keymap.set('v', '<as-Up>', moveline.block_up)
    vim.keymap.set('v', '<as-Down>', moveline.block_down)
  end
}


loadkeys compatible file

I've made a loadkeys compatible file for my personal use on Arch and our company servers when in the Linux VT and X keyboard mappings aren't available - would this be wanted for the repository?
I can't say I know what I'm doing here - there is a lot of verbosity I skipped over for lack of "not knowing what it was for". But it works...so yeah
On my Arch machine - this goes in /usr/share/kbd/keymaps/i386/qwerty/norman.map.gz - might be different for different distros
keycode  16 = +q
	shift keycode  16 = +Q
keycode  17 = +w
	shift keycode  17 = +W
keycode  18 = +d
	shift keycode  18 = +D
keycode  19 = +f
	shift keycode  19 = +F
keycode  20 = +k
	shift keycode  20 = +K
keycode  21 = +j
	shift keycode  21 = +J
keycode  22 = +u
	shift keycode  22 = +U
keycode  23 = +r
	shift keycode  23 = +R
keycode  24 = +l
	shift keycode  24 = +L
keycode  25 = semicolon        colon
keycode  30 = +a
	shift keycode  30 = +A
keycode  31 = +s
	shift keycode  31 = +S
keycode  32 = +e
	shift keycode  32 = +E
keycode  33 = +t
	shift keycode  33 = +T
keycode  34 = +g
	shift keycode  34 = +G
keycode  35 = +y
	shift keycode  35 = +Y
keycode  36 = +n
	shift keycode  36 = +N
keycode  37 = +i
	shift keycode  37 = +I
keycode  38 = +o
	shift keycode  38 = +O
keycode  39 = +h
	shift keycode  39 = +H
keycode  44 = +z
	shift keycode  44 = +Z
keycode  45 = +x
	shift keycode  45 = +X
keycode  46 = +c
	shift keycode  46 = +C
keycode  47 = +v
	shift keycode  47 = +V
keycode  48 = +b
	shift keycode  48 = +B
keycode  49 = +p
	shift keycode  49 = +P
keycode  50 = +m
	shift keycode  50 = +M

Love Norman!

Could you turn it into a pull request?
It seems odd to put in /usr/share/kbd/keymaps/i386/qwerty/norman.map.gz. Would it not work in something like /usr/share/kbd/keymaps/i386/norman/norman.map.gz?

Yeah can do.
Was unsure as to the schema for the folders there - looking in there i can see azerty and friends so your suggestion makes sense

https://github.com/deekayen/norman/pull/24


Master Docker Compose to deploy single components as a fully functional Bürokratt Chat + Backoffice

AS A DevOps
I WANT TO set up Bürokratt as a fully functional service with all of its base functionalities with minimal effort
SO THAT I wouldn't have to install and configure all components and service-respective DSLs manually
Acceptance Criteria
Allowed installation process
On your virtual server environment

[ ] https://github.com/buerokratt/NoOps.git is cloned
[ ] Change environment variables for every component under {component}/*.env (see example)
[ ] Use Chat+Backoffice Docker Compose file
[ ] #15
[ ] DSLs are provided to containers via volumes
[ ] #18

Checklist

[ ] ~Public Ruuter v1 is up and running~
[ ] ~Private Ruuter v1 is up and running~
[ ] ~Public Ruuter v2 is up and running~
[ ] ~Private Ruuter v2 is up and running~
[x] Postgres database has been set up
[x] Postgres schemas and their changes are applied by Liquibase
[ ] ~Data Mapper is up and running~
[ ] ~Resql is up and running~
[ ] ~TARA integration functionality is available via TIM~
[ ] ~Custom JWT functionality is available via TIM~
[ ] ~TLS-based communication between all components have been set up~

Master compose file ja ready. Requires some fine tuning.
Currently the master compose file is build with image build in mind.
File with image based deployment is to follow.


⚠ Bofrost.be has degraded performance

In bd5ea26, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1217 ms

Resolved: Bofrost.be performance has improved in b252977 after 6 minutes.