Can't do combine_parents with explicit join keys

I need to do #combine_parents with explicit join keys.
I tried to replace .combine_parents(one: addresses) with .combine(one: {address: [addresses, address_id: :id]}), but it crashes.
I don't know other way to accomplish what I need to do. Thanks
begin
  require 'bundler/inline'
rescue LoadError => e
  $stderr.puts 'Bundler version 1.10 or later is required.'
  raise e
end

gemfile(true) do
  source 'https://rubygems.org'
  gem 'rom'
  gem 'rom-sql'
  gem 'rom-repository'
  gem 'sqlite3'
  gem 'rspec'
end

require 'rspec/autorun'

describe ROM::Repository do
  let(:rom) { ROM.container(configuration) }
  let(:configuration) do
    ROM::Configuration.new(:sql, 'sqlite::memory').tap do |config|
      config.default.create_table(:users) do
        primary_key :id
        foreign_key :address_id, :addresses, null: false
      end

      config.default.create_table(:addresses) do
        primary_key :id
        column :street_name, String, null: false
        column :city, String, null: false
      end
    end
  end

  let(:repo) do
    Class.new(ROM::Repository[:users]) do
      relations :addresses
    end.new(rom)
  end

  before { create_user(street_name: 'street', city: 'city') }

  context 'with #combine_parents' do
    let(:relation) { repo.users.combine_parents(one: repo.addresses) }

    it 'works' do
      expect(relation.one.to_h).to include(
        address: hash_including(street_name: 'street', city: 'city')
      )
    end
  end

  context 'with #combine and explicit keys' do
    let(:relation) { repo.users.combine(one: {address: [repo.addresses, address_id: :id]}) }

    it 'works' do
      expect(relation.one.to_h).to include(
        address: hash_including(street_name: 'street', city: 'city')
      )
    end
  end

  def create_user(address)
    address_id = rom.relations[:addresses].insert(address)
    rom.relations[:users].insert(address_id: address_id)
  end
end

.F

Failures:

  1) ROM::Repository with #combine and explicit keys works
     Failure/Error:
       expect(relation.one.to_h).to include(
         address: hash_including(street_name: 'street', city: 'city')
       )

     ArgumentError:
       wrong number of arguments (given 1, expected 0)
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation.rb:125:in `call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-repository-1.0.1/lib/rom/repository/relation_proxy.rb:50:in `call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation/graph.rb:94:in `block in call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation/graph.rb:94:in `map'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation/graph.rb:94:in `call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation/composite.rb:21:in `call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-repository-1.0.1/lib/rom/repository/relation_proxy.rb:50:in `call'
     # /Users/kukunin/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rom-3.0.1/lib/rom/relation/materializable.rb:42:in `one'
     # rom_value_object_save.rb:58:in `block (3 levels) in <main>'

I actually know the reason: #combine_parents passes curried relation https://github.com/rom-rb/rom-repository/blob/master/lib/rom/repository/relation_proxy/combine.rb#L131 to #combine.
I don't know a workaround and I believe, since #combine is public API, it should work with uncarried relations

one workaround (actually improvement) is to use explicit FK in a sql schema, so rom can infer right join keys from schema

@Kukunin what's your expected behavior in case of passing a non-curried relation? since you're passing keys explicitly, but you're not passing your own view explicitly (curried relation is just a relation view but w/o its arguments) then how should we figure out which relation view should be used for combine?

I don't know anything about curried relation.
It's internals I, as rom-rb user, would like to not know about.
I saw about http://www.rubydoc.info/gems/rom-repository/ROM%2FRepository%2FRelationProxy%2FCombine:combine, that seems only way to pass foreign keys explicitly.
Bigger problem is more that it's not explicit how relations/combination works.
I didn't meant to be rude, I want to know rom internals just for fun personally, but I believe that goal to make rom programmer-friendly is desirable.

I don't know anything about curried relation. It's internals I, as rom-rb user, would like to not know about.

Hmm, I know I never explained this properly in docs but currying relations is a first class feature in rom. Relation composition is based on it.

I saw about http://www.rubydoc.info/gems/rom-repository/ROM%2FRepository%2FRelationProxy%2FCombine:combine, that seems only way to pass foreign keys explicitly.

I should clarify that these are not join/foreign keys. These are keys for combining data in memory. This works cross-db and is not an SQL-specific concept.

Bigger problem is more that it's not explicit how relations/combination works.

Not sure if I understand. This is 100% explicit. You must provide the exact relation view that should be used to compose with. The hash-based syntax is pretty much just syntactic sugar on top of explicit relation composition.

I didn't meant to be rude

Oh man I didn't take your feedback as rude! If my replies were less enthusiastic than the usual it's just because I had pretty exhausting couple of days with the ruby conf and traveling a lot in AU :) I appreciate a lot this kind of feedback so keep it coming whenever something feels wrong and I'm always happy to explain and help.

, I want to know rom internals just for fun personally, but I believe that goal to make rom programmer-friendly is desirable.

Yes this is the goal, rom should be as simple to use as possible. Composing relations is just pretty difficult to "wrap" in a cool looking API heh. It's getting better with each release.
I think I start to understand the reason of your problems - if I get this right you wanted to provide join keys and thought that rom will build joins for you somehow. This is not how this stuff works though. As I mentioned the keys you pass to combine method are something that we call "combine keys", they are used to merge data in memory, the fact these are often the same as join keys is just a coincident.
If you want to manually compose relations you need to provide a relation view that should be used, and if it's not a curried view then it means this is not a relation that can accept another relation to return the right data. ie when you load users with tasks, then there needs to be a task relation view that will load all tasks for particular users. ie you can define Tasks#for_users and do users.combine(many: { tasks: [tasks.for_users, id: :user_id] }) and in this case your for_users view will be called with all users and can do whatever it needs to do to return expected tasks. The whole association API is only used to automatically create these special views because it's so common that implementing it manually would be an overkill for everybody.

I should clarify that these are not join/foreign keys. These are keys for combining data in memory. This works cross-db and is not an SQL-specific concept.

Yep. That should make it even simpler - two arrays of hashes. How can I set combination keys without settings FK on schema? Why combine_parents doesn't require custom view on relation, but combine requires?

Not sure if I understand. This is 100% explicit. You must provide the exact relation view that should be used to compose with. The hash-based syntax is pretty much just syntactic sugar on top of explicit relation composition.

Problem that I still can't understand what views are. They looks mystic for me - some blocks which accept arguments (where they come from?, how many are there?) and return some relation. and also I need to define schema (schema { self })

Oh man I didn't take your feedback as rude! If my replies were less enthusiastic than the usual it's just because I had pretty exhausting couple of days with the ruby conf and traveling a lot in AU :) I appreciate a lot this kind of feedback so keep it coming whenever something feels wrong and I'm always happy to explain and help.

Thanks. That's kind of you
Probably, the root cause is total misunderstanding of relation views. I can't find even described term in glossary http://rom-rb.org/learn/glossary/ nor some documentation.
P.S. Found this http://rom-rb.org/learn/repositories/composing-relations/ (there is no link from main page). Re-read, and understood a little bit better.

Yep. That should make it even simpler - two arrays of hashes. How can I set combination keys without settings FK on schema? Why combine_parents doesn't require custom view on relation, but combine requires?

Because combine_parents makes an explicit assumption that you compose parent tuples with child tuples, and we use that assumption to infer combine keys using either schemas pk/fk or defaulting to :{parent_relation.name.dataset}_id for the child key and :id for the parent key (which btw I want to remove once all adapters support associations in schemas).
Now if you use combine there's no way to tell which relation should be treated as a parent and which as a child, hence we need the keys to be provided.
Another convention that we use is defaulting to for_#{relation.name.dataset} as the view that should be used for composition, it is only used by combine_parents and combine_children because they can infer the keys. We actually could make combine default to the same view name, and if it doesn't exist use for_combine along with provided keys. I just didn't want to make it even more complex than it already is in terms of implementation.

Problem that I still can't understand what views are. They looks mystic for me - some blocks which accept arguments (where they come from?, how many are there?) and return some relation. and also I need to define schema (schema { self })

Right, I should clarify that relation views are literally all relation methods that return other relations, you don't have to use view DSL to define a view. The reason why this DSL exists is because it allows you to define relation view schema upfront, so that we know how resulting tuples will look like without accessing a view. This is needed for composition so that keys can be grabbed from the schemas, otherwise you would have to provide it at runtime (in combine).

Probably, the root cause is total misunderstanding of relation views. I can't find even described term in glossary http://rom-rb.org/learn/glossary/ nor some documentation.

See ROM - Relations where the purpose of relations and their views is described.

btw to make your spec pass you could do this:
let(:relation) do
  repo.users.combine(
    one: { address: [repo.addresses.for_combine(address_id: :id), address_id: :id] }
  )
end

...which is literally what combine_parents ends up doing under the hood in this case.
Can you remind me why you want to do this?

I have one common polymorphic entity Attachment, but it may have different name in different context. For example, for Customer attachment is avatar. So I have avatar_id in customers relation, which I want to combine with attachments relation. That's why attachment_id doesn't fit and I need to override it.
P.S. My current database schema doesn't use fk. My current workaround was to add FK to schema and rom infers that data successfully

I think specifically this issue may be closed. I'd like to have read about #for_combine() method somewhere in documentation though

I think specifically this issue may be closed. I'd like to have read about #for_combine()

The reason why it's not documented is because it's a private API provided by auto_combine plugin in rom-sql

I have one common polymorphic entity Attachment, but it may have different name in different context. For example, for Customer attachment is avatar. So I have avatar_id in customers relation, which I want to combine with attachments relation. That's why attachment_id doesn't fit and I need to override it.

rom doesn't support polymorphic associations, for legacy reasons we could consider adding a plugin that will cover AR-like polymorphic associations though, but it will never be a first-class feature in rom because it doesn't allow you to use fk constraints properly.

btw, that's not polymorphic relation. It'd be so, if attachments had resource_id and resource_type columns. In this case, customer belongs_to attachment, but fk key is avatar_id not attachment_id.

OK then you need to configure these associations and set custom FKs


Add missing dvrEnabled getter in flashls playback.

Without this getter, it always return false because of !! operator in isDvrEnabled() container method.
Tested on Internet Explorer 11 with Windows 7. (which use flash hls instead of hls.js)

