Set up NCF Model in Courseplan and Tested it on a Sample Dataset

Summary
Added the code to train and evaluate a NCF model with given CSV files
Added code to fetch a sample dataset into the appropriate CSV files
This pull request is the first step towards implementing an AI recommendations system for Courseplan
Remaining TODOs:
Generate the appropriate CSVs from course data
Turn evaluation of individual users into an API format so that Courseplan can call it
Conduct testing on model hyperparameters
Incorporate pre-training to increase accuracy - see (https://github.com/microsoft/recommenders/blob/main/examples/02_model_collaborative_filtering/ncf_deep_dive.ipynb)
Improve the metrics with the above methods (right now they're not great, but I can add more optimizations once we're sure the basics work)
Test Plan
IMPORTANT: Follow the installation instructions here: https://docs.google.com/document/d/1e53btTwYI6-3LAB2mH4aE1FpmUJ-crL6I2vPUfmjGmg/edit
Once done, first run SampleDatasetFetcher.py to download the training and testing data, and then NCFTest.py through the terminal and make sure that the terminal provide feedback saying that training and predictions are finished. Training could take a while, so be patient, but predictions shouldn't take more than a minute or so. Please make sure this works on your system and Slack me if you run into any issues during installation or running the code so I can add fixes into the doc above.

I don't think we should put a massive amount of example training data in the codebase. Instead, can you write a shell script that downloads the training data, performs all of the steps in the instructions document, runs the code, and then cleans up the now unneeded training data?

I can remove it right now and just instruct testers to run the data download file, but in the final iteration we will probably need the CSVs for courses in the codebase so we're not fetching it again for every user

I don't think we should put a massive amount of example training data in the codebase. Instead, can you write a shell script that downloads the training data, performs all of the steps in the instructions document, runs the code, and then cleans up the now unneeded training data?

I can remove it right now and just instruct testers to run the data download file, but in the final iteration we will probably need the CSVs for courses in the codebase so we're not fetching it again for every user

I don't see why this needs to be the case--can't we generate the training CSVs on the fly if we only train the model every so often. Also, it is just not feasible to send a CSV of this size to the client.

I don't think we should put a massive amount of example training data in the codebase. Instead, can you write a shell script that downloads the training data, performs all of the steps in the instructions document, runs the code, and then cleans up the now unneeded training data?

I can remove it right now and just instruct testers to run the data download file, but in the final iteration we will probably need the CSVs for courses in the codebase so we're not fetching it again for every user

I don't see why this needs to be the case--can't we generate the training CSVs on the fly if we only train the model every so often. Also, it is just not feasible to send a CSV of this size to the client.

mb You're probably right now that I think about it again

Regardless, can you write a shell script that downloads the training data and performs these steps automatically?

Regardless, can you write a shell script that downloads the training data and performs these steps automatically?

Yes I already did and added it to the testing instructions

Regardless, can you write a shell script that downloads the training data and performs these steps automatically?

Yes I already did and added it to the testing instructions

I'm more asking for a shell script that I can run that will automatically run these instructions.

Regardless, can you write a shell script that downloads the training data and performs these steps automatically?

Yes I already did and added it to the testing instructions

I'm more asking for a shell script that I can run that will automatically run these instructions.

I'm not sure if I can run a shell script since I'm on Windows. It's probably not a great idea regardless since the installation instructions include a lot of stuff outside of the command console, and there are various other packages that may need to be installed depending on the user's system. As for the training loop, it is just two python files, so it seems a bit redundant to put those into a shell script


Touch target for Slider might be too small

The two finger drag can be used to adjust a slider, and is the only way to adjust a slider before the volume controls were added on Android.  Currently our touch target for the slider are too small to perform this gesture.

There's been some changes to slider in the last year and so I believe this is no longer a problem. I was able to trigger the 2 finger drag to adjust the slider on android (or use the volume keys). Closing this one


CFP: Clang format for BPF formatting

This CFP proposes to start using clang-format to format the Cilium C code, and a process for introducing it and resolving changes in formatting.

Discussed in a 1:1:

Add a section that describes how this affects developer workflow. In the best case people could just install clang-format locally and then the editor reformats the code on save. But that raises the question how much code changes. Experiment: format all code with the oldest version we want to support (maybe clang-format-11). Then go to the most recent version and reformat using the config from clang-11.

Add a snippet that we will lint out future additions of /* clang-format off */ and // clang-format off. We need to drive down the number of special cases over time, not add to them.

@dylandreimerink we now have statuses for CFPs https://github.com/cilium/design-cfps#status. Please add the one that you think fits here

For context, I think this core idea was provided ample opportunity for input (for instance through sharing in Slack and community weekly meetings). The new status process only expects that prior to merge one committer approves the design that it is implementable and doesn't have major flaws / contention points. Both of you are committers so if you two agree then I would suggest marking it as "Implementable". Once implementable it can be merged, even if you still wish to iterate a bit further on the design points - those additions can come as subsequent PRs modifying this file.


Suddenly sensitive resource attributes are exposed by "terraform show" in latest Terraform version 1.4.x

Terraform Version
Terraform v1.4.5
on windows_amd64
+ provider registry.terraform.io/confluentinc/confluent v1.36.0
+ provider registry.terraform.io/hashicorp/azuread v2.37.1
+ provider registry.terraform.io/hashicorp/azurerm v3.51.0
+ provider registry.terraform.io/hashicorp/external v2.3.1
+ provider registry.terraform.io/hashicorp/random v3.5.1
+ provider registry.terraform.io/hashicorp/time v0.9.1

Terraform Configuration Files
terraform {
  required_version = ">= 1.3.2"

  backend "azurerm" {}

  required_providers {
    confluent = {
      source  = "confluentinc/confluent"
      version = "~> 1.36.0"
    }
  }
}

Debug Output
I am sorry, I think it is not needed at the moment. Please let me know if you think debug output is important.
Expected Behavior
Like in previous terraform versions (tested with 1.3.9), resource attributes marked as sensitive by a provider shall be not exposed in the terraform show statement, but masked behind a (sensitive value) placeholder.
Actual Behavior
There was a change in behaviour, in Terraform 1.3.9 resource attributes marked as "sensitive" by a provider were masked by the text  (sensitive value). Now - in Terraform 1.4.5 - these values are exposed and can be seen in clear text. No change of provider version happened, the only thing changed was the used Terraform version.
Please see the attached screenshot. On the left hand side the output of Terraform 1.4.5 (values exposed), on the right hand side the output of Terraform 1.3.9 (sensitive values masked). Same code, same provider versions, only the Terraform version changed.

Tested all version starting from 1.4.0. All versions starting with 1.4.0 show this behaviour. The breaking change happened between version 1.3.9 and 1.4.0.
The documentation reads, that:

Note: When using the -json command-line flag, any sensitive values in Terraform state will be displayed in plain text. For more information, see Sensitive Data in State.

But this contradicts the above described behaviour... I see sensitive values even in non-json terraform show output.
Steps to Reproduce

Use this terraform module to create an example resource with sensitive values inside, f.e. confluent_api_key
Run "terraform init" and "terraform apply"
Observe the output of terraform show, sensitive values are exposed in latest terraform version.

This provider flags the attribute of the resource used in the example above as sensitive:
https://github.com/confluentinc/terraform-provider-confluent/blob/master/internal/provider/resource_api_key.go#L85
Probably an issue in Terraform.

Terraform just confirmed, that this is an issue with Terraform v1.4.0 - v1.4.6. A fix of Terraform shall be provided next week. https://github.com/hashicorp/terraform/issues/33055#issuecomment-1516184252

Thanks for asking @Nantero1 and thanks to all of you folks for the investigation!
Let's wait until the fix from HashiCorp is in and then it might be a good time to close this issue.

Solved with tf 1.4.6
https://github.com/hashicorp/terraform/pull/32629/files


Relative path with context path

I am using the relative path
axios.get('/customers')
    .then(response => {
	.......
    })

It takes the baseUrl as ex: localhost:8080 and calls localhost:8080/customer
Problem here is, the context path is not considered, the base URL should be, localhost:8080/myapp and the complete URL would be like localhost:8080/myapp/customers.
How does the basepath retrieved? Should I add any configuration for this?

This is the expected behaviour. In the browser relative paths are to the directory so:
Current URL: http://localhost/myapp
Relative URL: /customers
Absolute URL: http://localhost/customers

Current URL: http://localhost/myapp/
Relative URL: /customers
Absolute URL: http://localhost/myapp/customers

Mind the final slash in the current URL.
This is how relative URLs work in the browser. If you want to modify this behaviour you can manually set the baseUrl in axios.

I think there is a typo in your second example. Should it be:
Current URL: http://localhost/myapp/
Relative URL: customers //**no slash here**
Absolute URL: http://localhost/myapp/customers


I can spend any amount of tokens

https://github.com/Dexaran/ERC23-tokens/blob/ERC20_compatible/ERC23_token.sol#L69
Where is the check of balances? I can spend any amount of tokens. It is terribly
Where are your unit-tests ?

It's not a bug because of it's not related to token standard. The things you are talking about are part of the implementation.
I want to standardize contract functions and transaction handling method. Also I want to keep the example code clean from the code that is not associated with the token standard. I didn't said that this should be implemented as-is.
This checks, SafeMath library and whatever else things that you want are details of implementation.

As far as I know there is no such checks in ERC20 example also.


Unauthenticated issue: gqlauth.core.types_.GQLAuthError: Unauthenticated.

Description
First of all thank you for all the time and effort you've put in this package! I really want to use it, but I've been running into an authentication issue for the last few days. I've followed the tutorial in the docs and everything works, except for the MeQuery at the very end, to which I get the following response:
{
    "data": null,
    "errors": [
        {
            "message": "Unauthenticated.",
            "locations": [
                {
                    "line": 13,
                    "column": 5
                }
            ],
            "path": [
                "me"
            ]
        }
    ]
}

With the full traceback:
Unauthenticated.

GraphQL request:13:5
12 | query Me {
13 |     me {
   |     ^
14 |         isSuperuser
Traceback (most recent call last):
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/graphql/execution/execute.py", line 521, in execute_field
    result = resolve_fn(source, info, **args)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry_django/optimizer.py", line 810, in resolve
    ret = _next(root, info, *args, **kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry/schema/schema_converter.py", line 671, in _resolver
    return _get_result_with_extensions(
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry/schema/schema_converter.py", line 658, in extension_resolver
    return reduce(
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry/schema/schema_converter.py", line 653, in wrapped_get_result
    return _get_result(
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry/schema/schema_converter.py", line 614, in _get_result
    return field.get_result(
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry_django/fields/field.py", line 165, in get_result
    result = self.resolver(source, info, args, resolver_kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry_django/fields/base.py", line 209, in resolver
    return self.safe_resolver(*args, **kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry_django/resolvers.py", line 112, in inner_wrapper
    return f(*args, **kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry_django/resolvers.py", line 79, in sync_resolver
    retval = resolver(*args, **kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/strawberry/types/fields/resolver.py", line 203, in __call__
    return self.wrapped_func(*args, **kwargs)
  File "/Users/<REDACTED>/.pyenv/versions/3.10.12/lib/python3.10/site-packages/gqlauth/user/queries.py", line 36, in me
    raise GQLAuthError(code=GQLAuthErrors.UNAUTHENTICATED)
gqlauth.core.types_.GQLAuthError: Unauthenticated.

Steps to Reproduce
FYI I'm using from gqlauth.user import relay as mutations and a CustomUser with the setting AUTH_USER_MODEL = 'users.CustomUser'

Run the register mutation

mutation Register {
    register(
        input: { password1: "SuperSecureP@ssw0rd", password2: "SuperSecureP@ssw0rd", username: "Dummy", email<EMAIL_ADDRESS>}
    ) {
        success
        errors
    }
}

Run the verifyAccount mutation with the token received from the email

mutation VerifyAccount {
    verifyAccount(
        input: {
            token: "eyJ1c2VybmFtZSI6IkR1bW15IiwiYWN0aW9uIjoiYWN0aXZhdGlvbiJ9:1rl6lV:cjoYCOEERGK5m-ECEFB6PWHsRM5dCX59gdrWM_vDXYI"
        }
    ) {
        success
        errors
    }
}

Run the tokenAuth mutation

mutation TokenAuth {
    tokenAuth(input: { password: "SuperSecureP@ssw0rd", username: "Dummy" }) {
        success
        errors
        token {
            token
        }
    }
}

Use the provided token in a header with key authorization and value JWT ey... and run the me query

query Me {
    me {
        email
        username
    }
}

Requirements
aniso8601==9.0.1
anyio==4.3.0
asgiref==3.7.2
async-timeout==4.0.3
attrs==23.2.0
autobahn==23.6.2
Automat==22.10.0
cattrs==23.2.3
cffi==1.16.0
click==8.1.7
constantly==23.10.4
constructs==10.3.0
cryptography==42.0.5
daphne==2.5.0
Django==5.0
django-cors-headers==4.3.1
django-graphql-jwt==0.4.0
django-stubs==4.2.7
django-stubs-ext==4.2.7
exceptiongroup==1.2.0
graphene==3.3
graphene-django==3.2.0
graphql-core==3.2.3
graphql-relay==3.2.0
gunicorn==21.2.0
h11==0.14.0
httptools==0.6.1
hyperlink==21.0.0
idna==3.6
importlib_resources==6.1.3
incremental==22.10.0
jsii==1.95.0
msgpack==1.0.8
mypy==1.7.1
mypy-extensions==1.0.0
mysqlclient==2.2.4
packaging==23.2
promise==2.3
publication==0.0.3
pyasn1==0.5.1
pyasn1-modules==0.3.0
pycparser==2.21
PyJWT==2.8.0
pyOpenSSL==24.1.0
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
PyYAML==6.0.1
redis==5.0.3
Rx==1.6.3
service-identity==24.1.0
singledispatch==4.1.0
six==1.16.0
sniffio==1.3.1
sqlparse==0.4.4
strawberry-django-auth==0.376.5
strawberry-graphql==0.220.0
strawberry-graphql-django==0.33.0
text-unidecode==1.3
tomli==2.0.1
Twisted==24.3.0
txaio==23.1.1
typeguard==2.13.3
types-pytz==2<IP_ADDRESS>40203
types-PyYAML==<IP_ADDRESS>40311
typing_extensions==4.10.0
uvicorn==0.27.1
uvloop==0.19.0
watchfiles==0.21.0
websockets==12.0
whitenoise==6.6.0
zope.interface==6.2

Any help or guidance is greatly appreciated! 🙏

Hey, what token Are you using?

Thank you for your response! I'm not at the moment. Should I?

I think that might solve it yeah.

You are right. That did the trick, thanks a lot! 🙏

I think the docs lacks a note about that... I want to remove that schema anyways though...


No option to remove contacts from a list.

There Does not seem to be a way to edit and existing list to remove members from it. You have to start over with a whole new group.

Open up the group and swipe right to delete. Hit the plus sign at the bottom to add.
\Tk

On Apr 13, 2021 at 9:42 PM,  <webgoof @.***)>  wrote:
There Does not seem to be a way to edit and existing list to remove members from it. You have to start over with a whole new group.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly,  view it on GitHub (https://github.com/hinterlandcreative/RelayApp/issues/13), or   unsubscribe (https://github.com/notifications/unsubscribe-auth/AGK6VOYJ3RTARSBBDNA3HN3TITXJDANCNFSM424M7FXA).

Yup, there it is.  I evidently missed that direction when looking for that gesture.


Lexmark E120/E120n (Machine Type: 4506-100) needs usb no-reattach quirk

Please add printer Lexmark E120 to the USB quirk rules. (no-reattach)
It will not print properly without it. After few prints it fails and prints rubbish.
Bus 001 Device 006: ID 043d:00cd Lexmark International, Inc.
Machine Type: 4506-100
Similar issues:
https://github.com/apple/cups/issues/5478
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1390921
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1335558

The problem still exists:
OS: Fedora 32
Package: cups-2.3.3-2.fc32.x86_64

Fixed in OpenPrinting CUPS:
[master 1f98f0af0] Add USB quirk for Lexmark printer (Apple #5766)


Force-push to compress history

At the moment we commit all the binaries. They're around 30MB-50MB, there's 6 of them. That's a lot for git and GitHub to handle, especially when cloning the repository from scratch, since all commits need to be fetched. I suggest we either find a way not to commit the binaries in the repository; or squash the history periodically with force-pushes to only retain one commit with the latest binaries.

Jumping on here, but probably a good idea is to fetch them on CI and make it part of the tar to publish to opam but not on the git repo.


Paket should verify nupkg in cache if has same id and content (added maybe from different sources)

There are packages with different contents depending on the package source. One such example is Pester which is available on both nuget.org and powershellgallery.com but has a different structure. The nuget.org version has the code inside tools, whereas the PSG one has the code inside the root directory.
During paket restore Paket should verify that the package pulled from the local NuGet cache was downloaded from the same source that is specified in paket.lock.

First of all: wtf are these people doing?
Second: how?

The nuget.org use case with tools might be to have the PowerShell code not interfere with nuget.exe/VS integration.
The PSG use case is very likely to have to code in the root to make importing the module easier.

I think both packages are used by different package managers originally.

Second: how?

On restore Paket knows the expected source URL from the lockfile. Upon reading the JSON from the cache, you can compare it to the SourceUrl.
paket.lock:
NUGET
  remote: https://www.powershellgallery.com/api/v2
  specs:
    Pester (3.4.0)

Pester.3.4.0.something.json:
{
   "Dependencies":[

   ],
   "PackageName":"Pester",
   "SourceUrl":"https://www.powershellgallery.com/api/v2",
   "Unlisted":false,
   "DownloadUrl":"https://www.powershellgallery.com/api/v2/package/Pester/3.4.0",
   "LicenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.html",
   "Version":"3.4.0",
   "CacheVersion":"2.4"
}

the issue is that nuget.exe can interfere here. It it put's that pckage in the cach and overwrites the one from the other source then there is no way to know that.

I just tested,
nuget install Pester

and
nuget install Pester -source https://www.powershellgallery.com/api/v2

do the right thing, regardless of the order they're called (even with a primed cache).

That also means that the cache pollution you are talking about already exists and Paket should make sure the JSON matches the cached nupkg.

do the right thing, regardless of the order they're called (even with a primed cache).

What does this mean? It verifies hashes?

or what is happening in the cache folder?

What does this mean?

Even if the nuget.org variant is in the cache, it downloads the PSG variant and puts it in the working directory and the other way around.

would be nice to know how it decides that.

Does it make sense to have a cache per source?
%localappdata%\Nuget\Cache\hash(source)
This would solve the problem and we don't have to mess around with the json files.

yes it would solve that, but then we would not share with nuget.

nuget.org could be an exception!

I mean the most people have only nuget.org, the others have different sources and need to distinguish, esp. when two distinctive sources (purpose-wise) come in.

mhm, that sounds doable. (There is still the case left tha nuget puts the wrong package in the root and we don't see that, but I think that's minor)
Still would be nice to know how they decide. The nuget.org hash can't be trusted

did not know that. Is there an example for that?

we tried in early days of paket - that was total disaster

And it was there before...
just an addition - we could put an source.txt in the %localappdata%\Nuget\Cache\hash(source) to see where this cache folder belongs.

I am looking at implementing this to enable Nix derivations(basically a package) to be generated from a paket.lock file. Would there be interest in that pr? Ideally it would be enabled by default, to enable maximum penetration into the ecosystem. I don't need verification that the file hash of downloaded files is correct, just writing the hash of the nupkg file when building the lock file.


Improve documentation to use Broker as consumer

I want to use taskiq as a consumer. From this comment, I was advised to use taskiq.receiver.Receiver to accomplish this. I think I've figured how to make this work (thanks to the great code quality!), but I'm not 100% sure that I'm in the correct path. Please, take a look at the snippet bellow:
import asyncio
import json
from typing import AsyncGenerator
from uuid import uuid4

from taskiq.brokers.inmemory_broker import InMemoryBroker
from taskiq.receiver import Receiver

class ListenerInMemoryBroker(InMemoryBroker):
    async def listen(self) -> AsyncGenerator[str, None]:
        for i in range(1, 4):
            await asyncio.sleep(i)
            yield json.dumps(
                {
                    "task_id": str(uuid4()),
                    "task_name": "my_task",
                    "labels": {},
                    "args": [i, "a" * i],
                    "kwargs": {"i": i},
                }
            )

broker = ListenerInMemoryBroker()

@broker.task(task_name="my_task")
async def my_task(n: int, a: str, i: int) -> None:
    print(f"{n=}, {n.__class__=}")
    print(f"{a=}, {a.__class__=}")
    print(f"{i=}, {i.__class__=}")

async def main() -> None:
    consumer = Receiver(broker=broker, max_async_tasks=100)
    await consumer.listen()

if __name__ == "__main__":
    asyncio.run(main())

From this dummy implementation, I assumed the following:

Messages must be produced with the schema defined at taskig.message.TaskiqMessage;
task_name must be explicit set;

And also left me with some doubts:

What's the usage of max_async_tasks and max_prefetch?

With that said, I think this important use case deserves better documentation. If anyone can confirm my assumptions, answer my queries, and point out where I can add a section in the docs about this, I'd be happy to do so!

I want to process a message from a given topic.

I'm not sure what that means?
AioKafkaBroker passes in the specified topic to consume messages.
from taskiq_aio_kafka import AioKafkaBroker

broker = AioKafkaBroker(bootstrap_servers="localhost", kafka_topic="test_topic")

@broker.task
async def test() -> None:
    print("The best task ever!")

Or rewrite listen after inheritance and judge the subject of the message
from taskiq_aio_kafka import AioKafkaBroker

class CustomAioKafkaBroker(AioKafkaBroker):
    async def listen(
            self,
        ) -> AsyncGenerator[bytes, None]:
            """Listen to topic.

            This function starts listen to topic and
            yields every new message.

            :yields: parsed broker message.
            :raises ValueError: if no aiokafka_consumer or startup wasn't called.
            """
            if not self._is_consumer_started:
                raise ValueError("Please run startup before listening.")

            async for raw_kafka_message in self._aiokafka_consumer:  # type: ignore
                if raw_kafka_message.topic == "test_topic":    # Pseudocode
                   yield raw_kafka_message.value

broker = CustomAioKafkaBroker(bootstrap_servers="localhost", kafka_topic="test_topic")

max_prefetch: Limit the number of messages accepted by the local queue. https://github.com/taskiq-python/taskiq/pull/127
max_async_tasks : The maximum number of concurrent processing tasks per worker process.

Hi, @MuriloScarpaSitonio, thanks for warm words. I'm not sure what you're trying to achieve.
So, both of your points are half true.

Yes, messages are just formatted TaskiqMessage objects. We use formatters to dump and parse messages. So, you can set any formatter your like, when creating a broker. By default we use JSONFormatter.from taskiq.formatters.json_formatter import JSONFormatter
broker = MyBroker()
broker.formatter = JSONFormatter()

You should yield message formatted with formatter. For your example it should be something like:    for i in range(1, 4):
        await asyncio.sleep(i)
		yield self.formatter.dumps(
			TaskiqMessage(
				task_id=uuid4().hex,
				task_name=my_task.task_name,
				labels={},
				args=[],
				kwargs={}
		)).message

You don't need to assign task names explicitly every time, unless it breaks something. We generate task names based on python path to function. If it doesn't work for you, then you should set it explicitly.

Receiver
Receiver is a class, that helps you to start listen to messages for a specific broker. You can use it in your code, for example, if you want to start multiple brokers at the same time. Or you don't want to run taskiq worker command and want to listen inside the same application (maybe on a different thread or process).
But if you just want to listen to incoming messages, I advise you to spin a taskiq-worker program. It has automatic healing for dead processes and can run multiple consuming processes.
taskiq worker `my_project.my_module:broker`

You can read more information in Distributed run section or in Cli|Worker section in documentation.
Also, you can see all arguments and options by running:
taskiq worker --help

Hi, @MuriloScarpaSitonio, you're right about max_async_tasks. Basically it's a number of how many tasks can run concurrently. We created this number to avoid slow processing and loop overloading with tasks.
The 'max_prefetch' option is a bit complicated, but I'll try to explain using an example. Imagine you have set 'max_prefetch' to 25, max_async_tasks to 100 and use only one worker process to listen to messages.  If you send 150 messages, then 100 messages are going to be processed immediately, 25 messages are going to be stored in memory, and when worker decide to get more tasks to put them in the loop, it is going to take tasks from the memory instead of fetching them from network. It's used to reduce latency, so you can read messages from queue in advance while your loop is busy running n other tasks, where n is equal to max_async_tasks.

Thank you very much for the clear explanation, @s3rius!! It was really helpful.
From what you've said the only "point of attention" is to not set a very big value for max_prefetch. Have you ran any kind of tests to asset a reasonable value? Maybe using the same as max_async_tasks is a good choice?

Personally I haven't got so many tasks that it required advanced fetching. I would suggest to set it to quater of the valuemax_async_tasks. It should be a good fit for many systems.
Also, it depends on what tasks do you have. If you have lots of small tasks, you can increase this number. If you have lots of long-running tasks, you may want to reduce it, because for you it would be better that workers grab messages from distributed queue when they're ready to process them.
If you have many small tasks along with many long-running tasks, I guess it would be better to disable this parameter completely, because you may face the situation, when worker processes 100 long-running tasks and prefetched 25 small tasks. Because of that processing of your small tasks is going to be delayed.
Of course these rules doesn't apply to systems where you can easily scale out workers, it's more about systems with lots of tasks and when it's critical to have minimum number of worker processes.

Also. Since this issue called "Improve documentation". Can you please tell us how we can improve our documentation so it would be easier for new users to start enjoying working with taskiq.

And if you find your experience with taskiq pleasant, you can help us improve, by hitting the star button, giving us feedback here in the discussion or becoming a sponsor (Github will give you a cool sponsor emblem on your profile).

@s3rius As it stands, the messages in the local queue will be lost after worker restarts, right? (using any messaging middleware)

@vvanglro, it depends. It won't be lost if your queue supports message acknowledging.
For example, take a look at this line in aio-pika broker implementation for RabbitMQ. It returns ackable message and if ack is not called in some configured time, the message is considered as not delivered, so it would be returned back to the RabbitMQ.
Of course there's a possible drawback of using short timeouts for acknowledges, because your message can be prefetched and stored in memory, but if it's not going to be executed before ack timeouts, you may receive the same message in another worker process.

Yes, sorry, the latest code has added ack. I missed it.😂

Also. Since this issue called "Improve documentation". Can you please tell us how we can improve our documentation so it would be easier for new users to start enjoying working with taskiq.

I think that I got confused because the documentation is heavy-focused on the task-dispatching-side (i.e. my_task.kiq(...)) of systems that use messaging for communication. However, I acknowledge that the docs are actually implicity obvious (ok I know that sounds weird) that what I was trying to accomplish (a system that does not dispatch tasks but rather only consumes them) is already handled by the CLI command.
Maybe add an example where the message is dispatched from the terminal (e.g. using redis-cli) and a python code to simply process the message?! As I said, this is already implicit written in the docs so not sure if there's anything to improve really.

Maybe a video explanation can do a better job?
Just example of how to start using taskiq with some existing fastapi application.


gatk-haplotype-joint: slow GenomicsDBImport with large sample size

tl;dr I have a large WGS cohort (~400 samples). When running GenomicsDBImport as part of GATK, I noticed that importing regions larger than ~20Mb took a very long time. Several large regions (80Mb+) ran for weeks without completing.  Insight on how to speed up this step would be appreciated. Below I'll described the three approaches I took so far:
Set joint_group_size
In my configuration YAML I set
- algorithm:
    joint_group_size: 20

I am still a bit fuzzy on if this should have created 20 groups or groups of 20, but it had no apparent effect on the GenomicsDBImport calls.
Pass --batch-size argument to GATK
I may have simply specified this wrong in my config YAML, but to try and force GATK to import in batches I added:
- algorithm:
  resources:
    gatk-haplotype-joint:
        options: ["--batch-size 50"]

This also had no apparent effect on the GenomicsDBImport calls.
Reduce Parallel Analysis Block Size
Taking inspiration from #1097, I tried reducing nomap_split_size all the way down to 1 and increasing nomap_split_targets up to 3000, but there were still some 70Mb+ regions. My final though was to manually edit the analysis_blocks.bed to split large contiguous regions apart, but I wasn't sure if this was advisable.

Tanner;
Thanks for the detailed report and sorry about the issues with the runtimes. GenomicsDBImport is the central point of merging when all of the individual samples get put together, so is definitely a potential bottleneck. I'm not entirely sure about the slow runtimes but happy to offer suggestions:

When you're having a long run, are you able to monitor the resource usage on the machine? It would be helpful to know if it's hitting memory issues with Java and swapping, or is just slow due to disk access issues. If the former, then --batch-size tweaking, as you tried, may be useful and we could try that next.

Manually splitting the analysis blocks is a workaround to reduce sizes of individual parts that go into GenomicsDBImport. bcbio is conservative on splitting and won't split in regions of consistent coverage as it doesn't want to accidentally create a breakpoint at a SNP or indel, where it could lose the call due to splitting. That's pretty conservative so manually splitting where it refuses to is an option.

It would be great to understand the resource usage issues and offer workarounds in bcbio so this happens automatically, but hopefully either of these helps you get moving and finish your analysis. Thanks again.

Thanks Brad. I think specifying a batch-size will work.
I tried manually running a GenomicsDBImport command on one of these large regions with a batch size of 5, and over the weekend it processed 45 out of 78 batches. This is the same region I previously let run for weeks without any output or update to the logs. Here is a gist showing the command and resources actively used (via top). One thing worth noting is that even though I  specified --reader-threads 16, the process appears to be using just 1.
When run within the context of a bcbio run, nothing jumps out to me w/r/t memory swap. Here is a similar gist showing resource usage within a bcbio run. In this case I specified 3 cores per GATK process on a 56 thread machine, so there are 18 running simultaneously.
I didn't specifically look disk I/O because this is being on a distributed nfs system that has never given me problems before, but I can try to dig into that if it would be helpful.
Still being unfamiliar with GATK4's workflow, would testing this within the context of bcbio be as simple as hard-coding a --batch-size  argument in gatkjoint.py -- or or will this create some unexpected output for bcbio?
https://github.com/bcbio/bcbio-nextgen/blob/ef886362376f36ba7ca6bb2ab27c3d377a300a69/bcbio/variation/gatkjoint.py#L53-L56

Tanner;
Thanks much for testing this out and glad to hear --batch-size resolves the issue. The latest development version automatically tweaks to use this on larger import sizes so hopefully it will just work if you update and re-start. Let us know if it still has issues with this approach and we can tweak further. Thanks again for reporting this and helping to debug.


Feature Request: Give user more control over "export as plain-text latex commands"

For biblatex export (possibly also useful for BibTeX), it would be useful if the user could specify independently if (a) typographic quotes will be replaced with latex quotes (b) unicode characters (such as umlauts and accents etc.) will be replaced with latex commands, or both.
As of now, the "export as plain-text latex commands" checkbox controls both, so they can only be switched on and off together.

:robot: this is your friendly neighborhood build bot announcing test build <IP_ADDRESS>15 ("fixes #1135")
Install in Zotero by downloading test build <IP_ADDRESS>15, opening the Zotero "Tools" menu, selecting "Add-ons", open the gear menu in the top right, and select "Install Add-on From File...".

3515 has a hidden preference called ascii -- you can enter characters there and those will always be changed to their LaTeX counterparts. In your case, you can add the typographic quotes there. The csquotes preference, if set, takes precedence though.

Just tested with this entry
https://www.sciencedirect.com/science/article/pii/S0271530915000798
(which has single and double quotes)
Works like a charm!!   Thanks so much for quickly adding that!

You're welcome. 5.1.57 is building and will have this, but it's just a rebranded 3515. You will be upgraded automatically.


Update wireguard extension

Description

Screencast

Checklist

[ ] I read the extension guidelines
[ ] I read the documentation about publishing
[ ] I ran npm run build and tested this distribution build in Raycast
[ ] I checked that files in the assets folder are used by the extension itself
[ ] I checked that assets used by the README are placed outside of the metadata folder

Sorry for that, there are some problems with using the "public" script, so I will create a pull request manually later.


Documentation: should nix.settings.trusted-users warn about root-equivalency?

Problem
The Nix manual, when discussing the trusted-users setting, has a big warning:

Warning
Adding a user to trusted-users is essentially equivalent to giving that user root access to the system. For example, the user can set sandbox-paths and thereby obtain read access to directories that are otherwise inacessible to them.

Nothing about root-equivalency is mentioned in the documentation for the corresponding NixOS option.
Is this because the way things work on NixOS being a trusted-user is not root-equivalent? Or does it provide the same level of access (this was my impression)?
Either way, I feel like this should be called out explicitly. I see suggestions to make yourself a trusted-user fairly regularly (including automated suggestions from tools, e.g. Cachix does this).
Proposal
The documentation for nix.settings.trusted.users should either have the same warning, or a note that the vulnerability that would apply to user-installed Nix doesn't apply on NixOS.
Checklist

[x] checked latest Nixpkgs manual (source) and latest NixOS manual (source)
[x] checked open documentation issues for possible duplicates
[x] checked open documentation pull requests for possible solutions

If anything it's more obviously root equivalent on NixOS :)


added new language support for Romanian

Added the text "(optional)" to the Romanian version of the Import button, as non tech-savy users found the Import part confusing. They were not sure if the Import part was mandatory for the app to run effectively.

Everything looks good

Thank you for this translation.  The UI has changed significantly and has now finalized for the v1.0 release, which has resulted in a great deal of changes to the text in the final app.  Because of this we found that it was best to remove the existing translations and start again.  Even though we are also closing this PR, we hope you understand and will help us again.
The text in the app is now complete, so we're asking for your help to redo this translation on the text for the v1.0 release.  Our translation lead @alpita-masurkar will be coordinating this effort.
Thank you from the COVID Safe Paths dev team.


[Go Live][Jan 10]

Push to live

Docs Build status updates of commit 1e2be5c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md
:white_check_mark:Succeeded
View

msteams-platform/resources/schema/localization-schema.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


How to remove that messages on console

Testing the pyqt-custom-titlebar-setter
I receive that messages on console when i resize or move the window, how i can remove or stop spamming that messages ?
And thanks, you make a god job with that !!
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore
QPainter::restore: Unbalanced save/restore

Thanks you.
That message indicates that there are unbalanced number of calls to QPainter::save and QPainter::restore.
And It doesn't happen to me.
Do you use MacOS? Can you show me the code?
That might help me figure out how to solve it

Of course!
im using w11
The code is such simple =
`from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl, Qt
from pyqt_custom_titlebar_setter import CustomTitlebarSetter
from pyqt_style_setter import StyleSetter
from qt_sass_theme import QtSassTheme
import sys
class TextEditor(QWidget):
def init(self):
super().init()
self.__initUi()
def __initUi(self):
    lay = QVBoxLayout()
    lay.setContentsMargins(0, 0, 0, 0)
    lay.setSpacing(0)

    webview = QWebEngineView()
    url = 'Path to HTML file'
    webview.load(QUrl(url))

    lay.addWidget(webview)

    self.setLayout(lay)

if name == "main":
app = QApplication(sys.argv)
widget = TextEditor()
StyleSetter.setWindowStyle(widget, theme='dark')
g = QtSassTheme()
g.getThemeFiles(theme='#000000')
g.setThemeFiles(widget)
window = CustomTitlebarSetter.getCustomTitleBarWindow(main_window=widget)
window.show()
sys.exit(app.exec_())`

But have another 'problem' or I don't know how to do this,
The Widget that contains the QWebEngineView does not occupy the entire space of the frame, causing the title bar to drop and there is space above and below the window, in the print screem you can understand (Ignore the close and minimize button, I use this screen in another type of framework

)

Now it might work, at least another problem you've brought up
Can't upload this to pypi as a package right now so you have to personally add code below
# to maintain the maximum size intact
def event(self, e):
    if int(e.type()) == 76:
        self.setMaximumHeight(self.sizeHint().height())
    return super().event(e)

in the very end of the
topTitleBarWidget.py script in
pyqt-top-titlebar-widget of
pyqt-custom-titlebar-setter
event() function catches the event
76 stands for LayoutRequest which is one of the QEvent, emit when widget layout needs to be redone.
self.setMaximumHeight(self.sizeHint().height()) is set the maximum height to most appropriate one which can get by sizeHint().height()
I will upload to pypi 10~12 hrs later or maybe more than that
And.. again i've never seen those messages even in the code you provided. As a matter of fact, i'm also use Windows 11.
I wonder which Python version you use..? Mine is Python 3.10

Great, the solution worked with my code! Thank you very much.
I'm using python 3.11.0, I'm not using a Venv

Sorry for belated reply.
I used Python 3.11.1 and system environment to run that and there was no message problem.
Maybe you should upgrade the Python version from 3.11.0 to 3.11.1 but this is just my guessing.
Installing the PyQt all over again is another solution of this.
python -m pip install PyQt5
python -m pip install PyQt5-stubs
python -m pip install PyQtWebEngine --upgrade

If you are not using conda environment.. that command might differ
Oh, by the way, do you still have that problem?
If so, is the problem that message keep popping up really or harmful to the application? like, does that slow the app down or make it crash? That'll be huge problem.
Frankly i don't know why does that happen in your case. 😔 So only thing i can say is reinstalling the PyQt like anyone can say
Thanks

Hi @yjg30737,
I know the issue has been inactive for quite a while. However, I am encountering the same messages in the terminal as @GGTEC:
QWidget::setMinimumSize: (/TopTitleBarWidget) Negative sizes (0,-1) are not possible
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QPainter::restore: Unbalanced save/restore
Even if these messages are not slowing down my application in any way, they were preventing from seeing useful debug messages from my app. I've been looking at your code and found work arounds to stop them:

In svgLabel.py:
Comment the line 14: #painter.restore().
This modification stopped the message "QPainter::restore: Unbalanced save/restore".

In topTitleBarWidget.py:
Comment line 61: #self.setMinimumHeight(self.sizeHint().height())
This modification stopped the message "QWidget::setMinimumSize: (/TopTitleBarWidget) Negative sizes (0,-1) are not possible". It appears that setting a minimum size was not necessary here and does not change the behavior of the title bar nor the application. Moreover, my main window is QMainWindow class from PyQt5 (and not a PyQt5 QWidget), this might explain a strange behavior as well.

About the last message "QFSFileEngine::open: No file name specified", I haven't found yet the issue, it only appears when I setup your title bar on my application. I keep you update if I find the solution...
Thank you for your work.
Regards,
Alex

Hello, Alex !
I found how to remove those messages, that caused by SvgButton.
There are a lot of needless packages which can just include in this package and I will fix the issue as well as delete these packages. Actually this was my programming style years ago 😅

Hi @yjg30737 !
Thank you for your feedback and investigation!
I'm looking forward for the updated package ;)
Alex

I fixed it. You can test it out right away ! (I've added file called "test.py" to test it better)
Console will be crystal clear.

Hi! Thank you for fixing it. Is it uploaded on pip? I still have the same warning messages for now when installing the package with pip...
Thank you,
Alex

Just finished ! Hope it works :)

Hi! Everything is solved, thank you!
Just one last thing, on your example code the import of your custom titlebar is "from pyqt_custom_titlebar_window import CustomTitlebarWindow". However, to make it work, the correct import is now "from pyqt_custom_titlebar_window.customTitlebarWindow import CustomTitlebarWindow". Besides this, everything works fine on my side.
Thank you for your work and investigation! 🥇
Alex

Thanks for advice. I applied it into every repos 🙂
Regards, YJG


Improve error for required env vars with alt name

If we have a prefix called "env_config" and the following struct tags
for property "Foo", we should expect to see an error message stating
that the required env var "ENV_CONFIG_BAR" is missing and not just
"BAR" since that is the env var being looked up.
type Spec struct {
  Foo string `envconfig:"bar" required:"true"`
}

Fixes https://github.com/kelseyhightower/envconfig/issues/199

@kelseyhightower please have a look
also faced this problem and @wfernandes solution works totally well for me
Would be great to merge it


[CLI] refactor the folder structure and components to be more generic

Description

Rethink the folder structure to reduce ejs complexity

Excalidraw link
Motivation and Context

be more flexible to modification, or new feature

How Has This Been Tested?

run each base / react-navigation / expo-router for each styling solution

I also made the modification requested by @sammoore, only displaying the <InternalizationExample /> component on one screen.

main screen for stack
modal screen for drawer
modal screen for drawer + tabs


there is no download

there is not a way to download the app and this is the only thing i can use

clearly your new to github you have to go to the releases tab

there is no releases tab

its on the right hand side of the code page
On Sun, Nov 13, 2022 at 9:23 PM SamboGaming @.***>
wrote:

there is no releases tab
—
Reply to this email directly, view it on GitHub
https://github.com/Cuyler36/ACSE/issues/99#issuecomment-1312952946, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AVNYX4J7WBQK6PQ2W42HOBLWIGPANANCNFSM56JXFOHA
.
You are receiving this because you commented.Message ID:
@.***>


Get-MandiantBulkUAL Error

When running the script, I get a bunch of errors when it hits the Get-MandiantBulkUAL function.
Get-MandiantBulkUAL : Cannot process argument transformation on parameter 'ResultSize'. Cannot convert value "-" to type "System.Int32". Error: "Input string was not in a correct format."
Nothing stuck out when I looked at the actual script, I see the $ResultSize parameter variable set to '1000' by default and I didn't pass a different value in when I launched the script.

I have this error
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
In riga:1 car:1

Get-MandiantBulkUAL -Operations 'Update service principal' -DateOffse ...

  + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
  + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

I have this error
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
In riga:1 car:1

Get-MandiantBulkUAL -Operations 'Update service principal' -DateOffse ...

  + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
  + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

Same error here...
Search for 'Update Application' events
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
At line:1 char:1
+ Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90 - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

Same error here...
Search for 'Update Application' events
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
At line:1 char:1
+ Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90 - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

I am receiving the exact same error as the OP during these events:

Search for 'Update Application' events
Search for 'Set domain authentication' events
Search for 'Set federation settings on domain' events
Search for 'Update application - Certificates and secrets management' events
Search for Mailbox Login events using PowerShell
Search for 'Update service principal' events
Search for 'Add service principal credentials' events
Search for Add app role assignment' events
Search for 'Add app role assignment grant to user.' events
Search for PowerShell authentication events. These events are not inherently bad

No output files are generated.

I am receiving the exact same error as the OP during these events:

Search for 'Update Application' events
Search for 'Set domain authentication' events
Search for 'Set federation settings on domain' events
Search for 'Update application - Certificates and secrets management' events
Search for Mailbox Login events using PowerShell
Search for 'Update service principal' events
Search for 'Add service principal credentials' events
Search for Add app role assignment' events
Search for 'Add app role assignment grant to user.' events
Search for PowerShell authentication events. These events are not inherently bad

No output files are generated.

Same error here...
Search for 'Update Application' events
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
At line:1 char:1
+ Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90 - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

update:
I ran "Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90" manually and the results are the same as when running Invoke-MandiantAllChecks

Same error here...
Search for 'Update Application' events
Get-MandiantBulkUAL : The result index is greater than the result count. Rerunning the query
At line:1 char:1
+ Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90 - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-MandiantBulkUAL

update:
I ran "Get-MandiantBulkUAL -Operations 'Update application' -DateOffset 90" manually and the results are the same as when running Invoke-MandiantAllChecks

Thanks for the feedback! I see that one submitter was able to fix the issue by re-running the tool, can the rest of you give that a shot and report back?
There are a number of nuances with searching the Unified Audit Log that are outside of our control (related to the MSFT backend itself). Sometimes this causes the search itself to fail. We tried to account for this, but it looks like we missed a few.

Thanks for the feedback! I see that one submitter was able to fix the issue by re-running the tool, can the rest of you give that a shot and report back?
There are a number of nuances with searching the Unified Audit Log that are outside of our control (related to the MSFT backend itself). Sometimes this causes the search itself to fail. We tried to account for this, but it looks like we missed a few.

Running 'Invoke-MandiantAllChecks' fails with the errors others reported.
However, I am able to successfully run these individual checks

Get-MandiantBulkUAL
Invoke-MandiantAuditAzureADApplications
Invoke-MandiantAuditAzureADDomains
Invoke-MandiantAuditAzureADServicePrincipals

Running 'Invoke-MandiantAllChecks' fails with the errors others reported.
However, I am able to successfully run these individual checks

Get-MandiantBulkUAL
Invoke-MandiantAuditAzureADApplications
Invoke-MandiantAuditAzureADDomains
Invoke-MandiantAuditAzureADServicePrincipals

Hi All, any update on a solution on this? I am also having same error with vwi-mattdejonge and no results being generated.
Perform individual checks below and also prompt "Checking for suspicious" but no output file being provided except for ADDomains

Invoke-MandiantAuditAzureADApplications - no results provided
Invoke-MandiantAuditAzureADDomains - results provided
Invoke-MandiantAuditAzureADServicePrincipals - no results provided

Hi - do you see this output to the window?
Checking for suspicious Azure AD App Registrations.
If you see that message but nothing else, then it means the tool did not find anything risky or suspicious to report.

Hi dmb2168- thank you for the response
How about for the "Invoke-MandiantAllChecks -OutputPath <path\to\output\files>" why is showing error on the following below and csv result only provide for Federated Domains?
Search for 'Update Application' events
Search for 'Set domain authentication' events
Search for 'Set federation settings on domain' events
Search for 'Update application - Certificates and secrets management' events
Search for Mailbox Login events using PowerShell
Search for 'Update service principal' events
Search for 'Add service principal credentials' events
Search for Add app role assignment' events
Search for 'Add app role assignment grant to user.' events
Search for PowerShell authentication events. These events are not inherently bad

I just ran into the same error as OP and found it was occurring due to the -OutputPath I was using containing spaces. I was surrounding my path in quotes but it seems these get stripped out when the Get-MandiantUAL query is being built.


Type declaration entry point is incorrect

The "types" key in package.json of the release on npm points to "lib/typescript/src/index.d.ts".
This causes an error in VSCode: Could not find a declaration file for module 'agora-react-native-chat'.
Removing src from the path (changing it to "lib/typescript/index.d.ts") or moving the declaration files to the correct path should fix this issue.

Thanks for your feedback, we will fix it in the next version 1.0.6, which is currently in closed beta.
I will remove src.


Disable more of the otel_test macro according to env var

Maybe fixes #2473

Hmm, that's still quite a bit slower than before...

I'll go ahead and merge this, as it shaves a few minutes of each CI run.

bors r+


DNM: Add error field in market summary

I'm going to run a my local node on 4.0.x with an extra query field to help with debugging

Codecov Report

Merging #1799 (de6240a) into release/v4.0.x (d4865a5) will decrease coverage by 0.03%.
The diff coverage is 50.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

@@                Coverage Diff                 @@
##           release/v4.0.x    #1799      +/-   ##
==================================================
- Coverage           57.49%   57.47%   -0.03%
==================================================
  Files                  76       76
  Lines                7935     7938       +3
==================================================
  Hits                 4562     4562
- Misses               3024     3026       +2
- Partials              349      350       +1

Impacted Files
Coverage Δ

x/leverage/keeper/grpc_query.go
64.91% <50.00%> (-0.70%)
:arrow_down:


MINOR: Cleanup threads in integration tests

Leftover threads doing network I/O can interfere with subsequent tests. Add missing shutdown in tests and include admin client in the check for leftover threads.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@apovzner @dhruvilshah3 @ijuma Thanks for the reviews. I have made some of the updates and left comments for the others.

LGTM

@omkreddy @ijuma @apovzner @dhruvilshah3 Thanks for the reviews. I will merge to trunk and 2.0 now,  but if there are other suggestions, I will do them in a follow on PR.


Shotguns

Should i be putting silent aim on shotguns coz the area of bullets coming out of the shotgun is high anyways?

2-4 FOV, its very good
i watch my demo and using silent aim, but i dont see that flicking to enemy and back into my crosshair.
it seems normal
do you want to talk about this @danielkrupinski

I have 1.26 fov in shotguns.


lit-gpt error with quantize lib

I got this error in block code  when I ran sample solution for NeurIPS 2023 Large Language Model Efficiency Challenge: 1 LLM + 1 GPU + 1 Day
from quantize.bnb import Linear4bit

class QuantizedLinear(Linear4bit):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, quant_type="nf4", compress_statistics=True, **kwargs)

but, how to fix?

I opened #579 which will provide a better error message, note however that it will still error because you would only get this when bitsandbytes is not installed


Adding location tracking between date range on map view

Gladys Pull Request check-list

[x] If your changes affects code, did your write the tests?
[x] Are tests passing?
[x] Is the linter (eslint) passing?
[ ] If your changes modify the API (REST or Node.js), did you modify the documentation?

Description of change
First, I've added colors on area.
And the major feature is the ability for user to show the ways of every Gladys user within a date range.

Great PR! Thanks 🙏
Be careful:

translation keys in en.json/fr.json should be dash-separated
API routes should be singular


Remove checkInCertChain

Because this is a feature that doesn't offer a secure protection against MitM attacks. I know that folks use this with that fact in mind but I don't want to actively promote such usage. Use plugin version 4.0.0 or lower if you need to nonetheless.

Why is this considered as not secure? Pinning to a specific Certificate Authority (one that you trust because you specific it specifically) was a way to ensure that only certificates issued by a specific CA were trusted.
The main problem with certificate chain validation and MiTM is that:

You don't necessarily know what CAs are trusted by default by your OS and if one of these CAs becomes compromised, you may not know it and, even if you know it, you rely on an OS update to have such a root CA removed from the default trusted list.

Another potential issue is that it may happen for a non advanced user to trust a new CA manually, because they were "invited" (by a hacker) to trust it and the user didn't understand the warnings displayed on his mobile device.

In both these cases, pinning to a specific CA wouldn't be impacted by such other CAs.
Now, what can happen:

The CA you trusted so much becomes compromised. You will have to create a new certificate for your server, with another CA, and you will have to republish your application.This isn't different or less secure that pinning to the server certificate itself.

Your server certificate became compromised. Even if the so-trusted CA could add this server certificate in its CRL, this plugin isn't checking for this. Client-side CRL checking isn't completely safe anyway as a hacker could intercept and cancel all such CRL/OSCP checks, what often (and unfortunately) results in the client to consider the certificate Ok, by default. In this hopefully rare case, the fallback option may be to have a new server certificate created and the mobile application republished by pinning to the server certificate itself. At least, until the server certificate was compromised (again, a rare case), your application didn't have to be republished just because your server certificate had to be renewed.

I understand that an old version of this plugin can be used to continue and use this option, but this won't allow new features coming with new versions to be used, unless a custom branch is created.

@cvillerm If you want to discuss it with the person why brought this to my attention then I'll send you his email address. Please let me know if you want to.

@EddyVerbruggen, why not. What also about involving this person in this discussion?

Hey @cvillerm, no need for email, we can chat here. The details of the vulnerability are now public: https://www.cigital.com/blog/ineffective-certificate-pinning-implementations and a cve has been assigned for the exact same issue on a different library (CVE-2016-2402)
SSLCertificateChecker-PhoneGap-Plugin is one of the affected libraries/apps.
Your points about CA pinning are correct; doing CA pinning is not inherently insecure. It just leaves a wider attack surface than doing end-entity pinning, but is still much better than not pinning at all.
The devil is in the detail though; implementation matters.
The way CA pinning was implemented in this library (and several others) was insecure, not CA pinning itself as a practice. Fixing the code while following the same basic implementation strategy while maintaining compatibility with multiple Android versions is not trivial because the available Java APIs do not help. Thus @EddyVerbruggen decided to remove the feature.
Using version 4.0.0 or lower of this library and setting checkInCertChain = True results in a completely ineffective SSL pinning control that can be easily and remotely bypassed, thus offering no protection at all.

Hi @ikoz, thanks for providing these details in this discussion. This is indeed helping everybody to learn. Until this core library is fixed, I understand now how this can indeed be a security breach.


Glop/LP Usage Page is 404

I would like to have a look into the LP part of the OR-Tools but unfortunately the usage page (which is linked to by every page) seems offline as it only shows an 404.
Is there anyone at Google here to fix this?
The link is: https://developers.google.com/optimization/introduction/using#lp
Thanks
Kind Regards
Rummens

Hi,
Seems odd,
The link should be https://developers.google.com/optimization/lp/glop did you refresh your browser ?
Also could you point me a page where the link is broken ?
Thx for the feedback !!!!

Hi, thanks for the fast response.
I know those pages but for example the Glop Page links to the missing page in the first paragraph:

To learn how to use Glop to solve a simple linear problem in all of the supported languages, see A simple linear optimization example.

Also on the main page of this repository under Quick Start:

The best way to learn how to use OR-Tools is to follow the tutorials in our developer guide:
https://developers.google.com/optimization/introduction/using
If you want to learn from code examples, take a look at the examples in the examples directory.

Is there another using page or are the pages provided by you the only examples available? It seems to me that there must be?
Thanks
Rummens

We have merged rework "using|running page" into "Get Started" page. and we have split it by languages.
For LP I think the link I give you are the only documentation available.
note: if you start to mix with integer maybe https://developers.google.com/optimization/mip/integer_opt could be interesting to you.
What are you looking for exactly ?
there is also examples on github to "learn from code" -> https://github.com/google/or-tools/blob/master/examples/cpp/linear_programming.cc
note: example on devsite and github are not in sync (yet?)

I just had a look at the Get-Started Page, it seems to be something close to what I was looking for. I just thought there would another example, as the only one I could find was the "The Stigler diet" example.
To fix the links look through the Linear Optimization Tab and search for " A simple linear optimization example." That should give you most of the dead links. If that would point onto the Get-Started page it makes it easier to find the information.
Thanks for your help.

Found another dead link pointing to "https://developers.google.com/optimization/introduction/simple_example". It on the Get-Started Page in section "Running the program":

You can run the program as described in A simple program.

Should be fixed now !
Thanks for the feedback


Doco clarification

Could you add clarification around the new Teams Room licenses (Basic/Pro) and user interface. i.e. can adding a Teams room basic satisfy the license entitlement for the MeetingSignIn mode for a Teams certified handset?

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

ID: 62d58962-9b2f-0231-187b-58c845e52a0c
Version Independent ID: b3045cca-8bcb-8d30-0dda-49aed3009172
Content: Set Microsoft Teams Android devices user interface - Microsoft Teams
Content Source: Teams/devices/Teams-Android-devices-user-interface.md
Service: msteams
GitHub Login: @dstrome
Microsoft Alias: dstrome

Hi @SvenBell, thank you for your feedback.
I think the information about the licenses is included in the article:
"The license assigned to the user account must have at least the same license entitlements as the desired user interface. The Common Area Phone license only allows the Common Area phone user interface. The meeting room license allows meeting room and common area phone user interfaces. An E3 or E5 license supports all sign-in modes."
Then you need to have in mind the available features on each license, for example:
https://learn.microsoft.com/microsoftteams/rooms/rooms-licensing
You can assign an MTR license and change the user interface to Common Area Phone, but you won't be able to make or receive PSTN calls. Maybe you can use this CAP in the lobby or reception to reach internal users.

Hi @SvenBell Does this answer your question? Thanks.


Updated PT-BR lang file

Awesome! 😄

Before the final release, please call me to update the translation.

Will do! I really appreciate your help!
On Fri, 9 Mar 2018 at 00:13, AFaustini<EMAIL_ADDRESS>wrote:

Before the final release, please call me to update the translation.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/picotorrent/picotorrent/pull/544#issuecomment-371657462,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABbDcJ6NioyA0niOXgqA880bztsoy21Gks5tcbscgaJpZM4Shpxl
.


Errors when running flutter iOS app with plugins on Mac m1 chip

I have an existing flutter app that I have built on Windows and shipped to the Google Play Store. I recently bought the MacBook Pro 2020 with the m1 chip and I have been trying to build the same app for iOS. The build keeps on failing with error messages that changes a bit each time without me making any changes to the code and/or config.
Please this is the logs of one of the failed builds...
The error it gives when ran directly through xcode is quite different. It reports that one or two of the swift files for the included plugins are missing. And each time the plugin which it reports about does change. It is not always the same plugin that it says is missing.
Please I need help on this. Thanks.

logs
Launching lib/main.dart on iPhone 12 Pro Max in debug mode...

Running pod install...                                              3.2s
Running Xcode build...
Xcode build done.                                            7.2s
Failed to build iOS app
Error output from Xcode build:
↳
    objc[17851]: Class AMSupportURLConnectionDelegate is implemented in both ?? (0x20edae7a0) and ?? (0x1142d42b8). One of the two will be used. Which one is undefined.
    objc[17851]: Class AMSupportURLSession is implemented in both ?? (0x20edae7f0) and ?? (0x1142d4308). One of the two will be used. Which one is undefined.
    ** BUILD FAILED **

Xcode's output:
↳
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:107:111: error: using '!' is not allowed here; perhaps '?' was intended?
            typealias Function = (_ data: UnsafeRawPointer, _ len: CC_LONG, _ md: UnsafeMutablePointer<UInt8>) -> UnsafeMutablePointer<UInt8>!
                                                                                ^                          ~
                                                                                ?
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:188:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func MD2() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:198:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func MD4() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:208:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func MD5() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:217:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func SHA1() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:226:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func SHA224() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:235:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func SHA256() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:244:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func SHA384() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:253:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func SHA512() -> Self {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:330:5: warning: 'public' modifier is redundant for static method declared in a public extension
        public static func random(_ length : Int) throws -> Data {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:432:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func hmac(_ algorithm: HMAC.Algorithm, key: Data) -> Data {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:453:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func hmac(_ algorithm: HMAC.Algorithm, key: String) -> String {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:628:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func encrypt(_ algorithm: Cipher.Algorithm, options: Cipher.Options, key: Data, iv: Data? = nil) throws -> Data {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:646:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func decrypt(_ algorithm: Cipher.Algorithm, options: Cipher.Options, key: Data, iv: Data? = nil) throws -> Data {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:745:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func derivedKey(_ salt: Data, pseudoRandomAlgorithm: PBKDF.PseudoRandomAlgorithm, rounds: UInt32, derivedKeyLength: Int) throws -> Data {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:760:5: warning: 'public' modifier is redundant for instance method declared in a public extension
        public func calibrate(_ saltLength: Int, pseudoRandomAlgorithm: PBKDF.PseudoRandomAlgorithm, derivedKeyLength: Int, msec : UInt32) -> UInt {
        ^~~~~~~

    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:272:48: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return type(of: self).init(Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count))
                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:272:69: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            return type(of: self).init(Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count))
                                                                        ^~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:272:69: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return type(of: self).init(Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count))
                                                                        ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:291:28: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count).hexString()
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:291:49: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            return Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count).hexString()
                                                    ^~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:291:49: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return Data(bytes: UnsafePointer<UInt8>(messageDigest), count: messageDigest.count).hexString()
                                                    ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:332:32: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            let data = Data(bytes: UnsafePointer<UInt8>(bytes), count: bytes.count)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:332:53: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            let data = Data(bytes: UnsafePointer<UInt8>(bytes), count: bytes.count)
                                                        ^~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:332:53: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            let data = Data(bytes: UnsafePointer<UInt8>(bytes), count: bytes.count)
                                                        ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:436:28: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return Data(bytes: UnsafePointer<UInt8>(result), count: result.count)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:436:49: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            return Data(bytes: UnsafePointer<UInt8>(result), count: result.count)
                                                    ^~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:436:49: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return Data(bytes: UnsafePointer<UInt8>(result), count: result.count)
                                                    ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:592:45: warning: initialization of 'UnsafeRawPointer' results in a dangling pointer
            let ivData = self.iv == nil ? nil : UnsafeRawPointer(self.iv!)
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:592:69: note: implicit argument conversion from 'Cipher.IV' (aka 'Array<UInt8>') to 'UnsafeRawPointer'
    produces a pointer valid only for the duration of the call to 'init(_:)'
            let ivData = self.iv == nil ? nil : UnsafeRawPointer(self.iv!)
                                                                 ~~~~~~~^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:592:69: note: use the 'withUnsafeBytes' method on Array in order to explicitly convert argument to buffer
    pointer valid for a defined scope
            let ivData = self.iv == nil ? nil : UnsafeRawPointer(self.iv!)
                                                                        ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:631:28: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return Data(bytes: UnsafePointer<UInt8>(encryptedBytes), count: encryptedBytes.count)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:631:49: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            return Data(bytes: UnsafePointer<UInt8>(encryptedBytes), count: encryptedBytes.count)
                                                    ^~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:631:49: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return Data(bytes: UnsafePointer<UInt8>(encryptedBytes), count: encryptedBytes.count)
                                                    ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:649:28: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return Data(bytes: UnsafePointer<UInt8>(decryptedBytes), count: decryptedBytes.count)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:649:49: note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer
    valid only for the duration of the call to 'init(_:)'
            return Data(bytes: UnsafePointer<UInt8>(decryptedBytes), count: decryptedBytes.count)
                                                    ^~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:649:49: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return Data(bytes: UnsafePointer<UInt8>(decryptedBytes), count: decryptedBytes.count)
                                                    ^
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:747:28: warning: initialization of 'UnsafePointer<UInt8>' results in a dangling pointer
            return Data(bytes: UnsafePointer<UInt8>(key), count: key.count)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:747:49: note: implicit argument conversion from 'PBKDF.DerivedKey' (aka 'Array<UInt8>') to
    'UnsafePointer<UInt8>' produces a pointer valid only for the duration of the call to 'init(_:)'
            return Data(bytes: UnsafePointer<UInt8>(key), count: key.count)
                                                    ^~~
    /Users/tochukwu/development/workspace/flutter/tristics/ios/Pods/SCrypto/Source/SCrypto.swift:747:49: note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument
    to buffer pointer valid for a defined scope
            return Data(bytes: UnsafePointer<UInt8>(key), count: key.count)
                                                    ^
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'CryptoSwift' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'package_info' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'geolocator' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'image_picker' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'flutter_paystack' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'flutter_device_locale'
    from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target
    'flutter_local_notifications' from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'device_info' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'url_launcher' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'shared_preferences' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'share' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'rate_my_app' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'permission_handler' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'path_provider' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'in_app_review' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'image_downloader' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'google_maps_flutter'
    from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'geocoding' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'contacts_service' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target
    'TOCropViewController-TOCropViewControllerBundle' from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Starscream' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'ReachabilitySwift' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'FMDB' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'TOCropViewController'
    from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Flutter' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'sqflite' from project
    'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'PusherSwift' from
    project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'image_cropper' from
    project 'Pods')

Could not build the application for the simulator.
Error launching application on iPhone 12 Pro Max.

And this is the result of flutter doctor -v
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.0.1 20B29 darwin-arm, locale en-NG)
    • Flutter version 1.22.6 at /Users/tochukwu/development/tools/flutter
    • Framework revision 9b2d32b605 (13 days ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tochukwu/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/tochukwu/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] Connected device (4 available)
    • Android SDK built for arm64 (mobile) • emulator-5554                            • android-arm64 • Android 11 (API 30) (emulator)
    • user’s iPhone (mobile)               • ef7625d409e42720aa90a15bdb23fb045297d3ab • ios           • iOS 14.4
    • iPhone 8 (mobile)                    • 612EE47D-CDD2-4FE8-8F7B-62A248EC252D     • ios           • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • iPhone 12 Pro Max (mobile)           • EF8B1968-4830-4163-8F2C-0B0C31790043     • ios           • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)

! Doctor found issues in 1 category.

I have encountered a very similar issue when running flutter build ios. Any solution?

HI @oteejay
Can you change target iOS to 9.0, it's required from 1.22+
Could you please try updating Architecture to arm64https://github.com/FirebaseExtended/flutterfire/issues/4694#issuecomment-765331533
I see there's an open issue addressing the case you described. https://github.com/flutter/flutter/issues/72622
Please follow up on that issue, I'm closing the current one as a duplicate.
If you disagree, please write in the comments and I will reopen it.
Thank you


gets the code, still need to save to db and other stuff

https://github.com/YummyOreo/document-site/issues/48#issuecomment-1229496305

Add error handlings


Custom dispatch middleware, default route middleware, and route attributes

I created a BaseControllerTrait, and I was wondering whether to instead extend a base class, so I went onto ##php to ask for opinions. The feedback was a bit mixed, but a somewhat-unrelated suggestion was made that I move the __invoke code (dispatch & automatic template rendering) to a separate middleware class. This makes sense to me, but I'm a bit unsure as to how to accomplish it.
I was thinking of something along these lines:
    'routes' => [
        [
            'name' => 'app.site',
            'path' => '/[{action}]',
            'middleware' => My\Dispatch\Middleware::class,
            'allowed_methods' => ['GET']
        ]
    ]

However:
1. If the controller is not part of the route, how do I send that information to the dispatch middleware? I thought that maybe an attributes key could be added to the route interface, so you'd do:
    'routes' => [
        [
            'name' => 'app.site',
            'path' => '/[{action}]',
            'middleware' => My\Dispatch\Middleware::class,
            'allowed_methods' => ['GET'],
            'attributes' => [
                'controller' => My\Controller\Class::class,
                'somethingElseLikeADefaultAction' => '...'
            ]
        ]

Which would then be available via the request.
2. Specifying the same middleware over and over could get annoying, so it would be nice if you could specify default middleware to use if the route doesn't specify any.
3. I'm not sure how this relates to ApplicationFactory::DISPATCH_MIDDLEWARE? Does it replace it, come before/after it, etc.
This is just an idea – I wanted to get feedback in case I was thinking of doing something silly when there may be better options.
Your thoughts?

One way to do it would be with zend-servicemanager and an abstract factory. That way you have a factory that you can reuse to inject all the common dependencies.
However when you have extra dependencies like service classes, data storage, etc you need to write custom factories or you can use reflection to detect what to inject: https://xtreamwayz.com/blog/2015-12-30-psr7-abstract-action-factory-one-for-all

@xtreamwayz I'm already using an abstract factory similar to yours to construct the controllers (we discussed this a few days ago on #zftalk.dev [my nick there is darkangel]).
However, this issue is about how to introduce a custom dispatcher so that this code can be separated from the controller class.

you can create a middleware  playing role of dispatcher  and pipe it to be executed after the routingMiddleware and check if request(path) match what you desire then return the specific middlewareAction.

@jkhaled How would the dispatch middleware know which controller to load? I need to pass the controller name from the route configuration. For this I need to be able to specify attributes (or similar).

@glen-84 When using the AuraRouter you can assign values to each route which are then added to the request attributes. See this example config

@codeliner Interesting; however, I'd like this to work regardless of which router implementation is chosen. Route options are specific to each implementation.

Closing, as this thread contains no actionable items currently.


Great people screen previously recruited tab is sometime not selectable

I will give it a look today, hopefully find why and fix it

fixed in https://github.com/Azurency/CQUI_Community-Edition/commit/c4397b57859ab6ede93bd261dfd7e545ed0ed727