Mesh intra face vertex id ordering convention

Hi,
Thank you for your great implementation of the meshGPT paper.
I have a question related to the section 3.1 : "For sequence ordering, Polygen [43] suggests a convention where faces are ordered based on their lowest vertex index, followed by the next lowest, and so forth. Vertices are sorted in z-y-x order (z representing the vertical axis), progressing from lowest to highest. Within each face, indices are cyclically permuted to place the lowest index first."
@MarcusLoppe , I used your vertices and faces ordering function (available in your repo notebook) for my own data preparation.
I have the feeling the vertices ordering is performed as in the paper. However, your faces ordering seems not.
Let's take the following toy example face with given vertices IDs: [3, 2, 8]
On the one hand, according to the paper, they cyclically permute the IDs to place the lowest index first, it gives [3, 2, 8] -> [8, 3, 2] -> [2, 8, 3] after two cyclic permutations or even better [3, 2, 8] -> [2, 8, 3] with one cyclic permutation in the other direction.
On the other hand, you permute the IDs like this: [3, 2, 8] -> [2, 3, 8] which can not be given by a cyclic permutation.
I think it can cause further issues as you can see in the attached image of my own data. Since your permutation may not be cyclic, it can induce the triangles normals to be inverted. The triangles angle values may also be different if they are oriented but I did not check. And since these features are computed inside the model and fed to the GCNN encoder, I would say we are not forwarding the right mesh to the model.
To conclude, this is not an issue related to the model itself but rather on the data preparation for training and how to better stick to the existing paper.
What do you think?
Thanks!

Hello,
At the start I did not reorder the indices within the triangles but when I reordered by lowest index I did not notice any improvements, so I concluded that the vertex order doesn't really matter that much.
But it seems like I might not have understood what cyclically permutation is since I just ordered by lowest index.
Could you provide a code snippet for this so I might test this out?
The autoencoder seems to be remarkable good at reconstructing no matter the order nor if I the mesh isn't "standing" on the ground (e.g I forgot to the lowest vertical value to -0.95 so they where hovering in the centre).
The biggest issue is that it's getting a low loss, but it's doing that by getting a very low loss on 90% of the meshes and then catastrophe mess up 10% of them. It's almost like catastrophe forgetting.
I'm currently seeing if using local attention will resolve this issue.
Could maybe take a look at this mesh and see if you spot any of the issues you are talking about?
I took 40 random samples in a dataset and generate the codes for them, then reconstructed the mesh using those codes. (no transformer)
https://www.mediafire.com/file/4iy1hri8ycqgrk5/autoencoder_output.obj/file

@jrmgr
Hiya again,
Could you maybe take a look at the below, I implemented your code and it seems like it worked.
However since I used data from both ModelNet and ShapeNet it seems like only the mesh samples from the shapenet meshes had their faces correctly aligned. I think the models that are facing sideways are the ModelNet.
It might be better just to order non cyclic since not all the meshes are ordered correct/same from the start.
It might have been also due to the modelnet uses the Z for the vertical so I had to switch Z and Y when I loaded the modelnet meshes.
Do you maybe have a better way permuting cyclic when dealing with two different axis and since I need to switch the Z with Y?
if ".off" in file_path:
  for vertex in vertices:
      vertex[1], vertex[2] = vertex[2], vertex[1]

https://file.io/Mpg7AoUYoBgC

Hi,
Thanks for your investigation. Looking at the obj files you shared, I see 3 patterns:

All faces well oriented (grey case)
All faces badly oriented (black cases)
Some faces well oriented, some others not (mix of black and grey cases)

I would have envisaged the cyclic permutation I proposed as universal since the sense (either clockwise or counter clockwise) in which we count the vertex indices remains the same with cyclic permutation and so I thought the faces orientation should remain the same as the original/ground truth data. However if it is not the case I would say the user has to be careful on the data he is feeding to the networks (autoencoder and transformer) while preparing his data to avoid the typical AI "shit in shit out" effect.
By the way, I would be interested to know how you manage to reconstruct the model output to a trimesh (for example) like object since I see you dump it as obj file on your disk. In other words, how do you convert from [b, n_f, 3, 3] i.e. meshgpt output to mesh object with float vertices [b, n_v, 3] and int faces [b, n_f, 3]? Inspired by your notebbok code to convert one element in a batch, I went like :
meshgpt_to_trimesh(meshgpt_tensor):
vertices = meshgpt_tensor.cpu().numpy().reshape(-1, 3).tolist()
faces = []
for i in range(0, len(vertices) - 1, 3):
faces.append([i, i + 1, i + 2])
mesh = trimesh.Trimesh(vertices=vertices, faces=faces)
return mesh
My understanding with that type of conversion is this face index creation will create duplicated vertices because each face will contain ids different from all other faces ids that is to say if f1 = [0, 1, 2] and f2 = [3, 4, 5] are adjacent faces, 1 and 2 AND 3 and 4 respectively may represent the same x, y, z vertices. Otherwise, it means no faces will be adjancent which basically leads to mesh with holes. Am I understanding it correctly? If yes, it means we have to post process the trimesh mesh object to remove the duplicated vertices. Moreover, it means the model must learn to generate the same x, y, z vertices float values for adjacent faces.

@MarcusLoppe Hi, is transfer learning possible with MeshGPT? Is it possible in the code, I mean has it been implemented so far in the code? Thanks!
PS: What could be this problem while generating the 3d objects for example, they don't seem to complete them, happens in all of the generation cells.:
23%|██▎       | 2025/8679 [00:21<01:10, 94.69it/s]
77%|███████▋  | 6690/8664 [01:10<00:20, 94.92it/s]
5%|▍         | 389/8627 [00:04<01:27, 93.80it/s]

Hi, Thanks for your investigation. Looking at the obj files you shared, I see 3 patterns:
* All faces well oriented (grey case)

* All faces badly oriented (black cases)

* Some faces well oriented, some others not (mix of black and grey cases)

I would have envisaged the cyclic permutation I proposed as universal since the sense (either clockwise or counter clockwise) in which we count the vertex indices remains the same with cyclic permutation and so I thought the faces orientation should remain the same as the original/ground truth data. However if it is not the case I would say the user has to be careful on the data he is feeding to the networks (autoencoder and transformer) while preparing his data to avoid the typical AI "shit in shit out" effect.

The faces that badly oriented is from the ModelNet and the others from the ShapeNet dataset.
I'd imagine that it's probably easier just to skip the permutation when dealing with meshes from other sources, for example the Objverse dataset uses meshes from all kinds of users so there would be no expected standard.
By sorting the vertices indices without cyclic permutation will provide some sort of data standard and provides a pattern on how to the vertices are created.
Here is the same kind of data but using my old method, I can't see any different when it's rendered without the edges.

https://easyupload.io/wad6po

By the way, I would be interested to know how you manage to reconstruct the model output to a trimesh (for example) like object since I see you dump it as obj file on your disk. In other words, how do you convert from [b, n_f, 3, 3] i.e. meshgpt output to mesh object with float vertices [b, n_v, 3] and int faces [b, n_f, 3]? Inspired by your notebbok code to convert one element in a batch, I went like :
meshgpt_to_trimesh(meshgpt_tensor): vertices = meshgpt_tensor.cpu().numpy().reshape(-1, 3).tolist() faces = [] for i in range(0, len(vertices) - 1, 3): faces.append([i, i + 1, i + 2]) mesh = trimesh.Trimesh(vertices=vertices, faces=faces) return mesh
My understanding with that type of conversion is this face index creation will create duplicated vertices because each face will contain ids different from all other faces ids that is to say if f1 = [0, 1, 2] and f2 = [3, 4, 5] are adjacent faces, 1 and 2 AND 3 and 4 respectively may represent the same x, y, z vertices. Otherwise, it means no faces will be adjancent which basically leads to mesh with holes. Am I understanding it correctly? If yes, it means we have to post process the trimesh mesh object to remove the duplicated vertices. Moreover, it means the model must learn to generate the same x, y, z vertices float values for adjacent faces.

I'm not 100% following but the reason why I output the mesh using probably duplicate vertices is so I can get a true mesh generation and can see if there is any issues, If i were to smooth the vertices and remove those that are very close to each other (since the decoder might be 0.0001 off) , I won't be able to spot any issues.
It might be useful to round the vertices to 0.001 and remove/combine the vertices which are too close to get a smoother mesh but I'm not at that stage yet.
Well since the idea with the project is to train a model to understand how to generate mesh there will be inherently no holes when it's fully trained since the training data doesn't have broken mesh with holes in them.
I actually haven't had any problems with holes, the problem has mostly been that the transformer generates the wrong codes and there will be spikes. But the autoencoder seems to be pretty consistent with generating meshes that are fully connected together.

@MarcusLoppe Hi, is transfer learning possible with MeshGPT? Is it possible in the code, I mean has it been implemented so far in the code? Thanks! PS: What could be this problem while generating the 3d objects for example, they don't seem to complete them, happens in all of the generation cells.: 23%|██▎ | 2025/8679 [00:21<01:10, 94.69it/s] 77%|███████▋ | 6690/8664 [01:10<00:20, 94.92it/s] 5%|▍ | 389/8627 [00:04<01:27, 93.80it/s]

With transfer learning, do you mean teacher-student? If so no, since the the codebook will be very different between them so they won't speak the same language, it's better to just fine-tune/retrain the same model since it will still carry over some generalizations.
The transformer appends a EOS token when training as the last token in a sequence, this token means 'stop generation'.
Otherwise when generating the meshes it might use too many tokens for something simple.
So it's totally normal behaviour :)

@MarcusLoppe Yes fine-tune/retrain a model checkpoint, lets say I train a model on Objaverse dataset, and then I fine-tune it on a specific other 3d models that I want it to learn. Is there a functionality in the code of that sort or in your notebook? Thanks

@MarcusLoppe Yes fine-tune/retrain a model checkpoint, lets say I train a model on Objaverse dataset, and then I fine-tune it on a specific other 3d models that I want it to learn. Is there a functionality in the code of that sort or in your notebook? Thanks

Fine-tune/pre-train and train does functionally the same thing, it just the dataset size and purpose that is changing.
When you pre-train a model you use a large dataset with vast knowledge, then you fine-tune it by using a smaller dataset which contains what you actually want it to do.
So the code is actually the same for all the stages, so just train the autoencoder and then the transformer on your other dataset as you first did,  you might want to use a lower learning rate such as 1e-4 .
However since the transformer uses a max length , your new dataset cannot have longer sequences then what you specified in the parameters for the transformer creation.

I've been training on a dataset, but since your code has changed now it asks me to switch version from 1.10 to 1.02. And, your fork is not using version set, and I can't use Luciddrains original repo since I follow your fork. So any know how?
Also, can you elaborate on the fine-tune/pre-train more as to what steps we necessarily take? You mention that we train the autoencoder for the large dataset (objaverse), and then train the transformer for the small dataset (fine-tune one). Is this how you saying?
Thanks

