[WebToolsE2E][Aspire] The Aspire 9 templates package needs to be updated to include Aspire 8.2.2 templates

INSTALL STEPS

Install VS 17.12 GA, with Aspire 8.2.0 checked in VS installer.
Install Aspire 9.0.0

REPRO STEPS

Create an Aspire 8.2 App by running dotnet new aspire-starter -o AspireStarterApp01 -f net8.0 --aspire-version 8.2

ACTUAL
Version of 8.2 template created is 8.2.1.

EXPECTED
It should be updated to 8.2.2.

@joperezr given 8.2.2 is out today, I'm assuming we should take a fix for this in 9.0

Great find! Yes we need to fix this for 9.

Checked that this issue has been fixed in the latest aspire9 build.


Fix name in charter.md

We will have to change the spelling in the official document for the charter.

I wonder if it's possible, ping @chanezon
I can live with this if it's too hard.

On Mon, Oct 05, 2015 at 11:33:18AM -0700, Michael Crosby wrote:

We will have to change the spelling in the official document for the
charter.

The accepted charter 1 ended up going with a link to a MAINTAINERS
file (currently using the obsolete opencontainers/specs name for
runtime-specs and not quite spelling out how this works with multiple
projects).  So this name-typo fix is obsolete, and this PR can be
closed.

ping @crosbymichael

LGTM
ping @caniszczyk for merge

ping @caniszczyk for merge

Wait, what?  The line this is PR fixing is not in the adopted charter.  Why bother landing a PR to fix the stale provisional charter in this repo?

This repo isn't active anymore, the website isn't on GitHub:
https://www.opencontainers.org/
I've updated the repo description to mentioned it's archived and inactive.


Asana

Ref: Conversation #692 / Daniel

Ref: Conversation #5074 / Jeff

Ref: Conversation #3260 / Frans Gunnink - Sharpe

I would assume this would be similar to the Trello plugin.. and am casting an up vote here. ⬆

Ref: Conversation #7205 / Jackie

 Asana


[BUG] create-hydrogen: command not found

When trying to start up a hydrogen template. I get a
sh: line 1: create-hydrogen: command not found error message.
It happens with npm, npx, and yarn.
I tried on another computer, with node 18.3 installed, and it worked fine no problem. So i went back to my other PC, updated node to the latest version 18.4, and am still getting the same issue.
Both PCs are running the same operating system and versions of node > 16.5.
Why is this happening?

What command are you running?

Thanks that seemed to work! Any idea as to what was causing the conflict? It's strange to me that I don't need to use @latest on my other computer (same OS, same node version)

There are a number of dependencies to @shopifiy/create-hydrogen. Sometimes npm can aggressively cache things. Closing this unless there's something else to report.


Passing values from custom field input up to parent?

Sorry I know this is supposed to be a bug report but I have some questions about this library because it is extremely confusing and the documentation isn't clear.
I've added a custom element fieldPhone that I reference with type phone. Inside this custom element, I have a method onInput({ number, isValid, country }) and I want to pass the isValid from the custom abstract field component up to VueFormGenerator so I can validate using it.
How can I do this without having to add vuex on top or add custom event buses?
Thanks.

Same here @rublev I want to pass the isValid to the parent so that in the parent component can validate the custom field. tried using @validated to get the output.

Same here @rublev . I am not sure but have you tried to use the custom events to pass the isValid to the parent. It would be great if you post a jsfiddle here

What I ended up doing was just using the same validatino library that vue-tel-input was using and then checking the value of the field in my custom validator function.
{
	type: 'phone',
	label: 'Phone',
	model: 'phone',
	required: true,
	validator: (value) => {
		if (isValidNumber(value)) {
			return []
		} else {
			return ['Enter your primary phone number']
		}
	},
},

It works and it's not too hacky, makes me less uncomfortable than using vuex to pass up a single piece of state for one field and mucking everything up.

You can override the validate method of a custom field, which looks something like this:
// custom validate function for a checkbox component
validate(calledParent) {
    // disabled inputs should always be assumed
    // to be "valid" as they can not be changed
    if(this.disabled) return true;

    let isValid = false;

    // clear previous errors
    this.clearValidationErrors();

    // BE SURE TO IMPLEMENT THE "required" validation rules
    if(this.schema.required && !this.value) {
        isValid = false;
        this.errors.push(this.schema.errorText || 'Input is required');
    }

    // CUSTOM VALIDATION LOGIC HERE
    if (isValidNumber(value)) {
        return []
    } else {
        return ['Enter your primary phone number']
    }

    // internal VFG logic for how validation is processed
    // be sure to implement any core VFG logic in this method
    if (isFunction(this.schema.onValidated)) {
        this.schema.onValidated.call(this, this.model, this.errors, this.schema);
    }

    if (!calledParent)
        this.$emit("validated", isValid, this.errors, this);

    return this.errors;
}

So if your custom component is for telephone numbers, you can embed any logic for validating the number into the components validate method so you do not need to provide validation logic for it in the schema.

@zoul0813 if I understood you correctly, the above logic should be placed in validator in parent component?

Here's a complete 'custom checkbox' component I built, which builds the label for the checkbox into the component (this is pretty basic) ...
<script>

import { get as objGet, isFunction } from 'lodash';
import { abstractField } from 'vue-form-generator';

export default {
    mixins: [ abstractField ],
    // mounted() {
    //     console.log('field-checkboxEx', 'schema', this.schema, 'model', this.model, objGet(this.model, this.schema.model, false));
    // },

    render(createElement) {
        // console.log('checkbox', 'render', createElement);
        if(!this.disabled) {
            return createElement('div',
                {
                    'class': ['wrapper']
                },
                [
                    createElement('label', [
                        createElement('input', {
                            'class': this.schema.fieldClasses,
                            'attrs': {
                                'id': this.getFieldID(this.schema),
                                'type': 'checkbox',
                                'autocomplete': false,
                                'disabled': this.disabled,
                                'checked': objGet(this.model, this.schema.model, false),
                            },
                            on: {
                                change: this.onChange
                            }
                        }),
                        ' ',
                        this.schema.labelText
                    ])
                ]
            );
        }
        return null;
    },
    methods: {
        onChange($event) {
            // console.log('checkbox', 'onInput', $event);
            this.value = $event.target.checked;
        },

        validate(calledParent) {
            if(this.disabled) return true;

            let isValid = false;

            this.clearValidationErrors();

            if(this.schema.required && !this.value) {
                isValid = false;
                this.errors.push(this.schema.errorText || 'Input is required');
            }

            if (isFunction(this.schema.onValidated)) {
                this.schema.onValidated.call(this, this.model, this.errors, this.schema);
            }

            if (!calledParent)
                this.$emit("validated", isValid, this.errors, this);

            return this.errors;
        }
    }
};
</script>

<style>
.vue-form-generator .field-checkbox input {
    margin-left: 12px;
}
</style>

It is added to VFG with the following:
import FieldCheckboxExComponent from './vue/fields/checkbox.vue';
Vue.component('field-checkboxEx', FieldCheckboxExComponent);

The schema for this component would look like this:
{
    "type": "checkboxEx",
    "labelText": "I have read and agree to the Terms Of Service.",
    "errorText": "You must accept the Terms of Service to continue",
    "styleClasses": "col-sm-12",
    "model": "terms_agree",
    "required": true
}

This field is considered "invalid" when it is not checked, which invalidates the VFG form ... when the user checks the box, the field is considered valid.
The same logic can be applied to any custom component.
For example, something like this for the vue-tel-input wrapper ...
<template>
   <vue-tel-input v-model="value"
          @onInput="onInput"
          <!-- optional -->
          :preferredCountries="preferredCountries">
   </vue-tel-input>
<template>
<script>
import { abstractField } from 'vue-form-generator';

export default {
  mixins: [abstractField],
  computed: {
    preferredCountries() {
      // use the 'preferredCountries' property of the field schema, and default to [us,gb,ua]
      return this.schema.preferredCountries || ['us', 'gb', 'ua'];
    }
  },
  data() {
    return {
      isValid: false,
    };
  },
  methods: {
    onInput({ number, isValid, country }) {
      console.log(number, isValid, country);
      this.isValid = isValid;
      this.value = number
    },
    validate(calledParent) {
      if(this.disabled) return true;

      this.clearValidationErrors();

      if(this.schema.required && !this.value) {
          isValid = false;
          this.errors.push(this.schema.errorText || 'Input is required');
      }

      if(!this.isValid) {
        this.errors.push(this.schema.errorText || 'Input is invalid');
      }

      if (isFunction(this.schema.onValidated)) {
          this.schema.onValidated.call(this, this.model, this.errors, this.schema);
      }

      if (!calledParent)
          this.$emit("validated", isValid, this.errors, this);

      return this.errors;
    }
  }
}
</script>

You can also override the formatValueToModel and formatValueToField methods of abstractField, so that ... for example "+<PHONE_NUMBER>" can be stored in the model as "1234567890" and sent to vue-tel-input as "+<PHONE_NUMBER>".
Take a look at the code used in the core and optional fields, and you'll see various use cases for this.

@rublev I'm closing this issue as I believe the issue has been resolved by the provided examples

@adi3230 my bad yeah, the solution worked greated and i moved validation into my custom components instead which declutters a lot of my schema. thanks @zoul0813!

and someone know how to do that with google recaptcha?? please help

@OkaSroka Can you please elaborate your issue for eg providing a jsfiddle link because it's really difficult to understand what you encountered/ why something doesn't work for you


add clojure implementation for bogo sort

I'm starting with the simple stuff
again Mr. @leios if there is anything you want me to contribute tell me. I want this project to succeed

Hey @earthfail I'am currently adding Clojure to the book.json. So @leios please hold the PR for a second :)

Not a problem! I was trying to figure out how to get the syntax highlighting to work. It looks like clojure is another C/C++ right now without highlighting? I need to figure out how to fix that...

