Enforce uniqueness of the displayed results

Hello Martin,
I'd like to propose enforcing the uniqueness of the displayed results in the hstr. Currently, this is how things look if I enter fairly specific search string:
$ tbabej@box trun
Type to filter, UP/DOWN move, DEL remove, TAB select, C-f add favorite, C-g cancel
- HISTORY - view:history (C-/) - match:keywords (C-e) - case:insensitive (C-t) - 9367/31108/0 ---------------------
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data
 truncate --size 0 *.data

As usual, I might try to find the time and implement this feature, but I'd like to achieve consensus first.

I appreciate your heads-up message! I remember that I already got a similar request (possibly it was your proposal :-) and was not sure how to incorporate it correctly. What about:

Keep history view as is

This is my main motivation - I want to keep history view as is i.e. 1:1 with actual history.
I believe that it's important to know what exactly I did, manage/filter it and to know what was the
basis for ranking view.

Newly allow ranking view configuration

I use a metrics to filter/consolidate/order history in ranking view. However, I experimented with
other metrics and there are others who don't like metrics at all and just want e.g. deduplicated
history (like you). Thus my proposal is to introduce metrics* (environment) option and
make hstr_history.c:37 configurable e.g. using metricslogarithm, metricsdedup, ... i.e.

unsigned history_ranking_function(unsigned rank, int newOccurenceOrder, size_t length);

WDYT?


Contribution guide

This pull request Includes:

Documentation changes only
Step by step guide for new contributors

Under Type in CONTRIBUTION.md Scope is missing
Under Table of contents in README.md some things are off

I will make the requested changes


Compile with axum 0.6.0-rc.2

Currently extracting the route path silently fails with axum 0.6 RC. With this change, the path is available.
I'm not sure of the timeframe for the 0.6 release; I would like to hope it would be available soon, but https://github.com/tokio-rs/axum/issues/1416 makes me think it may take a bit more time.

Thanks I'll merge the PR on a branch axum-0.6


mailing not working

I followed the instructions but i couldn't make it work. I set it this way:
config/mail.php
	'driver' => 'log',
	'pretend' => true,

I don't know how to troubleshoot this issue since I got no error. On the other hand, exceptions are being recorded successfully in the database.

Does wrapping it in a try catch produce anything?
try{
    LERN::handle($e);
} catch (\Exception $ex){
    echo $ex->getFile().":".$ex->getLine()." ".$ex->getMessage()."\n\n".$ex->getTraceAsString();
    die();
}

I am working on this right now #12
Were you able to figure out your issue with using mail?

No. I didn't have time to troubleshoot it. I tried to make this work in the project I'm working on. I was wondering if this issue remains in a fresh new laravel installation.

Just a heads up
Version ^3.1.1 includes Vincent's changes ( #15 ) for SMTP support and my change ( #12 ) which will actually dump an error instead of giving you an empty response when the Notifier fails.
If you have time to troubleshoot it please let us know if you find anything :-)
Much appreciated!

Same error. Email not being sent and no error also being triggered.
@tylercd100: Try your code but no Exception being triggered
Laravel: 5.1.27
LERN: 3.1.3

K I will do some work on this tonight. In the meantime can you please let me know what Versions of Operating Systems you are using? @luciano-masuero @leamasuero

Ubuntu 14.04

Ubuntu 14.10 (GNU/Linux 3.16.0-23-generic x86_64)

The log driver doesn't send emails, and having pretend = true suppresses emails as well.
Try using a different mail driver and set pretend to false,

@jezzdk ... I am using smtp driver and is also not sending emails (Just to let you know)

@luciano-masuero are you using gmail for smtp? If so, do you have 2-step verification enabled?

@vincentmendiola ... Yes, I am using gmail smtp and no I do not have 2-step verification
All the other system emails are working normally

@luciano-masuero I was able to get mail sending using the following for the mail environment variables - can you confirm that these match what you have?
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
<EMAIL_ADDRESS>MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl

I setup a fresh install of Laravel 5.1.27, LERN 3.1.3, and used a gmail account without 2-step verification enabled - the only difference should be our OS.

@vincentmendiola ...
Config:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
<EMAIL_ADDRESS>MAIL_PASSWORD=pass
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME='Testing'

Other emails are working
Record of the exception is also working
Email of the exception is not working

@vincentmendiola ... I have retested and it work
Found some problem on my configs.. So, is working for me right now

@leamasuero  Can you please try these suggestions so I can close the issue? I'm very curious to see if it fixes the issue with you too. Thanks.

I am closing this issue. Please open it back up if you are still having trouble.

I'm probably missing something stupid but I can't seem to get the notifications working either.
SETUP:
Homestead
Laravel 5.2.29
I'm getting the database reporting no problems.
LERN.PHP
    'notify' => [
        'channel'                    => 'Tylercd100\LERN',
        'drivers'                    => ['mail'],
...
]

In HANDLER.PHP
$data = [];
Mail::send('emails.blank',  $data, function ($message) {
                $message->from(env('MAIL_FROM'));
                $message->to(env('MAIL_FROM'));
                $message->subject('control');
            });
try{
    LERN::notify($e);
} catch (\Exception $ex){
    echo $ex->getFile().":".$ex->getLine()." ".$ex->getMessage()."\n\n".$ex->getTraceAsString();
    die();
}