Coverage decreased (-0.02%) to 71.782% when pulling<PHONE_NUMBER>477692c2f43e378bfddc5ec75eaf84 on kslimani:fix-dvrEnabled-flashls into dea19c0a5d332768909f19d16b0ecf11a83a55ed on clappr:master.

Coverage decreased (-0.04%) to 71.761% when pulling 77966bb959eac2a99f2aa62a9f45a70e8fd204d8 on kslimani:fix-dvrEnabled-flashls into dea19c0a5d332768909f19d16b0ecf11a83a55ed on clappr:master.


Multiple network interfaces in EC2 instance

Hi
I followed cloudify-environment-setup-latest/aws.yaml and able to create EC2 instance within one interface. I need help on preparing the blueprint file for creating multiple interfaces in one EC2 instance.
Apprecicated if anyone can help on that.

tried to include two nics configuration in the blue print, but it is failed due to below reason. it looks like we cannot add more than one network interface in awssdk.
2018-03-29 08:07:53.948  CFY  [cloudify_host_gw6y9f.configure] Task failed 'cloudify_awssdk.ec2.resources.instances.create' -> An error occurred (InvalidParameterValue) when calling the RunInstances operation: Each network interface requires a unique device index.
2018-03-29 08:07:53.949  CFY  [ip2_5ncsjh.start] Sending task 'cloudify_awssdk.ec2.resources.elasticip.attach'
cloudify_host:
type: cloudify.nodes.aws.ec2.Instances
properties:
agent_config:
install_method: none
resource_config:
kwargs:
MinCount: 1
MaxCount: 1
ImageId: { get_input: ami }
InstanceType: { get_input: instance_type }
KeyName: { get_input: key_name }
BlockDeviceMappings:
- DeviceName: '/dev/sda1'
Ebs:
DeleteOnTermination: True
Placement:
AvailabilityZone: { get_input: availability_zone }
UserData: { get_attribute: [ cloudify_host_cloud_config, cloud_config ] }
client_config: *client_config
relationships:
- type: cloudify.relationships.depends_on
target: cloudify_host_cloud_config
- type: cloudify.relationships.depends_on
target: nic
- type: cloudify.relationships.depends_on
target: nic2
- type: cloudify.relationships.depends_on
target: pgwu_ami
interfaces:
cloudify.interfaces.lifecycle:
configure:
inputs:
resource_config: { get_property: [ SELF, resource_config, kwargs] }

Hi,
The way that you have presented it is supposed to work. I will look into it to see what is going on.
Another way to do this is like this:
  intermediate_nic_node:
    type: cloudify.nodes.Root
    relationships:
    - type: cloudify.relationships.depends_on
      target: nic
    - type: cloudify.relationships.depends_on
      target: nic1

  cloudify_host:
    type: cloudify.nodes.aws.ec2.Instances
    properties:
      agent_config:
        install_method: none
      resource_config:
        kwargs:
          MinCount: 1
          MaxCount: 1
          ImageId: { get_input: ami }
          InstanceType: { get_input: instance_type }
          BlockDeviceMappings:
          - DeviceName: '/dev/sda1'
            Ebs:
              DeleteOnTermination: True
          Placement:
            AvailabilityZone: { get_input: availability_zone }
          UserData: { get_attribute: [ cloudify_host_cloud_config, cloud_config ] }
          NetworkInterfaces:
          - DeviceIndex: 0
            NetworkInterfaceId: { get_attribute: [ nic, aws_resource_id ] }
          - DeviceIndex: 1
            NetworkInterfaceId: { get_attribute: [ nic1, aws_resource_id ] }
      client_config: *client_config
    relationships:
      - type: cloudify.relationships.depends_on
        target: cloudify_host_cloud_config
      - type: cloudify.relationships.depends_on
        target: intermediate_nic_node
      # - type: cloudify.relationships.depends_on
      #   target: nic
      # - type: cloudify.relationships.depends_on
      #   target: nic1
      - type: cloudify.relationships.depends_on
        target: centos_core_ami
    interfaces:
      cloudify.interfaces.lifecycle:
        configure:
          inputs:
            resource_config: { get_property: [ SELF, resource_config, kwargs] }

That's obviously not a great answer. We will fix it.

one question on the above setting. if I have 2 nic, I should have only one internet gateway or two?

I cannot really able to create the instance after using the syntax. is it possible for you to help on what is going wrong?
blueprint => https://pastebin.com/ZVrpkj3v
output => https://pastebin.com/UfeYaaNX

Hi, what is the command that you are using to execute this install workflow? Are you using "task retries and task retry interval", like this?
$ cfy install cloudify-environment-setup-latest/aws.yaml -i cloudify-environment-setup-latest/inputs/aws.yaml --install-plugins --task-retries=30 --task-retry-interval=5

These flags are required when running in local (CLI only mode).
By the way, we have provided a fix for the multiple nics in #116, see version 2.1.1.

I actually got this
ssh -i "test2.pem"<EMAIL_ADDRESS>Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
sounds like the user is wrong, but I have verified the key is correct.

I think the problem on login is not related to network configuration. it is related to the orginial env setup
is it possible to describe what is required to config in order to allow to login using ec2-user?

Hi
Understood that multiple nic is able to create now, but is there anyway to hardcode which NIC to which subnet?
in my case, I need to make sure the 1st nic (eth0) land on public_subnet. is there anyway to define it?

Hi, in the blueprint, the network is specified to the nic in SubnetId: { get_attribute: [ public_subnet, aws_resource_id] }:
  nic1:
    type: cloudify.nodes.aws.ec2.Interface
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          Description: Created by hello-world-blueprint aws-blueprint.yaml.
          SubnetId: { get_attribute: [ public_subnet, aws_resource_id] }
          Groups:
          - { get_attribute: [ security_group, aws_resource_id ] }
    relationships:
    - type: cloudify.relationships.depends_on
      target: public_subnet
    - type: cloudify.relationships.depends_on
      target: security_group
    - type: cloudify.relationships.depends_on
      target: security_group_rules
    interfaces:
      cloudify.interfaces.lifecycle:
        configure:
          inputs:
            resource_config: { get_property: [ SELF, resource_config, kwargs] }

The NIC ordering is per the ordering in the relationships.

Sorry for the late reply
below is my blueprint section, I expected nic0 is gettting IP address from <IP_ADDRESS>/28, and nic1 is getting IP address from <IP_ADDRESS>/28. However, it is found that nic0 (eth0) is actually assigned to <IP_ADDRESS>/28. is there anything wrong in the blueprint?
public_subnet_cidr:
default: <IP_ADDRESS>/28
private_subnet_cidr:
default: <IP_ADDRESS>/28
nic0:
type: cloudify.nodes.aws.ec2.Interface
properties:
client_config: *client_config
resource_config:
kwargs:
Description: OperA-1.
SubnetId: { get_attribute: [ public_subnet, aws_resource_id] }
Groups:
- { get_attribute: [ security_group, aws_resource_id ] }
relationships:
- type: cloudify.relationships.depends_on
target: public_subnet
- type: cloudify.relationships.depends_on
target: security_group
- type: cloudify.relationships.depends_on
target: security_group_rules
interfaces:
cloudify.interfaces.lifecycle:
configure:
inputs:
resource_config: { get_property: [ SELF, resource_config, kwargs] }
nic1:
type: cloudify.nodes.aws.ec2.Interface
properties:
client_config: *client_config
resource_config:
kwargs:
Description: OperA-2.
SubnetId: { get_attribute: [ private_subnet, aws_resource_id] }
Groups:
- { get_attribute: [ security_group_gn, aws_resource_id ] }
relationships:
- type: cloudify.relationships.depends_on
target: private_subnet
- type: cloudify.relationships.depends_on
target: security_group_gn
- type: cloudify.relationships.depends_on
target: security_group_rules_gn
interfaces:
cloudify.interfaces.lifecycle:
configure:
inputs:
resource_config: { get_property: [ SELF, resource_config, kwargs] }
cloudify_host:
type: cloudify.nodes.aws.ec2.Instances
properties:
agent_config:
install_method: none
resource_config:
kwargs:
MinCount: 1
MaxCount: 1
ImageId: { get_input: ami }
InstanceType: { get_input: instance_type }
KeyName: { get_input: key_name }
BlockDeviceMappings:
- DeviceName: '/dev/sda1'
Ebs:
DeleteOnTermination: True
Placement:
AvailabilityZone: { get_input: availability_zone }
UserData: { get_attribute: [ cloudify_host_cloud_config, cloud_config ] }
client_config: *client_config
relationships:
- type: cloudify.relationships.depends_on
target: cloudify_host_cloud_config
- type: cloudify.relationships.depends_on
target: nic0
- type: cloudify.relationships.depends_on
target: nic1
- type: cloudify.relationships.depends_on
target: test_ami
interfaces:
cloudify.interfaces.lifecycle:
configure:
inputs:
resource_config: { get_property: [ SELF, resource_config, kwargs] }

#119

how to get the IP address of network interface

@rbk1001 You should be able to access the runtime property create_response which matches the API reply:
{ get_attribute: [ my_nic, create_response, PrivateIpAddress ] }.
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.create_network_interface


complete add function

add function !

Great work. Would suggest adding in some test cases for add function 😀

i dont want to


Update fsouza/go-dockerclient to the last version.

This will fix the uninformative error message when trying to
run an unknown command in a docker container. Fix #610 .
Fixed in https://github.com/fsouza/go-dockerclient/commit/39c614e2d1e5b936b46298e873c26504419238e1

:+1:

We should test this on staging for a bit just to make sure there's nothing wonky, especially with emp run. Last time I tried there was a bug in the connection hijacking that made emp run stall.


fix: diff merge support \r line separator

This doesn't look right — it'll only look for \r when there are no \n characters in the string, so in "foo\rbar\n" it'd ignore the \r.
Also, won't CodeMirror have already normalized these to \n anyway, since getDiff is called on the editor content?


ocamlPackages : update some packages

Motivation for this change
Things done

[X] Tested using sandboxing
(nix.useChroot on NixOS,
or option build-use-chroot in nix.conf
on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] OS X
[ ] Linux

[X] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[X] Fits CONTRIBUTING.md.