I've been training on a dataset, but since your code has changed now it asks me to switch version from 1.10 to 1.02. And, your fork is not using version set, and I can't use Luciddrains original repo since I follow your fork. So any know how?

Oh, that is just a warning , it let's you know so you know if the model won't load that there might some compatibility issues.
There haven't been change major changes for a while expect the pixel norm so it's probably fine.

Also, can you elaborate on the fine-tune/pre-train more as to what steps we necessarily take? You mention that we train the autoencoder for the large dataset (objaverse), and then train the transformer for the small dataset (fine-tune one). Is this how you saying? Thanks

I'm not quite sure since I've always trained on the same dataset.
But I would fine-tune the autoencoder on your dataset and then train the transformer from the start using the same dataset.
It would be ideal to freeze the encoder weights but that feature is not implemented (yet?) so it uses the same language but it just gets better at predicting the encoder outputs and not losing to much "world" knowledge.
In the paper they pre-train both on the entire dataset, then they fine-tune the autoencoder and then the transformer.
Will way they both will get the generalization ability and then expert knowledge.
However I'm not 100% convinced on this since the transformer will be fine-tuned on tokens which then have another meaning then it had when it was pre-trained (e.g another "language") which meaning/usage that might not even be close to the tokens it trained on before.

I've been training on a dataset, but since your code has changed now it asks me to switch version from 1.10 to 1.02. And, your fork is not using version set, and I can't use Luciddrains original repo since I follow your fork. So any know how?

Oh, that is just a warning , it let's you know so you know if the model won't load that there might some compatibility issues. There haven't been change major changes for a while expect the pixel norm so it's probably fine.

Also, can you elaborate on the fine-tune/pre-train more as to what steps we necessarily take? You mention that we train the autoencoder for the large dataset (objaverse), and then train the transformer for the small dataset (fine-tune one). Is this how you saying? Thanks

I'm not quite sure since I've always trained on the same dataset. But I would fine-tune the autoencoder on your dataset and then train the transformer from the start using the same dataset. It would be ideal to freeze the encoder weights but that feature is not implemented (yet?) so it uses the same language but it just gets better at predicting the encoder outputs and not losing to much "world" knowledge.
In the paper they pre-train both on the entire dataset, then they fine-tune the autoencoder and then the transformer. Will way they both will get the generalization ability and then expert knowledge. However I'm not 100% convinced on this since the transformer will be fine-tuned on tokens which then have another meaning then it had when it was pre-trained (e.g another "language") which meaning/usage that might not even be close to the tokens it trained on before.

This is the error that I get:
Loading saved mesh autoencoder at version 1.0.2, but current package version is 1.1.0
RuntimeError                              Traceback (most recent call last)
 in <cell line: 4>()
2 #autoencoder_trainer.load(f'{working_dir}\mesh-encoder_{project_name}.pt')
3
----> 4 autoencoder_trainer.load('/content/drive/MyDrive/MeshGPT Generation/Test 10 March/mesh-encoder_new_40_aug.pt')
5 autencoder = autoencoder_trainer.model
6 for param in autoencoder.parameters():
1 frames
/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py in load_state_dict(self, state_dict, strict, assign)
2150
2151         if len(error_msgs) > 0:
-> 2152             raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
2153                                self.class.name, "\n\t".join(error_msgs)))
2154         return _IncompatibleKeys(missing_keys, unexpected_keys)
RuntimeError: Error(s) in loading state_dict for MeshAutoencoder:
Unexpected key(s) in state_dict: "decoders.0.block1.norm.weight", "decoders.0.block1.norm.bias", "decoders.0.block2.norm.weight", "decoders.0.block2.norm.bias", "decoders.1.block1.norm.weight", "decoders.1.block1.norm.bias", "decoders.1.block2.norm.weight", "decoders.1.block2.norm.bias", "decoders.2.block1.norm.weight", "decoders.2.block1.norm.bias", "decoders.2.block2.norm.weight", "decoders.2.block2.norm.bias", "decoders.3.block1.norm.weight", "decoders.3.block1.norm.bias", "decoders.3.block2.norm.weight", "decoders.3.block2.norm.bias", "decoders.4.block1.norm.weight", "decoders.4.block1.norm.bias", "decoders.4.block2.norm.weight", "decoders.4.block2.norm.bias", "decoders.5.block1.norm.weight", "decoders.5.block1.norm.bias", "decoders.5.block2.norm.weight", "decoders.5.block2.norm.bias", "decoders.6.block1.norm.weight", "decoders.6.block1.norm.bias", "decoders.6.block2.norm.weight", "decoders.6.block2.norm.bias", "decoders.7.block1.norm.weight", "decoders.7.block1.norm.bias", "decoders.7.block2.norm.weight", "decoders.7.block2.norm.bias", "decoders.8.block1.norm.weight", "decoders.8.block1.norm.bias", "decoders.8.block2.norm.weight", "decoders.8.block2.norm.bias", "decoders.9.block1.norm.weight", "decoders.9.block1.norm.bias", "decoders.9.block2.norm.weight", "decoders.9.block2.norm.bias", "decoders.10.block1.norm.weight", "decoders.10.block1.norm.bias", "decoders.10.block2.norm.weight", "decoders.10.block2.norm.bias", "decoders.11.block1.norm.weight", "decoders.11.bloc...

I've been training on a dataset, but since your code has changed now it asks me to switch version from 1.10 to 1.02. And, your fork is not using version set, and I can't use Luciddrains original repo since I follow your fork. So any know how?

Oh, that is just a warning , it let's you know so you know if the model won't load that there might some compatibility issues. There haven't been change major changes for a while expect the pixel norm so it's probably fine.

Also, can you elaborate on the fine-tune/pre-train more as to what steps we necessarily take? You mention that we train the autoencoder for the large dataset (objaverse), and then train the transformer for the small dataset (fine-tune one). Is this how you saying? Thanks

I'm not quite sure since I've always trained on the same dataset. But I would fine-tune the autoencoder on your dataset and then train the transformer from the start using the same dataset. It would be ideal to freeze the encoder weights but that feature is not implemented (yet?) so it uses the same language but it just gets better at predicting the encoder outputs and not losing to much "world" knowledge.
In the paper they pre-train both on the entire dataset, then they fine-tune the autoencoder and then the transformer. Will way they both will get the generalization ability and then expert knowledge. However I'm not 100% convinced on this since the transformer will be fine-tuned on tokens which then have another meaning then it had when it was pre-trained (e.g another "language") which meaning/usage that might not even be close to the tokens it trained on before.

This is the error that I get:
Loading saved mesh autoencoder at version 1.0.2, but current package version is 1.1.0
RuntimeError Traceback (most recent call last) in <cell line: 4>() 2 #autoencoder_trainer.load(f'{working_dir}\mesh-encoder_{project_name}.pt') 3 ----> 4 autoencoder_trainer.load('/content/drive/MyDrive/MeshGPT Generation/Test 10 March/mesh-encoder_new_40_aug.pt') 5 autencoder = autoencoder_trainer.model 6 for param in autoencoder.parameters():
1 frames /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py in load_state_dict(self, state_dict, strict, assign) 2150 2151 if len(error_msgs) > 0: -> 2152 raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format( 2153 self.class.name, "\n\t".join(error_msgs))) 2154 return _IncompatibleKeys(missing_keys, unexpected_keys)
RuntimeError: Error(s) in loading state_dict for MeshAutoencoder: Unexpected key(s) in state_dict: "decoders.0.block1.norm.weight", "decoders.0.block1.norm.bias", "decoders.0.block2.norm.weight", "decoders.0.block2.norm.bias", "decoders.1.block1.norm.weight", "decoders.1.block1.norm.bias", "decoders.1.block2.norm.weight", "decoders.1.block2.norm.bias", "decoders.2.block1.norm.weight", "decoders.2.block1.norm.bias", "decoders.2.block2.norm.weight", "decoders.2.block2.norm.bias", "decoders.3.block1.norm.weight", "decoders.3.block1.norm.bias", "decoders.3.block2.norm.weight", "decoders.3.block2.norm.bias", "decoders.4.block1.norm.weight", "decoders.4.block1.norm.bias", "decoders.4.block2.norm.weight", "decoders.4.block2.norm.bias", "decoders.5.block1.norm.weight", "decoders.5.block1.norm.bias", "decoders.5.block2.norm.weight", "decoders.5.block2.norm.bias", "decoders.6.block1.norm.weight", "decoders.6.block1.norm.bias", "decoders.6.block2.norm.weight", "decoders.6.block2.norm.bias", "decoders.7.block1.norm.weight", "decoders.7.block1.norm.bias", "decoders.7.block2.norm.weight", "decoders.7.block2.norm.bias", "decoders.8.block1.norm.weight", "decoders.8.block1.norm.bias", "decoders.8.block2.norm.weight", "decoders.8.block2.norm.bias", "decoders.9.block1.norm.weight", "decoders.9.block1.norm.bias", "decoders.9.block2.norm.weight", "decoders.9.block2.norm.bias", "decoders.10.block1.norm.weight", "decoders.10.block1.norm.bias", "decoders.10.block2.norm.weight", "decoders.10.block2.norm.bias", "decoders.11.block1.norm.weight", "decoders.11.bloc...

Ah yes, so that is a issue in regards to pytorch.
So I encounter the same issue when I train on Kaggle which uses CUDA 12.1 and If i load it on my computer which uses CUDA 11.6.
The save and loading uses pytorch own libraries so it's not something I believe you can fix within this project code.
But check what pytorch & CUDA version it was created in and then update/downgrade and it will resolve itself. (Run "nvcc --version" for getting the CUDA version)

Downgrading CUDA is the hardest thing to do actually. Let me try! Thanks!

@MarcusLoppe Downgrading CUDA is the hardest thing to do actually. Let me try! Thanks! Can you share the link of Objaverse Data preparation code or any related links on Kaggle, etc. I have resources to train on GPU's. I can also provide you insights from my Objaverse training data if it goes well and the model results, etc. Much thanks for the continued support.

So for downloading the objaverse dataset, you can use my Objaverse-downloader , instead of downloading the entire 8.9TB dataset which includes like 220MB mesh models, you can filter by size instead with Objaverse-downloader.
Using 40kb  (around 400 faces) as the max limit you can get 37k models If i recall correct, this results in 13.5k models with faces under 250.
I implemented the load_objverse function in my MeshGPT_demo notebook, for the labels it loads the metadata that was exported in Objverse_downloader.
The labels in objverse is pretty bad but at least it might give the transformer some kind of hint or guide.
def load_objverse(directory, variations ):
    obj_datas = []
    id_info = {}
    with open('./objaverse/metadata.json' , 'r') as f:
        id_info = json.load(f)

A little tip for the autoencoder; the attention layer actually makes the training faster when dealing with loads of data, so try setting them to about 4 and 8 as per below.
I reached to about 0.6 loss after 5 epochs (@ 2hr per epoch) @ 14k models dataset.
Without the attention layers it took about 20hrs+.
num_layers = 23
autoencoder = MeshAutoencoder(
        decoder_dims_through_depth =  (128,) * 3 + (192,) * 4 + (256,) * num_layers + (384,) * 3,
        dim_codebook = 192,
        codebook_size = 16384,
        dim_area_embed = 16,
        dim_coor_embed = 16,
        dim_normal_embed = 16,
        dim_angle_embed = 8,

        attn_decoder_depth  = 4,
        attn_encoder_depth = 8
).to("cuda")