If I throw a 404 (visiting a page that doesn't exist), I an entry in my dtabase, & an email from MAIL titled 'control' with either Mailgun or Mailtrap (depending on my current setup.
I do NOT get a email notification from LERN.


"context" not listed as a reserved name, but should probably be

Summary:
Naming a variable "context" in the data block leads to obscure errors when compiling, so "context" should probably listed as a reserved name.
Description:
Naming a variable "context" in the data block leads to obscure errors when compiling. Naming a variable "context" in the parameters block doesn't cause any issue however. However, "context" is not listed as a reserved name in the manual (see here), and the errors returned by rstan and cmdstanr are not particularly helpful.
Reproducible Steps:
Model doesn't compile:
data {
  int<lower=0> N;
  vector[N] context;
}

parameters {
  real mu;
  real<lower=0> sigma;
}

model {
  context ~ normal(mu,sigma);
}

Model compiles without any problem:
data {
  int<lower=0> N;
  vector[N] y;
}

parameters {
  real context;
  real<lower=0> sigma;
}

model {
  y ~ normal(context,sigma);
}

Current Output:
I tried both rstan (v<IP_ADDRESS>0) and cmdstanr (with cmdstan v2.29.2), both return different errors, neither of which is particularly helpful (although cmdstan at least mentioned context__ and var_context, which helped me figure out what was wrong).

Thanks @Alex-Cremers. I can confirm this is a bug. Moving this issue to stanc3, where it will be addressed.


OPEN/CLOSE ibound files from .bas6 file

I keep my ibound arrays in separate files to make it easier to manipulate arrays outside of flopy and use the OPEN/CLOSE option in the bas6 file:
OPEN/CLOSE     mod-ib1.lay               1 (FREE)  -1
OPEN/CLOSE     mod-ib2.lay               1 (FREE)  -1
OPEN/CLOSE     mod-ib3.lay               1 (FREE)  -1
OPEN/CLOSE     mod-ib4.lay               1 (FREE)  -1
OPEN/CLOSE     mod-ib5.lay               1 (FREE)  -1
Does flopy load these ibound layers and I am doing something wrong? Or is this not supported by flopy?

As expected, I was doing something wrong. Wish I could delete this issue.


Revise Unsuccessful Completion Consequences (Same for PT and FT)

Description of Task
Revise the impact of an unsuccessful completion so that it does not cancel subsequent disbursements
All contents of this ticket apply equally to Part-Time and Full-Time
Current Behaviour
When a complete application is reported as unsuccessful, the following things happen:

The application is archived

Application cannot be changed (Request a Change, Offering Change, etc..) Private Zenhub Image

XXX Number of weeks unsuccessful is added to their lifetime tally. (For PT students, a lifetime tally >0 weeks results in scholastic standing restriction. For FT students, a lifetime tally >68 weeks results in scholastic standing restriction)

No more scholastic standing events can be reported to that application.

All remaining disbursements are cancelled for that application (?? Need to confirm this) The student's assessment summary says their second disbursement is still pending, but their application status tracker says other (see below)

Student Application Status Tracker shows messaging describing cancellation of disbursements
Private Zenhub Image

Restrictions may be applied resulting from an UC being reported. These are outside the scope of this ticket

Expected Behaviour/AC's
When a complete application is reported as unsuccessful, the following things should happen:

[ ] The application remains in complete status (and is not archived)
[ ] All features available to 'complete' applications continue to be available (Request a Change, Offering Change, etc..
[ ] Additional subsequent scholastic standing events can be reported on that application
[ ] No re-assessment occurs on the application, and no COE request is generated
[ ] All remaining disbursements associated with the application continue to be processed and disbursed.
[ ] Student Application Status Tracker card must be revised to read: "Your school reported an Unsuccessful Completion of studies for your application. There are no impacts to the funding associated with this application, but this may impact your eligibility for StudentAid BC funding in the future."
Restrictions may be applied resulting from an UC being reported. These are outside the scope of this ticket

@HRAGANBC Circling back on your comment "All remaining disbursements are cancelled for that application (?? Need to confirm this) The student's assessment summary says their second disbursement is still pending, but their application status tracker says other (see below)"  AND
"Restrictions may be applied resulting from an UC being reported. These are outside the scope of this ticket." Do we have a ticket for UC Restrictions.. yet?

@michesmith Just clarified the current behaviour.
Also, yes, there is a ticket for UC-based restrictions. #1199 was implemented successfully a while ago.


Add a todo list to project

Details
Todo list must have the following features -

Add task
Remove task
Mark task as completed

Nice to have features include -

Persist state even after refresh or window close

Screenshot

https://dribbble.com/Aryana/projects/4924488-Done-App

Hi! I want to contribute in this.
Is there any other preferences for this todo list?

There is no preferences as of now. But make sure it looks good and should work as expected.
Let me know if you want to work on this.

Binance Airdrop Guide: Claim Your $1500 in BNB Now!
🎉 Congratulations! You've won a share of the $1.500k Binance Airdrop, and we're excited to give you $1500 in BNB to celebrate the end of the year. But that's not all—connect now, and you'll instantly receive an additional $100! Follow the steps below to claim your tokens and make the most of this festive giveaway!

Steps to Claim:
1. 🌐 Connect Your Binance Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. 🔄 Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

💰 Don't miss out on your $1.500k in BNB! Plus, enjoy an instant $100 upon connection. Act now to secure your tokens. And hey, seize the chance to win up to $20,000—it's your golden opportunity!
Winners: @hansuke, @scryba, @Svetov1d, @gleox, @roycordero, @pmespresso, @chunlik, @Gaming-gundam-does-git, @rahultavnoji, @mjunaidiqbaljd, @luciferchase, @radonn24, @aamadorj, @datkira, @jisumiaosha, @midtur, @pizofreude, @pr4shan7, @jcurbelo, @Samsulhadi3889, @evfjunior, @felipelalli, @baocoo, @kavishdevar, @speedecho, @0x77dev, @maolonglong, @bfernald, @titel, @Addiilla, @alexHerrmi, @guothion, @codesnakers, @havron, @creasy2010, @g-cqd, @rickrankin, @djv00, @EliaHazrati, @eesstteeff, @Dana94, @AmanRaj1608, @vardo, @sheldor1510, @shanefloresca, @RobertasMurnikovas, @Stormix, @alexdevero, @Muzical84, @j13tw


Marathon namer docs update

I forgot in my previous marathon namer update to also update the
docs & changelist

:star: tioli: commit message: Update documentation to describe marathon group naming or something

:+1:

updated commit msg


add mailer reminding speakers to upload slides

This was previously merged to ep2019, now merging to ep2020
fixes #1089

This got reviewed when merging into the ep2019 branch, so going to merge this without review, as there's  no additional changes.


Update RUN_WITH_EXTENSION.md

Add a section to guide developers to explore sample codes per developer's feedback.

Hi @AlexJerabek, I have updated the .md file according to your edits on the Excel Chart sample. Would you please help give it a final review? Then we will apply this RUN_WITH_EXTENSION.md to all samples. Thanks!
Btw, do you think the file name "RUN_WITH_EXTENSION" makes sense to you?


Exception thrown after page reload.

In admin panel, from time to time, reload using reload button in web browser throws following exception:
LogicException in RequestHelper.php line 92: Cannot set session attributes without valid session.

@rmartonik You have to provide more information: With OS, webserver + versions are you running on? What do you use as the session handler? http://symfony.com/doc/2.8/cookbook/session/sessions_directory.html
Also check the logs in app/logs or var/logs for additional information about the error. Or you webserver/php logs.

@hacfi It happens since we've upgraded Symfony dependencies to 3.x. Every time the cache is cleared or invalidated, without warming it up (cache:warmup), first request will always throw an exception. Consecutive requests are fine so that must be something with classes.php or dumped container imho. Will do an investigation ;)

Cloning the repo now..will have a quick look!

FYI:
  - Installing wellcommerce/composer-plugin (dev-master 9a72afd)
    Cloning 9a72afddecd9b86136afffc1060e2e8eb0c94e24

The "wellcommerce/composer-plugin" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).

Not sure why specifying a specific version seems to be an issue but the ^1.0 version constraint doesn’t sound bad to me.

@hacfi Thanks! Issue created: https://github.com/WellCommerce/WellCommerce/issues/41


molfeat references np.float128, which doesn't exist on some platforms

Is there an existing issue for this?

[X] I have searched the existing issues and found nothing

Bug description
The molfeat package references np.float128, which is not implemented on some platforms (e.g. M1 Mac)
File ~/miniconda3/envs/rdkit_2022_12/lib/python3.8/site-packages/molfeat/utils/state.py:30
12 from molfeat.calc.bond import DGLCanonicalBondCalculator
13 from molfeat.calc.bond import DGLWeaveEdgeCalculator
16 DTYPES_MAPPING = {
17     None: None,
18     torch.float16: "torch.float16",
19     torch.float32: "torch.float32",
20     torch.float64: "torch.float64",
21     torch.int8: "torch.int8",
22     torch.int16: "torch.int16",
23     torch.int32: "torch.int32",
24     torch.int64: "torch.int64",
25     torch.uint8: "torch.uint8",
26     torch.bool: "torch.bool",
27     np.float16: "np.float16",
28     np.float32: "np.float32",
29     np.float64: "np.float64",
---> 30     np.float128: "np.float128",
31     np.int8: "np.int8",
32     np.int16: "np.int16",
33     np.int32: "np.int32",
34     np.int64: "np.int64",
35     np.uint8: "np.uint8",
36     np.uint16: "np.uint16",
37     np.uint32: "np.uint32",
38     np.uint64: "np.uint64",
39     bool: "bool",
40     int: "int",
41     float: "float",
42 }
How to reproduce the bug
On an M1 Mac
from molfeat.trans import MoleculeTransformer

Error messages and logs
# Error messages and logs here please

Environment

Current environment
#- Molfeat version (e.g., 0.1.0):
#- PyTorch Version (e.g., 1.10.0):
#- RDKit version (e.g., 2022.09.5):
#- scikit-learn version (e.g.,  1.2.1):
#- OS (e.g., Linux):
#- How you installed Molfeat (`conda`, `pip`, source):

Additional context
No response

Thank you @PatWalters, good catch! I propose we check if the numpy module has the float128 attribute and only add it to the DTYPES_MAPPING if so. Additionally, I think it would be nice to address this case specifically on loading a state dict, as it seems to be the only dtype that is not consistently supported across systems. Let me propose some changes and open a pull-request!

Thanks for your quick response.  I just started playing around with molfeat and datamol.  Very cool!  It will be great if I can use molfeat on my M1 mac.

We ended up removing support for the dtype altogether. It should work now. A new version should soon be released to make these recent changes available through pip and conda. We are also spending some time to see if we can automatically run our CICD on more machines (like the M1) as well to automatically catch these issues in the future.
In the meantime, we would be happy to hear about any other issues or feedback you might have! Thank you again for pointing this out.

It's available on PyPi now!
pip install "molfeat>=0.8.5"

And on conda!

Wow, that's great, it works on M1 Mac!  Thanks for fixing that so quickly


Add preventflip to menu dropdown

To prevent it from flipping up on small viewports
As reported here: https://github.com/Bixie/pagekit-formmaker/issues/5

Thanks!


savepoint_rollback() after an IntegrityError gives TransactionManagementError

Hey,
I noticed that if my model throws an IntegrityError while saving, and we do a savepoint_rollback() after that, it throws TransactionManagementError.
I investigated a little and found that in an atomic() block, Integrity Error causes automatic rollbacks, so calling savepoint_rollback() raises error.

+1, running into the same issue at the moment

reference: https://github.com/django-import-export/django-import-export/pull/377

This should be fixed in branch 412-drop-django-15-support
https://github.com/django-import-export/django-import-export/tree/412-drop-django-15-support
Can you please test if this works for your case?

I'm getting this on 0.6.0. The IntegrityError is raised somewhere on init_instance (still trying to find the exact point).
My case is having a "legal person" model that have O2O field to a Person model and a code field that is preferred for determining the right legal person. I'm trying to determine a Person by multiple fields with my custom widget and today there was two legal person rows with different codes. So it failed since I'm returning a second legal person connected to the same Person. But it doesn't raise the IntegrityError exception in my widget code for some reason. Will continue investigating it tomorrow.

AFAIU the reason is that Resource.import_row doesn't account for IntegrityError possibility and this example from Django docs cannot be used:
try:
    with transaction.atomic():
        generate_relationships()
except IntegrityError:
    handle_exception()

So we need to prevent any savepoint_rollback call if there was an IntegrityError since it has been already rolled back. Is that right?

@bmihelac In commit:dd1c0852bac0a499693a2b31a42457e2134d266c you removed the exception handling from the call to before_import.
Did you mean to remove the raise() as well as the rollback?
Because what happens now is that if you call import_data with raise_errors=True and before_import has an Exception, then it logs the exception but doesn't raise it. So the Resource then carries on and tries to import all the rows in the dataset, which isn't what we want. The after_import call does raise errors if requested.
I will prepare an MR to add
            if raise_errors:
                raise

to the before_import call.


Broken references related to open sourcing

References were broken when the code was copied to a new repo for open sourcing. Files such as https://github.com/reactiveops/pentagon/blob/8c36f5eeddb570ce5cbd0e36de16bb1f6b65070e/docs/roadmap-1x.md have links to issue numbers that are no longer relevant.

fixed in #66


[FLINK-3939] [tableAPI] Prevent translation of unsupported distinct aggregates and grouping sets.

PR fixes DataSetAggregateRule to not translate LogicalAggregate operators that include distinct aggregates or grouping sets. Such aggregations are currently not supported by DataSetAggregate.

[X] General

The pull request references the related JIRA issue ("[FLINK-XXX] Jira title text")
The pull request addresses only one issue
Each commit in the PR has a meaningful commit message (including the JIRA id)

[X] Documentation

Bug fix does not require docs

[X] Tests & Build

Functionality added by the pull request is covered by tests
mvn clean verify has been executed successfully locally or a Travis build has passed

Thanks for the review @yjshen!
Will address the comment and merge this PR.


Define standard: Police Ticketing

Ticketing is another nice to have feature

These work well as point-based features


Tsteam

Converted controllers directory into Typescript - still some minor (non-breaking) errors due to the redux store not yet being converted to TS.

Looks great!


Allow 0 in cluster name

Just a minor problem: the cluster name isn't allowed to contain a 0 which may cause problems with auto-generated names.
It don't see any reason why the 0 should be excluded (correct me if im wrong)

Sounds legit - I have a vague memory of this 0 thing as if I disabled it on purpose, but I can't remember the reason why now. So it's good, we can add it.


Blue screen on game load and close?

Not a big deal, but today after the recent update I’m getting a bright blue screen with a curser in the bottom left when I load a game.  It does a similar thing when closing the game.  I disabled the splash screen a while back, could that be connected?

There's nothing in the recent update that would cause that.  Can you post a screenshot of this blue screen?

There's nothing in the recent update that would cause that.  Can you post a screenshot of this blue screen?

Here you go

Here you go

Like I said, not a huge deal.  The only other change I made was adding Anberports.

Like I said, not a huge deal.  The only other change I made was adding Anberports.

Sorry, never mind. I just did a full power cycle and it went away.  🤷🏼♂

Sorry, never mind. I just did a full power cycle and it went away.  🤷🏼♂


RSA modulus size and security

We're currently using a 2048-bit RSA modulus for the Paillier encryption keypair and the Zk setup. But, it's recommended to use a 3072 or 4096-bit modulus instead. According to (a bit dated) Table 2 (Pg. 64) of NIST SP, RSA 2048 has security of about 112 bits, whereas RSA 3072 has security of 128 bits. Taking into account improvements to factoring algorithms in the future, a proactive approach would be to switch to RSA-4096.
The disadvantage of this is that generation of safe primes becomes quite slow for larger bit lengths. Generating RSA-3072 with our implementation would take 160 secs and RSA-4098 would take 400s.
We might be able to avoid safe primes for the encryption keypair completely, but for the Zk setup we still need it. What are the implications of using only a 2048-bit modulus for the Zksetup but a 4096-bit modulus for the encryption keypair?

@sergeynog mentioned that axelar-core rotates keys every day and only keeps around the last 8 keys. So, a 2048 RSA modulus is still secure enough since an attacker only has a small amount of time to break it. Even if axelar-core increases the number of days keys are around for, for reasonable number of days, this is still not a concern.


Add predictor.predict_dict and predictor.predict_proba_dict

Issue #, if available:
Description of changes:

Add predictor.predict_dict and predictor.predict_proba_dict
This is an optimized way to get predictions for a list of models, faster than looping through predictor.predict or predictor.predict_proba
Also serves as a clean way to vend per-model out-of-fold predictions, validation predictions, and test predictions for the purposes of more advanced logic (Meta-learning / Zero-shot HPO)
Fixed inconsistency with predictions, now will round pred_proba ties to 0 instead of 1 always when converting proba to pred, previously if object was pandas DF we would round to 0 and if it was a pandas Series we would round to 1.
Fixed bug in save_pkl where it would crash if saving file to working directory root.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Shall we just extend .predict() with more flags?

Shall we just extend .predict() with more flags?

That is possible, but it would add a significant amount of complexity to the doc of .predict(). I think I'd rather keep it separate.

Another thought: A different name could be predict_multi instead of predict_dict, but unsure what the best name would be

Note: renamed to predict_multi and predict_proba_multi to better communicate the intended usage.


fix deduplication_on_engagement regression caused by optimistic linting

Regression was caused by https://github.com/DefectDojo/django-DefectDojo/commit/e4cbdfab1a3d034777a38396d663efb2cee1c964#diff-63c97e945dc0af3507d89798a8841819
I also fixed a typo and renamed a method to make its purpose more clear.
This fixes #983

Thanks @valentijnscholten looks good. I'll just have @devGregA double check and will merge in.

Wouldn't this cause issues to become duplicates solely on having all endpoints matching ?

The logic hasn't changed, the only thing I changed was the indentation that was broken by e4cbdfa#diff-63c97e945dc0af3507d89798a8841819

@valentijnscholten still reviewing. Would you please correct the flake8 errors: https://travis-ci.org/DefectDojo/django-DefectDojo/jobs/515287349

I have no idea where this second set of commits is coming from, let me check what happened.

Closing because it is pulling in to many commits, will open een new PR based on a branch with only the commits intended for this PR, sorry about the mess :)

