WIP: Composability Take 2

This PR is the spike towards #4. I got far enough to see some of the obstacles that we might want to discuss before moving forward.

It takes substantial cognitive effort to keep track of what's happening when a class is defined vs in runtime when transitioning state. Any effort that we put towards making it clear what's executed in design time vs run time will go a long way towards making the code easier to understand and evolve.

Having constructors that transform user input to properties that are merged into the object complicated implementation considerably. It also makes it difficult to reason about how data should be formatted to be merged into state. I found it a lot easier to have no constructors for nested state. We might want to eliminate constructors to keep things simple.

We need a clear way to know what needs to be merged. I tried deducing it from target object, but it's difficult to know because some properties are on the prototype and others on the object. Prototype chain complicates this further because we need to accumulate all of the properties from the prototype chain.

I'm using hidden property on the object to start instance of micro states, but these properties are not really hidden. Ideally, we'd keep these in a closure but it's difficult to do programmatically.

One possible solution could be to have a babel plugin that takes a Microstate class and generates as ES6 class. It would give us an extra build step that could make 1-4 easier.

This handbook is very useful to understanding how to build a Babel plugin. Requiring a babel plugin can be a barrier to adoption. This is something that we should treat with caution.
There might be other ways to reduce complexity. We should look into those first.

It takes substantial cognitive effort to keep track of what's happening when a class is defined vs in runtime when transitioning state. Any effort that we put towards making it clear what's executed in design time vs run time will go a long way towards making the code easier to understand and evolve.

Agree, although I think that most of this will need to education around what the transitions hash actually is, and that it will end up as a method on the instance that will always return a new instance of the same microstate class no matter what, even if you don't return an instance from it. I think that is the lynch pin of the library and so we just have to hammer the point home in the README.

Having constructors that transform user input to properties that are merged into the object complicated implementation considerably. It also makes it difficult to reason about how data should be formatted to be merged into state. I found it a lot easier to have no constructors for nested state. We might want to eliminate constructors to keep things simple.

This makes a lot of sense. It occurs to me that when we declare the type of the content, we are effectively declaring a constructor for you, and so really, it seems like only in the very advanced cases (like declaring primitives) should users ever write a initialize transition.
Basically, I think that the only true constructor should be on the base Microstate object itself, and all it does is accept an object of attributes to assign to itself along with a list of overrides (to support ease of merging). Subclasses just declare their "structure" and then the actual constructor is generated for you.
For example, the Microstate constructor could look like this:
class Microstate {
  constructor(current, attrs) {
    Object.assign(this, current, attrs);
  }
}

// alternative one
export default Microstate({name: string, todos: list(TodoItem)}).extend({
});

// alternative two
export default Micostate.extend({
  structure: {
    name: string,
    todos: list(TodoItem)
  }
})

We need a clear way to know what needs to be merged. I tried deducing it from target object, but it's difficult to know because some properties are on the prototype and others on the object. Prototype chain complicates this further because we need to accumulate all of the properties from the prototype chain.

The properties that need to be merged are those that have previously been merged, as in those that would be assigned via Object.assign. I may be missing something here, so I'd probably have to look at the code.

the lynch pin
Just to clarify, the cognitive overhead is on the developer writing Microstates library (i.e. me and you 😄 ) With the right documentation, the idea of returning an instance is a clear rule and it'll be easy to explain to people. So we're all good there (I think).

structure property
I like the structure property in concept. We need that level of clarity, but maybe not that specific solution.

I may be missing something here, so I'd probably have to look at the code.
This becomes a lot easier if we say that we only merge microstates. This was tripping me up because some of our tests have properties on Microstate definition. We could allow for values to be passed into a declaration if we automatically turn it into a micro state.

WorkTodoList = TodoList.extend('WorkTodoList', {
          constructor(name = '', items = [])  {
            return {name, items};
          },

          get upperName() {
            return `☭ ${this.name.toUpperCase()}`;
          },

          due: 'today',

          transitions: {
            changeDue(current, due) {
              return {
                due: due
              }
            }
          }
        });

We could convert due to a string micro state on the class declaration.

Bye bye issue...


Add more information about the triggering object in the Task Context

In some cases, tasks might depend on the information stored in the triggering object (Pod, Deployment). Therefore, it would make sense to pass over information about these objects to the task execution context (e.g. annotations, labels, but not sure about the whole spec).
@thisthat, @grabnerandi: Do you have more ideas on which information this should be?

I think this should be revised when dealing with https://github.com/keptn/enhancement-proposals/pull/91.
Therefore, closing this for now.


Http::serveFile doesn't work when using HTTPS

Hi, I'm currently working on a HTTPS server using Pistache and found out that when using HTTPS, the function Http::serveFile will not send using SSL. It only send SSL packet when buffer type is raw. Here is what I found.
if (buffer.isRaw()) {
    auto raw = buffer.raw();
    auto ptr = raw.data().c_str() + totalWritten;

#ifdef PISTACHE_USE_SSL
    auto it = peers.find(fd);

    if (it == std::end(peers))
        throw std::runtime_error("No peer found for fd: " + std::to_string(fd));

    if (it->second->ssl() != NULL) {
        bytesWritten = SSL_write((SSL*)it->second->ssl(), ptr, len);
    }
    else {
#endif /* PISTACHE_USE_SSL */
        bytesWritten = ::send(fd, ptr, len, flags);
#ifdef PISTACHE_USE_SSL
    }
#endif /* PISTACHE_USE_SSL */
}
else {
    auto file = buffer.fd();
    off_t offset = totalWritten;
    bytesWritten = ::sendfile(fd, file, &offset, len);
}

Is there a patch to fix this? Thanks

I do not know if this will help, but you could force a raw buffer by using ::send, this way you can fiddle with Mime types and also get all the functionality of a proper response object.  I like the stream approach too, because at some point you're going to want to inspect the stream, e.g. to add tracking info, auto copyright stamp images etc.  all becomes possible, therefore ::sendFile for me if of very little use.
Example for stream approach to load a simple resource from disk e.g. and use the response object:
std::ifstream file_stream(res_path);
response.send(Pistache::Http::Code::Ok, std::string((std::istreambuf_iterator<char>(file_stream)),
    std::istreambuf_iterator<char>()));

Hey @tonylin0826. I've noticed the same problem. I just discovered your issue after posting https://github.com/oktal/pistache/issues/549#issuecomment-541979096. I can concur that all other client-server transactions seem to work fine, except for any that involve a code path to serveFile. My guess is the way it is implemented it isn't using OpenSSL correctly.


Support for Constant Access Format

New Feature
Priority: High
Description:
Enable access to collection, group, and test case-specific constants using a structured format like ${collection.group.tc.}, standardizing how constants are referenced across the application.

TESTED OK:
Tested version - Testman 3.2.5.dmg
https://jam.dev/c/0d8b387f-e99b-4cdd-8e56-ad70b3d2ee3e


do not process inline resource

Skip inline resource insertion, such as background-image: url('data:image/svg+xml;base64,PD94bWw...')

rework will handle inline resource automatically


Not able to retrieve the image from signaturepad in android.Getimage method not returing the stream properly.

Stream stm = signatureView.sig.GetImage(ImageFormatType.Png);
img.Source = ImageSource.FromStream(() => { return stm; });
stm is not properly recieved so source for image is not working.

This was a bug in that the stream was not being rewound.
Fixed in v1.5.


Option for reading between two offsets

I have tried to implement the syntax suggested in the discussion on issue #16.
$ hexyl --range 512:1024 # Means "start at 512th byte, read until byte 1024 (512 bytes)"
$ hexyl --range 512:+512 # Means "start at 512th byte, read 512 bytes"

$ hexyl --range +512:    # Means "start at 512th byte".

I did not add support for negative offsets simply because I do not see a simple way to implement it for Stdin. If required, I suppose it could be implemented with a buffering solution that reads M - N bytes into a buffer until it reaches the end of Stdin before passing it to a reader.
My solution differs from #43 by not modifying the Printer itself, merely the Reader that it receives. This means that it works just as well for Stdin as for a file. A consequence of this is that the bytes are no longer automatically "aligned" in the output, but that just might be what you want in this situation.
$ hexyl -r :+0x20 hexyl
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 7f 45 4c 46 02 01 01 00 ┊ 00 00 00 00 00 00 00 00 │•ELF•••0┊00000000│
│00000010│ 03 00 3e 00 01 00 00 00 ┊ 30 d1 02 00 00 00 00 00 │•0>0•000┊0×•00000│
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

$ hexyl -r 0x3:+0x20 hexyl
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000003│ 46 02 01 01 00 00 00 00 ┊ 00 00 00 00 00 03 00 3e │F•••0000┊00000•0>│
│00000013│ 00 01 00 00 00 30 d1 02 ┊ 00 00 00 00 00 40 00 00 │0•0000×•┊00000@00│
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

This is my first contribution of Rust code and I welcome suggestions that can help me improve! :)

Thank you very much for your contribution!
From a first glance, the changes look great, but I didn't have the time for a full review yet. Could be a few more days.

I'm going to close this for now, with #88 merged. Happy to reopen it if there is any further comments/progress.


support both X509Certificate and JsonWebKeySet at the same time

In the current security implementation, the user can choose X509Certificate or JsonWebKeySet. When we offer the http-sidecar, some customers want to manage the business endpoints with their OAuth 2.0 provider and admin endpoints with light-oauth2 or oauth-kafka. The admin endpoints will be used by the light-controller/light-portal to access the sidecar and they can be secured with a separate OAuth 2.0 provider.

 support both X509Certificate and JsonWebKeySet at the same time light-4j master


error: incompatible types: Class cannot be converted to Class<? extends Model>

Hi,
I'm trying to set a foreign key between two tables but I get the error in subject. More in detail:
First.class is like this:
@Table(databaseName = DB.NAME, tableName = "First")
public class First extends BaseModel {

    @Column
    @PrimaryKey
    String id;

    List<Second> list;

    public First() {

    }
}

and Second.class is like this:
@Table(databaseName = DB.NAME, tableName = "Second")
public class Second extends BaseModel {

    @Column
    String name;

    @Column
    @ForeignKey(saveForeignKeyModel = false, references = {@ForeignKeyReference(columnName = "first_Id", columnType = String.class, foreignColumnName = "id")})
    String firstId;

    public Second() {

    }
}

When I compile the code, I get the error in the method getCreationQuery() in the generated Second$Adapter.class :
public final class Second$Adapter extends ModelAdapter<Second> {

  ...

  @Override
  public String getCreationQuery() {
    return String.format("CREATE TABLE IF NOT EXISTS `Second`(`name` TEXT, first_Id` TEXT, FOREIGN KEY(`first_Id`) REFERENCES `%1s` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION );",FlowManager.getTableName(java.lang.String.class));
  }
}

The error does not occur if I remove @ForeignKey annotation.
Can anyone help me with this?
Thanks in advance.

UPDATE: found the error by myself. Sorry.


Upgraded ELK version to 6.1.1

Changed images address to "www.docker.elastic.co" because it is deprecated
https://hub.docker.com/_/kibana/ :
This image has been deprecated in favor of the official kibana image provided and maintained by elastic.co. The list of images available from Elastic can be found at www.docker.elastic.co. The images found here will receive no further updates once the 6.0.0 release is available upstream. Please adjust your usage accordingly.