I noticed that you updated the repo with proper dataset links and elaborated the Readme file. I am going to try this weekend and start a training process. I'll let you know what results I gain. Much Thanks!


Improving Log UI output text colors

I created DrawColoredTextLine to format the text color and add conditions for different cases (error, warning...).

Thanks for this awesome work 🎉!


[windows] pin checksum where available

Description
pin installer checksum where available
Related issue:
https://github.com/actions/runner-images-internal/issues/5489
Check list

[x] Related issue / work item is attached
[ ] Tests are written (if applicable)
[ ] Documentation is updated (if applicable)
[ ] Changes are tested and related VM images are successfully generated

/azp run windows2019,windows2022


High CPU Usage on voice only

Hey,
Im using voice only at the moment on all clients:
var config = {
    audio: true,
    video: false,
    data: true,
    screen: false,
    videoSize: [640, 480, 640, 480]
};

localStream = Erizo.Stream(config);

But I got massive CPU usage on the Server.

(This is on 1 cpu 2.5GhZ)
I diddnt find any parameter to turn the room into a voice only room.
How can I reduce the cpu usage when all my clients only have Voice Chat on?

Why are you specifying a videoSize in your config?  And what sort of bandwidth are you sending to the server?
Also, keep in mind licode is n^2 as you add more clients to a room.  If you have 12 clients in the same room, there are 144 streams licode is processing, in other words.  For 4 clients, it's 16 streams.

Thanks for your reply. Because "videoSize" was in the standard config, thats why :)  But "video" is set to false. I don't see any n^2 in my graph do you ? What do you mean by "sort of bandwith"? I noticed, that when I activate screenshare, I got no increase of CPU usage!

Hi, there should be no problem with using "videoSize" if video is false, it should be ignored by Licode.
As @jnoring  said connections (and CPU use) grow quadratically in a centralised topology.
You can tackle this in many ways:

Switching codecs. If you are using PCMU (default in Licode) you can switch to OPUS by changing SDPInfo.cpp to include that codec. OPUS will be more intelligent in the use of bandwidth, the less bandwidth, the less CPU needed.
Muting streams. Usually you don't need 12 or more people talking at the same time, design your application to minimise the amount of people talking at the same time. Muting a stream will stop sending traffic to Licode even if the stream is still alive.
Distributing rooms. If you absolutely need all the streams working at the same time and changing to OPUS is not enough, you will need more computing power. By deploying more erizoAgents you can add more participants distributed in several servers while being in the same Licode room.

Thanks for your reply.
I will try Opus and test if its better. Why is PCMU default if you think OPUS is better at handling bandwith ? It is because of quallity? licence ?
I mute the user by overwriting the mic input with 0. But this still sends 0. Is their a smarter way to mute/unmute ?
I allready distributed to 2 Servers 16 CPUs each and got no problems at all. The thing about my question was, that I talked to my Network Management Proffesor about the CPU usage and he told me that on the most MCU he knows the CPU usage is 100% at about 100 Users (voice only). This might be hardware MCUs but 100% at 10 Users at this MCU (as shown in the graph) makes me wonder :)
btw. can u explain why I get no CPU increase if I enable screenshare ?

The OPUS thing is mostly legacy, it did solve some problems in the beginning with recording and with streaming media outside of Licode. We will probably set it as default in the near future.
You can disable the audio track locally in the publisher:
localStream.getAudioTracks()[0].enabled = false; // muted
localStream.getAudioTracks()[0].enabled = true; // unmuted

Performance really depends on the MCU, how it works and how users are arranged. Regarding screensharing... I assume you are only publishing 1 screen (not one from each user), in that case the CPU progression will be linear and it will reach a point where it is hardly noticeable compared to audio (that grows quadratically).


Typehint functions file

[ ] Part of the improvement for #2187
[ ] New feature?
[ ] BC breaks?
[ ] Deprecations?
[ ] Tests added?
[x] Changelog updated?

As mentioned in #2187 the adding of type declarations can improve the quality of code. I added as far as I could in the src/functions.php file.

Please also include this file in phpcs check so we can be sure further improvements will not break it again.

Done and directly find some missing parts, thanks for pointing out. Do you want to have the commits squashed to one commit?

I’ll sqush it any way. Please, rebase.

I’ll sqush it any way. Please, rebase.

I did a rebase.


initial creation of recruit app and its data model

initial creation of the recruit django app with the data model. here are some notes about the data model
I added some tracking fields to the student table so all the tracking is in one place.
I made the student email be unique, and the event to student relationship many to many so we can track people as they go to different events.
I just realized that I should have named the table 'candidate' and not 'student'

Looks good to me. I'll take care of the .idea folder in a different PR


Ossl1 & ossl3 support

Support for both OSSL1 & OSSL3. Program will check which version is available and uses that version dynamically.

@Santhosh-K-M could you break up lines greater than 80 characters into multiple lines? I'm even fine with 100 characters, but sticking to Google style would be 80...

Done

@Santhosh-K-M could you break up lines greater than 80 characters into multiple lines? I'm even fine with 100 characters, but sticking to Google style would be 80...

Done.


support [dependencies] in Xargo.toml

closes #111

@homunkulus r+

:pushpin: Commit 8cd4103 has been approved by japaric

:hourglass: Testing commit 8cd4103 with merge 8cd4103...

:broken_heart: Test failed - status-appveyor

@homunkulus r+

:pushpin: Commit 53d9174 has been approved by japaric

:hourglass: Testing commit 53d9174 with merge 53d9174...

:pushpin: Commit 28a0571 has been approved by japaric

@homunkulus r+

:hourglass: Testing commit 28a0571 with merge 28a0571...

:sunny: Test successful - status-appveyor, status-travis
Approved by: japaric
Pushing 28a05711bf89dd5f737ad661134976607c389ecd to master...


Your Shifty Build

This pull request includes changes from your build using the "Shift Workbench".
Before merging, you need to:

Checkout the shift-build-5151 branch
Review all comments for additional changes
Thoroughly test your application (no tests?, no CI?)

Don't hesitate to send your feedback to<EMAIL_ADDRESS>or share your :heart: for Shift on Twitter.

:white_check_mark: Shift did not find opportunities to adopt the nullsafe operator.

:white_check_mark: Shift did not find opportunities to adopt the new array functions.

:white_check_mark: Shift did not find any opportunities to adopt array destructuring.

:white_check_mark: Shift did not find any of the common Facade chains which would could be streamlined to helpers.

:white_check_mark: Shift did not find any models which unnecessarily set the $table property.

:white_check_mark: Shift did not find any $dates properties within your models.

:white_check_mark: Shift did not find any orderBy clauses which could be streamlined.

:white_check_mark: Shift did not find any form request rules which needed conversion to array syntax.

:white_check_mark: Shift did not find any uses of the old str_* or array_* Laravel helpers.

:information_source: Shift updated the migrations stubs used by artisan make:migration so newly made migrations will also use anonymous classes.

:white_check_mark: Shift could not find any class-based migrations to convert to anonymous migrations.


About training

Thank you for your work. I tried to train SwinIR but in my process of training swinir, I found that although the small swinir training is smooth, the loss often suddenly doubles when dim change to 180. Because of the memory problem, my batch_zie=16 lr=1e-4, may I have any special skills to let Is the training stable?

Do you mean that training SwinIR (middle size, dim=180) sometime have doubled loss? I don't think it is a problem. When some images in a training patch is hard to reconstruct, the loss of that batch would be large. If you look at the PSNR on the validation set, the model converges smoothly.
In our implementation, all settings are similar to CNN SR models and we did not use any special tricks. Detailed settings can be found in the supplementary. Training codes will be released in KAIR in a few days.

I don’t mean that the loss of a batch has suddenly doubled, but the average loss of 100 batches has doubled, and psnr will also drop close to 1db and recover after a few epochs.

We trained SwinIR (middle size, dim=180) for 500K iterations with batch_size=32. The learning rate is initialized as 2e-4 and halved at [250K, 400K, 450K, 475K].  We use Adam optimizer (betas=[0.9, 0.99]) without weight decay. The loss is the mean L1 pixel loss. The training loss and PSNR on validation set (Set 5) are attached as follows.
We did not notice any sudden large PSNR drop on the validation set.

Thank you, I will check my code and explore whether the slight parameter difference will have a big impact。

We trained SwinIR (middle size, dim=180) for 500K iterations with batch_size=32. The learning rate is initialized as 2e-4 and halved at [250K, 400K, 450K, 475K]. We use Adam optimizer (betas=[0.9, 0.99]) without weight decay. The loss is the mean L1 pixel loss. The training loss and PSNR on validation set (Set 5) are attached as follows.
We did not notice any sudden large PSNR drop on the validation set.

Hi thank you for your work.
May I know that does the SwinIR need to trained as GAN with discriminator?
If I just train for image SR, can I just train it without GAN?
Thanks.

It depends on what you want. If you just care about PSNR, using pixel loss for training is enough (first stage). PSNR provides a good quantitative metric for comparing different methods, but pixel loss often does not have a good visual quality.
If you want better visual quality, you should fine-tine the model from the first stage using a combination of pixel loss, perceptual loss and GAN loss, but it will decrease the PSNR.
By the way, I might know why you suffer from a sudden large drop of PSNR. GAN training is very unstable. Generally you should fine-tune the model from the first stage, instead of training it from scratch. The EMA strategy can also help stabilize the convergence. Note that PSNR is also not a good metric when you are training towards good visual quality.

pixel loss. The training loss and PSNR on validation set (Set 5) are attached as follows.

Hi, @JingyunLiang
Thanks for the loss plot. May I ask based on your experience, is it normal for a transformer framework that the training loss oscillates seriously? I am currently training a transformer and the loss seems just fluctuate repeatedly and there is no trend of convergence. So do you think this is a normal phenomenon for most transformers?
Thanks very much.

I don't think so. There is no such problems as you can see in Fig.3 (f) of the paper. By the way, our training code will be released in 1-2 days. Please use that for training. Thank you.

Yes, I see. Fig. 3(f) is the PSNR plot. Just as shown in your earlier reply, the PSNR is stable. But the L1 loss oscillates. I am confused about the fluctuation of the L1 loss. Thanks a lot. @JingyunLiang

PSNR and L1 loss on validation loss are highly related because PSNR has a MSE(pred, gt) term. If the validation PSNR is stable, the validation loss should also be stable. The training loss is shown in the top figure of my previous answer, it may fluctuate a bit because each batch has different images (some of them are hard to super-resolve).