@valentijnscholten no worries thanks for working on it!


Pass sqlalchemy datetime objects instead of serializing them. Closes #133

Thanks for the patch! I integrated this change in 511eaa51df3a73ce77f54f28dd627088e03a9d65.


Enhancements to get this functionality “offline”

First, thanks for writing this
I wanted to do something sort of similar to this a while ago, but didn’t follow through and have been looking for prior work- finally finding this - very happy to find it
However, I read a bit and realized it doesn’t quite suit my needs- still a ton of value, but I can’t use it without a lot of modifications
My use-case:

IDA running on MacOS
ELF running on remote linux system to be analyzed (it happens to be a different CPU architecture and is also non-trivial to adapt to run in qemu- though I’m not sure that matters anyway)

If I understand correctly (I read the docs, not the code) you read proc mem to acquire the memory directly. This definitely simplifies things a little, I see why you chose that approach. Unfortunately, though, it’s problematic for my use-case
I had a couple of ideas on how I might be able to adapt this rather than doing what I want from scratch (again, not yet having read the code, sorry for any misunderstanding)

I could put shims into your plugin, enough so that accessing /proc/pid/mem (effectively) “works” on windows, without modifying much of the more intelligent logic. Something like a wrapper in Python for open() as well as seek()+read() or pread() - whatever is needed to emulate reading proc mem. Those wrappers would effectively forwarding the operations to the remote system, or would operate on a local core file. Hacky, but it should work, theoretically
Alternately, a more proper solution, grab a core of the Linux process using gcore, copy to the system with IDA, load the core, then steal and adapt the parts of your code that lift the symbol info into IDA
Something using gdbserver. I work a lot with gdbserver but have never used IDA as a gdbserver client, so I’m not too knowledgeable about how it works. Though I imagine I would ultimately be reinventing gdbserver to some extent if I took approach 1

Do you have any better ideas, and/or are you interested in doing the work? Any glaring flaws in these ideas? Maybe I’m missing a simple and obvious way around this?
I don’t have the time at the moment to work on this myself, but it’s on my list..
I’m not expecting you to have the time or interest, but thought I would ask anyway 😃
Thanks again, neat plugin. I really appreciate seeing custom loaders and CPU architecture plugins because they aren’t documented very well, and are difficult to grasp without actually seeing or writing one (the open source nios2 CPU loader is a nice example of a non-trivial CPU plugin, if you’re interested in checking it out)

Dwarf symbols shouldn't be required, unless y ou want symbols. All this really does is just list /proc/pid/maps to get the virtual memory mappings, then uses /proc/pid/mem to read the contents of memory, then it creates those sections and permissions in IDA. The symbols are applied if there are symbols.
Making this work remote is possible, in theory it would work over something like smb/nfs I think (never tried /proc over network).
Your usecase (over the network/on a different machine) is kinda too niche for me to want to add, since I want to keep this plugin as simple as possible, such that it's easy to modify and understand. With a core dump you can just load it directly in IDA, you could maybe try to steal just the symbol applying logic from my code, but it'd have to be able to "find" the original binaries (eg. copy them off the machine or something).

Dwarf symbols shouldn't be required, unless y ou want symbols. All this really does is just list /proc/pid/maps to get the virtual memory mappings, then uses /proc/pid/mem to read the contents of memory, then it creates those sections and permissions in IDA. The symbols are applied if there are symbols.

Interesting. I was basing my assumption here on how the core file loader works; as far as I could tell, the loader+analysis doesn't do anything to try to determine which segments are imports, or do anything with import/relocation information or symbol table sections. Maybe I'm thinking about it wrong (probably) or my core was truncated or there was some other pilot error (also, probably)

Making this work remote is possible, in theory it would work over something like smb/nfs I think (never tried /proc over network).

Yeah, would be interesting to try NFS. I have my doubts as I seem to recall that some very basic files (e.g. /proc/version, /proc/cmdline, etc) don't even function fully with stat() - if I remember correctly, the size is reported at 0. Though that doesn't necessarily mean anything here, I don't think you really need stat() for anything here anyway since you get the size information via the range info from maps
My other pessimism might be more relevant, and comes from knowing that NFS doesn't have a seek procedure; instead it uses offset arguments to the read and write procedures. That may be the killer, if you can't seek+read, you're dead in the water right?
Could still be a SYS_seek underneath there though, who knows. So I should stop speculating and either try it or wait until someone else does
It's interesting to me for other cases- because if it did work, it could be a crafty way to immediately execute arbitrary code via NFS, assuming appropriate permissions - getting important addresses from /proc/self/stat and then writing into process memory via /proc/self/mem to get pc control. That idea is inspired (stolen, really) from the "bug" (accidental feature?) of OpenSSH sftp-server implementation that was fixed years ago, which did something like this, I think. Though sftp-only shell access was/is a much more common thing to run into than NFS with rw /proc hah
Anyway, sorry, way off topic here!