@leios I'll look into that

thanks, @julianschacherpp  I thought there was something wrong with my browser
👍

Hey @earthfail ,
My understanding is that @julianschacherpp had a few smallscale changes and created a pull request for your fork. Once those changes are merged, I'll merge here.
Sorry for any confusion / if my understanding is incorrect!
Thanks again! =)

Hey @earthfail thanks for the submission!
@julianschacherpp, thanks for the help! =)

yeah @julianschacherpp you're the real mvp


Problem with overworld

I have the mod instaled on my server . When I connect to the server I run in the normal world .
What can I do about it

hello anywhere here?

What exactly do you mean by " If I but now re- connect is my world as if I were in outer space ."

your german?

No, I am not, and I do not exactly see how that is relevent.

i start the server with rocktry join on server and my wordl is normal i disconnect from server and join again and my world is in space all chunks wood gras all in space division and i cant change this i delete  rocketry start the server again join and all is normal

I have having a very difficult time understanding your english, can you
post a screenshot of what you are seeing when the overworld is in space
with the debug info (F3) on the screen and post a copy of the server logs?
On Mar 7, 2016 3:31 PM, "Golgatron"<EMAIL_ADDRESS>wrote:

i start the server with rocktry join on server and my wordl is normal i
disconnect from server and join again and my world is in space all chunks
wood gras all in space division and i cant change this i delete rocketry
start the server again join and all is normal
—
Reply to this email directly or view it on GitHub
https://github.com/zmaster587/AdvancedRocketry/issues/99#issuecomment-193436318
.

okay i make this

so here
First Time log in on Server with Rocketry all normal
Bild

I see what you mean now, I've never seen this happen before so I may need a bit more info.
Can you send me a copy of the advancedRocketry config file as well as the file in "/advRocketry/temp.dat" and the server startup log?

okay i make this

you need this temp and config data befor this bug or with this bug?

with the bug

okay i have found the proplem in world/adrocketry was a duplicatet dat file ......  now is all okay sorry for this

It's fine, at least if somebody else has the same problem they will see this.


Automate Release on Hackage with GitHub Actions

People would actually use the releases on Hackage (see #7), we should automate this process when releasing new versions

I am also interested in making this work. Would something like https://github.com/marketplace/actions/release-haskell-package work?


Three regressions when editing a page containing a list (Grav 1.7.6 compared to 1.6.31)

Hello,
We noticed 3 minor regressions in Grav 1.7.6 compared to Grav 1.6.31 when editing a page containing a list :

When a list is collapsed, the last item of the list overflows his container.
When a collapsed item is revealed, the text in the editor is invisible until we click inside the editor.
When adding a new item in the list, uploading an image cause an error Undefined index: *.

Here is a simple blueprint mytest.yaml used for testing :
extends@: default

form:
  fields:
    tabs:
      type: tabs
      active: 1

      fields:
        content:
          type: tab
          title: My Blueprints
          fields:
            header.title:
              unset@: true
            content:
              unset@: true
            header.media_order:
              unset@: true
            header.sections:
              label: Sections
              type: list
              collapsed: true
              style: vertical
              fields:
                .image:
                  type: file
                  label: Image
                  destination: 'self@'
                .text:
                  type: markdown
                  label: Text

Here is a mytest.md page. You can use any image.
---
title: mypage
sections:
    -
        text: 'My text'
        image:
            140x100.png:
                name: 140x100.png
                type: image/png
                size: 333
                path: 140x100.png
---

Overflow

Invisible text after revealing an item

The text appears after a click inside the editor

After adding a new item, this error appears when uploading a new image. It's possible to bypass by (1) adding a new empty item, (2) saving the page and (3) uploading the image.

Thank you for your time! :)

grav-plugin-admin's repository might have been more appropriate for this issue. My bad.


make public docker image available in dockerhub with some common configurations

What should we add or change to make your life better?
would be greate to have a simple aspnetcore with only reverse proxy easilly configurable as docker image, to be used easilly in docker or docker compose! possibly using appsettings.json configuration to configure the proxy capabilities and environment variables
Why is this important to you?
can be easilly used by infra engineers also who do not have knowledge of .net just configuring some json and variables in docker

I have made a template project and a ingress controller project  for yarp.
Maybe these two projects are helpful.
See:
https://github.com/netcorepal/netcorepal-ingress-controller
https://github.com/netcorepal/netcorepal-yarp-template

Duplicate of #247


cartography unable to find permissions_relationships.yaml file

Bug Template
Title: cartography unable to find permissions_relationships.yaml file
Description:

What issue is being seen?  Describe what should be happening instead of the bug, for example: Cartography should not crash, the expected value isn't returned, the data schema is wrong, etc.

I added a permissions_relationships.yaml file to use the IAM2.0 features and when running cartography sync operation twice , I keep seeing the below error message, notice the file path its looking for adds an additional ‘cartography/data’ search path in the warning after each run  :

WARNING:cartography.intel.aws.permission_relationships:Permission relationshp mapping file /home/ec2-user/cartography/data/cartography/data/permission_relationships.yaml not found, skipping injestion
WARNING:cartography.intel.aws.permission_relationships:Permission relationshp mapping file /home/ec2-user/cartography/data/cartography/data/cartography/data/permission_relationships.yaml not found, skipping injestion

To Reproduce:

Steps to reproduce the behavior.  Provide all data and inputs required to reproduce the issue.

manually ran below on AWS EC2 instance :

$ AWS_CONFIG_FILE=/home/ec2-user/.aws/config source /usr/local/bin/venv/bin/activate && /usr/local/bin/venv/bin/cartography --neo4j-uri bolt://localhost:7687 --analysis-job-directory /home/ec2-user/cartography/data/analysis --aws-sync-all-profiles > /dev/null

Logs:

If applicable, copy and paste your console log with the failing stack trace.

Screenshots:

If applicable, add screenshots to help explain your problem.

Please complete the following information::

Cartography release version or commit hash [e.g. 0.12.0 or 95e8e11913e2a44a4d4682506d8364a638ceac69]
version 0.23.0

Python version: [e.g. 3.7.4]
Python 3.7.6
OS (feel free to omit this if you don't think it's relevant to your issue): [e.g. Ubuntu bla bla, OSX bla bla]
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Additional context:

Add any other context about the problem here.

I can confirm this can be an issue depending on your working directory. @achantavy what is the best way to deal with relative file references?

Hi @0x6a6d,
--permission-relationships-file has a default value of cartography/data/permission_relationships.yaml - https://github.com/lyft/cartography/blob/1b9b86ba7b14807d1b2a701c1687a2766941cf04/cartography/cli.py#L185
This is a relative path.
It looks like cartography is making an assumption that your current working directory is the cartography path. As seen here, https://github.com/lyft/cartography/blob/1b9b86ba7b14807d1b2a701c1687a2766941cf04/cartography/intel/aws/permission_relationships.py#L310, since the  {os.getcwd}/{cartography/data/permission_relationships.yaml}, which in your case evaluates to  /home/ec2-user/cartography/data/cartography/data/permission_relationships.yaml.
I think a solution that could work for you would be to specify a --permission-relationships-file argument of /path/to/cartography/data/permission_relationships.yaml.

Thanks @achantavy - I will try that and report how it goes.

Actually 0x6a6d, thank you very much for bringing this to our attention; I found a bug.
The RPR file is loaded on the cartography config object here: https://github.com/lyft/cartography/blob/1b9b86ba7b14807d1b2a701c1687a2766941cf04/cartography/config.py#L85
And then later on we attach it to the common_job_parameters object so that the intel.iam.permission_relationships sync has access to it:
https://github.com/lyft/cartography/blob/1b9b86ba7b14807d1b2a701c1687a2766941cf04/cartography/intel/aws/__init__.py#L113
See the bug yet? :-)
There is no such thing as config.permission_relationships_file. The correct name is config.permission_relationship_file. This then causes common_job_parameters['permission_relationship_file'] to be None (I think), which will then cause the FileNotFoundError you're seeing.
I'll draft a PR.
cc: @SecPrez

nice catch!

Merged in something that I think will fix it; can you give this a try and report back?

will do!
On Thu, Jul 23, 2020 at 12:08 Alex Chantavy<EMAIL_ADDRESS>wrote:

Merged in something that I think will fix it; can you give this a try and
report back?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/lyft/cartography/issues/356#issuecomment-663181929,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AK37TJP6UVN2SDSEJ4JEGUDR5CDELANCNFSM4O3T2UDA
.

--
Joe
Signal: +1-917-450-8084

there stills to be some strangeness :
the first line seem like it did find the file at
/home/ec2-user/cartography/data/cartography/data/permission_relationships.yaml
the second line though seems like it is still looking for the file in  /home/ec2-user/cartography/data/cartography/data/cartography/data/permission_relationships.yaml  with extra "cartography/data"

INFO:cartography.intel.aws.permission_relationships:Syncing Permission Relationships for account '569589067625'.
WARNING:cartography.intel.aws.permission_relationships:Permission relationshp mapping file /home/ec2-user/cartography/data/cartography/data/cartography/data/permission_relationships.yaml not found, skipping injestion

the file is there at  /home/ec2-user/cartography/data/cartography/data

[ec2-user@ip-172-31-24-248 data]$ ls -lrt /home/ec2-user/cartography/data/cartography/data/permission_relationships.yaml
-rw-rw-r-- 1 ec2-user ec2-user 997 Jul 23 22:11 /home/ec2-user/cartography/data/cartography/data/permission_relationships.yaml

this is the full command and output of the sync run :