We trained SwinIR (middle size, dim=180) for 500K iterations with batch_size=32. The learning rate is initialized as 2e-4 and halved at [250K, 400K, 450K, 475K]. We use Adam optimizer (betas=[0.9, 0.99]) without weight decay. The loss is the mean L1 pixel loss. The training loss and PSNR on validation set (Set 5) are attached as follows.
We did not notice any sudden large PSNR drop on the validation set.

Thanks so much for your explanation! In this case, have you tried to increase the batch size to reduce this training loss fluctuation? Does a large batch size alleviate this instability?

No, I always use batch_size=32 (so we only need 500k iterations). You can try it later on our training code.

I see. Thank you very much. I think 32 is large enough for the image-to-image task due to the huge cost of the transformer.

@z625715875 @shengkelong @hcleung3325 We have release the SwinIR training code at KAIR.  We also add an interactive online Colab demo for real-world image SR.

Feel free to open it if you have more questions.


[Bug]: Tabs in the API page overlap with corresponding metrics

Is there an existing issue for this?

[X] I have searched the existing issues

Description
The tabs in the API query page overlap with the metrics such as Status.

P.S: we see the Size metric on in https://release-ee.appsmith.com/. Tried the same query on https://release.app.appsmith.com/ & https://app.appsmith.com/ and was not able to see Size (below are the screenshots from release & prod)
Release:

Prod:

Steps To Reproduce

Go to https://release-ee.appsmith.com/ and open an app.
Create an API query & enter https://restcountries.com/v3.1/all as the URL.

Public Sample App
No response
Environment
Release
Issue video log
No response
Version
Self Hosted

Bumping this issue up to prod because it should have made it's way there by now if it was not fixed

not reproducible anymore, closing this


Newlib has no synchronization

I can't find any implementation of locking or synchronization hooks for newlib.
I bumped into what I thought briefly was a SMP race in newlib malloc (it wasn't) and went looking to be sure that we were doing the locking correctly.  And... we aren't?
I see that this was filed a year and a half ago (which is inexplicably an Enhancement and not a Bug): #21519 and was seemingly addressed by #21518 , which never merged.
The relevant hooks (e.g. __malloc_lock) are indeed compiled into our newlib libc.a binaries, but it looks like they also contain a weak fallback stub that just noops.
Am I wrong, or did we drop this?  Without locking newlib's heap and stdio layers are fundamentally unsafe in any context that can be preempted, which is... mostly useless (especially when compared to our own heap and console layers that are threadsafe, SMP-aware and interrupt clean!).

Add @stephanosio and @kaidoho who were involved earlier.  Am I just looking in the wrong place?

Am I wrong, or did we drop this? Without locking newlib's heap and stdio layers are fundamentally unsafe in any context that can be preempted, which is... mostly useless

@andyross That is indeed the case. https://github.com/zephyrproject-rtos/zephyr/pull/21518#issuecomment-567879873 This sort of died out because nobody really pursued it.

Hi, I've never received a response to
https://github.com/zephyrproject-rtos/zephyr/pull/21518#issuecomment-575305481
fixing the issues with newlib has always been just a tiny bit of a bigger picture. To make Zephyr OS applicable for the company I am with, I require full scale C++ Support. Thus I ended up cross-compiling the Zephyr toolchain for hours, days, nights trying to figure out what the guys from RTEMS did, and trying to port it for Zephyr. As a loosely coupled hobbyist, I can't turn such a big wheel on my own, cross-compiling toolchains for n architectures with a build mechanism that was just recently introduced back then, testing, discussing details - neither I felt the project fully understood that there's a critial issue residing in the OS / Toolchains, nor that it is very eager to have a working C++ Support. It has certainly been my mistake to stop work without notification.
From my point of view, this issue, as well as, improving C++ support needs a project lead and coordination between the various working groups.

@kaidoho are you able to re-pick up your PR and see if we can get this to a state to merge?

@galak To be honest I am very busy at the moment. That's why it took me quite a few days to respond. Sure I am willed to contribute and will do that if it helps, but my work focused on ARM and there are a bunch of other architectures that need to be addressed. I think it would be good to have a commitment from the steering board that C++ Support is of importance / a project goal. Then, we could split this huge epic into feasable portions / steps - the first of them C / newlib. My problem was that the second step libstdc++ turned into a huge work package, linked to C/ newlib which I can't complete without directions and for all architectures.
I need to review what I've done so far, and how it matches Zephyr OS as it is today (haven't looked into it since then). Then I can put together a new RFC wrt. C++.
Yes we can pick up the PR, but wouldn't it be better to drop the PR and you take over?


Porting several stemming algorithms to NLTK

whoosh has a couple of great things that we can port to NLTK, other than the porter stemm, there are:

Paice-Husk stemming
Lovin stemmer

This will be an easy port since the original implementation is in Python. Simply port the code, write some tests and document the functions appropriately, put the module in nltk/nltk/stem/ and do a pull-request =)
Any takers?

+1

+1

Hi, can I try this one?

@jaehoonhwang Sure! Try porting the stemmers one at a time and then do a PR and if you need help, we can guide you through it =)
Start with https://github.com/nltk/nltk/blob/develop/CONTRIBUTING.md

Hey, are there any more enhancements required for this? Would be happy to help.


Python 3 hashing

Several classes must be hashable because they are used as dictionary keys. This is generally implemented as a hash of the same information used for __eq__, or if that's not defined, the id.

Also raised in #962.

:+1: - nice solution


[RFE] Upgrade Golang and the net package to fix CVE-2023-44487

Is your feature request related to a problem? Please describe.
Rancher 2.7.9 has CVE-2023-44487. This should be remediated.
Describe the solution you'd like
Upgrade Golang to a newer patch version and pull in a newer net package to fix CVE-2023-44487.
Describe alternatives you've considered
None
Additional context
None

https://github.com/rancher/kube-api-auth/issues/19 needs fixed as well

Images also need fixes to this CVE.
rancher/rancher-webhook:v0.3.6
rancher/shell:v0.1.20

Testing considerations have been added to each pr but they are essentially the below:

Testing Considerations
Please do all normal use case testing and also one test taking a backup and restoring using an encryptionTransformer

[ ] Take a backup
[ ] In-place restore with said backup
[ ] Do a migration using said backup
[ ] Configure encryptionTransformer (see above) to be able to encrypt the backup
[ ] Take backup with encryption configured
[ ] In-place restore with encryption configured
[ ] Migration with encryption configured

Related PRs:
https://github.com/rancher/backup-restore-operator/pull/387
https://github.com/rancher/backup-restore-operator/pull/389
https://github.com/rancher/rancher/pull/43736

Based off of the following PRs and my own research it seems a lot of rancher functionality needs to be tested.
https://github.com/rancher/rancher/pull/42808/commits/38c4f2fbe4b594bac4876fa18c4f4014fe353574
https://github.com/rancher/rancher/pull/42808/commits/bff910ff133a9a650c0b4fde9feeec09cec82a16
https://github.com/rancher/rancher/pull/42808/commits/7547c2d4138a7bbfce86ee84d2229df09ac074c2
The following areas are what I believe need to be checked:

Projects
Namespaces
ETCD Snapshot

backup
restore

Cluster Provisioning (provisioning v2)

RKE2
RKE1

CAPR
Global DNS
Migrations (With BRO)

New kube-api-auth release tagged https://github.com/rancher/kube-api-auth/releases/tag/v0.2.1 with CVE fixes.

It seems like system-agent also requires fixing https://github.com/rancher/system-agent/blob/df30d89b07ec7b0ddab6de2d490a4c80798b258f/go.mod#L3

@pmatseykanets , for system-agent bump please coordinate with @jakefhyde and @Oats87 to cut a new RC and bump it in required release lines.
Now, since we currently don't branch system-agent bumping it in older release lines such as v2.7.x may come with own challenges but I'll leave it for you guys to sort out.

Validation Template
What was fixed, or what change have occurred
kube-api-auth:

Library golang.org/x/net updated to v0.17.0
Go version updated to 1.21
k8s libraries (client-go, apiserver, apiextensions-apiserver, apimachinery) and the related controller libraries (lasso/wrangler) were bumped to 1.27 compatible versions.

system-agent:

Go version updated to 1.21
k8s libraries (client-go, apiserver, apiextensions-apiserver, apimachinery) and the related controller libraries (lasso/wrangler) were bumped to 1.27 compatible versions.

rancher:

Library golang.org/x/net updated to v0.17.0
kube-api-auth was updated to v0.2.1 (containing above-mentioned changes)
work in progress: system-agent was updated to v0.3.7 (containing above-mentioned changes)

Areas or cases that should be tested

Basic Rancher regression tests
Creating a downstream cluster with ACE enabled and making sure ACE authentication works

What areas could experience regressions

ACE

Are the repro steps accurate/minimal?
N/A.

@snasovich  created this https://github.com/rancher/rancher/issues/44652 - but not sure if we need backports? I would potentially consider this a release blocker since BMW is hot right now, FYI