Added ELK_TAG variable into .env file in order to change version for all required services in one place.

remove useless expose directives in docker-compose.yml file (port are already exposed. it is need only 12201 for logstash)

Hey @emalyi, thanks for your PR. Couple of questions:

Why comment out the logging for Kibana?
Why comment out the mounting of the kibana.yml?
Is that ES output in the 01-inputs.conf specifically for Filebeat?
How is it working with the outputs and logic in 70-outputs.conf?
And why is it not over there?


Bump Postgres to 11

Need to also port https://github.com/edgedb/postgres/commit/2ce8f4db75ea741bfbc3739d1648ba9942c13d19

It is ported. The submodule points to the edge_11 branch.


Move year to .dt.year, and other namespace-specific function

We'd originally decided not to bother with temporal (and other) namespaces, and just have .year be a column method, rather than .dt.year
I'm suggesting to go back on this decision, because of the risk of conflicts - I'll explain
pandas is adding nested datatypes (e.g. pyarrow struct https://github.com/pandas-dev/pandas/pull/54977 , and pyarrow list https://github.com/pandas-dev/pandas/pull/55777)
Some methods on those datatypes will clash with the column/dataframe ones. For example:

Column.get_value(2) means "get the value from the second row"
Column.list.get_value(2) means "for each row, get the second element in that row's list"

Likewise for Column.mean vs Column.list.mean - the former being a reduction, the latter a transformation (preserves input shape)
Presumably, we'll eventually have nested datatypes in the standard too?
So, I'd suggest we mirror existing dataframe libraries and have namespaces for functionality which is limited to certain datatypes:

.dt for temporal functions
.str for string manipulation functions
later, if/when we have nested datatypes, .list / .struct, and .cat for categorical

I think there are also argument to consider nested data types separately, and to have those kind of accessors there while not for other data types.
In contrast to primitive / non-nested data types, those nested data types will indeed have a whole category of different methods that specifically deal with their nested nature (access sub-fields, apply a scalar function on each element in the list, apply an aggregation across the list). That might indeed warrant an accessor, because I think the alternative would be to just prefix all those methods with for example list_ (list_mean, list_get, ..), and at that point an accessor indeed makes sense.
But personally I would say the same reasoning doesn't really apply to other data types (e.g. there haven't yet been any methods where we would consider prefixing with datetime_..?)


ci(Mergify): configuration update

This change has been made by @FilippoVissani from Mergify config editor.

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

5.1.0
GitHub release

Your semantic-release bot :package::rocket:


Support APOC merge functions

APOC has a lot of merge utility functions, give support to such functions in MAGE. https://neo4j.com/labs/apoc/4.1/overview/apoc.merge/

This is done, closing for now


fix LuceneQueryBuilder for "x = null" where x is numeric or boolean

This actually isn't a problem in 0.48 because the "= null" case is handled
during normalization or analysis. But it is a problem in 0.47 for "where x in
(null)" where this will result in a Range query from null to null which
matches everything

check StringQueryBuilder to avoid NPEs then ack


verifyKeyNewer() not working as expected

I'm using the following code:
$timestamp = Google2FA::verifyKeyNewer(Auth::user()->totp_secret, $request->otp_code, Auth::user()->last_login, 1);

if ($timestamp !== false) {
    dd("valid");
} else {
    dd("invalid");
}

To set the timestamp itself I used the following code (just for testing verifyKeyNewer()):
public function setTimestamp(){
    Auth::user()->update([
        'last_login' => Carbon::now(),
    ]);
    dd("done");
}

After setting the timestamp, I tried to enter a current TOTP code to the validate function above.
The timeframe is set to 1 as the login function too:
if($google2fa->verifyKey(Auth::user()->totp_secret, $request->otp_code, 1))

It says valid all the time, when using verifyKeyNewer() any idea where things go wrong?
I want to use this library, not the laravel package / bridge.

@jhoff maybe this is related to your problem too, isn't it?
See: https://github.com/antonioribeiro/google2fa/issues/158

The $timestamp variable is actually the timestamp divided with the key regeneration, so you would need to use the following code.
$keyRegen = 30; // 30 is the default

$timestamp = Google2FA::verifyKeyNewer(Auth::user()->totp_secret, $request->otp_code, Auth::user()->last_login / $keyRegen, 1);

if ($timestamp !== false) {
    // Here the $timestamp variable is already divided with key regen, so if you want to parse this timestamp, remember to multiply $timestamp with $keyRegen first
    dd("valid");
} else {
    dd("invalid");
}

The $timestamp variable is actually the timestamp divided with the key regeneration, so you would need to use the following code.
$keyRegen = 30; // 30 is the default

$timestamp = Google2FA::verifyKeyNewer(Auth::user()->totp_secret, $request->otp_code, Auth::user()->last_login / $keyRegen, 1);

if ($timestamp !== false) {
    // Here the $timestamp variable is already divided with key regen, so if you want to parse this timestamp, remember to multiply $timestamp with $keyRegen first
    dd("valid");
} else {
    dd("invalid");
}

My Solution(Laravel 8).
User Model Field: two_factor_time (timestamp default null)
2Fa Middleware:
if(session()->get('google2fa.otp_timestamp') || auth()->user()->two_factor_time){
    //redirect to 2fa route;
}
return $next($request);

2Fa Controller (show view):
if (session()->get('google2fa.otp_timestamp') && auth()->user()->two_factor_time) {
    //redirect to loggedin area
}
return view('2fa');

2Fa Controller (send/validate token):
$twoFactor = new Google2FA();
$user = User::find(auth()->user()->id);
$request->validate([
    'token' => ['required', 'digits:6',
        function ($attribute, $value, $fail) use ($twoFactor, $user) {
            $lastCheck = strtotime($user->two_factor_time) / 30;
            $timestamp = $twoFactor->verifyKeyNewer($user->two_factor_secret, $value, $lastCheck);
            if ($timestamp === false) {
                $fail('Invalid or expired Token');
            }else{
                $now = \Carbon\Carbon::now();
                session()->put('google2fa.otp_timestamp', $now->toDateTimeString());
                $user->update(['two_factor_time' => $now]);
            }
        }],
 ]);
//redirect user to secure area

I used a timestamp in the session and in the database to validate tokens already used before, because when logging out the session is destroyed, preventing the validation of tokens already used.
This way, if the DB field or the session field is null (or both), the middleware redirects the user to the 2FA page. The DB and session timestamp field must be defined for the user to access the secure area.

@zortje @rubensrocha I have tried dividing the unix timestamp by 30 as described in your post but the package still claims the code is incorrect. It simply doesn't accept any OTP's, both new or old.
I have verified the old timestamp value is accurate (and there are no timezone issues), could you advise how you got this working as I am not having much luck.

@imran0 there is that what @rubensrocha and @zortje said.
You must divide timestamp by 30. But if you change key regeneration you must use another number.
Best way to get actual number is use this:
$timeDiv = $this->google2fa->getKeyRegeneration();

And next when you use
$valid2Fa = $this->google2fa->verifyKeyNewer($user->google2fa_secret, $key, $user->google2fa_last_use/$timeDiv, $window);

it should works.
I don't know how looks yours timestamps format but I use Carbon::now()->timestamp which give me seconds since the Unix Epoch(1643290902) and it works.


Log upload missing details.

The help for diagnostic uploads is lacking some important details for the Command node.
What is the execution context, local system?
What restrictions are there, if any, on what executable can be run? Can it run powershell.exe?
Is there any timeout?
Inferring from %variable% style, is the process being started from cmd.exe?
If you have multiple Command nodes are they run sequentially? In guaranteed order?
https://docs.microsoft.com/en-us/windows/client-management/mdm/diagnosticlog-csp#diagnosticlog-csp-for-triggering-devices-to-upload-files-to-cloud

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

ID: a84b842f-150d-f006-0563-db5a0f01a64f
Version Independent ID: 7dd55cbe-abc2-9c33-3fef-843b87f26312
Content: DiagnosticLog CSP
Content Source: windows/client-management/mdm/diagnosticlog-csp.md
Product: w10
Technology: windows
GitHub Login: @ManikaDhiman
Microsoft Alias: dansimp

@lanatmwan - Thank you for submitting feedback.
I will get this issue over to the Win10 ITPro writing team for investigation.
Thank you for reporting and making the docs better. Much appreciated.
I made a note to request the team to update this when the work is complete.

Hello @lanatmwan, actually on the line:  is the actual command:
<Command HRESULT="-2147024637">%windir%\system32\mdmdiagnosticstool.exe -out c:\ProgramData\temp\</Command>

And there is more information on the links below:
https://docs.microsoft.com/windows/client-management/mdm/diagnose-mdm-failures-in-windows-10

@j0rt3g4 I think you may be responding to the wrong thread?

Ohh @lanatmwan  I don't think so... but if you think so you'll have your reasons :)
Probably we should start over, can you expand more about what you would like to see on the documentation?

The docs for DiagnosticLog CSP (linked in my original post here) shows it can run commands now via the  element as you noted. What the doc doesn't tell you is the details about what the capabilities/limitations of said command element are.
The most basic thing is what user context the command gets run in. I would presume its run as local system and is therefore elevated.
Next would be whether there are any blocked executables? Can you run powershell.exe from ?
What is the parent process that launches the command? Is it cmd.exe and one can expect other batch file commands/syntaxes like %variableNameToExpand% to work?  For instance, could I optionally run a command by putting an if statement?
<Command>if [%PROCESSOR_ARCHITECTURE%]==[AMD64] %windir%\system32\ipconfig.exe</Command>
If I run a command that for some reason doesn't exit, will it eventually time out and kill the command? If so, what is that timeout length?
If I have defined multiple Command elements, are they run sequentially?

Hello @mypil  Could you please add the author to know their thoughts about this one? (thank you in advance)

@ManikaDhiman - Can you please share your insights on this issue?
Thank you.
cc: @kenwith

Hi @mypil, I've reached out to the product team to provide guidance. I will update the status/doc as soon as I hear from them. Thanks!

@ManikaDhiman - We would like to follow up. Do you have any updates from the Product Team?
Thank you.

@mypil: No update yet. I will update this doc as soon as I get any input from them. Thanks for the follow up!

Hi @mypil, substantial content updates have been done to the DiagnosticLog CSP doc, including those that resolve the issue raised here. All the updates are now available in live doc. Hope this helps. Thanks!

@lanatmwan , @j0rt3g4 : The page has been updated 11/19/2019 (2 days ago, as of the time of this comment).
Can you confirm that the page now contains the requested information or the answers to your questions?

@lanatmwan @j0rt3g4 - From our understanding, the issue has been resolved. If you feel it hasn't been resolved, please re-open this issue.
Thank you for your contribution to make the docs better! Much appreciated!


Add webservices

To support webservices/soap stuff in -swarm.

Moved to https://github.com/wildfly-swarm/wildfly-config-api/issues/13


TSQL Reserved word Coloring

VSCode Version:  1.17.0
OS Version: Win10 Pro

Steps to Reproduce:

Create/Open a .sql file in Visual Studio Code
Write a SELECT statement that contains a 'CASE ','WHEN','ELSE','THEN','END'
'CASE ','WHEN','ELSE','THEN','END' don't have reserved word coloring applied to them