(venv) [ec2-user@ip-172-31-24-248 data]$ AWS_CONFIG_FILE=/home/ec2-user/.aws/config source /usr/local/bin/venv/bin/activate && /usr/local/bin/venv/bin/cartography --neo4j-uri bolt://localhost:7687 --analysis-job-directory /home/ec2-user/cartography/data/analysis --aws-sync-all-profiles > /dev/null
INFO:cartography.sync:Starting sync with update tag '1595542332'
INFO:cartography.sync:Starting sync stage 'create-indexes'
INFO:cartography.intel.create_indexes:Creating indexes for cartography node types.
INFO:cartography.sync:Finishing sync stage 'create-indexes'
INFO:cartography.sync:Starting sync stage 'aws'
INFO:cartography.intel.aws:Syncing AWS account with ID '569589067625' using configured profile 'csirt'.
INFO:cartography.intel.aws:Trying to autodiscover accounts.
INFO:cartography.intel.aws.iam:Syncing IAM for account '569589067625'.
INFO:cartography.intel.aws.s3:Syncing S3 for account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'eu-north-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ap-south-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'eu-west-3' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'eu-west-2' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'eu-west-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ap-northeast-2' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ap-northeast-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'sa-east-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ca-central-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ap-southeast-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'ap-southeast-2' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'eu-central-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'us-east-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'us-east-2' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'us-west-1' in account '569589067625'.
INFO:cartography.intel.aws.dynamodb:Syncing DynamoDB for region in 'us-west-2' in account '569589067625'.
INFO:cartography.intel.aws.ec2:Syncing EC2 for account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'eu-north-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ap-south-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'eu-west-3' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'eu-west-2' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'eu-west-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ap-northeast-2' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ap-northeast-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'sa-east-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ca-central-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ap-southeast-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'ap-southeast-2' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'eu-central-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'us-east-1' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'us-east-2' in account '569589067625'.
INFO:cartography.intel.aws.eks:Syncing EKS for region 'us-west-1' in account '569589067625'.
WARNING:cartography.intel.aws.eks:Account<PHONE_NUMBER>25 is not authorized to use this service in this region. Skipping...
INFO:cartography.intel.aws.eks:Syncing EKS for region 'us-west-2' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'eu-north-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ap-south-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'eu-west-3' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'eu-west-2' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'eu-west-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ap-northeast-2' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ap-northeast-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'sa-east-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ca-central-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ap-southeast-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'ap-southeast-2' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'eu-central-1' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'us-east-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.rds:Syncing RDS for region 'us-east-2' in account '569589067625'.
INFO:cartography.intel.aws.rds:Syncing RDS for region 'us-west-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.rds:Syncing RDS for region 'us-west-2' in account '569589067625'.
INFO:cartography.intel.aws.route53:Syncing Route53 for account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'us-east-2' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'us-east-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'us-west-1' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'us-west-2' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'ap-northeast-1' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'ap-northeast-2' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'ap-south-1' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'ap-southeast-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'ca-central-1' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'eu-central-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'eu-west-1' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'eu-west-2' in account '569589067625'.                                                                                INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'eu-west-3' in account '569589067625'.
INFO:cartography.intel.aws.elasticsearch:Syncing Elasticsearch Service for region 'sa-east-1' in account '569589067625'.                                                                                INFO:cartography.intel.aws.permission_relationships:Syncing Permission Relationships for account '569589067625'.
WARNING:cartography.intel.aws.permission_relationships:Permission relationshp mapping file /home/ec2-user/cartography/data/cartography/data/cartography/data/permission_relationships.yaml not found, skipping injestion                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-north-1'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ap-south-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-west-3'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-west-2'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-west-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ap-northeast-2'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ap-northeast-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'sa-east-1'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ca-central-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ap-southeast-1'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'ap-southeast-2'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-central-1'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'us-east-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'us-east-2'.
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'us-west-1'.                                                                                INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'us-west-2'.
INFO:cartography.sync:Finishing sync stage 'aws'                                                                                INFO:cartography.sync:Starting sync stage 'gcp'
ERROR:cartography.intel.gcp:Unable to initialize Google Compute Platform creds. If you don't have GCP data or don't want to load GCP data then you can ignore this message. Otherwise, the error code is: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information. Make sure your GCP credentials are configured correctly, your credentials file (if any) is valid, and that the identity you are authenticating to has the securityReviewer role attached.
INFO:cartography.sync:Finishing sync stage 'gcp'                                                                                INFO:cartography.sync:Starting sync stage 'gsuite'
ERROR:cartography.intel.gsuite:Unable to initialize GSuite creds. If you don't have GSuite data or don't want to load Gsuite data then you can ignore this message. Otherwise, the error code is: The parameter passed to the from_stream() method should point to a file. Make sure your GSuite credentials are configured correctly, your credentials file (if any) is valid. For more details see README                      INFO:cartography.sync:Finishing sync stage 'gsuite'
INFO:cartography.sync:Starting sync stage 'crxcavator'                                                                                WARNING:cartography.intel.crxcavator:CRXcavator import is not configured - skipping this module. See docs to configure.
INFO:cartography.sync:Finishing sync stage 'crxcavator'                                                                                INFO:cartography.sync:Starting sync stage 'okta'
WARNING:cartography.intel.okta:No valid Okta credentials could be found. Exiting Okta sync stage.                                                                                INFO:cartography.sync:Finishing sync stage 'okta'                                                                                INFO:cartography.sync:Starting sync stage 'github'
WARNING:cartography.intel.github:GitHub import is not configured - skipping this module. See docs to configure.                                                                                INFO:cartography.sync:Finishing sync stage 'github'
INFO:cartography.sync:Starting sync stage 'analysis'                                                                                INFO:cartography.intel.analysis:Loading analysis jobs from directory: /home/ec2-user/cartography/data/analysis
INFO:cartography.intel.analysis:Running discovered analysis job: /home/ec2-user/cartography/data/analysis/aws_ec2_exposed.json                                                                                INFO:cartography.sync:Finishing sync stage 'analysis'
INFO:cartography.sync:Finishing sync with update tag '1595542332'

Ah, I should've been more specific. Can you please try the latest master (not the 0.24.0 release)?
The skipping injestion log message is different in the latest master.

I am getting the below error