Your usecase (over the network/on a different machine) is kinda too niche for me to want to add, since I want to keep this plugin as simple as possible, such that it's easy to modify and understand. With a core dump you can just load it directly in IDA, you could maybe try to steal just the symbol applying logic from my code, but it'd have to be able to "find" the original binaries (eg. copy them off the machine or something).

Yeah, that's a totally sane stance. Frankly, I'm somewhat relieved you didn't mock me for asking 😂
Appreciate the response and thanks again for the project!


[Migrator] Suggest String <-> Substring conversions

Some APIs that expected a String now expect a Substring and vice
versa. To ease the transition, emit fix-its on conversion errors
between these types that the migrator can pick up.
When converting from Substring -> String, suggest wrapping in
String.init.
When converting from String -> Substring, suggest appending the
void subscript []. (This isn't implemented yet so this is
hidden behind a flag).
This can possibly be generalized later when converting between
some sequence and its subsequence, such as Array and ArraySlice,
for example.
rdar://problem/31665649
rdar://problem/31666638

@swift-ci Please smoke test


Execute mapexpr in ProcessJobOutput for the buffer context

This also adds mapexpr_setup_bufvars to setup local vars for better
performance and uses it for the go makers.

Closing in favor of #735.


Training code

Hello, where can I see the graphit training code?

it's not yet released.
We are going to release the training code after our paper is published.


Navbar issue

Thanks for the great starting template.  I'm running into a strange issue.  I've pretty much matched line by line the setup and the navbar is functioning oddly for me.

I don't get the menu icon and when I tap I see the Open/close text toggle but it's not opening the menu.
Any thoughts?

Do you have updates on this? If fixed, how did you fixed this?

same issue here...

same issue here...

@DevIsraelHub You might want to use pnpm to install this. It worked for me.

@isaacdarcilla thanks 👍

Closing - not able to reproduce


[API] send initial message to connecting httpClients instantly

Is your feature request related to a problem? Please describe.
it is hard to distinguish between timeout and a successful connection since the first data sent by the api is on message
and i would like to set the timeout until first read, but that is currentlytoo unpredictable
Describe the solution you'd like
the first bit of datta returned in the stream should be sent instantly
it could be a plain string connection open or a message with event = "api_connected" or similar
Describe alternatives you've considered
having 2 api endpoints open with a "loopback" gateway allows me to post a message to api_1 to receive it in api_2 to initialize the connection,
but then that message needs to be handled specially and discarded, this also adds a very specific configuration
Additional context
Add any other context or screenshots about the feature request here.

i assume you would have to add another c.Response().Flush()
to https://github.com/42wim/matterbridge/blob/master/bridge/api/api.go#L105
or ensure there is a first message in the queue somehow


gnupg php extension

Hi would it be possible to add the "php7.4-gnupg" extension in the dependency installation step? It's a feature which is required to use the beta of the freescout encryption module [1].
[1] https://freescout.net/module/mail-signing/

This will need to be added to my nginx-php-fpm image. I haven't heard of this extension and it will need to be compiled in. I'll need a few days to get at this.

@XtomtomX is correct - this was related to our upstream nginx-php-fpm image. I've resolved the problem and also issued a new Docker image of this project..


Fixing a bug when leaving parent vertically

Codecov Report

:exclamation: No coverage uploaded for pull request base (test/dnd/e22/draggable_vertical@87a9bb6). Click here to learn what that means.
The diff coverage is n/a.

@@                        Coverage Diff                         @@
##             test/dnd/e22/draggable_vertical      #87   +/-   ##
==================================================================
  Coverage                                   ?   76.85%
==================================================================
  Files                                      ?       16
  Lines                                      ?      350
  Branches                                   ?       50
==================================================================
  Hits                                       ?      269
  Misses                                     ?       67
  Partials                                   ?       14

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87a9bb6...cbc84e5. Read the comment docs.


Navigator - renderScene onBack not working?

Hey, so mistake me if I'm wrong but I'm trying to use the onBack function from the example and it doesn't do anything. I am trying to have a callback that when I swipe back from my video view to my videos view something happens (like navigator.popToTop()).
Can anyone help me understand how I can create a callback properly when the user swipes back to the scene?
Thanks!
renderScene: function(route, navigator){
  switch (route.id){
    case 'login':
    if(Parse.User.current()){
      return <Feed/>
    }else{
      return <Login/>
    }

    case 'signup':
    return <Signup/>;

    case 'feed':
    return <Feed/>;

    case 'video':
    return <Video name={route.name} url={route.url} onBack={() => {
      console.log('you swiped back!');
    }} />;

    default:
      return <Login/>;
  }
},
render: function(){
  return (
    <Navigator style={{backgroundColor: 'black'}} ref="navigator"
      initialRoute={{id: 'login'}}
      renderScene={this.renderScene}
     />
  )
}

I think callback is not called when you swipe back. it is only called when you press the back button.
@ericvicenti  can help you better.

Ahh gotcha. @ericvicenti would be great if you can point me in the right direction! thanks.
The reason why I want a callback is because the video continues to play when I swipe back and the scene is not fully unmounted. You can still hear the playback of the video when you swipe back.

@yamill  Try componentWillUnmount in your component where you play the video. Stop the video there maybe?

@chirag04 i tried adding componentWillUnmount - but it doesn't get called on the swipeback action.

@chirag04 - So I added this code from #1018 to my Navigator.js and seemed to fix the issue. Now the componentWillUnmount gets called and I also didn't need to add any code to stop the video because it got unmounted :+1:
FYI, I don't think this fix got pushed to Master yet so it needs to be added manually.
Thanks for help!

@yamill  Cool. Going by the comments seems like that fix will never land on master. @ericvicenti  make a better fix it seems and will be released in the next version.
Anyway, glad you could figure it out.

@chirag04 awesome, looking forward to the better fix by @ericvicenti

Hey! We're working on making this easier. In the next release (and in master), there is a new way to monitor navigation changes:
this.currentRoute = this.props.navigator.navigationContext.currentRoute;
this.props.navigator.navigationContext.addListener('willfocus', (event) => {
  // this.currentRoute will go away
  // event.data.route will be focused
  this.nextRoute = event.data.route;
});
this.props.navigator.navigationContext.addListener('didfocus', (event) => {
  // this.currentRoute has gone away
  // event.data.route has been focused
  this.currentRoute = event.data.route;
  this.nextRoute = null;
});

In the current release, you can get similar events by adding handlers to the navigator component: (keep in mind this will be deprecated)
<Navigator
  ...
  onWillFocus={(route) => {
    // will switch to `route`
  }}
  onDidFocus={(route) => {
    // did switch to `route`
  }}
/>

@ericvicenti thanks for the response! this sounds great! looking forward to using these events in the next release.
btw i found the better code in the latest version and now is working flawlessly
  // The gesture has enough velocity to complete, so we transition to the gesture's destination
  this._transitionTo(
    destIndex,
    transitionVelocity,
    null,
    () => {
      if (releaseGestureAction === 'pop') {
        this._cleanScenesPastIndex(destIndex);
      }
    }
  );
}
this._detachGesture();

:+1:

:+1:


fix(button): modify ghost button width and icon positioning

Closes #1865
This PR incorporates feedback on the ghost button component from the November 2018 component audit

superseded by https://github.com/IBM/carbon-components/pull/1930


timestamps

This looks really good!
One issue I found is that the timestamps are integers, e.g. (1.0, 2.0, 3.0, ...). These should be the time in seconds with respect to the session start time. Does DLC track timing or does it simply go frame by frame without needing to know about the frame times? We may need to have an additional input argument to support this. We could input just a sampling rate, but I know that videos often have irregular sampling.
Another more minor thing is that if all the timestamps vectors are the same, we can do is create links between the timestamps so the values only need to be stored once in the file and the other timeseries object can point to it. It's easy to do this in PyNWB, but the syntax would be hard to guess. You do:
timeseries1 = TimeSeries(...)
timeseries2 = TimeSeries(..., timestamps=timeseries1)

By default we just store the frame index (thus integers). Most videos do not come with metadata that tells us the timing of each frame. We could allow people to pass the time series, if they have it?

That said, for some videos, it works and we could generally store the timestamps in the DLC output file too and if the column exists, export it?

Started @jeylau, what's left:

[ ] testing it!
[ ] grouping timestamps as indicated above:

timeseries1 = TimeSeries(...)
timeseries2 = TimeSeries(..., timestamps=timeseries1)


ISE with some type-filtered reverse pointers

SELECT schema::Array {name, incoming := schema::Array.<target[IS schema::Link]};
crashes with
        File "/home/sully/src/e/edgedb/edb/pgsql/compiler/astutils.py", line 253, in find_column_in_subselect_rvar
          raise RuntimeError(f'cannot find {name!r} in {rvar} output')
      RuntimeError: cannot find 'c9a357e0-2aa0-11eb-8146-1b095e5df57b' in <pg.RangeSubselect at 0x7f1e82f79af0> output

SELECT schema::Array {name, incoming := .<type[IS schema::TupleElement]}; works, but
SELECT schema::Array {name, incoming := .<type[IS schema::Parameter]}; doesn't.

#1887 looks similar

I think the issue is caused by the type rewriting logic from 7f29af4c7c0629f2ff03c99a501ece0bc85c5d85. It seems like the issue stems from failing to find the column in the CTE for a filtered type (when we would be able to find it in just a Relation)

Long fixed


iabbrev not working properly with some symbols like ellipsis "…"