It looks like most of the configuration for the compiler versions is the same, this should be generalized.

Indeed, I was to eager to submit it upstream, I forgot that I did a dirty copy/paste.

I rebased onto master to fix a conflict.
Is this PR ok to be merged ?

Travis error looks related:

while evaluating the file ‘/home/travis/.nox/nixpkgs/pkgs/development/compilers/ocaml/4.01.0.nix’:
anonymous function at /home/travis/.nox/nixpkgs/pkgs/development/compilers/ocaml/generic.nix:1:1 called without required argument ‘minor_version’, at /home/travis/.nox/nixpkgs/pkgs/development/compilers/ocaml/4.01.0.nix:1:1

Oh indeed, I had forgotten to update the 4.01 version.
It should be OK now


New version: AIMP.AIMP version 5.10.2418

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.2 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Url validation error

manifests\a\AIMP\AIMP\5.10.2418

https://www.aimp.ru

Error Message: No such host is known. No such host is known.

https://www.aimp.ru/forum/index.php

Error Message: No such host is known. No such host is known.

https://www.aimp.ru/?do=eula&os=windows

Error Message: No such host is known. No such host is known.

https://aimp.ru/files/windows/builds/aimp_5.10.2418_w64.exe

Error Message: No such host is known. No such host is known.

https://aimp.ru/files/windows/builds/aimp_5.10.2418_w32.exe

Error Message: No such host is known. No such host is known.

I can't validate this error - all of these URLs work fine for me.

Some of the installed applications require Microsoft.VCRedist.2012.x64 - please consider adding this as a dependency.


Power Platform Checker Stuck at 30 percentage until agent gets timeout

I have some issues with my Power Platform Checker a lot of the times it's getting stuck at 30% and just keep Calling status check API. Loop count X, this continue until my Azure DevOps Agent get Timeout (1 hour). Usually this step takes about 3-4 minutes to run.
This issue started yesterday. And it makes us unable to do any new releases.
[ 'Entering InvokePowerAppsChecker - EndProcessing' ]
[ 'Executing InvokePowerAppsChecker' ]
[ 'Upload started : 4 files' ]
[ 'Uploaded finished: 4 files taking 00:00:04.1805896' ]
[ 'Calling status check API. Loop count 1' ]
[ 'Finished calling status check API. Loop count 1' ]
[
  '... Activity Waiting on results(1); Status: Analyzing; PercentComplete: 10'
]
[ 'Pausing for 30 seconds.' ]
[ 'Calling status check API. Loop count 2' ]
[ 'Finished calling status check API. Loop count 2' ]
[
  '... Activity Waiting on results(1); Status: Analyzing; PercentComplete: 30'
]
[ 'Pausing for 30 seconds.' ]
[ 'Calling status check API. Loop count 3' ]
[ 'Finished calling status check API. Loop count 3' ]
[
  '... Activity Waiting on results(1); Status: Analyzing; PercentComplete: 30'
]
[ 'Pausing for 30 seconds.' ]
[ 'Calling status check API. Loop count 4' ]
[ 'Finished calling status check API. Loop count 4' ]
[
  '... Activity Waiting on results(1); Status: Analyzing; PercentComplete: 30'
]
[ 'Pausing for 30 seconds.' ]
[ 'Calling status check API. Loop count 5' ]
[ 'Finished calling status check API. Loop count 5' ]
[
  '... Activity Waiting on results(1); Status: Analyzing; PercentComplete: 30'
]

We're also getting exactly the same issue. Any update on how this can be resolved? Thank you.

We're also getting exactly the same issue. Any update on how this can be resolved? Thank you.

@ianmb21 I haven't yet, I was forced to disable this to all pipelines.

We are getting the same issue seems to be for @2 version of the task.

I have the same issue, also had to disable the checker. Is there a previous version that can be used that does work?


Using mongoose

This PR will merge into the number-db branch

Thanks for this! For this I think having the database local may be fine, but can mongoose also work with mongodb/cloud/atlas?

Yes, you need to update the env DB_STRING. This is the template for MongoDB Atlas mongodb+srv://USER:PASSWORD@SERVER/DATABASE?retryWrites=true&w=majority


[watcher] Improve Alert Text

Problem
What problem are we solving?
There are two problems with the current alert texts:

display full RPC urls, including potentially sensitive information (API Keys)
do not tag @everyone on discord

Impact
Why does this matter? Who does it impact? How much does it impact them? What is the urgency?

API keys get leaked to discord, need to be rotated.
sensitive notifications have delayed response times or are missed

Proposed Solution
[OPTIONAL] Thoughts on solution design. We could do  to solve this problem.

Log a subset of the urls
Tag everyone on the platforms where applicable (discord, telegram, slack)

Acceptance Criteria
From an end user perspective, the below criteria must be met to consider this done:

[ ] Alerts are sanitized
[ ] Tags are added

Complexity: 5
See the discussion in Sprint Poker #29
Powered by Parabol

Urgency: 1
See the discussion in Sprint Poker #30
Powered by Parabol

Impact: 2
See the discussion in Sprint Poker #30
Powered by Parabol


z index or order of Sprites across ParticleContainers?

hi,
thank you very much for your work on pixi.js, awesome library! i have been learning and using it the last couple months on a web game and have become stumped with how to handle z-index/z-order of sprites or animated sprites contained in separate ParticleContainers
demo: https://client.starpeace.io/ (Visitor Visa -> Alpha Stella -> Mercury)
if you "scroll/pan down", you can see some buildings rendered with incorrect isometric depth. i believe this makes sense due to current approach:

scene composed of layers ("ground or trees", "underlay", "buildings", "overlay")
each layer modeled as ParticleContainer, Sprite particles use textures from spritesheet
"buildings" layer has multiple spritesheets, so multiple ParticleContainers are used (one for each texture)
scene rendering depth based on ParticleContainer order, then children order

ideally i think 4) needs to compare depth of sprites across all containers, flattening to children order. i've been researching and trying a few thing without much luck: pixi-layers didn't seem to work with ParticleContainers and performance with Containers/layers didn't look feasible
i was going to start exploring source directly, but do you have any other suggestions or ideas?
no concerns writing my own logic if needed, and if i do head that route, would you recommend i switch things over to v5 first?
thanks again, appreciate your work!

Start exploring the source directly. v5 wont help you. As an author of pixi-layers I bless you for that experiment.
I have renderer even more effective than ParticleContainer that works with z-order but i dont share it because its project-dependent and requires extra knowledge.
Regarding your case, it looks like a work for pixi-tilemap, its good for static objects. However, in your case, it will also require to dive into code.

Also, https://github.com/pixijs/pixi-display/wiki#how-to-not-use-pixi-display

hi,
thanks for your response! okay, cool, i'll start looking through source to see if anything like our approach could work with changes. i'll also look more seriously at pixi-tilemap: originally worried we've have too many spritesheets, but might only have 8-12 (less than 16)
i'd love to learn more about other approaches, if you're able to share high-level ideas. i'm not very familiar with opengl/webgl or shaders, but willing to learn if that'd work better for this use-case, where we generally want to render lots of tiles across several layers with minimal interactions (but some, coming in future)
thanks again!

pixi-tilemap is used in rpgmaker MV, it combines 16 textures of 1024x1024 to 4 of 2048x2048. it uses multi-texture technique to maintain up to 16 textures in every layer. You can modify those settings in the lib for your case.


Can't assign external IP

I followed the steps, created a static IP address, and tried assigning it with --set controller.service.loadBalancerIP="XXXXXX", but it doesn't seem to work:
helm install stable/nginx-ingress --namespace kube-system --set controller.service.loadBalancerIP="XXXXXX"

When I run kubectl get service -l app=nginx-ingress the value "EXTERNAL_IP" stays pending forever.

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

ID: 12009c1f-282d-2632-fac0-64b09c432833
Version Independent ID: 6052d3d4-d295-9340-b16d-4c200e34cd73
Content: Create an HTTP ingress controller with a static IP address in Azure Kubernetes Service (AKS)
Content Source: articles/aks/ingress-static-ip.md
Service: container-service
GitHub Login: @iainfoulds
Microsoft Alias: iainfou

Ok I found my mistake, I created the IP in the resource group of the cluster, while it should have been in the "nodeResourceGroup"

Why resource group matters in this condition?

I got the same problem. I at least waited for 20 minutes and it's still pending. Both the AKS cluster and Public IP are on the same resource group. Is the cluster and Public IP must be located in two different resource groups?

If an IP address or disk resource is in a different resource group, the service principal for the AKS cluster needs to have additional permissions granted in order for it to be able to view, create, manage, etc. that resource. For advanced networking, for example, it's fine for the virtual network and subnet that the cluster uses to be in a different resource group, provided the service principal is granted the appropriate access. Otherwise, it's recommended disk or IP resources are created in the node resource group, which removes the need for additional permissions to be granted since they already apply at that level.


use alias field to correctly read container IDs

@cjellick @cloudnautique @vincent99
We used to rely on the container ID returned by cadvisor to match containerIDs to cattle instance resource Ids.
Cadvisor returned Ids were not consistent across OSes.
For eg, in Ubuntu, it is of the format
/docker/$ID
where ID is the docker generated ID
in CentOS, it is of the format
/system.slice/docker-$ID.scope
Due to this, the matching on CentOS failed.
This PR addresses this above issue, by matching with a different field called as alias. Alias has been found to have the ID in the correct format across different OSes.
The second commit brings back the memLimit field, which was lost when we upgraded to cadvisor v0.12.0.

@cjellick done.

LGTM


macOS make command error (probably ICU problem)

Hi, I am trying to setup meta toolkit on macOS 10.14.6. I followed the instructions and the issue here: https://github.com/meta-toolkit/meta/issues/191#issuecomment-354575135
Then the configuration worked but the make command still fails. The error message is:
-- [download 100% complete]

-- verifying file...
       file='/Users/zhuohao/Documents/meta/deps/icu-63.1/icu4c-63_1-src.tgz'
-- Downloading... done
-- extracting...
     src='/Users/zhuohao/Documents/meta/deps/icu-63.1/icu4c-63_1-src.tgz'
     dst='/Users/zhuohao/Documents/meta/build/deps/icu-63.1/src/ExternalICU'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[  1%] No patch step for 'ExternalICU'