@samjustus , from what I see the other PRs from this issue go into all of 2.7, 2.8, and 2.9 so ideally we want an individual issue for each (there is one for v2.8 - https://github.com/rancher/rancher/issues/44652 but we need 2 more).
FYI @jakefhyde @Oats87

Verified on v2.8-head e107a6a

Created HA on v2.8.2 and provisioned one rke2 downstream cluster.
Created ingresses and workloads on rke2 downstream cluster, upgraded HA to v2.8-head, and verified all workloads and pods came
up as expected.
Provisioned an rke1 downstream cluster and verified all workloads came up as expected.
Verified ACE functionality.

Closing this as QA testing has been verified and additional issues have been created and completed.


Update Manager testing workflows

Create stable branch presubmit and postsubmit
Move bazel.rc to tools dir
update bin/cross-compile-istioctl to upload binaries

Is there a particular reason to move bazelrc files to tools?

Jenkins job manager/presubmit passed

Yes this is a follow up from Lizan change in Proxy. https://github.com/istio/istio-testing/blob/master/src/org/istio/testutils/Bazel.groovy#L54 is expecting those file to be in tools. This allow user to still use their own .bazelrc

Most of our devs don't even know what .bazelrc is. Let's not create a directory just to hold a single file.

mixer and proxy are already using this. Because of the way this is setup, all module needs to follow the same pattern.

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit passed


Follow Up - Redirect Reasons - After Q3 Release

Title of ticket:
Description
Follow up for IAO Intake with whether condensed list of redirect reason is working, if any reasons should be added or removed and if there is any other feedback
Dependencies
Q3 - release
DOD

[ ] Follow up with Gitta and Patrick to see how the 6 redirect reasons and other feature is functioning
[ ] Make updated to UI based off of feedback after Q3 Release

went in another direction - closing


Update spout101 example's docker image

The existing Docker image is out of date. Just building a new image, and ran successfully against a 1.12.5 cluster.

LGTM but belongs to the 1.13.x branch not Master


fix BasicMenu documentation

[ ] I have tested my component
[ ] I have updated the documentation or there is no documentation needed

:tada: This PR is included in version 1.4.0-rc.89 :tada:
The release is available on:

npm package (@next dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[#22] crypto-bookmark/navbar-support

Created a new component for Bookmarks with the intention of adding it to the main Navigation Menu. To achieve this it was necessary to change the way the menu was put together--to be compartmentalized.
A new button has been added to each crypto's detail page that will be golden when that page is bookmarked or white when it is not. The navigation menu will indicate this change by showing the crypto's symbol and icon.
Scroll-bar changes from [#17] and [#18] happened to go missing with a commit but is still held in my branch and will be added back.

Great job 👍


General style change

Setting the style of the controls and the layout of the controls has not been done yet, and in order to work in parallel, I have sent this PR. I continue to work in a new branch.

This PR mixes too many changes, as agreed with @miladsoft we must break it down to smaller PRs


Generate Mappings

Instead of waiting for MCP's mappings, we should be generating our own. @chibill said he had some good ways to generate them for each snapshot, which I'd love to see.
Merging most of https://github.com/ModCoderPack/MCPBot-Issues/issues would be nice.

https://github.com/FountainMC/Fountain/


Bluetooth Headset Error

I tried to use the app (F-Droid Version 2.2/36 )on my OnePlus5 (Android 9) with JBL Bluetooth headphones but when the app detected advertise it muted everything instead of playing local music. But with wired headphones all worked well.
I was able to get things work when disabling the last option in following screenshot (sorry only in German)

Perhaps it would be great for other users to add this into the troubleshooting site.
The app is very great, I enjoy listening music, thank you very much!

Thanks for shouting out, I added a note to this issue in the troubleshooting steps.


Deploy configs

$ cd terraform
$ ./run terraform plan
...
$ ./run terraform apply
...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

heroku_app_id = playtime-project-01
heroku_url = https://playtime-project-01.herokuapp.com/

A work in progress, sharing early.

I've been learning more about Heroku and it might be good to change how this works for more familiar tooling.

Setting up the AWS credentials for the demo Heroku application turns out to be a time consuming task. Here is the general problem.
Product Advertising API prefers to have AWS root credentials. These credentials are like keeping the front door of your home open and then signing the ownership of a home over to the first individual who walks in the door.

I was going to demo the Heroku deploy using my personal AWS credentials; however, I don't have the option to open my AWS account up to that level. Thus, my attempt in a151906a3f4cd59803f1cdd54bbcffd1f70b5340 is to limit the scope that the credentials have access to. This is completed by creating an IAM User, giving the user access to everything, then calling out specific services which the user cannot access. So far 100 of 109 resources have been blocked with this profile:

Not quite there and a lot closer. Next I'll work on testing against the search API to ensure that the IAM user does indeed work even though it is officially not supported.

Hi all, looks like Playtime has a deploy solution via /app.json 👍 . If anyone would like to figure out how to restrain the AWS keys to non-root access, then this PR should be a good place start.
I'm going to close this out, if anyone has any questions please let me know.


Getting Previous video Screen shot while playing next Video

Hello, There I am getting one serious issue I am getting the previous video end part screenshot while playing the next video in the table view do you have any idea whats going on here?

We are also facing the same issue. Kindly assist us as soon as possible.

@MillmanY @Rajat2595 @Gopal06bca is this issue resolved?


Custom Feature Settings Providers

We really like what we're seeing here - great work for bringing something like this to the community!
We'd like to propose that some of the interfaces be made public so we can switch out their implementations to interface either with legacy (in-house) feature management solutions or external vendors (LaunchDarkly, split.io et al) to provide a consistent abstraction layer across multiple different backends.
We're happy to contribute code if you're accepting PR's too.

Hey @christogav it's a good suggestion. We are still working on some features that may result in tweaks to the current API surface. Once we finalize all of those items we can shift toward exposing the internals to make the library more open as you have described.

Hi @jimmyca15 ,
Could we please get visibility into the WIP features or is everything captured by https://github.com/microsoft/FeatureManagement-Dotnet/issues/created_by/jimmyca15?
Also I'd like to get an idea of when this lib might be considered stable..?
Thanks!

Likewise, very interested to know when this is considered stable so we can start using it. I'm also interested in using it with external vendors. @christogav Out of interest, what are the interfaces you'd like to see made public?

@antmdvs @JosephWoodward
We have a couple of breaking changes in the dev branch awaiting a release.

Async feature filters
Contextual feature management

Currently we don't expect any breaking changes after that and after the release of these features we plan to give it a little bit of time for final feedback then release a stable version. All changes on top of that will be additive.

@JosephWoodward Looks like IFeatureSettingsProvider is the main one. There may be others but I haven't looked in detail.

I've been spiking this, and the problem as I see it is two fold.

Configuration providers are generally meant to be pretty static in nature. You load all configuration at once. Yes, you can reload, and yes it is possible with a bunch of work to make it work fully dynamically (though GetChildKeys may make it difficult for some providers), but this is pretty non-trivial stuff for this to feel like an abstraction like MEDI and MEL are.

At the configuration level we're missing context to be able to use existing feature flag backends. For instance, with Launch Darkly you can't interrogate a flag without having a user. Some hacky "access global state" approach might work here, but that approach is ugly at best.

Configuration should be a provider, not the only provider, and the provider abstraction should include context hooks.

This has been added in the latest release.


Refactor Generics to use Specs

Description

Renames DA generic to Da
Replace the Cond: ValidityCondition generic with a reference to D::ValidityCondition in chain-state module and top level hooks. Internal chain state structures are left deliberately untouched.
Replace the B: BlobTransactionTrait generic with a reference to Da::BlobTransaction wherever it appeared

Linked Issues

Related to #755 to make it smaller

Testing
Tests have been updated to use new generics
Docs
Minor spell checks in docs

This will make #755 a lot simpler, thanks @citizen-stig!


Read Only / Edit mode in YAML editor pages

Kiali uses a YAML editor component to show Istio Config object.
It is used not only to view/edit configuration but also to show validation of the config.
When user cannot edit an object, the editor and the action buttons (create/delete) are moved to "readonly" and "disabled" mode.
There is a JIRA with an open discussion about how to differentiate better "readonly" vs "editable" modes:
https://issues.jboss.org/browse/KIALI-2335

@serenamarie125 we need guidance on how to indicate this "read only" vs "edit" modes in yaml editor. thanks

@serenamarie125 do you think we can make some progress on this in the near future?

When the YAML is Editable, the buttons should be Save / Cancel
If the YAML is Read Only, I'd suggest that we have the visuals similar to what we do for a read only text field, and not have the Save/Cancel buttons

+1 @serenamarie125
In case of read only we should have Close button instead of Save/Cancel
@lucasponce wdyt?

While not directly related, I'd like to see a toast "Changes applied" (or the like) when the editor did save the changes and Istio did not reject them.
I did the editing a few times on stage now and always feel in a blurry state of "did it work?"

When the YAML is Editable, the buttons should be Save / Cancel
If the YAML is Read Only, I'd suggest that we have the visuals similar to what we do for a read only text field, and not have the Save/Cancel buttons

I think this is actually the way is implemented. Component is set in read-only mode.
On Read Only mode, then we still need a button to "back" to the list, normally that's done by the "Cancel" button. Do we want to maintain it ?

While not directly related, I'd like to see a toast "Changes applied" (or the like) when the editor did save the changes and Istio did not reject them.
I did the editing a few times on stage now and always feel in a blurry state of "did it work?"

+1

can this be closed?


Automated cherry pick of #3492: fix: 避免version输出不正确

Cherry pick of #3492 on release/2.12.
#3492: fix: 避免version输出不正确

/lgtm

/approve


Update json and markdown node parser import documentation

Description
If you try to import the node parser as shown in the current documentation, you will receive the following errors:
ImportError: cannot import name 'HTMLNodeParser'
ImportError: cannot import name 'JSONNodeParser'
Type of Change

[x] This is a documentation change

@davialvb  apologies, with v0.10.0 the project structure has changed slightly (and also the import paths)
I can take a stab at porting this PR in a bit, if you don't get to it first :)

I'll just close the PR, it's working with the new documentation :)

I'll just close the PR, it's working with the new documentation :)


DuplicateBlocker: Prevent same method from being added multiple times

With this enhancement, it should prevent same method from being added multiple times.
Also list registered dedup methods

@gmcculloug please review

@gmcculloug @bzwei What is the status of this PR?

It is current. Please review or merge.


[FR] Change migrations table name

Hi guys, I searched all over the places but I cannot find any docs/post/issue on how to change migrations table name.
Now I'm using
Migrator::up(&postgres_connection, None).await.unwrap();

and it works: creates the table seaql_migrations.
How to change seaql_migrations table name to a custom one?

Looks like it's hardcoded: https://github.com/SeaQL/sea-orm/blob/43495de0aa35fb80830ece7c858963a7fc1828e1/sea-orm-migration/src/seaql_migrations.rs#L4

Hey @frederikhors, sorry for the delay. @teenjuna is right. Now the name of the migration table  is hardcoded. Can I ask why you want to customize the name of it?

For security reasons.


Pp 244 banner block

Ticket: https://helsinkisolutionoffice.atlassian.net/browse/PP-244
How to test updates

Checkout branch
Run make fresh (if you have an existing database dump)
Run make drush-updb to make sure there aren't any pending database updates
Make sure all modules and Drupal core is actually up-to-date: https://helsinki-paatokset.docker.so/fi/admin/reports/updates
Test that the site works and nothing weird was introduced in the platform config updates.

How to test banner
Create or go to some case and decision page. After all the content there should be a blue banner that has the text defined in the ticket.
Check the code changes, is it good that case and decision are preprocessed separately?
Changes from composer update
- Removing behat/mink-goutte-driver (v1.3.0)
  - Removing fabpot/goutte (v3.3.1)
  - Removing laminas/laminas-zendframework-bridge (1.2.0)
  - Upgrading composer/composer (2.1.12 => 2.2.3)
  - Locking composer/pcre (1.0.0)
  - Upgrading composer/semver (3.2.5 => 3.2.6)
  - Upgrading composer/xdebug-handler (2.0.2 => 2.0.3)
  - Upgrading consolidation/annotated-command (4.4.0 => 4.5.1)
  - Upgrading consolidation/log (2.0.2 => 2.0.4)
  - Upgrading consolidation/output-formatters (4.1.2 => 4.2.1)
  - Upgrading consolidation/robo (3.0.6 => 3.0.7)
  - Upgrading consolidation/self-update (2.0.0 => 2.0.3)
  - Upgrading consolidation/site-alias (3.1.1 => 3.1.3)
  - Upgrading consolidation/site-process (4.1.0 => 4.1.1)
  - Upgrading doctrine/annotations (1.13.1 => 1.13.2)
  - Upgrading drupal/core (9.2.9 => 9.3.0)
  - Upgrading drupal/core-composer-scaffold (9.2.9 => 9.3.0)
  - Upgrading drupal/core-dev (9.2.9 => 9.3.0)
  - Upgrading drupal/core-recommended (9.2.9 => 9.3.0)
  - Upgrading drupal/easy_breadcrumb (2.0.1 => 2.0.2)
  - Upgrading drupal/externalauth (1.4.0 => 2.0.0)
  - Upgrading drupal/hdbt_admin (1.3.17 => 1.4.3)
  - Upgrading drupal/helfi_platform_config (2.1.5 => 2.3.4)
  - Upgrading drupal/helfi_tpr (1.5.8 => 1.6.2)
  - Upgrading drupal/matomo (1.13.0 => 1.14.0)
  - Upgrading drupal/metatag (1.16.0 => 1.18.0)
  - Upgrading drupal/migrate_plus (5.1.0 => 5.2.0)
  - Upgrading drupal/openid_connect (2.0.0-alpha11 => 2.0.0-alpha12)
  - Locking drupal/publication_date (2.0.0-beta3)
  - Upgrading drupal/redirect (1.6.0 => 1.7.0)
  - Upgrading drupal/token (1.9.0 => 1.10.0)
  - Upgrading drush/drush (10.6.1 => 10.6.2)
  - Upgrading egulias/email-validator (2.1.25 => 3.1.2)
  - Upgrading elasticsearch/elasticsearch (v7.15.0 => v7.16.0)
  - Upgrading ezyang/htmlpurifier (v4.13.0 => v4.14.0)
  - Upgrading friends-of-behat/mink-browserkit-driver (v1.5.0 => v1.6.1)
  - Upgrading guzzlehttp/promises (1.4.1 => 1.5.1)
  - Upgrading guzzlehttp/psr7 (1.8.2 => 1.8.3)
  - Upgrading laminas/laminas-diactoros (2.6.0 => 2.8.0)
  - Upgrading laminas/laminas-escaper (2.7.0 => 2.9.0)
  - Upgrading laminas/laminas-feed (2.14.1 => 2.15.0)
  - Upgrading laminas/laminas-stdlib (3.3.1 => 3.6.1)
  - Upgrading masterminds/html5 (2.7.4 => 2.7.5)
  - Upgrading nikic/php-parser (v4.13.1 => v4.13.2)
  - Upgrading pear/pear-core-minimal (v1.10.10 => v1.10.11)
  - Upgrading phpspec/prophecy (1.14.0 => v1.15.0)
  - Upgrading phpunit/php-code-coverage (9.2.9 => 9.2.10)
  - Upgrading phpunit/php-file-iterator (3.0.5 => 3.0.6)
  - Upgrading psy/psysh (v0.10.9 => v0.10.12)
  - Upgrading ruflin/elastica (dev-master 40fac08 => dev-master 4124d20)
  - Upgrading seld/phar-utils (1.1.2 => 1.2.0)
  - Upgrading squizlabs/php_codesniffer (3.6.1 => 3.6.2)
  - Upgrading symfony-cmf/routing (2.3.3 => 2.3.4)
  - Upgrading symfony/console (v4.4.25 => v4.4.34)
  - Upgrading symfony/debug (v4.4.25 => v4.4.31)
  - Upgrading symfony/dependency-injection (v4.4.25 => v4.4.34)
  - Upgrading symfony/deprecation-contracts (v2.4.0 => v2.5.0)
  - Upgrading symfony/dom-crawler (v4.4.30 => v4.4.36)
  - Upgrading symfony/error-handler (v4.4.25 => v4.4.34)
  - Upgrading symfony/event-dispatcher (v4.4.25 => v4.4.34)
  - Upgrading symfony/event-dispatcher-contracts (v1.1.9 => v1.1.11)
  - Upgrading symfony/finder (v4.4.30 => v4.4.36)
  - Upgrading symfony/http-client-contracts (v2.4.0 => v2.5.0)
  - Upgrading symfony/http-foundation (v4.4.25 => v4.4.34)
  - Upgrading symfony/http-kernel (v4.4.25 => v4.4.35)
  - Upgrading symfony/lock (v4.4.33 => v4.4.36)
  - Upgrading symfony/mime (v5.3.0 => v5.4.0)
  - Upgrading symfony/phpunit-bridge (v5.3.11 => v5.4.0)
  - Upgrading symfony/polyfill-mbstring (v1.23.0 => v1.23.1)
  - Upgrading symfony/polyfill-php80 (v1.23.0 => v1.23.1)
  - Upgrading symfony/process (v4.4.25 => v4.4.35)
  - Upgrading symfony/psr-http-message-bridge (v2.1.0 => v2.1.2)
  - Upgrading symfony/routing (v4.4.25 => v4.4.34)
  - Upgrading symfony/serializer (v4.4.25 => v4.4.35)
  - Upgrading symfony/service-contracts (v2.4.0 => v2.5.0)
  - Upgrading symfony/translation (v4.4.25 => v4.4.34)
  - Upgrading symfony/translation-contracts (v2.4.0 => v2.5.0)
  - Upgrading symfony/validator (v4.4.25 => v4.4.35)
  - Upgrading symfony/var-dumper (v5.3.0 => v5.4.0)
  - Upgrading symfony/yaml (v4.4.25 => v4.4.34)
  - Upgrading twig/twig (v2.14.6 => v2.14.7)
  - Upgrading typo3/phar-stream-wrapper (v3.1.6 => v3.1.7)

Added a few more updates:
- Upgrading composer/xdebug-handler (2.0.3 => 2.0.4)
  - Upgrading drupal/core (9.3.0 => 9.3.2)
  - Upgrading drupal/core-composer-scaffold (9.3.0 => 9.3.2)
  - Upgrading drupal/core-dev (9.3.0 => 9.3.2)
  - Upgrading drupal/core-recommended (9.3.0 => 9.3.2)
  - Upgrading drupal/helfi_platform_config (2.3.4 => 2.3.5)
  - Upgrading drupal/metatag (1.18.0 => 1.19.0)
  - Upgrading phpdocumentor/type-resolver (1.5.1 => 1.6.0)
  - Upgrading symfony/polyfill-php72 (v1.23.0 => v1.24.0)
  - Upgrading symfony/polyfill-php73 (v1.23.0 => v1.24.0)


[HOLD][$250] Migrate index.js to function component

Class Component Migration
Filenames

[ ] src/components/PressableWithSecondaryInteraction/index.js

type: React.Component
has state values: false
has refs: true
has context: false
lifecycle methods: componentDidMount,componentWillUnmount

Task

We currently have some class components in our codebase that we would like to refactor to a function component.
Here's a link with some general advice on how to refactor a class component to a function component: https://react.dev/reference/react/Component#alternatives
If you need additional guidance, please ask in #expensify-open-source
Test for any regressions and verify that there are no breaking changes

Proposal
Please re-state the problem that we are trying to solve in this issue.
Migrate index.js to function component
What is the root cause of that problem?
No root cause, just refactoring
What changes do you think we should make in order to solve the problem?
We should refactor https://github.com/Expensify/App/blob/main/src/components/PressableWithSecondaryInteraction/index.js to be functional component
What alternative solutions did you explore?

I can work on this issue.

Can I work on this?

I'd like to work on this.

Hi, I'm Ana from Callstack - expert contributor group - and I would like to take a look at this issue 👋

Assigned.

Dibs

Proposal
Please re-state the problem that we are trying to solve in this issue
Migrate index.native.js to the function component
What changes do you think we should make in order to solve the problem?
The refactored code can be seen here @marcaaron
https://github.com/studentofcoding/Expensify-App/blob/733b4e2a3b5e29b50c0d23ef3dd52accc62adf19/src/components/PressableWithSecondaryInteraction/index.js#L1-L79

can I work on this issue?

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~018f1a33b14bc5e0a1

PR updated with main, ready for merge

I need clarification from the team here before I can process the payment, what's the amount that @0xmiroslav needs to be paid for the C+ review for this newfeature issue? @marcaaron
The C+ was assigned on Aug 16 but the PR was merged on Sept 16 because of a merge freeze. Do newfeature issues qualify for urgency bonus? Thanks!

@0xmiroslav what's your profile in Upwork?


MKLDNN not used for 3d tensors

Description
When using a MKL build, if the tensor is not 2d or 4d, the default CPU implementation is used, which in some cases compared to MKLDNN is extremely inefficient (for example 20x in case of concat operator). Examples are convolution and concat operators.
Environment info (Required)
----------Python Info----------
Version      : 3.4.5
Compiler     : GCC 4.4.7 20120313 (Red Hat 4.4.7-1)
Build        : ('default', 'Jul  2 2016 17:47:47')
Arch         : ('64bit', 'ELF')
------------Pip Info-----------
Version      : 18.0
Directory    : /home/ec2-user/anaconda3/envs/mxnet_p34/lib/python3.4/site-packages/pip
----------MXNet Info-----------
Version      : 1.3.0
Directory    : /home/ec2-user/anaconda3/envs/mxnet_p34/lib/python3.4/site-packages/mxnet
Commit Hash   : f5b95b090815e879b57dca233604dcb3f1df967a
----------System Info----------
Platform     : Linux-4.9.93-41.60.amzn1.x86_64-x86_64-with-glibc2.2.5
system       : Linux
node         : ip-172-31-73-235
release      : 4.9.93-41.60.amzn1.x86_64
version      : #1 SMP Fri Apr 13 21:58:27 UTC 2018
----------Hardware Info----------
machine      : x86_64
processor    : x86_64
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
Stepping:              1
CPU MHz:               2698.120
BogoMIPS:              4600.11
Hypervisor vendor:     Xen
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              46080K
NUMA node0 CPU(s):     0-7
----------Network Test----------
Setting timeout: 10
Timing for FashionMNIST: https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/fashion-mnist/train-labels-idx1-ubyte.gz, DNS: 0.0150 sec, LOAD: 0.3634 sec.
Timing for Conda: https://repo.continuum.io/pkgs/free/, DNS: 0.0028 sec, LOAD: 0.0405 sec.
Timing for Gluon Tutorial(cn): https://zh.gluon.ai, DNS: 0.0768 sec, LOAD: 0.5932 sec.
Timing for Gluon Tutorial(en): http://gluon.mxnet.io, DNS: 0.0466 sec, LOAD: 0.3405 sec.
Timing for PYPI: https://pypi.python.org/pypi/pip, DNS: 0.0031 sec, LOAD: 0.1442 sec.
Timing for MXNet: https://github.com/apache/incubator-mxnet, DNS: 0.0032 sec, LOAD: 0.4106 sec.

I'm using Python package.
Minimum reproducible example
def test(make_4d):
    ctx = mx.cpu()
    num_iter = 1000
    start = time()
    for i in range(num_iter):
        extra_dim = (1, ) if make_4d else tuple()
        cdim = 3 if make_4d else 2

        a_shape = extra_dim + (1, 512, 120 * 120)
        b_shape = extra_dim + (1, 512, 1)

        a = nd.empty(a_shape, ctx=ctx)
        b = nd.empty(b_shape, ctx=ctx)
        c = nd.concat(a, b, dim=cdim)
        if make_4d:
            c = c.reshape(c.shape[1:])
    nd.waitall()
    print('\telapsed: {:.2f}'.format(time() - start))

if __name__ == '__main__':
    print("4D Test")
    test(True)
    print("3D Test")
    test(False)

Output:
4D Test
	elapsed: 2.18
3D Test
	elapsed: 39.02

What have you tried to solve it?
Looking at the implementation, the reason is that SupportMKLDNNConcat() returns false if the input tensor is not 2d or 4d.

Similar issue here: https://github.com/apache/incubator-mxnet/issues/11906
Besides unit tests, could you help to elaborate which models are using these 3D operators and what do the inputs look like?


Abandoned composer package rhumsaa/array_column

When running composer update I get the following:
Package rhumsaa/array_column is abandoned, you should avoid using it. Use ramsey/array_column instead.

Thanks! Fixed in #274.


Common persistence util classes that also implement transaction retries

This took way longer than anticipated, but here we go:
This started with exceptions we were seeing operating Opencast with CockroachDB, a distributed DB that aims for being compatible with PostgreSQL. Other than PostgreSQL, however, CockroachDB only supports the strict SERIALIZABLE SQL consistency level for transactions resulting in transactions that are rolled back by CockroachDB. The application, i.e. Opencast, should then retry the transaction. Nearly every DB access in Opencast does not do this.
This PR implements common classes in functional style for DB access basically a wrapper around EntityManager. Transaction errors can then be handled in a common way allowing to retry by executing the passed lambda again. Working in a functional way, this PR rewrites may helper methods in DTOs that execute queries to methods that return a Function that can be executed in a DB exec context. Some DTOs even asked for an EntityManagerFactory or opened their own transaction which I feel strongly against.
As it turns out, Opencast already had common classes for DB access (or I should better say multiple sets including some not even in use). These are now removed in favour of this implementation that includes some of the ideas.
I still need to test this with our staging system and CockroachDB. A local setup with H2 is working normally when performing quick ingests.
As this PR touches a lot of places, a quick review would be welcomed 😅
Your pull request should…

[ ] have a concise title
[ ] close an accompanying issue if one exists
[ ] be against the correct branch
[ ] include migration scripts and documentation, if appropriate
[ ] pass automated tests
[ ] have a clean commit history
[ ] have proper commit messages (title and body) for all commits

A quick review he says, of 5k new lines and 7.5k deletions. A quick review this is not, young padawandeveloper.

I only want to avoid merge conflicts and new DB access code that needs to be adopted :D

@lkiesow I added documentation for the util classes.

Fixed the merge conflicts.
As a side note: we run this in educast.nrw with CockroachDB; now with 12 before with a patched 11 version. That been said, we don't run every code path.


Add new address -signing name (non-auth)

(lower priority) This story implements the signing name with non-authentication functionality of the following feature:
After I enter my building's address, I see a popup that says "Sign your name to show your support." I can sign with Google or Facebook, or there are fields First Name, Last Name, Email Address, Add a Comment. There are two checkboxes that are checked by default: "Keep me updated on the status of this recycling request" and "Publicly display my name on this page". There is also a statement "By signing you accept the Terms of Agreement and Privacy Policy". And a button that says "Sign to show your support"

I'm skeptical that we should ever do this as it would require we figure out how to verify identity outside of Oauth, and I'm not sure if we could even do that

Closing this ticket, doesn't fit app flow anymore.


Isolate pending interaction logic in separate model

MOB-3850
What was solved?
Introduce 'PendingInteraction' model to determine pending interaction for SC 2.0.
Release notes:

[ ] Feature
[x] Ignore
[ ] Release notes (Is it clear from the description here?)
[ ] Migration guide (If changes are needed for integrator already using the SDK - what needs to be communicated? Add underneath please)

Additional info:

[x] Is the feature sufficiently tested? All tests fixed? Necessary unit, acceptance, snapshots added? Check that at least new public classes & methods are covered with unit tests
[ ] Did you add logging beneficial for troubleshooting of customer issues?
[ ] Did you add new logging? We would like the logging between platforms to be similar. Refer to Logging from iOS SDKs → Things to consider for newly added logs in Confluence for more information.

Screenshots:

!squash


Clean-up 'run' script & remove unused variable

Note to reviewers: this change can only be verified on a physical RPi cluster. This is exactly what I did (and had to do).


test-branch/execute-job/wrong-comment-on-pr/cbb5843f-495c-4da4-97dc-dd2269a8ba6f

PR for testing 501219cbc49cc8f8db9d5dd329daa7284cb198d7

comment 1


Feature suggestion: Add Common Platform Enumeration (CPE)

The CPE is a structured naming scheme for applications, see the specification.
For the lazy ones, version 2.3 uses at least the following attributes of an application, plenty more attributes are optional:
cpe:2.3:/<part>:<vendor>:<product>:<version>
Whereas <part> can be application, operating system or hardware, so should always be a here. For most applications these CPEs already exist and can be found easily using the search tool. For example for nginx version 1.5.4 the CPE would be:
cpe:2.3:a:nginx:nginx:1.5.4:*:*:*:*:*:*:* (See)
Adding this as optional information in the apps.json would increase the API usability due to the standardized output. The <version> could be set dynamically.
tl;dr: Add CPEs -> Profit
What do you guys think?

Seems like a good idea. Having the CPE data will be very useful for quite a few use cases. I would like to start working on this by adding CPEs for some of the most commonly used software (like MySQL, PHP, Django, Python, Linux, Windows etc.)

Hi @faheel. Sure, happy to include it.

Hello
please can anyone let me know how to use CPE for Wappalyzer to Identify the Technology?
I am using Python - Flask & Django, and I want to know how & where to define CPE?
please tell me.


IGNITE-10193: IgniteBaselineAffinityTopologyActivationTest#testBaselineTopologyHistoryIsDeletedOnBaselineDelete fails

We (@avplatonov and @agoncharuk) decided that there is no reason to save this test because it assume and check old behavior.


BUG: fix extension module initialization, needs use of PyMODINIT_FUNC

This is related to gh-15996. After a change in Meson to use visibility=hidden by default, imports were failing.
What is going on here is that CPython creates C/C++ default behavior of:
#ifndef PyMODINIT_FUNC
#       if defined(__cplusplus)
#               define PyMODINIT_FUNC extern "C" Py_EXPORTED_SYMBOL PyObject*
#       else /* __cplusplus */
#               define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject*
#       endif /* __cplusplus */
#endif

and we, by using plain PyObject *, were missing the part where the module initialization function was explicitly marked as exported.
It looks like we've never used PyMODINIT_FUNC correctly. The only relevant change that I could find so quickly is gh-12086, which removed PyMODINIT_FUNC from the only three modules that used it (and so was incorrect).

Maybe this was handled via a VS module *.def file inside the distutils logic?

I think so. It's not in numpy.distutils for MSVC as far as I can tell (we do have a lot of logic for building import libraries for MinGW). There's relevant logic in https://github.com/python/cpython/blob/main/Lib/distutils/msvc9compiler.py#L573, so that must be what's fixing things up.

This is happy now (other CI failures are unrelated). Let's get this in. Thanks again @eli-schwartz.


Add support for NFT minting

At first NFT minting should be relatively simple, since Sage does not handle the storage of data, metadata, or licenses for you. You just put in the URIs and other info and mint the NFT from 1 mojo. It will use a bulk mint transaction but only include one NFT for now.

Adding this in the next release


Perf: Address warm initialization

In the  InitializationTests  our cold start numbers show a solid improvement over EF6 but our warm numbers are slower. There are probably common causes across the set, so opening a general item to investigate these and implement improvements.

Marking for re-triage.

Nice!

:+1: :tada:

Actual numbers are actually better than the screen shot too :smile:


Add conversion of schema into its JSON representation

Purpose
closes #25
The purpose is that a dApp should be able to provide the schema types to the browser wallet (e.g. just the schemas to call the balanceOf function) without specifying and linking it to a specific smart contract name. The dApp might want to interact with the balanceOf function on some CIS2 token contract (without knowing the exact name of the CIS2 token contract).
Changes
Add the commands:
cargo concordium schema-json --schema ./schema.bin --out ./my/path/
cargo concordium schema-json --module ./foo.wasm.v1 --out ./my/path/

cargo concordium build --schema-json-out  ./my/path/

You need to use exactly one of the two flags(--schema or --module) with this command. The schema for each smart contract will be converted into JSON and then outputted into a separate file e.g. MyContract1_schema.json and MyContract2_schema.json
Checklist

[x] My code follows the style of this project.
[x] The code compiles without warnings.
[x] I have performed a self-review of the changes.
[x] I have documented my code, in particular the intent of the
hard-to-understand areas.
[x] (If necessary) I have updated the CHANGELOG.

I get this error when running cargo concordium (we are using twice the short = "s" flag):
thread 'main' panicked at 'Argument short must be unique
-s is already in use', ...../src/app/parser.rs:190:13

note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

I get this error when running cargo concordium (we are using twice the short = "s" flag):
thread 'main' panicked at 'Argument short must be unique
-s is already in use', ...../src/app/parser.rs:190:13

note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

Good catch. This works now
cargo concordium build -e -s schema/schema.bin -j schema -o memo.wasm.v1
   Compiling crunchy v0.2.2
   Compiling static_assertions v1.1.0
   Compiling hex v0.4.3
   Compiling byteorder v1.4.3
   Compiling concordium-contracts-common v5.1.1 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-contracts-common/concordium-contracts-common)
   Compiling fixed-hash v0.7.0
   Compiling uint v0.9.3
   Compiling primitive-types v0.11.1
   Compiling concordium-std-derive v5.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-std-derive)
   Compiling concordium-std v5.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-std)
   Compiling concordium-cis2 v2.0.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-cis2)
   Compiling cis2_nft v0.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/examples/cis2-nft)
    Finished release [optimized] target(s) in 3.26s
   Compiling concordium-std-derive v5.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-std-derive)
   Compiling concordium-std v5.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-std)
   Compiling concordium-cis2 v2.0.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/concordium-cis2)
   Compiling cis2_nft v0.1.0 (/home/abizjak/Private/Documents/Concordium/concordium-rust-smart-contracts/examples/cis2-nft)
    Finished release [optimized] target(s) in 2.35s

   Module schema includes:

     Contract schema: 'cis2_nft' in total 2957 B.
       event   : 598 B
       receive
        - 'balanceOf'       : 258 B
        - 'mint'            : 247 B
        - 'operatorOf'      : 289 B
        - 'setImplementors' : 211 B
        - 'supports'        : 236 B
        - 'tokenMetadata'   : 240 B
        - 'transfer'        : 321 B
        - 'updateOperator'  : 272 B
        - 'view'            : 158 B

     Contract schema: 'cis2_nft/' in total 604 B.
       event   : 598 B

   Total size of the module schema is 3593 B
   Writing schema for cis2_nft to schema/cis2_nft_schema.json.
   Writing schema for cis2_nft/ to schema/contract-schema_1.json.
   Embedding schema into module.

    Finished smart contract module 82.895 kB