Happens with all themes that are bundled with the install.
Reproduces without extensions: Yes

duplicate of https://github.com/textmate/sql.tmbundle/issues/21


eosc cannot push a transaction

Currently, when we attempt to push a transaction it fails as below:
./eosc push message currency transfer '{"from":"currency","to":"tester","amount":50}' -s currency -s tester -p currency@active
status_code == 200: Error
: 3030003 tx_irrelevant_auth: irrelevant authority included
Message declared authorities it did not need: [{"account":"currency","permission":"active"}]
{"unused":[{"account":"currency","permission":"active"}],"message":{"code":"currency","type":"transfer","authorization":[{"account":"currency","permission":"active"},{"account":"currency","permission":"active"}],"data":"00000079b822651d00000000c84267a13200000000000000"}}
thread-0  chain_controller.cpp:926 process_message

This may be because the currency contract did not get properly set.


examples/biolatency: correct the name of operation 35

Bio request operation 35 is REQ_OP_DRV_OUT, and should be called 'drv_out' in the label. Unfortunately when I added it in a previous commit I duplicated the name of the previous entry so it was mis-labeled as 'drv_in'. This is especially bad as it could lead to label duplications in visible Prometheus metrics.

This is especially bad as it could lead to label duplications in visible Prometheus metrics.

It wouldn't, we accumulate timeseries with the label sets into one.


Use standard Authorization HTTP header

Authorization: Bearer
instead of X-Auth-Token it should be used Authorization: Bearer , see
https://tools.ietf.org/html/rfc6750#page-5
If Keyrock does not support it, it should, I recall that Wilma does as I requested it.
Probably you would need to update Wilma tutorial as well ;)

Hi @jmcanterafonseca
Currently, both Keyrock and Wilma support Authorization Bearer header.
Best regards

Example added to PEP Proxy tutorial: https://github.com/FIWARE/tutorials.PEP-Proxy/commit/36b05567bae60a97fd3d0cc6df6231b6b5e79d2f


Extremely optimize PNG image assets losslessly

Use Google's zopflipng for extreme lossless PNG image optimization. This optimization significantly reduced PNG file sizes while maintaining the image quality.

@justin-stephenson, looking at the code, ic_edit is the only icon with PNG in dpi-variant directories. A vector drawable is also available in drawable-anydpi. Do you know if it is a miss?
Other icons just like ic_add are only exisiting in drawable directory as a vector drawable.


Add version compatibility check

Currently we build against nomad-0.4.0 but due the fact that everything is REST it is possible to run UI with older or newer nomad-0.4.0 version. We need a way for UI to run a sanity check and error if versions mismatch.

Yes, this is critical to maintaining a good user experience. People will not always be able to upgrade to the latest version immediately.


Predictable backup output

Output of restic version
restic 0.9.6 compiled with go1.12.12 on linux/amd64
How did you run restic exactly?
Run with Python
env = { 'RESTIC_REPOSITORY': "s3:http://IP:9002/test", 'RESTIC_PASSWORD': '' }
cmd = 'restic backup --json test'
p = subprocess.run(cmd, env=env, stdout=subprocess.PIPE, encoding='UTF-8')
for line in p.stdout.splitlines():
    line = json.loads(line)

What backend/server/service did you use to store the repository?
Minio
Expected behavior
Always output exactly one status message of type summary.
Actual behavior
Sometimes (about 1% of the runs), multiple or none summary messages are returned.
Steps to reproduce the behavior
I just noticed this in my logs. I didn't find out the criteria when this happens exactly.
Do you have any idea what may have caused this?
Not really. Maybe some synchronization / multithreading problem?
Do you have an idea how to solve the issue?
No.
Did restic help you today? Did it make you happy in any way?
Apart from this issue, it runs smoothly so far!

Please be more specific, please edit the post above to include the messages that are working and show which ones are missing when it is not working. Be sure to clarify if it's all output from restic that doesn't show at times, or if it's just parts of it. I'm inclined to think this has something to do with Python rather than restic.

@rawtaz What do you want to know exactly? There is some number of json objects with message_type: status. I don't care about those. Then, I expect exactly one message with message_type: summary as the last line to be sent to stdout. Sometimes, there is no such message, sometimes there are two identical messages in the last two lines.

Perhaps I'm misunderstanding something, but if with the way you are running things you are getting certain output 99% of the times and not the other 1% of the times, can't you just show us exactly which output you are getting and not getting?

I didn't log the full output. When processing line by line, I skip the status messages and only add the other lines to a list. When a line can be parsed as json, it is stored as python object, otherwise as string.
When it's working, the output is a list with a single item containing a python object with message_type: summary. When it is not working, the list is either empty or two items with the summary object.

I just noted, sometimes, there is even a status message after the summary :open_mouth:

Please try to reproduce this problem without Python - i.e. with running restic directly.

Since I have neither time nor knowledge to translate the Python program to bash, further don't have the space and money to run an additional backup job regularly, there is no possibility for me to run this without Python. I guess this bug will live on in the software until someone digs it out in a couple of years again.

Well for whatever it's worth, the first step in isolating the issue is to determine if it happens without the Python involvement too, and the easiest way to do that is to run the restic commands manually. Since you are the only one that has access to the Python thing and the setup the problem occurs in, there's not much we can do without more debugging on your end. But sure, I understand you don't have the time etc for that now. I'm not entirely sure the problem is in restic though, it could just as well be in the Python code.

This is the part where restic is called (additionally, it calculates excludes, mounts devices, parses output, writes log files):
import json, subprocess
env = { 'RESTIC_REPOSITORY': "s3:http://IP:9002/test", 'RESTIC_PASSWORD': '' }
cmd = 'restic backup --json test'
p = subprocess.run(cmd, env=env, stdout=subprocess.PIPE, encoding='UTF-8')
out = []
for line in p.stdout.splitlines():
    line_json = json.loads(line)
    if line_json['message_type']=='status':
        continue
    out.append(line_json)
if len(out)==1:
    out = out[-1]
print(out['total_duration'])

I get an e-mail on exceptions. They are sent on the print() line: Sometimes out is [] (no summary message), sometimes it contains two status messages.
NOTE I know that I can use --quiet to suppress status messages, but sometimes I need them, but still want to print a nice summary to the log file.

Do you think you can modify the script to call restic in a way such that the output from restic is put into a log file (one for each run) besides the output also going to your script? That way we would investigate the complete output from restic when you're seeing the problem and compare it with a complete output from when the problem isn't showing.

I modified the script. Let's wait a few days for the problem to appear again.

I just hit the case where the summary message was sent twice.
The output is too long for Github comments (max 65536 characters). I uploaded it here instead.

I've been seeing these duplicate summary lines for a while as well - my bash script runs restic and sends the output of the json summary to a log.  I think this fairly recent PR was submitted to address the issue, but haven't had a chance to test, and I don't think it's in a release yet.
https://github.com/restic/restic/pull/2545
{
  "message_type": "summary",
  "files_new": 0,
  "files_changed": 0,
  "files_unmodified": 49180,
  "dirs_new": 0,
  "dirs_changed": 2,
  "dirs_unmodified": 0,
  "data_blobs": 0,
  "tree_blobs": 3,
  "data_added": 1358,
  "total_files_processed": 49180,
  "total_bytes_processed":<PHONE_NUMBER>43,
  "total_duration":<PHONE_NUMBER>53,
  "snapshot_id": "56ae882c"
}
{
  "message_type": "summary",
  "files_new": 0,
  "files_changed": 0,
  "files_unmodified": 49180,
  "dirs_new": 0,
  "dirs_changed": 2,
  "dirs_unmodified": 0,
  "data_blobs": 0,
  "tree_blobs": 3,
  "data_added": 1358,
  "total_files_processed": 49180,
  "total_bytes_processed":<PHONE_NUMBER>43,
  "total_duration":<PHONE_NUMBER>53,
  "snapshot_id": "56ae882c"
}

Thanks for your confirmation and link!
Further, I would expect the last status before the summary.

@PrplHaz4 Thanks for that!
@darkdragon-001 Can you try using the latest master build for a while and see if the problem is solved with that?

@rawtaz I replaced the binary with latest master build. Let's see what will happen :)

@darkdragon-001 Any updates on this issue?

With the binary from master a month ago, I couldn't notice any problems so far :smiley:

So let's close this issue for now. If the error shows up again, just complain :-) .

Sure, looking forward to see this in a release!


[Feature Request]: Superposition Prompting

Feature Description
Despite the successes of large language models (LLMs), they exhibit significant drawbacks, particularly when processing long contexts. Their inference cost scales quadratically with respect to sequence length, making it expensive for deployment in some real-world text processing applications, such as retrieval-augmented generation (RAG). Additionally, LLMs also exhibit the "distraction phenomenon", where irrelevant context in the prompt degrades output quality. To address these drawbacks, we propose a novel RAG prompting methodology, superposition prompting, which can be directly applied to pre-trained transformer-based LLMs without the need for fine-tuning. At a high level, superposition prompting allows the LLM to process input documents in parallel prompt paths, discarding paths once they are deemed irrelevant. We demonstrate the capability of our method to simultaneously enhance time efficiency across a variety of question-answering benchmarks using multiple pre-trained LLMs. Furthermore, our technique significantly improves accuracy when the retrieved context is large relative the context the model was trained on. For example, our approach facilitates a 93x reduction in compute time while improving accuracy by 43% on the NaturalQuestions-Open dataset with the MPT-7B instruction-tuned model over naive RAG.
https://arxiv.org/abs/2404.06910
https://github.com/apple/ml-superposition-prompting?tab=readme-ov-file
Reason
Quadratic scaling of inference cost:
The inference cost of LLMs scales quadratically with respect to sequence length.
This makes deployment expensive for real-world text processing applications, especially those involving long contexts.
The "distraction phenomenon":
LLMs suffer from a problem where irrelevant context in the prompt degrades the output quality.
This suggests that LLMs can be sensitive to noise or irrelevant information in the input, potentially leading to lower quality outputs.
Value of Feature
Advantages
Improved Efficiency: Demonstrates significant reduction in compute time across various question-answering benchmarks.
Enhanced Accuracy: Particularly effective when the retrieved context is large relative to the model's training context.
Versatility: Applicable to multiple pre-trained LLMs.
Case Study: NaturalQuestions-Open Dataset
Using the MPT-7B instruction-tuned model:
93x reduction in compute time
43% improvement in accuracy
Implications
This methodology addresses two critical challenges in LLM deployment:
The computational cost of processing long contexts
The negative impact of irrelevant information on output quality

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."


DTLS - multiple handshake at the same time

Testing the coaps feature

go run examples/dtls/server/main.go

it seems, that the server is only able to handle one DTLS handshake after the other.
Is that the intended behavior?

Hm. As I know I didn't add such limitation. Do you know where this restriction comes from (line)?

No, I didn't check the code (though I'm not too common with "go").
I did a short interoperability test with a java implementation (Californium) and was wondering, why I could successfully handshake peer by peer, but it fails, if I start the peers to do the handshake in parallel.

Is there a way to enable some more logging for the DTLS?
Maybe that could provide the hint in the right direction.

Hi for dtls you can set logget with trace level. Like:
	loggerFactory := logging.NewDefaultLoggerFactory()
	loggerFactory.DefaultLogLevel = logging.LogLevelTrace
	dtlsCfg.LoggerFactory = loggerFactory