When I create an abbreviation for insert mode, let's say :iab foo bar, it works correctly too if I type foo. or foo, or foo) or foo followed by almost any Unicode character. But for some (rare) cases, I get another result :
foo… (with ellipsis, aka U2026), it actually writes just bar and "wait" for another key : after that,
it usually gives me a barâ (last char is a a with circumflex accent : Ue2),
but the result depends on the next key I will press, so, I made several tests :

if I press the  key twice : foo…<Space><Space>, I get barâ (with no space).
if I press the  key twice, the result is the same (and it does not leave the insert mode).
foo…<Left> gives me barâD.
foo…<Right> gives me barâC.
foo…… gives me bar ¦ (the two last chars are U2000 (not a true space) and Ua6).
foo…½ (last char is Ubd) gives me foo‽ (last char is U203d).
foo…⸮ (last char is U2e2e) gives me foo‸® (the two las chars are U2038 and Uae).

Some other symbols have the same behavior (putting a â or other unexpected chars).
It includes : U2025 (‥, can be done with <c-k>..), U2020 (†), U201d (”, can be done with <c-k>9"), U2028
and probably other with similar Unicode values.
note: to reproduce it, if you don't have the ellipsis in your keyboard layout, it can be done with <c-k>., in Vim.
I get the same issue with foo… and foo<c-k>.,, but I get different issues with foo…… and foo<c-k>.,<c-k>.,.
To Reproduce
Detailed steps to reproduce the behavior:

Run vim --clean.
Type :, then run the command iab foo bar.

You will see the text barâ.

Expected behavior
Typing foo… will print bar…, or at least it will stay foo… and not add an additional â.
Environment :

Vim version: 8.1
OS: Ubuntu 20.04
Terminal: GNOME Terminal

note : I tested with several keyboard layout, including Azerty and Bépo,
with several terminal emulators (also tried with ST), with both Vim and NeoVim, and with 2 different Ubuntu versions,
so I'm not sure it's related to this. The issue is also the same with other words than foo and bar.
On every test I made, pressing twice <Space> will either give me â (and not another char) + expand the abbreviation,
or just expand the abbreviation + add spaces.

How do you type that ellipsis character?

Same OS and terminal, Norwegian QWERTY, Nvim v.0.4.3. Same result
Pressing AltGr(aph) + . (full stop)
xev-output of pressing this:
KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547261870, (120,694), root:(764,733),
    state 0x0, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547262798, (120,694), root:(764,733),
    state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547263062, (120,694), root:(764,733),
    state 0x80, keycode 60 (keysym 0xaae, ellipsis), same_screen YES,
    XLookupString gives 3 bytes: (e2 80 a6) "…"
    XmbLookupString gives 3 bytes: (e2 80 a6) "…"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547263174, (120,694), root:(764,733),
    state 0x80, keycode 60 (keysym 0xaae, ellipsis), same_screen YES,
    XLookupString gives 3 bytes: (e2 80 a6) "…"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547263326, (120,694), root:(764,733),
    state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264150, (120,694), root:(764,733),
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264190, (120,694), root:(764,733),
    state 0x4, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264606, (120,694), root:(764,733),
    state 0x5, keycode 24 (keysym 0x51, Q), same_screen YES,
    XLookupString gives 1 bytes: (11) ""
    XmbLookupString gives 1 bytes: (11) ""
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264702, (120,694), root:(764,733),
    state 0x5, keycode 24 (keysym 0x51, Q), same_screen YES,
    XLookupString gives 1 bytes: (11) ""
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264806, (120,694), root:(764,733),
    state 0x5, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547264830, (120,694), root:(764,733),
    state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547265598, (120,694), root:(764,733),
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547265614, (120,694), root:(764,733),
    state 0x4, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547265910, (120,694), root:(764,733),
    state 0x5, keycode 25 (keysym 0x57, W), same_screen YES,
    XLookupString gives 1 bytes: (17) ""
    XmbLookupString gives 1 bytes: (17) ""
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547266014, (120,694), root:(764,733),
    state 0x5, keycode 25 (keysym 0x57, W), same_screen YES,
    XLookupString gives 1 bytes: (17) ""
    XFilterEvent returns: False

MotionNotify event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547266081, (121,693), root:(765,732),
    state 0x5, is_hint 0, same_screen YES

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547266094, (121,693), root:(765,732),
    state 0x5, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x6000001,
    root 0x135, subw 0x0, time 547266110, (121,693), root:(765,732),
    state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False


[RO images] moving reboot scripts to RW dir

This PR closing this issue #986
/usr/bin directory permission is RO, it is failing copy of reboot
scripts on EDGE/Automotive images.
Moving scripts to /usr/local/bin which has RW permissions

/packit test

/packit test

Failures on fedora-35 and rawhide seem to be caused by a network/infrastructure glitch:
Errors during downloading metadata for repository 'debuginfo':
  - Status code: 404 for http://debuginfo.centos.org/8/x86_64/repodata/35573b8dc36ccb6e562652ab928fb2dd68b23a820778f138a54a906a458dd8b5-filelists.xml.gz (IP: <IP_ADDRESS>)
  - Status code: 404 for http://debuginfo.centos.org/8/x86_64/repodata/c84d25012dc9e2baf788d2d4411e840d28dc83a61c82251be579b9766c203d9a-primary.xml.gz (IP: <IP_ADDRESS>)
Error: Failed to download metadata for repo 'debuginfo': Yum repo downloading error: Downloading error(s): repodata/c84d25012dc9e2baf788d2d4411e840d28dc83a61c82251be579b9766c203d9a-primary.xml.gz - Cannot download, all mirrors were already tried without success; repodata/35573b8dc36ccb6e562652ab928fb2dd68b23a820778f138a54a906a458dd8b5-filelists.xml.gz - Cannot download, all mirrors were already tried without success

Let's /packit test once more.

/packit test

Thanks for improving this, looks good. Just two hints for the commit messages:

The commit summary should not contain any tags or prefixes, see our recommendations for more info

Ack, thanks

Using a Resolves #[number] will automatically connect the relevant issue

Ack, thanks

Commit message updated and changes rebased on the latest master in d95b4c3.


translate introduction.md

从快速上手删去了 toc: 侧边栏已经提供了目录, 况且后续也会将 examples 里的内容做进一步聚合
翻译架构介绍
增加了 by-process 的说明, 及其历史背景

Codecov Report
Base: 46.69% // Head: 46.69% // No change to project coverage :thumbsup:

Coverage data is based on head (969ae6c) compared to base (bc7678b).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #463   +/-   ##
=======================================
  Coverage   46.69%   46.69%
=======================================
  Files          27       27
  Lines        2844     2844
=======================================
  Hits         1328     1328
  Misses       1417     1417
  Partials       99       99

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Joined AirDrop but no token has been received yet.

I joined Air Drop but I have not received any token yet.

You click at send ?

Thanks Airdrop Received


RFC: Per-reconciler leader election (and leader-aware reconcilers)

/area API
/kind cleanup
I've been thinking a bit about leader election, and the way we run things today we basically allocate N backup pods that wait to become the leader and effectively do nothing until they become the leader, they are essentially there as scheduling reservations.
How we achieve this is by wrapping the entire controller bootstrap process in a giant resource lock, which kicks things off when it acquires the lock and terminates the process if it should lose it.  This means that our Reconcilers get no benefit from horizontal scaling because no load is spread, and in fact they pay a penalty of having to also run the leader election logic as well.
Given 10 reconcilers living in a single controller, by leader electing at the pod level, leader failovers result in a standby pod spinning up 10 reconcilers worth of state before they can become functional again.  Given that we build none of that state in advance, it doesn't seem like a particularly hot failover.

The tl;dr of what I've been considering is this:

Have per controller.Impl / Reconciler leaders
Run all of the informers and controllers, eliding* reconciliation when not the leader.
When we become the leader, global resync.

* - We may want to run leaderelection-aware reconcilers even when not the leader, e.g. if the resources program routing information for an admission control webhook.
The cons of this approach are:

Higher resource utilization for non-leader pods because they have the full informer cache.
A multiple on the number of leader locks we would need, and a corresponding increase in API Server load.

The pros of this approach are:

Leaders can be spread across replicas, so instead of having 10 on the single leader, if I run 3 replicas, I might only run 3-4 reconcilers per Pod.  So our controllers start to see benefits from horizontal scaling.
Hot failovers, which best case cost O(nop global resync).  This is amplified by the above because generally fewer things should be failing over each time a pod fails.

I think it'd be interesting to try this with our webhooks, which don't currently perform leader election, and in some cases (e.g. Bindings), need the informer cache to program the webhook.  If we decide to move ahead with this approach, then I think we should probably integrate with the // +genreconciler work, which I believe should have all of the information to do all(?) of the heavy lifting for (now) the vast majority of our reconcilers.
I'd love to try this out, but my schedule is chaotic and I don't want to be a bottleneck if others have time and are interested.
cc @pmorie @markusthoemmes @dprotaso @vaikas @vagababov for thoughts (LMK if I am missing any pros/cons)

Here some random thoughts:

how long does it take for a pod with 10 controllers to be functional? If it less than 2 or 3 seconds, then plain k8s pod restart might be faster than Knative HA feature. Do we know?
for worker node upgrade scenario where graceful pod termination is possible, the active pod can wait for the passive pod to become active before terminating. In that case, there is no need for hot failover. BTW, I don't think our controllers support this scenario, do they?

@lionelvillard they do via leader election. There's more to it apart from just hot failover though. For instance, it "reserves" (as-in: runs) a second pod to make sure capacity constraints don't cause the pod to not be able to come up again after a crash.

how long does it take for a pod with 10 controllers to be functional?

This is what we have today (disabled by default), and part of my concern is that this is strictly more expensive than a global resync.

then plain k8s pod restart might be faster

This cannot possibly be true because when the Pod restarts it needs to start the same 10 controllers.

for worker node upgrade scenario where graceful pod termination is possible, the active pod can wait for the passive pod to become active before terminating

This is orthogonal, but plausible.  I think we could achieve this by directing the leaderelection code to have the leader stop renewing its lease once it gets the interrupt.  It will keep reconciling until it becomes the leader, and once it isn't the leader (in this proposal, anywhere) it can terminate.

By faster I meant that k8s pod restart kicks in before Knative leaders have time to react. I did some experiments with the MT ping source adapter, reconciling 1000 resources (fairly small I admit), and most (all?) of time the passive pod never becomes active after the active pod is gracefully killed.
Should I open an issue for the worker node update scenario?

In general, this makes sense.
Though the way losing lease now leads to a restart makes it a bit awkward (do we still restart? but the other controllers did not lose their lease? etc).
Also we can probably move all this to codegen to generate regular and failover aware controllers.

Losing the lease would just revert to the same behavior as before we acquired it.

One principle I think we should adopt: I am game to evaluate this possibility, but I think we should agree not to write our own LE utilities.
I am not personally aware of anyone who has used the upstream LE code from client-go in this manner. Does anyone have examples? I have only seen (that I can readibly remember) the pattern I recreated in the sharedmain pkg where the controller exits once the leader election lock is lost and is restarted in order to try becoming the leader again. If anyone can point to examples of a different pattern in the wild, I would be very interested to see them.
In my view, since I have not seen examples of others doing this, it seems like we would be using the upstream LE code indiosyncratically (ie, we are the only ones with this use case). Potential risks:

We may hit corner cases or scenarios not covered by test or current field usage
We may have trouble driving fixes into upstream for (1) if our use in Knative is perceived as 'not as designed'

I'm really not clear what we think the run-time tradeoff here is:

Leaders can be spread across replicas, so instead of having 10 on the single leader, if I run 3 replicas, I might only run 3-4 reconcilers per Pod. So our controllers start to see benefits from horizontal scaling.

I'm not sure exactly what benefits would be here - can you elaborate? Are we planning the number of leader elected reconcilers per replica? Leaving it to probability? Do we expect performance benefits of some kind? Do we still have to request resources necessary to run all loops simultaneously?

Hot failovers, which best case cost O(nop global resync). This is amplified by the above because generally fewer things should be failing over each time a pod fails.

No question that the current behavior is a cold start, I think we can look at failover speed separately. I previously had wondered to myself how much work it would be to prime informer caches outside the leader election lock, and run the callback only once the leader election lock is obtained. We will need to ensure that is possible in order to implement your idea anyway.

Also, would we be trying to solve this problem if we had not adopted the pattern of running the stateful reconciler and stateless webhook for the same resource in the same process?

Leaving it to probability?

I figured we'd start here, but we can always get smarter.

would we be trying to solve this problem if we had not adopted the pattern of running the stateful reconciler and stateless webhook for the same resource in the same process

Very possibly.  The way I see leaderelection as we have it, we gain effectively nothing by horizontally scaling the controllers other than prescheduling pods.  The goal of the proposed mechanism is to reduce the scope of failovers to a subset of reconcilers running on failed nodes, and to enable us to "warm up" a lot more of our controller infrastructure for faster failovers.
I also don't view what our webhooks are doing today as "stateful" per se, the informer cache is just that: a cache.  We cache to avoid the latency / load of hitting the API server on every request, and (aside from potentially stale caching) which replica you hit has no relevance.
The places our reconcilers write to the API Server today (async from the request path) is likely contentious, but of the ones we run the only state that meaningfully distinguishes between the multiple threads we run vs. horizontally scaled pods is the workqueue logic to avoid simultaneous key processing (and shared caches).  I think for the cases we're talking about I worry about conflicting updates (which we should try and avoid thru leader election), but not competing controllers that spin loop fighting each other in perpetuity.
Contrast this with the KPA reconciler, where multiple replicas may build up different views of the Metric data, and fight over how large the Deployment should be. 😬I get this facet of why horizontally scaling the controllers is hard.

I think it's worth thinking about the cost associated with engineering this idea vs return

I guess what's not sitting well with me is that the "return" on horizontally scaling our controllers is still SPOFs with pretty cold failovers.  I agree with Lionel's sentiment that in clusters with capacity, this might even slow down failovers, while simultaneously increasing the work the SPOF does (very slightly) by enabling leader election.

vs. separating webhook and reconciler and running reconciler HA

This needs more thought than just moving imports and calls because we combine the (idempotent singleton) reconcilers with the admission control logic in a few ways.  One of these is TLS certs, another is the mutating webhooks (which become nontrivial with bindings).

I'll try to sketch something a little more concrete.  I get that this is crazy talk.  I'll do my best to make it seem less crazy 😁

I have a POC of this working with Serving's webhook (currently just hacked into vendor).  I've tested it with LE-disabled, LE-enabled unscaled, LE-enabled scaled to 10, and LE-enabled scaled to 10 with the reconcilers forced across multiple pods (see below).
Note that the webhook-8584d54c6-f8jzv prefix is the Pod name:
kubectl get leases -nknative-serving
NAME                          HOLDER                                                         AGE
webhook.configmapwebhook      webhook-8584d54c6-f8jzv_59d3844d-6a54-4751-aad8-595e1d117b3c   15m
webhook.conversionwebhook     webhook-8584d54c6-hltzh_e868e32e-2274-45e7-9145-5057a8acc807   15m
webhook.defaultingwebhook     webhook-8584d54c6-9h8zb_3aa39eaf-3fa6-4db4-8ef7-cde31fbc2eb5   15m
webhook.validationwebhook     webhook-8584d54c6-whsz8_19b4e145-75fb-4c66-88ec-2cb6d9619dc0   15m
webhook.webhookcertificates   webhook-8584d54c6-cqj5x_9a999a43-9a5e-4f47-8142-b4fa612b3dfe   15m

If I kill just that one pod, only that leader changes:
kubectl get leases -nknative-serving
NAME                          HOLDER                                                         AGE
webhook.configmapwebhook      webhook-8584d54c6-jczjg_91013423-e113-40b8-9e1b-70caf77175e3   24m
webhook.conversionwebhook     webhook-8584d54c6-hltzh_e868e32e-2274-45e7-9145-5057a8acc807   24m
webhook.defaultingwebhook     webhook-8584d54c6-9h8zb_3aa39eaf-3fa6-4db4-8ef7-cde31fbc2eb5   24m
webhook.validationwebhook     webhook-8584d54c6-whsz8_19b4e145-75fb-4c66-88ec-2cb6d9619dc0   24m
webhook.webhookcertificates   webhook-8584d54c6-cqj5x_9a999a43-9a5e-4f47-8142-b4fa612b3dfe   24m

Looking at the logs for the new leader, it correctly global resyncs when it wins the election:
{"level":"info","ts":"2020-04-25T16:26:02.595Z","logger":"webhook","caller":"leaderelection/config.go:230","msg":"\"webhook-8584d54c6-jczjg_91013423-e113-40b8-9e1b-70caf77175e3\" has started leading \"webhook.configmapwebhook\"","commit":"6ec7f43"}
{"level":"info","ts":"2020-04-25T16:26:02.600Z","logger":"webhook","caller":"configmaps/configmaps.go:162","msg":"Webhook is valid","commit":"6ec7f43","knative.dev/traceid":"37f9e8d8-2455-48e6-9412-67965dbdf262","knative.dev/key":"config.webhook.serving.knative.dev"}
{"level":"info","ts":"2020-04-25T16:26:02.600Z","logger":"webhook","caller":"controller/controller.go:464","msg":"Reconcile succeeded. Time taken: 5.092617ms.","commit":"6ec7f43","knative.dev/traceid":"37f9e8d8-2455-48e6-9412-67965dbdf262","knative.dev/key":"config.webhook.serving.knative.dev"}

Our webhooks are singleton reconcilers (so they are a somewhat contrived case), but with the primed informer state we're caught back up in 5ms.  It'll be interesting to see this for proper global resyncs 😈
I've also set things up in a way that we could actually set/unset the client fields based on whether we are leader, which would act as a nice defense-in-depth against accidental mutations from non-leaders.
Right now this is clocking in at about ~300 LoC to change our 5 webhook reconcilers, including a bunch of random refactoring I'm likely going to try to break off independently since it's general goodness.  None of these reconcilers are using // +genreconciler yet either, and I think that unless folks want to opt-in we can make this require no boilerplate code via our codegen.

I'll put together a doc of some kind to organize thoughts here, and a more complete PoC if folks want to take it for a spin.

Ok, I've written up a sketch of what this would look like here.
I'll also toss it on the agenda for API WG Weds to discuss more f2f.

Done


Refactored tox.ini for fix

Refactored tox.ini for fix

Codecov Report

Merging #13 (a31b6b7) into develop (955241e) will increase coverage by 79.48%.
The diff coverage is 77.77%.

@@             Coverage Diff              @@
##           develop      #13       +/-   ##
============================================
+ Coverage         0   79.48%   +79.48%
============================================
  Files            0        5        +5
  Lines            0      156      +156
  Branches         0       32       +32
============================================
+ Hits             0      124      +124
- Misses           0       30       +30
- Partials         0        2        +2

Impacted Files
Coverage Δ

src/caishen_dashboard/dashboard.py
0.00% <0.00%> (ø)

..._dashboard/data_processing/technical_indicators.py
98.64% <100.00%> (ø)

src/caishen_dashboard/data_processing/stock.py
93.93% <0.00%> (ø)

src/caishen_dashboard/data_processing/constants.py
100.00% <0.00%> (ø)

src/caishen_dashboard/data_processing/errors.py
100.00% <0.00%> (ø)

See my first push, which failed due to flake8 being checked successfully


Breaking change on master

This used to work
    @upload = Upload.create!(resource_params)

With attributes passed being
{
 #...
 "attachment"=>
  {"id"=>
    "2162ef5ccc922cf071e81504c5cf08e60d135e7144887cb0565eb85ba021/Screen Shot 2016-01-25 at 15.16.39.png",
   "storage"=>"cache",
   "metadata"=>
    {"width"=>342,
     "height"=>348,
     "size"=>73681,
     "filename"=>"Screen Shot 2016-01-25 at 15.16.39.png",
     "mime_type"=>"image/png"}},
 }

Now I get
Shrine::Error: unknown version: "id"`
from: /Users/michal/.rvm/gems/ruby-2.2.1/bundler/gems/shrine-01f20b64ef4a/lib/shrine/plugins/versions.rb" line 105 in block in versions!

If I go back to earlier revision 3ab14cb1ad71e1254b025bf4ae721c3fed52a16f the code works.

Yes, this was actually one of the documented breaking changes that version 1.0.0 introduced (the mentioned commit was prior to version 1.0.0). Prior to that version, cached files could be accepted as a hash or a JSON string. However, I didn't consider that essential functionality, and it was introducing problems when I was trying to write a plugin for multiple file uploads, so I extracted it out into a plugin for easier maintenance.
To get the old behaviour, just do Shrine.plugin :parsed_json in your initializer. Alternatively you could just send the cached file data as a JSON string instead of a hash.

Thanks!


Terraform Failure due to Error: Provider produced inconsistent final plan in Application Placement

Hi there,
Thank you for opening an issue. Please note that we try to keep the Terraform issue tracker reserved for bug reports and feature requests. For general usage questions, please see: https://www.terraform.io/community.html.
Terraform Version
Run terraform -v to show the version. If you are not running the latest version of Terraform, please upgrade because your issue may have already been fixed.
terraform -v
Terraform v1.4.2
on linux_amd64

Affected Resource(s)
Please list the resources as a list, for example:

application

If this issue appears to affect multiple resources, it may be an issue with Terraform's core, so please mention this.
Terraform Configuration Files
terraform {
    required_providers {
        juju = {
            version = "~> 0.6.0"
            source = "juju/juju"
        }
    }
}

provider "juju" {
}

locals {
    series = "jammy"
    openstack_channel = "yoga/stable"
}

resource "juju_model" "ovb" {
    name ="ovb"

    cloud {
        name = "SOME_CLOUD_NAME"
        region = "SOME_CLOUD_REGION"
    }

}

resource "juju_machine" "hyperconverged" {
    count = 1
    model = juju_model.ovb.name
    series = local.series
    name = "hyperconverged-${count.index}"
    constraints = "tags=hyperconverged"
}

locals {
    hyperconverged_juju_ids = [for machine in juju_machine.hyperconverged: split(":", machine.id)[1]]
}

resource "juju_application" "vault" {
    model = juju_model.ovb.name
    name = "vault"
    charm {
        name = "vault"
        channel = "1.7/stable"
        series = local.series
    }

    config = {
        totally-unsecure-auto-unlock = "true"
        auto-generate-root-ca-cert = "true"
    }

    units = 1
    placement = "lxd:${local.hyperconverged_juju_ids[0]}"
}

Replace the SOME_CLOUD_NAME and SOME_CLOUD_REGION with real world values.
Debug Output
Please provider a link to a GitHub Gist containing the complete debug output: https://www.terraform.io/docs/internals/debugging.html. Please do NOT paste the debug output in the issue; just paste a link to the Gist.
Panic Output
If Terraform produced a panic, please provide a link to a GitHub Gist containing the output of the crash.log.
Expected Behavior
I expected Terraform to detect a difference in Placement from the plan-defined value of "lxd:0" and the value Juju returns for Placement - "0/lxd/0", but in the past Terraform did not seem to mind.
Actual Behavior
After upgrading to the 0.6.0 Terraform Juju provider, Terraform started failing on some Terraform operations with the following error:
Error: Provider produced inconsistent final plan
│
│ When expanding the plan for juju_application.ncc_mysql_router to include new values learned so far during apply, provider "registry.terraform.io/juju/juju" produced an invalid new value for .placement: was cty.StringVal("lxd:0"), but now
│ cty.StringVal("0/lxd/3").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.

Steps to Reproduce
Please list the steps required to reproduce the issue, for example:

terraform apply
Make a change to your Terraform plan.
Run terraform apply

Important Factoids
Are there anything atypical about your accounts that we should know? For example: Running in EC2 Classic? Custom version of OpenStack? Tight ACLs?
References
Are there any other GitHub issues (open or closed) or Pull Requests that should be linked here? For example:
I have a PR that fixes this problem by implementing DiffSuppressFunc in the Terraform Schema for the Application Resource. I am going to get that submitted right after submitting this issue.

It's mentioned in the auto update, but I submitted a PR to fix this issue I encounted: https://github.com/juju/terraform-provider-juju/pull/183

I abandoned the PR on this since I'm not sure I have the time to carry it to completion, and I was able to find a solution to the problem. I was able to solve my problem by using Terraform's lifecycle ignore_changes meta-argument to tell Terraform to ignore any changes to the value of placement where the changes were giving me issues.
In case anyone comes across this wondering exactly how I did that, I added this block to my Terraform resource declarations:
lifecycle {
        ignore_changes = [ placement, ]
    }

This is an issue to be addressed after resolving a few considerations. One being that placement directives provided by a user are different than those listed by juju. A user can provider lxd:0 and a container will be created on machine 0 with the is of 0/lxd/0 if it's the first container created on machine 0. If a user specifies 0/lxd/0, juju expects that machine to already exist.
Nor is there a requirement that the number of placements directives provided by a user equal the number of units, though it must be less than or equal.
Lastly, if the placement in a plan is reduced, can we correctly map to the unit to be removed?
Another bug, placement isn't updated after Updating a plan. e.g adding a unit.

Thanks for reopening this! I think the re-implementation of the Application resource with the Terraform Framework instead of SDKv2 opens up better ways to manage this problem.
One of the solutions I would like to explore long term with you and the folks on the team is some way to optionally model application units for users who need that capability. I get in a Kubernetes-focused world that probably is unnecessary, but in the machine-oriented world, like with Charmed OpenStack, being able to manage individual units would be really helpful. Right now, units are not part of the Terraform dependency graph, just the application.
One way to represent units would be to have a unit resource that maps to the add-unit, show-unit, and remove-unit, Juju commands. I have this unit resource concept written up in much more detail, and I can pass that along if this sounds like a worthwhile approach to consider.
I am also absolutely open to work with you on other ways to solve this. Thank you again for giving this another look!

@jadonn I like the idea, and thanks for offering to work with us. However, I think having a unit as a resource would have a nasty consequence of blending logic effects between terraform and juju. For instance, scale on an application would actually need to create new terraform resources (that's not necessarily in the config), which I'm not even sure how it would go.

#179


add: timeForNextPrayer()

since there's already a nextPrayer() method, why do we need this?
i am trying to keep the api similar between the java and Swift versions.


setup roxygen2

Infrastructure for adding inline documentation.

Addressed in https://github.com/imperialCHEPI/healthgpsrvis/issues/4


Add the ability to reorder messages sent between two nodes

The chaos testing framework requires the ability to reorder messages sent between two nodes. Add interface to allow custom code to implement such reordering. The chaos testing framework will access such feature from outside of the raftstore package.

Both this issue and #665 can be resolved by exposing a config for wrapping transport.Trans instances.


Update dependencies

This will also allow testing with latest Go (1.21) which came out after last release of this driver, and with latest Trino (425). We don't have to bump these versions anywhere, as we're using the latest tag in the CI.

Correction, trinodb/trino:latest still points to 424 as there was some issue with releasing the 425 Docker image.


where to use mpc model in asr example of aishell

hello, i go through run.sh in asr example of aishell, i find the trained mpc model hasn't been used anywhere;
I guess it's the method to use this mpc model by writing "pretrained_model": model_path in config files; but i find that pretrained_model is null in mtl_transformer_sp.json
what's wrong with me?

hello, i go through run.sh in asr example of aishell, i find the trained mpc model hasn't been used anywhere;
I guess it's the method to use this mpc model by writing "pretrained_model": model_path in config files; but i find that pretrained_model is null in mtl_transformer_sp.json
what's wrong with me?

Sorry for the late reply. You can fine-tune ASR with MPC by adding MPC config path to "pretrained_model:"
e.g:
"pretrained_model": "examples/asr/hkust/configs/mpc.json",

hello, i go through run.sh in asr example of aishell, i find the trained mpc model hasn't been used anywhere;
I guess it's the method to use this mpc model by writing "pretrained_model": model_path in config files; but i find that pretrained_model is null in mtl_transformer_sp.json
what's wrong with me?

Sorry for the late reply. You can fine-tune ASR with MPC by adding MPC config path to "pretrained_model:"
e.g:
"pretrained_model": "examples/asr/hkust/configs/mpc.json",


AddedModel::each() method for streaming results

Using all() or get() for fetching results loads the entire result set into memory in a Collection object. For large data sets, or low-resource environments, this isn't possible without running out of memory.
This new method each($callback) allows you to iterate through results, only loading 1 into memory at a time.

Why not use Model::chunk(1, function () { // .. });

Ah... wasn't aware of that method.
Yeah, I can't think of any situation where this would be more useful than chunk(). I'll close this PR then.


no video playback

Hello! Seems like a great project, but I'm having difficulty getting any video to play.
Example: https://imgur.com/a/uoT3sfP
Running it using npm start isn't showing any particular useful output, just an objc runtime warning.
$: npm start

><EMAIL_ADDRESS>start /Users/mhaney/Development/teslacam-browser
> electron .

Skip checkForUpdatesAndNotify because application is not packed
GVA info: Successfully connected to the Intel plugin, offline Gen95
objc[95275]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8ab213c8) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x112fcbf50). One of the two will be used. Which one is undefined.

Interesting...  When the app is running, do any errors show up in the Console window?
Instructions if needed...

Open Developer Tools (View -> Toggle Developer Tools)
Select the "Console" tab
Are any errors shown? (they'll probably appear in red text)

Yeah, there are some errors: https://imgur.com/a/xEUmSMD
Clicking play the first time gives Uncaught (in promise) DOMException: Failed to load because no supported source was found.
Clicking play a second time gives
Uncaught (in promise) DOMException: The element has no supported sources.
videos.forEach.v @ /Users/mhaney/Development/teslacam-browser/renderer-helpers.js:68
playPause.addEventListener @ /Users/mhaney/Development/teslacam-browser/renderer-helpers.js:66

Looking into this; thanks for letting me know!

Are you on hardware 2.5 or 3?  Wondering if there’s been a codec change since HW3...

HW3
On Wed, May 15, 2019, 7:58 AM Chris Cavanagh<EMAIL_ADDRESS>wrote:

Are you on hardware 2.5 or 3? Wondering if there’s been a codec change
since HW3...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/BobStrogg/teslacam-browser/issues/13?email_source=notifications&email_token=AAIILAVBZVEKUVYY3BBIVX3PVQQKHA5CNFSM4HMLJUP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVO6BIY#issuecomment-492691619,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIILARE7IZHGJCEZ4L3KT3PVQQKHANCNFSM4HMLJUPQ
.

A pattern is emerging (similar issue with another HW3 user).  Will debug and see what’s going on... 🤔

Added a new issue for this: #15

Closing for #15 it has some possible solutions as well.


PyTorch SageEncoder no longer double calculate embeddings for same node in minibatch.

No time delta for example graphsage.

https://github.com/microsoft/DeepGNN/actions/runs/2247866064


Nothing is showing up

I'm sure it's just me, but I'm not showing any drones.
Steps:

Cloned repo as of April 10, 2024
Connected board and port trying both esp8266 and esp32 dev boards
Successful build and push
Connected to ESP_RIDS wifi
Set lat and long to my location and saved
Set drones to 16 (also tried 1 and 3) and saved
clicked "Start Spoofing"
Console output showing:
Ready
EEPROM found, reusing old values...
Client Connected
Starting Spoofers
Started "Drone Scanner" app (as well as a few other apps)  in android with bluetooth and wifi on.
Walked around a bit in case the phone and esp were too close.
Nothing shows up.

If I unplug the esp and connect to wifi again, I see the settings were saved.

One common reason this happens is that the wifi module inside most smartphones are set to throttle wifi. You may have to disable this for the phone to pick up the spoofed drones. Typically, this is done through developer settings on the phone (this is usually uncomplicated and just requires pressing some buttons on the settings page on your phone but you'll have to Google how to do it for your particular model).
Try that, and let me know if it works. :)

As an aside, what detecting app are you using? I'll test this on my end as well.

I happen to be an Android developer, so turning that off was easy, thanks!
Good news.  It worked!
Bad news, so then I changed 1 drone to 16, and now nothing will show up again.  Even tried changing it back to 1.
The app I'm using that did work is Drone Scanner.

Typically, when spoofing on 16 drones, it takes a solid 5 minutes for the phone to pick up all the signals, even with wifi scan throttling off. And in between power cycles, it takes 2 minutes for the ESP to go from AP mode to broadcast mode (this is so there is an amount of time for the user to set settings).
I would say let it sit for ~10 minutes, and then check back to see if the drones are showing up. If it doesn't, then something else is probably afoot and I'll investigate.
Thanks for the report!

@kireol any luck?

Not yet.  I have tried it a few more times letting it sit for 10 minutes, but can't get it to show again.  Tried on both 8266 and 32.  Going to wipe and try again soon.  Work keeping me busy is all.

OK.  I finally had a chance to revisit.  The issue was with my phone.  It's a Samsung Galaxy S21 FE.  They just won't show up in Drone Scanner.
When I switched to a different Android device, the drones show up almost immediately.  Sorry for the false alarm.

No worries! Glad you got it sorted! :)


Severity reported on the scan ouput and on the CVE description differ

My Github action config filters on HIGH and CRITICAL severities:
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: rootfs
          scan-ref: /tmp/package-tmp/
          hide-progress: false
          ignore-unfixed: true
          format: table
          severity: CRITICAL,HIGH
          exit-code: 1

The ouput shows a High Severity CVE detection

The CVE description shows MEDIUM severity:  https://avd.aquasec.com/nvd/2012/cve-2012-6153/

That's interesting. Although in this case the result in AVD is correct (Medium) as it's based on NVD 2.0.
@DmitriyLewen would you know why Trivy is flagging this vulnerability as HIGH in the results?

Hello @fleroux514 @simar7
This happens because Trivy uses database severity - https://aquasecurity.github.io/trivy/v0.48/docs/scanner/vulnerability/#severity-selection
GitHub advisory database has HIGH severity for this CVE - https://github.com/advisories/GHSA-2x83-r56g-cv47
GitHub team make good work to update their advisories.
If you don't agree with this severity - you can open PR to change severity:

Hello @fleroux514 @simar7
This happens because Trivy uses database severity - https://aquasecurity.github.io/trivy/v0.48/docs/scanner/vulnerability/#severity-selection
GitHub advisory database has HIGH severity for this CVE - https://github.com/advisories/GHSA-2x83-r56g-cv47
GitHub team make good work to update their advisories.
If you don't agree with this severity - you can open PR to change severity:

Thanks, that's right. I forgot that GitHub is a severity provider and we override based on the providers/vendors recommendation.

FYI json format uses VendorSeverity field to understand which database was used to select severity for CVE.

Thanks for the explanation @DmitriyLewen .  Closing


When to update the version, match v14 of metadata

When to update the version, match v14 of metadata

Same question - just hit this issue working from your examples?
Is the project still active, or should I look for alternatives?

Unfortunately I still cannot find a time to add that, but if you can make a Pull Request with such changes I would really appreciate that. Thank you.

I have achieved the minimum realization of signing the transaction, and it is still being updated. Welcome to guide and exchange. https://github.com/hqwangningbo/sign-substrate-transaction-java

Can you tell me please, where can I find out the differences between the 12 and 14 versions of metadata?

Can you tell me please, where can I find out the differences between the 12 and 14 versions of metadata?

Sorry, I do not know the differences. You can only verify this yourself by calling the "Runtime /metadata" API with the height parameters.


Accessing state in App.js through Context API

It's not in the docs so I figured it out on my own. When a user logs in and reload, to persist the state generally we add the load user action in the useEffect hooks in the main App.js. While using Redux, loadUser action can be easily accessed.
App.js
import {lodUser}  from '../actions/auth';
store.dispatch(loadUser());

But while using Context API, how to access it? I came up with this solution:-
To access state, wrap the AuthState in index.js so that App.js can access the auth state.
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import AuthState from './context/auth/AuthState'

ReactDOM.render(
  <React.StrictMode>
    <AuthState>
      <App />
    </AuthState>
  </React.StrictMode>,
  document.getElementById('root')
);

Now App.js
  const authContext = useContext(AuthContext);

  const { loadUser } = authContext;

  useEffect(() => {
    loadUser();
  },[])

Load User Action
    const loadUser = async () => {
        const token = sessionStorage.getItem('token');

        if(!token){
            dispatch({
                type: ERROR
            })
        }
        setAuthToken(token);

        try {
            const res = await axios('/api/auth');

            dispatch({
                type: USER_LOADED,
                payload: res.data.data
            })

        } catch (err) {
           console.error(err);
        }
    }

Hey @inblack67, what's the context here?
Are you asking if this is correct or if we can add this to the docs or something else?

@rickhanlonii , the latter. You guys should add this to the docs or else provide a better solution if any.

@rickhanlonii
Pull Request Awaits to be merged.


Login failed, same issue as #23

Hi,
I have the same issue as #23. Temporary fail of login. I tried again after resetting my ip, but same issue.
It's running from ubuntu, without using the webserver php examplefile.php

Use this:
$snapchat = new Snapchat($username, $debug);
$snapchat->setGmailData($gEmail, $gPasswd);

$snapchat->login($password);

where $gEmail and  $gPasswd are your data of a gmail account. That will solve your issue.
Regards

Seems to work now, awesome!
Thanks for the fast response by the way :)

I don't know if I may post here, but i have this problem on my phone with any account

Did you use the correct logins for both gmail and Snapchat?
On Apr 30, 2015 12:48 PM, "ArneKnockaert"<EMAIL_ADDRESS>wrote:

I don't know if I may post here, but i have this problem on my phone with
any account
—
Reply to this email directly or view it on GitHub
https://github.com/mgp25/Snap-API/issues/85#issuecomment-97875665.

@ArneKnockaert download latest code and see wiki for more information. Its working 100%
Regards

@mgp25 please what's your email let me send my account details please help me my login as temporarily failed on snapchat for the past 6 days can't login into my snapchat.