Support Convolutional Neural Networks

It would be great to support some basic CNNs. In a manner that is just as easy to install and use as the tree-based-ensembles that we have now. That means that there should be a core module that supports CNN models, but that the particular model/weights can be loaded at runtime.
CNNs would enable many computer vision tasks, such as Image Classification and Object Detection. But they are also frequently used for audio tasks, using spectrograms as the input. Thus it is also relevant part of or complement to #6

TensorFlow Lite for Microcontrollers is one of the most established here. But I find it to be quite large - just the interpreter takes 16 kB+. And I believe that it being in C++ may make it extra challenging to support as a dynamic native module (the mpy-ld linker is quite limited).
It is also already available in OpenMV, so those who want to use it with MicroPython can already access it from there.

Initial module code merged in #8
Need still to test on device and provide some documentation / examples.

Example code now at https://github.com/emlearn/emlearn-micropython/tree/master/examples/mnist_cnn

The MNIST CNN has been tested on ESP32 and looks to work. So we can close this as implemented :)


🔧 Exclude package-lock.json

This is a bug fix.
Summary
package.json was being removed but package-lock.json wasnt.
This PR fixes that.

yay! :heart:


Data set download error

Untarring features.tar:
tar: 它似乎不像是一个 tar 归档文件
tar: 跳转到下一个头
tar: 由于前次错误，将以上次的错误状态退出
md5sum: features.md5: 没有那个文件或目录