@jkralik I've noticed the same behaviour at the latest version (v2.0.3). See the log below, with DTLS trace logs, where I've ran 5 test clients in paralell against one server. This is without using the goPool feature (related to #151), but I'm not sure whether that would change anything regarding to the DTLS handshake behaviour.
What I noticed is that the next handshake is only started after the previous one is completed. Search for the following two logs to see that behaviour.

conn.go:198: Handshake Completed - one handshake completed.
handshaker.go:147: [handshake:server] Flight 0: Preparing - start of the handshake.

I did notice that one requests seem to be handled while a next handshake is in progress. For this, see e.g. the session.go:111: Incoming message data and handler.go:21: Incoming POST /report request logs, which are from my an added log in the go-coap code and my handler and indicate a request is being handled ATM. The latter log is from my handler and is at the start of my handle function.
5 parallel clients with one server, DTLS trace logs enabled
dtls TRACE: 14:09:16.419595 handshaker.go:147: [handshake:server] Flight 0: Preparing
dtls TRACE: 14:09:16.419649 handshaker.go:147: [handshake:server] Flight 0: Sending
dtls TRACE: 14:09:16.419660 handshaker.go:147: [handshake:server] Flight 0: Waiting
dtls TRACE: 14:09:16.419735 flight0handler.go:79: [flight0Parse] -> flight2
dtls TRACE: 14:09:16.419745 handshaker.go:267: [handshake:server] Flight 0 -> Flight 2
dtls TRACE: 14:09:16.419752 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.419759 handshaker.go:147: [handshake:server] Flight 2: Preparing
dtls TRACE: 14:09:16.419767 handshaker.go:147: [handshake:server] Flight 2: Sending
dtls TRACE: 14:09:16.419786 conn.go:372: [handshake:server] -> HelloVerifyRequest (epoch: 0, seq: 0)
dtls TRACE: 14:09:16.419830 handshaker.go:147: [handshake:server] Flight 2: Waiting
dtls TRACE: 14:09:16.421647 flight2handler.go:42: [flight2Parse] -> flight4
dtls TRACE: 14:09:16.421681 handshaker.go:267: [handshake:server] Flight 2 -> Flight 4
dtls TRACE: 14:09:16.421689 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.421697 handshaker.go:147: [handshake:server] Flight 4: Preparing
dtls TRACE: 14:09:16.421877 handshaker.go:147: [handshake:server] Flight 4: Sending
dtls TRACE: 14:09:16.421893 conn.go:372: [handshake:server] -> ServerHello (epoch: 0, seq: 1)
dtls TRACE: 14:09:16.421906 conn.go:372: [handshake:server] -> TypeCertificate (epoch: 0, seq: 2)
dtls TRACE: 14:09:16.421915 conn.go:372: [handshake:server] -> ServerKeyExchange (epoch: 0, seq: 3)
dtls TRACE: 14:09:16.421923 conn.go:372: [handshake:server] -> CertificateRequest (epoch: 0, seq: 4)
dtls TRACE: 14:09:16.421930 conn.go:372: [handshake:server] -> ServerHelloDone (epoch: 0, seq: 5)
dtls TRACE: 14:09:16.421978 handshaker.go:147: [handshake:server] Flight 4: Waiting
dtls DEBUG: 14:09:16.434881 conn.go:722: CipherSuite not initialized, queuing packet
dtls DEBUG: 14:09:16.434928 conn.go:644: received packet of next epoch, queuing packet
dtls TRACE: 14:09:16.435013 conn.go:728: server: <- ChangeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.435032 handshaker.go:267: [handshake:server] Flight 4 -> Flight 6
dtls TRACE: 14:09:16.435039 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.435044 handshaker.go:147: [handshake:server] Flight 6: Preparing
dtls TRACE: 14:09:16.435059 handshaker.go:215: [handshake:server] -> changeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.435066 handshaker.go:147: [handshake:server] Flight 6: Sending
dtls TRACE: 14:09:16.435073 conn.go:372: [handshake:server] -> Finished (epoch: 1, seq: 6)
dtls TRACE: 14:09:16.435104 handshaker.go:147: [handshake:server] Flight 6: Finished
dtls TRACE: 14:09:16.435116 conn.go:198: Handshake Completed
dtls TRACE: 14:09:16.435187 handshaker.go:147: [handshake:server] Flight 0: Preparing
dtls TRACE: 14:09:16.435207 handshaker.go:147: [handshake:server] Flight 0: Sending
dtls TRACE: 14:09:16.435213 handshaker.go:147: [handshake:server] Flight 0: Waiting
dtls TRACE: 14:09:16.435263 flight0handler.go:79: [flight0Parse] -> flight2
dtls TRACE: 14:09:16.435269 handshaker.go:267: [handshake:server] Flight 0 -> Flight 2
dtls TRACE: 14:09:16.435274 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.435278 handshaker.go:147: [handshake:server] Flight 2: Preparing
dtls TRACE: 14:09:16.435283 handshaker.go:147: [handshake:server] Flight 2: Sending
dtls TRACE: 14:09:16.435289 conn.go:372: [handshake:server] -> HelloVerifyRequest (epoch: 0, seq: 0)
dtls TRACE: 14:09:16.435314 handshaker.go:147: [handshake:server] Flight 2: Waiting
dtls TRACE: 14:09:16.435504 flight2handler.go:42: [flight2Parse] -> flight4
dtls TRACE: 14:09:16.435521 handshaker.go:267: [handshake:server] Flight 2 -> Flight 4
dtls TRACE: 14:09:16.435528 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.435533 handshaker.go:147: [handshake:server] Flight 4: Preparing
dtls TRACE: 14:09:16.435691 handshaker.go:147: [handshake:server] Flight 4: Sending
dtls TRACE: 14:09:16.435707 conn.go:372: [handshake:server] -> ServerHello (epoch: 0, seq: 1)
dtls TRACE: 14:09:16.435719 conn.go:372: [handshake:server] -> TypeCertificate (epoch: 0, seq: 2)
dtls TRACE: 14:09:16.435728 conn.go:372: [handshake:server] -> ServerKeyExchange (epoch: 0, seq: 3)
dtls TRACE: 14:09:16.435734 conn.go:372: [handshake:server] -> CertificateRequest (epoch: 0, seq: 4)
dtls TRACE: 14:09:16.435740 conn.go:372: [handshake:server] -> ServerHelloDone (epoch: 0, seq: 5)
dtls TRACE: 14:09:16.435777 handshaker.go:147: [handshake:server] Flight 4: Waiting
2020/08/17 14:09:16.440131 session.go:111: Incoming message data 4802624c429a3d73de2dd705b67265706f7274113ced0724286478653872793a3e5dc38bc3bdc2a5c39cc2ad0e1d2d4ec2bfc3a648c3994958220ac388c3ba53c3931fc39cc290435c6920c29777d11301d4335f33ab94ff826764656661756c74838c3a001382e819030b3a00138eb93a00137bb91a0006114319160d1a0005d9f41a000694421832001832183398181a00d5a8fb191ec61a00d307501a00d5b2bd1a0005c5b71a000292321a000568991a00374161183200183118323a000154841903ee3a00015f533a000152a418c91875183b190a9018320018321833830a18221826
2020/08/17 14:09:16.440208 handler.go:21: Incoming POST /report request from <IP_ADDRESS>:43011
2020/08/17 14:09:16.440218 handler.go:30: Remote address '<IP_ADDRESS>' at port 43011
2020/08/17 14:09:16.440227 session.go:81: Response message data: 6000624c
dtls DEBUG: 14:09:16.442496 conn.go:722: CipherSuite not initialized, queuing packet
dtls DEBUG: 14:09:16.442536 conn.go:644: received packet of next epoch, queuing packet
dtls TRACE: 14:09:16.442616 conn.go:728: server: <- ChangeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.442634 handshaker.go:267: [handshake:server] Flight 4 -> Flight 6
dtls TRACE: 14:09:16.442640 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.442645 handshaker.go:147: [handshake:server] Flight 6: Preparing
dtls TRACE: 14:09:16.442659 handshaker.go:215: [handshake:server] -> changeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.442664 handshaker.go:147: [handshake:server] Flight 6: Sending
dtls TRACE: 14:09:16.442671 conn.go:372: [handshake:server] -> Finished (epoch: 1, seq: 6)
dtls TRACE: 14:09:16.442701 handshaker.go:147: [handshake:server] Flight 6: Finished
dtls TRACE: 14:09:16.442711 conn.go:198: Handshake Completed
dtls TRACE: 14:09:16.442777 handshaker.go:147: [handshake:server] Flight 0: Preparing
dtls TRACE: 14:09:16.442788 handshaker.go:147: [handshake:server] Flight 0: Sending
dtls TRACE: 14:09:16.442793 handshaker.go:147: [handshake:server] Flight 0: Waiting
dtls TRACE: 14:09:16.442841 flight0handler.go:79: [flight0Parse] -> flight2
dtls TRACE: 14:09:16.442848 handshaker.go:267: [handshake:server] Flight 0 -> Flight 2
dtls TRACE: 14:09:16.442852 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.442857 handshaker.go:147: [handshake:server] Flight 2: Preparing
dtls TRACE: 14:09:16.442861 handshaker.go:147: [handshake:server] Flight 2: Sending
dtls TRACE: 14:09:16.442866 conn.go:372: [handshake:server] -> HelloVerifyRequest (epoch: 0, seq: 0)
dtls TRACE: 14:09:16.442886 handshaker.go:147: [handshake:server] Flight 2: Waiting
2020/08/17 14:09:16.443025 session.go:111: Incoming message data 4802cb7d328ffc8132b9cfa6b67265706f7274113ced0724286478653872793a3e5dc38bc3bdc2a5c39cc2ad0e1d2d4ec2bfc3a648c3994958220ac388c3ba53c3931fc39cc290435c6920c29777d11301d4335f33ab94ff826764656661756c74838c3a001382e819030b3a00138eb93a00137bb91a0006114319160d1a0005d9f41a000694421832001832183398181a00d5a8fb191ec61a00d307501a00d5b2bd1a0005c5b71a000292321a000568991a00374161183200183118323a000154841903ee3a00015f533a000152a418c91875183b190a9018320018321833830a18221826
2020/08/17 14:09:16.443075 handler.go:21: Incoming POST /report request from <IP_ADDRESS>:53028
2020/08/17 14:09:16.443083 handler.go:30: Remote address '<IP_ADDRESS>' at port 53028
2020/08/17 14:09:16.443090 session.go:81: Response message data: 6000cb7d
dtls TRACE: 14:09:16.443128 flight2handler.go:42: [flight2Parse] -> flight4
dtls TRACE: 14:09:16.443140 handshaker.go:267: [handshake:server] Flight 2 -> Flight 4
dtls TRACE: 14:09:16.443145 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.443149 handshaker.go:147: [handshake:server] Flight 4: Preparing
dtls TRACE: 14:09:16.443281 handshaker.go:147: [handshake:server] Flight 4: Sending
dtls TRACE: 14:09:16.443293 conn.go:372: [handshake:server] -> ServerHello (epoch: 0, seq: 1)
dtls TRACE: 14:09:16.443305 conn.go:372: [handshake:server] -> TypeCertificate (epoch: 0, seq: 2)
dtls TRACE: 14:09:16.443313 conn.go:372: [handshake:server] -> ServerKeyExchange (epoch: 0, seq: 3)
dtls TRACE: 14:09:16.443320 conn.go:372: [handshake:server] -> CertificateRequest (epoch: 0, seq: 4)
dtls TRACE: 14:09:16.443325 conn.go:372: [handshake:server] -> ServerHelloDone (epoch: 0, seq: 5)
dtls TRACE: 14:09:16.443354 handshaker.go:147: [handshake:server] Flight 4: Waiting
dtls DEBUG: 14:09:16.451752 conn.go:722: CipherSuite not initialized, queuing packet
dtls DEBUG: 14:09:16.451792 conn.go:644: received packet of next epoch, queuing packet
dtls TRACE: 14:09:16.451867 conn.go:728: server: <- ChangeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.451884 handshaker.go:267: [handshake:server] Flight 4 -> Flight 6
dtls TRACE: 14:09:16.451892 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.451897 handshaker.go:147: [handshake:server] Flight 6: Preparing
dtls TRACE: 14:09:16.451912 handshaker.go:215: [handshake:server] -> changeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.451917 handshaker.go:147: [handshake:server] Flight 6: Sending
dtls TRACE: 14:09:16.451923 conn.go:372: [handshake:server] -> Finished (epoch: 1, seq: 6)
dtls TRACE: 14:09:16.451955 handshaker.go:147: [handshake:server] Flight 6: Finished
dtls TRACE: 14:09:16.451966 conn.go:198: Handshake Completed
dtls TRACE: 14:09:16.452031 handshaker.go:147: [handshake:server] Flight 0: Preparing
dtls TRACE: 14:09:16.452041 handshaker.go:147: [handshake:server] Flight 0: Sending
dtls TRACE: 14:09:16.452046 handshaker.go:147: [handshake:server] Flight 0: Waiting
dtls TRACE: 14:09:16.452138 flight0handler.go:79: [flight0Parse] -> flight2
dtls TRACE: 14:09:16.452147 handshaker.go:267: [handshake:server] Flight 0 -> Flight 2
dtls TRACE: 14:09:16.452152 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.452156 handshaker.go:147: [handshake:server] Flight 2: Preparing
dtls TRACE: 14:09:16.452161 handshaker.go:147: [handshake:server] Flight 2: Sending
dtls TRACE: 14:09:16.452166 conn.go:372: [handshake:server] -> HelloVerifyRequest (epoch: 0, seq: 0)
dtls TRACE: 14:09:16.452188 handshaker.go:147: [handshake:server] Flight 2: Waiting
dtls TRACE: 14:09:16.452401 flight2handler.go:42: [flight2Parse] -> flight4
dtls TRACE: 14:09:16.452416 handshaker.go:267: [handshake:server] Flight 2 -> Flight 4
dtls TRACE: 14:09:16.452422 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.452427 handshaker.go:147: [handshake:server] Flight 4: Preparing
dtls TRACE: 14:09:16.452566 handshaker.go:147: [handshake:server] Flight 4: Sending
dtls TRACE: 14:09:16.452576 conn.go:372: [handshake:server] -> ServerHello (epoch: 0, seq: 1)
dtls TRACE: 14:09:16.452587 conn.go:372: [handshake:server] -> TypeCertificate (epoch: 0, seq: 2)
dtls TRACE: 14:09:16.452594 conn.go:372: [handshake:server] -> ServerKeyExchange (epoch: 0, seq: 3)
dtls TRACE: 14:09:16.452600 conn.go:372: [handshake:server] -> CertificateRequest (epoch: 0, seq: 4)
dtls TRACE: 14:09:16.452605 conn.go:372: [handshake:server] -> ServerHelloDone (epoch: 0, seq: 5)
dtls TRACE: 14:09:16.452639 handshaker.go:147: [handshake:server] Flight 4: Waiting
2020/08/17 14:09:16.453259 session.go:111: Incoming message data 4802df1696a66b6d6f24c810b67265706f7274113ced0724286478653872793a3e5dc38bc3bdc2a5c39cc2ad0e1d2d4ec2bfc3a648c3994958220ac388c3ba53c3931fc39cc290435c6920c29777d11301d4335f33ab94ff826764656661756c74838c3a001382e819030b3a00138eb93a00137bb91a0006114319160d1a0005d9f41a000694421832001832183398181a00d5a8fb191ec61a00d307501a00d5b2bd1a0005c5b71a000292321a000568991a00374161183200183118323a000154841903ee3a00015f533a000152a418c91875183b190a9018320018321833830a18221826
2020/08/17 14:09:16.453332 handler.go:21: Incoming POST /report request from <IP_ADDRESS>:56459
2020/08/17 14:09:16.453344 handler.go:30: Remote address '<IP_ADDRESS>' at port 56459
2020/08/17 14:09:16.453353 session.go:81: Response message data: 6000df16
dtls DEBUG: 14:09:16.461357 conn.go:722: CipherSuite not initialized, queuing packet
dtls DEBUG: 14:09:16.461402 conn.go:644: received packet of next epoch, queuing packet
dtls TRACE: 14:09:16.461476 conn.go:728: server: <- ChangeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.461491 handshaker.go:267: [handshake:server] Flight 4 -> Flight 6
dtls TRACE: 14:09:16.461496 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.461501 handshaker.go:147: [handshake:server] Flight 6: Preparing
dtls TRACE: 14:09:16.461523 handshaker.go:215: [handshake:server] -> changeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.461528 handshaker.go:147: [handshake:server] Flight 6: Sending
dtls TRACE: 14:09:16.461534 conn.go:372: [handshake:server] -> Finished (epoch: 1, seq: 6)
dtls TRACE: 14:09:16.461562 handshaker.go:147: [handshake:server] Flight 6: Finished
dtls TRACE: 14:09:16.461571 conn.go:198: Handshake Completed
dtls TRACE: 14:09:16.461635 handshaker.go:147: [handshake:server] Flight 0: Preparing
dtls TRACE: 14:09:16.461645 handshaker.go:147: [handshake:server] Flight 0: Sending
dtls TRACE: 14:09:16.461649 handshaker.go:147: [handshake:server] Flight 0: Waiting
dtls TRACE: 14:09:16.461692 flight0handler.go:79: [flight0Parse] -> flight2
dtls TRACE: 14:09:16.461697 handshaker.go:267: [handshake:server] Flight 0 -> Flight 2
dtls TRACE: 14:09:16.461701 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.461705 handshaker.go:147: [handshake:server] Flight 2: Preparing
dtls TRACE: 14:09:16.461710 handshaker.go:147: [handshake:server] Flight 2: Sending
dtls TRACE: 14:09:16.461715 conn.go:372: [handshake:server] -> HelloVerifyRequest (epoch: 0, seq: 0)
dtls TRACE: 14:09:16.461734 handshaker.go:147: [handshake:server] Flight 2: Waiting
dtls TRACE: 14:09:16.462110 flight2handler.go:42: [flight2Parse] -> flight4
dtls TRACE: 14:09:16.462125 handshaker.go:267: [handshake:server] Flight 2 -> Flight 4
dtls TRACE: 14:09:16.462130 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.462135 handshaker.go:147: [handshake:server] Flight 4: Preparing
dtls TRACE: 14:09:16.462271 handshaker.go:147: [handshake:server] Flight 4: Sending
dtls TRACE: 14:09:16.462282 conn.go:372: [handshake:server] -> ServerHello (epoch: 0, seq: 1)
dtls TRACE: 14:09:16.462289 conn.go:372: [handshake:server] -> TypeCertificate (epoch: 0, seq: 2)
dtls TRACE: 14:09:16.462298 conn.go:372: [handshake:server] -> ServerKeyExchange (epoch: 0, seq: 3)
dtls TRACE: 14:09:16.462304 conn.go:372: [handshake:server] -> CertificateRequest (epoch: 0, seq: 4)
dtls TRACE: 14:09:16.462309 conn.go:372: [handshake:server] -> ServerHelloDone (epoch: 0, seq: 5)
dtls TRACE: 14:09:16.462340 handshaker.go:147: [handshake:server] Flight 4: Waiting
2020/08/17 14:09:16.466963 session.go:111: Incoming message data 4802459c80897ab2e5b7cf3eb67265706f7274113ced0724286478653872793a3e5dc38bc3bdc2a5c39cc2ad0e1d2d4ec2bfc3a648c3994958220ac388c3ba53c3931fc39cc290435c6920c29777d11301d4335f33ab94ff826764656661756c74838c3a001382e819030b3a00138eb93a00137bb91a0006114319160d1a0005d9f41a000694421832001832183398181a00d5a8fb191ec61a00d307501a00d5b2bd1a0005c5b71a000292321a000568991a00374161183200183118323a000154841903ee3a00015f533a000152a418c91875183b190a9018320018321833830a18221826
2020/08/17 14:09:16.467040 handler.go:21: Incoming POST /report request from <IP_ADDRESS>:45144
2020/08/17 14:09:16.467053 handler.go:30: Remote address '<IP_ADDRESS>' at port 45144
2020/08/17 14:09:16.467065 session.go:81: Response message data: 6000459c
dtls DEBUG: 14:09:16.470029 conn.go:722: CipherSuite not initialized, queuing packet
dtls DEBUG: 14:09:16.470081 conn.go:644: received packet of next epoch, queuing packet
dtls TRACE: 14:09:16.470166 conn.go:728: server: <- ChangeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.470183 handshaker.go:267: [handshake:server] Flight 4 -> Flight 6
dtls TRACE: 14:09:16.470190 handshaker.go:273: [handshake] handshakePreparing
dtls TRACE: 14:09:16.470195 handshaker.go:147: [handshake:server] Flight 6: Preparing
dtls TRACE: 14:09:16.470210 handshaker.go:215: [handshake:server] -> changeCipherSpec (epoch: 1)
dtls TRACE: 14:09:16.470216 handshaker.go:147: [handshake:server] Flight 6: Sending
dtls TRACE: 14:09:16.470223 conn.go:372: [handshake:server] -> Finished (epoch: 1, seq: 6)
dtls TRACE: 14:09:16.470256 handshaker.go:147: [handshake:server] Flight 6: Finished
dtls TRACE: 14:09:16.470266 conn.go:198: Handshake Completed
2020/08/17 14:09:16.470726 session.go:111: Incoming message data<PHONE_NUMBER>bd9b04c8207c1eb67265706f7274113ced0724286478653872793a3e5dc38bc3bdc2a5c39cc2ad0e1d2d4ec2bfc3a648c3994958220ac388c3ba53c3931fc39cc290435c6920c29777d11301d4335f33ab94ff826764656661756c74838c3a001382e819030b3a00138eb93a00137bb91a0006114319160d1a0005d9f41a000694421832001832183398181a00d5a8fb191ec61a00d307501a00d5b2bd1a0005c5b71a000292321a000568991a00374161183200183118323a000154841903ee3a00015f533a000152a418c91875183b190a9018320018321833830a18221826
2020/08/17 14:09:16.470796 handler.go:21: Incoming POST /report request from <IP_ADDRESS>:48948
2020/08/17 14:09:16.470806 handler.go:30: Remote address '<IP_ADDRESS>' at port 48948
2020/08/17 14:09:16.470814 session.go:81: Response message data: 60003233

I've created my own DTLSListener to workaround this issue for the time being. In this I just create a whole bunch of goroutines for the amount of handshakes I want to handle concurrently.
Attached is this workaround, which uses 1000 goroutines. @boaks maybe this will help you as well for the time being.
dtls-listener.zip

@boaks Yeah, just copy the file somewhere in your sources. Then, instead of calling coap.ListenAndServeDTLS you now call the StartDTLSListener function. I'm using a couple of extra arguments, like expiration but you can remove those if you don't need them. By calling StartDTLSListener, you use the DTLS listener from the attached file and thus use the listeners in N goroutines.

Thanks!
With the dtls-listener I'm able to execute dtls handshakes in parallel.

We also face this issue. From taking a look at the code, I would spawn the go routine after the accept and not hard limit the number of routines to 1.000. Anyway we probably can share the code if we find more scalable solution :)