[  1%] No update step for 'ExternalICU'
[  1%] Performing configure step for 'ExternalICU'
checking for ICU version numbers... release 63.1, library 63.1, unicode version 11.0
checking build system type... x86_64-apple-darwin18.7.0
checking host system type... x86_64-apple-darwin18.7.0
checking whether to build debug libraries... no
checking whether to build release libraries... yes
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... configure: error: in `/Users/zhuohao/Documents/meta/build/deps/icu-63.1/src/ExternalICU-build':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
make[2]: *** [deps/icu-63.1/src/ExternalICU-stamp/ExternalICU-configure] Error 1
make[1]: *** [CMakeFiles/ExternalICU.dir/all] Error 2
make: *** [all] Error 2

Is it something wrong with the ICU version 63.1? I also tried the develop branch but no luck.

I got a pretty much same error with icu-58.2.
checking whether we are cross compiling... configure: error: in /Users/wsun/workdir/github/meta/build/deps/icu-58.2/src/ExternalICU-build': configure: error: cannot run C compiled programs. If you meant to cross compile, use --host'.
See `config.log' for more details
make[2]: *** [deps/icu-58.2/src/ExternalICU-stamp/ExternalICU-configure] Error 1
make[1]: *** [CMakeFiles/ExternalICU.dir/all] Error 2
make: *** [all] Error 2

I get the same error with macOS 10.15.3 and icu-58.2
error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
make[2]: *** [deps/icu-58.2/src/ExternalICU-stamp/ExternalICU-configure] Error 1
make[1]: *** [CMakeFiles/ExternalICU.dir/all] Error 2
make: *** [all] Error 2

Have you found a workaround or fix for this?

I tried version 58.3, because version 58.2 seems to be unavailable.
But the problem persists.
checking for ICU version numbers... release 58.3, library 58.3, unicode version 9.0
checking build system type... x86_64-apple-darwin19.5.0
checking host system type... x86_64-apple-darwin19.5.0
checking whether to build debug libraries... no
checking whether to build release libraries... yes
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... configure: error: in 'XXXX/meta/build/deps/icu-58.2/src/ExternalICU-build':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use '--host'.
See 'config.log' for more details
make[2]: *** [deps/icu-58.2/src/ExternalICU-stamp/ExternalICU-configure] Error 1
make[1]: *** [CMakeFiles/ExternalICU.dir/all] Error 2
make: *** [all] Error 2

Trying @stefandevai solution didn't work for me.

@madcato
https://github.com/unicode-org/icu/releases/download/release-58-2/icu4c-58_2-src.tgz


Merge more commits from 0.17.

@fabxc Before we start cherrypicking from master into release-0.17, let's first merge the fixes from 0.17 into master.

:+1:


feat: use AnyReceiptEnvelope for AnyNetwork

Motivation
Uses AnyReceiptEnvelope in AnyNetwork
PR Checklist

[ ] Added Tests
[ ] Added Documentation
[ ] Breaking changes

this makes it possible to capture all fields


Fixed a bug in Go generator where temporary url template parameters would not be used preventing the use of raw urls

related https://github.com/microsoftgraph/msgraph-sdk-go/issues/67#issuecomment-1055762790

update: I've pushed additional changes to pass the request information to the authentication provider and the request adapter by reference and not by value copy.
passing by value copy had unanticipated side effects that prevented using the request builders with raw urls (see example below)
here is a generation diff
The detailed analysis of the issue can be found here.
response, err :=<EMAIL_ADDRESS>adapter).Get(nil)
// would fail with invalid scheme.


[BUG] The installer and dashboard are always displayed on tty1

Describe the bug

The harvester-installer and the Dashboard after installation are always tied to tty1.
This prevents users from seeing the installer or the dashboard on headless servers or cloud instances that only come with a serial console.
To Reproduce
Steps to reproduce the behavior:

Use a headless server or cloud platform like Equinix Metal. I also tested with KVM and use virsh console to test.
Boot the ISO or kernel image and the installer is always on VGA output.
Finish the installation and the Dashboard is always on the VGA output.

Expected behavior
User should be able to use the installer and dashboard on serial console.
Log

Environment:

Harvester ISO version: 0.1.0
Installation Mode: ISO/app-mode: ISO
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630):

KVM VMs
Equinix Metal

Additional context

The termbox uses tty1 if TTY is not defined:
https://github.com/rancher/harvester-installer/blob/4921224894d53abf46320839bb919814d6bbcb82/vendor/github.com/nsf/termbox-go/api.go#L30-L33

The dashboard is on tty1
https://github.com/rancher/harvester-installer/blob/4921224894d53abf46320839bb919814d6bbcb82/k3os/overlay/libexec/k3os/boot#L26