==> After extracting the md5sum checks did not match.
Either the downloaded file was corrupted
or the untarring went wrong or sth fishy happend.
(most probably, of the first two).
Hello, I use bash ./features/download.sh to download the dataset, but I got this error.

You are right. Thanks for pointing out the issue. I have just run the script and encountered the same error. Since I did not provide the download link, I am unsure how to fix it, but I can share my downloaded file with you.
You can download the zip file from Google Drive and place its contents ("features.md5" and "WideResNet28_10_S2M2_R") directly into the "code_fsl/features/" directory.


New package input text field backspace and arrow keys

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
Steps to Reproduce
I generated a new package.
I then added a text field to the view.
Using the focus() function, I am able to get the user focused to the text field.
The text field does not allow backspace, arrow keys, or delete. Only characters, and home and end seem to work. Its like the text fields are only half focused.
Here are the text fields in the constructor from the view created by the generator:
  constructor(serializedState) {
    // Create root element
    this.element = document.createElement('div');
    this.element.classList.add('pronto-4gl');

	this.textField = document.createElement("input"); //New
	this.textField.type = "text"; //New
	this.textField2 = document.createElement("input"); //New
	this.textField2.type = "text"; //New

       // Create message element
       const message = document.createElement('div');
       message.textContent = 'The Pronto4gl package is Alive! It\'s ALIVE!';
        message.classList.add('message');
        this.element.appendChild(message);
	this.element.appendChild(this.textField); //New
	this.element.appendChild(this.textField2); //New
  }