Docs for continuing aborted runs

It would be great to get some documentation on how to restart failed runs.
I started my BO, but at some point a config was chosen that didn't fit on the GPU, so it crashed. I realized I need to set max_failures larger, but I don't know how to reuse the experiments that were already run. Running with the same tuner name seems to make the tuner aware of the previous runs but it doesn't seem to properly continue from there.

Hi Andreas,
I agree this is a great suggestion, we will add an example in the doc.
To answer your question, the tuner is regularly checkpointed (if you let the default options of the Tuner) so you can resume a tuning by loading its checkpoint:
from syne_tune.experiments import load_experiment
from syne_tune import StoppingCriterion

# Loads a previous experiment, sets `load_tuner` to True to deserialize the Tuner
tuning_experiment = load_experiment("plot-results-demo-2023-10-10-07-27-48-235", load_tuner=True)

# Update stop criterion to run the tuning a couple more
tuner = tuning_experiment.tuner
tuner.stop_criterion = StoppingCriterion(max_num_trials_started=100)
tuner.run()

See screenshot for resuming a previous example:

Note that the tuner is serialized with dill, so this should only be done if you trust the file.

Awesome, that's easy and makes sense, but also would be good to call out in the docs :)

Oh I got one more follow-up: Let's say I want to re-use experiments with a different tuner. Is that also possible? Say I want to expand a parameter range, or maybe vary one more parameter. It seems silly to start from scratch then.