By testing current master code on Equinix Metal, we found the installer is not displayed on ttyS1.
The repo contain sample iPXE scripts for the test: https://github.com/bk201/hvst-ipxe/tree/51d4ded66ec34e89c9c31959f9f5ee2feded4032/equinix
After Equinix boot up a node, we can see kernel messages are printed out to the SOS console (ttyS1), but eventually the harvester installer is not displayed.
stracing the harvester process:
kf-01 [~]# strace -p 3723
strace: Process 3723 attached
openat(AT_FDCWD, "/dev/ttyS1", O_WRONLY|O_CLOEXEC

Validated on master-388aa82c-head
Steps:

Create a VM in ESXI and add a serial port
Start Harvester via ISO
Change grub to linux (loop0)/vmlinuz printk.devkmsg=on k3os.mode=install console=tty1 console=ttyS0,115200
View the serial port output

Result:
The harvester installation options can be viewed through the serial port：


Option to fail on existing tag

Hi! We are using action-gh-release to release our packages and create release tags. We want to prevent an accidental situation of releasing the same version again. I'm using now scripts that check if the tag exists and fails if so, but it would be so much more convenient to have just an option for it in this gh action!

I just had a big problem because I wouldn't expect draft: true to change an existing non-draft release in any way, even if the draft has same tag_name (and name) as an existing release. But it just changed an asset! If I didn't have a local backup, I could have lost the original file!!! I had to edit the already published release to restore that file!
Strangely, it didn't change the release text, just the uploaded file (which had the same name). It also didn't create a new release or draft. This has to be a bug.
Run softprops/action-gh-release@v1
  with:
    draft: true
    files: [...]
    fail_on_unmatched_files: true
    tag_name: v0.0.1
    body_path: ./.github/RELEASE-NOTES-v0.0.1.md
    token: ***
♻ Deleting previously uploaded asset [...]
⬆ Uploading [...]

Someone can still be testing things, and not have updated the tag yet.
So please fix this, and never allow a draft to change anything in a non-draft release.
The draft property could be part of the "primary key" (so to speak) along with (tag)name when deciding if it should replace it.
Or implement this feature request, which could have at least prevented this.


Okta openldap v2.8 backport

Issue:

Backport of #45507 for release/v2.8
Problem

Solution

Same as it was for #45507
Testing

Engineering Testing
Manual Testing

Automated Testing

Test types added/modified:

Unit
Integration (Go Framework)
Integration (v2prov Framework)
Validation (Go Framework)
Other - Explain: EXPLAIN
None
REMOVE NOT APPLICABLE BULLET POINTS ABOVE

If "None" - Reason: EXPLAIN THE REASON

If "None" - GH Issue/PR: LINK TO GH ISSUE/PR TO ADD TESTS

Summary: TODO
QA Testing Considerations

Regressions Considerations

TODO
Existing / newly added automated tests that provide evidence there are no regressions:

TODO

@crobby I suspect I'll need to forward-port it, it was failing repeatedly during the test run.


Formatter: Attribute and call chains "fluent interface"

Black supports attribute access and call chaining to provide good formatting for fluent interface style programming with extensive method chaining which is common e.g. with django (https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#call-chains):
def example(session):
    result = (
        session.query(models.Customer.id)
        .filter(
            models.Customer.account_id == account_id,
            models.Customer.email == email_address,
        )
        .order_by(models.Customer.id.asc())
        .all()
    )

https://github.com/astral-sh/ruff/pull/5340 implements a part of this badly to fix a bug and https://github.com/astral-sh/ruff/pull/5341 adds basic function call formatting.
We need to implement a formatting where the outermost call adds the optional parentheses and formats all inner accesses and calls to not have them add parentheses. A complication is that unlike for if-statements the tree is left recursive, meaning that for a.b().c.d.e the outermost call see an access of e on a.b().c.d, while we must format first a, then .b(), .d and finally .e. We can implement by either collecting into a stack (needs allocation) or using recursing (we most not overrun the recursion and stack limits).

Probably wrong place to comment on this, but I don't think black's approach here is sufficient. It only work when the chain is very long, and for fluent definitions you usually want one call per line regardless of the number of calls...
Personally I think a OK compromise would be to use explicit parenthesis around a call-chain as a marker that it should be formatted with one line per call?

Hi @olejorgenb There's an ongoing discussion about this in https://github.com/astral-sh/ruff/issues/8598


pass payment declined error back to user

This removes catching donation errors and users will start seeing them again.


Unable to add sites via console to "/usr/local/etc/squid/nobumpsites.acl"

White-listing a long list of sites and entering it directly in to /usr/local/etc/squid/nobumpsites.acl is ignored. Could this be allowed instead of entering 1 site at a time via the web interface in to the SSL no bump sites list at /ui/proxy/#subtab_proxy-forward-general which takes an inordinately long time for a long list.

You can paste a comma separated list in the input box, like :
wwww.sitea.com,wwww.siteb.com,wwww.sitec.com
You cannot edit the the nobump file manually (won't be supported either), if you would like to manually hack into squid, you can however use custom hooks https://github.com/opnsense/core/issues/802

Thanks for clearing that up. Perhaps that could be made clear in the tool tip. https://github.com/opnsense/core/pull/1179


Share favourites within the organisation

Favourite search and filter settings can be shared within a team. The team members can then also access them and benefit from the settings. Favourites help to receive all messages on the areas relevant to the team even faster and to work more efficiently.
With this update it is possible to:

Share favourites with the team
Edit the individual name of the favourites
Edit shared favourites as admin

This has shipped: https://docs.nefino.li/changelog/favoriten-innerhalb-der-organisation-teilen.


Webapp up MemoryError

I got a MemoryError error when trying to run the command:
az webapp up
Errors:
Traceback (most recent call last):
Temp\pip-install-1o1fsnhi\knack\knack\cli.py, ln 206, in invoke
azure\cli\core\commands\__init__.py, ln 608, in execute
azure\cli\core\commands\__init__.py, ln 666, in _run_jobs_serially
azure\cli\core\commands\__init__.py, ln 657, in _run_job
azure\cli\command_modules\appservice\commands.py, ln 55, in _polish_bad_errors
azure\cli\core\commands\__init__.py, ln 636, in _run_job
azure\cli\core\commands\__init__.py, ln 306, in __call__
azure-cli-core\azure\cli\core\__init__.py, ln 493, in default_command_handler
azure\cli\command_modules\appservice\custom.py, ln 3117, in webapp_up
azure\cli\command_modules\appservice\custom.py, ln 364, in enable_zip_deploy
MemoryError

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az webapp up --sku {} -n {} -l {} --debug

Expected Behavior
Environment Summary
Windows-10-10.0.18362-SP0
Python 3.6.6
Shell: powershell.exe

azure-cli 2.0.81 *

webapp

az webapp up tries to zip the DIR you are running the code from to deploy this content to an app so don't run this command from root DIR.


Project Questions Broken

If more than one project has project questions associated with it, then the second (and subsequent) projects will have empty project questions returned on the the project details page alongside the populated questions for that project.
First Project:

Second (and Subsequent) Projects:

IS the problem in the jQuery or the database/api?

i think the database is ok, there are no empty records attached to projects when this happens. would need to take a look at it some more, but could be something to due with the ordering of the project questions.

SNAP wish i remembered this :(   just burned too much life wresting this.. adding some maybe helpful jsons...  its a repeat of the questions cept with null id's
give the below submission:
{
    "project_answers": [
        {
            "project_question_id": 8,
            "project_question": {
                "id": 8,
                "question": "Period of Performance",
                "help_text": "in months",
                "required": null,
                "created_at": "2015-06-09T17:22:45.449Z",
                "updated_at": "2015-06-09T17:22:45.449Z",
                "deleted_at": null,
                "load_order": 1,
                "options": null,
                "field_type": "text"
            },
            "project_question_name": "project_question_8",
            "answer": "12"
        },
        {
            "project_question_id": 7,
            "project_question": {
                "id": 7,
                "question": "FISMA Classification",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.447Z",
                "updated_at": "2015-06-09T17:22:45.447Z",
                "deleted_at": null,
                "load_order": null,
                "options": [
                    "Low",
                    "Medium",
                    "High"
                ],
                "field_type": "select_option"
            },
            "project_question_name": "project_question_7",
            "answer": "Low"
        },
        {
            "project_question_id": 6,
            "project_question": {
                "id": 6,
                "question": "Will this run in production?",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.444Z",
                "updated_at": "2015-06-09T17:22:45.444Z",
                "deleted_at": null,
                "load_order": null,
                "options": [
                    "Yes",
                    "No"
                ],
                "field_type": "select_option"
            },
            "project_question_name": "project_question_6",
            "answer": "No"
        },
        {
            "project_question_id": 5,
            "project_question": {
                "id": 5,
                "question": "Default provisioning location",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.442Z",
                "updated_at": "2015-06-09T17:22:45.442Z",
                "deleted_at": null,
                "load_order": null,
                "options": [
                    "East Coast Data Center",
                    "West Coast Data Center",
                    "Classified Data Center"
                ],
                "field_type": "select_option"
            },
            "project_question_name": "project_question_5",
            "answer": "East Coast Data Center"
        },
        {
            "project_question_id": 4,
            "project_question": {
                "id": 4,
                "question": "Performed Maintenance",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.440Z",
                "updated_at": "2015-06-09T17:22:45.440Z",
                "deleted_at": null,
                "load_order": null,
                "options": [],
                "field_type": "check_box"
            },
            "project_question_name": "project_question_4"
        },
        {
            "project_question_id": 3,
            "project_question": {
                "id": 3,
                "question": "Maintenance Day",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.438Z",
                "updated_at": "2015-06-09T17:22:45.438Z",
                "deleted_at": null,
                "load_order": null,
                "options": [],
                "field_type": "date"
            },
            "project_question_name": "project_question_3",
            "answer": "2015-06-18T04:00:00.000Z"
        },
        {
            "project_question_id": 2,
            "project_question": {
                "id": 2,
                "question": "Project Charge Code",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.435Z",
                "updated_at": "2015-06-09T17:22:45.435Z",
                "deleted_at": null,
                "load_order": null,
                "options": [],
                "field_type": "text"
            },
            "project_question_name": "project_question_2",
            "answer": "dada"
        },
        {
            "project_question_id": 1,
            "project_question": {
                "id": 1,
                "question": "Project Description",
                "help_text": "",
                "required": true,
                "created_at": "2015-06-09T17:22:45.432Z",
                "updated_at": "2015-06-09T17:22:45.432Z",
                "deleted_at": null,
                "load_order": null,
                "options": [],
                "field_type": "text"
            },
            "project_question_name": "project_question_1",
            "answer": "something"
        }
    ],
    "name": "new test",
    "budget": "1000",
    "start_date": "2015-06-24T04:00:00.000Z",
    "end_date": "2015-07-01T04:00:00.000Z"
}

this is the output upon revisiting the same item:
{
  "id": 13,
  "name": "new test",
  "description": null,
  "cc": null,
  "staff_id": null,
  "img": null,
  "created_at": "2015-06-11T17:27:21.104Z",
  "updated_at": "2015-06-11T17:27:29.339Z",
  "deleted_at": null,
  "status": "ok",
  "approval": "approved",
  "archived": null,
  "spent": 0,
  "budget": 1000,
  "start_date": "2015-06-24T04:00:00.000Z",
  "end_date": "2015-07-01T04:00:00.000Z",
  "domain": "companyapp1.clouddealer.com/",
  "url": "http://companyapp1.clouddealer.com",
  "problem_count": 0,
  "account_number": 785,
  "resources": 256,
  "monthly_spend": 0,
  "order_history": [],
  "approvals": [
    {
      "id": 7,
      "staff_id": 1,
      "project_id": 13,
      "approved": true,
      "created_at": "2015-06-11T17:27:29.335Z",
      "updated_at": "2015-06-11T17:27:29.335Z",
      "reason": null
    }
  ],
  "approvers": [
    {
      "id": 1,
      "first_name": "Admin",
      "last_name": "Staff",
      "email"<EMAIL_ADDRESS>      "phone": null,
      "created_at": "2015-06-09T17:22:44.086Z",
      "updated_at": "2015-06-11T17:18:38.220Z",
      "role": "admin",
      "deleted_at": null,
      "authentication_token": "$2a$10$wfeQ7wxXo.FzNONHE3uu2eQg8yB1OGRkrMHfhMArVHCoF/cn.aDHS"
    }
  ],
  "services": [],
  "memberships": [],
  "groups": [],
  "project_answers": [
    {
      "id": 49,
      "project_id": 13,
      "project_question_id": 8,
      "answer": "12",
      "created_at": "2015-06-11T17:27:21.109Z",
      "updated_at": "2015-06-11T17:27:21.109Z",
      "project_question": {
        "id": 8,
        "question": "Period of Performance",
        "help_text": "in months",
        "required": null,
        "created_at": "2015-06-09T17:22:45.449Z",
        "updated_at": "2015-06-09T17:22:45.449Z",
        "deleted_at": null,
        "load_order": 1,
        "options": null,
        "field_type": "text"
      }
    },
    {
      "id": 50,
      "project_id": 13,
      "project_question_id": 7,
      "answer": "Low",
      "created_at": "2015-06-11T17:27:21.113Z",
      "updated_at": "2015-06-11T17:27:21.113Z",
      "project_question": {
        "id": 7,
        "question": "FISMA Classification",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.447Z",
        "updated_at": "2015-06-09T17:22:45.447Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "Low",
          "Medium",
          "High"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": 51,
      "project_id": 13,
      "project_question_id": 6,
      "answer": "No",
      "created_at": "2015-06-11T17:27:21.117Z",
      "updated_at": "2015-06-11T17:27:21.117Z",
      "project_question": {
        "id": 6,
        "question": "Will this run in production?",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.444Z",
        "updated_at": "2015-06-09T17:22:45.444Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "Yes",
          "No"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": 52,
      "project_id": 13,
      "project_question_id": 5,
      "answer": "East Coast Data Center",
      "created_at": "2015-06-11T17:27:21.119Z",
      "updated_at": "2015-06-11T17:27:21.119Z",
      "project_question": {
        "id": 5,
        "question": "Default provisioning location",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.442Z",
        "updated_at": "2015-06-09T17:22:45.442Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "East Coast Data Center",
          "West Coast Data Center",
          "Classified Data Center"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": 53,
      "project_id": 13,
      "project_question_id": 4,
      "answer": null,
      "created_at": "2015-06-11T17:27:21.123Z",
      "updated_at": "2015-06-11T17:27:21.123Z",
      "project_question": {
        "id": 4,
        "question": "Performed Maintenance",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.440Z",
        "updated_at": "2015-06-09T17:22:45.440Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "check_box"
      }
    },
    {
      "id": 54,
      "project_id": 13,
      "project_question_id": 3,
      "answer": "2015-06-18T04:00:00.000Z",
      "created_at": "2015-06-11T17:27:21.126Z",
      "updated_at": "2015-06-11T17:27:21.126Z",
      "project_question": {
        "id": 3,
        "question": "Maintenance Day",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.438Z",
        "updated_at": "2015-06-09T17:22:45.438Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "date"
      }
    },
    {
      "id": 55,
      "project_id": 13,
      "project_question_id": 2,
      "answer": "dada",
      "created_at": "2015-06-11T17:27:21.131Z",
      "updated_at": "2015-06-11T17:27:21.131Z",
      "project_question": {
        "id": 2,
        "question": "Project Charge Code",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.435Z",
        "updated_at": "2015-06-09T17:22:45.435Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "text"
      }
    },
    {
      "id": 56,
      "project_id": 13,
      "project_question_id": 1,
      "answer": "something",
      "created_at": "2015-06-11T17:27:21.134Z",
      "updated_at": "2015-06-11T17:27:21.134Z",
      "project_question": {
        "id": 1,
        "question": "Project Description",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.432Z",
        "updated_at": "2015-06-09T17:22:45.432Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "text"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 8,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 8,
        "question": "Period of Performance",
        "help_text": "in months",
        "required": null,
        "created_at": "2015-06-09T17:22:45.449Z",
        "updated_at": "2015-06-09T17:22:45.449Z",
        "deleted_at": null,
        "load_order": 1,
        "options": null,
        "field_type": "text"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 7,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 7,
        "question": "FISMA Classification",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.447Z",
        "updated_at": "2015-06-09T17:22:45.447Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "Low",
          "Medium",
          "High"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 6,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 6,
        "question": "Will this run in production?",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.444Z",
        "updated_at": "2015-06-09T17:22:45.444Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "Yes",
          "No"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 5,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 5,
        "question": "Default provisioning location",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.442Z",
        "updated_at": "2015-06-09T17:22:45.442Z",
        "deleted_at": null,
        "load_order": null,
        "options": [
          "East Coast Data Center",
          "West Coast Data Center",
          "Classified Data Center"
        ],
        "field_type": "select_option"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 4,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 4,
        "question": "Performed Maintenance",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.440Z",
        "updated_at": "2015-06-09T17:22:45.440Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "check_box"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 3,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 3,
        "question": "Maintenance Day",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.438Z",
        "updated_at": "2015-06-09T17:22:45.438Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "date"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 2,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 2,
        "question": "Project Charge Code",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.435Z",
        "updated_at": "2015-06-09T17:22:45.435Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "text"
      }
    },
    {
      "id": null,
      "project_id": 13,
      "project_question_id": 1,
      "answer": null,
      "created_at": null,
      "updated_at": null,
      "project_question": {
        "id": 1,
        "question": "Project Description",
        "help_text": "",
        "required": true,
        "created_at": "2015-06-09T17:22:45.432Z",
        "updated_at": "2015-06-09T17:22:45.432Z",
        "deleted_at": null,
        "load_order": null,
        "options": [],
        "field_type": "text"
      }
    }
  ]
}

See this url for more information.
Noticed in the logs that creating a new project with project_answers generates the following:
Started POST "/api/v1/projects" for ::1 at 2015-06-11 12:46:16 -0500
Value for params[:project_answers][:project_question][:options] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Value for params[:project_answers][:project_question][:options] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Value for params[:project_answers][:project_question][:options] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Value for params[:project_answers][:project_question][:options] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Value for params[:groups] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Value for params[:group_ids] was set to nil, because it was one of [], [null] or [null, null, ...]. Go to http://guides.rubyonrails.org/security.html#unsafe-query-generation for more information.
Processing by ProjectsController#create as JSON

Investigating this method which could be the culprit for the null vals being returned.
https://github.com/projectjellyfish/api/commit/f360ba54914e1ecece695cfc14ccafc43adfc50b#diff-757cba42ec9599bac53d4cc33cdde3bfR43

Off with its head!!
On Thu, Jun 11, 2015, 2:42 PM Michael Fernando<EMAIL_ADDRESS>wrote:

Investigating this method which could be the culprit for the null vals
being returned.
f360ba5#diff-757cba42ec9599bac53d4cc33cdde3bfR43
https://github.com/projectjellyfish/api/commit/f360ba54914e1ecece695cfc14ccafc43adfc50b#diff-757cba42ec9599bac53d4cc33cdde3bfR43
—
Reply to this email directly or view it on GitHub
https://github.com/projectjellyfish/api/issues/640#issuecomment-111235921
.

PR https://github.com/projectjellyfish/api/pull/702 should fix this.
There was a method called build_empty_answers_to_questions on the projects_controller which was returning a blank set of project answers for each project in addition to any project answers that may already exist for the project. Added an if statement to only return blank project answers if the project does not have any project answers associated with it.


remember me doesn't

When signing in I select "Remember Me". If I then close or leave the browser idle then when I return to Bonobo Git Server I'm no longer signed in. Looking at the cookies for the site their expiriy is set to session.
I'm using the cookies authentication provider and the internal membership provider.

Thanks for pointing this out. Can you provide a PR for this? Preferably with a test.


Incomplete sentence

Hi Trey! Looks like there is a unfinished sentence on the last sentence of the Naming section, or at least a missing parenthesis.

Fixed. Thanks for reporting this @stsewd!


Revert "[Mangling] Uniformly use "So" for imported decls."

This reverts commit 25985cb7649a8d550e96ff7e3b2a9193bda8b57b, from #8849. For now, we're trying to avoid non-essential non-structural changes to the mangling, so that the old mangling doesn't appear to change. That doesn't mean no changes at all, but we can save this one for later.
Goes with @eeckstein's #9228.

Waiting for Erik's change to go in before running tests.

@swift-ci Please test

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - a73ff0e04dabf970cc5e68a8dfb1267be167169a
Test requested by - @jrose-apple

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - a73ff0e04dabf970cc5e68a8dfb1267be167169a
Test requested by - @jrose-apple

@swift-ci Please test

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 368128c3be115c4c889868fb405662838e7d2007
Test requested by - @jrose-apple

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 368128c3be115c4c889868fb405662838e7d2007
Test requested by - @jrose-apple

@swift-ci Please clean test Linux


Use retrofit to do network requests

#22
Basically I passed retrofit inside the various managers and got rid of whatever was doing the requests before. EZ

I think we can merve


Shortcut Guide: Allow moving windows without pressing arrow keys.

Summary of the new feature/enhancement
In some rare instances, and I have reported this via Windows Feedback, a window can get stuck outside of the visible desktop. The label in the taskbar may or may not be visible ( I have it set to only show from current window ) regardless of setting - this is likely due to how far off-screen it is or it could be outside the bounds of the mirrored L shape I use for my desktop environment and Windows may thing it is in a top-left monitor which doesn't exist, or somewhere else.
In these rare instances, WIN + Arrow does NOT let you move the window back onto any normal monitor.
Because Shortcut Guide draws the window which is selected, fully even if off screen, allow us to drag it while holding alt while this screen is up.
In most cases we can target the window, but the win + arrow system breaks in this rare instance. Allowing us to drag within the Win popup would help. In some cases, restarting the application does NOT fix the positioning of it either. In these instances, unplugging a monitor, or temporarily disabling it can help recover the window.
It doesn't happen often, but when it does it is more than a minor annoyance.
Proposed technical implementation details (optional)
While holding WIN key, since only the selected window is drawn fully, even if off-screen, allow us to move it with the mouse by dragging it.

@Acecool
since shortcut guide v2 will have a completely new UI, your suggestion may not apply.
We also have https://github.com/microsoft/PowerToys/issues/557 that tracks the same problem, feel free to add you comments there.
I'll close this one as duplicate of https://github.com/microsoft/PowerToys/issues/557
Thanks.


Add linked list insertion

this is insertion in linked list program
it includes

insertion at begging
insertion at end
insertion at any specific location
print the list

y?

Have a look at the contribution guidelines


Simclr

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
Fixes # (issue).
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hello @williamFalcon! Thanks for opening this PR.

In the file pl_bolts/losses/self_supervised_learning.py:

Line 403:68: W504 line break after binary operator
Line 404:68: W504 line break after binary operator

In the file pl_bolts/models/self_supervised/resnets.py:

Line 115:1: E302 expected 2 blank lines, found 1
Line 437:56: E226 missing whitespace around arithmetic operator
Line 438:57: E226 missing whitespace around arithmetic operator
Line 440:57: E226 missing whitespace around arithmetic operator
Line 442:57: E226 missing whitespace around arithmetic operator

In the file pl_bolts/utils/ssl_utils.py:

Line 17:28: W292 no newline at end of file

Do see the Hitchhiker's guide to code style


How to handle labels with schema

So, I get the idea that "label" is a schemaless concept. That is, if you do not designate a label in Neo4j or Gremlin, then the vertex with have no label. Or, that you do not have to create labels in order to assign a vertex to a label.
This is not the case in OrientDB. A "label" is analogous to a Class. If you designate no class then it defaults to "V", but you cannot arbitrarily assign classes. That is, a class must exist before you assign a vertex to it.
What would be the best way of normalizing this? Any thoughts?

Very good question. I also don't think there's an easy answer other than rewriting a php version of tinkerpop where each db implementation comes with it's own set of methods. Needless to say this goes way beyond the scope of what spider is.
The simplest possible way of handling things (which has it's shortcomings) would be to just have spider use gremlin for graph DBs... and only gremlin. That way we can take advantage of all the work already done in this field.
Short of that there is no realistic other option. Users would have to manually add the labels to their DB migration if they use orient. (Migrations are another thing we will need to add to spider)

I don't know how comfortable I am using gremlin and gremlin only. Mostly because TP3 is still incubating and I'm having trouble, honestly.
As far as I know, Orient is the only one of the three that handles it differently. I would probably rather, at least at this point, handle it with Exceptions that make sure the user builds the correct classes. Not so graceful :(
The other option would be a hit for performance, but the OrientDriver could check if a class exists and create it if not. I really don't think I like that idea, but it is an alternative. Just wanted to start the discussion.

Ok how about option 2 then. Where if you're working with orient you have to specifically add label creation to your migration? If you don't orient server will throw an error saying that the labels (classes) don't exist.
The advantage here is that. It makes sense if you think of labels as indexes (that you would set in your migrations anyways). Migrations will use DB specific Schema classes so we have leverage on handling compatibility issues. For example if Neo doesn't allow creating labels before assigning them to elements then Neo4jSchema can just ignore label creation.
It also keeps the Drivers clean of any unnecessary bloating.

That was my thought. For now, I will add a simple try-catch in the record creation of Orient's Driver. If the user tries to add a label for a non-existent class, I'll just rethrow a more descriptive exception. We can deal with the rest hen Schema's come around.

sounds good

Just as a question of interest.

but the OrientDriver could check if a class exists and create it if not.

Creating classes isn't a regular occurrence usually, correct? So, performance wouldn't be hit too badly.
Have you ever worked with Mongo? It doesn't even care if a collection has been created or not. If it hasn't been created, Mongo just creates it automatically and data can be persisted in the collection. This is a great advantage, as schema versions then don't need to be maintained within development (and one of the core concepts of MongoDB). The code maintains the schema.
Not sure if that is practical or wanted with Spider (with ODB?), but it sure would be cool. I realize too, some people scream for enforced schema in the database. I don't understand why. But, that might be my inexperience talking. Being able to run with an application and not worry about it fitting the database seems so much more flexible to me.
Scott

Most of the graph databases are totally schemaless. The question I issue I am rolling around in my brain is for the situation where a user tries to:
INSERT INTO cats CONTENT {name: 'oreo'}
and the class cats doesn't exist. orient troughs an error.
The same in spider
$query->insert('name', 'oreo')->into('cats);
would through an error in orient, but not in Neo4j. This inconsistent behavior is what I was talking about.
In either situation, you can create as many properties in a schemaless way as you like. The solution here is probably just to catch, wrap, and let bubble up the server exception. That's my opinion

Exactly. It is this schemalessness of document databases that is an advantage IMHO. The objects created by the code should just be persistable. The objects form the schema alone. If I add a property to a class and want it persisted, it should just happen in the database. The code controls the schema.
Scott

It's odd that orient wouldn't do this by default though. Maybe its worth digging a bit to find why.
In the case of Mongo, if I recall correctly (I'm not all that familiar with it) it uses a RDBMS with an EAV table so it is somewhat schema-less and trivial to add collections which seems not to be the case with Orient.
@smolinari what you are suggesting is the try-catch-build_label-resubmit scenario right? This kind of goes along the lines of what @chrismichaels84 suggested by having the OrientDriver do this work. But it would be poor design to take care of it on this level. Perhaps a Model layer could have a generic try-fail-retry strategy for this scenario.

On a side note -yet somewhat related to Orient's mode of functioning being different from other dbs- I've noticed that the following doesn't work for orient:
$driver->executeReadCommand((new Builder())->select()); // error
$driver->executeReadCommand((new Builder())->select()->from('V')); // ok

We might have to look into these inconsistencies at one point.
It doesn't help that I'm not all that familiar with Orient so I'll probably spend more time playing around with it. It just comes across as being a graph DB built around a document store without a comfortable level of abstraction.
Once they make an implementation for TP3 maybe it would be a good idea to base ourselves on that as it will abstract a lot of these concepts (classes, 'where id' queries, etc..).

Agreed on keeping with TP3 standard. In truth, it may be best for spider to be somewhat of a TP for php. The reason that the above fails in orient is  because there are several predefined classes and that query doesn't say which to pull from (V, E, or Document). I can made "V" default at the driver level so the query failing query would pull all vertices by default.

I think this is good to be closed. I will modify the orient driver to:

use "V" by default
catch and rethrow an error if trying to insert into a non-existent class
Later, in the model layer, that exception can be caught and the class can be created before the record is resubmitted.

I am also going to open an issue with orientdb do see why this is. They are really good about adding new features based on issues. I've had two added already in the space of a few weeks.

Commit 665f337edb44e4ef4f7ba875e591142d17ce1f15 closes both of these

Hmm so does this mean that V is a label? Can you give me a quick walkthrough of labeling vs classes in orient?
Can vertices and edges have the same label yet be queried separately? Is this an object hierarchy type system where classes extend V so querying for V returns all children classes?

There are no labels in orient. There are classes, and they really work the same as in Java and PHP (no multiple inheritance).
The base class is Document. Built in classes V and E extend Document. Any custom class extends one of these three (V by default, I think).
Documents are like Mongo documents, with as many nested properties as you like. They are represented as json documents.
{
    name: 'michael',
    books: ['Lord of the Rings', 'Jack Reacher'],
    cat: {
        name: 'oreo'
    }
}

And you may query like SELECT FROM V WHERE cat.name = 'oreo', etc.
Any vertex (that is any document that can be joined by edges) must extend V. Edges extend E.
So, let's say:
Person extends V
Character extends Person
If you query V by SELECT FROM V, then you will get all V, Person, and Character. If you query all Person, SELECT FROM Person you will get all Person and Character.
You can even define classes as abstract, which cannot hold records directly, but only be subclassed.
The primary reason for classes is to define optional schema. You can define property fields as datatypes (as you would in RDBMS), and even make some of those properties required.
So let's say that Person has set properties {name, age}. If name is required, then orient will throw an exception if creating a new Person without a name.
These classes may also be used in a schemaless way. So an individual person may have {name, age, height} while another has {name, age, favorite_color}. Optionally, you may lock down classes so they cannot have extra properties.
The point is that you can mix schemaless, schema-mixed, and schema-full data design.
I have equated "label" with class for spider. It would be possible to have a property in a record called "label" if you wanted to, but there is no special significance for orient.

ok great thanks for the info! Is it possible to have two classes with the same name? Language extends E and Language extends V?
Just so I can understand some edge cases that would work with some DBs and not others.

I did not know the answer to that question, so I just tried it. No, they cannot.
Classes are also related to clusters. By default, a single class has and takes an entire single cluster. You can modify this and create classes to share clusters or classes that span multiple clusters. All of that is beyond spider though, I think.


AppImages package for linux distros

Just open this issue as mentioned there as a reminder for myself, @darosior feel free to ping me if I forgot to give an update there under max 2-3weeks.

PR #591 handle this


WoW classic era 1.14.4 error

Sometimes getting this error Classic era 1.14.4 patch
1x bad argument #1 to '?' (outside of expected range 0 to<PHONE_NUMBER> - Usage: local event = C_LossOfControl.GetActiveLossOfControlData(index))
[string "=[C]"]: in function `GetActiveLossOfControlData'
[string "@LoCA/LoCA.lua"]:154: in function <LoCA/LoCA.lua:146>

Locals:
(*temporary) = "bad argument #1 to '?' (outside of expected range 0 to<PHONE_NUMBER> - Usage: local event = C_LossOfControl.GetActiveLossOfControlData(index))"

I'm closing the issue, because errors like that are expected, the addon follows wotlk classic. Classic era is not supported


Introduce the CanObserve type-class

We need a type-class for things that can be converted to observables, like this:
trait CanObserve[O[_]] {
  def observable[T](o: O[T]): Observable[T]
}

At least the following types will have implementations for this type-class:

Observable (obviously)
Scala's Future
Iterator and Iterable
Task

The purpose would be to not rely on implicit conversions.

Done.


App execution alias doesn't work for packages containing a UWP Console app

Describe the bug

Today app execution alias doesn't work for UWP console apps (not full trust console app) as Windows thinks it's a UI app and shows a splash screen waiting for activation but that never happens in a console app.
Steps to reproduce the bug

Steps to reproduce the behavior:

Install UWP Console app project templates for Visual Studio Marketplace
Create a new UWP console app
Add app execution alias to manifest
Deploy the application
Try to use the command specified in the manifest from the Run box
See the problem

Expected behavior

It should launch the UWP console app correctly. It works for Win32 console apps fine but not for UWP console apps.

Thanks for your feedback. I've tried to repro the issue, but it all actually works as expected for me. I've tried with VS2019 as well as with the VS2019 preview, without any problems.  Can you clarify one point: at step 3 you say you're adding an app execution alias - but the console template creates an alias for you. Are you adding a second alias? If so, are you declaring multiple aliases or multiple alias extensions? Also, which language are you using (C#, C++/CX or C++/WinRT)? Finally, when you build the project, can you confirm whether or not the alias shows up in %LOCALAPPDATA%\Microsoft\WindowsApps?

Just throwing out there, I can't reproduce either.
My steps were:

Create Console App C# (Universal Windows) project named Issue455Repro
Deploy application out of the box
Start > Run > Issue455Repro.exe arg1 arg2 arg3
Observe app starts and prints arguments

Windows 10 19042.804, Visual Studio 2019 16.8.5

Closing this as no-repro, but feel free to discuss further!


Contact form button misaligned when using recaptcha

Is this a BUG REPORT or FEATURE REQUEST?:
bug
What happened:
Filler space is creating issues with the button alignment.
What you expected to happen:
Centered submit button.
How to reproduce it (as minimally and precisely as possible):
https://about.rekkur.com/#contact
Anything else we need to know?:
Environment:

Syna Theme version:  v0.16.2
Hugo version: v0.68.3

Recaptcha is aligned left in the provided link and the button is centered. Should it change to another configuration?

For me the button isn't centered see:

Just checked. Firefox issue it seems. Or at least Chrome doesn't have that issue. :roll_eyes:

Maybe it's a version issue? Are we checking the same page?
https://about.rekkur.com/#contact
For me the recapcha is showing but in your screenshot it's not visible.

It's a when recaptcha is blocked or doesn't load then the misalignment happens.

Moving this to the next milestone for now.


Visual testing: Making screenshots less flaky (2)

Description
More fixes. This time:

Making sure the preselectedOptionIndex takes effect before taking the screenshot in hide-row-in-group

Related Issue(s)

#1264
https://percy.io/700b0900/altinn-app-frontend-react/builds/28364684/changed/1576701856?browser=chrome&browser_ids=38&subcategories=unreviewed%2Cchanges_requested&viewLayout=overlay&viewMode=new&width=987&widths=987

Verification/QA

Manual functionality testing

[x] I have tested these changes manually
[ ] Creator of the original issue (or service owner) has been contacted for manual testing (or will be contacted when released in alpha)
[ ] No testing done/necessary

Automated tests

[ ] Unit test(s) have been added/updated
[x] Cypress E2E test(s) have been added/updated
[ ] No automatic tests are needed here (no functional changes/additions)
[ ] I want someone to help me make some tests

UU/WCAG (follow these guidelines until we have our own)

[ ] I have tested with a screen reader/keyboard navigation/automated wcag validator
[x] No testing done/necessary (no DOM/visual changes)
[ ] I want someone to help me perform accessibility testing

User documentation @ altinn-studio-docs

[ ] Has been added/updated

[x] No functionality has been changed/added, so no documentation is needed
[ ] I will do that later/have created an issue

Changes/additions to component properties

[ ] Changes are reflected in both src/layout/layout.d.ts and layout.schema.v1.json, and these are all backwards-compatible
[x] No changes made

Support in Altinn Studio

[ ] Issue(s) created for support in Studio

[x] This change/feature does not require any changes to Altinn Studio

Sprint board

[ ] The original issue (or this PR itself) has been added to the Team Apps project and to the current sprint board
[ ] I don't have permissions to do that, please help me out

Labels

[x] I have added a kind/* label to this PR for proper release notes grouping
[ ] I don't have permissions to add labels, please help me out

One cypress test failing. I retried it 100+ times locally without getting it to fail, so I assume it was some kind of weird fluke.


Client Allocation Request for: Chengdu Sinso Technology Co., Ltd.

Client Allocation Questions
Core Information

Name: Chengdu Sinso Technology Co., Ltd.
Website / Social Media:  https://www.sinso.io
Region: Greater China
DataCap Requested: 5TiB
Addresses to be Notarized: f12m4wzu4ynkpilkh5bv4zaadigmr6hml4zg46dhq
Notary Requested: Fenbushi-Filecoin

Please make sure to check out the guidelines and criteria to accept Datacap request for Fenbushi Capital
@sinso2021-io Please subscribe to notifications for this Issue to be aware of updates. Notaries may request additional information on the Issue.

Request Approved
Your Datacap Allocation Request has been approved by the Notary
Message sent to Filecoin Network

bafy2bzacecnjbwtrhzq4favwo2kba2tc6kn4ochqkl4mr4gwxrv63vny5kvfq

Address

f12m4wzu4ynkpilkh5bv4zaadigmr6hml4zg46dhq

Datacap Allocated

5TiB

You can check the status of the message here: https://filfox.info/en/message/bafy2bzacecnjbwtrhzq4favwo2kba2tc6kn4ochqkl4mr4gwxrv63vny5kvfq


SchedulerChoreography DispatchTask processor_id issue ?

https://github.com/ApolloAuto/apollo/blob/a7aedb92df6aebf60950957ae6fb4bfb00b5b088/cyber/scheduler/policy/scheduler_choreography.cc#L157
The CRoutine's default processor_id = -1.  And we set the processor id from the conf file.
    if (taskconf.has_processor()) {
      cr->set_processor_id(taskconf.processor());
    }

If we don't set the processor_id in conf file. the processor_id will be -1.  And then we will access an invalid vector index "-1".
  // The pid will default -1 !!!!!!!!
  uint32_t pid = cr->processor_id();
  if (pid < proc_num_) {
    // Enqueue task to Choreo Policy.   Invalid index -1
    static_cast<ChoreographyContext*>(pctxs_[pid].get())->Enqueue(cr);
  } else {

Maybe the code should add a condition like this? add "pid >= 0" will better than "pid != -1".
  if (pid < proc_num_ && pid >= 0 ) {

pid is defined as uint32_t， so  pid >= 0

Thanks for your reminder,
This code is too vague. int to uint32_t then convert -1 to unit<PHONE_NUMBER> !!!
inline int CRoutine::processor_id() const { return processor_id_; }


list model takes lot of time in latest version

Hi,
Looks latest upgrade creates a dependency on python extension? It is causing several 'regressions' on my setup:

my dbt installation is done by homebrew which is not using default python, without switching python context it complains no dbt installatoin in curent python.

A complain on toolbar your dbt is not up to date. In my use case for I am still on 0.18

Any minor change to sql file will cause a long time list model operation....the rerun cannot start before that is done. Every change-validation cycle takes around 5 mins...

All the logs goes to dbt output ( I guess that is an improvement ? ), Looks cool but if I have multiple run it is hard to identify the log without syntax highlight ( which is in terminal print ). Also new terminal provides more flexibility.

But in general it is a very nice plugin - I can stay focusing on my editor for project work. Thanks for the effort!

But in general it is a very nice plugin - I can stay focusing on my editor for project work. Thanks for the effort!

Hi Jesse,
Thanks for your remarks!
The first and second point I would rather consider features. There will be a lot of improvements coming where we need to be able to run DBT/Python code. Note that we don't require the user to update, but just mention that there is a newer version available.
The third one we just fixed a bug for. We had coded a debounce that ensures the list is not triggered multiple times if a file is changed but that was not working as expected.  Can you verify that you are on v0.4.2? If that doesn't fix the issue I would like to know how long a dbt ls takes.
I agree on the output for the runs, they should actually use a pseudo terminal instead of the output channel which doesn't support colors. See https://github.com/microsoft/vscode/issues/571. I gave the terminal a quick try just before the release but that gave other display issues. We can probably fix that soon.

Hi Jesse,
Thanks for your remarks!
The first and second point I would rather consider features. There will be a lot of improvements coming where we need to be able to run DBT/Python code. Note that we don't require the user to update, but just mention that there is a newer version available.
The third one we just fixed a bug for. We had coded a debounce that ensures the list is not triggered multiple times if a file is changed but that was not working as expected.  Can you verify that you are on v0.4.2? If that doesn't fix the issue I would like to know how long a dbt ls takes.
I agree on the output for the runs, they should actually use a pseudo terminal instead of the output channel which doesn't support colors. See https://github.com/microsoft/vscode/issues/571. I gave the terminal a quick try just before the release but that gave other display issues. We can probably fix that soon.

Thanks!

I just down grade from 0.4.2 to 0.3.6 - can we provide an option to disable it or manual refresh it?

Yes the dbt ls at my local takes 2 minutes.

Thanks!

I just down grade from 0.4.2 to 0.3.6 - can we provide an option to disable it or manual refresh it?

Yes the dbt ls at my local takes 2 minutes.

dbt list should be really fast, it just looks at all your refs and regenerate the model graph. How many models are there in your project?
We can indeed make this configurable to not automatically execute dbt list on source file change.

dbt list should be really fast, it just looks at all your refs and regenerate the model graph. How many models are there in your project?
We can indeed make this configurable to not automatically execute dbt list on source file change.

Thanks! Configurable will definitely help. Yes no doubt that my project is complex.

Thanks! Configurable will definitely help. Yes no doubt that my project is complex.

Hi Jesse,
I will release a new version shortly with following flag to disable the automatic listing.

Hi Jesse,
I will release a new version shortly with following flag to disable the automatic listing.

Works fine. Also I can see the output has been in a terminal as Tasks -dbt. Thanks!

Works fine. Also I can see the output has been in a terminal as Tasks -dbt. Thanks!


/system path

@rultor merge

@rultor merge

@h1alexbel OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@h1alexbel Done! FYI, the full log is here (took me 1min)


ts/Extendible and AcidPtr classes

new classes to provide atomic field operations for the Nexthop DB.

[ci FreeBSD]

[ci approve FreeBSD]

[ci approve]

[ci approved]

[approve ci FreeBSD]

[approve ci FreeBSD]

OK, let me take a look at the RST and send you a patch, @a-canary .

OK, let me take a look at the RST and send you a patch, @a-canary .

https://github.com/a-canary/trafficserver/pull/7


Slack notifier doesn't allow private channels

Rancher versions:
Rancher v2.0.0
User Interface v2.0.41
Setup details:
Single node
Steps to Reproduce:

Create a private channel on Slack and an incoming webhook
In Rancher, go to: Tools, Notifiers, Add Notifier
Enter webhook URL
Click Test
Enter channel name
Click Test

Results:
The first time test fails with the following validation message:

"Default Recipient" is required

The second time the error says:

http status code is not 200

Expected results:
The Default Recipient field should be optional, as Slack Webhook API will send the message to the default channel of the webhook if the channel field is not specified. In case of private channels the channel API field must not exist or be empty, otherwise the webhook returns a channel_not_found error. As a result, it's not possible to use private channels, though Slack API allows it.

@adampl I tried your steps on v2.0.0 and it works on my setup.  For the Default Recipient (Channel) filed, do you put an # in front of the channel name?  For example, #test will work, but test will fail and return http status code is not 200.


adding instructions for build

This splits off the "build your own HTML locally" section into a separate advanced section so we can give it a bit more attention. It also adds some extra information about building the book with CI/CD, and generally tries to add some missing information and clean things up

Merging this one since I think all the changes are non-controversial - but happy to iterate on the text further if anybody has ideas!


chore: fix yarn tsc type inferencing

Description
Currently yarn tsc would fail with the following error:
//:tsc: packages/app/src/components/Root/LogoFull.tsx:4:7 - error TS2742: The inferred type of 'Svg' cannot be named without a reference to '@backstage/theme/node_modules/@mui/system'. This is likely not portable. A type annotation is necessary.
//:tsc:
//:tsc: 4 const Svg = styled('svg')`
//:tsc:         ~~~
//:tsc:
//:tsc: packages/app/src/components/Root/LogoIcon.tsx:4:7 - error TS2742: The inferred type of 'Svg' cannot be named without a reference to '@backstage/theme/node_modules/@mui/system'. This is likely not portable. A type annotation is necessary.
//:tsc:
//:tsc: 4 const Svg = styled('svg')`
//:tsc:         ~~~
//:tsc:
//:tsc:
//:tsc: Found 2 errors in 2 files.
//:tsc:
//:tsc: Errors  Files
//:tsc:      1  packages/app/src/components/Root/LogoFull.tsx:4
//:tsc:      1  packages/app/src/components/Root/LogoIcon.tsx:4
error Command failed with exit code 1.

Which seems to stem from not being able to properly infer the type due to having 2 versions of @mui/system (v5.15.11 and v5.16.1) due to having 2 versions of @mui/material installed (v5.16.1 and v5.15.11 that was introduced as a transitive dependency from @backstage/theme.
Regenerated the yarn.lock after removing the old version of the @mui/material and @mui/system packages.
Which issue(s) does this PR fix

Fixes N/A

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[ ] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

nevermind, it seems it works on main now???

Tested main again after a rm -rf node_modules and it seems the issue resolved itself somehow :thinking:


Active development stopped?

Hey!
First of all, I want to say thank you for this realy great package!
This package covers a 80% of all use cases, but I'm sure, we can catch easily hit 95%.
But it feels like there is a lack of maintance.
They are many issues and PRs open, without any response. Personly, I wait for these two PRs (#1691, #1719) to be merged, since July.
I can unterstand, that its hard to work on this project (appveyor always failing, fast moving ecosystem, support all type of OS).

So, how we (as an open source community) and @JeffreyWay can solve or improve this issue?
Search for more maintainers, label issues or verify PRs?

Still actively being developed. But you're right that I have put this repo on hold while I finish up an important unrelated work project that needs all my attention.
Beginning in November, I'll be doing a lot of work here to get ready for the webpack 5 release.