Here is the toggle function in the main javascript file in lib changed to be an if statement with the focus function:
toggle() {
   console.log('Pronto4gl was toggled!');
     if (this.modalPanel.isVisible()) {
   	  this.modalPanel.hide();
     } else {
   	  this.modalPanel.show();
   	  this.pronto4glView.textField.focus(); //New focus function
     }
 }

Expected behavior: Expecting to be able to use backspace and arrow keys in a text field
Reproduces how often: Every time
Versions
Windows 10.
Atom    : 1.22.0
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0

See the Flight Manual section on native key bindings: https://flight-manual.atom.io/behind-atom/sections/keymaps-in-depth/#forcing-chromiums-native-keystroke-handling
Because we treat our issues list as the Atom team's backlog, we close issues that are questions since they don't represent a task needing to be completed. For most questions about Atom there are a lot of options, check out:

The Atom Flight Manual
The Atom FAQ on Discuss
Discuss, the official Atom and Electron message board
Join the Atom Slack team

On Discuss and in the Atom Slack team, there are a bunch of helpful community members that should be willing to point you in the right direction.


interfacng issue --> suspect mapping problem

Howdy,
I defined this:
module External
def self.argv()
::ARGV
end
def self.output(the_string : String =  "") : Nil
puts the_string.to_s
end
end
then I wrap the module on the interpreter instance.
But when I call External.output the following happens:
if I supply a string it raises an error  stating that 0 args were expected
I've done my level best to declare the interface -- am I doing something wrong?
the intent is that I pass a string from ruby back into crystal.

You need to pass the keyword arguments explicitly from Ruby to Crystal unless you annotate the methods explicitly.
See https://github.com/Anyolite/anyolite/wiki/Code-guidelines-and-workarounds#non-keyword-arguments for details.
I could change this per default to one of the options described there, but this would break backward compatibility, so this won't happen until Anyolite 2.0.0.


graphiqlOptions should support being called as a function that is passed the request

We have a need to dynamically determine the graphiqlOptions that should be used on a per request. This would mirror the semantics of graphqlOptions supporting a function.
This approach could also be used to address https://github.com/apollographql/graphql-server/issues/399 by examining the incoming Host header to dynamically generate the subscriptionsEndpoint and/or endpointURL.

@NeoPhi I think that's a great idea. Do you have time to make a PR that would allow both an object and a function as graphiqlOptions? 🙂


segfault on IO.print(new List)

> IO.print(new List)
zsh: segmentation fault  ./wren

Can't replicate this as of 84ead3bb18135657fb276ae09459e3be4717764d OSX Yosemite
> IO.print(new List)
[]
> var x = new List
> x.add(1)
>

Is it fixed?

I'll try this out today.

It works for me now.

\o/


Unable to fetch python_dev_config dependency from bincrafters

The build error in e.g. https://github.com/fzi-forschungszentrum-informatik/Lanelet2/actions/runs/10959285012/job/30432971204 seems to indicate, that we cannot get the python_dev_config dependency from the configured remote https://bincrafters.jfrog.io/artifactory/api/conan/public-conan (see .github/conan_dockerfile/Dockerfile):
#14 1.182 ERROR: Failed requirement 'python_dev_config/0.6@bincrafters/stable' from 'lanelet2/1.2.1@lanelet2/stable'
#14 1.182 ERROR: <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>JFrog Landing</title><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700,800&display=swap" rel="stylesheet"><script>VERSION = "2024.2.251";
#14 1.182       API_PROXY_URL = "https://landing-api.jfrog.com/api/v1/";
#14 1.182       API_PROXY_URL_V2 = "https://landing-api.jfrog.com/api/v2/";

Visiting the page https://bincrafters.jfrog.io/artifactory/api/conan/public-conan brings me to a page that says

Time flies when you’re having fun.
Your 14-day trial may be over, but you have options!
Need help choosing the right subscription or additional time on your trial? Just let us know and a DevOps expert will reach out to assist you.

Thanks for digging up that error! After some further digging, it seems that the project that remote belonged to is down for good: https://github.com/bincrafters/community/issues/1456
From the logs, it looks like conancenter does not have python_dev_config available, so we will need a bit of time to look into how to replace the discontinued bincrafters project.
I am not too familiar with conan however, @poggenhans do you have an idea on how to proceed here?

I'm trying to 'just include' the code of the python_dev_config conan package in the lanelet codebase, and build it before building the lanelet2 package, see my branch.

I seem to make some progress there.  Unfortunately it seems like I get test errors on noetic, but have no clue what's going on there, see this run. On 'galactic' and 'humble' the tests pass and it also seems like the python packages are built.


chore: add GitHub action for CI on master and prs

Signed-off-by: Lance Ball<EMAIL_ADDRESS>

It took less than 20 seconds for each of Node 10 and 12. I think this might be a better solution that Travis currently.


Support Windows Server Core / Nano Sever

Currently scoop scripts does not work on Windows Server Core / Nano Server, where exists PowerShell Core which lack some commands. It'd be great to support these platforms since they are widely used as a base images for windows docker containers (windowsservercore, nanoserver).
PS C:\> $psversiontable

Name                           Value
----                           -----
PSEdition                      Core
PSRemotingProtocolVersion      2.3
CLRVersion
BuildVersion                   10.0.14393.1000
PSVersion                      5.1.14393.1000
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
WSManStackVersion              3.0
SerializationVersion           <IP_ADDRESS>

It already fails on installation because net.webclient is not available. Scoop makes heavy use of it.
If those images were to be upgraded to Powershell Core 6, which supports net.webclient because it uses .NET Core 2.0, then Scoop will work.

Is it possible to replace net.webclient usage with Invoke-WebRequest?

An interesting question. Just an aside, scoop will often hang for around 1:45 on
$wres = $wreq.getresponse()
on my Win7 x64 box. So I usually install via:
set attempt=1
:loop
echo Attempt %attempt% at %time%
call scoop uninstall %~n1
call scoop install %*
set /a attempt=%attempt%+1
if %errorlevel% neq 0 goto loop

Sucky, right?

As of 2020-07-19, Scoop will install in a docker image starting with  FROM mcr.microsoft.com/windows/servercore:ltsc2019. However, it won't install in a docker image using FROM mcr.microsoft.com/powershell:lts-nanoserver-1903.


Jump to linked log line

Sadly, the app currently does not scroll to element. It should also highlight it.
Extra points for making it possible to select and link to multiple lines

It now scrolls to and highlights the selected line.
The highlighting could probably look better, feel free to improve on it.
Screenshot showing the highlighting:

It seems the link and highlighting was implement in #1874.
However, it was done with a different ID. I think the ID attribute should be the same as the displayed line number.
And I assume it does not scroll to the line, since I needed to add some javascript to do that.

@anbraten What do you think of these changes to the view you just touched?

Looks great from the code. If you can confirm that the scrolling part works fine its can be merged from my side.

The merge conflict handling was not good. I am creating a follow up


reorder unreleased change log entries by order of first issue number in ...

...each entry

:+1: from Chris


This PR removes the workaround added in #1052

This PR closes #1098; Chrome now fixes the bug this code was working around.

Can you confirm it no longer shows up on the specified page?

Yes, I tried and could not reproduce it, though it's hard to say categorically because the big was always kind of finicky


Update Documentation, Add End-to-End Script and Instructions

Moved the README to the root folder
Extend the end to end script to include the optimization
Simplify communication between dual quaternion based calibration and batch estimation (the json file is now directly exported by the first step)
Update README

@mfehr This was super useful. Thanks for doing this :+1:

@HannesSommer ptal

test this please (gcc failed for some weird reason, clang might have failed due to recent changes to opencv3_catkin)

test this please (wiped the ws)

Ah, it started two builds. Sometimes this happens. One failed (open cv 3 issues) the other succeeded. I've started again too gain more insight.

Build succeeded here, will merge this as the build failures are unrelated to the PR, there seems to be some issue in lynx-xenial. Thanks @HannesSommer for your help!


How to set $TMPDIR environment variable with a job to something like <scratch>/$SLURM_JOB_ID/tmp

Using the executor plugin how do I set the $TMPDIR env var (and therefore tmpdir resource) within a job to something like <scratch>/$SLURM_JOB_ID/tmp?

https://github.com/snakemake/snakemake/issues/2423

that is something your admins ought to do. Yet, the fs-plugin should do, what you are looking for. Alas, a bug is buggin us. I hope, this will be fixed soon.