Awesome, that's easy and makes sense, but also would be good to call out in the docs :)

Completely agree, I am planning to add a FAQ example (you are not the first person to ask :-)).

Oh I got one more follow-up: Let's say I want to re-use experiments with a different tuner. Is that also possible? Say I want to expand a parameter range, or maybe vary one more parameter. It seems silly to start from scratch then.

Here the problem would be more dependent on the scheduler you are using. Conceptually, it should work for everything that looks like random-search (and ASHA), but it is not tested and I am not sure which scheduler would work in this mode.
There was this paper https://arxiv.org/abs/2010.13117 that proposed some strategies for this problem but this problem is well studied I would say.

Are you saying it's not a well-studied problem?
The general case could get arbitrarily complicated, but I'm mostly interested in the case where the true function stays the same, but maybe parameters of the search or the domain of the function change.
In these settings, it should be possible to re-use old data (potentially filling in missing values in the search space, let's say we fixed super_duper_option=True before and now we vary it, we would need to inform the scheduler that the previous points correspond to super_duper_option=True since that wasn't included in the search space.
Re-using previous runs would lead to a different sampling bias but hopefully the acquisition function can compensate for that?
If the true function changes, say you change the dataset or model in some way, that seems much more trickier and I wasn't really asking about that.

one more note for just restarting the tuner: I would add to the docs to recommend backing up the tuner before restarting. I just did ctrl-c after reloading and the file got corrupted.

One related thing that would be useful is knowing what can be changed and how if a tuner is loaded.
Let's say my tuner crashed cause my hard drive was full, so now I want to restart it and enable the automatic checkpoint removal. It's not entirely clear to me how to do that. I tried
tuner = load_experiment(sys.argv[1], load_tuner=True).tuner
tuner.trial_backend.delete_checkpoints = True
tuner.scheduler.early_checkpoint_removal_kwargs = {"max_num_checkpoints": 80}
tuner.scheduler._initialize_early_checkpoint_removal({"max_num_checkpoints": 80})
tuner.run()

but I don't think that had the desired effect?

This is a good point. Right now, the example modify some internals to update the configuration space but ideally we would have clear setters methods with tests and list the properties that can be changed.
For now, I believe it makes sense to allow user to perform those modifications in case they want to experiment something (for instance your case of resuming tuning while changing deleting checkpoints option) and add those features as soon as we have multiple users asking for them.
Regarding your change, I think it does the right thing but @mseeger would be the best person to confirm.

Btw, figuring out which aspects of a model can be changed at which state of training is something scikit-learn hasn't even figured out yet, it's definitely not easy to solve in general.
I think this specific one is quite relevant since it's on the natural progression path of a new user trying to make things work, and the fact that the harddrive is full probably means they invested quite a bite of compute already that they'd like to reuse.

You are asking for a lot here. You can try to add tuner._initialize_early_checkpoint_removal() before tuner.run() above, see whether this works. Most likely, it will not. The feature is based on a callback, which has a state, depending on what happened during the experiment. It would be very difficult to recreate this state based on checkpoints written during an experiment when the feature was not enabled.
What may work, is to enable the removal feature up front, but with a large max_num_checkpoints. Maybe in this case, the callback can be amended (i.e., max_num_checkpoints can be lowered) when restarting.

Yeah makes sense that that's complex to support. It might not be worth the hassle. Another option would be to do what you suggest as second option by default. My issue, and maybe that of other new users, is that I didn't realize how quickly that would become an issue. Though your tutorial does point it out as an issue, so you could also just say that was user error.


support for surfaces without textures

It would be great, if you could switch off textures in view configuration.
surfaces.[texture] = [] could be something like surfaces.[texture] = None
Same applies for raster free layers
e.g.
    "view": {

        "surfaces": {
            "ev1": None,
            "krnov": None },

        "freeLayers": {

            "melown-mapzen-roads":  {
                "style": "johns-own-mapzen-style"
            },

            "melown-mapzen-places": {},

            "seznam-cr-dem": {
                "boundLayers": ["melown-cuzk-cadastral-parcels"]
            }
        }
    }
}

Surfaces without internal texture (e.g. DTMs) and no assigned bound-layer are now displayed as shaded mesh. For surfaces with internal texture (e.g. city models) there is no plan to accommodate turning off the texture in view. It can be done on frontend if needed.
The use-case of having lightweight building data is better solved using LOD2 extracted buildings.


The value of INV_VIEW_MATRIX in double build version is different from usual

Tested versions
4.3.dev [71699e08c9df78b7203fa4ef9cede28e995d6ace]
System information
Windows10[22H2] - godot.windows.editor.dev.double.x86_64.exe - Vulkan(Forward+)
Issue description
The INV_VIEW_MATRIX value is different in double build version, it looks wrong.
double build: godot.windows.editor.dev.double.x86_64.exe
regular build: godot.windows.editor.dev.x86_64.exe
Use Nsight Graphics 2024.1.0, Get the render info, I see the INV_VIEW_MATRIX is different in double version.
the regular version:

the double version:

Steps to reproduce

use scons platform=windows dev_build=yes precision=double build a double version and scons platform=windows dev_build=yes build a regular version.
create a scene, place some mesh.
use this shader for screen quad mesh (postprocess):

shader_type spatial;
render_mode unshaded;

uniform sampler2D DepthTex : hint_depth_texture;

void vertex() {
	// Called for every vertex the material is visible on.
	POSITION = vec4(VERTEX.xy, 1.0, 1.0);
}

void fragment() {
	// Called for every pixel the material is visible on.
	float depth_ndc = texture(DepthTex, SCREEN_UV).x;
	vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth_ndc);
	vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
	view.xyzw /= view.w;
	vec4 world = INV_VIEW_MATRIX * view;
	ALBEDO = world.xyz;
}

run scene with double version and regular version, the two render results are different:

the scene:

regular:

double:

Minimal reproduction project (MRP)
inv_view_test.zip

I guess it's because of the extra minus sign here, but after the modification, the editor window screen will be reversed.

Thank you for reporting, consolidating in:

https://github.com/godotengine/godot/issues/85711

See there for more details, if you think something was missed about this and it's not the same issue, please comment here and it can be reopened

@Khasehemwy Can you test https://github.com/godotengine/godot/pull/93108 and confirm it it fixes the problem you are seeing?

@Khasehemwy Can you test #93108 and confirm if it fixes the problem you are seeing?

Yes, it fixed. I also deleted the minus sign before, but did not modify the glsl code, it causes the editor  window to look flipped.


[WIP] Fix missing comps in CTF data.

Closes https://github.com/mne-tools/mne-python/issues/4108
This only fixes missing columns. I didn't want to change the rows as I don't quite understand how it is possible to have these missing in the first place.

Codecov Report

Merging #4174 into master will increase coverage by 0.13%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #4174      +/-   ##
==========================================
+ Coverage   86.02%   86.15%   +0.13%
==========================================
  Files         354      354
  Lines       63933    63937       +4
  Branches     9739     9739
==========================================
+ Hits        54999    55088      +89
+ Misses       6245     6156      -89
- Partials     2689     2693       +4

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 8207646...b6a4a04. Read the comment docs.

can you see how fieldtrip or brainstorm handle this?
maybe @robertoostenveld knows... see #4108

After going through the FieldTrip codebase I found that in case of CTF data the grad structure included in fieldtrip contain a key as balance to make it consistent with the data.
Generally grad.balance look like this -
 G1BR: [1x1 struct]   // first order balancing
 G2BR: [1x1 struct]   // second order balancing
 G3BR: [1x1 struct]   // third order balancing
 current: 'none'         // no balancing

But when we use ArtifactMEG dataset than G3BR field is not present, instead this message is shown-
getRawCTFBalanceCoefs : Sensor Q11 appears in ds.res4.scrr, but not in ds.res4.chanNames

Warning: cannot read balancing coefficients for G3BR
> In ft_read_header (line 556)

I think instead of discarding whole balancing scheme, we should remove the culprit channel as done in this PR.
Also a warning must be shown indicating the problem and the corresponding action taken because it's a problem with dataset not with the reader.

thanks for taking a close look !
can you check/compare the outputs of the readers using this branch and
fieldtrip?

hi @agramfort,
please conform did you mean to check the output raw,epoch,evoked data.
Thanks

I meant check the numerical values after reading the file. What you get by
doing raw[:, :]

Sorry for late reply. I tried to compare the raw data but found the cardinality is not same  in both places.
Data in filedtrip comes divided into trials and have form n_trial X n_channel X trial_time and for ArtifactMEG.ds data it is 76 * 176 * 12000 equivalent to 176 * 912,000 in 2D.
But in MNE we are having 176 * 900,000 raw data. The difference is exactly equal to one trial of length 12000.
On the other hand I had not found any issue with other data set like Subject01.ds of fieldtrip. I'm trying to figure out the actual cause but it would be excellent if someone can provide any pointers.

It's probably because of the dropped comps. I'll look into it.

Looks like this has nothing to do with the comps. It actually looks like a bug to me. In effect, the last block of data is almost always dropped in mne. The reader looks at the end of the data and cuts of at the last data sample, but then discards the last block.