ERROR:cartography.sync:Unhandled exception during sync stage 'aws'
Traceback (most recent call last):
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/sync.py", line 71, in run
stage_func(neo4j_session, config)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/util.py", line 58, in timed
return method(*args, **kwargs)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 144, in start_aws_ingestion
_sync_multiple_accounts(neo4j_session, aws_accounts, config.update_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 92, in _sync_multiple_accounts
_sync_one_account(neo4j_session, boto3_session, account_id, sync_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 54, in _sync_one_account
permission_relationships.sync(neo4j_session, account_id, sync_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/permission_relationships.py", line 331, in sync
relationship_mapping = parse_permission_relationship_file(common_job_parameters["permission_relationship_file"])
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/permission_relationships.py", line 311, in parse_permission_relationship_file
with open(file) as f:
NotADirectoryError: [Errno 20] Not a directory: '/usr/local/bin/venv/bin/cartography/data/permission_relationships.yaml'
Traceback (most recent call last):
File "/usr/local/bin/venv/bin/cartography", line 11, in
load_entry_point('cartography==0.22.0', 'console_scripts', 'cartography')()
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/cli.py", line 308, in main
return CLI(default_sync, prog='cartography').main(argv)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/cli.py", line 288, in main
return cartography.sync.run_with_config(self.sync, config)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/sync.py", line 145, in run_with_config
return sync.run(neo4j_driver, config)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/sync.py", line 71, in run
stage_func(neo4j_session, config)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/util.py", line 58, in timed
return method(*args, **kwargs)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 144, in start_aws_ingestion
_sync_multiple_accounts(neo4j_session, aws_accounts, config.update_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 92, in _sync_multiple_accounts
_sync_one_account(neo4j_session, boto3_session, account_id, sync_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/init.py", line 54, in _sync_one_account
permission_relationships.sync(neo4j_session, account_id, sync_tag, common_job_parameters)
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/permission_relationships.py", line 331, in sync
relationship_mapping = parse_permission_relationship_file(common_job_parameters["permission_relationship_file"])
File "/usr/local/bin/venv/lib64/python3.7/site-packages/cartography/intel/aws/permission_relationships.py", line 311, in parse_permission_relationship_file
with open(file) as f:
NotADirectoryError: [Errno 20] Not a directory: '/usr/local/bin/venv/bin/cartography/data/permission_relationships.yaml'

Double check this, but I think the correct path of that file is '/usr/local/bin/venv/bin/cartography/cartography/data/permission_relationships.yaml'.
Try do a less on that path and if it is an actual file then set call the CLI with --permission-relationships-file /usr/local/bin/venv/bin/cartography/cartography/data/permission_relationships.yaml. If it takes forever to reach that point and you're impatient to test, you can comment out these lines in the meantime:
https://github.com/lyft/cartography/blob/342eb5cc205c7c2c42855ef7743b9c1e7d47e2dd/cartography/intel/aws/__init__.py#L27-L55

/usr/local/bin/venv/bin/cartography is an executable file and not a directory so I can't create a subdirectory under that
(venv) [ec2-user@ip-172-31-24-248 log]$ ls -l /usr/local/bin/venv/bin/cartography
-rwxr-xr-x 1 root root 420 Jul  3 00:01 /usr/local/bin/venv/bin/cartography

Ohhh that makes a lot of sense now. Ok, I think you can take the contents of the RPR file, save it to a path of your choice, and then specify that path in --permission-relationships-file.
This also has the added benefit of letting you add your own custom resource permission relationships; like if you're interested in seeing who in your environment can perform the, I dunno, ec2:GetConsoleScreenshot action, add an entry like this
- target_label: EC2Instance
  permissions:
  - ec2:GetConsoleScreenshot
  relationship_name: CAN_SCREENSHOT

and then the permission relationships sync will draw the (:AWSPrincipal)-[:CAN_PEER]->(:AWSVpc).
Oh, how did you install the tool? pip install cartography? If so, from your bug report, it sounds like all cartography installations from pip running the CLI don't have the default permission relationship file paths working. We'll want to verify and fix that.

Hey, give this another try when you can, sorry for the sloppy testing. I made another fix and added tests to hopefully catch all the problems.

I was able to successfully run the resource permission relationships part of the sync 👍

INFO:cartography.intel.aws.permission_relationships:Syncing Permission Relationships for account '569589067625'.
INFO:cartography.intel.aws.permission_relationships:Syncing relationship 'CAN_READ' for node label 'S3Bucket'
INFO:cartography.intel.aws.permission_relationships:Cleaning up relationship 'CAN_READ' for node label 'S3Bucket'
INFO:cartography.intel.aws.permission_relationships:Syncing relationship 'CAN_WRITE' for node label 'S3Bucket'
INFO:cartography.intel.aws.permission_relationships:Cleaning up relationship 'CAN_WRITE' for node label 'S3Bucket'
INFO:cartography.intel.aws.permission_relationships:Syncing relationship 'CAN_QUERY' for node label 'DynamoDBTable'
INFO:cartography.intel.aws.permission_relationships:Cleaning up relationship 'CAN_QUERY' for node label 'DynamoDBTable'
INFO:cartography.intel.aws.permission_relationships:Syncing relationship 'CAN_ADMINISTER' for node label 'RedshiftCluster'
INFO:cartography.intel.aws.permission_relationships:Cleaning up relationship 'CAN_ADMINISTER' for node label 'RedshiftCluster'
INFO:cartography.intel.aws.resourcegroupstaggingapi:Syncing AWS tags for region 'eu-north-1'.

I think this may have partly been my problem for not explictly specifying the location of the file
thank you for your help @achantavy  - great work on this project!

Yay! Glad we got it working. Hope you continue to find this useful and hope to hear more on how you use our tool.


required module: multi-hub networking

Speaking to @grayzu, suggested raising this here. Perhaps it should be an issue template?
This issue is to track the request to create a hub & spoke tfvm. It has been created to avoid duplication of effort.
In the Azure Landing Zones team, we have a requirement to deploy hub & spoke network architectures.
I propose the following top level functional spec items:

Create n number of hub virtual networks with supplied address spaces, locations and resource groups.
For any hub network:

Supply custom DNS servers
optionally create full mesh peering with other hubs
Ability to associate IP supernets to each hub, with the module able to process this data and create route tables in peered hubs.
Optional linking to DDoS plan
Optional linking to private DNS zones
Optional Deployment of Azure Firewall with ability to link to an existing azure firewall policy
Optional deployment of ER GW in a hub network
Optional deployment of P2S GW in a hub network

/cc @jtracey93
Am happy to take on the work for this, using this issue to track

Hi @matt-FFFFFF, since we've got verified modules to create virtual network and corresponding subnets:(terraform-azurerm-network & terraform-azurerm-subnets), maybe we should leave the creation of subnets to these modules?
My thought on "which resource should be declared in a module" is here:

The criterion for determining whether a resource should be put into the current module is: only the resource that "belongs" to this module should be declared.

So I think the Azure Firewall should has it's own module, but the Gateway looks "belong" to this h&s peering. I'm not familiar with Azure's h&s peering, I think the most important challenge is to determine the boundary of this "h&s peering"'s domain like DDD did. The problem we're facing now is a domain design problem, it would be great if we could learn from the CAF team's case study.
Please let me know if you have further thought on this thread.

Additional thought:
We could design and implement several modules we need to implement a full h&s peering architecture, then we can assemble them into an complete example and submit it to example document repo.

See wip here
https://github.com/Azure/terraform-azure-hubandspoke

MVP complete @lonegunmanb do we need to publish to home page?

Has been released


Can we use an exsiting list of thumbnail as the pager?

Although we can use the customPaging option to dynamically create a list of thumbnail as the pager, that can result in FOUC when the web page is long. In that case, I would rather write the list of thumbnail in the HTML in advance than create it dynamically. So is there a way to set an existing list of thumbnail as the pager?

You can probably do something with asNavFor, or just fix the FOUC with some conditioning around .slick-initialized


Gif on README page way too fast!

Hi,
I think it's rather useless in this state. People can't even figure out what is shown because every frame is very busy with lots of information.
Consider splitting this and just inserting several static images instead, so people can take time looking at each.
Alternatively, make it much much slower perhaps?
Many thanks.

@batjko best way to get it updated is to supply a new one!

I am not a user and have no knowledge of what this project actually is about.
I only passed by through a random link, trying to see what this repo does, and the first thing I noticed was the giant confusing gif.
So I thought I'd leave some feedback.

@batjko :+1: Then thanks for the feedback

We need to refresh the screenshots altogether, the UI has changed quite a bit since we first took them. The gif on the readme was an attempt to be nimble on real estate.
You can find static ones in the docs. http://pythonhosted.org/airflow/ui.html


Embed + Sideload Relationships for a model

Is it possible to embed one relationship and sideload another?
For instance, imagine a situation like this:
"projects": [{
  "id": "1",
  "supervisor_id": "1",
  "latest_metric": {
    "id": "3",
    "completed": "0.2"
  }
}, {
  "id": "2",
  "supervisor_id": "1",
  "latest_metric": {
    "id": "5",
    "completed": "0.5"
  }
}],
"supervisors": [{
  "id": "1",
  "first_name": "Bob",
  "last_name": "Jones"
}]

In this case, I sideload the supervisor because Bob is the supervisor of multiple project, so I don't want to embed his info in each project payload. However, latest_metric is a distinct model, but unique to a project and embedded.
Currently, it looks like embed: true can only be specified at the serializer level. Is that assumption correct? Should we allow a user to specify this?

@blimmer This issue might be helpful re: the above: https://github.com/samselikoff/ember-cli-mirage/issues/607  TLDR: not now, once the revised version of 0.2 is released

What if you specified embed: true on the serializers/latest-metric.js?
For now, until a better API exists for this, you could also sideload everything, and then overwrite serializers/project.js and manually add the json yourself, something like
// serializers/project.js

export default ApplicationSerializer.extend({
  serialize(project, request) {
    let json = Serializer.prototype.serialize.apply(this, arguments);

    project.latest_metric = project.latestMetric.attrs;

    return json;
  }
});

@samselikoff that approach does work, but there there is a minor tweak to be done, at least in my case calling Serializer.prototype.serialize.apply(this, arguments) was not doing the actual serialization on my child object (in this case latestMetric, so its attributes were not converted to snake case). This resulted in the association working, but some attributes were invalid (I took a while to figure that out, it was definitely not my best programming moment).
The tweak:
export default ApplicationSerializer.extend({
  serialize(project, request) {
    let json = Serializer.prototype.serialize.apply(this, arguments);
    let latestMetricsAttr = Serializer.prototype.serialize.apply(this, [project.latestMetric, request]);

    project.latest_metric = latestMetricsAttr;

    return json;
  }
});

Thanks for the help and for ember-cli-mirage. If you think it might be worth to enhance the embed option per association I can find some time to work on that, it would be a pleasure.

Closing for now due to inactivity, we can revisit if more folks need this.

I might add a +1 for a pick and choose which relationships are embedded/vs sideloaded vs just serialized Ids but this thread helped me write a serializer to fit my needs for now


Firefox 'double video' issue

Browser: Firefox
Browser version: 37.0.2
YTC version: Dev Verion 482, 501
Addon type: Chrome extension; Webstore edition [Used the .xpi]
Debug: https://gist.github.com/302757337ba4e9159c47
Issue:
So I woke up this morning to this issue. [Picture attached]

I've no idea whats causing it. It started with dev version 482, then I updated to see if it would fix the problem, and it did not.

I'm using the same browser and I don't have this issue.
Did you try resetting the script settings?

This is so strange... I reset my settings and re-build my set up from scratch and I'm still getting it.
It doesn't occur 100% of the time, but it's still happening.
I'ma try to see what setting/s is causing this...

Possibly related to #1695. Check if this still occurs in the latest dev version.

The black box is no longer there, but it still massively resizes the screen as if the box would be there.
First picture is of the video without Lights Off 'off', the second is with it 'on'.


Initialize Tracer resource and pass to Spans

https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/sdk-tracing.md#tracer-creation

New Tracer instances are always created through a TracerFactory (see API). The name and version arguments supplied to the TracerFactory must be used to create a Resource instance which is stored on the created Tracer. The readable representations of all Span instances created by a Tracer must provide a getLibraryResource method that returns this Resource information held by the Tracer.

The spec originally allowed providing a Resource with a Span, where a Resource could represent another service (e.g. an untraceable entity like Memcached, Redis or MySQL). This feature was removed after some debate, along with the removal of SpanData. Named Tracers re-adds multiple Resources. I’m not sure there is much practical difference, at least in terms of Resources, between your TraceProxy proposal above and the current implementation of Named Tracers. TraceProxy adds a level of indirection that isn’t required by Named Tracers, and removes the possibility of separate configuration (e.g. separate sampling policies). The latter could be seen as beneficial 😄.
I’m OK with leaving this PR hanging around for awhile, to facilitate debate. I don’t think TraceProxy is a significant improvement over Named Tracers, though.
One thing I’d like to discuss further is a comment from @elskwid in the weekly meeting about the word Factory giving him pause in Ruby code. If that’s a code smell to you, can you suggest what would be more idiomatic in Ruby?

Ironically, https://github.com/open-telemetry/opentelemetry-specification/pull/313 moves everything except the Resource from Tracer to TracerFactory, leaving Tracer looking awfully like your TracerProxy. I've implemented that in my latest change. It feels really rough, and makes the "Factory" part of the name grate even more.
This was not fun to implement, and I've undoubtedly missed testing some pieces. 👀 appreciated!


MAP4 implementation is wrong

Hi!
By chance, I believe I have found definitive proof that the current implementation of MAP4 available in this library must contain errors.
My claim is based on two pieces of evidence: visualizations and model performance. Since the original code is admittedly hard to use, I have fully refactored it myself here and published it on pip. I believe my implementation to pedissequally follow their original code and paper, minus some dumb points in their code (they were converting things to a set then to a list then to a set and other such things). I have opened a pull request in their original repo, but they do not seem interested in replying.
By having a different implementation, I was able to compare your implementation with mine.
Both visualizations and performance report to the tasks I am working on, namely the prediction of chemical taxonomy given as input for the fingerprint. The names of the chemical taxonomy layers are "pathways", "superclasses" and "classes". Since chemicals may have multiple labels, the task is defined as a multi-label task.
First evidence: Feature Visualizations
Here are the PCA and TSNE decompositions of the MAP implementation available from scikit-fingerprints, and map4, respectively. The colors are not some model predictions, but the ground truth labelling associated with this dataset (dataset from this paper). While there is admittedly some uncertainty on the quality of some of these labels, I expect most of the labels to be correct. For each chemical taxonomical layer, the most common label is shown.

You can find several other such visualizations for other fingerprints made available from scikit-fingerprint here. They all work nominally, with the singular exception of MAP which shows what I can describe by my experience as a near-total decomposition failure, both from the PCA and TSNE perspective.
Second evidence: Performance
In this second plot, you can find the AUPRC performance of several fingerprints provided by the scikit-fingerprint package. You can find more metrics here. The difference in performance between MAP4 (in blue) and MinHashed Atom Pair (in green), averaged across 5 holdouts and using the same parameters, is extreme. The model used in this case is a tensorflow neural network, but I have obtained analogous results using a sklearn Random Forest.

My proposition
To resolve this issue, since it looks like my refactored implementation works well, I would suggest we swap the current MAP re-implementation present in this package with an interface to my implementation. Happy to change anything you believe to be needed in my implementation to make it more compatible with this package. As it stands, I tried to leave it unchanged in respect to the original one, but they don't seem to care much for my PR.
If you'd like for me to proceed with a PR with this swap, let me know.
Luca

@LucaCappelletti94 this is a great idea, and congrats on improving the original implementation. The bad results also surprised me during our experiments, so I would very much appreciate a fix here.
The main decision here, I think, is whether to use map4 as a separate package, or to include the whole code into scikit-fingerprints (BTW, very small detail, but note it's plural "fingerprints"). A separate package may be useful if one needs only that fingerprint, but this is basically a single file implementation, so in my opinion including it fully in scikit-fingerprints would be reasonable. It would also make dependency management easier. Of course, this is your decision here.
One concern I have is using the MHFPEncoder here. It requires installing mfhp, which is maintained by the same group as MAP4. There is already an issue there related to NumPy 2.0 compatibility, so I would like to avoid that. Fortunately, the MHFPEncoder implementation also looks quite easy, and not a lot of code, it's mostly comments. They also use the hashlib for the actual hashing - this would enable us to remove the datasketch dependency from scikit-fingerprints. By a quick glance, it could also be improved a bit, like their MAP4 implementation.
So my general suggestion is:

also reimplement MHFPEncoder
use your MAP4 implementation
include this in scikit-fingerprints

Do you agree?

I mostly refactored MAP4 into a standalone package as I had not encountered yet this one, so sure I can make a PR to add it here. If the original authors were a bit more reactive on GitHub I'd have preferred to try and keep the original implementation working, to have a valid "ground truth". The next best thing certainly is to have it all here without odd dependencies, so yes I can add my refactored MAP4 and refactor MHFPEncoder.
The only issue is that I am still having issues running the test suite coverage at this time, so while I can add these implementations and a reasonable test suite, I will be blind regarding the test coverage.
Before proceeding with this PR though, I'd like to finalize the TQDM PR thing, so as not to have different PR edits in potential collision.

Sure. The test coverage one is weird, as I could not reproduce this on a fresh scikit-fingerprints installation. Python 3.9 + new Poetry environment + make setup worked with no problem. I tested this on both Ubuntu 22.04 and Windows 10. But generally speaking we're not that interested in percentage of coverage, just running PyTest is good enough, since test coverage clearly does not pick up all checked code (e.g. count MACCS).

Ok, then let's finish this TQDM thing and I'll pick up this other thing when we are done.


[Bug]: Pipeline “towhee/image-embedding-regnety-080“ crashed when embedding image list

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Pipeline  towhee/image-embedding-regnety-080 carshed when embedding image list
Testing test_embedding_image_list:towhee/image-embedding-regnety-080
2022-02-21 16:34:32,081 -<PHONE_NUMBER>65824 - thread_pool_task_executor.py-thread_pool_task_executor:75 - ERROR: Traceback (most recent call last):
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/thread_pool_task_executor.py", line 68, in execute
    op = self._op_pool.acquire_op(runner.hub_op_id, runner.op_args, runner.tag)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_pool.py", line 102, in acquire_op
    op = self._op_loader.load_operator(hub_op_id, op_args, tag)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_loader.py", line 142, in load_operator
    op = factory(function, args, tag)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_loader.py", line 118, in load_operator_from_cache
    return self.load_operator_from_path(path, args)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_loader.py", line 108, in load_operator_from_path
    return self.instance_operator(op, args) if op is not None else None
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_loader.py", line 152, in instance_operator
    return op(**args) if args is not None else op()
  File "/Users/jingjing/.towhee/operators/towhee/timm_image_embedding/main/timm_image_embedding.py", line 25, in __init__
    self.model = create_model(model_name, pretrained=True, num_classes=0)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/timm/models/factory.py", line 74, in create_model
    model = create_fn(pretrained=pretrained, **kwargs)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/timm/models/regnet.py", line 476, in regnety_080
    return _create_regnet('regnety_080', pretrained, **kwargs)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/timm/models/regnet.py", line 345, in _create_regnet
    return build_model_with_cfg(
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/timm/models/helpers.py", line 465, in build_model_with_cfg
    load_pretrained(
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/timm/models/helpers.py", line 189, in load_pretrained
    state_dict = load_state_dict_from_url(pretrained_url, progress=progress, map_location='cpu')
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/torch/hub.py", line 557, in load_state_dict_from_url
    return torch.load(cached_file, map_location=map_location)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/torch/serialization.py", line 608, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/torch/serialization.py", line 794, in _legacy_load
    deserialized_objects[key]._set_from_file(f, offset, f_should_read_directly)
RuntimeError: unexpected EOF, expected 2133239 more bytes. The file might be corrupted.

2022-02-21 16:34:32,081 -<PHONE_NUMBER>65824 - thread_pool_task_executor.py-thread_pool_task_executor:76 - ERROR: unexpected EOF, expected 2133239 more bytes. The file might be corrupted.
Traceback (most recent call last):
  File "/Users/jingjing/Workspace/towhee/tests/testcases/test_main.py", line 232, in <module>
    test_caller()
  File "/Users/jingjing/Workspace/towhee/tests/testcases/test_main.py", line 223, in test_caller
    image_class_pipeline_runner()
  File "/Users/jingjing/Workspace/towhee/tests/testcases/test_main.py", line 109, in image_class_pipeline_runner
    res = methodcaller(func, pipeline_name)(invalid_embedding_obj)
  File "/Users/jingjing/Workspace/towhee/tests/testcases/test_image_embedding.py", line 71, in test_embedding_image_list
    embedding = embedding_pipeline(img_list)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/__init__.py", line 73, in __call__
    out_df = self._pipeline(in_df)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/pipeline.py", line 107, in __call__
    graph_ctx.join()
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/graph_context.py", line 95, in join
    op.join()
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_context.py", line 146, in join
    runner.join()
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/site-packages/towhee/engine/operator_runner/runner_base.py", line 218, in join
    self._end_event.wait()
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/threading.py", line 574, in wait
    signaled = self._cond.wait(timeout)
  File "/Users/jingjing/miniconda3/envs/tw/lib/python3.9/threading.py", line 312, in wait
    waiter.acquire()
KeyboardInterrupt

Expected Behavior
embedding succssfully
Steps To Reproduce
def test_embedding_image_list(self, pipeline_name):
        """
        target: test embedding with image list
        method:  embedding with image list
        expected: raise exception
        """
        N = 3
        img_list = []
        img = cf.create_image()
        for i in range(N):
            img_list.append(img)
        embedding_pipeline = pipeline(pipeline_name)
        try:
            embedding = embedding_pipeline(img_list)
        except Exception as e:
            print("Raise Exception: %s" % e)

        return True

Environment
- Towhee version(e.g. v0.1.3 or 8b23a93):0.4.1.dev75
- OS(Ubuntu or CentOS): macos
- CPU/Memory:
- GPU:
- Others:

Anything else?
No response

Download torch model failed, delete model in the cache, normally in ~/.cache/torch/hub/checkpoints/

~/.cache/torch/hub/checkpoints/

Download torch model failed, delete model in the cache, normally in ~/.cache/torch/hub/checkpoints/

ok，I get it

I think this solution is a workaround, could we fix this in a better way? Thanks, reopen it for discussion.

Can you close this issue and re-open another one on automatically redownloading failed models?

@jingkl
could you help to solve the comments of frank? Thanks.


Update check failure not properly handled

Describe the Problem
What I've found is that the update check does not work but that is due to the update server not handling feature branch builds gracefully (it simply returns 400 Bad Request) and the modeler tries to parse that as JSON (not properly handling the HTTP 400 error code):

Expected Behavior
If the update check fails with a HTTP 400 we do not attempt to parse the response, but indicate the error in a non cryptic fashion.
Bonus points: Ensure that our update server exposes machine readable errors that we can display to the user.
Additional bonus: Handle feature branch versions v5.0.0-foo-bar gracefully in the update server.
Environment

Camunda Modeler: v5.0.0-some-feature-branch
OS: Linux (Arch)

Originally posted by @nikku in https://github.com/camunda/camunda-modeler/pull/2998#issuecomment-1162970727

closed by https://github.com/camunda/camunda-modeler/pull/3265


Refactoring: Investigate metalsmith-each

Seems that metalsmith-each would be very well suited for this plugin...

Fixed by 367b3bb396352d132bce9d62f67a1b2daae7ed92


[IDEA] Would be awesome if You could choose what channels it works with,

Hey,
would it be possible so You could choose the channels You want the bot to monitor? I want to have like 3 specific chats that work like this - not all.
Describe the solution you'd like
Some sort off menu to let You choose via embed?

Hello @Shadoweee77
Thank you for your idea.
It's an interesting feature, I will try it out later on.
Right now I'm crunch IRL, so it may take a while before I will be able to work on it.
I will keep you posted here in the comments.

Hi !
Any news about this feature?
It would be really useful and awesome

Hi @Shadoweee77 @arthprin!
I've added a new feature to add/delete specific voice channels to the ignore list.
I've seen your proposition about making an embed to be able to choose which one to ignore. However, this solution will provide a significant load on the bot itself, which is going to cause a slow response from the bot in the long run.
Please check either readme of help command for the help.
NB: If you don't know how to find channel id - go to User Settings -> Appearance -> Advanced -> Developer Mode. This will add Copy ID button when you right-click any channel/server.

If you see any issues/bugs/possible adjustments - feel free to comment here.
Have a good day!

Awesome, thanks! <3

Hi @andretkachenko,
Thanks !
But I have a problem, every time I have:
sudo ignore add<PHONE_NUMBER>71441419
Error processing command - specified channelId does not belong to a voice channel.
However, I add the id of the voice channel, and I am the administrator of the server ...

Hi @arthprin
Please check it again, I've now deployed the fix for it.

Hi @andretkachenko,
It's ok, thanks !
There are also small problems (nothing serious) in the readme and when we do the command "sudo help", I send you the screenshot: the command sudo ignore delete is not displayed correctly

And the readme :
`sudo ignore add {channelId} - skip voice channel with the specified id when checking for linked text channel. Example: ${this.config.prefix}ignore add<PHONE_NUMBER>36334130. Requires user to have admin rights.
sudo ignore delete {channelId} - remove voice channel with the specified id from ignore list. Example: ${this.config.prefix}ignore delete<PHONE_NUMBER>36334130. Requires user to have admin rights.`

Ah, my bad. Don't know how I missed that.
I will fix this as well, thank you.

@arthprin done and done.
Thank you for your time! I appreciate your feedback.

No problem @andretkachenko! Thank you for your contribution with this really useful bot, which was terribly missing on Discord :)

Not sure if this is a bug or not yet implemented, but I do not get any feedback from the bot upon adding a channel to ignored list. Also printing a list would be cool. Either way, thanks a million!

It's just not implemented. If bot didn't respond with an error - then everything works just fine.
Regarding the list of ignored channels - if the bot returns just list of channel IDs, then it will not be user-friendly and that much useful.
And if I implement it to fetch channel names for being better for a user to look through - I expect it to have a serious impact on bot's responsiveness and performance, taking into account that it is used on 150+ servers already and the number keeps growing.
However, thank you for the idea, I will consider making it if I find any suitable solution for it.

@Shadoweee77 btw, I can say you that I've just checked the database and these channels you've been trying to add to ignore list were successfully added there, in case you are worried about that.


Writing to a HM-10 module

Can you provide instructions on how to write data to a connected peripheral please?
func write(value: Data, characteristic: CBCharacteristic) {
self.connectedPeripheral.peripheral.writeValue(value, for: characteristic, type:          CBCharacteristicWriteType.withResponse)
// OR
self.connectedPeripheral.peripheral.writeValue(value, for: characteristic, type: CBCharacteristicWriteType.withoutResponse)
}
Button("Turn on LED's") {
     let characteristicID = CBUUID(string: "FFE1") // as reported in BLE Terminal

     let characteristic = CBMutableCharacteristic(type: characteristicID,
                                                              properties: [.write, .notify, .read],
                                                              value: nil,
                                                              permissions: .writeable)

                                    bleManager.write(value: "{\"RL\":1023,\"OL\":1023,\"GL\":1023,\"BL\":1023,\"BZ\":0}\r\n".data(using: .utf8)!, characteristic: characteristic)

                                }

2023-04-03 01:27:59.368121+0100 SwiftUI-BLE-Project[3651:118475] [CoreBluetooth] WARNING: <CBMutableCharacteristic: 0x60000175f790 UUID = FFE1, Value = (null), Properties = 0x1A, Permissions = 0x2, Descriptors = (null), SubscribedCentrals = (
)> is not a valid characteristic for peripheral <CBPeripheral: 0x6000007656c0, identifier = 5066BE56-6F7F-31BA-0A5C-83736979927E, name = ArduinoPro, mtu = 23, state = connected>

In response to your comment, here is a suggestion on how to modify the code to use the discovered characteristics stored in foundCharacteristics. I have updated the write() function and the Button action accordingly:
func write(value: Data, characteristicUUID: CBUUID) {
    guard let characteristic = foundCharacteristics.first(where: { $0.uuid == characteristicUUID }) else {
        print("Characteristic not found")
        return
    }

    self.connectedPeripheral.peripheral.writeValue(value, for: characteristic.characteristic, type: .withResponse)
    // OR
    self.connectedPeripheral.peripheral.writeValue(value, for: characteristic.characteristic, type: .withoutResponse)
}

Button("Turn on LED's") {
    let characteristicID = CBUUID(string: "FFE1") // as reported in BLE Terminal
    let data = "{\"RL\":1023,\"OL\":1023,\"GL\":1023,\"BL\":1023,\"BZ\":0}\r\n".data(using: .utf8)!
    bleManager.write(value: data, characteristicUUID: characteristicID)
}

This modification ensures that the correct discovered characteristic is used when writing data to the connected peripheral.

Kazuya-Ito,
thank you for the quick response. I’ve added the Write function as updated, and I can confirm it’s working. I hope to see Later if I can print responses from my module back, and if I need some help are you able to assist me via discord?
i will leave my email<EMAIL_ADDRESS>hopefully you can email me directly so we can catch up.
It’s incredibly good of you to release such a good “base” of SwiftUI core Bluetooth code.
Regards
Alan

Hi kazuya-ito,
Thank you very much for helping me with the Write function, which does indeed work.
The next job is to populate a window with the incoming text strings from my HM-10 module.
I appreciate there is a time difference between Japan, and the UK, but was wondering if you could assist me with the very last function please?
discord : alantrundle#8757
The plan is to move things about With regards to my view controllers/ navigation, and when I’m happy I’ll submit it for a revision up to your GitHub as perhaps a branch?
Thanks
Alan
Sent from my iPhone
On 3 Apr 2023, at 04:26, kazuya ito @.***> wrote:

In response to your comment, here is a suggestion on how to modify the code to use the discovered characteristics stored in foundCharacteristics. I have updated the write() function and the Button action accordingly:
func write(value: Data, characteristicUUID: CBUUID) {
guard let characteristic = foundCharacteristics.first(where: { $0.uuid == characteristicUUID }) else {
print("Characteristic not found")
return
}
self.connectedPeripheral.peripheral.writeValue(value, for: characteristic.characteristic, type: .withResponse)
// OR
self.connectedPeripheral.peripheral.writeValue(value, for: characteristic.characteristic, type: .withoutResponse)

}
Button("Turn on LED's") {
let characteristicID = CBUUID(string: "FFE1") // as reported in BLE Terminal
let data = "{"RL":1023,"OL":1023,"GL":1023,"BL":1023,"BZ":0}\r\n".data(using: .utf8)!
bleManager.write(value: data, characteristicUUID: characteristicID)
}
This modification ensures that the correct discovered characteristic is used when writing data to the connected peripheral.
—
Reply to this email directly, view it on GitHubhttps://github.com/Kazuya-Ito-B/iOS-SwiftUI-BLE-Project/issues/2#issuecomment-1493591302, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AY5LBIDXHUEREJZ2NP2BWPTW7I7M5ANCNFSM6AAAAAAWQTNHJE.
You are receiving this because you authored the thread.Message ID: @.***>

Hello Alan, I apologize for the delayed response!
My Discord username is 【kazuya ito#0313】. If you encounter any difficulties or need further assistance, please don't hesitate to reach out to me on Discord. I'll do my best to help you there.
Looking forward to assisting you.
Best regards,


V14.2 bug fixes and features

These are fixes and features from the v14.2 milestone:
https://dev.guardianproject.info/versions/175
Ticket numbers are used when possible, but the main areas of work are:

Network reconnect and re-login improvements
Improved support for import from content:// type inputstreams for OTRDATA media sharing
Handling of postponed/offline messages, and re-send
Improvement of OTR force/require logic to actual do what it says

Also is built upon a previous PR here, so review/merge that one first: https://github.com/guardianproject/ChatSecureAndroid/pull/680

I don't enough about these bits to say much:

acb9becedb705f211c58947122eb22853b04dfe2
93c4de07379dd8f1c44bb86869bee206901a98d9
ea91042b587628a1a88a66f14e7c48aacca9ad9d

otherwise, I think this is all ready to merge

Only ea91042 is a bit tricky, so we'll have to see how it works in broader testing.


Are these images the same?

Hi,
I found there are several source of fmriprep in Docker hub (see figure below), including "nipreps/fmriprep" and "poldracklab/fmriprep" .

The latter has more downloads but not the newest version. So what's the difference between these two sources?  I think they are quite the same but updated by different people or institutes, is it right?

fMRIPrep began as a project in the Poldrack lab, but to transition it to a community-driven project, we've moved it under the nipreps organization in GitHub, and begun uploading it to nipreps on DockerHub.
Both are official, but the nipreps one will receive all new versions (possibly some exceptions if we have to release a fix for an old series) while the poldracklab one is now a historical archive.

fMRIPrep began as a project in the Poldrack lab, but to transition it to a community-driven project, we've moved it under the nipreps organization in GitHub, and begun uploading it to nipreps on DockerHub.
Both are official, but the nipreps one will receive all new versions (possibly some exceptions if we have to release a fix for an old series) while the poldracklab one is now a historical archive.

Got it, thanks for your explanations.


Numba compilation

Not expecting this to be merged, just if someone wants to speed up yodel using Numba, this seems to be working OK (Biquad example):
import math

class Biquad:
    """
    A biquad filter is a 2-poles/2-zeros filter allowing to perform
    various kind of filtering. Signal attenuation is at a rate of 12 dB
    per octave.
    *Reference:*
        "Cookbook formulae for audio EQ biquad filter coefficients",
        Robert Bristow-Johnson
        (http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt)
    """

    def __init__(self):
        """
        Create an inactive biquad filter with a flat frequency response.
        To make the filter active, use one of the provided methods:
        :py:meth:`low_pass`, :py:meth:`high_pass`, :py:meth:`band_pass`,
        :py:meth:`all_pass`, :py:meth:`notch`, :py:meth:`peak`,
        :py:meth:`low_shelf`, :py:meth:`high_shelf` and :py:meth:`custom`.
        """
        self.reset()

    def reset(self):
        """
        Make the filter inactive with a flat frequency response.
        """
        self._a_coeffs0 = 0.0
        self._a_coeffs1 = 0.0
        self._a_coeffs2 = 0.0
        self._b_coeffs0 = 1.0
        self._b_coeffs1 = 0.0
        self._b_coeffs2 = 0.0
        self._x1 = 0.0
        self._x2 = 0.0
        self._y1 = 0.0
        self._y2 = 0.0

    def low_pass(self, samplerate, cutoff, resonance):
        """
        Make a low-pass filter.
        :param samplerate: sample-rate in Hz
        :param cutoff: cut-off frequency in Hz
        :param resonance: resonance or Q-factor
        """
        self._compute_constants(samplerate, cutoff, resonance)
        self._a_coeffs0 = (1.0 + self._alpha)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs0 = ((1.0 - self._cos_w0) / 2.0) / self._a_coeffs0
        self._b_coeffs1 = (1.0 - self._cos_w0) / self._a_coeffs0
        self._b_coeffs2 = ((1.0 - self._cos_w0) / 2.0) / self._a_coeffs0

    def high_pass(self, samplerate, cutoff, resonance):
        """
        Make a high-pass filter.
        :param samplerate: sample-rate in Hz
        :param cutoff: cut-off frequency in Hz
        :param resonance: resonance or Q-factor
        """
        self._compute_constants(samplerate, cutoff, resonance)
        self._a_coeffs0 = (1.0 + self._alpha)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs0 = ((1.0 + self._cos_w0) / 2.0) / self._a_coeffs0
        self._b_coeffs1 = -(1.0 + self._cos_w0) / self._a_coeffs0
        self._b_coeffs2 = ((1.0 + self._cos_w0) / 2.0) / self._a_coeffs0

    def band_pass(self, samplerate, center, resonance):
        """
        Make a band-pass filter.
        :param samplerate: sample-rate in Hz
        :param center: center frequency in Hz
        :param resonance: resonance or Q-factor
        """
        self._compute_constants(samplerate, center, resonance)
        self._a_coeffs0 = (1.0 + self._alpha)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs0 = (self._alpha) / self._a_coeffs0
        self._b_coeffs1 = 0
        self._b_coeffs2 = (- self._alpha) / self._a_coeffs0

    def all_pass(self, samplerate, center, resonance):
        """
        Make an all-pass filter.
        :param samplerate: sample-rate in Hz
        :param center: center frequency in Hz
        :param resonance: resonance or Q-factor
        """
        self._compute_constants(samplerate, center, resonance)
        self._a_coeffs0 = (1.0 + self._alpha)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs0 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._b_coeffs2 = (1.0 + self._alpha) / self._a_coeffs0

    def notch(self, samplerate, center, resonance):
        """
        Make a notch filter.
        :param samplerate: sample-rate in Hz
        :param center: center frequency in Hz
        :param resonance: resonance or Q-factor
        """
        self._compute_constants(samplerate, center, resonance)
        self._a_coeffs0 = (1.0 + self._alpha)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha) / self._a_coeffs0
        self._b_coeffs0 = (1.0) / self._a_coeffs0
        self._b_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._b_coeffs2 = (1.0) / self._a_coeffs0

    def peak(self, samplerate, center, resonance, dbgain):
        """
        Make a peak filter.
        :param samplerate: sample-rate in Hz
        :param center: center frequency in Hz
        :param resonance: resonance or Q-factor
        :param dbgain: gain in dB
        """
        self._compute_constants(samplerate, center, resonance, dbgain)
        self._a_coeffs0 = (1.0 + self._alpha / self._a)
        self._a_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._a_coeffs2 = (1.0 - self._alpha / self._a) / self._a_coeffs0
        self._b_coeffs0 = (1.0 + self._alpha * self._a) / self._a_coeffs0
        self._b_coeffs1 = (-2.0 * self._cos_w0) / self._a_coeffs0
        self._b_coeffs2 = (1.0 - self._alpha * self._a) / self._a_coeffs0

    def low_shelf(self, samplerate, cutoff, resonance, dbgain):
        """
        Make a low-shelf filter.
        :param samplerate: sample-rate in Hz
        :param cutoff: cut-off frequency in Hz
        :param resonance: resonance or Q-factor
        :param dbgain: gain in dB
        """
        self._compute_constants(samplerate, cutoff, resonance, dbgain)
        self._a_coeffs0 = ((self._a + 1) +
                             (self._a - 1) * self._cos_w0 + self._sqrtAlpha)
        self._a_coeffs1 = ((-2.0 * ((self._a - 1) +
                                      (self._a + 1) * self._cos_w0)) /
                             self._a_coeffs0)
        self._a_coeffs2 = (((self._a + 1) +
                              (self._a - 1) * self._cos_w0 - self._sqrtAlpha) /
                             self._a_coeffs0)
        self._b_coeffs0 = ((self._a *
                              ((self._a + 1) -
                               (self._a - 1) * self._cos_w0 +
                               self._sqrtAlpha)) /
                             self._a_coeffs0)
        self._b_coeffs1 = ((2.0 * self._a *
                              ((self._a - 1) - (self._a + 1) * self._cos_w0)) /
                             self._a_coeffs0)
        self._b_coeffs2 = ((self._a *
                              ((self._a + 1) -
                               (self._a - 1) * self._cos_w0 -
                               self._sqrtAlpha)) /
                             self._a_coeffs0)

    def high_shelf(self, samplerate, cutoff, resonance, dbgain):
        """
        Make a high-shelf filter.
        :param samplerate: sample-rate in Hz
        :param cutoff: cut-off frequency in Hz
        :param resonance: resonance or Q-factor
        :param dbgain: gain in dB
        """
        self._compute_constants(samplerate, cutoff, resonance, dbgain)
        self._a_coeffs0 = ((self._a + 1) -
                             (self._a - 1) * self._cos_w0 + self._sqrtAlpha)
        self._a_coeffs1 = ((2.0 *
                              ((self._a - 1) - (self._a + 1) * self._cos_w0)) /
                             self._a_coeffs0)
        self._a_coeffs2 = (((self._a + 1) -
                              (self._a - 1) * self._cos_w0 -
                              self._sqrtAlpha) /
                             self._a_coeffs0)
        self._b_coeffs0 = ((self._a *
                              ((self._a + 1) +
                               (self._a - 1) * self._cos_w0 +
                               self._sqrtAlpha)) /
                             self._a_coeffs0)
        self._b_coeffs1 = ((-2.0 * self._a *
                              ((self._a - 1) + (self._a + 1) * self._cos_w0)) /
                             self._a_coeffs0)
        self._b_coeffs2 = ((self._a *
                              ((self._a + 1) +
                               (self._a - 1) * self._cos_w0 -
                               self._sqrtAlpha)) /
                             self._a_coeffs0)

    def custom(self, a0, a1, a2, b0, b1, b2):
        """
        Make a custom filter.
        :param a0: a[0] coefficient
        :param a1: a[1] coefficient
        :param a2: a[2] coefficient
        :param b0: b[0] coefficient
        :param b1: b[1] coefficient
        :param b2: b[2] coefficient
        """
        self._a_coeffs0 = a0
        self._a_coeffs1 = a1 / a0
        self._a_coeffs2 = a2 / a0
        self._b_coeffs0 = b0 / a0
        self._b_coeffs1 = b1 / a0
        self._b_coeffs2 = b2 / a0

    def process_sample(self, x):
        """
        Filter a single sample and return the filtered sample.
        :param x: input sample
        :rtype: filtered sample
        """
        curr = x
        y = (self._b_coeffs0 * x +
             self._b_coeffs1 * self._x1 +
             self._b_coeffs2 * self._x2 -
             self._a_coeffs1 * self._y1 -
             self._a_coeffs2 * self._y2)
        self._x2 = self._x1
        self._x1 = curr
        self._y2 = self._y1
        self._y1 = y
        return y

    def process(self, x, y):
        """
        Filter an input signal. Can be used for in-place filtering.
        :param x: input buffer
        :param y: output buffer
        """
        num_samples = len(x)
        for n in range(0, num_samples):
            y[n] = self.process_sample(x[n])

    def _compute_constants(self, fs, fc, q, dbgain=0):
        """
        Pre-compute internal mathematical constants
        """
        self._fc = fc
        self._q = q
        self._dbgain = dbgain
        self._fs = fs
        self._a = math.pow(10, (self._dbgain / 40.0))
        self._w0 = 2.0 * math.pi * self._fc / self._fs
        self._cos_w0 = math.cos(self._w0)
        self._sin_w0 = math.sin(self._w0)
        self._alpha = self._sin_w0 / (2.0 * self._q)
        self._sqrtAlpha = 2.0 * math.sqrt(self._a) * self._alpha

import numba

NumbaBiquad = numba.experimental.jitclass([
(f, numba.float64) for f in [f"_{x}_coeffs{i}" for x in "ab" for i in range(3)] + """
_fc
_q
_dbgain
_fs
_a
_w0
_cos_w0
_sin_w0
_alpha
_sqrtAlpha
_x1
_x2
_y1
_y2""".strip().splitlines()
])(Biquad)

Hi @jonashaag,
I cannot believe some people are actually still using yodel!
Out of curiosity, may I ask in what context are you using it?
Last time I wrote a line of code for this project was exactly 6 years ago, judging from my last commit.
It was a pet project at the time, an excuse to implement some text-book DSP algorithms, learn some more Python and how to distribute packages (and get a break from DSP C++/ASM code at work).
Unfortunately, I do not intend on working on yodel anymore: I'm leaving it as is, as an artifact of the past.
Feel free to make a fork! (My advice: start over, and use numpy to vectorize a lot of code!)
Cheers

Just wanted some simple way to do filtering with Python and yodel was the first thing I found that seemed reasonably simple and complete. I was surprised that it works with Python 3 with no modifications. Well after I had it integrated into the rest of the code I realized it’s very slow due to all of the computations being done in pure Python, and adding Numba was easier than changing to another library so here we are :-)

It’s part of a deep learning data augmentation pipeline

Just wanted some simple way to do filtering with Python and yodel was the first thing I found that seemed reasonably simple and complete

Yeah, I remember looking for the same thing back then, and was aiming at a very high level usage (compared to usual very math-involved libraries). But for sake of completeness, you might want to look at Scipy for this now: https://docs.scipy.org/doc/scipy/reference/signal.html

I was surprised that it works with Python 3 with no modifications

If I remember correctly, it was originally developed against Python 3.4 or something. Glad it is still working!

Well after I had it integrated into the rest of the code I realized it’s very slow due to all of the computations being done in pure Python, and adding Numba was easier than changing to another library so here we are :-)

Yeah, sorry for that (I was optimizing DSP algorithms in assembly all day back then, I needed to reconcile with simple and elegant code). Glad you found a workaround!

It’s part of a deep learning data augmentation pipeline

Oh I pretty nifty!

Yeah SciPy has a lot of stuff, but for example I wanted to quickly test some low/high shelf filtering and SciPy doesn't have it -- or at least I can't find it under that name; maybe you can find it under some other name if you are more knowledgeable about signal processing than I am, but I wasn't willing to invest time into more search/research.

I still think Yodel is incredibly valuable, even if you understandably don't plan to work on it any further, simply for its simplicity, ease of use, and educational value.


Iam infra migration

Rebases against mozillians/dino-park and adds support for S3 media backend.

I would recommend that we close this PR. The following two commits (shown above) are the only two that I want to retain. The rest were an attempt to keep this in sync with dino-park while I built and deployed the Docker image to Kubernetes.
I'll create a separate PR to add those commits to the dino-park branch so we can continue this work in one place. This will let me connect the CodeBuild job to that branch to build and deploy updates to the dino-park branch.

adds buildspec.yml for CodeBuild
add support for S3 media backend in prod

I'll refer to the new PR once I create it and close this one.


Implemented API endpoints for events

:+1:

:+1: Are we going to want to refactor later to put the models in the APIs?

there's no immediate need, can be done later. there are still many endpoints missing.


Optionally remember and display last edited file for quick access

There could be an option which shows you the last edited file in case you want to continue editing that.
https://developer.android.com/training/data-storage/shared/documents-files#:~:text=optionally specify the URI of the file that the file picker should display when it first loads

I decided I don't really want this. I think selecting the recent tab in the system file explorer is easy enough. I also don't want to save things like the file name or path in the app.


[2021-4-12] React中有哪些不安全的生命周期方法？

详见：

https://github.com/HJY-xh/plantTrees/issues/135
https://github.com/HJY-xh/plantTrees/issues/136
https://github.com/HJY-xh/plantTrees/issues/137


Grid: Add GridContainerClass Parameter

Hi, is it possible to add a CustomCss to add an additional class where class='table-responsive' is already preset, as shown in the image?

@mrcorale Thank you for using BlazorBootstrap. We currently don't have a provision to add the class to the GridContainer div tag. We will be adding this functionality in the next version.

Thank's !


Consider supporting αcτµαlly pδrταblε εxεcµταblε

https://justine.lol/ape.html
https://justine.lol/cosmopolitan/
I've been thinking of trying this for Julia (will likely encounter some issues, since it's a complex project, not just C), but it might be even easier for Juliaup, that is for rust. I know it's been done for rust and some other languages (e.g. Python).
It might be a simple fix for your or @DilumAluthge, older glibc problem, since you then need none of it #321.
What's the oldest glibc Julia supports otherwise (and what julia up supports)?
This might simplify Linux setup (and getting it to work with just one-file binary download).
EDIT: Well feel free to close again... I see I suggested in the past (I was thinking of this now for the glibc problem and didn't recall, so also consider keeping issue open (for others, it's a simple recompile) or implement): https://github.com/JuliaLang/juliaup/issues/139#issuecomment-913930093

I was trying to look up Rust compilation info. I didn't find it right away (could look more if you want), but found:
https://news.ycombinator.com/item?id=26103769

... What Cosmopolitan does, it does really well. No other C library is able to target multiple operating systems and all the x86 microarchitectures. ...

Note the binary would run on all your supported platforms (including Windows, typical .exe, not sure about the Windows Store though, so if not you would have one build for it, and one for the rest, Linux, FreeBSD, Alipine with musl, without glibc since neither used).
It would also support M1 Apple Macs, or should despite only supporting x86, because of Rosetta. That wouldn't mean the actual downloaded julia would use Rosetta, only juliaup, and that should be fine.
When you would get one platform to work, say Linusx, it would assume Linux paths, even on Windows, so I suppose for Windows you would need some OS detection, and simple path substitution (if you would use this build for Windows, otherwise no changes to your code).
So one gain, is simplifying the build of your code to 1 or max 2 supported platforms... instead of 5 or 6 I can recall.

Even disregarding the portability "solution" across Windows, MacOS, Linux and FreeBSD might be warranted, as different Linux distros have different considerations without this (and even some code for older Ubuntu will not run on newer Ubuntu...):
I think there's some Rust build info there, and more info:
https://users.rust-lang.org/t/build-once-run-anywhere-cosmopolitan-libc/66528

Reimplementing libc is fine on Linux where the kernel syscall interface is well documented and guaranteed to be stable but that isn't true on other OS's. On Windows for example, bypassing "libc" isn't supported and syscall numbers can change at any time including a routine Windows update.

I wanted to quote that to not give a too optimistic impression. I still find it very unlikely that the few Windows syscall numbers you would actually use aren't stable by now (and I believe the author has written something about it, to that effect). It is a cool project, and at least non-GUI stuff should be stable (and if I recall GUI programs also made with this).

It might be good to know (independently of this), there's available a Rust-to-C compiler: https://github.com/thepowersgang/mrustc
[Also for other wy c2rust: see https://users.rust-lang.org/t/can-rust-compile-to-c-and-c/47434/2 ]
so then compiling from Rust-C, then use GCC (if not direct Rust build info), and the default info:
https://justine.lol/cosmopolitan/

What's the oldest glibc Julia supports otherwise (and what julia up supports)?

For Julia, it depends on the architecture: https://github.com/JuliaPackaging/Yggdrasil/blob/3aa25f9eb060cfc435583f280e675396d089055e/0_RootFS/gcc_common.jl#L245

One major meta goal is to keep the size of julialauncher as small as possible so that it starts fast. I don't think this would help here.
We have a solution for the glibc problem, we will just statically link a libc going forward, that is tracked somewhere here.

Is threre direct link to musl binary? I built it myself and it works. I thought it might be a good idea to provide that as the default for linux users so they won' t see glibc issues.

This work is still in progress. One option, as mentioned above, is to statically link musl, but there are various challenges with using musl. An alternative approach is to use the same toolchain that we use for building Julia itself to build Juliaup. When building Julia, we link to old glibc versions (e.g. on x86_64, Julia supports glibc as old as 2.12.2). If we can use the same toolchain to build the Linux binaries of Juliaup, then Juliaup will be able to support the same glibc versions as Julia itself.
Anyway, it will probably be a while before we start distributing Juliaup binaries that are built like that.


⚠ GitLab Server has degraded performance

In c7192fe, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 11710 ms

Resolved: GitLab Server performance has improved in d69cbb4.


BUG | fixing cache "not modified" response

When resource or document is cached and called again the 304 Not Modified is returned.
This should be accepted in validateResponseStatus

Sorry, but I'm unfortunately not convinced that this a desirable change in the PDF.js project for a couple of reasons.

It's somewhat difficult to understand exactly when/how this situation occurs (and note that commit messages should contain more context than only a single line).
The relevant function is quite old and as far as I can tell this is the first time that this response-code has been ever mentioned, hence it cannot be a common problem. Please keep in mind that we really want to avoid introducing regressions by making any "speculative" changes to this part of the code-base.
There's zero test-coverage for the changes made in this patch (although I'll admit that testing this might be difficult), and it looks like the patch itself would also fail linting (meaning that no testing was done locally).

Please note: If you have "special" requirements with regards to data-loading, then you really want to use PDFDataRangeTransport instead. Please refer to the links in https://github.com/mozilla/pdf.js/issues/11453#issuecomment-569347187 for some context.