Data is written in blocks (by default 10 seconds) but acquisition can be stopped at any moment in time. I believe that in the CTF acquisition software the last block is then zero-padded. So the number of valid samples might be smaller than the total number of samples (which is a multiple of blocks).

Yeah, probably it was trying to just cut the zeros, but throws away the end block by accident. I'll put the logging back.

@Akshay0724 can you see if this works for you now?

Now I'm getting 176 x 902106 but according to fieldtrip this should be 176 x 912000. This cardinality issue only occurs when missing channels are present in comps while other datasets gives same result.

Data at the end in fieldtrip is probably all zeros. The data points end at 902106.

I'm changing this to MRG as I don't think this breaks anything and it includes a bug fix.

thx @jaeilepp


Add Persian Language Support

Use Cases
A user request that we add Persian language support.
Proposal
No response
References
No response

We already have a Persian layout


Feature/auth jwt

PR Description
Give a good explanation about this PR, including about the files you've changed.
Types of changes

[ ] Docs change / refactoring / dependency upgrade
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

#11 solution.


Partner Center Portal

Proposed name of the new command
partner.cmd.ms
Description
Microsoft Partner Center
Category
Licensing, Development? Maybe there is a better category
Url
https://partner.microsoft.com/

Accepted


Lazy loading

So that the tree is dynamically updated on demand instead of rendering the entire tree when nodes are expanded or collapsed.

Looking forward to this; its available in jstree and fancytree

Hello,
Did you manage to develop the "load on demand" feature? Fetch children nodes when expanding a parent node on demand in order not to load all nodes at once?
Thanks.


[2.1.1] Gracefully handle disposing while writing (#2180)

Port #2180 to release/2.1
⚠⚠⚠ DO NOT MERGE ⚠⚠⚠
release/2.1 has not yet been opened for servicing fixes.
⚠⚠⚠ DO NOT MERGE ⚠⚠⚠

Approved for 2.1.1 but the branch is not open yet


Fixes for enginblockauth to mysql script

Minor variable name fix
Also, EBAUTH log entries are stored in 'YYYY-MM-DDTHH:MM:SS+02:00' format in syslog. Both MySQL and JQ can't handle this format time, so this truncates the Timezone from the log and passes the proper MySQL date format.
In our case, the MySQL timezone and EngineBlock timezone are both set to UTC. If you have any issues with truncating the TimeZone, please let me know.

Thanks for these fixes!


Upgrade woody to 3.0.0 from 2.0.0

Pretty self explanatory, use new bug fixes into code! and some new methods maybe.

So yes, I agree I should upgrade to 2.1.6, but it would help if you published it to a repo ;)

I switched away from woody


oneflow and oneflow-template ignore the no_proxy environment variable

Author Name: Laurent Grawet (Laurent Grawet)
Original Redmine Issue: 3797, https://dev.opennebula.org/issues/3797
Original Date: 2015-05-06
Original Assignee: Javi Fontan

Hi,
This is related to #3796
oneflow and oneflow-template ignore the no_proxy environment variable
no_proxy="localhost,<IP_ADDRESS>/8"

and try to connect to oneflow
"http://localhost:2474/service"

through proxy (http_proxy environment variable).
The proxy is used to connect marketplace.
Thanks for your help,
Laurent

Original Redmine Comment
Author Name: Ruben S. Montero (@rsmontero)
Original Date: 2016-09-06T15:18:38Z

It seems that the Ruby Net::HTTP does not support no_proxy env variable.

This variable is not longer available in OpenNebula, so closing this ticket.


Add public key validation

Signed-off-by: Kavitha Krishnan<EMAIL_ADDRESS>Sets util func for part of : #1596
cc: @vaikas @coyote240

Codecov Report

Merging #1598 (94a1f76) into main (0d7bace) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1598      +/-   ##
==========================================
+ Coverage   27.44%   27.46%   +0.01%
==========================================
  Files         137      137
  Lines        7742     7748       +6
==========================================
+ Hits         2125     2128       +3
- Misses       5387     5389       +2
- Partials      230      231       +1

Impacted Files
Coverage Δ

...cosigned/v1alpha1/clusterimagepolicy_validation.go
85.43% <100.00%> (+0.90%)
:arrow_up:

pkg/cosign/tuf/client.go
62.34% <0.00%> (-0.95%)
:arrow_down:

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 0d7bace...94a1f76. Read the comment docs.

Nice work!


background color mask my code highlight

I use monokai syntax theme, you background color make it unreadable, I suggest that you could use border-color style.

@ginus I actually derive everything from the ui-site-color Less constants to keep the coloring as theme-agnostic as possible, but it doesn't always work. Naturally, I can't ensure that everything looks good (or even legible) on all themes.
If the theme you prefer doesn't play nicely, though, you can actually tweak it however you like by adding rules to your custom stylesheet like so:
atom-text-editor.conflicted::shadow {
  // Style the editor lines for "our" sides of conflicts
  .line.conflict-ours {
    background: #f88;
  }

  // Style the editor lines for "their" sides of conflicts
  .line.conflict-theirs {
    background: #88f;
  }
}

atom-overlay {
  // Style the "our changes" control overlay
  .side.ours {
    background: red;
  }

  // Style the navigation control separator
  .navigation {
    background: #ccc;
  }

  // Style the "their changes" control overlay
  .side.theirs {
    background: blue;
  }
}


copy lean3port/ported into mathlib4

https://github.com/leanprover-community/lean3port/compare/ported

And make mathlib prelude-fre

is this closed as completed or no longer necessary? And if completed, what were the changes?

Closed as completed.  AFAICT we've already ported the relevant files from core.


libusbmuxd, usbmuxd: bump to latest git revisions

Motivation for this change
the current version of usbmuxd doesn't work right with iOS 14
Jun 03 01:02:42 superfluous usbmuxd[1240]: [01:02:42.214][1] preflight_worker_handle_device_add: ERROR: Could not connect to lockdownd on device 00008020-001A58582283002E, lockdown error -8
tested with an iPhone Xs running iOS 14.5.1
~ ^ idevice_id
00008020-001A58582283002E (USB)

~ ^ idevicename
f2k's Xs

~ ^ ideviceinfo | rg Product
ProductName: iPhone OS
ProductType: iPhone11,2
ProductVersion: 14.5.1
ProductionSOC: true

Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 125409 at 752be7c6 run on aarch64-linux 1

1 package failed to build:

xmonad_log_applet

45 packages skipped due to time constraints:

adapta-gtk-theme
almanah
calls
cinnamon.cinnamon-common
cinnamon.cinnamon-screensaver
cinnamon.cjs
clementine
empathy (gnome.empathy)
evolution
evolution-ews
...

72 packages built successfully:

bubblemail
chrome-gnome-shell
cinnamon.cinnamon-control-center
cinnamon.cinnamon-session
cinnamon.cinnamon-settings-daemon
clight
droidcam
eolie
evolution-data-server (gnome.evolution-data-server ,gnome.evolution_data_server)
folks (gnome.folks)
gfbgraph (gnome.gfbgraph)
gnome-online-accounts (gnome.gnome-online-accounts ,gnome.gnome_online_accounts)
gnome.cheese
gnome.file-roller
gnome.gnome-books
gnome.gnome-maps
gnome.gnome-music
gnome.gnome-online-miners
gnome.gnome-panel
gnome.gnome-power-manager
gnome.gnome-session (gnome.gnome_session)
gnome.gnome-settings-daemon (gnome.gnome_settings_daemon)
gnome.gnome-shell (gnome.gnome_shell)
gnome.gnome-tweaks (gnome.gnome-tweak-tool)
gnome.gnome-user-share
grilo-plugins (gnome.grilo-plugins)
libgdata (gnome.libgdata)
libzapojit (gnome.libzapojit)
gnome.mutter
gnome.mutter334 (pantheon.mutter)
gnome.nautilus
gnome.nautilus-python
gnome.totem
tracker-miners (gnome.tracker-miners)
gvfs (gnome2.gvfs)
gnomeExtensions.easyScreenCast
gnomeExtensions.gsconnect
ideviceinstaller
idevicerestore
ifuse
kgx
libgpod
libimobiledevice
libusbmuxd
mailnagWithPlugins
pantheon.elementary-dpms-helper
pantheon.elementary-session-settings
pantheon.elementary-settings-daemon
pantheon.extra-elementary-contracts
pantheon.gala
pantheon.switchboard-plug-mouse-touchpad
pantheon.switchboard-plug-pantheon-shell
pantheon.switchboard-plug-power
pantheon.switchboard-with-plugs
pantheon.wingpanel
pantheon.wingpanel-applications-menu
pantheon.wingpanel-indicator-bluetooth
pantheon.wingpanel-indicator-datetime
pantheon.wingpanel-indicator-keyboard
pantheon.wingpanel-indicator-network
pantheon.wingpanel-indicator-nightlight
pantheon.wingpanel-indicator-notifications
pantheon.wingpanel-indicator-power
pantheon.wingpanel-indicator-session
pantheon.wingpanel-indicator-sound
pantheon.wingpanel-with-indicators
phoc
power-profiles-daemon
rabbitvcs
upower
usbmuxd
xfce.xfce4-weather-plugin (xfce.xfce4_weather_plugin)

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.

we should probably ask for upstream to cut a release

Didn't want to block this PR but created two issues:
https://github.com/libimobiledevice/usbmuxd/issues/168 https://github.com/libimobiledevice/libusbmuxd/issues/116


Тo information about the video in the file chain

Description
There is no information about the video in the file chain of the timestamp event
Steps to reproduce
The video is recorded and sent to the server every time a timestamp event occurs.
Results
Expected
It was expected to see information about the video in each transmitted file.
Actual
In fact, information about the video is contained only in the first file.
Error output

Additional Information
released v2.1.1
versions
videojs
VIDEOJS: Using video.js 6.6.3 with videojs-record 2.1.1 and recordrtc 5.4.7
browsers
Firefox 58.0.2 (64)
OSes
Ubuntu 17.10

@SergeyKozlov can you use the ffprobe tool (also part of ffmpeg) on these files and paste the output in a gist (https://gist.github.com)?

the 2nd command uses -v quiet for some reeason. can you just use ffprobe x.filename and paste the contents here (dont make a screenshot, just copy/paste text).

I got output:
ubuntu@ip-172-31-92-61:/usr/share/nginx/nadtemp$ ffprobe 2.webm
ffprobe version N-88244-g859144f Copyright (c) 2007-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 20160609
  configuration:
  libavutil      56.  0.100 / 56.  0.100
  libavcodec     58.  1.100 / 58.  1.100
  libavformat    58.  0.101 / 58.  0.101
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  0.100 /  7.  0.100
  libswscale      5.  0.100 /  5.  0.100
  libswresample   3.  0.100 /  3.  0.100
2.webm: Invalid data found when processing input

Im confused again; what  is<PHONE_NUMBER>56691122.ts?

This portion of the stream made a new version videojs.record.js.
Now everything is correct.


Update compute node limit for aro v4

@karanmagdani1 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Some context: we currently have a technical limitation preventing scaling nodes above ~62.  We have a story in the backlog to fix this issue, but wanted to update our docs right now to reflect the limitation so customers are not confused.

@sakthi-vetrivel FYI

@sakthi-vetrivel: I'm sorry - only the author of this article, @jimzim, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.


http_health_check: host and path validation

The previous host and path value cannot pass the encodeHeader validation.
Added stricter validation for both.
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

Not sure if it requires a release note or not, and will leave the decision to the senior maintainer.

friendly ping @yanavlasov

/wait-any

LGTM.
Please merge main to resolve the coverage error.


Updated Readme

Figured I’d make a PR because electron-prebuilt was renamed to just electron

You're right, thanks for the PR!
Fun fact, phantomjs just changed their package name to phantomjs-prebuilt. ;)

Don't know why I never got around to merging this, thanks!


simplify client/server sample

depends on most others

depends on most others

will try to reopen on gerrithub

will try to reopen on gerrithub


Janala: Instrument: Fix cid modulo calculation in setCid

https://github.com/rohanpadhye/JQF/issues/93

Closed in favor of #92


[Enhancement] Add prefix argument for common-logger

Describe the solution you'd like
Could be added on a "useLogger" basis, which should spit out a memoized logger instance, along with the main factory function.

above PR closed this on accident.


Adding 'dense_vector' field type

Signed-off-by: Martin Gaievski<EMAIL_ADDRESS>Description
Adding a new field type dense_vector. It's a first step in enabling KNN search in core OpenSearch. This implementation is based on Lucene HNSW, more details in corresponding RFC https://github.com/opensearch-project/OpenSearch/issues/3545
We'll be adding query type support in next PR, limiting this change to field type only to keep PR/change size smaller. With this change user will be able to :

define fields of type dense_vector with an option to index for the KNN search
add documents with dense_vector fields to the index

Issues Resolved
https://github.com/opensearch-project/k-NN/issues/39
Check List

[X] New functionality includes testing.

[X] All tests pass

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@nknize Take a look at the updates?

Closing this PR as team decided to go with implementation in k-NN plugin


[Auto-generated] Check & update dependencies (pyproject.toml)

Update dependencies (pyproject.toml)
Automatically created PR based on the 'CI - Check pyproject.toml dependencies' workflow in SINTEF/ci-cd.

All of updates relate to pydantic v2 migration. This is still being implemented, see #182.


Add Azure Resource 'Sql' to MSSQL extension.

This PR fixes #21587.
MSSQL provider was not registering 'azureResource' in it's 'connectionProvider' configuration, hence it lead to warning when 'provider.properties.azureResource' was not found.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 42.045%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
28598

Relevant Lines:
63172

💛  - Coveralls

In addition to the other comment, a couple things that would be great to do to make it easier for someone to work with this and reduce the chance of errors like a provider missing to add this :

Make sure we have this property documented with an explanation of what it does. I don't know if there's anything that currently exists (I couldn't find anything...) but at least adding it to https://github.com/microsoft/azuredatastudio/wiki/Contribution-points would be a great start...
Add doc comments to the typings  for people working on the code

Something that's less important but I'll call out anyways (since if you do the above it should be a simple matter to add), but updating the JSON schema isn't a bad idea. This isn't currently really that useful since these JSON schemas are pretty much never actually used (they're meant for VS Code to use for its own typings at runtime, so this is something that would only show up for someone developing with ADS). But it doesn't hurt to do it, and at some point in the future it would be nice for us to look into whether it's possible for us to extend the schema shown in VS Code with our own extension points.


create web3 fintech app with flutter x solidity

Seems like the author isn't correct.
And can you please update the tag 'Android' to 'Mobile' to be more generic? Thank you!

done!


App Groups: Trying to subscribe to a favourites group throws error but nothing displayed on UI

Description
Cannot subscribe to someone elses favourites, but nothing to inform user this request was rejected
Waltz Version
No response
Steps to Reproduce

...
Expected Result
No response
Actual Result
No response

Decided to hide the subscribe button when viewing favourite groups (as it will never work).


Seek support on the AWS forums.

Alright, sorry.
i'll try but AWS forums are mostly useless

@NinoSkopac
One thing you should be aware of is that the AWS SDK does not support all of the features of the OpenAPI Spec v2 (fka Swagger).
It looks like the first error you are getting is that you did not add the items property to the response definition of your GET /webpage/{url}, of your errors property (lines 72-73).  - AWS requires this.
Same thing with POST /webpage/{url}. (line 219).


chore: vscode files

Pull Request Test Coverage Report for Build<PHONE_NUMBER>6
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>6:
0.0%

Covered Lines:
75

Relevant Lines:
75

💛  - Coveralls


Git logging: No message when switching to Critical

Testing #150712

Run the command Git: Set Log Level and select Critical
Would be nice to get a message in the log [info] Log level changed to: Critical

Looks like the the message is not shown as it is of type Info and Critical is less than than.
Would be good to always show it, regardless of the current/new level.\
Same problem with the initial Log Level message when the output is started.


Menu option "show logs" throws typeError

Describe the bug
After selecting option "Show logs" on botfront menu a TypeError is thrown. Tested in two different computers.
TypeError: Cannot read property 'ci' of undefined
    at Object.dockerComposeFollow [as cmd] (/home/geovana/.nvm/versions/node/v13.2.0/lib/node_modules/botfront/src/commands/services.js:184:39)
    at general (/home/geovana/.nvm/versions/node/v13.2.0/lib/node_modules/botfront/src/cli.js:175:47)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

To Reproduce
Steps to reproduce the behavior:

Go to your project's folder
Run "botfront" on shell
Select "Show logs"

Fixed on master


Add support to build to a different device than the source is located

It is sometimes needed to have the build output placed on a device other than where the source code is.  This can be for performance reasons where the source code is located on a device with slow iops.

@tst-rwildes Do we still need to add documentation for these options?

Yes.  I'll work on that.  Two new optional parameters where added to allow for more flexible builds.  No current behavior changes if those parameters are not added.


Support preprogrammed keypresses

Add support for pre-programming keypresses to send to a roku device. Here is an example:
  "brightscript.remoteSequences": {
      "viewTvGuide": [
          "pause:5ms",
          "ok",
<EMAIL_ADDRESS>          "text:password",
          "down",
          "/tv shows highlighted/g",
          "ok",
          "sequence:goHome"
      ]
  },
  "brightscript.debug.activeRemoteSequences": ["viewTvGuide"]

Here are the features it should support:

send roku remote presses ("ok", "left", "right", etc...).
send text
pause for a specified duration
pause and monitor the output log until a regular expression match is found
reference other remote sequences by name to reduce duplication

@TwitchBronBron we can resolve this as this has been added via RTA no?

Hmm. Yeah, I think we technically have implemented this. I like the idea of some of this stuff being in a config with a name. However, that's probably just a matter of adding some configuration options or import/export to the Roku Automation panel. So yeah, we can close this.


Eliminate Additive Buffer Count For Metainfo Workers; Bump bip_metain…

…fo Patch Version
Memory usage with the additive buffers is very high and seems to give little to no benefit in terms of hashing performance. With two threads, this change cuts memory usage in half but maintains similar (exactly the same from what I can tell) performance.
Will investigate memory usage for building metainfo files further in the future as with two threads and a 2MB piece length, we should see roughly an additional 8MB in memory usage but while playing around with the create_torrent example, I am seeing much higher than that (~1MB which jumps to ~33MB when the program starts building the file).

No investigation needed. I assumed that piece length based off of another torrent client that actually gave a 4MB piece length when our create_torrent example calculated an 8MB piece length for the same file which means a process memory usage of ~33MB is expected.
This was using PieceLength::OptBalanced and it looks like the other client generated a 40KB torrent file when we generated a 20KB torrent file. We may want to adjust the maximum file size for the balanced option in the future taking into account the piece length AND runtime memory usage.


display the verbose_name of columns in list view, just like in the me…

Display the verbose_name of columns in list view, just like in the metrics list.
It's meaningful to distinguish the columns in the list view.

Coverage remained the same at 69.315% when pulling a86d7d65b124bd9cc7db638aedd3c614d7197898 on RoganW:display_verbose_name into 08b7e891a7dd65616aef4177b72b1e8770310d98 on apache:master.


Update README

Oh thanks for converting my README to HTML format. May I ask what the flags are for?

Okay so I'll just assume it's for localized versions of the README so I'll pull it


adjust colors to pacman style

Better colourisation for pacman is in the pipeline. Ensure that pacaur colourisation is consistent with the new colored output.
Note these pacman patches are work in progress.

Seems not much will change color-wise. Closing now.

Changes done in a75fd598d78777ddaf68ffac39f2af25448d9c47.


[Feature]: Inline async JS chunks when using inlineScripts: true

What problem does this feature solve?
Hi! I want to create a single-file HTML file so everything is inline into one HTLM file. As far as I can say everything works good (all assets & styles are inlined without any problems), but not async js chunks. Maybe it's just docs, but the docs of inlineScript say:

Note that, with this option on, the scripts files will no longer be written in dist directory, they will only exist inside the HTML file instead.

Howerver when importing web workers and other modules with import('...') it always creates a second JS file along the HTML file like so:
File                                       Size       Gzipped
  dist/static/js/async/js/588.487dabea.js    0.34 kB    0.23 kB
  dist/index.html                            13.1 kB    4.8 kB

What does the proposed API look like?
I cant say anything of enabling this by default, but there should be a way to actually inline all the scripts into HTML (this feature is actually useful). For example add a new flag/option config into inlineScripts object config.
### Tasks

About the web worker part: it seems rsbuild doesn't support bundling it. I'm coming from Vite which supports these imports:

Rspack provides a module.parser.javascript.dynamicImportMode option to avoid generating async chunks of dynamic imports:
export default {
  output: {
    inlineScripts: true,
  },
  tools: {
    rspack: {
      module: {
        parser: {
          javascript: {
            dynamicImportMode: 'eager',
          },
        },
      },
    },
  },
};

Thanks a lot for a quick response and improving the docs by a lot!
I'm still struggling with inlining webworkers into HTML (and I think it's worth mentioning webworker part in the Vite migration guide), but that's the matter of another issue.

Yeah webworker inlining is another issue and we should provide a guide for it


[ChatQnA integration between GMC and OneClick] Need to remove the namespace for microservice endpoints.

I notice that all microservice endpoints in qna_configmap_xeon.yaml and qna_configmap_gaudi.yaml contains the service's namespace default,  it means that we only can deploy these microservices in default namespace.
We should make user can deploy the ChatQnA demo in any namespace they like, so need to remove the namespace for microservice endpoints.
Thanks!

Thanks for the message! We already noticed that, need to test and confirm after remove the "default".

Hi @leslieluyu,  just directly remove default may not be proper because it would lead to errors for services availability. Basically, it should be dynamical based on the deployment of microservices.
According to above description, I think it should be hard for you to aware of the microservices deployment info. We can fetch these endpoints from GMC manager, and @KfreeZ can work on this. Moreover, you can remove these endpoints exposed in Configmap, does it make sense?

Hi @leslieluyu, just directly remove default may not be proper because it would lead to errors for services availability. Basically, it should be dynamical based on the deployment of microservices. According to above description, I think it should be hard for you to aware of the microservices deployment info. We may need to discuss it, does it make sense? @KfreeZ who can co-work on this.

yes, if there's a wildcard symbol to represent the changing factors would be better.